@cjhyy/code-shell-core 0.7.0 → 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 (621) 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 +20 -5
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +20 -4
  26. package/dist/context/manager.js +42 -7
  27. package/dist/context/token-counter.js +5 -3
  28. package/dist/context/tool-result-storage.d.ts +6 -0
  29. package/dist/context/tool-result-storage.js +25 -4
  30. package/dist/credentials/access.d.ts +13 -2
  31. package/dist/credentials/access.js +99 -4
  32. package/dist/credentials/index.d.ts +3 -2
  33. package/dist/credentials/index.js +2 -1
  34. package/dist/credentials/oauth.d.ts +9 -1
  35. package/dist/credentials/oauth.js +80 -1
  36. package/dist/credentials/store.d.ts +16 -2
  37. package/dist/credentials/store.js +33 -11
  38. package/dist/credentials/types.d.ts +62 -1
  39. package/dist/credentials/types.js +16 -1
  40. package/dist/credentials/use-credential-tool.js +15 -1
  41. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  42. package/dist/engine/auxiliary-pipeline.js +181 -0
  43. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  44. package/dist/{settings → engine}/disk-defaults.js +5 -2
  45. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  46. package/dist/engine/dynamic-tool-defs.js +4 -0
  47. package/dist/engine/engine.d.ts +272 -184
  48. package/dist/engine/engine.js +1869 -1864
  49. package/dist/engine/file-history-hook.d.ts +11 -0
  50. package/dist/engine/file-history-hook.js +31 -0
  51. package/dist/engine/goal-judge-context.d.ts +9 -0
  52. package/dist/engine/goal-judge-context.js +234 -0
  53. package/dist/engine/injected-context-cache.d.ts +6 -0
  54. package/dist/engine/injected-context-cache.js +13 -0
  55. package/dist/engine/input-attachments.d.ts +1 -1
  56. package/dist/engine/model-facade.d.ts +3 -3
  57. package/dist/engine/model-facade.js +15 -14
  58. package/dist/engine/permission-controller.d.ts +55 -0
  59. package/dist/engine/permission-controller.js +148 -0
  60. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  61. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  62. package/dist/engine/run-accounting.d.ts +41 -0
  63. package/dist/engine/run-accounting.js +126 -0
  64. package/dist/engine/run-context.d.ts +44 -0
  65. package/dist/engine/run-context.js +88 -0
  66. package/dist/engine/run-environment.d.ts +30 -0
  67. package/dist/engine/run-environment.js +77 -0
  68. package/dist/engine/run-finalize.d.ts +58 -0
  69. package/dist/engine/run-finalize.js +245 -0
  70. package/dist/engine/run-goal.d.ts +58 -0
  71. package/dist/engine/run-goal.js +188 -0
  72. package/dist/engine/run-image-input.d.ts +1 -1
  73. package/dist/engine/run-image-input.js +5 -3
  74. package/dist/engine/run-session-open.d.ts +41 -0
  75. package/dist/engine/run-session-open.js +186 -0
  76. package/dist/engine/run-setup.d.ts +42 -0
  77. package/dist/engine/run-setup.js +58 -0
  78. package/dist/engine/run-tooling.d.ts +125 -0
  79. package/dist/engine/run-tooling.js +283 -0
  80. package/dist/engine/run-types.d.ts +139 -0
  81. package/dist/engine/run-types.js +12 -0
  82. package/dist/engine/run-workspace.d.ts +50 -0
  83. package/dist/engine/run-workspace.js +114 -0
  84. package/dist/engine/session-title.d.ts +2 -1
  85. package/dist/engine/session-title.js +4 -1
  86. package/dist/engine/steer-queue.d.ts +1 -1
  87. package/dist/engine/subagent-spawner.d.ts +32 -0
  88. package/dist/engine/subagent-spawner.js +287 -0
  89. package/dist/engine/tool-summary.d.ts +2 -2
  90. package/dist/engine/tool-summary.js +2 -2
  91. package/dist/engine/turn-loop.d.ts +67 -10
  92. package/dist/engine/turn-loop.js +538 -97
  93. package/dist/engine/types.d.ts +35 -4
  94. package/dist/engine/types.js +1 -1
  95. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +80 -6
  96. package/dist/goal/lifecycle.js +482 -0
  97. package/dist/hooks/events.d.ts +26 -9
  98. package/dist/hooks/events.js +0 -3
  99. package/dist/hooks/goal-stop-hook.d.ts +28 -29
  100. package/dist/hooks/goal-stop-hook.js +344 -144
  101. package/dist/hooks/registry.js +4 -1
  102. package/dist/hooks/shell-runner.d.ts +12 -1
  103. package/dist/hooks/shell-runner.js +160 -9
  104. package/dist/index.d.ts +51 -110
  105. package/dist/index.extension.d.ts +51 -0
  106. package/dist/index.extension.js +39 -0
  107. package/dist/index.internal.d.ts +86 -0
  108. package/dist/index.internal.js +92 -0
  109. package/dist/index.js +37 -125
  110. package/dist/links/cli.d.ts +48 -0
  111. package/dist/links/cli.js +617 -0
  112. package/dist/links/http.d.ts +40 -0
  113. package/dist/links/http.js +166 -0
  114. package/dist/links/index.d.ts +4 -0
  115. package/dist/links/index.js +3 -0
  116. package/dist/links/link-action-tool.d.ts +5 -0
  117. package/dist/links/link-action-tool.js +241 -0
  118. package/dist/links/providers.d.ts +8 -0
  119. package/dist/links/providers.js +665 -0
  120. package/dist/links/types.d.ts +44 -0
  121. package/dist/llm/client-base.d.ts +7 -0
  122. package/dist/llm/client-base.js +72 -10
  123. package/dist/llm/model-pool.d.ts +1 -1
  124. package/dist/llm/model-pool.js +1 -1
  125. package/dist/llm/providers/anthropic.d.ts +1 -0
  126. package/dist/llm/providers/anthropic.js +9 -0
  127. package/dist/llm/providers/openai.d.ts +1 -0
  128. package/dist/llm/providers/openai.js +17 -0
  129. package/dist/llm/types.d.ts +12 -5
  130. package/dist/model-catalog/index.js +15 -2
  131. package/dist/model-catalog/resolve.d.ts +13 -1
  132. package/dist/model-catalog/resolve.js +37 -2
  133. package/dist/model-catalog/types.d.ts +74 -48
  134. package/dist/model-catalog/types.js +16 -5
  135. package/dist/model-catalog/upsert.d.ts +3 -1
  136. package/dist/model-catalog/upsert.js +9 -0
  137. package/dist/onboarding.d.ts +0 -1
  138. package/dist/onboarding.js +1 -22
  139. package/dist/panel-apps/bindings.d.ts +24 -0
  140. package/dist/panel-apps/bindings.js +69 -0
  141. package/dist/panel-apps/github-archive.d.ts +21 -0
  142. package/dist/panel-apps/github-archive.js +98 -0
  143. package/dist/panel-apps/index.d.ts +4 -0
  144. package/dist/panel-apps/index.js +4 -0
  145. package/dist/panel-apps/installer.d.ts +68 -0
  146. package/dist/panel-apps/installer.js +622 -0
  147. package/dist/panel-apps/manifest.d.ts +364 -0
  148. package/dist/panel-apps/manifest.js +189 -0
  149. package/dist/panel-apps/paths.d.ts +13 -0
  150. package/dist/panel-apps/paths.js +38 -0
  151. package/dist/panel-apps/registry.d.ts +51 -0
  152. package/dist/panel-apps/registry.js +99 -0
  153. package/dist/panel-apps/runtime.d.ts +80 -0
  154. package/dist/panel-apps/runtime.js +154 -0
  155. package/dist/plugins/gitOps.js +8 -1
  156. package/dist/plugins/installedPlugins.d.ts +2 -1
  157. package/dist/plugins/installedPlugins.js +146 -8
  158. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  159. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  160. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  161. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  162. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  163. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  164. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  165. package/dist/plugins/installer/install.d.ts +7 -1
  166. package/dist/plugins/installer/install.js +21 -87
  167. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  168. package/dist/plugins/installer/installFromArchive.js +44 -27
  169. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  170. package/dist/plugins/installer/installFromNpm.js +273 -0
  171. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  172. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  173. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  174. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  175. package/dist/plugins/installer/normalizeManifest.js +306 -0
  176. package/dist/plugins/installer/npmTar.d.ts +13 -0
  177. package/dist/plugins/installer/npmTar.js +321 -0
  178. package/dist/plugins/installer/parseSource.d.ts +11 -0
  179. package/dist/plugins/installer/parseSource.js +48 -0
  180. package/dist/plugins/installer/preview.d.ts +101 -0
  181. package/dist/plugins/installer/preview.js +336 -0
  182. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  183. package/dist/plugins/installer/projectPluginSource.js +140 -0
  184. package/dist/plugins/installer/types.d.ts +775 -0
  185. package/dist/plugins/installer/types.js +100 -0
  186. package/dist/plugins/installer/unzip.d.ts +11 -0
  187. package/dist/plugins/installer/unzip.js +123 -9
  188. package/dist/plugins/installer/update.d.ts +2 -2
  189. package/dist/plugins/installer/update.js +43 -4
  190. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  191. package/dist/plugins/loadPluginHooks.js +97 -86
  192. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  193. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  194. package/dist/plugins/pluginCatalog.d.ts +45 -0
  195. package/dist/plugins/pluginCatalog.js +87 -0
  196. package/dist/plugins/pluginCommandHook.d.ts +10 -4
  197. package/dist/plugins/pluginCommandHook.js +133 -18
  198. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  199. package/dist/plugins/pluginCommandsLoader.js +181 -7
  200. package/dist/plugins/pluginContent.d.ts +10 -1
  201. package/dist/plugins/pluginContent.js +87 -30
  202. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  203. package/dist/plugins/pluginHookApproval.js +160 -0
  204. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  205. package/dist/plugins/pluginHookIntegrity.js +361 -0
  206. package/dist/plugins/pluginInstaller.js +71 -12
  207. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  208. package/dist/plugins/pluginMcpApproval.js +110 -0
  209. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  210. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  211. package/dist/plugins/types.d.ts +30 -0
  212. package/dist/plugins/varRewrite.d.ts +9 -5
  213. package/dist/plugins/varRewrite.js +26 -17
  214. package/dist/preset/index.d.ts +11 -8
  215. package/dist/preset/index.js +62 -203
  216. package/dist/product/define.js +9 -3
  217. package/dist/product/types.d.ts +0 -2
  218. package/dist/profile/activation.d.ts +36 -0
  219. package/dist/profile/activation.js +57 -0
  220. package/dist/profile/catalog-store.d.ts +77 -0
  221. package/dist/profile/catalog-store.js +346 -0
  222. package/dist/profile/catalog.d.ts +54 -0
  223. package/dist/profile/catalog.js +152 -0
  224. package/dist/profile/index.d.ts +7 -0
  225. package/dist/profile/index.js +7 -0
  226. package/dist/profile/requirements.d.ts +76 -0
  227. package/dist/profile/requirements.js +117 -0
  228. package/dist/profile/resolve.d.ts +11 -0
  229. package/dist/profile/resolve.js +41 -0
  230. package/dist/profile/store.d.ts +17 -0
  231. package/dist/profile/store.js +167 -0
  232. package/dist/profile/types.d.ts +321 -0
  233. package/dist/profile/types.js +104 -0
  234. package/dist/prompt/composer.d.ts +46 -7
  235. package/dist/prompt/composer.js +78 -48
  236. package/dist/prompt/instruction-scanner.d.ts +6 -5
  237. package/dist/prompt/instruction-scanner.js +8 -23
  238. package/dist/prompt/section-loader.d.ts +2 -2
  239. package/dist/prompt/section-loader.js +7 -4
  240. package/dist/prompt/sections/browser.md +10 -9
  241. package/dist/prompt/sections/harness-base.md +9 -0
  242. package/dist/protocol/chat-session-manager.d.ts +77 -3
  243. package/dist/protocol/chat-session-manager.js +194 -18
  244. package/dist/protocol/chat-session.d.ts +72 -9
  245. package/dist/protocol/chat-session.js +151 -16
  246. package/dist/protocol/client.d.ts +37 -4
  247. package/dist/protocol/client.js +118 -6
  248. package/dist/protocol/index.d.ts +2 -2
  249. package/dist/protocol/index.js +2 -2
  250. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  251. package/dist/protocol/mobile-remote-types.js +1 -0
  252. package/dist/protocol/server.d.ts +152 -14
  253. package/dist/protocol/server.js +1574 -229
  254. package/dist/protocol/types.d.ts +182 -32
  255. package/dist/protocol/types.js +18 -0
  256. package/dist/run/ArtifactTracker.d.ts +6 -1
  257. package/dist/run/ArtifactTracker.js +29 -21
  258. package/dist/run/EngineRunner.d.ts +2 -0
  259. package/dist/run/EngineRunner.js +1 -0
  260. package/dist/run/RunManager.d.ts +26 -0
  261. package/dist/run/RunManager.js +82 -11
  262. package/dist/run/factory.d.ts +3 -0
  263. package/dist/run/factory.js +2 -0
  264. package/dist/runtime/safe-spawn.d.ts +6 -0
  265. package/dist/runtime/safe-spawn.js +8 -13
  266. package/dist/services/auto-dream.d.ts +13 -1
  267. package/dist/services/auto-dream.js +56 -8
  268. package/dist/services/dream-consolidation.d.ts +3 -0
  269. package/dist/services/dream-consolidation.js +14 -2
  270. package/dist/services/index.d.ts +1 -1
  271. package/dist/services/index.js +1 -1
  272. package/dist/services/memory-orchestrator.js +6 -2
  273. package/dist/services/oauth.d.ts +34 -10
  274. package/dist/services/oauth.js +236 -98
  275. package/dist/services/session-memory.d.ts +4 -4
  276. package/dist/services/session-memory.js +13 -10
  277. package/dist/session/memory.d.ts +26 -7
  278. package/dist/session/memory.js +79 -21
  279. package/dist/session/session-manager.d.ts +208 -25
  280. package/dist/session/session-manager.js +1232 -116
  281. package/dist/session/session-message.d.ts +22 -0
  282. package/dist/session/session-message.js +1 -0
  283. package/dist/session/transcript.d.ts +76 -6
  284. package/dist/session/transcript.js +278 -7
  285. package/dist/settings/feature-flags.d.ts +40 -0
  286. package/dist/settings/feature-flags.js +40 -0
  287. package/dist/settings/manager.d.ts +39 -1
  288. package/dist/settings/manager.js +102 -41
  289. package/dist/settings/migrate-config.js +4 -2
  290. package/dist/settings/schema.d.ts +511 -177
  291. package/dist/settings/schema.js +98 -25
  292. package/dist/skills/scanner.d.ts +6 -2
  293. package/dist/skills/scanner.js +160 -9
  294. package/dist/sources/adapter.d.ts +14 -0
  295. package/dist/sources/adapter.js +7 -0
  296. package/dist/sources/adapters/local-files.d.ts +10 -0
  297. package/dist/sources/adapters/local-files.js +127 -0
  298. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  299. package/dist/sources/adapters/mcp-resource.js +41 -0
  300. package/dist/sources/adapters/mock.d.ts +3 -0
  301. package/dist/sources/adapters/mock.js +29 -0
  302. package/dist/sources/binding.d.ts +6 -0
  303. package/dist/sources/binding.js +24 -0
  304. package/dist/sources/catalog.d.ts +6 -0
  305. package/dist/sources/catalog.js +64 -0
  306. package/dist/sources/context-summary.d.ts +8 -0
  307. package/dist/sources/context-summary.js +13 -0
  308. package/dist/sources/credential-status.d.ts +2 -0
  309. package/dist/sources/credential-status.js +13 -0
  310. package/dist/sources/index.d.ts +10 -0
  311. package/dist/sources/index.js +10 -0
  312. package/dist/sources/resolve.d.ts +28 -0
  313. package/dist/sources/resolve.js +47 -0
  314. package/dist/sources/truncate-utf8.d.ts +7 -0
  315. package/dist/sources/truncate-utf8.js +18 -0
  316. package/dist/sources/types.d.ts +71 -0
  317. package/dist/sources/types.js +26 -0
  318. package/dist/testing/fetch-stub.d.ts +32 -0
  319. package/dist/testing/fetch-stub.js +24 -0
  320. package/dist/themes/image.d.ts +18 -0
  321. package/dist/themes/image.js +117 -0
  322. package/dist/themes/index.d.ts +4 -0
  323. package/dist/themes/index.js +4 -0
  324. package/dist/themes/installer.d.ts +50 -0
  325. package/dist/themes/installer.js +290 -0
  326. package/dist/themes/manifest.d.ts +102 -0
  327. package/dist/themes/manifest.js +86 -0
  328. package/dist/themes/paths.d.ts +14 -0
  329. package/dist/themes/paths.js +33 -0
  330. package/dist/tool-system/browser-bridge.d.ts +53 -11
  331. package/dist/tool-system/browser-bridge.js +8 -9
  332. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  333. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  334. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  335. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  336. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  337. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  338. package/dist/tool-system/builtin/agent-progress.js +83 -0
  339. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  340. package/dist/tool-system/builtin/agent-registry.js +178 -9
  341. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  342. package/dist/tool-system/builtin/agent.d.ts +2 -0
  343. package/dist/tool-system/builtin/agent.js +279 -34
  344. package/dist/tool-system/builtin/background-jobs.d.ts +63 -7
  345. package/dist/tool-system/builtin/background-jobs.js +111 -15
  346. package/dist/tool-system/builtin/background-work.d.ts +12 -1
  347. package/dist/tool-system/builtin/background-work.js +12 -1
  348. package/dist/tool-system/builtin/bash.d.ts +3 -5
  349. package/dist/tool-system/builtin/bash.js +14 -6
  350. package/dist/tool-system/builtin/browser-tools.d.ts +8 -5
  351. package/dist/tool-system/builtin/browser-tools.js +89 -23
  352. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  353. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  354. package/dist/tool-system/builtin/edit.d.ts +2 -1
  355. package/dist/tool-system/builtin/edit.js +14 -10
  356. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  357. package/dist/tool-system/builtin/file-cache.js +4 -0
  358. package/dist/tool-system/builtin/generate-image.js +17 -10
  359. package/dist/tool-system/builtin/generate-video.d.ts +4 -0
  360. package/dist/tool-system/builtin/generate-video.js +164 -28
  361. package/dist/tool-system/builtin/glob.d.ts +2 -1
  362. package/dist/tool-system/builtin/glob.js +28 -3
  363. package/dist/tool-system/builtin/grep.d.ts +1 -0
  364. package/dist/tool-system/builtin/grep.js +82 -17
  365. package/dist/tool-system/builtin/image-uploader.js +7 -1
  366. package/dist/tool-system/builtin/index.d.ts +57 -18
  367. package/dist/tool-system/builtin/index.js +280 -167
  368. package/dist/tool-system/builtin/memory.d.ts +6 -0
  369. package/dist/tool-system/builtin/memory.js +36 -15
  370. package/dist/tool-system/builtin/panel.d.ts +9 -0
  371. package/dist/tool-system/builtin/panel.js +314 -0
  372. package/dist/tool-system/builtin/read.js +5 -1
  373. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  374. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  375. package/dist/tool-system/builtin/sources.d.ts +8 -0
  376. package/dist/tool-system/builtin/sources.js +137 -0
  377. package/dist/tool-system/builtin/tool-search.js +7 -2
  378. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  379. package/dist/tool-system/builtin/video-providers.d.ts +12 -15
  380. package/dist/tool-system/builtin/video-providers.js +1 -0
  381. package/dist/tool-system/builtin/view-image.d.ts +2 -2
  382. package/dist/tool-system/builtin/web-fetch.js +60 -15
  383. package/dist/tool-system/builtin/web-search.js +1 -3
  384. package/dist/tool-system/builtin/write.d.ts +2 -1
  385. package/dist/tool-system/builtin/write.js +14 -4
  386. package/dist/tool-system/capability-module.d.ts +93 -0
  387. package/dist/tool-system/capability-module.js +53 -0
  388. package/dist/tool-system/context.d.ts +94 -24
  389. package/dist/tool-system/executor.js +99 -58
  390. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  391. package/dist/tool-system/external-tool-exposure.js +304 -0
  392. package/dist/tool-system/mcp-manager.d.ts +17 -1
  393. package/dist/tool-system/mcp-manager.js +72 -7
  394. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  395. package/dist/tool-system/mcp-tool-policy.js +34 -0
  396. package/dist/tool-system/panel-bridge.d.ts +53 -0
  397. package/dist/tool-system/panel-bridge.js +1 -0
  398. package/dist/tool-system/path-policy.d.ts +19 -0
  399. package/dist/tool-system/path-policy.js +62 -1
  400. package/dist/tool-system/permission.d.ts +69 -3
  401. package/dist/tool-system/permission.js +429 -30
  402. package/dist/tool-system/registry.d.ts +15 -3
  403. package/dist/tool-system/registry.js +82 -40
  404. package/dist/tool-system/sandbox/index.js +3 -8
  405. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  406. package/dist/tool-system/session-tool-host.d.ts +139 -0
  407. package/dist/tool-system/session-tool-host.js +167 -0
  408. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  409. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  410. package/dist/tool-system/validation.d.ts +14 -7
  411. package/dist/tool-system/validation.js +701 -7
  412. package/dist/types.d.ts +201 -20
  413. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  414. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  415. package/dist/utils/file-mutex.d.ts +65 -0
  416. package/dist/utils/file-mutex.js +145 -0
  417. package/dist/utils/json.d.ts +2 -4
  418. package/dist/utils/json.js +2 -4
  419. package/dist/utils/lockfile.d.ts +30 -1
  420. package/dist/utils/lockfile.js +2 -2
  421. package/dist/utils/secret-scrubber.d.ts +8 -0
  422. package/dist/utils/secret-scrubber.js +227 -0
  423. package/dist/utils/toolDisplay.js +1 -1
  424. package/package.json +20 -5
  425. package/THIRD_PARTY_NOTICES.md +0 -206
  426. package/dist/arena/arena.d.ts +0 -43
  427. package/dist/arena/arena.js +0 -333
  428. package/dist/arena/context/context-tools.d.ts +0 -16
  429. package/dist/arena/context/context-tools.js +0 -272
  430. package/dist/arena/context/within-root.d.ts +0 -7
  431. package/dist/arena/context/within-root.js +0 -15
  432. package/dist/arena/detect-mode.d.ts +0 -20
  433. package/dist/arena/detect-mode.js +0 -78
  434. package/dist/arena/digest-builder.d.ts +0 -25
  435. package/dist/arena/digest-builder.js +0 -120
  436. package/dist/arena/index.d.ts +0 -29
  437. package/dist/arena/index.js +0 -29
  438. package/dist/arena/iterate/convergence.d.ts +0 -25
  439. package/dist/arena/iterate/convergence.js +0 -103
  440. package/dist/arena/iterate/formats/index.d.ts +0 -22
  441. package/dist/arena/iterate/formats/index.js +0 -283
  442. package/dist/arena/iterate/index.d.ts +0 -11
  443. package/dist/arena/iterate/index.js +0 -9
  444. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  445. package/dist/arena/iterate/iterative-arena.js +0 -237
  446. package/dist/arena/iterate/parse.d.ts +0 -42
  447. package/dist/arena/iterate/parse.js +0 -123
  448. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  449. package/dist/arena/iterate/phases/argue.js +0 -165
  450. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  451. package/dist/arena/iterate/phases/revise.js +0 -62
  452. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  453. package/dist/arena/iterate/phases/tournament.js +0 -113
  454. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  455. package/dist/arena/iterate/tools/web-tools.js +0 -54
  456. package/dist/arena/iterate/types.d.ts +0 -152
  457. package/dist/arena/iterate/types.js +0 -8
  458. package/dist/arena/ledger.d.ts +0 -47
  459. package/dist/arena/ledger.js +0 -159
  460. package/dist/arena/lenses/architecture.d.ts +0 -5
  461. package/dist/arena/lenses/architecture.js +0 -22
  462. package/dist/arena/lenses/engineering.d.ts +0 -5
  463. package/dist/arena/lenses/engineering.js +0 -22
  464. package/dist/arena/lenses/general.d.ts +0 -5
  465. package/dist/arena/lenses/general.js +0 -20
  466. package/dist/arena/lenses/index.d.ts +0 -16
  467. package/dist/arena/lenses/index.js +0 -47
  468. package/dist/arena/lenses/product.d.ts +0 -5
  469. package/dist/arena/lenses/product.js +0 -22
  470. package/dist/arena/model-presets.d.ts +0 -23
  471. package/dist/arena/model-presets.js +0 -44
  472. package/dist/arena/phases/adjudication.d.ts +0 -24
  473. package/dist/arena/phases/adjudication.js +0 -141
  474. package/dist/arena/phases/build-consensus.d.ts +0 -29
  475. package/dist/arena/phases/build-consensus.js +0 -83
  476. package/dist/arena/phases/claim-registry.d.ts +0 -26
  477. package/dist/arena/phases/claim-registry.js +0 -60
  478. package/dist/arena/phases/cross-review.d.ts +0 -45
  479. package/dist/arena/phases/cross-review.js +0 -218
  480. package/dist/arena/phases/debate-rounds.d.ts +0 -27
  481. package/dist/arena/phases/debate-rounds.js +0 -159
  482. package/dist/arena/phases/participant-research.d.ts +0 -38
  483. package/dist/arena/phases/participant-research.js +0 -314
  484. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
  485. package/dist/arena/phases/planning-detail-expansion.js +0 -119
  486. package/dist/arena/planner.d.ts +0 -27
  487. package/dist/arena/planner.js +0 -311
  488. package/dist/arena/providers/docs.d.ts +0 -7
  489. package/dist/arena/providers/docs.js +0 -111
  490. package/dist/arena/providers/git.d.ts +0 -8
  491. package/dist/arena/providers/git.js +0 -174
  492. package/dist/arena/providers/index.d.ts +0 -32
  493. package/dist/arena/providers/index.js +0 -132
  494. package/dist/arena/providers/none.d.ts +0 -7
  495. package/dist/arena/providers/none.js +0 -11
  496. package/dist/arena/providers/repo.d.ts +0 -7
  497. package/dist/arena/providers/repo.js +0 -258
  498. package/dist/arena/render/session.d.ts +0 -17
  499. package/dist/arena/render/session.js +0 -190
  500. package/dist/arena/render/terminal.d.ts +0 -34
  501. package/dist/arena/render/terminal.js +0 -286
  502. package/dist/arena/strategies/discussion.d.ts +0 -25
  503. package/dist/arena/strategies/discussion.js +0 -143
  504. package/dist/arena/strategies/index.d.ts +0 -15
  505. package/dist/arena/strategies/index.js +0 -28
  506. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  507. package/dist/arena/strategies/language-wrapper.js +0 -102
  508. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  509. package/dist/arena/strategies/lens-wrapper.js +0 -236
  510. package/dist/arena/strategies/planning.d.ts +0 -30
  511. package/dist/arena/strategies/planning.js +0 -225
  512. package/dist/arena/strategies/review.d.ts +0 -26
  513. package/dist/arena/strategies/review.js +0 -168
  514. package/dist/arena/strategies/utils.d.ts +0 -36
  515. package/dist/arena/strategies/utils.js +0 -603
  516. package/dist/arena/tools/selector.d.ts +0 -17
  517. package/dist/arena/tools/selector.js +0 -61
  518. package/dist/arena/transitions.d.ts +0 -53
  519. package/dist/arena/transitions.js +0 -97
  520. package/dist/arena/types.d.ts +0 -514
  521. package/dist/arena/types.js +0 -27
  522. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  523. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  524. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  525. package/dist/cc-orchestrator/cc-capability.js +0 -53
  526. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  527. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  528. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  529. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  530. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  531. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  532. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  533. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  534. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  535. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  536. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  537. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  538. package/dist/cc-orchestrator/index.d.ts +0 -8
  539. package/dist/cc-orchestrator/index.js +0 -8
  540. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  541. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  542. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  543. package/dist/cc-orchestrator/session-discovery.js +0 -125
  544. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  545. package/dist/cc-orchestrator/session-history.js +0 -150
  546. package/dist/cron/cron-runtime.d.ts +0 -2
  547. package/dist/cron/cron-runtime.js +0 -2
  548. package/dist/cron/cron-store.d.ts +0 -2
  549. package/dist/cron/cron-store.js +0 -2
  550. package/dist/cron/scheduler.d.ts +0 -7
  551. package/dist/cron/scheduler.js +0 -7
  552. package/dist/engine/goal.js +0 -206
  553. package/dist/external-agents/config.d.ts +0 -2
  554. package/dist/external-agents/config.js +0 -15
  555. package/dist/external-agents/types.d.ts +0 -31
  556. package/dist/git/parse-log.d.ts +0 -13
  557. package/dist/git/parse-log.js +0 -21
  558. package/dist/git/utils.d.ts +0 -49
  559. package/dist/git/utils.js +0 -161
  560. package/dist/git/worktree/crud.d.ts +0 -69
  561. package/dist/git/worktree/crud.js +0 -206
  562. package/dist/git/worktree/diff.d.ts +0 -14
  563. package/dist/git/worktree/diff.js +0 -82
  564. package/dist/git/worktree/git-exec.d.ts +0 -7
  565. package/dist/git/worktree/git-exec.js +0 -51
  566. package/dist/git/worktree/index.d.ts +0 -5
  567. package/dist/git/worktree/index.js +0 -5
  568. package/dist/git/worktree/query.d.ts +0 -42
  569. package/dist/git/worktree/query.js +0 -121
  570. package/dist/git/worktree/slug.d.ts +0 -11
  571. package/dist/git/worktree/slug.js +0 -58
  572. package/dist/git/worktree.d.ts +0 -1
  573. package/dist/git/worktree.js +0 -5
  574. package/dist/lsp/client.d.ts +0 -41
  575. package/dist/lsp/client.js +0 -186
  576. package/dist/lsp/manager.d.ts +0 -40
  577. package/dist/lsp/manager.js +0 -155
  578. package/dist/lsp/root-path.d.ts +0 -9
  579. package/dist/lsp/root-path.js +0 -12
  580. package/dist/lsp/servers.d.ts +0 -16
  581. package/dist/lsp/servers.js +0 -60
  582. package/dist/prompt/sections/coding.md +0 -35
  583. package/dist/quota/credentials.d.ts +0 -3
  584. package/dist/quota/credentials.js +0 -80
  585. package/dist/quota/index.d.ts +0 -36
  586. package/dist/quota/index.js +0 -155
  587. package/dist/quota/types.d.ts +0 -48
  588. package/dist/quota/types.js +0 -13
  589. package/dist/review/review-prompt.d.ts +0 -28
  590. package/dist/review/review-prompt.js +0 -81
  591. package/dist/state.d.ts +0 -160
  592. package/dist/state.js +0 -267
  593. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  594. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  595. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  596. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  597. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  598. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  599. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  600. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  601. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  602. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  603. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  604. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  605. package/dist/tool-system/builtin/arena.d.ts +0 -31
  606. package/dist/tool-system/builtin/arena.js +0 -415
  607. package/dist/tool-system/builtin/brief.d.ts +0 -6
  608. package/dist/tool-system/builtin/brief.js +0 -41
  609. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  610. package/dist/tool-system/builtin/check-quota.js +0 -34
  611. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  612. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  613. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  614. package/dist/tool-system/builtin/lsp.js +0 -144
  615. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  616. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  617. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  618. package/dist/tool-system/builtin/worktree.js +0 -345
  619. /package/dist/{external-agents → links}/types.js +0 -0
  620. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  621. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -1,22 +1,24 @@
