@atomic-chat/core 0.20.7 → 0.21.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 (303) hide show
  1. package/dist/backend/install/service.d.ts +2 -20
  2. package/dist/backend/install/service.js +1 -0
  3. package/dist/backend/install/service.js.map +1 -1
  4. package/dist/cli/launch.d.ts +23 -3
  5. package/dist/cli/launch.js +59 -8
  6. package/dist/cli/launch.js.map +1 -1
  7. package/dist/cli/main.d.ts +1 -1
  8. package/dist/contracts/diagnostics.d.ts +21 -0
  9. package/dist/contracts/diagnostics.js +70 -0
  10. package/dist/contracts/diagnostics.js.map +1 -0
  11. package/dist/contracts/errors.d.ts +17 -75
  12. package/dist/contracts/errors.js +130 -2
  13. package/dist/contracts/errors.js.map +1 -1
  14. package/dist/contracts/events.d.ts +8 -0
  15. package/dist/contracts/index.d.ts +1 -0
  16. package/dist/contracts/index.js +1 -0
  17. package/dist/contracts/index.js.map +1 -1
  18. package/dist/contracts/settings.d.ts +5 -0
  19. package/dist/contracts/settings.js.map +1 -1
  20. package/dist/core/atomic-core.d.ts +3 -1
  21. package/dist/core/atomic-core.js +6 -2
  22. package/dist/core/atomic-core.js.map +1 -1
  23. package/dist/core/create.js +13 -3
  24. package/dist/core/create.js.map +1 -1
  25. package/dist/core/managed-environment.d.ts +2 -0
  26. package/dist/core/managed-environment.js +2 -0
  27. package/dist/core/managed-environment.js.map +1 -1
  28. package/dist/core/sessions.js +1 -0
  29. package/dist/core/sessions.js.map +1 -1
  30. package/dist/decision/service.d.ts +2 -23
  31. package/dist/decision/service.js +27 -0
  32. package/dist/decision/service.js.map +1 -1
  33. package/dist/decision/wiring.d.ts +2 -0
  34. package/dist/decision/wiring.js +1 -6
  35. package/dist/decision/wiring.js.map +1 -1
  36. package/dist/diffusion/errors.js +3 -3
  37. package/dist/diffusion/errors.js.map +1 -1
  38. package/dist/diffusion/jobs.js +1 -0
  39. package/dist/diffusion/jobs.js.map +1 -1
  40. package/dist/diffusion/remote-job.js +1 -0
  41. package/dist/diffusion/remote-job.js.map +1 -1
  42. package/dist/diffusion/service.d.ts +2 -6
  43. package/dist/diffusion/service.js +1 -0
  44. package/dist/diffusion/service.js.map +1 -1
  45. package/dist/diffusion/session.d.ts +2 -5
  46. package/dist/diffusion/session.js +1 -0
  47. package/dist/diffusion/session.js.map +1 -1
  48. package/dist/diffusion/wiring.d.ts +2 -0
  49. package/dist/diffusion/wiring.js +1 -5
  50. package/dist/diffusion/wiring.js.map +1 -1
  51. package/dist/downloads/downloader.d.ts +2 -18
  52. package/dist/downloads/downloader.js +204 -96
  53. package/dist/downloads/downloader.js.map +1 -1
  54. package/dist/downloads/protocol.d.ts +6 -2
  55. package/dist/downloads/protocol.js +27 -5
  56. package/dist/downloads/protocol.js.map +1 -1
  57. package/dist/embedding/service.d.ts +2 -18
  58. package/dist/embedding/service.js +21 -1
  59. package/dist/embedding/service.js.map +1 -1
  60. package/dist/embedding/wiring.d.ts +2 -0
  61. package/dist/embedding/wiring.js +1 -6
  62. package/dist/embedding/wiring.js.map +1 -1
  63. package/dist/integrations/catalog.d.ts +25 -8
  64. package/dist/integrations/catalog.js +105 -38
  65. package/dist/integrations/catalog.js.map +1 -1
  66. package/dist/integrations/configure/atomic-agent.d.ts +9 -1
  67. package/dist/integrations/configure/atomic-agent.js +42 -3
  68. package/dist/integrations/configure/atomic-agent.js.map +1 -1
  69. package/dist/integrations/configure/backup.d.ts +21 -0
  70. package/dist/integrations/configure/backup.js +52 -0
  71. package/dist/integrations/configure/backup.js.map +1 -0
  72. package/dist/integrations/configure/claude-code.d.ts +11 -4
  73. package/dist/integrations/configure/claude-code.js +73 -24
  74. package/dist/integrations/configure/claude-code.js.map +1 -1
  75. package/dist/integrations/configure/cline.d.ts +14 -4
  76. package/dist/integrations/configure/cline.js +78 -6
  77. package/dist/integrations/configure/cline.js.map +1 -1
  78. package/dist/integrations/configure/codex.d.ts +5 -3
  79. package/dist/integrations/configure/codex.js +12 -5
  80. package/dist/integrations/configure/codex.js.map +1 -1
  81. package/dist/integrations/configure/copilot.d.ts +28 -5
  82. package/dist/integrations/configure/copilot.js +124 -8
  83. package/dist/integrations/configure/copilot.js.map +1 -1
  84. package/dist/integrations/configure/droid.d.ts +13 -7
  85. package/dist/integrations/configure/droid.js +48 -17
  86. package/dist/integrations/configure/droid.js.map +1 -1
  87. package/dist/integrations/configure/dsh.d.ts +36 -20
  88. package/dist/integrations/configure/dsh.js +250 -48
  89. package/dist/integrations/configure/dsh.js.map +1 -1
  90. package/dist/integrations/configure/goose.d.ts +21 -7
  91. package/dist/integrations/configure/goose.js +141 -10
  92. package/dist/integrations/configure/goose.js.map +1 -1
  93. package/dist/integrations/configure/hermes.d.ts +63 -10
  94. package/dist/integrations/configure/hermes.js +360 -75
  95. package/dist/integrations/configure/hermes.js.map +1 -1
  96. package/dist/integrations/configure/json-backup.d.ts +73 -0
  97. package/dist/integrations/configure/json-backup.js +292 -0
  98. package/dist/integrations/configure/json-backup.js.map +1 -0
  99. package/dist/integrations/configure/json-key-backup.d.ts +43 -0
  100. package/dist/integrations/configure/json-key-backup.js +113 -0
  101. package/dist/integrations/configure/json-key-backup.js.map +1 -0
  102. package/dist/integrations/configure/kilo.d.ts +4 -4
  103. package/dist/integrations/configure/kilo.js +6 -9
  104. package/dist/integrations/configure/kilo.js.map +1 -1
  105. package/dist/integrations/configure/legacy-env-block.d.ts +18 -0
  106. package/dist/integrations/configure/legacy-env-block.js +47 -0
  107. package/dist/integrations/configure/legacy-env-block.js.map +1 -0
  108. package/dist/integrations/configure/mimo.d.ts +3 -2
  109. package/dist/integrations/configure/mimo.js +8 -9
  110. package/dist/integrations/configure/mimo.js.map +1 -1
  111. package/dist/integrations/configure/muse.d.ts +3 -3
  112. package/dist/integrations/configure/muse.js +5 -6
  113. package/dist/integrations/configure/muse.js.map +1 -1
  114. package/dist/integrations/configure/openclaude.d.ts +22 -7
  115. package/dist/integrations/configure/openclaude.js +132 -39
  116. package/dist/integrations/configure/openclaude.js.map +1 -1
  117. package/dist/integrations/configure/openclaw.d.ts +19 -5
  118. package/dist/integrations/configure/openclaw.js +79 -23
  119. package/dist/integrations/configure/openclaw.js.map +1 -1
  120. package/dist/integrations/configure/opencode-style.d.ts +53 -11
  121. package/dist/integrations/configure/opencode-style.js +218 -23
  122. package/dist/integrations/configure/opencode-style.js.map +1 -1
  123. package/dist/integrations/configure/opencode.d.ts +5 -4
  124. package/dist/integrations/configure/opencode.js +8 -10
  125. package/dist/integrations/configure/opencode.js.map +1 -1
  126. package/dist/integrations/configure/openhands.d.ts +5 -4
  127. package/dist/integrations/configure/openhands.js +7 -7
  128. package/dist/integrations/configure/openhands.js.map +1 -1
  129. package/dist/integrations/configure/pi.d.ts +6 -5
  130. package/dist/integrations/configure/pi.js +79 -30
  131. package/dist/integrations/configure/pi.js.map +1 -1
  132. package/dist/integrations/configure/poolside.d.ts +5 -4
  133. package/dist/integrations/configure/poolside.js +7 -7
  134. package/dist/integrations/configure/poolside.js.map +1 -1
  135. package/dist/integrations/configure/registry.d.ts +6 -0
  136. package/dist/integrations/configure/registry.js +1 -0
  137. package/dist/integrations/configure/registry.js.map +1 -1
  138. package/dist/integrations/configure/zcode.d.ts +6 -7
  139. package/dist/integrations/configure/zcode.js +26 -11
  140. package/dist/integrations/configure/zcode.js.map +1 -1
  141. package/dist/integrations/configure/zed.d.ts +16 -4
  142. package/dist/integrations/configure/zed.js +61 -13
  143. package/dist/integrations/configure/zed.js.map +1 -1
  144. package/dist/lock/instance-lock.js +7 -3
  145. package/dist/lock/instance-lock.js.map +1 -1
  146. package/dist/models/gguf/kv-cache.d.ts +20 -1
  147. package/dist/models/gguf/kv-cache.js +97 -7
  148. package/dist/models/gguf/kv-cache.js.map +1 -1
  149. package/dist/models/gguf/reader.d.ts +5 -3
  150. package/dist/models/gguf/reader.js +10 -6
  151. package/dist/models/gguf/reader.js.map +1 -1
  152. package/dist/remote-access/manager.d.ts +2 -0
  153. package/dist/remote-access/manager.js +18 -2
  154. package/dist/remote-access/manager.js.map +1 -1
  155. package/dist/runtime/environment/service.d.ts +2 -14
  156. package/dist/runtime/environment/service.js +10 -0
  157. package/dist/runtime/environment/service.js.map +1 -1
  158. package/dist/runtime/environment/wiring.d.ts +2 -23
  159. package/dist/runtime/environment/wiring.js +1 -0
  160. package/dist/runtime/environment/wiring.js.map +1 -1
  161. package/dist/runtime/llamacpp/args.d.ts +14 -0
  162. package/dist/runtime/llamacpp/args.js +48 -4
  163. package/dist/runtime/llamacpp/args.js.map +1 -1
  164. package/dist/runtime/llamacpp/ctx-ladder.d.ts +6 -3
  165. package/dist/runtime/llamacpp/ctx-ladder.js +6 -3
  166. package/dist/runtime/llamacpp/ctx-ladder.js.map +1 -1
  167. package/dist/runtime/llamacpp/errors.d.ts +2 -2
  168. package/dist/runtime/llamacpp/errors.js +29 -19
  169. package/dist/runtime/llamacpp/errors.js.map +1 -1
  170. package/dist/runtime/llamacpp/fit-margin.d.ts +24 -0
  171. package/dist/runtime/llamacpp/fit-margin.js +31 -0
  172. package/dist/runtime/llamacpp/fit-margin.js.map +1 -1
  173. package/dist/runtime/llamacpp/generation-limits.d.ts +45 -0
  174. package/dist/runtime/llamacpp/generation-limits.js +61 -0
  175. package/dist/runtime/llamacpp/generation-limits.js.map +1 -0
  176. package/dist/runtime/llamacpp/load-plan.d.ts +14 -2
  177. package/dist/runtime/llamacpp/load-plan.js +64 -13
  178. package/dist/runtime/llamacpp/load-plan.js.map +1 -1
  179. package/dist/runtime/llamacpp/runtime.d.ts +1 -0
  180. package/dist/runtime/llamacpp/runtime.js +2 -0
  181. package/dist/runtime/llamacpp/runtime.js.map +1 -1
  182. package/dist/runtime/managed-engines/runtime.js +13 -2
  183. package/dist/runtime/managed-engines/runtime.js.map +1 -1
  184. package/dist/runtime/managed-engines/spec.d.ts +6 -0
  185. package/dist/runtime/managed-engines/spec.js.map +1 -1
  186. package/dist/runtime/managed-models/auto-limits.d.ts +47 -0
  187. package/dist/runtime/managed-models/auto-limits.js +60 -0
  188. package/dist/runtime/managed-models/auto-limits.js.map +1 -0
  189. package/dist/runtime/managed-models/index.d.ts +1 -0
  190. package/dist/runtime/managed-models/index.js +1 -0
  191. package/dist/runtime/managed-models/index.js.map +1 -1
  192. package/dist/runtime/mlx/config.d.ts +9 -5
  193. package/dist/runtime/mlx/config.js +12 -6
  194. package/dist/runtime/mlx/config.js.map +1 -1
  195. package/dist/runtime/mlx/model-files.d.ts +9 -0
  196. package/dist/runtime/mlx/model-files.js +26 -0
  197. package/dist/runtime/mlx/model-files.js.map +1 -1
  198. package/dist/runtime/mlx/runtime.d.ts +7 -0
  199. package/dist/runtime/mlx/runtime.js +24 -2
  200. package/dist/runtime/mlx/runtime.js.map +1 -1
  201. package/dist/runtime/sglang/adapter.d.ts +4 -0
  202. package/dist/runtime/sglang/adapter.js +9 -6
  203. package/dist/runtime/sglang/adapter.js.map +1 -1
  204. package/dist/runtime/sglang/engine.js +2 -1
  205. package/dist/runtime/sglang/engine.js.map +1 -1
  206. package/dist/runtime/sglang/memory.d.ts +11 -1
  207. package/dist/runtime/sglang/memory.js +34 -3
  208. package/dist/runtime/sglang/memory.js.map +1 -1
  209. package/dist/runtime/sglang/settings.d.ts +2 -1
  210. package/dist/runtime/sglang/settings.js +11 -7
  211. package/dist/runtime/sglang/settings.js.map +1 -1
  212. package/dist/runtime/vllm/adapter.d.ts +4 -0
  213. package/dist/runtime/vllm/adapter.js +9 -6
  214. package/dist/runtime/vllm/adapter.js.map +1 -1
  215. package/dist/runtime/vllm/engine.js +1 -0
  216. package/dist/runtime/vllm/engine.js.map +1 -1
  217. package/dist/runtime/vllm/memory.d.ts +12 -1
  218. package/dist/runtime/vllm/memory.js +44 -2
  219. package/dist/runtime/vllm/memory.js.map +1 -1
  220. package/dist/runtime/vllm/settings.d.ts +2 -1
  221. package/dist/runtime/vllm/settings.js +12 -7
  222. package/dist/runtime/vllm/settings.js.map +1 -1
  223. package/dist/server/public/context-window.d.ts +29 -0
  224. package/dist/server/public/context-window.js +77 -0
  225. package/dist/server/public/context-window.js.map +1 -0
  226. package/dist/server/public/decision-preview.js +1 -0
  227. package/dist/server/public/decision-preview.js.map +1 -1
  228. package/dist/server/public/errors.d.ts +17 -4
  229. package/dist/server/public/errors.js +58 -8
  230. package/dist/server/public/errors.js.map +1 -1
  231. package/dist/server/public/forward.js +86 -22
  232. package/dist/server/public/forward.js.map +1 -1
  233. package/dist/server/public/index.d.ts +1 -0
  234. package/dist/server/public/index.js +1 -0
  235. package/dist/server/public/index.js.map +1 -1
  236. package/dist/server/public/listing.d.ts +9 -2
  237. package/dist/server/public/listing.js +30 -9
  238. package/dist/server/public/listing.js.map +1 -1
  239. package/dist/server/public/responses.js +9 -5
  240. package/dist/server/public/responses.js.map +1 -1
  241. package/dist/server/public/system-messages.d.ts +39 -0
  242. package/dist/server/public/system-messages.js +166 -0
  243. package/dist/server/public/system-messages.js.map +1 -0
  244. package/dist/server/public/telemetry.d.ts +9 -0
  245. package/dist/server/public/telemetry.js +42 -6
  246. package/dist/server/public/telemetry.js.map +1 -1
  247. package/dist/server/public/thinking.d.ts +26 -0
  248. package/dist/server/public/thinking.js +62 -0
  249. package/dist/server/public/thinking.js.map +1 -0
  250. package/dist/server/public/trace.d.ts +8 -0
  251. package/dist/server/public/trace.js +17 -0
  252. package/dist/server/public/trace.js.map +1 -1
  253. package/dist/server/public/types.d.ts +8 -0
  254. package/dist/server/shims/index.d.ts +1 -0
  255. package/dist/server/shims/index.js +1 -0
  256. package/dist/server/shims/index.js.map +1 -1
  257. package/dist/server/shims/reminders.d.ts +8 -0
  258. package/dist/server/shims/reminders.js +14 -0
  259. package/dist/server/shims/reminders.js.map +1 -0
  260. package/dist/server/shims/responses.d.ts +33 -9
  261. package/dist/server/shims/responses.js +160 -36
  262. package/dist/server/shims/responses.js.map +1 -1
  263. package/dist/settings/default-migrations.d.ts +34 -0
  264. package/dist/settings/default-migrations.js +47 -0
  265. package/dist/settings/default-migrations.js.map +1 -0
  266. package/dist/settings/schema/atomic-prism.json +23 -9
  267. package/dist/settings/schema/llamacpp-upstream.json +23 -9
  268. package/dist/settings/schema/llamacpp.json +23 -9
  269. package/dist/settings/schema/sglang.json +8 -8
  270. package/dist/settings/schema/vllm.json +8 -8
  271. package/dist/settings/schema.js +1 -0
  272. package/dist/settings/schema.js.map +1 -1
  273. package/dist/settings/store.d.ts +6 -0
  274. package/dist/settings/store.js +19 -2
  275. package/dist/settings/store.js.map +1 -1
  276. package/dist/telemetry/diagnostics.d.ts +14 -0
  277. package/dist/telemetry/diagnostics.js +285 -0
  278. package/dist/telemetry/diagnostics.js.map +1 -0
  279. package/dist/telemetry/envelope.d.ts +1 -1
  280. package/dist/telemetry/envelope.js +57 -28
  281. package/dist/telemetry/envelope.js.map +1 -1
  282. package/dist/telemetry/index.d.ts +1 -0
  283. package/dist/telemetry/index.js +1 -0
  284. package/dist/telemetry/index.js.map +1 -1
  285. package/dist/telemetry/policy.d.ts +1 -1
  286. package/dist/telemetry/policy.js +45 -2
  287. package/dist/telemetry/policy.js.map +1 -1
  288. package/dist/telemetry/reporter.d.ts +1 -0
  289. package/dist/telemetry/reporter.js +0 -0
  290. package/dist/telemetry/reporter.js.map +1 -1
  291. package/dist/telemetry/reports.d.ts +2 -7
  292. package/dist/telemetry/reports.js +34 -29
  293. package/dist/telemetry/reports.js.map +1 -1
  294. package/dist/telemetry/stack.d.ts +1 -1
  295. package/dist/telemetry/stack.js +8 -1
  296. package/dist/telemetry/stack.js.map +1 -1
  297. package/dist/telemetry/subscribe.d.ts +1 -1
  298. package/dist/telemetry/subscribe.js +7 -5
  299. package/dist/telemetry/subscribe.js.map +1 -1
  300. package/dist/telemetry/types.d.ts +3 -2
  301. package/dist/version.d.ts +1 -1
  302. package/dist/version.js +1 -1
  303. package/package.json +1 -1
