@ashlr/hub 3.8.0 → 3.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. package/CHANGELOG.md +201 -0
  2. package/dist/build-identity.json +2 -2
  3. package/dist/cli/resource-profile.js +95 -21
  4. package/dist/cli/resource-profile.js.map +1 -1
  5. package/dist/core/resources/native-profile.d.ts +56 -0
  6. package/dist/core/resources/native-profile.js +368 -6
  7. package/dist/core/resources/native-profile.js.map +1 -1
  8. package/dist/core/run/model-catalog.js +8 -1
  9. package/dist/core/run/model-catalog.js.map +1 -1
  10. package/dist/core/universe/builtins/preparation/manifest.json +1 -1
  11. package/dist/core/universe/builtins/preparation/preparation-bridge.mjs +9 -2
  12. package/dist/core/universe/builtins/preparation/preparation-verification-fixtures.mjs +8 -1
  13. package/dist/core/verse/adapters/claude.d.ts +49 -2
  14. package/dist/core/verse/adapters/claude.js +317 -56
  15. package/dist/core/verse/adapters/claude.js.map +1 -1
  16. package/dist/core/verse/adapters/codex.d.ts +81 -5
  17. package/dist/core/verse/adapters/codex.js +409 -47
  18. package/dist/core/verse/adapters/codex.js.map +1 -1
  19. package/dist/core/verse/adapters/grok.d.ts +13 -1
  20. package/dist/core/verse/adapters/grok.js +28 -2
  21. package/dist/core/verse/adapters/grok.js.map +1 -1
  22. package/dist/core/verse/adapters/index.d.ts +32 -0
  23. package/dist/core/verse/adapters/index.js +2 -0
  24. package/dist/core/verse/adapters/index.js.map +1 -1
  25. package/dist/core/verse/codex-rollout.d.ts +284 -0
  26. package/dist/core/verse/codex-rollout.js +786 -0
  27. package/dist/core/verse/codex-rollout.js.map +1 -0
  28. package/dist/core/verse/context-fit.d.ts +63 -0
  29. package/dist/core/verse/context-fit.js +355 -0
  30. package/dist/core/verse/context-fit.js.map +1 -0
  31. package/dist/core/verse/context-math.d.ts +215 -0
  32. package/dist/core/verse/context-math.js +365 -0
  33. package/dist/core/verse/context-math.js.map +1 -0
  34. package/dist/core/verse/local-models.d.ts +137 -1
  35. package/dist/core/verse/local-models.js +209 -5
  36. package/dist/core/verse/local-models.js.map +1 -1
  37. package/dist/core/verse/model-windows.d.ts +217 -0
  38. package/dist/core/verse/model-windows.js +616 -0
  39. package/dist/core/verse/model-windows.js.map +1 -0
  40. package/dist/core/verse/preferences.d.ts +123 -0
  41. package/dist/core/verse/preferences.js +403 -0
  42. package/dist/core/verse/preferences.js.map +1 -0
  43. package/dist/core/verse/project-memory.d.ts +112 -0
  44. package/dist/core/verse/project-memory.js +295 -0
  45. package/dist/core/verse/project-memory.js.map +1 -0
  46. package/dist/core/verse/seats.d.ts +106 -4
  47. package/dist/core/verse/seats.js +291 -89
  48. package/dist/core/verse/seats.js.map +1 -1
  49. package/dist/core/verse/session-engine.d.ts +76 -2
  50. package/dist/core/verse/session-engine.js +684 -63
  51. package/dist/core/verse/session-engine.js.map +1 -1
  52. package/dist/core/verse/session-handoff.d.ts +94 -0
  53. package/dist/core/verse/session-handoff.js +551 -0
  54. package/dist/core/verse/session-handoff.js.map +1 -0
  55. package/dist/core/verse/session-search.d.ts +63 -0
  56. package/dist/core/verse/session-search.js +213 -0
  57. package/dist/core/verse/session-search.js.map +1 -0
  58. package/dist/core/verse/session-store.d.ts +16 -2
  59. package/dist/core/verse/session-store.js +80 -6
  60. package/dist/core/verse/session-store.js.map +1 -1
  61. package/dist/core/verse/types.d.ts +333 -1
  62. package/dist/core/verse/types.js +54 -2
  63. package/dist/core/verse/types.js.map +1 -1
  64. package/dist/core/verse/verse-api.d.ts +40 -5
  65. package/dist/core/verse/verse-api.js +724 -25
  66. package/dist/core/verse/verse-api.js.map +1 -1
  67. package/dist/core/web/api.d.ts +14 -4
  68. package/dist/core/web/api.js +26 -11
  69. package/dist/core/web/api.js.map +1 -1
  70. package/dist/core/web/public/next/assets/{App-BsbJFA2j.js → App-XURmiAAp.js} +5 -5
  71. package/dist/core/web/public/next/assets/{App-BsbJFA2j.js.map → App-XURmiAAp.js.map} +1 -1
  72. package/dist/core/web/public/next/assets/{ApprovalsSection-2CCSoBTJ.js → ApprovalsSection-BriUzoZc.js} +2 -2
  73. package/dist/core/web/public/next/assets/{ApprovalsSection-2CCSoBTJ.js.map → ApprovalsSection-BriUzoZc.js.map} +1 -1
  74. package/dist/core/web/public/next/assets/AutonomySection-C4GBsQVc.js +2 -0
  75. package/dist/core/web/public/next/assets/{AutonomySection-yeNNUPur.js.map → AutonomySection-C4GBsQVc.js.map} +1 -1
  76. package/dist/core/web/public/next/assets/ChatSection-BpOBOUvg.css +1 -0
  77. package/dist/core/web/public/next/assets/ChatSection-hlgPBRco.js +84 -0
  78. package/dist/core/web/public/next/assets/ChatSection-hlgPBRco.js.map +1 -0
  79. package/dist/core/web/public/next/assets/ConfirmDialog-BdQYI-Ng.js +2 -0
  80. package/dist/core/web/public/next/assets/ConfirmDialog-BdQYI-Ng.js.map +1 -0
  81. package/dist/core/web/public/next/assets/{Dialog-nK15L1M0.js → Dialog-BxdIfmFH.js} +2 -2
  82. package/dist/core/web/public/next/assets/{Dialog-nK15L1M0.js.map → Dialog-BxdIfmFH.js.map} +1 -1
  83. package/dist/core/web/public/next/assets/{DiffViewer-D369eZe8.js → DiffViewer-DmeRWuc4.js} +2 -2
  84. package/dist/core/web/public/next/assets/{DiffViewer-D369eZe8.js.map → DiffViewer-DmeRWuc4.js.map} +1 -1
  85. package/dist/core/web/public/next/assets/{McpSection-DVgiSYG1.js → McpSection-q34T7Tho.js} +2 -2
  86. package/dist/core/web/public/next/assets/{McpSection-DVgiSYG1.js.map → McpSection-q34T7Tho.js.map} +1 -1
  87. package/dist/core/web/public/next/assets/{MutationTokenDialog-B9I4PAcp.js → MutationTokenDialog-CFAkwOEt.js} +2 -2
  88. package/dist/core/web/public/next/assets/{MutationTokenDialog-B9I4PAcp.js.map → MutationTokenDialog-CFAkwOEt.js.map} +1 -1
  89. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-z6tJj3s9.js → ResourcePoolConsoleApp-DHc8GFOY.js} +4 -4
  90. package/dist/core/web/public/next/assets/{ResourcePoolConsoleApp-z6tJj3s9.js.map → ResourcePoolConsoleApp-DHc8GFOY.js.map} +1 -1
  91. package/dist/core/web/public/next/assets/{RouteErrorBoundary-OSajL45F.js → RouteErrorBoundary-ZL9F4qUn.js} +2 -2
  92. package/dist/core/web/public/next/assets/{RouteErrorBoundary-OSajL45F.js.map → RouteErrorBoundary-ZL9F4qUn.js.map} +1 -1
  93. package/dist/core/web/public/next/assets/{Meter-CLcr-4wS.css → Segmented-8cf0Fypn.css} +1 -1
  94. package/dist/core/web/public/next/assets/{Meter-Cmo1pLbk.js → Segmented-DbRjVye3.js} +2 -2
  95. package/dist/core/web/public/next/assets/Segmented-DbRjVye3.js.map +1 -0
  96. package/dist/core/web/public/next/assets/SettingsSection-nJGGGYqv.js +2 -0
  97. package/dist/core/web/public/next/assets/{SettingsSection-B3YH2Npi.js.map → SettingsSection-nJGGGYqv.js.map} +1 -1
  98. package/dist/core/web/public/next/assets/UniverseConsoleApp-6GJydgo4.js +2 -0
  99. package/dist/core/web/public/next/assets/{UniverseConsoleApp-wEKIzl1M.js.map → UniverseConsoleApp-6GJydgo4.js.map} +1 -1
  100. package/dist/core/web/public/next/assets/{UniverseView-CQVpJqqI.js → UniverseView-DLDtNYL8.js} +2 -2
  101. package/dist/core/web/public/next/assets/{UniverseView-CQVpJqqI.js.map → UniverseView-DLDtNYL8.js.map} +1 -1
  102. package/dist/core/web/public/next/assets/UsageSection-Cf9d9iFH.js +2 -0
  103. package/dist/core/web/public/next/assets/UsageSection-Cf9d9iFH.js.map +1 -0
  104. package/dist/core/web/public/next/assets/VerseConsoleApp-DsdKQoTH.css +1 -0
  105. package/dist/core/web/public/next/assets/VerseConsoleApp-y0uOHixd.js +3 -0
  106. package/dist/core/web/public/next/assets/VerseConsoleApp-y0uOHixd.js.map +1 -0
  107. package/dist/core/web/public/next/assets/{charts-BopViIha.js → charts-CVooqJWN.js} +2 -2
  108. package/dist/core/web/public/next/assets/{charts-BopViIha.js.map → charts-CVooqJWN.js.map} +1 -1
  109. package/dist/core/web/public/next/assets/context-model-Bqv8DVuH.js +2 -0
  110. package/dist/core/web/public/next/assets/context-model-Bqv8DVuH.js.map +1 -0
  111. package/dist/core/web/public/next/assets/global-eaY9GyX3.js +2 -0
  112. package/dist/core/web/public/next/assets/global-eaY9GyX3.js.map +1 -0
  113. package/dist/core/web/public/next/assets/{icons-L06pQH6j.js → icons-vex8rclC.js} +2 -2
  114. package/dist/core/web/public/next/assets/{icons-L06pQH6j.js.map → icons-vex8rclC.js.map} +1 -1
  115. package/dist/core/web/public/next/assets/{index-CXgVQHek.js → index-D2Eik-zt.js} +3 -3
  116. package/dist/core/web/public/next/assets/{index-CXgVQHek.js.map → index-D2Eik-zt.js.map} +1 -1
  117. package/dist/core/web/public/next/assets/{queries-D3sSlan1.js → queries-bAYU0VNy.js} +2 -2
  118. package/dist/core/web/public/next/assets/{queries-D3sSlan1.js.map → queries-bAYU0VNy.js.map} +1 -1
  119. package/dist/core/web/public/next/assets/use-guarded-action-C7QrP7Yp.js +2 -0
  120. package/dist/core/web/public/next/assets/{use-guarded-action-BxfJ9E-n.js.map → use-guarded-action-C7QrP7Yp.js.map} +1 -1
  121. package/dist/core/web/public/next/assets/verse-model-TfDk9cky.js +2 -0
  122. package/dist/core/web/public/next/assets/verse-model-TfDk9cky.js.map +1 -0
  123. package/dist/core/web/public/next/assets/{workspace-model-v0a1gl-C.js → workspace-model-CHol5RVp.js} +2 -2
  124. package/dist/core/web/public/next/assets/{workspace-model-v0a1gl-C.js.map → workspace-model-CHol5RVp.js.map} +1 -1
  125. package/dist/core/web/public/next/index.html +1 -1
  126. package/dist/release-dependency-inventory.json +1 -1
  127. package/docs/README.md +1 -0
  128. package/package.json +1 -1
  129. package/dist/core/web/public/next/assets/AutonomySection-yeNNUPur.js +0 -2
  130. package/dist/core/web/public/next/assets/ChatSection-BfnLe5dT.css +0 -1
  131. package/dist/core/web/public/next/assets/ChatSection-DwDDnCZQ.js +0 -80
  132. package/dist/core/web/public/next/assets/ChatSection-DwDDnCZQ.js.map +0 -1
  133. package/dist/core/web/public/next/assets/ConfirmDialog-C363ty_c.js +0 -2
  134. package/dist/core/web/public/next/assets/ConfirmDialog-C363ty_c.js.map +0 -1
  135. package/dist/core/web/public/next/assets/Meter-Cmo1pLbk.js.map +0 -1
  136. package/dist/core/web/public/next/assets/SettingsSection-B3YH2Npi.js +0 -2
  137. package/dist/core/web/public/next/assets/UniverseConsoleApp-wEKIzl1M.js +0 -2
  138. package/dist/core/web/public/next/assets/UsageSection-dToBThXe.js +0 -2
  139. package/dist/core/web/public/next/assets/UsageSection-dToBThXe.js.map +0 -1
  140. package/dist/core/web/public/next/assets/VerseConsoleApp-CMkCizvL.css +0 -1
  141. package/dist/core/web/public/next/assets/VerseConsoleApp-DHU32JCQ.js +0 -3
  142. package/dist/core/web/public/next/assets/VerseConsoleApp-DHU32JCQ.js.map +0 -1
  143. package/dist/core/web/public/next/assets/global-DMWakEhP.js +0 -2
  144. package/dist/core/web/public/next/assets/global-DMWakEhP.js.map +0 -1
  145. package/dist/core/web/public/next/assets/use-guarded-action-BxfJ9E-n.js +0 -2
  146. package/dist/core/web/public/next/assets/verse-model-CvtK6vP6.js +0 -2
  147. package/dist/core/web/public/next/assets/verse-model-CvtK6vP6.js.map +0 -1