1
1
  /**
2
2
  * Engine — the main facade that wires all components together.
3
3
  */
4
- import type { LLMConfig, StreamCallback } from "../types.js";
4
+ import type { Message, SessionWorkspace } from "../types.js";
5
5
  import { ToolRegistry } from "../tool-system/registry.js";
6
6
  import { type BuiltinToolFn } from "../tool-system/builtin/index.js";
7
+ import { type LiveChildState } from "../tool-system/builtin/agent-registry.js";
7
8
  import { HookRegistry } from "../hooks/registry.js";
8
- import { type GoalConfig, type GoalExtension } from "./goal.js";
9
+ import { type GoalConfig, type GoalExtension } from "../goal/lifecycle.js";
9
10
  import { type CompactStrategy } from "../context/manager.js";
10
- import { SessionManager } from "../session/session-manager.js";
11
+ import { SessionManager, type ForkSessionOptions, type ForkSessionResult, type SummaryForkOptions } from "../session/session-manager.js";
12
+ import type { SessionMessageRouter } from "../session/session-message.js";
11
13
  import type { AskUserFn } from "../tool-system/builtin/ask-user.js";
12
- import type { CapabilityOverride } from "../settings/schema.js";
14
+ import type { CapabilityOverride, CapabilityOverrides } from "../settings/schema.js";
13
15
  import { type FeatureFlagName } from "../settings/feature-flags.js";
