@yolk-sdk/agent 0.1.0-canary.69 → 0.1.0-canary.71

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"transport.d.mts","names":[],"sources":["../../src/client/transport.ts"],"mappings":"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"}
1
+ {"version":3,"file":"transport.d.mts","names":[],"sources":["../../src/client/transport.ts"],"mappings":";;;;;;;cAuCiD,wBAAA;;;;cAEpC,mBAAA,SAA4B,wBAMxC;AAAA,KAEW,wBAAA;EAAA,SACD,QAAA;EAAA,SACA,SAAA;EAAA,SACA,QAAA,EAAU,eAAA;EAAA,SACV,aAAA,GAAgB,aAAA,CAAc,YAAA;EAAA,SAC9B,KAAA;EAAA,SACA,eAAA,GAAkB,oBAAA;EAAA,SAClB,MAAA,GAAS,WAAA;EAAA,SACT,eAAA,GAAkB,KAAA,CAAM,KAAA,CAAM,UAAA,CAAW,UAAA;EAAA,SACzC,UAAA,IAAc,QAAA,EAAU,qBAAA;AAAA;AAAA,KAGvB,2BAAA;EAAA,SACD,QAAA;EAAA,SACA,UAAA;EAAA,SACA,MAAA,GAAS,WAAA;EAAA,SACT,eAAA,GAAkB,KAAA,CAAM,KAAA,CAAM,UAAA,CAAW,UAAA;EAAA,SACzC,UAAA,IAAc,QAAA,EAAU,qBAAA;AAAA;AAAA,KAGvB,uCAAA;EAAA,SACD,QAAA;EAAA,SACA,aAAA,EAAe,aAAA,CAAc,YAAA;EAAA,SAC7B,MAAA,GAAS,WAAA;EAAA,SACT,eAAA,GAAkB,KAAA,CAAM,KAAA,CAAM,UAAA,CAAW,UAAA;EAAA,SACzC,UAAA,IAAc,QAAA,EAAU,qBAAA;AAAA;AAAA,KAGvB,uBAAA,IAA2B,KAAA,EAAO,UAAc,EAAE,KAAA;AAAA,KAElD,4BAAA;EAAA,SACD,aAAA;EAAA,SACA,WAAW;AAAA;AAAA,KAGV,2BAAA;EAAA,SACD,iBAAA;EAAA,SACA,aAAA,GAAgB,4BAAA;EAAA,SAChB,OAAA,GAAU,uBAAuB;AAAA;AAAA,KAGhC,qCAAA,GAAwC,wBAAA,GAClD,2BAA2B;EAAA,SAChB,WAAA,IAAe,KAAA;EAAA,SACf,OAAA,IAAW,KAAA;AAAA;AAAA,KAGZ,wCAAA,GAA2C,2BAAA,GACrD,2BAA2B;AAAA,KAEjB,oDAAA,GACV,uCAAA,GAA0C,2BAA2B;AAAA,KAE3D,qBAAA;EAAA,SACD,QAAA;EAAA,SACA,eAAA,GAAkB,KAAA,CAAM,KAAK,CAAC,UAAA,CAAW,UAAA;AAAA;AAAA,KAGxC,iCAAA,GAAoC,wBAAA;EAAA,SACrC,QAAA,EAAU,oBAAoB;AAAA;AAAA,KAG7B,6BAAA,GAAgC,wBAAA;EAAA,SACjC,QAAA,EAAU,gBAAgB;AAAA;AAAA,KAGzB,qBAAA;EAAA,SACD,MAAA;EAAA,SACA,OAAA,EAAS,QAAQ,CAAC,MAAA;AAAA;AAAA,KAGjB,kCAAA;EAAA,SACD,YAAA;EAAA,SACA,QAAA,EAAU,eAAA;EAAA,SACV,aAAA,GAAgB,aAAA,CAAc,YAAA;EAAA,SAC9B,KAAA;EAAA,SACA,eAAA,GAAkB,oBAAA;EAAA,SAClB,MAAA,GAAS,WAAA;AAAA;AAAA,cAiDP,qBAAA,GAAyB,OAAA,EAAS,QAAQ,CAAC,MAAA;AAAA,cAG3C,kCAAA,GACX,OAAA,EAAS,QAAQ,CAAC,MAAA;AAAA,cAUP,mCAAA,GACX,OAAA,EAAS,QAAQ,CAAC,MAAA;AAAA,cAOP,8BAAA,GAAkC,QAAA,UAAkB,UAAmB;AAAA,cAwavE,cAAA,GAAkB,OAAA,EAAS,qBAAA,KAAqB,MAAA,CAAA,MAAA,YAAA,mBAAA;AAAA,cA6IhD,sBAAA,GAA0B,OAAA,EAAS,wBAAA,KAAwB,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cAM3D,yBAAA,GAA6B,OAAA,EAAS,2BAAA,KAA2B,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cAMjE,qCAAA,GACX,OAAA,EAAS,uCAAA,KAAuC,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cASrC,qCAAA,GAAyC,OAAA,EAAS,iCAAA,KAAiC,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cAGnF,iCAAA,GAAqC,OAAA,EAAS,6BAAA,KAA6B,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cAwO3E,mCAAA,GACX,OAAA,EAAS,qCAAA,KAAqC,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cAyDnC,sCAAA,GACX,OAAA,EAAS,wCAAA,KAAwC,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cA8DtC,kDAAA,GACX,OAAA,EAAS,oDAAA,KAAoD,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cA8ClD,gCAAA,GAAoC,OAAA,EAAS,kCAAA,KAAkC,MAAA,CAAA,MAAA,oCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,EAAA,mBAAA;AAAA,cAmF/E,kBAAA,GAAsB,OAAA,EAAS,wBAAA,KAAwB,MAAA,CAAA,MAAA,qCAAA,UAAA,sCAAA,UAAA,sCAAA,QAAA,sCAAA,kBAAA,sCAAA,WAAA,sCAAA,UAAA,sCAAA,eAAA,sCAAA,aAAA,sCAAA,SAAA,sCAAA,OAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,iBAAA,sCAAA,cAAA,sCAAA,cAAA,sCAAA,YAAA,sCAAA,YAAA,sCAAA,gBAAA,sCAAA,qBAAA,sCAAA,qBAAA,sCAAA,mBAAA,sCAAA,kBAAA,sCAAA,iBAAA,sCAAA,gBAAA,sCAAA,iBAAA,sCAAA,oBAAA,sCAAA,sBAAA,sCAAA,kBAAA,sCAAA,kBAAA,sCAAA,eAAA,sCAAA,iBAAA,KAAA,mBAAA"}
@@ -304,8 +304,8 @@ const responseToEventStream = (response) => Stream.callback((queue) => Effect.ge
304
304
  yield* Scope.addFinalizer(callbackScope, Effect.gen(function* () {
305
305
  if (!(yield* Ref.get(terminalReached))) yield* closeResponseScope;
306
306
  }));
307
- yield* run().pipe(Effect.catch((error) => Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)));
308
- }));
307
+ yield* run();
308
+ }).pipe(Effect.onExit((exit) => Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void)));
309
309
  const abortSignalError = (signal) => new AgentTransportError({
310
310
  message: "Agent request aborted",
311
311
  cause: signal.reason
@@ -512,7 +512,7 @@ const streamAgentEventStreamUntilTerminal = (request) => {
512
512
  onEvent: request.onEvent
513
513
  }, queue);
514
514
  yield* Queue.end(queue).pipe(Effect.asVoid);
515
- }).pipe(Effect.catch((error) => Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))));
515
+ }).pipe(Effect.onExit((exit) => Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void)));
516
516
  };
517
517
  const streamAgentRunEventStreamUntilTerminal = (request) => {
518
518
  return Stream.callback((queue) => Effect.gen(function* () {
@@ -543,7 +543,7 @@ const streamAgentRunEventStreamUntilTerminal = (request) => {
543
543
  onEvent: request.onEvent
544
544
  }, queue);
545
545
  yield* Queue.end(queue).pipe(Effect.asVoid);
546
- }).pipe(Effect.catch((error) => Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))));
546
+ }).pipe(Effect.onExit((exit) => Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void)));
547
547
  };
548
548
  const streamAgentRunHitlResponseInitialChunk = (request, queue, setStartIndex) => drainAgentEventStream({
549
549
  queue,
@@ -580,7 +580,7 @@ const streamAgentRunHitlResponseEventStreamUntilTerminal = (request) => {
580
580
  onEvent: request.onEvent
581
581
  }, queue);
582
582
  yield* Queue.end(queue).pipe(Effect.asVoid);
583
- }).pipe(Effect.catch((error) => Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))));
583
+ }).pipe(Effect.onExit((exit) => Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void)));
584
584
  };
585
585
  const isAgentEvent = (message) => message._tag !== "SessionSnapshot";
586
586
  const streamCloudflareAgentEventStream = (request) => applyAbortSignal(Stream.callback((queue) => Effect.gen(function* () {
@@ -1 +1 @@
1
- {"version":3,"file":"transport.mjs","names":[],"sources":["../../src/client/transport.ts"],"sourcesContent":["import {\n Cause,\n Channel,\n Effect,\n Exit,\n Pull,\n Queue,\n Ref,\n Result,\n Scope,\n Stream,\n type Layer\n} from 'effect'\nimport {\n FetchHttpClient,\n HttpClient,\n HttpClientRequest,\n type HttpClientError,\n type HttpClientResponse\n} from 'effect/unstable/http'\nimport * as Schema from 'effect/Schema'\nimport {\n AgentEvent,\n AgentWebSocketServerMessage,\n QuestionResponseInput,\n ToolApprovalResponseInput,\n UserInput,\n isTerminalAgentEvent\n} from '@yolk-sdk/agent/protocol'\nimport type {\n AgentEvent as AgentEventType,\n AgentMessage,\n AgentReasoningEffort,\n AgentWebSocketServerMessage as AgentWebSocketServerMessageType,\n HitlResponse,\n QuestionResponse,\n ToolApprovalResponse,\n UserMessage\n} from '@yolk-sdk/agent/protocol'\nimport type { AgentTranscript } from './state.ts'\n\nexport class AgentTransportError extends Schema.TaggedErrorClass<AgentTransportError>()(\n 'AgentTransportError',\n {\n message: Schema.String,\n cause: Schema.Unknown\n }\n) {}\n\nexport type StreamAgentEventsRequest = {\n readonly endpoint?: string\n readonly sessionId: string\n readonly messages: AgentTranscript\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model?: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nexport type StreamAgentRunEventsRequest = {\n readonly endpoint: string\n readonly startIndex?: number\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nexport type StreamAgentRunHitlResponseEventsRequest = {\n readonly endpoint: string\n readonly hitlResponses: ReadonlyArray<HitlResponse>\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nexport type StreamAgentEventHandler = (event: AgentEventType, count: number) => void\n\nexport type AgentRunIdleReconnectOptions = {\n readonly idleTimeoutMs: number\n readonly maxAttempts?: number\n}\n\nexport type AgentRunContinuationOptions = {\n readonly continuationLimit?: number\n readonly idleReconnect?: AgentRunIdleReconnectOptions\n readonly onEvent?: StreamAgentEventHandler\n}\n\nexport type StreamAgentEventsUntilTerminalRequest = StreamAgentEventsRequest &\n AgentRunContinuationOptions & {\n readonly runEndpoint?: (runId: string) => string\n readonly onRunId?: (runId: string) => void\n }\n\nexport type StreamAgentRunEventsUntilTerminalRequest = StreamAgentRunEventsRequest &\n AgentRunContinuationOptions\n\nexport type StreamAgentRunHitlResponseEventsUntilTerminalRequest =\n StreamAgentRunHitlResponseEventsRequest & AgentRunContinuationOptions\n\nexport type CancelAgentRunRequest = {\n readonly endpoint: string\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n}\n\nexport type SubmitToolApprovalResponseRequest = StreamAgentEventsRequest & {\n readonly response: ToolApprovalResponse\n}\n\nexport type SubmitQuestionResponseRequest = StreamAgentEventsRequest & {\n readonly response: QuestionResponse\n}\n\nexport type AgentHttpResponseInfo = {\n readonly status: number\n readonly headers: Readonly<Record<string, string | undefined>>\n}\n\nexport type StreamCloudflareAgentEventsRequest = {\n readonly webSocketUrl: string\n readonly messages: AgentTranscript\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model?: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly signal?: AbortSignal\n}\n\nconst defaultEndpoint = '/api/agent'\nconst defaultRunContinuationLimit = 120\nconst defaultIdleReconnectMaxAttempts = 12\nconst relativeEndpointBase = 'http://yolk.local'\n\nconst headerValue = (headers: Readonly<Record<string, string | undefined>>, name: string) => {\n const direct = headers[name]\n\n if (direct !== undefined) {\n return direct\n }\n\n const normalizedName = name.toLowerCase()\n\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === normalizedName) {\n return value\n }\n }\n\n return undefined\n}\n\nconst nonEmptyHeaderValue = (\n headers: Readonly<Record<string, string | undefined>>,\n name: string\n) => {\n const value = headerValue(headers, name)?.trim()\n\n return value === undefined || value.length === 0 ? undefined : value\n}\n\nconst safeIntegerPattern = /^-?(0|[1-9]\\d*)$/\n\nconst parseSafeInteger = (raw: string) => {\n const value = raw.trim()\n\n if (!safeIntegerPattern.test(value)) {\n return undefined\n }\n\n const parsed = Number.parseInt(value, 10)\n\n return Number.isSafeInteger(parsed) ? parsed : undefined\n}\n\nexport const agentRunIdFromHeaders = (headers: Readonly<Record<string, string | undefined>>) =>\n nonEmptyHeaderValue(headers, 'x-workflow-run-id')\n\nexport const agentRunStreamTailIndexFromHeaders = (\n headers: Readonly<Record<string, string | undefined>>\n) => {\n const raw = nonEmptyHeaderValue(headers, 'x-workflow-stream-tail-index')\n if (raw === undefined) return undefined\n\n const parsed = parseSafeInteger(raw)\n\n return parsed !== undefined && parsed >= -1 ? parsed : undefined\n}\n\nexport const agentRunStreamStartIndexFromHeaders = (\n headers: Readonly<Record<string, string | undefined>>\n) => {\n const tailIndex = agentRunStreamTailIndexFromHeaders(headers)\n\n return tailIndex === undefined ? undefined : tailIndex + 1\n}\n\nexport const agentRunEndpointWithStartIndex = (endpoint: string, startIndex?: number) => {\n if (startIndex === undefined) return endpoint\n\n validateAgentRunStartIndex(startIndex)\n\n const parsed = parseEndpointOrThrow(endpoint)\n parsed.url.searchParams.set('startIndex', String(startIndex))\n\n return serializeEndpoint(parsed)\n}\n\ntype ParsedEndpoint = {\n readonly url: URL\n readonly absolute: boolean\n readonly leadingSlash: boolean\n}\n\nconst absoluteUrlPattern = /^[A-Za-z][A-Za-z\\d+.-]*:/\n\nconst invalidAgentRunEndpointError = (endpoint: string) =>\n new AgentTransportError({\n message: 'Invalid agent run endpoint',\n cause: endpoint\n })\n\nconst parseEndpoint = (endpoint: string): ParsedEndpoint | undefined =>\n Result.try(() => ({\n url: new URL(endpoint, relativeEndpointBase),\n absolute: absoluteUrlPattern.test(endpoint),\n leadingSlash: endpoint.startsWith('/')\n })).pipe(\n Result.match({\n onFailure: () => undefined,\n onSuccess: parsed => parsed\n })\n )\n\nconst parseEndpointOrThrow = (endpoint: string) => {\n const parsed = parseEndpoint(endpoint)\n\n if (parsed !== undefined) {\n return parsed\n }\n\n throw invalidAgentRunEndpointError(endpoint)\n}\n\nconst parseEndpointEffect = (endpoint: string) => {\n const parsed = parseEndpoint(endpoint)\n\n return parsed === undefined\n ? Effect.fail(invalidAgentRunEndpointError(endpoint))\n : Effect.succeed(parsed)\n}\n\nconst serializeEndpoint = (endpoint: ParsedEndpoint) => {\n if (endpoint.absolute) {\n return endpoint.url.toString()\n }\n\n const serialized = `${endpoint.url.pathname}${endpoint.url.search}${endpoint.url.hash}`\n\n return endpoint.leadingSlash ? serialized : serialized.slice(1)\n}\n\nconst appendEncodedPathSegment = (endpoint: string, segment: string) => {\n const parsed = parseEndpointOrThrow(endpoint)\n\n const basePath = parsed.url.pathname.endsWith('/')\n ? parsed.url.pathname.slice(0, -1)\n : parsed.url.pathname\n\n parsed.url.pathname = `${basePath}/${encodeURIComponent(segment)}`\n\n return serializeEndpoint(parsed)\n}\n\nconst defaultAgentRunEndpoint = (endpoint: string | undefined, runId: string) =>\n appendEncodedPathSegment(endpoint ?? defaultEndpoint, runId)\n\nconst invalidAgentRunContinuationLimitError = (limit: number | undefined) =>\n new AgentTransportError({\n message: 'Invalid agent run continuation limit',\n cause: limit\n })\n\nconst agentRunContinuationLimitEffect = (limit: number | undefined) => {\n if (limit === undefined) return Effect.succeed(defaultRunContinuationLimit)\n\n return Number.isSafeInteger(limit) && limit >= 0\n ? Effect.succeed(limit)\n : Effect.fail(invalidAgentRunContinuationLimitError(limit))\n}\n\nconst invalidIdleReconnectMaxAttemptsError = (limit: number | undefined) =>\n new AgentTransportError({\n message: 'Invalid agent run idle reconnect max attempts',\n cause: limit\n })\n\nconst idleReconnectMaxAttemptsEffect = (limit: number | undefined) => {\n if (limit === undefined) return Effect.succeed(defaultIdleReconnectMaxAttempts)\n\n return Number.isSafeInteger(limit) && limit >= 0\n ? Effect.succeed(limit)\n : Effect.fail(invalidIdleReconnectMaxAttemptsError(limit))\n}\n\nconst validateAgentRunIdleReconnectEffect = (\n options: AgentRunIdleReconnectOptions | undefined\n) => {\n if (options === undefined) return Effect.void\n\n if (!Number.isSafeInteger(options.idleTimeoutMs) || options.idleTimeoutMs <= 0) {\n return Effect.fail(\n new AgentTransportError({\n message: 'Invalid agent run idle reconnect timeout',\n cause: options.idleTimeoutMs\n })\n )\n }\n\n return idleReconnectMaxAttemptsEffect(options.maxAttempts).pipe(Effect.asVoid)\n}\n\nconst validateAgentRunStartIndex = (startIndex: number | undefined) => {\n if (startIndex === undefined || (Number.isSafeInteger(startIndex) && startIndex >= 0)) {\n return\n }\n\n throw invalidAgentRunStartIndexError(startIndex)\n}\n\nconst invalidAgentRunStartIndexError = (startIndex: number | undefined) =>\n new AgentTransportError({\n message: 'Invalid agent run stream start index',\n cause: startIndex\n })\n\nconst validateAgentRunStartIndexEffect = (startIndex: number | undefined) =>\n startIndex === undefined || (Number.isSafeInteger(startIndex) && startIndex >= 0)\n ? Effect.void\n : Effect.fail(invalidAgentRunStartIndexError(startIndex))\n\nconst agentRunEndpointWithStartIndexEffect = (endpoint: string, startIndex: number | undefined) =>\n Effect.gen(function* () {\n if (startIndex === undefined) return endpoint\n\n yield* validateAgentRunStartIndexEffect(startIndex)\n\n const parsed = yield* parseEndpointEffect(endpoint)\n parsed.url.searchParams.set('startIndex', String(startIndex))\n\n return serializeEndpoint(parsed)\n })\n\nconst nextAgentRunStartIndex = (startIndex: number | undefined, count: number) =>\n (startIndex ?? 0) + count\n\nconst unknownToMessage = (error: unknown) =>\n error instanceof Error ? error.message : String(error)\n\nconst toTransportError = (message: string, cause: unknown) =>\n new AgentTransportError({\n message,\n cause\n })\n\nconst toHttpClientTransportError = (message: string) => (error: HttpClientError.HttpClientError) =>\n toTransportError(`${message}: ${error.message}`, error)\n\nconst decodeAgentEvent = (value: unknown) =>\n Schema.decodeUnknownEffect(AgentEvent)(value).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `Invalid agent event: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst decodeWebSocketServerMessage = (value: unknown) =>\n Schema.decodeUnknownEffect(AgentWebSocketServerMessage)(value).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `Invalid agent WebSocket message: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst encodeJsonString = (value: unknown, message: string) =>\n Schema.encodeUnknownEffect(Schema.UnknownFromJsonString)(value).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `${message}: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst decodeJsonString = (raw: string, message: string) =>\n Schema.decodeUnknownEffect(Schema.UnknownFromJsonString)(raw).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `${message}: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst parseAgentEventLine = (line: string) =>\n Effect.gen(function* () {\n const parsed = yield* decodeJsonString(line, 'Invalid NDJSON line')\n\n return yield* decodeAgentEvent(parsed)\n })\n\nconst parseWebSocketServerMessage = (\n raw: string\n): Effect.Effect<AgentWebSocketServerMessageType, AgentTransportError> =>\n Effect.gen(function* () {\n const parsed = yield* decodeJsonString(raw, 'Invalid WebSocket message')\n\n return yield* decodeWebSocketServerMessage(parsed)\n })\n\nconst isUserMessage = (message: AgentMessage): message is UserMessage => message._tag === 'User'\n\nconst lastUserMessage = (\n messages: AgentTranscript\n): Effect.Effect<UserMessage, AgentTransportError> => {\n const reversed = messages.slice().reverse()\n const message = reversed.find(isUserMessage)\n\n if (message === undefined) {\n return Effect.fail(\n new AgentTransportError({\n message: 'Cloudflare WebSocket transport requires a user message',\n cause: messages\n })\n )\n }\n\n return Effect.succeed(message)\n}\n\nconst makeClientInputJson = (\n request: StreamCloudflareAgentEventsRequest,\n expectedRevision: number\n): Effect.Effect<string, AgentTransportError> =>\n Effect.gen(function* () {\n const hitlResponse = request.hitlResponses?.[0]\n\n if (request.hitlResponses !== undefined && request.hitlResponses.length > 1) {\n return yield* Effect.fail(\n new AgentTransportError({\n message: 'Cloudflare WebSocket transport supports one HITL response at a time',\n cause: request.hitlResponses\n })\n )\n }\n\n if (hitlResponse === undefined) {\n const message = yield* lastUserMessage(request.messages)\n\n return yield* encodeJsonString(\n UserInput.make({\n message,\n expectedRevision,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n }),\n 'Could not serialize WebSocket user input'\n )\n }\n\n return yield* encodeJsonString(\n hitlResponse._tag === 'ToolApprovalResponse'\n ? ToolApprovalResponseInput.make({\n response: hitlResponse,\n expectedRevision,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n })\n : QuestionResponseInput.make({\n response: hitlResponse,\n expectedRevision,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n }),\n 'Could not serialize WebSocket HITL response'\n )\n })\n\nconst responseErrorMessage = (response: HttpClientResponse.HttpClientResponse) =>\n response.text.pipe(\n Effect.mapError(toHttpClientTransportError('Could not read agent error body')),\n Effect.map(text => (text.length > 0 ? text : `Request failed with ${response.status}`))\n )\n\nconst makeHttpRequest = (request: StreamAgentEventsRequest) =>\n encodeJsonString(\n {\n sessionId: request.sessionId,\n messages: request.messages,\n hitlResponses: request.hitlResponses,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n },\n 'Could not serialize agent request'\n ).pipe(\n Effect.map(body =>\n HttpClientRequest.post(request.endpoint ?? defaultEndpoint).pipe(\n HttpClientRequest.setHeaders({\n accept: 'application/x-ndjson',\n 'content-type': 'application/json'\n }),\n HttpClientRequest.bodyText(body, 'application/json')\n )\n )\n )\n\nconst makeHttpRunHitlResponseRequest = (request: StreamAgentRunHitlResponseEventsRequest) =>\n encodeJsonString(\n { hitlResponses: request.hitlResponses },\n 'Could not serialize agent run HITL response'\n ).pipe(\n Effect.map(body =>\n HttpClientRequest.post(request.endpoint).pipe(\n HttpClientRequest.setHeaders({\n accept: 'application/x-ndjson',\n 'content-type': 'application/json'\n }),\n HttpClientRequest.bodyText(body, 'application/json')\n )\n )\n )\n\nconst requestAgentResponse = (request: StreamAgentEventsRequest) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient\n const httpRequest = yield* makeHttpRequest(request)\n const response = yield* client\n .execute(httpRequest)\n .pipe(Effect.mapError(toHttpClientTransportError('Agent request failed')))\n\n if (response.status >= 200 && response.status < 300) {\n yield* Effect.sync(() =>\n request.onResponse?.({ status: response.status, headers: response.headers })\n )\n return response\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent request failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n })\n\nconst requestAgentRunResponse = (request: StreamAgentRunEventsRequest) =>\n Effect.gen(function* () {\n const endpoint = yield* agentRunEndpointWithStartIndexEffect(request.endpoint, request.startIndex)\n\n const client = yield* HttpClient.HttpClient\n const response = yield* client\n .execute(\n HttpClientRequest.get(endpoint).pipe(\n HttpClientRequest.setHeaders({ accept: 'application/x-ndjson' })\n )\n )\n .pipe(Effect.mapError(toHttpClientTransportError('Agent run request failed')))\n\n if (response.status >= 200 && response.status < 300) {\n yield* Effect.sync(() =>\n request.onResponse?.({ status: response.status, headers: response.headers })\n )\n return response\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent run request failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n })\n\nconst requestAgentRunHitlResponse = (request: StreamAgentRunHitlResponseEventsRequest) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient\n const httpRequest = yield* makeHttpRunHitlResponseRequest(request)\n const response = yield* client\n .execute(httpRequest)\n .pipe(Effect.mapError(toHttpClientTransportError('Agent run HITL request failed')))\n\n if (response.status >= 200 && response.status < 300) {\n yield* Effect.sync(() =>\n request.onResponse?.({ status: response.status, headers: response.headers })\n )\n return response\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent run HITL request failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n })\n\nexport const cancelAgentRun = (request: CancelAgentRunRequest) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient\n const response = yield* client\n .execute(HttpClientRequest.delete(request.endpoint))\n .pipe(Effect.mapError(toHttpClientTransportError('Agent run cancel failed')))\n\n if (response.status >= 200 && response.status < 300) {\n return\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent run cancel failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n }).pipe(Effect.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nconst responseToLineStream = (response: HttpClientResponse.HttpClientResponse) =>\n response.stream.pipe(\n Stream.mapError(toHttpClientTransportError('Could not read agent response body')),\n Stream.decodeText,\n Stream.splitLines,\n Stream.map(line => line.trim()),\n Stream.filter(line => line.length > 0)\n )\n\nconst closeScope = (scope: Scope.Scope) => Scope.close(scope, Exit.succeed(undefined))\n\n// Protocol-terminal events finish the consumer stream, but HTTP bodies must still\n// drain to EOF so server runtimes do not observe client-side response aborts.\nconst responseToEventStream = (response: HttpClientResponse.HttpClientResponse) =>\n Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n const callbackScope = yield* Scope.Scope\n // Own the response stream in a scope that can outlive the consumer after a\n // terminal event; before terminal, consumer cancellation closes it.\n const responseScope = yield* Scope.make()\n const responseScopeClosed = yield* Ref.make(false)\n const terminalReached = yield* Ref.make(false)\n const pull = yield* Channel.toPullScoped(\n Stream.toChannel(responseToLineStream(response)),\n responseScope\n )\n const closeResponseScope = Effect.gen(function* () {\n const closed = yield* Ref.get(responseScopeClosed)\n\n if (!closed) {\n yield* Ref.set(responseScopeClosed, true)\n yield* closeScope(responseScope)\n }\n })\n const endQueue = Queue.end(queue).pipe(Effect.asVoid)\n const failQueue = (cause: Cause.Cause<AgentTransportError>) =>\n Queue.failCause(queue, cause).pipe(Effect.andThen(closeResponseScope), Effect.asVoid)\n const drainResponse = (): Effect.Effect<void, AgentTransportError> =>\n Pull.matchEffect(pull, {\n onSuccess: () => drainResponse(),\n onFailure: cause => Effect.failCause(cause),\n onDone: () => Effect.void\n })\n const startTerminalDrain = Effect.gen(function* () {\n yield* Ref.set(terminalReached, true)\n yield* endQueue\n yield* drainResponse().pipe(\n Effect.catch(() => Effect.void),\n Effect.ensuring(closeResponseScope),\n Effect.forkDetach({ startImmediately: true }),\n Effect.asVoid\n )\n })\n const emitLines = (lines: ReadonlyArray<string>): Effect.Effect<void, AgentTransportError> =>\n Effect.gen(function* () {\n for (const line of lines) {\n const event = yield* parseAgentEventLine(line)\n\n yield* Queue.offer(queue, event)\n\n if (isTerminalAgentEvent(event)) {\n yield* startTerminalDrain\n return\n }\n }\n\n yield* run()\n })\n const run = (): Effect.Effect<void, AgentTransportError> =>\n Pull.matchEffect(pull, {\n onSuccess: emitLines,\n onFailure: failQueue,\n onDone: () => endQueue.pipe(Effect.andThen(closeResponseScope))\n })\n\n yield* Scope.addFinalizer(\n callbackScope,\n Effect.gen(function* () {\n const terminal = yield* Ref.get(terminalReached)\n\n if (!terminal) {\n yield* closeResponseScope\n }\n })\n )\n\n yield* run().pipe(\n Effect.catch(error => Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))\n )\n })\n )\n\nconst abortSignalError = (signal: AbortSignal) =>\n new AgentTransportError({\n message: 'Agent request aborted',\n cause: signal.reason\n })\n\nconst abortSignalEffect = (signal: AbortSignal) =>\n Effect.callback<never, AgentTransportError>(resume => {\n if (signal.aborted) {\n resume(Effect.fail(abortSignalError(signal)))\n return Effect.void\n }\n\n const listener = () => resume(Effect.fail(abortSignalError(signal)))\n signal.addEventListener('abort', listener, { once: true })\n\n return Effect.sync(() => signal.removeEventListener('abort', listener))\n })\n\nconst applyAbortSignal = <A, E, R>(\n stream: Stream.Stream<A, E, R>,\n signal: AbortSignal | undefined\n) => (signal === undefined ? stream : stream.pipe(Stream.interruptWhen(abortSignalEffect(signal))))\n\nexport const streamAgentEventStream = (request: StreamAgentEventsRequest) =>\n applyAbortSignal(\n Stream.fromEffect(requestAgentResponse(request)).pipe(Stream.flatMap(responseToEventStream)),\n request.signal\n ).pipe(Stream.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nexport const streamAgentRunEventStream = (request: StreamAgentRunEventsRequest) =>\n applyAbortSignal(\n Stream.fromEffect(requestAgentRunResponse(request)).pipe(Stream.flatMap(responseToEventStream)),\n request.signal\n ).pipe(Stream.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nexport const streamAgentRunHitlResponseEventStream = (\n request: StreamAgentRunHitlResponseEventsRequest\n) =>\n applyAbortSignal(\n Stream.fromEffect(requestAgentRunHitlResponse(request)).pipe(\n Stream.flatMap(responseToEventStream)\n ),\n request.signal\n ).pipe(Stream.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nexport const streamToolApprovalResponseEventStream = (request: SubmitToolApprovalResponseRequest) =>\n streamAgentEventStream({ ...request, hitlResponses: [request.response] })\n\nexport const streamQuestionResponseEventStream = (request: SubmitQuestionResponseRequest) =>\n streamAgentEventStream({ ...request, hitlResponses: [request.response] })\n\ntype AgentEventChunkResult = {\n readonly count: number\n readonly terminal: boolean\n readonly idle: boolean\n}\n\ntype AgentEventPullResult =\n | { readonly _tag: 'Events'; readonly events: Iterable<AgentEventType> }\n | { readonly _tag: 'Done' }\n | { readonly _tag: 'Idle' }\n\ntype AgentRunContinuationInput = AgentRunContinuationOptions & {\n readonly endpoint: string | undefined\n readonly startIndex: number | undefined\n readonly countOffset: number\n readonly terminal: boolean\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nconst missingAgentRunContinuationEndpointError = () =>\n new AgentTransportError({\n message: 'Agent run continuation failed: missing x-workflow-run-id',\n cause: 'missing_run_id'\n })\n\nconst exhaustedAgentRunContinuationLimitError = (limit: number) =>\n new AgentTransportError({\n message: 'Agent run continuation limit reached before a terminal event',\n cause: { limit }\n })\n\nconst noProgressAgentRunContinuationError = (endpoint: string, startIndex: number | undefined) =>\n new AgentTransportError({\n message: 'Agent run continuation made no progress before a terminal event',\n cause: { endpoint, startIndex }\n })\n\nconst noProgressAgentRunContinuationDelayMs = 250\n\nconst idleReconnectLimitReachedError = (limit: number) =>\n new AgentTransportError({\n message: 'Agent run idle reconnect limit reached before a terminal event',\n cause: { limit }\n })\n\nconst missingIdleReconnectRunEndpointError = () =>\n new AgentTransportError({\n message: 'Agent run idle reconnect failed: missing x-workflow-run-id',\n cause: 'missing_run_id'\n })\n\nconst waitForAgentRunContinuationProgress = (signal: AbortSignal | undefined) => {\n const sleep = Effect.sleep(`${noProgressAgentRunContinuationDelayMs} millis`)\n\n return signal === undefined ? sleep : sleep.pipe(Effect.raceFirst(abortSignalEffect(signal)))\n}\n\nconst missingAgentRunTailIndexError = () =>\n new AgentTransportError({\n message: 'Agent run HITL response missing x-workflow-stream-tail-index',\n cause: 'missing_tail_index'\n })\n\nconst pullAgentEventChunk = <A extends Iterable<AgentEventType>>(\n pull: Pull.Pull<A, AgentTransportError, void, never>,\n idleReconnect: AgentRunIdleReconnectOptions | undefined\n) => {\n const pullEvents: Effect.Effect<AgentEventPullResult, AgentTransportError, never> =\n Pull.matchEffect(pull, {\n onSuccess: events => Effect.succeed({ _tag: 'Events', events }),\n onFailure: cause => Effect.failCause(cause),\n onDone: () => Effect.succeed({ _tag: 'Done' })\n })\n\n if (idleReconnect === undefined) return pullEvents\n\n return pullEvents.pipe(\n Effect.raceFirst(\n Effect.sleep(`${idleReconnect.idleTimeoutMs} millis`).pipe(\n Effect.map((): AgentEventPullResult => ({ _tag: 'Idle' }))\n )\n )\n )\n}\n\nconst drainAgentEventStream = (input: {\n readonly queue: Queue.Enqueue<AgentEventType>\n readonly stream: Stream.Stream<AgentEventType, AgentTransportError, never>\n readonly countOffset: number\n readonly idleReconnect?: AgentRunIdleReconnectOptions\n readonly onEvent?: StreamAgentEventHandler\n}): Effect.Effect<AgentEventChunkResult, AgentTransportError, Scope.Scope> =>\n Effect.gen(function* () {\n const scope = yield* Scope.make()\n const pull = yield* Channel.toPullScoped(Stream.toChannel(input.stream), scope)\n const run = (state: {\n readonly count: number\n readonly terminal: boolean\n }): Effect.Effect<AgentEventChunkResult, AgentTransportError, never> =>\n Effect.gen(function* () {\n const pulled = yield* pullAgentEventChunk(pull, input.idleReconnect)\n\n switch (pulled._tag) {\n case 'Idle':\n return { count: state.count, terminal: state.terminal, idle: true }\n case 'Done':\n return { count: state.count, terminal: state.terminal, idle: false }\n case 'Events': {\n let count = state.count\n let terminal = state.terminal\n\n for (const event of pulled.events) {\n count += 1\n terminal = terminal || isTerminalAgentEvent(event)\n yield* Effect.sync(() => input.onEvent?.(event, input.countOffset + count))\n yield* Queue.offer(input.queue, event)\n\n if (terminal) return { count, terminal, idle: false }\n }\n\n return yield* run({ count, terminal })\n }\n }\n })\n\n return yield* run({ count: 0, terminal: false }).pipe(Effect.ensuring(closeScope(scope)))\n })\n\nconst streamAgentRunContinuationChunk = (input: {\n readonly queue: Queue.Enqueue<AgentEventType>\n readonly endpoint: string\n readonly startIndex: number | undefined\n readonly countOffset: number\n readonly signal: AbortSignal | undefined\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n readonly onEvent?: StreamAgentEventHandler\n readonly idleReconnect?: AgentRunIdleReconnectOptions\n}): Effect.Effect<AgentEventChunkResult, AgentTransportError, Scope.Scope> =>\n drainAgentEventStream({\n queue: input.queue,\n stream: streamAgentRunEventStream({\n endpoint: input.endpoint,\n startIndex: input.startIndex,\n signal: input.signal,\n httpClientLayer: input.httpClientLayer,\n onResponse: input.onResponse\n }),\n countOffset: input.countOffset,\n idleReconnect: input.idleReconnect,\n onEvent: input.onEvent\n })\n\nconst streamAgentRunContinuations = (\n input: AgentRunContinuationInput,\n queue: Queue.Enqueue<AgentEventType>\n): Effect.Effect<void, AgentTransportError, Scope.Scope> =>\n Effect.gen(function* () {\n let totalCount = input.countOffset\n let terminal = input.terminal\n let startIndex = input.startIndex\n const limit = yield* agentRunContinuationLimitEffect(input.continuationLimit)\n const idleReconnectLimit =\n input.idleReconnect === undefined\n ? undefined\n : yield* idleReconnectMaxAttemptsEffect(input.idleReconnect.maxAttempts)\n let idleReconnects = 0\n\n if (terminal) {\n return\n }\n\n if (input.endpoint === undefined) {\n return yield* Effect.fail(missingAgentRunContinuationEndpointError())\n }\n\n let continuation = 0\n while (continuation < limit) {\n const endpoint = input.endpoint\n const chunkStartIndex = startIndex\n\n const chunk = yield* streamAgentRunContinuationChunk({\n queue,\n endpoint,\n startIndex: chunkStartIndex,\n countOffset: totalCount,\n signal: input.signal,\n httpClientLayer: input.httpClientLayer,\n onResponse: input.onResponse,\n idleReconnect: input.idleReconnect,\n onEvent: input.onEvent\n })\n\n if (chunk.idle) {\n if (idleReconnectLimit !== undefined && idleReconnects >= idleReconnectLimit) {\n return yield* Effect.fail(idleReconnectLimitReachedError(idleReconnectLimit))\n }\n\n startIndex = nextAgentRunStartIndex(chunkStartIndex, chunk.count)\n totalCount += chunk.count\n idleReconnects += 1\n continue\n }\n\n continuation += 1\n\n if (chunk.count === 0 && !chunk.terminal) {\n if (continuation >= limit) {\n return yield* Effect.fail(noProgressAgentRunContinuationError(endpoint, startIndex))\n }\n\n yield* waitForAgentRunContinuationProgress(input.signal)\n continue\n }\n\n terminal = chunk.terminal\n startIndex = nextAgentRunStartIndex(chunkStartIndex, chunk.count)\n totalCount += chunk.count\n\n if (terminal) {\n return\n }\n }\n\n return yield* Effect.fail(exhaustedAgentRunContinuationLimitError(limit))\n })\n\nexport const streamAgentEventStreamUntilTerminal = (\n request: StreamAgentEventsUntilTerminalRequest\n) => {\n return Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n yield* agentRunContinuationLimitEffect(request.continuationLimit).pipe(Effect.asVoid)\n yield* validateAgentRunIdleReconnectEffect(request.idleReconnect)\n let runEndpoint: string | undefined\n let startIndex: number | undefined\n const firstChunk = yield* drainAgentEventStream({\n queue,\n stream: streamAgentEventStream({\n ...request,\n onResponse: response => {\n startIndex = agentRunStreamStartIndexFromHeaders(response.headers)\n const runId = agentRunIdFromHeaders(response.headers)\n if (runId !== undefined) {\n runEndpoint =\n request.runEndpoint?.(runId) ?? defaultAgentRunEndpoint(request.endpoint, runId)\n request.onRunId?.(runId)\n }\n\n request.onResponse?.(response)\n }\n }),\n countOffset: 0,\n idleReconnect: request.idleReconnect,\n onEvent: request.onEvent\n })\n\n if (firstChunk.idle && runEndpoint === undefined) {\n return yield* Effect.fail(missingIdleReconnectRunEndpointError())\n }\n\n yield* streamAgentRunContinuations(\n {\n endpoint: runEndpoint,\n startIndex: nextAgentRunStartIndex(startIndex, firstChunk.count),\n countOffset: firstChunk.count,\n terminal: firstChunk.terminal,\n continuationLimit: request.continuationLimit,\n idleReconnect: request.idleReconnect,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n onEvent: request.onEvent\n },\n queue\n )\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }).pipe(\n Effect.catch((error: AgentTransportError) =>\n Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)\n )\n )\n )\n}\n\nexport const streamAgentRunEventStreamUntilTerminal = (\n request: StreamAgentRunEventsUntilTerminalRequest\n) => {\n return Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n yield* agentRunContinuationLimitEffect(request.continuationLimit).pipe(Effect.asVoid)\n yield* validateAgentRunIdleReconnectEffect(request.idleReconnect)\n yield* validateAgentRunStartIndexEffect(request.startIndex)\n const firstChunk = yield* streamAgentRunContinuationChunk({\n queue,\n endpoint: request.endpoint,\n startIndex: request.startIndex,\n countOffset: 0,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n idleReconnect: request.idleReconnect,\n onEvent: request.onEvent\n })\n\n yield* streamAgentRunContinuations(\n {\n endpoint: request.endpoint,\n startIndex: nextAgentRunStartIndex(request.startIndex, firstChunk.count),\n countOffset: firstChunk.count,\n terminal: firstChunk.terminal,\n continuationLimit: request.continuationLimit,\n idleReconnect: request.idleReconnect,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n onEvent: request.onEvent\n },\n queue\n )\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }).pipe(\n Effect.catch((error: AgentTransportError) =>\n Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)\n )\n )\n )\n}\n\nconst streamAgentRunHitlResponseInitialChunk = (\n request: StreamAgentRunHitlResponseEventsUntilTerminalRequest,\n queue: Queue.Enqueue<AgentEventType>,\n setStartIndex: (startIndex: number | undefined) => void\n): Effect.Effect<AgentEventChunkResult, AgentTransportError, Scope.Scope> =>\n drainAgentEventStream({\n queue,\n stream: streamAgentRunHitlResponseEventStream({\n ...request,\n onResponse: response => {\n setStartIndex(agentRunStreamStartIndexFromHeaders(response.headers))\n request.onResponse?.(response)\n }\n }),\n countOffset: 0,\n idleReconnect: request.idleReconnect,\n onEvent: request.onEvent\n })\n\nexport const streamAgentRunHitlResponseEventStreamUntilTerminal = (\n request: StreamAgentRunHitlResponseEventsUntilTerminalRequest\n) => {\n return Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n yield* agentRunContinuationLimitEffect(request.continuationLimit).pipe(Effect.asVoid)\n yield* validateAgentRunIdleReconnectEffect(request.idleReconnect)\n let startIndex: number | undefined\n const firstChunk = yield* streamAgentRunHitlResponseInitialChunk(\n request,\n queue,\n nextStartIndex => {\n startIndex = nextStartIndex\n }\n )\n\n if (!firstChunk.terminal && startIndex === undefined) {\n return yield* Effect.fail(missingAgentRunTailIndexError())\n }\n\n yield* streamAgentRunContinuations(\n {\n endpoint: request.endpoint,\n startIndex: nextAgentRunStartIndex(startIndex, firstChunk.count),\n countOffset: firstChunk.count,\n terminal: firstChunk.terminal,\n continuationLimit: request.continuationLimit,\n idleReconnect: request.idleReconnect,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n onEvent: request.onEvent\n },\n queue\n )\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }).pipe(\n Effect.catch((error: AgentTransportError) =>\n Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)\n )\n )\n )\n}\n\nconst isAgentEvent = (message: AgentWebSocketServerMessageType): message is AgentEventType =>\n message._tag !== 'SessionSnapshot'\n\nexport const streamCloudflareAgentEventStream = (request: StreamCloudflareAgentEventsRequest) =>\n applyAbortSignal(\n Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n const socket = new WebSocket(request.webSocketUrl)\n let sentInput = false\n let settled = false\n const closeSocket = Effect.sync(() => {\n if (socket.readyState === WebSocket.OPEN || socket.readyState === WebSocket.CONNECTING) {\n socket.close(1000, 'done')\n }\n })\n const failQueue = (error: AgentTransportError) =>\n Effect.runFork(Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))\n const handleMessage = (event: MessageEvent) => {\n if (typeof event.data !== 'string') {\n failQueue(toTransportError('Agent WebSocket returned binary data', event.data))\n return\n }\n\n Effect.runFork(\n parseWebSocketServerMessage(event.data).pipe(\n Effect.flatMap(message => {\n if (message._tag === 'SessionSnapshot') {\n return sentInput\n ? Effect.void\n : makeClientInputJson(request, message.revision).pipe(\n Effect.flatMap(body => Effect.sync(() => socket.send(body))),\n Effect.tap(() =>\n Effect.sync(() => {\n sentInput = true\n })\n )\n )\n }\n\n if (!isAgentEvent(message)) {\n return Effect.void\n }\n\n return Effect.gen(function* () {\n yield* Queue.offer(queue, message)\n\n if (isTerminalAgentEvent(message)) {\n yield* Effect.sync(() => {\n settled = true\n socket.close(1000, 'done')\n })\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }\n })\n }),\n Effect.catch(error => Effect.sync(() => failQueue(error)))\n )\n )\n }\n const handleError = () => {\n failQueue(toTransportError('Agent WebSocket failed', request.webSocketUrl))\n }\n const handleClose = () => {\n if (!settled) {\n failQueue(toTransportError('Agent WebSocket closed', request.webSocketUrl))\n }\n }\n\n yield* Effect.acquireRelease(\n Effect.sync(() => {\n socket.addEventListener('message', handleMessage)\n socket.addEventListener('error', handleError)\n socket.addEventListener('close', handleClose)\n }),\n () =>\n Effect.sync(() => {\n socket.removeEventListener('message', handleMessage)\n socket.removeEventListener('error', handleError)\n socket.removeEventListener('close', handleClose)\n }).pipe(Effect.andThen(closeSocket))\n )\n })\n ),\n request.signal\n )\n\nexport const collectAgentEvents = (request: StreamAgentEventsRequest) =>\n streamAgentEventStream(request).pipe(Stream.runCollect)\n"],"mappings":"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"}
1
+ {"version":3,"file":"transport.mjs","names":[],"sources":["../../src/client/transport.ts"],"sourcesContent":["import {\n Cause,\n Channel,\n Effect,\n Exit,\n Pull,\n Queue,\n Ref,\n Result,\n Scope,\n Stream,\n type Layer\n} from 'effect'\nimport {\n FetchHttpClient,\n HttpClient,\n HttpClientRequest,\n type HttpClientError,\n type HttpClientResponse\n} from 'effect/unstable/http'\nimport * as Schema from 'effect/Schema'\nimport {\n AgentEvent,\n AgentWebSocketServerMessage,\n QuestionResponseInput,\n ToolApprovalResponseInput,\n UserInput,\n isTerminalAgentEvent\n} from '@yolk-sdk/agent/protocol'\nimport type {\n AgentEvent as AgentEventType,\n AgentMessage,\n AgentReasoningEffort,\n AgentWebSocketServerMessage as AgentWebSocketServerMessageType,\n HitlResponse,\n QuestionResponse,\n ToolApprovalResponse,\n UserMessage\n} from '@yolk-sdk/agent/protocol'\nimport type { AgentTranscript } from './state.ts'\n\nexport class AgentTransportError extends Schema.TaggedErrorClass<AgentTransportError>()(\n 'AgentTransportError',\n {\n message: Schema.String,\n cause: Schema.Unknown\n }\n) {}\n\nexport type StreamAgentEventsRequest = {\n readonly endpoint?: string\n readonly sessionId: string\n readonly messages: AgentTranscript\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model?: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nexport type StreamAgentRunEventsRequest = {\n readonly endpoint: string\n readonly startIndex?: number\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nexport type StreamAgentRunHitlResponseEventsRequest = {\n readonly endpoint: string\n readonly hitlResponses: ReadonlyArray<HitlResponse>\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nexport type StreamAgentEventHandler = (event: AgentEventType, count: number) => void\n\nexport type AgentRunIdleReconnectOptions = {\n readonly idleTimeoutMs: number\n readonly maxAttempts?: number\n}\n\nexport type AgentRunContinuationOptions = {\n readonly continuationLimit?: number\n readonly idleReconnect?: AgentRunIdleReconnectOptions\n readonly onEvent?: StreamAgentEventHandler\n}\n\nexport type StreamAgentEventsUntilTerminalRequest = StreamAgentEventsRequest &\n AgentRunContinuationOptions & {\n readonly runEndpoint?: (runId: string) => string\n readonly onRunId?: (runId: string) => void\n }\n\nexport type StreamAgentRunEventsUntilTerminalRequest = StreamAgentRunEventsRequest &\n AgentRunContinuationOptions\n\nexport type StreamAgentRunHitlResponseEventsUntilTerminalRequest =\n StreamAgentRunHitlResponseEventsRequest & AgentRunContinuationOptions\n\nexport type CancelAgentRunRequest = {\n readonly endpoint: string\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n}\n\nexport type SubmitToolApprovalResponseRequest = StreamAgentEventsRequest & {\n readonly response: ToolApprovalResponse\n}\n\nexport type SubmitQuestionResponseRequest = StreamAgentEventsRequest & {\n readonly response: QuestionResponse\n}\n\nexport type AgentHttpResponseInfo = {\n readonly status: number\n readonly headers: Readonly<Record<string, string | undefined>>\n}\n\nexport type StreamCloudflareAgentEventsRequest = {\n readonly webSocketUrl: string\n readonly messages: AgentTranscript\n readonly hitlResponses?: ReadonlyArray<HitlResponse>\n readonly model?: string\n readonly reasoningEffort?: AgentReasoningEffort\n readonly signal?: AbortSignal\n}\n\nconst defaultEndpoint = '/api/agent'\nconst defaultRunContinuationLimit = 120\nconst defaultIdleReconnectMaxAttempts = 12\nconst relativeEndpointBase = 'http://yolk.local'\n\nconst headerValue = (headers: Readonly<Record<string, string | undefined>>, name: string) => {\n const direct = headers[name]\n\n if (direct !== undefined) {\n return direct\n }\n\n const normalizedName = name.toLowerCase()\n\n for (const [key, value] of Object.entries(headers)) {\n if (key.toLowerCase() === normalizedName) {\n return value\n }\n }\n\n return undefined\n}\n\nconst nonEmptyHeaderValue = (\n headers: Readonly<Record<string, string | undefined>>,\n name: string\n) => {\n const value = headerValue(headers, name)?.trim()\n\n return value === undefined || value.length === 0 ? undefined : value\n}\n\nconst safeIntegerPattern = /^-?(0|[1-9]\\d*)$/\n\nconst parseSafeInteger = (raw: string) => {\n const value = raw.trim()\n\n if (!safeIntegerPattern.test(value)) {\n return undefined\n }\n\n const parsed = Number.parseInt(value, 10)\n\n return Number.isSafeInteger(parsed) ? parsed : undefined\n}\n\nexport const agentRunIdFromHeaders = (headers: Readonly<Record<string, string | undefined>>) =>\n nonEmptyHeaderValue(headers, 'x-workflow-run-id')\n\nexport const agentRunStreamTailIndexFromHeaders = (\n headers: Readonly<Record<string, string | undefined>>\n) => {\n const raw = nonEmptyHeaderValue(headers, 'x-workflow-stream-tail-index')\n if (raw === undefined) return undefined\n\n const parsed = parseSafeInteger(raw)\n\n return parsed !== undefined && parsed >= -1 ? parsed : undefined\n}\n\nexport const agentRunStreamStartIndexFromHeaders = (\n headers: Readonly<Record<string, string | undefined>>\n) => {\n const tailIndex = agentRunStreamTailIndexFromHeaders(headers)\n\n return tailIndex === undefined ? undefined : tailIndex + 1\n}\n\nexport const agentRunEndpointWithStartIndex = (endpoint: string, startIndex?: number) => {\n if (startIndex === undefined) return endpoint\n\n validateAgentRunStartIndex(startIndex)\n\n const parsed = parseEndpointOrThrow(endpoint)\n parsed.url.searchParams.set('startIndex', String(startIndex))\n\n return serializeEndpoint(parsed)\n}\n\ntype ParsedEndpoint = {\n readonly url: URL\n readonly absolute: boolean\n readonly leadingSlash: boolean\n}\n\nconst absoluteUrlPattern = /^[A-Za-z][A-Za-z\\d+.-]*:/\n\nconst invalidAgentRunEndpointError = (endpoint: string) =>\n new AgentTransportError({\n message: 'Invalid agent run endpoint',\n cause: endpoint\n })\n\nconst parseEndpoint = (endpoint: string): ParsedEndpoint | undefined =>\n Result.try(() => ({\n url: new URL(endpoint, relativeEndpointBase),\n absolute: absoluteUrlPattern.test(endpoint),\n leadingSlash: endpoint.startsWith('/')\n })).pipe(\n Result.match({\n onFailure: () => undefined,\n onSuccess: parsed => parsed\n })\n )\n\nconst parseEndpointOrThrow = (endpoint: string) => {\n const parsed = parseEndpoint(endpoint)\n\n if (parsed !== undefined) {\n return parsed\n }\n\n throw invalidAgentRunEndpointError(endpoint)\n}\n\nconst parseEndpointEffect = (endpoint: string) => {\n const parsed = parseEndpoint(endpoint)\n\n return parsed === undefined\n ? Effect.fail(invalidAgentRunEndpointError(endpoint))\n : Effect.succeed(parsed)\n}\n\nconst serializeEndpoint = (endpoint: ParsedEndpoint) => {\n if (endpoint.absolute) {\n return endpoint.url.toString()\n }\n\n const serialized = `${endpoint.url.pathname}${endpoint.url.search}${endpoint.url.hash}`\n\n return endpoint.leadingSlash ? serialized : serialized.slice(1)\n}\n\nconst appendEncodedPathSegment = (endpoint: string, segment: string) => {\n const parsed = parseEndpointOrThrow(endpoint)\n\n const basePath = parsed.url.pathname.endsWith('/')\n ? parsed.url.pathname.slice(0, -1)\n : parsed.url.pathname\n\n parsed.url.pathname = `${basePath}/${encodeURIComponent(segment)}`\n\n return serializeEndpoint(parsed)\n}\n\nconst defaultAgentRunEndpoint = (endpoint: string | undefined, runId: string) =>\n appendEncodedPathSegment(endpoint ?? defaultEndpoint, runId)\n\nconst invalidAgentRunContinuationLimitError = (limit: number | undefined) =>\n new AgentTransportError({\n message: 'Invalid agent run continuation limit',\n cause: limit\n })\n\nconst agentRunContinuationLimitEffect = (limit: number | undefined) => {\n if (limit === undefined) return Effect.succeed(defaultRunContinuationLimit)\n\n return Number.isSafeInteger(limit) && limit >= 0\n ? Effect.succeed(limit)\n : Effect.fail(invalidAgentRunContinuationLimitError(limit))\n}\n\nconst invalidIdleReconnectMaxAttemptsError = (limit: number | undefined) =>\n new AgentTransportError({\n message: 'Invalid agent run idle reconnect max attempts',\n cause: limit\n })\n\nconst idleReconnectMaxAttemptsEffect = (limit: number | undefined) => {\n if (limit === undefined) return Effect.succeed(defaultIdleReconnectMaxAttempts)\n\n return Number.isSafeInteger(limit) && limit >= 0\n ? Effect.succeed(limit)\n : Effect.fail(invalidIdleReconnectMaxAttemptsError(limit))\n}\n\nconst validateAgentRunIdleReconnectEffect = (options: AgentRunIdleReconnectOptions | undefined) => {\n if (options === undefined) return Effect.void\n\n if (!Number.isSafeInteger(options.idleTimeoutMs) || options.idleTimeoutMs <= 0) {\n return Effect.fail(\n new AgentTransportError({\n message: 'Invalid agent run idle reconnect timeout',\n cause: options.idleTimeoutMs\n })\n )\n }\n\n return idleReconnectMaxAttemptsEffect(options.maxAttempts).pipe(Effect.asVoid)\n}\n\nconst validateAgentRunStartIndex = (startIndex: number | undefined) => {\n if (startIndex === undefined || (Number.isSafeInteger(startIndex) && startIndex >= 0)) {\n return\n }\n\n throw invalidAgentRunStartIndexError(startIndex)\n}\n\nconst invalidAgentRunStartIndexError = (startIndex: number | undefined) =>\n new AgentTransportError({\n message: 'Invalid agent run stream start index',\n cause: startIndex\n })\n\nconst validateAgentRunStartIndexEffect = (startIndex: number | undefined) =>\n startIndex === undefined || (Number.isSafeInteger(startIndex) && startIndex >= 0)\n ? Effect.void\n : Effect.fail(invalidAgentRunStartIndexError(startIndex))\n\nconst agentRunEndpointWithStartIndexEffect = (endpoint: string, startIndex: number | undefined) =>\n Effect.gen(function* () {\n if (startIndex === undefined) return endpoint\n\n yield* validateAgentRunStartIndexEffect(startIndex)\n\n const parsed = yield* parseEndpointEffect(endpoint)\n parsed.url.searchParams.set('startIndex', String(startIndex))\n\n return serializeEndpoint(parsed)\n })\n\nconst nextAgentRunStartIndex = (startIndex: number | undefined, count: number) =>\n (startIndex ?? 0) + count\n\nconst unknownToMessage = (error: unknown) =>\n error instanceof Error ? error.message : String(error)\n\nconst toTransportError = (message: string, cause: unknown) =>\n new AgentTransportError({\n message,\n cause\n })\n\nconst toHttpClientTransportError = (message: string) => (error: HttpClientError.HttpClientError) =>\n toTransportError(`${message}: ${error.message}`, error)\n\nconst decodeAgentEvent = (value: unknown) =>\n Schema.decodeUnknownEffect(AgentEvent)(value).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `Invalid agent event: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst decodeWebSocketServerMessage = (value: unknown) =>\n Schema.decodeUnknownEffect(AgentWebSocketServerMessage)(value).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `Invalid agent WebSocket message: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst encodeJsonString = (value: unknown, message: string) =>\n Schema.encodeUnknownEffect(Schema.UnknownFromJsonString)(value).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `${message}: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst decodeJsonString = (raw: string, message: string) =>\n Schema.decodeUnknownEffect(Schema.UnknownFromJsonString)(raw).pipe(\n Effect.mapError(\n error =>\n new AgentTransportError({\n message: `${message}: ${unknownToMessage(error)}`,\n cause: error\n })\n )\n )\n\nconst parseAgentEventLine = (line: string) =>\n Effect.gen(function* () {\n const parsed = yield* decodeJsonString(line, 'Invalid NDJSON line')\n\n return yield* decodeAgentEvent(parsed)\n })\n\nconst parseWebSocketServerMessage = (\n raw: string\n): Effect.Effect<AgentWebSocketServerMessageType, AgentTransportError> =>\n Effect.gen(function* () {\n const parsed = yield* decodeJsonString(raw, 'Invalid WebSocket message')\n\n return yield* decodeWebSocketServerMessage(parsed)\n })\n\nconst isUserMessage = (message: AgentMessage): message is UserMessage => message._tag === 'User'\n\nconst lastUserMessage = (\n messages: AgentTranscript\n): Effect.Effect<UserMessage, AgentTransportError> => {\n const reversed = messages.slice().reverse()\n const message = reversed.find(isUserMessage)\n\n if (message === undefined) {\n return Effect.fail(\n new AgentTransportError({\n message: 'Cloudflare WebSocket transport requires a user message',\n cause: messages\n })\n )\n }\n\n return Effect.succeed(message)\n}\n\nconst makeClientInputJson = (\n request: StreamCloudflareAgentEventsRequest,\n expectedRevision: number\n): Effect.Effect<string, AgentTransportError> =>\n Effect.gen(function* () {\n const hitlResponse = request.hitlResponses?.[0]\n\n if (request.hitlResponses !== undefined && request.hitlResponses.length > 1) {\n return yield* Effect.fail(\n new AgentTransportError({\n message: 'Cloudflare WebSocket transport supports one HITL response at a time',\n cause: request.hitlResponses\n })\n )\n }\n\n if (hitlResponse === undefined) {\n const message = yield* lastUserMessage(request.messages)\n\n return yield* encodeJsonString(\n UserInput.make({\n message,\n expectedRevision,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n }),\n 'Could not serialize WebSocket user input'\n )\n }\n\n return yield* encodeJsonString(\n hitlResponse._tag === 'ToolApprovalResponse'\n ? ToolApprovalResponseInput.make({\n response: hitlResponse,\n expectedRevision,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n })\n : QuestionResponseInput.make({\n response: hitlResponse,\n expectedRevision,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n }),\n 'Could not serialize WebSocket HITL response'\n )\n })\n\nconst responseErrorMessage = (response: HttpClientResponse.HttpClientResponse) =>\n response.text.pipe(\n Effect.mapError(toHttpClientTransportError('Could not read agent error body')),\n Effect.map(text => (text.length > 0 ? text : `Request failed with ${response.status}`))\n )\n\nconst makeHttpRequest = (request: StreamAgentEventsRequest) =>\n encodeJsonString(\n {\n sessionId: request.sessionId,\n messages: request.messages,\n hitlResponses: request.hitlResponses,\n model: request.model,\n reasoningEffort: request.reasoningEffort\n },\n 'Could not serialize agent request'\n ).pipe(\n Effect.map(body =>\n HttpClientRequest.post(request.endpoint ?? defaultEndpoint).pipe(\n HttpClientRequest.setHeaders({\n accept: 'application/x-ndjson',\n 'content-type': 'application/json'\n }),\n HttpClientRequest.bodyText(body, 'application/json')\n )\n )\n )\n\nconst makeHttpRunHitlResponseRequest = (request: StreamAgentRunHitlResponseEventsRequest) =>\n encodeJsonString(\n { hitlResponses: request.hitlResponses },\n 'Could not serialize agent run HITL response'\n ).pipe(\n Effect.map(body =>\n HttpClientRequest.post(request.endpoint).pipe(\n HttpClientRequest.setHeaders({\n accept: 'application/x-ndjson',\n 'content-type': 'application/json'\n }),\n HttpClientRequest.bodyText(body, 'application/json')\n )\n )\n )\n\nconst requestAgentResponse = (request: StreamAgentEventsRequest) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient\n const httpRequest = yield* makeHttpRequest(request)\n const response = yield* client\n .execute(httpRequest)\n .pipe(Effect.mapError(toHttpClientTransportError('Agent request failed')))\n\n if (response.status >= 200 && response.status < 300) {\n yield* Effect.sync(() =>\n request.onResponse?.({ status: response.status, headers: response.headers })\n )\n return response\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent request failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n })\n\nconst requestAgentRunResponse = (request: StreamAgentRunEventsRequest) =>\n Effect.gen(function* () {\n const endpoint = yield* agentRunEndpointWithStartIndexEffect(\n request.endpoint,\n request.startIndex\n )\n\n const client = yield* HttpClient.HttpClient\n const response = yield* client\n .execute(\n HttpClientRequest.get(endpoint).pipe(\n HttpClientRequest.setHeaders({ accept: 'application/x-ndjson' })\n )\n )\n .pipe(Effect.mapError(toHttpClientTransportError('Agent run request failed')))\n\n if (response.status >= 200 && response.status < 300) {\n yield* Effect.sync(() =>\n request.onResponse?.({ status: response.status, headers: response.headers })\n )\n return response\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent run request failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n })\n\nconst requestAgentRunHitlResponse = (request: StreamAgentRunHitlResponseEventsRequest) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient\n const httpRequest = yield* makeHttpRunHitlResponseRequest(request)\n const response = yield* client\n .execute(httpRequest)\n .pipe(Effect.mapError(toHttpClientTransportError('Agent run HITL request failed')))\n\n if (response.status >= 200 && response.status < 300) {\n yield* Effect.sync(() =>\n request.onResponse?.({ status: response.status, headers: response.headers })\n )\n return response\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent run HITL request failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n })\n\nexport const cancelAgentRun = (request: CancelAgentRunRequest) =>\n Effect.gen(function* () {\n const client = yield* HttpClient.HttpClient\n const response = yield* client\n .execute(HttpClientRequest.delete(request.endpoint))\n .pipe(Effect.mapError(toHttpClientTransportError('Agent run cancel failed')))\n\n if (response.status >= 200 && response.status < 300) {\n return\n }\n\n const message = yield* responseErrorMessage(response)\n\n return yield* Effect.fail(\n new AgentTransportError({\n message: `Agent run cancel failed (${response.status}): ${message}`,\n cause: response.status\n })\n )\n }).pipe(Effect.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nconst responseToLineStream = (response: HttpClientResponse.HttpClientResponse) =>\n response.stream.pipe(\n Stream.mapError(toHttpClientTransportError('Could not read agent response body')),\n Stream.decodeText,\n Stream.splitLines,\n Stream.map(line => line.trim()),\n Stream.filter(line => line.length > 0)\n )\n\nconst closeScope = (scope: Scope.Scope) => Scope.close(scope, Exit.succeed(undefined))\n\n// Protocol-terminal events finish the consumer stream, but HTTP bodies must still\n// drain to EOF so server runtimes do not observe client-side response aborts.\nconst responseToEventStream = (response: HttpClientResponse.HttpClientResponse) =>\n Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n const callbackScope = yield* Scope.Scope\n // Own the response stream in a scope that can outlive the consumer after a\n // terminal event; before terminal, consumer cancellation closes it.\n const responseScope = yield* Scope.make()\n const responseScopeClosed = yield* Ref.make(false)\n const terminalReached = yield* Ref.make(false)\n const pull = yield* Channel.toPullScoped(\n Stream.toChannel(responseToLineStream(response)),\n responseScope\n )\n const closeResponseScope = Effect.gen(function* () {\n const closed = yield* Ref.get(responseScopeClosed)\n\n if (!closed) {\n yield* Ref.set(responseScopeClosed, true)\n yield* closeScope(responseScope)\n }\n })\n const endQueue = Queue.end(queue).pipe(Effect.asVoid)\n const failQueue = (cause: Cause.Cause<AgentTransportError>) =>\n Queue.failCause(queue, cause).pipe(Effect.andThen(closeResponseScope), Effect.asVoid)\n const drainResponse = (): Effect.Effect<void, AgentTransportError> =>\n Pull.matchEffect(pull, {\n onSuccess: () => drainResponse(),\n onFailure: cause => Effect.failCause(cause),\n onDone: () => Effect.void\n })\n const startTerminalDrain = Effect.gen(function* () {\n yield* Ref.set(terminalReached, true)\n yield* endQueue\n yield* drainResponse().pipe(\n Effect.catch(() => Effect.void),\n Effect.ensuring(closeResponseScope),\n Effect.forkDetach({ startImmediately: true }),\n Effect.asVoid\n )\n })\n const emitLines = (lines: ReadonlyArray<string>): Effect.Effect<void, AgentTransportError> =>\n Effect.gen(function* () {\n for (const line of lines) {\n const event = yield* parseAgentEventLine(line)\n\n yield* Queue.offer(queue, event)\n\n if (isTerminalAgentEvent(event)) {\n yield* startTerminalDrain\n return\n }\n }\n\n yield* run()\n })\n const run = (): Effect.Effect<void, AgentTransportError> =>\n Pull.matchEffect(pull, {\n onSuccess: emitLines,\n onFailure: failQueue,\n onDone: () => endQueue.pipe(Effect.andThen(closeResponseScope))\n })\n\n yield* Scope.addFinalizer(\n callbackScope,\n Effect.gen(function* () {\n const terminal = yield* Ref.get(terminalReached)\n\n if (!terminal) {\n yield* closeResponseScope\n }\n })\n )\n\n yield* run()\n }).pipe(\n // Callback producers must settle their queue on defects too, without turning\n // programmer failures into recoverable AgentTransportErrors.\n Effect.onExit(exit =>\n Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void\n )\n )\n )\n\nconst abortSignalError = (signal: AbortSignal) =>\n new AgentTransportError({\n message: 'Agent request aborted',\n cause: signal.reason\n })\n\nconst abortSignalEffect = (signal: AbortSignal) =>\n Effect.callback<never, AgentTransportError>(resume => {\n if (signal.aborted) {\n resume(Effect.fail(abortSignalError(signal)))\n return Effect.void\n }\n\n const listener = () => resume(Effect.fail(abortSignalError(signal)))\n signal.addEventListener('abort', listener, { once: true })\n\n return Effect.sync(() => signal.removeEventListener('abort', listener))\n })\n\nconst applyAbortSignal = <A, E, R>(\n stream: Stream.Stream<A, E, R>,\n signal: AbortSignal | undefined\n) => (signal === undefined ? stream : stream.pipe(Stream.interruptWhen(abortSignalEffect(signal))))\n\nexport const streamAgentEventStream = (request: StreamAgentEventsRequest) =>\n applyAbortSignal(\n Stream.fromEffect(requestAgentResponse(request)).pipe(Stream.flatMap(responseToEventStream)),\n request.signal\n ).pipe(Stream.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nexport const streamAgentRunEventStream = (request: StreamAgentRunEventsRequest) =>\n applyAbortSignal(\n Stream.fromEffect(requestAgentRunResponse(request)).pipe(Stream.flatMap(responseToEventStream)),\n request.signal\n ).pipe(Stream.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nexport const streamAgentRunHitlResponseEventStream = (\n request: StreamAgentRunHitlResponseEventsRequest\n) =>\n applyAbortSignal(\n Stream.fromEffect(requestAgentRunHitlResponse(request)).pipe(\n Stream.flatMap(responseToEventStream)\n ),\n request.signal\n ).pipe(Stream.provide(request.httpClientLayer ?? FetchHttpClient.layer))\n\nexport const streamToolApprovalResponseEventStream = (request: SubmitToolApprovalResponseRequest) =>\n streamAgentEventStream({ ...request, hitlResponses: [request.response] })\n\nexport const streamQuestionResponseEventStream = (request: SubmitQuestionResponseRequest) =>\n streamAgentEventStream({ ...request, hitlResponses: [request.response] })\n\ntype AgentEventChunkResult = {\n readonly count: number\n readonly terminal: boolean\n readonly idle: boolean\n}\n\ntype AgentEventPullResult =\n | { readonly _tag: 'Events'; readonly events: Iterable<AgentEventType> }\n | { readonly _tag: 'Done' }\n | { readonly _tag: 'Idle' }\n\ntype AgentRunContinuationInput = AgentRunContinuationOptions & {\n readonly endpoint: string | undefined\n readonly startIndex: number | undefined\n readonly countOffset: number\n readonly terminal: boolean\n readonly signal?: AbortSignal\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n}\n\nconst missingAgentRunContinuationEndpointError = () =>\n new AgentTransportError({\n message: 'Agent run continuation failed: missing x-workflow-run-id',\n cause: 'missing_run_id'\n })\n\nconst exhaustedAgentRunContinuationLimitError = (limit: number) =>\n new AgentTransportError({\n message: 'Agent run continuation limit reached before a terminal event',\n cause: { limit }\n })\n\nconst noProgressAgentRunContinuationError = (endpoint: string, startIndex: number | undefined) =>\n new AgentTransportError({\n message: 'Agent run continuation made no progress before a terminal event',\n cause: { endpoint, startIndex }\n })\n\nconst noProgressAgentRunContinuationDelayMs = 250\n\nconst idleReconnectLimitReachedError = (limit: number) =>\n new AgentTransportError({\n message: 'Agent run idle reconnect limit reached before a terminal event',\n cause: { limit }\n })\n\nconst missingIdleReconnectRunEndpointError = () =>\n new AgentTransportError({\n message: 'Agent run idle reconnect failed: missing x-workflow-run-id',\n cause: 'missing_run_id'\n })\n\nconst waitForAgentRunContinuationProgress = (signal: AbortSignal | undefined) => {\n const sleep = Effect.sleep(`${noProgressAgentRunContinuationDelayMs} millis`)\n\n return signal === undefined ? sleep : sleep.pipe(Effect.raceFirst(abortSignalEffect(signal)))\n}\n\nconst missingAgentRunTailIndexError = () =>\n new AgentTransportError({\n message: 'Agent run HITL response missing x-workflow-stream-tail-index',\n cause: 'missing_tail_index'\n })\n\nconst pullAgentEventChunk = <A extends Iterable<AgentEventType>>(\n pull: Pull.Pull<A, AgentTransportError, void, never>,\n idleReconnect: AgentRunIdleReconnectOptions | undefined\n) => {\n const pullEvents: Effect.Effect<AgentEventPullResult, AgentTransportError, never> =\n Pull.matchEffect(pull, {\n onSuccess: events => Effect.succeed({ _tag: 'Events', events }),\n onFailure: cause => Effect.failCause(cause),\n onDone: () => Effect.succeed({ _tag: 'Done' })\n })\n\n if (idleReconnect === undefined) return pullEvents\n\n return pullEvents.pipe(\n Effect.raceFirst(\n Effect.sleep(`${idleReconnect.idleTimeoutMs} millis`).pipe(\n Effect.map((): AgentEventPullResult => ({ _tag: 'Idle' }))\n )\n )\n )\n}\n\nconst drainAgentEventStream = (input: {\n readonly queue: Queue.Enqueue<AgentEventType>\n readonly stream: Stream.Stream<AgentEventType, AgentTransportError, never>\n readonly countOffset: number\n readonly idleReconnect?: AgentRunIdleReconnectOptions\n readonly onEvent?: StreamAgentEventHandler\n}): Effect.Effect<AgentEventChunkResult, AgentTransportError, Scope.Scope> =>\n Effect.gen(function* () {\n const scope = yield* Scope.make()\n const pull = yield* Channel.toPullScoped(Stream.toChannel(input.stream), scope)\n const run = (state: {\n readonly count: number\n readonly terminal: boolean\n }): Effect.Effect<AgentEventChunkResult, AgentTransportError, never> =>\n Effect.gen(function* () {\n const pulled = yield* pullAgentEventChunk(pull, input.idleReconnect)\n\n switch (pulled._tag) {\n case 'Idle':\n return { count: state.count, terminal: state.terminal, idle: true }\n case 'Done':\n return { count: state.count, terminal: state.terminal, idle: false }\n case 'Events': {\n let count = state.count\n let terminal = state.terminal\n\n for (const event of pulled.events) {\n count += 1\n terminal = terminal || isTerminalAgentEvent(event)\n yield* Effect.sync(() => input.onEvent?.(event, input.countOffset + count))\n yield* Queue.offer(input.queue, event)\n\n if (terminal) return { count, terminal, idle: false }\n }\n\n return yield* run({ count, terminal })\n }\n }\n })\n\n return yield* run({ count: 0, terminal: false }).pipe(Effect.ensuring(closeScope(scope)))\n })\n\nconst streamAgentRunContinuationChunk = (input: {\n readonly queue: Queue.Enqueue<AgentEventType>\n readonly endpoint: string\n readonly startIndex: number | undefined\n readonly countOffset: number\n readonly signal: AbortSignal | undefined\n readonly httpClientLayer?: Layer.Layer<HttpClient.HttpClient>\n readonly onResponse?: (response: AgentHttpResponseInfo) => void\n readonly onEvent?: StreamAgentEventHandler\n readonly idleReconnect?: AgentRunIdleReconnectOptions\n}): Effect.Effect<AgentEventChunkResult, AgentTransportError, Scope.Scope> =>\n drainAgentEventStream({\n queue: input.queue,\n stream: streamAgentRunEventStream({\n endpoint: input.endpoint,\n startIndex: input.startIndex,\n signal: input.signal,\n httpClientLayer: input.httpClientLayer,\n onResponse: input.onResponse\n }),\n countOffset: input.countOffset,\n idleReconnect: input.idleReconnect,\n onEvent: input.onEvent\n })\n\nconst streamAgentRunContinuations = (\n input: AgentRunContinuationInput,\n queue: Queue.Enqueue<AgentEventType>\n): Effect.Effect<void, AgentTransportError, Scope.Scope> =>\n Effect.gen(function* () {\n let totalCount = input.countOffset\n let terminal = input.terminal\n let startIndex = input.startIndex\n const limit = yield* agentRunContinuationLimitEffect(input.continuationLimit)\n const idleReconnectLimit =\n input.idleReconnect === undefined\n ? undefined\n : yield* idleReconnectMaxAttemptsEffect(input.idleReconnect.maxAttempts)\n let idleReconnects = 0\n\n if (terminal) {\n return\n }\n\n if (input.endpoint === undefined) {\n return yield* Effect.fail(missingAgentRunContinuationEndpointError())\n }\n\n let continuation = 0\n while (continuation < limit) {\n const endpoint = input.endpoint\n const chunkStartIndex = startIndex\n\n const chunk = yield* streamAgentRunContinuationChunk({\n queue,\n endpoint,\n startIndex: chunkStartIndex,\n countOffset: totalCount,\n signal: input.signal,\n httpClientLayer: input.httpClientLayer,\n onResponse: input.onResponse,\n idleReconnect: input.idleReconnect,\n onEvent: input.onEvent\n })\n\n if (chunk.idle) {\n if (idleReconnectLimit !== undefined && idleReconnects >= idleReconnectLimit) {\n return yield* Effect.fail(idleReconnectLimitReachedError(idleReconnectLimit))\n }\n\n startIndex = nextAgentRunStartIndex(chunkStartIndex, chunk.count)\n totalCount += chunk.count\n idleReconnects += 1\n continue\n }\n\n continuation += 1\n\n if (chunk.count === 0 && !chunk.terminal) {\n if (continuation >= limit) {\n return yield* Effect.fail(noProgressAgentRunContinuationError(endpoint, startIndex))\n }\n\n yield* waitForAgentRunContinuationProgress(input.signal)\n continue\n }\n\n terminal = chunk.terminal\n startIndex = nextAgentRunStartIndex(chunkStartIndex, chunk.count)\n totalCount += chunk.count\n\n if (terminal) {\n return\n }\n }\n\n return yield* Effect.fail(exhaustedAgentRunContinuationLimitError(limit))\n })\n\nexport const streamAgentEventStreamUntilTerminal = (\n request: StreamAgentEventsUntilTerminalRequest\n) => {\n return Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n yield* agentRunContinuationLimitEffect(request.continuationLimit).pipe(Effect.asVoid)\n yield* validateAgentRunIdleReconnectEffect(request.idleReconnect)\n let runEndpoint: string | undefined\n let startIndex: number | undefined\n const firstChunk = yield* drainAgentEventStream({\n queue,\n stream: streamAgentEventStream({\n ...request,\n onResponse: response => {\n startIndex = agentRunStreamStartIndexFromHeaders(response.headers)\n const runId = agentRunIdFromHeaders(response.headers)\n if (runId !== undefined) {\n runEndpoint =\n request.runEndpoint?.(runId) ?? defaultAgentRunEndpoint(request.endpoint, runId)\n request.onRunId?.(runId)\n }\n\n request.onResponse?.(response)\n }\n }),\n countOffset: 0,\n idleReconnect: request.idleReconnect,\n onEvent: request.onEvent\n })\n\n if (firstChunk.idle && runEndpoint === undefined) {\n return yield* Effect.fail(missingIdleReconnectRunEndpointError())\n }\n\n yield* streamAgentRunContinuations(\n {\n endpoint: runEndpoint,\n startIndex: nextAgentRunStartIndex(startIndex, firstChunk.count),\n countOffset: firstChunk.count,\n terminal: firstChunk.terminal,\n continuationLimit: request.continuationLimit,\n idleReconnect: request.idleReconnect,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n onEvent: request.onEvent\n },\n queue\n )\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }).pipe(\n Effect.onExit(exit =>\n Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void\n )\n )\n )\n}\n\nexport const streamAgentRunEventStreamUntilTerminal = (\n request: StreamAgentRunEventsUntilTerminalRequest\n) => {\n return Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n yield* agentRunContinuationLimitEffect(request.continuationLimit).pipe(Effect.asVoid)\n yield* validateAgentRunIdleReconnectEffect(request.idleReconnect)\n yield* validateAgentRunStartIndexEffect(request.startIndex)\n const firstChunk = yield* streamAgentRunContinuationChunk({\n queue,\n endpoint: request.endpoint,\n startIndex: request.startIndex,\n countOffset: 0,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n idleReconnect: request.idleReconnect,\n onEvent: request.onEvent\n })\n\n yield* streamAgentRunContinuations(\n {\n endpoint: request.endpoint,\n startIndex: nextAgentRunStartIndex(request.startIndex, firstChunk.count),\n countOffset: firstChunk.count,\n terminal: firstChunk.terminal,\n continuationLimit: request.continuationLimit,\n idleReconnect: request.idleReconnect,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n onEvent: request.onEvent\n },\n queue\n )\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }).pipe(\n Effect.onExit(exit =>\n Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void\n )\n )\n )\n}\n\nconst streamAgentRunHitlResponseInitialChunk = (\n request: StreamAgentRunHitlResponseEventsUntilTerminalRequest,\n queue: Queue.Enqueue<AgentEventType>,\n setStartIndex: (startIndex: number | undefined) => void\n): Effect.Effect<AgentEventChunkResult, AgentTransportError, Scope.Scope> =>\n drainAgentEventStream({\n queue,\n stream: streamAgentRunHitlResponseEventStream({\n ...request,\n onResponse: response => {\n setStartIndex(agentRunStreamStartIndexFromHeaders(response.headers))\n request.onResponse?.(response)\n }\n }),\n countOffset: 0,\n idleReconnect: request.idleReconnect,\n onEvent: request.onEvent\n })\n\nexport const streamAgentRunHitlResponseEventStreamUntilTerminal = (\n request: StreamAgentRunHitlResponseEventsUntilTerminalRequest\n) => {\n return Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n yield* agentRunContinuationLimitEffect(request.continuationLimit).pipe(Effect.asVoid)\n yield* validateAgentRunIdleReconnectEffect(request.idleReconnect)\n let startIndex: number | undefined\n const firstChunk = yield* streamAgentRunHitlResponseInitialChunk(\n request,\n queue,\n nextStartIndex => {\n startIndex = nextStartIndex\n }\n )\n\n if (!firstChunk.terminal && startIndex === undefined) {\n return yield* Effect.fail(missingAgentRunTailIndexError())\n }\n\n yield* streamAgentRunContinuations(\n {\n endpoint: request.endpoint,\n startIndex: nextAgentRunStartIndex(startIndex, firstChunk.count),\n countOffset: firstChunk.count,\n terminal: firstChunk.terminal,\n continuationLimit: request.continuationLimit,\n idleReconnect: request.idleReconnect,\n signal: request.signal,\n httpClientLayer: request.httpClientLayer,\n onResponse: request.onResponse,\n onEvent: request.onEvent\n },\n queue\n )\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }).pipe(\n Effect.onExit(exit =>\n Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void\n )\n )\n )\n}\n\nconst isAgentEvent = (message: AgentWebSocketServerMessageType): message is AgentEventType =>\n message._tag !== 'SessionSnapshot'\n\nexport const streamCloudflareAgentEventStream = (request: StreamCloudflareAgentEventsRequest) =>\n applyAbortSignal(\n Stream.callback<AgentEventType, AgentTransportError>(queue =>\n Effect.gen(function* () {\n const socket = new WebSocket(request.webSocketUrl)\n let sentInput = false\n let settled = false\n const closeSocket = Effect.sync(() => {\n if (socket.readyState === WebSocket.OPEN || socket.readyState === WebSocket.CONNECTING) {\n socket.close(1000, 'done')\n }\n })\n const failQueue = (error: AgentTransportError) =>\n Effect.runFork(Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))\n const handleMessage = (event: MessageEvent) => {\n if (typeof event.data !== 'string') {\n failQueue(toTransportError('Agent WebSocket returned binary data', event.data))\n return\n }\n\n Effect.runFork(\n parseWebSocketServerMessage(event.data).pipe(\n Effect.flatMap(message => {\n if (message._tag === 'SessionSnapshot') {\n return sentInput\n ? Effect.void\n : makeClientInputJson(request, message.revision).pipe(\n Effect.flatMap(body => Effect.sync(() => socket.send(body))),\n Effect.tap(() =>\n Effect.sync(() => {\n sentInput = true\n })\n )\n )\n }\n\n if (!isAgentEvent(message)) {\n return Effect.void\n }\n\n return Effect.gen(function* () {\n yield* Queue.offer(queue, message)\n\n if (isTerminalAgentEvent(message)) {\n yield* Effect.sync(() => {\n settled = true\n socket.close(1000, 'done')\n })\n yield* Queue.end(queue).pipe(Effect.asVoid)\n }\n })\n }),\n Effect.catch(error => Effect.sync(() => failQueue(error)))\n )\n )\n }\n const handleError = () => {\n failQueue(toTransportError('Agent WebSocket failed', request.webSocketUrl))\n }\n const handleClose = () => {\n if (!settled) {\n failQueue(toTransportError('Agent WebSocket closed', request.webSocketUrl))\n }\n }\n\n yield* Effect.acquireRelease(\n Effect.sync(() => {\n socket.addEventListener('message', handleMessage)\n socket.addEventListener('error', handleError)\n socket.addEventListener('close', handleClose)\n }),\n () =>\n Effect.sync(() => {\n socket.removeEventListener('message', handleMessage)\n socket.removeEventListener('error', handleError)\n socket.removeEventListener('close', handleClose)\n }).pipe(Effect.andThen(closeSocket))\n )\n })\n ),\n request.signal\n )\n\nexport const collectAgentEvents = (request: StreamAgentEventsRequest) =>\n streamAgentEventStream(request).pipe(Stream.runCollect)\n"],"mappings":"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"}
@@ -40,8 +40,8 @@ declare const parseCommandMarkdown: (input: ParseCommandInput) => Effect.Effect<
40
40
  fileRefs?: boolean | undefined;
41
41
  access?: "read" | "write" | "destructive" | undefined;
42
42
  arguments?: readonly {
43
- readonly required: boolean;
44
43
  readonly name: string;
44
+ readonly required: boolean;
45
45
  readonly description?: string | undefined;
46
46
  }[] | undefined;
47
47
  name: string;
@@ -17,24 +17,24 @@ declare const mergeSkillsets: (sources: ReadonlyArray<SkillsetSource>) => Effect
17
17
  skills: {
18
18
  readonly name: string;
19
19
  readonly description: string;
20
- readonly content: string;
21
20
  readonly location: string;
21
+ readonly content: string;
22
22
  readonly source?: string | undefined;
23
23
  }[];
24
24
  commands: {
25
25
  readonly name: string;
26
- readonly hints: readonly string[];
27
26
  readonly template: string;
28
- readonly source?: string | undefined;
27
+ readonly hints: readonly string[];
29
28
  readonly description?: string | undefined;
30
29
  readonly arguments?: readonly {
31
- readonly required: boolean;
32
30
  readonly name: string;
31
+ readonly required: boolean;
33
32
  readonly description?: string | undefined;
34
33
  }[] | undefined;
35
34
  readonly access?: "read" | "write" | "destructive" | undefined;
36
35
  readonly fileRefs?: boolean | undefined;
37
36
  readonly location?: string | undefined;
37
+ readonly source?: string | undefined;
38
38
  }[];
39
39
  }, SkillsetError, never>;
40
40
  //#endregion
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yolk-sdk/agent",
3
- "version": "0.1.0-canary.69",
3
+ "version": "0.1.0-canary.71",
4
4
  "description": "Agent protocol, loop, runtime, Effect-native client, compaction, tools, React, providers, OAuth, skillset, and voice primitives.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -195,7 +195,7 @@
195
195
  "provenance": true
196
196
  },
197
197
  "dependencies": {
198
- "effect": "4.0.0-beta.65"
198
+ "effect": "4.0.0-beta.80"
199
199
  },
200
200
  "peerDependencies": {
201
201
  "react": ">=19"
@@ -303,9 +303,7 @@ const idleReconnectMaxAttemptsEffect = (limit: number | undefined) => {
303
303
  : Effect.fail(invalidIdleReconnectMaxAttemptsError(limit))
304
304
  }
305
305
 
306
- const validateAgentRunIdleReconnectEffect = (
307
- options: AgentRunIdleReconnectOptions | undefined
308
- ) => {
306
+ const validateAgentRunIdleReconnectEffect = (options: AgentRunIdleReconnectOptions | undefined) => {
309
307
  if (options === undefined) return Effect.void
310
308
 
311
309
  if (!Number.isSafeInteger(options.idleTimeoutMs) || options.idleTimeoutMs <= 0) {
@@ -565,7 +563,10 @@ const requestAgentResponse = (request: StreamAgentEventsRequest) =>
565
563
 
566
564
  const requestAgentRunResponse = (request: StreamAgentRunEventsRequest) =>
567
565
  Effect.gen(function* () {
568
- const endpoint = yield* agentRunEndpointWithStartIndexEffect(request.endpoint, request.startIndex)
566
+ const endpoint = yield* agentRunEndpointWithStartIndexEffect(
567
+ request.endpoint,
568
+ request.startIndex
569
+ )
569
570
 
570
571
  const client = yield* HttpClient.HttpClient
571
572
  const response = yield* client
@@ -725,10 +726,14 @@ const responseToEventStream = (response: HttpClientResponse.HttpClientResponse)
725
726
  })
726
727
  )
727
728
 
728
- yield* run().pipe(
729
- Effect.catch(error => Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid))
729
+ yield* run()
730
+ }).pipe(
731
+ // Callback producers must settle their queue on defects too, without turning
732
+ // programmer failures into recoverable AgentTransportErrors.
733
+ Effect.onExit(exit =>
734
+ Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void
730
735
  )
731
- })
736
+ )
732
737
  )
