@cjhyy/code-shell-core 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. package/README.md +36 -23
  2. package/dist/agent/agent-definition-registry.d.ts +2 -2
  3. package/dist/agent/agent-definition-registry.js +47 -10
  4. package/dist/agent/agent-definition.d.ts +5 -0
  5. package/dist/agent/agent-definition.js +14 -0
  6. package/dist/automation/index.d.ts +7 -4
  7. package/dist/automation/index.js +4 -2
  8. package/dist/automation/runner.js +3 -1
  9. package/dist/automation/scheduler.d.ts +57 -1
  10. package/dist/automation/scheduler.js +123 -23
  11. package/dist/automation/store.d.ts +6 -2
  12. package/dist/automation/store.js +7 -3
  13. package/dist/capabilities/index.d.ts +109 -0
  14. package/dist/capabilities/index.js +80 -0
  15. package/dist/capability-control/disabled-lists.d.ts +2 -1
  16. package/dist/capability-control/disabled-lists.js +3 -5
  17. package/dist/capability-control/overlay.d.ts +14 -1
  18. package/dist/capability-control/overlay.js +40 -0
  19. package/dist/capability-control/service.js +6 -4
  20. package/dist/cli/agent-server-stdio.d.ts +1 -1
  21. package/dist/cli/agent-server-stdio.js +66 -6
  22. package/dist/cli/agent-server-tcp.js +7 -3
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +17 -1
  26. package/dist/context/manager.js +36 -1
  27. package/dist/credentials/access.d.ts +3 -1
  28. package/dist/credentials/access.js +24 -3
  29. package/dist/credentials/index.d.ts +1 -1
  30. package/dist/credentials/index.js +1 -1
  31. package/dist/credentials/oauth.d.ts +4 -1
  32. package/dist/credentials/oauth.js +14 -0
  33. package/dist/credentials/store.d.ts +15 -1
  34. package/dist/credentials/store.js +17 -4
  35. package/dist/credentials/types.d.ts +24 -0
  36. package/dist/credentials/use-credential-tool.js +15 -1
  37. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  38. package/dist/engine/auxiliary-pipeline.js +181 -0
  39. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  40. package/dist/{settings → engine}/disk-defaults.js +5 -2
  41. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  42. package/dist/engine/dynamic-tool-defs.js +4 -0
  43. package/dist/engine/engine.d.ts +254 -195
  44. package/dist/engine/engine.js +1812 -2041
  45. package/dist/engine/file-history-hook.d.ts +11 -0
  46. package/dist/engine/file-history-hook.js +31 -0
  47. package/dist/engine/goal-judge-context.d.ts +9 -0
  48. package/dist/engine/goal-judge-context.js +234 -0
  49. package/dist/engine/injected-context-cache.d.ts +6 -0
  50. package/dist/engine/injected-context-cache.js +13 -0
  51. package/dist/engine/input-attachments.d.ts +1 -1
  52. package/dist/engine/model-facade.d.ts +3 -3
  53. package/dist/engine/model-facade.js +15 -14
  54. package/dist/engine/permission-controller.d.ts +55 -0
  55. package/dist/engine/permission-controller.js +148 -0
  56. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  57. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  58. package/dist/engine/run-accounting.d.ts +41 -0
  59. package/dist/engine/run-accounting.js +126 -0
  60. package/dist/engine/run-context.d.ts +44 -0
  61. package/dist/engine/run-context.js +88 -0
  62. package/dist/engine/run-environment.d.ts +30 -0
  63. package/dist/engine/run-environment.js +77 -0
  64. package/dist/engine/run-finalize.d.ts +58 -0
  65. package/dist/engine/run-finalize.js +245 -0
  66. package/dist/engine/run-goal.d.ts +58 -0
  67. package/dist/engine/run-goal.js +188 -0
  68. package/dist/engine/run-image-input.d.ts +1 -1
  69. package/dist/engine/run-image-input.js +5 -3
  70. package/dist/engine/run-session-open.d.ts +41 -0
  71. package/dist/engine/run-session-open.js +186 -0
  72. package/dist/engine/run-setup.d.ts +42 -0
  73. package/dist/engine/run-setup.js +58 -0
  74. package/dist/engine/run-tooling.d.ts +125 -0
  75. package/dist/engine/run-tooling.js +283 -0
  76. package/dist/engine/run-types.d.ts +139 -0
  77. package/dist/engine/run-types.js +12 -0
  78. package/dist/engine/run-workspace.d.ts +50 -0
  79. package/dist/engine/run-workspace.js +114 -0
  80. package/dist/engine/steer-queue.d.ts +1 -1
  81. package/dist/engine/subagent-spawner.d.ts +32 -0
  82. package/dist/engine/subagent-spawner.js +287 -0
  83. package/dist/engine/tool-summary.d.ts +2 -2
  84. package/dist/engine/tool-summary.js +2 -2
  85. package/dist/engine/turn-loop.d.ts +49 -10
  86. package/dist/engine/turn-loop.js +370 -104
  87. package/dist/engine/types.d.ts +30 -3
  88. package/dist/engine/types.js +1 -1
  89. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +76 -4
  90. package/dist/goal/lifecycle.js +482 -0
  91. package/dist/hooks/events.d.ts +24 -10
  92. package/dist/hooks/goal-stop-hook.d.ts +17 -28
  93. package/dist/hooks/goal-stop-hook.js +110 -465
  94. package/dist/hooks/registry.js +1 -1
  95. package/dist/index.d.ts +48 -108
  96. package/dist/index.extension.d.ts +51 -0
  97. package/dist/index.extension.js +39 -0
  98. package/dist/index.internal.d.ts +86 -0
  99. package/dist/index.internal.js +92 -0
  100. package/dist/index.js +34 -123
  101. package/dist/links/cli.d.ts +48 -0
  102. package/dist/links/cli.js +617 -0
  103. package/dist/links/http.d.ts +40 -0
  104. package/dist/links/http.js +166 -0
  105. package/dist/links/index.d.ts +4 -0
  106. package/dist/links/index.js +3 -0
  107. package/dist/links/link-action-tool.d.ts +5 -0
  108. package/dist/links/link-action-tool.js +241 -0
  109. package/dist/links/providers.d.ts +8 -0
  110. package/dist/links/providers.js +665 -0
  111. package/dist/links/types.d.ts +44 -0
  112. package/dist/llm/client-base.d.ts +7 -0
  113. package/dist/llm/client-base.js +60 -0
  114. package/dist/llm/model-pool.d.ts +1 -1
  115. package/dist/llm/model-pool.js +1 -1
  116. package/dist/llm/providers/anthropic.d.ts +1 -0
  117. package/dist/llm/providers/anthropic.js +9 -0
  118. package/dist/llm/providers/openai.d.ts +1 -0
  119. package/dist/llm/providers/openai.js +17 -0
  120. package/dist/model-catalog/index.js +15 -2
  121. package/dist/model-catalog/resolve.d.ts +13 -1
  122. package/dist/model-catalog/resolve.js +37 -2
  123. package/dist/model-catalog/types.d.ts +74 -48
  124. package/dist/model-catalog/types.js +16 -5
  125. package/dist/model-catalog/upsert.d.ts +3 -1
  126. package/dist/model-catalog/upsert.js +9 -0
  127. package/dist/onboarding.d.ts +0 -1
  128. package/dist/onboarding.js +1 -22
  129. package/dist/panel-apps/bindings.d.ts +24 -0
  130. package/dist/panel-apps/bindings.js +69 -0
  131. package/dist/panel-apps/github-archive.d.ts +21 -0
  132. package/dist/panel-apps/github-archive.js +98 -0
  133. package/dist/panel-apps/index.d.ts +4 -0
  134. package/dist/panel-apps/index.js +4 -0
  135. package/dist/panel-apps/installer.d.ts +68 -0
  136. package/dist/panel-apps/installer.js +622 -0
  137. package/dist/panel-apps/manifest.d.ts +364 -0
  138. package/dist/panel-apps/manifest.js +189 -0
  139. package/dist/panel-apps/paths.d.ts +13 -0
  140. package/dist/panel-apps/paths.js +38 -0
  141. package/dist/panel-apps/registry.d.ts +51 -0
  142. package/dist/panel-apps/registry.js +99 -0
  143. package/dist/panel-apps/runtime.d.ts +80 -0
  144. package/dist/panel-apps/runtime.js +154 -0
  145. package/dist/plugins/gitOps.js +8 -1
  146. package/dist/plugins/installedPlugins.d.ts +2 -1
  147. package/dist/plugins/installedPlugins.js +146 -8
  148. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  149. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  150. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  151. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  152. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  153. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  154. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  155. package/dist/plugins/installer/install.d.ts +7 -1
  156. package/dist/plugins/installer/install.js +21 -87
  157. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  158. package/dist/plugins/installer/installFromArchive.js +44 -27
  159. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  160. package/dist/plugins/installer/installFromNpm.js +273 -0
  161. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  162. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  163. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  164. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  165. package/dist/plugins/installer/normalizeManifest.js +306 -0
  166. package/dist/plugins/installer/npmTar.d.ts +13 -0
  167. package/dist/plugins/installer/npmTar.js +321 -0
  168. package/dist/plugins/installer/parseSource.d.ts +11 -0
  169. package/dist/plugins/installer/parseSource.js +48 -0
  170. package/dist/plugins/installer/preview.d.ts +101 -0
  171. package/dist/plugins/installer/preview.js +336 -0
  172. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  173. package/dist/plugins/installer/projectPluginSource.js +140 -0
  174. package/dist/plugins/installer/types.d.ts +775 -0
  175. package/dist/plugins/installer/types.js +100 -0
  176. package/dist/plugins/installer/unzip.d.ts +11 -0
  177. package/dist/plugins/installer/unzip.js +123 -9
  178. package/dist/plugins/installer/update.d.ts +2 -2
  179. package/dist/plugins/installer/update.js +43 -4
  180. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  181. package/dist/plugins/loadPluginHooks.js +97 -86
  182. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  183. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  184. package/dist/plugins/pluginCatalog.d.ts +45 -0
  185. package/dist/plugins/pluginCatalog.js +87 -0
  186. package/dist/plugins/pluginCommandHook.d.ts +6 -0
  187. package/dist/plugins/pluginCommandHook.js +25 -8
  188. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  189. package/dist/plugins/pluginCommandsLoader.js +181 -7
  190. package/dist/plugins/pluginContent.d.ts +10 -1
  191. package/dist/plugins/pluginContent.js +87 -30
  192. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  193. package/dist/plugins/pluginHookApproval.js +160 -0
  194. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  195. package/dist/plugins/pluginHookIntegrity.js +361 -0
  196. package/dist/plugins/pluginInstaller.js +71 -12
  197. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  198. package/dist/plugins/pluginMcpApproval.js +110 -0
  199. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  200. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  201. package/dist/plugins/types.d.ts +30 -0
  202. package/dist/plugins/varRewrite.d.ts +9 -5
  203. package/dist/plugins/varRewrite.js +26 -17
  204. package/dist/preset/index.d.ts +11 -8
  205. package/dist/preset/index.js +62 -203
  206. package/dist/product/define.js +9 -3
  207. package/dist/product/types.d.ts +0 -2
  208. package/dist/profile/activation.d.ts +36 -0
  209. package/dist/profile/activation.js +57 -0
  210. package/dist/profile/catalog-store.d.ts +77 -0
  211. package/dist/profile/catalog-store.js +346 -0
  212. package/dist/profile/catalog.d.ts +54 -0
  213. package/dist/profile/catalog.js +152 -0
  214. package/dist/profile/index.d.ts +7 -0
  215. package/dist/profile/index.js +7 -0
  216. package/dist/profile/requirements.d.ts +76 -0
  217. package/dist/profile/requirements.js +117 -0
  218. package/dist/profile/resolve.d.ts +11 -0
  219. package/dist/profile/resolve.js +41 -0
  220. package/dist/profile/store.d.ts +17 -0
  221. package/dist/profile/store.js +167 -0
  222. package/dist/profile/types.d.ts +321 -0
  223. package/dist/profile/types.js +104 -0
  224. package/dist/prompt/composer.d.ts +46 -7
  225. package/dist/prompt/composer.js +78 -48
  226. package/dist/prompt/instruction-scanner.d.ts +6 -5
  227. package/dist/prompt/instruction-scanner.js +8 -23
  228. package/dist/prompt/section-loader.d.ts +2 -2
  229. package/dist/prompt/section-loader.js +7 -4
  230. package/dist/prompt/sections/browser.md +10 -9
  231. package/dist/prompt/sections/harness-base.md +9 -0
  232. package/dist/protocol/chat-session-manager.d.ts +64 -1
  233. package/dist/protocol/chat-session-manager.js +104 -0
  234. package/dist/protocol/chat-session.d.ts +61 -10
  235. package/dist/protocol/chat-session.js +135 -25
  236. package/dist/protocol/client.d.ts +33 -3
  237. package/dist/protocol/client.js +96 -5
  238. package/dist/protocol/index.d.ts +2 -2
  239. package/dist/protocol/index.js +2 -2
  240. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  241. package/dist/protocol/mobile-remote-types.js +1 -0
  242. package/dist/protocol/server.d.ts +127 -3
  243. package/dist/protocol/server.js +1309 -182
  244. package/dist/protocol/types.d.ts +152 -34
  245. package/dist/protocol/types.js +16 -0
  246. package/dist/run/ArtifactTracker.d.ts +6 -1
  247. package/dist/run/ArtifactTracker.js +29 -21
  248. package/dist/run/EngineRunner.d.ts +2 -0
  249. package/dist/run/EngineRunner.js +1 -0
  250. package/dist/run/RunManager.d.ts +26 -0
  251. package/dist/run/RunManager.js +82 -11
  252. package/dist/run/factory.d.ts +3 -0
  253. package/dist/run/factory.js +2 -0
  254. package/dist/runtime/safe-spawn.d.ts +6 -0
  255. package/dist/runtime/safe-spawn.js +8 -13
  256. package/dist/services/auto-dream.d.ts +13 -1
  257. package/dist/services/auto-dream.js +56 -8
  258. package/dist/services/dream-consolidation.js +10 -1
  259. package/dist/services/memory-orchestrator.js +6 -2
  260. package/dist/services/oauth.js +4 -1
  261. package/dist/services/session-memory.d.ts +4 -4
  262. package/dist/services/session-memory.js +13 -10
  263. package/dist/session/memory.d.ts +26 -7
  264. package/dist/session/memory.js +79 -21
  265. package/dist/session/session-manager.d.ts +182 -28
  266. package/dist/session/session-manager.js +910 -130
  267. package/dist/session/session-message.d.ts +22 -0
  268. package/dist/session/session-message.js +1 -0
  269. package/dist/session/transcript.d.ts +46 -5
  270. package/dist/session/transcript.js +159 -3
  271. package/dist/settings/feature-flags.d.ts +40 -0
  272. package/dist/settings/feature-flags.js +40 -0
  273. package/dist/settings/manager.d.ts +39 -1
  274. package/dist/settings/manager.js +102 -41
  275. package/dist/settings/migrate-config.js +4 -2
  276. package/dist/settings/schema.d.ts +511 -177
  277. package/dist/settings/schema.js +98 -25
  278. package/dist/skills/scanner.d.ts +6 -2
  279. package/dist/skills/scanner.js +160 -9
  280. package/dist/sources/adapter.d.ts +14 -0
  281. package/dist/sources/adapter.js +7 -0
  282. package/dist/sources/adapters/local-files.d.ts +10 -0
  283. package/dist/sources/adapters/local-files.js +127 -0
  284. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  285. package/dist/sources/adapters/mcp-resource.js +41 -0
  286. package/dist/sources/adapters/mock.d.ts +3 -0
  287. package/dist/sources/adapters/mock.js +29 -0
  288. package/dist/sources/binding.d.ts +6 -0
  289. package/dist/sources/binding.js +24 -0
  290. package/dist/sources/catalog.d.ts +6 -0
  291. package/dist/sources/catalog.js +64 -0
  292. package/dist/sources/context-summary.d.ts +8 -0
  293. package/dist/sources/context-summary.js +13 -0
  294. package/dist/sources/credential-status.d.ts +2 -0
  295. package/dist/sources/credential-status.js +13 -0
  296. package/dist/sources/index.d.ts +10 -0
  297. package/dist/sources/index.js +10 -0
  298. package/dist/sources/resolve.d.ts +28 -0
  299. package/dist/sources/resolve.js +47 -0
  300. package/dist/sources/truncate-utf8.d.ts +7 -0
  301. package/dist/sources/truncate-utf8.js +18 -0
  302. package/dist/sources/types.d.ts +71 -0
  303. package/dist/sources/types.js +26 -0
  304. package/dist/testing/fetch-stub.d.ts +32 -0
  305. package/dist/testing/fetch-stub.js +24 -0
  306. package/dist/themes/image.d.ts +18 -0
  307. package/dist/themes/image.js +117 -0
  308. package/dist/themes/index.d.ts +4 -0
  309. package/dist/themes/index.js +4 -0
  310. package/dist/themes/installer.d.ts +50 -0
  311. package/dist/themes/installer.js +290 -0
  312. package/dist/themes/manifest.d.ts +102 -0
  313. package/dist/themes/manifest.js +86 -0
  314. package/dist/themes/paths.d.ts +14 -0
  315. package/dist/themes/paths.js +33 -0
  316. package/dist/tool-system/browser-bridge.d.ts +53 -11
  317. package/dist/tool-system/browser-bridge.js +8 -9
  318. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  319. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  320. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  321. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  322. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  323. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  324. package/dist/tool-system/builtin/agent-progress.js +83 -0
  325. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  326. package/dist/tool-system/builtin/agent-registry.js +178 -9
  327. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  328. package/dist/tool-system/builtin/agent.d.ts +2 -0
  329. package/dist/tool-system/builtin/agent.js +274 -33
  330. package/dist/tool-system/builtin/background-jobs.d.ts +55 -2
  331. package/dist/tool-system/builtin/background-jobs.js +96 -4
  332. package/dist/tool-system/builtin/background-work.d.ts +6 -0
  333. package/dist/tool-system/builtin/background-work.js +8 -1
  334. package/dist/tool-system/builtin/bash.js +5 -2
  335. package/dist/tool-system/builtin/browser-tools.d.ts +6 -3
  336. package/dist/tool-system/builtin/browser-tools.js +89 -23
  337. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  338. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  339. package/dist/tool-system/builtin/edit.js +2 -6
  340. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  341. package/dist/tool-system/builtin/file-cache.js +4 -0
  342. package/dist/tool-system/builtin/generate-image.js +17 -10
  343. package/dist/tool-system/builtin/generate-video.js +26 -7
  344. package/dist/tool-system/builtin/grep.js +2 -2
  345. package/dist/tool-system/builtin/image-uploader.js +7 -1
  346. package/dist/tool-system/builtin/index.d.ts +32 -7
  347. package/dist/tool-system/builtin/index.js +237 -167
  348. package/dist/tool-system/builtin/memory.d.ts +6 -0
  349. package/dist/tool-system/builtin/memory.js +36 -15
  350. package/dist/tool-system/builtin/panel.d.ts +9 -0
  351. package/dist/tool-system/builtin/panel.js +314 -0
  352. package/dist/tool-system/builtin/read.js +5 -1
  353. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  354. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  355. package/dist/tool-system/builtin/sources.d.ts +8 -0
  356. package/dist/tool-system/builtin/sources.js +137 -0
  357. package/dist/tool-system/builtin/tool-search.js +7 -2
  358. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  359. package/dist/tool-system/builtin/web-fetch.js +17 -13
  360. package/dist/tool-system/builtin/web-search.js +1 -3
  361. package/dist/tool-system/capability-module.d.ts +93 -0
  362. package/dist/tool-system/capability-module.js +53 -0
  363. package/dist/tool-system/context.d.ts +77 -19
  364. package/dist/tool-system/executor.js +75 -50
  365. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  366. package/dist/tool-system/external-tool-exposure.js +304 -0
  367. package/dist/tool-system/mcp-manager.d.ts +11 -1
  368. package/dist/tool-system/mcp-manager.js +19 -4
  369. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  370. package/dist/tool-system/mcp-tool-policy.js +34 -0
  371. package/dist/tool-system/panel-bridge.d.ts +53 -0
  372. package/dist/tool-system/panel-bridge.js +1 -0
  373. package/dist/tool-system/permission.d.ts +26 -0
  374. package/dist/tool-system/permission.js +46 -0
  375. package/dist/tool-system/registry.d.ts +12 -1
  376. package/dist/tool-system/registry.js +31 -7
  377. package/dist/tool-system/sandbox/index.js +3 -8
  378. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  379. package/dist/tool-system/session-tool-host.d.ts +139 -0
  380. package/dist/tool-system/session-tool-host.js +167 -0
  381. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  382. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  383. package/dist/tool-system/validation.d.ts +14 -7
  384. package/dist/tool-system/validation.js +701 -7
  385. package/dist/types.d.ts +186 -20
  386. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  387. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  388. package/dist/utils/file-mutex.d.ts +65 -0
  389. package/dist/utils/file-mutex.js +145 -0
  390. package/dist/utils/json.d.ts +2 -4
  391. package/dist/utils/json.js +2 -4
  392. package/dist/utils/lockfile.d.ts +30 -1
  393. package/dist/utils/lockfile.js +2 -2
  394. package/dist/utils/secret-scrubber.d.ts +8 -0
  395. package/dist/utils/secret-scrubber.js +227 -0
  396. package/dist/utils/toolDisplay.js +1 -1
  397. package/package.json +20 -5
  398. package/THIRD_PARTY_NOTICES.md +0 -206
  399. package/dist/arena/arena.d.ts +0 -45
  400. package/dist/arena/arena.js +0 -362
  401. package/dist/arena/context/context-tools.d.ts +0 -16
  402. package/dist/arena/context/context-tools.js +0 -272
  403. package/dist/arena/context/within-root.d.ts +0 -7
  404. package/dist/arena/context/within-root.js +0 -15
  405. package/dist/arena/detect-mode.d.ts +0 -20
  406. package/dist/arena/detect-mode.js +0 -78
  407. package/dist/arena/digest-builder.d.ts +0 -25
  408. package/dist/arena/digest-builder.js +0 -120
  409. package/dist/arena/index.d.ts +0 -29
  410. package/dist/arena/index.js +0 -29
  411. package/dist/arena/iterate/convergence.d.ts +0 -25
  412. package/dist/arena/iterate/convergence.js +0 -103
  413. package/dist/arena/iterate/formats/index.d.ts +0 -22
  414. package/dist/arena/iterate/formats/index.js +0 -283
  415. package/dist/arena/iterate/index.d.ts +0 -11
  416. package/dist/arena/iterate/index.js +0 -9
  417. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  418. package/dist/arena/iterate/iterative-arena.js +0 -237
  419. package/dist/arena/iterate/parse.d.ts +0 -42
  420. package/dist/arena/iterate/parse.js +0 -123
  421. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  422. package/dist/arena/iterate/phases/argue.js +0 -165
  423. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  424. package/dist/arena/iterate/phases/revise.js +0 -62
  425. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  426. package/dist/arena/iterate/phases/tournament.js +0 -113
  427. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  428. package/dist/arena/iterate/tools/web-tools.js +0 -54
  429. package/dist/arena/iterate/types.d.ts +0 -152
  430. package/dist/arena/iterate/types.js +0 -8
  431. package/dist/arena/ledger.d.ts +0 -47
  432. package/dist/arena/ledger.js +0 -159
  433. package/dist/arena/lenses/architecture.d.ts +0 -5
  434. package/dist/arena/lenses/architecture.js +0 -22
  435. package/dist/arena/lenses/engineering.d.ts +0 -5
  436. package/dist/arena/lenses/engineering.js +0 -22
  437. package/dist/arena/lenses/general.d.ts +0 -5
  438. package/dist/arena/lenses/general.js +0 -20
  439. package/dist/arena/lenses/index.d.ts +0 -16
  440. package/dist/arena/lenses/index.js +0 -47
  441. package/dist/arena/lenses/product.d.ts +0 -5
  442. package/dist/arena/lenses/product.js +0 -22
  443. package/dist/arena/model-presets.d.ts +0 -23
  444. package/dist/arena/model-presets.js +0 -44
  445. package/dist/arena/phases/adjudication.d.ts +0 -25
  446. package/dist/arena/phases/adjudication.js +0 -142
  447. package/dist/arena/phases/build-consensus.d.ts +0 -30
  448. package/dist/arena/phases/build-consensus.js +0 -85
  449. package/dist/arena/phases/claim-registry.d.ts +0 -26
  450. package/dist/arena/phases/claim-registry.js +0 -60
  451. package/dist/arena/phases/cross-review.d.ts +0 -47
  452. package/dist/arena/phases/cross-review.js +0 -224
  453. package/dist/arena/phases/debate-rounds.d.ts +0 -28
  454. package/dist/arena/phases/debate-rounds.js +0 -161
  455. package/dist/arena/phases/participant-research.d.ts +0 -39
  456. package/dist/arena/phases/participant-research.js +0 -316
  457. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
  458. package/dist/arena/phases/planning-detail-expansion.js +0 -120
  459. package/dist/arena/planner.d.ts +0 -28
  460. package/dist/arena/planner.js +0 -312
  461. package/dist/arena/providers/docs.d.ts +0 -7
  462. package/dist/arena/providers/docs.js +0 -111
  463. package/dist/arena/providers/git.d.ts +0 -8
  464. package/dist/arena/providers/git.js +0 -174
  465. package/dist/arena/providers/index.d.ts +0 -32
  466. package/dist/arena/providers/index.js +0 -132
  467. package/dist/arena/providers/none.d.ts +0 -7
  468. package/dist/arena/providers/none.js +0 -11
  469. package/dist/arena/providers/repo.d.ts +0 -7
  470. package/dist/arena/providers/repo.js +0 -258
  471. package/dist/arena/render/session.d.ts +0 -17
  472. package/dist/arena/render/session.js +0 -190
  473. package/dist/arena/render/terminal.d.ts +0 -34
  474. package/dist/arena/render/terminal.js +0 -286
  475. package/dist/arena/strategies/discussion.d.ts +0 -25
  476. package/dist/arena/strategies/discussion.js +0 -143
  477. package/dist/arena/strategies/index.d.ts +0 -15
  478. package/dist/arena/strategies/index.js +0 -28
  479. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  480. package/dist/arena/strategies/language-wrapper.js +0 -102
  481. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  482. package/dist/arena/strategies/lens-wrapper.js +0 -236
  483. package/dist/arena/strategies/planning.d.ts +0 -30
  484. package/dist/arena/strategies/planning.js +0 -225
  485. package/dist/arena/strategies/review.d.ts +0 -26
  486. package/dist/arena/strategies/review.js +0 -168
  487. package/dist/arena/strategies/utils.d.ts +0 -36
  488. package/dist/arena/strategies/utils.js +0 -603
  489. package/dist/arena/tools/selector.d.ts +0 -17
  490. package/dist/arena/tools/selector.js +0 -61
  491. package/dist/arena/transitions.d.ts +0 -53
  492. package/dist/arena/transitions.js +0 -97
  493. package/dist/arena/types.d.ts +0 -518
  494. package/dist/arena/types.js +0 -27
  495. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  496. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  497. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  498. package/dist/cc-orchestrator/cc-capability.js +0 -53
  499. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  500. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  501. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  502. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  503. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  504. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  505. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  506. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  507. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  508. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  509. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  510. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  511. package/dist/cc-orchestrator/index.d.ts +0 -8
  512. package/dist/cc-orchestrator/index.js +0 -8
  513. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  514. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  515. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  516. package/dist/cc-orchestrator/session-discovery.js +0 -125
  517. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  518. package/dist/cc-orchestrator/session-history.js +0 -150
  519. package/dist/cron/cron-runtime.d.ts +0 -2
  520. package/dist/cron/cron-runtime.js +0 -2
  521. package/dist/cron/cron-store.d.ts +0 -2
  522. package/dist/cron/cron-store.js +0 -2
  523. package/dist/cron/scheduler.d.ts +0 -7
  524. package/dist/cron/scheduler.js +0 -7
  525. package/dist/engine/goal.js +0 -206
  526. package/dist/external-agents/config.d.ts +0 -2
  527. package/dist/external-agents/config.js +0 -15
  528. package/dist/external-agents/types.d.ts +0 -31
  529. package/dist/git/parse-log.d.ts +0 -13
  530. package/dist/git/parse-log.js +0 -21
  531. package/dist/git/utils.d.ts +0 -49
  532. package/dist/git/utils.js +0 -161
  533. package/dist/git/worktree/crud.d.ts +0 -72
  534. package/dist/git/worktree/crud.js +0 -235
  535. package/dist/git/worktree/diff.d.ts +0 -14
  536. package/dist/git/worktree/diff.js +0 -82
  537. package/dist/git/worktree/git-exec.d.ts +0 -7
  538. package/dist/git/worktree/git-exec.js +0 -87
  539. package/dist/git/worktree/index.d.ts +0 -5
  540. package/dist/git/worktree/index.js +0 -5
  541. package/dist/git/worktree/query.d.ts +0 -43
  542. package/dist/git/worktree/query.js +0 -128
  543. package/dist/git/worktree/slug.d.ts +0 -11
  544. package/dist/git/worktree/slug.js +0 -58
  545. package/dist/git/worktree.d.ts +0 -1
  546. package/dist/git/worktree.js +0 -5
  547. package/dist/lsp/client.d.ts +0 -41
  548. package/dist/lsp/client.js +0 -186
  549. package/dist/lsp/manager.d.ts +0 -40
  550. package/dist/lsp/manager.js +0 -155
  551. package/dist/lsp/root-path.d.ts +0 -9
  552. package/dist/lsp/root-path.js +0 -12
  553. package/dist/lsp/servers.d.ts +0 -16
  554. package/dist/lsp/servers.js +0 -60
  555. package/dist/prompt/sections/coding.md +0 -35
  556. package/dist/quota/credentials.d.ts +0 -3
  557. package/dist/quota/credentials.js +0 -80
  558. package/dist/quota/index.d.ts +0 -36
  559. package/dist/quota/index.js +0 -155
  560. package/dist/quota/types.d.ts +0 -48
  561. package/dist/quota/types.js +0 -13
  562. package/dist/review/review-prompt.d.ts +0 -28
  563. package/dist/review/review-prompt.js +0 -81
  564. package/dist/state.d.ts +0 -160
  565. package/dist/state.js +0 -267
  566. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  567. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  568. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  569. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  570. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  571. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  572. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  573. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  574. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  575. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  576. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  577. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  578. package/dist/tool-system/builtin/arena.d.ts +0 -31
  579. package/dist/tool-system/builtin/arena.js +0 -416
  580. package/dist/tool-system/builtin/brief.d.ts +0 -6
  581. package/dist/tool-system/builtin/brief.js +0 -41
  582. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  583. package/dist/tool-system/builtin/check-quota.js +0 -34
  584. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  585. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  586. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  587. package/dist/tool-system/builtin/lsp.js +0 -144
  588. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  589. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  590. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  591. package/dist/tool-system/builtin/worktree.js +0 -363
  592. /package/dist/{external-agents → links}/types.js +0 -0
  593. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  594. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -0,0 +1,287 @@
