11use async_nats:: jetstream:: consumer:: pull:: Config ;
22use async_nats:: jetstream:: consumer:: { AckPolicy , DeliverPolicy , ReplayPolicy } ;
33
4- pub fn prompt_notifications_consumer ( prefix : & str , session_id : & str , req_id : & str ) -> Config {
4+ use crate :: acp_prefix:: AcpPrefix ;
5+
6+ pub fn prompt_notifications_consumer ( prefix : & AcpPrefix , session_id : & str , req_id : & str ) -> Config {
7+ let pfx = prefix. as_str ( ) ;
58 Config {
6- filter_subject : format ! ( "{prefix }.session.{session_id}.agent.update.{req_id}" ) ,
9+ filter_subject : format ! ( "{pfx }.session.{session_id}.agent.update.{req_id}" ) ,
710 deliver_policy : DeliverPolicy :: All ,
811 ack_policy : AckPolicy :: Explicit ,
912 replay_policy : ReplayPolicy :: Instant ,
1013 ..Default :: default ( )
1114 }
1215}
1316
14- pub fn prompt_response_consumer ( prefix : & str , session_id : & str , req_id : & str ) -> Config {
17+ pub fn prompt_response_consumer ( prefix : & AcpPrefix , session_id : & str , req_id : & str ) -> Config {
18+ let pfx = prefix. as_str ( ) ;
1519 Config {
16- filter_subject : format ! ( "{prefix }.session.{session_id}.agent.prompt.response.{req_id}" ) ,
20+ filter_subject : format ! ( "{pfx }.session.{session_id}.agent.prompt.response.{req_id}" ) ,
1721 deliver_policy : DeliverPolicy :: All ,
1822 ack_policy : AckPolicy :: Explicit ,
1923 replay_policy : ReplayPolicy :: Instant ,
2024 ..Default :: default ( )
2125 }
2226}
2327
24- pub fn response_consumer ( prefix : & str , session_id : & str , req_id : & str ) -> Config {
28+ pub fn response_consumer ( prefix : & AcpPrefix , session_id : & str , req_id : & str ) -> Config {
29+ let pfx = prefix. as_str ( ) ;
2530 Config {
26- filter_subject : format ! ( "{prefix }.session.{session_id}.agent.response.{req_id}" ) ,
31+ filter_subject : format ! ( "{pfx }.session.{session_id}.agent.response.{req_id}" ) ,
2732 deliver_policy : DeliverPolicy :: All ,
2833 ack_policy : AckPolicy :: Explicit ,
2934 replay_policy : ReplayPolicy :: Instant ,
@@ -48,9 +53,13 @@ pub fn commands_observer() -> Config {
4853mod tests {
4954 use super :: * ;
5055
56+ fn p ( s : & str ) -> AcpPrefix {
57+ AcpPrefix :: new ( s) . expect ( "test prefix" )
58+ }
59+
5160 #[ test]
5261 fn prompt_notifications_consumer_filter ( ) {
53- let config = prompt_notifications_consumer ( "acp" , "sess-1" , "req-abc" ) ;
62+ let config = prompt_notifications_consumer ( & p ( "acp" ) , "sess-1" , "req-abc" ) ;
5463 assert_eq ! (
5564 config. filter_subject,
5665 "acp.session.sess-1.agent.update.req-abc"
@@ -59,15 +68,15 @@ mod tests {
5968
6069 #[ test]
6170 fn prompt_notifications_consumer_delivers_all ( ) {
62- let config = prompt_notifications_consumer ( "acp" , "s1" , "r1" ) ;
71+ let config = prompt_notifications_consumer ( & p ( "acp" ) , "s1" , "r1" ) ;
6372 assert_eq ! ( config. deliver_policy, DeliverPolicy :: All ) ;
6473 assert_eq ! ( config. ack_policy, AckPolicy :: Explicit ) ;
6574 assert_eq ! ( config. replay_policy, ReplayPolicy :: Instant ) ;
6675 }
6776
6877 #[ test]
6978 fn prompt_response_consumer_filter ( ) {
70- let config = prompt_response_consumer ( "acp" , "sess-1" , "req-abc" ) ;
79+ let config = prompt_response_consumer ( & p ( "acp" ) , "sess-1" , "req-abc" ) ;
7180 assert_eq ! (
7281 config. filter_subject,
7382 "acp.session.sess-1.agent.prompt.response.req-abc"
@@ -89,7 +98,7 @@ mod tests {
8998
9099 #[ test]
91100 fn response_consumer_filter ( ) {
92- let config = response_consumer ( "acp" , "sess-1" , "req-abc" ) ;
101+ let config = response_consumer ( & p ( "acp" ) , "sess-1" , "req-abc" ) ;
93102 assert_eq ! (
94103 config. filter_subject,
95104 "acp.session.sess-1.agent.response.req-abc"
@@ -98,21 +107,21 @@ mod tests {
98107
99108 #[ test]
100109 fn response_consumer_delivers_all ( ) {
101- let config = response_consumer ( "acp" , "s1" , "r1" ) ;
110+ let config = response_consumer ( & p ( "acp" ) , "s1" , "r1" ) ;
102111 assert_eq ! ( config. deliver_policy, DeliverPolicy :: All ) ;
103112 assert_eq ! ( config. ack_policy, AckPolicy :: Explicit ) ;
104113 assert_eq ! ( config. replay_policy, ReplayPolicy :: Instant ) ;
105114 }
106115
107116 #[ test]
108117 fn response_consumer_custom_prefix ( ) {
109- let config = response_consumer ( "myapp" , "s1" , "r1" ) ;
118+ let config = response_consumer ( & p ( "myapp" ) , "s1" , "r1" ) ;
110119 assert_eq ! ( config. filter_subject, "myapp.session.s1.agent.response.r1" ) ;
111120 }
112121
113122 #[ test]
114123 fn custom_prefix_in_consumers ( ) {
115- let config = prompt_response_consumer ( "myapp" , "s1" , "r1" ) ;
124+ let config = prompt_response_consumer ( & p ( "myapp" ) , "s1" , "r1" ) ;
116125 assert_eq ! (
117126 config. filter_subject,
118127 "myapp.session.s1.agent.prompt.response.r1"
0 commit comments