733
738
 
734
739
  const abortSignalError = (signal: AbortSignal) =>
@@ -1063,8 +1068,8 @@ export const streamAgentEventStreamUntilTerminal = (
1063
1068
  )
1064
1069
  yield* Queue.end(queue).pipe(Effect.asVoid)
1065
1070
  }).pipe(
1066
- Effect.catch((error: AgentTransportError) =>
1067
- Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)
1071
+ Effect.onExit(exit =>
1072
+ Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void
1068
1073
  )
1069
1074
  )
1070
1075
  )
@@ -1107,8 +1112,8 @@ export const streamAgentRunEventStreamUntilTerminal = (
1107
1112
  )
1108
1113
  yield* Queue.end(queue).pipe(Effect.asVoid)
1109
1114
  }).pipe(
1110
- Effect.catch((error: AgentTransportError) =>
1111
- Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)
1115
+ Effect.onExit(exit =>
1116
+ Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void
1112
1117
  )
1113
1118
  )
1114
1119
  )
@@ -1122,12 +1127,12 @@ const streamAgentRunHitlResponseInitialChunk = (
1122
1127
  drainAgentEventStream({
1123
1128
  queue,
1124
1129
  stream: streamAgentRunHitlResponseEventStream({
1125
- ...request,
1126
- onResponse: response => {
1127
- setStartIndex(agentRunStreamStartIndexFromHeaders(response.headers))
1128
- request.onResponse?.(response)
1129
- }
1130
- }),
1130
+ ...request,
1131
+ onResponse: response => {
1132
+ setStartIndex(agentRunStreamStartIndexFromHeaders(response.headers))
1133
+ request.onResponse?.(response)
1134
+ }
1135
+ }),
1131
1136
  countOffset: 0,
1132
1137
  idleReconnect: request.idleReconnect,
1133
1138
  onEvent: request.onEvent
@@ -1170,8 +1175,8 @@ export const streamAgentRunHitlResponseEventStreamUntilTerminal = (
1170
1175
  )
1171
1176
  yield* Queue.end(queue).pipe(Effect.asVoid)
1172
1177
  }).pipe(
1173
- Effect.catch((error: AgentTransportError) =>
1174
- Queue.failCause(queue, Cause.fail(error)).pipe(Effect.asVoid)
1178
+ Effect.onExit(exit =>
1179
+ Exit.isFailure(exit) ? Queue.failCause(queue, exit.cause).pipe(Effect.asVoid) : Effect.void
1175
1180
  )
1176
1181
  )
1177
1182
  )