@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
@@ -8,192 +8,32 @@
8
8
  * src/prompt/sections/*.md — each preset declares which sections to include.
9
9
  */
10
10
  import { loadSections } from "../prompt/section-loader.js";
11
- import { cronListToolDef } from "../tool-system/builtin/cron-list.definition.js";
12
- import { sleepToolDef } from "../tool-system/builtin/sleep.definition.js";
13
- export const AGENT_PRESET_NAMES = ["general", "terminal-coding"];
14
- // ─── Tool sets ───────────────────────────────────────────────────
15
- const GENERAL_BUILTIN_TOOLS = [
16
- "Read",
17
- "Write",
18
- "Edit",
19
- "ApplyPatch",
20
- "Glob",
21
- "Grep",
22
- "Bash",
23
- // Bash(run_in_background=true) companions — without these in the preset
24
- // whitelist, the registry skips them (registerBuiltins filters BUILTIN_TOOLS
25
- // by the selected set), so a model that correctly calls BashOutput after
26
- // launching a background shell hits "Tool not found" and the turn dies.
27
- "BashOutput",
28
- "KillShell",
29
- "ListShells",
30
- // Browser automation (drive the in-app webview) — 3 semantic tools. Same
31
- // whitelist requirement as the BashOutput trio above: registerBuiltins filters
32
- // BUILTIN_TOOLS by the preset set, so without these the model calling
33
- // browser_observe/etc. hits "Tool not found". They self-degrade to a clear
34
- // error when no browser panel is wired (headless), so listing is safe.
35
- "browser_observe",
36
- "browser_act",
37
- "browser_navigate",
38
- "WebSearch",
39
- "WebFetch",
40
- "GenerateImage",
41
- "GenerateVideo",
42
- // Load a workspace image (by path) or an earlier history image (by number)
43
- // into context so a vision model can SEE it. Same whitelist requirement as
44
- // the rest: registered in BUILTIN_TOOLS but filtered out by registerBuiltins
45
- // unless the preset names it — so it was registered-but-invisible before.
46
- // Self-degrades to a text placeholder on non-vision models and gates format/
47
- // size, so listing it unconditionally is safe.
48
- "view_image",
49
- "AskUserQuestion",
50
- "Agent",
51
- // AgentStatus removed: background agents now write to ~/.code-shell/agents/
52
- // <id>.txt — the parent agent can Read/Bash tail that file for live progress.
53
- // The implementation is still in the registry for SDK consumers if needed.
54
- "AgentCancel",
55
- "EnterPlanMode",
56
- "ExitPlanMode",
57
- "ToolSearch",
58
- "TodoWrite",
59
- sleepToolDef.name,
60
- "Config",
61
- "CronCreate",
62
- "CronDelete",
63
- cronListToolDef.name,
64
- // cc-orchestrator:驱动外部 claude CLI 跑一轮。同 BashOutput/UseCredential/
65
- // EditModelCatalog 的 whitelist 要求:已在 BUILTIN_TOOLS 注册,但 registerBuiltins
66
- // 按 preset 集过滤 → 名单里没有它,agent 就没有「指挥 Claude Code」的工具,只能幻觉
67
- // RemoteTrigger / 兜底 Bash `claude -p`(用户实测「为什么驱动 cc 没作为工具」)。
68
- // 定时/循环驱动统一走 CronCreate(到点跑一轮引擎,prompt 里调 DriveAgent);
69
- // 无人值守审批由 DriveAgent 自身 bypass 解决,不需要定时层专门的 CC 调度工具。
70
- // DriveAgent 是通用驱动(cli: claude|codex);DriveClaudeCode 保留为 cli:claude 的
71
- // 别名(老 prompt/记忆兼容)。两个都要在白名单里,否则 registerBuiltins 滤掉。
72
- "DriveAgent",
73
- "DriveAgentJobs",
74
- "DriveClaudeCode",
75
- // 编排时读 CC/Codex 剩余额度做规划(开几个/等重置/换 provider)。
76
- "CheckQuota",
77
- "Skill",
78
- "AddMarketplace",
79
- "MCPTool",
80
- "ListMcpResources",
81
- "ReadMcpResource",
82
- "REPL",
83
- "PowerShell",
84
- // Persistent cross-session memory. Including these in the default preset is
85
- // what lets the LLM list/read/save/delete memories during a normal session,
86
- // AND what makes the end-of-session auto-dream consolidation work — its
87
- // tool-call loop pulls these from the registry, so without them every dream
88
- // run bailed with "missing memory tools". Save/Delete in the user scope have
89
- // no explicit allow rule, so the default-mode classifier fallback asks;
90
- // dream-scope writes go through freely.
91
- "MemoryList",
92
- "MemoryRead",
93
- "MemorySave",
94
- "MemoryDelete",
95
- // AI 取用已存凭证(cookie/token/link)给 yt-dlp/curl 等。必须在 preset 白名单里
96
- // 否则 registerBuiltins 滤掉它 → 即使存了凭证、注册了工具,AI 列表里也没有
97
- // UseCredential(用户实测「找不到这个工具」的真因)。它带 isUseCredentialAvailable
98
- // guard:cwd 凭证库为空时仍自动隐藏,所以无条件列入是安全的(空库不会冒出来)。
99
- "UseCredential",
100
- // 同理:把 cookie 凭证注入内置浏览器(恢复登录态后用 browser_* 工具)。带
101
- // isInjectCredentialAvailable guard(无 cookie 凭证时自动隐藏),无条件列入安全。
102
- "InjectCredential",
103
- // AI 增/改模型 catalog(写 ~/.code-shell/model-catalog.user.json)。同 BashOutput/
104
- // UseCredential 一样的 whitelist 要求:registerBuiltins 按 preset 集过滤 BUILTIN_TOOLS,
105
- // 名单里没有它 → 即使工具已注册,AI 列表里也没有 → 用户实测「找不到这个工具」。
106
- // 列入只是让 AI 看得到;执行期没有显式 allow rule,默认 classifier fallback 会审批。
107
- "EditModelCatalog",
108
- // Goal-mode control tools. Same whitelist requirement as the rest:
109
- // registerBuiltins filters BUILTIN_TOOLS by the preset set, so a goal tool
110
- // absent here is registered-but-invisible — the model never sees it and can
111
- // neither self-declare completion (complete_goal) nor honor a user's request
112
- // to abandon the goal (cancel_goal), stranding a persistent goal that only a
113
- // manual disk edit could clear. cancel_goal is the "strong intent" escape
114
- // hatch (requires confirm+reason); the turn-loop enforces the guard.
115
- "complete_goal",
116
- "cancel_goal",
117
- ];
118
- const TERMINAL_CODING_EXTRA_TOOLS = [
119
- "EnterWorktree",
120
- "ExitWorktree",
121
- "NotebookEdit",
122
- "LSP",
123
- "Brief",
124
- "Arena",
125
- ];
126
- // ─── Permission rules ────────────────────────────────────────────
127
- const GENERAL_PERMISSION_RULES = [
128
- { tool: "Read", decision: "allow" },
129
- { tool: "Glob", decision: "allow" },
130
- { tool: "Grep", decision: "allow" },
131
- { tool: "WebSearch", decision: "allow" },
132
- { tool: "WebFetch", decision: "allow" },
133
- { tool: "AskUserQuestion", decision: "allow" },
134
- { tool: "Agent", decision: "allow" },
135
- { tool: "AgentStatus", decision: "allow" },
136
- { tool: "AgentCancel", decision: "allow" },
137
- { tool: "EnterPlanMode", decision: "allow" },
138
- { tool: "ExitPlanMode", decision: "allow" },
139
- { tool: "ToolSearch", decision: "allow" },
140
- { tool: "TodoWrite", decision: "allow" },
141
- { tool: sleepToolDef.name, decision: "allow" },
142
- { tool: cronListToolDef.name, decision: "allow" },
143
- { tool: "CheckQuota", decision: "allow" },
144
- { tool: "Skill", decision: "allow" },
145
- // ListMcpResources only enumerates resource names (and the executor filters
146
- // the list to this session's enabled servers). ReadMcpResource pulls actual
147
- // content and is intentionally NOT auto-allowed here — with no explicit rule,
148
- // default-mode classifier fallback asks the user. The tool's
149
- // permissionDefault is only UI/metadata, not classifier input.
150
- { tool: "ListMcpResources", decision: "allow" },
151
- // Reading memory is always safe; writes (MemorySave/MemoryDelete) stay gated
152
- // by explicit rules below plus default-mode ask fallback.
153
- { tool: "MemoryList", decision: "allow" },
154
- { tool: "MemoryRead", decision: "allow" },
155
- // Browser automation (3 semantic tools). Rules are first-match-wins, ordered
156
- // by specificity — so the action-gating rule for browser_act MUST come first:
157
- // click/type/select mutate the page/form → "ask"; all other actions (hover/
158
- // scroll/wait/press_key/list_tabs/switch_tab) fall through to the default
159
- // allow rule below. observe (read-only) and navigate auto-allow.
160
- // (Main-side sensitive-action + domain-whitelist enforcement also applies.)
161
- {
162
- tool: "browser_act",
163
- argsPattern: { action: "^(click|type|select)$" },
164
- decision: "ask",
165
- reason: "browser_act click/type/select mutate the page",
166
- },
167
- { tool: "browser_observe", decision: "allow" },
168
- { tool: "browser_navigate", decision: "allow" },
169
- ];
11
+ import { deriveBuiltinPresetExposure, deriveToolGatedPromptSections, } from "../tool-system/builtin/index.js";
12
+ export const AGENT_PRESET_NAMES = ["harness-min", "general"];
13
+ const HARNESS_MIN_EXPOSURE = deriveBuiltinPresetExposure("harness-min");
14
+ const GENERAL_EXPOSURE = deriveBuiltinPresetExposure("general");
170
15
  // ─── Preset definitions ──────────────────────────────────────────
