@cjhyy/code-shell 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (274) hide show
  1. package/README.md +8 -0
  2. package/dist/anthropic-P5VETAFI.cjs +10 -0
  3. package/dist/{anthropic-NENYS535.js → anthropic-W2GU3D76.js} +3 -2
  4. package/dist/arena/context/context-tools.d.ts +1 -1
  5. package/dist/arena/index.cjs +4 -4
  6. package/dist/arena/index.js +3 -3
  7. package/dist/arena/providers/index.d.ts +19 -3
  8. package/dist/arena/strategies/utils.d.ts +6 -1
  9. package/dist/arena/types.d.ts +10 -1
  10. package/dist/{arena-46QQ6BZQ.js → arena-ENHBHB2W.js} +5 -7
  11. package/dist/{arena-HZZZ2GJH.cjs → arena-HHDYYVHJ.cjs} +19 -21
  12. package/dist/{chunk-BE6IPRDM.js → chunk-2EUAE7AY.js} +1 -1
  13. package/dist/{chunk-WYKNZ54E.cjs → chunk-3CAZIWUA.cjs} +6 -6
  14. package/dist/{chunk-J5XW6UYL.js → chunk-5C5HIOML.js} +63 -4
  15. package/dist/chunk-75E4BBFC.js +224 -0
  16. package/dist/{chunk-ZJV3YSY3.cjs → chunk-BUJ5KYCI.cjs} +53 -11
  17. package/dist/{chunk-BMH65OVB.cjs → chunk-C7C7ZZY4.cjs} +8 -8
  18. package/dist/{chunk-KO2FPF7G.js → chunk-F5BS3GUC.js} +20 -2
  19. package/dist/chunk-FA5KD34T.js +54 -0
  20. package/dist/chunk-FV2ARONZ.cjs +224 -0
  21. package/dist/chunk-G76E5FOB.cjs +54 -0
  22. package/dist/{chunk-DICG4AB7.cjs → chunk-GZBD6QRS.cjs} +42 -3
  23. package/dist/{chunk-FVP7XJGS.cjs → chunk-HOXQLX5R.cjs} +406 -196
  24. package/dist/{chunk-4PKZPFCD.js → chunk-I57ZD5IQ.js} +47 -14
  25. package/dist/{chunk-JUHRV2XF.js → chunk-ID6EJUHP.js} +1703 -438
  26. package/dist/chunk-JHNCK7JP.cjs +202 -0
  27. package/dist/{chunk-MOILS4WE.cjs → chunk-JHXNOB5G.cjs} +3 -3
  28. package/dist/{chunk-UK2SU23S.cjs → chunk-KOGV6PDQ.cjs} +20 -2
  29. package/dist/{chunk-VKGNCYRL.js → chunk-LMEKCQX4.js} +95 -13
  30. package/dist/{chunk-3EAEC566.cjs → chunk-M2QI5X3X.cjs} +51 -18
  31. package/dist/{chunk-YZ25SSWJ.js → chunk-M2SVOKC6.js} +46 -4
  32. package/dist/chunk-OMRGA6TI.js +4753 -0
  33. package/dist/{chunk-NG73UR3L.cjs → chunk-OP57WUWQ.cjs} +23 -1
  34. package/dist/{chunk-ZXYDDJEJ.js → chunk-OUC2DFA7.js} +2 -2
  35. package/dist/{chunk-AP5F6VYE.js → chunk-REFCCVDM.js} +1 -1
  36. package/dist/{chunk-O6F2EF2Z.js → chunk-SCDKLTN3.js} +41 -2
  37. package/dist/{chunk-FECTK5KJ.js → chunk-SW3L7HIM.js} +1 -1
  38. package/dist/chunk-TATCTZSB.cjs +4753 -0
  39. package/dist/{chunk-Q6BYFYGD.cjs → chunk-VWFET3MG.cjs} +1886 -621
  40. package/dist/{chunk-3EUDE77E.cjs → chunk-X2DNIMPC.cjs} +19 -19
  41. package/dist/{chunk-SQZHPD3S.js → chunk-Y7TSCDF6.js} +297 -87
  42. package/dist/{chunk-WHRTARDJ.cjs → chunk-YAFCN7ZW.cjs} +112 -30
  43. package/dist/{chunk-LRAY5IYC.cjs → chunk-YD7XTI7T.cjs} +65 -6
  44. package/dist/{chunk-S74VVJBF.js → chunk-ZLPJJZUW.js} +23 -1
  45. package/dist/chunk-ZRVPCXI7.js +202 -0
  46. package/dist/cli/commands/builtin/advanced-commands.d.ts +1 -1
  47. package/dist/cli/commands/builtin/extra-commands.d.ts +2 -2
  48. package/dist/cli/commands/builtin/more-commands.d.ts +1 -3
  49. package/dist/cli/commands/registry.d.ts +8 -0
  50. package/dist/cli/cost-tracker.d.ts +6 -0
  51. package/dist/cli/main.cjs +3534 -1996
  52. package/dist/cli/main.js +3646 -2108
  53. package/dist/cli/onboarding.d.ts +67 -14
  54. package/dist/client-base-TOVE25FA.js +9 -0
  55. package/dist/client-base-VDDIADAC.cjs +9 -0
  56. package/dist/compaction-D3KV2NWY.cjs +31 -0
  57. package/dist/{compaction-CCHWA4G6.js → compaction-YNWCEF7B.js} +1 -2
  58. package/dist/context/manager.d.ts +9 -0
  59. package/dist/data/openrouter-models.d.ts +35 -0
  60. package/dist/data/openrouter-sync.d.ts +16 -0
  61. package/dist/{devtools-KIY3LWQJ.js → devtools-IRQQPIRY.js} +1 -1
  62. package/dist/{devtools-LRP47DDV.cjs → devtools-WTC3NFNE.cjs} +1 -1
  63. package/dist/engine/engine.d.ts +29 -6
  64. package/dist/engine/turn-loop.d.ts +7 -0
  65. package/dist/engine/turn-state.d.ts +6 -0
  66. package/dist/index.cjs +19 -28
  67. package/dist/index.js +28 -37
  68. package/dist/llm/client-base.d.ts +7 -0
  69. package/dist/llm/model-pool.d.ts +4 -0
  70. package/dist/logging/logger.d.ts +69 -8
  71. package/dist/manager-FWLOVEEK.cjs +7 -0
  72. package/dist/manager-GEXJLOIS.js +7 -0
  73. package/dist/{mcp-manager-OKXHHWYR.js → mcp-manager-37GQLFGX.js} +2 -2
  74. package/dist/mcp-manager-U77NEXBY.cjs +8 -0
  75. package/dist/memory-ADGOWADP.cjs +9 -0
  76. package/dist/memory-EPFDBPII.js +9 -0
  77. package/dist/native-ts/yoga-layout/index.d.ts +2 -2
  78. package/dist/{openai-5HQGBL4L.js → openai-RXU5URYI.js} +3 -2
  79. package/dist/openai-SQW4H2K4.cjs +10 -0
  80. package/dist/openrouter-models-OL725CL6.js +15 -0
  81. package/dist/openrouter-models-UM3AOGZ4.cjs +15 -0
  82. package/dist/openrouter-sync-CWD5VNW2.js +11 -0
  83. package/dist/openrouter-sync-HYZZC6RX.cjs +11 -0
  84. package/dist/product/index.cjs +12 -16
  85. package/dist/product/index.js +11 -15
  86. package/dist/protocol/types.d.ts +11 -3
  87. package/dist/{ink → render}/hooks/use-input.d.ts +1 -1
  88. package/dist/run/index.cjs +12 -16
  89. package/dist/run/index.js +11 -15
  90. package/dist/session/memory.d.ts +23 -3
  91. package/dist/session/session-manager.d.ts +4 -1
  92. package/dist/{session-manager-UQKB564H.cjs → session-manager-HRSKENKB.cjs} +2 -2
  93. package/dist/{session-manager-JIIBCFTC.js → session-manager-NEKFEHF3.js} +1 -1
  94. package/dist/settings/manager.d.ts +9 -0
  95. package/dist/settings/schema.d.ts +48 -39
  96. package/dist/{tool-summary-J2ICNMWP.js → tool-summary-2RUFL5QK.js} +1 -1
  97. package/dist/{tool-summary-5P2GKRA4.cjs → tool-summary-RYNR4DDB.cjs} +2 -2
  98. package/dist/tool-system/builtin/agent.d.ts +3 -26
  99. package/dist/tool-system/builtin/apply-patch/applier.d.ts +26 -0
  100. package/dist/tool-system/builtin/apply-patch/index.d.ts +19 -0
  101. package/dist/tool-system/builtin/apply-patch/parser.d.ts +17 -0
  102. package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +18 -0
  103. package/dist/tool-system/builtin/apply-patch/types.d.ts +49 -0
  104. package/dist/tool-system/builtin/arena.d.ts +18 -5
  105. package/dist/tool-system/builtin/ask-user.d.ts +6 -6
  106. package/dist/tool-system/builtin/index.d.ts +11 -1
  107. package/dist/tool-system/builtin/tool-search.d.ts +2 -3
  108. package/dist/tool-system/context.d.ts +74 -0
  109. package/dist/tool-system/executor.d.ts +16 -0
  110. package/dist/tool-system/permission.d.ts +40 -5
  111. package/dist/tool-system/registry.d.ts +2 -0
  112. package/dist/types.d.ts +28 -1
  113. package/dist/ui/App.d.ts +1 -1
  114. package/dist/ui/components/AgentBlock.d.ts +1 -1
  115. package/dist/ui/components/AskUserPrompt.d.ts +7 -0
  116. package/dist/ui/components/MessageContent.d.ts +7 -3
  117. package/dist/ui/components/ModelManager.d.ts +35 -0
  118. package/dist/ui/components/ModelSelector.d.ts +10 -0
  119. package/dist/ui/components/OnboardingPrompt.d.ts +7 -0
  120. package/dist/ui/components/PermissionPrompt.d.ts +5 -2
  121. package/dist/ui/components/SessionPicker.d.ts +14 -0
  122. package/dist/ui/components/StatusLine.d.ts +4 -2
  123. package/dist/ui/components/ThemedBox.d.ts +1 -1
  124. package/dist/ui/components/ToolCall.d.ts +8 -1
  125. package/dist/ui/components/WelcomeTips.d.ts +5 -0
  126. package/dist/ui/onboarding-runner.d.ts +2 -0
  127. package/dist/ui/store.d.ts +1 -0
  128. package/dist/{updater-2N6745WR.cjs → updater-M7L42ASZ.cjs} +4 -4
  129. package/dist/{updater-PV7FKSUI.js → updater-ZRTONIR4.js} +4 -4
  130. package/dist/utils/debug.d.ts +17 -33
  131. package/package.json +4 -4
  132. package/dist/anthropic-XMTTVNSH.cjs +0 -9
  133. package/dist/bridge-4ZRXVWBN.js +0 -98
  134. package/dist/bridge-W476QDFH.cjs +0 -98
  135. package/dist/chunk-4RRUP4MM.js +0 -86
  136. package/dist/chunk-4SFPFHMG.js +0 -132
  137. package/dist/chunk-5LHVI777.cjs +0 -246
  138. package/dist/chunk-6ZIROYXX.js +0 -207
  139. package/dist/chunk-C7JBCO5V.js +0 -80
  140. package/dist/chunk-CSO5EOEP.cjs +0 -132
  141. package/dist/chunk-FGZGCFJX.cjs +0 -207
  142. package/dist/chunk-HD7MT5XU.cjs +0 -86
  143. package/dist/chunk-IMMTBZ33.cjs +0 -63
  144. package/dist/chunk-JT2WSQSR.cjs +0 -335
  145. package/dist/chunk-NZ4DQ72D.cjs +0 -664
  146. package/dist/chunk-OG4MIQJ6.js +0 -335
  147. package/dist/chunk-WRZJUQ5Z.js +0 -664
  148. package/dist/chunk-X4HAERTQ.js +0 -63
  149. package/dist/chunk-XHC2JMEC.cjs +0 -80
  150. package/dist/chunk-ZRSSGYA5.js +0 -246
  151. package/dist/compaction-44I55TLI.cjs +0 -32
  152. package/dist/coordinator-5HY7ALO2.js +0 -7
  153. package/dist/coordinator-INDLPVMF.cjs +0 -7
  154. package/dist/cost-tracker-IWYAUPXH.js +0 -9
  155. package/dist/cost-tracker-JXTJQQWE.cjs +0 -9
  156. package/dist/loader-DXFSUB4R.cjs +0 -91
  157. package/dist/loader-J5UID6CV.js +0 -91
  158. package/dist/manager-ETWDOCHN.cjs +0 -9
  159. package/dist/manager-HGMQNEJB.cjs +0 -11
  160. package/dist/manager-HUAQOORS.js +0 -9
  161. package/dist/manager-VJIZ2CQC.js +0 -11
  162. package/dist/mcp-manager-G4G2QASE.cjs +0 -8
  163. package/dist/memory-AP747G5H.js +0 -7
  164. package/dist/memory-BH3BYUN5.cjs +0 -7
  165. package/dist/onboarding-6WEPV7C2.js +0 -11
  166. package/dist/onboarding-QM5DY2TU.cjs +0 -11
  167. package/dist/openai-656VWUQW.cjs +0 -9
  168. package/dist/skills-63RBYQRX.js +0 -13
  169. package/dist/skills-V3BPLW3D.cjs +0 -13
  170. package/dist/token-counter-CHAXW5O7.cjs +0 -13
  171. package/dist/token-counter-DSOZGZ5Q.js +0 -13
  172. package/dist/utils/log.d.ts +0 -56
  173. package/dist/voice-KTZ7PAGO.js +0 -80
  174. package/dist/voice-KZE25GKB.cjs +0 -80
  175. /package/dist/{ink → render}/Ansi.d.ts +0 -0
  176. /package/dist/{ink → render}/bidi.d.ts +0 -0
  177. /package/dist/{ink → render}/clearTerminal.d.ts +0 -0
  178. /package/dist/{ink → render}/colorize.d.ts +0 -0
  179. /package/dist/{ink → render}/components/AlternateScreen.d.ts +0 -0
  180. /package/dist/{ink → render}/components/App.d.ts +0 -0
  181. /package/dist/{ink → render}/components/AppContext.d.ts +0 -0
  182. /package/dist/{ink → render}/components/Box.d.ts +0 -0
  183. /package/dist/{ink → render}/components/Button.d.ts +0 -0
  184. /package/dist/{ink → render}/components/ClockContext.d.ts +0 -0
  185. /package/dist/{ink → render}/components/CursorDeclarationContext.d.ts +0 -0
  186. /package/dist/{ink → render}/components/ErrorOverview.d.ts +0 -0
  187. /package/dist/{ink → render}/components/Link.d.ts +0 -0
  188. /package/dist/{ink → render}/components/Newline.d.ts +0 -0
  189. /package/dist/{ink → render}/components/NoSelect.d.ts +0 -0
  190. /package/dist/{ink → render}/components/RawAnsi.d.ts +0 -0
  191. /package/dist/{ink → render}/components/ScrollBox.d.ts +0 -0
  192. /package/dist/{ink → render}/components/Spacer.d.ts +0 -0
  193. /package/dist/{ink → render}/components/StdinContext.d.ts +0 -0
  194. /package/dist/{ink → render}/components/TerminalFocusContext.d.ts +0 -0
  195. /package/dist/{ink → render}/components/TerminalSizeContext.d.ts +0 -0
  196. /package/dist/{ink → render}/components/Text.d.ts +0 -0
  197. /package/dist/{ink → render}/constants.d.ts +0 -0
  198. /package/dist/{ink → render}/cursor.d.ts +0 -0
  199. /package/dist/{ink → render}/devtools.d.ts +0 -0
  200. /package/dist/{ink → render}/dom.d.ts +0 -0
  201. /package/dist/{ink → render}/events/click-event.d.ts +0 -0
  202. /package/dist/{ink → render}/events/dispatcher.d.ts +0 -0
  203. /package/dist/{ink → render}/events/emitter.d.ts +0 -0
  204. /package/dist/{ink → render}/events/event-handlers.d.ts +0 -0
  205. /package/dist/{ink → render}/events/event.d.ts +0 -0
  206. /package/dist/{ink → render}/events/focus-event.d.ts +0 -0
  207. /package/dist/{ink → render}/events/input-event.d.ts +0 -0
  208. /package/dist/{ink → render}/events/keyboard-event.d.ts +0 -0
  209. /package/dist/{ink → render}/events/paste-event.d.ts +0 -0
  210. /package/dist/{ink → render}/events/resize-event.d.ts +0 -0
  211. /package/dist/{ink → render}/events/terminal-event.d.ts +0 -0
  212. /package/dist/{ink → render}/events/terminal-focus-event.d.ts +0 -0
  213. /package/dist/{ink → render}/focus.d.ts +0 -0
  214. /package/dist/{ink → render}/frame.d.ts +0 -0
  215. /package/dist/{ink → render}/get-max-width.d.ts +0 -0
  216. /package/dist/{ink → render}/hit-test.d.ts +0 -0
  217. /package/dist/{ink → render}/hooks/use-animation-frame.d.ts +0 -0
  218. /package/dist/{ink → render}/hooks/use-app.d.ts +0 -0
  219. /package/dist/{ink → render}/hooks/use-declared-cursor.d.ts +0 -0
  220. /package/dist/{ink → render}/hooks/use-interval.d.ts +0 -0
  221. /package/dist/{ink → render}/hooks/use-search-highlight.d.ts +0 -0
  222. /package/dist/{ink → render}/hooks/use-selection.d.ts +0 -0
  223. /package/dist/{ink → render}/hooks/use-stdin.d.ts +0 -0
  224. /package/dist/{ink → render}/hooks/use-tab-status.d.ts +0 -0
  225. /package/dist/{ink → render}/hooks/use-terminal-focus.d.ts +0 -0
  226. /package/dist/{ink → render}/hooks/use-terminal-title.d.ts +0 -0
  227. /package/dist/{ink → render}/hooks/use-terminal-viewport.d.ts +0 -0
  228. /package/dist/{ink → render}/index.d.ts +0 -0
  229. /package/dist/{ink → render}/ink.d.ts +0 -0
  230. /package/dist/{ink → render}/instances.d.ts +0 -0
  231. /package/dist/{ink → render}/layout/engine.d.ts +0 -0
  232. /package/dist/{ink → render}/layout/geometry.d.ts +0 -0
  233. /package/dist/{ink → render}/layout/node.d.ts +0 -0
  234. /package/dist/{ink → render}/layout/yoga.d.ts +0 -0
  235. /package/dist/{ink → render}/line-width-cache.d.ts +0 -0
  236. /package/dist/{ink → render}/log-update.d.ts +0 -0
  237. /package/dist/{ink → render}/measure-element.d.ts +0 -0
  238. /package/dist/{ink → render}/measure-text.d.ts +0 -0
  239. /package/dist/{ink → render}/node-cache.d.ts +0 -0
  240. /package/dist/{ink → render}/optimizer.d.ts +0 -0
  241. /package/dist/{ink → render}/output.d.ts +0 -0
  242. /package/dist/{ink → render}/parse-keypress.d.ts +0 -0
  243. /package/dist/{ink → render}/reconciler.d.ts +0 -0
  244. /package/dist/{ink → render}/render-border.d.ts +0 -0
  245. /package/dist/{ink → render}/render-node-to-output.d.ts +0 -0
  246. /package/dist/{ink → render}/render-to-screen.d.ts +0 -0
  247. /package/dist/{ink → render}/renderer.d.ts +0 -0
  248. /package/dist/{ink → render}/root.d.ts +0 -0
  249. /package/dist/{ink → render}/screen.d.ts +0 -0
  250. /package/dist/{ink → render}/searchHighlight.d.ts +0 -0
  251. /package/dist/{ink → render}/selection.d.ts +0 -0
  252. /package/dist/{ink → render}/squash-text-nodes.d.ts +0 -0
  253. /package/dist/{ink → render}/stringWidth.d.ts +0 -0
  254. /package/dist/{ink → render}/styles.d.ts +0 -0
  255. /package/dist/{ink → render}/supports-hyperlinks.d.ts +0 -0
  256. /package/dist/{ink → render}/tabstops.d.ts +0 -0
  257. /package/dist/{ink → render}/terminal-focus-state.d.ts +0 -0
  258. /package/dist/{ink → render}/terminal-querier.d.ts +0 -0
  259. /package/dist/{ink → render}/terminal.d.ts +0 -0
  260. /package/dist/{ink → render}/termio/ansi.d.ts +0 -0
  261. /package/dist/{ink → render}/termio/csi.d.ts +0 -0
  262. /package/dist/{ink → render}/termio/dec.d.ts +0 -0
  263. /package/dist/{ink → render}/termio/esc.d.ts +0 -0
  264. /package/dist/{ink → render}/termio/osc.d.ts +0 -0
  265. /package/dist/{ink → render}/termio/parser.d.ts +0 -0
  266. /package/dist/{ink → render}/termio/sgr.d.ts +0 -0
  267. /package/dist/{ink → render}/termio/tokenize.d.ts +0 -0
  268. /package/dist/{ink → render}/termio/types.d.ts +0 -0
  269. /package/dist/{ink → render}/termio.d.ts +0 -0
  270. /package/dist/{ink → render}/useTerminalNotification.d.ts +0 -0
  271. /package/dist/{ink → render}/warn.d.ts +0 -0
  272. /package/dist/{ink → render}/widest-line.d.ts +0 -0
  273. /package/dist/{ink → render}/wrap-text.d.ts +0 -0
  274. /package/dist/{ink → render}/wrapAnsi.d.ts +0 -0
