@cjhyy/code-shell 0.2.0 → 0.5.0-rc.1

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 (432) hide show
  1. package/CHANGELOG.md +183 -0
  2. package/README.md +35 -2
  3. package/dist/cli.js +2 -0
  4. package/dist/index.d.ts +1 -67
  5. package/dist/index.js +1 -1
  6. package/package.json +25 -71
  7. package/dist/agent/coordinator.d.ts +0 -49
  8. package/dist/anthropic-OVRWAZRD.js +0 -1
  9. package/dist/arena/arena.d.ts +0 -43
  10. package/dist/arena/context/context-tools.d.ts +0 -16
  11. package/dist/arena/detect-mode.d.ts +0 -20
  12. package/dist/arena/digest-builder.d.ts +0 -25
  13. package/dist/arena/index.d.ts +0 -29
  14. package/dist/arena/index.js +0 -1
  15. package/dist/arena/iterate/convergence.d.ts +0 -25
  16. package/dist/arena/iterate/formats/index.d.ts +0 -22
  17. package/dist/arena/iterate/index.d.ts +0 -11
  18. package/dist/arena/iterate/iterative-arena.d.ts +0 -23
  19. package/dist/arena/iterate/parse.d.ts +0 -42
  20. package/dist/arena/iterate/phases/argue.d.ts +0 -22
  21. package/dist/arena/iterate/phases/revise.d.ts +0 -16
  22. package/dist/arena/iterate/phases/tournament.d.ts +0 -34
  23. package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
  24. package/dist/arena/iterate/types.d.ts +0 -152
  25. package/dist/arena/ledger.d.ts +0 -47
  26. package/dist/arena/lenses/architecture.d.ts +0 -5
  27. package/dist/arena/lenses/engineering.d.ts +0 -5
  28. package/dist/arena/lenses/general.d.ts +0 -5
  29. package/dist/arena/lenses/index.d.ts +0 -16
  30. package/dist/arena/lenses/product.d.ts +0 -5
  31. package/dist/arena/model-presets.d.ts +0 -23
  32. package/dist/arena/phases/adjudication.d.ts +0 -24
  33. package/dist/arena/phases/build-consensus.d.ts +0 -29
  34. package/dist/arena/phases/claim-registry.d.ts +0 -26
  35. package/dist/arena/phases/cross-review.d.ts +0 -45
  36. package/dist/arena/phases/debate-rounds.d.ts +0 -27
  37. package/dist/arena/phases/participant-research.d.ts +0 -38
  38. package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
  39. package/dist/arena/planner.d.ts +0 -27
  40. package/dist/arena/providers/docs.d.ts +0 -6
  41. package/dist/arena/providers/git.d.ts +0 -8
  42. package/dist/arena/providers/index.d.ts +0 -32
  43. package/dist/arena/providers/none.d.ts +0 -7
  44. package/dist/arena/providers/repo.d.ts +0 -6
  45. package/dist/arena/render/session.d.ts +0 -17
  46. package/dist/arena/render/terminal.d.ts +0 -33
  47. package/dist/arena/strategies/discussion.d.ts +0 -25
  48. package/dist/arena/strategies/index.d.ts +0 -15
  49. package/dist/arena/strategies/language-wrapper.d.ts +0 -17
  50. package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
  51. package/dist/arena/strategies/planning.d.ts +0 -30
  52. package/dist/arena/strategies/review.d.ts +0 -26
  53. package/dist/arena/strategies/utils.d.ts +0 -39
  54. package/dist/arena/tools/selector.d.ts +0 -17
  55. package/dist/arena/transitions.d.ts +0 -48
  56. package/dist/arena/types.d.ts +0 -508
  57. package/dist/arena-64T2EQD4.js +0 -3
  58. package/dist/bootstrap/setup.d.ts +0 -14
  59. package/dist/bootstrap/state.d.ts +0 -160
  60. package/dist/bwrap-PVZMLHZR.js +0 -2
  61. package/dist/chunk-2EUIMKJA.js +0 -1
  62. package/dist/chunk-2GJ7H5NC.js +0 -641
  63. package/dist/chunk-2OD6VR4N.js +0 -2
  64. package/dist/chunk-3QP5BQ3L.js +0 -1
  65. package/dist/chunk-A4M2Y42L.js +0 -2
  66. package/dist/chunk-DEYFK6FP.js +0 -1
  67. package/dist/chunk-DTPABBSV.js +0 -2
  68. package/dist/chunk-EU3J7TBP.js +0 -1
  69. package/dist/chunk-FU7AHZNN.js +0 -1
  70. package/dist/chunk-L7B2ORID.js +0 -4
  71. package/dist/chunk-M7VU4YVY.js +0 -49
  72. package/dist/chunk-MGP35GKD.js +0 -254
  73. package/dist/chunk-MLCTC53I.js +0 -1
  74. package/dist/chunk-O5HFCH2U.js +0 -1
  75. package/dist/chunk-P6JSTIFM.js +0 -1
  76. package/dist/chunk-Q3RSX66I.js +0 -1
  77. package/dist/chunk-QTWU7UNA.js +0 -5
  78. package/dist/chunk-RERBX75D.js +0 -251
  79. package/dist/chunk-SNFAPSLA.js +0 -1
  80. package/dist/chunk-T222K6IV.js +0 -18
  81. package/dist/chunk-TKJA6W36.js +0 -3
  82. package/dist/chunk-VKKU4LOM.js +0 -3
  83. package/dist/chunk-WI6FSWGU.js +0 -1
  84. package/dist/chunk-XXCZE2U2.js +0 -2
  85. package/dist/chunk-ZSAONDT6.js +0 -2
  86. package/dist/cli/commands/arena.d.ts +0 -29
  87. package/dist/cli/commands/builtin/advanced-commands.d.ts +0 -5
  88. package/dist/cli/commands/builtin/core-commands.d.ts +0 -5
  89. package/dist/cli/commands/builtin/export-md.d.ts +0 -19
  90. package/dist/cli/commands/builtin/extra-commands.d.ts +0 -6
  91. package/dist/cli/commands/builtin/git-commands.d.ts +0 -5
  92. package/dist/cli/commands/builtin/init/detect.d.ts +0 -25
  93. package/dist/cli/commands/builtin/init/index.d.ts +0 -19
  94. package/dist/cli/commands/builtin/more-commands.d.ts +0 -5
  95. package/dist/cli/commands/builtin/permissions-command.d.ts +0 -5
  96. package/dist/cli/commands/builtin/utility-commands.d.ts +0 -5
  97. package/dist/cli/commands/registry.d.ts +0 -72
  98. package/dist/cli/commands/repl.d.ts +0 -21
  99. package/dist/cli/commands/run.d.ts +0 -21
  100. package/dist/cli/commands/runs.d.ts +0 -14
  101. package/dist/cli/cost-tracker.d.ts +0 -63
  102. package/dist/cli/exit.d.ts +0 -12
  103. package/dist/cli/input/ndjson-reader.d.ts +0 -31
  104. package/dist/cli/input-compiler.d.ts +0 -5
  105. package/dist/cli/main.d.ts +0 -5
  106. package/dist/cli/main.js +0 -399
  107. package/dist/cli/migrate-models.d.ts +0 -45
  108. package/dist/cli/onboarding.d.ts +0 -189
  109. package/dist/cli/output/renderer.d.ts +0 -28
  110. package/dist/cli/output/terminal-ui.d.ts +0 -50
  111. package/dist/cli/updater.d.ts +0 -65
  112. package/dist/client-base-F5FCRSB3.js +0 -1
  113. package/dist/compaction-L3Y6NG4N.js +0 -1
  114. package/dist/context/compaction.d.ts +0 -116
  115. package/dist/context/manager.d.ts +0 -145
  116. package/dist/context/token-counter.d.ts +0 -27
  117. package/dist/context/tool-result-storage.d.ts +0 -96
  118. package/dist/cron/scheduler.d.ts +0 -34
  119. package/dist/data/openrouter-models.d.ts +0 -35
  120. package/dist/data/openrouter-sync.d.ts +0 -16
  121. package/dist/data/static-catalogs.d.ts +0 -25
  122. package/dist/devtools-SGDUOOM4.js +0 -1
  123. package/dist/engine/cost-store.d.ts +0 -22
  124. package/dist/engine/engine.d.ts +0 -207
  125. package/dist/engine/model-facade.d.ts +0 -24
  126. package/dist/engine/query.d.ts +0 -50
  127. package/dist/engine/streaming-tool-queue.d.ts +0 -34
  128. package/dist/engine/token-budget.d.ts +0 -22
  129. package/dist/engine/tool-summary.d.ts +0 -13
  130. package/dist/engine/turn-loop.d.ts +0 -97
  131. package/dist/engine/turn-state.d.ts +0 -20
  132. package/dist/exceptions.d.ts +0 -44
  133. package/dist/export-md-U72T7NW7.js +0 -22
  134. package/dist/file-history-7FQFEQOL.js +0 -1
  135. package/dist/git/utils.d.ts +0 -35
  136. package/dist/git/worktree.d.ts +0 -36
  137. package/dist/hooks/events.d.ts +0 -35
  138. package/dist/hooks/registry.d.ts +0 -15
  139. package/dist/llm/capabilities/index.d.ts +0 -20
  140. package/dist/llm/capabilities/rules.d.ts +0 -26
  141. package/dist/llm/capabilities/types.d.ts +0 -108
  142. package/dist/llm/client-base.d.ts +0 -29
  143. package/dist/llm/client-factory.d.ts +0 -10
  144. package/dist/llm/model-cache.d.ts +0 -21
  145. package/dist/llm/model-fetcher.d.ts +0 -29
  146. package/dist/llm/model-pool.d.ts +0 -84
  147. package/dist/llm/provider-catalog.d.ts +0 -32
  148. package/dist/llm/provider-kinds.d.ts +0 -21
  149. package/dist/llm/providers/anthropic.d.ts +0 -19
  150. package/dist/llm/providers/openai.d.ts +0 -41
  151. package/dist/llm/token-counter.d.ts +0 -17
  152. package/dist/llm/types.d.ts +0 -37
  153. package/dist/logging/logger.d.ts +0 -88
  154. package/dist/logging/session-recorder.d.ts +0 -90
  155. package/dist/lsp/client.d.ts +0 -41
  156. package/dist/lsp/manager.d.ts +0 -40
  157. package/dist/lsp/servers.d.ts +0 -16
  158. package/dist/manager-J6FXEUEK.js +0 -1
  159. package/dist/mcp-manager-27EVBKRT.js +0 -1
  160. package/dist/memory-BNI4WEWL.js +0 -1
  161. package/dist/model-cache-HEDXI7UJ.js +0 -1
  162. package/dist/model-fetcher-X5W5EASG.js +0 -1
  163. package/dist/native-ts/yoga-layout/enums.d.ts +0 -117
  164. package/dist/native-ts/yoga-layout/index.d.ts +0 -270
  165. package/dist/off-7SDVMMXW.js +0 -1
  166. package/dist/openai-3QEADSYL.js +0 -1
  167. package/dist/openrouter-models-GZVCRWD2.js +0 -1
  168. package/dist/openrouter-sync-WG4AG5NC.js +0 -1
  169. package/dist/plugins/loader.d.ts +0 -72
  170. package/dist/plugins/types.d.ts +0 -4
  171. package/dist/preset/index.d.ts +0 -60
  172. package/dist/product/define.d.ts +0 -60
  173. package/dist/product/index.d.ts +0 -5
  174. package/dist/product/index.js +0 -1
  175. package/dist/product/types.d.ts +0 -111
  176. package/dist/prompt/composer.d.ts +0 -42
  177. package/dist/prompt/instruction-scanner.d.ts +0 -54
  178. package/dist/prompt/section-cache.d.ts +0 -15
  179. package/dist/prompt/section-loader.d.ts +0 -26
  180. package/dist/protocol/client.d.ts +0 -64
  181. package/dist/protocol/index.d.ts +0 -4
  182. package/dist/protocol/server.d.ts +0 -51
  183. package/dist/protocol/transport.d.ts +0 -36
  184. package/dist/protocol/types.d.ts +0 -192
  185. package/dist/react-compiler-runtime-shim.d.ts +0 -1
  186. package/dist/remote/bridge.d.ts +0 -37
  187. package/dist/render/Ansi.d.ts +0 -10
  188. package/dist/render/bidi.d.ts +0 -15
  189. package/dist/render/clearTerminal.d.ts +0 -13
  190. package/dist/render/colorize.d.ts +0 -16
  191. package/dist/render/components/AlternateScreen.d.ts +0 -21
  192. package/dist/render/components/App.d.ts +0 -70
  193. package/dist/render/components/AppContext.d.ts +0 -11
  194. package/dist/render/components/Box.d.ts +0 -49
  195. package/dist/render/components/Button.d.ts +0 -36
  196. package/dist/render/components/ClockContext.d.ts +0 -9
  197. package/dist/render/components/CursorDeclarationContext.d.ts +0 -22
  198. package/dist/render/components/ErrorOverview.d.ts +0 -5
  199. package/dist/render/components/Link.d.ts +0 -7
  200. package/dist/render/components/Newline.d.ts +0 -12
  201. package/dist/render/components/NoSelect.d.ts +0 -19
  202. package/dist/render/components/RawAnsi.d.ts +0 -16
  203. package/dist/render/components/ScrollBox.d.ts +0 -78
  204. package/dist/render/components/Spacer.d.ts +0 -5
  205. package/dist/render/components/StdinContext.d.ts +0 -27
  206. package/dist/render/components/TerminalFocusContext.d.ts +0 -10
  207. package/dist/render/components/TerminalSizeContext.d.ts +0 -5
  208. package/dist/render/components/Text.d.ts +0 -55
  209. package/dist/render/constants.d.ts +0 -1
  210. package/dist/render/cursor.d.ts +0 -8
  211. package/dist/render/devtools.d.ts +0 -5
  212. package/dist/render/dom.d.ts +0 -76
  213. package/dist/render/events/click-event.d.ts +0 -31
  214. package/dist/render/events/dispatcher.d.ts +0 -40
  215. package/dist/render/events/emitter.d.ts +0 -5
  216. package/dist/render/events/event-handlers.d.ts +0 -46
  217. package/dist/render/events/event.d.ts +0 -5
  218. package/dist/render/events/focus-event.d.ts +0 -13
  219. package/dist/render/events/input-event.d.ts +0 -30
  220. package/dist/render/events/keyboard-event.d.ts +0 -19
  221. package/dist/render/events/paste-event.d.ts +0 -8
  222. package/dist/render/events/resize-event.d.ts +0 -9
  223. package/dist/render/events/terminal-event.d.ts +0 -54
  224. package/dist/render/events/terminal-focus-event.d.ts +0 -13
  225. package/dist/render/focus.d.ts +0 -43
  226. package/dist/render/frame.d.ts +0 -94
  227. package/dist/render/get-max-width.d.ts +0 -17
  228. package/dist/render/hit-test.d.ts +0 -33
  229. package/dist/render/hooks/use-animation-frame.d.ts +0 -26
  230. package/dist/render/hooks/use-app.d.ts +0 -5
  231. package/dist/render/hooks/use-declared-cursor.d.ts +0 -26
  232. package/dist/render/hooks/use-input.d.ts +0 -37
  233. package/dist/render/hooks/use-interval.d.ts +0 -18
  234. package/dist/render/hooks/use-search-highlight.d.ts +0 -30
  235. package/dist/render/hooks/use-selection.d.ts +0 -39
  236. package/dist/render/hooks/use-stdin.d.ts +0 -5
  237. package/dist/render/hooks/use-tab-status.d.ts +0 -13
  238. package/dist/render/hooks/use-terminal-focus.d.ts +0 -10
  239. package/dist/render/hooks/use-terminal-title.d.ts +0 -12
  240. package/dist/render/hooks/use-terminal-viewport.d.ts +0 -29
  241. package/dist/render/index.d.ts +0 -20
  242. package/dist/render/ink.d.ts +0 -369
  243. package/dist/render/instances.d.ts +0 -3
  244. package/dist/render/layout/engine.d.ts +0 -2
  245. package/dist/render/layout/geometry.d.ts +0 -30
  246. package/dist/render/layout/node.d.ts +0 -125
  247. package/dist/render/layout/yoga.d.ts +0 -56
  248. package/dist/render/line-width-cache.d.ts +0 -1
  249. package/dist/render/log-update.d.ts +0 -17
  250. package/dist/render/measure-element.d.ts +0 -16
  251. package/dist/render/measure-text.d.ts +0 -6
  252. package/dist/render/node-cache.d.ts +0 -20
  253. package/dist/render/optimizer.d.ts +0 -15
  254. package/dist/render/output.d.ts +0 -119
  255. package/dist/render/parse-keypress.d.ts +0 -111
  256. package/dist/render/reconciler.d.ts +0 -11
  257. package/dist/render/render-border.d.ts +0 -24
  258. package/dist/render/render-node-to-output.d.ts +0 -45
  259. package/dist/render/render-to-screen.d.ts +0 -46
  260. package/dist/render/renderer.d.ts +0 -14
  261. package/dist/render/root.d.ts +0 -74
  262. package/dist/render/screen.d.ts +0 -269
  263. package/dist/render/searchHighlight.d.ts +0 -20
  264. package/dist/render/selection.d.ts +0 -229
  265. package/dist/render/squash-text-nodes.d.ts +0 -22
  266. package/dist/render/stringWidth.d.ts +0 -1
  267. package/dist/render/styles.d.ts +0 -306
  268. package/dist/render/supports-hyperlinks.d.ts +0 -13
  269. package/dist/render/tabstops.d.ts +0 -1
  270. package/dist/render/terminal-focus-state.d.ts +0 -6
  271. package/dist/render/terminal-querier.d.ts +0 -129
  272. package/dist/render/terminal.d.ts +0 -46
  273. package/dist/render/termio/ansi.d.ts +0 -65
  274. package/dist/render/termio/csi.d.ts +0 -165
  275. package/dist/render/termio/dec.d.ts +0 -37
  276. package/dist/render/termio/esc.d.ts +0 -12
  277. package/dist/render/termio/osc.d.ts +0 -173
  278. package/dist/render/termio/parser.d.ts +0 -35
  279. package/dist/render/termio/sgr.d.ts +0 -8
  280. package/dist/render/termio/tokenize.d.ts +0 -45
  281. package/dist/render/termio/types.d.ts +0 -190
  282. package/dist/render/termio.d.ts +0 -24
  283. package/dist/render/useTerminalNotification.d.ts +0 -28
  284. package/dist/render/warn.d.ts +0 -1
  285. package/dist/render/widest-line.d.ts +0 -1
  286. package/dist/render/wrap-text.d.ts +0 -2
  287. package/dist/render/wrapAnsi.d.ts +0 -7
  288. package/dist/run/ArtifactTracker.d.ts +0 -38
  289. package/dist/run/CheckpointWriter.d.ts +0 -53
  290. package/dist/run/EngineRunner.d.ts +0 -72
  291. package/dist/run/Evaluator.d.ts +0 -56
  292. package/dist/run/FileRunStore.d.ts +0 -39
  293. package/dist/run/Heartbeat.d.ts +0 -54
  294. package/dist/run/RunApprovalBackend.d.ts +0 -53
  295. package/dist/run/RunLock.d.ts +0 -40
  296. package/dist/run/RunManager.d.ts +0 -82
  297. package/dist/run/RunQueue.d.ts +0 -27
  298. package/dist/run/RunStore.d.ts +0 -25
  299. package/dist/run/factory.d.ts +0 -63
  300. package/dist/run/index.d.ts +0 -17
  301. package/dist/run/index.js +0 -1
  302. package/dist/run/types.d.ts +0 -136
  303. package/dist/seatbelt-L54CNI2Y.js +0 -37
  304. package/dist/services/analytics.d.ts +0 -29
  305. package/dist/services/auto-dream.d.ts +0 -35
  306. package/dist/services/diagnostics.d.ts +0 -41
  307. package/dist/services/extract-memories.d.ts +0 -27
  308. package/dist/services/index.d.ts +0 -10
  309. package/dist/services/notifier.d.ts +0 -25
  310. package/dist/services/oauth.d.ts +0 -27
  311. package/dist/services/session-memory.d.ts +0 -37
  312. package/dist/session/file-history.d.ts +0 -41
  313. package/dist/session/memory.d.ts +0 -65
  314. package/dist/session/session-manager.d.ts +0 -28
  315. package/dist/session/transcript.d.ts +0 -39
  316. package/dist/session-manager-AGWS5SMJ.js +0 -1
  317. package/dist/settings/manager.d.ts +0 -36
  318. package/dist/settings/schema.d.ts +0 -1036
  319. package/dist/skills/index.d.ts +0 -7
  320. package/dist/skills/matcher.d.ts +0 -21
  321. package/dist/skills/scanner.d.ts +0 -30
  322. package/dist/tool-summary-V2B3MD5N.js +0 -2
  323. package/dist/tool-system/builtin/agent-registry.d.ts +0 -36
  324. package/dist/tool-system/builtin/agent.d.ts +0 -16
  325. package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
  326. package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -19
  327. package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
  328. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
  329. package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
  330. package/dist/tool-system/builtin/arena.d.ts +0 -31
  331. package/dist/tool-system/builtin/ask-user.d.ts +0 -20
  332. package/dist/tool-system/builtin/bash.d.ts +0 -12
  333. package/dist/tool-system/builtin/brief.d.ts +0 -6
  334. package/dist/tool-system/builtin/config.d.ts +0 -6
  335. package/dist/tool-system/builtin/cron.d.ts +0 -10
  336. package/dist/tool-system/builtin/edit.d.ts +0 -6
  337. package/dist/tool-system/builtin/file-cache.d.ts +0 -11
  338. package/dist/tool-system/builtin/glob.d.ts +0 -6
  339. package/dist/tool-system/builtin/grep.d.ts +0 -6
  340. package/dist/tool-system/builtin/index.d.ts +0 -20
  341. package/dist/tool-system/builtin/lsp.d.ts +0 -6
  342. package/dist/tool-system/builtin/mcp-tools.d.ts +0 -10
  343. package/dist/tool-system/builtin/notebook-edit.d.ts +0 -6
  344. package/dist/tool-system/builtin/plan.d.ts +0 -18
  345. package/dist/tool-system/builtin/powershell.d.ts +0 -6
  346. package/dist/tool-system/builtin/read.d.ts +0 -6
  347. package/dist/tool-system/builtin/remote-trigger.d.ts +0 -6
  348. package/dist/tool-system/builtin/repl.d.ts +0 -6
  349. package/dist/tool-system/builtin/send-message.d.ts +0 -6
  350. package/dist/tool-system/builtin/skill.d.ts +0 -6
  351. package/dist/tool-system/builtin/sleep.d.ts +0 -6
  352. package/dist/tool-system/builtin/task.d.ts +0 -51
  353. package/dist/tool-system/builtin/tool-search.d.ts +0 -11
  354. package/dist/tool-system/builtin/web-fetch.d.ts +0 -6
  355. package/dist/tool-system/builtin/web-search.d.ts +0 -6
  356. package/dist/tool-system/builtin/worktree.d.ts +0 -10
  357. package/dist/tool-system/builtin/write.d.ts +0 -6
  358. package/dist/tool-system/context.d.ts +0 -110
  359. package/dist/tool-system/executor.d.ts +0 -49
  360. package/dist/tool-system/investigation-guard.d.ts +0 -46
  361. package/dist/tool-system/mcp-manager.d.ts +0 -50
  362. package/dist/tool-system/permission.d.ts +0 -104
  363. package/dist/tool-system/registry.d.ts +0 -32
  364. package/dist/tool-system/sandbox/bwrap.d.ts +0 -13
  365. package/dist/tool-system/sandbox/index.d.ts +0 -78
  366. package/dist/tool-system/sandbox/off.d.ts +0 -2
  367. package/dist/tool-system/sandbox/seatbelt.d.ts +0 -18
  368. package/dist/tool-system/task-guard.d.ts +0 -30
  369. package/dist/tool-system/validation.d.ts +0 -5
  370. package/dist/types.d.ts +0 -321
  371. package/dist/ui/App.d.ts +0 -14
  372. package/dist/ui/components/AgentBlock.d.ts +0 -32
  373. package/dist/ui/components/AskUserPrompt.d.ts +0 -14
  374. package/dist/ui/components/BabyHand.d.ts +0 -1
  375. package/dist/ui/components/Banner.d.ts +0 -8
  376. package/dist/ui/components/CodeBlock.d.ts +0 -7
  377. package/dist/ui/components/CommandInput.d.ts +0 -13
  378. package/dist/ui/components/ContextUsageBar.d.ts +0 -7
  379. package/dist/ui/components/DiffLine.d.ts +0 -33
  380. package/dist/ui/components/DiffView.d.ts +0 -6
  381. package/dist/ui/components/DogLogo.d.ts +0 -1
  382. package/dist/ui/components/FullscreenLayout.d.ts +0 -51
  383. package/dist/ui/components/KunHead.d.ts +0 -1
  384. package/dist/ui/components/KunLogo.d.ts +0 -1
  385. package/dist/ui/components/MessageContent.d.ts +0 -26
  386. package/dist/ui/components/ModelManager.d.ts +0 -68
  387. package/dist/ui/components/ModelSelector.d.ts +0 -10
  388. package/dist/ui/components/OnboardingPrompt.d.ts +0 -16
  389. package/dist/ui/components/PermissionDialog.d.ts +0 -8
  390. package/dist/ui/components/PermissionPrompt.d.ts +0 -11
  391. package/dist/ui/components/ProviderModelFlow.d.ts +0 -58
  392. package/dist/ui/components/ScrollView.d.ts +0 -34
  393. package/dist/ui/components/SessionPicker.d.ts +0 -16
  394. package/dist/ui/components/Spinner.d.ts +0 -8
  395. package/dist/ui/components/SpinnerWithVerb.d.ts +0 -18
  396. package/dist/ui/components/StatusLine.d.ts +0 -28
  397. package/dist/ui/components/StructuredDiff.d.ts +0 -8
  398. package/dist/ui/components/TaskList.d.ts +0 -6
  399. package/dist/ui/components/TextInput.d.ts +0 -9
  400. package/dist/ui/components/ThemedBox.d.ts +0 -19
  401. package/dist/ui/components/ThemedText.d.ts +0 -26
  402. package/dist/ui/components/ToolCall.d.ts +0 -28
  403. package/dist/ui/components/UpdateBanner.d.ts +0 -1
  404. package/dist/ui/components/VirtualMessageList.d.ts +0 -24
  405. package/dist/ui/components/WelcomeTips.d.ts +0 -5
  406. package/dist/ui/hooks/useCostSummary.d.ts +0 -1
  407. package/dist/ui/index.d.ts +0 -12
  408. package/dist/ui/input-history.d.ts +0 -61
  409. package/dist/ui/onboarding-runner.d.ts +0 -2
  410. package/dist/ui/store.d.ts +0 -83
  411. package/dist/ui/terminal-renderer.d.ts +0 -45
  412. package/dist/ui/theme.d.ts +0 -36
  413. package/dist/ui/vim-mode.d.ts +0 -25
  414. package/dist/updater-OCNU2K2Z.js +0 -1
  415. package/dist/utils/debug.d.ts +0 -41
  416. package/dist/utils/earlyInput.d.ts +0 -43
  417. package/dist/utils/env.d.ts +0 -24
  418. package/dist/utils/envUtils.d.ts +0 -51
  419. package/dist/utils/execFileNoThrow.d.ts +0 -39
  420. package/dist/utils/format.d.ts +0 -44
  421. package/dist/utils/fullscreen.d.ts +0 -47
  422. package/dist/utils/intl.d.ts +0 -22
  423. package/dist/utils/lockfile.d.ts +0 -15
  424. package/dist/utils/semver.d.ts +0 -6
  425. package/dist/utils/sliceAnsi.d.ts +0 -12
  426. package/dist/utils/systemTheme.d.ts +0 -40
  427. package/dist/utils/task-sanitizer.d.ts +0 -6
  428. package/dist/utils/theme.d.ts +0 -91
  429. package/dist/utils/toolDisplay.d.ts +0 -31
  430. package/dist/utils/truncate.d.ts +0 -40
  431. package/dist/voice/index.d.ts +0 -35
  432. package/skills-builtin/codeshell-help.md +0 -135