@@ -1,20 +1,43 @@
1
1
  /**
2
2
  * Codex adapter.
3
3
  *
4
- * Launch: turn 1 is `codex exec --json --model <m> --cd <cwd> --sandbox
4
+ * Launch: turn 1 is `codex exec [-c …] --json --model <m> --cd <cwd> --sandbox
5
5
  * workspace-write -` with the prompt on stdin; later turns are
6
- * `codex exec resume <thread_id> --json -` (also stdin). The thread id is not
7
- * known until the first turn's `thread.started` line, so `nativeSessionId`
6
+ * `codex exec resume <thread_id> [-c …] --json -` (also stdin). The thread id is
7
+ * not known until the first turn's `thread.started` line, so `nativeSessionId`
8
8
  * is null until then and the engine adopts it from `turn-done`.
9
9
  *
10
+ * Every per-session setting rides on `-c key=value` config overrides, never on
11
+ * flags, because `exec resume` accepts `-c` but not `--add-dir`/`--cd`: turn 1
12
+ * and turn N of one chat must be launched with the SAME settings. Overrides:
13
+ * - `sandbox_workspace_write.writable_roots` — extra workspace roots, plus the
14
+ * shared project-memory directory when this session may write it;
15
+ * - `model_context_window` + `model_auto_compact_token_limit` — expansive
16
+ * mode only, ALWAYS as a pair (raising only the window breaks codex's
17
+ * auto-compaction, openai/codex#16068);
18
+ * - `developer_instructions` — the shared project-memory block.
19
+ * Each key was verified as a KNOWN, correctly typed config field on both
20
+ * pinned binaries (0.136.0 and 0.155.0-alpha.9.2), on `exec` and `exec
21
+ * resume`, with `--strict-config` and an empty scratch CODEX_HOME — see
22
+ * `strictConfigVerified` below for the no-spend method.
23
+ *
10
24
  * Parse (codex JSONL; shapes as consumed by src/core/run/engines.ts
11
25
  * normaliseEngineOutputLine and src/core/resources/worker.ts parseCodex):
12
26
  * thread.started{thread_id}
13
27
  * item.started/item.completed{item:{id,type:'agent_message'|'command_execution'|
14
28
  * 'file_change'|'mcp_tool_call'|'reasoning', ...}}
15
- * turn.completed{usage:{input_tokens,cached_input_tokens,output_tokens}}
29
+ * turn.completed{usage:{input_tokens,cached_input_tokens,[cache_write_input_tokens],output_tokens}}
16
30
  * turn.failed{error:{message}} / error{message}
31
+ *
32
+ * Telemetry (V3.9): stdout never carries per-call context, so the exact meter,
33
+ * the window, compactions and the TRUE per-turn usage come from the thread's
34
+ * own rollout file (core/verse/codex-rollout.ts) via `pollTelemetry` (live)
35
+ * and `afterTurn` (final). See `afterCodexTurn` for why the turn's `usage`
36
+ * event is emitted there rather than from the parser.
17
37
  */
