@cjhyy/code-shell-core 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (621) hide show
  1. package/README.md +36 -23
  2. package/dist/agent/agent-definition-registry.d.ts +2 -2
  3. package/dist/agent/agent-definition-registry.js +47 -10
  4. package/dist/agent/agent-definition.d.ts +5 -0
  5. package/dist/agent/agent-definition.js +14 -0
  6. package/dist/automation/index.d.ts +7 -4
  7. package/dist/automation/index.js +4 -2
  8. package/dist/automation/runner.js +3 -1
  9. package/dist/automation/scheduler.d.ts +57 -1
  10. package/dist/automation/scheduler.js +123 -23
  11. package/dist/automation/store.d.ts +6 -2
  12. package/dist/automation/store.js +7 -3
  13. package/dist/capabilities/index.d.ts +109 -0
  14. package/dist/capabilities/index.js +80 -0
  15. package/dist/capability-control/disabled-lists.d.ts +2 -1
  16. package/dist/capability-control/disabled-lists.js +3 -5
  17. package/dist/capability-control/overlay.d.ts +14 -1
  18. package/dist/capability-control/overlay.js +40 -0
  19. package/dist/capability-control/service.js +6 -4
  20. package/dist/cli/agent-server-stdio.d.ts +1 -1
  21. package/dist/cli/agent-server-stdio.js +66 -6
  22. package/dist/cli/agent-server-tcp.js +20 -5
  23. package/dist/context/compaction.d.ts +39 -3
  24. package/dist/context/compaction.js +151 -39
  25. package/dist/context/manager.d.ts +20 -4
  26. package/dist/context/manager.js +42 -7
  27. package/dist/context/token-counter.js +5 -3
  28. package/dist/context/tool-result-storage.d.ts +6 -0
  29. package/dist/context/tool-result-storage.js +25 -4
  30. package/dist/credentials/access.d.ts +13 -2
  31. package/dist/credentials/access.js +99 -4
  32. package/dist/credentials/index.d.ts +3 -2
  33. package/dist/credentials/index.js +2 -1
  34. package/dist/credentials/oauth.d.ts +9 -1
  35. package/dist/credentials/oauth.js +80 -1
  36. package/dist/credentials/store.d.ts +16 -2
  37. package/dist/credentials/store.js +33 -11
  38. package/dist/credentials/types.d.ts +62 -1
  39. package/dist/credentials/types.js +16 -1
  40. package/dist/credentials/use-credential-tool.js +15 -1
  41. package/dist/engine/auxiliary-pipeline.d.ts +40 -0
  42. package/dist/engine/auxiliary-pipeline.js +181 -0
  43. package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
  44. package/dist/{settings → engine}/disk-defaults.js +5 -2
  45. package/dist/engine/dynamic-tool-defs.d.ts +4 -0
  46. package/dist/engine/dynamic-tool-defs.js +4 -0
  47. package/dist/engine/engine.d.ts +272 -184
  48. package/dist/engine/engine.js +1869 -1864
  49. package/dist/engine/file-history-hook.d.ts +11 -0
  50. package/dist/engine/file-history-hook.js +31 -0
  51. package/dist/engine/goal-judge-context.d.ts +9 -0
  52. package/dist/engine/goal-judge-context.js +234 -0
  53. package/dist/engine/injected-context-cache.d.ts +6 -0
  54. package/dist/engine/injected-context-cache.js +13 -0
  55. package/dist/engine/input-attachments.d.ts +1 -1
  56. package/dist/engine/model-facade.d.ts +3 -3
  57. package/dist/engine/model-facade.js +15 -14
  58. package/dist/engine/permission-controller.d.ts +55 -0
  59. package/dist/engine/permission-controller.js +148 -0
  60. package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
  61. package/dist/engine/prompt-cache-diagnostics.js +178 -0
  62. package/dist/engine/run-accounting.d.ts +41 -0
  63. package/dist/engine/run-accounting.js +126 -0
  64. package/dist/engine/run-context.d.ts +44 -0
  65. package/dist/engine/run-context.js +88 -0
  66. package/dist/engine/run-environment.d.ts +30 -0
  67. package/dist/engine/run-environment.js +77 -0
  68. package/dist/engine/run-finalize.d.ts +58 -0
  69. package/dist/engine/run-finalize.js +245 -0
  70. package/dist/engine/run-goal.d.ts +58 -0
  71. package/dist/engine/run-goal.js +188 -0
  72. package/dist/engine/run-image-input.d.ts +1 -1
  73. package/dist/engine/run-image-input.js +5 -3
  74. package/dist/engine/run-session-open.d.ts +41 -0
  75. package/dist/engine/run-session-open.js +186 -0
  76. package/dist/engine/run-setup.d.ts +42 -0
  77. package/dist/engine/run-setup.js +58 -0
  78. package/dist/engine/run-tooling.d.ts +125 -0
  79. package/dist/engine/run-tooling.js +283 -0
  80. package/dist/engine/run-types.d.ts +139 -0
  81. package/dist/engine/run-types.js +12 -0
  82. package/dist/engine/run-workspace.d.ts +50 -0
  83. package/dist/engine/run-workspace.js +114 -0
  84. package/dist/engine/session-title.d.ts +2 -1
  85. package/dist/engine/session-title.js +4 -1
  86. package/dist/engine/steer-queue.d.ts +1 -1
  87. package/dist/engine/subagent-spawner.d.ts +32 -0
  88. package/dist/engine/subagent-spawner.js +287 -0
  89. package/dist/engine/tool-summary.d.ts +2 -2
  90. package/dist/engine/tool-summary.js +2 -2
  91. package/dist/engine/turn-loop.d.ts +67 -10
  92. package/dist/engine/turn-loop.js +538 -97
  93. package/dist/engine/types.d.ts +35 -4
  94. package/dist/engine/types.js +1 -1
  95. package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +80 -6
  96. package/dist/goal/lifecycle.js +482 -0
  97. package/dist/hooks/events.d.ts +26 -9
  98. package/dist/hooks/events.js +0 -3
  99. package/dist/hooks/goal-stop-hook.d.ts +28 -29
  100. package/dist/hooks/goal-stop-hook.js +344 -144
  101. package/dist/hooks/registry.js +4 -1
  102. package/dist/hooks/shell-runner.d.ts +12 -1
  103. package/dist/hooks/shell-runner.js +160 -9
  104. package/dist/index.d.ts +51 -110
  105. package/dist/index.extension.d.ts +51 -0
  106. package/dist/index.extension.js +39 -0
  107. package/dist/index.internal.d.ts +86 -0
  108. package/dist/index.internal.js +92 -0
  109. package/dist/index.js +37 -125
  110. package/dist/links/cli.d.ts +48 -0
  111. package/dist/links/cli.js +617 -0
  112. package/dist/links/http.d.ts +40 -0
  113. package/dist/links/http.js +166 -0
  114. package/dist/links/index.d.ts +4 -0
  115. package/dist/links/index.js +3 -0
  116. package/dist/links/link-action-tool.d.ts +5 -0
  117. package/dist/links/link-action-tool.js +241 -0
  118. package/dist/links/providers.d.ts +8 -0
  119. package/dist/links/providers.js +665 -0
  120. package/dist/links/types.d.ts +44 -0
  121. package/dist/llm/client-base.d.ts +7 -0
  122. package/dist/llm/client-base.js +72 -10
  123. package/dist/llm/model-pool.d.ts +1 -1
  124. package/dist/llm/model-pool.js +1 -1
  125. package/dist/llm/providers/anthropic.d.ts +1 -0
  126. package/dist/llm/providers/anthropic.js +9 -0
  127. package/dist/llm/providers/openai.d.ts +1 -0
  128. package/dist/llm/providers/openai.js +17 -0
  129. package/dist/llm/types.d.ts +12 -5
  130. package/dist/model-catalog/index.js +15 -2
  131. package/dist/model-catalog/resolve.d.ts +13 -1
  132. package/dist/model-catalog/resolve.js +37 -2
  133. package/dist/model-catalog/types.d.ts +74 -48
  134. package/dist/model-catalog/types.js +16 -5
  135. package/dist/model-catalog/upsert.d.ts +3 -1
  136. package/dist/model-catalog/upsert.js +9 -0
  137. package/dist/onboarding.d.ts +0 -1
  138. package/dist/onboarding.js +1 -22
  139. package/dist/panel-apps/bindings.d.ts +24 -0
  140. package/dist/panel-apps/bindings.js +69 -0
  141. package/dist/panel-apps/github-archive.d.ts +21 -0
  142. package/dist/panel-apps/github-archive.js +98 -0
  143. package/dist/panel-apps/index.d.ts +4 -0
  144. package/dist/panel-apps/index.js +4 -0
  145. package/dist/panel-apps/installer.d.ts +68 -0
  146. package/dist/panel-apps/installer.js +622 -0
  147. package/dist/panel-apps/manifest.d.ts +364 -0
  148. package/dist/panel-apps/manifest.js +189 -0
  149. package/dist/panel-apps/paths.d.ts +13 -0
  150. package/dist/panel-apps/paths.js +38 -0
  151. package/dist/panel-apps/registry.d.ts +51 -0
  152. package/dist/panel-apps/registry.js +99 -0
  153. package/dist/panel-apps/runtime.d.ts +80 -0
  154. package/dist/panel-apps/runtime.js +154 -0
  155. package/dist/plugins/gitOps.js +8 -1
  156. package/dist/plugins/installedPlugins.d.ts +2 -1
  157. package/dist/plugins/installedPlugins.js +146 -8
  158. package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
  159. package/dist/plugins/installer/codex/convertAgents.js +62 -8
  160. package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
  161. package/dist/plugins/installer/codex/convertCommands.js +35 -12
  162. package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
  163. package/dist/plugins/installer/codex/convertHooks.js +82 -0
  164. package/dist/plugins/installer/codex/convertSkills.js +41 -6
  165. package/dist/plugins/installer/install.d.ts +7 -1
  166. package/dist/plugins/installer/install.js +21 -87
  167. package/dist/plugins/installer/installFromArchive.d.ts +26 -4
  168. package/dist/plugins/installer/installFromArchive.js +44 -27
  169. package/dist/plugins/installer/installFromNpm.d.ts +31 -0
  170. package/dist/plugins/installer/installFromNpm.js +273 -0
  171. package/dist/plugins/installer/loadPluginAgents.js +17 -4
  172. package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
  173. package/dist/plugins/installer/loadPluginMcp.js +245 -35
  174. package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
  175. package/dist/plugins/installer/normalizeManifest.js +306 -0
  176. package/dist/plugins/installer/npmTar.d.ts +13 -0
  177. package/dist/plugins/installer/npmTar.js +321 -0
  178. package/dist/plugins/installer/parseSource.d.ts +11 -0
  179. package/dist/plugins/installer/parseSource.js +48 -0
  180. package/dist/plugins/installer/preview.d.ts +101 -0
  181. package/dist/plugins/installer/preview.js +336 -0
  182. package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
  183. package/dist/plugins/installer/projectPluginSource.js +140 -0
  184. package/dist/plugins/installer/types.d.ts +775 -0
  185. package/dist/plugins/installer/types.js +100 -0
  186. package/dist/plugins/installer/unzip.d.ts +11 -0
  187. package/dist/plugins/installer/unzip.js +123 -9
  188. package/dist/plugins/installer/update.d.ts +2 -2
  189. package/dist/plugins/installer/update.js +43 -4
  190. package/dist/plugins/loadPluginHooks.d.ts +19 -2
  191. package/dist/plugins/loadPluginHooks.js +97 -86
  192. package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
  193. package/dist/plugins/pluginAutomationTemplates.js +50 -0
  194. package/dist/plugins/pluginCatalog.d.ts +45 -0
  195. package/dist/plugins/pluginCatalog.js +87 -0
  196. package/dist/plugins/pluginCommandHook.d.ts +10 -4
  197. package/dist/plugins/pluginCommandHook.js +133 -18
  198. package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
  199. package/dist/plugins/pluginCommandsLoader.js +181 -7
  200. package/dist/plugins/pluginContent.d.ts +10 -1
  201. package/dist/plugins/pluginContent.js +87 -30
  202. package/dist/plugins/pluginHookApproval.d.ts +30 -0
  203. package/dist/plugins/pluginHookApproval.js +160 -0
  204. package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
  205. package/dist/plugins/pluginHookIntegrity.js +361 -0
  206. package/dist/plugins/pluginInstaller.js +71 -12
  207. package/dist/plugins/pluginMcpApproval.d.ts +19 -0
  208. package/dist/plugins/pluginMcpApproval.js +110 -0
  209. package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
  210. package/dist/plugins/pluginMcpIntegrity.js +74 -0
  211. package/dist/plugins/types.d.ts +30 -0
  212. package/dist/plugins/varRewrite.d.ts +9 -5
  213. package/dist/plugins/varRewrite.js +26 -17
  214. package/dist/preset/index.d.ts +11 -8
  215. package/dist/preset/index.js +62 -203
  216. package/dist/product/define.js +9 -3
  217. package/dist/product/types.d.ts +0 -2
  218. package/dist/profile/activation.d.ts +36 -0
  219. package/dist/profile/activation.js +57 -0
  220. package/dist/profile/catalog-store.d.ts +77 -0
  221. package/dist/profile/catalog-store.js +346 -0
  222. package/dist/profile/catalog.d.ts +54 -0
  223. package/dist/profile/catalog.js +152 -0
  224. package/dist/profile/index.d.ts +7 -0
  225. package/dist/profile/index.js +7 -0
  226. package/dist/profile/requirements.d.ts +76 -0
  227. package/dist/profile/requirements.js +117 -0
  228. package/dist/profile/resolve.d.ts +11 -0
  229. package/dist/profile/resolve.js +41 -0
  230. package/dist/profile/store.d.ts +17 -0
  231. package/dist/profile/store.js +167 -0
  232. package/dist/profile/types.d.ts +321 -0
  233. package/dist/profile/types.js +104 -0
  234. package/dist/prompt/composer.d.ts +46 -7
  235. package/dist/prompt/composer.js +78 -48
  236. package/dist/prompt/instruction-scanner.d.ts +6 -5
  237. package/dist/prompt/instruction-scanner.js +8 -23
  238. package/dist/prompt/section-loader.d.ts +2 -2
  239. package/dist/prompt/section-loader.js +7 -4
  240. package/dist/prompt/sections/browser.md +10 -9
  241. package/dist/prompt/sections/harness-base.md +9 -0
  242. package/dist/protocol/chat-session-manager.d.ts +77 -3
  243. package/dist/protocol/chat-session-manager.js +194 -18
  244. package/dist/protocol/chat-session.d.ts +72 -9
  245. package/dist/protocol/chat-session.js +151 -16
  246. package/dist/protocol/client.d.ts +37 -4
  247. package/dist/protocol/client.js +118 -6
  248. package/dist/protocol/index.d.ts +2 -2
  249. package/dist/protocol/index.js +2 -2
  250. package/dist/protocol/mobile-remote-types.d.ts +406 -0
  251. package/dist/protocol/mobile-remote-types.js +1 -0
  252. package/dist/protocol/server.d.ts +152 -14
  253. package/dist/protocol/server.js +1574 -229
  254. package/dist/protocol/types.d.ts +182 -32
  255. package/dist/protocol/types.js +18 -0
  256. package/dist/run/ArtifactTracker.d.ts +6 -1
  257. package/dist/run/ArtifactTracker.js +29 -21
  258. package/dist/run/EngineRunner.d.ts +2 -0
  259. package/dist/run/EngineRunner.js +1 -0
  260. package/dist/run/RunManager.d.ts +26 -0
  261. package/dist/run/RunManager.js +82 -11
  262. package/dist/run/factory.d.ts +3 -0
  263. package/dist/run/factory.js +2 -0
  264. package/dist/runtime/safe-spawn.d.ts +6 -0
  265. package/dist/runtime/safe-spawn.js +8 -13
  266. package/dist/services/auto-dream.d.ts +13 -1
  267. package/dist/services/auto-dream.js +56 -8
  268. package/dist/services/dream-consolidation.d.ts +3 -0
  269. package/dist/services/dream-consolidation.js +14 -2
  270. package/dist/services/index.d.ts +1 -1
  271. package/dist/services/index.js +1 -1
  272. package/dist/services/memory-orchestrator.js +6 -2
  273. package/dist/services/oauth.d.ts +34 -10
  274. package/dist/services/oauth.js +236 -98
  275. package/dist/services/session-memory.d.ts +4 -4
  276. package/dist/services/session-memory.js +13 -10
  277. package/dist/session/memory.d.ts +26 -7
  278. package/dist/session/memory.js +79 -21
  279. package/dist/session/session-manager.d.ts +208 -25
  280. package/dist/session/session-manager.js +1232 -116
  281. package/dist/session/session-message.d.ts +22 -0
  282. package/dist/session/session-message.js +1 -0
  283. package/dist/session/transcript.d.ts +76 -6
  284. package/dist/session/transcript.js +278 -7
  285. package/dist/settings/feature-flags.d.ts +40 -0
  286. package/dist/settings/feature-flags.js +40 -0
  287. package/dist/settings/manager.d.ts +39 -1
  288. package/dist/settings/manager.js +102 -41
  289. package/dist/settings/migrate-config.js +4 -2
  290. package/dist/settings/schema.d.ts +511 -177
  291. package/dist/settings/schema.js +98 -25
  292. package/dist/skills/scanner.d.ts +6 -2
  293. package/dist/skills/scanner.js +160 -9
  294. package/dist/sources/adapter.d.ts +14 -0
  295. package/dist/sources/adapter.js +7 -0
  296. package/dist/sources/adapters/local-files.d.ts +10 -0
  297. package/dist/sources/adapters/local-files.js +127 -0
  298. package/dist/sources/adapters/mcp-resource.d.ts +17 -0
  299. package/dist/sources/adapters/mcp-resource.js +41 -0
  300. package/dist/sources/adapters/mock.d.ts +3 -0
  301. package/dist/sources/adapters/mock.js +29 -0
  302. package/dist/sources/binding.d.ts +6 -0
  303. package/dist/sources/binding.js +24 -0
  304. package/dist/sources/catalog.d.ts +6 -0
  305. package/dist/sources/catalog.js +64 -0
  306. package/dist/sources/context-summary.d.ts +8 -0
  307. package/dist/sources/context-summary.js +13 -0
  308. package/dist/sources/credential-status.d.ts +2 -0
  309. package/dist/sources/credential-status.js +13 -0
  310. package/dist/sources/index.d.ts +10 -0
  311. package/dist/sources/index.js +10 -0
  312. package/dist/sources/resolve.d.ts +28 -0
  313. package/dist/sources/resolve.js +47 -0
  314. package/dist/sources/truncate-utf8.d.ts +7 -0
  315. package/dist/sources/truncate-utf8.js +18 -0
  316. package/dist/sources/types.d.ts +71 -0
  317. package/dist/sources/types.js +26 -0
  318. package/dist/testing/fetch-stub.d.ts +32 -0
  319. package/dist/testing/fetch-stub.js +24 -0
  320. package/dist/themes/image.d.ts +18 -0
  321. package/dist/themes/image.js +117 -0
  322. package/dist/themes/index.d.ts +4 -0
  323. package/dist/themes/index.js +4 -0
  324. package/dist/themes/installer.d.ts +50 -0
  325. package/dist/themes/installer.js +290 -0
  326. package/dist/themes/manifest.d.ts +102 -0
  327. package/dist/themes/manifest.js +86 -0
  328. package/dist/themes/paths.d.ts +14 -0
  329. package/dist/themes/paths.js +33 -0
  330. package/dist/tool-system/browser-bridge.d.ts +53 -11
  331. package/dist/tool-system/browser-bridge.js +8 -9
  332. package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
  333. package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
  334. package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
  335. package/dist/tool-system/builtin/agent-notifications.js +291 -101
  336. package/dist/tool-system/builtin/agent-output-file.js +1 -3
  337. package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
  338. package/dist/tool-system/builtin/agent-progress.js +83 -0
  339. package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
  340. package/dist/tool-system/builtin/agent-registry.js +178 -9
  341. package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
  342. package/dist/tool-system/builtin/agent.d.ts +2 -0
  343. package/dist/tool-system/builtin/agent.js +279 -34
  344. package/dist/tool-system/builtin/background-jobs.d.ts +63 -7
  345. package/dist/tool-system/builtin/background-jobs.js +111 -15
  346. package/dist/tool-system/builtin/background-work.d.ts +12 -1
  347. package/dist/tool-system/builtin/background-work.js +12 -1
  348. package/dist/tool-system/builtin/bash.d.ts +3 -5
  349. package/dist/tool-system/builtin/bash.js +14 -6
  350. package/dist/tool-system/builtin/browser-tools.d.ts +8 -5
  351. package/dist/tool-system/builtin/browser-tools.js +89 -23
  352. package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
  353. package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
  354. package/dist/tool-system/builtin/edit.d.ts +2 -1
  355. package/dist/tool-system/builtin/edit.js +14 -10
  356. package/dist/tool-system/builtin/file-cache.d.ts +2 -0
  357. package/dist/tool-system/builtin/file-cache.js +4 -0
  358. package/dist/tool-system/builtin/generate-image.js +17 -10
  359. package/dist/tool-system/builtin/generate-video.d.ts +4 -0
  360. package/dist/tool-system/builtin/generate-video.js +164 -28
  361. package/dist/tool-system/builtin/glob.d.ts +2 -1
  362. package/dist/tool-system/builtin/glob.js +28 -3
  363. package/dist/tool-system/builtin/grep.d.ts +1 -0
  364. package/dist/tool-system/builtin/grep.js +82 -17
  365. package/dist/tool-system/builtin/image-uploader.js +7 -1
  366. package/dist/tool-system/builtin/index.d.ts +57 -18
  367. package/dist/tool-system/builtin/index.js +280 -167
  368. package/dist/tool-system/builtin/memory.d.ts +6 -0
  369. package/dist/tool-system/builtin/memory.js +36 -15
  370. package/dist/tool-system/builtin/panel.d.ts +9 -0
  371. package/dist/tool-system/builtin/panel.js +314 -0
  372. package/dist/tool-system/builtin/read.js +5 -1
  373. package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
  374. package/dist/tool-system/builtin/send-message-to-session.js +67 -0
  375. package/dist/tool-system/builtin/sources.d.ts +8 -0
  376. package/dist/tool-system/builtin/sources.js +137 -0
  377. package/dist/tool-system/builtin/tool-search.js +7 -2
  378. package/dist/tool-system/builtin/update-automation-memory.js +2 -0
  379. package/dist/tool-system/builtin/video-providers.d.ts +12 -15
  380. package/dist/tool-system/builtin/video-providers.js +1 -0
  381. package/dist/tool-system/builtin/view-image.d.ts +2 -2
  382. package/dist/tool-system/builtin/web-fetch.js +60 -15
  383. package/dist/tool-system/builtin/web-search.js +1 -3
  384. package/dist/tool-system/builtin/write.d.ts +2 -1
  385. package/dist/tool-system/builtin/write.js +14 -4
  386. package/dist/tool-system/capability-module.d.ts +93 -0
  387. package/dist/tool-system/capability-module.js +53 -0
  388. package/dist/tool-system/context.d.ts +94 -24
  389. package/dist/tool-system/executor.js +99 -58
  390. package/dist/tool-system/external-tool-exposure.d.ts +60 -0
  391. package/dist/tool-system/external-tool-exposure.js +304 -0
  392. package/dist/tool-system/mcp-manager.d.ts +17 -1
  393. package/dist/tool-system/mcp-manager.js +72 -7
  394. package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
  395. package/dist/tool-system/mcp-tool-policy.js +34 -0
  396. package/dist/tool-system/panel-bridge.d.ts +53 -0
  397. package/dist/tool-system/panel-bridge.js +1 -0
  398. package/dist/tool-system/path-policy.d.ts +19 -0
  399. package/dist/tool-system/path-policy.js +62 -1
  400. package/dist/tool-system/permission.d.ts +69 -3
  401. package/dist/tool-system/permission.js +429 -30
  402. package/dist/tool-system/registry.d.ts +15 -3
  403. package/dist/tool-system/registry.js +82 -40
  404. package/dist/tool-system/sandbox/index.js +3 -8
  405. package/dist/tool-system/sandbox/seatbelt.js +2 -6
  406. package/dist/tool-system/session-tool-host.d.ts +139 -0
  407. package/dist/tool-system/session-tool-host.js +167 -0
  408. package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
  409. package/dist/tool-system/testing/tool-registry-harness.js +51 -0
  410. package/dist/tool-system/validation.d.ts +14 -7
  411. package/dist/tool-system/validation.js +701 -7
  412. package/dist/types.d.ts +201 -20
  413. package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
  414. package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
  415. package/dist/utils/file-mutex.d.ts +65 -0
  416. package/dist/utils/file-mutex.js +145 -0
  417. package/dist/utils/json.d.ts +2 -4
  418. package/dist/utils/json.js +2 -4
  419. package/dist/utils/lockfile.d.ts +30 -1
  420. package/dist/utils/lockfile.js +2 -2
  421. package/dist/utils/secret-scrubber.d.ts +8 -0
  422. package/dist/utils/secret-scrubber.js +227 -0
  423. package/dist/utils/toolDisplay.js +1 -1
  424. package/package.json +20 -5
  425. package/THIRD_PARTY_NOTICES.md +0 -206
  426. package/dist/arena/arena.d.ts +0 -43
  427. package/dist/arena/arena.js +0 -333
  428. package/dist/arena/context/context-tools.d.ts +0 -16
  429. package/dist/arena/context/context-tools.js +0 -272
  430. package/dist/arena/context/within-root.d.ts +0 -7
  431. package/dist/arena/context/within-root.js +0 -15
  432. package/dist/arena/detect-mode.d.ts +0 -20
  433. package/dist/arena/detect-mode.js +0 -78
  434. package/dist/arena/digest-builder.d.ts +0 -25
  435. package/dist/arena/digest-builder.js +0 -120
  436. package/dist/arena/index.d.ts +0 -29
  437. package/dist/arena/index.js +0 -29
  438. package/dist/arena/iterate/convergence.d.ts +0 -25
  439. package/dist/arena/iterate/convergence.js +0 -103
  440. package/dist/arena/iterate/formats/index.d.ts +0 -22
  441. package/dist/arena/iterate/formats/index.js +0 -283
  442. package/dist/arena/iterate/index.d.ts +0 -11
  443. package/dist/arena/iterate/index.js +0 -9
  444. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  445. package/dist/arena/iterate/iterative-arena.js +0 -237
  446. package/dist/arena/iterate/parse.d.ts +0 -42
  447. package/dist/arena/iterate/parse.js +0 -123
  448. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  449. package/dist/arena/iterate/phases/argue.js +0 -165
  450. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  451. package/dist/arena/iterate/phases/revise.js +0 -62
  452. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  453. package/dist/arena/iterate/phases/tournament.js +0 -113
  454. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  455. package/dist/arena/iterate/tools/web-tools.js +0 -54
  456. package/dist/arena/iterate/types.d.ts +0 -152
  457. package/dist/arena/iterate/types.js +0 -8
  458. package/dist/arena/ledger.d.ts +0 -47
  459. package/dist/arena/ledger.js +0 -159
  460. package/dist/arena/lenses/architecture.d.ts +0 -5
  461. package/dist/arena/lenses/architecture.js +0 -22
  462. package/dist/arena/lenses/engineering.d.ts +0 -5
  463. package/dist/arena/lenses/engineering.js +0 -22
  464. package/dist/arena/lenses/general.d.ts +0 -5
  465. package/dist/arena/lenses/general.js +0 -20
  466. package/dist/arena/lenses/index.d.ts +0 -16
  467. package/dist/arena/lenses/index.js +0 -47
  468. package/dist/arena/lenses/product.d.ts +0 -5
  469. package/dist/arena/lenses/product.js +0 -22
  470. package/dist/arena/model-presets.d.ts +0 -23
  471. package/dist/arena/model-presets.js +0 -44
  472. package/dist/arena/phases/adjudication.d.ts +0 -24
  473. package/dist/arena/phases/adjudication.js +0 -141
  474. package/dist/arena/phases/build-consensus.d.ts +0 -29
  475. package/dist/arena/phases/build-consensus.js +0 -83
  476. package/dist/arena/phases/claim-registry.d.ts +0 -26
  477. package/dist/arena/phases/claim-registry.js +0 -60
  478. package/dist/arena/phases/cross-review.d.ts +0 -45
  479. package/dist/arena/phases/cross-review.js +0 -218
  480. package/dist/arena/phases/debate-rounds.d.ts +0 -27
  481. package/dist/arena/phases/debate-rounds.js +0 -159
  482. package/dist/arena/phases/participant-research.d.ts +0 -38
  483. package/dist/arena/phases/participant-research.js +0 -314
  484. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
  485. package/dist/arena/phases/planning-detail-expansion.js +0 -119
  486. package/dist/arena/planner.d.ts +0 -27
  487. package/dist/arena/planner.js +0 -311
  488. package/dist/arena/providers/docs.d.ts +0 -7
  489. package/dist/arena/providers/docs.js +0 -111
  490. package/dist/arena/providers/git.d.ts +0 -8
  491. package/dist/arena/providers/git.js +0 -174
  492. package/dist/arena/providers/index.d.ts +0 -32
  493. package/dist/arena/providers/index.js +0 -132
  494. package/dist/arena/providers/none.d.ts +0 -7
  495. package/dist/arena/providers/none.js +0 -11
  496. package/dist/arena/providers/repo.d.ts +0 -7
  497. package/dist/arena/providers/repo.js +0 -258
  498. package/dist/arena/render/session.d.ts +0 -17
  499. package/dist/arena/render/session.js +0 -190
  500. package/dist/arena/render/terminal.d.ts +0 -34
  501. package/dist/arena/render/terminal.js +0 -286
  502. package/dist/arena/strategies/discussion.d.ts +0 -25
  503. package/dist/arena/strategies/discussion.js +0 -143
  504. package/dist/arena/strategies/index.d.ts +0 -15
  505. package/dist/arena/strategies/index.js +0 -28
  506. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  507. package/dist/arena/strategies/language-wrapper.js +0 -102
  508. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  509. package/dist/arena/strategies/lens-wrapper.js +0 -236
  510. package/dist/arena/strategies/planning.d.ts +0 -30
  511. package/dist/arena/strategies/planning.js +0 -225
  512. package/dist/arena/strategies/review.d.ts +0 -26
  513. package/dist/arena/strategies/review.js +0 -168
  514. package/dist/arena/strategies/utils.d.ts +0 -36
  515. package/dist/arena/strategies/utils.js +0 -603
  516. package/dist/arena/tools/selector.d.ts +0 -17
  517. package/dist/arena/tools/selector.js +0 -61
  518. package/dist/arena/transitions.d.ts +0 -53
  519. package/dist/arena/transitions.js +0 -97
  520. package/dist/arena/types.d.ts +0 -514
  521. package/dist/arena/types.js +0 -27
  522. package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
  523. package/dist/cc-orchestrator/agent-adapter.js +0 -143
  524. package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
  525. package/dist/cc-orchestrator/cc-capability.js +0 -53
  526. package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
  527. package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
  528. package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
  529. package/dist/cc-orchestrator/codex-session-history.js +0 -247
  530. package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
  531. package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
  532. package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
  533. package/dist/cc-orchestrator/external-agent-changes.js +0 -231
  534. package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
  535. package/dist/cc-orchestrator/external-agent-driver.js +0 -284
  536. package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
  537. package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
  538. package/dist/cc-orchestrator/index.d.ts +0 -8
  539. package/dist/cc-orchestrator/index.js +0 -8
  540. package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
  541. package/dist/cc-orchestrator/relevance-judge.js +0 -29
  542. package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
  543. package/dist/cc-orchestrator/session-discovery.js +0 -125
  544. package/dist/cc-orchestrator/session-history.d.ts +0 -54
  545. package/dist/cc-orchestrator/session-history.js +0 -150
  546. package/dist/cron/cron-runtime.d.ts +0 -2
  547. package/dist/cron/cron-runtime.js +0 -2
  548. package/dist/cron/cron-store.d.ts +0 -2
  549. package/dist/cron/cron-store.js +0 -2
  550. package/dist/cron/scheduler.d.ts +0 -7
  551. package/dist/cron/scheduler.js +0 -7
  552. package/dist/engine/goal.js +0 -206
  553. package/dist/external-agents/config.d.ts +0 -2
  554. package/dist/external-agents/config.js +0 -15
  555. package/dist/external-agents/types.d.ts +0 -31
  556. package/dist/git/parse-log.d.ts +0 -13
  557. package/dist/git/parse-log.js +0 -21
  558. package/dist/git/utils.d.ts +0 -49
  559. package/dist/git/utils.js +0 -161
  560. package/dist/git/worktree/crud.d.ts +0 -69
  561. package/dist/git/worktree/crud.js +0 -206
  562. package/dist/git/worktree/diff.d.ts +0 -14
  563. package/dist/git/worktree/diff.js +0 -82
  564. package/dist/git/worktree/git-exec.d.ts +0 -7
  565. package/dist/git/worktree/git-exec.js +0 -51
  566. package/dist/git/worktree/index.d.ts +0 -5
  567. package/dist/git/worktree/index.js +0 -5
  568. package/dist/git/worktree/query.d.ts +0 -42
  569. package/dist/git/worktree/query.js +0 -121
  570. package/dist/git/worktree/slug.d.ts +0 -11
  571. package/dist/git/worktree/slug.js +0 -58
  572. package/dist/git/worktree.d.ts +0 -1
  573. package/dist/git/worktree.js +0 -5
  574. package/dist/lsp/client.d.ts +0 -41
  575. package/dist/lsp/client.js +0 -186
  576. package/dist/lsp/manager.d.ts +0 -40
  577. package/dist/lsp/manager.js +0 -155
  578. package/dist/lsp/root-path.d.ts +0 -9
  579. package/dist/lsp/root-path.js +0 -12
  580. package/dist/lsp/servers.d.ts +0 -16
  581. package/dist/lsp/servers.js +0 -60
  582. package/dist/prompt/sections/coding.md +0 -35
  583. package/dist/quota/credentials.d.ts +0 -3
  584. package/dist/quota/credentials.js +0 -80
  585. package/dist/quota/index.d.ts +0 -36
  586. package/dist/quota/index.js +0 -155
  587. package/dist/quota/types.d.ts +0 -48
  588. package/dist/quota/types.js +0 -13
  589. package/dist/review/review-prompt.d.ts +0 -28
  590. package/dist/review/review-prompt.js +0 -81
  591. package/dist/state.d.ts +0 -160
  592. package/dist/state.js +0 -267
  593. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  594. package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
  595. package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
  596. package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
  597. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
  598. package/dist/tool-system/builtin/apply-patch/index.js +0 -105
  599. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  600. package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
  601. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  602. package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
  603. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  604. package/dist/tool-system/builtin/apply-patch/types.js +0 -13
  605. package/dist/tool-system/builtin/arena.d.ts +0 -31
  606. package/dist/tool-system/builtin/arena.js +0 -415
  607. package/dist/tool-system/builtin/brief.d.ts +0 -6
  608. package/dist/tool-system/builtin/brief.js +0 -41
  609. package/dist/tool-system/builtin/check-quota.d.ts +0 -15
  610. package/dist/tool-system/builtin/check-quota.js +0 -34
  611. package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
  612. package/dist/tool-system/builtin/drive-claude-code.js +0 -698
  613. package/dist/tool-system/builtin/lsp.d.ts +0 -7
  614. package/dist/tool-system/builtin/lsp.js +0 -144
  615. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
  616. package/dist/tool-system/builtin/notebook-edit.js +0 -127
  617. package/dist/tool-system/builtin/worktree.d.ts +0 -11
  618. package/dist/tool-system/builtin/worktree.js +0 -345
  619. /package/dist/{external-agents → links}/types.js +0 -0
  620. /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
  621. /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
