@atomic-chat/core 0.19.0 → 0.20.5

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 (219) hide show
  1. package/dist/app-daemon.js +5 -0
  2. package/dist/app-daemon.js.map +1 -1
  3. package/dist/cli/bin.js +0 -0
  4. package/dist/cli/launch.js +2 -0
  5. package/dist/cli/launch.js.map +1 -1
  6. package/dist/cli/main.d.ts +1 -1
  7. package/dist/cli/main.js +5 -0
  8. package/dist/cli/main.js.map +1 -1
  9. package/dist/cloud/registry.js +1 -0
  10. package/dist/cloud/registry.js.map +1 -1
  11. package/dist/config/paths.d.ts +1 -1
  12. package/dist/config/paths.js +12 -0
  13. package/dist/config/paths.js.map +1 -1
  14. package/dist/contracts/engine-builds.d.ts +6 -1
  15. package/dist/contracts/engine-builds.js +1 -1
  16. package/dist/contracts/engine-builds.js.map +1 -1
  17. package/dist/contracts/engines.d.ts +1 -1
  18. package/dist/contracts/engines.js +2 -0
  19. package/dist/contracts/engines.js.map +1 -1
  20. package/dist/contracts/errors.d.ts +7 -1
  21. package/dist/contracts/errors.js.map +1 -1
  22. package/dist/contracts/events.d.ts +3 -1
  23. package/dist/contracts/geniex.d.ts +98 -0
  24. package/dist/contracts/geniex.js +15 -0
  25. package/dist/contracts/geniex.js.map +1 -0
  26. package/dist/contracts/index.d.ts +1 -0
  27. package/dist/contracts/index.js +1 -0
  28. package/dist/contracts/index.js.map +1 -1
  29. package/dist/contracts/model-yml.d.ts +40 -0
  30. package/dist/contracts/model-yml.js +7 -0
  31. package/dist/contracts/model-yml.js.map +1 -1
  32. package/dist/contracts/session.d.ts +6 -1
  33. package/dist/contracts/session.js.map +1 -1
  34. package/dist/contracts/settings.d.ts +12 -1
  35. package/dist/contracts/settings.js.map +1 -1
  36. package/dist/core/app-lease.d.ts +56 -0
  37. package/dist/core/app-lease.js +50 -0
  38. package/dist/core/app-lease.js.map +1 -0
  39. package/dist/core/atomic-core.d.ts +1 -1
  40. package/dist/core/create.js +109 -5
  41. package/dist/core/create.js.map +1 -1
  42. package/dist/engine-builds/engines.d.ts +28 -7
  43. package/dist/engine-builds/engines.js +49 -5
  44. package/dist/engine-builds/engines.js.map +1 -1
  45. package/dist/engine-builds/geniex.d.ts +35 -0
  46. package/dist/engine-builds/geniex.js +111 -0
  47. package/dist/engine-builds/geniex.js.map +1 -0
  48. package/dist/engine-builds/manifest.d.ts +43 -0
  49. package/dist/engine-builds/manifest.js +92 -0
  50. package/dist/engine-builds/manifest.js.map +1 -1
  51. package/dist/engine-builds/order.d.ts +2 -1
  52. package/dist/engine-builds/order.js +2 -0
  53. package/dist/engine-builds/order.js.map +1 -1
  54. package/dist/engine-builds/select.d.ts +15 -0
  55. package/dist/engine-builds/select.js +14 -0
  56. package/dist/engine-builds/select.js.map +1 -1
  57. package/dist/engine-builds/service.d.ts +5 -3
  58. package/dist/engine-builds/service.js +21 -2
  59. package/dist/engine-builds/service.js.map +1 -1
  60. package/dist/engines/service.d.ts +2 -1
  61. package/dist/engines/service.js +3 -1
  62. package/dist/engines/service.js.map +1 -1
  63. package/dist/engines/versions.js +3 -0
  64. package/dist/engines/versions.js.map +1 -1
  65. package/dist/integrations/catalog.d.ts +3 -1
  66. package/dist/integrations/catalog.js +8 -2
  67. package/dist/integrations/catalog.js.map +1 -1
  68. package/dist/integrations/config-io.d.ts +45 -4
  69. package/dist/integrations/config-io.js +91 -6
  70. package/dist/integrations/config-io.js.map +1 -1
  71. package/dist/integrations/configure/codex-repair.d.ts +75 -0
  72. package/dist/integrations/configure/codex-repair.js +254 -0
  73. package/dist/integrations/configure/codex-repair.js.map +1 -0
  74. package/dist/integrations/configure/codex.d.ts +48 -10
  75. package/dist/integrations/configure/codex.js +126 -32
  76. package/dist/integrations/configure/codex.js.map +1 -1
  77. package/dist/integrations/configure/registry.d.ts +4 -1
  78. package/dist/integrations/configure/registry.js +1 -0
  79. package/dist/integrations/configure/registry.js.map +1 -1
  80. package/dist/models/gguf/kv-cache.d.ts +5 -0
  81. package/dist/models/gguf/kv-cache.js +35 -2
  82. package/dist/models/gguf/kv-cache.js.map +1 -1
  83. package/dist/models/gguf/reader.d.ts +5 -0
  84. package/dist/models/gguf/reader.js +15 -3
  85. package/dist/models/gguf/reader.js.map +1 -1
  86. package/dist/router/resolve.d.ts +3 -2
  87. package/dist/router/resolve.js +3 -1
  88. package/dist/router/resolve.js.map +1 -1
  89. package/dist/runtime/geniex/accelerators.d.ts +20 -0
  90. package/dist/runtime/geniex/accelerators.js +53 -0
  91. package/dist/runtime/geniex/accelerators.js.map +1 -0
  92. package/dist/runtime/geniex/check.d.ts +34 -0
  93. package/dist/runtime/geniex/check.js +117 -0
  94. package/dist/runtime/geniex/check.js.map +1 -0
  95. package/dist/runtime/geniex/chip.d.ts +29 -0
  96. package/dist/runtime/geniex/chip.js +35 -0
  97. package/dist/runtime/geniex/chip.js.map +1 -0
  98. package/dist/runtime/geniex/devices.d.ts +13 -0
  99. package/dist/runtime/geniex/devices.js +32 -0
  100. package/dist/runtime/geniex/devices.js.map +1 -0
  101. package/dist/runtime/geniex/geniex-host.d.ts +17 -0
  102. package/dist/runtime/geniex/geniex-host.js +26 -0
  103. package/dist/runtime/geniex/geniex-host.js.map +1 -0
  104. package/dist/runtime/geniex/host/args.d.ts +56 -0
  105. package/dist/runtime/geniex/host/args.js +115 -0
  106. package/dist/runtime/geniex/host/args.js.map +1 -0
  107. package/dist/runtime/geniex/host/engine.d.ts +76 -0
  108. package/dist/runtime/geniex/host/engine.js +122 -0
  109. package/dist/runtime/geniex/host/engine.js.map +1 -0
  110. package/dist/runtime/geniex/host/ffi-bun.d.ts +15 -0
  111. package/dist/runtime/geniex/host/ffi-bun.js +415 -0
  112. package/dist/runtime/geniex/host/ffi-bun.js.map +1 -0
  113. package/dist/runtime/geniex/host/grammar.d.ts +11 -0
  114. package/dist/runtime/geniex/host/grammar.js +223 -0
  115. package/dist/runtime/geniex/host/grammar.js.map +1 -0
  116. package/dist/runtime/geniex/host/inspect.d.ts +25 -0
  117. package/dist/runtime/geniex/host/inspect.js +177 -0
  118. package/dist/runtime/geniex/host/inspect.js.map +1 -0
  119. package/dist/runtime/geniex/host/library.d.ts +117 -0
  120. package/dist/runtime/geniex/host/library.js +38 -0
  121. package/dist/runtime/geniex/host/library.js.map +1 -0
  122. package/dist/runtime/geniex/host/openai.d.ts +62 -0
  123. package/dist/runtime/geniex/host/openai.js +458 -0
  124. package/dist/runtime/geniex/host/openai.js.map +1 -0
  125. package/dist/runtime/geniex/host/run.d.ts +48 -0
  126. package/dist/runtime/geniex/host/run.js +208 -0
  127. package/dist/runtime/geniex/host/run.js.map +1 -0
  128. package/dist/runtime/geniex/host/server.d.ts +39 -0
  129. package/dist/runtime/geniex/host/server.js +232 -0
  130. package/dist/runtime/geniex/host/server.js.map +1 -0
  131. package/dist/runtime/geniex/host/worker-protocol.d.ts +76 -0
  132. package/dist/runtime/geniex/host/worker-protocol.js +116 -0
  133. package/dist/runtime/geniex/host/worker-protocol.js.map +1 -0
  134. package/dist/runtime/geniex/host/worker-source.generated.d.ts +1 -0
  135. package/dist/runtime/geniex/host/worker-source.generated.js +4 -0
  136. package/dist/runtime/geniex/host/worker-source.generated.js.map +1 -0
  137. package/dist/runtime/geniex/host/worker.d.ts +7 -0
  138. package/dist/runtime/geniex/host/worker.js +19 -0
  139. package/dist/runtime/geniex/host/worker.js.map +1 -0
  140. package/dist/runtime/geniex/host-process.d.ts +48 -0
  141. package/dist/runtime/geniex/host-process.js +104 -0
  142. package/dist/runtime/geniex/host-process.js.map +1 -0
  143. package/dist/runtime/geniex/index.d.ts +11 -0
  144. package/dist/runtime/geniex/index.js +12 -0
  145. package/dist/runtime/geniex/index.js.map +1 -0
  146. package/dist/runtime/geniex/model-yml.d.ts +8 -0
  147. package/dist/runtime/geniex/model-yml.js +98 -0
  148. package/dist/runtime/geniex/model-yml.js.map +1 -0
  149. package/dist/runtime/geniex/runtime.d.ts +94 -0
  150. package/dist/runtime/geniex/runtime.js +366 -0
  151. package/dist/runtime/geniex/runtime.js.map +1 -0
  152. package/dist/runtime/litert-lm/host/openai.d.ts +4 -37
  153. package/dist/runtime/litert-lm/host/openai.js +11 -96
  154. package/dist/runtime/litert-lm/host/openai.js.map +1 -1
  155. package/dist/runtime/litert-lm/host/pool.d.ts +1 -7
  156. package/dist/runtime/litert-lm/host/pool.js +1 -17
  157. package/dist/runtime/litert-lm/host/pool.js.map +1 -1
  158. package/dist/runtime/litert-lm/host/server.js +11 -53
  159. package/dist/runtime/litert-lm/host/server.js.map +1 -1
  160. package/dist/runtime/llamacpp/args.d.ts +5 -0
  161. package/dist/runtime/llamacpp/args.js +2 -0
  162. package/dist/runtime/llamacpp/args.js.map +1 -1
  163. package/dist/runtime/llamacpp/fit-margin.d.ts +44 -0
  164. package/dist/runtime/llamacpp/fit-margin.js +50 -0
  165. package/dist/runtime/llamacpp/fit-margin.js.map +1 -1
  166. package/dist/runtime/llamacpp/load-plan.d.ts +5 -0
  167. package/dist/runtime/llamacpp/load-plan.js +57 -22
  168. package/dist/runtime/llamacpp/load-plan.js.map +1 -1
  169. package/dist/runtime/llamacpp/runtime.d.ts +5 -1
  170. package/dist/runtime/llamacpp/runtime.js +6 -1
  171. package/dist/runtime/llamacpp/runtime.js.map +1 -1
  172. package/dist/runtime/shared/external-sessions.js +1 -0
  173. package/dist/runtime/shared/external-sessions.js.map +1 -1
  174. package/dist/runtime/shared/fifo-lock.d.ts +10 -0
  175. package/dist/runtime/shared/fifo-lock.js +21 -0
  176. package/dist/runtime/shared/fifo-lock.js.map +1 -0
  177. package/dist/runtime/shared/index.d.ts +2 -0
  178. package/dist/runtime/shared/index.js +2 -0
  179. package/dist/runtime/shared/index.js.map +1 -1
  180. package/dist/runtime/shared/openai-sse.d.ts +112 -0
  181. package/dist/runtime/shared/openai-sse.js +178 -0
  182. package/dist/runtime/shared/openai-sse.js.map +1 -0
  183. package/dist/server/clients.d.ts +6 -0
  184. package/dist/server/clients.js +11 -0
  185. package/dist/server/clients.js.map +1 -1
  186. package/dist/server/control/router.js +2 -0
  187. package/dist/server/control/router.js.map +1 -1
  188. package/dist/server/control/routes/geniex.d.ts +7 -0
  189. package/dist/server/control/routes/geniex.js +22 -0
  190. package/dist/server/control/routes/geniex.js.map +1 -0
  191. package/dist/server/control/types.d.ts +11 -1
  192. package/dist/server/control/types.js.map +1 -1
  193. package/dist/server/http.js +2 -0
  194. package/dist/server/http.js.map +1 -1
  195. package/dist/server/public/embedding.d.ts +8 -7
  196. package/dist/server/public/embedding.js +15 -7
  197. package/dist/server/public/embedding.js.map +1 -1
  198. package/dist/server/public/forward.js +23 -6
  199. package/dist/server/public/forward.js.map +1 -1
  200. package/dist/server/public/listing.js +1 -0
  201. package/dist/server/public/listing.js.map +1 -1
  202. package/dist/server/public/responses.js +9 -0
  203. package/dist/server/public/responses.js.map +1 -1
  204. package/dist/server/public/telemetry.d.ts +7 -1
  205. package/dist/server/public/telemetry.js +11 -3
  206. package/dist/server/public/telemetry.js.map +1 -1
  207. package/dist/server/public/trace.d.ts +8 -4
  208. package/dist/server/public/trace.js +15 -7
  209. package/dist/server/public/trace.js.map +1 -1
  210. package/dist/server/public/validate.d.ts +32 -0
  211. package/dist/server/public/validate.js +146 -0
  212. package/dist/server/public/validate.js.map +1 -0
  213. package/dist/settings/schema/geniex.json +63 -0
  214. package/dist/settings/schema/mlx.json +1 -1
  215. package/dist/settings/schema.js +11 -0
  216. package/dist/settings/schema.js.map +1 -1
  217. package/dist/version.d.ts +1 -1
  218. package/dist/version.js +1 -1
  219. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codex-repair.js","sourceRoot":"","sources":["../../../src/integrations/configure/codex-repair.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,55 @@