1
+ import { buildAgentDirectionMessage, notificationQueue, } from "../tool-system/builtin/agent-notifications.js";
2
+ import { nanoid } from "nanoid";
3
+ import { defaultSandboxConfig, } from "../tool-system/sandbox/index.js";
4
+ export const NESTED_AGENT_TOOLS = ["Agent", "AgentStatus", "AgentCancel", "AgentSendInput"];
5
+ export function resolveChildLlm(modelKey, pool, parentLlm) {
6
+ if (modelKey && pool?.has(modelKey)) {
7
+ const resolved = pool.resolveLLMConfig(modelKey);
8
+ if (resolved)
9
+ return resolved;
10
+ }
11
+ return parentLlm;
12
+ }
13
+ export function resolveChildToolScope(allowlist, parentDisabled, parentEnabled) {
14
+ if (allowlist) {
15
+ return {
16
+ enabled: allowlist.filter((tool) => !NESTED_AGENT_TOOLS.includes(tool)),
17
+ disabled: [...NESTED_AGENT_TOOLS],
18
+ };
19
+ }
20
+ return {
21
+ enabled: parentEnabled?.filter((tool) => !NESTED_AGENT_TOOLS.includes(tool)),
22
+ disabled: Array.from(new Set([...(parentDisabled ?? []), ...NESTED_AGENT_TOOLS])),
23
+ };
24
+ }
25
+ export function resolveChildSandbox(mode, parent) {
26
+ if (mode === undefined)
27
+ return parent;
28
+ // Role definitions are project/plugin-authored capability constraints, not
29
+ // an authority to weaken the user's effective run sandbox. Explicit native
30
+ // backends are already fail-closed; keep them unchanged. `auto` may resolve
31
+ // to an isolated backend, so it likewise cannot be downgraded to off/auto.
32
+ if (parent.mode === "seatbelt" || parent.mode === "bwrap")
33
+ return parent;
34
+ if (parent.mode === "auto" && (mode === "off" || mode === "auto"))
35
+ return parent;
36
+ return { ...defaultSandboxConfig(mode), ...parent, mode };
37
+ }
38
+ export function resolveChildMcpServers(allowlist, parent) {
39
+ if (allowlist === undefined)
40
+ return parent;
41
+ const allowed = new Set(allowlist);
42
+ return Object.fromEntries(Object.entries(parent ?? {}).filter(([name]) => allowed.has(name)));
43
+ }
44
+ export function wrapChildStream(destination, agentId) {
45
+ if (!destination)
46
+ return undefined;
47
+ return (event) => {
48
+ if (event.type === "usage_update" ||
49
+ event.type === "session_started" ||
50
+ event.type === "context_compact") {
51
+ return;
52
+ }
53
+ destination({ ...event, agentId });
54
+ };
55
+ }
56
+ function wrapChildRuntimeStream(destination, agentId, onProgressEvent) {
57
+ const uiStream = wrapChildStream(destination, agentId);
58
+ if (!uiStream && !onProgressEvent)
59
+ return undefined;
60
+ return (event) => {
61
+ onProgressEvent?.(event);
62
+ return uiStream?.(event);
63
+ };
64
+ }
65
+ class ChildRunSupervisor {
66
+ runtime;
67
+ childSessionId;
68
+ runtimeGeneration;
69
+ state = "starting";
70
+ activeController;
71
+ interruptPending = false;
72
+ running = false;
73
+ intakeClosed = false;
74
+ pendingDelivered = new Map();
75
+ closeIntake;
76
+ constructor(runtime, childSessionId, runtimeGeneration) {
77
+ this.runtime = runtime;
78
+ this.childSessionId = childSessionId;
79
+ this.runtimeGeneration = runtimeGeneration;
80
+ runtime.setAgentControlStateListener((state) => {
81
+ this.state = state;
82
+ });
83
+ runtime.setAgentDirectionsDeliveredListener?.((envelopeIds) => {
84
+ for (const id of envelopeIds) {
85
+ const pending = this.pendingDelivered.get(id);
86
+ if (!pending)
87
+ continue;
88
+ this.pendingDelivered.delete(id);
89
+ pending.resolve({ status: "delivered", ...pending.receipt });
90
+ }
91
+ });
92
+ }
93
+ setCloseIntake(closeIntake) {
94
+ this.closeIntake = closeIntake;
95
+ }
96
+ getState() {
97
+ return this.state;
98
+ }
99
+ routeDirection(draft) {
100
+ if (!this.running ||
101
+ this.intakeClosed ||
102
+ this.state === "closing" ||
103
+ this.state === "terminal") {
104
+ return { status: "rejected", reason: "intake-closed", rejectedAt: Date.now() };
105
+ }
106
+ const envelope = notificationQueue.enqueue(draft);
107
+ if (!envelope || envelope.kind !== "direction") {
108
+ return { status: "rejected", reason: "invalid-request", rejectedAt: Date.now() };
109
+ }
110
+ const receipt = {
111
+ envelopeId: envelope.id,
112
+ sequence: envelope.sequence,
113
+ correlationId: envelope.correlationId,
114
+ target: envelope.to,
115
+ acceptedAt: envelope.createdAt,
116
+ };
117
+ if (this.state === "safe-point") {
118
+ return new Promise((resolve) => {
119
+ this.pendingDelivered.set(envelope.id, { receipt, resolve });
120
+ });
121
+ }
122
+ if (draft.delivery === "interrupt-and-redrive" &&
123
+ !this.interruptPending &&
124
+ this.activeController &&
125
+ !this.activeController.signal.aborted) {
126
+ this.interruptPending = true;
127
+ this.state = "interrupting";
128
+ this.activeController.abort();
129
+ return { status: "interrupted", ...receipt };
130
+ }
131
+ return { status: "queued", ...receipt };
132
+ }
133
+ closeDirectionIntake() {
134
+ if (this.intakeClosed)
135
+ return;
136
+ this.intakeClosed = true;
137
+ this.state = "closing";
138
+ this.closeIntake?.();
139
+ }
140
+ drainDirections() {
141
+ return notificationQueue.drain(this.childSessionId, (envelope) => envelope.kind === "direction" && envelope.runtimeGeneration === this.runtimeGeneration);
142
+ }
143
+ async run(task, options) {
144
+ this.running = true;
145
+ let nextTask = task;
146
+ let agentDirection;
147
+ try {
148
+ for (;;) {
149
+ const controller = new AbortController();
150
+ this.activeController = controller;
151
+ const lifecycleSignal = options.signal;
152
+ const cascadeAbort = () => controller.abort();
153
+ if (lifecycleSignal?.aborted)
154
+ cascadeAbort();
155
+ else
156
+ lifecycleSignal?.addEventListener("abort", cascadeAbort, { once: true });
157
+ this.state = agentDirection ? "redriving" : "starting";
158
+ let result;
159
+ try {
160
+ result = await this.runtime.run(nextTask, {
161
+ ...options,
162
+ signal: controller.signal,
163
+ runtimeGeneration: this.runtimeGeneration,
164
+ ...(agentDirection ? { injected: true, agentDirection } : {}),
165
+ });
166
+ }
167
+ finally {
168
+ lifecycleSignal?.removeEventListener("abort", cascadeAbort);
169
+ this.activeController = undefined;
170
+ }
171
+ if (lifecycleSignal?.aborted) {
172
+ this.closeDirectionIntake();
173
+ return result;
174
+ }
175
+ // Engine.run has fully settled here, including all accepted tool results.
176
+ // For a normal completion, atomically close registry intake first. A
177
+ // sender that won before this boundary is now in the fenced queue and
178
+ // must be consumed/redriven; a sender after it is rejected.
179
+ if (!this.interruptPending)
180
+ this.closeDirectionIntake();
181
+ const directions = this.drainDirections();
182
+ this.interruptPending = false;
183
+ if (directions.length === 0) {
184
+ return result;
185
+ }
186
+ directions.sort((left, right) => left.sequence - right.sequence);
187
+ nextTask = buildAgentDirectionMessage(directions);
188
+ agentDirection = {
189
+ envelopeIds: directions.map((item) => item.id),
190
+ correlationIds: directions
191
+ .map((item) => item.correlationId)
192
+ .filter((value) => value !== undefined),
193
+ };
194
+ }
195
+ }
196
+ finally {
197
+ this.closeDirectionIntake();
198
+ this.running = false;
199
+ this.state = "terminal";
200
+ for (const { receipt, resolve } of this.pendingDelivered.values()) {
201
+ resolve({ status: "queued", ...receipt });
202
+ }
203
+ this.pendingDelivered.clear();
204
+ this.runtime.setAgentControlStateListener(undefined);
205
+ this.runtime.setAgentDirectionsDeliveredListener?.(undefined);
206
+ }
207
+ }
208
+ }
209
+ export function createSubAgentSpawner(deps) {
210
+ return {
211
+ parentStream: deps.parentStream,
212
+ describe: () => ({
213
+ cwd: deps.cwd,
214
+ preset: deps.presetName,
215
+ permissionMode: deps.permissionMode,
216
+ }),
217
+ sessionExists: deps.sessionExists,
218
+ getSessionParentId: deps.getSessionParentId,
219
+ spawn: async (request) => {
220
+ if (!request.resumeSessionId) {
221
+ try {
222
+ deps.appendParentSubagent(request.agentId, request.description);
223
+ }
224
+ catch {
225
+ // Parent anchors are best-effort and must never block a child run.
226
+ }
227
+ }
228
+ const scope = resolveChildToolScope(request.toolAllowlist, deps.parentConfig.disabledBuiltinTools, deps.parentConfig.enabledBuiltinTools);
229
+ const childConfig = {
230
+ llm: resolveChildLlm(request.model, deps.modelPool, deps.parentConfig.llm),
231
+ clientDefaults: {
232
+ ...(deps.parentConfig.clientDefaults ?? {}),
233
+ retryMaxAttempts: 2,
234
+ },
235
+ cwd: deps.cwd,
236
+ permissionMode: deps.permissionMode,
237
+ preset: deps.presetName,
238
+ enabledBuiltinTools: scope.enabled,
239
+ disabledBuiltinTools: scope.disabled,
240
+ capabilities: deps.parentConfig.capabilities,
241
+ extensionModules: deps.parentConfig.extensionModules,
242
+ builtinToolHost: deps.parentConfig.builtinToolHost,
243
+ customSystemPrompt: deps.parentConfig.customSystemPrompt,
244
+ appendSystemPrompt: [deps.parentConfig.appendSystemPrompt, request.appendSystemPrompt]
245
+ .filter(Boolean)
246
+ .join("\n\n") || undefined,
247
+ responseLanguage: deps.parentConfig.responseLanguage,
248
+ userProfile: deps.parentConfig.userProfile,
249
+ instructions: deps.parentConfig.instructions,
250
+ maxTurns: request.maxTurns,
251
+ maxContextTokens: deps.parentConfig.maxContextTokens ?? 200_000,
252
+ sessionStorageDir: deps.parentConfig.sessionStorageDir,
253
+ headless: deps.parentConfig.headless,
254
+ readOnlySession: request.readOnlySession,
255
+ skillAllowlist: request.skillAllowlist,
256
+ sandbox: resolveChildSandbox(request.sandboxMode, deps.parentSandbox),
257
+ mcpServers: resolveChildMcpServers(request.mcpAllowlist, deps.parentConfig.mcpServers),
258
+ settingsScope: deps.parentConfig.settingsScope ?? "project",
259
+ isSubAgent: true,
260
+ };
261
+ const destination = request.streamOverride ?? deps.parentStream;
262
+ const childSessionId = request.resumeSessionId ?? request.agentId;
263
+ if (deps.childRunner.createChild && request.runtimeGeneration !== undefined) {
264
+ const runtime = deps.childRunner.createChild(childConfig);
265
+ const supervisor = new ChildRunSupervisor(runtime, childSessionId, request.runtimeGeneration);
266
+ const ownerToken = nanoid();
267
+ const bound = request.bindLiveControl?.(supervisor, ownerToken);
268
+ supervisor.setCloseIntake(() => request.closeLiveControl?.(supervisor, bound && bound !== true ? bound : undefined));
269
+ if (bound === false) {
270
+ throw new Error(`child session ${childSessionId} already has a live transcript writer`);
271
+ }
272
+ return await supervisor.run(request.prompt, {
273
+ signal: request.signal,
274
+ onStream: wrapChildRuntimeStream(destination, request.agentId, request.onProgressEvent),
275
+ sessionId: childSessionId,
276
+ onAgentProgress: request.onAgentProgress,
277
+ });
278
+ }
279
+ const result = await deps.childRunner.runChild(childConfig, request.prompt, {
280
+ signal: request.signal,
281
+ onStream: wrapChildRuntimeStream(destination, request.agentId, request.onProgressEvent),
282
+ sessionId: childSessionId,
283
+ });
284
+ return result;
285
+ },
286
+ };
287
+ }
@@ -5,9 +5,9 @@
5
5
  * Returns a short commit-subject-style string like "Read 3 files, fixed NPE in auth.ts"
