@tokenfactory/acc-runner 0.44.0 → 0.44.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (197) hide show
  1. package/README.md +43 -1
  2. package/dist/bin-resolve.d.ts +39 -3
  3. package/dist/bin-resolve.d.ts.map +1 -1
  4. package/dist/bin-resolve.js +176 -12
  5. package/dist/bin-resolve.js.map +1 -1
  6. package/dist/build-fingerprint.d.ts +66 -0
  7. package/dist/build-fingerprint.d.ts.map +1 -0
  8. package/dist/build-fingerprint.js +70 -0
  9. package/dist/build-fingerprint.js.map +1 -0
  10. package/dist/build-info.generated.d.ts +3 -0
  11. package/dist/build-info.generated.d.ts.map +1 -0
  12. package/dist/build-info.generated.js +3 -0
  13. package/dist/build-info.generated.js.map +1 -0
  14. package/dist/capacity/resume-controller.d.ts +5 -3
  15. package/dist/capacity/resume-controller.d.ts.map +1 -1
  16. package/dist/capacity/resume-controller.js +9 -0
  17. package/dist/capacity/resume-controller.js.map +1 -1
  18. package/dist/chat-delegation-guard.d.ts +23 -0
  19. package/dist/chat-delegation-guard.d.ts.map +1 -0
  20. package/dist/chat-delegation-guard.js +62 -0
  21. package/dist/chat-delegation-guard.js.map +1 -0
  22. package/dist/chat-lane.d.ts +17 -6
  23. package/dist/chat-lane.d.ts.map +1 -1
  24. package/dist/chat-lane.js +29 -8
  25. package/dist/chat-lane.js.map +1 -1
  26. package/dist/companion-identity.d.ts +37 -0
  27. package/dist/companion-identity.d.ts.map +1 -1
  28. package/dist/companion-identity.js +98 -29
  29. package/dist/companion-identity.js.map +1 -1
  30. package/dist/companion-run.d.ts +1 -50
  31. package/dist/companion-run.d.ts.map +1 -1
  32. package/dist/companion-run.js +48 -105
  33. package/dist/companion-run.js.map +1 -1
  34. package/dist/config.d.ts +1 -0
  35. package/dist/config.d.ts.map +1 -1
  36. package/dist/config.js +14 -3
  37. package/dist/config.js.map +1 -1
  38. package/dist/conformance.d.ts +49 -0
  39. package/dist/conformance.d.ts.map +1 -0
  40. package/dist/conformance.js +121 -0
  41. package/dist/conformance.js.map +1 -0
  42. package/dist/cost-pricing.d.ts +91 -0
  43. package/dist/cost-pricing.d.ts.map +1 -1
  44. package/dist/cost-pricing.js +115 -1
  45. package/dist/cost-pricing.js.map +1 -1
  46. package/dist/credential-identity.d.ts +70 -0
  47. package/dist/credential-identity.d.ts.map +1 -0
  48. package/dist/credential-identity.js +128 -0
  49. package/dist/credential-identity.js.map +1 -0
  50. package/dist/doctor.d.ts +37 -1
  51. package/dist/doctor.d.ts.map +1 -1
  52. package/dist/doctor.js +300 -41
  53. package/dist/doctor.js.map +1 -1
  54. package/dist/engines/chat-stream.d.ts +71 -1
  55. package/dist/engines/chat-stream.d.ts.map +1 -1
  56. package/dist/engines/chat-stream.js +126 -8
  57. package/dist/engines/chat-stream.js.map +1 -1
  58. package/dist/engines/claude-code-chat.d.ts +11 -1
  59. package/dist/engines/claude-code-chat.d.ts.map +1 -1
  60. package/dist/engines/claude-code-chat.js +69 -5
  61. package/dist/engines/claude-code-chat.js.map +1 -1
  62. package/dist/engines/claude-code.d.ts.map +1 -1
  63. package/dist/engines/claude-code.js +30 -6
  64. package/dist/engines/claude-code.js.map +1 -1
  65. package/dist/engines/codex.d.ts.map +1 -1
  66. package/dist/engines/codex.js +18 -5
  67. package/dist/engines/codex.js.map +1 -1
  68. package/dist/engines/registry.d.ts +26 -0
  69. package/dist/engines/registry.d.ts.map +1 -1
  70. package/dist/engines/registry.js +37 -0
  71. package/dist/engines/registry.js.map +1 -1
  72. package/dist/engines/types.d.ts +5 -0
  73. package/dist/engines/types.d.ts.map +1 -1
  74. package/dist/failure-classifier.d.ts +1 -1
  75. package/dist/failure-classifier.d.ts.map +1 -1
  76. package/dist/failure-classifier.js +65 -12
  77. package/dist/failure-classifier.js.map +1 -1
  78. package/dist/gh.d.ts +15 -0
  79. package/dist/gh.d.ts.map +1 -1
  80. package/dist/gh.js +18 -0
  81. package/dist/gh.js.map +1 -1
  82. package/dist/git.d.ts +6 -0
  83. package/dist/git.d.ts.map +1 -1
  84. package/dist/git.js +27 -1
  85. package/dist/git.js.map +1 -1
  86. package/dist/instance.d.ts +30 -0
  87. package/dist/instance.d.ts.map +1 -0
  88. package/dist/instance.js +51 -0
  89. package/dist/instance.js.map +1 -0
  90. package/dist/keychain.d.ts +20 -7
  91. package/dist/keychain.d.ts.map +1 -1
  92. package/dist/keychain.js +40 -4
  93. package/dist/keychain.js.map +1 -1
  94. package/dist/loc-advisory.d.ts +70 -0
  95. package/dist/loc-advisory.d.ts.map +1 -0
  96. package/dist/loc-advisory.js +196 -0
  97. package/dist/loc-advisory.js.map +1 -0
  98. package/dist/locks/claim-lock-policy.d.ts +67 -0
  99. package/dist/locks/claim-lock-policy.d.ts.map +1 -0
  100. package/dist/locks/claim-lock-policy.js +132 -0
  101. package/dist/locks/claim-lock-policy.js.map +1 -0
  102. package/dist/login.d.ts +63 -2
  103. package/dist/login.d.ts.map +1 -1
  104. package/dist/login.js +93 -8
  105. package/dist/login.js.map +1 -1
  106. package/dist/mcp-spawn.d.ts +54 -0
  107. package/dist/mcp-spawn.d.ts.map +1 -1
  108. package/dist/mcp-spawn.js +88 -4
  109. package/dist/mcp-spawn.js.map +1 -1
  110. package/dist/memory-context.d.ts +106 -0
  111. package/dist/memory-context.d.ts.map +1 -0
  112. package/dist/memory-context.js +220 -0
  113. package/dist/memory-context.js.map +1 -0
  114. package/dist/memory-curation.d.ts +172 -0
  115. package/dist/memory-curation.d.ts.map +1 -0
  116. package/dist/memory-curation.js +277 -0
  117. package/dist/memory-curation.js.map +1 -0
  118. package/dist/migration-seq-guard.d.ts +28 -1
  119. package/dist/migration-seq-guard.d.ts.map +1 -1
  120. package/dist/migration-seq-guard.js +111 -6
  121. package/dist/migration-seq-guard.js.map +1 -1
  122. package/dist/output-diagnostics.d.ts +15 -0
  123. package/dist/output-diagnostics.d.ts.map +1 -0
  124. package/dist/output-diagnostics.js +95 -0
  125. package/dist/output-diagnostics.js.map +1 -0
  126. package/dist/pr-open-guard.d.ts +67 -0
  127. package/dist/pr-open-guard.d.ts.map +1 -0
  128. package/dist/pr-open-guard.js +79 -0
  129. package/dist/pr-open-guard.js.map +1 -0
  130. package/dist/prepr-gate.d.ts +229 -1
  131. package/dist/prepr-gate.d.ts.map +1 -1
  132. package/dist/prepr-gate.js +406 -3
  133. package/dist/prepr-gate.js.map +1 -1
  134. package/dist/program.d.ts.map +1 -1
  135. package/dist/program.js +43 -5
  136. package/dist/program.js.map +1 -1
  137. package/dist/provider-auth.d.ts +27 -0
  138. package/dist/provider-auth.d.ts.map +1 -1
  139. package/dist/provider-auth.js +33 -0
  140. package/dist/provider-auth.js.map +1 -1
  141. package/dist/runtime/cache-dir.d.ts.map +1 -1
  142. package/dist/runtime/cache-dir.js +8 -3
  143. package/dist/runtime/cache-dir.js.map +1 -1
  144. package/dist/runtime/decision-provenance.d.ts +63 -0
  145. package/dist/runtime/decision-provenance.d.ts.map +1 -0
  146. package/dist/runtime/decision-provenance.js +107 -0
  147. package/dist/runtime/decision-provenance.js.map +1 -0
  148. package/dist/runtime/prompt-substitute.d.ts +100 -0
  149. package/dist/runtime/prompt-substitute.d.ts.map +1 -0
  150. package/dist/runtime/prompt-substitute.js +124 -0
  151. package/dist/runtime/prompt-substitute.js.map +1 -0
  152. package/dist/runtime/quarantine.d.ts +11 -0
  153. package/dist/runtime/quarantine.d.ts.map +1 -1
  154. package/dist/runtime/quarantine.js +16 -1
  155. package/dist/runtime/quarantine.js.map +1 -1
  156. package/dist/runtime/review-cost-cap.d.ts +167 -0
  157. package/dist/runtime/review-cost-cap.d.ts.map +1 -0
  158. package/dist/runtime/review-cost-cap.js +182 -0
  159. package/dist/runtime/review-cost-cap.js.map +1 -0
  160. package/dist/runtime/reviewer-abstain.d.ts +101 -0
  161. package/dist/runtime/reviewer-abstain.d.ts.map +1 -0
  162. package/dist/runtime/reviewer-abstain.js +138 -0
  163. package/dist/runtime/reviewer-abstain.js.map +1 -0
  164. package/dist/runtime/reviewer.d.ts +165 -2
  165. package/dist/runtime/reviewer.d.ts.map +1 -1
  166. package/dist/runtime/reviewer.js +752 -111
  167. package/dist/runtime/reviewer.js.map +1 -1
  168. package/dist/runtime/running-build.d.ts +24 -0
  169. package/dist/runtime/running-build.d.ts.map +1 -0
  170. package/dist/runtime/running-build.js +62 -0
  171. package/dist/runtime/running-build.js.map +1 -0
  172. package/dist/runtime/singleton.d.ts.map +1 -1
  173. package/dist/runtime/singleton.js +9 -1
  174. package/dist/runtime/singleton.js.map +1 -1
  175. package/dist/runtime/worktree.d.ts +45 -0
  176. package/dist/runtime/worktree.d.ts.map +1 -1
  177. package/dist/runtime/worktree.js +174 -5
  178. package/dist/runtime/worktree.js.map +1 -1
  179. package/dist/serving-auth/index.d.ts +79 -0
  180. package/dist/serving-auth/index.d.ts.map +1 -0
  181. package/dist/serving-auth/index.js +169 -0
  182. package/dist/serving-auth/index.js.map +1 -0
  183. package/dist/task-runner.d.ts +134 -5
  184. package/dist/task-runner.d.ts.map +1 -1
  185. package/dist/task-runner.js +1255 -129
  186. package/dist/task-runner.js.map +1 -1
  187. package/dist/types.d.ts +8 -0
  188. package/dist/types.d.ts.map +1 -1
  189. package/dist/watch-chat/wire.d.ts +80 -0
  190. package/dist/watch-chat/wire.d.ts.map +1 -1
  191. package/dist/watch-chat/wire.js +203 -43
  192. package/dist/watch-chat/wire.js.map +1 -1
  193. package/dist/watch.d.ts +70 -16
  194. package/dist/watch.d.ts.map +1 -1
  195. package/dist/watch.js +548 -108
  196. package/dist/watch.js.map +1 -1
  197. package/package.json +4 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conformance.js","sourceRoot":"","sources":["../src/conformance.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,21 @@ export interface ClaudeUsage {
29
29
  cache_creation_input_tokens?: number;
30
30
  cache_read_input_tokens?: number;
31
31
  }