1
1
  /**
2
- * Codex CLI — `~/.codex/config.toml`.
2
+ * Codex CLI — a profile file of our own, `<codex_home>/atomic-chat.config.toml`.
3
3
  *
4
- * Port of `configure_codex` in `src-tauri/src/core/system/commands.rs`. This is the only writer that
5
- * edits TOML, and it does it textually rather than by parsing: the file is the user's, so the two
6
- * regions we own are delimited by managed markers and everything between them is left alone.
4
+ * Codex 0.134+ layers `$CODEX_HOME/<name>.config.toml` over the base `config.toml` when it is run
5
+ * with `--profile <name>`, so `launch` runs `codex --profile atomic-chat` (catalog `runArgs`) and the
6
+ * model, the provider and its endpoint live in a file nothing else writes. The provider id is
7
+ * `atomic-chat`, not `atomic`, so it never merges into a `[model_providers.atomic]` the user has.
7
8
  *
8
- * Two regions, not one, because Codex 0.135+ makes Atomic the default provider through the bare
9
- * root keys `model` / `model_provider`, and bare TOML keys must precede every `[table]`. So a head
10
- * block goes at the very top, the user's content follows, and the `[model_providers.atomic]` table
11
- * goes last. Rerunning strips both regions first, which is why a rerun is idempotent.
9
+ * The shared `config.toml` is no longer ours to write. Earlier versions edited it (two managed
10
+ * regions: bare root `model` / `model_provider` at the top, `[model_providers.atomic]` at the end),
11
+ * and a user who already had a root `model` got a duplicate key that stopped Codex — and the ChatGPT
12
+ * desktop app, which reads the same file — from starting. The only thing done to it now is removing
13
+ * those regions, through the strict repair in `codex-repair.ts`, before the profile is written.
12
14
  *
13
- * The user's content is `trimEnd`-ed but never trimmed at the start: leading blank lines left by
14
- * stripping a previous head block are part of the recorded output.
15
+ * Order: version gate, repair, profile. Below 0.134 `--profile` meant the old `[profiles.x]` tables,
16
+ * so an old Codex is refused before anything is touched; a version that cannot be read is let through.
17
+ * The profile is rewritten only while its first line says Atomic Chat wrote it: a file of the same
18
+ * name that someone else made is refused, never replaced. A profile that is a symbolic link is
19
+ * written through, so the link survives; one that points at nothing is refused rather than replaced.
20
+ * The bytes are a contract with the desktop writer (ADR 2026-10-27-codex-runs-on-a-profile-of-its-own),
21
+ * so either side can rewrite the other's.
15
22
  */