38
+ import { budgetFor, canonicalModelId, CODEX_EFFECTIVE_WINDOW_PERCENT, codexAutoCompactAt, } from '../context-math.js';
39
+ import { advanceCodexTurnTracker, codexNativeStatePath, codexTotals, codexTurnUsage, createCodexTurnTracker, isCodexThreadId, locateCodexRollout, } from '../codex-rollout.js';
40
+ import { legacyModelOptionFallback } from '../model-windows.js';
18
41
  import { verseSessionRoots } from '../types.js';
19
42
  import { parseJsonObjectLine } from './claude.js';
20
43
  function isObject(value) {
@@ -23,9 +46,6 @@ function isObject(value) {
23
46
  function str(value) {
24
47
  return typeof value === 'string' ? value : '';
25
48
  }
26
- function num(value) {
27
- return typeof value === 'number' && Number.isFinite(value) ? value : 0;
28
- }
29
49
  function safeJson(value) {
30
50
  try {
31
51
  return JSON.stringify(value) ?? '';
@@ -83,19 +103,152 @@ function tomlString(value) {
83
103
  * zzz_bogus_subfield`", and `-c 'sandbox_workspace_write.writable_roots=
84
104
  * ["/tmp"]'` passes config loading and starts the run.
85
105
  */
86
- function writableRootsOverride(extraRoots) {
87
- if (extraRoots.length === 0)
106
+ function writableRootsOverride(roots) {
107
+ const unique = [...new Set(roots.filter((root) => typeof root === 'string' && root.length > 0))];
108
+ if (unique.length === 0)
88
109
  return [];
89
- const array = extraRoots.map(tomlString).join(',');
110
+ const array = unique.map(tomlString).join(',');
90
111
  return ['-c', `sandbox_workspace_write.writable_roots=[${array}]`];
91
112
  }
113
+ function positiveInt(value) {
114
+ return typeof value === 'number' && Number.isFinite(value) && value > 0 ? Math.floor(value) : null;
115
+ }
116
+ /**
117
+ * The seat option a session's model resolves to: the exact stored id first,
118
+ * then its canonical form — the same lookup the engine uses, so the flags the
119
+ * CLI is given and the budget the meter shows come from one option.
120
+ *
121
+ * A launch snapshot written before 3.9 lists `{id, label, contextWindow}` and
122
+ * no budgets, so it would deny an expansive mode the live seat (and so the
123
+ * UI) offers for the same model. `legacyModelOptionFallback` — the one rule the
124
+ * engine's `effectiveModelOption` also applies — borrows the documented
125
+ * budgets for such a snapshot, so a switch the engine accepts is a switch
126
+ * this adapter actually carries out.
127
+ */
128
+ function modelOptionFor(launch, model) {
129
+ const models = Array.isArray(launch.seat?.models) ? launch.seat.models : [];
130
+ const wanted = canonicalModelId(model);
131
+ const snapshot = models.find((m) => m.id === model) ?? models.find((m) => canonicalModelId(m.id) === wanted) ?? null;
132
+ return legacyModelOptionFallback('codex', model, snapshot);
133
+ }
134
+ /**
135
+ * Expansive mode → the config pair that makes codex measure against, and
136
+ * compact inside, the model's catalog maximum. BOTH keys or neither: codex
137
+ * resets its token accounting when only `model_context_window` is set and
138
+ * then never auto-compacts (openai/codex#16068), so a half-applied override
139
+ * is worse than none.
140
+ *
141
+ * `providerWindow` is the RAW window codex must be told (872_000 for GPT-6 /
142
+ * GPT-5.6); codex itself then measures against 95% of it (828_400), which is
143
+ * the budget's `contextWindow`. An older option that carries only the
144
+ * effective window is inverted through the same 95% — never guessed upward.
145
+ *
146
+ * Standard mode passes nothing: codex's own catalog budget applies, and a
147
+ * session switched back from expansive simply stops sending the pair.
148
+ */
149
+ export function codexContextOverrides(session, launch) {
150
+ if (session.contextMode !== 'expansive')
151
+ return [];
152
+ const budget = budgetFor(modelOptionFor(launch, session.model), 'expansive');
153
+ if (!budget)
154
+ return [];
155
+ const effective = positiveInt(budget.contextWindow);
156
+ const providerWindow = positiveInt(budget.providerWindow ?? null)
157
+ ?? (effective !== null ? Math.round((effective * 100) / CODEX_EFFECTIVE_WINDOW_PERCENT) : null);
158
+ if (providerWindow === null)
159
+ return [];
160
+ const limit = Math.min(positiveInt(budget.autoCompactAt) ?? codexAutoCompactAt(providerWindow), providerWindow);
161
+ return ['-c', `model_context_window=${providerWindow}`, '-c', `model_auto_compact_token_limit=${limit}`];
162
+ }
163
+ /** The launch's pinned project memory, when it is well-formed. */
164
+ function memoryOf(launch) {
165
+ const memory = launch.memory;
166
+ if (!memory || typeof memory !== 'object')
167
+ return null;
168
+ const { dir, block, writable } = memory;
169
+ if (typeof dir !== 'string' || !dir.startsWith('/') || typeof block !== 'string' || block.trim().length === 0)
170
+ return null;
171
+ return { dir, block, writable: writable === true };
172
+ }
173
+ /**
174
+ * Shared project memory → codex.
175
+ *
176
+ * - The block rides as `developer_instructions` on EVERY turn — `exec` AND
177
+ * every `exec resume` — byte-identical (it was snapshotted at
178
+ * createSession), so the prompt prefix — and with it the provider's prompt
179
+ * cache — is stable, and a compaction cannot summarise it away the way it
180
+ * would a first-turn stdin prefix.
181
+ * - The memory directory joins the sandbox's writable roots only when this
182
+ * session may write it (`writable === true` exactly; anything else is
183
+ * read-only). Reading needs no grant: workspace-write keeps the whole disk
184
+ * readable.
185
+ *
186
+ * WHY resending does not append the block to the thread every turn, and why
187
+ * sending it on turn 1 only would be WRONG (checked 2026-09-23 without a model
188
+ * call, against this machine's ~4,000 real rollouts and both pinned binaries):
189
+ * - Codex persists a context BASELINE in the rollout and diffs each new turn
190
+ * against it; resume restores the baseline from the file. 0.136 (codex-a)
191
+ * documents its TurnContextItem as "persist once per real user turn after
192
+ * computing that turn's model-visible context updates … so resume/fork
193
+ * replay can recover the latest durable baseline". 0.142+ (codex-b's
194
+ * 0.155) writes `world_state` records instead — one `full` snapshot, then
195
+ * `full:false` records carrying ONLY the sections that changed — and
196
+ * `managed_developer_instructions` (this config key) is one of those
197
+ * sections ("failed to restore world-state section snapshot" in 0.155).
198
+ * - Observed: an unchanged fragment is never re-sent mid-thread. In main
199
+ * threads, `<skills_instructions>` was re-emitted 53 times — all with a
200
+ * CHANGED text, 0 identical — and `<permissions instructions>` 6 times, 5
201
+ * changed plus 1 forced by a model switch; 72 turns resumed after >6 h idle
202
+ * (process restarts) re-emitted nothing. So an identical block is a no-op.
203
+ * - Compaction rebuilds the full developer context from the CURRENT
204
+ * process's settings (526 of 537 compacted records carry the permissions
205
+ * and skills blocks in `replacement_history`). A resume launched WITHOUT
206
+ * the key would therefore lose the memory block at its first compaction
207
+ * (and on 0.142+ record the section as changed to empty).
208
+ * Honest gap: no rollout here has ever carried a non-empty
209
+ * developer_instructions (all 1,351 `managed_developer_instructions`
210
+ * snapshots are `{}`), and no `codex exec resume` thread exists locally, so
211
+ * the no-duplication claim rests on the sibling sections above. If a real
212
+ * multi-turn rollout ever shows the block repeating, the fix is NOT turn-1
213
+ * only (see compaction) but upstream.
214
+ */
215
+ function memoryOverrides(launch) {
216
+ const memory = memoryOf(launch);
217
+ if (!memory)
218
+ return { writableRoots: [], config: [] };
219
+ return {
220
+ writableRoots: memory.writable ? [memory.dir] : [],
221
+ config: ['-c', `developer_instructions=${tomlString(memory.block)}`],
222
+ };
223
+ }
224
+ /**
225
+ * How the config keys above were verified WITHOUT a model call (2026-09-23):
226
+ * `CODEX_HOME=<empty scratch dir> codex exec [resume <id>] --strict-config
227
+ * -c <key>=<value> -c 'model_instructions_file="/nonexistent"' --json -`.
228
+ * An unknown key fails config loading ("unknown configuration field"); a
229
+ * known one gets past it and stops at the missing instructions file — before
230
+ * authentication, so nothing can reach a provider. Kept as data so the method
231
+ * travels with the keys it vouches for.
232
+ */
233
+ export const strictConfigVerified = [
234
+ 'sandbox_workspace_write.writable_roots',
235
+ 'model_context_window',
236
+ 'model_auto_compact_token_limit',
237
+ 'developer_instructions',
238
+ ];
92
239
  function buildCodexLaunch(session, text, launch) {
93
240
  const prefix = launch.launcher ? [...launch.launcher] : ['codex'];
94
- const extraRoots = verseSessionRoots(session).slice(1);
95
- const writable = writableRootsOverride(extraRoots);
241
+ const memory = memoryOverrides(launch);
242
+ const config = [
243
+ ...writableRootsOverride([...verseSessionRoots(session).slice(1), ...memory.writableRoots]),
244
+ ...codexContextOverrides(session, launch),
245
+ ...memory.config,
246
+ ];
96
247
  const argv = session.turnCount > 0 && session.nativeSessionId
97
- ? [...prefix, 'exec', 'resume', session.nativeSessionId, ...writable, '--json', '-']
98
- : [...prefix, 'exec', ...writable, '--json', '--model', session.model, '--cd', session.projectPath, '--sandbox', 'workspace-write', '-'];
248
+ ? [...prefix, 'exec', 'resume', session.nativeSessionId, ...config, '--json', '-']
249
+ // Always the CANONICAL id: a stored alias (e.g. a pre-3.9 record) must
250
+ // reach the CLI as the model the label promised.
251
+ : [...prefix, 'exec', ...config, '--json', '--model', canonicalModelId(session.model), '--cd', session.projectPath, '--sandbox', 'workspace-write', '-'];
99
252
  return { argv, cwd: session.projectPath, env: {}, stdin: text };
100
253
  }
101
254
  /** Describe a tool-like codex item for the `tool-use` event. */
@@ -149,8 +302,7 @@ export function createCodexParser(turnId) {
149
302
  const startedTools = new Set();
150
303
  const completedTools = new Set();
151
304
  const emittedMessages = new Set();
152
- let usage = null;
153
- let usageEmitted = false;
305
+ let reported = null;
154
306
  function handleItem(out, phase, item) {
155
307
  const type = str(item['type']);
156
308
  const id = str(item['id']);
@@ -203,29 +355,12 @@ export function createCodexParser(turnId) {
203
355
  return;
204
356
  }
205
357
  case 'turn.completed': {
206
- const u = isObject(ev['usage']) ? ev['usage'] : null;
207
- if (u) {
208
- const input = num(u['input_tokens']);
209
- const cached = num(u['cached_input_tokens']);
210
- usage = {
211
- type: 'usage',
212
- turnId,
213
- usage: {
214
- // codex's input_tokens already includes the cached portion, so
215
- // split it: the session totals (engine sums input + cache read)
216
- // must count each token once.
217
- inputTokens: Math.max(0, input - cached),
218
- outputTokens: num(u['output_tokens']),
219
- cacheReadTokens: Math.min(cached, input),
220
- cacheCreationTokens: 0,
221
- // `exec --json` has no per-call prompt size — only the turn
222
- // total across every model call — so the codex context meter is
223
- // a per-turn UPPER BOUND; the engine clamps it to the window.
224
- contextTokens: input,
225
- contextWindow: null,
226
- },
227
- };
228
- }
358
+ // Held, not emitted: see `afterCodexTurn`. On `exec resume` this figure
359
+ // is the THREAD's running total, so only the rollout can say what this
360
+ // turn used; the printed figure is the fallback when it cannot.
361
+ const usage = codexTotals(ev['usage']);
362
+ if (usage)
363
+ reported = usage;
229
364
  return;
230
365
  }
231
366
  case 'turn.failed':
@@ -239,7 +374,7 @@ export function createCodexParser(turnId) {
239
374
  return;
240
375
  }
241
376
  }
242
- return {
377
+ const parser = {
243
378
  push(line) {
244
379
  const ev = parseJsonObjectLine(line);
245
380
  if (!ev)
@@ -252,21 +387,248 @@ export function createCodexParser(turnId) {
252
387
  return out;
253
388
  },
254
389
  finish(_exitCode) {
255
- // Exit-code errors are the engine's to report (it also has the stderr tail).
256
- const out = [];
257
- if (usage && !usageEmitted) {
258
- usageEmitted = true;
259
- out.push(usage);
260
- }
261
- return out;
390
+ // Exit-code errors are the engine's to report (it also has the stderr
391
+ // tail); this turn's `usage` is emitted by `afterTurn`, which runs next.
392
+ return [];
262
393
  },
263
394
  nativeSessionId() {
264
395
  return threadId;
265
396
  },
266
397
  };
398
+ const read = () => reported;
399
+ reportedUsage.set(parser, read);
400
+ rememberByTurn(turnId, read);
401
+ return parser;
402
+ }
403
+ // ---------------------------------------------------------------------------
404
+ // Telemetry hooks (V3.9)
405
+ // ---------------------------------------------------------------------------
406
+ /**
407
+ * `turn.completed.usage` as the CLI printed it, per parser. A WeakMap rather
408
+ * than a method so the frozen `VerseTurnParser` interface is untouched and
409
+ * the figure dies with its parser.
410
+ */
411
+ const reportedUsage = new WeakMap();
412
+ /**
413
+ * The same getters keyed by turn id, for a hook context whose `parser` is a
414
+ * WRAPPER around the codex parser (an engine or test that decorates parser
415
+ * output). Bounded, and each entry is dropped once `afterTurn` has read it.
416
+ */
417
+ const reportedByTurn = new Map();
418
+ const MAX_TRACKED_TURNS = 64;
419
+ function rememberByTurn(turnId, read) {
420
+ if (typeof turnId !== 'string' || turnId.length === 0)
421
+ return;
422
+ reportedByTurn.delete(turnId);
423
+ if (reportedByTurn.size >= MAX_TRACKED_TURNS) {
424
+ const oldest = reportedByTurn.keys().next().value;
425
+ if (oldest !== undefined)
426
+ reportedByTurn.delete(oldest);
427
+ }
428
+ reportedByTurn.set(turnId, read);
429
+ }
430
+ /**
431
+ * What the codex parser captured from `turn.completed`, or null (none printed
432
+ * / not a codex parser). Looked up by parser identity, then by `turnId`.
433
+ */
434
+ export function codexReportedUsage(parser, turnId) {
435
+ try {
436
+ const read = reportedUsage.get(parser) ?? (turnId !== undefined ? reportedByTurn.get(turnId) : undefined);
437
+ return read?.() ?? null;
438
+ }
439
+ catch {
440
+ return null;
441
+ }
442
+ }
443
+ /** Per-turn hook scratch, kept in `ctx.state` under this key. */
444
+ const STATE_KEY = 'codexRollout';
445
+ function hookState(ctx) {
446
+ const existing = ctx.state[STATE_KEY];
447
+ if (existing && typeof existing === 'object' && existing.tracker)
448
+ return existing;
449
+ const fresh = {
450
+ tracker: createCodexTurnTracker(),
451
+ file: null,
452
+ searched: false,
453
+ emittedReading: null,
454
+ emittedCompactions: 0,
455
+ };
456
+ ctx.state[STATE_KEY] = fresh;
457
+ return fresh;
458
+ }
459
+ /**
460
+ * Read whatever the thread's rollout gained since the last call. False when
461
+ * there is nothing to read yet (no thread id, no pinned CODEX_HOME, no file).
462
+ */
463
+ function observe(ctx, state) {
464
+ const threadId = ctx.nativeSessionId;
465
+ if (!isCodexThreadId(threadId))
466
+ return false;
467
+ const nativeState = codexNativeStatePath(ctx.launch?.launcher ?? null);
468
+ if (!nativeState)
469
+ return false;
470
+ if (!state.file) {
471
+ state.file = locateCodexRollout(nativeState, threadId, { fullScan: !state.searched });
472
+ state.searched = true;
473
+ if (!state.file)
474
+ return false;
475
+ }
476
+ if (advanceCodexTurnTracker(state.tracker, state.file, ctx.startedAt, threadId))
477
+ return true;
478
+ // Pruned or replaced mid-turn: look it up again next time.
479
+ state.file = null;
480
+ return false;
481
+ }
482
+ /**
483
+ * Whether the tracker's latest reading describes the context NOW. A reading
484
+ * this turn produced always does. One left over from the previous turn does
485
+ * only when this turn demonstrably made no model call — otherwise the prompt
486
+ * has grown past it and presenting it as exact would understate occupancy.
487
+ */
488
+ function currentReading(state, reported) {
489
+ const reading = state.tracker.initialized ? state.tracker.reading : null;
490
+ if (!reading)
491
+ return null;
492
+ if (reading.inTurn)
493
+ return reading;
494
+ const noCallsThisTurn = state.tracker.calls === 0 && (!reported || reported.inputTokens === 0);
495
+ return noCallsThisTurn ? reading : null;
496
+ }
497
+ function compactionEvents(ctx, state, final) {
498
+ const out = [];
499
+ const all = state.tracker.compactions;
500
+ while (state.emittedCompactions < all.length) {
501
+ const compaction = all[state.emittedCompactions];
502
+ // Mid-turn, wait for the post-compaction reading so the divider can say
503
+ // "240k → 35k"; after the turn, emit what is known.
504
+ if (!final && compaction.postTokens === null)
505
+ break;
506
+ state.emittedCompactions += 1;
507
+ out.push({
508
+ type: 'compaction',
509
+ turnId: ctx.turnId,
510
+ // `exec` has no manual compact verb; every rollout compaction is codex's own.
511
+ trigger: 'auto',
512
+ preTokens: compaction.preTokens,
513
+ postTokens: compaction.postTokens,
514
+ durationMs: null,
515
+ });
516
+ }
517
+ return out;
518
+ }
519
+ function contextEvent(ctx, reading) {
520
+ return { type: 'context', turnId: ctx.turnId, contextTokens: reading.tokens, contextWindow: reading.window, exact: true };
521
+ }
522
+ /** Codex usage totals → Verse's disjoint buckets (codex's input INCLUDES cached and cache-write tokens). */
523
+ function verseUsageFrom(totals) {
524
+ const input = totals.inputTokens;
525
+ const cacheRead = Math.min(totals.cachedInputTokens, input);
526
+ const cacheWrite = Math.min(totals.cacheWriteInputTokens, input - cacheRead);
527
+ return {
528
+ inputTokens: input - cacheRead - cacheWrite,
529
+ outputTokens: totals.outputTokens,
530
+ cacheReadTokens: cacheRead,
531
+ cacheCreationTokens: cacheWrite,
532
+ };
533
+ }
534
+ /**
535
+ * Live meter: while the turn runs, every new `token_count` becomes an exact
536
+ * `context` reading, and a compaction becomes a divider as soon as the
537
+ * reading after it lands. Never emits usage (that is `afterTurn`'s, once).
538
+ */
539
+ export function pollCodexTelemetry(ctx) {
540
+ try {
541
+ const state = hookState(ctx);
542
+ if (!observe(ctx, state))
543
+ return [];
544
+ const out = compactionEvents(ctx, state, false);
545
+ const reading = state.tracker.reading;
546
+ if (reading?.inTurn) {
547
+ const key = `${reading.offset}:${reading.tokens}:${reading.window ?? ''}`;
548
+ if (key !== state.emittedReading) {
549
+ state.emittedReading = key;
550
+ out.push(contextEvent(ctx, reading));
551
+ }
552
+ }
553
+ return out;
554
+ }
555
+ catch {
556
+ return [];
557
+ }
558
+ }
559
+ /**
560
+ * After the process exits: any compactions not yet shown, then THE turn's
561
+ * `usage` event, then the final exact `context` reading.
562
+ *
563
+ * WHY USAGE IS EMITTED HERE AND NOT BY THE PARSER. The engine SUMS `usage`
564
+ * events into the session's totals, and codex's `turn.completed.usage` on
565
+ * `exec resume` is the thread's running total (codex seeds its token counter
566
+ * from the rollout on resume). Emitted from the parser, turn N would add turns
567
+ * 1…N again. The parser runs before this hook and cannot read files, so it
568
+ * holds the printed figure and this hook emits exactly one `usage` per turn
569
+ * from the best evidence (`codexTurnUsage`): the CLI's own per-turn record,
570
+ * else the sum of this turn's calls, else the printed figure — converted to a
571
+ * delta when it matches the rollout's running total. With no readable rollout
572
+ * the printed figure is used as-is, marked as an upper-bound reading.
573
+ */
574
+ export function afterCodexTurn(ctx) {
575
+ const out = [];
576
+ let reported = null;
577
+ try {
578
+ reported = codexReportedUsage(ctx.parser, ctx.turnId);
579
+ }
580
+ catch {
581
+ reported = null;
582
+ }
583
+ reportedByTurn.delete(ctx.turnId);
584
+ let state = null;
585
+ try {
586
+ state = hookState(ctx);
587
+ observe(ctx, state);
588
+ out.push(...compactionEvents(ctx, state, true));
589
+ }
590
+ catch {
591
+ // Telemetry is best effort; the usage below still falls back to stdout.
592
+ }
593
+ try {
594
+ const tracker = state?.tracker.initialized ? state.tracker : null;
595
+ const firstTurn = !(ctx.session.turnCount > 0 && ctx.session.nativeSessionId);
596
+ const turn = codexTurnUsage(tracker, reported, firstTurn);
597
+ const reading = state ? currentReading(state, reported) : null;
598
+ if (turn) {
599
+ const buckets = verseUsageFrom(turn.totals);
600
+ out.push({
601
+ type: 'usage',
602
+ turnId: ctx.turnId,
603
+ usage: {
604
+ ...buckets,
605
+ // Exact when the rollout says what is in context now; otherwise the
606
+ // turn's own prompt total, an UPPER BOUND (it sums every call).
607
+ contextTokens: reading ? reading.tokens : turn.totals.inputTokens,
608
+ contextWindow: reading ? reading.window : tracker?.taskStartedWindow ?? null,
609
+ contextTokensExact: reading !== null,
610
+ },
611
+ });
612
+ }
613
+ if (reading)
614
+ out.push(contextEvent(ctx, reading));
615
+ }
616
+ catch {
617
+ // Never let a telemetry failure take the turn's usage with it.
618
+ if (reported && !out.some((event) => event.type === 'usage')) {
619
+ out.push({
620
+ type: 'usage',
621
+ turnId: ctx.turnId,
622
+ usage: { ...verseUsageFrom(reported), contextTokens: reported.inputTokens, contextWindow: null, contextTokensExact: false },
623
+ });
624
+ }
625
+ }
626
+ return out;
267
627
  }
268
628
  export const codexAdapter = {
269
629
  buildLaunch: buildCodexLaunch,
270
630
  createParser: createCodexParser,
631
+ pollTelemetry: pollCodexTelemetry,
632
+ afterTurn: afterCodexTurn,
271
633
  };
272
634
  //# sourceMappingURL=codex.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/core/verse/adapters/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../../src/core/verse/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -11,7 +11,19 @@
11
11
  * Parse: NDJSON in the Anthropic Messages API wire format (message_start,
12
12
  * content_block_start/delta/stop, message_delta{usage}, message_stop). The
13
13
  * parser is the shared Anthropic-stream parser, which also accepts claude's
14
- * `stream_event` wrapper and whole-message envelopes.
14
+ * `stream_event` wrapper and whole-message envelopes. Grok's terminal `result`
15
+ * carries `modelUsage.<key>.contextWindow` on the current model's row only
16
+ * (the key can differ from the CLI id — `grok-4.6-build` for `grok-4.6`), and
17
+ * a `system/compact_boundary` line marks an auto-compaction; the shared parser
18
+ * turns both into the usage event's window and a `compaction` event.
19
+ *
20
+ * V3.9 context. Grok has no per-invocation compaction budget flag, so there
21
+ * are no mode flags: it always runs its catalog budget (80% of 500k). Shared
22
+ * project memory reaches it as `--rules=<block>` — `--rules <RULES>` "Extra
23
+ * rules to append to the system prompt" (alias `--append-system-prompt`) is in
24
+ * `grok --help` on the pinned 0.2.118 binary. Grok can reach only `--cwd`, so
25
+ * the memory directory itself is never granted; the block carries the file's
26
+ * contents and says this seat may only read it (`writable: false`).
15
27
  */
16
28
  import type { VerseAdapter } from './index.js';
17
29
  export declare const grokAdapter: VerseAdapter;