32
+ /**
33
+ * COST-ATTR-1: one entry of the `modelUsage` map Claude Code emits in its
34
+ * `--output-format=json` envelope, keyed by the CONCRETE model id that served
35
+ * the turn (e.g. `claude-sonnet-4-6`). Field names are camelCase there, unlike
36
+ * the snake_case top-level `usage` block. Every field is optional because the
37
+ * shape varies across CLI builds — only the KEY is load-bearing for
38
+ * attribution.
39
+ */
40
+ export interface ClaudeModelUsage {
41
+ inputTokens?: number;
42
+ outputTokens?: number;
43
+ cacheReadInputTokens?: number;
44
+ cacheCreationInputTokens?: number;
45
+ costUSD?: number;
46
+ }
32
47
  export interface NormalizedUsage {
33
48
  input_tokens: number;
34
49
  output_tokens: number;
@@ -75,9 +90,39 @@ export declare function priceUsdCents(model: string, usage: NormalizedUsage): nu
75
90
  export interface ClaudeJsonOutput {
76
91
  result?: string;
77
92
  model?: string;
93
+ /** COST-ATTR-1: per-model usage map; its keys are the concrete model ids. */
94
+ modelUsage?: Record<string, ClaudeModelUsage>;
78
95
  usage?: ClaudeUsage;
79
96
  }
80
97
  export declare function parseClaudeJson(stdout: string): ClaudeJsonOutput | null;
98
+ /**
99
+ * COST-ATTR-1 — the token written to `acc.cost_events.model` when NOTHING
100
+ * names the model that produced the spend: neither the engine envelope nor
101
+ * the task's model pin. Deliberately NOT `unknown` (the value 1,303/1,303
102
+ * historical rows carry, which conflated "nobody looked" with "nothing to
103
+ * find") and deliberately specific, so an operator can tell an unattributable
104
+ * row from an attributed one at a glance. `acc.record_cost_event` treats it as
105
+ * a request to resolve the binding server-side (task pin -> project -> org,
106
+ * DEC-P9) and only persists it when that chain is empty too.
107
+ */
108
+ export declare const UNRESOLVED_MODEL = "unresolved";
109
+ /** True when a model string carries no attribution information. */
110
+ export declare function isPlaceholderModel(model: string | null | undefined): boolean;
111
+ /**
112
+ * COST-ATTR-1 — the concrete model id an engine result actually names, or null.
113
+ *
114
+ * WHY THIS IS NOT JUST `parsed.model`. Claude Code's `--output-format=json`
115
+ * envelope does not always carry a top-level `model` key; recent CLI builds
116
+ * report the model(s) that served the run in `modelUsage`, keyed by model id.
117
+ * `buildCostEvent` read `parsed?.model` only, so on those builds the whole
118
+ * chain fell through to the `unknown` literal and every by-model / by-agent
119
+ * rollup on the Cost surface came back empty.
120
+ *
121
+ * When more than one model served one run (a fallback hop mid-session) the key
122
+ * with the most tokens wins — that is the model the spend is mostly FOR. Ties
123
+ * keep the first key, so the result is deterministic for a given envelope.
124
+ */
125
+ export declare function engineResultModel(parsed: ClaudeJsonOutput | null | undefined): string | null;
81
126
  /**
82
127
  * v0.12-MODEL-ALIAS — wire-format translation for the ACC model
83
128
  * registry. `acc.models.id` is the short alias the rest of ACC uses
@@ -127,6 +172,52 @@ export declare function toCliAlias(modelId: string | null | undefined): string;
127
172
  * api.anthropic.com. Same verbatim-fallback semantics as toCliAlias.
128
173
  */
129
174
  export declare function toApiId(modelId: string | null | undefined): string;
175
+ /**
176
+ * SEED-MODEL-REGISTRY-1 AC2 (b): the runner's spawn-model decision (task-runner.ts's
177
+ * spawnClaude site). No pin → `{}`. An EXPLICIT NULL cli_alias (a real DB NULL — 0108's
178
+ * id-verbatim hazard) or `enabled === false` → `{ refusedReason }`, NO `--model`; else
179
+ * `{ model: toCliAlias(id) }`. An absent cli_alias (legacy `{ id }`) is left alone.
180
+ * // keep in sync with api/_lib/model-registry-seed.ts resolvePinnedAlias
181
+ */
182
+ export declare function resolveSpawnModel(pinned: {
183
+ id?: string | null;
184
+ cli_alias?: string | null;
185
+ enabled?: boolean | null;
186
+ } | null | undefined): {
187
+ model?: string;
188
+ refusedReason?: string;
189
+ };
190
+ /** pin_refused logs ONLY on the routed path (useRoutedModel + a refusal); on the
191
+ * non-routed fallback no `--model` is used, so logging there is a false signal. */
192
+ export declare function shouldLogPinRefusal(useRoutedModel: boolean, spawn: {
193
+ refusedReason?: string;
194
+ }): boolean;
195
+ /**
196
+ * REVIEWER-MODEL-NS-SPLIT — the ONE reviewer alias→channel mapping.
197
+ *
198
+ * Each entry carries BOTH channels for one reviewer-policy value:
199
+ * - cli: passed to `claude --model` on the operator CLI subscription.
200
+ * - api: sent to api.anthropic.com/v1/messages (a canonical id).
201
+ *
202
+ * This table is the single data source that drives BOTH reviewer channel
203
+ * resolvers (`toReviewerCliAlias` / `toReviewerApiId`) — there is no separate
204
+ * bare-alias literal set or reverse-lookup over `MODEL_ALIASES`; the channels
205
+ * are read straight off this table. The server declares a byte-identical
206
+ * `REVIEWER_MODEL_CHANNEL_IDS` in api/_lib/reviewer/model-aliases.ts (the two
207
+ * packages are bundled independently and cannot import each other — the same
208
+ * mirror convention the pricing tables use). They are NOT allowed to drift:
209
+ * tests/unit/reviewer-model-alias-drift.test.ts imports BOTH tables, asserts
210
+ * they are deep-equal, and checks both packages' CLI+API resolvers resolve to
211
+ * this table, hard-failing CI the moment either side diverges.
212
+ * // keep in sync with api/_lib/reviewer/model-aliases.ts REVIEWER_MODEL_CHANNEL_IDS
213
+ */
214
+ export interface ReviewerModelChannels {
215
+ cli: string;
216
+ api: string;
217
+ }
218
+ export declare const REVIEWER_MODEL_CHANNEL_IDS: Record<string, ReviewerModelChannels>;
219
+ export declare function toReviewerCliAlias(modelId: string | null | undefined): string;
220
+ export declare function toReviewerApiId(modelId: string | null | undefined): string;
130
221
  export type ModelStrengthTier = "low" | "medium" | "high";
131
222
  /** Strength tier per known model id (both aliases and canonical ids). */
132
223
  export declare const MODEL_STRENGTH: Record<string, ModelStrengthTier>;
@@ -1 +1 @@
1
- {"version":3,"file":"cost-pricing.d.ts","sourceRoot":"","sources":["../src/cost-pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-pricing.d.ts","sourceRoot":"","sources":["../src/cost-pricing.ts"],"names":[],"mappings":"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"}
@@ -155,8 +155,70 @@ export function parseClaudeJson(stdout) {
155
155
  return null;
156
156
  }
157
157
  }
158
+ /**
159
+ * COST-ATTR-1 — the token written to `acc.cost_events.model` when NOTHING
160
+ * names the model that produced the spend: neither the engine envelope nor
161
+ * the task's model pin. Deliberately NOT `unknown` (the value 1,303/1,303
162
+ * historical rows carry, which conflated "nobody looked" with "nothing to
163
+ * find") and deliberately specific, so an operator can tell an unattributable
164
+ * row from an attributed one at a glance. `acc.record_cost_event` treats it as
165
+ * a request to resolve the binding server-side (task pin -> project -> org,
166
+ * DEC-P9) and only persists it when that chain is empty too.
167
+ */
168
+ export const UNRESOLVED_MODEL = "unresolved";
169
+ /** Placeholders a caller may send that mean "I did not resolve the model". */
170
+ const PLACEHOLDER_MODELS = new Set(["unknown", "unresolved", "none", "null", "undefined", "default"]);
171
+ /** True when a model string carries no attribution information. */
172
+ export function isPlaceholderModel(model) {
173
+ const m = (model ?? "").trim().toLowerCase();
174
+ return m.length === 0 || PLACEHOLDER_MODELS.has(m);
175
+ }
176
+ function tokenTotal(u) {
177
+ const n = (v) => (typeof v === "number" && Number.isFinite(v) && v > 0 ? v : 0);
178
+ return n(u?.inputTokens) + n(u?.outputTokens) + n(u?.cacheReadInputTokens) + n(u?.cacheCreationInputTokens);
179
+ }
180
+ /**
181
+ * COST-ATTR-1 — the concrete model id an engine result actually names, or null.
182
+ *
183
+ * WHY THIS IS NOT JUST `parsed.model`. Claude Code's `--output-format=json`
184
+ * envelope does not always carry a top-level `model` key; recent CLI builds
185
+ * report the model(s) that served the run in `modelUsage`, keyed by model id.
186
+ * `buildCostEvent` read `parsed?.model` only, so on those builds the whole
187
+ * chain fell through to the `unknown` literal and every by-model / by-agent
188
+ * rollup on the Cost surface came back empty.
189
+ *
190
+ * When more than one model served one run (a fallback hop mid-session) the key
191
+ * with the most tokens wins — that is the model the spend is mostly FOR. Ties
192
+ * keep the first key, so the result is deterministic for a given envelope.
193
+ */
194
+ export function engineResultModel(parsed) {
195
+ const direct = typeof parsed?.model === "string" ? parsed.model.trim() : "";
196
+ if (direct && !isPlaceholderModel(direct))
197
+ return direct;
198
+ const usage = parsed?.modelUsage;
199
+ if (!usage || typeof usage !== "object")
200
+ return null;
201
+ let best = null;
202
+ let bestTokens = -1;
203
+ for (const [id, entry] of Object.entries(usage)) {
204
+ const name = id.trim();
205
+ if (!name || isPlaceholderModel(name))
206
+ continue;
207
+ const tokens = tokenTotal(entry);
208
+ if (tokens > bestTokens) {
209
+ best = name;
210
+ bestTokens = tokens;
211
+ }
212
+ }
213
+ return best;
214
+ }
158
215
  export const MODEL_ALIASES = {
159
- // RVU-2: opus-4-8 is a canonical id passes through both channels verbatim.
216
+ // opus-4-8 is a real, canonical model on both channels (see the OPERATOR
217
+ // DECISION note on REVIEWER_MODEL_CHANNEL_IDS below). MODEL_ALIASES mirrors the
218
+ // rows backfilled by supabase/migrations/0108_v12_model_alias.sql, and
219
+ // tests/unit/model-alias.test.ts deep-equals the whole table against that
220
+ // migration so the runner can never silently desync from the DB. This 4-8 row
221
+ // and the REVIEWER_MODEL_CHANNEL_IDS 4-8 row now agree — both canonical.
160
222
  "claude-opus-4-8": { cli_alias: "claude-opus-4-8", api_id: "claude-opus-4-8" },
161
223
  "claude-sonnet-4": { cli_alias: "sonnet", api_id: "claude-sonnet-4-6" },
162
224
  "claude-opus-4": { cli_alias: "opus", api_id: "claude-opus-4-7" },
@@ -202,6 +264,58 @@ export function toApiId(modelId) {
202
264
  return modelId ?? "";
203
265
  return currentAliases[id]?.api_id ?? id;
204
266
  }
267
+ /**
268
+ * SEED-MODEL-REGISTRY-1 AC2 (b): the runner's spawn-model decision (task-runner.ts's
269
+ * spawnClaude site). No pin → `{}`. An EXPLICIT NULL cli_alias (a real DB NULL — 0108's
270
+ * id-verbatim hazard) or `enabled === false` → `{ refusedReason }`, NO `--model`; else
271
+ * `{ model: toCliAlias(id) }`. An absent cli_alias (legacy `{ id }`) is left alone.
272
+ * // keep in sync with api/_lib/model-registry-seed.ts resolvePinnedAlias
273
+ */
274
+ export function resolveSpawnModel(pinned) {
275
+ const id = pinned?.id;
276
+ if (!id)
277
+ return {};
278
+ if (pinned?.cli_alias === null || pinned?.enabled === false)
279
+ return { refusedReason: `unverified_cli_alias:${id}` };
280
+ return { model: toCliAlias(id) };
281
+ }
282
+ /** pin_refused logs ONLY on the routed path (useRoutedModel + a refusal); on the
283
+ * non-routed fallback no `--model` is used, so logging there is a false signal. */
284
+ export function shouldLogPinRefusal(useRoutedModel, spawn) {
285
+ return useRoutedModel && spawn.refusedReason !== undefined;
286
+ }
287
+ export const REVIEWER_MODEL_CHANNEL_IDS = {
288
+ sonnet: { cli: "sonnet", api: "claude-sonnet-4-6" },
289
+ opus: { cli: "opus", api: "claude-opus-4-7" },
290
+ haiku: { cli: "haiku", api: "claude-haiku-4-5" },
291
+ "claude-sonnet-4": { cli: "sonnet", api: "claude-sonnet-4-6" },
292
+ "claude-opus-4": { cli: "opus", api: "claude-opus-4-7" },
293
+ "claude-haiku-4": { cli: "haiku", api: "claude-haiku-4-5" },
294
+ "claude-sonnet-4-6": { cli: "sonnet", api: "claude-sonnet-4-6" },
295
+ "claude-opus-4-7": { cli: "opus", api: "claude-opus-4-7" },
296
+ "claude-haiku-4-5": { cli: "haiku", api: "claude-haiku-4-5" },
297
+ // OPERATOR DECISION 2026-09-05 (PR #2169): claude-opus-4-8 is a REAL model.
298
+ // acc.model_catalog has carried it active since 2026-07-06, priced 500/2500 per
299
+ // Mtok (vs 4-7's 1500/7500), and it is the current default model in Claude Code,
300
+ // so the CLI accepts the versioned name. It resolves to itself on BOTH channels
301
+ // (canonical), never aliased down to 4-7 -- aliasing it billed and reported every
302
+ // 4-8 review at ~3x its real cost. This whole object literal is kept
303
+ // BYTE-IDENTICAL to the packages/acc-runner mirror in cost-pricing.ts;
304
+ // tests/unit/reviewer-model-alias-drift.test.ts compares the two source texts.
305
+ "claude-opus-4-8": { cli: "claude-opus-4-8", api: "claude-opus-4-8" },
306
+ };
307
+ export function toReviewerCliAlias(modelId) {
308
+ const id = (modelId ?? "").trim();
309
+ if (!id)
310
+ return modelId ?? "";
311
+ return REVIEWER_MODEL_CHANNEL_IDS[id]?.cli ?? toCliAlias(id);
312
+ }
313
+ export function toReviewerApiId(modelId) {
314
+ const id = (modelId ?? "").trim();
315
+ if (!id)
316
+ return modelId ?? "";
317
+ return REVIEWER_MODEL_CHANNEL_IDS[id]?.api ?? toApiId(id);
318
+ }
205
319
  const TIER_RANK = { low: 1, medium: 2, high: 3 };
206
320
  /** Strength tier per known model id (both aliases and canonical ids). */
207
321
  export const MODEL_STRENGTH = {
@@ -1 +1 @@
1
- {"version":3,"file":"cost-pricing.js","sourceRoot":"","sources":["../src/cost-pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cost-pricing.js","sourceRoot":"","sources":["../src/cost-pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ export type CredentialSource = "env_var" | "credentials_file" | "keychain";
2
+ export interface CredentialIdentity {
3
+ account_email: string | null;
4
+ account_org: string | null;
5
+ credential_source: CredentialSource;
6
+ }
7
+ /**
8
+ * Injectable seams so the resolver is unit-testable without touching the real
9
+ * filesystem or OS keychain.
10
+ */
11
+ export interface ResolveCredentialIdentityOptions {
12
+ env?: NodeJS.ProcessEnv;
13
+ /**
14
+ * Read the Claude CLI config JSON (default: `~/.claude.json`, or the
15
+ * isolated / CLAUDE_CONFIG_DIR-pinned path). Returns null when absent or
16
+ * unreadable.
17
+ */
18
+ readClaudeConfig?: (env: NodeJS.ProcessEnv) => string | null;
19
+ /**
20
+ * Read the Claude CLI's OS-keychain credential blob (default:
21
+ * `readClaudeCliCredential`). Returns null when absent/unavailable.
22
+ */
23
+ readClaudeKeychain?: () => Promise<string | null>;
24
+ }
25
+ /**
26
+ * TOLERANT parse of a Claude account artifact — either the `.claude.json`
27
+ * config OR the OS-keychain credential blob (both carry an `oauthAccount` /
28
+ * `claudeAiOauth` object). Extracts ONLY the safe identity labels (email, org);
29
+ * the OAuth token material the keychain blob also carries is never read out, so
30
+ * an identity spread into a task event or bus message can never leak a secret.
31
+ * Any shape drift (missing file / non-JSON / unexpected shape) degrades to
32
+ * nulls, never a throw.
33
+ */
34
+ export declare function parseClaudeAccountFields(raw: string | null): {
35
+ account_email: string | null;
36
+ account_org: string | null;
37
+ };
38
+ /**
39
+ * SYNC identity resolution — env-var + config-file only, NO keychain read.
40
+ * Used as the `runnerCapsWithRepos` default and by any sync caller; the
41
+ * production register paths await the full async `resolveCredentialIdentity`
42
+ * below (which additionally consults the OS keychain). A BYOK-api-key or a
43
+ * file-backed login resolves fully here; a keychain-only login degrades to
44
+ * honest nulls under source=keychain (never the ACC/runner session email).
45
+ */
46
+ export declare function resolveCredentialIdentitySync(opts?: Pick<ResolveCredentialIdentityOptions, "env" | "readClaudeConfig">): CredentialIdentity;
47
+ /**
48
+ * Resolve the SERVING model-credential account identity — the account the
49
+ * spawned `claude` authenticates AS, which is NOT the runner/ACC operator
50
+ * session. Resolution order:
51
+ *
52
+ * 1. BYOK api_key forwarded (`forwardsAmbientKey` + a key present): a bare
53
+ * API key carries NO consumer account, so account_email/org are null — we
54
+ * never substitute the ACC session email, which is a different identity
55
+ * (the operator's login, not the model account the CLI bills).
56
+ * 2. A `.claude.json` config file THAT CARRIES AN ACCOUNT (email or org): read
57
+ * the OAuth account from it. source = credentials_file. A readable but
58
+ * settings-only config (no account fields) does NOT count — it falls through
59
+ * to (3) rather than masking a keychain login as an unknown credentials_file.
60
+ * 3. Otherwise the login lives only in the OS keychain ("Claude
61
+ * Code-credentials"): ACTUALLY read that blob and resolve whatever account
62
+ * it carries — honest nulls when it holds no email, never a fabricated
63
+ * one. source = keychain.
64
+ *
65
+ * Only the safe labels (email, org, source) are ever returned; the token
66
+ * material in the config/keychain is parsed past (see parseClaudeAccountFields),
67
+ * never surfaced.
68
+ */
69
+ export declare function resolveCredentialIdentity(opts?: ResolveCredentialIdentityOptions): Promise<CredentialIdentity>;
70
+ //# sourceMappingURL=credential-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-identity.d.ts","sourceRoot":"","sources":["../src/credential-identity.ts"],"names":[],"mappings":"AAWA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,kBAAkB,GAAG,UAAU,CAAC;AAE3E,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,gBAAgB,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,gCAAgC;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACnD;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG;IAC5D,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CA4BA;AAED;;;;;;;GAOG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,GAAE,IAAI,CAAC,gCAAgC,EAAE,KAAK,GAAG,kBAAkB,CAAM,GAC5E,kBAAkB,CAepB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,yBAAyB,CAC7C,IAAI,GAAE,gCAAqC,GAC1C,OAAO,CAAC,kBAAkB,CAAC,CAiB7B"}
@@ -0,0 +1,128 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { anthropicApiKey, claudeConfigIsolationEnabled, forwardsAmbientKey, isolatedClaudeConfigDir, } from "./provider-auth.js";
5
+ import { readClaudeCliCredential } from "./keychain.js";
6
+ function claudeConfigPath(env) {
7
+ const explicit = (env.CLAUDE_CONFIG_DIR ?? "").trim();
8
+ if (explicit)
9
+ return path.join(explicit, ".claude.json");
10
+ if (claudeConfigIsolationEnabled(env))
11
+ return path.join(isolatedClaudeConfigDir(env), ".claude.json");
12
+ return path.join(os.homedir(), ".claude.json");
13
+ }
14
+ function defaultReadClaudeConfig(env) {
15
+ try {
16
+ return fs.readFileSync(claudeConfigPath(env), "utf8");
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ function stringField(...values) {
23
+ for (const value of values) {
24
+ if (typeof value === "string" && value.trim())
25
+ return value.trim();
26
+ }
27
+ return null;
28
+ }
29
+ /**
30
+ * TOLERANT parse of a Claude account artifact — either the `.claude.json`
31
+ * config OR the OS-keychain credential blob (both carry an `oauthAccount` /
32
+ * `claudeAiOauth` object). Extracts ONLY the safe identity labels (email, org);
33
+ * the OAuth token material the keychain blob also carries is never read out, so
34
+ * an identity spread into a task event or bus message can never leak a secret.
35
+ * Any shape drift (missing file / non-JSON / unexpected shape) degrades to
36
+ * nulls, never a throw.
37
+ */
38
+ export function parseClaudeAccountFields(raw) {
39
+ const s = (raw ?? "").trim();
40
+ if (!s.startsWith("{"))
41
+ return { account_email: null, account_org: null };
42
+ let parsed;
43
+ try {
44
+ parsed = JSON.parse(s);
45
+ }
46
+ catch {
47
+ return { account_email: null, account_org: null };
48
+ }
49
+ if (typeof parsed !== "object" || parsed === null) {
50
+ return { account_email: null, account_org: null };
51
+ }
52
+ const rec = parsed;
53
+ const oauth = (typeof rec.oauthAccount === "object" && rec.oauthAccount !== null
54
+ ? rec.oauthAccount
55
+ : {});
56
+ const claudeAi = (typeof rec.claudeAiOauth === "object" && rec.claudeAiOauth !== null
57
+ ? rec.claudeAiOauth
58
+ : {});
59
+ return {
60
+ account_email: stringField(oauth.emailAddress, oauth.email, claudeAi.emailAddress),
61
+ account_org: stringField(oauth.organizationName, oauth.organization, oauth.org, claudeAi.organizationName),
62
+ };
63
+ }
64
+ /**
65
+ * SYNC identity resolution — env-var + config-file only, NO keychain read.
66
+ * Used as the `runnerCapsWithRepos` default and by any sync caller; the
67
+ * production register paths await the full async `resolveCredentialIdentity`
68
+ * below (which additionally consults the OS keychain). A BYOK-api-key or a
69
+ * file-backed login resolves fully here; a keychain-only login degrades to
70
+ * honest nulls under source=keychain (never the ACC/runner session email).
71
+ */
72
+ export function resolveCredentialIdentitySync(opts = {}) {
73
+ const env = opts.env ?? process.env;
74
+ if (forwardsAmbientKey(env) && anthropicApiKey(env)) {
75
+ return { account_email: null, account_org: null, credential_source: "env_var" };
76
+ }
77
+ const configRaw = (opts.readClaudeConfig ?? defaultReadClaudeConfig)(env);
78
+ const fromConfig = parseClaudeAccountFields(configRaw);
79
+ // AC5 (sync mirror): a settings-only `.claude.json` with no account fields must
80
+ // not mask a keychain login as `credentials_file`. This sync path does not read
81
+ // the keychain, so it reports honest keychain nulls — never a config identity it
82
+ // could not actually find.
83
+ if (fromConfig.account_email !== null || fromConfig.account_org !== null) {
84
+ return { ...fromConfig, credential_source: "credentials_file" };
85
+ }
86
+ return { account_email: null, account_org: null, credential_source: "keychain" };
87
+ }
88
+ /**
89
+ * Resolve the SERVING model-credential account identity — the account the
90
+ * spawned `claude` authenticates AS, which is NOT the runner/ACC operator
91
+ * session. Resolution order:
92
+ *
93
+ * 1. BYOK api_key forwarded (`forwardsAmbientKey` + a key present): a bare
94
+ * API key carries NO consumer account, so account_email/org are null — we
95
+ * never substitute the ACC session email, which is a different identity
96
+ * (the operator's login, not the model account the CLI bills).
97
+ * 2. A `.claude.json` config file THAT CARRIES AN ACCOUNT (email or org): read
98
+ * the OAuth account from it. source = credentials_file. A readable but
99
+ * settings-only config (no account fields) does NOT count — it falls through
100
+ * to (3) rather than masking a keychain login as an unknown credentials_file.
101
+ * 3. Otherwise the login lives only in the OS keychain ("Claude
102
+ * Code-credentials"): ACTUALLY read that blob and resolve whatever account
103
+ * it carries — honest nulls when it holds no email, never a fabricated
104
+ * one. source = keychain.
105
+ *
106
+ * Only the safe labels (email, org, source) are ever returned; the token
107
+ * material in the config/keychain is parsed past (see parseClaudeAccountFields),
108
+ * never surfaced.
109
+ */
110
+ export async function resolveCredentialIdentity(opts = {}) {
111
+ const env = opts.env ?? process.env;
112
+ if (forwardsAmbientKey(env) && anthropicApiKey(env)) {
113
+ return { account_email: null, account_org: null, credential_source: "env_var" };
114
+ }
115
+ const configRaw = (opts.readClaudeConfig ?? defaultReadClaudeConfig)(env);
116
+ const fromConfig = parseClaudeAccountFields(configRaw);
117
+ // AC5: only a config that actually carries an account (email OR org) counts as
118
+ // a credentials_file identity. A readable-but-settings-only `.claude.json` (no
119
+ // oauthAccount / claudeAiOauth) must NOT short-circuit here — doing so masked a
120
+ // real keychain login behind an unknown `credentials_file`. Fall through and
121
+ // report what the keychain holds instead.
122
+ if (fromConfig.account_email !== null || fromConfig.account_org !== null) {
123
+ return { ...fromConfig, credential_source: "credentials_file" };
124
+ }
125
+ const keychainRaw = await (opts.readClaudeKeychain ?? readClaudeCliCredential)().catch(() => null);
126
+ return { ...parseClaudeAccountFields(keychainRaw), credential_source: "keychain" };
127
+ }
128
+ //# sourceMappingURL=credential-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"credential-identity.js","sourceRoot":"","sources":["../src/credential-identity.ts"],"names":[],"mappings":"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"}
package/dist/doctor.d.ts CHANGED
@@ -1,7 +1,11 @@
1
+ import { type ResolveExecutableOptions } from "./bin-resolve.js";
1
2
  import type { EngineCredentialProbe } from "./engines/types.js";
2
3
  import { type BootstrapConfigInput, type RunnerConfig } from "./config.js";
4
+ import { type StoredSession } from "./types.js";
3
5
  import { type GitAuthProbe } from "./git-auth/index.js";
4
6
  import { type NpmLatestDeps } from "./runtime/version-drift.js";
7
+ import { type RunnerBuildFingerprint } from "./build-fingerprint.js";
8
+ import { probeMcpServer, type McpProbeResult } from "./mcp-spawn.js";
5
9
  export declare const LAUNCHD_LABEL = "com.tokenfactory.acc-runner";
6
10
  export declare function launchdPlistPath(): string;
7
11
  export declare const ENV_NAMES: Record<keyof RunnerConfig, string>;
@@ -19,6 +23,7 @@ interface CheckOutcome {
19
23
  detail: string;
20
24
  fix?: string;
21
25
  }
26
+ export declare function checkClaude(resolveOptions?: ResolveExecutableOptions): Promise<CheckOutcome>;
22
27
  /**
23
28
  * CC-1C (ENGINE-REF): chat-lane credential probe. Runs the chat-conformant
24
29
  * claude-code adapter's `credentialProbe()` and reports the tier the resolved
@@ -32,7 +37,13 @@ interface CheckOutcome {
32
37
  * Secrets are never printed (the probe detail redacts key material). The probe
33
38
  * is injectable so the doctor test exercises the rendering without live gh/auth.
34
39
  */
35
- export declare function checkChatAuth(probe?: () => Promise<EngineCredentialProbe>): Promise<CheckOutcome>;
40
+ export declare function checkChatAuth(probe?: () => Promise<EngineCredentialProbe>, engineId?: string): Promise<CheckOutcome>;
41
+ export interface CheckMcpServerDeps {
42
+ loadSession?: () => Promise<StoredSession | null>;
43
+ probe?: (args: Parameters<typeof probeMcpServer>[0]) => Promise<McpProbeResult>;
44
+ }
45
+ /** Prove the installed/fallback MCP command can initialize and list its catalog. */
46
+ export declare function checkMcpServer(cfg: RunnerConfig | null, deps?: CheckMcpServerDeps): Promise<CheckOutcome>;
36
47
  /**
37
48
  * M4 (ENGINE-CODEX): per-engine validation for the codex engine — binary in
38
49
  * PATH + a usable auth channel. Skipped-green when the `engines.codex_enabled`
@@ -70,8 +81,17 @@ export interface EngineDetectDeps {
70
81
  }>;
71
82
  codexEnabled?: () => boolean;
72
83
  codexProbe?: () => Promise<CheckOutcome>;
84
+ logRejected?: (line: string) => void;
73
85
  }
74
86
  export declare function detectCapableEngines(deps?: EngineDetectDeps): Promise<string[]>;
87
+ /**
88
+ * CAPS-ENGINES-STALE-KEYCHAIN-1 (AC5): surface WHY an enabled engine is or isn't
89
+ * advertised, on doctor's DEFAULT reporting path — so an operator sees the same
90
+ * rejection reason detectCapableEngines uses, without reading source. Runs that
91
+ * exact detection and folds every rejection line into the row's detail. `detect`
92
+ * is injectable so the reason is testable without the real binaries.
93
+ */
94
+ export declare function checkEngineDetection(detect?: (deps: EngineDetectDeps) => Promise<string[]>): Promise<CheckOutcome>;
75
95
  /**
76
96
  * GIT-AUTH-ALERT: prove the base clone's GitHub credential actually works with a
77
97
  * masked `ls-remote origin` dry-run — the same probe the watch loop runs. This
@@ -86,6 +106,10 @@ export declare function detectCapableEngines(deps?: EngineDetectDeps): Promise<s
86
106
  * clone or network.
87
107
  */
88
108
  export declare function checkGitAuth(cfg: RunnerConfig | null, probeFactory?: (repoPath: string) => GitAuthProbe): Promise<CheckOutcome>;
109
+ /** NAMED-INSTANCES-1: names what diverges per instance — the name, its
110
+ * keychain slot, and the runner id that slot resolved to. Always OK: unnamed
111
+ * is normal, and a missing session already fails `runner registered`. */
112
+ export declare function checkInstance(): Promise<CheckOutcome>;
89
113
  /**
90
114
  * v1.00-B: validate env-token (ephemeral) configuration. No-op for the
91
115
  * keychain path (desktop runners), so it stays green and silent there.
@@ -98,6 +122,7 @@ export declare function checkGitAuth(cfg: RunnerConfig | null, probeFactory?: (r
98
122
  * An already-expired token fails the check with a clear remediation.
99
123
  */
100
124
  export declare function checkEnvToken(): Promise<CheckOutcome>;
125
+ export declare function checkCredentialIdentity(): Promise<CheckOutcome>;
101
126
  /**
102
127
  * RD-1 (BOOTSTRAP-CONFIG): best-effort load of the persisted keychain / env
103
128
  * session so the doctor can show WHERE the Supabase config resolved from and
@@ -147,6 +172,17 @@ export interface DoctorOptions {
147
172
  */
148
173
  strict?: boolean;
149
174
  }
175
+ /**
176
+ * BUILD-FINGERPRINT-RUNNING-1 (AC4): compare the build the long-lived
177
+ * `watch`/companion process recorded at boot against the build THIS `acc doctor`
178
+ * process loaded (=== the installed on-disk build). Answers the operator's real
179
+ * question — "did the launchd process pick up the fix I just installed?" —
180
+ * WITHOUT needing any symbol name from the diff, the check the incident had to
181
+ * invent by grepping dist. A stale process is advisory (WARN), not a hard
182
+ * environment failure; `--strict` promotes it like every other WARN. No record
183
+ * (nothing long-lived has booted since the feature shipped) is not a problem.
184
+ */
185
+ export declare function checkRunningBuild(read?: () => Promise<RunnerBuildFingerprint | null>): Promise<CheckOutcome>;
150
186
  export declare function doctorCommand(options?: DoctorOptions): Promise<number>;
151
187
  export {};
152
188
  //# sourceMappingURL=doctor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}