171
16
  export const BUILTIN_AGENT_PRESETS = {
17
+ "harness-min": {
18
+ name: "harness-min",
19
+ label: "Minimal Agent Harness",
20
+ description: "Domain-neutral orchestration with the minimal reusable tool surface.",
21
+ promptSections: ["harness-base", "orchestration", "tone"],
22
+ builtinTools: HARNESS_MIN_EXPOSURE.builtinTools,
23
+ defaultPermissionRules: HARNESS_MIN_EXPOSURE.defaultPermissionRules,
24
+ },
172
25
  general: {
173
26
  name: "general",
174
27
  label: "General Orchestrator",
175
28
  description: "Domain-agnostic orchestration for research, operations, automation, and long-running tasks.",
176
29
  promptSections: ["base", "orchestration", "browser", "tone"],
177
- injectGitStatus: false,
178
- builtinTools: [...GENERAL_BUILTIN_TOOLS],
179
- defaultPermissionRules: GENERAL_PERMISSION_RULES,
180
- },
181
- "terminal-coding": {
182
- name: "terminal-coding",
183
- label: "Terminal Coding Assistant",
184
- description: "General orchestration plus coding-focused guidance and code-navigation tools.",
185
- promptSections: ["base", "orchestration", "coding", "browser", "tone"],
186
- injectGitStatus: true,
187
- builtinTools: [...GENERAL_BUILTIN_TOOLS, ...TERMINAL_CODING_EXTRA_TOOLS],
188
- defaultPermissionRules: [
189
- ...GENERAL_PERMISSION_RULES,
190
- { tool: "LSP", decision: "allow" },
191
- { tool: "Brief", decision: "allow" },
192
- ],
30
+ builtinTools: GENERAL_EXPOSURE.builtinTools,
31
+ defaultPermissionRules: GENERAL_EXPOSURE.defaultPermissionRules,
193
32
  },
194
33
  };