23
+ import type { ConfigFs } from '../config-io.js';
16
24
  import type { ConfigureInput } from './registry.js';
25
+ /** The profile name `--profile` takes, and the stem of its file. */
26
+ export declare const CODEX_PROFILE = "atomic-chat";
27
+ /** A profile file is ours iff it starts with this. */
28
+ export declare const CODEX_PROFILE_OWNER_PREFIX = "# Managed by Atomic Chat";
29
+ /**
30
+ * The first release where `--profile <name>` reads `<name>.config.toml`; 0.131–0.133 called that
31
+ * `--profile-v2` and meant the old `[profiles.x]` tables by `--profile`.
32
+ */
33
+ export declare const CODEX_MIN_VERSION: readonly [0, 134, 0];
34
+ export type CodexVersion = readonly [number, number, number];
35
+ /**
36
+ * Codex's own home: `$CODEX_HOME` when set and non-empty, else `<home>/.codex`. Codex resolves a
37
+ * relative `$CODEX_HOME` against its working directory, which `launch` shares with it. A leading `~`
38
+ * is expanded against the home directory: a quoted `CODEX_HOME="~/x"` reaches us unexpanded.
39
+ */
40
+ export declare function codexHome(env: NodeJS.ProcessEnv, home: string): string;
41
+ export declare function codexProfilePath(dir: string): string;
42
+ /**
43
+ * The profile's exact bytes. Codex reads the key from the variable `env_key` names, never inline, so
44
+ * a keyless server gets no `env_key` line at all and `launch` sets the variable on the child.
45
+ */
46
+ export declare function renderCodexProfile(apiUrl: string, model: string, apiKey: string): string;
47
+ /** `codex --version` prints `codex-cli 0.146.0`: the first `x.y.z` in the output. */
48
+ export declare function parseCodexVersion(output: string): CodexVersion | undefined;
49
+ export declare function isCodexTooOld([major, minor, patch]: CodexVersion): boolean;
50
+ /**
51
+ * Write the profile, refusing to replace a file of that name Atomic Chat did not write. Returns its
52
+ * path. A profile that cannot be read is an error, never "absent"; a symbolic link is written through.
53
+ */
54
+ export declare function writeCodexProfile(fs: ConfigFs, dir: string, apiUrl: string, model: string, apiKey: string): Promise<string>;
17
55
  export declare function configureCodex(input: ConfigureInput): Promise<void>;
