@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
@@ -1,123 +0,0 @@
1
- /**
2
- * Parsing helpers for LLM responses in iterate mode.
3
- *
4
- * We use literal XML-ish markers (<v1_content>…</v1_content>) instead of
5
- * pure JSON because LLMs are far more reliable at "write 5000 chars of
6
- * markdown then a small JSON block at the end" than at producing one
7
- * giant well-formed JSON document with a 5000-char string field.
8
- */
9
- /**
10
- * Extract content between `<tag>` and `</tag>`.
11
- *
12
- * Forgiving in two ways:
13
- * - Case-insensitive on the tag name.
14
- * - If the closing tag is missing (LLM hit max_tokens mid-output), we still
15
- * return everything after the opening tag, stopping at the next sibling
16
- * tag (e.g. the `<merge_rationale>` block) if present, otherwise EOF.
17
- */
18
- export function extractTag(text, tag) {
19
- // First try the well-formed case (open + close).
20
- const closed = new RegExp(`<${tag}>([\\s\\S]*?)<\\/${tag}>`, "i");
21
- const closedMatch = text.match(closed);
22
- if (closedMatch)
23
- return closedMatch[1].trim();
24
- // Fall back to "open tag without close" — find <tag> and return content
25
- // until the next opening tag of any kind, or EOF.
26
- const opener = new RegExp(`<${tag}>`, "i");
27
- const openMatch = opener.exec(text);
28
- if (!openMatch)
29
- return null;
30
- const after = text.slice(openMatch.index + openMatch[0].length);
31
- const nextTag = after.search(/<[a-z_][\w]*>/i);
32
- const body = nextTag >= 0 ? after.slice(0, nextTag) : after;
33
- return body.trim();
34
- }
35
- /** Parse merge response: extract v1 content + rationale. Falls back to whole text if markers are missing. */
36
- export function parseMergeResponse(text) {
37
- const content = extractTag(text, "v1_content");
38
- const rationale = extractTag(text, "merge_rationale");
39
- if (content) {
40
- return { content, rationale: rationale ?? undefined };
41
- }
42
- // Fallback: no markers — treat whole response as content (with a warning sentinel).
43
- return { content: text.trim(), rationale: "[merge markers not found; using full response]" };
44
- }
45
- /** Parse revise response: extract content + meta JSON. */
46
- export function parseReviseResponse(text) {
47
- const content = extractTag(text, "v_next_content");
48
- const metaRaw = extractTag(text, "v_next_meta");
49
- let meta = {};
50
- if (metaRaw) {
51
- // Strip surrounding code fences if present.
52
- const cleaned = metaRaw.replace(/^```(?:json)?\s*/i, "").replace(/\s*```$/, "").trim();
53
- try {
54
- meta = JSON.parse(cleaned);
55
- }
56
- catch {
57
- meta = { changelog: `[meta JSON parse failed; raw text below]\n${metaRaw}` };
58
- }
59
- }
60
- return {
61
- content: content ?? text.trim(),
62
- meta,
63
- };
64
- }
65
- /**
66
- * Parse critique JSON from an argue-phase response.
67
- * Tolerant: handles bare objects, fenced JSON, leading prose, trailing prose.
68
- */
69
- export function parseCritiquesResponse(text, criticName, idPrefix) {
70
- const cleaned = text.replace(/^[^{[]*/, "").replace(/[^}\]]*$/, "").trim();
71
- let parsed;
72
- try {
73
- parsed = JSON.parse(cleaned);
74
- }
75
- catch {
76
- // Try to find the largest JSON object/array in the text.
77
- const jsonMatch = text.match(/\{[\s\S]*\}|\[[\s\S]*\]/);
78
- if (!jsonMatch)
79
- return [];
80
- try {
81
- parsed = JSON.parse(jsonMatch[0]);
82
- }
83
- catch {
84
- return [];
85
- }
86
- }
87
- // Accept either {critiques: [...]} or [...] directly.
88
- const arr = Array.isArray(parsed)
89
- ? parsed
90
- : parsed.critiques;
91
- if (!Array.isArray(arr))
92
- return [];
93
- const out = [];
94
- for (let i = 0; i < arr.length; i++) {
95
- const c = arr[i];
96
- if (!c.anchor || !c.comment)
97
- continue;
98
- let evidence;
99
- if (Array.isArray(c.evidence)) {
100
- evidence = c.evidence
101
- .filter((e) => {
102
- if (typeof e !== "object" || e === null)
103
- return false;
104
- const obj = e;
105
- return typeof obj.url === "string";
106
- })
107
- .map((e) => ({ url: e.url, snippet: e.snippet }));
108
- if (evidence.length === 0)
109
- evidence = undefined;
110
- }
111
- out.push({
112
- id: `${idPrefix}-${criticName}-${i + 1}`,
113
- critic: criticName,
114
- anchor: String(c.anchor),
115
- severity: c.severity ?? "minor",
116
- category: c.category ?? "other",
117
- comment: String(c.comment),
118
- suggestion: c.suggestion ? String(c.suggestion) : undefined,
119
- evidence,
120
- });
121
- }
122
- return out;
123
- }
@@ -1,22 +0,0 @@
1
- /**
2
- * Argue phase — critics read a draft and produce critiques in parallel.
3
- *
4
- * If `enableWebSearch` is on, each critic runs a tool-use loop and may call
5
- * web_search / web_fetch up to `maxArgueToolRounds` times before producing
6
- * the final critiques JSON. This is the deep-research path that catches
7
- * fabricated claims.
8
- */
9
- import type { ArenaParticipant } from "../../types.js";
10
- import type { FormatPack } from "../formats/index.js";
11
- import type { Critique, Draft, IterateProgressEvent, IterateSubject } from "../types.js";
12
- export declare function runArgueRound(args: {
13
- subject: IterateSubject;
14
- format: FormatPack;
15
- draft: Draft;
16
- critics: ArenaParticipant[];
17
- round: number;
18
- enableWebSearch?: boolean;
19
- maxToolRounds?: number;
20
- signal?: AbortSignal;
21
- onProgress?: (e: IterateProgressEvent) => void;
22
- }): Promise<Critique[]>;
@@ -1,165 +0,0 @@
1
- /**
2
- * Argue phase — critics read a draft and produce critiques in parallel.
3
- *
4
- * If `enableWebSearch` is on, each critic runs a tool-use loop and may call
5
- * web_search / web_fetch up to `maxArgueToolRounds` times before producing
6
- * the final critiques JSON. This is the deep-research path that catches
7
- * fabricated claims.
8
- */
9
- import { createLLMClient } from "../../../llm/client-factory.js";
10
- import { logger } from "../../../logging/logger.js";
11
- import { parseCritiquesResponse } from "../parse.js";
12
- import { ITERATE_WEB_TOOLS, executeIterateWebTool, hasWebSearchProvider } from "../tools/web-tools.js";
13
- const DEFAULT_MAX_TOOL_ROUNDS = 8;
14
- export async function runArgueRound(args) {
15
- const { subject, format, draft, critics, round, enableWebSearch, maxToolRounds, signal, onProgress } = args;
16
- onProgress?.({ type: "argue_start", round, data: { criticCount: critics.length } });
17
- // Web search is only useful if a provider is actually configured. Silently
18
- // downgrade if not — log a warning so the user knows.
19
- const wantWeb = Boolean(enableWebSearch);
20
- const webAvailable = wantWeb && hasWebSearchProvider();
21
- if (wantWeb && !webAvailable) {
22
- logger.warn("arena.iterate.argue_web_unavailable", {
23
- reason: "No SERPER_API_KEY / TAVILY_API_KEY / SEARXNG_URL configured",
24
- });
25
- }
26
- const idPrefix = `r${round}`;
27
- const tasks = critics.map(async (c) => {
28
- signal?.throwIfAborted();
29
- try {
30
- if (webAvailable) {
31
- return await argueWithToolLoop({
32
- critic: c,
33
- subject,
34
- format,
35
- draft,
36
- idPrefix,
37
- maxToolRounds: maxToolRounds ?? DEFAULT_MAX_TOOL_ROUNDS,
38
- signal,
39
- });
40
- }
41
- return await argueSingleShot({ critic: c, subject, format, draft, idPrefix, signal });
42
- }
43
- catch (err) {
44
- logger.warn("arena.iterate.argue_failed", {
45
- round,
46
- critic: c.name,
47
- error: err.message,
48
- });
49
- return [];
50
- }
51
- });
52
- const results = await Promise.all(tasks);
53
- const allCritiques = results.flat();
54
- onProgress?.({
55
- type: "argue_done",
56
- round,
57
- data: { critiqueCount: allCritiques.length, webEnabled: webAvailable },
58
- });
59
- return allCritiques;
60
- }
61
- // ─── Single-shot argue (no tools) ─────────────────────────────────────
62
- async function argueSingleShot(args) {
63
- const { critic, subject, format, draft, idPrefix, signal } = args;
64
- const client = await createLLMClient(critic.llm, critic.clientDefaults);
65
- const resp = await client.createMessage({
66
- systemPrompt: format.argueSystem(format.format),
67
- messages: [{ role: "user", content: format.argueUser(subject, draft) }],
68
- tools: [],
69
- signal,
70
- });
71
- const critiques = parseCritiquesResponse(resp.text, critic.name, idPrefix);
72
- logger.info("arena.iterate.argue_singleshot", {
73
- critic: critic.name,
74
- critiqueCount: critiques.length,
75
- });
76
- return critiques;
77
- }
78
- // ─── Tool-use argue (with web search) ─────────────────────────────────
79
- async function argueWithToolLoop(args) {
80
- const { critic, subject, format, draft, idPrefix, maxToolRounds, signal } = args;
81
- const client = await createLLMClient(critic.llm, critic.clientDefaults);
82
- const messages = [
83
- { role: "user", content: format.argueUser(subject, draft) },
84
- ];
85
- let toolRounds = 0;
86
- let finalText = "";
87
- while (toolRounds < maxToolRounds) {
88
- signal?.throwIfAborted();
89
- const resp = await client.createMessage({
90
- systemPrompt: format.argueSystem(format.format),
91
- messages,
92
- tools: ITERATE_WEB_TOOLS,
93
- signal,
94
- });
95
- if (resp.text)
96
- finalText = resp.text;
97
- if (!resp.toolCalls || resp.toolCalls.length === 0) {
98
- // Done — final response with critiques JSON.
99
- break;
100
- }
101
- // Append assistant message with tool_use blocks
102
- messages.push({
103
- role: "assistant",
104
- content: [
105
- ...(resp.text ? [{ type: "text", text: resp.text }] : []),
106
- ...resp.toolCalls.map((tc) => ({
107
- type: "tool_use",
108
- id: tc.id,
109
- name: tc.toolName,
110
- input: tc.args,
111
- })),
112
- ],
113
- });
114
- // Execute tools and append tool_result blocks
115
- const toolResults = await Promise.all(resp.toolCalls.map(async (tc) => {
116
- try {
117
- const result = await executeIterateWebTool(tc.toolName, tc.args);
118
- return { id: tc.id, content: result };
119
- }
120
- catch (err) {
121
- return { id: tc.id, content: `Error: ${err.message}` };
122
- }
123
- }));
124
- messages.push({
125
- role: "user",
126
- content: toolResults.map((tr) => ({
127
- type: "tool_result",
128
- tool_use_id: tr.id,
129
- content: tr.content,
130
- })),
131
- });
132
- toolRounds++;
133
- }
134
- // If we ran out of rounds with no final text, prod the model once more.
135
- if (!finalText && toolRounds >= maxToolRounds) {
136
- const resp = await client.createMessage({
137
- systemPrompt: format.argueSystem(format.format),
138
- messages: [
139
- ...messages,
140
- {
141
- role: "user",
142
- content: "You have used the maximum number of tool rounds. Produce your " +
143
- "critiques JSON now, based on what you have already gathered. " +
144
- "Do not request any more tools.",
145
- },
146
- ],
147
- tools: [],
148
- signal,
149
- });
150
- finalText = resp.text;
151
- }
152
- if (!finalText) {
153
- // Both the tool loop and the force-conclude fallback produced no text
154
- // (e.g. repeated max-token truncation). Log it — parseCritiquesResponse
155
- // will just yield no critiques rather than silently parsing "".
156
- logger.warn("arena.iterate.argue_empty_response", { critic: critic.name, toolRounds });
157
- }
158
- const critiques = parseCritiquesResponse(finalText, critic.name, idPrefix);
159
- logger.info("arena.iterate.argue_toolloop", {
160
- critic: critic.name,
161
- critiqueCount: critiques.length,
162
- toolRounds,
163
- });
164
- return critiques;
165
- }
@@ -1,16 +0,0 @@
1
- /**
2
- * Revise phase — author rewrites the draft addressing critiques.
3
- */
4
- import type { ArenaParticipant } from "../../types.js";
5
- import type { FormatPack } from "../formats/index.js";
6
- import type { Critique, Draft, IterateProgressEvent, IterateSubject } from "../types.js";
7
- export declare function runRevise(args: {
8
- subject: IterateSubject;
9
- format: FormatPack;
10
- previous: Draft;
11
- critiques: Critique[];
12
- author: ArenaParticipant;
13
- minDraftLength: number;
14
- signal?: AbortSignal;
15
- onProgress?: (e: IterateProgressEvent) => void;
16
- }): Promise<Draft>;
@@ -1,62 +0,0 @@
1
- /**
2
- * Revise phase — author rewrites the draft addressing critiques.
3
- */
4
- import { createLLMClient } from "../../../llm/client-factory.js";
5
- import { logger } from "../../../logging/logger.js";
6
- import { parseReviseResponse } from "../parse.js";
7
- export async function runRevise(args) {
8
- const { subject, format, previous, critiques, author, minDraftLength, signal, onProgress } = args;
9
- onProgress?.({ type: "revise_start", round: previous.version + 1, participant: author.name });
10
- const client = await createLLMClient(author.llm, author.clientDefaults);
11
- const prompt = format.revisePrompt(subject, previous, critiques, minDraftLength);
12
- const resp = await client.createMessage({
13
- systemPrompt: prompt,
14
- messages: [{ role: "user", content: `Produce v${previous.version + 1} now.` }],
15
- tools: [],
16
- maxTokens: 32_000,
17
- signal,
18
- });
19
- const { content, meta } = parseReviseResponse(resp.text);
20
- // Defensive: refuse to accept a revision that's drastically shorter than v(N) — that's
21
- // usually the model collapsing into a summary rather than rewriting.
22
- // Accept if shrinkage < 30% OR new content is still above the minimum length.
23
- let acceptedContent = content;
24
- const shrinkage = previous.content.length > 0
25
- ? 1 - acceptedContent.length / previous.content.length
26
- : 0;
27
- if (shrinkage > 0.3 && acceptedContent.length < minDraftLength) {
28
- logger.warn("arena.iterate.revise_too_short", {
29
- version: previous.version + 1,
30
- previousLength: previous.content.length,
31
- newLength: acceptedContent.length,
32
- minDraftLength,
33
- });
34
- // Don't retry automatically — keep going but flag in changelog.
35
- meta.changelog =
36
- `[WARNING: revision is ${Math.round(shrinkage * 100)}% shorter than v${previous.version}; the author may have summarized instead of rewriting]\n\n` +
37
- (meta.changelog ?? "");
38
- }
39
- const next = {
40
- version: previous.version + 1,
41
- author: author.name,
42
- format: format.format,
43
- content: acceptedContent,
44
- acceptedCritiques: meta.acceptedCritiques,
45
- rejectedCritiques: meta.rejectedCritiques,
46
- changelog: meta.changelog,
47
- };
48
- onProgress?.({
49
- type: "revise_done",
50
- round: next.version,
51
- participant: author.name,
52
- data: { length: acceptedContent.length, accepted: meta.acceptedCritiques?.length ?? 0 },
53
- });
54
- logger.info("arena.iterate.revise", {
55
- version: next.version,
56
- author: author.name,
57
- length: acceptedContent.length,
58
- accepted: meta.acceptedCritiques?.length ?? 0,
59
- rejected: meta.rejectedCritiques?.length ?? 0,
60
- });
61
- return next;
62
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Tournament v1 phase — every participant writes a candidate, then the
3
- * author merges anonymized candidates into v1.
4
- */
5
- import type { ArenaParticipant } from "../../types.js";
6
- import type { FormatPack } from "../formats/index.js";
7
- import type { Draft, DraftCandidate, IterateProgressEvent, IterateSubject } from "../types.js";
8
- /** Run the v1 tournament: parallel candidate generation. */
9
- export declare function runTournamentCandidates(args: {
10
- subject: IterateSubject;
11
- format: FormatPack;
12
- participants: ArenaParticipant[];
13
- minDraftLength: number;
14
- signal?: AbortSignal;
15
- onProgress?: (e: IterateProgressEvent) => void;
16
- }): Promise<DraftCandidate[]>;
17
- /** Merge candidates into v1 using the author. */
18
- export declare function mergeCandidatesToV1(args: {
19
- subject: IterateSubject;
20
- format: FormatPack;
21
- author: ArenaParticipant;
22
- candidates: DraftCandidate[];
23
- minDraftLength: number;
24
- signal?: AbortSignal;
25
- onProgress?: (e: IterateProgressEvent) => void;
26
- }): Promise<Draft>;
27
- /** Single-author v1 (tournament disabled) — author writes alone. */
28
- export declare function singleAuthorV1(args: {
29
- subject: IterateSubject;
30
- format: FormatPack;
31
- author: ArenaParticipant;
32
- minDraftLength: number;
33
- signal?: AbortSignal;
34
- }): Promise<Draft>;
@@ -1,113 +0,0 @@
1
- /**
2
- * Tournament v1 phase — every participant writes a candidate, then the
3
- * author merges anonymized candidates into v1.
4
- */
5
- import { createLLMClient } from "../../../llm/client-factory.js";
6
- import { logger } from "../../../logging/logger.js";
7
- import { parseMergeResponse } from "../parse.js";
8
- /** Run the v1 tournament: parallel candidate generation. */
9
- export async function runTournamentCandidates(args) {
10
- const { subject, format, participants, minDraftLength, signal, onProgress } = args;
11
- onProgress?.({ type: "v1_tournament_start", data: { count: participants.length } });
12
- const tasks = participants.map(async (p, idx) => {
13
- signal?.throwIfAborted();
14
- const client = await createLLMClient(p.llm, p.clientDefaults);
15
- const prompt = format.draftPrompt(subject, minDraftLength);
16
- // Long-form generation needs a high output ceiling; the default 8k from
17
- // LLMClientBase is too low for a substantive PRD or design doc and
18
- // results in mid-sentence truncation that breaks downstream parsing.
19
- const resp = await client.createMessage({
20
- systemPrompt: prompt,
21
- messages: [{ role: "user", content: `Write your draft now.` }],
22
- tools: [],
23
- maxTokens: 32_000,
24
- signal,
25
- });
26
- const content = resp.text.trim();
27
- const candidate = {
28
- author: p.name,
29
- anonymousLabel: `Draft ${String.fromCharCode(65 + idx)}`, // A, B, C...
30
- content,
31
- };
32
- onProgress?.({
33
- type: "v1_candidate_done",
34
- participant: p.name,
35
- data: { length: content.length, anonymousLabel: candidate.anonymousLabel },
36
- });
37
- logger.info("arena.iterate.v1_candidate", {
38
- participant: p.name,
39
- anonymousLabel: candidate.anonymousLabel,
40
- length: content.length,
41
- });
42
- return candidate;
43
- });
44
- // Tolerate individual failures — we'd rather merge fewer drafts than abort.
45
- const settled = await Promise.allSettled(tasks);
46
- const candidates = [];
47
- for (const s of settled) {
48
- if (s.status === "fulfilled")
49
- candidates.push(s.value);
50
- else
51
- logger.warn("arena.iterate.v1_candidate_failed", { error: s.reason?.message });
52
- }
53
- if (candidates.length === 0) {
54
- throw new Error("All v1 tournament candidates failed");
55
- }
56
- // Shuffle so anonymous labels don't correlate with participants[] order.
57
- for (let i = candidates.length - 1; i > 0; i--) {
58
- const j = Math.floor(Math.random() * (i + 1));
59
- [candidates[i], candidates[j]] = [candidates[j], candidates[i]];
60
- candidates[i].anonymousLabel = `Draft ${String.fromCharCode(65 + i)}`;
61
- }
62
- candidates[0].anonymousLabel = `Draft A`;
63
- return candidates;
64
- }
65
- /** Merge candidates into v1 using the author. */
66
- export async function mergeCandidatesToV1(args) {
67
- const { subject, format, author, candidates, minDraftLength, signal, onProgress } = args;
68
- onProgress?.({ type: "v1_merge_start", participant: author.name });
69
- const client = await createLLMClient(author.llm, author.clientDefaults);
70
- const prompt = format.mergePrompt(subject, candidates, minDraftLength);
71
- const resp = await client.createMessage({
72
- systemPrompt: prompt,
73
- messages: [{ role: "user", content: `Produce v1 now.` }],
74
- tools: [],
75
- maxTokens: 32_000,
76
- signal,
77
- });
78
- const { content, rationale } = parseMergeResponse(resp.text);
79
- const draft = {
80
- version: 1,
81
- author: author.name,
82
- format: format.format,
83
- content,
84
- draftCandidates: candidates,
85
- mergeRationale: rationale,
86
- };
87
- onProgress?.({ type: "v1_merge_done", participant: author.name, data: { length: content.length } });
88
- logger.info("arena.iterate.v1_merge", {
89
- author: author.name,
90
- candidateCount: candidates.length,
91
- length: content.length,
92
- });
93
- return draft;
94
- }
95
- /** Single-author v1 (tournament disabled) — author writes alone. */
96
- export async function singleAuthorV1(args) {
97
- const { subject, format, author, minDraftLength, signal } = args;
98
- const client = await createLLMClient(author.llm, author.clientDefaults);
99
- const prompt = format.draftPrompt(subject, minDraftLength);
100
- const resp = await client.createMessage({
101
- systemPrompt: prompt,
102
- messages: [{ role: "user", content: `Write your draft now.` }],
103
- tools: [],
104
- maxTokens: 32_000,
105
- signal,
106
- });
107
- return {
108
- version: 1,
109
- author: author.name,
110
- format: format.format,
111
- content: resp.text.trim(),
112
- };
113
- }
@@ -1,13 +0,0 @@
1
- /**
2
- * Web tools for arena iterate critics — fabrication detection support.
3
- *
4
- * Wraps the existing builtin webSearchTool / webFetchTool so critics can
5
- * verify factual claims during the argue phase.
6
- */
7
- import type { ToolDefinition } from "../../../types.js";
8
- export declare const webSearchToolDef: ToolDefinition;
9
- export declare const webFetchToolDef: ToolDefinition;
10
- export declare const ITERATE_WEB_TOOLS: ToolDefinition[];
11
- export declare function executeIterateWebTool(toolName: string, args: Record<string, unknown>): Promise<string>;
12
- /** Probe env to determine if any web-search provider is configured. */
13
- export declare function hasWebSearchProvider(): boolean;
@@ -1,54 +0,0 @@
1
- /**
2
- * Web tools for arena iterate critics — fabrication detection support.
3
- *
4
- * Wraps the existing builtin webSearchTool / webFetchTool so critics can
5
- * verify factual claims during the argue phase.
6
- */
7
- import { webSearchTool } from "../../../tool-system/builtin/web-search.js";
8
- import { webFetchTool } from "../../../tool-system/builtin/web-fetch.js";
9
- export const webSearchToolDef = {
10
- name: "web_search",
11
- description: "Search the web (Google via Serper / Tavily / SearXNG depending on env). " +
12
- "Use this to verify any specific number, citation, URL, library version, " +
13
- "API name, or external claim made in the draft you are reviewing. " +
14
- "If a claim cannot be verified by web_search, mark it as a fabrication " +
15
- "critique with severity = blocker.",
16
- inputSchema: {
17
- type: "object",
18
- properties: {
19
- query: { type: "string", description: "Search query (English usually works best)." },
20
- num_results: { type: "number", description: "Default 5, max 20." },
21
- },
22
- required: ["query"],
23
- },
24
- };
25
- export const webFetchToolDef = {
26
- name: "web_fetch",
27
- description: "Fetch a URL and return its text content (HTML stripped). Use after " +
28
- "web_search to read the actual page content of a search result and " +
29
- "confirm a specific claim, version number, or quoted figure.",
30
- inputSchema: {
31
- type: "object",
32
- properties: {
33
- url: { type: "string", description: "Full http(s) URL to fetch." },
34
- max_length: { type: "number", description: "Default 50000 characters." },
35
- },
36
- required: ["url"],
37
- },
38
- };
39
- export const ITERATE_WEB_TOOLS = [webSearchToolDef, webFetchToolDef];
40
- export async function executeIterateWebTool(toolName, args) {
41
- if (toolName === "web_search") {
42
- return webSearchTool(args);
43
- }
44
- if (toolName === "web_fetch") {
45
- return webFetchTool(args);
46
- }
47
- return `Error: unknown tool "${toolName}"`;
48
- }
49
- /** Probe env to determine if any web-search provider is configured. */
50
- export function hasWebSearchProvider() {
51
- return Boolean(process.env.SERPER_API_KEY ||
52
- process.env.TAVILY_API_KEY ||
53
- process.env.SEARXNG_URL);
54
- }