195
- export const DEFAULT_AGENT_PRESET = "general";
196
- export const DEFAULT_CLI_PRESET = "terminal-coding";
34
+ export const DEFAULT_AGENT_PRESET = "harness-min";
35
+ /** @deprecated Product hosts should install a capability with `defaultPreset`. */
36
+ export const DEFAULT_CLI_PRESET = DEFAULT_AGENT_PRESET;
197
37
  /** Registry of custom presets registered by external consumers. */
198
38
  const _customPresets = new Map();
199
39
  /**
@@ -208,7 +48,6 @@ const _customPresets = new Map();
208
48
  * label: "Data Pipeline Orchestrator",
209
49
  * description: "Manages ETL workflows and data quality checks.",
210
50
  * promptSections: ["base", "orchestration"],
211
- * injectGitStatus: false,
212
51
  * builtinTools: ["Read", "Write", "Bash", "Glob", "Grep", "Agent"],
213
52
  * defaultPermissionRules: [{ tool: "Read", decision: "allow" }],
214
53
  * });
@@ -218,32 +57,46 @@ export function registerPreset(preset) {
218
57
  _customPresets.set(preset.name, preset);
219
58
  }
220
59
  /** List all available preset names (built-in + custom). */
221
- export function listPresetNames() {
222
- return [...AGENT_PRESET_NAMES, ..._customPresets.keys()];
60
+ export function listPresetNames(capabilities = []) {
61
+ return [
62
+ ...new Set([
63
+ ...AGENT_PRESET_NAMES,
64
+ ..._customPresets.keys(),
65
+ ...capabilities.flatMap((capability) => (capability.presets ?? []).map((preset) => preset.name)),
66
+ ]),
67
+ ];
223
68
  }
224
- export function resolveAgentPreset(name) {
225
- if (!name)
226
- return BUILTIN_AGENT_PRESETS[DEFAULT_AGENT_PRESET];
69
+ export function resolveAgentPreset(name, capabilities = []) {
70
+ let resolvedName = name;
71
+ if (!resolvedName) {
72
+ const defaults = [
73
+ ...new Set(capabilities
74
+ .map((capability) => capability.defaultPreset)
75
+ .filter((preset) => Boolean(preset))),
76
+ ];
77
+ if (defaults.length > 1) {
78
+ throw new Error(`Capabilities contributed conflicting default presets: ${defaults.join(", ")}`);
79
+ }
80
+ resolvedName = defaults[0] ?? DEFAULT_AGENT_PRESET;
81
+ }
82
+ const contributed = capabilities
83
+ .flatMap((capability) => [...(capability.presets ?? [])])
84
+ .find((preset) => preset.name === resolvedName);
85
+ if (contributed)
86
+ return contributed;
227
87
  // Check built-in first
228
- const builtin = BUILTIN_AGENT_PRESETS[name];
88
+ const builtin = BUILTIN_AGENT_PRESETS[resolvedName];
229
89
  if (builtin)
230
90
  return builtin;
231
91
  // Check custom presets
232
- const custom = _customPresets.get(name);
92
+ const custom = _customPresets.get(resolvedName);
233
93
  if (custom)
234
94
  return custom;
235
- const allowed = listPresetNames().join(", ");
236
- throw new Error(`Unknown agent preset "${name}". Available presets: ${allowed}`);
95
+ const allowed = listPresetNames(capabilities).join(", ");
96
+ throw new Error(`Unknown agent preset "${resolvedName}". Available presets: ${allowed}`);
237
97
  }
238
- /** Tool names that gate the "browser" prompt section if NONE of these are in
239
- * the active tool set (browser capability turned off), the section is dropped
240
- * so the model isn't told how to use tools it can't see. Keep in sync with the
241
- * browser tools registered in builtin/index.ts. */
242
- const BROWSER_SECTION_TOOLS = ["browser_observe", "browser_act", "browser_navigate"];
243
- /** Prompt sections whose inclusion is gated by an active tool being present. */
244
- const TOOL_GATED_SECTIONS = {
245
- browser: BROWSER_SECTION_TOOLS,
246
- };
98
+ /** Prompt-section capability links are contributed by builtin exposure metadata. */
99
+ const TOOL_GATED_SECTIONS = deriveToolGatedPromptSections();
247
100
  function isActiveToolNamesList(value) {
248
101
  return Array.isArray(value);
249
102
  }
@@ -275,24 +128,30 @@ export function buildPresetSystemPrompt(preset, optionsOrActiveToolNames) {
275
128
  if (activeToolNames) {
276
129
  const active = new Set(activeToolNames);
277
130
  sections = sections.filter((s) => {
278
- const gate = TOOL_GATED_SECTIONS[s];
131
+ const gate = options.toolCatalog
132
+ ? deriveToolGatedPromptSections(options.toolCatalog)[s]
133
+ : TOOL_GATED_SECTIONS[s];
279
134
  return !gate || gate.some((t) => active.has(t));
280
135
  });
281
136
  }
282
- return [loadSections(sections), platformShellGuidance(options.platform ?? process.platform)]
137
+ return [
138
+ loadSections(sections, options.promptSections),
139
+ platformShellGuidance(options.platform ?? process.platform),
140
+ ]
283
141
  .filter(Boolean)
284
142
  .join("\n\n");
285
143
  }
286
144
  export function resolveBuiltinToolNames(options) {
287
- const preset = resolveAgentPreset(options?.preset);
145
+ const preset = resolveAgentPreset(options?.preset, options?.capabilities);
288
146
  const names = new Set(preset.builtinTools);
289
147
  for (const name of options?.enabledBuiltinTools ?? []) {
290
148
  names.add(name);
291
149
  }
292
- if (options?.host === "desktop") {
293
- names.delete("EnterWorktree");
294
- names.delete("ExitWorktree");
295
- names.add("SwitchSessionWorkspace");
150
+ for (const capability of options?.capabilities ?? []) {
151
+ capability.adjustToolSelection?.(names, {
152
+ preset: preset.name,
153
+ host: options?.host,
154
+ });
296
155
  }
297
156
  for (const name of options?.disabledBuiltinTools ?? []) {
298
157
  names.delete(name);
@@ -46,8 +46,15 @@ export function defineProduct(definition, runtime) {
46
46
  const presetName = presetDef.name;
47
47
  // Determine builtin tools: start from a base set, apply adapter overrides
48
48
  const baseTools = [
49
- "Read", "Write", "Edit", "Glob", "Grep", "Bash",
50
- "AskUserQuestion", "Agent", "ToolSearch",
49
+ "Read",
50
+ "Write",
51
+ "Edit",
52
+ "Glob",
53
+ "Grep",
54
+ "Bash",
55
+ "AskUserQuestion",
56
+ "Agent",
57
+ "ToolSearch",
51
58
  "TodoWrite",
52
59
  ];
53
60
  const enabledSet = new Set([...baseTools, ...(adapter?.enableTools ?? [])]);
@@ -71,7 +78,6 @@ export function defineProduct(definition, runtime) {
71
78
  label: presetDef.label,
72
79
  description: presetDef.description,
73
80
  promptSections: presetDef.sections ?? ["base", "orchestration"],
74
- injectGitStatus: presetDef.injectGitStatus ?? false,
75
81
  builtinTools: [...enabledSet],
76
82
  defaultPermissionRules: permissionRules,
77
83
  };
@@ -39,8 +39,6 @@ export interface ProductPreset {
39
39
  customPrompt?: string;
40
40
  /** Additional text appended after the main system prompt. */
41
41
  appendPrompt?: string;
42
- /** Whether to inject git status into system context. Default: false */
43
- injectGitStatus?: boolean;
44
42
  }
45
43
  export interface CustomTool {
46
44
  /** Tool definition (name, description, inputSchema). */
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 激活/切换/关闭事务。原子性来源:整个 `profile` 子树一次
3
+ * saveProjectSetting 写入(内部 tmp+rename)——切换即全量替换,
4
+ * 永远不存在“旧的撤一半、新的写一半”。
5
+ * mainInstruction / portableMemory 不落 settings:settings 只记 active
6
+ * 名字(+ preset/overrides 快照),活字段由 resolve.ts 从库读取。
7
+ */
8
+ import type { SettingsManager } from "../settings/manager.js";
9
+ import type { CapabilityOverrides } from "../settings/schema.js";
10
+ import type { WorkspaceProfile } from "./types.js";
11
+ /** settings.profile 子树的形状(与 settings/schema.ts 的 zod 定义一致)。 */
12
+ export interface WorkspaceProfileSubtree {
13
+ active: string;
14
+ preset?: string;
15
+ overrides?: CapabilityOverrides;
16
+ }
17
+ /**
18
+ * 当前机器上可见的能力清单,用于 `exclusiveCapabilities` 决定「要关掉哪些」。
19
+ * 由 host 注入(core 不扫描磁盘)。缺省即无法独占,退回并集语义。
20
+ */
21
+ export interface InstalledCapabilityNames {
22
+ skills?: readonly string[];
23
+ plugins?: readonly string[];
24
+ mcp?: readonly string[];
25
+ agents?: readonly string[];
26
+ }
27
+ /**
28
+ * 把 profile 声明的能力展开为 override 快照;空 bucket 不落键。
29
+ *
30
+ * 默认只产出 `"on"`(并集:保证该有的在,不动用户开的)。profile 声明
31
+ * `exclusiveCapabilities` 且 host 给出 `installed` 时,未声明的同类能力显式
32
+ * 落 `"off"`,形成独占工作面。
33
+ */
34
+ export declare function profileOverridesFromDefinition(profile: WorkspaceProfile, installed?: InstalledCapabilityNames): NonNullable<CapabilityOverrides>;
35
+ export declare function activateWorkspaceProfile(settings: SettingsManager, name: string, cwd: string, installed?: InstalledCapabilityNames): WorkspaceProfile;
36
+ export declare function deactivateWorkspaceProfile(settings: SettingsManager, cwd: string): void;
@@ -0,0 +1,57 @@
1
+ import { readWorkspaceProfile } from "./store.js";
2
+ /**
3
+ * 把 profile 声明的能力展开为 override 快照;空 bucket 不落键。
4
+ *
5
+ * 默认只产出 `"on"`(并集:保证该有的在,不动用户开的)。profile 声明
6
+ * `exclusiveCapabilities` 且 host 给出 `installed` 时,未声明的同类能力显式
7
+ * 落 `"off"`,形成独占工作面。
8
+ */
9
+ // 返回 NonNullable:`CapabilityOverrides` 自身以 `.optional()` 结尾(settings 里
10
+ // 整个 key 可以缺失),但这个函数**总是**构造一个对象字面量,永不返回 undefined。
11
+ // 沿用可空别名会迫使每个调用方(含断言 `overrides.skills` 的测试)先做一次不可能
12
+ // 为真的 null 检查。
13
+ export function profileOverridesFromDefinition(profile, installed) {
14
+ const exclusive = profile.exclusiveCapabilities === true;
15
+ const bucket = (declared, available) => {
16
+ const entries = {};
17
+ for (const name of declared)
18
+ entries[name] = "on";
19
+ if (exclusive && available) {
20
+ const claimed = new Set(declared);
21
+ for (const name of available) {
22
+ if (!claimed.has(name))
23
+ entries[name] = "off";
24
+ }
25
+ }
26
+ return Object.keys(entries).length > 0 ? entries : undefined;
27
+ };
28
+ const plugins = bucket(profile.plugins, installed?.plugins);
29
+ const skills = bucket(profile.skills, installed?.skills);
30
+ const mcp = bucket(profile.mcp, installed?.mcp);
31
+ const agents = bucket(profile.agents, installed?.agents);
32
+ return {
33
+ ...(plugins ? { plugins } : {}),
34
+ ...(skills ? { skills } : {}),
35
+ ...(mcp ? { mcp } : {}),
36
+ ...(agents ? { agents } : {}),
37
+ };
38
+ }
39
+ export function activateWorkspaceProfile(settings, name, cwd, installed) {
40
+ const profile = readWorkspaceProfile(name);
41
+ if (!profile) {
42
+ throw new Error(`Workspace profile "${name}" not found in the global library`);
43
+ }
44
+ const subtree = {
45
+ active: profile.name,
46
+ // A digital human contributes its role, capabilities, and memory. The
47
+ // CodeShell runtime base is a host concern and must not vary with imported
48
+ // definitions that happen to carry a legacy basePreset value.
49
+ preset: "general",
50
+ overrides: profileOverridesFromDefinition(profile, installed),
51
+ };
52
+ settings.saveProjectSetting("profile", subtree, cwd);
53
+ return profile;
54
+ }
55
+ export function deactivateWorkspaceProfile(settings, cwd) {
56
+ settings.deleteProjectSetting("profile", cwd);
57
+ }
@@ -0,0 +1,77 @@
1
+ import { type CatalogEntry, type CatalogTeam } from "./catalog.js";
2
+ export interface RegisteredHumanRepo {
3
+ /** `owner/repo` */
4
+ repo: string;
5
+ addedAt: number;
6
+ }
7
+ export interface HumanRepoListEntry extends RegisteredHumanRepo {
8
+ /** 该仓库当前提供的数字人数量。 */
9
+ count: number;
10
+ /** 读取过程中的问题(坏定义、缺 manifest)。 */
11
+ errors: string[];
12
+ cloned: boolean;
13
+ }
14
+ export declare function humanReposRoot(): string;
15
+ export declare function humanRepoDir(repo: string): string;
16
+ export declare function listHumanRepos(): RegisteredHumanRepo[];
17
+ /**
18
+ * 注册并克隆一个数字人仓库。已存在则拉取更新。
19
+ *
20
+ * 克隆是网络+磁盘写入操作,调用方应已取得用户确认。
21
+ */
22
+ export declare function addHumanRepo(repo: string): Promise<{
23
+ ok: true;
24
+ entry: HumanRepoListEntry;
25
+ } | {
26
+ ok: false;
27
+ error: string;
28
+ }>;
29
+ /**
30
+ * Swap a validated staging tree into place.
31
+ *
32
+ * Ordering matters for crash safety: promote FIRST (rename staging over a
33
+ * now-absent `dir`), and only retire the old tree around it. The previous
34
+ * `dir → retired` then `staging → dir` sequence left no tree at `dir` at all if
35
+ * the process died in between, and nothing scanned for `.retired-*` on startup,
36
+ * so the UI showed "尚未克隆" with the data still on disk under a name nobody
37
+ * looked for. Here the only window is one where BOTH the old tree (at `retired`)
38
+ * and the new tree (at `staging`) still exist, and `reclaimOrphanedTrees`
39
+ * cleans up whatever is left over on the next call.
40
+ */
41
+ declare function promoteStagedRepo(staging: string, dir: string): void;
42
+ /**
43
+ * Recover from a crash during a previous swap.
44
+ *
45
+ * If `dir` is missing but a `.retired-*` sibling exists, a process died between
46
+ * retiring the old tree and promoting the new one. Restore the newest retired
47
+ * tree rather than leaving the repo looking un-cloned, then drop the rest.
48
+ * Runs under the repo lock, so no concurrent swap can be mid-flight.
49
+ */
50
+ declare function reclaimOrphanedTrees(dir: string): void;
51
+ /**
52
+ * Crash-safety internals, exposed for tests only.
53
+ *
54
+ * `promoteStagedRepo`/`reclaimOrphanedTrees` implement the swap-and-recover
55
+ * protocol. Exercising them through `addHumanRepo` would require network git, so
56
+ * the recovery cases (interrupted swap, stale retired trees) are tested here
57
+ * directly. Not part of the package's public surface.
58
+ */
59
+ export declare const __testables: {
60
+ promoteStagedRepo: typeof promoteStagedRepo;
61
+ reclaimOrphanedTrees: typeof reclaimOrphanedTrees;
62
+ };
63
+ export declare function removeHumanRepo(repo: string): void;
64
+ /** 注册表 + 每个仓库的读取结果,供设置页展示。 */
65
+ export declare function listHumanRepoDetails(): HumanRepoListEntry[];
66
+ /**
67
+ * 所有已注册仓库提供的数字人。
68
+ *
69
+ * 同名定义按注册顺序先到先得,并记一条冲突说明——静默覆盖会让用户以为装的是
70
+ * 另一个仓库的版本。
71
+ */
72
+ export declare function readAllHumanRepoEntries(): {
73
+ entries: CatalogEntry[];
74
+ teams: CatalogTeam[];
75
+ errors: string[];
76
+ };
77
+ export {};