@@ -1,43 +1,137 @@
1
1
  /**
2
- * Codex CLI — `~/.codex/config.toml`.
2
+ * Codex CLI — a profile file of our own, `<codex_home>/atomic-chat.config.toml`.
3
3
  *
4
- * Port of `configure_codex` in `src-tauri/src/core/system/commands.rs`. This is the only writer that
5
- * edits TOML, and it does it textually rather than by parsing: the file is the user's, so the two
6
- * regions we own are delimited by managed markers and everything between them is left alone.
4
+ * Codex 0.134+ layers `$CODEX_HOME/<name>.config.toml` over the base `config.toml` when it is run
5
+ * with `--profile <name>`, so `launch` runs `codex --profile atomic-chat` (catalog `runArgs`) and the
6
+ * model, the provider and its endpoint live in a file nothing else writes. The provider id is
7
+ * `atomic-chat`, not `atomic`, so it never merges into a `[model_providers.atomic]` the user has.
7
8
  *
8
- * Two regions, not one, because Codex 0.135+ makes Atomic the default provider through the bare
9
- * root keys `model` / `model_provider`, and bare TOML keys must precede every `[table]`. So a head
10
- * block goes at the very top, the user's content follows, and the `[model_providers.atomic]` table
11
- * goes last. Rerunning strips both regions first, which is why a rerun is idempotent.
9
+ * The shared `config.toml` is no longer ours to write. Earlier versions edited it (two managed
10
+ * regions: bare root `model` / `model_provider` at the top, `[model_providers.atomic]` at the end),
11
+ * and a user who already had a root `model` got a duplicate key that stopped Codex — and the ChatGPT
12
+ * desktop app, which reads the same file — from starting. The only thing done to it now is removing
13
+ * those regions, through the strict repair in `codex-repair.ts`, before the profile is written.
12
14
  *
13
- * The user's content is `trimEnd`-ed but never trimmed at the start: leading blank lines left by
14
- * stripping a previous head block are part of the recorded output.
15
+ * Order: version gate, repair, profile. Below 0.134 `--profile` meant the old `[profiles.x]` tables,
16
+ * so an old Codex is refused before anything is touched; a version that cannot be read is let through.
17
+ * The profile is rewritten only while its first line says Atomic Chat wrote it: a file of the same
18
+ * name that someone else made is refused, never replaced. A profile that is a symbolic link is
19
+ * written through, so the link survives; one that points at nothing is refused rather than replaced.
20
+ * The bytes are a contract with the desktop writer (ADR 2026-10-27-codex-runs-on-a-profile-of-its-own),
21
+ * so either side can rewrite the other's.
15
22
  */
16
- import { ATOMIC_MANAGED_BEGIN, ATOMIC_MANAGED_END } from '../config-io.js';
17
- import { stripAtomicManagedBlock, tomlBasicStringEscape } from '../config-io.js';
23
+ import { join, resolve } from 'node:path';
24
+ import { parse as parseToml } from 'smol-toml';
25
+ import { AtomicCoreError } from '../../contracts/index.js';
26
+ import { expandTilde, tomlBasicStringEscape } from '../config-io.js';
27
+ import { repairLegacyCodexConfig } from './codex-repair.js';
18
28
  import { registerWriter } from './registry.js';
