@cjhyy/code-shell-core 0.7.1 → 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 (594) 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/permission.d.ts +26 -0
  374. package/dist/tool-system/permission.js +46 -0
  375. package/dist/tool-system/registry.d.ts +12 -1
  376. package/dist/tool-system/registry.js +31 -7
  377. package/dist/tool-system/sandbox/index.js +3 -8
  378. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  379. package/dist/tool-system/session-tool-host.d.ts +139 -0
  380. package/dist/tool-system/session-tool-host.js +167 -0
  381. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  382. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  383. package/dist/tool-system/validation.d.ts +14 -7
  384. package/dist/tool-system/validation.js +701 -7
  385. package/dist/types.d.ts +186 -20
  386. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  387. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  388. package/dist/utils/file-mutex.d.ts +65 -0
  389. package/dist/utils/file-mutex.js +145 -0
  390. package/dist/utils/json.d.ts +2 -4
  391. package/dist/utils/json.js +2 -4
  392. package/dist/utils/lockfile.d.ts +30 -1
  393. package/dist/utils/lockfile.js +2 -2
  394. package/dist/utils/secret-scrubber.d.ts +8 -0
  395. package/dist/utils/secret-scrubber.js +227 -0
  396. package/dist/utils/toolDisplay.js +1 -1
  397. package/package.json +20 -5
  398. package/THIRD_PARTY_NOTICES.md +0 -206
  399. package/dist/arena/arena.d.ts +0 -45
  400. package/dist/arena/arena.js +0 -362
  401. package/dist/arena/context/context-tools.d.ts +0 -16
  402. package/dist/arena/context/context-tools.js +0 -272
  403. package/dist/arena/context/within-root.d.ts +0 -7
  404. package/dist/arena/context/within-root.js +0 -15
  405. package/dist/arena/detect-mode.d.ts +0 -20
  406. package/dist/arena/detect-mode.js +0 -78
  407. package/dist/arena/digest-builder.d.ts +0 -25
  408. package/dist/arena/digest-builder.js +0 -120
  409. package/dist/arena/index.d.ts +0 -29
  410. package/dist/arena/index.js +0 -29
  411. package/dist/arena/iterate/convergence.d.ts +0 -25
  412. package/dist/arena/iterate/convergence.js +0 -103
  413. package/dist/arena/iterate/formats/index.d.ts +0 -22
  414. package/dist/arena/iterate/formats/index.js +0 -283
  415. package/dist/arena/iterate/index.d.ts +0 -11
  416. package/dist/arena/iterate/index.js +0 -9
  417. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  418. package/dist/arena/iterate/iterative-arena.js +0 -237
  419. package/dist/arena/iterate/parse.d.ts +0 -42
  420. package/dist/arena/iterate/parse.js +0 -123
  421. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  422. package/dist/arena/iterate/phases/argue.js +0 -165
  423. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  424. package/dist/arena/iterate/phases/revise.js +0 -62
  425. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  426. package/dist/arena/iterate/phases/tournament.js +0 -113
  427. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  428. package/dist/arena/iterate/tools/web-tools.js +0 -54
  429. package/dist/arena/iterate/types.d.ts +0 -152
  430. package/dist/arena/iterate/types.js +0 -8
  431. package/dist/arena/ledger.d.ts +0 -47
  432. package/dist/arena/ledger.js +0 -159
  433. package/dist/arena/lenses/architecture.d.ts +0 -5
  434. package/dist/arena/lenses/architecture.js +0 -22
  435. package/dist/arena/lenses/engineering.d.ts +0 -5
  436. package/dist/arena/lenses/engineering.js +0 -22
  437. package/dist/arena/lenses/general.d.ts +0 -5
  438. package/dist/arena/lenses/general.js +0 -20
  439. package/dist/arena/lenses/index.d.ts +0 -16
  440. package/dist/arena/lenses/index.js +0 -47
  441. package/dist/arena/lenses/product.d.ts +0 -5
  442. package/dist/arena/lenses/product.js +0 -22
  443. package/dist/arena/model-presets.d.ts +0 -23
  444. package/dist/arena/model-presets.js +0 -44
  445. package/dist/arena/phases/adjudication.d.ts +0 -25
  446. package/dist/arena/phases/adjudication.js +0 -142
  447. package/dist/arena/phases/build-consensus.d.ts +0 -30
  448. package/dist/arena/phases/build-consensus.js +0 -85
  449. package/dist/arena/phases/claim-registry.d.ts +0 -26
  450. package/dist/arena/phases/claim-registry.js +0 -60
  451. package/dist/arena/phases/cross-review.d.ts +0 -47
  452. package/dist/arena/phases/cross-review.js +0 -224
  453. package/dist/arena/phases/debate-rounds.d.ts +0 -28
  454. package/dist/arena/phases/debate-rounds.js +0 -161
  455. package/dist/arena/phases/participant-research.d.ts +0 -39
  456. package/dist/arena/phases/participant-research.js +0 -316
  457. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
  458. package/dist/arena/phases/planning-detail-expansion.js +0 -120
  459. package/dist/arena/planner.d.ts +0 -28
  460. package/dist/arena/planner.js +0 -312
  461. package/dist/arena/providers/docs.d.ts +0 -7
  462. package/dist/arena/providers/docs.js +0 -111
  463. package/dist/arena/providers/git.d.ts +0 -8
  464. package/dist/arena/providers/git.js +0 -174
  465. package/dist/arena/providers/index.d.ts +0 -32
  466. package/dist/arena/providers/index.js +0 -132
  467. package/dist/arena/providers/none.d.ts +0 -7
  468. package/dist/arena/providers/none.js +0 -11
  469. package/dist/arena/providers/repo.d.ts +0 -7
  470. package/dist/arena/providers/repo.js +0 -258
  471. package/dist/arena/render/session.d.ts +0 -17
  472. package/dist/arena/render/session.js +0 -190
  473. package/dist/arena/render/terminal.d.ts +0 -34
  474. package/dist/arena/render/terminal.js +0 -286
  475. package/dist/arena/strategies/discussion.d.ts +0 -25
  476. package/dist/arena/strategies/discussion.js +0 -143
  477. package/dist/arena/strategies/index.d.ts +0 -15
  478. package/dist/arena/strategies/index.js +0 -28
  479. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  480. package/dist/arena/strategies/language-wrapper.js +0 -102
  481. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  482. package/dist/arena/strategies/lens-wrapper.js +0 -236
  483. package/dist/arena/strategies/planning.d.ts +0 -30
  484. package/dist/arena/strategies/planning.js +0 -225
  485. package/dist/arena/strategies/review.d.ts +0 -26
  486. package/dist/arena/strategies/review.js +0 -168
  487. package/dist/arena/strategies/utils.d.ts +0 -36
  488. package/dist/arena/strategies/utils.js +0 -603
  489. package/dist/arena/tools/selector.d.ts +0 -17
  490. package/dist/arena/tools/selector.js +0 -61
  491. package/dist/arena/transitions.d.ts +0 -53
  492. package/dist/arena/transitions.js +0 -97
  493. package/dist/arena/types.d.ts +0 -518
  494. package/dist/arena/types.js +0 -27
  495. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  496. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  497. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  498. package/dist/cc-orchestrator/cc-capability.js +0 -53
  499. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  500. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  501. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  502. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  503. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  504. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  505. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  506. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  507. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  508. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  509. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  510. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  511. package/dist/cc-orchestrator/index.d.ts +0 -8
  512. package/dist/cc-orchestrator/index.js +0 -8
  513. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  514. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  515. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  516. package/dist/cc-orchestrator/session-discovery.js +0 -125
  517. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  518. package/dist/cc-orchestrator/session-history.js +0 -150
  519. package/dist/cron/cron-runtime.d.ts +0 -2
  520. package/dist/cron/cron-runtime.js +0 -2
  521. package/dist/cron/cron-store.d.ts +0 -2
  522. package/dist/cron/cron-store.js +0 -2
  523. package/dist/cron/scheduler.d.ts +0 -7
  524. package/dist/cron/scheduler.js +0 -7
  525. package/dist/engine/goal.js +0 -206
  526. package/dist/external-agents/config.d.ts +0 -2
  527. package/dist/external-agents/config.js +0 -15
  528. package/dist/external-agents/types.d.ts +0 -31
  529. package/dist/git/parse-log.d.ts +0 -13
  530. package/dist/git/parse-log.js +0 -21
  531. package/dist/git/utils.d.ts +0 -49
  532. package/dist/git/utils.js +0 -161
  533. package/dist/git/worktree/crud.d.ts +0 -72
  534. package/dist/git/worktree/crud.js +0 -235
  535. package/dist/git/worktree/diff.d.ts +0 -14
  536. package/dist/git/worktree/diff.js +0 -82
  537. package/dist/git/worktree/git-exec.d.ts +0 -7
  538. package/dist/git/worktree/git-exec.js +0 -87
  539. package/dist/git/worktree/index.d.ts +0 -5
  540. package/dist/git/worktree/index.js +0 -5
  541. package/dist/git/worktree/query.d.ts +0 -43
  542. package/dist/git/worktree/query.js +0 -128
  543. package/dist/git/worktree/slug.d.ts +0 -11
  544. package/dist/git/worktree/slug.js +0 -58
  545. package/dist/git/worktree.d.ts +0 -1
  546. package/dist/git/worktree.js +0 -5
  547. package/dist/lsp/client.d.ts +0 -41
  548. package/dist/lsp/client.js +0 -186
  549. package/dist/lsp/manager.d.ts +0 -40
  550. package/dist/lsp/manager.js +0 -155
  551. package/dist/lsp/root-path.d.ts +0 -9
  552. package/dist/lsp/root-path.js +0 -12
  553. package/dist/lsp/servers.d.ts +0 -16
  554. package/dist/lsp/servers.js +0 -60
  555. package/dist/prompt/sections/coding.md +0 -35
  556. package/dist/quota/credentials.d.ts +0 -3
  557. package/dist/quota/credentials.js +0 -80
  558. package/dist/quota/index.d.ts +0 -36
  559. package/dist/quota/index.js +0 -155
  560. package/dist/quota/types.d.ts +0 -48
  561. package/dist/quota/types.js +0 -13
  562. package/dist/review/review-prompt.d.ts +0 -28
  563. package/dist/review/review-prompt.js +0 -81
  564. package/dist/state.d.ts +0 -160
  565. package/dist/state.js +0 -267
  566. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  567. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  568. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  569. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  570. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  571. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  572. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  573. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  574. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  575. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  576. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  577. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  578. package/dist/tool-system/builtin/arena.d.ts +0 -31
  579. package/dist/tool-system/builtin/arena.js +0 -416
  580. package/dist/tool-system/builtin/brief.d.ts +0 -6
  581. package/dist/tool-system/builtin/brief.js +0 -41
  582. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  583. package/dist/tool-system/builtin/check-quota.js +0 -34
  584. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  585. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  586. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  587. package/dist/tool-system/builtin/lsp.js +0 -144
  588. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  589. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  590. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  591. package/dist/tool-system/builtin/worktree.js +0 -363
  592. /package/dist/{external-agents → links}/types.js +0 -0
  593. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  594. /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
- }