@@ -15,6 +15,7 @@ import {
1515 TurnItemId ,
1616} from "@t3tools/contracts" ;
1717import { RelayAgentActivityState } from "@t3tools/contracts/relay" ;
18+ import { RelayClientTracer } from "@t3tools/shared/relayTracing" ;
1819import * as DateTime from "effect/DateTime" ;
1920import * as Deferred from "effect/Deferred" ;
2021import * as Effect from "effect/Effect" ;
@@ -24,6 +25,7 @@ import * as Queue from "effect/Queue";
2425import * as Ref from "effect/Ref" ;
2526import * as Schema from "effect/Schema" ;
2627import * as Stream from "effect/Stream" ;
28+ import * as Tracer from "effect/Tracer" ;
2729import * as TestClock from "effect/testing/TestClock" ;
2830import * as FetchHttpClient from "effect/http/FetchHttpClient" ;
2931
@@ -373,6 +375,29 @@ describe("AgentAwarenessRelay", () => {
373375 } ) ,
374376 ) ;
375377
378+ it . effect ( "exports the publication span through the relay tracer" , ( ) => {
379+ const relaySpans : string [ ] = [ ] ;
380+ const localSpans : string [ ] = [ ] ;
381+ const collectingTracer = ( spans : string [ ] ) =>
382+ Tracer . make ( {
383+ span : ( options ) => {
384+ spans . push ( options . name ) ;
385+ return new Tracer . NativeSpan ( options ) ;
386+ } ,
387+ } ) ;
388+
389+ return Effect . gen ( function * ( ) {
390+ const { relay, publications } = yield * makeTestRelay ( ) ;
391+ yield * relay . publishThread ( THREAD_ID ) ;
392+ assert . equal ( publications . length , 1 ) ;
393+ assert . include ( relaySpans , "relay.agent_activity.publish" ) ;
394+ assert . notInclude ( localSpans , "relay.agent_activity.publish" ) ;
395+ } ) . pipe (
396+ Effect . provideService ( RelayClientTracer , Option . some ( collectingTracer ( relaySpans ) ) ) ,
397+ Effect . withTracer ( collectingTracer ( localSpans ) ) ,
398+ ) ;
399+ } ) ;
400+
376401 it . effect ( "deduplicates state and republishes title changes" , ( ) =>
377402 Effect . gen ( function * ( ) {
378403 const { relay, currentShell, publications } = yield * makeTestRelay ( ) ;
0 commit comments