@narumitw/pi-subagents 2.0.3 → 2.0.5

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.
Files changed (36) hide show
  1. package/README.md +250 -157
  2. package/dist/chunks/child-peer-bridge.ts +108 -0
  3. package/dist/chunks/child-peer-bridge.ts.map +7 -0
  4. package/dist/chunks/{chunk-EWWXFU7N.ts → chunk-5DGRMKNV.ts} +3 -27
  5. package/dist/chunks/{chunk-EWWXFU7N.ts.map → chunk-5DGRMKNV.ts.map} +3 -3
  6. package/dist/chunks/{chunk-F5YWVHQX.ts → chunk-CBP76ARQ.ts} +6 -6
  7. package/dist/chunks/{chunk-UVFVHIOP.ts → chunk-H3BFJ7HJ.ts} +6 -4
  8. package/dist/chunks/{chunk-UVFVHIOP.ts.map → chunk-H3BFJ7HJ.ts.map} +1 -1
  9. package/dist/chunks/chunk-RY2AEGMZ.ts +34 -0
  10. package/dist/chunks/chunk-RY2AEGMZ.ts.map +7 -0
  11. package/dist/chunks/{chunk-RHRQMT7Q.ts → chunk-YBUWBRF7.ts} +2 -2
  12. package/dist/chunks/{chunk-F4L2UVSK.ts → chunk-ZHTNCZIA.ts} +2 -2
  13. package/dist/chunks/{config-ui-3IBMHTQB.ts → config-ui-2YUCUEBM.ts} +3 -3
  14. package/dist/chunks/{consult-NYXVDN5G.ts → consult-IV7UBNQQ.ts} +3 -3
  15. package/dist/chunks/{create-stateful-transport-4WKZHRSI.ts → create-stateful-transport-ZP3IXNV3.ts} +4 -4
  16. package/dist/chunks/{execution-DS2DEIQZ.ts → execution-LA7HN5YF.ts} +5 -5
  17. package/dist/chunks/{in-process-transport-TEYAWSEC.ts → in-process-transport-4RF3J6XK.ts} +4 -3
  18. package/dist/chunks/{inspect-UOQQ3KNL.ts → inspect-XV2QALMR.ts} +5 -5
  19. package/dist/chunks/{rpc-transport-Y6LA5BOP.ts → rpc-transport-NEHBHWX4.ts} +103 -31
  20. package/dist/chunks/rpc-transport-NEHBHWX4.ts.map +7 -0
  21. package/dist/chunks/{subprocess-transport-C2XVR25R.ts → subprocess-transport-NSHOGDC4.ts} +7 -6
  22. package/dist/chunks/{subprocess-transport-C2XVR25R.ts.map → subprocess-transport-NSHOGDC4.ts.map} +1 -1
  23. package/dist/index.ts +15 -15
  24. package/package.json +2 -2
  25. package/src/rpc-transport.ts +20 -6
  26. package/src/rpc-turn-capture.ts +98 -23
  27. package/dist/chunks/rpc-transport-Y6LA5BOP.ts.map +0 -7
  28. /package/dist/chunks/{chunk-F5YWVHQX.ts.map → chunk-CBP76ARQ.ts.map} +0 -0
  29. /package/dist/chunks/{chunk-RHRQMT7Q.ts.map → chunk-YBUWBRF7.ts.map} +0 -0
  30. /package/dist/chunks/{chunk-F4L2UVSK.ts.map → chunk-ZHTNCZIA.ts.map} +0 -0
  31. /package/dist/chunks/{config-ui-3IBMHTQB.ts.map → config-ui-2YUCUEBM.ts.map} +0 -0
  32. /package/dist/chunks/{consult-NYXVDN5G.ts.map → consult-IV7UBNQQ.ts.map} +0 -0
  33. /package/dist/chunks/{create-stateful-transport-4WKZHRSI.ts.map → create-stateful-transport-ZP3IXNV3.ts.map} +0 -0
  34. /package/dist/chunks/{execution-DS2DEIQZ.ts.map → execution-LA7HN5YF.ts.map} +0 -0
  35. /package/dist/chunks/{in-process-transport-TEYAWSEC.ts.map → in-process-transport-4RF3J6XK.ts.map} +0 -0
  36. /package/dist/chunks/{inspect-UOQQ3KNL.ts.map → inspect-XV2QALMR.ts.map} +0 -0
@@ -0,0 +1,108 @@
1
+ // @generated by scripts/build-runtime.mjs; do not edit.
2
+ // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
+ import {
4
+ createChildPeerExtension
5
+ } from "./chunk-5DGRMKNV.ts";
6
+ import "./chunk-H3FP6DLR.ts";
7
+
8
+ // src/child-peer-bridge.ts
9
+ import net from "node:net";
10
+ var MAX_RESPONSE_BYTES = 64 * 1024;
11
+ var REQUEST_TIMEOUT_MS = 2e3;
12
+ var captured = captureBridgeEnvironment();
13
+ var childPeerBridge = captured ? createChildPeerExtension(createProcessPeerClient(captured)) : () => void 0;
14
+ var child_peer_bridge_default = childPeerBridge;
15
+ function captureBridgeEnvironment() {
16
+ const host = process.env.PI_SUBAGENT_PEER_HOST;
17
+ const rawPort = process.env.PI_SUBAGENT_PEER_PORT;
18
+ const token = process.env.PI_SUBAGENT_PEER_TOKEN;
19
+ delete process.env.PI_SUBAGENT_PEER_HOST;
20
+ delete process.env.PI_SUBAGENT_PEER_PORT;
21
+ delete process.env.PI_SUBAGENT_PEER_TOKEN;
22
+ if (!host && !rawPort && !token) return void 0;
23
+ const port = Number(rawPort);
24
+ if (host !== "127.0.0.1" || !Number.isSafeInteger(port) || port < 1 || port > 65535 || !token) {
25
+ throw new Error("Invalid pi-subagents peer bridge environment");
26
+ }
27
+ return { host, port, token };
28
+ }
29
+ function createProcessPeerClient(environment) {
30
+ const request = async (input) => {
31
+ const response = await requestBridge(environment, { ...input, token: environment.token });
32
+ if (response.ok !== true) {
33
+ throw new Error(
34
+ typeof response.error === "string" ? response.error : "Subagent peer bridge rejected the request"
35
+ );
36
+ }
37
+ return response;
38
+ };
39
+ return {
40
+ async send(target, message, deduplicationKey) {
41
+ const response = await request({
42
+ action: "send",
43
+ target,
44
+ message,
45
+ ...deduplicationKey ? { deduplicationKey } : {}
46
+ });
47
+ if (!isMailboxMessage(response.message)) {
48
+ throw new Error("Subagent peer bridge returned an invalid message receipt");
49
+ }
50
+ return response.message;
51
+ },
52
+ async list() {
53
+ return (await request({ action: "list" })).peers ?? [];
54
+ },
55
+ async acknowledge(messageIds, completionIds) {
56
+ await request({ action: "acknowledge", messageIds, completionIds });
57
+ }
58
+ };
59
+ }
60
+ function requestBridge(environment, request) {
61
+ return new Promise((resolve, reject) => {
62
+ const socket = net.createConnection({ host: environment.host, port: environment.port });
63
+ let response = Buffer.alloc(0);
64
+ let settled = false;
65
+ const finish = (error, value) => {
66
+ if (settled) return;
67
+ settled = true;
68
+ clearTimeout(timer);
69
+ socket.destroy();
70
+ if (error) reject(error);
71
+ else resolve(value ?? {});
72
+ };
73
+ const timer = setTimeout(
74
+ () => finish(new Error("Subagent peer bridge request timed out")),
75
+ REQUEST_TIMEOUT_MS
76
+ );
77
+ timer.unref();
78
+ socket.once("connect", () => socket.end(`${JSON.stringify(request)}
79
+ `));
80
+ socket.on("data", (chunk) => {
81
+ response = Buffer.concat([response, chunk]);
82
+ if (response.byteLength > MAX_RESPONSE_BYTES) {
83
+ finish(new Error("Subagent peer bridge response exceeded its size limit"));
84
+ }
85
+ });
86
+ socket.once("error", (error) => finish(error));
87
+ socket.once("close", () => {
88
+ if (settled) return;
89
+ try {
90
+ const parsed = JSON.parse(response.toString("utf8"));
91
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error();
92
+ finish(void 0, parsed);
93
+ } catch {
94
+ finish(new Error("Subagent peer bridge returned malformed JSON"));
95
+ }
96
+ });
97
+ });
98
+ }
99
+ function isMailboxMessage(value) {
100
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
101
+ const message = value;
102
+ return typeof message.id === "string" && typeof message.senderId === "string" && typeof message.recipientId === "string" && typeof message.content === "string" && typeof message.createdAt === "number";
103
+ }
104
+ export {
105
+ captureBridgeEnvironment,
106
+ child_peer_bridge_default as default
107
+ };
108
+ //# sourceMappingURL=child-peer-bridge.ts.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/child-peer-bridge.ts"],
4
+ "sourcesContent": ["import net from \"node:net\";\nimport type { ExtensionFactory } from \"@earendil-works/pi-coding-agent\";\nimport { type ChildPeerClient, createChildPeerExtension } from \"./child-peer-tools.js\";\nimport type { AgentMailboxMessage } from \"./registry.js\";\n\nconst MAX_RESPONSE_BYTES = 64 * 1024;\nconst REQUEST_TIMEOUT_MS = 2_000;\n\nconst captured = captureBridgeEnvironment();\n\nconst childPeerBridge: ExtensionFactory = captured\n\t? createChildPeerExtension(createProcessPeerClient(captured))\n\t: () => undefined;\n\nexport default childPeerBridge;\n\ninterface CapturedBridgeEnvironment {\n\thost: \"127.0.0.1\";\n\tport: number;\n\ttoken: string;\n}\n\nexport function captureBridgeEnvironment(): CapturedBridgeEnvironment | undefined {\n\tconst host = process.env.PI_SUBAGENT_PEER_HOST;\n\tconst rawPort = process.env.PI_SUBAGENT_PEER_PORT;\n\tconst token = process.env.PI_SUBAGENT_PEER_TOKEN;\n\tdelete process.env.PI_SUBAGENT_PEER_HOST;\n\tdelete process.env.PI_SUBAGENT_PEER_PORT;\n\tdelete process.env.PI_SUBAGENT_PEER_TOKEN;\n\tif (!host && !rawPort && !token) return undefined;\n\tconst port = Number(rawPort);\n\tif (host !== \"127.0.0.1\" || !Number.isSafeInteger(port) || port < 1 || port > 65_535 || !token) {\n\t\tthrow new Error(\"Invalid pi-subagents peer bridge environment\");\n\t}\n\treturn { host, port, token };\n}\n\nfunction createProcessPeerClient(environment: CapturedBridgeEnvironment): ChildPeerClient {\n\tconst request = async (input: Record<string, unknown>): Promise<Record<string, unknown>> => {\n\t\tconst response = await requestBridge(environment, { ...input, token: environment.token });\n\t\tif (response.ok !== true) {\n\t\t\tthrow new Error(\n\t\t\t\ttypeof response.error === \"string\"\n\t\t\t\t\t? response.error\n\t\t\t\t\t: \"Subagent peer bridge rejected the request\",\n\t\t\t);\n\t\t}\n\t\treturn response;\n\t};\n\treturn {\n\t\tasync send(target, message, deduplicationKey) {\n\t\t\tconst response = await request({\n\t\t\t\taction: \"send\",\n\t\t\t\ttarget,\n\t\t\t\tmessage,\n\t\t\t\t...(deduplicationKey ? { deduplicationKey } : {}),\n\t\t\t});\n\t\t\tif (!isMailboxMessage(response.message)) {\n\t\t\t\tthrow new Error(\"Subagent peer bridge returned an invalid message receipt\");\n\t\t\t}\n\t\t\treturn response.message;\n\t\t},\n\t\tasync list() {\n\t\t\treturn (await request({ action: \"list\" })).peers ?? [];\n\t\t},\n\t\tasync acknowledge(messageIds, completionIds) {\n\t\t\tawait request({ action: \"acknowledge\", messageIds, completionIds });\n\t\t},\n\t};\n}\n\nfunction requestBridge(\n\tenvironment: CapturedBridgeEnvironment,\n\trequest: Record<string, unknown>,\n): Promise<Record<string, unknown>> {\n\treturn new Promise((resolve, reject) => {\n\t\tconst socket = net.createConnection({ host: environment.host, port: environment.port });\n\t\tlet response = Buffer.alloc(0);\n\t\tlet settled = false;\n\t\tconst finish = (error?: Error, value?: Record<string, unknown>) => {\n\t\t\tif (settled) return;\n\t\t\tsettled = true;\n\t\t\tclearTimeout(timer);\n\t\t\tsocket.destroy();\n\t\t\tif (error) reject(error);\n\t\t\telse resolve(value ?? {});\n\t\t};\n\t\tconst timer = setTimeout(\n\t\t\t() => finish(new Error(\"Subagent peer bridge request timed out\")),\n\t\t\tREQUEST_TIMEOUT_MS,\n\t\t);\n\t\ttimer.unref();\n\t\tsocket.once(\"connect\", () => socket.end(`${JSON.stringify(request)}\\n`));\n\t\tsocket.on(\"data\", (chunk: Buffer) => {\n\t\t\tresponse = Buffer.concat([response, chunk]);\n\t\t\tif (response.byteLength > MAX_RESPONSE_BYTES) {\n\t\t\t\tfinish(new Error(\"Subagent peer bridge response exceeded its size limit\"));\n\t\t\t}\n\t\t});\n\t\tsocket.once(\"error\", (error) => finish(error));\n\t\tsocket.once(\"close\", () => {\n\t\t\tif (settled) return;\n\t\t\ttry {\n\t\t\t\tconst parsed = JSON.parse(response.toString(\"utf8\")) as unknown;\n\t\t\t\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) throw new Error();\n\t\t\t\tfinish(undefined, parsed as Record<string, unknown>);\n\t\t\t} catch {\n\t\t\t\tfinish(new Error(\"Subagent peer bridge returned malformed JSON\"));\n\t\t\t}\n\t\t});\n\t});\n}\n\nfunction isMailboxMessage(value: unknown): value is AgentMailboxMessage {\n\tif (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n\tconst message = value as Record<string, unknown>;\n\treturn (\n\t\ttypeof message.id === \"string\" &&\n\t\ttypeof message.senderId === \"string\" &&\n\t\ttypeof message.recipientId === \"string\" &&\n\t\ttypeof message.content === \"string\" &&\n\t\ttypeof message.createdAt === \"number\"\n\t);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -119,32 +119,8 @@ function messageText(message) {
119
119
  });
