agents 0.26.0 → 0.28.0
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.
- package/README.md +8 -9
- package/dist/abortable-C1SpfVoi.js +21 -0
- package/dist/abortable-C1SpfVoi.js.map +1 -0
- package/dist/{agent-routing-0DR0Tk2v.d.ts → agent-routing-QDcchcQP.d.ts} +16 -16
- package/dist/agent-routing.d.ts +1 -1
- package/dist/agent-tool-types.d.ts +1 -1
- package/dist/{agent-tools-YrATZJu2.d.ts → agent-tools-DHL2XI7u.d.ts} +2 -2
- package/dist/agent-tools.d.ts +1 -1
- package/dist/ai-ahruGw7e.d.ts +239 -0
- package/dist/ai-sdk-Bdsf6mSA.js +2444 -0
- package/dist/ai-sdk-Bdsf6mSA.js.map +1 -0
- package/dist/apply-chunks-1FheRb9W.js +99 -0
- package/dist/apply-chunks-1FheRb9W.js.map +1 -0
- package/dist/broadcast-state-CEyI4uAK.js +69 -0
- package/dist/broadcast-state-CEyI4uAK.js.map +1 -0
- package/dist/browser/ai.d.ts +8 -227
- package/dist/browser/ai.js +259 -1
- package/dist/browser/ai.js.map +1 -0
- package/dist/browser/index.d.ts +56 -46
- package/dist/browser/index.js +4 -361
- package/dist/browser/{ai-sdk.d.ts → tools/ai-sdk.d.ts} +7 -7
- package/dist/browser/{ai-sdk.js → tools/ai-sdk.js} +6 -5
- package/dist/browser/tools/ai-sdk.js.map +1 -0
- package/dist/browser/tools/pi.d.ts +111 -0
- package/dist/browser/tools/pi.js +119 -0
- package/dist/browser/tools/pi.js.map +1 -0
- package/dist/browser/{tanstack-ai.d.ts → tools/tanstack-ai.d.ts} +39 -37
- package/dist/browser/{tanstack-ai.js → tools/tanstack-ai.js} +73 -59
- package/dist/browser/tools/tanstack-ai.js.map +1 -0
- package/dist/browser-CEdNlsaD.js +481 -0
- package/dist/browser-CEdNlsaD.js.map +1 -0
- package/dist/{browser-DE3d-RLk.d.ts → browser-D30VlpcA.d.ts} +63 -37
- package/dist/{browser-tool-CQ10e6Kj.js → browser-tool-4iomavs_.js} +198 -62
- package/dist/browser-tool-4iomavs_.js.map +1 -0
- package/dist/{browser-tool-DuNdlwZ9.d.ts → browser-tool-vtrPOV8e.d.ts} +25 -6
- package/dist/{capability-B4WbF81e.js → capability-DBAKc6UZ.js} +1 -3
- package/dist/capability-DBAKc6UZ.js.map +1 -0
- package/dist/{capability-runner-DBAnGr6L.d.ts → capability-runner-BiVUtjqC.d.ts} +9 -7
- package/dist/channel-Bak_6zDP.d.ts +333 -0
- package/dist/chat/index.d.ts +11 -9
- package/dist/chat/index.js +5 -194
- package/dist/chat/index.js.map +1 -1
- package/dist/chat/react.d.ts +2 -4
- package/dist/chat/react.js +3 -1
- package/dist/chat/react.js.map +1 -1
- package/dist/chat-sdk/index.d.ts +1 -1
- package/dist/chat-sdk/index.js +1 -1
- package/dist/cli.js +144 -0
- package/dist/{client-je3koD9Z.d.ts → client-BGIQKJhX.d.ts} +2 -2
- package/dist/{client-fyQrLGkD.js → client-BnYbNT3z.js} +29 -5
- package/dist/client-BnYbNT3z.js.map +1 -0
- package/dist/client-tools-aIBO0Fk7.d.ts +53 -0
- package/dist/client.d.ts +1 -1
- package/dist/{connector-58XDGvc3.js → connector-CtZylXdk.js} +3 -603
- package/dist/connector-CtZylXdk.js.map +1 -0
- package/dist/{connector-Cl-VqPmA.d.ts → connector-DEXzVoaY.d.ts} +9 -374
- package/dist/conversations-FjHDRZyD.d.ts +192 -0
- package/dist/{current-agent-vAk_5JMt.d.ts → current-agent-CKgT5d1O.d.ts} +3 -5
- package/dist/current-agent-DhoDkSnH.js.map +1 -1
- package/dist/daemon-core-Buubj-y1.js +481 -0
- package/dist/daemon-core-Buubj-y1.js.map +1 -0
- package/dist/daemon-core-CbohVPAu.d.ts +132 -0
- package/dist/{do-oauth-client-provider-Tmf1vgKz.d.ts → do-oauth-client-provider-DfsUcpc3.d.ts} +7 -1
- package/dist/{durable-object-lifecycle-HhgOMWq9.d.ts → durable-object-lifecycle-DOI_bzCH.d.ts} +2 -2
- package/dist/{channels/email.d.ts → experimental/channels/email/index.d.ts} +25 -12
- package/dist/{channels/email.js → experimental/channels/email/index.js} +13 -35
- package/dist/experimental/channels/email/index.js.map +1 -0
- package/dist/experimental/channels/index.d.ts +270 -0
- package/dist/experimental/channels/index.js +1186 -0
- package/dist/experimental/channels/index.js.map +1 -0
- package/dist/{channels/slack.d.ts → experimental/channels/slack/index.d.ts} +19 -9
- package/dist/experimental/channels/slack/index.js +267 -0
- package/dist/experimental/channels/slack/index.js.map +1 -0
- package/dist/{channels/telegram.d.ts → experimental/channels/telegram/index.d.ts} +19 -9
- package/dist/experimental/channels/telegram/index.js +198 -0
- package/dist/experimental/channels/telegram/index.js.map +1 -0
- package/dist/experimental/channels/web/ai-sdk.d.ts +55 -0
- package/dist/experimental/channels/web/ai-sdk.js +266 -0
- package/dist/experimental/channels/web/ai-sdk.js.map +1 -0
- package/dist/experimental/channels/web/client.d.ts +97 -0
- package/dist/experimental/channels/web/client.js +349 -0
- package/dist/experimental/channels/web/client.js.map +1 -0
- package/dist/experimental/channels/web/index.d.ts +189 -0
- package/dist/experimental/channels/web/index.js +332 -0
- package/dist/experimental/channels/web/index.js.map +1 -0
- package/dist/gateway-BFO6vRDn.d.ts +100 -0
- package/dist/handle-zAzh0UW2.d.ts +460 -0
- package/dist/harness/ai-sdk/index.d.ts +175 -0
- package/dist/harness/ai-sdk/index.js +605 -0
- package/dist/harness/ai-sdk/index.js.map +1 -0
- package/dist/harness/container/daemon/index.d.ts +76 -0
- package/dist/harness/container/daemon/index.js +3 -0
- package/dist/harness/container/index.d.ts +740 -0
- package/dist/harness/container/index.js +2152 -0
- package/dist/harness/container/index.js.map +1 -0
- package/dist/harness/container/runtime/index.d.ts +144 -0
- package/dist/harness/container/runtime/index.js +1082 -0
- package/dist/harness/container/runtime/index.js.map +1 -0
- package/dist/harness/opencode/index.d.ts +369 -0
- package/dist/harness/opencode/index.js +1072 -0
- package/dist/harness/opencode/index.js.map +1 -0
- package/dist/harness/pi/index.d.ts +3 -2
- package/dist/harness/pi/index.js +3 -3
- package/dist/harness/store/index.d.ts +24 -0
- package/dist/harness/store/index.js +2 -0
- package/dist/harness/think/index.d.ts +821 -0
- package/dist/harness/think/index.js +2721 -0
- package/dist/harness/think/index.js.map +1 -0
- package/dist/harness-B6B9S3rb.d.ts +203 -0
- package/dist/{images-iiTDSyRu.js → images-Ce9SCu3X.js} +2 -248
- package/dist/images-Ce9SCu3X.js.map +1 -0
- package/dist/{index-BreL0YrQ.d.ts → index-BEL3ZV-s.d.ts} +2 -6
- package/dist/index-CBt8oRJt.d.ts +198 -0
- package/dist/index.d.ts +5 -5
- package/dist/index.js +2 -2
- package/dist/ingress-EFbrS547.js +9 -0
- package/dist/ingress-EFbrS547.js.map +1 -0
- package/dist/input-schema-BQykTEp_.js +20 -0
- package/dist/input-schema-BQykTEp_.js.map +1 -0
- package/dist/input-schema-D2QAtHZH.js +23 -0
- package/dist/input-schema-D2QAtHZH.js.map +1 -0
- package/dist/internal-kmw70xwR.js +46 -0
- package/dist/internal-kmw70xwR.js.map +1 -0
- package/dist/internal_context.d.ts +1 -1
- package/dist/lifecycle/index.d.ts +3 -3
- package/dist/lifecycle/index.js +2 -2
- package/dist/{lifecycle-CFu6OV03.js → lifecycle-DGorpAmA.js} +2 -4
- package/dist/lifecycle-DGorpAmA.js.map +1 -0
- package/dist/mcp/client/do-oauth-client-provider.d.ts +1 -1
- package/dist/mcp/client/do-oauth-client-provider.js +9 -0
- package/dist/mcp/client/do-oauth-client-provider.js.map +1 -1
- package/dist/mcp/client/index.d.ts +1 -1
- package/dist/mcp/client/index.js +1 -1
- package/dist/mcp/client/x402.d.ts +35 -4
- package/dist/mcp/client/x402.js +24 -3
- package/dist/mcp/client/x402.js.map +1 -1
- package/dist/mcp/index.d.ts +1 -1
- package/dist/mcp/index.js +2 -2
- package/dist/models/ai-sdk/index.d.ts +16 -14
- package/dist/models/ai-sdk/index.js +1 -2442
- package/dist/models/opencode/index.d.ts +65 -0
- package/dist/models/opencode/index.js +285 -0
- package/dist/models/opencode/index.js.map +1 -0
- package/dist/models/pi-ai/index.d.ts +9 -7
- package/dist/models/pi-ai/index.js +2 -1
- package/dist/models/pi-ai/index.js.map +1 -1
- package/dist/options-CiIsJHXR.d.ts +130 -0
- package/dist/protocol-BEgrJYC5.d.ts +331 -0
- package/dist/protocol-CukuI73M.d.ts +386 -0
- package/dist/protocol-cOklVBBD.js +227 -0
- package/dist/protocol-cOklVBBD.js.map +1 -0
- package/dist/{protocol-kHsr-f0X.js → protocol-eXeJxhgu.js} +2 -67
- package/dist/protocol-eXeJxhgu.js.map +1 -0
- package/dist/protocol-y2sSY584.js +148 -0
- package/dist/protocol-y2sSY584.js.map +1 -0
- package/dist/queue/index.d.ts +1 -1
- package/dist/queue/index.js +1 -1
- package/dist/{queue-BB-zfIYF.js → queue-CcIjVYTE.js} +2 -2
- package/dist/{queue-BB-zfIYF.js.map → queue-CcIjVYTE.js.map} +1 -1
- package/dist/react.d.ts +2 -2
- package/dist/routing/index.d.ts +2 -2
- package/dist/routing/index.js +1 -1
- package/dist/{scheduler-RdACNXDP.d.ts → scheduler-BCLESHSC.d.ts} +2 -12
- package/dist/{scheduler-DZ3xQfeK.js → scheduler-FIHv2-kJ.js} +2 -4
- package/dist/scheduler-FIHv2-kJ.js.map +1 -0
- package/dist/schedules/index.d.ts +1 -1
- package/dist/schedules/index.js +1 -1
- package/dist/serializable.d.ts +1 -1
- package/dist/session-store-Do4xkDcf.js +606 -0
- package/dist/session-store-Do4xkDcf.js.map +1 -0
- package/dist/session-store-DoPY12xM.d.ts +383 -0
- package/dist/sessions/index.d.ts +11 -434
- package/dist/sessions/index.js +1 -2271
- package/dist/sessions-_vN5BEZX.js +2272 -0
- package/dist/sessions-_vN5BEZX.js.map +1 -0
- package/dist/settings-C45hDliX.js +253 -0
- package/dist/settings-C45hDliX.js.map +1 -0
- package/dist/{transport-PfFnt-Ld.d.ts → settings-NgGwF7Qt.d.ts} +14 -208
- package/dist/{src-BZeu-SCD.js → src-CQxJFv4l.js} +8 -8
- package/dist/src-CQxJFv4l.js.map +1 -0
- package/dist/stall-watchdog-BpRF2uwG.js +195 -0
- package/dist/stall-watchdog-BpRF2uwG.js.map +1 -0
- package/dist/state/index.d.ts +1 -1
- package/dist/state/index.js +1 -3
- package/dist/state/index.js.map +1 -1
- package/dist/store-BKM4Xm9M.d.ts +332 -0
- package/dist/store-CslVzfN7.js +458 -0
- package/dist/store-CslVzfN7.js.map +1 -0
- package/dist/streams/index.d.ts +1 -1
- package/dist/streams/index.js +1 -1
- package/dist/{streams-DW-UCOUc.js → streams-lsHMJhRW.js} +17 -4
- package/dist/streams-lsHMJhRW.js.map +1 -0
- package/dist/{streams-Cmkj9QfW.d.ts → streams-vrCtbUIn.d.ts} +2 -2
- package/dist/sub-routing.d.ts +1 -1
- package/dist/tasks/index.d.ts +1 -1
- package/dist/tasks/index.js +1 -1
- package/dist/{tasks-68DESxf0.js → tasks-BN_5AWqI.js} +3 -2
- package/dist/tasks-BN_5AWqI.js.map +1 -0
- package/dist/{tasks-9YxYtByh.d.ts → tasks-E89KdwkS.d.ts} +2 -2
- package/dist/tool-CTp72Jb_.d.ts +278 -0
- package/dist/tool-CxKsvxjm.js +1126 -0
- package/dist/tool-CxKsvxjm.js.map +1 -0
- package/dist/tool-DoVberpN.d.ts +301 -0
- package/dist/tool-cQRkwSZZ.js +410 -0
- package/dist/tool-cQRkwSZZ.js.map +1 -0
- package/dist/tool-helpers-O5BDVEAY.js +58 -0
- package/dist/tool-helpers-O5BDVEAY.js.map +1 -0
- package/dist/transport-k2mFrtL8.d.ts +200 -0
- package/dist/turns-DCV3ycDl.js +317 -0
- package/dist/turns-DCV3ycDl.js.map +1 -0
- package/dist/voice/client.js +1 -1
- package/dist/voice/index.d.ts +2 -2
- package/dist/voice/index.js +1 -1
- package/dist/web/fetch/index.d.ts +89 -0
- package/dist/web/fetch/index.js +20 -0
- package/dist/web/fetch/index.js.map +1 -0
- package/dist/web/fetch/tools/ai-sdk.d.ts +80 -0
- package/dist/web/fetch/tools/ai-sdk.js +47 -0
- package/dist/web/fetch/tools/ai-sdk.js.map +1 -0
- package/dist/web/fetch/tools/pi.d.ts +84 -0
- package/dist/web/fetch/tools/pi.js +88 -0
- package/dist/web/fetch/tools/pi.js.map +1 -0
- package/dist/web/fetch/tools/tanstack-ai.d.ts +78 -0
- package/dist/web/fetch/tools/tanstack-ai.js +45 -0
- package/dist/web/fetch/tools/tanstack-ai.js.map +1 -0
- package/dist/web/search/index.d.ts +58 -0
- package/dist/web/search/index.js +2 -0
- package/dist/web/search/tools/ai-sdk.d.ts +77 -0
- package/dist/web/search/tools/ai-sdk.js +46 -0
- package/dist/web/search/tools/ai-sdk.js.map +1 -0
- package/dist/web/search/tools/pi.d.ts +82 -0
- package/dist/web/search/tools/pi.js +89 -0
- package/dist/web/search/tools/pi.js.map +1 -0
- package/dist/web/search/tools/tanstack-ai.d.ts +71 -0
- package/dist/web/search/tools/tanstack-ai.js +46 -0
- package/dist/web/search/tools/tanstack-ai.js.map +1 -0
- package/dist/websockets/index.d.ts +12 -296
- package/dist/websockets/index.js +1 -1
- package/dist/{websockets-Ci-LZFHH.js → websockets-C3zy8YR0.js} +20 -8
- package/dist/websockets-C3zy8YR0.js.map +1 -0
- package/dist/{wire-types-CrjKvDyi.d.ts → wire-types-Cv0iwjk5.d.ts} +3 -51
- package/dist/workflow-types.d.ts +1 -1
- package/dist/workflows.d.ts +1 -1
- package/dist/workflows.js +1 -1
- package/docs/browse-the-web.md +29 -1
- package/docs/fetch-the-web.md +276 -0
- package/docs/harnesses/pi.md +25 -0
- package/docs/harnesses/think.md +215 -0
- package/docs/index.md +99 -75
- package/docs/lifecycle.md +42 -3
- package/docs/queue.md +2 -3
- package/docs/scheduling.md +2 -6
- package/docs/search-the-web.md +135 -0
- package/package.json +148 -44
- package/dist/ai-fm7xx1BK.js +0 -312
- package/dist/ai-fm7xx1BK.js.map +0 -1
- package/dist/browser/ai-sdk.js.map +0 -1
- package/dist/browser/index.js.map +0 -1
- package/dist/browser/tanstack-ai.js.map +0 -1
- package/dist/browser-tool-CQ10e6Kj.js.map +0 -1
- package/dist/capability-B4WbF81e.js.map +0 -1
- package/dist/channel-Bnm4S7T2.d.ts +0 -491
- package/dist/channels/ai-sdk.d.ts +0 -46
- package/dist/channels/ai-sdk.js +0 -120
- package/dist/channels/ai-sdk.js.map +0 -1
- package/dist/channels/email.js.map +0 -1
- package/dist/channels/index.d.ts +0 -233
- package/dist/channels/index.js +0 -608
- package/dist/channels/index.js.map +0 -1
- package/dist/channels/slack.js +0 -614
- package/dist/channels/slack.js.map +0 -1
- package/dist/channels/tanstack-ai.d.ts +0 -39
- package/dist/channels/tanstack-ai.js +0 -17
- package/dist/channels/tanstack-ai.js.map +0 -1
- package/dist/channels/telegram.js +0 -427
- package/dist/channels/telegram.js.map +0 -1
- package/dist/channels/voice.d.ts +0 -45
- package/dist/channels/voice.js +0 -122
- package/dist/channels/voice.js.map +0 -1
- package/dist/client-fyQrLGkD.js.map +0 -1
- package/dist/connector-58XDGvc3.js.map +0 -1
- package/dist/images-iiTDSyRu.js.map +0 -1
- package/dist/index-BB0kqhIz.d.ts +0 -101
- package/dist/ingress-BfetZbMO.js +0 -83
- package/dist/ingress-BfetZbMO.js.map +0 -1
- package/dist/internal-CYlgHl1l.js +0 -59
- package/dist/internal-CYlgHl1l.js.map +0 -1
- package/dist/lifecycle-CFu6OV03.js.map +0 -1
- package/dist/models/ai-sdk/index.js.map +0 -1
- package/dist/protocol-kHsr-f0X.js.map +0 -1
- package/dist/scheduler-DZ3xQfeK.js.map +0 -1
- package/dist/sessions/index.js.map +0 -1
- package/dist/src-BZeu-SCD.js.map +0 -1
- package/dist/streams-DW-UCOUc.js.map +0 -1
- package/dist/surface-bZZJqBka.js +0 -17
- package/dist/surface-bZZJqBka.js.map +0 -1
- package/dist/tasks-68DESxf0.js.map +0 -1
- package/dist/tool-schema-CBjGPrsQ.js +0 -31
- package/dist/tool-schema-CBjGPrsQ.js.map +0 -1
- package/dist/websockets-Ci-LZFHH.js.map +0 -1
- package/docs/channels.md +0 -323
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["awaitsInput"],"sources":["../../../src/harness/ai-sdk/harness.ts","../../../src/experimental/channels/tool-schema.ts","../../../src/harness/ai-sdk/send-message-tool.ts"],"sourcesContent":["import {\n convertToModelMessages,\n stepCountIs,\n streamText,\n toUIMessageStream,\n type LanguageModel,\n type StopCondition,\n type ToolSet,\n type UIMessage\n} from \"ai\";\n// Imported from their modules, not \"../../lifecycle\", which loads\n// cloudflare:workers.\nimport { LifecycleCapability } from \"../../lifecycle/capability\";\nimport type {\n LifecycleJobContext,\n LifecycleJobOutcome\n} from \"../../lifecycle/job-queue\";\nimport {\n answerToolCall,\n toResponseChunks,\n toTranscriptMessage,\n type ToolCallAnswer\n} from \"./turns\";\nimport type {\n AgentHarness,\n HarnessInput,\n HarnessInputFrom,\n HarnessSession,\n HarnessSessions,\n InputPart,\n OperationResult,\n OperationStatus,\n Receipt,\n SessionEvent,\n SessionId,\n SessionInfo,\n SessionState,\n SessionWatch,\n SubmitOptions,\n ToolAnswer\n} from \"../../experimental/channels/harness\";\nimport type {\n ResponseChunk,\n TranscriptMessage\n} from \"../../experimental/channels/protocol\";\n\nexport type AiSdkHarnessOptions<TOOLS extends ToolSet> = {\n model: LanguageModel;\n /**\n * Tools without `execute` run on the client of the participant whose\n * message started the turn; tools with `needsApproval` wait for an\n * approval from anyone.\n */\n tools?: TOOLS;\n system?: string;\n /** Default: `stepCountIs(5)`. */\n stopWhen?: StopCondition<NoInfer<TOOLS>>;\n /** How often a running session's wake job checks in. Default: 30 s. */\n heartbeatMs?: number;\n};\n\n/** Saved messages remember whose client runs their client tool calls. */\ntype Message = UIMessage<{ owner?: string }>;\n\ntype Input = (HarnessInput | ToolAnswer) & HarnessInputFrom;\n\ntype StoredOperation = {\n operationId: string;\n seq: number;\n input: Input;\n status: OperationStatus[\"status\"];\n text?: string;\n reason?: string;\n};\n\ntype StoredSession = { id: SessionId; parent?: SessionId };\n\n/** The run in progress in one session, in memory only. */\ntype Run = {\n operations: string[];\n /** The in-flight message so far. */\n partial: ResponseChunk[];\n abort: AbortController;\n};\n\nconst PREFIX = \"ai-sdk-harness:\";\nconst WAKE_FN = \"wake\";\nconst DEFAULT_SESSION = \"main\";\nconst HEARTBEAT_MS = 30_000;\n\n/**\n * An agent harness around the AI SDK's `streamText`, hosted in a Durable\n * Object: sessions, their transcripts, and a queue of operations, all in the\n * object's storage. One operation runs at a time per session; a run is one\n * `streamText` call over the session's transcript.\n *\n * The AI SDK keeps no state of its own, so a run that an eviction cuts short\n * starts again from the saved transcript, and its unsaved output is lost.\n * Steering is not supported: `whenBusy: \"steer\"` queues like a follow-up.\n *\n * @experimental The API may change between releases.\n */\nexport class AiSdkHarness<TOOLS extends ToolSet = ToolSet>\n extends LifecycleCapability\n implements AgentHarness\n{\n readonly sessions: HarnessSessions;\n readonly #options: AiSdkHarnessOptions<TOOLS>;\n readonly #heartbeatMs: number;\n readonly #runs = new Map<SessionId, Run>();\n /** The loop running a session's queue, while it runs. */\n readonly #driving = new Map<SessionId, Promise<void>>();\n readonly #watchers = new Map<SessionId, Set<Watcher>>();\n readonly #waiters = new Map<string, Set<(op: StoredOperation) => void>>();\n\n constructor(options: AiSdkHarnessOptions<TOOLS>) {\n super(\"ai-sdk-harness\");\n this.#options = options;\n this.#heartbeatMs = options.heartbeatMs ?? HEARTBEAT_MS;\n this.sessions = {\n create: async () => this.#create({ id: crypto.randomUUID() }),\n fork: async (from) => {\n this.#ensure(from);\n const session = this.#create({ id: crypto.randomUUID(), parent: from });\n for (const message of this.#messages(from)) {\n this.#putMessage(session.id, message);\n }\n return session;\n },\n list: async (): Promise<SessionInfo[]> => {\n this.#ensure(DEFAULT_SESSION);\n return [...this.#kv.list<StoredSession>({ prefix: `${PREFIX}s:` })].map(\n ([, { id, parent }]) => ({\n id,\n ...(parent !== undefined && { parent }),\n busy: this.#pending(id).length > 0\n })\n );\n }\n };\n }\n\n // ── Lifecycle ──────────────────────────────────────────────────────────\n\n override async onStart(): Promise<void> {\n // Sessions with unsettled operations: an earlier instance was running\n // them, or was about to. Read them all first: storage allows one open\n // kv.list() at a time, and #pending() lists too.\n const sessions = [\n ...this.#kv.list<StoredSession>({ prefix: `${PREFIX}s:` })\n ];\n for (const [, session] of sessions) {\n if (this.#pending(session.id).length > 0) await this.#wake(session.id);\n }\n }\n\n async onJob(\n context: LifecycleJobContext\n ): Promise<LifecycleJobOutcome | void> {\n if (context.job.fn !== WAKE_FN) return;\n const payload = context.job.payload as { session?: unknown } | null;\n const session = payload?.session;\n if (typeof session !== \"string\") return;\n if (!this.#driving.has(session) && this.#pending(session).length === 0) {\n return;\n }\n // The job keeps the object alive while the queue runs; a heartbeat\n // after an eviction finds no loop and starts one.\n this.lifecycle.trackAlarmWork(this.#drive(session));\n return { rescheduleAt: Date.now() + this.#heartbeatMs };\n }\n\n // ── The harness interface ──────────────────────────────────────────────\n\n session(id: SessionId = DEFAULT_SESSION): HarnessSession {\n return {\n id,\n submit: (input, options) => this.#submit(id, input, options),\n abort: (operationId) => this.#abort(id, operationId),\n wait: (operationId, signal) => this.#wait(id, operationId, signal),\n reset: (handoff) => this.#reset(id, handoff),\n watch: async () => this.#watch(id)\n };\n }\n\n async #submit(\n session: SessionId,\n input: Input,\n options: SubmitOptions = {}\n ): Promise<Receipt> {\n this.#ensure(session);\n const operationId = options.operationId ?? crypto.randomUUID();\n if (this.#operation(session, operationId)) {\n return { operationId, session, accepted: false };\n }\n const op: StoredOperation = {\n operationId,\n seq: this.#nextSeq(session),\n input,\n status: \"queued\"\n };\n this.#saveOperation(session, op);\n this.#emit(session, [\n { type: \"operation\", status: { operationId, status: \"queued\" } }\n ]);\n await this.#wake(session);\n void this.#drive(session);\n return { operationId, session, accepted: true };\n }\n\n async #abort(session: SessionId, operationId?: string): Promise<boolean> {\n const run = this.#runs.get(session);\n const targets = operationId\n ? [this.#operation(session, operationId)].filter(\n (op): op is StoredOperation => op !== undefined && isPending(op)\n )\n : this.#pending(session);\n for (const op of targets) {\n if (run?.operations.includes(op.operationId)) run.abort.abort();\n else {\n this.#settle(session, op, {\n status: \"unanswered\",\n reason: \"withdrawn\"\n });\n }\n }\n return targets.length > 0;\n }\n\n async #wait(\n session: SessionId,\n operationId: string,\n signal?: AbortSignal\n ): Promise<OperationResult> {\n const op = this.#operation(session, operationId);\n if (!op) {\n return {\n operationId,\n session,\n status: \"unanswered\",\n reason: \"not_found\"\n };\n }\n const settled = isPending(op)\n ? await new Promise<StoredOperation>((resolve, reject) => {\n // An abort event fires once, so a signal aborted before the wait\n // began would never reach the listener below.\n if (signal?.aborted) {\n reject(signal.reason);\n return;\n }\n const key = waiterKey(session, operationId);\n const waiters = this.#waiters.get(key) ?? new Set();\n this.#waiters.set(key, waiters);\n const done = (result: StoredOperation) => {\n signal?.removeEventListener(\"abort\", aborted);\n resolve(result);\n };\n const aborted = () => {\n waiters.delete(done);\n reject(signal?.reason);\n };\n waiters.add(done);\n signal?.addEventListener(\"abort\", aborted, { once: true });\n })\n : op;\n return settled.status === \"done\"\n ? {\n operationId,\n session,\n status: \"done\",\n ...(settled.text !== undefined && { text: settled.text })\n }\n : {\n operationId,\n session,\n status: \"unanswered\",\n ...(settled.reason !== undefined && { reason: settled.reason })\n };\n }\n\n async #reset(session: SessionId, handoff?: string): Promise<void> {\n this.#ensure(session);\n await this.#abort(session);\n await this.#driving.get(session);\n for (const [key] of this.#kv.list({ prefix: messagePrefix(session) })) {\n this.#kv.delete(key);\n }\n const events: SessionEvent[] = [{ type: \"reset\" }];\n if (handoff) {\n const note: Message = {\n id: crypto.randomUUID(),\n role: \"system\",\n parts: [{ type: \"text\", text: handoff }]\n };\n this.#putMessage(session, note);\n events.push({ type: \"message\", message: this.#transcript(note) });\n }\n this.#emit(session, events);\n }\n\n #watch(session: SessionId): SessionWatch {\n this.#ensure(session);\n const run = this.#runs.get(session);\n const state: SessionState = {\n messages: this.#messages(session).map((m) => this.#transcript(m)),\n pending: this.#pending(session).map((op) => ({\n operationId: op.operationId,\n status: op.status === \"placed\" ? \"placed\" : \"queued\"\n })),\n ...(run && {\n run: {\n operations: [...run.operations],\n ...(run.partial.length > 0 && { partial: [...run.partial] })\n }\n })\n };\n const watchers = this.#watchers.get(session) ?? new Set();\n this.#watchers.set(session, watchers);\n const watcher = new Watcher(state, () => watchers.delete(watcher));\n watchers.add(watcher);\n return watcher;\n }\n\n // ── Running the queue ──────────────────────────────────────────────────\n\n /** Run the session's operations in order until none are left. */\n #drive(session: SessionId): Promise<void> {\n let driving = this.#driving.get(session);\n if (!driving) {\n driving = (async () => {\n try {\n for (;;) {\n const next = this.#pending(session)[0];\n if (!next) return;\n await this.#run(session, next);\n }\n } finally {\n this.#driving.delete(session);\n }\n })();\n this.#driving.set(session, driving);\n }\n return driving;\n }\n\n async #run(session: SessionId, op: StoredOperation): Promise<void> {\n const { operationId } = op;\n let owner = \"parts\" in op.input ? op.input.from?.participantId : undefined;\n // Place the input, unless an earlier instance already did.\n if (op.status === \"queued\") {\n let placed: Message;\n if (\"parts\" in op.input) {\n placed = {\n id: op.input.messageId ?? operationId,\n role: \"user\",\n parts: op.input.parts.map(toUIPart)\n };\n } else {\n const answered = this.#answer(session, op.input);\n if (typeof answered === \"string\") {\n this.#settle(session, op, { status: \"unanswered\", reason: answered });\n return;\n }\n placed = answered;\n }\n this.#putMessage(session, placed);\n op = { ...op, status: \"placed\" };\n this.#saveOperation(session, op);\n this.#emit(session, [\n { type: \"message\", message: this.#transcript(placed) },\n { type: \"operation\", status: { operationId, status: \"placed\" } }\n ]);\n }\n\n const messages = this.#messages(session);\n const last = messages.at(-1);\n if (last?.role === \"assistant\") {\n // An answer continues the message that made the call, for whoever\n // started it; with calls still unanswered, it waits for them.\n owner = last.metadata?.owner;\n if (awaitsInput(last)) {\n this.#settle(session, op, { status: \"done\" });\n return;\n }\n }\n\n const run: Run = {\n operations: [operationId],\n partial: [],\n abort: new AbortController()\n };\n this.#runs.set(session, run);\n this.#emit(session, [{ type: \"run-start\", operations: [operationId] }]);\n const { model, tools, system } = this.#options;\n let message: Message | undefined;\n let error: unknown;\n try {\n const result = streamText({\n model,\n ...(system !== undefined && { system }),\n ...(tools && { tools }),\n stopWhen: this.#options.stopWhen ?? stepCountIs(5),\n // `tools` lets `toModelOutput` shape earlier results; without it\n // they go back to the model as raw JSON.\n messages: await convertToModelMessages(messages, tools && { tools }),\n abortSignal: run.abort.signal\n });\n const stream = toUIMessageStream<TOOLS, Message>({\n stream: result.stream,\n ...(tools && { tools }),\n originalMessages: messages,\n generateMessageId: () => crypto.randomUUID(),\n onEnd: ({ responseMessage }) => {\n message = {\n ...responseMessage,\n metadata: {\n ...responseMessage.metadata,\n ...(owner !== undefined && { owner })\n }\n };\n }\n });\n for await (const chunk of toResponseChunks(stream, {\n ...(tools && { tools }),\n ...(owner !== undefined && { owner })\n })) {\n run.partial.push(chunk);\n this.#emit(session, [{ type: \"chunk\", chunk }]);\n }\n } catch (caught) {\n error = caught;\n }\n if (message) {\n this.#putMessage(session, message);\n this.#emit(session, [\n { type: \"message\", message: this.#transcript(message) }\n ]);\n }\n this.#runs.delete(session);\n if (run.abort.signal.aborted) {\n this.#settle(session, op, { status: \"unanswered\", reason: \"aborted\" });\n } else if (error !== undefined) {\n console.error(`AI SDK run for \"${operationId}\" failed`, error);\n this.#settle(session, op, {\n status: \"unanswered\",\n reason: error instanceof Error ? error.message : \"failed\"\n });\n } else {\n this.#settle(session, op, {\n status: \"done\",\n text: message ? textOf(message) : \"\"\n });\n }\n this.#emit(session, [{ type: \"run-end\", operations: [operationId] }]);\n }\n\n /** The message an answer updates, or why it is not wanted. */\n #answer(session: SessionId, answer: Input & ToolAnswer): Message | string {\n const messages = this.#messages(session);\n const event: ToolCallAnswer =\n answer.type === \"approval\"\n ? {\n type: \"approval-response\",\n approvalId: answer.approvalId,\n approved: answer.approved,\n ...(answer.reason !== undefined && { reason: answer.reason })\n }\n : {\n type: \"tool-result\",\n toolCallId: answer.toolCallId,\n result: answer.result\n };\n if (answer.type === \"tool-result\") {\n // Only the client of the participant who started the turn runs a\n // client tool.\n const holder = messages.find((m) =>\n m.parts.some(\n (p) => \"toolCallId\" in p && p.toolCallId === answer.toolCallId\n )\n );\n const owner = holder?.metadata?.owner;\n const from = answer.from?.participantId;\n if (owner !== undefined && from !== undefined && owner !== from) {\n return \"not_owner\";\n }\n }\n // SAFETY: the answered message keeps the metadata it was saved with.\n const answered = answerToolCall(messages, event) as Message | undefined;\n // The first answer wins.\n return answered ?? \"not_waiting\";\n }\n\n #settle(\n session: SessionId,\n op: StoredOperation,\n result:\n | { status: \"done\"; text?: string }\n | { status: \"unanswered\"; reason: string }\n ): void {\n const settled: StoredOperation = { ...op, ...result };\n this.#saveOperation(session, settled);\n const { operationId } = op;\n this.#emit(session, [\n {\n type: \"operation\",\n status:\n result.status === \"done\"\n ? {\n operationId,\n status: \"done\",\n ...(result.text !== undefined && { text: result.text })\n }\n : { operationId, status: \"unanswered\", reason: result.reason }\n }\n ]);\n const key = waiterKey(session, operationId);\n for (const waiter of this.#waiters.get(key) ?? []) waiter(settled);\n this.#waiters.delete(key);\n }\n\n #wake(session: SessionId): Promise<unknown> {\n return this.lifecycle.jobs.push({\n id: `${PREFIX}wake:${session}`,\n fn: WAKE_FN,\n time: Date.now(),\n payload: { session },\n singleflight: true\n });\n }\n\n #emit(session: SessionId, events: SessionEvent[]): void {\n for (const watcher of this.#watchers.get(session) ?? []) {\n watcher.push(events);\n }\n }\n\n // ── Storage ────────────────────────────────────────────────────────────\n\n get #kv(): SyncKvStorage {\n return this.lifecycle.storage.kv;\n }\n\n #create(session: StoredSession): HarnessSession {\n this.#kv.put(`${PREFIX}s:${session.id}`, session);\n return this.session(session.id);\n }\n\n /**\n * Sessions are created on first use, so any id names one. That is not an\n * authorization gap: whoever reaches the agent may create sessions anyway.\n */\n #ensure(session: SessionId): void {\n if (this.#kv.get(`${PREFIX}s:${session}`) === undefined) {\n this.#create({ id: session });\n }\n }\n\n #nextSeq(session: SessionId): number {\n const key = `${PREFIX}seq:${session}`;\n const seq = (this.#kv.get<number>(key) ?? 0) + 1;\n this.#kv.put(key, seq);\n return seq;\n }\n\n #messages(session: SessionId): Message[] {\n return [...this.#kv.list<Message>({ prefix: messagePrefix(session) })].map(\n ([, message]) => message\n );\n }\n\n /** Save a message, in place of any with its id. */\n #putMessage(session: SessionId, message: Message): void {\n const indexKey = `${PREFIX}mi:${JSON.stringify(session)}:${message.id}`;\n let key = this.#kv.get<string>(indexKey);\n if (key === undefined || this.#kv.get(key) === undefined) {\n key = messagePrefix(session) + pad(this.#nextSeq(session));\n this.#kv.put(indexKey, key);\n }\n this.#kv.put(key, message);\n }\n\n #operation(\n session: SessionId,\n operationId: string\n ): StoredOperation | undefined {\n return this.#kv.get(operationKey(session, operationId));\n }\n\n #saveOperation(session: SessionId, op: StoredOperation): void {\n this.#kv.put(operationKey(session, op.operationId), op);\n const pendingKey = `${pendingPrefix(session)}${pad(op.seq)}`;\n if (isPending(op)) this.#kv.put(pendingKey, op.operationId);\n else this.#kv.delete(pendingKey);\n }\n\n /** Unsettled operations, oldest first. */\n #pending(session: SessionId): StoredOperation[] {\n return [...this.#kv.list<string>({ prefix: pendingPrefix(session) })]\n .map(([, id]) => this.#operation(session, id))\n .filter((op): op is StoredOperation => op !== undefined);\n }\n\n #transcript(message: Message): TranscriptMessage {\n const owner = message.metadata?.owner;\n return toTranscriptMessage(message, {\n ...(this.#options.tools && { tools: this.#options.tools }),\n ...(owner !== undefined && { owner })\n });\n }\n}\n\n/** One watch: events queue until `start`, then reach the listener in order. */\nclass Watcher implements SessionWatch {\n readonly closed: Promise<void>;\n #close!: () => void;\n #listener: ((events: readonly SessionEvent[]) => Promise<void>) | undefined;\n readonly #queue: SessionEvent[][] = [];\n #draining = false;\n #stopped = false;\n\n constructor(\n readonly state: SessionState,\n private readonly onStop: () => void\n ) {\n this.closed = new Promise((resolve) => {\n this.#close = resolve;\n });\n }\n\n start(listener: (events: readonly SessionEvent[]) => Promise<void>): void {\n this.#listener = listener;\n void this.#drain();\n }\n\n async stop(): Promise<void> {\n this.#stopped = true;\n this.onStop();\n this.#close();\n }\n\n push(events: SessionEvent[]): void {\n if (this.#stopped) return;\n this.#queue.push(events);\n void this.#drain();\n }\n\n async #drain(): Promise<void> {\n if (!this.#listener || this.#draining) return;\n this.#draining = true;\n try {\n while (this.#queue.length > 0 && !this.#stopped) {\n const events = this.#queue.shift() as SessionEvent[];\n try {\n await this.#listener(events);\n } catch (error) {\n console.error(\"A session watcher failed\", error);\n }\n }\n } finally {\n this.#draining = false;\n }\n }\n}\n\nfunction isPending(op: StoredOperation): boolean {\n return op.status === \"queued\" || op.status === \"placed\";\n}\n\n/** Whether the message has a tool call waiting for a result or approval. */\nfunction awaitsInput(message: Message): boolean {\n return message.parts.some(\n (part) =>\n \"toolCallId\" in part &&\n (part.state === \"input-available\" || part.state === \"approval-requested\")\n );\n}\n\nfunction textOf(message: Message): string {\n return message.parts\n .map((part) => (part.type === \"text\" ? part.text : \"\"))\n .join(\"\");\n}\n\nfunction toUIPart(part: InputPart): Message[\"parts\"][number] {\n return part.type === \"text\"\n ? { type: \"text\", text: part.text }\n : {\n type: \"file\",\n mediaType: part.mediaType,\n url: part.url,\n ...(part.filename !== undefined && { filename: part.filename })\n };\n}\n\nfunction pad(seq: number): string {\n return String(seq).padStart(12, \"0\");\n}\n\nfunction messagePrefix(session: SessionId): string {\n return `${PREFIX}m:${JSON.stringify(session)}:`;\n}\n\nfunction pendingPrefix(session: SessionId): string {\n return `${PREFIX}p:${JSON.stringify(session)}:`;\n}\n\nfunction operationKey(session: SessionId, operationId: string): string {\n return `${PREFIX}o:${JSON.stringify(session)}:${operationId}`;\n}\n\nfunction waiterKey(session: SessionId, operationId: string): string {\n return JSON.stringify([session, operationId]);\n}\n","import type { ChannelMessage } from \"./channel\";\n\nexport const channelMessageJsonSchema: {\n type: \"object\";\n properties: {\n title: { type: \"string\"; description: string };\n markdown: { type: \"string\"; minLength: number; description: string };\n };\n required: string[];\n additionalProperties: false;\n} = {\n type: \"object\",\n properties: {\n title: {\n type: \"string\",\n description: \"Optional title or topic for the message\"\n },\n markdown: {\n type: \"string\",\n minLength: 1,\n description: \"Message content formatted as Markdown\"\n }\n },\n required: [\"markdown\"],\n additionalProperties: false\n};\n\nexport function parseChannelMessage(value: unknown): ChannelMessage {\n if (typeof value === \"object\" && value !== null) {\n const candidate = value as Record<string, unknown>;\n if (\n typeof candidate.markdown === \"string\" &&\n candidate.markdown.length > 0 &&\n (candidate.title === undefined || typeof candidate.title === \"string\")\n ) {\n return {\n ...(typeof candidate.title === \"string\"\n ? { title: candidate.title }\n : {}),\n markdown: candidate.markdown\n };\n }\n }\n\n throw new Error(\n \"Expected an optional string title and a non-empty Markdown string\"\n );\n}\n","import { jsonSchema, tool, type Tool } from \"ai\";\nimport type {\n ChannelMessage,\n DeliveryResult\n} from \"../../experimental/channels/channel\";\nimport type { ChannelGateway } from \"../../experimental/channels/gateway\";\nimport type { ChannelMessageSurface } from \"../../experimental/channels/surface\";\nimport {\n channelMessageJsonSchema,\n parseChannelMessage\n} from \"../../experimental/channels/tool-schema\";\n\ntype SendMessageTool = Tool<ChannelMessage, DeliveryResult>;\n\n/** Model-facing options controlled by the caller creating the tool. */\nexport type CreateSendMessageToolOptions = Pick<\n SendMessageTool,\n | \"description\"\n | \"inputExamples\"\n | \"metadata\"\n | \"needsApproval\"\n | \"providerOptions\"\n | \"strict\"\n>;\n\nconst channelMessageSchema = jsonSchema<ChannelMessage>(\n channelMessageJsonSchema,\n {\n validate(value) {\n try {\n return { success: true, value: parseChannelMessage(value) };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error : new Error(String(error))\n };\n }\n }\n }\n);\n\n// Intent: Channel tools will eventually get a module of their own that\n// exports a version per harness (an AI SDK tool, a pi tool, and so on), and\n// this one moves there. Until then it lives with the AI SDK harness.\n\n/**\n * Adapt one Host-resolved surface to an AI SDK tool.\n *\n * The caller chooses the key used in its ToolSet and owns model-facing policy\n * such as the description, examples, metadata, and approval requirement.\n */\nexport function createSendMessageTool(\n gateway: ChannelGateway,\n surface: ChannelMessageSurface,\n options: CreateSendMessageToolOptions = {}\n): Tool<ChannelMessage, DeliveryResult> {\n return tool({\n ...options,\n inputSchema: channelMessageSchema,\n execute: (message) => gateway.deliver(surface, message)\n });\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import {
|
|
2
|
+
C as chunkEntries,
|
|
3
|
+
E as parseHostMessage,
|
|
4
|
+
S as MAX_CHUNK_CHARS,
|
|
5
|
+
T as parseDaemonMessage,
|
|
6
|
+
_ as DaemonFrame,
|
|
7
|
+
a as CONTAINER_HEALTH_PATH,
|
|
8
|
+
b as HostMessage,
|
|
9
|
+
c as CONTAINER_TOKEN_HEADER,
|
|
10
|
+
d as ContainerInputPart,
|
|
11
|
+
f as ContainerMessage,
|
|
12
|
+
g as ContainerWhenBusy,
|
|
13
|
+
h as ContainerSettings,
|
|
14
|
+
i as CONTAINER_ENV,
|
|
15
|
+
l as ContainerEvent,
|
|
16
|
+
m as ContainerPart,
|
|
17
|
+
n as CLOSE_REPLACED,
|
|
18
|
+
o as CONTAINER_PROTOCOL_VERSION,
|
|
19
|
+
p as ContainerOutcome,
|
|
20
|
+
r as CLOSE_UNAUTHORIZED,
|
|
21
|
+
s as CONTAINER_SESSION_PATH,
|
|
22
|
+
t as AdapterInfo,
|
|
23
|
+
u as ContainerInput,
|
|
24
|
+
v as DaemonMessage,
|
|
25
|
+
w as inputText,
|
|
26
|
+
x as JsonValue,
|
|
27
|
+
y as DaemonOperation
|
|
28
|
+
} from "../../../protocol-BEgrJYC5.js";
|
|
29
|
+
import {
|
|
30
|
+
a as ContainerDaemon,
|
|
31
|
+
c as DaemonSocket,
|
|
32
|
+
i as ContainerAdapter,
|
|
33
|
+
l as echoAdapter,
|
|
34
|
+
n as AdapterSession,
|
|
35
|
+
o as ContainerDaemonOptions,
|
|
36
|
+
r as AdapterTurn,
|
|
37
|
+
s as DaemonConnection,
|
|
38
|
+
t as AdapterContext
|
|
39
|
+
} from "../../../daemon-core-CbohVPAu.js";
|
|
40
|
+
export {
|
|
41
|
+
type AdapterContext,
|
|
42
|
+
type AdapterInfo,
|
|
43
|
+
type AdapterSession,
|
|
44
|
+
type AdapterTurn,
|
|
45
|
+
CLOSE_REPLACED,
|
|
46
|
+
CLOSE_UNAUTHORIZED,
|
|
47
|
+
CONTAINER_ENV,
|
|
48
|
+
CONTAINER_HEALTH_PATH,
|
|
49
|
+
CONTAINER_PROTOCOL_VERSION,
|
|
50
|
+
CONTAINER_SESSION_PATH,
|
|
51
|
+
CONTAINER_TOKEN_HEADER,
|
|
52
|
+
type ContainerAdapter,
|
|
53
|
+
ContainerDaemon,
|
|
54
|
+
type ContainerDaemonOptions,
|
|
55
|
+
type ContainerEvent,
|
|
56
|
+
type ContainerInput,
|
|
57
|
+
type ContainerInputPart,
|
|
58
|
+
type ContainerMessage,
|
|
59
|
+
type ContainerOutcome,
|
|
60
|
+
type ContainerPart,
|
|
61
|
+
type ContainerSettings,
|
|
62
|
+
type ContainerWhenBusy,
|
|
63
|
+
type DaemonConnection,
|
|
64
|
+
type DaemonFrame,
|
|
65
|
+
type DaemonMessage,
|
|
66
|
+
type DaemonOperation,
|
|
67
|
+
type DaemonSocket,
|
|
68
|
+
type HostMessage,
|
|
69
|
+
type JsonValue,
|
|
70
|
+
MAX_CHUNK_CHARS,
|
|
71
|
+
chunkEntries,
|
|
72
|
+
echoAdapter,
|
|
73
|
+
inputText,
|
|
74
|
+
parseDaemonMessage,
|
|
75
|
+
parseHostMessage
|
|
76
|
+
};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { a as CONTAINER_PROTOCOL_VERSION, c as MAX_CHUNK_CHARS, d as parseDaemonMessage, f as parseHostMessage, i as CONTAINER_HEALTH_PATH, l as chunkEntries, n as CLOSE_UNAUTHORIZED, o as CONTAINER_SESSION_PATH, r as CONTAINER_ENV, s as CONTAINER_TOKEN_HEADER, t as CLOSE_REPLACED, u as inputText } from "../../../protocol-cOklVBBD.js";
|
|
2
|
+
import { n as echoAdapter, t as ContainerDaemon } from "../../../daemon-core-Buubj-y1.js";
|
|
3
|
+
export { CLOSE_REPLACED, CLOSE_UNAUTHORIZED, CONTAINER_ENV, CONTAINER_HEALTH_PATH, CONTAINER_PROTOCOL_VERSION, CONTAINER_SESSION_PATH, CONTAINER_TOKEN_HEADER, ContainerDaemon, MAX_CHUNK_CHARS, chunkEntries, echoAdapter, inputText, parseDaemonMessage, parseHostMessage };
|