14
16
  import type { ToolContext } from "../tool-system/context.js";
15
- import { type SandboxBackend } from "../tool-system/sandbox/index.js";
16
17
  import { ModelPool, type ModelEntry } from "../llm/model-pool.js";
17
18
  import { AgentDefinitionRegistry } from "../agent/agent-definition-registry.js";
18
19
  import { EngineRuntime } from "./runtime.js";
19
- import type { InputAttachmentMeta } from "../protocol/types.js";
20
+ import { type EngineRunOptions } from "./run-types.js";
21
+ import type { InputAttachmentMeta } from "../types.js";
20
22
  /**
21
23
  * Build ScanOptions.compatFileNames from the user's instruction compat toggles.
22
24
  * Primary file name stays hard-wired to CODESHELL.md (not exposed). Turning a
@@ -34,7 +36,7 @@ export interface EnqueueSteerResult {
34
36
  accepted: boolean;
35
37
  id: string;
36
38
  }
37
- export { diskDefaultsFrom, type DiskDefaultPatch } from "../settings/disk-defaults.js";
39
+ export { diskDefaultsFrom, type DiskDefaultPatch } from "./disk-defaults.js";
38
40
  /**
39
41
  * Resolve the LLM config for a spawned child Engine.
40
42
  * - `modelKey` set + present in pool → that model's config (pure entry-derived
@@ -47,30 +49,14 @@ export { diskDefaultsFrom, type DiskDefaultPatch } from "../settings/disk-defaul
47
49
  * Engine directly via EngineConfig.clientDefaults — they do not flow through
48
50
  * this helper because they're not part of LLMConfig anymore.
49
51
  */
