@narumitw/pi-subagents 2.0.1 → 2.0.3

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 (148) hide show
  1. package/README.md +20 -7
  2. package/dist/chunks/auto-transport-SY2VHUFH.ts +109 -0
  3. package/dist/chunks/auto-transport-SY2VHUFH.ts.map +7 -0
  4. package/dist/chunks/capability-grant-CGEWOEKE.ts +19 -0
  5. package/dist/chunks/capability-grant-CGEWOEKE.ts.map +7 -0
  6. package/dist/chunks/chunk-434NII74.ts +282 -0
  7. package/dist/chunks/chunk-434NII74.ts.map +7 -0
  8. package/dist/chunks/chunk-47SK2QYC.ts +56 -0
  9. package/dist/chunks/chunk-47SK2QYC.ts.map +7 -0
  10. package/dist/chunks/chunk-6KJ34M6S.ts +159 -0
  11. package/dist/chunks/chunk-6KJ34M6S.ts.map +7 -0
  12. package/dist/chunks/chunk-7OBINKFM.ts +80 -0
  13. package/dist/chunks/chunk-7OBINKFM.ts.map +7 -0
  14. package/dist/chunks/chunk-7QPPBBXZ.ts +335 -0
  15. package/dist/chunks/chunk-7QPPBBXZ.ts.map +7 -0
  16. package/dist/chunks/chunk-AEUYS7JC.ts +73 -0
  17. package/dist/chunks/chunk-AEUYS7JC.ts.map +7 -0
  18. package/dist/chunks/chunk-BFK2Z4ZF.ts +189 -0
  19. package/dist/chunks/chunk-BFK2Z4ZF.ts.map +7 -0
  20. package/dist/chunks/chunk-BOAXY55Y.ts +153 -0
  21. package/dist/chunks/chunk-BOAXY55Y.ts.map +7 -0
  22. package/dist/chunks/chunk-C4L6P266.ts +22 -0
  23. package/dist/chunks/chunk-C4L6P266.ts.map +7 -0
  24. package/dist/chunks/chunk-DPPVEQAM.ts +29 -0
  25. package/dist/chunks/chunk-DPPVEQAM.ts.map +7 -0
  26. package/dist/chunks/chunk-DQMN4OYM.ts +913 -0
  27. package/dist/chunks/chunk-DQMN4OYM.ts.map +7 -0
  28. package/dist/chunks/chunk-DSOOH73Y.ts +238 -0
  29. package/dist/chunks/chunk-DSOOH73Y.ts.map +7 -0
  30. package/dist/chunks/chunk-EFBPISNT.ts +421 -0
  31. package/dist/chunks/chunk-EFBPISNT.ts.map +7 -0
  32. package/dist/chunks/chunk-EWWXFU7N.ts +150 -0
  33. package/dist/chunks/chunk-EWWXFU7N.ts.map +7 -0
  34. package/dist/chunks/chunk-F4L2UVSK.ts +380 -0
  35. package/dist/chunks/chunk-F4L2UVSK.ts.map +7 -0
  36. package/dist/chunks/chunk-F5YWVHQX.ts +1543 -0
  37. package/dist/chunks/chunk-F5YWVHQX.ts.map +7 -0
  38. package/dist/chunks/chunk-G3RSMSXJ.ts +63 -0
  39. package/dist/chunks/chunk-G3RSMSXJ.ts.map +7 -0
  40. package/dist/chunks/chunk-G6VZTCFH.ts +70 -0
  41. package/dist/chunks/chunk-G6VZTCFH.ts.map +7 -0
  42. package/dist/chunks/chunk-H3FP6DLR.ts +160 -0
  43. package/dist/chunks/chunk-H3FP6DLR.ts.map +7 -0
  44. package/dist/chunks/chunk-HA36LPCO.ts +130 -0
  45. package/dist/chunks/chunk-HA36LPCO.ts.map +7 -0
  46. package/dist/chunks/chunk-HKC4ES4B.ts +65 -0
  47. package/dist/chunks/chunk-HKC4ES4B.ts.map +7 -0
  48. package/dist/chunks/chunk-HOP5FXDT.ts +27 -0
  49. package/dist/chunks/chunk-HOP5FXDT.ts.map +7 -0
  50. package/dist/chunks/chunk-I2FAK44T.ts +324 -0
  51. package/dist/chunks/chunk-I2FAK44T.ts.map +7 -0
  52. package/dist/chunks/chunk-IGAMVWFN.ts +139 -0
  53. package/dist/chunks/chunk-IGAMVWFN.ts.map +7 -0
  54. package/dist/chunks/chunk-KMGKCEO4.ts +38 -0
  55. package/dist/chunks/chunk-KMGKCEO4.ts.map +7 -0
  56. package/dist/chunks/chunk-N7BLVXKK.ts +73 -0
  57. package/dist/chunks/chunk-N7BLVXKK.ts.map +7 -0
  58. package/dist/chunks/chunk-NIF42QMF.ts +297 -0
  59. package/dist/chunks/chunk-NIF42QMF.ts.map +7 -0
  60. package/dist/chunks/chunk-O4VO6JUJ.ts +52 -0
  61. package/dist/chunks/chunk-O4VO6JUJ.ts.map +7 -0
  62. package/dist/chunks/chunk-ONDTY4EL.ts +91 -0
  63. package/dist/chunks/chunk-ONDTY4EL.ts.map +7 -0
  64. package/dist/chunks/chunk-OVPHFGKO.ts +1769 -0
  65. package/dist/chunks/chunk-OVPHFGKO.ts.map +7 -0
  66. package/dist/chunks/chunk-P7OH4XMF.ts +60 -0
  67. package/dist/chunks/chunk-P7OH4XMF.ts.map +7 -0
  68. package/dist/chunks/chunk-PSK43Y6A.ts +339 -0
  69. package/dist/chunks/chunk-PSK43Y6A.ts.map +7 -0
  70. package/dist/chunks/chunk-QBORTI4W.ts +468 -0
  71. package/dist/chunks/chunk-QBORTI4W.ts.map +7 -0
  72. package/dist/chunks/chunk-QDVGH2X7.ts +171 -0
  73. package/dist/chunks/chunk-QDVGH2X7.ts.map +7 -0
  74. package/dist/chunks/chunk-RHRQMT7Q.ts +490 -0
  75. package/dist/chunks/chunk-RHRQMT7Q.ts.map +7 -0
  76. package/dist/chunks/chunk-RRR66UWR.ts +28 -0
  77. package/dist/chunks/chunk-RRR66UWR.ts.map +7 -0
  78. package/dist/chunks/chunk-RSUXZD6S.ts +275 -0
  79. package/dist/chunks/chunk-RSUXZD6S.ts.map +7 -0
  80. package/dist/chunks/chunk-RTCVYIZA.ts +221 -0
  81. package/dist/chunks/chunk-RTCVYIZA.ts.map +7 -0
  82. package/dist/chunks/chunk-S2IWVK3J.ts +44 -0
  83. package/dist/chunks/chunk-S2IWVK3J.ts.map +7 -0
  84. package/dist/chunks/chunk-SCZ33MYW.ts +52 -0
  85. package/dist/chunks/chunk-SCZ33MYW.ts.map +7 -0
  86. package/dist/chunks/chunk-SWGQLFSD.ts +60 -0
  87. package/dist/chunks/chunk-SWGQLFSD.ts.map +7 -0
  88. package/dist/chunks/chunk-UMBPMVJW.ts +22 -0
  89. package/dist/chunks/chunk-UMBPMVJW.ts.map +7 -0
  90. package/dist/chunks/chunk-UVFVHIOP.ts +735 -0
  91. package/dist/chunks/chunk-UVFVHIOP.ts.map +7 -0
  92. package/dist/chunks/completion-delivery-YPOWSSV3.ts +16 -0
  93. package/dist/chunks/completion-delivery-YPOWSSV3.ts.map +7 -0
  94. package/dist/chunks/config-status-J4GPWP46.ts +34 -0
  95. package/dist/chunks/config-status-J4GPWP46.ts.map +7 -0
  96. package/dist/chunks/config-ui-3IBMHTQB.ts +1146 -0
  97. package/dist/chunks/config-ui-3IBMHTQB.ts.map +7 -0
  98. package/dist/chunks/consult-NYXVDN5G.ts +518 -0
  99. package/dist/chunks/consult-NYXVDN5G.ts.map +7 -0
  100. package/dist/chunks/context-QDKLVQXE.ts +11 -0
  101. package/dist/chunks/context-QDKLVQXE.ts.map +7 -0
  102. package/dist/chunks/create-stateful-transport-4WKZHRSI.ts +130 -0
  103. package/dist/chunks/create-stateful-transport-4WKZHRSI.ts.map +7 -0
  104. package/dist/chunks/cwd-policy-NB6XZ5GF.ts +17 -0
  105. package/dist/chunks/cwd-policy-NB6XZ5GF.ts.map +7 -0
  106. package/dist/chunks/delegation-contract-WJPT4FVS.ts +24 -0
  107. package/dist/chunks/delegation-contract-WJPT4FVS.ts.map +7 -0
  108. package/dist/chunks/discovery-K25T3SH4.ts +12 -0
  109. package/dist/chunks/discovery-K25T3SH4.ts.map +7 -0
  110. package/dist/chunks/execution-DS2DEIQZ.ts +4034 -0
  111. package/dist/chunks/execution-DS2DEIQZ.ts.map +7 -0
  112. package/dist/chunks/in-process-transport-TEYAWSEC.ts +38 -0
  113. package/dist/chunks/in-process-transport-TEYAWSEC.ts.map +7 -0
  114. package/dist/chunks/inspect-UOQQ3KNL.ts +619 -0
  115. package/dist/chunks/inspect-UOQQ3KNL.ts.map +7 -0
  116. package/dist/chunks/peer-communication-KL36Z6CO.ts +294 -0
  117. package/dist/chunks/peer-communication-KL36Z6CO.ts.map +7 -0
  118. package/dist/chunks/persistence-VSGXAW4P.ts +344 -0
  119. package/dist/chunks/persistence-VSGXAW4P.ts.map +7 -0
  120. package/dist/chunks/registry-E6XPJB7L.ts +1324 -0
  121. package/dist/chunks/registry-E6XPJB7L.ts.map +7 -0
  122. package/dist/chunks/retained-semantic-state-7WXSGRJU.ts +81 -0
  123. package/dist/chunks/retained-semantic-state-7WXSGRJU.ts.map +7 -0
  124. package/dist/chunks/rpc-transport-Y6LA5BOP.ts +1154 -0
  125. package/dist/chunks/rpc-transport-Y6LA5BOP.ts.map +7 -0
  126. package/dist/chunks/runtime-policy-5YELCOVC.ts +15 -0
  127. package/dist/chunks/runtime-policy-5YELCOVC.ts.map +7 -0
  128. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts +19 -0
  129. package/dist/chunks/semantic-snapshot-WPJ3UAFW.ts.map +7 -0
  130. package/dist/chunks/spawn-idempotency-QGHO2WKC.ts +13 -0
  131. package/dist/chunks/spawn-idempotency-QGHO2WKC.ts.map +7 -0
  132. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts +15 -0
  133. package/dist/chunks/stateful-lifecycle-JAR6K55H.ts.map +7 -0
  134. package/dist/chunks/subprocess-transport-C2XVR25R.ts +158 -0
  135. package/dist/chunks/subprocess-transport-C2XVR25R.ts.map +7 -0
  136. package/dist/chunks/workspace-WDKLN72J.ts +11 -0
  137. package/dist/chunks/workspace-WDKLN72J.ts.map +7 -0
  138. package/dist/index.ts +1057 -0
  139. package/dist/index.ts.map +7 -0
  140. package/package.json +9 -5
  141. package/src/index.ts +1 -1
  142. package/src/settings-reader.ts +208 -0
  143. package/src/settings.ts +22 -187
  144. package/src/stateful-registration.ts +1230 -0
  145. package/src/stateful-safety.ts +1 -1
  146. package/src/stateful.ts +2 -1234
  147. package/src/subagents-extension.ts +307 -0
  148. package/src/subagents.ts +1 -308
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/in-process-transport.ts"],
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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",
6
+ "names": []
7
+ }
@@ -0,0 +1,16 @@
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
+ CompletionDeliveryBroker,
5
+ buildDetachedCompletionMessage
6
+ } from "./chunk-434NII74.ts";
7
+ import "./chunk-C4L6P266.ts";
8
+ import "./chunk-QDVGH2X7.ts";
9
+ import "./chunk-BFK2Z4ZF.ts";
10
+ import "./chunk-SWGQLFSD.ts";
11
+ import "./chunk-H3FP6DLR.ts";
12
+ export {
13
+ CompletionDeliveryBroker,
14
+ buildDetachedCompletionMessage
15
+ };
16
+ //# sourceMappingURL=completion-delivery-YPOWSSV3.ts.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
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
+ completionLabel,
5
+ consultResourceLabel,
6
+ consultationCwdLabel,
7
+ currentWorkflow,
8
+ delegationCwdLabel,
9
+ formatManagerSummary,
10
+ helpLines,
11
+ showSubagentHelp,
12
+ showSubagentStatus,
13
+ statusLines
14
+ } from "./chunk-EFBPISNT.ts";
15
+ import "./chunk-KMGKCEO4.ts";
16
+ import "./chunk-7QPPBBXZ.ts";
17
+ import "./chunk-QBORTI4W.ts";
18
+ import "./chunk-7OBINKFM.ts";
19
+ import "./chunk-DPPVEQAM.ts";
20
+ import "./chunk-SWGQLFSD.ts";
21
+ import "./chunk-H3FP6DLR.ts";
22
+ export {
23
+ completionLabel,
24
+ consultResourceLabel,
25
+ consultationCwdLabel,
26
+ currentWorkflow,
27
+ delegationCwdLabel,
28
+ formatManagerSummary,
29
+ helpLines,
30
+ showSubagentHelp,
31
+ showSubagentStatus,
32
+ statusLines
33
+ };
34
+ //# sourceMappingURL=config-status-J4GPWP46.ts.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }