@cjhyy/code-shell-core 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/README.md +36 -23
  2. package/dist/agent/agent-definition-registry.d.ts +2 -2
  3. package/dist/agent/agent-definition-registry.js +47 -10
  4. package/dist/agent/agent-definition.d.ts +5 -0
  5. package/dist/agent/agent-definition.js +14 -0
  6. package/dist/automation/index.d.ts +7 -4
  7. package/dist/automation/index.js +4 -2
  8. package/dist/automation/runner.js +3 -1
  9. package/dist/automation/scheduler.d.ts +57 -1
  10. package/dist/automation/scheduler.js +123 -23
  11. package/dist/automation/store.d.ts +6 -2
  12. package/dist/automation/store.js +7 -3
  13. package/dist/capabilities/index.d.ts +109 -0
  14. package/dist/capabilities/index.js +80 -0
  15. package/dist/capability-control/disabled-lists.d.ts +2 -1
  16. package/dist/capability-control/disabled-lists.js +3 -5
  17. package/dist/capability-control/overlay.d.ts +14 -1
  18. package/dist/capability-control/overlay.js +40 -0
  19. package/dist/capability-control/service.js +6 -4
  20. package/dist/cli/agent-server-stdio.d.ts +1 -1
  21. package/dist/cli/agent-server-stdio.js +66 -6
  22. package/dist/cli/agent-server-tcp.js +20 -5
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +20 -4
  26. package/dist/context/manager.js +42 -7
  27. package/dist/context/token-counter.js +5 -3
  28. package/dist/context/tool-result-storage.d.ts +6 -0
  29. package/dist/context/tool-result-storage.js +25 -4
  30. package/dist/credentials/access.d.ts +13 -2
  31. package/dist/credentials/access.js +99 -4
  32. package/dist/credentials/index.d.ts +3 -2
  33. package/dist/credentials/index.js +2 -1
  34. package/dist/credentials/oauth.d.ts +9 -1
  35. package/dist/credentials/oauth.js +80 -1
  36. package/dist/credentials/store.d.ts +16 -2
  37. package/dist/credentials/store.js +33 -11
  38. package/dist/credentials/types.d.ts +62 -1
  39. package/dist/credentials/types.js +16 -1
  40. package/dist/credentials/use-credential-tool.js +15 -1
  41. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  42. package/dist/engine/auxiliary-pipeline.js +181 -0
  43. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  44. package/dist/{settings → engine}/disk-defaults.js +5 -2
  45. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  46. package/dist/engine/dynamic-tool-defs.js +4 -0
  47. package/dist/engine/engine.d.ts +272 -184
  48. package/dist/engine/engine.js +1869 -1864
  49. package/dist/engine/file-history-hook.d.ts +11 -0
  50. package/dist/engine/file-history-hook.js +31 -0
  51. package/dist/engine/goal-judge-context.d.ts +9 -0
  52. package/dist/engine/goal-judge-context.js +234 -0
  53. package/dist/engine/injected-context-cache.d.ts +6 -0
  54. package/dist/engine/injected-context-cache.js +13 -0
  55. package/dist/engine/input-attachments.d.ts +1 -1
  56. package/dist/engine/model-facade.d.ts +3 -3
  57. package/dist/engine/model-facade.js +15 -14
  58. package/dist/engine/permission-controller.d.ts +55 -0
  59. package/dist/engine/permission-controller.js +148 -0
  60. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  61. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  62. package/dist/engine/run-accounting.d.ts +41 -0
  63. package/dist/engine/run-accounting.js +126 -0
  64. package/dist/engine/run-context.d.ts +44 -0
  65. package/dist/engine/run-context.js +88 -0
  66. package/dist/engine/run-environment.d.ts +30 -0
  67. package/dist/engine/run-environment.js +77 -0
  68. package/dist/engine/run-finalize.d.ts +58 -0
  69. package/dist/engine/run-finalize.js +245 -0
  70. package/dist/engine/run-goal.d.ts +58 -0
  71. package/dist/engine/run-goal.js +188 -0
  72. package/dist/engine/run-image-input.d.ts +1 -1
  73. package/dist/engine/run-image-input.js +5 -3
  74. package/dist/engine/run-session-open.d.ts +41 -0
  75. package/dist/engine/run-session-open.js +186 -0
  76. package/dist/engine/run-setup.d.ts +42 -0
  77. package/dist/engine/run-setup.js +58 -0
  78. package/dist/engine/run-tooling.d.ts +125 -0
  79. package/dist/engine/run-tooling.js +283 -0
  80. package/dist/engine/run-types.d.ts +139 -0
  81. package/dist/engine/run-types.js +12 -0
  82. package/dist/engine/run-workspace.d.ts +50 -0
  83. package/dist/engine/run-workspace.js +114 -0
  84. package/dist/engine/session-title.d.ts +2 -1
  85. package/dist/engine/session-title.js +4 -1
  86. package/dist/engine/steer-queue.d.ts +1 -1
  87. package/dist/engine/subagent-spawner.d.ts +32 -0
  88. package/dist/engine/subagent-spawner.js +287 -0
  89. package/dist/engine/tool-summary.d.ts +2 -2
  90. package/dist/engine/tool-summary.js +2 -2
  91. package/dist/engine/turn-loop.d.ts +67 -10
  92. package/dist/engine/turn-loop.js +538 -97
  93. package/dist/engine/types.d.ts +35 -4
  94. package/dist/engine/types.js +1 -1
  95. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +80 -6
  96. package/dist/goal/lifecycle.js +482 -0
  97. package/dist/hooks/events.d.ts +26 -9
  98. package/dist/hooks/events.js +0 -3
  99. package/dist/hooks/goal-stop-hook.d.ts +28 -29
  100. package/dist/hooks/goal-stop-hook.js +344 -144
  101. package/dist/hooks/registry.js +4 -1
  102. package/dist/hooks/shell-runner.d.ts +12 -1
  103. package/dist/hooks/shell-runner.js +160 -9
  104. package/dist/index.d.ts +51 -110
  105. package/dist/index.extension.d.ts +51 -0
  106. package/dist/index.extension.js +39 -0
  107. package/dist/index.internal.d.ts +86 -0
  108. package/dist/index.internal.js +92 -0
  109. package/dist/index.js +37 -125
  110. package/dist/links/cli.d.ts +48 -0
  111. package/dist/links/cli.js +617 -0
  112. package/dist/links/http.d.ts +40 -0
  113. package/dist/links/http.js +166 -0
  114. package/dist/links/index.d.ts +4 -0
  115. package/dist/links/index.js +3 -0
  116. package/dist/links/link-action-tool.d.ts +5 -0
  117. package/dist/links/link-action-tool.js +241 -0
  118. package/dist/links/providers.d.ts +8 -0
  119. package/dist/links/providers.js +665 -0
  120. package/dist/links/types.d.ts +44 -0
  121. package/dist/llm/client-base.d.ts +7 -0
  122. package/dist/llm/client-base.js +72 -10
  123. package/dist/llm/model-pool.d.ts +1 -1
  124. package/dist/llm/model-pool.js +1 -1
  125. package/dist/llm/providers/anthropic.d.ts +1 -0
  126. package/dist/llm/providers/anthropic.js +9 -0
  127. package/dist/llm/providers/openai.d.ts +1 -0
  128. package/dist/llm/providers/openai.js +17 -0
  129. package/dist/llm/types.d.ts +12 -5
  130. package/dist/model-catalog/index.js +15 -2
  131. package/dist/model-catalog/resolve.d.ts +13 -1
  132. package/dist/model-catalog/resolve.js +37 -2
  133. package/dist/model-catalog/types.d.ts +74 -48
  134. package/dist/model-catalog/types.js +16 -5
  135. package/dist/model-catalog/upsert.d.ts +3 -1
  136. package/dist/model-catalog/upsert.js +9 -0
  137. package/dist/onboarding.d.ts +0 -1
  138. package/dist/onboarding.js +1 -22
  139. package/dist/panel-apps/bindings.d.ts +24 -0
  140. package/dist/panel-apps/bindings.js +69 -0
  141. package/dist/panel-apps/github-archive.d.ts +21 -0
  142. package/dist/panel-apps/github-archive.js +98 -0
  143. package/dist/panel-apps/index.d.ts +4 -0
  144. package/dist/panel-apps/index.js +4 -0
  145. package/dist/panel-apps/installer.d.ts +68 -0
  146. package/dist/panel-apps/installer.js +622 -0
  147. package/dist/panel-apps/manifest.d.ts +364 -0
  148. package/dist/panel-apps/manifest.js +189 -0
  149. package/dist/panel-apps/paths.d.ts +13 -0
  150. package/dist/panel-apps/paths.js +38 -0
  151. package/dist/panel-apps/registry.d.ts +51 -0
  152. package/dist/panel-apps/registry.js +99 -0
  153. package/dist/panel-apps/runtime.d.ts +80 -0
  154. package/dist/panel-apps/runtime.js +154 -0
  155. package/dist/plugins/gitOps.js +8 -1
  156. package/dist/plugins/installedPlugins.d.ts +2 -1
  157. package/dist/plugins/installedPlugins.js +146 -8
  158. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  159. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  160. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  161. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  162. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  163. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  164. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  165. package/dist/plugins/installer/install.d.ts +7 -1
  166. package/dist/plugins/installer/install.js +21 -87
  167. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  168. package/dist/plugins/installer/installFromArchive.js +44 -27
  169. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  170. package/dist/plugins/installer/installFromNpm.js +273 -0
  171. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  172. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  173. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  174. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  175. package/dist/plugins/installer/normalizeManifest.js +306 -0
  176. package/dist/plugins/installer/npmTar.d.ts +13 -0
  177. package/dist/plugins/installer/npmTar.js +321 -0
  178. package/dist/plugins/installer/parseSource.d.ts +11 -0
  179. package/dist/plugins/installer/parseSource.js +48 -0
  180. package/dist/plugins/installer/preview.d.ts +101 -0
  181. package/dist/plugins/installer/preview.js +336 -0
  182. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  183. package/dist/plugins/installer/projectPluginSource.js +140 -0
  184. package/dist/plugins/installer/types.d.ts +775 -0
  185. package/dist/plugins/installer/types.js +100 -0
  186. package/dist/plugins/installer/unzip.d.ts +11 -0
  187. package/dist/plugins/installer/unzip.js +123 -9
  188. package/dist/plugins/installer/update.d.ts +2 -2
  189. package/dist/plugins/installer/update.js +43 -4
  190. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  191. package/dist/plugins/loadPluginHooks.js +97 -86
  192. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  193. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  194. package/dist/plugins/pluginCatalog.d.ts +45 -0
  195. package/dist/plugins/pluginCatalog.js +87 -0
  196. package/dist/plugins/pluginCommandHook.d.ts +10 -4
  197. package/dist/plugins/pluginCommandHook.js +133 -18
  198. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  199. package/dist/plugins/pluginCommandsLoader.js +181 -7
  200. package/dist/plugins/pluginContent.d.ts +10 -1
  201. package/dist/plugins/pluginContent.js +87 -30
  202. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  203. package/dist/plugins/pluginHookApproval.js +160 -0
  204. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  205. package/dist/plugins/pluginHookIntegrity.js +361 -0
  206. package/dist/plugins/pluginInstaller.js +71 -12
  207. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  208. package/dist/plugins/pluginMcpApproval.js +110 -0
  209. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  210. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  211. package/dist/plugins/types.d.ts +30 -0
  212. package/dist/plugins/varRewrite.d.ts +9 -5
  213. package/dist/plugins/varRewrite.js +26 -17
  214. package/dist/preset/index.d.ts +11 -8
  215. package/dist/preset/index.js +62 -203
  216. package/dist/product/define.js +9 -3
  217. package/dist/product/types.d.ts +0 -2
  218. package/dist/profile/activation.d.ts +36 -0
  219. package/dist/profile/activation.js +57 -0
  220. package/dist/profile/catalog-store.d.ts +77 -0
  221. package/dist/profile/catalog-store.js +346 -0
  222. package/dist/profile/catalog.d.ts +54 -0
  223. package/dist/profile/catalog.js +152 -0
  224. package/dist/profile/index.d.ts +7 -0
  225. package/dist/profile/index.js +7 -0
  226. package/dist/profile/requirements.d.ts +76 -0
  227. package/dist/profile/requirements.js +117 -0
  228. package/dist/profile/resolve.d.ts +11 -0
  229. package/dist/profile/resolve.js +41 -0
  230. package/dist/profile/store.d.ts +17 -0
  231. package/dist/profile/store.js +167 -0
  232. package/dist/profile/types.d.ts +321 -0
  233. package/dist/profile/types.js +104 -0
  234. package/dist/prompt/composer.d.ts +46 -7
  235. package/dist/prompt/composer.js +78 -48
  236. package/dist/prompt/instruction-scanner.d.ts +6 -5
  237. package/dist/prompt/instruction-scanner.js +8 -23
  238. package/dist/prompt/section-loader.d.ts +2 -2
  239. package/dist/prompt/section-loader.js +7 -4
  240. package/dist/prompt/sections/browser.md +10 -9
  241. package/dist/prompt/sections/harness-base.md +9 -0
  242. package/dist/protocol/chat-session-manager.d.ts +77 -3
  243. package/dist/protocol/chat-session-manager.js +194 -18
  244. package/dist/protocol/chat-session.d.ts +72 -9
  245. package/dist/protocol/chat-session.js +151 -16
  246. package/dist/protocol/client.d.ts +37 -4
  247. package/dist/protocol/client.js +118 -6
  248. package/dist/protocol/index.d.ts +2 -2
  249. package/dist/protocol/index.js +2 -2
  250. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  251. package/dist/protocol/mobile-remote-types.js +1 -0
  252. package/dist/protocol/server.d.ts +152 -14
  253. package/dist/protocol/server.js +1574 -229
  254. package/dist/protocol/types.d.ts +182 -32
  255. package/dist/protocol/types.js +18 -0
  256. package/dist/run/ArtifactTracker.d.ts +6 -1
  257. package/dist/run/ArtifactTracker.js +29 -21
  258. package/dist/run/EngineRunner.d.ts +2 -0
  259. package/dist/run/EngineRunner.js +1 -0
  260. package/dist/run/RunManager.d.ts +26 -0
  261. package/dist/run/RunManager.js +82 -11
  262. package/dist/run/factory.d.ts +3 -0
  263. package/dist/run/factory.js +2 -0
  264. package/dist/runtime/safe-spawn.d.ts +6 -0
  265. package/dist/runtime/safe-spawn.js +8 -13
  266. package/dist/services/auto-dream.d.ts +13 -1
  267. package/dist/services/auto-dream.js +56 -8
  268. package/dist/services/dream-consolidation.d.ts +3 -0
  269. package/dist/services/dream-consolidation.js +14 -2
  270. package/dist/services/index.d.ts +1 -1
  271. package/dist/services/index.js +1 -1
  272. package/dist/services/memory-orchestrator.js +6 -2
  273. package/dist/services/oauth.d.ts +34 -10
  274. package/dist/services/oauth.js +236 -98
  275. package/dist/services/session-memory.d.ts +4 -4
  276. package/dist/services/session-memory.js +13 -10
  277. package/dist/session/memory.d.ts +26 -7
  278. package/dist/session/memory.js +79 -21
  279. package/dist/session/session-manager.d.ts +208 -25
  280. package/dist/session/session-manager.js +1232 -116
  281. package/dist/session/session-message.d.ts +22 -0
  282. package/dist/session/session-message.js +1 -0
  283. package/dist/session/transcript.d.ts +76 -6
  284. package/dist/session/transcript.js +278 -7
  285. package/dist/settings/feature-flags.d.ts +40 -0
  286. package/dist/settings/feature-flags.js +40 -0
  287. package/dist/settings/manager.d.ts +39 -1
  288. package/dist/settings/manager.js +102 -41
  289. package/dist/settings/migrate-config.js +4 -2
  290. package/dist/settings/schema.d.ts +511 -177
  291. package/dist/settings/schema.js +98 -25
  292. package/dist/skills/scanner.d.ts +6 -2
  293. package/dist/skills/scanner.js +160 -9
  294. package/dist/sources/adapter.d.ts +14 -0
  295. package/dist/sources/adapter.js +7 -0
  296. package/dist/sources/adapters/local-files.d.ts +10 -0
  297. package/dist/sources/adapters/local-files.js +127 -0
  298. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  299. package/dist/sources/adapters/mcp-resource.js +41 -0
  300. package/dist/sources/adapters/mock.d.ts +3 -0
  301. package/dist/sources/adapters/mock.js +29 -0
  302. package/dist/sources/binding.d.ts +6 -0
  303. package/dist/sources/binding.js +24 -0
  304. package/dist/sources/catalog.d.ts +6 -0
  305. package/dist/sources/catalog.js +64 -0
  306. package/dist/sources/context-summary.d.ts +8 -0
  307. package/dist/sources/context-summary.js +13 -0
  308. package/dist/sources/credential-status.d.ts +2 -0
  309. package/dist/sources/credential-status.js +13 -0
  310. package/dist/sources/index.d.ts +10 -0
  311. package/dist/sources/index.js +10 -0
  312. package/dist/sources/resolve.d.ts +28 -0
  313. package/dist/sources/resolve.js +47 -0
  314. package/dist/sources/truncate-utf8.d.ts +7 -0
  315. package/dist/sources/truncate-utf8.js +18 -0
  316. package/dist/sources/types.d.ts +71 -0
  317. package/dist/sources/types.js +26 -0
  318. package/dist/testing/fetch-stub.d.ts +32 -0
  319. package/dist/testing/fetch-stub.js +24 -0
  320. package/dist/themes/image.d.ts +18 -0
  321. package/dist/themes/image.js +117 -0
  322. package/dist/themes/index.d.ts +4 -0
  323. package/dist/themes/index.js +4 -0
  324. package/dist/themes/installer.d.ts +50 -0
  325. package/dist/themes/installer.js +290 -0
  326. package/dist/themes/manifest.d.ts +102 -0
  327. package/dist/themes/manifest.js +86 -0
  328. package/dist/themes/paths.d.ts +14 -0
  329. package/dist/themes/paths.js +33 -0
  330. package/dist/tool-system/browser-bridge.d.ts +53 -11
  331. package/dist/tool-system/browser-bridge.js +8 -9
  332. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  333. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  334. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  335. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  336. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  337. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  338. package/dist/tool-system/builtin/agent-progress.js +83 -0
  339. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  340. package/dist/tool-system/builtin/agent-registry.js +178 -9
  341. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  342. package/dist/tool-system/builtin/agent.d.ts +2 -0
  343. package/dist/tool-system/builtin/agent.js +279 -34
  344. package/dist/tool-system/builtin/background-jobs.d.ts +63 -7
  345. package/dist/tool-system/builtin/background-jobs.js +111 -15
  346. package/dist/tool-system/builtin/background-work.d.ts +12 -1
  347. package/dist/tool-system/builtin/background-work.js +12 -1
  348. package/dist/tool-system/builtin/bash.d.ts +3 -5
  349. package/dist/tool-system/builtin/bash.js +14 -6
  350. package/dist/tool-system/builtin/browser-tools.d.ts +8 -5
  351. package/dist/tool-system/builtin/browser-tools.js +89 -23
  352. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  353. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  354. package/dist/tool-system/builtin/edit.d.ts +2 -1
  355. package/dist/tool-system/builtin/edit.js +14 -10
  356. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  357. package/dist/tool-system/builtin/file-cache.js +4 -0
  358. package/dist/tool-system/builtin/generate-image.js +17 -10
  359. package/dist/tool-system/builtin/generate-video.d.ts +4 -0
  360. package/dist/tool-system/builtin/generate-video.js +164 -28
  361. package/dist/tool-system/builtin/glob.d.ts +2 -1
  362. package/dist/tool-system/builtin/glob.js +28 -3
  363. package/dist/tool-system/builtin/grep.d.ts +1 -0
  364. package/dist/tool-system/builtin/grep.js +82 -17
  365. package/dist/tool-system/builtin/image-uploader.js +7 -1
  366. package/dist/tool-system/builtin/index.d.ts +57 -18
  367. package/dist/tool-system/builtin/index.js +280 -167
  368. package/dist/tool-system/builtin/memory.d.ts +6 -0
  369. package/dist/tool-system/builtin/memory.js +36 -15
  370. package/dist/tool-system/builtin/panel.d.ts +9 -0
  371. package/dist/tool-system/builtin/panel.js +314 -0
  372. package/dist/tool-system/builtin/read.js +5 -1
  373. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  374. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  375. package/dist/tool-system/builtin/sources.d.ts +8 -0
  376. package/dist/tool-system/builtin/sources.js +137 -0
  377. package/dist/tool-system/builtin/tool-search.js +7 -2
  378. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  379. package/dist/tool-system/builtin/video-providers.d.ts +12 -15
  380. package/dist/tool-system/builtin/video-providers.js +1 -0
  381. package/dist/tool-system/builtin/view-image.d.ts +2 -2
  382. package/dist/tool-system/builtin/web-fetch.js +60 -15
  383. package/dist/tool-system/builtin/web-search.js +1 -3
  384. package/dist/tool-system/builtin/write.d.ts +2 -1
  385. package/dist/tool-system/builtin/write.js +14 -4
  386. package/dist/tool-system/capability-module.d.ts +93 -0
  387. package/dist/tool-system/capability-module.js +53 -0
  388. package/dist/tool-system/context.d.ts +94 -24
  389. package/dist/tool-system/executor.js +99 -58
  390. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  391. package/dist/tool-system/external-tool-exposure.js +304 -0
  392. package/dist/tool-system/mcp-manager.d.ts +17 -1
  393. package/dist/tool-system/mcp-manager.js +72 -7
  394. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  395. package/dist/tool-system/mcp-tool-policy.js +34 -0
  396. package/dist/tool-system/panel-bridge.d.ts +53 -0
  397. package/dist/tool-system/panel-bridge.js +1 -0
  398. package/dist/tool-system/path-policy.d.ts +19 -0
  399. package/dist/tool-system/path-policy.js +62 -1
  400. package/dist/tool-system/permission.d.ts +69 -3
  401. package/dist/tool-system/permission.js +429 -30
  402. package/dist/tool-system/registry.d.ts +15 -3
  403. package/dist/tool-system/registry.js +82 -40
  404. package/dist/tool-system/sandbox/index.js +3 -8
  405. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  406. package/dist/tool-system/session-tool-host.d.ts +139 -0
  407. package/dist/tool-system/session-tool-host.js +167 -0
  408. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  409. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  410. package/dist/tool-system/validation.d.ts +14 -7
  411. package/dist/tool-system/validation.js +701 -7
  412. package/dist/types.d.ts +201 -20
  413. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  414. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  415. package/dist/utils/file-mutex.d.ts +65 -0
  416. package/dist/utils/file-mutex.js +145 -0
  417. package/dist/utils/json.d.ts +2 -4
  418. package/dist/utils/json.js +2 -4
  419. package/dist/utils/lockfile.d.ts +30 -1
  420. package/dist/utils/lockfile.js +2 -2
  421. package/dist/utils/secret-scrubber.d.ts +8 -0
  422. package/dist/utils/secret-scrubber.js +227 -0
  423. package/dist/utils/toolDisplay.js +1 -1
  424. package/package.json +20 -5
  425. package/THIRD_PARTY_NOTICES.md +0 -206
  426. package/dist/arena/arena.d.ts +0 -43
  427. package/dist/arena/arena.js +0 -333
  428. package/dist/arena/context/context-tools.d.ts +0 -16
  429. package/dist/arena/context/context-tools.js +0 -272
  430. package/dist/arena/context/within-root.d.ts +0 -7
  431. package/dist/arena/context/within-root.js +0 -15
  432. package/dist/arena/detect-mode.d.ts +0 -20
  433. package/dist/arena/detect-mode.js +0 -78
  434. package/dist/arena/digest-builder.d.ts +0 -25
  435. package/dist/arena/digest-builder.js +0 -120
  436. package/dist/arena/index.d.ts +0 -29
  437. package/dist/arena/index.js +0 -29
  438. package/dist/arena/iterate/convergence.d.ts +0 -25
  439. package/dist/arena/iterate/convergence.js +0 -103
  440. package/dist/arena/iterate/formats/index.d.ts +0 -22
  441. package/dist/arena/iterate/formats/index.js +0 -283
  442. package/dist/arena/iterate/index.d.ts +0 -11
  443. package/dist/arena/iterate/index.js +0 -9
  444. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  445. package/dist/arena/iterate/iterative-arena.js +0 -237
  446. package/dist/arena/iterate/parse.d.ts +0 -42
  447. package/dist/arena/iterate/parse.js +0 -123
  448. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  449. package/dist/arena/iterate/phases/argue.js +0 -165
  450. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  451. package/dist/arena/iterate/phases/revise.js +0 -62
  452. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  453. package/dist/arena/iterate/phases/tournament.js +0 -113
  454. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  455. package/dist/arena/iterate/tools/web-tools.js +0 -54
  456. package/dist/arena/iterate/types.d.ts +0 -152
  457. package/dist/arena/iterate/types.js +0 -8
  458. package/dist/arena/ledger.d.ts +0 -47
  459. package/dist/arena/ledger.js +0 -159
  460. package/dist/arena/lenses/architecture.d.ts +0 -5
  461. package/dist/arena/lenses/architecture.js +0 -22
  462. package/dist/arena/lenses/engineering.d.ts +0 -5
  463. package/dist/arena/lenses/engineering.js +0 -22
  464. package/dist/arena/lenses/general.d.ts +0 -5
  465. package/dist/arena/lenses/general.js +0 -20
  466. package/dist/arena/lenses/index.d.ts +0 -16
  467. package/dist/arena/lenses/index.js +0 -47
  468. package/dist/arena/lenses/product.d.ts +0 -5
  469. package/dist/arena/lenses/product.js +0 -22
  470. package/dist/arena/model-presets.d.ts +0 -23
  471. package/dist/arena/model-presets.js +0 -44
  472. package/dist/arena/phases/adjudication.d.ts +0 -24
  473. package/dist/arena/phases/adjudication.js +0 -141
  474. package/dist/arena/phases/build-consensus.d.ts +0 -29
  475. package/dist/arena/phases/build-consensus.js +0 -83
  476. package/dist/arena/phases/claim-registry.d.ts +0 -26
  477. package/dist/arena/phases/claim-registry.js +0 -60
  478. package/dist/arena/phases/cross-review.d.ts +0 -45
  479. package/dist/arena/phases/cross-review.js +0 -218
  480. package/dist/arena/phases/debate-rounds.d.ts +0 -27
  481. package/dist/arena/phases/debate-rounds.js +0 -159
  482. package/dist/arena/phases/participant-research.d.ts +0 -38
  483. package/dist/arena/phases/participant-research.js +0 -314
  484. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
  485. package/dist/arena/phases/planning-detail-expansion.js +0 -119
  486. package/dist/arena/planner.d.ts +0 -27
  487. package/dist/arena/planner.js +0 -311
  488. package/dist/arena/providers/docs.d.ts +0 -7
  489. package/dist/arena/providers/docs.js +0 -111
  490. package/dist/arena/providers/git.d.ts +0 -8
  491. package/dist/arena/providers/git.js +0 -174
  492. package/dist/arena/providers/index.d.ts +0 -32
  493. package/dist/arena/providers/index.js +0 -132
  494. package/dist/arena/providers/none.d.ts +0 -7
  495. package/dist/arena/providers/none.js +0 -11
  496. package/dist/arena/providers/repo.d.ts +0 -7
  497. package/dist/arena/providers/repo.js +0 -258
  498. package/dist/arena/render/session.d.ts +0 -17
  499. package/dist/arena/render/session.js +0 -190
  500. package/dist/arena/render/terminal.d.ts +0 -34
  501. package/dist/arena/render/terminal.js +0 -286
  502. package/dist/arena/strategies/discussion.d.ts +0 -25
  503. package/dist/arena/strategies/discussion.js +0 -143
  504. package/dist/arena/strategies/index.d.ts +0 -15
  505. package/dist/arena/strategies/index.js +0 -28
  506. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  507. package/dist/arena/strategies/language-wrapper.js +0 -102
  508. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  509. package/dist/arena/strategies/lens-wrapper.js +0 -236
  510. package/dist/arena/strategies/planning.d.ts +0 -30
  511. package/dist/arena/strategies/planning.js +0 -225
  512. package/dist/arena/strategies/review.d.ts +0 -26
  513. package/dist/arena/strategies/review.js +0 -168
  514. package/dist/arena/strategies/utils.d.ts +0 -36
  515. package/dist/arena/strategies/utils.js +0 -603
  516. package/dist/arena/tools/selector.d.ts +0 -17
  517. package/dist/arena/tools/selector.js +0 -61
  518. package/dist/arena/transitions.d.ts +0 -53
  519. package/dist/arena/transitions.js +0 -97
  520. package/dist/arena/types.d.ts +0 -514
  521. package/dist/arena/types.js +0 -27
  522. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  523. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  524. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  525. package/dist/cc-orchestrator/cc-capability.js +0 -53
  526. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  527. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  528. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  529. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  530. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  531. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  532. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  533. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  534. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  535. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  536. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  537. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  538. package/dist/cc-orchestrator/index.d.ts +0 -8
  539. package/dist/cc-orchestrator/index.js +0 -8
  540. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  541. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  542. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  543. package/dist/cc-orchestrator/session-discovery.js +0 -125
  544. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  545. package/dist/cc-orchestrator/session-history.js +0 -150
  546. package/dist/cron/cron-runtime.d.ts +0 -2
  547. package/dist/cron/cron-runtime.js +0 -2
  548. package/dist/cron/cron-store.d.ts +0 -2
  549. package/dist/cron/cron-store.js +0 -2
  550. package/dist/cron/scheduler.d.ts +0 -7
  551. package/dist/cron/scheduler.js +0 -7
  552. package/dist/engine/goal.js +0 -206
  553. package/dist/external-agents/config.d.ts +0 -2
  554. package/dist/external-agents/config.js +0 -15
  555. package/dist/external-agents/types.d.ts +0 -31
  556. package/dist/git/parse-log.d.ts +0 -13
  557. package/dist/git/parse-log.js +0 -21
  558. package/dist/git/utils.d.ts +0 -49
  559. package/dist/git/utils.js +0 -161
  560. package/dist/git/worktree/crud.d.ts +0 -69
  561. package/dist/git/worktree/crud.js +0 -206
  562. package/dist/git/worktree/diff.d.ts +0 -14
  563. package/dist/git/worktree/diff.js +0 -82
  564. package/dist/git/worktree/git-exec.d.ts +0 -7
  565. package/dist/git/worktree/git-exec.js +0 -51
  566. package/dist/git/worktree/index.d.ts +0 -5
  567. package/dist/git/worktree/index.js +0 -5
  568. package/dist/git/worktree/query.d.ts +0 -42
  569. package/dist/git/worktree/query.js +0 -121
  570. package/dist/git/worktree/slug.d.ts +0 -11
  571. package/dist/git/worktree/slug.js +0 -58
  572. package/dist/git/worktree.d.ts +0 -1
  573. package/dist/git/worktree.js +0 -5
  574. package/dist/lsp/client.d.ts +0 -41
  575. package/dist/lsp/client.js +0 -186
  576. package/dist/lsp/manager.d.ts +0 -40
  577. package/dist/lsp/manager.js +0 -155
  578. package/dist/lsp/root-path.d.ts +0 -9
  579. package/dist/lsp/root-path.js +0 -12
  580. package/dist/lsp/servers.d.ts +0 -16
  581. package/dist/lsp/servers.js +0 -60
  582. package/dist/prompt/sections/coding.md +0 -35
  583. package/dist/quota/credentials.d.ts +0 -3
  584. package/dist/quota/credentials.js +0 -80
  585. package/dist/quota/index.d.ts +0 -36
  586. package/dist/quota/index.js +0 -155
  587. package/dist/quota/types.d.ts +0 -48
  588. package/dist/quota/types.js +0 -13
  589. package/dist/review/review-prompt.d.ts +0 -28
  590. package/dist/review/review-prompt.js +0 -81
  591. package/dist/state.d.ts +0 -160
  592. package/dist/state.js +0 -267
  593. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  594. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  595. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  596. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  597. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  598. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  599. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  600. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  601. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  602. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  603. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  604. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  605. package/dist/tool-system/builtin/arena.d.ts +0 -31
  606. package/dist/tool-system/builtin/arena.js +0 -415
  607. package/dist/tool-system/builtin/brief.d.ts +0 -6
  608. package/dist/tool-system/builtin/brief.js +0 -41
  609. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  610. package/dist/tool-system/builtin/check-quota.js +0 -34
  611. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  612. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  613. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  614. package/dist/tool-system/builtin/lsp.js +0 -144
  615. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  616. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  617. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  618. package/dist/tool-system/builtin/worktree.js +0 -345
  619. /package/dist/{external-agents → links}/types.js +0 -0
  620. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  621. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -1,159 +0,0 @@
