@cjhyy/code-shell-core 0.5.0-rc.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 (484) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -0
  3. package/dist/agent/coordinator.d.ts +49 -0
  4. package/dist/agent/coordinator.js +77 -0
  5. package/dist/arena/arena.d.ts +43 -0
  6. package/dist/arena/arena.js +334 -0
  7. package/dist/arena/context/context-tools.d.ts +16 -0
  8. package/dist/arena/context/context-tools.js +231 -0
  9. package/dist/arena/detect-mode.d.ts +20 -0
  10. package/dist/arena/detect-mode.js +78 -0
  11. package/dist/arena/digest-builder.d.ts +25 -0
  12. package/dist/arena/digest-builder.js +120 -0
  13. package/dist/arena/index.d.ts +29 -0
  14. package/dist/arena/index.js +29 -0
  15. package/dist/arena/iterate/convergence.d.ts +25 -0
  16. package/dist/arena/iterate/convergence.js +103 -0
  17. package/dist/arena/iterate/formats/index.d.ts +22 -0
  18. package/dist/arena/iterate/formats/index.js +283 -0
  19. package/dist/arena/iterate/index.d.ts +11 -0
  20. package/dist/arena/iterate/index.js +9 -0
  21. package/dist/arena/iterate/iterative-arena.d.ts +23 -0
  22. package/dist/arena/iterate/iterative-arena.js +237 -0
  23. package/dist/arena/iterate/parse.d.ts +42 -0
  24. package/dist/arena/iterate/parse.js +123 -0
  25. package/dist/arena/iterate/phases/argue.d.ts +22 -0
  26. package/dist/arena/iterate/phases/argue.js +159 -0
  27. package/dist/arena/iterate/phases/revise.d.ts +16 -0
  28. package/dist/arena/iterate/phases/revise.js +62 -0
  29. package/dist/arena/iterate/phases/tournament.d.ts +34 -0
  30. package/dist/arena/iterate/phases/tournament.js +113 -0
  31. package/dist/arena/iterate/tools/web-tools.d.ts +13 -0
  32. package/dist/arena/iterate/tools/web-tools.js +54 -0
  33. package/dist/arena/iterate/types.d.ts +152 -0
  34. package/dist/arena/iterate/types.js +8 -0
  35. package/dist/arena/ledger.d.ts +47 -0
  36. package/dist/arena/ledger.js +151 -0
  37. package/dist/arena/lenses/architecture.d.ts +5 -0
  38. package/dist/arena/lenses/architecture.js +22 -0
  39. package/dist/arena/lenses/engineering.d.ts +5 -0
  40. package/dist/arena/lenses/engineering.js +22 -0
  41. package/dist/arena/lenses/general.d.ts +5 -0
  42. package/dist/arena/lenses/general.js +20 -0
  43. package/dist/arena/lenses/index.d.ts +16 -0
  44. package/dist/arena/lenses/index.js +47 -0
  45. package/dist/arena/lenses/product.d.ts +5 -0
  46. package/dist/arena/lenses/product.js +22 -0
  47. package/dist/arena/model-presets.d.ts +23 -0
  48. package/dist/arena/model-presets.js +44 -0
  49. package/dist/arena/phases/adjudication.d.ts +24 -0
  50. package/dist/arena/phases/adjudication.js +144 -0
  51. package/dist/arena/phases/build-consensus.d.ts +29 -0
  52. package/dist/arena/phases/build-consensus.js +86 -0
  53. package/dist/arena/phases/claim-registry.d.ts +26 -0
  54. package/dist/arena/phases/claim-registry.js +60 -0
  55. package/dist/arena/phases/cross-review.d.ts +45 -0
  56. package/dist/arena/phases/cross-review.js +224 -0
  57. package/dist/arena/phases/debate-rounds.d.ts +27 -0
  58. package/dist/arena/phases/debate-rounds.js +162 -0
  59. package/dist/arena/phases/participant-research.d.ts +38 -0
  60. package/dist/arena/phases/participant-research.js +317 -0
  61. package/dist/arena/phases/planning-detail-expansion.d.ts +38 -0
  62. package/dist/arena/phases/planning-detail-expansion.js +121 -0
  63. package/dist/arena/planner.d.ts +27 -0
  64. package/dist/arena/planner.js +312 -0
  65. package/dist/arena/providers/docs.d.ts +6 -0
  66. package/dist/arena/providers/docs.js +108 -0
  67. package/dist/arena/providers/git.d.ts +8 -0
  68. package/dist/arena/providers/git.js +174 -0
  69. package/dist/arena/providers/index.d.ts +32 -0
  70. package/dist/arena/providers/index.js +132 -0
  71. package/dist/arena/providers/none.d.ts +7 -0
  72. package/dist/arena/providers/none.js +11 -0
  73. package/dist/arena/providers/repo.d.ts +6 -0
  74. package/dist/arena/providers/repo.js +255 -0
  75. package/dist/arena/render/session.d.ts +17 -0
  76. package/dist/arena/render/session.js +190 -0
  77. package/dist/arena/render/terminal.d.ts +34 -0
  78. package/dist/arena/render/terminal.js +286 -0
  79. package/dist/arena/strategies/discussion.d.ts +25 -0
  80. package/dist/arena/strategies/discussion.js +143 -0
  81. package/dist/arena/strategies/index.d.ts +15 -0
  82. package/dist/arena/strategies/index.js +28 -0
  83. package/dist/arena/strategies/language-wrapper.d.ts +17 -0
  84. package/dist/arena/strategies/language-wrapper.js +102 -0
  85. package/dist/arena/strategies/lens-wrapper.d.ts +16 -0
  86. package/dist/arena/strategies/lens-wrapper.js +236 -0
  87. package/dist/arena/strategies/planning.d.ts +30 -0
  88. package/dist/arena/strategies/planning.js +225 -0
  89. package/dist/arena/strategies/review.d.ts +26 -0
  90. package/dist/arena/strategies/review.js +168 -0
  91. package/dist/arena/strategies/utils.d.ts +39 -0
  92. package/dist/arena/strategies/utils.js +647 -0
  93. package/dist/arena/tools/selector.d.ts +17 -0
  94. package/dist/arena/tools/selector.js +61 -0
  95. package/dist/arena/transitions.d.ts +48 -0
  96. package/dist/arena/transitions.js +92 -0
  97. package/dist/arena/types.d.ts +508 -0
  98. package/dist/arena/types.js +27 -0
  99. package/dist/cli/agent-server-stdio.d.ts +32 -0
  100. package/dist/cli/agent-server-stdio.js +116 -0
  101. package/dist/colorizer.d.ts +23 -0
  102. package/dist/colorizer.js +12 -0
  103. package/dist/context/compaction.d.ts +116 -0
  104. package/dist/context/compaction.js +534 -0
  105. package/dist/context/manager.d.ts +145 -0
  106. package/dist/context/manager.js +423 -0
  107. package/dist/context/token-counter.d.ts +27 -0
  108. package/dist/context/token-counter.js +91 -0
  109. package/dist/context/tool-result-storage.d.ts +96 -0
  110. package/dist/context/tool-result-storage.js +296 -0
  111. package/dist/cost-tracker.d.ts +64 -0
  112. package/dist/cost-tracker.js +314 -0
  113. package/dist/cron/scheduler.d.ts +34 -0
  114. package/dist/cron/scheduler.js +115 -0
  115. package/dist/data/deepseek-models.json +46 -0
  116. package/dist/data/gemini-models.json +67 -0
  117. package/dist/data/openai-models.json +175 -0
  118. package/dist/data/openrouter-models.d.ts +35 -0
  119. package/dist/data/openrouter-models.js +36 -0
  120. package/dist/data/openrouter-models.json +4626 -0
  121. package/dist/data/openrouter-sync.d.ts +16 -0
  122. package/dist/data/openrouter-sync.js +53 -0
  123. package/dist/data/static-catalogs.d.ts +25 -0
  124. package/dist/data/static-catalogs.js +26 -0
  125. package/dist/data/zai-models.json +56 -0
  126. package/dist/engine/cost-store.d.ts +22 -0
  127. package/dist/engine/cost-store.js +15 -0
  128. package/dist/engine/engine.d.ts +295 -0
  129. package/dist/engine/engine.js +1467 -0
  130. package/dist/engine/model-facade.d.ts +24 -0
  131. package/dist/engine/model-facade.js +194 -0
  132. package/dist/engine/parse-task.d.ts +59 -0
  133. package/dist/engine/parse-task.js +135 -0
  134. package/dist/engine/patch-orphaned-tools.d.ts +52 -0
  135. package/dist/engine/patch-orphaned-tools.js +95 -0
  136. package/dist/engine/query.d.ts +50 -0
  137. package/dist/engine/query.js +107 -0
  138. package/dist/engine/runtime.d.ts +50 -0
  139. package/dist/engine/runtime.js +59 -0
  140. package/dist/engine/streaming-tool-queue.d.ts +34 -0
  141. package/dist/engine/streaming-tool-queue.js +61 -0
  142. package/dist/engine/token-budget.d.ts +22 -0
  143. package/dist/engine/token-budget.js +40 -0
  144. package/dist/engine/tool-summary.d.ts +13 -0
  145. package/dist/engine/tool-summary.js +35 -0
  146. package/dist/engine/turn-loop.d.ts +122 -0
  147. package/dist/engine/turn-loop.js +602 -0
  148. package/dist/engine/turn-state.d.ts +20 -0
  149. package/dist/engine/turn-state.js +17 -0
  150. package/dist/exceptions.d.ts +61 -0
  151. package/dist/exceptions.js +116 -0
  152. package/dist/git/utils.d.ts +35 -0
  153. package/dist/git/utils.js +98 -0
  154. package/dist/git/worktree.d.ts +36 -0
  155. package/dist/git/worktree.js +139 -0
  156. package/dist/hooks/events.d.ts +114 -0
  157. package/dist/hooks/events.js +4 -0
  158. package/dist/hooks/inject.d.ts +19 -0
  159. package/dist/hooks/inject.js +29 -0
  160. package/dist/hooks/registry.d.ts +15 -0
  161. package/dist/hooks/registry.js +84 -0
  162. package/dist/hooks/shell-runner.d.ts +45 -0
  163. package/dist/hooks/shell-runner.js +173 -0
  164. package/dist/index.d.ts +117 -0
  165. package/dist/index.js +145 -0
  166. package/dist/llm/api-key-sanitize.d.ts +22 -0
  167. package/dist/llm/api-key-sanitize.js +81 -0
  168. package/dist/llm/capabilities/index.d.ts +20 -0
  169. package/dist/llm/capabilities/index.js +39 -0
  170. package/dist/llm/capabilities/rules.d.ts +26 -0
  171. package/dist/llm/capabilities/rules.js +215 -0
  172. package/dist/llm/capabilities/types.d.ts +114 -0
  173. package/dist/llm/capabilities/types.js +24 -0
  174. package/dist/llm/client-base.d.ts +29 -0
  175. package/dist/llm/client-base.js +137 -0
  176. package/dist/llm/client-factory.d.ts +10 -0
  177. package/dist/llm/client-factory.js +29 -0
  178. package/dist/llm/model-cache.d.ts +21 -0
  179. package/dist/llm/model-cache.js +46 -0
  180. package/dist/llm/model-fetcher.d.ts +29 -0
  181. package/dist/llm/model-fetcher.js +282 -0
  182. package/dist/llm/model-pool.d.ts +95 -0
  183. package/dist/llm/model-pool.js +246 -0
  184. package/dist/llm/provider-catalog.d.ts +32 -0
  185. package/dist/llm/provider-catalog.js +50 -0
  186. package/dist/llm/provider-kinds.d.ts +21 -0
  187. package/dist/llm/provider-kinds.js +132 -0
  188. package/dist/llm/providers/anthropic.d.ts +19 -0
  189. package/dist/llm/providers/anthropic.js +267 -0
  190. package/dist/llm/providers/openai.d.ts +64 -0
  191. package/dist/llm/providers/openai.js +606 -0
  192. package/dist/llm/retry.d.ts +12 -0
  193. package/dist/llm/retry.js +17 -0
  194. package/dist/llm/stream-watchdog.d.ts +42 -0
  195. package/dist/llm/stream-watchdog.js +70 -0
  196. package/dist/llm/token-counter.d.ts +17 -0
  197. package/dist/llm/token-counter.js +36 -0
  198. package/dist/llm/types.d.ts +37 -0
  199. package/dist/llm/types.js +4 -0
  200. package/dist/logging/logger.d.ts +109 -0
  201. package/dist/logging/logger.js +390 -0
  202. package/dist/logging/sanitize-messages.d.ts +42 -0
  203. package/dist/logging/sanitize-messages.js +150 -0
  204. package/dist/logging/session-recorder.d.ts +90 -0
  205. package/dist/logging/session-recorder.js +304 -0
  206. package/dist/lsp/client.d.ts +41 -0
  207. package/dist/lsp/client.js +166 -0
  208. package/dist/lsp/manager.d.ts +40 -0
  209. package/dist/lsp/manager.js +124 -0
  210. package/dist/lsp/servers.d.ts +16 -0
  211. package/dist/lsp/servers.js +60 -0
  212. package/dist/migrate-models.d.ts +45 -0
  213. package/dist/migrate-models.js +179 -0
  214. package/dist/onboarding.d.ts +189 -0
  215. package/dist/onboarding.js +625 -0
  216. package/dist/plugins/gitOps.d.ts +32 -0
  217. package/dist/plugins/gitOps.js +62 -0
  218. package/dist/plugins/installedPlugins.d.ts +15 -0
  219. package/dist/plugins/installedPlugins.js +56 -0
  220. package/dist/plugins/knownMarketplaces.d.ts +10 -0
  221. package/dist/plugins/knownMarketplaces.js +46 -0
  222. package/dist/plugins/loadPluginHooks.d.ts +52 -0
  223. package/dist/plugins/loadPluginHooks.js +162 -0
  224. package/dist/plugins/marketplaceManager.d.ts +49 -0
  225. package/dist/plugins/marketplaceManager.js +142 -0
  226. package/dist/plugins/parseMarketplaceInput.d.ts +16 -0
  227. package/dist/plugins/parseMarketplaceInput.js +73 -0
  228. package/dist/plugins/pluginCommandHook.d.ts +54 -0
  229. package/dist/plugins/pluginCommandHook.js +180 -0
  230. package/dist/plugins/pluginCommandsLoader.d.ts +25 -0
  231. package/dist/plugins/pluginCommandsLoader.js +114 -0
  232. package/dist/plugins/pluginInstaller.d.ts +36 -0
  233. package/dist/plugins/pluginInstaller.js +228 -0
  234. package/dist/plugins/schemas.d.ts +9 -0
  235. package/dist/plugins/schemas.js +136 -0
  236. package/dist/plugins/types.d.ts +75 -0
  237. package/dist/plugins/types.js +7 -0
  238. package/dist/plugins/varRewrite.d.ts +42 -0
  239. package/dist/plugins/varRewrite.js +129 -0
  240. package/dist/preset/index.d.ts +60 -0
  241. package/dist/preset/index.js +159 -0
  242. package/dist/product/define.d.ts +60 -0
  243. package/dist/product/define.js +123 -0
  244. package/dist/product/index.d.ts +5 -0
  245. package/dist/product/index.js +4 -0
  246. package/dist/product/types.d.ts +111 -0
  247. package/dist/product/types.js +21 -0
  248. package/dist/prompt/composer.d.ts +49 -0
  249. package/dist/prompt/composer.js +168 -0
  250. package/dist/prompt/instruction-scanner.d.ts +54 -0
  251. package/dist/prompt/instruction-scanner.js +187 -0
  252. package/dist/prompt/section-cache.d.ts +15 -0
  253. package/dist/prompt/section-cache.js +31 -0
  254. package/dist/prompt/section-loader.d.ts +26 -0
  255. package/dist/prompt/section-loader.js +53 -0
  256. package/dist/prompt/sections/base.md +35 -0
  257. package/dist/prompt/sections/coding.md +31 -0
  258. package/dist/prompt/sections/orchestration.md +16 -0
  259. package/dist/prompt/sections/tone.md +9 -0
  260. package/dist/protocol/chat-session-manager.d.ts +33 -0
  261. package/dist/protocol/chat-session-manager.js +65 -0
  262. package/dist/protocol/chat-session.d.ts +49 -0
  263. package/dist/protocol/chat-session.js +86 -0
  264. package/dist/protocol/client.d.ts +104 -0
  265. package/dist/protocol/client.js +260 -0
  266. package/dist/protocol/factories.d.ts +93 -0
  267. package/dist/protocol/factories.js +64 -0
  268. package/dist/protocol/helpers.d.ts +42 -0
  269. package/dist/protocol/helpers.js +55 -0
  270. package/dist/protocol/index.d.ts +4 -0
  271. package/dist/protocol/index.js +4 -0
  272. package/dist/protocol/server.d.ts +80 -0
  273. package/dist/protocol/server.js +855 -0
  274. package/dist/protocol/transport.d.ts +37 -0
  275. package/dist/protocol/transport.js +85 -0
  276. package/dist/protocol/types.d.ts +221 -0
  277. package/dist/protocol/types.js +61 -0
  278. package/dist/remote/bridge.d.ts +37 -0
  279. package/dist/remote/bridge.js +103 -0
  280. package/dist/run/ArtifactTracker.d.ts +38 -0
  281. package/dist/run/ArtifactTracker.js +132 -0
  282. package/dist/run/CheckpointWriter.d.ts +53 -0
  283. package/dist/run/CheckpointWriter.js +135 -0
  284. package/dist/run/EngineRunner.d.ts +72 -0
  285. package/dist/run/EngineRunner.js +119 -0
  286. package/dist/run/Evaluator.d.ts +56 -0
  287. package/dist/run/Evaluator.js +62 -0
  288. package/dist/run/FileRunStore.d.ts +39 -0
  289. package/dist/run/FileRunStore.js +176 -0
  290. package/dist/run/Heartbeat.d.ts +54 -0
  291. package/dist/run/Heartbeat.js +123 -0
  292. package/dist/run/RunApprovalBackend.d.ts +53 -0
  293. package/dist/run/RunApprovalBackend.js +85 -0
  294. package/dist/run/RunLock.d.ts +40 -0
  295. package/dist/run/RunLock.js +98 -0
  296. package/dist/run/RunManager.d.ts +82 -0
  297. package/dist/run/RunManager.js +587 -0
  298. package/dist/run/RunQueue.d.ts +27 -0
  299. package/dist/run/RunQueue.js +73 -0
  300. package/dist/run/RunStore.d.ts +25 -0
  301. package/dist/run/RunStore.js +9 -0
  302. package/dist/run/factory.d.ts +63 -0
  303. package/dist/run/factory.js +51 -0
  304. package/dist/run/index.d.ts +17 -0
  305. package/dist/run/index.js +23 -0
  306. package/dist/run/types.d.ts +136 -0
  307. package/dist/run/types.js +28 -0
  308. package/dist/runtime/safe-spawn.d.ts +118 -0
  309. package/dist/runtime/safe-spawn.js +268 -0
  310. package/dist/services/analytics.d.ts +29 -0
  311. package/dist/services/analytics.js +84 -0
  312. package/dist/services/auto-dream.d.ts +49 -0
  313. package/dist/services/auto-dream.js +124 -0
  314. package/dist/services/diagnostics.d.ts +41 -0
  315. package/dist/services/diagnostics.js +99 -0
  316. package/dist/services/extract-memories.d.ts +31 -0
  317. package/dist/services/extract-memories.js +71 -0
  318. package/dist/services/index.d.ts +11 -0
  319. package/dist/services/index.js +17 -0
  320. package/dist/services/memory-orchestrator.d.ts +60 -0
  321. package/dist/services/memory-orchestrator.js +133 -0
  322. package/dist/services/notifier.d.ts +25 -0
  323. package/dist/services/notifier.js +69 -0
  324. package/dist/services/oauth.d.ts +27 -0
  325. package/dist/services/oauth.js +153 -0
  326. package/dist/services/session-memory.d.ts +37 -0
  327. package/dist/services/session-memory.js +81 -0
  328. package/dist/session/file-history.d.ts +41 -0
  329. package/dist/session/file-history.js +115 -0
  330. package/dist/session/memory.d.ts +104 -0
  331. package/dist/session/memory.js +310 -0
  332. package/dist/session/session-manager.d.ts +41 -0
  333. package/dist/session/session-manager.js +261 -0
  334. package/dist/session/transcript.d.ts +39 -0
  335. package/dist/session/transcript.js +186 -0
  336. package/dist/settings/manager.d.ts +36 -0
  337. package/dist/settings/manager.js +187 -0
  338. package/dist/settings/schema.d.ts +1219 -0
  339. package/dist/settings/schema.js +246 -0
  340. package/dist/skills/frontmatter.d.ts +13 -0
  341. package/dist/skills/frontmatter.js +70 -0
  342. package/dist/skills/index.d.ts +7 -0
  343. package/dist/skills/index.js +6 -0
  344. package/dist/skills/scanner.d.ts +31 -0
  345. package/dist/skills/scanner.js +171 -0
  346. package/dist/state.d.ts +160 -0
  347. package/dist/state.js +267 -0
  348. package/dist/tool-system/builtin/agent-notifications.d.ts +84 -0
  349. package/dist/tool-system/builtin/agent-notifications.js +197 -0
  350. package/dist/tool-system/builtin/agent-registry.d.ts +67 -0
  351. package/dist/tool-system/builtin/agent-registry.js +126 -0
  352. package/dist/tool-system/builtin/agent-transcript-translator.d.ts +22 -0
  353. package/dist/tool-system/builtin/agent-transcript-translator.js +160 -0
  354. package/dist/tool-system/builtin/agent.d.ts +16 -0
  355. package/dist/tool-system/builtin/agent.js +364 -0
  356. package/dist/tool-system/builtin/apply-patch/applier.d.ts +26 -0
  357. package/dist/tool-system/builtin/apply-patch/applier.js +250 -0
  358. package/dist/tool-system/builtin/apply-patch/index.d.ts +20 -0
  359. package/dist/tool-system/builtin/apply-patch/index.js +101 -0
  360. package/dist/tool-system/builtin/apply-patch/parser.d.ts +17 -0
  361. package/dist/tool-system/builtin/apply-patch/parser.js +212 -0
  362. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +18 -0
  363. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +123 -0
  364. package/dist/tool-system/builtin/apply-patch/types.d.ts +49 -0
  365. package/dist/tool-system/builtin/apply-patch/types.js +13 -0
  366. package/dist/tool-system/builtin/arena.d.ts +31 -0
  367. package/dist/tool-system/builtin/arena.js +416 -0
  368. package/dist/tool-system/builtin/ask-user.d.ts +20 -0
  369. package/dist/tool-system/builtin/ask-user.js +99 -0
  370. package/dist/tool-system/builtin/bash.d.ts +21 -0
  371. package/dist/tool-system/builtin/bash.js +149 -0
  372. package/dist/tool-system/builtin/brief.d.ts +6 -0
  373. package/dist/tool-system/builtin/brief.js +41 -0
  374. package/dist/tool-system/builtin/config.d.ts +6 -0
  375. package/dist/tool-system/builtin/config.js +67 -0
  376. package/dist/tool-system/builtin/cron.d.ts +10 -0
  377. package/dist/tool-system/builtin/cron.js +61 -0
  378. package/dist/tool-system/builtin/edit.d.ts +6 -0
  379. package/dist/tool-system/builtin/edit.js +100 -0
  380. package/dist/tool-system/builtin/file-cache.d.ts +11 -0
  381. package/dist/tool-system/builtin/file-cache.js +39 -0
  382. package/dist/tool-system/builtin/glob.d.ts +7 -0
  383. package/dist/tool-system/builtin/glob.js +76 -0
  384. package/dist/tool-system/builtin/grep.d.ts +7 -0
  385. package/dist/tool-system/builtin/grep.js +150 -0
  386. package/dist/tool-system/builtin/index.d.ts +20 -0
  387. package/dist/tool-system/builtin/index.js +449 -0
  388. package/dist/tool-system/builtin/lsp.d.ts +6 -0
  389. package/dist/tool-system/builtin/lsp.js +141 -0
  390. package/dist/tool-system/builtin/mcp-tools.d.ts +10 -0
  391. package/dist/tool-system/builtin/mcp-tools.js +102 -0
  392. package/dist/tool-system/builtin/memory.d.ts +26 -0
  393. package/dist/tool-system/builtin/memory.js +226 -0
  394. package/dist/tool-system/builtin/notebook-edit.d.ts +6 -0
  395. package/dist/tool-system/builtin/notebook-edit.js +124 -0
  396. package/dist/tool-system/builtin/plan.d.ts +15 -0
  397. package/dist/tool-system/builtin/plan.js +55 -0
  398. package/dist/tool-system/builtin/powershell.d.ts +11 -0
  399. package/dist/tool-system/builtin/powershell.js +64 -0
  400. package/dist/tool-system/builtin/read.d.ts +6 -0
  401. package/dist/tool-system/builtin/read.js +70 -0
  402. package/dist/tool-system/builtin/remote-trigger.d.ts +6 -0
  403. package/dist/tool-system/builtin/remote-trigger.js +54 -0
  404. package/dist/tool-system/builtin/repl.d.ts +11 -0
  405. package/dist/tool-system/builtin/repl.js +82 -0
  406. package/dist/tool-system/builtin/send-message.d.ts +6 -0
  407. package/dist/tool-system/builtin/send-message.js +47 -0
  408. package/dist/tool-system/builtin/skill-prompt.d.ts +20 -0
  409. package/dist/tool-system/builtin/skill-prompt.js +52 -0
  410. package/dist/tool-system/builtin/skill.d.ts +9 -0
  411. package/dist/tool-system/builtin/skill.js +55 -0
  412. package/dist/tool-system/builtin/sleep.d.ts +6 -0
  413. package/dist/tool-system/builtin/sleep.js +33 -0
  414. package/dist/tool-system/builtin/task.d.ts +48 -0
  415. package/dist/tool-system/builtin/task.js +139 -0
  416. package/dist/tool-system/builtin/tool-search.d.ts +11 -0
  417. package/dist/tool-system/builtin/tool-search.js +90 -0
  418. package/dist/tool-system/builtin/web-fetch.d.ts +10 -0
  419. package/dist/tool-system/builtin/web-fetch.js +328 -0
  420. package/dist/tool-system/builtin/web-search.d.ts +25 -0
  421. package/dist/tool-system/builtin/web-search.js +174 -0
  422. package/dist/tool-system/builtin/worktree.d.ts +10 -0
  423. package/dist/tool-system/builtin/worktree.js +95 -0
  424. package/dist/tool-system/builtin/write.d.ts +6 -0
  425. package/dist/tool-system/builtin/write.js +36 -0
  426. package/dist/tool-system/context.d.ts +165 -0
  427. package/dist/tool-system/context.js +18 -0
  428. package/dist/tool-system/executor.d.ts +49 -0
  429. package/dist/tool-system/executor.js +495 -0
  430. package/dist/tool-system/investigation-guard.d.ts +46 -0
  431. package/dist/tool-system/investigation-guard.js +155 -0
  432. package/dist/tool-system/mcp-manager.d.ts +67 -0
  433. package/dist/tool-system/mcp-manager.js +249 -0
  434. package/dist/tool-system/permission.d.ts +111 -0
  435. package/dist/tool-system/permission.js +774 -0
  436. package/dist/tool-system/registry.d.ts +32 -0
  437. package/dist/tool-system/registry.js +131 -0
  438. package/dist/tool-system/sandbox/bwrap.d.ts +13 -0
  439. package/dist/tool-system/sandbox/bwrap.js +63 -0
  440. package/dist/tool-system/sandbox/index.d.ts +78 -0
  441. package/dist/tool-system/sandbox/index.js +222 -0
  442. package/dist/tool-system/sandbox/off.d.ts +2 -0
  443. package/dist/tool-system/sandbox/off.js +8 -0
  444. package/dist/tool-system/sandbox/seatbelt.d.ts +18 -0
  445. package/dist/tool-system/sandbox/seatbelt.js +109 -0
  446. package/dist/tool-system/task-guard.d.ts +29 -0
  447. package/dist/tool-system/task-guard.js +70 -0
  448. package/dist/tool-system/validation.d.ts +5 -0
  449. package/dist/tool-system/validation.js +39 -0
  450. package/dist/types.d.ts +376 -0
  451. package/dist/types.js +4 -0
  452. package/dist/updater.d.ts +65 -0
  453. package/dist/updater.js +405 -0
  454. package/dist/utils/debug.d.ts +41 -0
  455. package/dist/utils/debug.js +110 -0
  456. package/dist/utils/earlyInput.d.ts +43 -0
  457. package/dist/utils/earlyInput.js +166 -0
  458. package/dist/utils/env.d.ts +24 -0
  459. package/dist/utils/env.js +104 -0
  460. package/dist/utils/envUtils.d.ts +51 -0
  461. package/dist/utils/envUtils.js +135 -0
  462. package/dist/utils/execFileNoThrow.d.ts +39 -0
  463. package/dist/utils/execFileNoThrow.js +74 -0
  464. package/dist/utils/format.d.ts +44 -0
  465. package/dist/utils/format.js +236 -0
  466. package/dist/utils/intl.d.ts +22 -0
  467. package/dist/utils/intl.js +83 -0
  468. package/dist/utils/lockfile.d.ts +15 -0
  469. package/dist/utils/lockfile.js +30 -0
  470. package/dist/utils/memoize.d.ts +19 -0
  471. package/dist/utils/memoize.js +14 -0
  472. package/dist/utils/semver.d.ts +6 -0
  473. package/dist/utils/semver.js +13 -0
  474. package/dist/utils/sliceAnsi.d.ts +12 -0
  475. package/dist/utils/sliceAnsi.js +62 -0
  476. package/dist/utils/systemTheme.d.ts +40 -0
  477. package/dist/utils/systemTheme.js +108 -0
  478. package/dist/utils/task-sanitizer.d.ts +6 -0
  479. package/dist/utils/task-sanitizer.js +24 -0
  480. package/dist/utils/theme.d.ts +93 -0
  481. package/dist/utils/theme.js +544 -0
  482. package/dist/utils/toolDisplay.d.ts +31 -0
  483. package/dist/utils/toolDisplay.js +188 -0
  484. package/package.json +72 -0
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Context tools — read-only tools that arena participants can use
3
+ * to fetch additional source context during research.
4
+ *
5
+ * Security: All shell commands use execFileSync with argument arrays
6
+ * to prevent command injection. File paths are validated against the
7
+ * repository boundary to prevent path traversal.
8
+ */
9
+ import type { ToolDefinition, ToolCall } from "../../types.js";
10
+ export declare const MAX_TOOL_RESULT = 15000;
11
+ export declare const MAX_TOOL_ROUNDS = 3;
12
+ export declare const CONTEXT_TOOLS: ToolDefinition[];
13
+ /**
14
+ * Execute a context tool call and return the result string.
15
+ */
16
+ export declare function executeContextTool(tc: ToolCall): string;
@@ -0,0 +1,231 @@
1
+ /**
2
+ * Context tools — read-only tools that arena participants can use
3
+ * to fetch additional source context during research.
4
+ *
5
+ * Security: All shell commands use execFileSync with argument arrays
6
+ * to prevent command injection. File paths are validated against the
7
+ * repository boundary to prevent path traversal.
8
+ */
9
+ import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
10
+ import { execFileSync } from "node:child_process";
11
+ import { resolve, join } from "node:path";
12
+ export const MAX_TOOL_RESULT = 15_000; // chars per tool call
13
+ // 5 was too generous for thinking-mode models — they'd spend the
14
+ // entire budget on read_file with textLen=0, then need an
15
+ // expensive force_conclude round to actually emit findings (logs
16
+ // consistently showed 5/5 rounds + 70-150s force_conclude). Capping
17
+ // at 3 makes the participant commit to a conclusion much sooner.
18
+ export const MAX_TOOL_ROUNDS = 3;
19
+ /** Repository root boundary — all file access is restricted to this directory */
20
+ const REPO_ROOT = resolve(".");
21
+ export const CONTEXT_TOOLS = [
22
+ {
23
+ name: "read_file",
24
+ description: "Read a file from the repository. Use this when you need to see the full source of a file " +
25
+ "referenced in the context, or to check surrounding code (callers, type definitions, etc.).",
26
+ inputSchema: {
27
+ type: "object",
28
+ properties: {
29
+ path: { type: "string", description: "Relative file path from repo root" },
30
+ offset: { type: "number", description: "Start line (1-based, optional)" },
31
+ limit: { type: "number", description: "Max lines to read (optional, default 200)" },
32
+ },
33
+ required: ["path"],
34
+ },
35
+ },
36
+ {
37
+ name: "grep_code",
38
+ description: "Search for a pattern across the codebase. Use this to find callers, references, " +
39
+ "type definitions, or usages of symbols.",
40
+ inputSchema: {
41
+ type: "object",
42
+ properties: {
43
+ pattern: { type: "string", description: "Regex pattern to search for" },
44
+ glob: { type: "string", description: "File glob filter, e.g. '*.ts' (optional)" },
45
+ },
46
+ required: ["pattern"],
47
+ },
48
+ },
49
+ {
50
+ name: "list_files",
51
+ description: "List files in a directory. Use this to understand project structure around relevant files.",
52
+ inputSchema: {
53
+ type: "object",
54
+ properties: {
55
+ path: { type: "string", description: "Directory path relative to repo root (default: '.')" },
56
+ },
57
+ required: [],
58
+ },
59
+ },
60
+ {
61
+ name: "git_show",
62
+ description: "Show a git object (commit, file at a ref, etc.). Use for inspecting specific commits " +
63
+ "or viewing a file at a different branch/commit.",
64
+ inputSchema: {
65
+ type: "object",
66
+ properties: {
67
+ ref: { type: "string", description: "Git ref, e.g. 'HEAD~3', 'main:src/foo.ts', commit hash" },
68
+ },
69
+ required: ["ref"],
70
+ },
71
+ },
72
+ {
73
+ name: "git_blame",
74
+ description: "Show git blame for a file. Use to understand who changed what and when.",
75
+ inputSchema: {
76
+ type: "object",
77
+ properties: {
78
+ path: { type: "string", description: "File path" },
79
+ lines: { type: "string", description: "Line range, e.g. '10,20' (optional)" },
80
+ },
81
+ required: ["path"],
82
+ },
83
+ },
84
+ ];
85
+ /**
86
+ * Execute a context tool call and return the result string.
87
+ */
88
+ export function executeContextTool(tc) {
89
+ try {
90
+ switch (tc.toolName) {
91
+ case "read_file":
92
+ return executeReadFile(tc.args);
93
+ case "grep_code":
94
+ return executeGrepCode(tc.args);
95
+ case "list_files":
96
+ return executeListFiles(tc.args);
97
+ case "git_show":
98
+ return executeGitShow(tc.args);
99
+ case "git_blame":
100
+ return executeGitBlame(tc.args);
101
+ default:
102
+ return `Unknown tool: ${tc.toolName}`;
103
+ }
104
+ }
105
+ catch (err) {
106
+ return `Tool error: ${err.message}`;
107
+ }
108
+ }
109
+ /**
110
+ * Validate that a file path resolves within the repository root.
111
+ * Returns the resolved absolute path, or null if outside the boundary.
112
+ */
113
+ function validatePath(filePath) {
114
+ const resolved = resolve(filePath);
115
+ if (resolved === REPO_ROOT || resolved.startsWith(REPO_ROOT + "/")) {
116
+ return resolved;
117
+ }
118
+ return null;
119
+ }
120
+ function executeReadFile(args) {
121
+ const filePath = args.path;
122
+ if (!validatePath(filePath))
123
+ return `Error: path outside repository: ${filePath}`;
124
+ if (!existsSync(filePath))
125
+ return `Error: file not found: ${filePath}`;
126
+ const raw = readFileSync(filePath, "utf-8");
127
+ const lines = raw.split("\n");
128
+ const offset = Math.max(0, (args.offset ?? 1) - 1);
129
+ const limit = args.limit ?? 200;
130
+ const slice = lines.slice(offset, offset + limit);
131
+ const numbered = slice.map((l, i) => `${offset + i + 1}\t${l}`).join("\n");
132
+ return truncateResult(numbered);
133
+ }
134
+ function executeGrepCode(args) {
135
+ const pattern = args.pattern;
136
+ const glob = args.glob;
137
+ const grepArgs = ["-rn", "-E", "--"];
138
+ if (glob) {
139
+ grepArgs.splice(1, 0, `--include=${glob}`);
140
+ }
141
+ grepArgs.push(pattern, ".");
142
+ const result = execFileSafe("grep", grepArgs, 80);
143
+ return result || "No matches found.";
144
+ }
145
+ function executeListFiles(args) {
146
+ const dir = args.path || ".";
147
+ if (!validatePath(dir))
148
+ return `Error: path outside repository: ${dir}`;
149
+ try {
150
+ const entries = readdirSync(dir);
151
+ const lines = [];
152
+ for (const entry of entries.slice(0, 50)) {
153
+ const fullPath = join(dir, entry);
154
+ try {
155
+ const st = statSync(fullPath);
156
+ const type = st.isDirectory() ? "d" : "-";
157
+ const size = st.isDirectory() ? "" : ` ${st.size}`;
158
+ lines.push(`${type} ${entry}${size}`);
159
+ }
160
+ catch {
161
+ lines.push(`? ${entry}`);
162
+ }
163
+ }
164
+ return lines.join("\n") || `Empty directory: ${dir}`;
165
+ }
166
+ catch {
167
+ return `Directory not found: ${dir}`;
168
+ }
169
+ }
170
+ function executeGitShow(args) {
171
+ const ref = sanitizeGitRef(args.ref);
172
+ if (!ref)
173
+ return "Error: invalid git ref";
174
+ const result = execFileSafe("git", ["show", "--", ref], 200);
175
+ return truncateResult(result || `Could not resolve: ${ref}`);
176
+ }
177
+ function executeGitBlame(args) {
178
+ const filePath = args.path;
179
+ if (!validatePath(filePath))
180
+ return `Error: path outside repository: ${filePath}`;
181
+ const lines = args.lines;
182
+ const gitArgs = ["blame"];
183
+ if (lines && /^\d+,\d+$/.test(lines)) {
184
+ gitArgs.push(`-L`, lines);
185
+ }
186
+ gitArgs.push("--", filePath);
187
+ const result = execFileSafe("git", gitArgs, 50);
188
+ return result || `Could not blame: ${filePath}`;
189
+ }
190
+ /**
191
+ * Sanitize a git ref string from LLM output.
192
+ * Only allows safe git ref characters.
193
+ */
194
+ function sanitizeGitRef(ref) {
195
+ if (!ref || ref.length > 200)
196
+ return null;
197
+ // Only allow alphanumeric, /, -, _, ~, ^, ., :
198
+ const cleaned = ref.replace(/[^a-zA-Z0-9/_\-~^.:]/g, "");
199
+ // Block shell metacharacters and path traversal attempts
200
+ if (/\.\.\/|;\s|&&|\|\||`|\$\(/.test(cleaned))
201
+ return null;
202
+ return cleaned || null;
203
+ }
204
+ /**
205
+ * Execute a command safely using execFileSync (no shell interpretation).
206
+ * Optionally limits output to maxLines.
207
+ */
208
+ function execFileSafe(cmd, args, maxLines) {
209
+ try {
210
+ const raw = execFileSync(cmd, args, {
211
+ encoding: "utf-8",
212
+ maxBuffer: 512 * 1024,
213
+ timeout: 10_000,
214
+ }).trim();
215
+ if (maxLines) {
216
+ const lines = raw.split("\n");
217
+ if (lines.length > maxLines) {
218
+ return lines.slice(0, maxLines).join("\n") + `\n... (${lines.length - maxLines} more lines)`;
219
+ }
220
+ }
221
+ return raw;
222
+ }
223
+ catch {
224
+ return "";
225
+ }
226
+ }
227
+ function truncateResult(text) {
228
+ if (text.length <= MAX_TOOL_RESULT)
229
+ return text;
230
+ return text.slice(0, MAX_TOOL_RESULT) + "\n... (truncated)";
231
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Arena mode auto-detection — infer review/discussion/planning from topic text.
3
+ *
4
+ * Heuristic-based: uses keyword matching with weighted scoring.
5
+ * Falls back to "review" (safest default) when confidence is low.
6
+ */
7
+ import type { ArenaMode } from "./types.js";
8
+ /** Result of heuristic mode detection */
9
+ export interface ArenaModeDetection {
10
+ mode: ArenaMode;
11
+ confidence: "high" | "low";
12
+ reason: string;
13
+ }
14
+ /**
15
+ * Auto-detect arena mode from the topic string.
16
+ *
17
+ * Returns the detected mode, confidence level, and a human-readable reason.
18
+ * When confidence is low, falls back to "review" (the safest default).
19
+ */
20
+ export declare function detectArenaMode(topic: string): ArenaModeDetection;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Arena mode auto-detection — infer review/discussion/planning from topic text.
3
+ *
4
+ * Heuristic-based: uses keyword matching with weighted scoring.
5
+ * Falls back to "review" (safest default) when confidence is low.
6
+ */
7
+ const MODE_SIGNALS = {
8
+ review: [
9
+ { patterns: [/\breview\b/i, /\baudit\b/i, /\binspect\b/i, /\bcheck\b/i], weight: 2 },
10
+ { patterns: [/\bcode\s*quality\b/i, /\bbug\b/i, /\bvulnerab/i, /\bsecur/i] },
11
+ { patterns: [/\bpr\b/i, /\bpull\s*request\b/i, /\bdiff\b/i, /\bchanges?\b/i] },
12
+ { patterns: [/\brefactor/i, /\bclean\s*up\b/i, /\bimprove\b/i] },
13
+ ],
14
+ discussion: [
15
+ { patterns: [/\bdiscuss\b/i, /\bdebate\b/i, /\bcompare\b/i], weight: 2 },
16
+ { patterns: [/\bpros?\s*(and|&|\/)\s*cons?\b/i, /\btrade\s*-?\s*offs?\b/i] },
17
+ { patterns: [/\bshould\s+we\b/i, /\bwhich\s+(is|approach|way)\b/i, /\bvs\.?\b/i] },
18
+ { patterns: [/\bopinion\b/i, /\bthoughts?\b/i, /\badvice\b/i] },
19
+ ],
20
+ planning: [
21
+ { patterns: [/\bplan\b/i, /\bplanning\b/i, /\broadmap\b/i, /\bstrategy\b/i], weight: 2 },
22
+ { patterns: [/\barchitect/i, /\bdesign\b/i, /\bproposal\b/i] },
23
+ { patterns: [/\bimplement(ation)?\s+(plan|strategy|approach)\b/i], weight: 2 },
24
+ { patterns: [/\bphase\b/i, /\bmilestone\b/i, /\btimeline\b/i, /\bprioritiz/i] },
25
+ { patterns: [/\bbuild\b/i, /\bcreate\b/i, /\bsetup\b/i, /\bbootstrap\b/i] },
26
+ ],
27
+ };
28
+ /** Confidence threshold: below this → low confidence */
29
+ const HIGH_CONFIDENCE_THRESHOLD = 3;
30
+ /** Minimum lead over runner-up to be "high" confidence */
31
+ const MIN_LEAD = 2;
32
+ // ─── Detection ──────────────────────────────────────────────────
33
+ /**
34
+ * Auto-detect arena mode from the topic string.
35
+ *
36
+ * Returns the detected mode, confidence level, and a human-readable reason.
37
+ * When confidence is low, falls back to "review" (the safest default).
38
+ */
39
+ export function detectArenaMode(topic) {
40
+ const scores = { review: 0, discussion: 0, planning: 0 };
41
+ for (const [mode, signals] of Object.entries(MODE_SIGNALS)) {
42
+ for (const signal of signals) {
43
+ const weight = signal.weight ?? 1;
44
+ for (const pattern of signal.patterns) {
45
+ if (pattern.test(topic)) {
46
+ scores[mode] += weight;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ // Sort modes by score descending
52
+ const ranked = Object.entries(scores)
53
+ .sort((a, b) => b[1] - a[1]);
54
+ const [bestMode, bestScore] = ranked[0];
55
+ const [, runnerUpScore] = ranked[1];
56
+ const lead = bestScore - runnerUpScore;
57
+ // Determine confidence
58
+ if (bestScore >= HIGH_CONFIDENCE_THRESHOLD && lead >= MIN_LEAD) {
59
+ return {
60
+ mode: bestMode,
61
+ confidence: "high",
62
+ reason: `Topic strongly matches "${bestMode}" (score: ${bestScore}, lead: +${lead})`,
63
+ };
64
+ }
65
+ if (bestScore > 0 && lead > 0) {
66
+ return {
67
+ mode: bestMode,
68
+ confidence: "low",
69
+ reason: `Topic weakly matches "${bestMode}" (score: ${bestScore}, lead: +${lead})`,
70
+ };
71
+ }
72
+ // No signal at all → default to review
73
+ return {
74
+ mode: "review",
75
+ confidence: "low",
76
+ reason: "No strong mode signal detected, defaulting to review",
77
+ };
78
+ }
@@ -0,0 +1,25 @@
1
+ /**
2
+ * DigestBuilder — constructs RoundResearchDigest from the shared ledger.
3
+ *
4
+ * The digest is a filtered view injected into prompts to avoid
5
+ * token explosion from the full ledger. Program-built, not model-built.
6
+ */
7
+ import type { ArenaLedger } from "./ledger.js";
8
+ import type { RoundResearchDigest } from "./types.js";
9
+ interface DigestOptions {
10
+ /** Current round number */
11
+ round: number;
12
+ /** Claim IDs relevant to this round (e.g. contested claims in debate) */
13
+ relevantClaimIds: string[];
14
+ }
15
+ /**
16
+ * Build a digest from the shared ledger for a specific round.
17
+ * Only includes data relevant to the specified claims.
18
+ */
19
+ export declare function buildDigest(ledger: ArenaLedger, options: DigestOptions): RoundResearchDigest;
20
+ /**
21
+ * Format a digest into a text block suitable for prompt injection.
22
+ * All LLM-originated text is sanitized before inclusion.
23
+ */
24
+ export declare function formatDigest(digest: RoundResearchDigest): string;
25
+ export {};
@@ -0,0 +1,120 @@
1
+ /**
2
+ * DigestBuilder — constructs RoundResearchDigest from the shared ledger.
3
+ *
4
+ * The digest is a filtered view injected into prompts to avoid
5
+ * token explosion from the full ledger. Program-built, not model-built.
6
+ */
7
+ /**
8
+ * Build a digest from the shared ledger for a specific round.
9
+ * Only includes data relevant to the specified claims.
10
+ */
11
+ export function buildDigest(ledger, options) {
12
+ const { round, relevantClaimIds } = options;
13
+ const claimIdSet = new Set(relevantClaimIds);
14
+ const snapshot = ledger.getSnapshot();
15
+ // Collect evidence packets referenced by relevant claims
16
+ const packetIds = new Set();
17
+ for (const claimId of relevantClaimIds) {
18
+ const claim = ledger.getClaimById(claimId);
19
+ if (claim) {
20
+ for (const pid of claim.evidencePacketIds) {
21
+ packetIds.add(pid);
22
+ }
23
+ }
24
+ }
25
+ const evidencePackets = [];
26
+ for (const pid of packetIds) {
27
+ const packet = ledger.getPacketById(pid);
28
+ if (packet)
29
+ evidencePackets.push(packet);
30
+ }
31
+ // Tool trace summary — built directly from dossiers to preserve participant ownership
32
+ const toolTraceSummary = [];
33
+ for (const dossier of snapshot.dossiers) {
34
+ for (const trace of dossier.toolTrace) {
35
+ if (trace.keptAsEvidence) {
36
+ toolTraceSummary.push({
37
+ participant: dossier.participant,
38
+ toolName: trace.toolName,
39
+ ref: trace.resultRef,
40
+ });
41
+ }
42
+ }
43
+ }
44
+ // Recent challenges for relevant claims
45
+ const recentChallenges = snapshot.challenges
46
+ .filter((c) => claimIdSet.has(c.claimId));
47
+ // Pending requested checks for relevant claims
48
+ const requestedChecks = snapshot.requestedChecks
49
+ .filter((c) => claimIdSet.has(c.claimId));
50
+ // Prior adjudications for relevant claims
51
+ const priorAdjudications = snapshot.adjudications
52
+ .filter((a) => claimIdSet.has(a.claimId));
53
+ return {
54
+ round,
55
+ relevantClaimIds,
56
+ evidencePackets,
57
+ toolTraceSummary,
58
+ recentChallenges,
59
+ requestedChecks,
60
+ priorAdjudications,
61
+ };
62
+ }
63
+ /**
64
+ * Sanitize text from LLM output before re-injecting into a prompt.
65
+ * Strips patterns that could be interpreted as prompt-level instructions.
66
+ */
67
+ function sanitize(text) {
68
+ if (!text)
69
+ return "";
70
+ return text
71
+ // Strip fake system/assistant role tags
72
+ .replace(/<\/?(?:system|assistant|user|system-reminder)[^>]*>/gi, "")
73
+ // Strip instruction-like prefixes (case-insensitive)
74
+ .replace(/^(?:IGNORE|DISREGARD|FORGET|OVERRIDE|SYSTEM|INSTRUCTION)[:\s].*/gim, "")
75
+ // Collapse excessive whitespace
76
+ .replace(/\n{3,}/g, "\n\n")
77
+ // Limit length per field
78
+ .slice(0, 2000);
79
+ }
80
+ /**
81
+ * Format a digest into a text block suitable for prompt injection.
82
+ * All LLM-originated text is sanitized before inclusion.
83
+ */
84
+ export function formatDigest(digest) {
85
+ const sections = [];
86
+ sections.push(`## Round ${digest.round} Research Digest`);
87
+ sections.push(`Claims under consideration: ${digest.relevantClaimIds.join(", ")}`);
88
+ if (digest.evidencePackets.length > 0) {
89
+ sections.push("\n### Evidence");
90
+ for (const packet of digest.evidencePackets) {
91
+ sections.push(`- [${packet.packetId}] ${sanitize(packet.title)} (${packet.source})`);
92
+ sections.push(` ${sanitize(packet.summary)}`);
93
+ for (const excerpt of packet.excerpts.slice(0, 3)) {
94
+ sections.push(` > ${excerpt.ref}: ${sanitize(excerpt.snippet)}`);
95
+ if (excerpt.note)
96
+ sections.push(` Note: ${sanitize(excerpt.note)}`);
97
+ }
98
+ }
99
+ }
100
+ if (digest.recentChallenges.length > 0) {
101
+ sections.push("\n### Challenges");
102
+ for (const c of digest.recentChallenges) {
103
+ sections.push(`- [${c.reviewer}] on ${c.claimId}: ${c.verdict} — ${sanitize(c.reason)}`);
104
+ }
105
+ }
106
+ if (digest.requestedChecks.length > 0) {
107
+ sections.push("\n### Requested Checks");
108
+ for (const check of digest.requestedChecks) {
109
+ const pri = check.priority ? ` (${check.priority})` : "";
110
+ sections.push(`- [${check.requestId}]${pri}: ${sanitize(check.description)}`);
111
+ }
112
+ }
113
+ if (digest.priorAdjudications.length > 0) {
114
+ sections.push("\n### Prior Adjudications");
115
+ for (const adj of digest.priorAdjudications) {
116
+ sections.push(`- ${adj.claimId}: ${adj.outcome} — ${sanitize(adj.rationale)}`);
117
+ }
118
+ }
119
+ return sections.join("\n");
120
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Arena — multi-model collaborative analysis (Evidence-Driven).
3
+ */
4
+ export { Arena } from "./arena.js";
5
+ export { MODEL_PRESETS, getMaxOutputTokens } from "./model-presets.js";
6
+ export type { ModelPreset } from "./model-presets.js";
7
+ export { getStrategy, getStrategyForPlan, ReviewStrategy, DiscussionStrategy, PlanningStrategy } from "./strategies/index.js";
8
+ export { planArena } from "./planner.js";
9
+ export { collectEvidence } from "./providers/index.js";
10
+ export { selectTools, hasTools } from "./tools/selector.js";
11
+ export { getLens, resolveLenses, buildLensPrompt, LENS_NAMES } from "./lenses/index.js";
12
+ export { runParticipantResearch, runParticipantResearchWithDossiers } from "./phases/participant-research.js";
13
+ export type { ResearchResult } from "./phases/participant-research.js";
14
+ export { runCrossReview, runVerificationReview } from "./phases/cross-review.js";
15
+ export { runDebateRounds } from "./phases/debate-rounds.js";
16
+ export { runAdjudication } from "./phases/adjudication.js";
17
+ export { buildConsensus } from "./phases/build-consensus.js";
18
+ export { registerClaims, selectClaimsForReview } from "./phases/claim-registry.js";
19
+ export { ArenaLedger } from "./ledger.js";
20
+ export { buildDigest, formatDigest } from "./digest-builder.js";
21
+ export { transitionClaim, resolveClaimStatus, markUnderReview, applyReviewResult, markUnresolved, isTerminal, validTransitions, } from "./transitions.js";
22
+ export { formatArenaResult, printArenaResult, renderProgress, createProgressRenderer } from "./render/terminal.js";
23
+ export type { OutputSink } from "./render/terminal.js";
24
+ export { formatArenaResultForSession } from "./render/session.js";
25
+ export type { ArenaConfig, ArenaResultV2, ArenaStrategy, ArenaStrategyV2, ClaimStatusSummary, ArenaParticipant, ArenaBaseContext, ArenaFinding, FindingReview, ParticipantReport, ArenaConsensus, ArenaConsensusItem, ArenaRoadmapPhase, ArenaProgressEvent, ArenaMode, FindingKind, PeerVerdict, ArenaPlan, ArenaLens, ArenaLensName, ArenaLensRef, ArenaSourceKind, ArenaSourceSpec, ArenaSubject, ArenaOutputShape, ArenaArtifact, ArenaToolPack, ArenaContextProvider, ArenaQuickFact, ToolTrace, EvidencePacket, FindingEvidenceLink, ResearchDossier, ClaimStatus, ClaimRecord, ClaimChallenge, ClaimAdjudication, RequestedCheck, DebateRound, DebateTurn, TargetedCheckTask, SharedResearchLedger, RoundResearchDigest, ArenaExecutionLimits, } from "./types.js";
26
+ export { isStrategyV2 } from "./types.js";
27
+ export { IterativeArena } from "./iterate/index.js";
28
+ export { defaultConvergence as defaultIterateConvergence, diffRatio as iterateDiffRatio, codeFormat as iterateCodeFormat, documentFormat as iterateDocumentFormat, getFormat as getIterateFormat, } from "./iterate/index.js";
29
+ export type { AuthorRotation, CheckpointAction, CheckpointContext, CheckpointFn, ConvergenceSignal, Critique, CritiqueCategory, CritiqueEvidence, CritiqueSeverity, Draft, DraftCandidate, IterateConfig, IterateFormat, IterateProgressEvent, IterateResult, IterateSubject, Round, StoppedReason, FormatPack as IterateFormatPack, } from "./iterate/index.js";
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Arena — multi-model collaborative analysis (Evidence-Driven).
3
+ */
4
+ export { Arena } from "./arena.js";
5
+ export { MODEL_PRESETS, getMaxOutputTokens } from "./model-presets.js";
6
+ export { getStrategy, getStrategyForPlan, ReviewStrategy, DiscussionStrategy, PlanningStrategy } from "./strategies/index.js";
7
+ export { planArena } from "./planner.js";
8
+ export { collectEvidence } from "./providers/index.js";
9
+ export { selectTools, hasTools } from "./tools/selector.js";
10
+ export { getLens, resolveLenses, buildLensPrompt, LENS_NAMES } from "./lenses/index.js";
11
+ export { runParticipantResearch, runParticipantResearchWithDossiers } from "./phases/participant-research.js";
12
+ export { runCrossReview, runVerificationReview } from "./phases/cross-review.js";
13
+ export { runDebateRounds } from "./phases/debate-rounds.js";
14
+ export { runAdjudication } from "./phases/adjudication.js";
15
+ export { buildConsensus } from "./phases/build-consensus.js";
16
+ export { registerClaims, selectClaimsForReview } from "./phases/claim-registry.js";
17
+ export { ArenaLedger } from "./ledger.js";
18
+ export { buildDigest, formatDigest } from "./digest-builder.js";
19
+ export { transitionClaim, resolveClaimStatus, markUnderReview, applyReviewResult, markUnresolved, isTerminal, validTransitions, } from "./transitions.js";
20
+ export { formatArenaResult, printArenaResult, renderProgress, createProgressRenderer } from "./render/terminal.js";
21
+ export { formatArenaResultForSession } from "./render/session.js";
22
+ export { isStrategyV2 } from "./types.js";
23
+ // ─── Iterate Mode ────────────────────────────────────────────────
24
+ //
25
+ // Iterative authoring loop: tournament v1 → critique-revise rounds.
26
+ // Use this for "produce a thing from scratch" (code, PRD, design doc).
27
+ // For "review an existing thing" use the regular Arena class above.
28
+ export { IterativeArena } from "./iterate/index.js";
29
+ export { defaultConvergence as defaultIterateConvergence, diffRatio as iterateDiffRatio, codeFormat as iterateCodeFormat, documentFormat as iterateDocumentFormat, getFormat as getIterateFormat, } from "./iterate/index.js";
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Convergence detection — when has the draft stabilized enough to stop?
3
+ */
4
+ import type { ConvergenceSignal, Critique, Draft } from "./types.js";
5
+ /**
6
+ * Cheap O(n) approximation of "how different is new vs old".
7
+ * Returns 0..1 where 0 = identical, 1 = completely different.
8
+ *
9
+ * Uses character-trigram Jaccard distance — fast, good enough for "is the
10
+ * author actually changing anything substantial?".
11
+ */
12
+ export declare function diffRatio(a: string, b: string): number;
13
+ /**
14
+ * Default convergence rule:
15
+ * stop if blockers == 0 AND
16
+ * (all critiques are minor/nit/praise OR diff < 5% from last version)
17
+ *
18
+ * Round 1 never converges (need at least one revision pass).
19
+ */
20
+ export declare function defaultConvergence(args: {
21
+ round: number;
22
+ critiques: Critique[];
23
+ draft: Draft;
24
+ previousDraft?: Draft;
25
+ }): ConvergenceSignal;