@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,24 @@
1
+ const ANSI_RE = /\x1b\[[0-9;?]*[A-Za-z]/g;
2
+ const BOX_RE = /[─━│┃┌┐└┘├┤┬┴┼╔╗╚╝═║╠╣╦╩╬▀▄█▌▐░▒▓·]+/g;
3
+ export function detectPastedNoise(task) {
4
+ const original = task.length;
5
+ if (original < 10)
6
+ return { isNoise: false, reason: "short", cleaned: task };
7
+ const stripped = task
8
+ .replace(ANSI_RE, "")
9
+ .replace(BOX_RE, "")
10
+ .replace(/\r/g, "\n")
11
+ .trim();
12
+ if (stripped.length === 0) {
13
+ return { isNoise: true, reason: "all ANSI/box chars", cleaned: stripped };
14
+ }
15
+ const signalRatio = stripped.length / original;
16
+ if (signalRatio < 0.3 && original > 100) {
17
+ return {
18
+ isNoise: true,
19
+ reason: `signal/noise ratio ${(signalRatio * 100).toFixed(0)}%`,
20
+ cleaned: stripped,
21
+ };
22
+ }
23
+ return { isNoise: false, reason: "ok", cleaned: stripped };
24
+ }
@@ -0,0 +1,93 @@
1
+ export type Theme = {
2
+ autoAccept: string;
3
+ bashBorder: string;
4
+ claude: string;
5
+ claudeShimmer: string;
6
+ claudeBlue_FOR_SYSTEM_SPINNER: string;
7
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: string;
8
+ permission: string;
9
+ permissionShimmer: string;
10
+ planMode: string;
11
+ ide: string;
12
+ promptBorder: string;
13
+ promptBorderShimmer: string;
14
+ text: string;
15
+ inverseText: string;
16
+ inactive: string;
17
+ inactiveShimmer: string;
18
+ subtle: string;
19
+ suggestion: string;
20
+ remember: string;
21
+ background: string;
22
+ success: string;
23
+ error: string;
24
+ warning: string;
25
+ merged: string;
26
+ warningShimmer: string;
27
+ diffAdded: string;
28
+ diffRemoved: string;
29
+ diffAddedDimmed: string;
30
+ diffRemovedDimmed: string;
31
+ diffAddedWord: string;
32
+ diffRemovedWord: string;
33
+ red_FOR_SUBAGENTS_ONLY: string;
34
+ blue_FOR_SUBAGENTS_ONLY: string;
35
+ green_FOR_SUBAGENTS_ONLY: string;
36
+ yellow_FOR_SUBAGENTS_ONLY: string;
37
+ purple_FOR_SUBAGENTS_ONLY: string;
38
+ orange_FOR_SUBAGENTS_ONLY: string;
39
+ pink_FOR_SUBAGENTS_ONLY: string;
40
+ cyan_FOR_SUBAGENTS_ONLY: string;
41
+ professionalBlue: string;
42
+ chromeYellow: string;
43
+ clawd_body: string;
44
+ clawd_background: string;
45
+ userMessageBackground: string;
46
+ userMessageBackgroundHover: string;
47
+ /** Message-actions selection. Cool shift toward `suggestion` blue; distinct from default AND userMessageBackground. */
48
+ messageActionsBackground: string;
49
+ /** Text-selection highlight background (alt-screen mouse selection). Solid
50
+ * bg that REPLACES the cell's bg while preserving its fg — matches native
51
+ * terminal selection. Previously SGR-7 inverse (swapped fg/bg per cell),
52
+ * which fragmented badly over syntax highlighting. */
53
+ selectionBg: string;
54
+ bashMessageBackgroundColor: string;
55
+ memoryBackgroundColor: string;
56
+ rate_limit_fill: string;
57
+ rate_limit_empty: string;
58
+ fastMode: string;
59
+ fastModeShimmer: string;
60
+ briefLabelYou: string;
61
+ briefLabelClaude: string;
62
+ rainbow_red: string;
63
+ rainbow_orange: string;
64
+ rainbow_yellow: string;
65
+ rainbow_green: string;
66
+ rainbow_blue: string;
67
+ rainbow_indigo: string;
68
+ rainbow_violet: string;
69
+ rainbow_red_shimmer: string;
70
+ rainbow_orange_shimmer: string;
71
+ rainbow_yellow_shimmer: string;
72
+ rainbow_green_shimmer: string;
73
+ rainbow_blue_shimmer: string;
74
+ rainbow_indigo_shimmer: string;
75
+ rainbow_violet_shimmer: string;
76
+ };
77
+ export declare const THEME_NAMES: readonly ["dark", "light", "light-daltonized", "dark-daltonized", "light-ansi", "dark-ansi"];
78
+ /** A renderable theme. Always resolvable to a concrete color palette. */
79
+ export type ThemeName = (typeof THEME_NAMES)[number];
80
+ export declare const THEME_SETTINGS: readonly ["auto", "dark", "light", "light-daltonized", "dark-daltonized", "light-ansi", "dark-ansi"];
81
+ /**
82
+ * A theme preference as stored in user config. `'auto'` follows the system
83
+ * dark/light mode and is resolved to a ThemeName at runtime.
84
+ */
85
+ export type ThemeSetting = (typeof THEME_SETTINGS)[number];
86
+ export declare function getTheme(themeName: ThemeName): Theme;
87
+ /**
88
+ * Converts a theme color to an ANSI escape sequence for use with asciichart.
89
+ *
90
+ * Apple Terminal doesn't handle 24-bit (true-color) escape sequences well, so
91
+ * on that terminal we downgrade to the nearest xterm-256 color index instead.
92
+ */
93
+ export declare function themeColorToAnsi(themeColor: string): string;
@@ -0,0 +1,544 @@
1
+ import { env } from './env.js';
2
+ export const THEME_NAMES = [
3
+ 'dark',
4
+ 'light',
5
+ 'light-daltonized',
6
+ 'dark-daltonized',
7
+ 'light-ansi',
8
+ 'dark-ansi',
9
+ ];
10
+ export const THEME_SETTINGS = ['auto', ...THEME_NAMES];
11
+ /**
12
+ * Light theme using explicit RGB values to avoid inconsistencies
13
+ * from users' custom terminal ANSI color definitions
14
+ */
15
+ const lightTheme = {
16
+ autoAccept: 'rgb(135,0,255)', // Electric violet
17
+ bashBorder: 'rgb(255,0,135)', // Vibrant pink
18
+ claude: 'rgb(215,119,87)', // Claude orange
19
+ claudeShimmer: 'rgb(245,149,117)', // Lighter claude orange for shimmer effect
20
+ claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(87,105,247)', // Medium blue for system spinner
21
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(117,135,255)', // Lighter blue for system spinner shimmer
22
+ permission: 'rgb(87,105,247)', // Medium blue
23
+ permissionShimmer: 'rgb(137,155,255)', // Lighter blue for shimmer effect
24
+ planMode: 'rgb(0,102,102)', // Muted teal
25
+ ide: 'rgb(71,130,200)', // Muted blue
26
+ promptBorder: 'rgb(153,153,153)', // Medium gray
27
+ promptBorderShimmer: 'rgb(183,183,183)', // Lighter gray for shimmer effect
28
+ text: 'rgb(0,0,0)', // Black
29
+ inverseText: 'rgb(255,255,255)', // White
30
+ inactive: 'rgb(102,102,102)', // Dark gray
31
+ inactiveShimmer: 'rgb(142,142,142)', // Lighter gray for shimmer effect
32
+ subtle: 'rgb(175,175,175)', // Light gray
33
+ suggestion: 'rgb(87,105,247)', // Medium blue
34
+ remember: 'rgb(0,0,255)', // Blue
35
+ background: 'rgb(0,153,153)', // Cyan
36
+ success: 'rgb(44,122,57)', // Green
37
+ error: 'rgb(171,43,63)', // Red
38
+ warning: 'rgb(150,108,30)', // Amber
39
+ merged: 'rgb(135,0,255)', // Electric violet (matches autoAccept)
40
+ warningShimmer: 'rgb(200,158,80)', // Lighter amber for shimmer effect
41
+ diffAdded: 'rgb(105,219,124)', // Light green
42
+ diffRemoved: 'rgb(255,168,180)', // Light red
43
+ diffAddedDimmed: 'rgb(199,225,203)', // Very light green
44
+ diffRemovedDimmed: 'rgb(253,210,216)', // Very light red
45
+ diffAddedWord: 'rgb(47,157,68)', // Medium green
46
+ diffRemovedWord: 'rgb(209,69,75)', // Medium red
47
+ // Agent colors
48
+ red_FOR_SUBAGENTS_ONLY: 'rgb(220,38,38)', // Red 600
49
+ blue_FOR_SUBAGENTS_ONLY: 'rgb(37,99,235)', // Blue 600
50
+ green_FOR_SUBAGENTS_ONLY: 'rgb(22,163,74)', // Green 600
51
+ yellow_FOR_SUBAGENTS_ONLY: 'rgb(202,138,4)', // Yellow 600
52
+ purple_FOR_SUBAGENTS_ONLY: 'rgb(147,51,234)', // Purple 600
53
+ orange_FOR_SUBAGENTS_ONLY: 'rgb(234,88,12)', // Orange 600
54
+ pink_FOR_SUBAGENTS_ONLY: 'rgb(219,39,119)', // Pink 600
55
+ cyan_FOR_SUBAGENTS_ONLY: 'rgb(8,145,178)', // Cyan 600
56
+ // Grove colors
57
+ professionalBlue: 'rgb(106,155,204)',
58
+ // Chrome colors
59
+ chromeYellow: 'rgb(251,188,4)', // Chrome yellow
60
+ // TUI V2 colors
61
+ clawd_body: 'rgb(215,119,87)',
62
+ clawd_background: 'rgb(0,0,0)',
63
+ userMessageBackground: 'rgb(240, 240, 240)', // Slightly darker grey for optimal contrast
64
+ userMessageBackgroundHover: 'rgb(252, 252, 252)', // ≥250 to quantize distinct from base at 256-color level
65
+ messageActionsBackground: 'rgb(232, 236, 244)', // cool gray — darker than userMsg 240 (visible on white), slight blue toward `suggestion`
66
+ selectionBg: 'rgb(180, 213, 255)', // classic light-mode selection blue (macOS/VS Code-ish); dark fgs stay readable
67
+ bashMessageBackgroundColor: 'rgb(250, 245, 250)',
68
+ memoryBackgroundColor: 'rgb(230, 245, 250)',
69
+ rate_limit_fill: 'rgb(87,105,247)', // Medium blue
70
+ rate_limit_empty: 'rgb(39,47,111)', // Dark blue
71
+ fastMode: 'rgb(255,106,0)', // Electric orange
72
+ fastModeShimmer: 'rgb(255,150,50)', // Lighter orange for shimmer
73
+ // Brief/assistant mode
74
+ briefLabelYou: 'rgb(37,99,235)', // Blue
75
+ briefLabelClaude: 'rgb(215,119,87)', // Brand orange
76
+ rainbow_red: 'rgb(235,95,87)',
77
+ rainbow_orange: 'rgb(245,139,87)',
78
+ rainbow_yellow: 'rgb(250,195,95)',
79
+ rainbow_green: 'rgb(145,200,130)',
80
+ rainbow_blue: 'rgb(130,170,220)',
81
+ rainbow_indigo: 'rgb(155,130,200)',
82
+ rainbow_violet: 'rgb(200,130,180)',
83
+ rainbow_red_shimmer: 'rgb(250,155,147)',
84
+ rainbow_orange_shimmer: 'rgb(255,185,137)',
85
+ rainbow_yellow_shimmer: 'rgb(255,225,155)',
86
+ rainbow_green_shimmer: 'rgb(185,230,180)',
87
+ rainbow_blue_shimmer: 'rgb(180,205,240)',
88
+ rainbow_indigo_shimmer: 'rgb(195,180,230)',
89
+ rainbow_violet_shimmer: 'rgb(230,180,210)',
90
+ };
91
+ /**
92
+ * Light ANSI theme using only the 16 standard ANSI colors
93
+ * for terminals without true color support
94
+ */
95
+ const lightAnsiTheme = {
96
+ autoAccept: 'ansi:magenta',
97
+ bashBorder: 'ansi:magenta',
98
+ claude: 'ansi:redBright',
99
+ claudeShimmer: 'ansi:yellowBright',
100
+ claudeBlue_FOR_SYSTEM_SPINNER: 'ansi:blue',
101
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'ansi:blueBright',
102
+ permission: 'ansi:blue',
103
+ permissionShimmer: 'ansi:blueBright',
104
+ planMode: 'ansi:cyan',
105
+ ide: 'ansi:blueBright',
106
+ promptBorder: 'ansi:white',
107
+ promptBorderShimmer: 'ansi:whiteBright',
108
+ text: 'ansi:black',
109
+ inverseText: 'ansi:white',
110
+ inactive: 'ansi:blackBright',
111
+ inactiveShimmer: 'ansi:white',
112
+ subtle: 'ansi:blackBright',
113
+ suggestion: 'ansi:blue',
114
+ remember: 'ansi:blue',
115
+ background: 'ansi:cyan',
116
+ success: 'ansi:green',
117
+ error: 'ansi:red',
118
+ warning: 'ansi:yellow',
119
+ merged: 'ansi:magenta',
120
+ warningShimmer: 'ansi:yellowBright',
121
+ diffAdded: 'ansi:green',
122
+ diffRemoved: 'ansi:red',
123
+ diffAddedDimmed: 'ansi:green',
124
+ diffRemovedDimmed: 'ansi:red',
125
+ diffAddedWord: 'ansi:greenBright',
126
+ diffRemovedWord: 'ansi:redBright',
127
+ // Agent colors
128
+ red_FOR_SUBAGENTS_ONLY: 'ansi:red',
129
+ blue_FOR_SUBAGENTS_ONLY: 'ansi:blue',
130
+ green_FOR_SUBAGENTS_ONLY: 'ansi:green',
131
+ yellow_FOR_SUBAGENTS_ONLY: 'ansi:yellow',
132
+ purple_FOR_SUBAGENTS_ONLY: 'ansi:magenta',
133
+ orange_FOR_SUBAGENTS_ONLY: 'ansi:redBright',
134
+ pink_FOR_SUBAGENTS_ONLY: 'ansi:magentaBright',
135
+ cyan_FOR_SUBAGENTS_ONLY: 'ansi:cyan',
136
+ // Grove colors
137
+ professionalBlue: 'ansi:blueBright',
138
+ // Chrome colors
139
+ chromeYellow: 'ansi:yellow', // Chrome yellow
140
+ // TUI V2 colors
141
+ clawd_body: 'ansi:redBright',
142
+ clawd_background: 'ansi:black',
143
+ userMessageBackground: 'ansi:white',
144
+ userMessageBackgroundHover: 'ansi:whiteBright',
145
+ messageActionsBackground: 'ansi:white',
146
+ selectionBg: 'ansi:cyan', // lighter named bg for light-ansi; dark fgs stay readable
147
+ bashMessageBackgroundColor: 'ansi:whiteBright',
148
+ memoryBackgroundColor: 'ansi:white',
149
+ rate_limit_fill: 'ansi:yellow',
150
+ rate_limit_empty: 'ansi:black',
151
+ fastMode: 'ansi:red',
152
+ fastModeShimmer: 'ansi:redBright',
153
+ briefLabelYou: 'ansi:blue',
154
+ briefLabelClaude: 'ansi:redBright',
155
+ rainbow_red: 'ansi:red',
156
+ rainbow_orange: 'ansi:redBright',
157
+ rainbow_yellow: 'ansi:yellow',
158
+ rainbow_green: 'ansi:green',
159
+ rainbow_blue: 'ansi:cyan',
160
+ rainbow_indigo: 'ansi:blue',
161
+ rainbow_violet: 'ansi:magenta',
162
+ rainbow_red_shimmer: 'ansi:redBright',
163
+ rainbow_orange_shimmer: 'ansi:yellow',
164
+ rainbow_yellow_shimmer: 'ansi:yellowBright',
165
+ rainbow_green_shimmer: 'ansi:greenBright',
166
+ rainbow_blue_shimmer: 'ansi:cyanBright',
167
+ rainbow_indigo_shimmer: 'ansi:blueBright',
168
+ rainbow_violet_shimmer: 'ansi:magentaBright',
169
+ };
170
+ /**
171
+ * Dark ANSI theme using only the 16 standard ANSI colors
172
+ * for terminals without true color support
173
+ */
174
+ const darkAnsiTheme = {
175
+ autoAccept: 'ansi:magentaBright',
176
+ bashBorder: 'ansi:magentaBright',
177
+ claude: 'ansi:redBright',
178
+ claudeShimmer: 'ansi:yellowBright',
179
+ claudeBlue_FOR_SYSTEM_SPINNER: 'ansi:blueBright',
180
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'ansi:blueBright',
181
+ permission: 'ansi:blueBright',
182
+ permissionShimmer: 'ansi:blueBright',
183
+ planMode: 'ansi:cyanBright',
184
+ ide: 'ansi:blue',
185
+ promptBorder: 'ansi:white',
186
+ promptBorderShimmer: 'ansi:whiteBright',
187
+ text: 'ansi:whiteBright',
188
+ inverseText: 'ansi:black',
189
+ inactive: 'ansi:white',
190
+ inactiveShimmer: 'ansi:whiteBright',
191
+ subtle: 'ansi:white',
192
+ suggestion: 'ansi:blueBright',
193
+ remember: 'ansi:blueBright',
194
+ background: 'ansi:cyanBright',
195
+ success: 'ansi:greenBright',
196
+ error: 'ansi:redBright',
197
+ warning: 'ansi:yellowBright',
198
+ merged: 'ansi:magentaBright',
199
+ warningShimmer: 'ansi:yellowBright',
200
+ diffAdded: 'ansi:green',
201
+ diffRemoved: 'ansi:red',
202
+ diffAddedDimmed: 'ansi:green',
203
+ diffRemovedDimmed: 'ansi:red',
204
+ diffAddedWord: 'ansi:greenBright',
205
+ diffRemovedWord: 'ansi:redBright',
206
+ // Agent colors
207
+ red_FOR_SUBAGENTS_ONLY: 'ansi:redBright',
208
+ blue_FOR_SUBAGENTS_ONLY: 'ansi:blueBright',
209
+ green_FOR_SUBAGENTS_ONLY: 'ansi:greenBright',
210
+ yellow_FOR_SUBAGENTS_ONLY: 'ansi:yellowBright',
211
+ purple_FOR_SUBAGENTS_ONLY: 'ansi:magentaBright',
212
+ orange_FOR_SUBAGENTS_ONLY: 'ansi:redBright',
213
+ pink_FOR_SUBAGENTS_ONLY: 'ansi:magentaBright',
214
+ cyan_FOR_SUBAGENTS_ONLY: 'ansi:cyanBright',
215
+ // Grove colors
216
+ professionalBlue: 'rgb(106,155,204)',
217
+ // Chrome colors
218
+ chromeYellow: 'ansi:yellowBright', // Chrome yellow
219
+ // TUI V2 colors
220
+ clawd_body: 'ansi:redBright',
221
+ clawd_background: 'ansi:black',
222
+ userMessageBackground: 'ansi:blackBright',
223
+ userMessageBackgroundHover: 'ansi:white',
224
+ messageActionsBackground: 'ansi:blackBright',
225
+ selectionBg: 'ansi:blue', // darker named bg for dark-ansi; bright fgs stay readable
226
+ bashMessageBackgroundColor: 'ansi:black',
227
+ memoryBackgroundColor: 'ansi:blackBright',
228
+ rate_limit_fill: 'ansi:yellow',
229
+ rate_limit_empty: 'ansi:white',
230
+ fastMode: 'ansi:redBright',
231
+ fastModeShimmer: 'ansi:redBright',
232
+ briefLabelYou: 'ansi:blueBright',
233
+ briefLabelClaude: 'ansi:redBright',
234
+ rainbow_red: 'ansi:red',
235
+ rainbow_orange: 'ansi:redBright',
236
+ rainbow_yellow: 'ansi:yellow',
237
+ rainbow_green: 'ansi:green',
238
+ rainbow_blue: 'ansi:cyan',
239
+ rainbow_indigo: 'ansi:blue',
240
+ rainbow_violet: 'ansi:magenta',
241
+ rainbow_red_shimmer: 'ansi:redBright',
242
+ rainbow_orange_shimmer: 'ansi:yellow',
243
+ rainbow_yellow_shimmer: 'ansi:yellowBright',
244
+ rainbow_green_shimmer: 'ansi:greenBright',
245
+ rainbow_blue_shimmer: 'ansi:cyanBright',
246
+ rainbow_indigo_shimmer: 'ansi:blueBright',
247
+ rainbow_violet_shimmer: 'ansi:magentaBright',
248
+ };
249
+ /**
250
+ * Light daltonized theme (color-blind friendly) using explicit RGB values
251
+ * to avoid inconsistencies from users' custom terminal ANSI color definitions
252
+ */
253
+ const lightDaltonizedTheme = {
254
+ autoAccept: 'rgb(135,0,255)', // Electric violet
255
+ bashBorder: 'rgb(0,102,204)', // Blue instead of pink
256
+ claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia
257
+ claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect
258
+ claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(51,102,255)', // Bright blue for system spinner
259
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(101,152,255)', // Lighter bright blue for system spinner shimmer
260
+ permission: 'rgb(51,102,255)', // Bright blue
261
+ permissionShimmer: 'rgb(101,152,255)', // Lighter bright blue for shimmer
262
+ planMode: 'rgb(51,102,102)', // Muted blue-gray (works for color-blind)
263
+ ide: 'rgb(71,130,200)', // Muted blue
264
+ promptBorder: 'rgb(153,153,153)', // Medium gray
265
+ promptBorderShimmer: 'rgb(183,183,183)', // Lighter gray for shimmer
266
+ text: 'rgb(0,0,0)', // Black
267
+ inverseText: 'rgb(255,255,255)', // White
268
+ inactive: 'rgb(102,102,102)', // Dark gray
269
+ inactiveShimmer: 'rgb(142,142,142)', // Lighter gray for shimmer effect
270
+ subtle: 'rgb(175,175,175)', // Light gray
271
+ suggestion: 'rgb(51,102,255)', // Bright blue
272
+ remember: 'rgb(51,102,255)', // Bright blue
273
+ background: 'rgb(0,153,153)', // Cyan (color-blind friendly)
274
+ success: 'rgb(0,102,153)', // Blue instead of green for deuteranopia
275
+ error: 'rgb(204,0,0)', // Pure red for better distinction
276
+ warning: 'rgb(255,153,0)', // Orange adjusted for deuteranopia
277
+ merged: 'rgb(135,0,255)', // Electric violet (matches autoAccept)
278
+ warningShimmer: 'rgb(255,183,50)', // Lighter orange for shimmer
279
+ diffAdded: 'rgb(153,204,255)', // Light blue instead of green
280
+ diffRemoved: 'rgb(255,204,204)', // Light red
281
+ diffAddedDimmed: 'rgb(209,231,253)', // Very light blue
282
+ diffRemovedDimmed: 'rgb(255,233,233)', // Very light red
283
+ diffAddedWord: 'rgb(51,102,204)', // Medium blue (less intense than deep blue)
284
+ diffRemovedWord: 'rgb(153,51,51)', // Softer red (less intense than deep red)
285
+ // Agent colors (daltonism-friendly)
286
+ red_FOR_SUBAGENTS_ONLY: 'rgb(204,0,0)', // Pure red
287
+ blue_FOR_SUBAGENTS_ONLY: 'rgb(0,102,204)', // Pure blue
288
+ green_FOR_SUBAGENTS_ONLY: 'rgb(0,204,0)', // Pure green
289
+ yellow_FOR_SUBAGENTS_ONLY: 'rgb(255,204,0)', // Golden yellow
290
+ purple_FOR_SUBAGENTS_ONLY: 'rgb(128,0,128)', // True purple
291
+ orange_FOR_SUBAGENTS_ONLY: 'rgb(255,128,0)', // True orange
292
+ pink_FOR_SUBAGENTS_ONLY: 'rgb(255,102,178)', // Adjusted pink
293
+ cyan_FOR_SUBAGENTS_ONLY: 'rgb(0,178,178)', // Adjusted cyan
294
+ // Grove colors
295
+ professionalBlue: 'rgb(106,155,204)',
296
+ // Chrome colors
297
+ chromeYellow: 'rgb(251,188,4)', // Chrome yellow
298
+ // TUI V2 colors
299
+ clawd_body: 'rgb(215,119,87)',
300
+ clawd_background: 'rgb(0,0,0)',
301
+ userMessageBackground: 'rgb(220, 220, 220)', // Slightly darker grey for optimal contrast
302
+ userMessageBackgroundHover: 'rgb(232, 232, 232)', // ≥230 to quantize distinct from base at 256-color level
303
+ messageActionsBackground: 'rgb(210, 216, 226)', // cool gray — darker than userMsg 220, slight blue
304
+ selectionBg: 'rgb(180, 213, 255)', // light selection blue; daltonized fgs are yellows/blues, both readable on light blue
305
+ bashMessageBackgroundColor: 'rgb(250, 245, 250)',
306
+ memoryBackgroundColor: 'rgb(230, 245, 250)',
307
+ rate_limit_fill: 'rgb(51,102,255)', // Bright blue
308
+ rate_limit_empty: 'rgb(23,46,114)', // Dark blue
309
+ fastMode: 'rgb(255,106,0)', // Electric orange (color-blind safe)
310
+ fastModeShimmer: 'rgb(255,150,50)', // Lighter orange for shimmer
311
+ briefLabelYou: 'rgb(37,99,235)', // Blue
312
+ briefLabelClaude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia (matches claude)
313
+ rainbow_red: 'rgb(235,95,87)',
314
+ rainbow_orange: 'rgb(245,139,87)',
315
+ rainbow_yellow: 'rgb(250,195,95)',
316
+ rainbow_green: 'rgb(145,200,130)',
317
+ rainbow_blue: 'rgb(130,170,220)',
318
+ rainbow_indigo: 'rgb(155,130,200)',
319
+ rainbow_violet: 'rgb(200,130,180)',
320
+ rainbow_red_shimmer: 'rgb(250,155,147)',
321
+ rainbow_orange_shimmer: 'rgb(255,185,137)',
322
+ rainbow_yellow_shimmer: 'rgb(255,225,155)',
323
+ rainbow_green_shimmer: 'rgb(185,230,180)',
324
+ rainbow_blue_shimmer: 'rgb(180,205,240)',
325
+ rainbow_indigo_shimmer: 'rgb(195,180,230)',
326
+ rainbow_violet_shimmer: 'rgb(230,180,210)',
327
+ };
328
+ /**
329
+ * Dark theme using explicit RGB values to avoid inconsistencies
330
+ * from users' custom terminal ANSI color definitions
331
+ */
332
+ const darkTheme = {
333
+ autoAccept: 'rgb(175,135,255)', // Electric violet
334
+ bashBorder: 'rgb(253,93,177)', // Bright pink
335
+ claude: 'rgb(215,119,87)', // Claude orange
336
+ claudeShimmer: 'rgb(235,159,127)', // Lighter claude orange for shimmer effect
337
+ claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(147,165,255)', // Blue for system spinner
338
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(177,195,255)', // Lighter blue for system spinner shimmer
339
+ permission: 'rgb(177,185,249)', // Light blue-purple
340
+ permissionShimmer: 'rgb(207,215,255)', // Lighter blue-purple for shimmer
341
+ planMode: 'rgb(72,150,140)', // Muted sage green
342
+ ide: 'rgb(71,130,200)', // Muted blue
343
+ promptBorder: 'rgb(136,136,136)', // Medium gray
344
+ promptBorderShimmer: 'rgb(166,166,166)', // Lighter gray for shimmer
345
+ text: 'rgb(255,255,255)', // White
346
+ inverseText: 'rgb(0,0,0)', // Black
347
+ inactive: 'rgb(153,153,153)', // Light gray
348
+ inactiveShimmer: 'rgb(193,193,193)', // Lighter gray for shimmer effect
349
+ subtle: 'rgb(80,80,80)', // Dark gray
350
+ suggestion: 'rgb(177,185,249)', // Light blue-purple
351
+ remember: 'rgb(177,185,249)', // Light blue-purple
352
+ background: 'rgb(0,204,204)', // Bright cyan
353
+ success: 'rgb(78,186,101)', // Bright green
354
+ error: 'rgb(255,107,128)', // Bright red
355
+ warning: 'rgb(255,193,7)', // Bright amber
356
+ merged: 'rgb(175,135,255)', // Electric violet (matches autoAccept)
357
+ warningShimmer: 'rgb(255,223,57)', // Lighter amber for shimmer
358
+ diffAdded: 'rgb(34,92,43)', // Dark green
359
+ diffRemoved: 'rgb(122,41,54)', // Dark red
360
+ diffAddedDimmed: 'rgb(71,88,74)', // Very dark green
361
+ diffRemovedDimmed: 'rgb(105,72,77)', // Very dark red
362
+ diffAddedWord: 'rgb(56,166,96)', // Medium green
363
+ diffRemovedWord: 'rgb(179,89,107)', // Softer red (less intense than bright red)
364
+ // Agent colors
365
+ red_FOR_SUBAGENTS_ONLY: 'rgb(220,38,38)', // Red 600
366
+ blue_FOR_SUBAGENTS_ONLY: 'rgb(37,99,235)', // Blue 600
367
+ green_FOR_SUBAGENTS_ONLY: 'rgb(22,163,74)', // Green 600
368
+ yellow_FOR_SUBAGENTS_ONLY: 'rgb(202,138,4)', // Yellow 600
369
+ purple_FOR_SUBAGENTS_ONLY: 'rgb(147,51,234)', // Purple 600
370
+ orange_FOR_SUBAGENTS_ONLY: 'rgb(234,88,12)', // Orange 600
371
+ pink_FOR_SUBAGENTS_ONLY: 'rgb(219,39,119)', // Pink 600
372
+ cyan_FOR_SUBAGENTS_ONLY: 'rgb(8,145,178)', // Cyan 600
373
+ // Grove colors
374
+ professionalBlue: 'rgb(106,155,204)',
375
+ // Chrome colors
376
+ chromeYellow: 'rgb(251,188,4)', // Chrome yellow
377
+ // TUI V2 colors
378
+ clawd_body: 'rgb(215,119,87)',
379
+ clawd_background: 'rgb(0,0,0)',
380
+ userMessageBackground: 'rgb(55, 55, 55)', // Lighter grey for better visual contrast
381
+ userMessageBackgroundHover: 'rgb(70, 70, 70)',
382
+ messageActionsBackground: 'rgb(44, 50, 62)', // cool gray, slight blue
383
+ selectionBg: 'rgb(38, 79, 120)', // classic dark-mode selection blue (VS Code dark default); light fgs stay readable
384
+ bashMessageBackgroundColor: 'rgb(65, 60, 65)',
385
+ memoryBackgroundColor: 'rgb(55, 65, 70)',
386
+ rate_limit_fill: 'rgb(177,185,249)', // Light blue-purple
387
+ rate_limit_empty: 'rgb(80,83,112)', // Medium blue-purple
388
+ fastMode: 'rgb(255,120,20)', // Electric orange for dark bg
389
+ fastModeShimmer: 'rgb(255,165,70)', // Lighter orange for shimmer
390
+ briefLabelYou: 'rgb(122,180,232)', // Light blue
391
+ briefLabelClaude: 'rgb(215,119,87)', // Brand orange
392
+ rainbow_red: 'rgb(235,95,87)',
393
+ rainbow_orange: 'rgb(245,139,87)',
394
+ rainbow_yellow: 'rgb(250,195,95)',
395
+ rainbow_green: 'rgb(145,200,130)',
396
+ rainbow_blue: 'rgb(130,170,220)',
397
+ rainbow_indigo: 'rgb(155,130,200)',
398
+ rainbow_violet: 'rgb(200,130,180)',
399
+ rainbow_red_shimmer: 'rgb(250,155,147)',
400
+ rainbow_orange_shimmer: 'rgb(255,185,137)',
401
+ rainbow_yellow_shimmer: 'rgb(255,225,155)',
402
+ rainbow_green_shimmer: 'rgb(185,230,180)',
403
+ rainbow_blue_shimmer: 'rgb(180,205,240)',
404
+ rainbow_indigo_shimmer: 'rgb(195,180,230)',
405
+ rainbow_violet_shimmer: 'rgb(230,180,210)',
406
+ };
407
+ /**
408
+ * Dark daltonized theme (color-blind friendly) using explicit RGB values
409
+ * to avoid inconsistencies from users' custom terminal ANSI color definitions
410
+ */
411
+ const darkDaltonizedTheme = {
412
+ autoAccept: 'rgb(175,135,255)', // Electric violet
413
+ bashBorder: 'rgb(51,153,255)', // Bright blue
414
+ claude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia
415
+ claudeShimmer: 'rgb(255,183,101)', // Lighter orange for shimmer effect
416
+ claudeBlue_FOR_SYSTEM_SPINNER: 'rgb(153,204,255)', // Light blue for system spinner
417
+ claudeBlueShimmer_FOR_SYSTEM_SPINNER: 'rgb(183,224,255)', // Lighter blue for system spinner shimmer
418
+ permission: 'rgb(153,204,255)', // Light blue
419
+ permissionShimmer: 'rgb(183,224,255)', // Lighter blue for shimmer
420
+ planMode: 'rgb(102,153,153)', // Muted gray-teal (works for color-blind)
421
+ ide: 'rgb(71,130,200)', // Muted blue
422
+ promptBorder: 'rgb(136,136,136)', // Medium gray
423
+ promptBorderShimmer: 'rgb(166,166,166)', // Lighter gray for shimmer
424
+ text: 'rgb(255,255,255)', // White
425
+ inverseText: 'rgb(0,0,0)', // Black
426
+ inactive: 'rgb(153,153,153)', // Light gray
427
+ inactiveShimmer: 'rgb(193,193,193)', // Lighter gray for shimmer effect
428
+ subtle: 'rgb(80,80,80)', // Dark gray
429
+ suggestion: 'rgb(153,204,255)', // Light blue
430
+ remember: 'rgb(153,204,255)', // Light blue
431
+ background: 'rgb(0,204,204)', // Bright cyan (color-blind friendly)
432
+ success: 'rgb(51,153,255)', // Blue instead of green
433
+ error: 'rgb(255,102,102)', // Bright red
434
+ warning: 'rgb(255,204,0)', // Yellow-orange for deuteranopia
435
+ merged: 'rgb(175,135,255)', // Electric violet (matches autoAccept)
436
+ warningShimmer: 'rgb(255,234,50)', // Lighter yellow-orange for shimmer
437
+ diffAdded: 'rgb(0,68,102)', // Dark blue
438
+ diffRemoved: 'rgb(102,0,0)', // Dark red
439
+ diffAddedDimmed: 'rgb(62,81,91)', // Dimmed blue
440
+ diffRemovedDimmed: 'rgb(62,44,44)', // Dimmed red
441
+ diffAddedWord: 'rgb(0,119,179)', // Medium blue
442
+ diffRemovedWord: 'rgb(179,0,0)', // Medium red
443
+ // Agent colors (daltonism-friendly, dark mode)
444
+ red_FOR_SUBAGENTS_ONLY: 'rgb(255,102,102)', // Bright red
445
+ blue_FOR_SUBAGENTS_ONLY: 'rgb(102,178,255)', // Bright blue
446
+ green_FOR_SUBAGENTS_ONLY: 'rgb(102,255,102)', // Bright green
447
+ yellow_FOR_SUBAGENTS_ONLY: 'rgb(255,255,102)', // Bright yellow
448
+ purple_FOR_SUBAGENTS_ONLY: 'rgb(178,102,255)', // Bright purple
449
+ orange_FOR_SUBAGENTS_ONLY: 'rgb(255,178,102)', // Bright orange
450
+ pink_FOR_SUBAGENTS_ONLY: 'rgb(255,153,204)', // Bright pink
451
+ cyan_FOR_SUBAGENTS_ONLY: 'rgb(102,204,204)', // Bright cyan
452
+ // Grove colors
453
+ professionalBlue: 'rgb(106,155,204)',
454
+ // Chrome colors
455
+ chromeYellow: 'rgb(251,188,4)', // Chrome yellow
456
+ // TUI V2 colors
457
+ clawd_body: 'rgb(215,119,87)',
458
+ clawd_background: 'rgb(0,0,0)',
459
+ userMessageBackground: 'rgb(55, 55, 55)', // Lighter grey for better visual contrast
460
+ userMessageBackgroundHover: 'rgb(70, 70, 70)',
461
+ messageActionsBackground: 'rgb(44, 50, 62)', // cool gray, slight blue
462
+ selectionBg: 'rgb(38, 79, 120)', // classic dark-mode selection blue (VS Code dark default); light fgs stay readable
463
+ bashMessageBackgroundColor: 'rgb(65, 60, 65)',
464
+ memoryBackgroundColor: 'rgb(55, 65, 70)',
465
+ rate_limit_fill: 'rgb(153,204,255)', // Light blue
466
+ rate_limit_empty: 'rgb(69,92,115)', // Dark blue
467
+ fastMode: 'rgb(255,120,20)', // Electric orange for dark bg (color-blind safe)
468
+ fastModeShimmer: 'rgb(255,165,70)', // Lighter orange for shimmer
469
+ briefLabelYou: 'rgb(122,180,232)', // Light blue
470
+ briefLabelClaude: 'rgb(255,153,51)', // Orange adjusted for deuteranopia (matches claude)
471
+ rainbow_red: 'rgb(235,95,87)',
472
+ rainbow_orange: 'rgb(245,139,87)',
473
+ rainbow_yellow: 'rgb(250,195,95)',
474
+ rainbow_green: 'rgb(145,200,130)',
475
+ rainbow_blue: 'rgb(130,170,220)',
476
+ rainbow_indigo: 'rgb(155,130,200)',
477
+ rainbow_violet: 'rgb(200,130,180)',
478
+ rainbow_red_shimmer: 'rgb(250,155,147)',
479
+ rainbow_orange_shimmer: 'rgb(255,185,137)',
480
+ rainbow_yellow_shimmer: 'rgb(255,225,155)',
481
+ rainbow_green_shimmer: 'rgb(185,230,180)',
482
+ rainbow_blue_shimmer: 'rgb(180,205,240)',
483
+ rainbow_indigo_shimmer: 'rgb(195,180,230)',
484
+ rainbow_violet_shimmer: 'rgb(230,180,210)',
485
+ };
486
+ export function getTheme(themeName) {
487
+ switch (themeName) {
488
+ case 'light':
489
+ return lightTheme;
490
+ case 'light-ansi':
491
+ return lightAnsiTheme;
492
+ case 'dark-ansi':
493
+ return darkAnsiTheme;
494
+ case 'light-daltonized':
495
+ return lightDaltonizedTheme;
496
+ case 'dark-daltonized':
497
+ return darkDaltonizedTheme;
498
+ default:
499
+ return darkTheme;
500
+ }
501
+ }
502
+ /**
503
+ * Converts a theme color to an ANSI escape sequence for use with asciichart.
504
+ *
505
+ * Apple Terminal doesn't handle 24-bit (true-color) escape sequences well, so
506
+ * on that terminal we downgrade to the nearest xterm-256 color index instead.
507
+ */
508
+ export function themeColorToAnsi(themeColor) {
509
+ const rgbMatch = themeColor.match(/rgb\(\s?(\d+),\s?(\d+),\s?(\d+)\s?\)/);
510
+ if (rgbMatch) {
511
+ const r = parseInt(rgbMatch[1], 10);
512
+ const g = parseInt(rgbMatch[2], 10);
513
+ const b = parseInt(rgbMatch[3], 10);
514
+ if (env.terminal === 'Apple_Terminal') {
515
+ // Downgrade to xterm-256: SGR 38;5;<n>m
516
+ const idx = rgbToXterm256(r, g, b);
517
+ return `\x1b[38;5;${idx}m`;
518
+ }
519
+ // True-color: SGR 38;2;<r>;<g>;<b>m
520
+ return `\x1b[38;2;${r};${g};${b}m`;
521
+ }
522
+ // Fallback to magenta if parsing fails
523
+ return '\x1b[35m';
524
+ }
525
+ /**
526
+ * Nearest xterm-256 color index for an RGB triple.
527
+ * Uses the 6×6×6 color cube (indices 16-231) plus the 24-step grayscale ramp
528
+ * (indices 232-255).
529
+ */
530
+ function rgbToXterm256(r, g, b) {
531
+ // Grayscale ramp: pick it when all channels are equal-ish
532
+ if (Math.abs(r - g) < 8 && Math.abs(g - b) < 8) {
533
+ if (r < 8)
534
+ return 16;
535
+ if (r > 248)
536
+ return 231;
537
+ return Math.round((r - 8) / 247 * 24) + 232;
538
+ }
539
+ // 6×6×6 cube
540
+ const ri = Math.round(r / 255 * 5);
541
+ const gi = Math.round(g / 255 * 5);
542
+ const bi = Math.round(b / 255 * 5);
543
+ return 16 + 36 * ri + 6 * gi + bi;
544
+ }