50
- export declare function resolveChildLlm(modelKey: string | undefined, pool: ModelPool | undefined, parentLlm: LLMConfig): LLMConfig;
52
+ export { resolveChildLlm, resolveChildToolScope } from "./subagent-spawner.js";
53
+ export { resolveRunCwd } from "./run-workspace.js";
51
54
  /**
52
55
  * Load reusable sub-agent role definitions, merging:
53
56
  * 1. project-level <cwd>/.code-shell/agents/*.md (ships built-ins)
54
57
  * 2. user-level ~/.code-shell/agents/*.md (user wins on name)
55
58
  * Names in `disabledAgents` are filtered out so the LLM never sees them.
56
59
  */
57
- /**
58
- * Resolve the working directory for a run. Precedence for legacy sessions:
59
- * options.cwd > resumed session's state.cwd > config.cwd > process.cwd()
60
- *
61
- * The session-cwd tier is what stops a project-bound session from being
62
- * resumed against the wrong directory: when a host omits options.cwd (e.g. its
63
- * sidebar repo selection drifted to null), the session's own recorded cwd is
64
- * recovered so the engine still loads THAT project's agents/settings/memory,
65
- * not whatever process.cwd() happens to be. Pure so the precedence is testable
66
- * without standing up an Engine.
67
- */
68
- export declare function resolveRunCwd(args: {
69
- optionCwd?: string;
70
- sessionCwd?: string;
71
- configCwd?: string;
72
- processCwd: string;
73
- }): string;
74
60
  export declare function loadAgentDefinitionsForCwd(cwd: string, disabledAgents?: string[], disabledPlugins?: string[]): AgentDefinitionRegistry;