@@ -1,132 +0,0 @@
1
- /**
2
- * Provider registry — evidence collectors for Arena.
3
- */
4
- import { gitProvider } from "./git.js";
5
- import { repoProvider } from "./repo.js";
6
- import { docsProvider } from "./docs.js";
7
- import { noneProvider } from "./none.js";
8
- import { logger } from "../../logging/logger.js";
9
- export { gitProvider } from "./git.js";
10
- export { repoProvider } from "./repo.js";
11
- export { docsProvider } from "./docs.js";
12
- export { noneProvider } from "./none.js";
13
- const PROVIDER_MAP = {
14
- git: gitProvider,
15
- repo: repoProvider,
16
- docs: docsProvider,
17
- web: noneProvider, // web deferred to Phase 4 — falls back to none for now
18
- none: noneProvider,
19
- };
20
- // Hard ceiling for any single provider. The repo provider can fan
21
- // out 5+ recursive greps; without this, one slow grep on a large
22
- // tree would freeze the entire arena startup. Tuned to be generous
23
- // for normal cases but tight enough that the user doesn't sit
24
- // staring at "Arena {}" for a minute.
25
- const PROVIDER_TIMEOUT_MS = 8_000;
26
- /**
27
- * Collect all evidence according to the plan's sources.
28
- * Returns unified ArenaArtifact[] and quickFacts.
29
- *
30
- * Providers run in parallel (independent of one another) with a
31
- * per-provider timeout, so a single slow source can't stall the
32
- * whole arena. Heartbeats are emitted around each provider so the
33
- * UI can show "collecting from repo..." instead of a blank pause.
34
- */
35
- export async function collectEvidence(plan, topic, options = {}) {
36
- const artifacts = [];
37
- const quickFacts = [];
38
- const seenSources = new Set();
39
- const { onProgress, signal } = options;
40
- const tasks = [];
41
- for (const sourceSpec of plan.sources) {
42
- if (seenSources.has(sourceSpec.kind))
43
- continue;
44
- seenSources.add(sourceSpec.kind);
45
- const provider = PROVIDER_MAP[sourceSpec.kind];
46
- if (!provider)
47
- continue;
48
- onProgress?.({ type: "evidence_started", source: sourceSpec.kind });
49
- tasks.push(runProviderWithTimeout(provider, plan, topic, signal));
50
- }
51
- const results = await Promise.all(tasks);
52
- for (const r of results) {
53
- artifacts.push(...r.artifacts);
54
- logger.info("arena.evidence_collected", {
55
- source: r.kind,
56
- count: r.artifacts.length,
57
- durationMs: r.durationMs,
58
- timedOut: r.timedOut || undefined,
59
- });
60
- onProgress?.({
61
- type: "evidence_collected",
62
- source: r.kind,
63
- count: r.artifacts.length,
64
- durationMs: r.durationMs,
65
- timedOut: r.timedOut,
66
- });
67
- }
68
- // Build quick facts from artifacts
69
- const branchArtifact = artifacts.find((a) => a.id === "git-branch");
70
- if (branchArtifact)
71
- quickFacts.push({ label: "Branch", value: branchArtifact.preview });
72
- const changedFilesArtifact = artifacts.find((a) => a.id === "git-changed-files");
73
- if (changedFilesArtifact?.metadata?.totalCount) {
74
- quickFacts.push({ label: "Changed Files", value: String(changedFilesArtifact.metadata.totalCount) });
75
- }
76
- const docCount = artifacts.filter((a) => a.source === "docs").length;
77
- if (docCount > 0)
78
- quickFacts.push({ label: "Documents", value: String(docCount) });
79
- quickFacts.push({ label: "Sources", value: [...seenSources].join(", ") });
80
- quickFacts.push({ label: "Lenses", value: plan.lenses.map((l) => l.name).join(", ") });
81
- return { artifacts, quickFacts };
82
- }
83
- async function runProviderWithTimeout(provider, plan, topic, signal) {
84
- const started = Date.now();
85
- let timedOut = false;
86
- // Hold the timer outside the timeout Promise so the work-winner
87
- // branch can clear it. Previously the timer kept ticking after
88
- // work resolved and fired a spurious "timeout" warn 8s later.
89
- let timer;
90
- let abortHandler;
91
- const cleanup = () => {
92
- if (timer) {
93
- clearTimeout(timer);
94
- timer = undefined;
95
- }
96
- if (abortHandler) {
97
- signal?.removeEventListener("abort", abortHandler);
98
- abortHandler = undefined;
99
- }
100
- };
101
- const work = Promise.resolve().then(() => provider.collect(plan, topic));
102
- const timeout = new Promise((resolve) => {
103
- timer = setTimeout(() => {
104
- timedOut = true;
105
- logger.warn("arena.provider.timeout", { source: provider.kind, ms: PROVIDER_TIMEOUT_MS });
106
- resolve([]);
107
- }, PROVIDER_TIMEOUT_MS);
108
- if (typeof timer.unref === "function")
109
- timer.unref();
110
- if (signal) {
111
- abortHandler = () => resolve([]);
112
- signal.addEventListener("abort", abortHandler, { once: true });
113
- }
114
- });
115
- let artifacts;
116
- try {
117
- artifacts = await Promise.race([work, timeout]);
118
- }
119
- catch (err) {
120
- logger.warn("arena.provider.error", { source: provider.kind, error: err.message });
121
- artifacts = [];
122
- }
123
- finally {
124
- cleanup();
125
- }
126
- return {
127
- kind: provider.kind,
128
- artifacts,
129
- durationMs: Date.now() - started,
130
- timedOut,
131
- };
132
- }
@@ -1,7 +0,0 @@
1
- /**
2
- * NoneProvider — returns no external evidence.
3
- * Used for pure topic discussions, brainstorming, or debates
4
- * where no external context is needed.
5
- */
6
- import type { ArenaContextProvider } from "../types.js";
7
- export declare const noneProvider: ArenaContextProvider;
@@ -1,11 +0,0 @@
1
- /**
2
- * NoneProvider — returns no external evidence.
3
- * Used for pure topic discussions, brainstorming, or debates
4
- * where no external context is needed.
5
- */
6
- export const noneProvider = {
7
- kind: "none",
8
- collect(_plan, _topic) {
9
- return [];
10
- },
11
- };
@@ -1,7 +0,0 @@
1
- /**
2
- * RepoProvider — collects evidence from the code repository:
3
- * directory trees, key files, grep results.
4
- */
5
- import type { ArenaContextProvider } from "../types.js";
6
- export declare const repoProvider: ArenaContextProvider;
7
- export declare function truncate(content: string): string;
@@ -1,258 +0,0 @@
1
- /**
2
- * RepoProvider — collects evidence from the code repository:
3
- * directory trees, key files, grep results.
4
- */
5
- import { existsSync, readFileSync, statSync } from "node:fs";
6
- import { readdir, stat } from "node:fs/promises";
7
- import { join } from "node:path";
8
- import { execFile } from "node:child_process";
9
- import { promisify } from "node:util";
10
- import { logger } from "../../logging/logger.js";
11
- const MAX_FILE_CHARS = 8_000;
12
- // Per-grep ceiling. We run up to 5 hints in parallel, so the worst-case
13
- // wall time is ~3s rather than the previous 5×10s = 50s in series.
14
- const GREP_TIMEOUT_MS = 3_000;
15
- // Hard cap on tree-walk work — large monorepos (or recursive symlinks)
16
- // could otherwise blow up readdirSync/statSync time.
17
- const MAX_TREE_NODES = 400;
18
- const execFileAsync = promisify(execFile);
19
- export const repoProvider = {
20
- kind: "repo",
21
- async collect(plan, topic) {
22
- const artifacts = [];
23
- const targets = plan.sources.find((s) => s.kind === "repo")?.targets ?? [];
24
- // Project tree overview
25
- const tree = await buildTree(".", 2);
26
- if (tree) {
27
- artifacts.push({
28
- id: "repo-tree",
29
- kind: "tree",
30
- source: "repo",
31
- title: "Project Structure",
32
- preview: tree,
33
- });
34
- }
35
- // If specific targets provided, read them
36
- for (const target of targets) {
37
- if (!existsSync(target))
38
- continue;
39
- const st = statSync(target);
40
- if (st.isDirectory()) {
41
- const dirTree = await buildTree(target, 3);
42
- if (dirTree) {
43
- artifacts.push({
44
- id: `repo-tree-${target}`,
45
- kind: "tree",
46
- source: "repo",
47
- title: `Directory: ${target}`,
48
- preview: dirTree,
49
- });
50
- }
51
- // Read entry files
52
- for (const file of (await collectEntryFiles(target)).slice(0, 3)) {
53
- const content = safeReadFile(file);
54
- if (content) {
55
- artifacts.push({
56
- id: `repo-file-${file}`,
57
- kind: "file",
58
- source: "repo",
59
- title: file,
60
- ref: file,
61
- preview: truncate(content),
62
- });
63
- }
64
- }
65
- }
66
- else {
67
- const content = safeReadFile(target);
68
- if (content) {
69
- artifacts.push({
70
- id: `repo-file-${target}`,
71
- kind: "file",
72
- source: "repo",
73
- title: target,
74
- ref: target,
75
- preview: truncate(content),
76
- });
77
- }
78
- }
79
- }
80
- // Search for topic-related files if no specific targets.
81
- // Fan out hints in parallel — the previous serial loop was the
82
- // single biggest contributor to Arena's startup latency.
83
- if (targets.length === 0) {
84
- const hints = extractSearchHints(topic).slice(0, 5);
85
- const grepResults = await Promise.all(hints.map((h) => safeGrep(h)));
86
- for (let i = 0; i < hints.length; i++) {
87
- const hint = hints[i];
88
- const result = grepResults[i] ?? "";
89
- if (!result)
90
- continue;
91
- const files = result.split("\n").filter(Boolean).slice(0, 10);
92
- for (const file of files) {
93
- if (!artifacts.some((a) => a.ref === file)) {
94
- artifacts.push({
95
- id: `repo-grep-${hint}-${file}`,
96
- kind: "grep",
97
- source: "repo",
98
- title: `Match: ${hint} → ${file}`,
99
- ref: file,
100
- preview: file,
101
- });
102
- }
103
- }
104
- }
105
- }
106
- // Recent git activity — only if git source is not already active (avoids duplicate)
107
- const hasGitSource = plan.sources.some((s) => s.kind === "git");
108
- if (!hasGitSource) {
109
- const recentLog = await gitLog();
110
- if (recentLog) {
111
- artifacts.push({
112
- id: "repo-recent-activity",
113
- kind: "doc",
114
- source: "repo",
115
- title: "Recent Git Activity",
116
- preview: recentLog,
117
- });
118
- }
119
- }
120
- logger.info("arena.provider.repo", { artifactCount: artifacts.length });
121
- return artifacts;
122
- },
123
- };
124
- async function buildTree(dir, maxDepth) {
125
- // Async + node-capped walk. The previous *Sync variant blocked the
126
- // event loop while the new collectEvidence runs providers in
127
- // parallel, partially defeating the parallelism win.
128
- const lines = [];
129
- const counter = { n: 0 };
130
- await walkTree(dir, maxDepth, 0, "", lines, counter);
131
- return lines.filter(Boolean).join("\n");
132
- }
133
- async function walkTree(dir, maxDepth, depth, prefix, out, counter) {
134
- if (depth >= maxDepth)
135
- return;
136
- if (counter.n >= MAX_TREE_NODES)
137
- return;
138
- let entries;
139
- try {
140
- entries = (await readdir(dir)).filter((e) => !e.startsWith(".") && e !== "node_modules" && e !== "dist" && e !== "__pycache__");
141
- }
142
- catch {
143
- return;
144
- }
145
- for (const entry of entries.slice(0, 30)) {
146
- if (counter.n >= MAX_TREE_NODES)
147
- return;
148
- counter.n++;
149
- const fullPath = join(dir, entry);
150
- let isDir = false;
151
- try {
152
- isDir = (await stat(fullPath)).isDirectory();
153
- }
154
- catch {
155
- continue;
156
- }
157
- out.push(`${prefix}${isDir ? "/" : ""} ${entry}`);
158
- if (isDir && depth < maxDepth - 1) {
159
- await walkTree(fullPath, maxDepth, depth + 1, prefix + " ", out, counter);
160
- }
161
- }
162
- }
163
- async function collectEntryFiles(dir) {
164
- const files = [];
165
- try {
166
- const entries = await readdir(dir);
167
- const priority = ["index.ts", "index.js", "main.ts", "main.js", "mod.ts", "__init__.py"];
168
- for (const p of priority) {
169
- if (entries.includes(p))
170
- files.push(join(dir, p));
171
- }
172
- for (const entry of entries) {
173
- const full = join(dir, entry);
174
- if (/\.(ts|js|tsx|jsx|py)$/.test(entry) && !files.includes(full)) {
175
- files.push(full);
176
- }
177
- }
178
- }
179
- catch { /* ignore */ }
180
- return files;
181
- }
182
- function safeReadFile(filePath) {
183
- try {
184
- if (!existsSync(filePath))
185
- return null;
186
- const st = statSync(filePath);
187
- if (st.size > 500_000)
188
- return null;
189
- return readFileSync(filePath, "utf-8");
190
- }
191
- catch {
192
- return null;
193
- }
194
- }
195
- export function truncate(content) {
196
- if (content.length <= MAX_FILE_CHARS)
197
- return content;
198
- const t = content.slice(0, MAX_FILE_CHARS);
199
- const lastNl = t.lastIndexOf("\n");
200
- // No newline in the window (e.g. a minified file) → lastNl is -1 and
201
- // slice(0,-1) would drop just the last char; cut at MAX_FILE_CHARS instead.
202
- const body = lastNl > 0 ? t.slice(0, lastNl) : t;
203
- return body + `\n... (truncated, ${content.length} chars total)`;
204
- }
205
- async function safeGrep(pattern) {
206
- try {
207
- const { stdout } = await execFileAsync("grep", [
208
- "-rl",
209
- "--include=*.ts", "--include=*.js", "--include=*.py", "--include=*.md",
210
- "-i", pattern, ".",
211
- ], { encoding: "utf-8", maxBuffer: 1024 * 1024, timeout: GREP_TIMEOUT_MS });
212
- return stdout.trim();
213
- }
214
- catch (err) {
215
- // grep exits 1 when there are no matches — that's the expected
216
- // "no hits" path. Anything else (signal kill on timeout, ENOENT
217
- // because grep isn't installed, permission denied, etc.) is a
218
- // real failure that the caller should know about, otherwise
219
- // Arena silently degrades with zero artifacts.
220
- const e = err;
221
- if (e?.code === 1)
222
- return "";
223
- logger.warn("arena.provider.grep_failed", {
224
- pattern,
225
- code: e?.code,
226
- killed: e?.killed,
227
- signal: e?.signal,
228
- });
229
- return "";
230
- }
231
- }
232
- async function gitLog() {
233
- try {
234
- const { stdout } = await execFileAsync("git", ["log", "--oneline", "-10"], {
235
- encoding: "utf-8",
236
- maxBuffer: 1024 * 1024,
237
- timeout: 10_000,
238
- });
239
- return stdout.trim();
240
- }
241
- catch {
242
- return "";
243
- }
244
- }
245
- function extractSearchHints(topic) {
246
- const stopWords = new Set([
247
- "the", "a", "an", "is", "are", "was", "were", "be", "been", "have", "has",
248
- "do", "does", "did", "will", "would", "could", "should", "may", "might",
249
- "to", "of", "in", "for", "on", "with", "at", "by", "from", "about",
250
- "and", "but", "or", "not", "this", "that", "my", "your", "what", "how",
251
- "review", "discuss", "plan", "help", "please", "look", "check",
252
- "一下", "看看", "帮", "我", "的", "是否", "怎么", "如何", "讨论", "规划", "审查",
253
- ]);
254
- return topic
255
- .split(/[\s,;:]+/)
256
- .map((w) => w.toLowerCase().replace(/[^a-z0-9_\-/]/g, ""))
257
- .filter((w) => w.length > 2 && !stopWords.has(w));
258
- }
@@ -1,17 +0,0 @@
1
- /**
2
- * Session renderer — formats ArenaResultV2 into markdown suitable for
3
- * displaying as assistant_text and as context for follow-up LLM turns.
4
- *
5
- * Scene-aware output order:
6
- * 1. Subject Summary — factual framing / what changed / current scope
7
- * 2. Overall assessment
8
- * 3. Roadmap (planning-first when present)
9
- * 4. Consensus sections ordered by output emphasis
10
- * 5. Next Actions
11
- * 6. Per-participant findings (collapsed)
12
- */
13
- import type { ArenaResultV2 } from "../types.js";
14
- /**
15
- * Format an ArenaResultV2 into markdown text.
16
- */
17
- export declare function formatArenaResultForSession(result: ArenaResultV2): string;
@@ -1,190 +0,0 @@
1
- /**
2
- * Session renderer — formats ArenaResultV2 into markdown suitable for
3
- * displaying as assistant_text and as context for follow-up LLM turns.
4
- *
5
- * Scene-aware output order:
6
- * 1. Subject Summary — factual framing / what changed / current scope
7
- * 2. Overall assessment
8
- * 3. Roadmap (planning-first when present)
9
- * 4. Consensus sections ordered by output emphasis
10
- * 5. Next Actions
11
- * 6. Per-participant findings (collapsed)
12
- */
13
- /**
14
- * Format an ArenaResultV2 into markdown text.
15
- */
16
- export function formatArenaResultForSession(result) {
17
- const lines = [];
18
- const modeLabel = result.mode.charAt(0).toUpperCase() + result.mode.slice(1);
19
- lines.push(`## Arena ${modeLabel} Result`);
20
- lines.push(`**Topic:** ${result.topic}`);
21
- lines.push(`**Models:** ${result.participants.join(" vs ")}`);
22
- lines.push("");
23
- const c = result.consensus;
24
- // 1. Subject Summary — factual overview (adapts label per mode)
25
- if (c.subjectSummary) {
26
- const overviewLabel = result.plan.outputShape.overviewLabel
27
- ?? (result.mode === "review" ? "What Changed"
28
- : result.mode === "planning" ? "Current Scope"
29
- : "Problem Framing");
30
- lines.push(`### ${overviewLabel}`);
31
- lines.push(c.subjectSummary);
32
- lines.push("");
33
- }
34
- // 2. Overall assessment
35
- if (c.summary) {
36
- lines.push("### Overall Assessment");
37
- lines.push(c.summary);
38
- lines.push("");
39
- }
40
- // 3. Roadmap — surfaced early for planning scenes
41
- if (result.mode === "planning" && c.roadmap.length > 0) {
42
- lines.push("### Roadmap");
43
- for (const [index, phase] of c.roadmap.entries()) {
44
- lines.push(...formatRoadmapPhase(index, phase));
45
- }
46
- lines.push("");
47
- // 3b. Implementation Details — expanded phase details
48
- if (c.roadmapDetails && c.roadmapDetails.length > 0) {
49
- lines.push("### Implementation Details");
50
- for (const detail of c.roadmapDetails) {
51
- lines.push(...formatPhaseDetail(detail));
52
- }
53
- lines.push("");
54
- }
55
- }
56
- // 4. Consensus sections ordered by output emphasis
57
- for (const section of getOrderedConsensusSections(result)) {
58
- lines.push(`### ${section.title}`);
59
- for (const item of section.items) {
60
- lines.push(`- **${item.title}**: ${item.summary}`);
61
- }
62
- lines.push("");
63
- }
64
- // 5. Roadmap for non-planning scenes
65
- if (result.mode !== "planning" && c.roadmap.length > 0) {
66
- lines.push("### Roadmap");
67
- for (const [index, phase] of c.roadmap.entries()) {
68
- lines.push(...formatRoadmapPhase(index, phase));
69
- }
70
- lines.push("");
71
- }
72
- // 6. Next Actions
73
- if (c.nextActions.length > 0) {
74
- lines.push("### Next Actions");
75
- for (const action of c.nextActions) {
76
- const pri = action.priority === "high" ? "🔴" : action.priority === "medium" ? "🟡" : "⚪";
77
- lines.push(`- ${pri} **${action.title}**: ${action.rationale}`);
78
- }
79
- lines.push("");
80
- }
81
- // 7. Per-participant findings (detail section)
82
- if (result.reports.some((r) => r.findings.length > 0)) {
83
- lines.push("---");
84
- lines.push("### Participant Findings");
85
- for (const report of result.reports) {
86
- if (report.findings.length === 0) {
87
- lines.push(`\n**${report.participant}**: ${report.contextSummary || "(no findings)"}`);
88
- continue;
89
- }
90
- lines.push(`\n**${report.participant}** (${report.findings.length} findings)`);
91
- if (report.contextSummary) {
92
- lines.push(`> ${report.contextSummary}`);
93
- }
94
- for (const f of report.findings) {
95
- const severity = f.severity ? `/${f.severity}` : "";
96
- lines.push(`- [${f.kind}${severity}] **${f.title}**: ${f.summary}`);
97
- }
98
- }
99
- }
100
- return lines.join("\n");
101
- }
102
- function formatRoadmapPhase(index, phase) {
103
- const pri = phase.priority === "high" ? "High" : phase.priority === "medium" ? "Medium" : "Low";
104
- const lines = [`#### Phase ${index + 1}: ${phase.title} (${pri} priority)`];
105
- if (phase.goal) {
106
- lines.push(`Goal: ${phase.goal}`);
107
- }
108
- if (phase.scope.length > 0) {
109
- lines.push(`Scope: ${phase.scope.join("; ")}`);
110
- }
111
- if (phase.deliverables.length > 0) {
112
- lines.push(`Deliverables: ${phase.deliverables.join("; ")}`);
113
- }
114
- if (phase.dependencies.length > 0) {
115
- lines.push(`Dependencies: ${phase.dependencies.join("; ")}`);
116
- }
117
- if (phase.risks.length > 0) {
118
- lines.push(`Risks: ${phase.risks.join("; ")}`);
119
- }
120
- if (phase.successCriteria.length > 0) {
121
- lines.push(`Success Criteria: ${phase.successCriteria.join("; ")}`);
122
- }
123
- lines.push("");
124
- return lines;
125
- }
126
- function formatPhaseDetail(detail) {
127
- const effort = detail.effort === "large" ? "Large" : detail.effort === "small" ? "Small" : "Medium";
128
- const lines = [`#### ${detail.phaseTitle} (${effort} effort)`];
129
- if (detail.objective) {
130
- lines.push(detail.objective);
131
- }
132
- if (detail.targetFiles.length > 0) {
133
- lines.push(`**Target files:** ${detail.targetFiles.map((f) => "`" + f + "`").join(", ")}`);
134
- }
135
- if (detail.codeChanges.length > 0) {
136
- lines.push("**Code changes:**");
137
- for (const change of detail.codeChanges) {
138
- lines.push(`- ${change}`);
139
- }
140
- }
141
- if (detail.interfaces.length > 0) {
142
- lines.push(`**Interfaces:** ${detail.interfaces.join("; ")}`);
143
- }
144
- if (detail.migrationSteps.length > 0) {
145
- lines.push("**Migration steps:**");
146
- for (const [i, step] of detail.migrationSteps.entries()) {
147
- lines.push(`${i + 1}. ${step}`);
148
- }
149
- }
150
- if (detail.validation.length > 0) {
151
- lines.push(`**Validation:** ${detail.validation.join("; ")}`);
152
- }
153
- if (detail.blockers.length > 0) {
154
- lines.push(`**Blockers:** ${detail.blockers.join("; ")}`);
155
- }
156
- lines.push("");
157
- return lines;
158
- }
159
- function getOrderedConsensusSections(result) {
160
- const VALID_KINDS = new Set(["strength", "improvement", "risk", "question"]);
161
- const defaultOrder = ["risk", "improvement", "strength", "question"];
162
- const emphasize = (result.plan?.outputShape?.emphasize ?? []).filter((k) => VALID_KINDS.has(k));
163
- const orderedKinds = dedupeFindingKinds([...emphasize, ...defaultOrder]);
164
- const sections = orderedKinds.map((kind) => {
165
- switch (kind) {
166
- case "strength":
167
- return { kind, title: "✓ Strengths", items: result.consensus.strengths };
168
- case "improvement":
169
- return { kind, title: "→ Improvements", items: result.consensus.improvements };
170
- case "risk":
171
- return { kind, title: "⚠ Risks", items: result.consensus.risks };
172
- case "question":
173
- return { kind, title: "? Open Questions", items: result.consensus.openQuestions };
174
- }
175
- });
176
- return sections
177
- .filter((section) => section != null)
178
- .filter((section) => section.items.length > 0);
179
- }
180
- function dedupeFindingKinds(kinds) {
181
- const seen = new Set();
182
- const result = [];
183
- for (const kind of kinds) {
184
- if (!seen.has(kind)) {
185
- seen.add(kind);
186
- result.push(kind);
187
- }
188
- }
189
- return result;
190
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Terminal renderer — renders ArenaConsensus and ArenaResultV2.
3
- *
4
- * All render functions return strings instead of printing directly,
5
- * so callers can decide where to display (ctx.addStatus vs console.log).
6
- *
7
- * Output sections:
8
- * 1. Summary
9
- * 2. Roadmap (surfaced early for planning scenes)
10
- * 3. Consensus sections ordered by output emphasis
11
- * 4. Next Actions
12
- */
13
- import { type Colorizer } from "../../colorizer.js";
14
- import type { ArenaResultV2, ArenaProgressEvent } from "../types.js";
15
- /** Output sink — callers provide this to control where text goes. */
16
- export type OutputSink = (text: string) => void;
17
- /**
18
- * Format the full arena result as a styled string.
19
- */
20
- export declare function formatArenaResult(result: ArenaResultV2, c?: Colorizer): string;
21
- /**
22
- * Print the full arena result directly to stdout.
23
- * Used by the CLI `code-shell arena` command (non-REPL).
24
- */
25
- export declare function printArenaResult(result: ArenaResultV2, c?: Colorizer): void;
26
- /**
27
- * Create a progress renderer that sends output to a sink.
28
- * For REPL: pass ctx.addStatus. For CLI: pass console.log.
29
- */
30
- export declare function createProgressRenderer(sink: OutputSink, c?: Colorizer): (event: ArenaProgressEvent) => void;
31
- /**
32
- * Legacy: direct console.log progress renderer for CLI mode.
33
- */
34
- export declare function renderProgress(event: ArenaProgressEvent, c?: Colorizer): void;