@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
@@ -20,7 +20,9 @@
20
20
  * loops run in the main engine process, so start/finish and the engine's wait
21
21
  * loop observe the same instance.
22
22
  */
23
- import { normalizeCwdPath } from "../../cc-orchestrator/cwd-normalize.js";
23
+ import { normalizeCwdPath } from "../../utils/cwd-normalize.js";
24
+ import { execFileSync } from "node:child_process";
25
+ import { resolveGit } from "../../utils/exec.js";
24
26
  function isValidSessionId(sid) {
25
27
  return typeof sid === "string" && sid.length > 0;
26
28
  }
@@ -28,6 +30,32 @@ function isValidSessionId(sid) {
28
30
  * UX limit; a human never spawns this many background jobs in one session. */
29
31
  const MAX_TERMINAL_JOBS_PER_SESSION = 50;
30
32
  const CANCEL_WAIT_TIMEOUT_MS = 5_000;
33
+ /** Resolve once at registration/query time. Git failures and non-git paths
34
+ * intentionally collapse to the legacy normalized-cwd identity. */
35
+ function resolveEffectiveWorkspaceIdentity(cwd) {
36
+ const normalizedCwd = normalizeCwdPath(cwd);
37
+ try {
38
+ const output = execFileSync(resolveGit(), ["rev-parse", "--path-format=absolute", "--show-toplevel", "--git-common-dir"], {
39
+ cwd: normalizedCwd,
40
+ encoding: "utf-8",
41
+ timeout: 5_000,
42
+ stdio: ["ignore", "pipe", "ignore"],
43
+ }).trim();
44
+ const [rawRoot, rawCommonDir] = output.split(/\r?\n/);
45
+ if (rawRoot && rawCommonDir) {
46
+ return {
47
+ root: normalizeCwdPath(rawRoot),
48
+ kind: "git-worktree",
49
+ gitCommonDir: normalizeCwdPath(rawCommonDir),
50
+ };
51
+ }
52
+ }
53
+ catch {
54
+ // Non-git, missing git, deleted cwd, and timeouts all retain legacy cwd
55
+ // comparison semantics. Conflict detection must never break job launch.
56
+ }
57
+ return { root: normalizedCwd, kind: "cwd" };
58
+ }
31
59
  function isActiveStatus(status) {
32
60
  return status === "running" || status === "cancelling";
33
61
  }
@@ -59,6 +87,14 @@ class BackgroundJobRegistry {
59
87
  start(jobId, sessionId, description = "", options) {
60
88
  if (!isValidSessionId(sessionId))
61
89
  return;
90
+ const rawLaunchCwd = options?.launchCwd ?? options?.cwd;
91
+ const launchCwd = rawLaunchCwd ? normalizeCwdPath(rawLaunchCwd) : undefined;
92
+ const effectiveWorkspaceCwd = options?.effectiveWorkspaceCwd
93
+ ? normalizeCwdPath(options.effectiveWorkspaceCwd)
94
+ : launchCwd;
95
+ const workspaceIdentity = effectiveWorkspaceCwd
96
+ ? resolveEffectiveWorkspaceIdentity(effectiveWorkspaceCwd)
97
+ : undefined;
62
98
  this.jobs.set(jobId, {
63
99
  jobId,
64
100
  sessionId,
@@ -66,9 +102,29 @@ class BackgroundJobRegistry {
66
102
  description,
67
103
  status: "running",
68
104
  startedAt: Date.now(),
69
- ...(options?.cwd ? { cwd: normalizeCwdPath(options.cwd) } : {}),
105
+ ...(launchCwd ? { launchCwd, cwd: launchCwd } : {}),
106
+ ...(effectiveWorkspaceCwd ? { effectiveWorkspaceCwd } : {}),
107
+ ...(options?.workspaceRoot ? { workspaceRoot: normalizeCwdPath(options.workspaceRoot) } : {}),
108
+ ...(workspaceIdentity
109
+ ? {
110
+ effectiveWorkspaceRoot: workspaceIdentity.root,
111
+ effectiveWorkspaceKind: workspaceIdentity.kind,
112
+ ...(workspaceIdentity.gitCommonDir
113
+ ? { gitCommonDir: workspaceIdentity.gitCommonDir }
114
+ : {}),
115
+ }
116
+ : {}),
70
117
  ...(options?.promptSummary ? { promptSummary: options.promptSummary } : {}),
71
118
  ...(options?.cli ? { cli: options.cli } : {}),
119
+ ...(options?.isolation ? { isolation: options.isolation } : {}),
120
+ ...(options?.worktreePath ? { worktreePath: normalizeCwdPath(options.worktreePath) } : {}),
121
+ ...(options?.worktreeBranch ? { worktreeBranch: options.worktreeBranch } : {}),
122
+ ...(options?.worktreeBaseRef ? { worktreeBaseRef: options.worktreeBaseRef } : {}),
123
+ ...(options?.worktreeCleanup ? { worktreeCleanup: options.worktreeCleanup } : {}),
124
+ ...(options?.worktreeBranchPrefix
125
+ ? { worktreeBranchPrefix: options.worktreeBranchPrefix }
126
+ : {}),
127
+ ...(options?.worktreePath ? { worktreeLifecycle: "running" } : {}),
72
128
  ...(options?.originClientMessageId
73
129
  ? { originClientMessageId: options.originClientMessageId }
74
130
  : {}),
@@ -92,6 +148,9 @@ class BackgroundJobRegistry {
92
148
  entry.ccSessionId = outcome.ccSessionId;
93
149
  if (outcome?.changedFiles !== undefined)
94
150
  entry.changedFiles = outcome.changedFiles;
151
+ if (outcome?.worktreeLifecycle !== undefined) {
152
+ entry.worktreeLifecycle = outcome.worktreeLifecycle;
153
+ }
95
154
  this.evictTerminalOverCap(entry.sessionId);
96
155
  this.notify();
97
156
  }
@@ -108,6 +167,17 @@ class BackgroundJobRegistry {
108
167
  if (artifacts.changedFiles !== undefined)
109
168
  entry.changedFiles = artifacts.changedFiles;
110
169
  }
170
+ /** Update retained DriveAgent lifecycle state after an explicit cleanup. */
171
+ recordWorktreeLifecycle(jobId, lifecycle, note) {
172
+ const entry = this.jobs.get(jobId);
173
+ if (!entry || !entry.worktreePath)
174
+ return false;
175
+ entry.worktreeLifecycle = lifecycle;
176
+ if (note)
177
+ entry.finalText = `${entry.finalText ? `${entry.finalText}\n\n` : ""}[worktree lifecycle] ${note}`;
178
+ this.notify();
179
+ return true;
180
+ }
111
181
  async cancel(jobId, outcome) {
112
182
  const entry = this.jobs.get(jobId);
113
183
  if (!entry)
@@ -152,10 +222,32 @@ class BackgroundJobRegistry {
152
222
  listRunningForSession(sessionId) {
153
223
  return [...this.jobs.values()].filter((e) => e.sessionId === sessionId && isActiveStatus(e.status));
154
224
  }
155
- /** Running jobs, across all sessions, that are operating in the same cwd. */
225
+ /** Running jobs, across all sessions, in the same effective workspace.
226
+ *
227
+ * Git paths compare by canonical worktree root, so sibling launch directories
228
+ * collide while distinct linked worktrees do not. A declared
229
+ * effectiveWorkspaceCwd takes precedence over launchCwd. If either side could
230
+ * not be resolved through git, exact launch-cwd matching remains the
231
+ * conservative back-compatible fallback. */
156
232
  listRunningByCwd(cwd) {
233
+ return this.listByWorkspaceCwd(cwd).filter((e) => isActiveStatus(e.status));
234
+ }
235
+ /** Running and retained terminal jobs in the effective workspace containing
236
+ * cwd. Used by DriveAgentJobs' cross-session cwd filter. */
237
+ listByWorkspaceCwd(cwd) {
157
238
  const normalized = normalizeCwdPath(cwd);
158
- return [...this.jobs.values()].filter((e) => isActiveStatus(e.status) && e.cwd === normalized);
239
+ const queryIdentity = resolveEffectiveWorkspaceIdentity(normalized);
240
+ return [...this.jobs.values()].filter((e) => {
241
+ if (e.effectiveWorkspaceRoot === queryIdentity.root)
242
+ return true;
243
+ if (e.effectiveWorkspaceKind === "git-worktree" && queryIdentity.kind === "git-worktree") {
244
+ return false;
245
+ }
246
+ // Mixed git-resolution states compare the declared effective cwd
247
+ // snapshot. Only entries created before that field existed fall back to
248
+ // the legacy launch cwd alias.
249
+ return (e.effectiveWorkspaceCwd ?? e.launchCwd ?? e.cwd) === normalized;
250
+ });
159
251
  }
160
252
  /** All jobs (running + retained terminal) for `sessionId`. Feeds the panel. */
161
253
  listForSession(sessionId) {
@@ -56,6 +56,12 @@ export type BackgroundWorkEntry = WithSource<{
56
56
  externalSessionId?: string;
57
57
  cli?: ExternalCliKind;
58
58
  cwd?: string;
59
+ isolation?: "current" | "worktree" | "none";
60
+ worktreePath?: string;
61
+ worktreeBranch?: string;
62
+ worktreeBaseRef?: string;
63
+ worktreeCleanup?: "auto" | "keep" | "detach" | "discard";
64
+ worktreeLifecycle?: "running" | "kept" | "detached" | "discarded" | "cleanup-failed";
59
65
  }>;
60
66
  /**
61
67
  * Every background-work item spawned by `sessionId`, with per-kind detail, for
@@ -116,6 +116,7 @@ export function listBackgroundWorkForUI(sessionId, opts = {}) {
116
116
  ? backgroundJobRegistry.list()
117
117
  : backgroundJobRegistry.listForSession(sessionId);
118
118
  for (const j of jobs) {
119
+ const launchCwd = j.launchCwd ?? j.cwd;
119
120
  entries.push({
120
121
  kind: "job",
121
122
  jobId: j.jobId,
@@ -128,7 +129,13 @@ export function listBackgroundWorkForUI(sessionId, opts = {}) {
128
129
  ...(j.kind ? { jobKind: j.kind } : {}),
129
130
  ...(j.ccSessionId ? { externalSessionId: j.ccSessionId } : {}),
130
131
  ...(j.cli === "claude" || j.cli === "codex" ? { cli: j.cli } : {}),
131
- ...(j.cwd ? { cwd: j.cwd } : {}),
132
+ ...(launchCwd ? { cwd: launchCwd } : {}),
133
+ ...(j.isolation ? { isolation: j.isolation } : {}),
134
+ ...(j.worktreePath ? { worktreePath: j.worktreePath } : {}),
135
+ ...(j.worktreeBranch ? { worktreeBranch: j.worktreeBranch } : {}),
136
+ ...(j.worktreeBaseRef ? { worktreeBaseRef: j.worktreeBaseRef } : {}),
137
+ ...(j.worktreeCleanup ? { worktreeCleanup: j.worktreeCleanup } : {}),
138
+ ...(j.worktreeLifecycle ? { worktreeLifecycle: j.worktreeLifecycle } : {}),
132
139
  sourceSession: sourceSession(sessionId, j.sessionId),
133
140
  });
134
141
  }
@@ -29,7 +29,7 @@ function sandboxMark(backend) {
29
29
  export const bashToolDef = {
30
30
  name: "Bash",
31
31
  description: "Execute a shell command and return its output. " +
32
- "Use for ordinary shell commands, system operations, git commands, " +
32
+ "Use for ordinary shell commands, system operations, version-control commands, " +
33
33
  "package-manager commands, running tests, installing packages, etc. Prefer Bash " +
34
34
  "over PowerShell unless the task needs PowerShell-specific syntax or APIs.",
35
35
  inputSchema: {
@@ -95,7 +95,10 @@ export async function bashTool(args, ctx) {
95
95
  // (§难点5: that loop only looks at asyncAgentRegistry).
96
96
  if (args.run_in_background === true) {
97
97
  const backgroundResult = runInBackground(command, ctx);
98
- return backgroundResult.startsWith("Error:") ? fail(backgroundResult) : mark(backgroundResult);
98
+ if (backgroundResult.startsWith("Error:"))
99
+ return fail(backgroundResult);
100
+ ctx?.runYield?.request("background_notification");
101
+ return mark(backgroundResult);
99
102
  }
100
103
  // A6: lifecycle (spawn, kill cascade, IO drain, byte cap, abort/timeout)
101
104
  // is centralized in safeSpawnShell. We still handle Bash's user-facing
@@ -1,6 +1,9 @@
1
1
  /**
2
- * Browser automation tools — drive the in-app webview via the BrowserBridge
3
- * (CDP under the hood). Collapsed into THREE semantic tools (was 9 flat tools)
2
+ * Browser automation tools — drive a host-owned Browser Runtime through the
3
+ * BrowserBridge compatibility port. The default runtime owns a background tab
4
+ * in the in-app profile; user-opened tabs require an explicit claim. Collapsed
5
+ * into THREE semantic tools
6
+ * (was 9 flat tools)
4
7
  * to keep the LLM's tool list lean:
5
8
  *
6
9
  * browser_observe — observe the page: snapshot (a11y elements) / read (text) /
@@ -14,7 +17,7 @@
14
17
  * snapshot returns interactive elements as a compact ref-tagged list (a11y tree,
15
18
  * token-economical, no screenshots); act references elements by the ref the
16
19
  * latest snapshot assigned. All tools degrade with a clear error when no browser
17
- * is wired. isConcurrencySafe:false — a single webview is driven serially.
20
+ * runtime is wired. isConcurrencySafe:false — one runtime tab is driven serially.
18
21
  *
19
22
  * Permission: browser_act is permissionDefault "allow"; the sensitive actions
20
23
  * (click/type/select) are escalated to "ask" by a preset PermissionRule keyed on
@@ -1,6 +1,9 @@
1
1
  /**
2
- * Browser automation tools — drive the in-app webview via the BrowserBridge
3
- * (CDP under the hood). Collapsed into THREE semantic tools (was 9 flat tools)
2
+ * Browser automation tools — drive a host-owned Browser Runtime through the
3
+ * BrowserBridge compatibility port. The default runtime owns a background tab
4
+ * in the in-app profile; user-opened tabs require an explicit claim. Collapsed
5
+ * into THREE semantic tools
6
+ * (was 9 flat tools)
4
7
  * to keep the LLM's tool list lean:
5
8
  *
6
9
  * browser_observe — observe the page: snapshot (a11y elements) / read (text) /
@@ -14,7 +17,7 @@
14
17
  * snapshot returns interactive elements as a compact ref-tagged list (a11y tree,
15
18
  * token-economical, no screenshots); act references elements by the ref the
16
19
  * latest snapshot assigned. All tools degrade with a clear error when no browser
17
- * is wired. isConcurrencySafe:false — a single webview is driven serially.
20
+ * runtime is wired. isConcurrencySafe:false — one runtime tab is driven serially.
18
21
  *
19
22
  * Permission: browser_act is permissionDefault "allow"; the sensitive actions
20
23
  * (click/type/select) are escalated to "ask" by a preset PermissionRule keyed on
@@ -22,8 +25,7 @@
22
25
  */
23
26
  import { renderElementList } from "../browser-bridge.js";
24
27
  import { capabilitiesFor } from "../../llm/capabilities/index.js";
25
- const NO_BROWSER = "Error: browser automation is not available (no browser panel in this session). " +
26
- "It requires the desktop app with an open browser panel.";
28
+ const NO_BROWSER = "Error: browser automation runtime is not available in this host session.";
27
29
  function bridge(ctx) {
28
30
  return ctx?.browser;
29
31
  }
@@ -33,13 +35,15 @@ const STALE = (ref) => `Error: ref ${ref} is no longer valid (page changed). Re-
33
35
  // ════════════════════════════════════════════════════════════════════════════
34
36
  export const browserObserveToolDef = {
35
37
  name: "browser_observe",
36
- description: "Observe the current page in the browser panel. Modes:\n" +
38
+ description: "Observe the task-owned page in the CodeShell Browser Runtime. It shares the " +
39
+ "in-app browser profile but never controls a user-opened tab without an " +
40
+ "explicit claim. Modes:\n" +
37
41
  "- snapshot (default): URL/title + a compact list of interactive elements, each " +
38
42
  "tagged [ref=eN] for browser_act. ALWAYS snapshot before acting, and re-snapshot " +
39
43
  "after navigation/page changes (refs are only valid for the latest snapshot). " +
40
44
  "Passwords show as [sensitive] with no value.\n" +
41
- "- read: the page's main readable text (for summarizing/scraping an article/post; " +
42
- "long pages truncate scroll + read again).\n" +
45
+ "- read: a cursor-paged chunk of the page's normalized readable text. Continue " +
46
+ "with the returned nextCursor until complete; scrolling is only for lazy/infinite loading.\n" +
43
47
  "- extract: the real URLs on the page (hyperlink hrefs, image srcs, video srcs) " +
44
48
  "that snapshot omits — each image/video is tagged [ref=imgN/vidN] for image mode.\n" +
45
49
  "- image: SEE the actual pixels of page images (refs from extract, e.g. img3) — for " +
@@ -60,7 +64,18 @@ export const browserObserveToolDef = {
60
64
  items: { type: "string" },
61
65
  description: "image mode: image refs (imgN/vidN from extract) to see, one or more",
62
66
  },
63
- ref: { type: "string", description: "vision mode (optional): screenshot just this element's region" },
67
+ ref: {
68
+ type: "string",
69
+ description: "vision mode (optional): screenshot just this element's region",
70
+ },
71
+ cursor: {
72
+ type: "string",
73
+ description: "read mode: opaque nextCursor returned by the previous read chunk",
74
+ },
75
+ max_chars: {
76
+ type: "number",
77
+ description: "read mode: requested chunk size (clamped by the runtime)",
78
+ },
64
79
  },
65
80
  },
66
81
  };
@@ -86,17 +101,32 @@ export async function browserObserveTool(args, ctx) {
86
101
  switch (mode) {
87
102
  case "snapshot": {
88
103
  const snap = await b.snapshot();
104
+ if (snap.detail)
105
+ return `Error: ${snap.detail}`;
89
106
  const header = `URL: ${snap.url}${snap.title ? `\nTitle: ${snap.title}` : ""}`;
90
107
  const human = snap.needsHuman
91
- ? `\n\n⚠ ${snap.needsHuman} — please complete it in the browser panel, then continue.`
108
+ ? `\n\n⚠ ${snap.needsHuman} — please complete it in the browser window, then continue.`
92
109
  : "";
93
110
  return `${header}\n\n${renderElementList(snap.elements)}${human}`;
94
111
  }
95
112
  case "read": {
96
- const c = await b.readContent();
113
+ const c = await b.readContent({
114
+ cursor: typeof args.cursor === "string" ? args.cursor : undefined,
115
+ maxChars: typeof args.max_chars === "number" ? args.max_chars : undefined,
116
+ });
97
117
  if (!c.ok)
98
118
  return `Error: ${c.detail ?? "could not read page content"}`;
99
- const head = `URL: ${c.url}${c.title ? `\nTitle: ${c.title}` : ""}${c.truncated ? "\n(content truncated)" : ""}`;
119
+ const progress = c.done
120
+ ? "\nRead: complete"
121
+ : c.nextCursor
122
+ ? `\nRead: more available\nnextCursor: ${c.nextCursor}`
123
+ : c.truncated
124
+ ? "\nRead: truncated"
125
+ : "";
126
+ const scroll = c.scroll
127
+ ? `\nScroll: ${Math.round(c.scroll.y)}/${Math.round(c.scroll.maxY)}${c.scroll.atEnd ? " (end)" : ""}`
128
+ : "";
129
+ const head = `URL: ${c.url}${c.title ? `\nTitle: ${c.title}` : ""}${progress}${scroll}`;
100
130
  return `${head}\n\n${c.text || "(no readable text)"}`;
101
131
  }
102
132
  case "extract": {
@@ -109,7 +139,9 @@ export async function browserObserveTool(args, ctx) {
109
139
  : "Links: (none)";
110
140
  const images = r.images.length > 0
111
141
  ? "Images (use the ref with browser_observe(image) to SEE one):\n" +
112
- r.images.map((im) => `- [${im.ref ?? "?"}] ${im.alt ? `${im.alt} → ` : ""}${im.url}`).join("\n")
142
+ r.images
143
+ .map((im) => `- [${im.ref ?? "?"}] ${im.alt ? `${im.alt} → ` : ""}${im.url}`)
144
+ .join("\n")
113
145
  : "Images: (none)";
114
146
  const videos = r.videos && r.videos.length > 0
115
147
  ? "Videos:\n" + r.videos.map((v) => `- ${v.url}`).join("\n")
@@ -139,7 +171,10 @@ export async function browserObserveTool(args, ctx) {
139
171
  }
140
172
  if (blocks.length === 0)
141
173
  return `Error: no images loaded — ${notes.join("; ")}`;
142
- return { contentBlocks: blocks, result: `[loaded ${blocks.length} image(s): ${notes.join("; ")}]` };
174
+ return {
175
+ contentBlocks: blocks,
176
+ result: `[loaded ${blocks.length} image(s): ${notes.join("; ")}]`,
177
+ };
143
178
  }
144
179
  case "vision": {
145
180
  if (!modelSupportsVision(ctx)) {
@@ -161,7 +196,9 @@ export async function browserObserveTool(args, ctx) {
161
196
  // ════════════════════════════════════════════════════════════════════════════
162
197
  export const browserActToolDef = {
163
198
  name: "browser_act",
164
- description: "Act on the page in the browser panel. Use refs (eN) from the latest " +
199
+ description: "Act on the task-owned tab in the CodeShell Browser Runtime. By default it " +
200
+ "shares the in-app browser profile but never controls a user-opened tab " +
201
+ "without an explicit claim. Use refs (eN) from the latest " +
165
202
  "browser_observe(snapshot). Actions:\n" +
166
203
  "- click {ref}: click an element.\n" +
167
204
  "- type {ref, text}: type text into an input (focuses first).\n" +
@@ -181,7 +218,17 @@ export const browserActToolDef = {
181
218
  properties: {
182
219
  action: {
183
220
  type: "string",
184
- enum: ["click", "type", "select", "press_key", "hover", "scroll", "wait", "list_tabs", "switch_tab"],
221
+ enum: [
222
+ "click",
223
+ "type",
224
+ "select",
225
+ "press_key",
226
+ "hover",
227
+ "scroll",
228
+ "wait",
229
+ "list_tabs",
230
+ "switch_tab",
231
+ ],
185
232
  description: "The interaction to perform",
186
233
  },
187
234
  ref: { type: "string", description: "Element ref (eN) — click/type/select/hover/press_key" },
@@ -191,7 +238,10 @@ export const browserActToolDef = {
191
238
  direction: { type: "string", enum: ["up", "down"], description: "Scroll direction — scroll" },
192
239
  amount: { type: "number", description: "Pixels to scroll (default one viewport) — scroll" },
193
240
  timeout_ms: { type: "number", description: "Max wait in ms (default 10000) — wait" },
194
- tabId: { type: "string", description: "Target tab — required for switch_tab; optional on others (switches first)" },
241
+ tabId: {
242
+ type: "string",
243
+ description: "Target tab — required for switch_tab; optional on others (switches first)",
244
+ },
195
245
  },
196
246
  required: ["action"],
197
247
  },
@@ -215,13 +265,17 @@ export async function browserActTool(args, ctx) {
215
265
  if (tabs.length === 0)
216
266
  return "(no open browser tabs)";
217
267
  return ("Open tabs:\n" +
218
- tabs.map((t) => `- [${t.tabId}]${t.active ? " (active)" : ""} ${t.title || "(untitled)"} — ${t.url || "(blank)"}`).join("\n"));
268
+ tabs
269
+ .map((t) => `- [${t.tabId}]${t.active ? " (active)" : ""} ${t.title || "(untitled)"} — ${t.url || "(blank)"}`)
270
+ .join("\n"));
219
271
  }
220
272
  case "switch_tab": {
221
273
  if (!tabId)
222
274
  return "Error: tabId is required for switch_tab (see list_tabs)";
223
275
  const r = await b.switchTab(tabId);
224
- return r.ok ? `Switched to tab ${tabId} — re-observe to see it` : `Error: ${r.detail ?? "switch failed"}`;
276
+ return r.ok
277
+ ? `Switched to tab ${tabId} — re-observe to see it`
278
+ : `Error: ${r.detail ?? "switch failed"}`;
225
279
  }
226
280
  case "click": {
227
281
  if (!ref)
@@ -273,11 +327,20 @@ export async function browserActTool(args, ctx) {
273
327
  if (dir !== "up" && dir !== "down")
274
328
  return "Error: direction must be 'up' or 'down'";
275
329
  const r = await b.scroll(dir, args.amount);
276
- return r.ok ? `Scrolled ${dir}` : `Error: ${r.detail ?? "scroll failed"}`;
330
+ if (!r.ok) {
331
+ const code = r.code ? ` [${r.code}]` : "";
332
+ return `Error${code}: ${r.detail ?? "scroll failed"}`;
333
+ }
334
+ const state = r.scroll
335
+ ? ` — position ${Math.round(r.scroll.y)}/${Math.round(r.scroll.maxY)}${r.scroll.atEnd ? " (end)" : ""}`
336
+ : "";
337
+ return `Scrolled ${dir}${state}`;
277
338
  }
278
339
  case "wait": {
279
340
  const r = await b.waitForLoad(args.timeout_ms);
280
- return r.ok ? `Page ready${r.detail ? ` (${r.detail})` : ""}` : `Error: ${r.detail ?? "wait failed"}`;
341
+ return r.ok
342
+ ? `Page ready${r.detail ? ` (${r.detail})` : ""}`
343
+ : `Error: ${r.detail ?? "wait failed"}`;
281
344
  }
282
345
  default:
283
346
  return `Error: unknown action "${action}"`;
@@ -288,8 +351,11 @@ export async function browserActTool(args, ctx) {
288
351
  // ════════════════════════════════════════════════════════════════════════════
289
352
  export const browserNavigateToolDef = {
290
353
  name: "browser_navigate",
291
- description: "Navigate the browser panel to a URL (opens the panel automatically if none " +
292
- "is open). Then call browser_act(wait) + browser_observe to see the page.",
354
+ description: "Navigate the CodeShell browser runtime to a URL. It does not control the " +
355
+ "user-facing built-in browser unless the user explicitly grants a future handoff. " +
356
+ "Navigation stays in the background; the runtime's own window appears only when login or a " +
357
+ "high-consequence action needs human control. Then call browser_act(wait) + " +
358
+ "browser_observe to inspect the page.",
293
359
  inputSchema: {
294
360
  type: "object",
295
361
  properties: { url: { type: "string", description: "Absolute URL to open" } },
@@ -1,3 +1,9 @@
1
1
  import type { ToolDefinition } from "../../types.js";
2
+ /** Notifies process hosts after the user catalog has been persisted. Desktop
3
+ * uses this to refresh mounted settings/connection views without waiting for
4
+ * a parent turn_complete event (which may be absent for child/yielded runs). */
5
+ type ModelCatalogChangedSink = () => void;
6
+ export declare function setModelCatalogChangedSink(sink: ModelCatalogChangedSink | null): void;
2
7
  export declare const editModelCatalogToolDef: ToolDefinition;
3
8
  export declare function editModelCatalogTool(args: Record<string, unknown>): Promise<string>;
9
+ export {};