@@ -24,6 +24,8 @@ export interface ModelEntry {
24
24
  baseUrl?: string;
25
25
  apiKey?: string;
26
26
  maxOutputTokens?: number;
27
+ /** Per-model context window size. Falls back to config.maxContextTokens → 200_000. */
28
+ maxContextTokens?: number;
27
29
  }
28
30
  export declare class ModelPool {
29
31
  private models;
@@ -35,6 +37,8 @@ export declare class ModelPool {
35
37
  constructor(entries?: ModelEntry[], defaultKey?: string);
36
38
  /** Register a model at runtime. */
37
39
  register(entry: ModelEntry): void;
40
+ /** Fill in known defaults (e.g. context window for DeepSeek V4) when the entry doesn't specify them. */
41
+ private withBuiltinDefaults;
38
42
  /** Switch the active model. Throws if key not found. */
39
43
  switch(key: string): ModelEntry;
40
44
  /** Get a model by key. No key = active model. Returns undefined if not found. */
@@ -1,19 +1,80 @@
1
1
  /**
2
- * Simple file logger for debug/runtime logs.
2
+ * Unified file logger for code-shell.
3
3
  *
4
- * Logs go to ~/.code-shell/logs/YYYY-MM-DD.log
4
+ * Single sink: ~/.code-shell/logs/YYYY-MM-DD.log (JSON Lines).
5
+ *
6
+ * Level defaults:
7
+ * - Local dev (CODE_SHELL_DEV=1, or running from src/, or --debug) → "debug"
8
+ * - Otherwise → "info"
9
+ * - CODE_SHELL_LOG_LEVEL overrides everything.
10
+ *
11
+ * Category filter (--debug=mcp,api or CODE_SHELL_DEBUG=mcp,api):
12
+ * When set, only logs whose `cat` matches are written.
13
+ *
14
+ * Disable entirely: CODE_SHELL_LOG=0
5
15
  */
6
16
  export type LogLevel = "debug" | "info" | "warn" | "error";
17
+ export declare function setCurrentSid(sid: string): void;
18
+ export declare function getCurrentSid(): string;
19
+ export declare function getInMemoryErrors(): ReadonlyArray<{
20
+ msg: string;
21
+ t: string;
22
+ data?: unknown;
23
+ }>;
24
+ export type ErrorLogSink = {
25
+ logError: (error: Error) => void;
26
+ logMCPError: (serverName: string, error: unknown) => void;
27
+ logMCPDebug: (serverName: string, message: string) => void;
28
+ getErrorsPath: () => string;
29
+ getMCPLogsPath: (serverName: string) => string;
30
+ };
31
+ export declare function attachErrorLogSink(sink: ErrorLogSink): void;
32
+ export interface LogContext {
33
+ cat?: string;
34
+ sid?: string;
35
+ [key: string]: unknown;
36
+ }
7
37
  declare class Logger {
8
- private logDir;
9
- private minLevel;
10
- private enabled;
11
- constructor();
38
+ private readonly context;
39
+ private readonly enabled;
40
+ private readonly minLevel;
41
+ private readonly categoryFilter;
42
+ private readonly stderrEcho;
43
+ private dirReady;
44
+ constructor(context?: LogContext);
45
+ child(extra: LogContext): Logger;
46
+ /**
47
+ * Set the session id stamped on every subsequent log entry written by
48
+ * any logger in the process. Called by Engine once a run's
49
+ * authoritative session id is known.
50
+ */
51
+ setSid(sid: string): void;
52
+ getSid(): string;
12
53
  debug(msg: string, data?: Record<string, unknown>): void;
13
54
  info(msg: string, data?: Record<string, unknown>): void;
14
55
  warn(msg: string, data?: Record<string, unknown>): void;
15
- error(msg: string, data?: Record<string, unknown>): void;
16
- private log;
56
+ error(msgOrErr: string | Error | unknown, data?: Record<string, unknown> | Error): void;
57
+ private recordError;
58
+ private write;
59
+ getMinLevel(): LogLevel;
60
+ isCategoryActive(cat: string): boolean;
61
+ /**
62
+ * Open a span: writes a `<name>.begin` debug entry now and returns a handle
63
+ * whose `end()` writes `<name>.end` with `duration_ms` populated. Use for
64
+ * any "I want begin → end + how long" pattern (tool exec, LLM request,
65
+ * permission ask, etc.) so the begin/end pair is grouped under one cat
66
+ * and the duration is computed once instead of by hand from timestamps.
67
+ */
68
+ span(name: string, data?: Record<string, unknown>): LogSpan;
69
+ }
70
+ export interface LogSpan {
71
+ end(extra?: Record<string, unknown>): void;
72
+ fail(err: unknown, extra?: Record<string, unknown>): void;
17
73
  }
18
74
  export declare const logger: Logger;
75
+ export declare function getLogsDir(): string;
76
+ export declare function getRecentLogs(n?: number): string[];
77
+ export declare function rotateLogs(): void;
78
+ /** @internal — for tests */
79
+ export declare function _resetLoggerStateForTesting(): void;
19
80
  export {};
@@ -0,0 +1,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkFV2ARONZcjs = require('./chunk-FV2ARONZ.cjs');
4
+ require('./chunk-IJSHQGMP.cjs');
5
+
6
+
7
+ exports.SettingsManager = _chunkFV2ARONZcjs.SettingsManager;
@@ -0,0 +1,7 @@
1
+ import {
2
+ SettingsManager
3
+ } from "./chunk-75E4BBFC.js";
4
+ import "./chunk-DI7RDLOS.js";
5
+ export {
6
+ SettingsManager
7
+ };
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  MCPManager
3
- } from "./chunk-BE6IPRDM.js";
4
- import "./chunk-X4HAERTQ.js";
3
+ } from "./chunk-2EUAE7AY.js";
4
+ import "./chunk-ZRVPCXI7.js";
5
5
  import "./chunk-DI7RDLOS.js";