120
120
  }
121
121
 
122
- // src/peer-transport.ts
123
- import { fileURLToPath } from "node:url";
124
- var CHILD_PEER_TOOL_NAMES = ["subagent_peer_send", "subagent_peer_list"];
125
- function createInProcessPeerExtension(runtime, agentId) {
126
- return createChildPeerExtension({
127
- send: (target, message, deduplicationKey) => runtime.send(agentId, target, message, deduplicationKey),
128
- list: async () => runtime.list(agentId),
129
- acknowledge: (messageIds, completionIds) => runtime.acknowledge(agentId, messageIds, completionIds)
130
- });
131
- }
132
- function childPeerBridgePath() {
133
- return fileURLToPath(new URL("./child-peer-bridge.ts", import.meta.url));
134
- }
135
- function peerBridgeEnvironment(credentials) {
136
- return {
137
- PI_SUBAGENT_PEER_HOST: credentials.host,
138
- PI_SUBAGENT_PEER_PORT: String(credentials.port),
139
- PI_SUBAGENT_PEER_TOKEN: credentials.token
140
- };
141
- }
142
-
143
122
  export {
144
- formatPeerMessage,
145
- CHILD_PEER_TOOL_NAMES,
146
- createInProcessPeerExtension,
147
- childPeerBridgePath,
148
- peerBridgeEnvironment
123
+ createChildPeerExtension,
124
+ formatPeerMessage
149
125
  };