@@ -1,12 +1,12 @@
1
1
  /**
2
- * OpenHands reads env overrides only when launched with `--override-with-envs`, using
3
- * `LLM_API_KEY` / `LLM_BASE_URL` / `LLM_MODEL`. The litellm `openai/` prefix on the model id is
4
- * required for a custom OpenAI-compatible base URL — without it litellm resolves the id against its
5
- * own model registry and fails before the request leaves the process.
2
+ * OpenHands reads `LLM_API_KEY` / `LLM_BASE_URL` / `LLM_MODEL` only when launched with
3
+ * `--override-with-envs`, and `launch` sets them on the child (`childEnv`). The litellm `openai/`
4
+ * prefix on the model id is required for a custom OpenAI-compatible base URL — without it litellm
5
+ * resolves the id against its own model registry and fails before the request leaves the process.
6
+ * Nothing is persisted; Connect only removes what an older release did (`legacy-env-block.ts`).
6
7
  */
8
+ import { legacyEnvAgentWriter } from './legacy-env-block.js';
7
9
  import { registerWriter } from './registry.js';
8
- import { configureEnvAgent } from './env-agent.js';
9
- const MARKER = '# Atomic Chat - OpenHands Config';
10
- export const configureOpenhands = (input) => configureEnvAgent(input, { agentId: 'openhands', marker: MARKER, prefix: 'LLM_' });
10
+ export const configureOpenhands = legacyEnvAgentWriter('# Atomic Chat - OpenHands Config');
11
11
  registerWriter('openhands', configureOpenhands);