@@ -1,97 +0,0 @@
1
- /**
2
- * Turn loop — state machine implementation.
3
- *
4
- * Following Claude Code's po_() pattern:
5
- * pre_check → model_call → post_check → tool_exec → context_mgmt → hook_notify → next turn
6
- */
7
- import type { Message, StreamCallback, TerminalReason } from "../types.js";
8
- import { ModelFacade } from "./model-facade.js";
9
- import { ToolExecutor } from "../tool-system/executor.js";
10
- import { ContextManager } from "../context/manager.js";
11
- import { HookRegistry } from "../hooks/registry.js";
12
- import { Transcript } from "../session/transcript.js";
13
- export interface TurnLoopConfig {
14
- maxTurns: number;
15
- maxToolCallsPerTurn: number;
16
- tokenBudget?: number;
17
- onStream?: StreamCallback;
18
- signal?: AbortSignal;
19
- /**
20
- * Fired after each turn boundary is recorded. Lets the engine flush an
21
- * up-to-date snapshot to state.json mid-run, so a long run doesn't leave
22
- * the on-disk turnCount/status frozen at the last completion.
23
- */
24
- onTurnBoundary?: (turnCount: number) => void;
25
- }
26
- export interface CtxOverheadStore {
27
- /** Tokens for system prompt + tool defs, derived from provider's promptTokens. */
28
- get(sid: string): number;
29
- set(sid: string, tokens: number): void;
30
- }
31
- export interface TurnLoopDeps {
32
- model: ModelFacade;
33
- toolExecutor: ToolExecutor;
34
- contextManager: ContextManager;
35
- hooks: HookRegistry;
36
- transcript: Transcript;
37
- systemPrompt: string;
38
- tools: import("../types.js").ToolDefinition[];
39
- /** Per-sid overhead cache so the ctx bar doesn't drop between turns. */
40
- ctxOverheadStore: CtxOverheadStore;
41
- /** Current session id, used to key the overhead store. */
42
- sessionId: string;
43
- }
44
- export interface TurnLoopResult {
45
- text: string;
46
- reason: TerminalReason;
47
- messages: Message[];
48
- }
49
- export declare class TurnLoop {
50
- private readonly deps;
51
- private readonly config;
52
- private turnCount;
53
- /** Tool IDs already emitted as tool_use_start during streaming (to avoid duplicates). */
54
- private streamedToolIds;
55
- /**
56
- * Turn-scoped child logger set at the top of each loop iteration. Class
57
- * methods invoked inside the iteration (callModelWithFallback,
58
- * executeToolCall, ...) read it instead of using the root `logger`, so
59
- * every line they write is tagged with the current turn/turnId.
60
- */
61
- private currentTurnLog;
62
- /** Last emitted ctx token estimate; used to skip no-op usage_update events. */
63
- private lastCtxEmit;
64
- constructor(deps: TurnLoopDeps, config: TurnLoopConfig);
65
- /**
66
- * Emit a usage_update so the UI ctx bar reflects current message-array
67
- * size. Called at every point where messages mutate: after a tool_result
68
- * is appended, after context management (which may shrink), and after an
69
- * LLM response (which we also feed through with the provider's authoritative
70
- * promptTokens to override our estimate).
71
- */
72
- private emitCtxFromMessages;
73
- private emitCtxFromUsage;
74
- /**
75
- * Run the multi-turn agent loop until completion.
76
- */
77
- run(initialMessages: Message[]): Promise<TurnLoopResult>;
78
- /**
79
- * Call model with streaming fallback.
80
- * If streaming fails, emit tombstone and retry non-streaming.
81
- */
82
- private callModelWithFallback;
83
- /**
84
- * Execute tools with overlap: start concurrent-safe (read-only) tools
85
- * immediately in parallel while sequential (write) tools run one-by-one.
86
- * Both groups run simultaneously — we don't wait for safe tools to finish
87
- * before starting unsafe ones.
88
- */
89
- private executeToolsOverlapped;
90
- get currentTurn(): number;
91
- /**
92
- * Generate synthetic error tool_results for any dangling tool_use blocks
93
- * that never received results (e.g. because the API call failed).
94
- * Prevents model confusion on the next turn.
95
- */
96
- private patchOrphanedToolUses;
97
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * Turn loop state definitions.
3
- */
4
- import type { TurnPhase, ToolCall, LLMResponse, TerminalReason } from "../types.js";
5
- export interface TurnState {
6
- phase: TurnPhase;
7
- turnNumber: number;
8
- modelResponse?: LLMResponse;
9
- toolCalls?: ToolCall[];
10
- finalText?: string;
11
- error?: Error;
12
- terminalReason?: TerminalReason;
13
- }
14
- export declare function initialTurnState(turnNumber: number): TurnState;
15
- /**
16
- * Short, human-readable turn correlation ID. Stamped on every log entry
17
- * written for the duration of one turn so `jq 'select(.turnId == "abc123")'`
18
- * pulls a single turn's whole timeline out of the daily log file.
19
- */
20
- export declare function newTurnId(): string;
@@ -1,44 +0,0 @@
1
- /**
2
- * Custom exception hierarchy for the code-shell framework.
3
- */
4
- export declare class FrameworkError extends Error {
5
- readonly details?: Record<string, unknown> | undefined;
6
- constructor(message: string, details?: Record<string, unknown> | undefined);
7
- }
8
- export declare class LLMError extends FrameworkError {
9
- readonly provider?: string | undefined;
10
- constructor(message: string, provider?: string | undefined, details?: Record<string, unknown>);
11
- }
12
- export declare class LLMRateLimitError extends LLMError {
13
- readonly retryAfter?: number | undefined;
14
- constructor(provider: string, retryAfter?: number | undefined);
15
- }
16
- export declare class ContextLimitError extends LLMError {
17
- constructor(provider?: string);
18
- }
19
- export declare class ToolError extends FrameworkError {
20
- readonly toolName?: string | undefined;
21
- constructor(message: string, toolName?: string | undefined, details?: Record<string, unknown>);
22
- }
23
- export declare class ToolNotFoundError extends ToolError {
24
- constructor(toolName: string);
25
- }
26
- export declare class ToolExecutionError extends ToolError {
27
- constructor(toolName: string, cause: string);
28
- }
29
- export declare class ToolTimeoutError extends ToolError {
30
- readonly timeoutMs: number;
31
- constructor(toolName: string, timeoutMs: number);
32
- }
33
- export declare class PermissionDeniedError extends FrameworkError {
34
- constructor(toolName: string, reason?: string);
35
- }
36
- export declare class SessionError extends FrameworkError {
37
- constructor(message: string, details?: Record<string, unknown>);
38
- }
39
- export declare class TranscriptError extends FrameworkError {
40
- constructor(message: string, details?: Record<string, unknown>);
41
- }
42
- export declare class ConfigError extends FrameworkError {
43
- constructor(message: string, details?: Record<string, unknown>);
44
- }
@@ -1,22 +0,0 @@
1
- import {h as h$1,a}from'./chunk-3QP5BQ3L.js';import {join,basename}from'path';h$1();var h=2e3,_=800,w=/^[A-Za-z0-9_-]+$/;function R(n,r,e){if(!w.test(n))throw new Error(`renderSessionMarkdown: invalid sessionId ${JSON.stringify(n)} \u2014 expected [A-Za-z0-9_-]+`);let t=[],s=[],u=`session-${n}-attachments`;t.push(`# Session ${n}`),t.push("");let i=0;for(let d of r){let o=d;if(o.type!=="message")continue;i+=1;let $=o.data?.role??"unknown",a=o.data?.content;if(t.push(`## turn ${i} \xB7 ${$}`),t.push(""),typeof a=="string"){t.push(a),t.push("");continue}if(!Array.isArray(a)){t.push("```json"),t.push(JSON.stringify(a,null,2)),t.push("```"),t.push("");continue}let l=0;for(let m of a){l+=1;let g=I(m,{turnNumber:i,itemIdx:l,sidecarDir:u,cwd:e,sidecars:s});g&&(t.push(g),t.push(""));}}return {md:t.join(`
2
- `),sidecars:s}}a(R,"renderSessionMarkdown");function I(n,r){let e=n.type;if(e==="reasoning"){let t=n.reasoningContent??"";return y("reasoning",t)}if(e==="text")return n.text??"";if(e==="tool_use"){let t=n.name??"?",s=JSON.stringify(n.input??{},null,2)??"{}",u=`**\u{1F6E0} tool_use** \xB7 \`${t}\``;return s.length<=_?`${u}
3
-
4
- \`\`\`json
5
- ${s}
6
- \`\`\``:y(`${t} args (${s.length} bytes)`,s,"json")}if(e==="tool_result"){let t=n.tool_use_id??n.id??"?",s=N(n.content);if(s.length<=h)return `**\u25C0 tool_result** \xB7 ${t}
7
-
8
- \`\`\`
9
- ${s}
10
- \`\`\``;let u=`t${r.turnNumber}-i${r.itemIdx}-${t.slice(0,12)}.txt`,i=join(r.cwd,r.sidecarDir,u);r.sidecars.push({path:i,content:s});let d=s.slice(0,h),o=join(r.sidecarDir,basename(i));return `**\u25C0 tool_result** \xB7 ${t} \xB7 ${s.length.toLocaleString()} bytes \xB7 [full \u2192 ${o}](./${o})
11
-
12
- \`\`\`
13
- ${d}
14
- \u2026(truncated, see sidecar)
15
- \`\`\``}return "```json\n"+JSON.stringify(n,null,2)+"\n```"}a(I,"renderBlock");function y(n,r,e=""){let t=e?"```"+e:"```";return `<details><summary>${n}</summary>
16
-
17
- ${t}
18
- ${r}
19
- \`\`\`
20
-
21
- </details>`}a(y,"collapsible");function N(n){if(n==null)return "";if(typeof n=="string")return n;if(Array.isArray(n)){let r=[];for(let e of n)e&&typeof e=="object"&&"text"in e&&typeof e.text=="string"?r.push(e.text):r.push(JSON.stringify(e));return r.join(`
22
- `)}return JSON.stringify(n,null,2)}a(N,"stringifyResult");export{R as renderSessionMarkdown};
@@ -1 +0,0 @@
1
- export{a as FileHistory}from'./chunk-WI6FSWGU.js';import'./chunk-3QP5BQ3L.js';
@@ -1,35 +0,0 @@
1
- /**
2
- * Git utility functions for the git workflow commands.
3
- */
4
- export interface GitStatusEntry {
5
- status: string;
6
- path: string;
7
- }
8
- export interface GitLogEntry {
9
- hash: string;
10
- message: string;
11
- author: string;
12
- date: string;
13
- }
14
- export declare function isGitRepo(cwd: string): boolean;
15
- export declare function getCurrentBranch(cwd: string): string;
16
- export declare function getGitStatus(cwd: string): GitStatusEntry[];
17
- export declare function getGitDiff(cwd: string, opts?: {
18
- staged?: boolean;
19
- file?: string;
20
- }): string;
21
- export declare function getGitDiffStat(cwd: string, opts?: {
22
- staged?: boolean;
23
- file?: string;
24
- }): string;
25
- export declare function getGitLog(cwd: string, n?: number): GitLogEntry[];
26
- export declare function getRemoteUrl(cwd: string): string | undefined;
27
- export declare function gitAdd(cwd: string, files?: string[]): void;
28
- export declare function gitCommit(cwd: string, message: string): string;
29
- export declare function gitListBranches(cwd: string): {
30
- name: string;
31
- current: boolean;
32
- }[];
33
- export declare function gitCheckout(cwd: string, branch: string, create?: boolean): void;
34
- export declare function ghAvailable(): boolean;
35
- export declare function ghPrComments(cwd: string, prUrl: string): string;
@@ -1,36 +0,0 @@
1
- /**
2
- * Git worktree management — create/remove isolated worktrees for agents.
3
- */
4
- export interface WorktreeSession {
5
- originalCwd: string;
6
- worktreePath: string;
7
- worktreeName: string;
8
- worktreeBranch: string;
9
- originalBranch?: string;
10
- sessionId: string;
11
- createdAt: number;
12
- }
13
- /**
14
- * Validate worktree slug to prevent path traversal attacks.
15
- */
16
- export declare function validateWorktreeSlug(slug: string): void;
17
- /**
18
- * Find the canonical git root (resolves worktree → main repo).
19
- */
20
- export declare function findGitRoot(cwd: string): string;
21
- /**
22
- * Create an isolated git worktree for an agent session.
23
- */
24
- export declare function createWorktree(cwd: string, slug: string, sessionId: string): WorktreeSession;
25
- /**
26
- * Remove a worktree and optionally its branch.
27
- */
28
- export declare function removeWorktree(worktreePath: string, removeBranch?: boolean): void;
29
- /**
30
- * List active worktrees.
31
- */
32
- export declare function listWorktrees(cwd: string): Array<{
33
- path: string;
34
- branch: string;
35
- head: string;
36
- }>;
@@ -1,35 +0,0 @@
1
- /**
2
- * Hook event type definitions.
3
- */
4
- /**
5
- * Lifecycle hooks the engine emits.
6
- *
7
- * **Currently emitted** (handlers registered here will actually fire):
8
- * - on_agent_start / on_agent_end (engine.ts)
9
- * - on_turn_start / on_turn_end (turn-loop.ts)
10
- * - pre_tool_use / post_tool_use (executor.ts)
11
- * - on_tool_start / on_tool_end (executor.ts)
12
- * - file_changed (executor.ts, Write/Edit only)
13
- *
14
- * **Reserved / not-yet-emitted** (defined so downstream can register handlers
15
- * in anticipation; wire the emitter before relying on them):
16
- * - on_permission_check / on_session_start / on_session_end
17
- * - user_prompt_submit / pre_compact / post_compact / notification
18
- */
19
- export type HookEventName = "on_agent_start" | "on_agent_end" | "on_turn_start" | "on_turn_end" | "on_tool_start" | "on_tool_end" | "on_permission_check" | "on_session_start" | "on_session_end" | "pre_tool_use" | "post_tool_use" | "user_prompt_submit" | "pre_compact" | "post_compact" | "file_changed" | "notification";
20
- export interface HookContext {
21
- eventName: HookEventName;
22
- data: Record<string, unknown>;
23
- sessionId?: string;
24
- turnNumber?: number;
25
- }
26
- export interface HookResult {
27
- /** If true, stop the hook chain */
28
- stop?: boolean;
29
- /** Modified data to pass along */
30
- data?: Record<string, unknown>;
31
- /** Additional messages to inject */
32
- messages?: string[];
33
- /** Allow/deny/ask override for permission hooks */
34
- decision?: "allow" | "deny" | "ask";
35
- }
@@ -1,15 +0,0 @@
1
- /**
2
- * Hook registry with priority-based chain-of-responsibility execution.
3
- */
4
- import type { HookEventName, HookContext, HookResult } from "./events.js";
5
- export type HookHandler = (ctx: HookContext) => HookResult | Promise<HookResult>;
6
- export declare class HookRegistry {
7
- private hooks;
8
- register(eventName: HookEventName, handler: HookHandler, priority?: number, name?: string): void;
9
- emit(eventName: HookEventName, data?: Record<string, unknown>): Promise<HookResult>;
10
- hasHooks(eventName: HookEventName): boolean;
11
- clear(eventName?: HookEventName): void;
12
- listHooks(): Map<HookEventName, string[]>;
13
- listEvents(): HookEventName[];
14
- countHandlers(eventName: HookEventName): number;
15
- }
@@ -1,20 +0,0 @@
1
- /**
2
- * Capability layer — single entry point.
3
- *
4
- * `capabilitiesFor(kind, model)` walks the rules in `rules.ts`, returns
5
- * a `Capability` describing what params the (provider, model) pair will
6
- * accept. Clients spread the result into their request-build code.
7
- *
8
- * Pure function. No I/O, no caching beyond the rules array.
9
- */
10
- import type { ProviderKindName } from "../provider-kinds.js";
11
- import { type Capability } from "./types.js";
12
- export { DEFAULT_CAPABILITY } from "./types.js";
13
- export type { Capability, ReasoningShape, ReasoningEffort, ThinkingSwitch, EchoReasoning, ParallelToolCallsShape, StreamUsageShape, } from "./types.js";
14
- /**
15
- * Resolve the capability for a given (provider kind, model id).
16
- *
17
- * First matching rule for the kind wins — rules.ts is ordered so that
18
- * more specific patterns come before catch-alls.
19
- */
20
- export declare function capabilitiesFor(kind: ProviderKindName, model: string): Capability;
@@ -1,26 +0,0 @@
1
- /**
2
- * Per-(provider kind, model family) capability overrides.
3
- *
4
- * Each rule patches the conservative DEFAULT_CAPABILITY. First match per
5
- * kind wins — order matters for overlapping families.
6
- *
7
- * Authority for every entry is the vendor's own docs; the `why` field
8
- * cites the specific page. When a model 400s on something not captured
9
- * here, add a rule, don't patch the client.
10
- *
11
- * Sources audited 2026-05-15:
12
- * OpenAI: https://platform.openai.com/docs/guides/reasoning
13
- * https://learn.microsoft.com/en-us/azure/foundry/openai/how-to/reasoning
14
- * Anthropic: https://platform.claude.com/docs/en/build-with-claude/extended-thinking
15
- * DeepSeek: https://api-docs.deepseek.com/guides/reasoning_model
16
- * https://api-docs.deepseek.com/guides/thinking_mode
17
- * Z.AI: https://docs.z.ai/guides/llm/glm-4.6
18
- * Gemini: https://ai.google.dev/gemini-api/docs/openai
19
- * https://ai.google.dev/gemini-api/docs/thinking
20
- * OpenRouter: https://openrouter.ai/docs/guides/best-practices/reasoning-tokens
21
- * xAI: https://docs.x.ai/docs/guides/reasoning
22
- * Mistral: https://docs.mistral.ai/api/
23
- * Groq: https://console.groq.com/docs/reasoning
24
- */
25
- import type { CapabilityRule } from "./types.js";
26
- export declare const RULES: ReadonlyArray<CapabilityRule>;
@@ -1,108 +0,0 @@
1
- /**
2
- * Per-(provider, model) capability descriptor.
3
- *
4
- * Captures the subset of request-shape divergence we've actually observed
5
- * cause HTTP 400s or behavior changes. Each rule in `rules.ts` produces
6
- * one of these; clients spread it into the outgoing request.
7
- *
8
- * Sources for every field are documented next to the matching rule in
9
- * `rules.ts` — vendor docs, not folklore.
10
- */
11
- import type { ProviderKindName } from "../provider-kinds.js";
12
- /** OpenAI-style reasoning effort levels — shared by several vendors. */
13
- export type ReasoningEffort = "minimal" | "low" | "medium" | "high";
14
- /** A binary thinking switch, like DeepSeek V4 and Z.AI GLM use. */
15
- export type ThinkingSwitch = "enabled" | "disabled";
16
- /**
17
- * How the vendor exposes a "think harder / think less" knob (or none).
18
- * Each kind has different field names and value shapes — we keep them
19
- * separate so the engine can't accidentally cross-pollinate.
20
- */
21
- export type ReasoningShape = {
22
- kind: "none";
23
- }
24
- /** DeepSeek V4, Z.AI GLM-4.5+ — `{thinking: {type: "enabled"|"disabled"}}` at top level. */
25
- | {
26
- kind: "deepseek-thinking";
27
- }
28
- /**
29
- * OpenAI o-series & gpt-5+ — `reasoning_effort: "minimal"|"low"|"medium"|"high"`.
30
- * `disabledEffort` is the value we send when the caller asks for thinking
31
- * "disabled" — defaults to `"minimal"` (OpenAI), but vendors with a
32
- * narrower vocabulary override it (e.g. xAI Grok 4.3 has no `"minimal"`;
33
- * Mistral Magistral only accepts `"high"` and `"none"`).
34
- */
35
- | {
36
- kind: "openai-effort";
37
- disabledEffort?: ReasoningEffort | "none";
38
- }
39
- /** Anthropic Claude 4.x ≤ 4.5 — `{thinking: {type: "enabled", budget_tokens: N}}`. */
40
- | {
41
- kind: "anthropic-budget";
42
- minBudgetTokens: number;
43
- }
44
- /** Anthropic Claude 4.6+ — no opt-in, thinking is adaptive. Sending `type: "enabled"` 400s. */
45
- | {
46
- kind: "anthropic-adaptive";
47
- }
48
- /** OpenRouter normalized — `{reasoning: {effort, max_tokens, exclude, enabled}}`. */
49
- | {
50
- kind: "openrouter-reasoning";
51
- };
52
- /**
53
- * How prior `reasoning_content` (or `thinking` blocks) must be threaded
54
- * back into the next request.
55
- */
56
- export type EchoReasoning =
57
- /** DeepSeek `deepseek-reasoner`: 400 if you echo it back at all. */
58
- "never"
59
- /** DeepSeek V4 + tools, Claude 4.x + tools: must echo or 400. */
60
- | "when-tools"
61
- /** Optional — echo if you have it, but absence is fine. */
62
- | "optional";
63
- /**
64
- * Parallel-tool-call shape. OpenAI exposes `parallel_tool_calls: bool`.
65
- * Anthropic exposes it inside `tool_choice.disable_parallel_tool_use`.
66
- * Some endpoints don't support it at all.
67
- */
68
- export type ParallelToolCallsShape = "openai-flag" | "anthropic-disable-flag" | "unsupported";
69
- /**
70
- * Streaming usage signal. OpenAI-compat needs `stream_options:
71
- * {include_usage: true}`; Anthropic always emits usage in
72
- * `message_delta`; some endpoints reject the field.
73
- */
74
- export type StreamUsageShape = "include-usage-flag" | "auto" | "none";
75
- export interface Capability {
76
- /** Token-limit request field. */
77
- tokenLimitField: "max_tokens" | "max_completion_tokens";
78
- /**
79
- * Request fields the model 400s on (or silently drops). We just don't
80
- * send them. Names are in OpenAI-compat spelling; clients translate
81
- * for native protocols.
82
- */
83
- rejectedParams: ReadonlySet<"temperature" | "top_p" | "presence_penalty" | "frequency_penalty" | "logit_bias" | "logprobs" | "top_logprobs">;
84
- /** How thinking is exposed (or not). */
85
- reasoning: ReasoningShape;
86
- /** Echo-back contract for prior reasoning. */
87
- echoReasoning: EchoReasoning;
88
- /** Parallel-tool-calls flag shape. */
89
- parallelToolCalls: ParallelToolCallsShape;
90
- /** Streaming usage reporting shape. */
91
- streamUsage: StreamUsageShape;
92
- }
93
- /**
94
- * Conservative default — used when no rule matches. Picks "send everything
95
- * the vanilla OpenAI Chat Completions spec accepts," because that's what
96
- * every OpenAI-compat endpoint at minimum understands.
97
- */
98
- export declare const DEFAULT_CAPABILITY: Capability;
99
- export interface CapabilityRule {
100
- /** Which provider kind this rule applies to. */
101
- kind: ProviderKindName;
102
- /** Model-id matcher. First matching rule wins (per kind). */
103
- match: RegExp;
104
- /** Patch applied on top of DEFAULT_CAPABILITY. */
105
- capability: Partial<Capability>;
106
- /** Free-text reason — shown in logs, helps future-you. */
107
- why: string;
108
- }
@@ -1,29 +0,0 @@
1
- /**
2
- * Abstract base class for all LLM provider clients.
3
- */
4
- import type { LLMConfig, LLMResponse, TokenUsage } from "../types.js";
5
- import type { CreateMessageOptions, LLMUsageTracker } from "./types.js";
6
- export declare abstract class LLMClientBase {
7
- protected readonly config: LLMConfig;
8
- readonly provider: string;
9
- readonly model: string;
10
- readonly temperature: number;
11
- readonly maxTokens: number;
12
- readonly timeout: number;
13
- readonly retryMaxAttempts: number;
14
- readonly enableStreaming: boolean;
15
- /**
16
- * Process-wide hook fired on every LLM response. The CLI installs this in
17
- * main.ts to feed the cost tracker; lives on the base class so every code
18
- * path (REPL, run, arena, sub-agents) reports through one funnel without
19
- * each call site needing to remember.
20
- */
21
- static onUsage?: (model: string, usage: TokenUsage) => void;
22
- protected usage: LLMUsageTracker;
23
- constructor(config: LLMConfig);
24
- protected abstract initClient(): void;
25
- abstract createMessage(options: CreateMessageOptions): Promise<LLMResponse>;
26
- protected recordUsage(usage: TokenUsage, options?: CreateMessageOptions): void;
27
- getUsage(): LLMUsageTracker;
28
- protected withRetry<T>(fn: () => Promise<T>, maxAttempts?: number): Promise<T>;
29
- }
@@ -1,10 +0,0 @@
1
- /**
2
- * LLM provider factory with registry pattern.
3
- */
4
- import type { LLMConfig } from "../types.js";
5
- import type { LLMClientBase } from "./client-base.js";
6
- type ProviderConstructor = new (config: LLMConfig) => LLMClientBase;
7
- declare const PROVIDER_REGISTRY: Map<string, ProviderConstructor>;
8
- export declare function registerProvider(name: string, cls: ProviderConstructor): void;
9
- export declare function createLLMClient(config: LLMConfig): Promise<LLMClientBase>;
10
- export { PROVIDER_REGISTRY };
@@ -1,21 +0,0 @@
1
- /**
2
- * Cache file IO for per-provider model lists.
3
- *
4
- * One file per provider key under <cacheDir>/<providerKey>.json. TTL is
5
- * 7 days. Callers decide whether to honor staleness — readCache just
6
- * reads, isStale just checks. Malformed/missing files yield undefined.
7
- */
8
- export interface CachedModel {
9
- id: string;
10
- contextLength: number;
11
- maxOutputTokens: number;
12
- }
13
- export interface ModelCacheFile {
14
- fetchedAt: string;
15
- providerKey: string;
16
- models: CachedModel[];
17
- }
18
- export declare function readCache(cacheDir: string, providerKey: string): ModelCacheFile | undefined;
19
- export declare function writeCache(cacheDir: string, providerKey: string, models: CachedModel[]): ModelCacheFile;
20
- export declare function isStale(file: ModelCacheFile, now?: number): boolean;
21
- export declare function defaultCacheDir(): string;
@@ -1,29 +0,0 @@
1
- /**
2
- * Fetch a provider's model list from its official /v1/models endpoint
3
- * (or the local OpenRouter snapshot). Normalizes wildly different
4
- * response shapes into a uniform `CachedModel[]`, applies the kind's
5
- * chat-only filter, and writes to disk cache.
6
- *
7
- * Network failures don't throw — they return `{ models: [], error }`
8
- * so the UI can prompt the user to refresh later or fall back to
9
- * manual entry.
10
- */
11
- import { type ProviderKindName } from "./provider-kinds.js";
12
- import { type ModelCacheFile } from "./model-cache.js";
13
- export interface FetcherProvider {
14
- key: string;
15
- kind: ProviderKindName;
16
- baseUrl: string;
17
- apiKey: string | undefined;
18
- modelsPath?: string;
19
- }
20
- export interface FetchOptions {
21
- cacheDir: string;
22
- refresh?: boolean;
23
- timeoutMs?: number;
24
- }
25
- export interface FetchResult extends ModelCacheFile {
26
- error?: string;
27
- fromCache?: boolean;
28
- }
29
- export declare function fetchModelList(provider: FetcherProvider, opts: FetchOptions): Promise<FetchResult>;
@@ -1,84 +0,0 @@
1
- /**
2
- * ModelPool — runtime model registry.
3
- *
4
- * Holds all available models loaded from settings. Provides:
5
- * - `get(key?)` — retrieve a model config by key, or the active one
6
- * - `switch(key)` — change the active model
7
- * - `list()` — list all available models
8
- * - `register(entry)` — add a model at runtime
9
- *
10
- * Consumers:
11
- * - Engine/TurnLoop: `pool.get()` for the active model
12
- * - Arena: `pool.get("sonnet")` to resolve participants by key
13
- * - /model command: `pool.switch("haiku")` for hot-swap
14
- */
15
- import type { LLMConfig } from "../types.js";
16
- export interface ModelEntry {
17
- /** Short alias: "claude", "sonnet", "haiku", "gpt", "deepseek" */
18
- key: string;
19
- /** Human-readable label. Auto-generated from model path if not provided. */
20
- label?: string;
21
- provider: string;
22
- /** Full model path: "anthropic/claude-opus-4-6" */
23
- model: string;
24
- baseUrl?: string;
25
- apiKey?: string;
26
- maxOutputTokens?: number;
27
- /** Per-model context window size. Falls back to config.maxContextTokens → 200_000. */
28
- maxContextTokens?: number;
29
- /** Optional reference into ProviderCatalog. When set, baseUrl/apiKey
30
- * come from the catalog unless the entry overrides them. */
31
- providerKey?: string;
32
- /**
33
- * Per-model thinking override. Wins over the provider-level setting
34
- * (ProviderCatalog entry's `thinking`). Useful when models in the same
35
- * provider need different defaults — e.g. DeepSeek V4 Pro off but
36
- * V4 Flash on.
37
- */
38
- thinking?: "enabled" | "disabled";
39
- }
40
- export declare class ModelPool {
41
- private models;
42
- private activeKey;
43
- private providerCatalog;
44
- private cacheDir;
45
- setProviderCatalog(cat: import("./provider-catalog.js").ProviderCatalog): void;
46
- setCacheDir(dir: string): void;
47
- /**
48
- * For each entry in the pool that lacks an explicit maxContextTokens
49
- * but has a providerKey, look up the contextLength from the cached
50
- * model list and patch it in.
51
- */
52
- reloadCachedContextWindows(): void;
53
- /**
54
- * Build a pool from an array of model entries.
55
- * The first entry (or the one matching `defaultKey`) becomes active.
56
- */
57
- constructor(entries?: ModelEntry[], defaultKey?: string);
58
- /** Register a model at runtime. */
59
- register(entry: ModelEntry): void;
60
- /** Fill in known defaults (e.g. context window for DeepSeek V4) when the entry doesn't specify them. */
61
- private withBuiltinDefaults;
62
- /** Switch the active model. Throws if key not found. */
63
- switch(key: string): ModelEntry;
64
- /** Get a model by key. No key = active model. Returns undefined if not found. */
65
- get(key?: string): ModelEntry | undefined;
66
- /** Get the active model key. */
67
- getActiveKey(): string | undefined;
68
- /** List all registered models. */
69
- list(): ModelEntry[];
70
- /** Number of registered models. */
71
- get size(): number;
72
- /** Check if a key exists. */
73
- has(key: string): boolean;
74
- /**
75
- * Build an LLMConfig for a given model entry, merging with a base config
76
- * (inherits apiKey, baseUrl, etc. from the base if not set on the entry).
77
- */
78
- toLLMConfig(entry: ModelEntry, base?: Partial<LLMConfig>): LLMConfig;
79
- /**
80
- * Build an LLMConfig for the active model (or a specific key),
81
- * merging with a base config.
82
- */
83
- resolveLLMConfig(key?: string, base?: Partial<LLMConfig>): LLMConfig | undefined;
84
- }