150
- //# sourceMappingURL=chunk-EWWXFU7N.ts.map
126
+ //# sourceMappingURL=chunk-5DGRMKNV.ts.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../src/child-peer-tools.ts", "../../src/peer-transport.ts"],
4
- "sourcesContent": ["import { defineTool, type ExtensionFactory } from \"@earendil-works/pi-coding-agent\";\nimport { Type } from \"typebox\";\nimport { redactPrivateText } from \"./context.js\";\nimport { MAX_TOOL_MESSAGE_BYTES, truncateUtf8 } from \"./limits.js\";\nimport type { AgentMailboxMessage } from \"./registry.js\";\n\nconst MAX_PEER_MESSAGE_BYTES = 16 * 1024;\nconst MAX_DEDUPLICATION_KEY_LENGTH = 256;\nconst PEER_ENVELOPE_HEADER =\n\t/^Message Type: SUBAGENT_(?:COMPLETION|PEER_MESSAGE)\\nProtocol: pi-subagents:v1\\nMessage ID: (msg_[^\\s]+)\\n(?:Completion ID: (completion:[^\\s]+)\\n)?Sender ID: [^\\n]+\\n(?:Sender Path: [^\\n]+\\n)?Payload:\\n/u;\n\nexport interface ChildPeerClient {\n\tsend(target: string, message: string, deduplicationKey?: string): Promise<AgentMailboxMessage>;\n\tlist(): Promise<unknown>;\n\tacknowledge(messageIds: readonly string[], completionIds: readonly string[]): Promise<void>;\n}\n\nexport function createChildPeerExtension(client: ChildPeerClient): ExtensionFactory {\n\treturn (pi) => {\n\t\tpi.registerTool(\n\t\t\tdefineTool({\n\t\t\t\tname: \"subagent_peer_send\",\n\t\t\t\tlabel: \"Send Peer Message\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Send a bounded queue-only message to /root or another retained agent by canonical task path. The runtime binds your sender identity; this tool never starts an idle turn.\",\n\t\t\t\tpromptSnippet: \"Send a queue-only message to another retained agent\",\n\t\t\t\tparameters: Type.Object(\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: Type.String({ minLength: 1, maxLength: 2_048 }),\n\t\t\t\t\t\tmessage: Type.String({ minLength: 1, maxLength: MAX_PEER_MESSAGE_BYTES }),\n\t\t\t\t\t\tdeduplicationKey: Type.Optional(\n\t\t\t\t\t\t\tType.String({ minLength: 1, maxLength: MAX_DEDUPLICATION_KEY_LENGTH }),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t),\n\t\t\t\tasync execute(_id, params) {\n\t\t\t\t\tconst message = await client.send(params.target, params.message, params.deduplicationKey);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\t\ttext: `Queued ${message.id} for ${message.recipientId}; delivery does not start an idle turn.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdetails: {\n\t\t\t\t\t\t\tmessageId: message.id,\n\t\t\t\t\t\t\trecipientId: message.recipientId,\n\t\t\t\t\t\t\tcreatedAt: message.createdAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tpi.registerTool(\n\t\t\tdefineTool({\n\t\t\t\tname: \"subagent_peer_list\",\n\t\t\t\tlabel: \"List Peers\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"List bounded identity and lifecycle metadata for /root and retained agents in this session.\",\n\t\t\t\tpromptSnippet: \"List retained peer task paths\",\n\t\t\t\tparameters: Type.Object({}, { additionalProperties: false }),\n\t\t\t\tasync execute() {\n\t\t\t\t\tconst peers = await client.list();\n\t\t\t\t\tconst text = truncateUtf8(JSON.stringify(peers, null, 2), MAX_TOOL_MESSAGE_BYTES).text;\n\t\t\t\t\treturn { content: [{ type: \"text\" as const, text }], details: { peers } };\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\n\t\tconst acknowledgedMessageIds = new Set<string>();\n\t\tconst acknowledgedCompletionIds = new Set<string>();\n\t\tpi.on(\"context\", async (event) => {\n\t\t\tconst visible = visibleDeliveryIds(event.messages);\n\t\t\tconst messageIds = [...visible.messageIds].filter((id) => !acknowledgedMessageIds.has(id));\n\t\t\tconst completionIds = [...visible.completionIds].filter(\n\t\t\t\t(id) => !acknowledgedCompletionIds.has(id),\n\t\t\t);\n\t\t\tif (messageIds.length === 0 && completionIds.length === 0) return;\n\t\t\tawait client.acknowledge(messageIds, completionIds);\n\t\t\tfor (const id of messageIds) acknowledgedMessageIds.add(id);\n\t\t\tfor (const id of completionIds) acknowledgedCompletionIds.add(id);\n\t\t});\n\t};\n}\n\nexport function formatPeerMessage(message: AgentMailboxMessage, senderPath?: string): string {\n\treturn truncateUtf8(\n\t\t[\n\t\t\t`Message Type: ${message.completionId ? \"SUBAGENT_COMPLETION\" : \"SUBAGENT_PEER_MESSAGE\"}`,\n\t\t\t\"Protocol: pi-subagents:v1\",\n\t\t\t`Message ID: ${message.id}`,\n\t\t\t...(message.completionId ? [`Completion ID: ${message.completionId}`] : []),\n\t\t\t`Sender ID: ${message.senderId}`,\n\t\t\t...(senderPath ? [`Sender Path: ${senderPath}`] : []),\n\t\t\t\"Payload:\",\n\t\t\tredactPrivateText(message.content),\n\t\t].join(\"\\n\"),\n\t\tMAX_TOOL_MESSAGE_BYTES,\n\t).text;\n}\n\nexport function visibleDeliveryIds(messages: readonly unknown[]): {\n\tmessageIds: Set<string>;\n\tcompletionIds: Set<string>;\n} {\n\tconst messageIds = new Set<string>();\n\tconst completionIds = new Set<string>();\n\tfor (const message of messages) {\n\t\tfor (const text of messageText(message)) {\n\t\t\tconst match = PEER_ENVELOPE_HEADER.exec(text);\n\t\t\tif (!match) continue;\n\t\t\tmessageIds.add(match[1]);\n\t\t\tif (match[2]) completionIds.add(match[2]);\n\t\t}\n\t}\n\treturn { messageIds, completionIds };\n}\n\nfunction messageText(message: unknown): string[] {\n\tif (!message || typeof message !== \"object\" || Array.isArray(message)) return [];\n\tconst candidate = message as Record<string, unknown>;\n\tif (candidate.role !== \"user\") return [];\n\tconst content = candidate.content;\n\tif (typeof content === \"string\") return [content];\n\tif (!Array.isArray(content)) return [];\n\treturn content.flatMap((part) => {\n\t\tif (!part || typeof part !== \"object\" || Array.isArray(part)) return [];\n\t\tconst text = (part as Record<string, unknown>).text;\n\t\treturn typeof text === \"string\" ? [text] : [];\n\t});\n}\n", "import { fileURLToPath } from \"node:url\";\nimport type { ExtensionFactory } from \"@earendil-works/pi-coding-agent\";\nimport { createChildPeerExtension } from \"./child-peer-tools.js\";\nimport type { PeerBridgeCredentials, PeerDescriptor } from \"./peer-communication.js\";\nimport type { AgentMailboxMessage } from \"./registry.js\";\n\nexport const CHILD_PEER_TOOL_NAMES = [\"subagent_peer_send\", \"subagent_peer_list\"] as const;\n\nexport interface PeerTransportRuntime {\n\tsend(\n\t\tsenderId: string,\n\t\ttarget: string,\n\t\tmessage: string,\n\t\tdeduplicationKey?: string,\n\t): Promise<AgentMailboxMessage>;\n\tlist(senderId: string): PeerDescriptor[];\n\tacknowledge(\n\t\tagentId: string,\n\t\tmessageIds: readonly string[],\n\t\tcompletionIds?: readonly string[],\n\t): Promise<void>;\n\tissueCredentials(agentId: string, generation: number): Promise<PeerBridgeCredentials>;\n\trevoke(agentId: string): void;\n}\n\nexport function createInProcessPeerExtension(\n\truntime: PeerTransportRuntime,\n\tagentId: string,\n): ExtensionFactory {\n\treturn createChildPeerExtension({\n\t\tsend: (target, message, deduplicationKey) =>\n\t\t\truntime.send(agentId, target, message, deduplicationKey),\n\t\tlist: async () => runtime.list(agentId),\n\t\tacknowledge: (messageIds, completionIds) =>\n\t\t\truntime.acknowledge(agentId, messageIds, completionIds),\n\t});\n}\n\nexport function childPeerBridgePath(): string {\n\treturn fileURLToPath(new URL(\"./child-peer-bridge.ts\", import.meta.url));\n}\n\nexport function peerBridgeEnvironment(credentials: PeerBridgeCredentials): NodeJS.ProcessEnv {\n\treturn {\n\t\tPI_SUBAGENT_PEER_HOST: credentials.host,\n\t\tPI_SUBAGENT_PEER_PORT: String(credentials.port),\n\t\tPI_SUBAGENT_PEER_TOKEN: credentials.token,\n\t};\n}\n"],
5
- "mappings": "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",
3
+ "sources": ["../../src/child-peer-tools.ts"],
4
+ "sourcesContent": ["import { defineTool, type ExtensionFactory } from \"@earendil-works/pi-coding-agent\";\nimport { Type } from \"typebox\";\nimport { redactPrivateText } from \"./context.js\";\nimport { MAX_TOOL_MESSAGE_BYTES, truncateUtf8 } from \"./limits.js\";\nimport type { AgentMailboxMessage } from \"./registry.js\";\n\nconst MAX_PEER_MESSAGE_BYTES = 16 * 1024;\nconst MAX_DEDUPLICATION_KEY_LENGTH = 256;\nconst PEER_ENVELOPE_HEADER =\n\t/^Message Type: SUBAGENT_(?:COMPLETION|PEER_MESSAGE)\\nProtocol: pi-subagents:v1\\nMessage ID: (msg_[^\\s]+)\\n(?:Completion ID: (completion:[^\\s]+)\\n)?Sender ID: [^\\n]+\\n(?:Sender Path: [^\\n]+\\n)?Payload:\\n/u;\n\nexport interface ChildPeerClient {\n\tsend(target: string, message: string, deduplicationKey?: string): Promise<AgentMailboxMessage>;\n\tlist(): Promise<unknown>;\n\tacknowledge(messageIds: readonly string[], completionIds: readonly string[]): Promise<void>;\n}\n\nexport function createChildPeerExtension(client: ChildPeerClient): ExtensionFactory {\n\treturn (pi) => {\n\t\tpi.registerTool(\n\t\t\tdefineTool({\n\t\t\t\tname: \"subagent_peer_send\",\n\t\t\t\tlabel: \"Send Peer Message\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"Send a bounded queue-only message to /root or another retained agent by canonical task path. The runtime binds your sender identity; this tool never starts an idle turn.\",\n\t\t\t\tpromptSnippet: \"Send a queue-only message to another retained agent\",\n\t\t\t\tparameters: Type.Object(\n\t\t\t\t\t{\n\t\t\t\t\t\ttarget: Type.String({ minLength: 1, maxLength: 2_048 }),\n\t\t\t\t\t\tmessage: Type.String({ minLength: 1, maxLength: MAX_PEER_MESSAGE_BYTES }),\n\t\t\t\t\t\tdeduplicationKey: Type.Optional(\n\t\t\t\t\t\t\tType.String({ minLength: 1, maxLength: MAX_DEDUPLICATION_KEY_LENGTH }),\n\t\t\t\t\t\t),\n\t\t\t\t\t},\n\t\t\t\t\t{ additionalProperties: false },\n\t\t\t\t),\n\t\t\t\tasync execute(_id, params) {\n\t\t\t\t\tconst message = await client.send(params.target, params.message, params.deduplicationKey);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: \"text\" as const,\n\t\t\t\t\t\t\t\ttext: `Queued ${message.id} for ${message.recipientId}; delivery does not start an idle turn.`,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdetails: {\n\t\t\t\t\t\t\tmessageId: message.id,\n\t\t\t\t\t\t\trecipientId: message.recipientId,\n\t\t\t\t\t\t\tcreatedAt: message.createdAt,\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\t\tpi.registerTool(\n\t\t\tdefineTool({\n\t\t\t\tname: \"subagent_peer_list\",\n\t\t\t\tlabel: \"List Peers\",\n\t\t\t\tdescription:\n\t\t\t\t\t\"List bounded identity and lifecycle metadata for /root and retained agents in this session.\",\n\t\t\t\tpromptSnippet: \"List retained peer task paths\",\n\t\t\t\tparameters: Type.Object({}, { additionalProperties: false }),\n\t\t\t\tasync execute() {\n\t\t\t\t\tconst peers = await client.list();\n\t\t\t\t\tconst text = truncateUtf8(JSON.stringify(peers, null, 2), MAX_TOOL_MESSAGE_BYTES).text;\n\t\t\t\t\treturn { content: [{ type: \"text\" as const, text }], details: { peers } };\n\t\t\t\t},\n\t\t\t}),\n\t\t);\n\n\t\tconst acknowledgedMessageIds = new Set<string>();\n\t\tconst acknowledgedCompletionIds = new Set<string>();\n\t\tpi.on(\"context\", async (event) => {\n\t\t\tconst visible = visibleDeliveryIds(event.messages);\n\t\t\tconst messageIds = [...visible.messageIds].filter((id) => !acknowledgedMessageIds.has(id));\n\t\t\tconst completionIds = [...visible.completionIds].filter(\n\t\t\t\t(id) => !acknowledgedCompletionIds.has(id),\n\t\t\t);\n\t\t\tif (messageIds.length === 0 && completionIds.length === 0) return;\n\t\t\tawait client.acknowledge(messageIds, completionIds);\n\t\t\tfor (const id of messageIds) acknowledgedMessageIds.add(id);\n\t\t\tfor (const id of completionIds) acknowledgedCompletionIds.add(id);\n\t\t});\n\t};\n}\n\nexport function formatPeerMessage(message: AgentMailboxMessage, senderPath?: string): string {\n\treturn truncateUtf8(\n\t\t[\n\t\t\t`Message Type: ${message.completionId ? \"SUBAGENT_COMPLETION\" : \"SUBAGENT_PEER_MESSAGE\"}`,\n\t\t\t\"Protocol: pi-subagents:v1\",\n\t\t\t`Message ID: ${message.id}`,\n\t\t\t...(message.completionId ? [`Completion ID: ${message.completionId}`] : []),\n\t\t\t`Sender ID: ${message.senderId}`,\n\t\t\t...(senderPath ? [`Sender Path: ${senderPath}`] : []),\n\t\t\t\"Payload:\",\n\t\t\tredactPrivateText(message.content),\n\t\t].join(\"\\n\"),\n\t\tMAX_TOOL_MESSAGE_BYTES,\n\t).text;\n}\n\nexport function visibleDeliveryIds(messages: readonly unknown[]): {\n\tmessageIds: Set<string>;\n\tcompletionIds: Set<string>;\n} {\n\tconst messageIds = new Set<string>();\n\tconst completionIds = new Set<string>();\n\tfor (const message of messages) {\n\t\tfor (const text of messageText(message)) {\n\t\t\tconst match = PEER_ENVELOPE_HEADER.exec(text);\n\t\t\tif (!match) continue;\n\t\t\tmessageIds.add(match[1]);\n\t\t\tif (match[2]) completionIds.add(match[2]);\n\t\t}\n\t}\n\treturn { messageIds, completionIds };\n}\n\nfunction messageText(message: unknown): string[] {\n\tif (!message || typeof message !== \"object\" || Array.isArray(message)) return [];\n\tconst candidate = message as Record<string, unknown>;\n\tif (candidate.role !== \"user\") return [];\n\tconst content = candidate.content;\n\tif (typeof content === \"string\") return [content];\n\tif (!Array.isArray(content)) return [];\n\treturn content.flatMap((part) => {\n\t\tif (!part || typeof part !== \"object\" || Array.isArray(part)) return [];\n\t\tconst text = (part as Record<string, unknown>).text;\n\t\treturn typeof text === \"string\" ? [text] : [];\n\t});\n}\n"],
5
+ "mappings": ";;;;;;;;;AAAA,SAAS,kBAAyC;AAClD,SAAS,YAAY;AAKrB,IAAM,yBAAyB,KAAK;AACpC,IAAM,+BAA+B;AACrC,IAAM,uBACL;AAQM,SAAS,yBAAyB,QAA2C;AACnF,SAAO,CAAC,OAAO;AACd,OAAG;AAAA,MACF,WAAW;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aACC;AAAA,QACD,eAAe;AAAA,QACf,YAAY,KAAK;AAAA,UAChB;AAAA,YACC,QAAQ,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,KAAM,CAAC;AAAA,YACtD,SAAS,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,uBAAuB,CAAC;AAAA,YACxE,kBAAkB,KAAK;AAAA,cACtB,KAAK,OAAO,EAAE,WAAW,GAAG,WAAW,6BAA6B,CAAC;AAAA,YACtE;AAAA,UACD;AAAA,UACA,EAAE,sBAAsB,MAAM;AAAA,QAC/B;AAAA,QACA,MAAM,QAAQ,KAAK,QAAQ;AAC1B,gBAAM,UAAU,MAAM,OAAO,KAAK,OAAO,QAAQ,OAAO,SAAS,OAAO,gBAAgB;AACxF,iBAAO;AAAA,YACN,SAAS;AAAA,cACR;AAAA,gBACC,MAAM;AAAA,gBACN,MAAM,UAAU,QAAQ,EAAE,QAAQ,QAAQ,WAAW;AAAA,cACtD;AAAA,YACD;AAAA,YACA,SAAS;AAAA,cACR,WAAW,QAAQ;AAAA,cACnB,aAAa,QAAQ;AAAA,cACrB,WAAW,QAAQ;AAAA,YACpB;AAAA,UACD;AAAA,QACD;AAAA,MACD,CAAC;AAAA,IACF;AACA,OAAG;AAAA,MACF,WAAW;AAAA,QACV,MAAM;AAAA,QACN,OAAO;AAAA,QACP,aACC;AAAA,QACD,eAAe;AAAA,QACf,YAAY,KAAK,OAAO,CAAC,GAAG,EAAE,sBAAsB,MAAM,CAAC;AAAA,QAC3D,MAAM,UAAU;AACf,gBAAM,QAAQ,MAAM,OAAO,KAAK;AAChC,gBAAM,OAAO,aAAa,KAAK,UAAU,OAAO,MAAM,CAAC,GAAG,sBAAsB,EAAE;AAClF,iBAAO,EAAE,SAAS,CAAC,EAAE,MAAM,QAAiB,KAAK,CAAC,GAAG,SAAS,EAAE,MAAM,EAAE;AAAA,QACzE;AAAA,MACD,CAAC;AAAA,IACF;AAEA,UAAM,yBAAyB,oBAAI,IAAY;AAC/C,UAAM,4BAA4B,oBAAI,IAAY;AAClD,OAAG,GAAG,WAAW,OAAO,UAAU;AACjC,YAAM,UAAU,mBAAmB,MAAM,QAAQ;AACjD,YAAM,aAAa,CAAC,GAAG,QAAQ,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,uBAAuB,IAAI,EAAE,CAAC;AACzF,YAAM,gBAAgB,CAAC,GAAG,QAAQ,aAAa,EAAE;AAAA,QAChD,CAAC,OAAO,CAAC,0BAA0B,IAAI,EAAE;AAAA,MAC1C;AACA,UAAI,WAAW,WAAW,KAAK,cAAc,WAAW,EAAG;AAC3D,YAAM,OAAO,YAAY,YAAY,aAAa;AAClD,iBAAW,MAAM,WAAY,wBAAuB,IAAI,EAAE;AAC1D,iBAAW,MAAM,cAAe,2BAA0B,IAAI,EAAE;AAAA,IACjE,CAAC;AAAA,EACF;AACD;AAEO,SAAS,kBAAkB,SAA8B,YAA6B;AAC5F,SAAO;AAAA,IACN;AAAA,MACC,iBAAiB,QAAQ,eAAe,wBAAwB,uBAAuB;AAAA,MACvF;AAAA,MACA,eAAe,QAAQ,EAAE;AAAA,MACzB,GAAI,QAAQ,eAAe,CAAC,kBAAkB,QAAQ,YAAY,EAAE,IAAI,CAAC;AAAA,MACzE,cAAc,QAAQ,QAAQ;AAAA,MAC9B,GAAI,aAAa,CAAC,gBAAgB,UAAU,EAAE,IAAI,CAAC;AAAA,MACnD;AAAA,MACA,kBAAkB,QAAQ,OAAO;AAAA,IAClC,EAAE,KAAK,IAAI;AAAA,IACX;AAAA,EACD,EAAE;AACH;AAEO,SAAS,mBAAmB,UAGjC;AACD,QAAM,aAAa,oBAAI,IAAY;AACnC,QAAM,gBAAgB,oBAAI,IAAY;AACtC,aAAW,WAAW,UAAU;AAC/B,eAAW,QAAQ,YAAY,OAAO,GAAG;AACxC,YAAM,QAAQ,qBAAqB,KAAK,IAAI;AAC5C,UAAI,CAAC,MAAO;AACZ,iBAAW,IAAI,MAAM,CAAC,CAAC;AACvB,UAAI,MAAM,CAAC,EAAG,eAAc,IAAI,MAAM,CAAC,CAAC;AAAA,IACzC;AAAA,EACD;AACA,SAAO,EAAE,YAAY,cAAc;AACpC;AAEA,SAAS,YAAY,SAA4B;AAChD,MAAI,CAAC,WAAW,OAAO,YAAY,YAAY,MAAM,QAAQ,OAAO,EAAG,QAAO,CAAC;AAC/E,QAAM,YAAY;AAClB,MAAI,UAAU,SAAS,OAAQ,QAAO,CAAC;AACvC,QAAM,UAAU,UAAU;AAC1B,MAAI,OAAO,YAAY,SAAU,QAAO,CAAC,OAAO;AAChD,MAAI,CAAC,MAAM,QAAQ,OAAO,EAAG,QAAO,CAAC;AACrC,SAAO,QAAQ,QAAQ,CAAC,SAAS;AAChC,QAAI,CAAC,QAAQ,OAAO,SAAS,YAAY,MAAM,QAAQ,IAAI,EAAG,QAAO,CAAC;AACtE,UAAM,OAAQ,KAAiC;AAC/C,WAAO,OAAO,SAAS,WAAW,CAAC,IAAI,IAAI,CAAC;AAAA,EAC7C,CAAC;AACF;",
6
6
  "names": []