19
- const DIR = '.codex';
20
- const PATH = `${DIR}/config.toml`;
21
- export async function configureCodex(input) {
22
- const { fs, apiUrl, model, apiKey } = input;
23
- await fs.mkdirp(DIR);
24
- const existing = (await fs.read(PATH)) ?? '';
25
- const cleaned = stripAtomicManagedBlock(existing);
26
- const head = `${ATOMIC_MANAGED_BEGIN}\n` +
29
+ /** The profile name `--profile` takes, and the stem of its file. */
30
+ export const CODEX_PROFILE = 'atomic-chat';
31
+ /** A profile file is ours iff it starts with this. */
32
+ export const CODEX_PROFILE_OWNER_PREFIX = '# Managed by Atomic Chat';
33
+ /**
34
+ * The first release where `--profile <name>` reads `<name>.config.toml`; 0.131–0.133 called that
35
+ * `--profile-v2` and meant the old `[profiles.x]` tables by `--profile`.
36
+ */
37
+ export const CODEX_MIN_VERSION = [0, 134, 0];
38
+ /**
39
+ * Codex's own home: `$CODEX_HOME` when set and non-empty, else `<home>/.codex`. Codex resolves a
40
+ * relative `$CODEX_HOME` against its working directory, which `launch` shares with it. A leading `~`
41
+ * is expanded against the home directory: a quoted `CODEX_HOME="~/x"` reaches us unexpanded.
42
+ */
43
+ export function codexHome(env, home) {
44
+ const raw = env['CODEX_HOME'];
45
+ return raw === undefined || raw === '' ? join(home, '.codex') : resolve(expandTilde(raw, home));
46
+ }
47
+ export function codexProfilePath(dir) {
48
+ return join(dir, `${CODEX_PROFILE}.config.toml`);
49
+ }
50
+ /**
51
+ * The profile's exact bytes. Codex reads the key from the variable `env_key` names, never inline, so
52
+ * a keyless server gets no `env_key` line at all and `launch` sets the variable on the child.
53
+ */
54
+ export function renderCodexProfile(apiUrl, model, apiKey) {
55
+ return (`${CODEX_PROFILE_OWNER_PREFIX}: \`codex --profile ${CODEX_PROFILE}\` runs Codex on your local models.\n` +
56
+ '# Atomic Chat rewrites this file when Codex is connected again and deletes it on disconnect.\n' +
27
57
  `model = "${tomlBasicStringEscape(model)}"\n` +
28
- `model_provider = "atomic"\n` +
29
- `${ATOMIC_MANAGED_END}\n`;
30
- // Codex reads the secret from the env var named here, never inline — so with no key there is no
31
- // `env_key` line at all, rather than a placeholder.
32
- const envKeyLine = apiKey === '' ? '' : `env_key = "ATOMIC_CHAT_API_KEY"\n`;
33
- const block = `${ATOMIC_MANAGED_BEGIN}\n` +
34
- `[model_providers.atomic]\n` +
35
- `name = "Atomic Chat"\n` +
58
+ `model_provider = "${CODEX_PROFILE}"\n` +
59
+ '\n' +
60
+ `[model_providers.${CODEX_PROFILE}]\n` +
61
+ 'name = "Atomic Chat"\n' +
36
62
  `base_url = "${tomlBasicStringEscape(apiUrl)}"\n` +
37
- envKeyLine +
38
- `${ATOMIC_MANAGED_END}\n`;
39
- const content = cleaned.trim() === '' ? `${head}\n${block}` : `${head}\n${cleaned.trimEnd()}\n${block}`;
40
- await fs.write(PATH, content);
63
+ (apiKey === '' ? '' : 'env_key = "ATOMIC_CHAT_API_KEY"\n'));
64
+ }
65
+ /** `codex --version` prints `codex-cli 0.146.0`: the first `x.y.z` in the output. */
66
+ export function parseCodexVersion(output) {
67
+ const match = /(\d+)\.(\d+)\.(\d+)/.exec(output);
68
+ return match ? [Number(match[1]), Number(match[2]), Number(match[3])] : undefined;
69
+ }
70
+ export function isCodexTooOld([major, minor, patch]) {
71
+ const [minMajor, minMinor, minPatch] = CODEX_MIN_VERSION;
72
+ if (major !== minMajor)
73
+ return major < minMajor;
74
+ if (minor !== minMinor)
75
+ return minor < minMinor;
76
+ return patch < minPatch;
77
+ }
78
+ /**
79
+ * Write the profile, refusing to replace a file of that name Atomic Chat did not write. Returns its
80
+ * path. A profile that cannot be read is an error, never "absent"; a symbolic link is written through.
81
+ */
82
+ export async function writeCodexProfile(fs, dir, apiUrl, model, apiKey) {
83
+ const path = codexProfilePath(dir);
84
+ const contents = renderCodexProfile(apiUrl, model, apiKey);
85
+ // Cannot fail with the escaping above; it keeps a future edit of the template from shipping a file
86
+ // Codex would reject.
87
+ parseToml(contents);
88
+ let target;
89
+ let existing;
90
+ try {
91
+ target = await fs.linkTarget(path);
92
+ existing = await fs.readStrict(target);
93
+ }
94
+ catch (e) {
95
+ // Only a link to nothing makes `linkTarget` report "not found"; writing would replace the link.
96
+ const dangling = e.code === 'ENOENT';
97
+ throw new AtomicCoreError('IO_ERROR', dangling
98
+ ? `${path} is a symbolic link to a file that does not exist. Remove the link or create the file it points to, then connect Codex again.`
99
+ : `Failed to read ${path}`, e.message);
100
+ }
101
+ if (existing !== undefined && !existing.startsWith(CODEX_PROFILE_OWNER_PREFIX)) {
102
+ throw new AtomicCoreError('IO_ERROR', `${path} already exists and was not written by Atomic Chat. Rename or remove it, then connect Codex again.`);
103
+ }
104
+ await fs.write(target, contents);
105
+ return path;
106
+ }
107
+ /**
108
+ * The installed Codex's version, or `undefined` when it cannot be told: no runner, a launcher that
109
+ * does not start or fails, output without a version. On Windows the npm launcher is `codex.cmd`,
110
+ * which only `cmd` can run (as for Cline).
111
+ */
112
+ async function installedCodexVersion(input) {
113
+ if (!input.spawn)
114
+ return undefined;
115
+ const program = input.program ?? 'codex';
116
+ const windows = input.platform === 'win32';
117
+ try {
118
+ const result = await input.spawn(windows ? 'cmd' : program, windows ? ['/C', program, '--version'] : ['--version']);
119
+ return result.code === 0 ? parseCodexVersion(result.stdout) : undefined;
120
+ }
121
+ catch {
122
+ return undefined;
123
+ }
124
+ }
125
+ export async function configureCodex(input) {
126
+ const version = await installedCodexVersion(input);
127
+ if (version && isCodexTooOld(version)) {
128
+ throw new AtomicCoreError('IO_ERROR', `Codex CLI ${version.join('.')} is too old for Atomic Chat. Update it to 0.134 or newer and connect again.`);
129
+ }
130
+ const dir = codexHome(input.env, input.fs.home);
131
+ const repair = await repairLegacyCodexConfig(input.fs, dir, input.platform);
132
+ if (repair.kind === 'conflict')
133
+ throw new AtomicCoreError('IO_ERROR', repair.reason);
134
+ await writeCodexProfile(input.fs, dir, input.apiUrl, input.model, input.apiKey);
41
135
  }
42
136
  registerWriter('codex', configureCodex);
43
137
  //# sourceMappingURL=codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/integrations/configure/codex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC1E,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAA;AAEhF,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,MAAM,GAAG,GAAG,QAAQ,CAAA;AACpB,MAAM,IAAI,GAAG,GAAG,GAAG,cAAc,CAAA;AAEjC,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAqB;IACxD,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,CAAA;IAC3C,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAEpB,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAA;IAC5C,MAAM,OAAO,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAA;IAEjD,MAAM,IAAI,GACR,GAAG,oBAAoB,IAAI;QAC3B,YAAY,qBAAqB,CAAC,KAAK,CAAC,KAAK;QAC7C,6BAA6B;QAC7B,GAAG,kBAAkB,IAAI,CAAA;IAE3B,gGAAgG;IAChG,oDAAoD;IACpD,MAAM,UAAU,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,mCAAmC,CAAA;IAC3E,MAAM,KAAK,GACT,GAAG,oBAAoB,IAAI;QAC3B,4BAA4B;QAC5B,wBAAwB;QACxB,eAAe,qBAAqB,CAAC,MAAM,CAAC,KAAK;QACjD,UAAU;QACV,GAAG,kBAAkB,IAAI,CAAA;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,KAAK,KAAK,EAAE,CAAA;IAEvG,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;AAC/B,CAAC;AAED,cAAc,CAAC,OAAO,EAAE,cAAc,CAAC,CAAA"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/integrations/configure/codex.ts"],"names":[],"mappings":"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"}
@@ -14,12 +14,14 @@ export interface ConfigureInput {
14
14
  /** `$SHELL`; decides which rc file the env-var agents write to. */
15
15
  shell: string | undefined;
16
16
  env: NodeJS.ProcessEnv;
17
- /** Run a command (only Cline needs one). Resolves with its exit status and output. */
17
+ /** Run a command (Cline's `cline auth`, Codex's `--version`). Resolves with its exit status and output. */
18
18
  spawn?: (program: string, args: string[]) => Promise<{
19
19
  code: number;
20
20
  stdout: string;
21
21
  stderr: string;
22
22
  }>;
23
+ /** The agent's launcher as detection found it (bare name or absolute path); Codex asks it its version. */
24
+ program?: string;
23
25
  }
24
26
  export type ConfigureWriter = (input: ConfigureInput) => Promise<void>;
25
27
  /** Register a writer for an agent id. Called once per module at import time. */
@@ -33,6 +35,7 @@ export interface ConfigureOptions {
33
35
  shell?: string | undefined;
34
36
  env?: NodeJS.ProcessEnv;
35
37
  spawn?: ConfigureInput['spawn'];
38
+ program?: string;
36
39
  }
37
40
  /**
38
41
  * Point an agent at a local endpoint. `model` may be empty only for the agents whose Rust
@@ -45,6 +45,7 @@ export async function configureAgent(agent, apiUrl, model, apiKey, options = {})
45
45
  shell: options.shell ?? env['SHELL'],
46
46
  env,
47
47
  ...(options.spawn ? { spawn: options.spawn } : {}),
48
+ ...(options.program ? { program: options.program } : {}),
48
49
  });
49
50
  }
50
51
  //# 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;AAiB9C,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;AAWD;;;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;KACnD,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;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"}
@@ -2,6 +2,11 @@
2
2
  * KV-cache size estimate from GGUF metadata. Port of `gguf/utils.rs`
3
3
  * (`kv_cache_bits_per_element`, `estimate_kv_cache_internal`). Error strings are the Rust
4
4
  * `Display` texts, which the app receives verbatim.
5
+ *
6
+ * Beyond the port: a per-layer `head_count_kv` array (`[0, 0, 8, …]`, which `reader.ts` inlines at
7
+ * any length) counts only the layers with KV heads, each with its own count, as llama.cpp allocates
8
+ * them — a hybrid model's recurrent layers hold no KV cache. The Rust estimate cannot read the array
9
+ * and counts every block with `head_count` heads (15 times LFM2.5-2.6B's real 16 KiB per token).
5
10
  */
6
11
  export interface KvCacheEstimate {
7
12
  size: number;
@@ -2,6 +2,11 @@
2
2
  * KV-cache size estimate from GGUF metadata. Port of `gguf/utils.rs`
3
3
  * (`kv_cache_bits_per_element`, `estimate_kv_cache_internal`). Error strings are the Rust
4
4
  * `Display` texts, which the app receives verbatim.
5
+ *
6
+ * Beyond the port: a per-layer `head_count_kv` array (`[0, 0, 8, …]`, which `reader.ts` inlines at
7
+ * any length) counts only the layers with KV heads, each with its own count, as llama.cpp allocates
8
+ * them — a hybrid model's recurrent layers hold no KV cache. The Rust estimate cannot read the array
9
+ * and counts every block with `head_count` heads (15 times LFM2.5-2.6B's real 16 KiB per token).
5
10
  */
6
11
  import { parseRustU64 } from '../../util/index.js';
7
12
  export class KvCacheError extends Error {
@@ -53,6 +58,26 @@ const u64 = (meta, key) => {
53
58
  const raw = meta[key];
54
59
  return raw === undefined ? undefined : parseRustU64(raw);
55
60
  };
61
+ /**
62
+ * The KV heads of each layer from an inline integer array, or `undefined` for anything else: a
63
+ * scalar, the reader's placeholder, a malformed list, or one in which no layer has a KV head.
64
+ */
65
+ function perLayerKvHeads(raw) {
66
+ const text = raw?.trim();
67
+ if (!text || !text.startsWith('[') || !text.endsWith(']'))
68
+ return undefined;
69
+ const inner = text.slice(1, -1).trim();
70
+ if (inner === '')
71
+ return undefined;
72
+ const heads = [];
73
+ for (const part of inner.split(',')) {
74
+ const n = parseRustU64(part.trim());
75
+ if (n === undefined)
76
+ return undefined;
77
+ heads.push(n);
78
+ }
79
+ return heads.some((n) => n > 0) ? heads : undefined;
80
+ }
56
81
  export function estimateKvCache(meta, ctxSize, cacheTypeK, cacheTypeV) {
57
82
  const arch = meta['general.architecture'];
58
83
  if (arch === undefined)
@@ -61,10 +86,17 @@ export function estimateKvCache(meta, ctxSize, cacheTypeK, cacheTypeV) {
61
86
  if (nLayer === undefined || nLayer <= 0)
62
87
  throw new KvCacheError(KV_CACHE_ERRORS.blockCountInvalid);
63
88
  const headCount = u64(meta, `${arch}.attention.head_count`);
89
+ const layerKvHeads = perLayerKvHeads(meta[`${arch}.attention.head_count_kv`]);
64
90
  const headCountKv = u64(meta, `${arch}.attention.head_count_kv`);
65
- const nHead = headCountKv !== undefined && headCountKv > 0 ? headCountKv : (headCount ?? 0);
91
+ const nHead = layerKvHeads
92
+ ? Math.max(...layerKvHeads)
93
+ : headCountKv !== undefined && headCountKv > 0
94
+ ? headCountKv
95
+ : (headCount ?? 0);
66
96
  if (nHead === 0)
67
97
  throw new KvCacheError(KV_CACHE_ERRORS.headCountInvalid);
98
+ /** KV heads summed over the layers: `block_count × heads` for a scalar, the array's sum per layer. */
99
+ const kvHeadsAcrossLayers = layerKvHeads ? layerKvHeads.reduce((a, b) => a + b, 0) : nLayer * nHead;
68
100
  let keyLen = u64(meta, `${arch}.attention.key_length`) ?? 0;
69
101
  let valLen = u64(meta, `${arch}.attention.value_length`) ?? 0;
70
102
  if (keyLen === 0 || valLen === 0) {
@@ -84,7 +116,8 @@ export function estimateKvCache(meta, ctxSize, cacheTypeK, cacheTypeV) {
84
116
  const ctxLen = ctxSize === undefined ? maxCtx : Math.min(ctxSize, maxCtx);
85
117
  const slidingWindowRaw = u64(meta, `${arch}.attention.sliding_window`);
86
118
  const slidingWindow = slidingWindowRaw !== undefined && slidingWindowRaw > 0 ? slidingWindowRaw : undefined;
87
- const bitsPerToken = nLayer * nHead * (keyLen * kvCacheBitsPerElement(cacheTypeK) + valLen * kvCacheBitsPerElement(cacheTypeV));
119
+ const bitsPerToken = kvHeadsAcrossLayers *
120
+ (keyLen * kvCacheBitsPerElement(cacheTypeK) + valLen * kvCacheBitsPerElement(cacheTypeV));
88
121
  const kvPerToken = Math.ceil(bitsPerToken / 8);
89
122
  const fullCost = ctxLen * kvPerToken;
90
123
  const size = slidingWindow === undefined ? fullCost : Math.floor((fullCost + slidingWindow * kvPerToken) / 2);
@@ -1 +1 @@
1
- {"version":3,"file":"kv-cache.js","sourceRoot":"","sources":["../../../src/models/gguf/kv-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"kv-cache.js","sourceRoot":"","sources":["../../../src/models/gguf/kv-cache.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,9 @@
4
4
  * Reads magic, version, tensor count and the metadata KV block only — never the tensor table.
5
5
  * Every value is stringified the way the Rust reader does (`to_string()`, `[a, b]` for arrays of
6
6
  * up to 24 elements, a placeholder for longer ones), so downstream code sees identical strings.
7
+ * One deliberate exception: an integer `<arch>.attention.head_count_kv` is inlined at any length up
8
+ * to `MAX_PER_LAYER_ARRAY_LEN`, because a hybrid model names its attention layers there, one entry
9
+ * per block, and the KV-cache estimate needs every entry (LFM2.5-2.6B has 30 blocks, 8 of them attend).
7
10
  *
8
11
  * Pure over a byte buffer; callers feed it a file prefix and grow it while it asks for more.
9
12
  */
@@ -16,6 +19,8 @@ export declare const GGUF_VALUE_TYPE_NAMES: readonly ["Uint8", "Int8", "Uint16",
16
19
  export declare const MAX_GGUF_STRING_BYTES: number;
17
20
  export declare const MAX_GGUF_ARRAY_LEN = 1000000;
18
21
  export declare const INLINE_ARRAY_MAX_LEN = 24;
22
+ /** The longest per-layer array inlined past `INLINE_ARRAY_MAX_LEN`: more blocks than any model has. */
23
+ export declare const MAX_PER_LAYER_ARRAY_LEN = 4096;
19
24
  /** The buffer ended before the header did; feed more bytes and retry. */
20
25
  export declare class GgufNeedMoreData extends Error {
21
26
  constructor();
@@ -4,6 +4,9 @@
4
4
  * Reads magic, version, tensor count and the metadata KV block only — never the tensor table.
5
5
  * Every value is stringified the way the Rust reader does (`to_string()`, `[a, b]` for arrays of
6
6
  * up to 24 elements, a placeholder for longer ones), so downstream code sees identical strings.
7
+ * One deliberate exception: an integer `<arch>.attention.head_count_kv` is inlined at any length up
8
+ * to `MAX_PER_LAYER_ARRAY_LEN`, because a hybrid model names its attention layers there, one entry
9
+ * per block, and the KV-cache estimate needs every entry (LFM2.5-2.6B has 30 blocks, 8 of them attend).
7
10
  *
8
11
  * Pure over a byte buffer; callers feed it a file prefix and grow it while it asks for more.
9
12
  */
@@ -26,6 +29,14 @@ export const GGUF_VALUE_TYPE_NAMES = [
26
29
  export const MAX_GGUF_STRING_BYTES = 1024 * 1024;
27
30
  export const MAX_GGUF_ARRAY_LEN = 1_000_000;
28
31
  export const INLINE_ARRAY_MAX_LEN = 24;
32
+ /** The longest per-layer array inlined past `INLINE_ARRAY_MAX_LEN`: more blocks than any model has. */
33
+ export const MAX_PER_LAYER_ARRAY_LEN = 4096;
34
+ /** Integer GGUF value types (`u8` … `i32`, `u64`, `i64`). */
35
+ const INTEGER_TYPES = new Set([0, 1, 2, 3, 4, 5, 10, 11]);
36
+ /** Keys whose integer arrays are one entry per block and are inlined at any length. */
37
+ function isPerLayerKey(key) {
38
+ return /^[^.]+\.attention\.head_count_kv$/.test(key);
39
+ }
29
40
  /** The buffer ended before the header did; feed more bytes and retry. */
30
41
  export class GgufNeedMoreData extends Error {
31
42
  constructor() {
@@ -137,7 +148,7 @@ function valueType(n) {
137
148
  throw new GgufParseError(`Unknown GGUF value type: ${n}`);
138
149
  return n;
139
150
  }
140
- function readValue(c, type) {
151
+ function readValue(c, type, perLayer = false) {
141
152
  switch (type) {
142
153
  case 0:
143
154
  return String(c.u8());
@@ -169,7 +180,8 @@ function readValue(c, type) {
169
180
  if (len > BigInt(MAX_GGUF_ARRAY_LEN))
170
181
  throw new GgufParseError(`Array length ${len} is unreasonably large`);
171
182
  const n = Number(len);
172
- if (n > INLINE_ARRAY_MAX_LEN) {
183
+ const inlineAll = perLayer && INTEGER_TYPES.has(elemType) && n <= MAX_PER_LAYER_ARRAY_LEN;
184
+ if (n > INLINE_ARRAY_MAX_LEN && !inlineAll) {
173
185
  skipArray(c, elemType, n);
174
186
  return `<Array of type ${GGUF_VALUE_TYPE_NAMES[elemType]} with ${n} elements, data skipped>`;
175
187
  }
@@ -234,7 +246,7 @@ export function readGgufMetadata(bytes) {
234
246
  try {
235
247
  const key = readString(c);
236
248
  const type = valueType(c.u32());
237
- metadata[key] = readValue(c, type);
249
+ metadata[key] = readValue(c, type, isPerLayerKey(key));
238
250
  }
239
251
  catch (e) {
240
252
  if (e instanceof GgufNeedMoreData)
@@ -1 +1 @@
1
- {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/models/gguf/reader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../../src/models/gguf/reader.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export interface RemoteProvider {
21
21
  /** The image and video models enabled for this provider; never part of chat routing. */
22
22
  media?: CloudProviderMedia;
23
23
  }
24
- export type LocalProvider = 'llamacpp' | 'llamacpp-upstream' | 'mlx' | 'tensorrt-llm' | 'atomic-prism' | 'vllm' | 'sglang' | 'foundry-local' | 'litert-lm';
24
+ export type LocalProvider = 'llamacpp' | 'llamacpp-upstream' | 'mlx' | 'tensorrt-llm' | 'atomic-prism' | 'vllm' | 'sglang' | 'foundry-local' | 'litert-lm' | 'geniex';
25
25
  /**
26
26
  * The order local providers are searched in when a request names only a model. The same model id
27
27
  * loaded under two engines resolves to the first; changing the order would silently move traffic.
@@ -29,7 +29,8 @@ export type LocalProvider = 'llamacpp' | 'llamacpp-upstream' | 'mlx' | 'tensorrt
29
29
  * exactly that reason: adding a provider moves nothing that already resolved (`vllm` after
30
30
  * `atomic-prism`, which core 0.10.0 already shipped; change `add-vllm-runtime`, D11; `sglang` after
31
31
  * `vllm`, change `add-sglang-runtime`, D8; `foundry-local` after `sglang`, change `add-foundry-local`, D5;
32
- * `litert-lm` after `foundry-local`, change `add-litert-lm-runtime`, task 6.1). A Prism-only file never loads
32
+ * `litert-lm` after `foundry-local`, change `add-litert-lm-runtime`, task 6.1; `geniex` after `litert-lm`,
33
+ * change `add-geniex-runtime`, task 6.1). A Prism-only file never loads
33
34
  * under another engine (the compatibility gate), so its sessions are found here even near the end of
34
35
  * the list; one store model is never loaded in two managed providers at once, so their order never
35
36
  * decides between two live sessions of one id.
@@ -12,7 +12,8 @@
12
12
  * exactly that reason: adding a provider moves nothing that already resolved (`vllm` after
13
13
  * `atomic-prism`, which core 0.10.0 already shipped; change `add-vllm-runtime`, D11; `sglang` after
14
14
  * `vllm`, change `add-sglang-runtime`, D8; `foundry-local` after `sglang`, change `add-foundry-local`, D5;
15
- * `litert-lm` after `foundry-local`, change `add-litert-lm-runtime`, task 6.1). A Prism-only file never loads
15
+ * `litert-lm` after `foundry-local`, change `add-litert-lm-runtime`, task 6.1; `geniex` after `litert-lm`,
16
+ * change `add-geniex-runtime`, task 6.1). A Prism-only file never loads
16
17
  * under another engine (the compatibility gate), so its sessions are found here even near the end of
17
18
  * the list; one store model is never loaded in two managed providers at once, so their order never
18
19
  * decides between two live sessions of one id.
@@ -27,6 +28,7 @@ export const LOCAL_SEARCH_ORDER = [
27
28
  'sglang',
28
29
  'foundry-local',
29
30
  'litert-lm',
31
+ 'geniex',
30
32
  ];
31
33
  /**
32
34
  * The remote provider that owns `modelId`, if any. For an id the app selected no provider for
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/router/resolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../src/router/resolve.ts"],"names":[],"mappings":"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"}