@cjhyy/code-shell-core 0.7.1 → 0.8.1

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 (595) 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/path-policy.js +99 -2
  374. package/dist/tool-system/permission.d.ts +26 -0
  375. package/dist/tool-system/permission.js +46 -0
  376. package/dist/tool-system/registry.d.ts +12 -1
  377. package/dist/tool-system/registry.js +31 -7
  378. package/dist/tool-system/sandbox/index.js +3 -8
  379. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  380. package/dist/tool-system/session-tool-host.d.ts +139 -0
  381. package/dist/tool-system/session-tool-host.js +167 -0
  382. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  383. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  384. package/dist/tool-system/validation.d.ts +14 -7
  385. package/dist/tool-system/validation.js +701 -7
  386. package/dist/types.d.ts +186 -20
  387. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  388. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  389. package/dist/utils/file-mutex.d.ts +65 -0
  390. package/dist/utils/file-mutex.js +145 -0
  391. package/dist/utils/json.d.ts +2 -4
  392. package/dist/utils/json.js +2 -4
  393. package/dist/utils/lockfile.d.ts +30 -1
  394. package/dist/utils/lockfile.js +2 -2
  395. package/dist/utils/secret-scrubber.d.ts +8 -0
  396. package/dist/utils/secret-scrubber.js +227 -0
  397. package/dist/utils/toolDisplay.js +1 -1
  398. package/package.json +20 -5
  399. package/THIRD_PARTY_NOTICES.md +0 -206
  400. package/dist/arena/arena.d.ts +0 -45
  401. package/dist/arena/arena.js +0 -362
  402. package/dist/arena/context/context-tools.d.ts +0 -16
  403. package/dist/arena/context/context-tools.js +0 -272
  404. package/dist/arena/context/within-root.d.ts +0 -7
  405. package/dist/arena/context/within-root.js +0 -15
  406. package/dist/arena/detect-mode.d.ts +0 -20
  407. package/dist/arena/detect-mode.js +0 -78
  408. package/dist/arena/digest-builder.d.ts +0 -25
  409. package/dist/arena/digest-builder.js +0 -120
  410. package/dist/arena/index.d.ts +0 -29
  411. package/dist/arena/index.js +0 -29
  412. package/dist/arena/iterate/convergence.d.ts +0 -25
  413. package/dist/arena/iterate/convergence.js +0 -103
  414. package/dist/arena/iterate/formats/index.d.ts +0 -22
  415. package/dist/arena/iterate/formats/index.js +0 -283
  416. package/dist/arena/iterate/index.d.ts +0 -11
  417. package/dist/arena/iterate/index.js +0 -9
  418. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  419. package/dist/arena/iterate/iterative-arena.js +0 -237
  420. package/dist/arena/iterate/parse.d.ts +0 -42
  421. package/dist/arena/iterate/parse.js +0 -123
  422. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  423. package/dist/arena/iterate/phases/argue.js +0 -165
  424. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  425. package/dist/arena/iterate/phases/revise.js +0 -62
  426. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  427. package/dist/arena/iterate/phases/tournament.js +0 -113
  428. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  429. package/dist/arena/iterate/tools/web-tools.js +0 -54
  430. package/dist/arena/iterate/types.d.ts +0 -152
  431. package/dist/arena/iterate/types.js +0 -8
  432. package/dist/arena/ledger.d.ts +0 -47
  433. package/dist/arena/ledger.js +0 -159
  434. package/dist/arena/lenses/architecture.d.ts +0 -5
  435. package/dist/arena/lenses/architecture.js +0 -22
  436. package/dist/arena/lenses/engineering.d.ts +0 -5
  437. package/dist/arena/lenses/engineering.js +0 -22
  438. package/dist/arena/lenses/general.d.ts +0 -5
  439. package/dist/arena/lenses/general.js +0 -20
  440. package/dist/arena/lenses/index.d.ts +0 -16
  441. package/dist/arena/lenses/index.js +0 -47
  442. package/dist/arena/lenses/product.d.ts +0 -5
  443. package/dist/arena/lenses/product.js +0 -22
  444. package/dist/arena/model-presets.d.ts +0 -23
  445. package/dist/arena/model-presets.js +0 -44
  446. package/dist/arena/phases/adjudication.d.ts +0 -25
  447. package/dist/arena/phases/adjudication.js +0 -142
  448. package/dist/arena/phases/build-consensus.d.ts +0 -30
  449. package/dist/arena/phases/build-consensus.js +0 -85
  450. package/dist/arena/phases/claim-registry.d.ts +0 -26
  451. package/dist/arena/phases/claim-registry.js +0 -60
  452. package/dist/arena/phases/cross-review.d.ts +0 -47
  453. package/dist/arena/phases/cross-review.js +0 -224
  454. package/dist/arena/phases/debate-rounds.d.ts +0 -28
  455. package/dist/arena/phases/debate-rounds.js +0 -161
  456. package/dist/arena/phases/participant-research.d.ts +0 -39
  457. package/dist/arena/phases/participant-research.js +0 -316
  458. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
  459. package/dist/arena/phases/planning-detail-expansion.js +0 -120
  460. package/dist/arena/planner.d.ts +0 -28
  461. package/dist/arena/planner.js +0 -312
  462. package/dist/arena/providers/docs.d.ts +0 -7
  463. package/dist/arena/providers/docs.js +0 -111
  464. package/dist/arena/providers/git.d.ts +0 -8
  465. package/dist/arena/providers/git.js +0 -174
  466. package/dist/arena/providers/index.d.ts +0 -32
  467. package/dist/arena/providers/index.js +0 -132
  468. package/dist/arena/providers/none.d.ts +0 -7
  469. package/dist/arena/providers/none.js +0 -11
  470. package/dist/arena/providers/repo.d.ts +0 -7
  471. package/dist/arena/providers/repo.js +0 -258
  472. package/dist/arena/render/session.d.ts +0 -17
  473. package/dist/arena/render/session.js +0 -190
  474. package/dist/arena/render/terminal.d.ts +0 -34
  475. package/dist/arena/render/terminal.js +0 -286
  476. package/dist/arena/strategies/discussion.d.ts +0 -25
  477. package/dist/arena/strategies/discussion.js +0 -143
  478. package/dist/arena/strategies/index.d.ts +0 -15
  479. package/dist/arena/strategies/index.js +0 -28
  480. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  481. package/dist/arena/strategies/language-wrapper.js +0 -102
  482. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  483. package/dist/arena/strategies/lens-wrapper.js +0 -236
  484. package/dist/arena/strategies/planning.d.ts +0 -30
  485. package/dist/arena/strategies/planning.js +0 -225
  486. package/dist/arena/strategies/review.d.ts +0 -26
  487. package/dist/arena/strategies/review.js +0 -168
  488. package/dist/arena/strategies/utils.d.ts +0 -36
  489. package/dist/arena/strategies/utils.js +0 -603
  490. package/dist/arena/tools/selector.d.ts +0 -17
  491. package/dist/arena/tools/selector.js +0 -61
  492. package/dist/arena/transitions.d.ts +0 -53
  493. package/dist/arena/transitions.js +0 -97
  494. package/dist/arena/types.d.ts +0 -518
  495. package/dist/arena/types.js +0 -27
  496. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  497. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  498. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  499. package/dist/cc-orchestrator/cc-capability.js +0 -53
  500. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  501. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  502. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  503. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  504. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  505. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  506. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  507. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  508. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  509. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  510. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  511. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  512. package/dist/cc-orchestrator/index.d.ts +0 -8
  513. package/dist/cc-orchestrator/index.js +0 -8
  514. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  515. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  516. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  517. package/dist/cc-orchestrator/session-discovery.js +0 -125
  518. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  519. package/dist/cc-orchestrator/session-history.js +0 -150
  520. package/dist/cron/cron-runtime.d.ts +0 -2
  521. package/dist/cron/cron-runtime.js +0 -2
  522. package/dist/cron/cron-store.d.ts +0 -2
  523. package/dist/cron/cron-store.js +0 -2
  524. package/dist/cron/scheduler.d.ts +0 -7
  525. package/dist/cron/scheduler.js +0 -7
  526. package/dist/engine/goal.js +0 -206
  527. package/dist/external-agents/config.d.ts +0 -2
  528. package/dist/external-agents/config.js +0 -15
  529. package/dist/external-agents/types.d.ts +0 -31
  530. package/dist/git/parse-log.d.ts +0 -13
  531. package/dist/git/parse-log.js +0 -21
  532. package/dist/git/utils.d.ts +0 -49
  533. package/dist/git/utils.js +0 -161
  534. package/dist/git/worktree/crud.d.ts +0 -72
  535. package/dist/git/worktree/crud.js +0 -235
  536. package/dist/git/worktree/diff.d.ts +0 -14
  537. package/dist/git/worktree/diff.js +0 -82
  538. package/dist/git/worktree/git-exec.d.ts +0 -7
  539. package/dist/git/worktree/git-exec.js +0 -87
  540. package/dist/git/worktree/index.d.ts +0 -5
  541. package/dist/git/worktree/index.js +0 -5
  542. package/dist/git/worktree/query.d.ts +0 -43
  543. package/dist/git/worktree/query.js +0 -128
  544. package/dist/git/worktree/slug.d.ts +0 -11
  545. package/dist/git/worktree/slug.js +0 -58
  546. package/dist/git/worktree.d.ts +0 -1
  547. package/dist/git/worktree.js +0 -5
  548. package/dist/lsp/client.d.ts +0 -41
  549. package/dist/lsp/client.js +0 -186
  550. package/dist/lsp/manager.d.ts +0 -40
  551. package/dist/lsp/manager.js +0 -155
  552. package/dist/lsp/root-path.d.ts +0 -9
  553. package/dist/lsp/root-path.js +0 -12
  554. package/dist/lsp/servers.d.ts +0 -16
  555. package/dist/lsp/servers.js +0 -60
  556. package/dist/prompt/sections/coding.md +0 -35
  557. package/dist/quota/credentials.d.ts +0 -3
  558. package/dist/quota/credentials.js +0 -80
  559. package/dist/quota/index.d.ts +0 -36
  560. package/dist/quota/index.js +0 -155
  561. package/dist/quota/types.d.ts +0 -48
  562. package/dist/quota/types.js +0 -13
  563. package/dist/review/review-prompt.d.ts +0 -28
  564. package/dist/review/review-prompt.js +0 -81
  565. package/dist/state.d.ts +0 -160
  566. package/dist/state.js +0 -267
  567. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  568. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  569. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  570. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  571. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  572. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  573. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  574. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  575. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  576. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  577. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  578. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  579. package/dist/tool-system/builtin/arena.d.ts +0 -31
  580. package/dist/tool-system/builtin/arena.js +0 -416
  581. package/dist/tool-system/builtin/brief.d.ts +0 -6
  582. package/dist/tool-system/builtin/brief.js +0 -41
  583. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  584. package/dist/tool-system/builtin/check-quota.js +0 -34
  585. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  586. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  587. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  588. package/dist/tool-system/builtin/lsp.js +0 -144
  589. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  590. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  591. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  592. package/dist/tool-system/builtin/worktree.js +0 -363
  593. /package/dist/{external-agents → links}/types.js +0 -0
  594. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  595. /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).