75
61
  /**
76
62
  * #7: apply a project's per-turn builtin capability override to a tool list.
@@ -90,16 +76,25 @@ export declare function applyBuiltinOverrideVisibility<T extends {
90
76
  * - `allowlist` undefined → inherit parent enabled/disabled, always with the
91
77
  * nested-agent tools forced into `disabled` (no grandchildren).
92
78
  */
93
- export declare function resolveChildToolScope(allowlist: string[] | undefined, parentDisabled: string[] | undefined, parentEnabled: string[] | undefined): {
94
- enabled?: string[];
95
- disabled: string[];
96
- };
97
79
  export declare class Engine {
98
80
  private config;
99
81
  private preset;
82
+ /** Capability-free seed owned by the runtime/host; never mutated by an Engine. */
83
+ private runtimeToolRegistry;
84
+ /** Engine-local view containing only this Engine's capability modules. */
100
85
  private toolRegistry;
86
+ private readonly capabilities;
87
+ private readonly toolCatalog;
88
+ private readonly toolGuards;
89
+ /** Per-turn dynamic definition rewriters contributed by builtin exposures. */
90
+ private readonly toolRewriters;
91
+ /** Named per-run behavior profiles (core defaults + config + extensions). */
92
+ private readonly behaviorProfiles;
93
+ private readonly capabilityPromptSections;
94
+ private readonly capabilityDynamicContextProviders;
101
95
  private hooks;
102
96
  private sessionManager;
97
+ private sessionMessageRouter;
103
98
  private mcpManager;
104
99
  private modelPool;
105
100
  /**
@@ -121,19 +116,10 @@ export declare class Engine {
121
116
  private agentDefsCache?;
122
117
  /** Shared resources supplied at construction (adapter pattern — null when self-constructed). */
123
118
  readonly runtime: EngineRuntime | null;
124
- private readonly sandboxCache;
125
- /** Active permission mode for this Engine instance. */
126
- permissionMode: NonNullable<EngineConfig["permissionMode"]>;
127
- /** True when permissionMode === "plan". */
128
- planMode: boolean;
119
+ private readonly runEnvironmentResolver;
120
+ private readonly auxiliaryPipeline;
121
+ private readonly permissionController;
129
122
  private settingsManager;
130
- /**
131
- * Cached auxiliary-task LLM client, keyed by the models[].key it was built
132
- * from. Background calls (memory extraction, auto-dream) reuse it across
133
- * runs so we don't redo the provider handshake every session. Invalidated
134
- * implicitly: a changed auxModelKey produces a different cache key.
135
- */
136
- private auxClientCache?;
137
123
  private lastContextManager;
138
124
  private lastMessages;
139
125
  private lastSessionId;
@@ -154,7 +140,7 @@ export declare class Engine {
154
140
  * LLM response arrives.
155
141
  */
156
142
  private ctxOverheadBySid;
157
- private lastCacheReadBySid;
143
+ private promptCacheDiagnostics;
158
144
  /**
159
145
  * Step-gap steering queue (per sessionId, in-memory). Host pushes user
160
146
  * messages here via enqueueSteer while a run is in flight; the turn loop
@@ -164,7 +150,6 @@ export declare class Engine {
164
150
  * multiple Engines don't interfere and it stays cleanly extractable.
165
151
  */
166
152
  private steerQueueBySid;
167
- private activePermission;
168
153
  /**
169
154
  * The TurnLoop of the in-flight run(), exposed so extendGoalRun() can bump a
170
155
  * running goal's turn/budget ceilings mid-run (TODO 3.1). Null when idle.
@@ -176,18 +161,34 @@ export declare class Engine {
176
161
  * otherwise keep re-blocking the stop). Null when no goal run is active.
177
162
  */
178
163
  private activeGoalHook;
164
+ /** Whether activeGoalHook is currently registered (pause detaches it). */
165
+ private activeGoalHookAttached;
166
+ /** Mutable goal view consumed by the running judge after edits/resume. */
167
+ private activeRuntimeGoal;
168
+ /** Mutable terminal snapshot kept in sync with a mid-run objective edit. */
169
+ private activePersistedRunGoal;
179
170
  /**
180
171
  * The in-flight run's session bundle, held so clearGoal() can wipe the goal
181
172
  * on the SAME instance the run loop is persisting each turn — not a fresh
182
173
  * detached copy from resume(). Without this, a mid-run 清除 clears disk, but
183
174
  * the still-running loop's next saveState(bundle.state) resurrects the goal
184
- * (bundle.state.activeGoal was never dropped). A never-completing goal run
175
+ * (bundle.state.goalLifecycle was never rebased). A never-completing goal run
185
176
  * (judge keeps returning not_met → continueSession) stays live for a long
186
177
  * time, so this write-back race is the norm, not an edge case, for such runs.
187
178
  * Single-valued like activeTurnLoop — one top-level run per engine at a time.
188
179
  * Null when idle; set at run start, cleared in run's finally.
189
180
  */
190
181
  private activeRunSession;
182
+ /**
183
+ * Same-instance run guard. Engine owns single-valued live controls and one
184
+ * HookRegistry, so a second run must not enter until the first has completed
185
+ * all state persistence and end hooks. Cross-instance/process whole-state
186
+ * writers are additionally fenced by SessionManager's persisted revision CAS.
187
+ */
188
+ private runInProgress;
189
+ private agentControlStateListener?;
190
+ private agentDirectionsDeliveredListener?;
191
+ /** Permission update requested while runInProgress. Applied in run() finally. */
191
192
  /** Public accessor so UI/clients can read the resolved per-model window. */
192
193
  get maxContextTokens(): number;
193
194
  private resolveMaxContextTokens;
@@ -251,12 +252,22 @@ export declare class Engine {
251
252
  * Must be called before run().
252
253
  */
253
254
  registerCustomTool(definition: import("../types.js").RegisteredTool, executor: BuiltinToolFn): void;
255
+ /** Dispatch a host-installed capability query without teaching core its name. */
256
+ queryCapability(type: string, params?: Readonly<Record<string, unknown>>): Promise<{
257
+ handled: false;
258
+ } | {
259
+ handled: true;
260
+ data: unknown;
261
+ }>;
254
262
  /**
255
263
  * Inject the askUser handler after construction. Used by AgentServer
256
264
  * to wire its protocol-backed askUser into an Engine that was created
257
265
  * before the server existed (chicken-and-egg: server takes engine in ctor).
258
266
  */
259
267
  setAskUser(fn: AskUserFn | undefined): void;
268
+ /** Internal child-runtime seam used by the single-writer supervisor. */
269
+ setAgentControlStateListener(listener: ((state: LiveChildState) => void) | undefined): void;
270
+ setAgentDirectionsDeliveredListener(listener: ((envelopeIds: string[]) => void) | undefined): void;
260
271
  /**
261
272
  * Inject the browser automation bridge after construction (same chicken-and-egg
262
273
  * as setAskUser: the desktop host builds the bridge — which drives a webview —
@@ -266,6 +277,10 @@ export declare class Engine {
266
277
  setBrowserBridge(bridge: import("../tool-system/browser-bridge.js").BrowserBridge | undefined): void;
267
278
  /** Inject the host-backed workspace bridge after construction. */
268
279
  setWorkspaceBridge(bridge: import("../tool-system/workspace-bridge.js").WorkspaceBridge | undefined): void;
280
+ /** Inject the host-backed panel discovery/focus bridge after construction. */
281
+ setPanelBridge(bridge: import("../tool-system/panel-bridge.js").PanelHostBridge | undefined): void;
282
+ /** Inject the host router used by SendMessageToSession. */
283
+ setSessionMessageRouter(router: SessionMessageRouter | undefined): void;
269
284
  /**
270
285
  * Queue a user message to be spliced into the in-flight run for `sessionId`
271
286
  * at the next turn-loop step boundary — the 不打断 steering path (vs cancel +
@@ -298,6 +313,8 @@ export declare class Engine {
298
313
  * in-process AgentServer to decide whether to wire an interactive askUser.
299
314
  */
300
315
  isHeadless(): boolean;
316
+ get permissionMode(): NonNullable<EngineConfig["permissionMode"]>;
317
+ get planMode(): boolean;
301
318
  /**
302
319
  * Probe whether a session already exists on disk (its state/transcript dir is
303
320
  * present). Used by the protocol server to distinguish "resume an existing
@@ -306,73 +323,136 @@ export declare class Engine {
306
323
  * against a blank session. A stat probe, not a load.
307
324
  */
308
325
  sessionExistsOnDisk(sessionId: string): boolean;
309
- /**
310
- * Run a task from start to finish.
311
- */
312
- run(task: string, options?: {
313
- cwd?: string;
314
- onStream?: StreamCallback;
315
- signal?: AbortSignal;
316
- sessionId?: string;
317
- /**
318
- * Goal mode for this run: the engine registers a GoalStopHook so the
319
- * turn loop runs until the session model judges this goal met. Falls
320
- * back to config.goal. Orthogonal to permissionMode. Accepts a raw
321
- * string or a full GoalConfig; normalized once at the run boundary.
322
- */
323
- goal?: string | GoalConfig;
324
- /**
325
- * Marks this turn's task as a SYNTHETIC system-reminder injection (e.g. a
326
- * background-job completion notification the server re-injects to wake an
327
- * idle session) rather than the user's own input. The task is still sent
328
- * to the model as a `role:"user"` message, but it is persisted with an
329
- * `injected` flag so the disk reader skips rendering it as a user bubble
330
- * on replay (matching the live UI, which shows only the assistant reply).
331
- */
332
- injected?: boolean;
333
- /** Stable id for this user-intent, used to make duplicate submits idempotent. */
334
- clientMessageId?: string;
335
- /** Structured input attachments. Legacy `<codeshell-image>` blocks remain supported. */
336
- attachments?: InputAttachmentMeta[];
337
- }): Promise<EngineResult>;
338
- /**
339
- * Run the end-of-session memory pipeline as a fire-and-forget background
340
- * task. Extracts durable memories from the transcript, saves a session
341
- * summary, and conditionally triggers auto-dream consolidation.
342
- */
343
- /**
344
- * Resolve the LLM client for background/auxiliary work (memory extraction,
345
- * auto-dream). When settings.defaults.auxText names a valid pool model, build
346
- * (and cache) a dedicated client for it so per-turn book-keeping runs on a cheap
347
- * fast model instead of the expensive primary. Falls back to `fallback` (the
348
- * active run's client) when unset, unknown, or on any build failure — aux
349
- * work is best-effort and must never break a run.
350
- */
351
- /**
352
- * Build the SummarizeFn used for context compaction. Extracted so both the
353
- * run path and forceCompact share one definition of the summarization call.
354
- */
326
+ forkSession(sourceSessionId: string, options?: ForkSessionOptions): ForkSessionResult;
327
+ selectContextPackage(sourceSessionId: string, range: {
328
+ fromEventId: string;
329
+ toEventId: string;
330
+ }): ReturnType<SessionManager["selectContextPackage"]>;
331
+ createSummaryFork(sourceSessionId: string, options: SummaryForkOptions): ForkSessionResult;
332
+ /** Summarize a selected transcript package using the configured aux tier. */
333
+ summarizeContextPackage(messages: Message[], signal?: AbortSignal, sourceSessionId?: string): Promise<{
334
+ summary: string;
335
+ estimatedTokens: number;
336
+ }>;
337
+ /** Restore a cold Engine's configured model from persisted source state without resetting usage. */
338
+ restoreSessionModel(sessionId: string): void;
339
+ /**
340
+ * Run a task from start to finish. Rejects immediately when this Engine
341
+ * instance already has a run in progress; hosts that want queueing own that
342
+ * policy (for example ChatSession's FIFO queue).
343
+ */
344
+ run(task: string, options?: EngineRunOptions): Promise<EngineResult>;
345
+ /**
346
+ * Resolve the run's active behavior profile. A profile bound to the
347
+ * persisted session kind wins (so e.g. a resumed pet session keeps the safe
348
+ * profile even when the host omits behaviorMode); otherwise the explicit
349
+ * behaviorMode names a registered profile directly. Explicit unknown modes
350
+ * and non-work session kinds without an owning profile fail closed: silently
351
+ * falling back to an unrestricted run would turn a missing extension into a
352
+ * permission-boundary bypass.
353
+ */
354
+ private resolveBehaviorProfile;
355
+ private runExclusive;
356
+ /** A receipt write failure must not turn an already finalized model result
357
+ * into a second synthetic failure (or reject the Engine.run contract). */
358
+ private appendClientRunReceipt;
359
+ /**
360
+ * Terminal success path: forward to {@link finalizeRunSuccess} with the
361
+ * engine-bound persistence / memory / hook closures filled in. Extracted from
362
+ * the {@link runExclusive} skeleton so the terminal-state assembly reads as a
363
+ * single call; behavior is unchanged.
364
+ */
365
+ private finalizeRun;
366
+ /**
367
+ * Build the stream callback that wraps the caller's `onStream`: it snapshots
368
+ * TodoWrite `task_update` events for TaskGuard and persists `goal_progress`
369
+ * events to the transcript before delegating. Extracted verbatim from the
370
+ * {@link runExclusive} skeleton; the todo buffer and (not-yet-open) session
371
+ * are reached through the `setLatestTodos` / `getSession` accessors.
372
+ */
373
+ private buildWrappedOnStream;
374
+ /**
375
+ * Run the turn loop once, apply its goal termination, and — for a top-level
376
+ * headless run only — drain background sub-agents before resolving. Extracted
377
+ * verbatim from the body of the {@link runExclusive} try block; the cleanup
378
+ * `finally` stays in the skeleton so the run-scoped hook/loop teardown is
379
+ * guaranteed regardless of how this method returns or throws.
380
+ */
381
+ private runTurnLoopWithHeadlessDrain;
382
+ /**
383
+ * Stamp the resolved session identity and session-scoped side-effect sinks
384
+ * onto the run's {@link ToolContext}, now that the session bundle is open.
385
+ * Extracted verbatim from the {@link runExclusive} skeleton.
386
+ */
387
+ private stampRunToolContext;
388
+ /** Attach a closed-set, host-routed Session message sender to this run. */
389
+ private attachSessionMessageService;
390
+ /**
391
+ * Await the parallel prompt/context assembly (LLM client handshake, system
392
+ * prompt, dynamic + user context messages), splice the hook-injected and
393
+ * context messages into `messages`, publish this run's last-session snapshot,
394
+ * and prime the {@link ContextManager}'s transcript path + replacement state.
395
+ * Extracted verbatim from the {@link runExclusive} skeleton.
396
+ */
397
+ private assembleRunPrompts;
398
+ /**
399
+ * Seed the run's {@link ContextManager}, emit the early `session_started`
400
+ * event, replay the last TodoWrite snapshot on resume, kick off the LLM client
401
+ * handshake, and build the permission-gated {@link ToolExecutor}. Extracted
402
+ * verbatim from the {@link runExclusive} skeleton; the todo snapshot is read
403
+ * and written through the `getLatestTodos` / `setLatestTodos` accessors so the
404
+ * outer wrapped-onStream and TaskGuard keep observing the same buffer.
405
+ */
406
+ private wireRunContextAndPermission;
407
+ /**
408
+ * Resolve the run sandbox, construct the child sub-agent spawner (the sole
409
+ * `new Engine(...)` call path, kept in engine.ts so the protocol bypass guard
410
+ * stays satisfied), and assemble the per-run {@link ToolContext}. Extracted
411
+ * verbatim from the {@link runExclusive} skeleton; the session bundle is read
412
+ * lazily via `getSession` because it is opened after this wiring runs.
413
+ */
414
+ private wireRunSandboxToolContext;
415
+ /**
416
+ * Wire every run-scoped dependency the turn loop needs: usage accounting +
417
+ * summarizer, the {@link ModelFacade}, the file-history hook, the
418
+ * `on_agent_start` hook, goal resolution / arming, the {@link TurnLoop} itself,
419
+ * and the goal-termination applier. Extracted verbatim from the
420
+ * {@link runExclusive} skeleton; the goal slots, judge-context buffer and usage
421
+ * baseline are fully local here — only the values the try/finally + finalize
422
+ * phases consume cross back out.
423
+ */
424
+ private wireRunLoop;
425
+ /**
426
+ * Record the session start and fire the once-per-run `on_session_start` and
427
+ * per-turn `user_prompt_submit` / `agent_direction_submit` hooks, applying any
428
+ * `updatedPrompt` rewrite in place on `messages`. Extracted verbatim from the
429
+ * {@link runExclusive} skeleton; returns the combined hook-injected messages
430
+ * for {@link assembleRunMessages}.
431
+ */
432
+ private runSessionStartHooks;
433
+ /**
434
+ * Resolve goal visibility, disabled skill/plugin lists, build the
435
+ * {@link PromptComposer}, connect MCP, and assemble the visibility-filtered
436
+ * tool defs for this run. Extracted verbatim from the {@link runExclusive}
437
+ * skeleton; the intermediate visibility/disabled/mcp values are fully local to
438
+ * this method — only the composer and tool defs cross back out.
439
+ */
440
+ private wireRunTooling;
441
+ /**
442
+ * Assemble the run-scoped {@link TurnLoop} (its dependency object + option
443
+ * object) from the per-run locals gathered in {@link runExclusive}. Extracted
444
+ * verbatim from the orchestration skeleton so `runExclusive` stays a readable
445
+ * sequence of phase calls; the buffered-compaction `let` lives entirely inside
446
+ * here now, and the only value crossing back out is the goal-judge context,
447
+ * published through the `publishGoalJudgeContext` callback.
448
+ */
449
+ private buildTurnLoop;
355
450
  private buildSummarizeFn;
356
451
  private resolveAuxClient;
357
452
  private runMemoryPipeline;
358
- /**
359
- * Drive the auto-dream tool-call loop.
360
- *
361
- * Runs the LLM with a whitelisted subset of memory tools (MemoryList,
362
- * MemoryRead, MemorySave, MemoryDelete). The loop is intentionally small
363
- * and offline:
364
- * - No streaming, no UI events — runs in the background after a session.
365
- * - No permission prompts — UI isn't attached, so we hard-reject any
366
- * attempt to Save/Delete in the "user" scope before dispatching. Dream
367
- * scope is the LLM's workspace and goes through freely.
368
- * - Capped at MAX_TURNS LLM round-trips and MAX_WRITES total
369
- * mutations to bound damage on misbehavior.
370
- *
371
- * Returns true if the loop ran (with or without writes); false if we
372
- * bailed before the first LLM call (e.g. registry missing the tools).
373
- */
374
- private runDreamLoop;
375
453
  getToolRegistry(): ToolRegistry;
454
+ /** Registry suitable for constructing EngineRuntime; excludes local capabilities. */
455
+ getRuntimeToolRegistry(): ToolRegistry;
376
456
  /**
377
457
  * Switch the active model by pool key. Takes effect on the next run() call.
378
458
  * Returns the new model entry.
@@ -382,7 +462,9 @@ export declare class Engine {
382
462
  * only live in memory and every restart reverts to the previously persisted
383
463
  * defaults.text.
384
464
  */
385
- switchModel(key: string): ModelEntry;
465
+ switchModel(key: string, opts?: {
466
+ persist?: boolean;
467
+ }): ModelEntry;
386
468
  /**
387
469
  * Zero the legacy/model-scoped token/cache usage window on disk. The
388
470
  * whole-session cumulative counters are intentionally left alone.
@@ -403,6 +485,23 @@ export declare class Engine {
403
485
  getCurrentModel(): string;
404
486
  getHookRegistry(): HookRegistry;
405
487
  getSessionManager(): SessionManager;
488
+ /**
489
+ * Apply a field-level disk update and rebase this Engine's matching live
490
+ * bundle onto the returned revision so its next whole-state CAS can proceed.
491
+ */
492
+ private updatePersistedSessionState;
493
+ /**
494
+ * Adopt the exact persisted snapshot that won a Goal-control CAS without
495
+ * discarding counters which the current run has advanced since its previous
496
+ * heartbeat. Merely copying the new stateRevision is unsafe: the next
497
+ * whole-state save would then be allowed to publish stale title/workspace
498
+ * metadata over a concurrent field-level writer.
499
+ */
500
+ private rebaseActiveRunAfterGoalUpdate;
501
+ private persistGoalTerminal;
502
+ private persistGoalTerminalOutcome;
503
+ private persistFinalRunState;
504
+ private persistRunProgress;
406
505
  getConfig(): EngineConfig;
407
506
  /**
408
507
  * Config hot-reload "layer 2": merge a disk-default config patch into this
@@ -426,7 +525,7 @@ export declare class Engine {
426
525
  * the main user-visible preset effect and it IS hot. The toolRegistry's
427
526
  * builtin tool SET, however, is ctor-frozen (and may be shared via runtime):
428
527
  * it is NOT rebuilt here. So a preset change that alters the builtin tool set
429
- * (e.g. general terminal-coding adds LSP/Brief) only takes effect on the
528
+ * (e.g. switching to a capability-contributed preset adds tools) only takes effect on the
430
529
  * next session restart; we log a warning when that case is detected.
431
530
  *
432
531
  * disk-default-vs-slice caveat (#8): the patch carries pure DISK-default
@@ -453,28 +552,51 @@ export declare class Engine {
453
552
  * Read a session's persisted active goal WITHOUT resuming it (cheap — reads
454
553
  * only state.json via SessionManager.readActiveGoal). The desktop host calls
455
554
  * this on session load to re-surface the goal block + its Cancel button: a
456
- * persistent goal lives only in state.activeGoal and is never replayed from
555
+ * persistent goal lives only in state.goalLifecycle and is never replayed from
457
556
  * the transcript, so after a reload of an aborted goal run the UI would
458
557
  * otherwise show nothing (the "goal 还在但页面不显示、取消不了" bug). Returns
459
558
  * undefined when the session is unknown or has no active goal.
460
559
  */
461
560
  getGoal(sessionId: string): GoalConfig | undefined;
561
+ /** True when the current run was built with Goal prompt/tools and can resume in place. */
562
+ canResumeGoalInPlace(sessionId: string): boolean;
563
+ /**
564
+ * Edit or pause/resume a persisted goal. Mid-run edits use the same step-gap
565
+ * delivery seam as Steer: the current model/tool call is not aborted, and the
566
+ * updated objective is injected before the next model step. Pausing detaches
567
+ * the goal judge and stops this run before another model request is started.
568
+ */
569
+ updateGoal(sessionId: string, patch: {
570
+ objective?: string;
571
+ paused?: boolean;
572
+ expectedGoalId?: string;
573
+ expectedRevision?: number;
574
+ }): GoalConfig | undefined;
462
575
  /**
463
576
  * Clear a session's persisted active goal (CC `/goal clear`). Works whether
464
577
  * the session is idle or its goal run is in flight: it wipes
465
- * `state.activeGoal` (so the next bare send won't re-inherit it) and, if a
578
+ * `state.goalLifecycle` (so the next bare send won't re-inherit it) and, if a
466
579
  * goal hook is currently registered for this engine, unregisters it so an
467
580
  * in-flight run can stop instead of being re-blocked by the now-cleared goal.
468
581
  * Returns true if a goal was actually cleared. Idempotent — clearing a
469
582
  * session with no active goal is a no-op returning false.
470
583
  */
471
- clearGoal(sessionId: string): boolean;
584
+ clearGoal(sessionId: string, expected?: {
585
+ goalId?: string;
586
+ revision?: number;
587
+ }): boolean;
588
+ /**
589
+ * Persist a workspace pointer through the Engine that owns the live bundle.
590
+ * Host-side workspace actions use this RPC-facing seam so advancing the disk
591
+ * revision also rebases the active run before its next progress write.
592
+ */
593
+ setSessionWorkspace(sessionId: string, workspace: SessionWorkspace): SessionWorkspace | null;
472
594
  /**
473
595
  * Reset a session's workspace pointer back to its main root. If the session is
474
596
  * actively running, mutate that live SessionBundle first so the run's next
475
597
  * saveState cannot resurrect a stale worktree pointer.
476
598
  */
477
- releaseSessionWorkspace(sessionId: string): import("../types.js").SessionWorkspace | null;
599
+ releaseSessionWorkspace(sessionId: string): SessionWorkspace | null;
478
600
  injectContext(sessionId: string, content: string): void;
479
601
  /**
480
602
  * Force context compaction on a session.
@@ -485,7 +607,38 @@ export declare class Engine {
485
607
  after: number;
486
608
  strategy: "none (no active session)" | "no compaction needed" | "compacted" | CompactStrategy;
487
609
  }>;
488
- private stripInjectedContextMessages;
610
+ /**
611
+ * Lazily build (or reuse) the ContextManager for a resumed session and wire a
612
+ * PRIMARY-model summarizeFn onto it. Shared by forceCompact and
613
+ * archiveTurnRange: both need a summarizer on a session that may have been
614
+ * resumed-but-never-run (so no run wired one), and both bill compaction usage
615
+ * against the session.
616
+ *
617
+ * The PRIMARY model is used deliberately — automatic background compaction
618
+ * routes to the cheap aux model, but a user-/host-initiated compaction or
619
+ * range archival is low-frequency and demands fidelity (a dropped decision =
620
+ * the conversation "forgets"). Client-construction failure is logged and
621
+ * swallowed so the caller degrades gracefully (forceSummarize falls back to
622
+ * snip/window; summarizeRange returns the input untouched).
623
+ */
624
+ private prepareContextManagerForSession;
625
+ /**
626
+ * Archive a caller-chosen contiguous message-index window `[range.start,
627
+ * range.end)` of a session into a single anchored summary, leaving everything
628
+ * outside the window untouched, and cache the result so a later
629
+ * forceCompact/resume reads the archived history. This is a generic
630
+ * range-archival facade over ContextManager.summarizeRange — the caller
631
+ * decides which span to collapse (the range is a half-open message-index
632
+ * window, matching summarizeRange). Returns token stats before/after; equal
633
+ * before/after means the window was empty or the summary was rejected.
634
+ */
635
+ archiveTurnRange(sessionId: string, range: {
636
+ start: number;
637
+ end: number;
638
+ }): Promise<{
639
+ before: number;
640
+ after: number;
641
+ }>;
489
642
  private recordCacheReadDiagnostics;
490
643
  private getSettingsManager;
491
644
  /**
@@ -493,15 +646,14 @@ export declare class Engine {
493
646
  */
494
647
  updateConfig(key: string, value: unknown): void;
495
648
  /**
496
- * Read a settings value by dotted key (e.g. "arena.participants").
649
+ * Read a settings value by dotted key (e.g. "capabilities.foo.enabled").
497
650
  * Returns undefined if any segment is missing.
498
651
  */
499
652
  readSetting(key: string): unknown;
500
- private buildPermissionConfig;
501
653
  /**
502
- * Switch permission mode at runtime. Takes effect immediately for any
503
- * in-flight ToolExecutor (which holds a reference to the same classifier),
504
- * and the new mode is used for any subsequent run() calls.
654
+ * Switch permission mode at runtime. Idle updates apply immediately; busy
655
+ * updates are committed atomically when the current run settles, so its
656
+ * classifier and ToolContext retain the immutable start-of-run snapshot.
505
657
  * Session-only — does not persist to settings.
506
658
  */
507
659
  setPermissionMode(mode: NonNullable<EngineConfig["permissionMode"]>): void;
@@ -585,64 +737,7 @@ export declare class Engine {
585
737
  * overlays turn-specific fields like sandbox and subAgentSpawner) and
586
738
  * by tests that want a ToolContext without a full run() cycle.
587
739
  */
588
- private resolveSandboxWithoutRuntime;
589
- private resolveSandboxConfigForCwd;
590
- /**
591
- * Build the shell env layered onto the Bash tool / background shells (see
592
- * mergeShellEnv). Three user-configured sources, merged lowest → highest:
593
- *
594
- * 1. project `localEnvironment.env` — the per-project "local environment"
595
- * panel (DATABASE_URL etc.); the floor, so a project's own panel values
596
- * can be overridden by an explicit top-level `env`.
597
- * 2. global top-level `env` — ~/.code-shell/settings.json; the
598
- * canonical home for API keys (OPENAI_API_KEY) a skill script reads —
599
- * configure once, every project's skills get it.
600
- * 3. project top-level `env` — .code-shell/settings.json; a project
601
- * that wants to override a global key wins.
602
- *
603
- * Each scope is read UNMERGED so the layering here is the single source of
604
- * precedence (getForScope merges nothing). Returns undefined when no layer
605
- * contributes a key, so the caller passes it through unchanged for projects
606
- * that configure none.
607
- *
608
- * Sub-agents: a sub-agent is the user's OWN agent doing the user's work
609
- * (mirrors Claude Code, where sub-agents inherit the parent environment), so
610
- * it now reads the SAME env as the parent. The sub-agent branch is kept as an
611
- * explicit seam (`filterSubagentEnv`) rather than removed — a future policy
612
- * could narrow what a sub-agent sees (e.g. drop credential secrets) by
613
- * changing that one hook; today it passes everything through unchanged.
614
- * A no-cwd context still gets nothing (there is genuinely no project to read).
615
- *
616
- * None of these is filtered through the deny regex (mergeShellEnv): the user
617
- * put them there deliberately. The allowlist/deny machinery only guards the
618
- * host's process.env from a tainted model exfiltrating it via `env | curl`.
619
- */
620
- private readShellEnv;
621
- /**
622
- * Policy seam for what a sub-agent's shell sees. A sub-agent inherits the
623
- * parent environment by default (mirrors Claude Code), so this is the
624
- * identity function today. It exists so a future policy can narrow the set
625
- * (e.g. strip credential `exposeAsEnv` secrets, or allowlist by name) in ONE
626
- * place instead of scattering `isSubAgent` checks through readShellEnv.
627
- */
628
- private filterSubagentEnv;
629
- /**
630
- * Read the project's `localEnvironment.setupScripts` for this cwd (the raw
631
- * per-platform map). Used by EnterWorktree to run setup once in a freshly
632
- * created worktree. Returns undefined for sub-agents / no cwd (same minimal
633
- * surface as readShellEnv). The platform selection + run live in
634
- * git/worktree.ts; this only fetches the configured scripts.
635
- */
636
- readWorktreeSetupScripts(cwd?: string): {
637
- default?: string;
638
- macos?: string;
639
- linux?: string;
640
- windows?: string;
641
- } | undefined;
642
- readWorktreeBranchPrefix(cwd?: string): string | undefined;
643
- resolveWorktreeSetupSandbox(cwd: string): Promise<SandboxBackend | undefined>;
644
- readWorktreeSetupShellEnv(cwd?: string): Record<string, string> | undefined;
645
- buildToolContext(): ToolContext;
740
+ buildToolContext(cwd?: string, explicitProfileOverrides?: CapabilityOverrides, profileMemoryDir?: string): ToolContext;
646
741
  /**
647
742
  * Read settings.disabledSkills + settings.disabledPlugins in a single
648
743
  * pass. Sub-agents skip both for the same reason they skip
@@ -684,11 +779,4 @@ export declare class Engine {
684
779
  * falls back to its built-in defaults.
685
780
  */
686
781
  private readMemoriesConfig;
687
- /**
688
- * LLM client for memory extraction (TODO 8.1). Prefers
689
- * settings.memories.extractionModel when it names a valid pool model;
690
- * otherwise falls back to the aux client (which itself falls back to the
691
- * passed primary). Build failures fall back too — extraction is best-effort.
692
- */
693
- private resolveExtractionClient;
694
782
  }