1
- /**
2
- * DebateRounds — contested claims enter structured debate between
3
- * the claim owner and the primary challenger.
4
- *
5
- * Each debate round:
6
- * 1. Both debaters produce a DebateTurn (stance + argument)
7
- * 2. Convergence check: all stances are "support" or "narrow" → resolved
8
- * 3. If max rounds exhausted → stays contested for adjudication
9
- */
10
- import { createLLMClient } from "../../llm/client-factory.js";
11
- import { isStrategyV2 } from "../types.js";
12
- import { buildDigest } from "../digest-builder.js";
13
- import { parseDebateTurn as parseDebateTurnUtil } from "../strategies/utils.js";
14
- import { logger } from "../../logging/logger.js";
15
- /**
16
- * Run debate rounds for all contested claims.
17
- * Returns empty array if no contested claims exist.
18
- */
19
- export async function runDebateRounds(options) {
20
- const { participants, strategy, topic, ledger, limits, maxRounds, signal, onProgress } = options;
21
- // Select contested claims, capped
22
- const contested = ledger.getClaimsByStatus("contested")
23
- .slice(0, limits.maxContestedClaimsForDebate);
24
- if (contested.length === 0) {
25
- logger.info("arena.debate_skip", { reason: "no contested claims" });
26
- return [];
27
- }
28
- logger.info("arena.debate_start", {
29
- contestedCount: contested.length,
30
- maxRounds,
31
- });
32
- const allDebateRounds = [];
33
- const v2 = isStrategyV2(strategy);
34
- // Debate each claim sequentially (to avoid token explosion from parallelism)
35
- for (const claim of contested) {
36
- signal?.throwIfAborted();
37
- const claimDebateRounds = await debateClaim({
38
- claim,
39
- participants,
40
- strategy,
41
- v2,
42
- topic,
43
- ledger,
44
- maxRounds,
45
- signal,
46
- onProgress,
47
- });
48
- allDebateRounds.push(...claimDebateRounds);
49
- // Attach debate rounds to claim record
50
- claim.debateRounds.push(...claimDebateRounds);
51
- }
52
- return allDebateRounds;
53
- }
54
- async function debateClaim(options) {
55
- const { claim, participants, strategy, v2, topic, ledger, maxRounds, signal, onProgress } = options;
56
- // Identify debaters: claim owner + primary challenger
57
- const owner = participants.find((p) => p.name === claim.owner);
58
- const primaryChallenger = findPrimaryChallenger(claim, participants);
59
- if (!owner || !primaryChallenger) {
60
- logger.warn("arena.debate_skip_claim", {
61
- claimId: claim.claimId,
62
- reason: "cannot identify debaters",
63
- });
64
- return [];
65
- }
66
- const debaters = [owner, primaryChallenger];
67
- const rounds = [];
68
- const allTurns = [];
69
- for (let round = 1; round <= maxRounds; round++) {
70
- signal?.throwIfAborted();
71
- onProgress?.({ type: "debate_round_start", round, claims: [claim.claimId] });
72
- const digest = buildDigest(ledger, {
73
- round,
74
- relevantClaimIds: [claim.claimId],
75
- });
76
- // Each debater produces a turn
77
- const turnPromises = debaters.map(async (p) => {
78
- const client = await createLLMClient(p.llm, p.clientDefaults);
79
- const systemPrompt = strategy.crossReviewSystemPrompt(p.name);
80
- let userContent;
81
- if (v2) {
82
- userContent = strategy
83
- .debateTurnUserPrompt(topic, claim, allTurns, digest);
84
- }
85
- else {
86
- // Fallback prompt for non-V2 strategies
87
- userContent = buildFallbackDebatePrompt(topic, claim, allTurns);
88
- }
89
- const response = await client.createMessage({
90
- systemPrompt,
91
- messages: [{ role: "user", content: userContent }],
92
- signal,
93
- });
94
- logger.info("arena.debate_turn", {
95
- participant: p.name,
96
- claimId: claim.claimId,
97
- round,
98
- stopReason: response.stopReason,
99
- });
100
- if (v2) {
101
- return strategy.parseDebateTurnResponse(p.name, response.text);
102
- }
103
- return parseDebateTurnUtil(p.name, response.text);
104
- });
105
- const turns = await Promise.all(turnPromises);
106
- allTurns.push(...turns);
107
- // Check convergence
108
- const resolved = turns.every((t) => t.stance === "support" || t.stance === "narrow");
109
- const resolutionNote = resolved
110
- ? `Converged in round ${round}: ${turns.map((t) => `${t.participant}=${t.stance}`).join(", ")}`
111
- : undefined;
112
- const debateRound = {
113
- round,
114
- claimId: claim.claimId,
115
- participants: turns,
116
- resolved,
117
- resolutionNote,
118
- };
119
- rounds.push(debateRound);
120
- onProgress?.({ type: "debate_round_done", round, resolved: resolved ? 1 : 0 });
121
- if (resolved) {
122
- logger.info("arena.debate_converged", {
123
- claimId: claim.claimId,
124
- round,
125
- });
126
- break;
127
- }
128
- }
129
- return rounds;
130
- }
131
- /**
132
- * Find the primary challenger — the participant who disagreed or requested evidence.
133
- */
134
- function findPrimaryChallenger(claim, participants) {
135
- // Prefer disagree over needs_evidence
136
- const disagreeChallenge = claim.challenges.find((c) => c.verdict === "disagree");
137
- const needsEvidenceChallenge = claim.challenges.find((c) => c.verdict === "needs_evidence");
138
- const challenge = disagreeChallenge ?? needsEvidenceChallenge ?? claim.challenges[0];
139
- if (!challenge)
140
- return undefined;
141
- return participants.find((p) => p.name === challenge.reviewer);
142
- }
143
- /**
144
- * Build a fallback debate prompt for non-V2 strategies.
145
- */
146
- function buildFallbackDebatePrompt(topic, claim, priorTurns) {
147
- const turnsText = priorTurns.length > 0
148
- ? priorTurns.map((t) => `[${t.participant}] ${t.stance}: ${t.summary}`).join("\n")
149
- : "No prior turns.";
150
- return (`## Topic: ${topic}\n\n` +
151
- `## Contested Claim\n` +
152
- `[${claim.claimId}] ${claim.finding.title}\n${claim.finding.summary}\n\n` +
153
- `## Prior Debate\n${turnsText}\n\n` +
154
- `State your position on this claim. Build on prior turns: cite specific evidence, ` +
155
- `acknowledge counter-arguments, and explain your reasoning in 150-300 words. ` +
156
- `Brevity here means missed nuance — depth wins.\n` +
157
- `Respond ONLY with JSON:\n` +
158
- `{"stance": "support|oppose|narrow|uncertain", "summary": "your argument", "newEvidenceRefs": ["optional"]}`);
159
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * ParticipantResearch — each participant independently investigates
3
- * the shared base context and produces structured findings.
4
- *
5
- * Phase 3 upgrade: now captures ToolTrace and builds EvidencePackets,
6
- * outputting a full ResearchDossier alongside the ParticipantReport.
7
- */
8
- import type { ArenaBaseContext, ArenaParticipant, ArenaStrategy, ParticipantReport, ResearchDossier, ArenaProgressEvent } from "../types.js";
9
- import type { ToolDefinition } from "../../types.js";
10
- /** Result of a single participant's research — includes both report and dossier */
11
- export interface ResearchResult {
12
- report: ParticipantReport;
13
- dossier: ResearchDossier;
14
- }
15
- interface ResearchOptions {
16
- participants: ArenaParticipant[];
17
- strategy: ArenaStrategy;
18
- topic: string;
19
- baseContext: ArenaBaseContext;
20
- enableContextTools?: boolean;
21
- /** Plan-selected tools override. When provided, these are used instead of all CONTEXT_TOOLS. */
22
- contextTools?: ToolDefinition[];
23
- /** AbortSignal — cancels in-flight LLM calls */
24
- signal?: AbortSignal;
25
- onProgress?: (event: ArenaProgressEvent) => void;
26
- }
27
- /**
28
- * Run participant research phase in parallel.
29
- * Each participant reads the shared context, optionally requests more,
30
- * then produces structured findings with evidence trails.
31
- */
32
- export declare function runParticipantResearch(options: ResearchOptions): Promise<ParticipantReport[]>;
33
- /**
34
- * Run participant research phase with full dossier output.
35
- * Returns both reports (backward compat) and dossiers (evidence trail).
36
- */
37
- export declare function runParticipantResearchWithDossiers(options: ResearchOptions): Promise<ResearchResult[]>;
38
- export {};
@@ -1,314 +0,0 @@
1
- /**
2
- * ParticipantResearch — each participant independently investigates
3
- * the shared base context and produces structured findings.
4
- *
5
- * Phase 3 upgrade: now captures ToolTrace and builds EvidencePackets,
6
- * outputting a full ResearchDossier alongside the ParticipantReport.
7
- */
8
- import { createLLMClient } from "../../llm/client-factory.js";
9
- import { CONTEXT_TOOLS, MAX_TOOL_ROUNDS, executeContextTool } from "../context/context-tools.js";
10
- import { logger } from "../../logging/logger.js";
11
- import { createHash } from "node:crypto";
12
- /**
13
- * Run participant research phase in parallel.
14
- * Each participant reads the shared context, optionally requests more,
15
- * then produces structured findings with evidence trails.
16
- */
17
- export async function runParticipantResearch(options) {
18
- const results = await runParticipantResearchWithDossiers(options);
19
- return results.map((r) => r.report);
20
- }
21
- /**
22
- * Run participant research phase with full dossier output.
23
- * Returns both reports (backward compat) and dossiers (evidence trail).
24
- */
25
- export async function runParticipantResearchWithDossiers(options) {
26
- const { participants, strategy, topic, baseContext, enableContextTools, contextTools, signal, onProgress } = options;
27
- const tools = enableContextTools ? (contextTools ?? CONTEXT_TOOLS) : undefined;
28
- const tasks = participants.map(async (p) => {
29
- onProgress?.({ type: "research_start", participant: p.name });
30
- const client = await createLLMClient(p.llm, p.clientDefaults);
31
- const messages = [
32
- {
33
- role: "user",
34
- content: strategy.researchUserPrompt(topic, baseContext),
35
- },
36
- ];
37
- let finalText = "";
38
- let totalRounds = 0;
39
- const toolTraces = [];
40
- const evidencePackets = [];
41
- // ── Tool-use loop ──────────────────────────────────────────
42
- const MAX_MESSAGES = 30; // Cap messages to prevent token overflow
43
- for (let round = 0; round <= MAX_TOOL_ROUNDS; round++) {
44
- totalRounds = round;
45
- // Safety: prevent unbounded message growth
46
- if (messages.length >= MAX_MESSAGES) {
47
- logger.warn("arena.research_message_limit", {
48
- participant: p.name,
49
- messageCount: messages.length,
50
- round,
51
- });
52
- break;
53
- }
54
- const response = await client.createMessage({
55
- systemPrompt: strategy.researchSystemPrompt(p.name),
56
- messages,
57
- tools,
58
- signal,
59
- });
60
- const toolNames = (response.toolCalls ?? []).map((tc) => tc.toolName);
61
- const hasTools = response.toolCalls && response.toolCalls.length > 0;
62
- logger.info("arena.research_round", {
63
- participant: p.name,
64
- round,
65
- toolCount: response.toolCalls?.length ?? 0,
66
- toolNames,
67
- textLen: response.text?.length ?? 0,
68
- stopReason: response.stopReason ?? "unknown",
69
- });
70
- if (!hasTools) {
71
- finalText = response.text;
72
- break;
73
- }
74
- // Report tool usage to UI
75
- onProgress?.({
76
- type: "context_lookup",
77
- participant: p.name,
78
- tools: response.toolCalls.map((tc) => `${tc.toolName}(${JSON.stringify(tc.args)})`),
79
- });
80
- // Append assistant message with tool_use blocks
81
- const assistantBlocks = [];
82
- if (response.text) {
83
- assistantBlocks.push({ type: "text", text: response.text });
84
- }
85
- for (const tc of response.toolCalls) {
86
- assistantBlocks.push({
87
- type: "tool_use",
88
- id: tc.id,
89
- name: tc.toolName,
90
- input: tc.args,
91
- });
92
- }
93
- messages.push({ role: "assistant", content: assistantBlocks });
94
- // Execute tools, record traces, and build evidence packets
95
- const resultBlocks = [];
96
- for (const tc of response.toolCalls) {
97
- const result = executeContextTool(tc);
98
- // Record tool trace
99
- const trace = {
100
- round,
101
- toolName: tc.toolName,
102
- args: tc.args,
103
- resultRef: buildResultRef(tc),
104
- keptAsEvidence: result.length > 50 && !result.startsWith("Error:") && !result.startsWith("Tool error:") && !result.startsWith("Unknown tool:"),
105
- };
106
- toolTraces.push(trace);
107
- // Build evidence packet from successful tool results
108
- if (trace.keptAsEvidence) {
109
- const packet = buildEvidencePacketFromTool(p.name, tc, result, inferSourceKind(tc.toolName));
110
- evidencePackets.push(packet);
111
- }
112
- resultBlocks.push({
113
- type: "tool_result",
114
- tool_use_id: tc.id,
115
- content: result,
116
- });
117
- }
118
- // ── Anti-loop hard nudge ───────────────────────────────────
119
- // Thinking-mode models (DeepSeek V4 in particular) will
120
- // otherwise spend every available round on read_file with
121
- // textLen=0, then need a separate force_conclude pass to emit
122
- // findings. We prepend the directive to the user turn so it
123
- // appears BEFORE the tool results — trailing text after
124
- // tool_result blocks gets ignored by some implementations.
125
- const remaining = MAX_TOOL_ROUNDS - round;
126
- const isLastAllowedRound = remaining <= 0;
127
- const isPenultimate = remaining === 1;
128
- if (isLastAllowedRound || isPenultimate) {
129
- const directive = isLastAllowedRound
130
- ? "STOP. You have used your tool budget. Your NEXT response MUST be the findings JSON. Do NOT call any more tools — any further tool_use will be discarded."
131
- : "FINAL ROUND. Use the tool results below plus any prior context to output the findings JSON in your NEXT response. Do not call more tools.";
132
- resultBlocks.unshift({
133
- type: "text",
134
- text: `[arena-research:${p.name}] ${directive}`,
135
- });
136
- }
137
- messages.push({ role: "user", content: resultBlocks });
138
- }
139
- // ── Force-conclude if no text yet ──────────────────────────
140
- if (!finalText) {
141
- logger.warn("arena.research_force_conclude", {
142
- participant: p.name,
143
- totalRounds,
144
- messageCount: messages.length,
145
- });
146
- const forceResponse = await client.createMessage({
147
- systemPrompt: strategy.researchSystemPrompt(p.name),
148
- messages: [
149
- ...messages,
150
- {
151
- role: "user",
152
- content: "You have gathered enough context. " +
153
- "Based on ALL the tool results above, output your findings NOW.\n\n" +
154
- "Respond ONLY with the <report> XML element specified in the system prompt — " +
155
- "output your highest-confidence findings (typically 5-15 for a substantive topic; " +
156
- "each <summary> should be 80+ words with concrete evidence). " +
157
- "Do NOT request any more tools. No prose outside the XML.",
158
- },
159
- ],
160
- });
161
- logger.info("arena.research_force_conclude_response", {
162
- participant: p.name,
163
- textLen: forceResponse.text?.length ?? 0,
164
- stopReason: forceResponse.stopReason ?? "unknown",
165
- });
166
- finalText = forceResponse.text;
167
- }
168
- // ── Final output ───────────────────────────────────────────
169
- logger.info("arena.research_raw_response", {
170
- participant: p.name,
171
- textLength: finalText.length,
172
- text: finalText,
173
- });
174
- // If still empty after force-conclude, mark as failed
175
- if (!finalText || finalText.trim().length === 0) {
176
- logger.warn("arena.research_failed", {
177
- participant: p.name,
178
- totalRounds,
179
- messageCount: messages.length,
180
- });
181
- const failedReport = {
182
- participant: p.name,
183
- contextSummary: `(research failed: model returned empty response after ${totalRounds} tool rounds)`,
184
- findings: [],
185
- };
186
- const failedDossier = {
187
- participant: p.name,
188
- contextSummary: failedReport.contextSummary,
189
- findings: [],
190
- toolTrace: toolTraces,
191
- evidencePackets,
192
- findingEvidenceLinks: [],
193
- };
194
- onProgress?.({ type: "research_done", participant: p.name, report: failedReport });
195
- return { report: failedReport, dossier: failedDossier };
196
- }
197
- const report = strategy.parseResearchResponse(p.name, finalText);
198
- // Build finding-evidence links by matching finding evidence refs to packets
199
- const findingEvidenceLinks = buildFindingEvidenceLinks(report, evidencePackets);
200
- const dossier = {
201
- participant: p.name,
202
- contextSummary: report.contextSummary,
203
- findings: report.findings,
204
- toolTrace: toolTraces,
205
- evidencePackets,
206
- findingEvidenceLinks,
207
- };
208
- onProgress?.({ type: "research_done", participant: p.name, report });
209
- return { report, dossier };
210
- });
211
- return Promise.all(tasks);
212
- }
213
- // ─── Helper functions ──────────────────────────────────────────
214
- /** Build a stable ref string for a tool call */
215
- function buildResultRef(tc) {
216
- if (tc.toolName === "read_file" && tc.args.path)
217
- return `file:${tc.args.path}`;
218
- if (tc.toolName === "grep_code" && tc.args.pattern)
219
- return `grep:${tc.args.pattern}`;
220
- if (tc.toolName === "list_files" && tc.args.path)
221
- return `dir:${tc.args.path}`;
222
- if (tc.toolName === "git_show" && tc.args.ref)
223
- return `git:${tc.args.ref}`;
224
- if (tc.toolName === "git_blame" && tc.args.path)
225
- return `blame:${tc.args.path}`;
226
- return `${tc.toolName}:${JSON.stringify(tc.args).slice(0, 60)}`;
227
- }
228
- /** Generate a stable packet ID */
229
- function generatePacketId(participant, source, ref, snippet) {
230
- const hash = createHash("sha256")
231
- .update(`${participant}:${source}:${ref}:${snippet.slice(0, 200)}`)
232
- .digest("hex")
233
- .slice(0, 12);
234
- return `pkt-${hash}`;
235
- }
236
- /** Infer the evidence source kind from the tool that produced it */
237
- function inferSourceKind(toolName) {
238
- switch (toolName) {
239
- case "git_show":
240
- case "git_blame":
241
- return "git";
242
- case "read_file":
243
- case "grep_code":
244
- case "list_files":
245
- return "repo";
246
- default:
247
- return "repo";
248
- }
249
- }
250
- /** Build an EvidencePacket from a tool call result */
251
- function buildEvidencePacketFromTool(participant, tc, result, source) {
252
- const ref = buildResultRef(tc);
253
- const snippet = result.slice(0, 500);
254
- const packetId = generatePacketId(participant, source, ref, snippet);
255
- return {
256
- packetId,
257
- participant,
258
- source,
259
- title: `${tc.toolName}: ${formatToolArgs(tc.args)}`,
260
- refs: [ref],
261
- summary: result.slice(0, 200),
262
- excerpts: [{
263
- ref,
264
- snippet,
265
- note: `Result of ${tc.toolName} call`,
266
- }],
267
- };
268
- }
269
- /** Format tool args into a concise display string */
270
- function formatToolArgs(args) {
271
- const parts = [];
272
- for (const [key, value] of Object.entries(args)) {
273
- if (typeof value === "string")
274
- parts.push(value.slice(0, 60));
275
- else
276
- parts.push(`${key}=${JSON.stringify(value)}`);
277
- }
278
- return parts.join(", ").slice(0, 100);
279
- }
280
- /**
281
- * Build links between findings and evidence packets by matching
282
- * finding evidence refs against packet refs.
283
- */
284
- function buildFindingEvidenceLinks(report, packets) {
285
- const links = [];
286
- for (const finding of report.findings) {
287
- const matchedPacketIds = [];
288
- for (const evidence of finding.evidence) {
289
- const evidenceRef = `${evidence.type}:${evidence.ref}`;
290
- // Find packets whose refs overlap with this evidence ref
291
- for (const packet of packets) {
292
- const matches = packet.refs.some((pRef) => {
293
- // Exact match
294
- if (pRef === evidenceRef)
295
- return true;
296
- // Partial match — packet ref contains the file path
297
- if (evidence.ref && pRef.includes(evidence.ref))
298
- return true;
299
- return false;
300
- });
301
- if (matches && !matchedPacketIds.includes(packet.packetId)) {
302
- matchedPacketIds.push(packet.packetId);
303
- }
304
- }
305
- }
306
- if (matchedPacketIds.length > 0) {
307
- links.push({
308
- findingId: finding.id,
309
- evidencePacketIds: matchedPacketIds,
310
- });
311
- }
312
- }
313
- return links;
314
- }
@@ -1,38 +0,0 @@
1
- /**
2
- * PlanningDetailExpansion — expands high-level roadmap phases into
3
- * repo-level implementation plans.
4
- *
5
- * This phase is planning-mode specific. It takes the roadmap produced
6
- * by consensus and, for each phase, calls the LLM to produce concrete
7
- * implementation details: target files, code changes, interfaces,
8
- * migration steps, validation, effort, and blockers.
9
- *
10
- * Tool access is available so the LLM can verify file paths and interfaces.
11
- */
12
- import type { ArenaParticipant, ArenaRoadmapPhase, ArenaRoadmapPhaseDetail, ArenaProgressEvent, ArenaExecutionLimits, ArenaStrategyPlanning } from "../types.js";
13
- import type { ToolDefinition } from "../../types.js";
14
- import type { ArenaLedger } from "../ledger.js";
15
- interface DetailExpansionOptions {
16
- /** The participant that performs the expansion (typically the concluder) */
17
- concluder: ArenaParticipant;
18
- strategy: ArenaStrategyPlanning;
19
- topic: string;
20
- /** Roadmap phases to expand */
21
- phases: ArenaRoadmapPhase[];
22
- ledger: ArenaLedger;
23
- limits: ArenaExecutionLimits;
24
- /** Enable read-only context tools for file path verification */
25
- enableContextTools?: boolean;
26
- /** Plan-selected tools override */
27
- contextTools?: ToolDefinition[];
28
- signal?: AbortSignal;
29
- onProgress?: (event: ArenaProgressEvent) => void;
30
- }
31
- /**
32
- * Expand each roadmap phase into a repo-level implementation plan.
33
- *
34
- * Phases are expanded sequentially to avoid token explosion.
35
- * The number of phases expanded is capped by limits.maxExpandedPhasesPerRun.
36
- */
37
- export declare function runDetailExpansion(options: DetailExpansionOptions): Promise<ArenaRoadmapPhaseDetail[]>;
38
- export {};
@@ -1,119 +0,0 @@
1
- /**
2
- * PlanningDetailExpansion — expands high-level roadmap phases into
3
- * repo-level implementation plans.
4
- *
5
- * This phase is planning-mode specific. It takes the roadmap produced
6
- * by consensus and, for each phase, calls the LLM to produce concrete
7
- * implementation details: target files, code changes, interfaces,
8
- * migration steps, validation, effort, and blockers.
9
- *
10
- * Tool access is available so the LLM can verify file paths and interfaces.
11
- */
12
- import { createLLMClient } from "../../llm/client-factory.js";
13
- import { logger } from "../../logging/logger.js";
14
- import { buildDigest } from "../digest-builder.js";
15
- import { CONTEXT_TOOLS, MAX_TOOL_ROUNDS, executeContextTool } from "../context/context-tools.js";
16
- /** Max tool rounds per phase expansion (lighter than research) */
17
- const MAX_EXPANSION_TOOL_ROUNDS = 3;
18
- /**
19
- * Expand each roadmap phase into a repo-level implementation plan.
20
- *
21
- * Phases are expanded sequentially to avoid token explosion.
22
- * The number of phases expanded is capped by limits.maxExpandedPhasesPerRun.
23
- */
24
- export async function runDetailExpansion(options) {
25
- const { concluder, strategy, topic, phases, ledger, limits, signal, onProgress } = options;
26
- const tools = options.enableContextTools !== false
27
- ? (options.contextTools ?? CONTEXT_TOOLS)
28
- : undefined;
29
- // Cap phases to expand
30
- const toExpand = phases.slice(0, limits.maxExpandedPhasesPerRun);
31
- onProgress?.({ type: "roadmap_expansion_start", phaseCount: toExpand.length });
32
- logger.info("arena.detail_expansion_start", { phaseCount: toExpand.length });
33
- const details = [];
34
- const client = await createLLMClient(concluder.llm, concluder.clientDefaults);
35
- const systemPrompt = strategy.detailExpansionSystemPrompt();
36
- // Expand each phase sequentially
37
- for (const phase of toExpand) {
38
- signal?.throwIfAborted();
39
- // Build phase-specific digest using related findings
40
- const relevantClaimIds = phase.relatedFindings ?? [];
41
- const digest = buildDigest(ledger, { round: 1, relevantClaimIds });
42
- const userContent = strategy.detailExpansionUserPrompt(topic, phase, digest);
43
- const messages = [{ role: "user", content: userContent }];
44
- let finalText = "";
45
- // Tool-use loop: allow LLM to verify file paths and interfaces.
46
- // `maxRounds` bounds the number of tool rounds; after the last one we make
47
- // one final call (without tools) so the model produces text FROM the tool
48
- // results rather than the empty text it emitted alongside the tool calls.
49
- const maxRounds = tools ? Math.min(MAX_EXPANSION_TOOL_ROUNDS, MAX_TOOL_ROUNDS) : 0;
50
- for (let round = 0; round <= maxRounds; round++) {
51
- // On the final round, stop offering tools so the model must answer.
52
- const offerTools = round < maxRounds ? tools : undefined;
53
- const response = await client.createMessage({
54
- systemPrompt,
55
- messages,
56
- tools: offerTools,
57
- signal,
58
- });
59
- const hasTools = response.toolCalls && response.toolCalls.length > 0;
60
- logger.info("arena.detail_expansion_round", {
61
- phase: phase.title,
62
- round,
63
- toolCount: response.toolCalls?.length ?? 0,
64
- stopReason: response.stopReason,
65
- });
66
- if (!hasTools) {
67
- finalText = response.text;
68
- break;
69
- }
70
- // Append assistant message with tool_use blocks
71
- const assistantBlocks = [];
72
- if (response.text) {
73
- assistantBlocks.push({ type: "text", text: response.text });
74
- }
75
- for (const tc of response.toolCalls) {
76
- assistantBlocks.push({
77
- type: "tool_use",
78
- id: tc.id,
79
- name: tc.toolName,
80
- input: tc.args,
81
- });
82
- }
83
- messages.push({ role: "assistant", content: assistantBlocks });
84
- // Execute tools and append results
85
- const toolResultBlocks = [];
86
- for (const tc of response.toolCalls) {
87
- const result = executeContextTool(tc);
88
- toolResultBlocks.push({
89
- type: "tool_result",
90
- tool_use_id: tc.id,
91
- content: result.slice(0, 15_000),
92
- });
93
- }
94
- messages.push({ role: "user", content: toolResultBlocks });
95
- }
96
- // Retry if truncated
97
- if (!finalText) {
98
- finalText = "";
99
- }
100
- logger.info("arena.detail_expansion_phase", {
101
- phase: phase.title,
102
- textLen: finalText.length,
103
- });
104
- const detail = strategy.parseDetailExpansionResponse(finalText);
105
- if (!detail.phaseTitle)
106
- detail.phaseTitle = phase.title;
107
- // Log parse quality
108
- if (detail.targetFiles.length === 0 && detail.codeChanges.length === 0) {
109
- logger.warn("arena.detail_expansion_sparse", {
110
- phase: phase.title,
111
- objective: detail.objective.slice(0, 200),
112
- });
113
- }
114
- details.push(detail);
115
- }
116
- logger.info("arena.detail_expansion_done", { detailCount: details.length });
117
- onProgress?.({ type: "roadmap_expansion_done", detailCount: details.length });
118
- return details;
119
- }