6
6
  export {
7
7
  MCPManager
@@ -0,0 +1,8 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkC7C7ZZY4cjs = require('./chunk-C7C7ZZY4.cjs');
4
+ require('./chunk-JHNCK7JP.cjs');
5
+ require('./chunk-IJSHQGMP.cjs');
6
+
7
+
8
+ exports.MCPManager = _chunkC7C7ZZY4cjs.MCPManager;
@@ -0,0 +1,9 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+ var _chunkM2QI5X3Xcjs = require('./chunk-M2QI5X3X.cjs');
5
+ require('./chunk-IJSHQGMP.cjs');
6
+
7
+
8
+
9
+ exports.MemoryManager = _chunkM2QI5X3Xcjs.MemoryManager; exports.resolveMemoryBaseDir = _chunkM2QI5X3Xcjs.resolveMemoryBaseDir;
@@ -0,0 +1,9 @@
1
+ import {
2
+ MemoryManager,
3
+ resolveMemoryBaseDir
4
+ } from "./chunk-I57ZD5IQ.js";
5
+ import "./chunk-DI7RDLOS.js";
6
+ export {
7
+ MemoryManager,
8
+ resolveMemoryBaseDir
9
+ };
@@ -1,10 +1,10 @@
1
1
  /**
2
2
  * Pure-TypeScript port of yoga-layout (Meta's flexbox engine).
3
3
  *
4
- * This matches the `yoga-layout/load` API surface used by src/ink/layout/yoga.ts.
4
+ * This matches the `yoga-layout/load` API surface used by src/render/layout/yoga.ts.
5
5
  * The upstream C++ source is ~2500 lines in CalculateLayout.cpp alone; this port
6
6
  * is a simplified single-pass flexbox implementation that covers the subset of
7
- * features Ink actually uses:
7
+ * features the render engine actually uses:
8
8
  * - flex-direction (row/column + reverse)
9
9
  * - flex-grow / flex-shrink / flex-basis
10
10
  * - align-items / align-self (stretch, flex-start, center, flex-end)
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  OpenAIClient
3
- } from "./chunk-VKGNCYRL.js";
4
- import "./chunk-O6F2EF2Z.js";
3
+ } from "./chunk-LMEKCQX4.js";
4
+ import "./chunk-SCDKLTN3.js";
5
5
  import "./chunk-FUOKLKR2.js";
6
+ import "./chunk-ZRVPCXI7.js";
6
7
  import "./chunk-DI7RDLOS.js";
7
8
  export {
8
9
  OpenAIClient
@@ -0,0 +1,10 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkYAFCN7ZWcjs = require('./chunk-YAFCN7ZW.cjs');
4
+ require('./chunk-GZBD6QRS.cjs');
5
+ require('./chunk-EL2RL5DG.cjs');
6
+ require('./chunk-JHNCK7JP.cjs');
7
+ require('./chunk-IJSHQGMP.cjs');
8
+
9
+
10
+ exports.OpenAIClient = _chunkYAFCN7ZWcjs.OpenAIClient;
@@ -0,0 +1,15 @@
1
+ import {
2
+ findOpenRouterModel,
3
+ getOpenRouterModels,
4
+ getOpenRouterSnapshot,
5
+ listOpenRouterModelsByVendor,
6
+ setOpenRouterSnapshot
7
+ } from "./chunk-OMRGA6TI.js";
8
+ import "./chunk-DI7RDLOS.js";
9
+ export {
10
+ findOpenRouterModel,
11
+ getOpenRouterModels,
12
+ getOpenRouterSnapshot,
13
+ listOpenRouterModelsByVendor,
14
+ setOpenRouterSnapshot
15
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+
6
+
7
+ var _chunkTATCTZSBcjs = require('./chunk-TATCTZSB.cjs');
8
+ require('./chunk-IJSHQGMP.cjs');
9
+
10
+
11
+
12
+
13
+
14
+
15
+ exports.findOpenRouterModel = _chunkTATCTZSBcjs.findOpenRouterModel; exports.getOpenRouterModels = _chunkTATCTZSBcjs.getOpenRouterModels; exports.getOpenRouterSnapshot = _chunkTATCTZSBcjs.getOpenRouterSnapshot; exports.listOpenRouterModelsByVendor = _chunkTATCTZSBcjs.listOpenRouterModelsByVendor; exports.setOpenRouterSnapshot = _chunkTATCTZSBcjs.setOpenRouterSnapshot;
@@ -0,0 +1,11 @@
1
+ import {
2
+ syncOpenRouterCatalog
3
+ } from "./chunk-FA5KD34T.js";
4
+ import {
5
+ getOpenRouterSnapshot
6
+ } from "./chunk-OMRGA6TI.js";
7
+ import "./chunk-DI7RDLOS.js";
8
+ export {
9
+ getOpenRouterSnapshot,
10
+ syncOpenRouterCatalog
11
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkG76E5FOBcjs = require('./chunk-G76E5FOB.cjs');
4
+
5
+
6
+ var _chunkTATCTZSBcjs = require('./chunk-TATCTZSB.cjs');
7
+ require('./chunk-IJSHQGMP.cjs');
8
+
9
+
10
+
11
+ exports.getOpenRouterSnapshot = _chunkTATCTZSBcjs.getOpenRouterSnapshot; exports.syncOpenRouterCatalog = _chunkG76E5FOBcjs.syncOpenRouterCatalog;
@@ -1,23 +1,19 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkWYKNZ54Ecjs = require('../chunk-WYKNZ54E.cjs');
4
- require('../chunk-Q6BYFYGD.cjs');
3
+ var _chunk3CAZIWUAcjs = require('../chunk-3CAZIWUA.cjs');
4
+ require('../chunk-VWFET3MG.cjs');
5
+ require('../chunk-KOGV6PDQ.cjs');
6
+ require('../chunk-C7C7ZZY4.cjs');
7
+ require('../chunk-YD7XTI7T.cjs');
8
+ require('../chunk-M2QI5X3X.cjs');
9
+ require('../chunk-OP57WUWQ.cjs');
10
+ require('../chunk-FV2ARONZ.cjs');
5
11
  require('../chunk-3QR52LL5.cjs');
6
- require('../chunk-UK2SU23S.cjs');
7
- require('../chunk-FGZGCFJX.cjs');
8
- require('../chunk-JT2WSQSR.cjs');
9
- require('../chunk-BMH65OVB.cjs');
10
- require('../chunk-LRAY5IYC.cjs');
11
- require('../chunk-HD7MT5XU.cjs');
12
- require('../chunk-3EAEC566.cjs');
13
- require('../chunk-CSO5EOEP.cjs');
14
- require('../chunk-NG73UR3L.cjs');
15
- require('../chunk-3EUDE77E.cjs');
16
- require('../chunk-FVP7XJGS.cjs');
17
- require('../chunk-IMMTBZ33.cjs');
12
+ require('../chunk-X2DNIMPC.cjs');
13
+ require('../chunk-HOXQLX5R.cjs');
18
14
  require('../chunk-EL2RL5DG.cjs');
19
- require('../chunk-XHC2JMEC.cjs');
15
+ require('../chunk-JHNCK7JP.cjs');
20
16
  require('../chunk-IJSHQGMP.cjs');
21
17
 
22
18
 
23
- exports.defineProduct = _chunkWYKNZ54Ecjs.defineProduct;
19
+ exports.defineProduct = _chunk3CAZIWUAcjs.defineProduct;
@@ -1,22 +1,18 @@
1
1
  import {
2
2
  defineProduct
3
- } from "../chunk-AP5F6VYE.js";
4
- import "../chunk-JUHRV2XF.js";
3
+ } from "../chunk-REFCCVDM.js";
4
+ import "../chunk-ID6EJUHP.js";
5
+ import "../chunk-F5BS3GUC.js";
6
+ import "../chunk-2EUAE7AY.js";
7
+ import "../chunk-5C5HIOML.js";
8
+ import "../chunk-I57ZD5IQ.js";
9
+ import "../chunk-ZLPJJZUW.js";
10
+ import "../chunk-75E4BBFC.js";
5
11
  import "../chunk-SK62UVS6.js";
6
- import "../chunk-KO2FPF7G.js";
7
- import "../chunk-6ZIROYXX.js";
8
- import "../chunk-OG4MIQJ6.js";
9
- import "../chunk-BE6IPRDM.js";
10
- import "../chunk-J5XW6UYL.js";
11
- import "../chunk-4RRUP4MM.js";
12
- import "../chunk-4PKZPFCD.js";
13
- import "../chunk-4SFPFHMG.js";
14
- import "../chunk-S74VVJBF.js";
15
- import "../chunk-ZXYDDJEJ.js";
16
- import "../chunk-SQZHPD3S.js";
17
- import "../chunk-X4HAERTQ.js";
12
+ import "../chunk-OUC2DFA7.js";
13
+ import "../chunk-Y7TSCDF6.js";
18
14
  import "../chunk-FUOKLKR2.js";
19
- import "../chunk-C7JBCO5V.js";
15
+ import "../chunk-ZRVPCXI7.js";
20
16
  import "../chunk-DI7RDLOS.js";
21
17
  export {
22
18
  defineProduct
@@ -79,11 +79,11 @@ export interface ConfigureParams {
79
79
  }
80
80
  /** Query server state. */
81
81
  export interface QueryParams {
82
- type: "sessions" | "tools" | "config" | "session_detail" | "compact" | "config_set" | "models";
82
+ type: "sessions" | "tools" | "config" | "session_detail" | "compact" | "config_set" | "config_get" | "permission_set" | "models" | "arena_status";
83
83
  sessionId?: string;
84
- /** Used by config_set: dotted key path */
84
+ /** Used by config_set / permission_set: dotted key path or mode field */
85
85
  key?: string;
86
- /** Used by config_set: new value */
86
+ /** Used by config_set / permission_set: new value */
87
87
  value?: unknown;
88
88
  }
89
89
  export interface QueryResult {
@@ -107,6 +107,14 @@ export interface ToolListResult {
107
107
  description: string;
108
108
  }>;
109
109
  }
110
+ /** Shape of a model-pool entry returned by query("models"). */
111
+ export interface ProtocolModelEntry {
112
+ key: string;
113
+ label: string;
114
+ model: string;
115
+ provider: string;
116
+ active: boolean;
117
+ }
110
118
  export interface ConfigResult {
111
119
  permissionMode: PermissionMode;
112
120
  planMode: boolean;
@@ -16,7 +16,7 @@ type Options = {
16
16
  * However, if user pastes text and it's more than one character, the callback will be called only once and the whole string will be passed as `input`.
17
17
  *
18
18
  * ```
19
- * import {useInput} from 'ink';
19
+ * import {useInput} from '@/render';
20
20
  *
21
21
  * const UserInput = () => {
22
22
  * useInput((input, key) => {
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkMOILS4WEcjs = require('../chunk-MOILS4WE.cjs');
3
+ var _chunkJHXNOB5Gcjs = require('../chunk-JHXNOB5G.cjs');
4
4
 
5
5
 
6
6
 
@@ -15,22 +15,18 @@ var _chunkMOILS4WEcjs = require('../chunk-MOILS4WE.cjs');
15
15
 
16
16
 
17
17
 
18
- var _chunkQ6BYFYGDcjs = require('../chunk-Q6BYFYGD.cjs');
18
+ var _chunkVWFET3MGcjs = require('../chunk-VWFET3MG.cjs');
19
+ require('../chunk-KOGV6PDQ.cjs');
20
+ require('../chunk-C7C7ZZY4.cjs');
21
+ require('../chunk-YD7XTI7T.cjs');
22
+ require('../chunk-M2QI5X3X.cjs');
23
+ require('../chunk-OP57WUWQ.cjs');
24
+ require('../chunk-FV2ARONZ.cjs');
19
25
  require('../chunk-3QR52LL5.cjs');
20
- require('../chunk-UK2SU23S.cjs');
21
- require('../chunk-FGZGCFJX.cjs');
22
- require('../chunk-JT2WSQSR.cjs');
23
- require('../chunk-BMH65OVB.cjs');
24
- require('../chunk-LRAY5IYC.cjs');
25
- require('../chunk-HD7MT5XU.cjs');
26
- require('../chunk-3EAEC566.cjs');
27
- require('../chunk-CSO5EOEP.cjs');
28
- require('../chunk-NG73UR3L.cjs');
29
- require('../chunk-3EUDE77E.cjs');
30
- require('../chunk-FVP7XJGS.cjs');
31
- require('../chunk-IMMTBZ33.cjs');
26
+ require('../chunk-X2DNIMPC.cjs');
27
+ require('../chunk-HOXQLX5R.cjs');
32
28
  require('../chunk-EL2RL5DG.cjs');
33
- require('../chunk-XHC2JMEC.cjs');
29
+ require('../chunk-JHNCK7JP.cjs');
34
30
  require('../chunk-IJSHQGMP.cjs');
35
31
 
36
32
 
@@ -47,4 +43,4 @@ require('../chunk-IJSHQGMP.cjs');
47
43
 
48
44
 
49
45
 
50
- exports.ArtifactTracker = _chunkQ6BYFYGDcjs.ArtifactTracker; exports.CheckpointWriter = _chunkQ6BYFYGDcjs.CheckpointWriter; exports.CompositeEvaluator = _chunkQ6BYFYGDcjs.CompositeEvaluator; exports.EngineRunner = _chunkQ6BYFYGDcjs.EngineRunner; exports.FileRunStore = _chunkQ6BYFYGDcjs.FileRunStore; exports.Heartbeat = _chunkQ6BYFYGDcjs.Heartbeat; exports.NoopEvaluator = _chunkQ6BYFYGDcjs.NoopEvaluator; exports.RunApprovalBackend = _chunkQ6BYFYGDcjs.RunApprovalBackend; exports.RunLock = _chunkQ6BYFYGDcjs.RunLock; exports.RunManager = _chunkQ6BYFYGDcjs.RunManager; exports.RunQueue = _chunkQ6BYFYGDcjs.RunQueue; exports.VALID_TRANSITIONS = _chunkQ6BYFYGDcjs.VALID_TRANSITIONS; exports.createRunAskUserFn = _chunkQ6BYFYGDcjs.createRunAskUserFn; exports.createRunManager = _chunkMOILS4WEcjs.createRunManager;
46
+ exports.ArtifactTracker = _chunkVWFET3MGcjs.ArtifactTracker; exports.CheckpointWriter = _chunkVWFET3MGcjs.CheckpointWriter; exports.CompositeEvaluator = _chunkVWFET3MGcjs.CompositeEvaluator; exports.EngineRunner = _chunkVWFET3MGcjs.EngineRunner; exports.FileRunStore = _chunkVWFET3MGcjs.FileRunStore; exports.Heartbeat = _chunkVWFET3MGcjs.Heartbeat; exports.NoopEvaluator = _chunkVWFET3MGcjs.NoopEvaluator; exports.RunApprovalBackend = _chunkVWFET3MGcjs.RunApprovalBackend; exports.RunLock = _chunkVWFET3MGcjs.RunLock; exports.RunManager = _chunkVWFET3MGcjs.RunManager; exports.RunQueue = _chunkVWFET3MGcjs.RunQueue; exports.VALID_TRANSITIONS = _chunkVWFET3MGcjs.VALID_TRANSITIONS; exports.createRunAskUserFn = _chunkVWFET3MGcjs.createRunAskUserFn; exports.createRunManager = _chunkJHXNOB5Gcjs.createRunManager;
package/dist/run/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  createRunManager
3
- } from "../chunk-FECTK5KJ.js";
3
+ } from "../chunk-SW3L7HIM.js";
4
4
  import {
5
5
  ArtifactTracker,
6
6
  CheckpointWriter,
@@ -15,22 +15,18 @@ import {
15
15
  RunQueue,
16
16
  VALID_TRANSITIONS,
17
17
  createRunAskUserFn
18
- } from "../chunk-JUHRV2XF.js";
18
+ } from "../chunk-ID6EJUHP.js";
19
+ import "../chunk-F5BS3GUC.js";
20
+ import "../chunk-2EUAE7AY.js";
21
+ import "../chunk-5C5HIOML.js";
22
+ import "../chunk-I57ZD5IQ.js";
23
+ import "../chunk-ZLPJJZUW.js";
24
+ import "../chunk-75E4BBFC.js";
19
25
  import "../chunk-SK62UVS6.js";
20
- import "../chunk-KO2FPF7G.js";
21
- import "../chunk-6ZIROYXX.js";
22
- import "../chunk-OG4MIQJ6.js";
23
- import "../chunk-BE6IPRDM.js";
24
- import "../chunk-J5XW6UYL.js";
25
- import "../chunk-4RRUP4MM.js";
26
- import "../chunk-4PKZPFCD.js";
27
- import "../chunk-4SFPFHMG.js";
28
- import "../chunk-S74VVJBF.js";
29
- import "../chunk-ZXYDDJEJ.js";
30
- import "../chunk-SQZHPD3S.js";
31
- import "../chunk-X4HAERTQ.js";
26
+ import "../chunk-OUC2DFA7.js";
27
+ import "../chunk-Y7TSCDF6.js";
32
28
  import "../chunk-FUOKLKR2.js";
33
- import "../chunk-C7JBCO5V.js";
29
+ import "../chunk-ZRVPCXI7.js";
34
30
  import "../chunk-DI7RDLOS.js";
35
31
  export {
36
32
  ArtifactTracker,
@@ -1,7 +1,12 @@
1
1
  /**
2
2
  * Memory system — persistent cross-session memory.
3
3
  *
4
- * Stores structured memory entries in ~/.code-shell/memory/ as individual markdown files.
4
+ * Stores structured memory entries as individual markdown files under a base
5
+ * directory. Resolution order for the base directory:
6
+ * 1. explicit `baseDir` constructor arg
7
+ * 2. CODE_SHELL_HOME env var
8
+ * 3. ~/.code-shell
9
+ *
5
10
  * MEMORY.md is the index file.
6
11
  */
7
12
  export interface MemoryEntry {
@@ -11,10 +16,19 @@ export interface MemoryEntry {
11
16
  content: string;
12
17
  fileName: string;
13
18
  }
19
+ export interface MemoryManagerOptions {
20
+ /** Project root path; when set, memories are scoped under projects/<hash>/memory. */
21
+ projectDir?: string;
22
+ /** Override the base directory (~/.code-shell by default). Takes precedence over env. */
23
+ baseDir?: string;
24
+ }
25
+ export declare function resolveMemoryBaseDir(override?: string): string;
14
26
  export declare class MemoryManager {
27
+ private readonly baseDir;
15
28
  private readonly memoryDir;
16
29
  private readonly indexPath;
17
- constructor(projectDir?: string);
30
+ private indexCache;
31
+ constructor(options?: MemoryManagerOptions | string);
18
32
  getMemoryDir(): string;
19
33
  /**
20
34
  * Save a memory entry. Creates the file and updates the index.
@@ -40,6 +54,12 @@ export declare class MemoryManager {
40
54
  * Build a prompt-friendly summary of all memories.
41
55
  */
42
56
  buildMemoryContext(): string;
43
- private updateIndex;
57
+ /**
58
+ * Lazy-build the in-memory index from disk on first use, then
59
+ * keep it in sync incrementally via save/delete. Avoids the
60
+ * O(N²) re-read of every memory file on every save.
61
+ */
62
+ private ensureIndexCache;
63
+ private writeIndex;
44
64
  private slugify;
45
65
  }
@@ -19,5 +19,8 @@ export declare class SessionManager {
19
19
  * then diverges independently.
20
20
  */
21
21
  fork(sourceSessionId: string, forkAtTurn?: number): SessionBundle;
22
- list(limit?: number): SessionState[];
22
+ list(limit?: number): SessionListEntry[];
23
23
  }
24
+ export type SessionListEntry = SessionState & {
25
+ preview?: string;
26
+ };
@@ -1,8 +1,8 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkNG73UR3Lcjs = require('./chunk-NG73UR3L.cjs');
3
+ var _chunkOP57WUWQcjs = require('./chunk-OP57WUWQ.cjs');
4
4
  require('./chunk-EL2RL5DG.cjs');
5
5
  require('./chunk-IJSHQGMP.cjs');
6
6
 
7
7
 
8
- exports.SessionManager = _chunkNG73UR3Lcjs.SessionManager;
8
+ exports.SessionManager = _chunkOP57WUWQcjs.SessionManager;
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  SessionManager
3
- } from "./chunk-S74VVJBF.js";
3
+ } from "./chunk-ZLPJJZUW.js";
4
4
  import "./chunk-FUOKLKR2.js";
5
5
  import "./chunk-DI7RDLOS.js";
6
6
  export {
@@ -22,6 +22,15 @@ export declare class SettingsManager {
22
22
  * Invalidate cached merge.
23
23
  */
24
24
  invalidate(): void;
25
+ /**
26
+ * Persist a single setting (dotted key path) to the user-level config file
27
+ * at ~/.code-shell/settings.json. Other sources (project / local /
28
+ * managed) are intentionally untouched: writing back to project/local
29
+ * would surprise version control, and managed is read-only.
30
+ *
31
+ * The merged cache is invalidated so the next get() picks up the change.
32
+ */
33
+ saveUserSetting(key: string, value: unknown): void;
25
34
  private loadJsonFile;
26
35
  private deepMerge;
27
36
  }