6
6
  */
7
7
  import type { ToolCall, ToolResult } from "../types.js";
8
- export type SummarizeFn = (systemPrompt: string, userMessage: string) => Promise<string>;
8
+ export type SummarizeFn = (systemPrompt: string, userMessage: string, signal?: AbortSignal) => Promise<string>;
9
9
  /**
10
10
  * Generate a 1-line summary of completed tool executions.
11
11
  * Returns null on failure (non-critical).
12
12
  */
13
- export declare function generateToolUseSummary(toolCalls: ToolCall[], results: ToolResult[], summarize: SummarizeFn): Promise<string | null>;
13
+ export declare function generateToolUseSummary(toolCalls: ToolCall[], results: ToolResult[], summarize: SummarizeFn, signal?: AbortSignal): Promise<string | null>;
@@ -13,7 +13,7 @@ const SUMMARY_SYSTEM_PROMPT = "Generate a very brief (under 40 chars) summary of
13
13
  * Generate a 1-line summary of completed tool executions.
14
14
  * Returns null on failure (non-critical).
15
15
  */
16
- export async function generateToolUseSummary(toolCalls, results, summarize) {
16
+ export async function generateToolUseSummary(toolCalls, results, summarize, signal) {
17
17
  if (toolCalls.length === 0)
18
18
  return null;
19
19
  try {
@@ -25,7 +25,7 @@ export async function generateToolUseSummary(toolCalls, results, summarize) {
25
25
  const output = (result?.result ?? result?.error ?? "").slice(0, 300);
26
26
  parts.push(`Tool: ${tc.toolName}(${input}) → ${output}`);
27
27
  }
28
- const summary = await summarize(SUMMARY_SYSTEM_PROMPT, parts.join("\n"));
28
+ const summary = await summarize(SUMMARY_SYSTEM_PROMPT, parts.join("\n"), signal);
29
29
  return summary?.trim() || null;
30
30
  }
31
31
  catch (err) {
@@ -4,16 +4,19 @@
4
4
  * Following Claude Code's po_() pattern:
5
5
  * pre_check → model_call → post_check → tool_exec → context_mgmt → hook_notify → next turn
6
6
  */
7
- import type { Message, StreamCallback, TerminalReason, ContentBlock, ToolResult, TokenUsage, ContextUsageAnchor } from "../types.js";
7
+ import type { Message, StreamCallback, TerminalReason, ContentBlock, ToolResult, TokenUsage, ContextUsageAnchor, TurnCompletionKind } from "../types.js";
8
8
  import type { SteerItem } from "./steer-queue.js";
9
+ import type { DirectionEnvelope } from "../tool-system/builtin/agent-notifications.js";
10
+ import type { LiveChildState } from "../tool-system/builtin/agent-registry.js";
9
11
  import { ModelFacade } from "./model-facade.js";
10
12
  import { ToolExecutor } from "../tool-system/executor.js";
11
13
  import { ContextManager } from "../context/manager.js";
12
14
  import { HookRegistry } from "../hooks/registry.js";
13
- import { type GoalJudgeRuntimeContext } from "../hooks/goal-stop-hook.js";
15
+ import type { GoalJudgeRuntimeContext } from "../hooks/goal-stop-hook.js";
16
+ import type { PromptCacheDiagnosticSample } from "./prompt-cache-diagnostics.js";
14
17
  import { Transcript } from "../session/transcript.js";
15
- import { type CumulativeUsageCounters } from "./session-usage.js";
16
- import { type GoalConfig, type GoalExtension, type GoalTerminationReason } from "./goal.js";
18
+ import { type CumulativeUsageCounters } from "../session/usage.js";
19
+ import { type GoalConfig, type GoalExtension, type GoalTerminationReason } from "../goal/lifecycle.js";
17
20
  export interface TurnLoopConfig {
18
21
  maxTurns: number;
19
22
  maxToolCallsPerTurn: number;
@@ -94,11 +97,13 @@ export interface TurnLoopDeps {
94
97
  * Returns the updated counters so usage_update can carry both metric scopes.
95
98
  */
96
99
  recordCumulativeUsage?: (usage: TokenUsage) => CumulativeUsageCounters;
100
+ /** Child-only billed usage delta for structured progress accounting. */
101
+ onAgentUsage?: (usage: TokenUsage) => void;
97
102
  /**
98
103
  * Lightweight per-session prompt-cache diagnostic, owned by Engine because it
99
104
  * needs memory across TurnLoop instances.
100
105
  */
101
- recordCacheReadDiagnostics?: (usage: TokenUsage) => void;
106
+ recordCacheReadDiagnostics?: (sample: PromptCacheDiagnosticSample) => void;
102
107
  /** Persist the latest context-estimation anchor derived from provider usage. */
103
108
  recordContextUsageAnchor?: (anchor: ContextUsageAnchor) => void;
104
109
  /**
@@ -110,6 +115,12 @@ export interface TurnLoopDeps {
110
115
  * tests (turn loop tolerates undefined).
111
116
  */
112
117
  consumeSteer?: (source?: "normal_step" | "finalize_backfill") => SteerItem[];
118
+ /** Child-only mailbox drain; separate from user steering for provenance/consent. */
119
+ consumeAgentDirections?: () => DirectionEnvelope[];
120
+ /** Exposes semantic model/tool boundaries to the bound live child supervisor. */
121
+ onAgentControlState?: (state: LiveChildState) => void;
122
+ /** Confirms that specific envelopes reached messages + persisted provenance. */
123
+ onAgentDirectionsDelivered?: (envelopeIds: string[]) => void;
113
124
  /** Restore steer items whose model-facing content could not be prepared. */
114
125
  restoreSteer?: (items: SteerItem[]) => void;
115
126
  /** Build model-facing content for a queued steer item, including attachments. */
@@ -125,19 +136,24 @@ export interface TurnLoopDeps {
125
136
  /** Make tools launched after an injected steer attribute side effects to that steer. */
126
137
  setOriginClientMessageId?: (clientMessageId: string | undefined) => void;
127
138
  /**
128
- * Clear this session's PERSISTED goal (state.activeGoal) and drop the
129
- * in-flight goal-stop hook, so a user-initiated cancel_goal both stops the
130
- * current run AND prevents the goal from re-inheriting on the next bare send.
139
+ * Terminally clear this session's persisted goalLifecycle and drop
140
+ * the in-flight goal-stop hook, so complete_goal/cancel_goal both stop the
141
+ * current run AND prevent the goal from re-inheriting on the next bare send.
131
142
  * Wired by Engine (delegates to Engine.clearGoal for the running session);
132
143
  * absent in standalone tests (turn loop tolerates undefined — the local
133
144
  * goalTracker short-circuit still stops the run).
134
145
  */
135
- clearPersistedGoal?: () => void;
146
+ /** Return false when the durable transition failed; the loop must keep driving. */
147
+ clearPersistedGoal?: (reason: "completed" | "cancelled") => boolean | void;
136
148
  /**
137
149
  * Private Goal-judge evidence seam. Engine stores this snapshot in the
138
150
  * built-in judge closure; it is never added to the public on_stop context.
139
151
  */
140
- updateGoalJudgeContext?: (context: GoalJudgeRuntimeContext) => void;
152
+ publishGoalJudgeContext?: (context: GoalJudgeRuntimeContext) => void;
153
+ /** Inspect a trusted tool's pending run yield without clearing it. */
154
+ peekToolRunYield?: () => import("../tool-system/context.js").ToolRunYieldReason | undefined;
155
+ /** Consume a trusted tool's request to yield until an async notification. */
156
+ consumeToolRunYield?: () => import("../tool-system/context.js").ToolRunYieldReason | undefined;
141
157
  }
142
158
  export interface TurnLoopResult {
143
159
  text: string;
@@ -145,6 +161,10 @@ export interface TurnLoopResult {
145
161
  messages: Message[];
146
162
  /** Goal-specific forced terminal outcome; public TerminalReason stays stable. */
147
163
  goalTermination?: GoalTerminationReason;
164
+ /** Stop-block round captured before the loop resets its per-approach counter. */
165
+ goalTerminationRound?: number;
166
+ /** Exceptional completed-run boundary; absent means an ordinary final answer. */
167
+ completionKind?: TurnCompletionKind;
148
168
  }
149
169
  /**
150
170
  * 把一个 ToolResult 映射成发给 LLM 的 tool_result ContentBlock。
@@ -195,6 +215,24 @@ export declare class TurnLoop {
195
215
  * being re-emitted every turn while still within the approach threshold.
196
216
  */
197
217
  private approachAnnounced;
218
+ /** Latest coalesced Goal edit/resume reminder, consumed at a safe point. */
219
+ private pendingGoalControlMessage;
220
+ /** Pause/delete requested while a Goal run is in flight. The current
221
+ * model/tool step is allowed to settle, then the loop stops before starting
222
+ * another model request. */
223
+ private goalControlStopRequested;
224
+ /** Auxiliary tool-summary calls started by this loop and revoked by Goal pause/delete. */
225
+ private readonly activeToolSummaryControllers;
226
+ /**
227
+ * Apply a user goal edit/pause/resume to the live loop. Passing undefined
228
+ * pauses goal-driving at the next step boundary; a goal value resumes it.
229
+ * Usage accumulated before an edit is retained, while a pause/resume starts
230
+ * a fresh run-scoped budget window (matching a later persisted resume).
231
+ */
232
+ updateGoal(goal: GoalConfig | undefined, controlMessage?: string, limits?: {
233
+ maxTurns?: number;
234
+ maxStopBlocks?: number;
235
+ }): void;
198
236
  /**
199
237
  * Extend the in-flight run's limits (TODO 3.1 — 运行中续轮/加预算). Mutates
200
238
  * the maxTurns ceiling, the maxStopBlocks cap, and/or the live goal budgets;
@@ -277,6 +315,7 @@ export declare class TurnLoop {
277
315
  private callModelWithFallback;
278
316
  get currentTurn(): number;
279
317
  private consumeQueuedSteer;
318
+ private consumeQueuedAgentDirections;
280
319
  /**
281
320
  * Generate synthetic error tool_results for any dangling tool_use blocks
282
321
  * that never received results (e.g. because the API call failed).