12
12
  //# sourceMappingURL=openhands.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../../src/integrations/configure/openhands.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,MAAM,GAAG,kCAAkC,CAAA;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAoB,CAAC,KAAK,EAAE,EAAE,CAC3D,iBAAiB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AAEpF,cAAc,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA"}
1
+ {"version":3,"file":"openhands.js","sourceRoot":"","sources":["../../../src/integrations/configure/openhands.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,CAAC,MAAM,kBAAkB,GAAoB,oBAAoB,CAAC,kCAAkC,CAAC,CAAA;AAE3G,cAAc,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAA"}
@@ -1,10 +1,11 @@
1
1
  /**
2
- * Pi — `~/.pi/agent/models.json` and `~/.pi/agent/settings.json`.
2
+ * Pi — `models.json` and `settings.json` in `$PI_CODING_AGENT_DIR`, else `~/.pi/agent`.
3
3
  *
4
- * Port of `configure_pi` in `src-tauri/src/core/system/commands.rs`. Pi splits the two halves of an
5
- * integration across two strict-JSON files: `models.json` declares the provider and the models it
6
- * serves, `settings.json` says which of them the agent opens on. Both are upserted, so other
7
- * providers and unrelated settings survive.
4
+ * Port of `configure_pi` in `src-tauri/src/core/system/commands.rs` (`opencode_family.rs`). Pi splits
5
+ * the two halves of an integration across two strict-JSON files: `models.json` declares the provider
6
+ * and the models it serves, `settings.json` says which of them the agent opens on. Both are upserted,
7
+ * so other providers and unrelated settings survive; the default model a connection replaces is kept
8
+ * beside `settings.json` for the app's Disconnect.
8
9
  *
9
10
  * The order matters on failure: `models.json` is written before `settings.json` is even read, so a
10
11
  * broken `settings.json` leaves a correctly updated `models.json` behind — the same half-applied
@@ -1,48 +1,97 @@
1
1
  /**
2
- * Pi — `~/.pi/agent/models.json` and `~/.pi/agent/settings.json`.
2
+ * Pi — `models.json` and `settings.json` in `$PI_CODING_AGENT_DIR`, else `~/.pi/agent`.
3
3
  *
4
- * Port of `configure_pi` in `src-tauri/src/core/system/commands.rs`. Pi splits the two halves of an
5
- * integration across two strict-JSON files: `models.json` declares the provider and the models it
6
- * serves, `settings.json` says which of them the agent opens on. Both are upserted, so other
7
- * providers and unrelated settings survive.
4
+ * Port of `configure_pi` in `src-tauri/src/core/system/commands.rs` (`opencode_family.rs`). Pi splits
5
+ * the two halves of an integration across two strict-JSON files: `models.json` declares the provider
6
+ * and the models it serves, `settings.json` says which of them the agent opens on. Both are upserted,
7
+ * so other providers and unrelated settings survive; the default model a connection replaces is kept
8
+ * beside `settings.json` for the app's Disconnect.
8
9
  *
9
10
  * The order matters on failure: `models.json` is written before `settings.json` is even read, so a
10
11
  * broken `settings.json` leaves a correctly updated `models.json` behind — the same half-applied
11
12
  * result the Rust writer produces.
12
13
  */
13
- import { AtomicCoreError } from '../../contracts/index.js';
14
- import { canonicalJson, keyOr, parseJsonStrict } from '../config-io.js';
14
+ import { canonicalJson, keyOr } from '../config-io.js';
15
15
  import { asJsonObject } from './json-tree.js';
16
+ import { PROVIDER_ID, PROVIDER_NAME, knownWindow, outputCap, piDir, readRoot, saveReplaced, setAt, } from './opencode-style.js';
16
17
  import { registerWriter } from './registry.js';
17
- const DIR = '.pi/agent';
18
- /** Read one of Pi's two files as a JSON object, treating missing/blank as `{}`. */
19
- async function readObject(fs, path, name) {
20
- const text = await fs.read(path);
21
- const parsed = text === undefined ? {} : parseJsonStrict(text, fs.absolute(path));
22
- const root = asJsonObject(parsed);
23
- if (!root)
24
- throw new AtomicCoreError('IO_ERROR', `${name} is not a JSON object`);
25
- return root;
18
+ /** Pi summarizes no more than its default 20K most recent tokens. */
19
+ const KEEP_RECENT_TOKENS = 20_000;
20
+ /** Ours by name, or the exact shape releases before the name wrote. */
21
+ function providerIsOurs(root) {
22
+ const entry = asJsonObject(asJsonObject(root['providers'])?.[PROVIDER_ID]);
23
+ if (!entry)
24
+ return false;
25
+ if ('name' in entry)
26
+ return entry['name'] === PROVIDER_NAME;
27
+ return Object.keys(entry).sort().join(',') === 'api,apiKey,baseUrl,models';
28
+ }
29
+ const defaultIsOurs = (root) => root['defaultProvider'] === PROVIDER_ID;
30
+ const MODELS_MANAGED = [{ keys: ['providers', PROVIDER_ID], ours: providerIsOurs }];
31
+ /** The default model is a provider/model pair, judged by its provider. */
32
+ const SETTINGS_MANAGED = [
33
+ { keys: ['defaultProvider'], ours: defaultIsOurs },
34
+ { keys: ['defaultModel'], ours: defaultIsOurs },
35
+ ];
36
+ /**
37
+ * Drop every `atomic/…` compaction override (ours, from any connection), then add the one for `model`
38
+ * when its window is known: compaction starts with a quarter of the window left, and keeps no more
39
+ * recent history than that quarter, or a small window would have nothing to summarize.
40
+ */
41
+ function setCompaction(settings, model, contextLength) {
42
+ const compaction = asJsonObject(settings['compaction']);
43
+ const overrides = asJsonObject(compaction?.['modelOverrides']);
44
+ let removed = false;
45
+ if (overrides) {
46
+ for (const key of Object.keys(overrides)) {
47
+ if (key.startsWith(`${PROVIDER_ID}/`)) {
48
+ delete overrides[key];
49
+ removed = true;
50
+ }
51
+ }
52
+ }
53
+ const ctx = knownWindow(contextLength);
54
+ if (ctx === undefined) {
55
+ if (removed && overrides && Object.keys(overrides).length === 0 && compaction) {
56
+ delete compaction['modelOverrides'];
57
+ if (Object.keys(compaction).length === 0)
58
+ delete settings['compaction'];
59
+ }
60
+ return;
61
+ }
62
+ const quarter = Math.floor(ctx / 4);
63
+ setAt(settings, ['compaction', 'modelOverrides', `${PROVIDER_ID}/${model}`], {
64
+ reserveTokens: quarter,
65
+ keepRecentTokens: Math.min(quarter, KEEP_RECENT_TOKENS),
66
+ });
26
67
  }
27
68
  export async function configurePi(input) {
28
- const { fs, apiUrl, model, apiKey } = input;
29
- await fs.mkdirp(DIR);
30
- const keyVal = keyOr(apiKey, 'atomic');
31
- const modelsPath = `${DIR}/models.json`;
32
- const modelsRoot = await readObject(fs, modelsPath, 'models.json');
33
- const providers = asJsonObject(modelsRoot['providers']) ?? {};
34
- modelsRoot['providers'] = providers;
35
- providers['atomic'] = {
69
+ const { fs, apiUrl, model, apiKey, contextLength } = input;
70
+ const dir = piDir(fs, input.env);
71
+ await fs.mkdirp(dir);
72
+ const modelsPath = `${dir}/models.json`;
73
+ const modelsRoot = await readRoot(fs, modelsPath, false);
74
+ await saveReplaced(fs, modelsRoot, modelsPath, MODELS_MANAGED);
75
+ const entry = { id: model };
76
+ const ctx = knownWindow(contextLength);
77
+ if (ctx !== undefined) {
78
+ entry['contextWindow'] = ctx;
79
+ entry['maxTokens'] = outputCap(ctx);
80
+ }
81
+ setAt(modelsRoot, ['providers', PROVIDER_ID], {
82
+ name: PROVIDER_NAME,
36
83
  api: 'openai-completions',
37
- apiKey: keyVal,
84
+ apiKey: keyOr(apiKey, 'atomic'),
38
85
  baseUrl: apiUrl,
39
- models: [{ id: model }],
40
- };
86
+ models: [entry],
87
+ });
41
88
  await fs.write(modelsPath, canonicalJson(modelsRoot));
42
- const settingsPath = `${DIR}/settings.json`;
43
- const settingsRoot = await readObject(fs, settingsPath, 'settings.json');
44
- settingsRoot['defaultProvider'] = 'atomic';
89
+ const settingsPath = `${dir}/settings.json`;
90
+ const settingsRoot = await readRoot(fs, settingsPath, false);
91
+ await saveReplaced(fs, settingsRoot, settingsPath, SETTINGS_MANAGED);
92
+ settingsRoot['defaultProvider'] = PROVIDER_ID;
45
93
  settingsRoot['defaultModel'] = model;
94
+ setCompaction(settingsRoot, model, contextLength);
46
95
  await fs.write(settingsPath, canonicalJson(settingsRoot));
47
96
  }
48
97
  registerWriter('pi', configurePi);
@@ -1 +1 @@
1
- {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/integrations/configure/pi.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAG7C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,GAAG,GAAG,WAAW,CAAA;AAEvB,mFAAmF;AACnF,KAAK,UAAU,UAAU,CAAC,EAAY,EAAE,IAAY,EAAE,IAAY;IAChE,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChC,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;IACjF,MAAM,IAAI,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACjC,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,GAAG,IAAI,uBAAuB,CAAC,CAAA;IAChF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,KAAqB;IACrD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACpB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAEtC,MAAM,UAAU,GAAG,GAAG,GAAG,cAAc,CAAA;IACvC,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAAA;IAClE,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAA;IAC7D,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAAA;IACnC,SAAS,CAAC,QAAQ,CAAC,GAAG;QACpB,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,MAAM;QACf,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC;KACxB,CAAA;IACD,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAA;IAErD,MAAM,YAAY,GAAG,GAAG,GAAG,gBAAgB,CAAA;IAC3C,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,eAAe,CAAC,CAAA;IACxE,YAAY,CAAC,iBAAiB,CAAC,GAAG,QAAQ,CAAA;IAC1C,YAAY,CAAC,cAAc,CAAC,GAAG,KAAK,CAAA;IACpC,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAA"}
1
+ {"version":3,"file":"pi.js","sourceRoot":"","sources":["../../../src/integrations/configure/pi.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  /**
2
- * Poolside CLI has no BYOK config file; it reads `POOLSIDE_STANDALONE_*` from the environment.
3
- * The base URL is normalised by `poolsideStandaloneBaseUrl` (trim, strip trailing slashes, strip one
4
- * `/v1`, strip trailing slashes again) because Poolside appends its own paths — leaving `/v1` on
5
- * would make it request `/v1/v1/...`.
2
+ * Poolside CLI has no BYOK config file; in standalone mode it reads `POOLSIDE_STANDALONE_BASE_URL`
3
+ * (with `/v1`, as its docs keep it), `POOLSIDE_API_KEY`, `POOLSIDE_STANDALONE_MODEL` and
4
+ * `POOLSIDE_STANDALONE_CONTEXT_LENGTH` from the environment, which `launch` sets on the child
5
+ * (`childEnv`). Nothing is persisted; Connect only removes what an older release did
6
+ * (`legacy-env-block.ts`).
6
7
  */
7
8
  import type { ConfigureWriter } from './registry.js';
8
9
  export declare const configurePoolside: ConfigureWriter;
@@ -1,12 +1,12 @@
1
1
  /**
2
- * Poolside CLI has no BYOK config file; it reads `POOLSIDE_STANDALONE_*` from the environment.
3
- * The base URL is normalised by `poolsideStandaloneBaseUrl` (trim, strip trailing slashes, strip one
4
- * `/v1`, strip trailing slashes again) because Poolside appends its own paths — leaving `/v1` on
5
- * would make it request `/v1/v1/...`.
2
+ * Poolside CLI has no BYOK config file; in standalone mode it reads `POOLSIDE_STANDALONE_BASE_URL`
3
+ * (with `/v1`, as its docs keep it), `POOLSIDE_API_KEY`, `POOLSIDE_STANDALONE_MODEL` and
4
+ * `POOLSIDE_STANDALONE_CONTEXT_LENGTH` from the environment, which `launch` sets on the child
5
+ * (`childEnv`). Nothing is persisted; Connect only removes what an older release did
6
+ * (`legacy-env-block.ts`).
6
7
  */
8
+ import { legacyEnvAgentWriter } from './legacy-env-block.js';
7
9
  import { registerWriter } from './registry.js';
8
- import { configureEnvAgent } from './env-agent.js';
9
- const MARKER = '# Atomic Chat - Poolside Config';
10
- export const configurePoolside = (input) => configureEnvAgent(input, { agentId: 'poolside', marker: MARKER, prefix: 'POOLSIDE_' });
10
+ export const configurePoolside = legacyEnvAgentWriter('# Atomic Chat - Poolside Config');
11
11
  registerWriter('poolside', configurePoolside);
12
12
  //# sourceMappingURL=poolside.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"poolside.js","sourceRoot":"","sources":["../../../src/integrations/configure/poolside.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAElD,MAAM,MAAM,GAAG,iCAAiC,CAAA;AAEhD,MAAM,CAAC,MAAM,iBAAiB,GAAoB,CAAC,KAAK,EAAE,EAAE,CAC1D,iBAAiB,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAA;AAExF,cAAc,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA"}
1
+ {"version":3,"file":"poolside.js","sourceRoot":"","sources":["../../../src/integrations/configure/poolside.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAE5D,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAoB,oBAAoB,CAAC,iCAAiC,CAAC,CAAA;AAEzG,cAAc,CAAC,UAAU,EAAE,iBAAiB,CAAC,CAAA"}
@@ -22,6 +22,11 @@ export interface ConfigureInput {
22
22
  }>;
23
23
  /** The agent's launcher as detection found it (bare name or absolute path); Codex asks it its version. */
24
24
  program?: string;
25
+ /**
26
+ * The window the served model was loaded with, when known. An agent told nothing assumes
27
+ * 128K-272K and never compacts before a 16K-64K local server refuses.
28
+ */
29
+ contextLength?: number;
25
30
  }
26
31
  export type ConfigureWriter = (input: ConfigureInput) => Promise<void>;
27
32
  /** Register a writer for an agent id. Called once per module at import time. */
@@ -36,6 +41,7 @@ export interface ConfigureOptions {
36
41
  env?: NodeJS.ProcessEnv;
37
42
  spawn?: ConfigureInput['spawn'];
38
43
  program?: string;
44
+ contextLength?: number;
39
45
  }
40
46
  /**
41
47
  * Point an agent at a local endpoint. `model` may be empty only for the agents whose Rust
@@ -46,6 +46,7 @@ export async function configureAgent(agent, apiUrl, model, apiKey, options = {})
46
46
  env,
47
47
  ...(options.spawn ? { spawn: options.spawn } : {}),
48
48
  ...(options.program ? { program: options.program } : {}),
49
+ ...(options.contextLength ? { contextLength: options.contextLength } : {}),
49
50
  });
50
51
  }
51
52
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/integrations/configure/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAmB9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;AAElD,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAAuB;IACrE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACnC,CAAC;AAYD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAqB,EACrB,MAAc,EACd,KAAa,EACb,MAAc,EACd,UAA4B,EAAE;IAE9B,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,eAAe,QAAQ,CAAC,IAAI,oCAAoC,EAChE,6BAA6B,QAAQ,CAAC,EAAE,GAAG,CAC5C,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACtF,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,+DAA+D,CAAC,CAAA;IACxG,CAAC;IACD,MAAM,MAAM,CAAC;QACX,MAAM;QACN,KAAK;QACL,MAAM;QACN,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,YAAY,CAAC,IAAc,CAAC;QAC9C,QAAQ;QACR,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC;QACpC,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/integrations/configure/registry.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1D,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAwB9C,MAAM,OAAO,GAAG,IAAI,GAAG,EAA2B,CAAA;AAElD,gFAAgF;AAChF,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAAuB;IACrE,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;AACnC,CAAC;AAaD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,KAAqB,EACrB,MAAc,EACd,KAAa,EACb,MAAc,EACd,UAA4B,EAAE;IAE9B,MAAM,QAAQ,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IACrE,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,eAAe,CAAC,kBAAkB,EAAE,kBAAkB,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,eAAe,CACvB,gBAAgB,EAChB,eAAe,QAAQ,CAAC,IAAI,oCAAoC,EAChE,6BAA6B,QAAQ,CAAC,EAAE,GAAG,CAC5C,CAAA;IACH,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAA;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAA;IACrD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;IACtF,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,eAAe,CAAC,UAAU,EAAE,+DAA+D,CAAC,CAAA;IACxG,CAAC;IACD,MAAM,MAAM,CAAC;QACX,MAAM;QACN,KAAK;QACL,MAAM;QACN,EAAE,EAAE,OAAO,CAAC,EAAE,IAAI,YAAY,CAAC,IAAc,CAAC;QAC9C,QAAQ;QACR,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC;QACpC,GAAG;QACH,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3E,CAAC,CAAA;AACJ,CAAC"}
@@ -15,11 +15,8 @@ import type { ConfigFs, JsonValue } from '../config-io.js';
15
15
  export declare const ZCODE_PROVIDER_ID = "atomic-chat";
16
16
  /** ZCode only admits a provider whose API key is non-blank; the local server ignores it when auth is off. */
17
17
  export declare const ZCODE_KEY_PLACEHOLDER = "atomic";
18
- /**
19
- * ZCode assumes 200K of context for any model it does not recognise — a wild over-claim for a local
20
- * model, which then never compacts and overflows mid-turn.
21
- */
22
- export declare const ZCODE_CONTEXT_WINDOW = 65536;
18
+ /** Sidecar (`<config>.atomic-chat-backup.json`) key for the default selection a Connect replaced. */
19
+ export declare const ZCODE_SELECTION_KEY = "config.defaultModelSelection";
23
20
  /**
24
21
  * ZCode's default request mapping sends `thinking`, `enable_thinking`, `reasoning_effort` and
25
22
  * `reasoning`, none of which llama-server reads. It does read `chat_template_kwargs`, and
@@ -40,8 +37,10 @@ export declare function zcodeConfigDir(fs: ConfigFs, envBase: string | undefined
40
37
  * Apply Atomic Chat's provider, its model rule and the default selection to a parsed
41
38
  * `provider_config.json` (`undefined` when the file does not exist yet). Only entries whose
42
39
  * `providerId` is ours are replaced; every other provider, rule and key is carried over untouched.
40
+ * `contextLength`, the served window, becomes the model's `contextWindow` so ZCode compacts in
41
+ * time; unknown, ZCode's own default stands.
43
42
  */
44
- export declare function zcodePatchProviderConfig(existing: JsonValue | undefined, apiUrl: string, model: string, apiKey: string | undefined): JsonValue;
43
+ export declare function zcodePatchProviderConfig(existing: JsonValue | undefined, apiUrl: string, model: string, apiKey: string | undefined, contextLength?: number): JsonValue;
45
44
  export interface ZcodeLockDeps {
46
45
  now?: () => number;
47
46
  sleep?: (ms: number) => Promise<void>;
@@ -56,4 +55,4 @@ export declare function acquireZcodeLock(file: string, maxWaitMs: number, staleA
56
55
  export declare function configureZcodeIn(fs: ConfigFs, dir: string, apiUrl: string, model: string, apiKey: string | undefined, lockDeps?: ZcodeLockDeps & {
57
56
  maxWaitMs?: number;
58
57
  staleAfterMs?: number;
59
- }): Promise<void>;
58
+ }, contextLength?: number): Promise<void>;
@@ -20,12 +20,10 @@ export const ZCODE_PROVIDER_ID = 'atomic-chat';
20
20
  const ZCODE_PROVIDER_NAME = 'Atomic Chat';
21
21
  /** ZCode only admits a provider whose API key is non-blank; the local server ignores it when auth is off. */
22
22
  export const ZCODE_KEY_PLACEHOLDER = 'atomic';
23
- /**
24
- * ZCode assumes 200K of context for any model it does not recognise — a wild over-claim for a local
25
- * model, which then never compacts and overflows mid-turn.
26
- */
27
- export const ZCODE_CONTEXT_WINDOW = 65_536;
23
+ /** Output cap per turn; with the served window known, a quarter of it at most. */
28
24
  const ZCODE_MAX_OUTPUT_TOKENS = 8_192;
25
+ /** Sidecar (`<config>.atomic-chat-backup.json`) key for the default selection a Connect replaced. */
26
+ export const ZCODE_SELECTION_KEY = 'config.defaultModelSelection';
29
27
  /**
30
28
  * ZCode's default request mapping sends `thinking`, `enable_thinking`, `reasoning_effort` and
31
29
  * `reasoning`, none of which llama-server reads. It does read `chat_template_kwargs`, and
@@ -86,8 +84,10 @@ const isOurs = (rule) => isObject(rule) && rule['providerId'] === ZCODE_PROVIDER
86
84
  * Apply Atomic Chat's provider, its model rule and the default selection to a parsed
87
85
  * `provider_config.json` (`undefined` when the file does not exist yet). Only entries whose
88
86
  * `providerId` is ours are replaced; every other provider, rule and key is carried over untouched.
87
+ * `contextLength`, the served window, becomes the model's `contextWindow` so ZCode compacts in
88
+ * time; unknown, ZCode's own default stands.
89
89
  */
90
- export function zcodePatchProviderConfig(existing, apiUrl, model, apiKey) {
90
+ export function zcodePatchProviderConfig(existing, apiUrl, model, apiKey, contextLength) {
91
91
  const modelId = model.trim();
92
92
  if (modelId === '')
93
93
  throw new AtomicCoreError('INVALID_ARGUMENT', 'ZCode needs a model: load one in a chat first.');
@@ -135,6 +135,10 @@ export function zcodePatchProviderConfig(existing, apiUrl, model, apiKey) {
135
135
  const manual = arrayAt(modelRules, 'manualProviderModelRules', 'config.modelConfigRules.manualProviderModelRules');
136
136
  modelRules['manualProviderModelRules'] = manual.filter((rule) => !isOurs(rule));
137
137
  const rules = arrayAt(modelRules, 'providerModelRules', 'config.modelConfigRules.providerModelRules');
138
+ const context = contextLength && contextLength > 0 ? contextLength : undefined;
139
+ const maxOutput = context === undefined
140
+ ? ZCODE_MAX_OUTPUT_TOKENS
141
+ : Math.max(1, Math.min(ZCODE_MAX_OUTPUT_TOKENS, Math.floor(context / 4)));
138
142
  modelRules['providerModelRules'] = [
139
143
  ...rules.filter((rule) => !isOurs(rule)),
140
144
  {
@@ -142,12 +146,12 @@ export function zcodePatchProviderConfig(existing, apiUrl, model, apiKey) {
142
146
  modelId,
143
147
  config: {
144
148
  properties: {
145
- contextWindow: ZCODE_CONTEXT_WINDOW,
149
+ ...(context === undefined ? {} : { contextWindow: context }),
146
150
  // An id matching one of ZCode's vision patterns would otherwise claim image input.
147
151
  inputFormat: { supportsImage: false },
148
152
  },
149
153
  optionSpecs: {
150
- maxOutputTokens: { max: ZCODE_MAX_OUTPUT_TOKENS, map: ZCODE_MAX_TOKENS_MAP },
154
+ maxOutputTokens: { max: maxOutput, map: ZCODE_MAX_TOKENS_MAP },
151
155
  reasoningLevel: { values: ['disabled', 'enabled'], map: ZCODE_REASONING_MAP },
152
156
  },
153
157
  },
@@ -223,7 +227,7 @@ export async function acquireZcodeLock(file, maxWaitMs, staleAfterMs, deps = {})
223
227
  }
224
228
  }
225
229
  /** The filesystem half of the writer, on a resolved `.zcode/v2` directory. */
226
- export async function configureZcodeIn(fs, dir, apiUrl, model, apiKey, lockDeps = {}) {
230
+ export async function configureZcodeIn(fs, dir, apiUrl, model, apiKey, lockDeps = {}, contextLength) {
227
231
  const path = join(dir, 'provider_config.json');
228
232
  // ZCode imports the providers of its pre-3.x `config.json` once, on the first start that finds no
229
233
  // `provider_config.json`. Creating that file first would skip the import for good.
@@ -242,7 +246,18 @@ export async function configureZcodeIn(fs, dir, apiUrl, model, apiKey, lockDeps
242
246
  throw refuse(`Could not parse ${path}: ${error instanceof Error ? error.message : String(error)}. ZCode ignores the file while it is invalid, so fix or remove it and try again.`);
243
247
  }
244
248
  }
245
- const patched = zcodePatchProviderConfig(existing, apiUrl, model, apiKey);
249
+ const previous = isObject(existing) && isObject(existing['config'])
250
+ ? existing['config']['defaultModelSelection']
251
+ : undefined;
252
+ const patched = zcodePatchProviderConfig(existing, apiUrl, model, apiKey, contextLength);
253
+ // The user's own default model, kept aside for the app's Disconnect.
254
+ if (!isOurs(previous ?? null)) {
255
+ const sidecar = join(dir, 'provider_config.json.atomic-chat-backup.json');
256
+ if (previous === undefined)
257
+ await fs.remove(sidecar);
258
+ else
259
+ await fs.write(sidecar, canonicalJson({ [ZCODE_SELECTION_KEY]: previous }));
260
+ }
246
261
  // A file ZCode cannot validate costs the user every custom provider, so keep the pre-Atomic
247
262
  // version once. It holds their API keys too, hence owner-only like the file itself.
248
263
  const backup = join(dir, 'provider_config.json.atomic-backup');
@@ -256,5 +271,5 @@ export async function configureZcodeIn(fs, dir, apiUrl, model, apiKey, lockDeps
256
271
  await release();
257
272
  }
258
273
  }
259
- registerWriter('zcode', async (input) => configureZcodeIn(input.fs, await zcodeConfigDir(input.fs, input.env['ZCODE_DATA_BASE_DIR']), input.apiUrl, input.model, input.apiKey));
274
+ registerWriter('zcode', async (input) => configureZcodeIn(input.fs, await zcodeConfigDir(input.fs, input.env['ZCODE_DATA_BASE_DIR']), input.apiUrl, input.model, input.apiKey, {}, input.contextLength));
260
275
  //# sourceMappingURL=zcode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zcode.js","sourceRoot":"","sources":["../../../src/integrations/configure/zcode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"zcode.js","sourceRoot":"","sources":["../../../src/integrations/configure/zcode.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,28 @@
1
1
  /**
2
- * Zed — `~/.config/zed/settings.json`.
2
+ * Zed — `settings.json` in Zed's config directory (`zedConfigDir`).
3
3
  *
4
4
  * Port of `configure_zed` in `src-tauri/src/core/system/commands.rs`. Zed keeps custom endpoints
5
5
  * under `language_models.openai_compatible.<provider name>`, and the provider name doubles as the
6
6
  * id the agent's default-model selector refers to, hence the space in `"Atomic Chat"`.
7
7
  *
8
- * Two things are deliberate:
8
+ * Three things are deliberate:
9
9
  * - The API key is never persisted. Zed reads it from its keychain or from `ATOMIC_CHAT_API_KEY`,
10
10
  * so `apiKey` is accepted for call-site symmetry and ignored.
11
11
  * - Zed has no model discovery for these providers, so the running model is advertised
12
- * explicitly. With no model loaded the provider is still registered, with an empty model list,
13
- * so it shows up in Zed's UI — but `agent.default_model` is then left untouched.
12
+ * explicitly, with the served window when it is known. With no model loaded the provider is
13
+ * still registered, with an empty model list, so it shows up in Zed's UI — but
14
+ * `agent.default_model` is then left untouched.
15
+ * - A default model of the user's that we replace is kept in a sidecar next to `settings.json`,
16
+ * so the app's Disconnect can put it back.
14
17
  */
18
+ import type { ConfigFs } from '../config-io.js';
15
19
  import type { ConfigureInput } from './registry.js';
20
+ /** Sidecar (`<config>.atomic-chat-backup.json`) key for the default model a Connect replaced. */
21
+ export declare const ZED_DEFAULT_MODEL_KEY = "agent.default_model";
22
+ /**
23
+ * Zed's config directory, resolved the way Zed's own `paths::config_dir` does: `%APPDATA%\Zed` on
24
+ * Windows, `$XDG_CONFIG_HOME/zed` (else `~/.config/zed`) on Linux, `~/.config/zed` on macOS.
25
+ * Relative to the home directory when it lies under it.
26
+ */
27
+ export declare function zedConfigDir(env: NodeJS.ProcessEnv, platform: NodeJS.Platform, fs: ConfigFs): string;
16
28
  export declare function configureZed(input: ConfigureInput): Promise<void>;
@@ -1,31 +1,69 @@
1
1
  /**
2
- * Zed — `~/.config/zed/settings.json`.
2
+ * Zed — `settings.json` in Zed's config directory (`zedConfigDir`).
3
3
  *
4
4
  * Port of `configure_zed` in `src-tauri/src/core/system/commands.rs`. Zed keeps custom endpoints
5
5
  * under `language_models.openai_compatible.<provider name>`, and the provider name doubles as the
6
6
  * id the agent's default-model selector refers to, hence the space in `"Atomic Chat"`.
7
7
  *
8
- * Two things are deliberate:
8
+ * Three things are deliberate:
9
9
  * - The API key is never persisted. Zed reads it from its keychain or from `ATOMIC_CHAT_API_KEY`,
10
10
  * so `apiKey` is accepted for call-site symmetry and ignored.
11
11
  * - Zed has no model discovery for these providers, so the running model is advertised
12
- * explicitly. With no model loaded the provider is still registered, with an empty model list,
13
- * so it shows up in Zed's UI — but `agent.default_model` is then left untouched.
12
+ * explicitly, with the served window when it is known. With no model loaded the provider is
13
+ * still registered, with an empty model list, so it shows up in Zed's UI — but
14
+ * `agent.default_model` is then left untouched.
15
+ * - A default model of the user's that we replace is kept in a sidecar next to `settings.json`,
16
+ * so the app's Disconnect can put it back.
14
17
  */
15
18
  import { AtomicCoreError } from '../../contracts/index.js';
16
19
  import { canonicalJson, parseJsonLenient } from '../config-io.js';
17
20
  import { asJsonObject } from './json-tree.js';
18
21
  import { registerWriter } from './registry.js';
19
- const DIR = '.config/zed';
20
- const PATH = `${DIR}/settings.json`;
21
22
  /** Map key under `openai_compatible`, and the provider id `agent.default_model` names. */
22
23
  const ZED_PROVIDER_ID = 'Atomic Chat';
24
+ /** Zed requires a `max_tokens` per model; with the served window unknown, what it always got. */
25
+ const ZED_FALLBACK_CONTEXT = 32_768;
26
+ const ZED_MAX_OUTPUT_TOKENS = 8_192;
27
+ /** Sidecar (`<config>.atomic-chat-backup.json`) key for the default model a Connect replaced. */
28
+ export const ZED_DEFAULT_MODEL_KEY = 'agent.default_model';
29
+ /**
30
+ * Zed's config directory, resolved the way Zed's own `paths::config_dir` does: `%APPDATA%\Zed` on
31
+ * Windows, `$XDG_CONFIG_HOME/zed` (else `~/.config/zed`) on Linux, `~/.config/zed` on macOS.
32
+ * Relative to the home directory when it lies under it.
33
+ */
34
+ export function zedConfigDir(env, platform, fs) {
35
+ const set = (name) => {
36
+ const value = env[name];
37
+ return value && value.trim() !== '' ? value : undefined;
38
+ };
39
+ if (platform === 'win32') {
40
+ const appData = set('APPDATA');
41
+ return appData ? `${appData}/Zed` : fs.absolute('AppData/Roaming/Zed');
42
+ }
43
+ if (platform !== 'darwin') {
44
+ const xdg = set('XDG_CONFIG_HOME');
45
+ if (xdg?.startsWith('/'))
46
+ return `${xdg}/zed`;
47
+ }
48
+ return '.config/zed';
49
+ }
50
+ /** The served window, and a quarter of it for output (at most 8192). */
51
+ function modelLimits(contextLength) {
52
+ const context = contextLength && contextLength > 0 ? contextLength : ZED_FALLBACK_CONTEXT;
53
+ return {
54
+ maxTokens: context,
55
+ maxOutputTokens: Math.max(1, Math.min(ZED_MAX_OUTPUT_TOKENS, Math.floor(context / 4))),
56
+ };
57
+ }
58
+ const isOurSelection = (value) => asJsonObject(value)?.['provider'] === ZED_PROVIDER_ID;
23
59
  export async function configureZed(input) {
24
60
  const { fs, apiUrl, model } = input;
25
- await fs.mkdirp(DIR);
61
+ const dir = zedConfigDir(input.env, input.platform, fs);
62
+ const path = `${dir}/settings.json`;
63
+ await fs.mkdirp(dir);
26
64
  // Zed's settings.json allows comments and trailing commas, so read it the same way Zed does.
27
- const text = await fs.read(PATH);
28
- const parsed = text === undefined ? {} : parseJsonLenient(text, fs.absolute(PATH));
65
+ const text = await fs.read(path);
66
+ const parsed = text === undefined ? {} : parseJsonLenient(text, fs.absolute(path));
29
67
  const root = asJsonObject(parsed);
30
68
  if (!root)
31
69
  throw new AtomicCoreError('IO_ERROR', 'settings.json is not a JSON object');
@@ -33,17 +71,19 @@ export async function configureZed(input) {
33
71
  root['language_models'] = languageModels;
34
72
  const compatible = asJsonObject(languageModels['openai_compatible']) ?? {};
35
73
  languageModels['openai_compatible'] = compatible;
74
+ const { maxTokens, maxOutputTokens } = modelLimits(input.contextLength);
36
75
  const availableModels = model === ''
37
76
  ? []
38
77
  : [
39
78
  {
40
79
  name: model,
41
80
  display_name: model,
42
- max_tokens: 32768,
43
- max_output_tokens: 8192,
81
+ max_tokens: maxTokens,
82
+ max_output_tokens: maxOutputTokens,
44
83
  capabilities: {
45
84
  tools: true,
46
- images: true,
85
+ // Zed's own default: whether the served model takes images is not known here.
86
+ images: false,
47
87
  parallel_tool_calls: false,
48
88
  prompt_cache_key: false,
49
89
  },
@@ -53,9 +93,17 @@ export async function configureZed(input) {
53
93
  if (model !== '') {
54
94
  const agent = asJsonObject(root['agent']) ?? {};
55
95
  root['agent'] = agent;
96
+ const previous = agent['default_model'];
97
+ if (!isOurSelection(previous)) {
98
+ const sidecar = `${path}.atomic-chat-backup.json`;
99
+ if (previous === undefined)
100
+ await fs.remove(sidecar);
101
+ else
102
+ await fs.write(sidecar, canonicalJson({ [ZED_DEFAULT_MODEL_KEY]: previous }));
103
+ }
56
104
  agent['default_model'] = { provider: ZED_PROVIDER_ID, model };
57
105
  }
58
- await fs.write(PATH, canonicalJson(root));
106
+ await fs.write(path, canonicalJson(root));
59
107
  }
60
108
  registerWriter('zed', configureZed);
61
109
  //# sourceMappingURL=zed.js.map