@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,84 @@
1
+ /**
2
+ * Hook registry with priority-based chain-of-responsibility execution.
3
+ */
4
+ export class HookRegistry {
5
+ hooks = new Map();
6
+ register(eventName, handler, priority = 0, name) {
7
+ if (!this.hooks.has(eventName)) {
8
+ this.hooks.set(eventName, []);
9
+ }
10
+ this.hooks.get(eventName).push({ handler, priority, name });
11
+ // Sort by priority descending (highest first)
12
+ this.hooks.get(eventName).sort((a, b) => b.priority - a.priority);
13
+ }
14
+ async emit(eventName, data = {}) {
15
+ const handlers = this.hooks.get(eventName);
16
+ if (!handlers?.length)
17
+ return {};
18
+ const ctx = { eventName, data: { ...data } };
19
+ let aggregated = {};
20
+ for (const { handler } of handlers) {
21
+ try {
22
+ const result = await handler(ctx);
23
+ if (result.data) {
24
+ ctx.data = { ...ctx.data, ...result.data };
25
+ aggregated.data = { ...aggregated.data, ...result.data };
26
+ }
27
+ if (result.messages) {
28
+ aggregated.messages = [...(aggregated.messages ?? []), ...result.messages];
29
+ }
30
+ if (result.decision) {
31
+ aggregated.decision = result.decision;
32
+ }
33
+ // Last-write-wins for input/prompt rewrites — the priority order
34
+ // already determined which handler "owns" the override.
35
+ if (result.updatedInput !== undefined) {
36
+ aggregated.updatedInput = result.updatedInput;
37
+ }
38
+ if (result.updatedPrompt !== undefined) {
39
+ aggregated.updatedPrompt = result.updatedPrompt;
40
+ }
41
+ // additionalContext is appended (multiple handlers' contributions
42
+ // are visible to the model with blank-line separators).
43
+ if (result.additionalContext !== undefined) {
44
+ aggregated.additionalContext = aggregated.additionalContext
45
+ ? `${aggregated.additionalContext}\n\n${result.additionalContext}`
46
+ : result.additionalContext;
47
+ }
48
+ if (result.stop) {
49
+ aggregated.stop = true;
50
+ break;
51
+ }
52
+ }
53
+ catch (err) {
54
+ // Hook errors should not crash the main loop
55
+ console.error(`Hook error in ${eventName}:`, err);
56
+ }
57
+ }
58
+ return aggregated;
59
+ }
60
+ hasHooks(eventName) {
61
+ return (this.hooks.get(eventName)?.length ?? 0) > 0;
62
+ }
63
+ clear(eventName) {
64
+ if (eventName) {
65
+ this.hooks.delete(eventName);
66
+ }
67
+ else {
68
+ this.hooks.clear();
69
+ }
70
+ }
71
+ listHooks() {
72
+ const result = new Map();
73
+ for (const [name, handlers] of this.hooks) {
74
+ result.set(name, handlers.map((h) => h.name ?? "(anonymous)"));
75
+ }
76
+ return result;
77
+ }
78
+ listEvents() {
79
+ return [...this.hooks.keys()];
80
+ }
81
+ countHandlers(eventName) {
82
+ return this.hooks.get(eventName)?.length ?? 0;
83
+ }
84
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * shell-runner — execute a user-configured shell command as a hook handler.
3
+ *
4
+ * Protocol (matches Claude Code's shell-hook contract):
5
+ *
6
+ * stdin JSON.stringify({ eventName, data }) — the full HookContext
7
+ * envelope, including ctx.data fields like toolName / args /
8
+ * sessionId / isSubAgent.
9
+ *
10
+ * stdout Either ignored (when exit 0 with no/blank output) or parsed
11
+ * as a HookResult JSON document. Unparseable stdout on exit 0
12
+ * is logged at warn level and dropped — we do NOT crash the
13
+ * turn loop on malformed handler output.
14
+ *
15
+ * exit 0 Normal return. Stdout (if any) becomes the HookResult.
16
+ * exit 2 Deny / block. Stderr becomes the human-readable reason and
17
+ * is surfaced to the model via HookResult.messages so the LLM
18
+ * sees why the action was rejected.
19
+ * exit * Any other non-zero code = handler error. Logged at error
20
+ * level; we return {} (no effect) so a buggy hook never wedges
21
+ * the engine.
22
+ *
23
+ * ENV (passed to child):
24
+ * CODESHELL_HOOK_EVENT — event name, also in stdin
25
+ * CODESHELL_HOOK_CWD — repo root for context-aware hooks
26
+ * (callers may add more by reading process.env directly)
27
+ *
28
+ * timeout Defaults to 60_000 ms; settings.timeout_ms overrides.
29
+ * On timeout we SIGTERM then SIGKILL, log, and return {}.
30
+ */
31
+ import type { HookContext, HookResult } from "./events.js";
32
+ import type { SettingsHookConfig } from "../types.js";
33
+ /**
34
+ * Run one shell-hook command and return the parsed HookResult. Catches
35
+ * every failure mode (spawn error, timeout, malformed JSON) and
36
+ * returns an empty result so the registry's chain keeps going.
37
+ */
38
+ export declare function runShellHook(config: SettingsHookConfig, ctx: HookContext): Promise<HookResult>;
39
+ /**
40
+ * Check whether the hook should fire for the current ctx, respecting
41
+ * the optional `matcher` regex. Returns false for non-tool events
42
+ * when matcher is set (matcher only makes sense when ctx.data has a
43
+ * toolName field).
44
+ */
45
+ export declare function shellHookMatches(config: SettingsHookConfig, ctx: HookContext): boolean;
@@ -0,0 +1,173 @@
1
+ /**
2
+ * shell-runner — execute a user-configured shell command as a hook handler.
3
+ *
4
+ * Protocol (matches Claude Code's shell-hook contract):
5
+ *
6
+ * stdin JSON.stringify({ eventName, data }) — the full HookContext
7
+ * envelope, including ctx.data fields like toolName / args /
8
+ * sessionId / isSubAgent.
9
+ *
10
+ * stdout Either ignored (when exit 0 with no/blank output) or parsed
11
+ * as a HookResult JSON document. Unparseable stdout on exit 0
12
+ * is logged at warn level and dropped — we do NOT crash the
13
+ * turn loop on malformed handler output.
14
+ *
15
+ * exit 0 Normal return. Stdout (if any) becomes the HookResult.
16
+ * exit 2 Deny / block. Stderr becomes the human-readable reason and
17
+ * is surfaced to the model via HookResult.messages so the LLM
18
+ * sees why the action was rejected.
19
+ * exit * Any other non-zero code = handler error. Logged at error
20
+ * level; we return {} (no effect) so a buggy hook never wedges
21
+ * the engine.
22
+ *
23
+ * ENV (passed to child):
24
+ * CODESHELL_HOOK_EVENT — event name, also in stdin
25
+ * CODESHELL_HOOK_CWD — repo root for context-aware hooks
26
+ * (callers may add more by reading process.env directly)
27
+ *
28
+ * timeout Defaults to 60_000 ms; settings.timeout_ms overrides.
29
+ * On timeout we SIGTERM then SIGKILL, log, and return {}.
30
+ */
31
+ import { spawn } from "node:child_process";
32
+ const DEFAULT_TIMEOUT_MS = 60_000;
33
+ /**
34
+ * Run one shell-hook command and return the parsed HookResult. Catches
35
+ * every failure mode (spawn error, timeout, malformed JSON) and
36
+ * returns an empty result so the registry's chain keeps going.
37
+ */
38
+ export async function runShellHook(config, ctx) {
39
+ const timeoutMs = config.timeout_ms ?? DEFAULT_TIMEOUT_MS;
40
+ return new Promise((resolve) => {
41
+ let child;
42
+ try {
43
+ child = spawn(config.command, [], {
44
+ shell: true,
45
+ cwd: config.cwd,
46
+ env: {
47
+ ...process.env,
48
+ CODESHELL_HOOK_EVENT: ctx.eventName,
49
+ CODESHELL_HOOK_CWD: config.cwd ?? process.cwd(),
50
+ },
51
+ });
52
+ }
53
+ catch (err) {
54
+ // eslint-disable-next-line no-console
55
+ console.error(`[hooks] spawn failed for ${config.event} command "${config.command}":`, err.message);
56
+ resolve({});
57
+ return;
58
+ }
59
+ let stdout = "";
60
+ let stderr = "";
61
+ let settled = false;
62
+ const settle = (value) => {
63
+ if (settled)
64
+ return;
65
+ settled = true;
66
+ resolve(value);
67
+ };
68
+ const timer = setTimeout(() => {
69
+ // eslint-disable-next-line no-console
70
+ console.warn(`[hooks] ${config.event} hook timed out after ${timeoutMs}ms: ${config.command}`);
71
+ try {
72
+ child.kill("SIGTERM");
73
+ // SIGKILL fallback if the process ignores SIGTERM. Short delay so
74
+ // a graceful-shutdown handler in the child has a moment to flush.
75
+ setTimeout(() => {
76
+ try {
77
+ child.kill("SIGKILL");
78
+ }
79
+ catch {
80
+ /* already exited */
81
+ }
82
+ }, 1000);
83
+ }
84
+ catch {
85
+ /* already exited */
86
+ }
87
+ settle({});
88
+ }, timeoutMs);
89
+ child.stdout?.on("data", (chunk) => {
90
+ stdout += chunk.toString("utf8");
91
+ });
92
+ child.stderr?.on("data", (chunk) => {
93
+ stderr += chunk.toString("utf8");
94
+ });
95
+ child.on("error", (err) => {
96
+ clearTimeout(timer);
97
+ // eslint-disable-next-line no-console
98
+ console.error(`[hooks] ${config.event} hook failed: ${config.command}`, err.message);
99
+ settle({});
100
+ });
101
+ child.on("close", (code) => {
102
+ clearTimeout(timer);
103
+ if (code === 0) {
104
+ const trimmed = stdout.trim();
105
+ if (trimmed.length === 0) {
106
+ settle({});
107
+ return;
108
+ }
109
+ try {
110
+ const parsed = JSON.parse(trimmed);
111
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
112
+ settle(parsed);
113
+ }
114
+ else {
115
+ settle({});
116
+ }
117
+ }
118
+ catch (err) {
119
+ // eslint-disable-next-line no-console
120
+ console.warn(`[hooks] ${config.event} hook returned malformed JSON, ignoring:`, err.message, "\nstdout:", trimmed.slice(0, 200));
121
+ settle({});
122
+ }
123
+ return;
124
+ }
125
+ if (code === 2) {
126
+ const reason = stderr.trim() || "denied (exit 2)";
127
+ settle({
128
+ decision: "deny",
129
+ messages: [reason],
130
+ });
131
+ return;
132
+ }
133
+ // Other non-zero codes: handler error. Log and treat as no-op so
134
+ // the chain continues. Per CC: stderr is surfaced to the user but
135
+ // doesn't block execution.
136
+ // eslint-disable-next-line no-console
137
+ console.error(`[hooks] ${config.event} hook exited with code ${code}:`, stderr.slice(0, 500));
138
+ settle({});
139
+ });
140
+ // Write the context envelope on stdin then close.
141
+ try {
142
+ child.stdin?.write(JSON.stringify({ eventName: ctx.eventName, data: ctx.data }));
143
+ child.stdin?.end();
144
+ }
145
+ catch (err) {
146
+ // eslint-disable-next-line no-console
147
+ console.error(`[hooks] failed to write stdin for ${config.event}:`, err.message);
148
+ settle({});
149
+ }
150
+ });
151
+ }
152
+ /**
153
+ * Check whether the hook should fire for the current ctx, respecting
154
+ * the optional `matcher` regex. Returns false for non-tool events
155
+ * when matcher is set (matcher only makes sense when ctx.data has a
156
+ * toolName field).
157
+ */
158
+ export function shellHookMatches(config, ctx) {
159
+ if (!config.matcher)
160
+ return true;
161
+ const toolName = ctx.data.toolName;
162
+ if (typeof toolName !== "string")
163
+ return false;
164
+ try {
165
+ return new RegExp(config.matcher).test(toolName);
166
+ }
167
+ catch {
168
+ // Bad regex in user config — log once, treat as non-matching.
169
+ // eslint-disable-next-line no-console
170
+ console.warn(`[hooks] invalid matcher "${config.matcher}" for ${config.event}; skipping`);
171
+ return false;
172
+ }
173
+ }
@@ -0,0 +1,117 @@
1
+ /**
2
+ * code-shell — general-purpose agent orchestration framework
3
+ *
4
+ * Public API exports.
5
+ */
6
+ export declare const VERSION = "0.5.0-rc.0";
7
+ export type { Message, ContentBlock, ToolDefinition, ToolCall, ToolResult, RegisteredTool, TranscriptEvent, TranscriptEventType, SessionState, SessionStatus, TokenUsage, CompiledInput, PermissionDecision, PermissionMode, PermissionRule, TurnPhase, TurnResult, TerminalReason, StreamEvent, StreamCallback, LLMConfig, LLMResponse, Settings, MCPServerConfig, } from "./types.js";
8
+ export { FrameworkError, LLMError, LLMRateLimitError, ContextLimitError, ToolError, ToolNotFoundError, ToolExecutionError, ToolTimeoutError, PermissionDeniedError, SessionError, TranscriptError, ConfigError, SandboxUnavailableError, } from "./exceptions.js";
9
+ export { Engine } from "./engine/engine.js";
10
+ export type { EngineConfig, EngineHookConfig, EngineResult } from "./engine/engine.js";
11
+ export type { CostStateStore, CostStateSnapshot } from "./engine/cost-store.js";
12
+ export { EngineRuntime } from "./engine/runtime.js";
13
+ export type { EngineRuntimeOptions } from "./engine/runtime.js";
14
+ export { ChatSessionManager } from "./protocol/chat-session-manager.js";
15
+ export type { ChatSessionManagerOptions } from "./protocol/chat-session-manager.js";
16
+ export { LLMClientBase } from "./llm/client-base.js";
17
+ export { createLLMClient, registerProvider } from "./llm/client-factory.js";
18
+ export { AnthropicClient } from "./llm/providers/anthropic.js";
19
+ export { OpenAIClient } from "./llm/providers/openai.js";
20
+ export { ModelPool, type ModelEntry } from "./llm/model-pool.js";
21
+ export { ToolRegistry } from "./tool-system/registry.js";
22
+ export { ToolExecutor } from "./tool-system/executor.js";
23
+ export { PermissionClassifier, HeadlessApprovalBackend, AutoApprovalBackend } from "./tool-system/permission.js";
24
+ export type { ApprovalBackend } from "./tool-system/permission.js";
25
+ export { BUILTIN_TOOLS } from "./tool-system/builtin/index.js";
26
+ export { MCPManager } from "./tool-system/mcp-manager.js";
27
+ export type { AskUserFn } from "./tool-system/builtin/ask-user.js";
28
+ export type { Task, TaskStatus } from "./tool-system/builtin/task.js";
29
+ export { HookRegistry } from "./hooks/registry.js";
30
+ export type { HookEventName, HookContext, HookResult } from "./hooks/events.js";
31
+ export { wrapHookMessages } from "./hooks/inject.js";
32
+ export { AgentServer, type AgentServerOptions } from "./protocol/server.js";
33
+ export { AgentClient, type BackgroundAgentCompletedHandler } from "./protocol/client.js";
34
+ export { createInProcessTransport, StdioTransport, type Transport, } from "./protocol/transport.js";
35
+ export { createServer, createClient, type CreateServerOptions, type CreateClientOptions, type ServerHandle, } from "./protocol/factories.js";
36
+ export { Methods, ErrorCodes, type RpcMessage, type RunResult, } from "./protocol/types.js";
37
+ export { Transcript } from "./session/transcript.js";
38
+ export { SessionManager } from "./session/session-manager.js";
39
+ export { FileHistory } from "./session/file-history.js";
40
+ export { MemoryManager } from "./session/memory.js";
41
+ export type { MemoryEntry } from "./session/memory.js";
42
+ export type { FileSnapshot } from "./session/file-history.js";
43
+ export { PromptComposer } from "./prompt/composer.js";
44
+ export { SectionCache } from "./prompt/section-cache.js";
45
+ export { scanInstructions, combineInstructions } from "./prompt/instruction-scanner.js";
46
+ export { BUILTIN_AGENT_PRESETS, DEFAULT_AGENT_PRESET, DEFAULT_CLI_PRESET, resolveAgentPreset, resolveBuiltinToolNames, buildPresetSystemPrompt, registerPreset, listPresetNames, } from "./preset/index.js";
47
+ export type { AgentPreset, AgentPresetName } from "./preset/index.js";
48
+ export { loadSection, loadSections, availableSections, registerSection } from "./prompt/section-loader.js";
49
+ export { ContextManager } from "./context/manager.js";
50
+ export { estimateTokens, microcompact, windowCompact, truncateToolResult, buildSummarizationPrompt, applySummaryCompaction, COMPACTABLE_TOOL_NAMES, } from "./context/compaction.js";
51
+ export type { MicrocompactOptions } from "./context/compaction.js";
52
+ export type { SummarizeFn, CompactStrategy, OnCompactFn, ContextManagerConfig, } from "./context/manager.js";
53
+ export { applyToolResultPersistence, createContentReplacementState, reconstructContentReplacementState, resolveToolResultsDir, isPersistedReplacement, DEFAULT_PERSIST_THRESHOLD, PER_MESSAGE_AGGREGATE_CAP, PREVIEW_SIZE, } from "./context/tool-result-storage.js";
54
+ export type { ContentReplacementState } from "./context/tool-result-storage.js";
55
+ export { scanSkills, invalidateSkillCache } from "./skills/index.js";
56
+ export type { SkillDefinition } from "./skills/index.js";
57
+ export { Arena } from "./arena/arena.js";
58
+ export { MODEL_PRESETS, getMaxOutputTokens } from "./arena/model-presets.js";
59
+ export type { ModelPreset } from "./arena/model-presets.js";
60
+ export { detectArenaMode } from "./arena/detect-mode.js";
61
+ export { getStrategy, getStrategyForPlan, ReviewStrategy, DiscussionStrategy, PlanningStrategy } from "./arena/strategies/index.js";
62
+ export { planArena } from "./arena/planner.js";
63
+ export { collectEvidence } from "./arena/providers/index.js";
64
+ export { selectTools, hasTools } from "./arena/tools/selector.js";
65
+ export { ArenaLedger } from "./arena/ledger.js";
66
+ export { registerClaims, selectClaimsForReview } from "./arena/phases/claim-registry.js";
67
+ export { buildDigest, formatDigest } from "./arena/digest-builder.js";
68
+ export { transitionClaim, resolveClaimStatus, markUnderReview, applyReviewResult, markUnresolved, isTerminal, validTransitions } from "./arena/transitions.js";
69
+ export type { ArenaConfig, ArenaMode, ArenaResultV2, ArenaStrategy, ArenaParticipant, ArenaBaseContext, ArenaFinding, FindingReview, ParticipantReport, ArenaConsensus, ArenaConsensusItem, ArenaRoadmapPhase, ArenaProgressEvent, ArenaPlan, ArenaLens, ArenaLensName, ArenaSourceKind, ArenaArtifact, ArenaQuickFact, FindingKind, PeerVerdict, ToolTrace, EvidencePacket, FindingEvidenceLink, ResearchDossier, ClaimStatus, ClaimRecord, ClaimChallenge, ClaimAdjudication, RequestedCheck, DebateRound, DebateTurn, TargetedCheckTask, SharedResearchLedger, RoundResearchDigest, ArenaExecutionLimits, } from "./arena/types.js";
70
+ export { IterativeArena, defaultIterateConvergence, iterateDiffRatio, iterateCodeFormat, iterateDocumentFormat, getIterateFormat, } from "./arena/index.js";
71
+ export type { IterateConfig, IterateResult, IterateSubject, IterateFormat, IterateProgressEvent, IterateFormatPack, Draft, DraftCandidate, Critique, CritiqueCategory, CritiqueEvidence, CritiqueSeverity, ConvergenceSignal, Round, AuthorRotation, StoppedReason, CheckpointFn, CheckpointContext, CheckpointAction, } from "./arena/index.js";
72
+ export { RunManager, type RunManagerConfig, type RunStore, FileRunStore, RunQueue, EngineRunner, type EngineRunnerConfig, type RunExecutionHandle, type RunExecutor, type CustomToolEntry, RunApprovalBackend, createRunAskUserFn, type RunLifecycleHooks, CheckpointWriter, ArtifactTracker, RunLock, Heartbeat, NoopEvaluator, CompositeEvaluator, type Evaluator, type EvaluatorResult, type EvaluatorContext, type RunStatus, type RunSnapshot, type RunEvent, type RunCheckpoint, type RunApproval, type RunArtifactRef, type SubmitRunInput, type ResumeRunInput, type ListRunsQuery, type RunStreamEvent, type RunStreamCallback, type DetachFn, VALID_TRANSITIONS, createRunManager, type CreateRunManagerOptions, } from "./run/index.js";
73
+ export { defineProduct, type ProductDefinition, type ProductPreset, type ProductAdapter, type ProductContract, type CustomTool, type ProductRuntimeOptions, type ProductInstance, } from "./product/index.js";
74
+ export { logger } from "./logging/logger.js";
75
+ export { SettingsManager } from "./settings/manager.js";
76
+ export { SettingsSchema, validateSettings } from "./settings/schema.js";
77
+ export { getSessionId, switchSession, getOriginalCwd, setOriginalCwd, getProjectRoot, setProjectRoot, getCwdState, getIsInteractive, updateLastInteractionTime, flushInteractionTime, markScrollActivity, type AttributedCounter, type ChannelEntry, } from "./state.js";
78
+ export { getGraphemeSegmenter, firstGrapheme, lastGrapheme, getWordSegmenter, getRelativeTimeFormat, getTimeZone, getSystemLocaleLanguage, } from "./utils/intl.js";
79
+ export { env } from "./utils/env.js";
80
+ export { default as sliceAnsi } from "./utils/sliceAnsi.js";
81
+ export { execFileNoThrow } from "./utils/execFileNoThrow.js";
82
+ export { gte } from "./utils/semver.js";
83
+ export { logForDebugging } from "./utils/debug.js";
84
+ export { isEnvTruthy, isEnvDefinedFalsy, getClaudeConfigHomeDir, isBareMode, parseEnvVars, shouldMaintainProjectWorkingDir, isRunningOnHomespace, getAWSRegion, getDefaultVertexRegion, getVertexRegionForModel, isInProtectedNamespace, } from "./utils/envUtils.js";
85
+ export { startCapturingEarlyInput, stopCapturingEarlyInput, consumeEarlyInput, hasEarlyInput, seedEarlyInput, isCapturingEarlyInput, } from "./utils/earlyInput.js";
86
+ export { formatBytes, formatToolArgs, singleLine, MAX_LINE_WIDTH, TOOL_DOT_COLORS, } from "./utils/toolDisplay.js";
87
+ export { formatDuration, formatTokens } from "./utils/format.js";
88
+ export { getTheme, type Theme, type ThemeName, type ThemeSetting, } from "./utils/theme.js";
89
+ export { resolveThemeSetting, type SystemTheme } from "./utils/systemTheme.js";
90
+ export { rotateLogs } from "./logging/logger.js";
91
+ export { recordUIEvent } from "./logging/session-recorder.js";
92
+ export { CostTracker, costTracker, installCostTracking } from "./cost-tracker.js";
93
+ export { NOOP_COLORIZER, type Colorizer } from "./colorizer.js";
94
+ export { hasApiKey, resolveApiKey, appendOnboardingResult, detectEnvKeys, saveArenaSettingsByKeys, type OnboardingResult, } from "./onboarding.js";
95
+ export { getCurrentVersion, checkForUpdate, scheduleAutoInstallOnExit, getUpdateAvailable, getAutoUpdateDisabledReason, type UpdateInfo, } from "./updater.js";
96
+ export { isGitRepo, getCurrentBranch, getGitStatus, getGitDiff, getGitDiffStat, getGitLog, gitAdd, gitCommit, gitListBranches, gitCheckout, ghAvailable, ghPrComments, } from "./git/utils.js";
97
+ export { getInteractiveApprovalBackend } from "./tool-system/permission.js";
98
+ export { defaultSandboxConfig, type SandboxConfig, } from "./tool-system/sandbox/index.js";
99
+ export { buildNotificationMessage, buildNotificationSummary, notificationQueue, agentNotificationBus, notificationItemToStreamEvent, } from "./tool-system/builtin/agent-notifications.js";
100
+ export type { BackgroundAgentCompletedEvent } from "./types.js";
101
+ export { asyncAgentRegistry, type AsyncAgentEntry, } from "./tool-system/builtin/agent-registry.js";
102
+ export { createInProcessClient } from "./protocol/helpers.js";
103
+ export type { ProtocolModelEntry } from "./protocol/types.js";
104
+ export { formatArenaResult, printArenaResult, renderProgress, createProgressRenderer, type OutputSink, } from "./arena/render/terminal.js";
105
+ export { formatArenaResultForSession } from "./arena/render/session.js";
106
+ export { installPlugin, uninstallPlugin, listInstalled, } from "./plugins/pluginInstaller.js";
107
+ export { addMarketplace, removeMarketplace, listMarketplaces, } from "./plugins/marketplaceManager.js";
108
+ export { parseMarketplaceInput, deriveMarketplaceName, } from "./plugins/parseMarketplaceInput.js";
109
+ export { scanPluginCommands, type PluginCommand, } from "./plugins/pluginCommandsLoader.js";
110
+ export { type CachedModel, defaultCacheDir, } from "./llm/model-cache.js";
111
+ export { fetchModelList, type FetchResult, } from "./llm/model-fetcher.js";
112
+ export { sanitizeApiKey, hasNonAsciiPrintable, } from "./llm/api-key-sanitize.js";
113
+ export { PROVIDER_KINDS, type ProviderKindName, } from "./llm/provider-kinds.js";
114
+ export { capabilitiesFor, type Capability, } from "./llm/capabilities/index.js";
115
+ export { type ProviderConfig } from "./llm/provider-catalog.js";
116
+ export { syncOpenRouterCatalog, getOpenRouterSnapshot, } from "./data/openrouter-sync.js";
117
+ export type { ApprovalRequest, ApprovalResult, ApprovalScope, TaskInfo, } from "./types.js";
package/dist/index.js ADDED
@@ -0,0 +1,145 @@
1
+ /**
2
+ * code-shell — general-purpose agent orchestration framework
3
+ *
4
+ * Public API exports.
5
+ */
6
+ export const VERSION = "0.5.0-rc.0";
7
+ // ─── Exceptions ──────────────────────────────────────────────────
8
+ export { FrameworkError, LLMError, LLMRateLimitError, ContextLimitError, ToolError, ToolNotFoundError, ToolExecutionError, ToolTimeoutError, PermissionDeniedError, SessionError, TranscriptError, ConfigError, SandboxUnavailableError, } from "./exceptions.js";
9
+ // ─── Engine (primary API) ────────────────────────────────────────
10
+ export { Engine } from "./engine/engine.js";
11
+ export { EngineRuntime } from "./engine/runtime.js";
12
+ export { ChatSessionManager } from "./protocol/chat-session-manager.js";
13
+ // ─── LLM ─────────────────────────────────────────────────────────
14
+ export { LLMClientBase } from "./llm/client-base.js";
15
+ export { createLLMClient, registerProvider } from "./llm/client-factory.js";
16
+ export { AnthropicClient } from "./llm/providers/anthropic.js";
17
+ export { OpenAIClient } from "./llm/providers/openai.js";
18
+ export { ModelPool } from "./llm/model-pool.js";
19
+ // ─── Tools ───────────────────────────────────────────────────────
20
+ export { ToolRegistry } from "./tool-system/registry.js";
21
+ export { ToolExecutor } from "./tool-system/executor.js";
22
+ export { PermissionClassifier, HeadlessApprovalBackend, AutoApprovalBackend } from "./tool-system/permission.js";
23
+ export { BUILTIN_TOOLS } from "./tool-system/builtin/index.js";
24
+ export { MCPManager } from "./tool-system/mcp-manager.js";
25
+ // ─── Hooks ───────────────────────────────────────────────────────
26
+ export { HookRegistry } from "./hooks/registry.js";
27
+ export { wrapHookMessages } from "./hooks/inject.js";
28
+ // ─── Protocol (client/server + transports) ──────────────────────
29
+ export { AgentServer } from "./protocol/server.js";
30
+ export { AgentClient } from "./protocol/client.js";
31
+ export { createInProcessTransport, StdioTransport, } from "./protocol/transport.js";
32
+ // Recommended public factories — see protocol/factories.ts for the
33
+ // stable construction contract referenced by standard §7.
34
+ export { createServer, createClient, } from "./protocol/factories.js";
35
+ export { Methods, ErrorCodes, } from "./protocol/types.js";
36
+ // ─── Session ─────────────────────────────────────────────────────
37
+ export { Transcript } from "./session/transcript.js";
38
+ export { SessionManager } from "./session/session-manager.js";
39
+ export { FileHistory } from "./session/file-history.js";
40
+ export { MemoryManager } from "./session/memory.js";
41
+ // ─── Prompt ──────────────────────────────────────────────────────
42
+ export { PromptComposer } from "./prompt/composer.js";
43
+ export { SectionCache } from "./prompt/section-cache.js";
44
+ export { scanInstructions, combineInstructions } from "./prompt/instruction-scanner.js";
45
+ // ─── Presets ─────────────────────────────────────────────────────
46
+ export { BUILTIN_AGENT_PRESETS, DEFAULT_AGENT_PRESET, DEFAULT_CLI_PRESET, resolveAgentPreset, resolveBuiltinToolNames, buildPresetSystemPrompt, registerPreset, listPresetNames, } from "./preset/index.js";
47
+ export { loadSection, loadSections, availableSections, registerSection } from "./prompt/section-loader.js";
48
+ // ─── Context ─────────────────────────────────────────────────────
49
+ export { ContextManager } from "./context/manager.js";
50
+ export { estimateTokens, microcompact, windowCompact, truncateToolResult, buildSummarizationPrompt, applySummaryCompaction, COMPACTABLE_TOOL_NAMES, } from "./context/compaction.js";
51
+ export { applyToolResultPersistence, createContentReplacementState, reconstructContentReplacementState, resolveToolResultsDir, isPersistedReplacement, DEFAULT_PERSIST_THRESHOLD, PER_MESSAGE_AGGREGATE_CAP, PREVIEW_SIZE, } from "./context/tool-result-storage.js";
52
+ // ─── Skills ──────────────────────────────────────────────────────
53
+ export { scanSkills, invalidateSkillCache } from "./skills/index.js";
54
+ // ─── Arena ───────────────────────────────────────────────────────
55
+ export { Arena } from "./arena/arena.js";
56
+ export { MODEL_PRESETS, getMaxOutputTokens } from "./arena/model-presets.js";
57
+ export { detectArenaMode } from "./arena/detect-mode.js";
58
+ export { getStrategy, getStrategyForPlan, ReviewStrategy, DiscussionStrategy, PlanningStrategy } from "./arena/strategies/index.js";
59
+ export { planArena } from "./arena/planner.js";
60
+ export { collectEvidence } from "./arena/providers/index.js";
61
+ export { selectTools, hasTools } from "./arena/tools/selector.js";
62
+ export { ArenaLedger } from "./arena/ledger.js";
63
+ export { registerClaims, selectClaimsForReview } from "./arena/phases/claim-registry.js";
64
+ export { buildDigest, formatDigest } from "./arena/digest-builder.js";
65
+ export { transitionClaim, resolveClaimStatus, markUnderReview, applyReviewResult, markUnresolved, isTerminal, validTransitions } from "./arena/transitions.js";
66
+ // ─── Arena: Iterate mode ────────────────────────────────────────
67
+ // Multi-model authoring loop (tournament v1 → critique-revise rounds).
68
+ // Use IterativeArena to produce a draft from scratch (code, PRD, design doc);
69
+ // use Arena (above) to review an existing artifact.
70
+ export { IterativeArena, defaultIterateConvergence, iterateDiffRatio, iterateCodeFormat, iterateDocumentFormat, getIterateFormat, } from "./arena/index.js";
71
+ // ─── Run (Managed Agent Lifecycle) ──────────────────────────────
72
+ export {
73
+ // Manager
74
+ RunManager, FileRunStore,
75
+ // Queue
76
+ RunQueue,
77
+ // Runner
78
+ EngineRunner,
79
+ // Approval / Input adapters
80
+ RunApprovalBackend, createRunAskUserFn,
81
+ // Checkpoint & Artifacts
82
+ CheckpointWriter, ArtifactTracker,
83
+ // Hardening
84
+ RunLock, Heartbeat,
85
+ // Evaluator
86
+ NoopEvaluator, CompositeEvaluator, VALID_TRANSITIONS,
87
+ // Factory
88
+ createRunManager, } from "./run/index.js";
89
+ // ─── Product (Domain-Specific Agents) ────────────────────────────
90
+ export { defineProduct, } from "./product/index.js";
91
+ // ─── Logging ─────────────────────────────────────────────────────
92
+ export { logger } from "./logging/logger.js";
93
+ // ─── Settings ────────────────────────────────────────────────────
94
+ export { SettingsManager } from "./settings/manager.js";
95
+ export { SettingsSchema, validateSettings } from "./settings/schema.js";
96
+ // ─── State (runtime singletons shared with TUI) ──────────────────
97
+ export { getSessionId, switchSession, getOriginalCwd, setOriginalCwd, getProjectRoot, setProjectRoot, getCwdState, getIsInteractive, updateLastInteractionTime, flushInteractionTime, markScrollActivity, } from "./state.js";
98
+ // ─── Utils (shared primitives used by TUI) ───────────────────────
99
+ export { getGraphemeSegmenter, firstGrapheme, lastGrapheme, getWordSegmenter, getRelativeTimeFormat, getTimeZone, getSystemLocaleLanguage, } from "./utils/intl.js";
100
+ export { env } from "./utils/env.js";
101
+ export { default as sliceAnsi } from "./utils/sliceAnsi.js";
102
+ export { execFileNoThrow } from "./utils/execFileNoThrow.js";
103
+ export { gte } from "./utils/semver.js";
104
+ export { logForDebugging } from "./utils/debug.js";
105
+ export { isEnvTruthy, isEnvDefinedFalsy, getClaudeConfigHomeDir, isBareMode, parseEnvVars, shouldMaintainProjectWorkingDir, isRunningOnHomespace, getAWSRegion, getDefaultVertexRegion, getVertexRegionForModel, isInProtectedNamespace, } from "./utils/envUtils.js";
106
+ export { startCapturingEarlyInput, stopCapturingEarlyInput, consumeEarlyInput, hasEarlyInput, seedEarlyInput, isCapturingEarlyInput, } from "./utils/earlyInput.js";
107
+ export { formatBytes, formatToolArgs, singleLine, MAX_LINE_WIDTH, TOOL_DOT_COLORS, } from "./utils/toolDisplay.js";
108
+ export { formatDuration, formatTokens } from "./utils/format.js";
109
+ export { getTheme, } from "./utils/theme.js";
110
+ export { resolveThemeSetting } from "./utils/systemTheme.js";
111
+ // ─── Logging (extended) ──────────────────────────────────────────
112
+ export { rotateLogs } from "./logging/logger.js";
113
+ export { recordUIEvent } from "./logging/session-recorder.js";
114
+ // ─── Cost Tracker ────────────────────────────────────────────────
115
+ export { CostTracker, costTracker, installCostTracking } from "./cost-tracker.js";
116
+ export { NOOP_COLORIZER } from "./colorizer.js";
117
+ // ─── Onboarding ──────────────────────────────────────────────────
118
+ export { hasApiKey, resolveApiKey, appendOnboardingResult, detectEnvKeys, saveArenaSettingsByKeys, } from "./onboarding.js";
119
+ // ─── Updater ─────────────────────────────────────────────────────
120
+ export { getCurrentVersion, checkForUpdate, scheduleAutoInstallOnExit, getUpdateAvailable, getAutoUpdateDisabledReason, } from "./updater.js";
121
+ // ─── Git Utilities ───────────────────────────────────────────────
122
+ export { isGitRepo, getCurrentBranch, getGitStatus, getGitDiff, getGitDiffStat, getGitLog, gitAdd, gitCommit, gitListBranches, gitCheckout, ghAvailable, ghPrComments, } from "./git/utils.js";
123
+ // ─── Tool-system (extended for TUI) ─────────────────────────────
124
+ export { getInteractiveApprovalBackend } from "./tool-system/permission.js";
125
+ export { defaultSandboxConfig, } from "./tool-system/sandbox/index.js";
126
+ export { buildNotificationMessage, buildNotificationSummary, notificationQueue, agentNotificationBus, notificationItemToStreamEvent, } from "./tool-system/builtin/agent-notifications.js";
127
+ export { asyncAgentRegistry, } from "./tool-system/builtin/agent-registry.js";
128
+ // ─── Protocol (extended for TUI) ────────────────────────────────
129
+ export { createInProcessClient } from "./protocol/helpers.js";
130
+ // ─── Arena (extended for TUI) ───────────────────────────────────
131
+ export { formatArenaResult, printArenaResult, renderProgress, createProgressRenderer, } from "./arena/render/terminal.js";
132
+ export { formatArenaResultForSession } from "./arena/render/session.js";
133
+ // ─── Plugins ─────────────────────────────────────────────────────
134
+ export { installPlugin, uninstallPlugin, listInstalled, } from "./plugins/pluginInstaller.js";
135
+ export { addMarketplace, removeMarketplace, listMarketplaces, } from "./plugins/marketplaceManager.js";
136
+ export { parseMarketplaceInput, deriveMarketplaceName, } from "./plugins/parseMarketplaceInput.js";
137
+ export { scanPluginCommands, } from "./plugins/pluginCommandsLoader.js";
138
+ // ─── LLM (extended for TUI) ─────────────────────────────────────
139
+ export { defaultCacheDir, } from "./llm/model-cache.js";
140
+ export { fetchModelList, } from "./llm/model-fetcher.js";
141
+ export { sanitizeApiKey, hasNonAsciiPrintable, } from "./llm/api-key-sanitize.js";
142
+ export { PROVIDER_KINDS, } from "./llm/provider-kinds.js";
143
+ export { capabilitiesFor, } from "./llm/capabilities/index.js";
144
+ // ─── Data ────────────────────────────────────────────────────────
145
+ export { syncOpenRouterCatalog, getOpenRouterSnapshot, } from "./data/openrouter-sync.js";
@@ -0,0 +1,22 @@
1
+ /**
2
+ * sanitizeApiKey — defensive cleanup for API keys pasted via the wizard.
3
+ *
4
+ * Windows terminals (ConPTY, legacy cmd.exe, IME-active states) are the main
5
+ * source of breakage: bracketed-paste residue, CR endings, zero-width chars
6
+ * pulled in from rich-text sources (Notion / OneNote / web pages), full-width
7
+ * spaces from CJK IME, smart quotes from word processors. None of these are
8
+ * valid in any real provider's API key, so we strip them and warn.
9
+ */
10
+ export type SanitizeResult = {
11
+ value: string;
12
+ changed: boolean;
13
+ warnings: string[];
14
+ };
15
+ export declare function sanitizeApiKey(raw: string): SanitizeResult;
16
+ /**
17
+ * Returns true when the sanitized key contains any non-ASCII-printable
18
+ * character. Real provider keys are uniformly ASCII (`[A-Za-z0-9_\-.]`-ish),
19
+ * so a stray non-ASCII char almost certainly means the user pasted the wrong
20
+ * thing (e.g. the surrounding sentence in Chinese).
21
+ */
22
+ export declare function hasNonAsciiPrintable(s: string): boolean;