7
7
  }
@@ -1,5 +1,9 @@
1
1
  // @generated by scripts/build-runtime.mjs; do not edit.
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
+ import {
4
+ MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH,
5
+ assertSpawnIdempotencyKey
6
+ } from "./chunk-S2IWVK3J.ts";
3
7
  import {
4
8
  assertCurrentSpawn,
5
9
  waitForOwnedSpawn
@@ -50,10 +54,6 @@ import {
50
54
  MAX_TOOL_MESSAGE_BYTES,
51
55
  truncateUtf8
52
56
  } from "./chunk-H3FP6DLR.ts";
53
- import {
54
- MAX_SPAWN_IDEMPOTENCY_KEY_LENGTH,
55
- assertSpawnIdempotencyKey
56
- } from "./chunk-S2IWVK3J.ts";
57
57
 
58
58
  // src/stateful-agent-view.ts
59
59
  function formatStatefulAgentLine(agent, now = Date.now()) {
@@ -547,7 +547,7 @@ function loadStatefulSessionModules() {
547
547
  import("./completion-delivery-YPOWSSV3.ts"),
548
548
  import("./peer-communication-KL36Z6CO.ts"),
549
549
  import("./context-QDKLVQXE.ts"),
550
- import("./create-stateful-transport-4WKZHRSI.ts"),
550
+ import("./create-stateful-transport-ZP3IXNV3.ts"),
551
551
  import("./cwd-policy-NB6XZ5GF.ts"),
552
552
  import("./persistence-VSGXAW4P.ts"),
553
553
  import("./registry-E6XPJB7L.ts"),
@@ -1540,4 +1540,4 @@ export {
1540
1540
  formatStatefulAgentLine,
1541
1541
  registerStatefulSubagents
1542
1542
  };
1543
- //# sourceMappingURL=chunk-F5YWVHQX.ts.map
1543
+ //# sourceMappingURL=chunk-CBP76ARQ.ts.map
@@ -2,9 +2,8 @@
2
2
  // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
3
  import {
4
4
  CHILD_PEER_TOOL_NAMES,
5
- createInProcessPeerExtension,
6
- formatPeerMessage
7
- } from "./chunk-EWWXFU7N.ts";
5
+ createInProcessPeerExtension
6
+ } from "./chunk-RY2AEGMZ.ts";
8
7
  import {
9
8
  resolvePiPromptResources
10
9
  } from "./chunk-G6VZTCFH.ts";
@@ -22,6 +21,9 @@ import {
22
21
  import {
23
22
  TurnBudgetMonitor
24
23
  } from "./chunk-ONDTY4EL.ts";
24
+ import {
25
+ formatPeerMessage
26
+ } from "./chunk-5DGRMKNV.ts";
25
27
  import {
26
28
  discoverAgents
27
29
  } from "./chunk-PSK43Y6A.ts";
@@ -732,4 +734,4 @@ export {
732
734
  seedChildSessionManager,
733
735
  buildCurrentTurnPrompt
734
736
  };
735
- //# sourceMappingURL=chunk-UVFVHIOP.ts.map
737
+ //# sourceMappingURL=chunk-H3BFJ7HJ.ts.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/in-process-transport.ts"],
4
4
  "sourcesContent": ["import type { Api, Model } from \"@earendil-works/pi-ai\";\nimport {\n\ttype AgentSessionServices,\n\tgetAgentDir,\n\ttype ModelRegistry,\n\ttype ModelRuntime,\n\tSessionManager,\n\tSettingsManager,\n} from \"@earendil-works/pi-coding-agent\";\nimport { discoverAgents } from \"./agents/discovery.js\";\nimport type { AgentConfig, SubagentThinkingLevel } from \"./agents/types.js\";\nimport { formatPeerMessage } from \"./child-peer-tools.js\";\nimport { redactPrivateText } from \"./context.js\";\nimport { appendDelegationContract } from \"./delegation-contract.js\";\nimport { resolveDefaultSubagentTimeoutMs } from \"./execution/runtime-policy.js\";\nimport { DEFAULT_MAX_CONTEXT_BYTES, DEFAULT_MAX_OUTPUT_BYTES, truncateUtf8 } from \"./limits.js\";\nimport {\n\tCHILD_PEER_TOOL_NAMES,\n\tcreateInProcessPeerExtension,\n\ttype PeerTransportRuntime,\n} from \"./peer-transport.js\";\nimport { resolvePiPromptResources } from \"./prompt-resources.js\";\nimport type { AgentMailboxMessage, AgentTurn, ManagedAgent, TurnOutcome } from \"./registry.js\";\nimport { appendResultInstruction } from \"./result-contract.js\";\nimport { safeTerminalLine } from \"./safe-text.js\";\nimport { readSubagentSettings } from \"./settings.js\";\nimport {\n\tformatTimeoutCheckpoint,\n\tformatTurnTerminationMessage,\n\tjournalMessages,\n\tTimeoutProgressJournal,\n\tTURN_TERMINATION_VERSION,\n\ttype TurnTerminationReport,\n} from \"./timeout-checkpoint.js\";\nimport {\n\tbuildTimeoutFinalizationPrompt,\n\tresolveTimeoutFinalizationMs,\n} from \"./timeout-finalization.js\";\nimport type { SubagentTransport } from \"./transport.js\";\nimport type { TransportProgressCallback, TransportTelemetry } from \"./transport-types.js\";\nimport { TurnBudgetMonitor, type TurnBudgetStop, type TurnLimits } from \"./turn-budget.js\";\n\nconst BUILT_IN_TOOL_NAMES = new Set([\"read\", \"bash\", \"edit\", \"write\", \"grep\", \"find\", \"ls\"]);\nconst DEFAULT_ABORT_GRACE_MS = 5_000;\n\ninterface ChildModelRuntime {\n\tgetModel(provider: string, modelId: string): Model<Api> | undefined;\n\tregisterProvider(provider: string, config: unknown): void;\n\tregisterNativeProvider?(provider: unknown): void;\n\tsetRuntimeApiKey(provider: string, apiKey: string): Promise<void> | void;\n}\n\ninterface CodingAgentRuntimeModule {\n\tcreateAgentSessionFromServices?: typeof import(\"@earendil-works/pi-coding-agent\").createAgentSessionFromServices;\n\tcreateAgentSessionServices?: typeof import(\"@earendil-works/pi-coding-agent\").createAgentSessionServices;\n\tresolveCliModel?: typeof import(\"@earendil-works/pi-coding-agent\").resolveCliModel;\n}\n\ninterface CoreModelSupport {\n\tmodelRuntime: ModelRuntime;\n\tresolveCliModel: typeof import(\"@earendil-works/pi-coding-agent\").resolveCliModel;\n}\n\ninterface CoreSessionSupport {\n\tcreateAgentSessionFromServices: typeof import(\"@earendil-works/pi-coding-agent\").createAgentSessionFromServices;\n\tcreateAgentSessionServices: typeof import(\"@earendil-works/pi-coding-agent\").createAgentSessionServices;\n\tresolveCliModel: typeof import(\"@earendil-works/pi-coding-agent\").resolveCliModel;\n}\n\ninterface RegisteredProviderRegistry {\n\tgetRegisteredProviderConfig?(provider: string): unknown;\n\tgetRegisteredProviderIds?(): readonly string[];\n\tgetRegisteredNativeProvider?(provider: string): unknown;\n}\n\nexport interface ParentRuntimeSnapshot {\n\tmodel: Model<Api> | undefined;\n\tthinkingLevel: SubagentThinkingLevel;\n}\n\nexport interface ChildSession {\n\treadonly sessionId: string;\n\treadonly messages: readonly unknown[];\n\treadonly provider?: string;\n\treadonly model?: string;\n\treadonly thinkingLevel?: SubagentThinkingLevel;\n\tprompt(text: string): Promise<void>;\n\tsteer?(text: string): Promise<void>;\n\tsubscribe(listener: (event: unknown) => void): () => void;\n\tabort(): Promise<void>;\n\tdispose(): void;\n\tgetActiveToolNames(): string[];\n}\n\nexport interface ChildSessionCreateOptions {\n\tagent: ManagedAgent;\n\tagentConfig: AgentConfig;\n\tcontext?: string;\n\thistory: AgentTurn[];\n\tmodelRegistry: ModelRegistry;\n\tparentRuntime: ParentRuntimeSnapshot;\n\ttools?: string[];\n\tpeerRuntime?: PeerTransportRuntime;\n}\n\nexport type ChildSessionFactory = (options: ChildSessionCreateOptions) => Promise<ChildSession>;\n\nexport interface InProcessTransportOptions {\n\tmodelRegistry: ModelRegistry;\n\tgetParentRuntime: () => ParentRuntimeSnapshot;\n\tcreateSession?: ChildSessionFactory;\n\tdiscoverAgent?: (agent: ManagedAgent) => AgentConfig | undefined;\n\tdefaultTimeoutMs?: number;\n\tabortGraceMs?: number;\n\ttimeoutFinalizationMs?: number;\n\tpeerRuntime?: PeerTransportRuntime;\n}\n\ninterface ChildSessionRecord {\n\tsession: ChildSession;\n\tunsubscribe: () => void;\n\tlastOutput: string;\n\tdisposed: boolean;\n}\n\ntype PromptSettlement =\n\t| { kind: \"completed\" }\n\t| { kind: \"failed\"; error: unknown }\n\t| { kind: \"timeout\" }\n\t| { kind: \"limit\"; stop: TurnBudgetStop }\n\t| { kind: \"aborted\" };\n\nexport class InProcessTransport implements SubagentTransport {\n\treadonly kind = \"in-process\" as const;\n\tprivate readonly sessions = new Map<string, ChildSessionRecord>();\n\tprivate readonly createSession: ChildSessionFactory;\n\tprivate readonly discoverAgent: (agent: ManagedAgent) => AgentConfig | undefined;\n\tprivate readonly defaultTimeoutMs: number;\n\tprivate readonly abortGraceMs: number;\n\n\tconstructor(private readonly options: InProcessTransportOptions) {\n\t\tthis.createSession = options.createSession ?? createSdkChildSession;\n\t\tthis.discoverAgent =\n\t\t\toptions.discoverAgent ??\n\t\t\t((agent) =>\n\t\t\t\tdiscoverAgents(agent.cwd, agent.agentScope ?? \"user\", readSubagentSettings()).agents.find(\n\t\t\t\t\t(candidate) => candidate.name === agent.agent,\n\t\t\t\t));\n\t\tthis.defaultTimeoutMs = options.defaultTimeoutMs ?? resolveDefaultSubagentTimeoutMs();\n\t\tthis.abortGraceMs = options.abortGraceMs ?? DEFAULT_ABORT_GRACE_MS;\n\t}\n\n\tasync runTurn(\n\t\tagent: ManagedAgent,\n\t\ttask: string,\n\t\tsignal: AbortSignal,\n\t\tonProgress?: TransportProgressCallback,\n\t): Promise<TurnOutcome> {\n\t\tconst startedAt = Date.now();\n\t\tlet telemetry: TransportTelemetry = {\n\t\t\ttransport: \"in-process\",\n\t\t\tphase: \"starting\",\n\t\t\tupdatedAt: startedAt,\n\t\t\ttiming: { startedAt, transportStartedAt: startedAt },\n\t\t};\n\t\tconst publish = (patch: Partial<TransportTelemetry>) => {\n\t\t\ttelemetry = {\n\t\t\t\t...telemetry,\n\t\t\t\t...patch,\n\t\t\t\ttiming: { ...telemetry.timing, ...patch.timing },\n\t\t\t\tupdatedAt: Date.now(),\n\t\t\t};\n\t\t\tonProgress?.({ ...telemetry, timing: { ...telemetry.timing } });\n\t\t};\n\t\tpublish({});\n\t\tif (signal.aborted) {\n\t\t\tpublish({ phase: \"interrupted\", failurePhase: \"starting\" });\n\t\t\treturn { ...interruptedOutcome(\"\"), telemetry };\n\t\t}\n\t\tconst agentConfig = this.discoverAgent(agent);\n\t\tif (!agentConfig) {\n\t\t\tpublish({ phase: \"failed\", failurePhase: \"starting\" });\n\t\t\treturn {\n\t\t\t\toutput: \"\",\n\t\t\t\texitCode: 1,\n\t\t\t\terror: `Unknown subagent: ${agent.agent}`,\n\t\t\t\ttelemetry,\n\t\t\t};\n\t\t}\n\t\tlet tools: string[] | undefined;\n\t\ttry {\n\t\t\ttools = validateInProcessTools(agent.executionPlan?.effectiveTools ?? agentConfig.tools);\n\t\t} catch (error) {\n\t\t\tpublish({ phase: \"failed\", failurePhase: \"starting\" });\n\t\t\treturn { output: \"\", exitCode: 1, error: errorMessage(error), telemetry };\n\t\t}\n\t\tlet record: ChildSessionRecord;\n\t\ttry {\n\t\t\trecord = await this.getOrCreate(agent, agentConfig, tools);\n\t\t} catch (error) {\n\t\t\tpublish({ phase: \"failed\", failurePhase: \"starting\" });\n\t\t\treturn { output: \"\", exitCode: 1, error: errorMessage(error), telemetry };\n\t\t}\n\t\tpublish({\n\t\t\tphase: \"ready\",\n\t\t\tprovider: record.session.provider,\n\t\t\tmodel: record.session.model,\n\t\t\tthinkingLevel: record.session.thinkingLevel,\n\t\t\ttiming: { readyAt: Date.now() },\n\t\t});\n\t\tif (signal.aborted) {\n\t\t\tawait this.releaseById(agent.id).catch(() => undefined);\n\t\t\tpublish({ phase: \"interrupted\", failurePhase: \"ready\" });\n\t\t\treturn { ...interruptedOutcome(\"\"), telemetry };\n\t\t}\n\t\tconst prompt = buildCurrentTurnPrompt(agent, task);\n\t\tconst timeoutMs =\n\t\t\tagent.currentTimeoutMs ?? agent.timeoutMs ?? agentConfig.timeoutMs ?? this.defaultTimeoutMs;\n\t\tconst startingMessageCount = record.session.messages.length;\n\t\trecord.lastOutput = \"\";\n\t\tpublish({ phase: \"running\", timing: { promptAcceptedAt: Date.now() } });\n\t\tconst settlement = await this.runPrompt(record, prompt, signal, timeoutMs, {\n\t\t\tidleTimeoutMs: agent.currentIdleTimeoutMs ?? agent.idleTimeoutMs,\n\t\t\tmaxTurns: agent.currentMaxTurns ?? agent.maxTurns,\n\t\t\tmaxToolCalls: agent.currentMaxToolCalls ?? agent.maxToolCalls,\n\t\t});\n\t\tconst final = latestAssistant(record.session.messages.slice(startingMessageCount));\n\t\tconst output = truncateUtf8(final.output || record.lastOutput, DEFAULT_MAX_OUTPUT_BYTES);\n\t\tconst truncated = output.truncated || agent.contextTruncated;\n\t\tconst policy = inProcessPolicy(agentConfig, agent);\n\t\tconst settledAt = Date.now();\n\t\tif (signal.aborted && (settlement.kind === \"timeout\" || settlement.kind === \"limit\")) {\n\t\t\tpublish({ phase: \"interrupted\", failurePhase: \"running\", timing: { settledAt } });\n\t\t\treturn {\n\t\t\t\t...interruptedOutcome(output.text),\n\t\t\t\ttruncated,\n\t\t\t\tpolicy,\n\t\t\t\ttelemetry,\n\t\t\t};\n\t\t}\n\n\t\tswitch (settlement.kind) {\n\t\t\tcase \"completed\":\n\t\t\t\tpublish({\n\t\t\t\t\tphase: final.stopReason === \"error\" ? \"failed\" : \"settled\",\n\t\t\t\t\ttiming: { settledAt },\n\t\t\t\t});\n\t\t\t\tif (final.stopReason === \"error\") {\n\t\t\t\t\treturn {\n\t\t\t\t\t\toutput: output.text,\n\t\t\t\t\t\texitCode: 1,\n\t\t\t\t\t\ttruncated,\n\t\t\t\t\t\terror: final.error || \"In-process subagent returned an error\",\n\t\t\t\t\t\tpolicy,\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (final.stopReason === \"aborted\") {\n\t\t\t\t\tpublish({ phase: \"interrupted\", failurePhase: \"running\" });\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...interruptedOutcome(output.text),\n\t\t\t\t\t\ttruncated,\n\t\t\t\t\t\tpolicy,\n\t\t\t\t\t\ttelemetry,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\toutput: output.text,\n\t\t\t\t\texitCode: 0,\n\t\t\t\t\ttruncated,\n\t\t\t\t\tpolicy,\n\t\t\t\t\ttelemetry,\n\t\t\t\t};\n\t\t\tcase \"failed\":\n\t\t\t\tpublish({ phase: \"failed\", failurePhase: \"running\", timing: { settledAt } });\n\t\t\t\treturn {\n\t\t\t\t\toutput: output.text,\n\t\t\t\t\texitCode: 1,\n\t\t\t\t\ttruncated,\n\t\t\t\t\terror: errorMessage(settlement.error),\n\t\t\t\t\tpolicy,\n\t\t\t\t\ttelemetry,\n\t\t\t\t};\n\t\t\tcase \"timeout\":\n\t\t\tcase \"limit\": {\n\t\t\t\tconst stop =\n\t\t\t\t\tsettlement.kind === \"limit\"\n\t\t\t\t\t\t? settlement.stop\n\t\t\t\t\t\t: ({ reason: \"work_timeout\", limit: timeoutMs } as const);\n\t\t\t\tconst journal = new TimeoutProgressJournal();\n\t\t\t\tjournalMessages(journal, record.session.messages.slice(startingMessageCount));\n\t\t\t\tconst termination: TurnTerminationReport = {\n\t\t\t\t\tversion: TURN_TERMINATION_VERSION,\n\t\t\t\t\treason: stop.reason,\n\t\t\t\t\tlimit: stop.limit,\n\t\t\t\t\tcheckpoint: journal.checkpoint(task, output.text),\n\t\t\t\t\tfinalization: { attempted: false, status: \"skipped\", durationMs: 0 },\n\t\t\t\t};\n\t\t\t\tlet finalizedOutput = output.text || formatTimeoutCheckpoint(termination.checkpoint);\n\t\t\t\tlet finalizationError: string | undefined;\n\t\t\t\tif (!signal.aborted && this.sessions.get(agent.id) === record) {\n\t\t\t\t\tpublish({ phase: \"finalizing\", failurePhase: \"running\" });\n\t\t\t\t\tconst summaryStart = record.session.messages.length;\n\t\t\t\t\tconst finalizationStartedAt = Date.now();\n\t\t\t\t\trecord.lastOutput = \"\";\n\t\t\t\t\tconst summarySettlement = await this.runPrompt(\n\t\t\t\t\t\trecord,\n\t\t\t\t\t\tbuildTimeoutFinalizationPrompt({\n\t\t\t\t\t\t\ttask,\n\t\t\t\t\t\t\tpartialOutput: output.text,\n\t\t\t\t\t\t\tcheckpoint: termination.checkpoint,\n\t\t\t\t\t\t\tterminationReason: stop.reason,\n\t\t\t\t\t\t\tresultFormat: agent.resultFormat,\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tsignal,\n\t\t\t\t\t\tresolveTimeoutFinalizationMs(timeoutMs, this.options.timeoutFinalizationMs),\n\t\t\t\t\t);\n\t\t\t\t\tconst summary = latestAssistant(record.session.messages.slice(summaryStart));\n\t\t\t\t\tconst boundedSummary = truncateUtf8(\n\t\t\t\t\t\tsummary.output || record.lastOutput,\n\t\t\t\t\t\tDEFAULT_MAX_OUTPUT_BYTES,\n\t\t\t\t\t);\n\t\t\t\t\tif (\n\t\t\t\t\t\tsummarySettlement.kind === \"completed\" &&\n\t\t\t\t\t\tsummary.stopReason !== \"error\" &&\n\t\t\t\t\t\tboundedSummary.text.trim()\n\t\t\t\t\t) {\n\t\t\t\t\t\tfinalizedOutput = boundedSummary.text;\n\t\t\t\t\t\ttermination.finalization = {\n\t\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\t\tstatus: \"completed\",\n\t\t\t\t\t\t\tdurationMs: Date.now() - finalizationStartedAt,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfinalizationError =\n\t\t\t\t\t\t\tsummarySettlement.kind === \"failed\"\n\t\t\t\t\t\t\t\t? errorMessage(summarySettlement.error)\n\t\t\t\t\t\t\t\t: `timeout summary ${summarySettlement.kind}`;\n\t\t\t\t\t\ttermination.finalization = {\n\t\t\t\t\t\t\tattempted: true,\n\t\t\t\t\t\t\tstatus: summarySettlement.kind === \"timeout\" ? \"timed_out\" : \"failed\",\n\t\t\t\t\t\t\tdurationMs: Date.now() - finalizationStartedAt,\n\t\t\t\t\t\t\terror: finalizationError,\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpublish({ phase: \"failed\", failurePhase: \"running\", timing: { settledAt: Date.now() } });\n\t\t\t\treturn {\n\t\t\t\t\toutput: finalizedOutput,\n\t\t\t\t\texitCode: 124,\n\t\t\t\t\ttruncated,\n\t\t\t\t\terror: [\n\t\t\t\t\t\tformatTurnTerminationMessage(stop.reason, stop.limit, \"In-process subagent\"),\n\t\t\t\t\t\tfinalizationError,\n\t\t\t\t\t]\n\t\t\t\t\t\t.filter(Boolean)\n\t\t\t\t\t\t.join(\"; \"),\n\t\t\t\t\tpolicy,\n\t\t\t\t\ttermination,\n\t\t\t\t\ttelemetry,\n\t\t\t\t};\n\t\t\t}\n\t\t\tcase \"aborted\":\n\t\t\t\tpublish({ phase: \"interrupted\", failurePhase: \"running\", timing: { settledAt } });\n\t\t\t\treturn {\n\t\t\t\t\t...interruptedOutcome(output.text),\n\t\t\t\t\ttruncated,\n\t\t\t\t\tpolicy,\n\t\t\t\t\ttelemetry,\n\t\t\t\t};\n\t\t}\n\t}\n\n\tasync deliverMessage(agent: ManagedAgent, message: AgentMailboxMessage): Promise<boolean> {\n\t\tconst record = this.sessions.get(agent.id);\n\t\tif (!record || record.disposed || !record.session.steer) return false;\n\t\tawait record.session.steer(formatPeerMessage(message));\n\t\treturn true;\n\t}\n\n\tasync release(agent: ManagedAgent): Promise<void> {\n\t\tawait this.releaseById(agent.id);\n\t}\n\n\tasync shutdown(): Promise<void> {\n\t\tconst agentIds = [...this.sessions.keys()];\n\t\tconst results = await Promise.allSettled(agentIds.map((agentId) => this.releaseById(agentId)));\n\t\tconst failures = results.flatMap((result) =>\n\t\t\tresult.status === \"rejected\" ? [result.reason] : [],\n\t\t);\n\t\tif (failures.length > 0) {\n\t\t\tthrow new AggregateError(\n\t\t\t\tfailures,\n\t\t\t\t`Failed to dispose ${failures.length} in-process subagent session(s)`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async releaseById(agentId: string): Promise<void> {\n\t\tconst record = this.sessions.get(agentId);\n\t\tif (!record) return;\n\t\tthis.sessions.delete(agentId);\n\t\tthis.options.peerRuntime?.revoke(agentId);\n\t\tif (record.disposed) return;\n\t\trecord.disposed = true;\n\t\tconst failures: unknown[] = [];\n\t\ttry {\n\t\t\trecord.unsubscribe();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t\tif (record.session.messages.length > 0) {\n\t\t\tawait settleWithin(record.session.abort(), this.abortGraceMs);\n\t\t}\n\t\ttry {\n\t\t\trecord.session.dispose();\n\t\t} catch (error) {\n\t\t\tfailures.push(error);\n\t\t}\n\t\tif (failures.length > 0) {\n\t\t\tthrow new AggregateError(\n\t\t\t\tfailures,\n\t\t\t\t`Failed to release in-process subagent ${agentId}: ${failures.map(errorMessage).join(\"; \")}`,\n\t\t\t);\n\t\t}\n\t}\n\n\tprivate async getOrCreate(\n\t\tagent: ManagedAgent,\n\t\tagentConfig: AgentConfig,\n\t\ttools: string[] | undefined,\n\t): Promise<ChildSessionRecord> {\n\t\tconst existing = this.sessions.get(agent.id);\n\t\tif (existing) return existing;\n\t\tconst session = await this.createSession({\n\t\t\tagent,\n\t\t\tagentConfig,\n\t\t\tcontext: agent.context,\n\t\t\thistory: agent.history.map((turn) => ({ ...turn })),\n\t\t\tmodelRegistry: this.options.modelRegistry,\n\t\t\tparentRuntime: this.options.getParentRuntime(),\n\t\t\ttools,\n\t\t\tpeerRuntime: this.options.peerRuntime,\n\t\t});\n\t\tconst record: ChildSessionRecord = {\n\t\t\tsession,\n\t\t\tlastOutput: \"\",\n\t\t\tdisposed: false,\n\t\t\tunsubscribe: () => undefined,\n\t\t};\n\t\ttry {\n\t\t\trecord.unsubscribe = session.subscribe((event) => {\n\t\t\t\tconst message = eventMessage(event);\n\t\t\t\tif (!message) return;\n\t\t\t\tconst output = assistantText(message);\n\t\t\t\tif (output) record.lastOutput = truncateUtf8(output, DEFAULT_MAX_OUTPUT_BYTES).text;\n\t\t\t});\n\t\t} catch (error) {\n\t\t\trecord.disposed = true;\n\t\t\ttry {\n\t\t\t\tsession.dispose();\n\t\t\t} catch {\n\t\t\t\t// Preserve the subscription failure, which explains why creation was rejected.\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t\tthis.sessions.set(agent.id, record);\n\t\treturn record;\n\t}\n\n\tprivate async runPrompt(\n\t\trecord: ChildSessionRecord,\n\t\tprompt: string,\n\t\tsignal: AbortSignal,\n\t\ttimeoutMs: number,\n\t\tlimits: TurnLimits = {},\n\t): Promise<PromptSettlement> {\n\t\tif (signal.aborted) return { kind: \"aborted\" };\n\t\tlet timeout: NodeJS.Timeout | undefined;\n\t\tlet abortHandler: (() => void) | undefined;\n\t\tlet resolveLimit!: (settlement: PromptSettlement) => void;\n\t\tconst limitSettlement = new Promise<PromptSettlement>((resolve) => {\n\t\t\tresolveLimit = resolve;\n\t\t});\n\t\tconst monitor = new TurnBudgetMonitor({\n\t\t\t...limits,\n\t\t\tonExceeded: (stop) => resolveLimit({ kind: \"limit\", stop }),\n\t\t});\n\t\tconst unsubscribeBudget = record.session.subscribe((event) => {\n\t\t\tconst type = childEventType(event);\n\t\t\tif (type === \"tool_execution_end\") monitor.recordActivity();\n\t\t\tif (type !== \"message_end\") return;\n\t\t\tconst message = eventMessage(event);\n\t\t\tif (!message || typeof message !== \"object\" || Array.isArray(message)) return;\n\t\t\tconst value = message as Record<string, unknown>;\n\t\t\tif (value.role === \"toolResult\") {\n\t\t\t\tmonitor.recordActivity();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (value.role !== \"assistant\") return;\n\t\t\tmonitor.recordToolCalls(assistantToolCallCount(value.content));\n\t\t\tmonitor.recordAssistantTurn(\n\t\t\t\ttypeof value.stopReason === \"string\" ? value.stopReason : undefined,\n\t\t\t);\n\t\t});\n\t\tconst promptSettlement: Promise<PromptSettlement> = Promise.resolve()\n\t\t\t.then(() => {\n\t\t\t\tif (signal.aborted) throw new Error(\"In-process subagent prompt aborted before start\");\n\t\t\t\treturn record.session.prompt(prompt);\n\t\t\t})\n\t\t\t.then(() => ({ kind: \"completed\" as const }))\n\t\t\t.catch((error: unknown) => ({ kind: \"failed\" as const, error }));\n\t\tconst timeoutSettlement = new Promise<PromptSettlement>((resolve) => {\n\t\t\ttimeout = setTimeout(() => resolve({ kind: \"timeout\" }), timeoutMs);\n\t\t});\n\t\tconst abortSettlement = new Promise<PromptSettlement>((resolve) => {\n\t\t\tabortHandler = () => resolve({ kind: \"aborted\" });\n\t\t\tsignal.addEventListener(\"abort\", abortHandler, { once: true });\n\t\t\tif (signal.aborted) abortHandler();\n\t\t});\n\t\tconst settlement = await Promise.race([\n\t\t\tpromptSettlement,\n\t\t\ttimeoutSettlement,\n\t\t\tabortSettlement,\n\t\t\tlimitSettlement,\n\t\t]);\n\t\tif (timeout) clearTimeout(timeout);\n\t\tif (abortHandler) signal.removeEventListener(\"abort\", abortHandler);\n\t\ttry {\n\t\t\tunsubscribeBudget();\n\t\t} catch {\n\t\t\t// The owning record's unsubscribe/dispose path remains authoritative.\n\t\t}\n\t\tmonitor.dispose();\n\t\tif (\n\t\t\tsettlement.kind === \"timeout\" ||\n\t\t\tsettlement.kind === \"limit\" ||\n\t\t\tsettlement.kind === \"aborted\"\n\t\t) {\n\t\t\tconst [, settledAfterAbort] = await Promise.all([\n\t\t\t\tsettleWithin(record.session.abort(), this.abortGraceMs),\n\t\t\t\tcompletesWithin(promptSettlement, this.abortGraceMs),\n\t\t\t]);\n\t\t\tif (!settledAfterAbort) this.discardRecord(record);\n\t\t}\n\t\treturn settlement;\n\t}\n\n\tprivate discardRecord(record: ChildSessionRecord): void {\n\t\tfor (const [agentId, candidate] of this.sessions) {\n\t\t\tif (candidate === record) this.sessions.delete(agentId);\n\t\t}\n\t\tif (record.disposed) return;\n\t\trecord.disposed = true;\n\t\trecord.unsubscribe();\n\t\trecord.session.dispose();\n\t}\n}\n\nexport function validateInProcessTools(tools: string[] | undefined): string[] | undefined {\n\tif (tools === undefined) return undefined;\n\tconst unique = [...new Set(tools)];\n\tconst unsupported = unique.filter((tool) => !BUILT_IN_TOOL_NAMES.has(tool));\n\tif (unsupported.length > 0) {\n\t\tthrow new Error(\n\t\t\t`In-process subagents cannot load extension/custom tools: ${unsupported.map((tool) => safeTerminalLine(tool, 256)).join(\", \")}. Use stateful.transport \"subprocess\" for this agent.`,\n\t\t);\n\t}\n\treturn unique;\n}\n\nexport async function createSdkChildSession(\n\toptions: ChildSessionCreateOptions,\n): Promise<ChildSession> {\n\tconst agentDir = getAgentDir();\n\tconst projectTrusted =\n\t\toptions.agent.target?.trust.projectTrusted ??\n\t\t(options.agent.agentScope === \"project\" || options.agent.agentScope === \"both\");\n\tconst { services, support: coreSupport } = await prepareInProcessServices(\n\t\toptions.agent.cwd,\n\t\tagentDir,\n\t\toptions.agentConfig.systemPrompt,\n\t\tprojectTrusted,\n\t\toptions.peerRuntime\n\t\t\t? createInProcessPeerExtension(options.peerRuntime, options.agent.id)\n\t\t\t: undefined,\n\t);\n\tcopyRegisteredProviders(\n\t\toptions.modelRegistry as unknown as RegisteredProviderRegistry,\n\t\tservices.modelRuntime as unknown as ChildModelRuntime,\n\t);\n\tconst modelSupport: CoreModelSupport = {\n\t\tmodelRuntime: services.modelRuntime,\n\t\tresolveCliModel: coreSupport.resolveCliModel,\n\t};\n\tconst resolved = await resolveChildModel(options, modelSupport);\n\tawait transferChildModelAuth(options.modelRegistry, resolved.model, services.modelRuntime);\n\tconst model = resolved.model;\n\tconst sessionManager = SessionManager.inMemory(options.agent.cwd);\n\tseedChildSessionManager(sessionManager, options, model);\n\tconst selectedTools =\n\t\toptions.tools === undefined\n\t\t\t? undefined\n\t\t\t: options.peerRuntime\n\t\t\t\t? [...options.tools, ...CHILD_PEER_TOOL_NAMES]\n\t\t\t\t: options.tools;\n\tconst created = await coreSupport.createAgentSessionFromServices({\n\t\tservices,\n\t\tsessionManager,\n\t\tmodel,\n\t\tthinkingLevel: resolved.thinkingLevel,\n\t\ttools: selectedTools,\n\t\tnoTools: selectedTools?.length === 0 ? \"all\" : undefined,\n\t});\n\tconst session = created.session;\n\tif (selectedTools !== undefined) {\n\t\tconst active = session.getActiveToolNames();\n\t\tconst expected = [...selectedTools].sort();\n\t\tif (\n\t\t\tactive.length !== expected.length ||\n\t\t\t[...active].sort().some((name, index) => name !== expected[index])\n\t\t) {\n\t\t\tsession.dispose();\n\t\t\tthrow new Error(\n\t\t\t\t`In-process child activated an unexpected tool set (${active.join(\", \") || \"none\"}); use stateful.transport \"subprocess\".`,\n\t\t\t);\n\t\t}\n\t}\n\treturn {\n\t\tget sessionId() {\n\t\t\treturn session.sessionId;\n\t\t},\n\t\tget messages() {\n\t\t\treturn session.messages;\n\t\t},\n\t\tget provider() {\n\t\t\treturn session.model?.provider;\n\t\t},\n\t\tget model() {\n\t\t\treturn session.model?.id;\n\t\t},\n\t\tget thinkingLevel() {\n\t\t\treturn session.thinkingLevel;\n\t\t},\n\t\tprompt: (text) => session.prompt(text),\n\t\tsteer: (text) => session.steer(text),\n\t\tsubscribe: (listener) => session.subscribe((event) => listener(event)),\n\t\tabort: () => session.abort(),\n\t\tdispose: () => session.dispose(),\n\t\tgetActiveToolNames: () => session.getActiveToolNames(),\n\t};\n}\n\nasync function loadCoreSessionSupport(): Promise<CoreSessionSupport | undefined> {\n\tconst codingAgentModule = (await import(\n\t\t\"@earendil-works/pi-coding-agent\"\n\t)) as unknown as CodingAgentRuntimeModule;\n\tif (\n\t\t!codingAgentModule.createAgentSessionFromServices ||\n\t\t!codingAgentModule.createAgentSessionServices ||\n\t\t!codingAgentModule.resolveCliModel\n\t) {\n\t\treturn undefined;\n\t}\n\treturn {\n\t\tcreateAgentSessionFromServices: codingAgentModule.createAgentSessionFromServices,\n\t\tcreateAgentSessionServices: codingAgentModule.createAgentSessionServices,\n\t\tresolveCliModel: codingAgentModule.resolveCliModel,\n\t};\n}\n\nasync function transferChildModelAuth(\n\tmodelRegistry: ModelRegistry,\n\tmodel: Model<Api>,\n\tmodelRuntime: ModelRuntime,\n): Promise<void> {\n\tconst auth = await modelRegistry.getApiKeyAndHeaders(model);\n\tif (auth.ok && auth.apiKey) await modelRuntime.setRuntimeApiKey(model.provider, auth.apiKey);\n}\n\nexport function copyRegisteredProviders(\n\tregisteredProviders: RegisteredProviderRegistry,\n\tmodelRuntime: ChildModelRuntime,\n): void {\n\tfor (const provider of registeredProviders.getRegisteredProviderIds?.() ?? []) {\n\t\tconst config = registeredProviders.getRegisteredProviderConfig?.(provider);\n\t\tif (config !== undefined) {\n\t\t\tmodelRuntime.registerProvider(provider, config);\n\t\t\tcontinue;\n\t\t}\n\t\tconst nativeProvider = registeredProviders.getRegisteredNativeProvider?.(provider);\n\t\tif (nativeProvider) modelRuntime.registerNativeProvider?.(nativeProvider);\n\t}\n}\n\nexport async function resolveChildModel(\n\toptions: ChildSessionCreateOptions,\n\tsupport?: CoreModelSupport,\n): Promise<{\n\tmodel: Model<Api>;\n\tthinkingLevel: SubagentThinkingLevel;\n}> {\n\tif (!support) throw unsupportedInProcessCoreError();\n\tlet model = options.parentRuntime.model;\n\tlet modelThinkingLevel: SubagentThinkingLevel | undefined;\n\tif (options.agentConfig.model !== undefined) {\n\t\tconst requested = options.agentConfig.model.trim();\n\t\tif (!requested) throw new Error(\"In-process subagent model cannot be empty\");\n\t\tconst resolved = support.resolveCliModel({\n\t\t\tcliModel: requested,\n\t\t\tmodelRuntime: support.modelRuntime,\n\t\t});\n\t\tif (resolved.error) throw new Error(resolved.error);\n\t\tif (!resolved.model)\n\t\t\tthrow new Error(`Unable to resolve in-process subagent model ${requested}`);\n\t\tmodel = resolved.model;\n\t\tmodelThinkingLevel = resolved.thinkingLevel;\n\t}\n\tif (!model) model = options.modelRegistry.getAvailable()[0];\n\tif (!model)\n\t\tthrow new Error(\"No model with configured authentication is available for in-process subagent\");\n\tmodel = support.modelRuntime.getModel(model.provider, model.id) ?? model;\n\treturn {\n\t\tmodel,\n\t\tthinkingLevel:\n\t\t\toptions.agent.thinkingLevel ??\n\t\t\toptions.agentConfig.thinkingLevel ??\n\t\t\tmodelThinkingLevel ??\n\t\t\toptions.parentRuntime.thinkingLevel,\n\t};\n}\n\nfunction unsupportedInProcessCoreError(): Error {\n\treturn new Error(\n\t\t'In-process subagents require Pi core createAgentSessionServices, createAgentSessionFromServices, and resolveCliModel support; set stateful.transport to \"subprocess\".',\n\t);\n}\n\nasync function prepareInProcessServices(\n\tcwd: string,\n\tagentDir: string,\n\tagentSystemPrompt: string,\n\tprojectTrusted: boolean,\n\tpeerExtension?: import(\"@earendil-works/pi-coding-agent\").ExtensionFactory,\n): Promise<{ services: AgentSessionServices; support: CoreSessionSupport }> {\n\tconst promptResources = await resolvePiPromptResources(cwd, projectTrusted, agentDir);\n\tconst settingsManager = SettingsManager.create(cwd, agentDir, { projectTrusted });\n\tconst support = await loadCoreSessionSupport();\n\tif (!support) throw unsupportedInProcessCoreError();\n\tconst services = await support.createAgentSessionServices({\n\t\tcwd,\n\t\tagentDir,\n\t\tsettingsManager,\n\t\tresourceLoaderOptions: {\n\t\t\tnoExtensions: true,\n\t\t\t...(peerExtension ? { extensionFactories: [peerExtension] } : {}),\n\t\t\tappendSystemPrompt: [\n\t\t\t\t...promptResources.appendSystemPromptPaths,\n\t\t\t\t...(agentSystemPrompt.trim() ? [agentSystemPrompt] : []),\n\t\t\t],\n\t\t},\n\t});\n\treturn { services, support };\n}\n\nexport async function createInProcessServices(\n\tcwd: string,\n\tagentDir: string,\n\tagentSystemPrompt: string,\n\tprojectTrusted = false,\n): Promise<AgentSessionServices> {\n\treturn (await prepareInProcessServices(cwd, agentDir, agentSystemPrompt, projectTrusted))\n\t\t.services;\n}\n\nexport function seedChildSessionManager(\n\tsessionManager: SessionManager,\n\toptions: ChildSessionCreateOptions,\n\tmodel: Model<Api>,\n): void {\n\tlet timestamp = Date.now() - (options.history.length * 2 + 1);\n\tif (options.context?.trim()) {\n\t\tsessionManager.appendMessage({\n\t\t\trole: \"user\",\n\t\t\tcontent: `Parent context:\\n${redactPrivateText(options.context)}`,\n\t\t\ttimestamp: timestamp++,\n\t\t});\n\t}\n\tfor (const turn of options.history) {\n\t\tsessionManager.appendMessage({\n\t\t\trole: \"user\",\n\t\t\tcontent: redactPrivateText(turn.task),\n\t\t\ttimestamp: timestamp++,\n\t\t});\n\t\tsessionManager.appendMessage({\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [{ type: \"text\", text: redactPrivateText(turn.output) }],\n\t\t\tapi: model.api,\n\t\t\tprovider: model.provider,\n\t\t\tmodel: model.id,\n\t\t\tusage: {\n\t\t\t\tinput: 0,\n\t\t\t\toutput: 0,\n\t\t\t\tcacheRead: 0,\n\t\t\t\tcacheWrite: 0,\n\t\t\t\ttotalTokens: 0,\n\t\t\t\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n\t\t\t},\n\t\t\tstopReason: turn.exitCode === 0 ? \"stop\" : \"error\",\n\t\t\ttimestamp: timestamp++,\n\t\t});\n\t}\n}\n\nexport function buildCurrentTurnPrompt(agent: ManagedAgent, task: string): string {\n\tconst ids = new Set(agent.currentMailboxMessageIds ?? []);\n\tconst messages = agent.mailbox\n\t\t.filter((message) => ids.has(message.id))\n\t\t.slice(-20)\n\t\t.map((message) =>\n\t\t\tformatPeerMessage({ ...message, content: redactPrivateText(message.content) }),\n\t\t)\n\t\t.join(\"\\n\\n\");\n\tconst base = messages\n\t\t? `${redactPrivateText(task)}\\n\\nMailbox messages:\\n${messages}`\n\t\t: redactPrivateText(task);\n\tconst contracted = appendDelegationContract(base, agent.contract, DEFAULT_MAX_CONTEXT_BYTES);\n\treturn truncateUtf8(\n\t\tappendResultInstruction(contracted.text, agent.resultFormat),\n\t\tDEFAULT_MAX_CONTEXT_BYTES,\n\t).text;\n}\n\nfunction latestAssistant(messages: readonly unknown[]): {\n\toutput: string;\n\tstopReason?: string;\n\terror?: string;\n} {\n\tfor (let index = messages.length - 1; index >= 0; index--) {\n\t\tconst message = messages[index];\n\t\tif (!message || typeof message !== \"object\") continue;\n\t\tconst candidate = message as { role?: string; stopReason?: string; errorMessage?: string };\n\t\tif (candidate.role !== \"assistant\") continue;\n\t\treturn {\n\t\t\toutput: assistantText(message),\n\t\t\tstopReason: candidate.stopReason,\n\t\t\terror: candidate.errorMessage,\n\t\t};\n\t}\n\treturn { output: \"\" };\n}\n\nfunction childEventType(event: unknown): string | undefined {\n\tif (!event || typeof event !== \"object\" || Array.isArray(event)) return undefined;\n\tconst type = (event as { type?: unknown }).type;\n\treturn typeof type === \"string\" ? type : undefined;\n}\n\nfunction assistantToolCallCount(content: unknown): number {\n\tif (!Array.isArray(content)) return 0;\n\treturn content.filter(\n\t\t(part) =>\n\t\t\tpart &&\n\t\t\ttypeof part === \"object\" &&\n\t\t\t!Array.isArray(part) &&\n\t\t\t(part as { type?: unknown }).type === \"toolCall\",\n\t).length;\n}\n\nfunction eventMessage(event: unknown): unknown {\n\tif (!event || typeof event !== \"object\") return undefined;\n\tconst candidate = event as { type?: string; message?: unknown };\n\treturn candidate.type === \"message_update\" || candidate.type === \"message_end\"\n\t\t? candidate.message\n\t\t: undefined;\n}\n\nfunction assistantText(message: unknown): string {\n\tif (!message || typeof message !== \"object\") return \"\";\n\tconst content = (message as { content?: unknown }).content;\n\tif (typeof content === \"string\") return content;\n\tif (!Array.isArray(content)) return \"\";\n\treturn content\n\t\t.filter((part): part is { type: \"text\"; text: string } =>\n\t\t\tBoolean(\n\t\t\t\tpart &&\n\t\t\t\t\ttypeof part === \"object\" &&\n\t\t\t\t\t(part as { type?: unknown }).type === \"text\" &&\n\t\t\t\t\ttypeof (part as { text?: unknown }).text === \"string\",\n\t\t\t),\n\t\t)\n\t\t.map((part) => part.text)\n\t\t.join(\"\\n\");\n}\n\nfunction interruptedOutcome(output: string): TurnOutcome {\n\treturn { output, exitCode: 130, aborted: true, error: \"In-process subagent was aborted\" };\n}\n\nfunction inProcessPolicy(\n\tagentConfig: AgentConfig,\n\tmanagedAgent: ManagedAgent,\n): NonNullable<TurnOutcome[\"policy\"]> {\n\treturn {\n\t\tinherited: [\"modelRegistry\", \"authentication\", \"cwdResources\"],\n\t\toverridden: [\n\t\t\t...(agentConfig.model ? [\"model\"] : []),\n\t\t\t...(managedAgent.thinkingLevel || agentConfig.thinkingLevel ? [\"thinkingLevel\"] : []),\n\t\t\t...(agentConfig.tools ? [\"tools\"] : []),\n\t\t],\n\t\tunsupported: [\"approvalPolicy\", \"sandboxProfile\", \"providerHeaders\", \"extensionState\"],\n\t};\n}\n\nasync function settleWithin(promise: Promise<unknown>, timeoutMs: number): Promise<void> {\n\tawait completesWithin(\n\t\tpromise.catch(() => undefined),\n\t\ttimeoutMs,\n\t);\n}\n\nasync function completesWithin(promise: Promise<unknown>, timeoutMs: number): Promise<boolean> {\n\tlet timeout: NodeJS.Timeout | undefined;\n\ttry {\n\t\treturn await Promise.race([\n\t\t\tpromise.then(() => true),\n\t\t\tnew Promise<boolean>((resolve) => {\n\t\t\t\ttimeout = setTimeout(() => resolve(false), timeoutMs);\n\t\t\t}),\n\t\t]);\n\t} finally {\n\t\tif (timeout) clearTimeout(timeout);\n\t}\n}\n\nfunction errorMessage(error: unknown): string {\n\treturn truncateUtf8(\n\t\terror instanceof Error ? error.message : String(error),\n\t\tDEFAULT_MAX_OUTPUT_BYTES,\n\t).text;\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,34 @@
1
+ // @generated by scripts/build-runtime.mjs; do not edit.
2
+ // @ts-nocheck -- generated JavaScript uses a .ts extension for Pi's Jiti loader.
3
+ import {
4
+ createChildPeerExtension
5
+ } from "./chunk-5DGRMKNV.ts";
6
+
7
+ // src/peer-transport.ts
8
+ import { fileURLToPath } from "node:url";
9
+ var CHILD_PEER_TOOL_NAMES = ["subagent_peer_send", "subagent_peer_list"];
10
+ function createInProcessPeerExtension(runtime, agentId) {
11
+ return createChildPeerExtension({
12
+ send: (target, message, deduplicationKey) => runtime.send(agentId, target, message, deduplicationKey),
13
+ list: async () => runtime.list(agentId),
14
+ acknowledge: (messageIds, completionIds) => runtime.acknowledge(agentId, messageIds, completionIds)
15
+ });
16
+ }
17
+ function childPeerBridgePath() {
18
+ return fileURLToPath(new URL("./child-peer-bridge.ts", import.meta.url));
19
+ }
20
+ function peerBridgeEnvironment(credentials) {
21
+ return {
22
+ PI_SUBAGENT_PEER_HOST: credentials.host,
23
+ PI_SUBAGENT_PEER_PORT: String(credentials.port),
24
+ PI_SUBAGENT_PEER_TOKEN: credentials.token
25
+ };
26
+ }
27
+
28
+ export {
29
+ CHILD_PEER_TOOL_NAMES,
30
+ createInProcessPeerExtension,
31
+ childPeerBridgePath,
32
+ peerBridgeEnvironment
33
+ };
34
+ //# sourceMappingURL=chunk-RY2AEGMZ.ts.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/peer-transport.ts"],
4
+ "sourcesContent": ["import { fileURLToPath } from \"node:url\";\nimport type { ExtensionFactory } from \"@earendil-works/pi-coding-agent\";\nimport { createChildPeerExtension } from \"./child-peer-tools.js\";\nimport type { PeerBridgeCredentials, PeerDescriptor } from \"./peer-communication.js\";\nimport type { AgentMailboxMessage } from \"./registry.js\";\n\nexport const CHILD_PEER_TOOL_NAMES = [\"subagent_peer_send\", \"subagent_peer_list\"] as const;\n\nexport interface PeerTransportRuntime {\n\tsend(\n\t\tsenderId: string,\n\t\ttarget: string,\n\t\tmessage: string,\n\t\tdeduplicationKey?: string,\n\t): Promise<AgentMailboxMessage>;\n\tlist(senderId: string): PeerDescriptor[];\n\tacknowledge(\n\t\tagentId: string,\n\t\tmessageIds: readonly string[],\n\t\tcompletionIds?: readonly string[],\n\t): Promise<void>;\n\tissueCredentials(agentId: string, generation: number): Promise<PeerBridgeCredentials>;\n\trevoke(agentId: string): void;\n}\n\nexport function createInProcessPeerExtension(\n\truntime: PeerTransportRuntime,\n\tagentId: string,\n): ExtensionFactory {\n\treturn createChildPeerExtension({\n\t\tsend: (target, message, deduplicationKey) =>\n\t\t\truntime.send(agentId, target, message, deduplicationKey),\n\t\tlist: async () => runtime.list(agentId),\n\t\tacknowledge: (messageIds, completionIds) =>\n\t\t\truntime.acknowledge(agentId, messageIds, completionIds),\n\t});\n}\n\nexport function childPeerBridgePath(): string {\n\treturn fileURLToPath(new URL(\"./child-peer-bridge.ts\", import.meta.url));\n}\n\nexport function peerBridgeEnvironment(credentials: PeerBridgeCredentials): NodeJS.ProcessEnv {\n\treturn {\n\t\tPI_SUBAGENT_PEER_HOST: credentials.host,\n\t\tPI_SUBAGENT_PEER_PORT: String(credentials.port),\n\t\tPI_SUBAGENT_PEER_TOKEN: credentials.token,\n\t};\n}\n"],
5
+ "mappings": ";;;;;;;AAAA,SAAS,qBAAqB;AAMvB,IAAM,wBAAwB,CAAC,sBAAsB,oBAAoB;AAmBzE,SAAS,6BACf,SACA,SACmB;AACnB,SAAO,yBAAyB;AAAA,IAC/B,MAAM,CAAC,QAAQ,SAAS,qBACvB,QAAQ,KAAK,SAAS,QAAQ,SAAS,gBAAgB;AAAA,IACxD,MAAM,YAAY,QAAQ,KAAK,OAAO;AAAA,IACtC,aAAa,CAAC,YAAY,kBACzB,QAAQ,YAAY,SAAS,YAAY,aAAa;AAAA,EACxD,CAAC;AACF;AAEO,SAAS,sBAA8B;AAC7C,SAAO,cAAc,IAAI,IAAI,0BAA0B,YAAY,GAAG,CAAC;AACxE;AAEO,SAAS,sBAAsB,aAAuD;AAC5F,SAAO;AAAA,IACN,uBAAuB,YAAY;AAAA,IACnC,uBAAuB,OAAO,YAAY,IAAI;AAAA,IAC9C,wBAAwB,YAAY;AAAA,EACrC;AACD;",
6
+ "names": []
7
+ }
@@ -372,7 +372,7 @@ function safeNumber(value) {
372
372
  // src/consult-registration.ts
373
373
  function registerSubagentConsult(pi, options, dependencies = {}) {
374
374
  const loadExecution = cachedModuleLoader(
375
- dependencies.loadExecution ?? (() => import("./consult-NYXVDN5G.ts"))
375
+ dependencies.loadExecution ?? (() => import("./consult-IV7UBNQQ.ts"))
376
376
  );
377
377
  let generation = 0;
378
378
  const active = /* @__PURE__ */ new Set();
@@ -487,4 +487,4 @@ export {
487
487
  SubagentConsultParams,
488
488
  registerSubagentConsult
489
489
  };
490
- //# sourceMappingURL=chunk-RHRQMT7Q.ts.map
490
+ //# sourceMappingURL=chunk-YBUWBRF7.ts.map
@@ -328,7 +328,7 @@ function stringList(value) {
328
328
  // src/inspect-registration.ts
329
329
  function registerSubagentInspect(pi, runtime, dependencies = {}) {
330
330
  const loadExecution = cachedModuleLoader(
331
- dependencies.loadExecution ?? (() => import("./inspect-UOQQ3KNL.ts"))
331
+ dependencies.loadExecution ?? (() => import("./inspect-XV2QALMR.ts"))
332
332
  );
333
333
  let lifecycleGeneration = 0;
334
334
  pi.on("session_start", () => {
@@ -377,4 +377,4 @@ export {
377
377
  SubagentInspectParams,
378
378
  registerSubagentInspect
379
379
  };
380
- //# sourceMappingURL=chunk-F4L2UVSK.ts.map
380
+ //# sourceMappingURL=chunk-ZHTNCZIA.ts.map
@@ -3,7 +3,8 @@
3
3
  import "./chunk-SCZ33MYW.ts";
4
4
  import {
5
5
  formatStatefulAgentLine
6
- } from "./chunk-F5YWVHQX.ts";
6
+ } from "./chunk-CBP76ARQ.ts";
7
+ import "./chunk-S2IWVK3J.ts";
7
8
  import "./chunk-P7OH4XMF.ts";
8
9
  import "./chunk-N7BLVXKK.ts";
9
10
  import "./chunk-ONDTY4EL.ts";
@@ -72,7 +73,6 @@ import {
72
73
  MAX_SUBAGENT_TIMEOUT_MS
73
74
  } from "./chunk-H3FP6DLR.ts";
74
75
  import "./chunk-RRR66UWR.ts";
75
- import "./chunk-S2IWVK3J.ts";
76
76
 
77
77
  // src/execution-ui.ts
78
78
  function executionAgentPickerScreen(agents) {
@@ -1143,4 +1143,4 @@ export {
1143
1143
  showSubagentManager,
1144
1144
  showSubagentSettings
1145
1145
  };
1146
- //# sourceMappingURL=config-ui-3IBMHTQB.ts.map
1146
+ //# sourceMappingURL=config-ui-2YUCUEBM.ts.map
@@ -22,14 +22,14 @@ import {
22
22
  DEFAULT_AGENT_CATALOG_MAX_ITEMS,
23
23
  SubagentConsultParams,
24
24
  registerSubagentConsult
25
- } from "./chunk-RHRQMT7Q.ts";
25
+ } from "./chunk-YBUWBRF7.ts";
26
+ import "./chunk-HOP5FXDT.ts";
26
27
  import {
27
28
  getResultFinalOutput,
28
29
  isResultError
29
30
  } from "./chunk-AEUYS7JC.ts";
30
31
  import "./chunk-RTCVYIZA.ts";
31
32
  import "./chunk-ONDTY4EL.ts";
32
- import "./chunk-HOP5FXDT.ts";
33
33
  import {
34
34
  discoverAgents
35
35
  } from "./chunk-PSK43Y6A.ts";
@@ -515,4 +515,4 @@ export {
515
515
  executeSubagentConsult,
516
516
  registerSubagentConsult
517
517
  };
518
- //# sourceMappingURL=consult-NYXVDN5G.ts.map
518
+ //# sourceMappingURL=consult-IV7UBNQQ.ts.map
@@ -77,7 +77,7 @@ var LazyStatefulTransport = class {
77
77
  };
78
78
  async function loadStatefulTransport(options) {
79
79
  const subprocess = async () => {
80
- const { SubprocessTransport } = await import("./subprocess-transport-C2XVR25R.ts");
80
+ const { SubprocessTransport } = await import("./subprocess-transport-NSHOGDC4.ts");
81
81
  return new SubprocessTransport({
82
82
  getSettings: options.getSettings,
83
83
  peerRuntime: options.peerRuntime
@@ -86,7 +86,7 @@ async function loadStatefulTransport(options) {
86
86
  const inProcess = async () => {
87
87
  const [{ discoverAgents }, { InProcessTransport }] = await Promise.all([
88
88
  import("./discovery-K25T3SH4.ts"),
89
- import("./in-process-transport-TEYAWSEC.ts")
89
+ import("./in-process-transport-4RF3J6XK.ts")
90
90
  ]);
91
91
  return new InProcessTransport({
92
92
  modelRegistry: options.modelRegistry,
@@ -99,7 +99,7 @@ async function loadStatefulTransport(options) {
99
99
  });
100
100
  };
101
101
  const rpc = async () => {
102
- const { RpcTransport } = await import("./rpc-transport-Y6LA5BOP.ts");
102
+ const { RpcTransport } = await import("./rpc-transport-NEHBHWX4.ts");
103
103
  return new RpcTransport({
104
104
  getSettings: options.getSettings,
105
105
  getParentRuntime: options.getParentRuntime,
@@ -127,4 +127,4 @@ async function loadStatefulTransport(options) {
127
127
  export {
128
128
  createStatefulTransport
129
129
  };
130
- //# sourceMappingURL=create-stateful-transport-4WKZHRSI.ts.map
130
+ //# sourceMappingURL=create-stateful-transport-ZP3IXNV3.ts.map