@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
@@ -40,6 +40,7 @@ import { execa } from "execa";
40
40
  import { buildEnv } from "../bin-resolve.js";
41
41
  import { cacheDir } from "./cache-dir.js";
42
42
  import { tolerantRemoveDir } from "../review-worktree-cleanup.js";
43
+ export const TASK_WORKTREE_MARKER = ".acc-runner-OWNED";
43
44
  // Lazy so tests can override ACC_RUNNER_CACHE_DIR / HOME between cases.
44
45
  //
45
46
  // v1.00-B: resolves through `cacheDir()` (honours ACC_RUNNER_CACHE_DIR)
@@ -129,6 +130,61 @@ async function removeWorktree(repoPath, target, git) {
129
130
  catch { /* noop */ }
130
131
  return result;
131
132
  }
133
+ async function readWorktreeGitDirs(target) {
134
+ const dotGit = path.join(target, ".git");
135
+ try {
136
+ const stat = await fs.stat(dotGit);
137
+ if (stat.isDirectory())
138
+ return [dotGit];
139
+ const text = await fs.readFile(dotGit, "utf8");
140
+ const m = /^gitdir:\s*(.+)\s*$/m.exec(text);
141
+ if (!m)
142
+ return [];
143
+ const gitDir = path.resolve(target, m[1]);
144
+ const dirs = [gitDir];
145
+ try {
146
+ const common = (await fs.readFile(path.join(gitDir, "commondir"), "utf8")).trim();
147
+ if (common)
148
+ dirs.push(path.resolve(gitDir, common));
149
+ }
150
+ catch {
151
+ /* no commondir */
152
+ }
153
+ return dirs;
154
+ }
155
+ catch {
156
+ return [];
157
+ }
158
+ }
159
+ async function excludeTaskWorktreeMarker(target) {
160
+ for (const gitDir of await readWorktreeGitDirs(target)) {
161
+ const exclude = path.join(gitDir, "info", "exclude");
162
+ await fs.mkdir(path.dirname(exclude), { recursive: true });
163
+ let current = "";
164
+ try {
165
+ current = await fs.readFile(exclude, "utf8");
166
+ }
167
+ catch { /* absent */ }
168
+ if (!current.split(/\r?\n/).includes(TASK_WORKTREE_MARKER)) {
169
+ const prefix = current.endsWith("\n") || current.length === 0 ? "" : "\n";
170
+ await fs.appendFile(exclude, `${prefix}${TASK_WORKTREE_MARKER}\n`);
171
+ }
172
+ }
173
+ }
174
+ export async function writeTaskWorktreeMarker(target, owner, taskId) {
175
+ await excludeTaskWorktreeMarker(target);
176
+ await fs.writeFile(path.join(target, TASK_WORKTREE_MARKER), [
177
+ "ACC runner owned worktree - live runner state for one task.",
178
+ "Do not write here, stash, reset, or run git here by hand; the runner",
179
+ "may be modifying it right now.",
180
+ "",
181
+ `task_id=${taskId}`,
182
+ `runner_id=${owner.runnerId}`,
183
+ `pid=${owner.pid ?? process.pid}`,
184
+ `started_at=${owner.startedAt ?? new Date().toISOString()}`,
185
+ "",
186
+ ].join("\n"), "utf8");
187
+ }
132
188
  export async function inspectExistingWorktree(repoPath, taskId) {
133
189
  const target = worktreePath(taskId);
134
190
  if (!(await pathExists(target)))
@@ -169,6 +225,94 @@ export async function inspectExistingWorktree(repoPath, taskId) {
169
225
  }
170
226
  return { path: target, registered, branch, dirty };
171
227
  }
228
+ /* WORKTREE-BRANCH-COLLISION-ACROSS-INSTANCES-1: instances share ONE parent
229
+ * clone, so a task branch checked out by ANOTHER instance's worktree used to
230
+ * make `git worktree add -B` die exit-128 forever (an abandoned worktree never
231
+ * freed the branch). Mechanism (a) removes that at the root: the task worktree
232
+ * is added with a DETACHED HEAD (`git worktree add --detach`), so it reserves
233
+ * NO branch name — two instances never collide, and an abandoned worktree can
234
+ * never poison a branch (a detached worktree holds none). The branch is
235
+ * materialized only at push time (git pushes HEAD -> refs/heads/<branch>).
236
+ * WorktreeBranchTakenError / this class remain the deterministic guard for any
237
+ * residual "already used by worktree" git error (e.g. a legacy -B worktree
238
+ * registered before this fix); it is transient-infra, so the caller requeues
239
+ * (never dead-letters), mirroring git_provision_contention. */
240
+ export const WORKTREE_BRANCH_TAKEN_CLASS = "worktree_branch_taken";
241
+ /** Instance name (impl2, …) embedded in a per-instance worktree path, or null. */
242
+ export function instanceFromWorktreePath(p) {
243
+ const m = /(?:^|[\\/])instance-([a-z0-9][a-z0-9-]*)(?:[\\/]|$)/i.exec(p ?? "");
244
+ return m ? m[1] : null;
245
+ }
246
+ /** Thrown when a task branch is already checked out by another instance's
247
+ * worktree. Names the holder path + instance so the abandoned worktree is
248
+ * discoverable for salvage; `holderInstance` derives from `holderPath`. */
249
+ export class WorktreeBranchTakenError extends Error {
250
+ branch;
251
+ holderPath;
252
+ worktreePath;
253
+ event = "runner.worktree_branch_taken";
254
+ errorClass = WORKTREE_BRANCH_TAKEN_CLASS;
255
+ holderInstance;
256
+ constructor(branch, holderPath, worktreePath) {
257
+ super(`branch ${branch} is already checked out by a worktree at ${holderPath}; ` +
258
+ "refusing bare exit-128 passthrough (transient — task requeues)");
259
+ this.branch = branch;
260
+ this.holderPath = holderPath;
261
+ this.worktreePath = worktreePath;
262
+ this.name = "WorktreeBranchTakenError";
263
+ this.holderInstance = instanceFromWorktreePath(holderPath);
264
+ }
265
+ }
266
+ /** Parse the holder path from git's exit-128 "already used by worktree at
267
+ * '<path>'" / "already checked out at '<path>'" message; null otherwise. */
268
+ export function parseBranchTakenHolder(message) {
269
+ if (!message)
270
+ return null;
271
+ const m = /already (?:used by worktree|checked out) at '([^']+)'/i.exec(message) ??
272
+ /already (?:used by worktree|checked out) at\s+(\S+)/i.exec(message);
273
+ return m ? m[1].trim().replace(/[.'"]+$/, "") : null;
274
+ }
275
+ /** Provision the task worktree with a DETACHED checkout of `baseBranch`'s tip
276
+ * (mechanism a). A detached worktree reserves no branch name, so this never
277
+ * collides across instances. The reuse/prune/fail ladder is the deterministic
278
+ * guard for any residual "already used by worktree" git error, in order:
279
+ * (1) reuse ONLY when the holder path is EXACTLY this task's target AND that
280
+ * directory exists on disk (a sibling task's worktree under the same workDir
281
+ * is a FOREIGN holder, never reused); (2) else `git worktree prune` + retry
282
+ * the add exactly once; (3) else throw WorktreeBranchTakenError. Non-collision
283
+ * errors propagate untouched (never masked as branch-taken). `ownWorkDir` is
284
+ * retained on the options for callers/telemetry but is NOT used for ownership. */
285
+ export async function addTaskBranchWorktree(opts) {
286
+ const add = () => opts.git(["worktree", "add", "--detach", opts.target, opts.baseBranch], opts.worktreeBase);
287
+ // Ownership is path identity, not path containment: a registration is ours to
288
+ // reuse only when the holder IS this task's target directory and it exists.
289
+ const holderIsOurs = async (holder) => path.resolve(holder) === path.resolve(opts.target) && (await pathExists(opts.target));
290
+ try {
291
+ await add();
292
+ return { reused: false };
293
+ }
294
+ catch (err) {
295
+ const holder = parseBranchTakenHolder(err.message);
296
+ if (!holder)
297
+ throw err; // not a registration collision — surface the real error
298
+ if (await holderIsOurs(holder))
299
+ return { reused: true }; // (1) our exact target, on disk
300
+ try {
301
+ await opts.git(["worktree", "prune"], opts.worktreeBase);
302
+ }
303
+ catch { /* best-effort */ }
304
+ try {
305
+ await add(); // (2) retry exactly once
306
+ return { reused: false };
307
+ }
308
+ catch (retryErr) {
309
+ const holder2 = parseBranchTakenHolder(retryErr.message);
310
+ if (!holder2)
311
+ throw retryErr; // a different failure on retry — surface it
312
+ throw new WorktreeBranchTakenError(opts.branch, holder2, opts.target); // (3)
313
+ }
314
+ }
315
+ }
172
316
  export async function prepareTaskWorktree(opts) {
173
317
  const git = opts.git ?? defaultGitExec;
174
318
  await fs.mkdir(workDir(), { recursive: true });
@@ -194,7 +338,16 @@ export async function prepareTaskWorktree(opts) {
194
338
  // recreate semantics for the existing test suite.
195
339
  const inspect = opts.inspect ?? inspectExistingWorktree;
196
340
  const existing = await inspect(worktreeBase, opts.taskId);
197
- if (existing && existing.registered && existing.branch === opts.branch) {
341
+ // A registered leftover at this task-keyed path is a genuine crash-resume
342
+ // candidate. Since the fresh path now checks out DETACHED, a resumable
343
+ // leftover reads as `branch === "HEAD"`; a legacy leftover created by the
344
+ // old `-B` path still reads as the task branch. Accept both; a leftover on
345
+ // some OTHER named branch is treated as stale and force-recreated below.
346
+ if (existing &&
347
+ existing.registered &&
348
+ (existing.branch === opts.branch || existing.branch === "HEAD")) {
349
+ if (opts.owner)
350
+ await writeTaskWorktreeMarker(target, opts.owner, opts.taskId);
198
351
  let cleaned = false;
199
352
  return {
200
353
  path: target,
@@ -247,13 +400,29 @@ export async function prepareTaskWorktree(opts) {
247
400
  // baseBranch's tip, overwriting a stale ref from a prior crashed run.
248
401
  // v0.19 T-64-1: for a FRESH task the caller passes the freshly-fetched
249
402
  // origin tip (`origin/<integration>`) as baseBranch — NOT a stale local
250
- // ref so the branch starts at the latest integration HEAD. The resume
251
- // path above returns before reaching here, so a resumed partial branch
252
- // is never reset to this base.
253
- await git(["worktree", "add", "-B", opts.branch, target, opts.baseBranch], worktreeBase);
403
+ // ref. The resume path above returns before reaching here, so a resumed
404
+ // partial branch is never reset to this base. WORKTREE-BRANCH-COLLISION-1:
405
+ // the add is DETACHED (addTaskBranchWorktree), so it reserves no branch and
406
+ // cannot collide across instances; any residual registration collision fails
407
+ // as WorktreeBranchTakenError (requeued), never a bare exit-128 passthrough.
408
+ await addTaskBranchWorktree({
409
+ git,
410
+ worktreeBase,
411
+ ownWorkDir: workDir(),
412
+ branch: opts.branch,
413
+ target,
414
+ baseBranch: opts.baseBranch,
415
+ });
416
+ if (opts.owner)
417
+ await writeTaskWorktreeMarker(target, opts.owner, opts.taskId);
254
418
  let cleaned = false;
255
419
  return {
256
420
  path: target,
421
+ // NEVER resumed on the fresh path: `added.reused` means a leftover
422
+ // registration at our OWN target was reused (not a crash-resume — the
423
+ // v0.12 resume flag is owned solely by the inspect path above, which
424
+ // returns before reaching here). Overloading it fired worktree.resumed
425
+ // where no partial work exists (WORKTREE-BRANCH-COLLISION rework #3).
257
426
  resumed: false,
258
427
  async cleanup() {
259
428
  if (cleaned)
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/runtime/worktree.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worktree.js","sourceRoot":"","sources":["../../src/runtime/worktree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,79 @@
1
+ import type { ServingAuthKind } from "../provider-auth.js";
2
+ /** The two kinds an operator can actually choose (migration 0323 §1's CHECK). */
3
+ export type ServingAuthChoice = Extract<ServingAuthKind, "subscription" | "api_key">;
4
+ /** What one boot-time resolution decided. */
5
+ export interface ServingAuthResolution {
6
+ kind: ServingAuthChoice;
7
+ /**
8
+ * The sealed BYOK key, present ONLY for `api_key`. Held in memory, handed
9
+ * straight to `cacheServingApiKey`, never written to disk or a log.
10
+ */
11
+ credential: string | null;
12
+ /** Sealed acc.llm_keys id, for banners/telemetry. Never the key itself. */
13
+ keyId: string | null;
14
+ /** acc.ai_identities id the org chose. Null in subscription mode. */
15
+ identityId: string | null;
16
+ /** Why we ended up on subscription, when it wasn't an explicit choice. */
17
+ fallbackReason: string | null;
18
+ }
19
+ /** The answer every failure folds to. See rule 1 in the module header. */
20
+ export declare function subscriptionResolution(reason?: string | null): ServingAuthResolution;
21
+ /**
22
+ * Fold a raw response body into a resolution. Exported so the whole decision
23
+ * tree is asserted with no network — the fetch wrapper below is a thin shell
24
+ * over this.
25
+ */
26
+ export declare function toServingAuthResolution(raw: unknown): ServingAuthResolution;
27
+ export interface FetchServingAuthOptions {
28
+ publicUrl: string;
29
+ jwt: string;
30
+ fetchImpl?: typeof fetch;
31
+ }
32
+ /**
33
+ * Ask the control plane how this org wants model serving authenticated.
34
+ * NEVER throws — rule 1. The reason a fold happened is carried on the
35
+ * resolution so the startup banner can say it out loud.
36
+ */
37
+ export declare function fetchServingAuth(opts: FetchServingAuthOptions): Promise<ServingAuthResolution>;
38
+ /**
39
+ * Apply a resolution to a process env, returning the env the rest of startup
40
+ * should use. Never mutates `base`.
41
+ *
42
+ * Rule 2 lives here: when `base` already carries an explicit
43
+ * ACC_RUNNER_SERVING_AUTH_KIND, `base` is returned UNCHANGED and the
44
+ * credential is not cached — an operator's launch-env override is the more
45
+ * specific instruction, and silently overwriting it would make a documented
46
+ * escape hatch stop working.
47
+ *
48
+ * Side effect (deliberate, and the reason this returns an env rather than just
49
+ * a string): for api_key it seeds ../provider-auth.ts's module cache so
50
+ * `anthropicApiKey()` resolves the sealed key for every later spawn without
51
+ * anyone writing process.env.ANTHROPIC_API_KEY.
52
+ */
53
+ export declare function applyServingAuth(resolution: ServingAuthResolution, base?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
54
+ /**
55
+ * The in-place sibling of {@link applyServingAuth}, for the one caller that
56
+ * genuinely needs the process global: startup writes the kind into
57
+ * `process.env` because every later consumer (`servingAuthKind`,
58
+ * `forwardsAmbientKey`, `withAnthropicAuth`, `doctor`) defaults its `env`
59
+ * argument to `process.env`, and threading a copy through all of them would be
60
+ * a much larger change than this feature earns.
61
+ *
62
+ * Writes exactly ONE variable — the kind — and never touches
63
+ * ANTHROPIC_API_KEY (the credential goes to the module cache instead, via
64
+ * `applyServingAuth`). Returns true when it applied, false when an explicit
65
+ * env value won (rule 2).
66
+ */
67
+ export declare function installServingAuth(resolution: ServingAuthResolution, env?: NodeJS.ProcessEnv): boolean;
68
+ /**
69
+ * True when `env` already pins the serving kind, i.e. `applyServingAuth` would
70
+ * defer to it. Exposed so startup can say "server said X, your env says Y,
71
+ * your env wins" instead of appearing to ignore the setting.
72
+ */
73
+ export declare function servingAuthKindIsPinned(env?: NodeJS.ProcessEnv): boolean;
74
+ /**
75
+ * One line for the startup banner. Renders the kind and whether a credential
76
+ * was delivered — never the credential (rule 3).
77
+ */
78
+ export declare function describeServingAuthResolution(r: ServingAuthResolution): string;
79
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serving-auth/index.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE3D,iFAAiF;AACjF,MAAM,MAAM,iBAAiB,GAAG,OAAO,CAAC,eAAe,EAAE,cAAc,GAAG,SAAS,CAAC,CAAC;AAErF,6CAA6C;AAC7C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB;;;OAGG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,2EAA2E;IAC3E,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qEAAqE;IACrE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0EAA0E;IAC1E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,CAAC,MAAM,GAAE,MAAM,GAAG,IAAW,GAAG,qBAAqB,CAQ1F;AAYD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,OAAO,GAAG,qBAAqB,CAsB3E;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,qBAAqB,CAAC,CAuBhC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,qBAAqB,EACjC,IAAI,GAAE,MAAM,CAAC,UAAwB,GACpC,MAAM,CAAC,UAAU,CAOnB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,qBAAqB,EACjC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAKT;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAErF;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAAC,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAO9E"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * RUNNER-SERVING-AUTH — the runner's half of the operator's
3
+ * subscription-vs-BYOK choice.
4
+ *
5
+ * WHAT THIS ADDS, AND WHAT IT DELIBERATELY DOES NOT
6
+ * ----------------------------------------------------------------------------
7
+ * It adds ONE thing: a per-boot answer to "did an admin choose API-key serving
8
+ * for this org?", fetched from /api/runner/serving-auth under the runner's own
9
+ * JWT. That answer is then expressed through machinery that ALREADY EXISTS:
10
+ *
11
+ * - the kind is written to `ACC_RUNNER_SERVING_AUTH_KIND` (the env var
12
+ * ../provider-auth.ts already folds via `servingAuthKind`), so
13
+ * `withAnthropicAuth` forwards or strips exactly as it does today;
14
+ * - the sealed key is pushed into the SAME module cache the vault path uses
15
+ * (`cacheServingApiKey`), so `anthropicApiKey()` finds it without anybody
16
+ * touching `process.env.ANTHROPIC_API_KEY`.
17
+ *
18
+ * It adds NO new spawn-time branch, NO second credential store, and NO way to
19
+ * reach api_key serving other than the admin-gated, audited setting.
20
+ *
21
+ * THREE RULES THIS MODULE ENFORCES ON ITS CALLERS
22
+ * ----------------------------------------------------------------------------
23
+ * 1. EVERY FAILURE IS SUBSCRIPTION. A network error, a non-200, malformed
24
+ * JSON, an old server with no such route, or an api_key answer with no
25
+ * credential all resolve to `subscription`. Under REVIEW-SUBS
26
+ * (docs/acc/REVIEW_SUBSCRIPTION_ONLY.md) the expensive failure is billing
27
+ * somebody who did not opt in; a runner that falls back to subscription is
28
+ * a runner that behaves exactly as it does today.
29
+ * 2. AN EXPLICIT ENV VALUE WINS. A launch env that already sets
30
+ * ACC_RUNNER_SERVING_AUTH_KIND (container fleets, an operator debugging a
31
+ * 429) is NOT overwritten by the server's answer. The setting exists to
32
+ * replace the hand-edited env var as the normal path, not to take it away.
33
+ * 3. NOTHING HERE LOGS THE KEY. `describeServingAuthResolution` is the only
34
+ * thing that renders a resolution, and it renders the kind and a boolean —
35
+ * never the credential, never a prefix of it.
36
+ */
37
+ import { SERVING_AUTH_KIND_ENV, cacheServingApiKey } from "../provider-auth.js";
38
+ /** The answer every failure folds to. See rule 1 in the module header. */
39
+ export function subscriptionResolution(reason = null) {
40
+ return {
41
+ kind: "subscription",
42
+ credential: null,
43
+ keyId: null,
44
+ identityId: null,
45
+ fallbackReason: reason,
46
+ };
47
+ }
48
+ /**
49
+ * Fold a raw response body into a resolution. Exported so the whole decision
50
+ * tree is asserted with no network — the fetch wrapper below is a thin shell
51
+ * over this.
52
+ */
53
+ export function toServingAuthResolution(raw) {
54
+ if (!raw || typeof raw !== "object")
55
+ return subscriptionResolution("malformed response");
56
+ const body = raw;
57
+ if (body.ok === false)
58
+ return subscriptionResolution(body.error ?? "server refused");
59
+ const kind = (body.auth_kind ?? "").trim().toLowerCase();
60
+ if (kind !== "api_key" && kind !== "api-key") {
61
+ return subscriptionResolution(null);
62
+ }
63
+ const credential = (body.credential ?? "").trim();
64
+ if (!credential) {
65
+ // api_key without a key would strip nothing and forward nothing — the
66
+ // spawn would 401 on every task. Subscription is the working answer.
67
+ return subscriptionResolution("api_key selected but no credential was delivered");
68
+ }
69
+ return {
70
+ kind: "api_key",
71
+ credential,
72
+ keyId: body.key_id ?? null,
73
+ identityId: body.identity_id ?? null,
74
+ fallbackReason: null,
75
+ };
76
+ }
77
+ /**
78
+ * Ask the control plane how this org wants model serving authenticated.
79
+ * NEVER throws — rule 1. The reason a fold happened is carried on the
80
+ * resolution so the startup banner can say it out loud.
81
+ */
82
+ export async function fetchServingAuth(opts) {
83
+ const f = opts.fetchImpl ?? fetch;
84
+ const endpoint = `${opts.publicUrl.replace(/\/$/, "")}/api/runner/serving-auth`;
85
+ try {
86
+ const res = await f(endpoint, {
87
+ method: "POST",
88
+ headers: {
89
+ Authorization: `Bearer ${opts.jwt}`,
90
+ "Content-Type": "application/json",
91
+ },
92
+ body: JSON.stringify({}),
93
+ });
94
+ if (!res.ok) {
95
+ // 404 on an older control plane is the common case and is not an error:
96
+ // that deployment has no serving-auth setting, so subscription is right.
97
+ return subscriptionResolution(`serving-auth endpoint returned ${res.status}`);
98
+ }
99
+ return toServingAuthResolution(await res.json());
100
+ }
101
+ catch (err) {
102
+ return subscriptionResolution(`serving-auth unreachable (${err instanceof Error ? err.message : "unknown"})`);
103
+ }
104
+ }
105
+ /**
106
+ * Apply a resolution to a process env, returning the env the rest of startup
107
+ * should use. Never mutates `base`.
108
+ *
109
+ * Rule 2 lives here: when `base` already carries an explicit
110
+ * ACC_RUNNER_SERVING_AUTH_KIND, `base` is returned UNCHANGED and the
111
+ * credential is not cached — an operator's launch-env override is the more
112
+ * specific instruction, and silently overwriting it would make a documented
113
+ * escape hatch stop working.
114
+ *
115
+ * Side effect (deliberate, and the reason this returns an env rather than just
116
+ * a string): for api_key it seeds ../provider-auth.ts's module cache so
117
+ * `anthropicApiKey()` resolves the sealed key for every later spawn without
118
+ * anyone writing process.env.ANTHROPIC_API_KEY.
119
+ */
120
+ export function applyServingAuth(resolution, base = process.env) {
121
+ if ((base[SERVING_AUTH_KIND_ENV] ?? "").trim())
122
+ return base;
123
+ const next = { ...base, [SERVING_AUTH_KIND_ENV]: resolution.kind };
124
+ if (resolution.kind === "api_key" && resolution.credential) {
125
+ cacheServingApiKey(resolution.credential);
126
+ }
127
+ return next;
128
+ }
129
+ /**
130
+ * The in-place sibling of {@link applyServingAuth}, for the one caller that
131
+ * genuinely needs the process global: startup writes the kind into
132
+ * `process.env` because every later consumer (`servingAuthKind`,
133
+ * `forwardsAmbientKey`, `withAnthropicAuth`, `doctor`) defaults its `env`
134
+ * argument to `process.env`, and threading a copy through all of them would be
135
+ * a much larger change than this feature earns.
136
+ *
137
+ * Writes exactly ONE variable — the kind — and never touches
138
+ * ANTHROPIC_API_KEY (the credential goes to the module cache instead, via
139
+ * `applyServingAuth`). Returns true when it applied, false when an explicit
140
+ * env value won (rule 2).
141
+ */
142
+ export function installServingAuth(resolution, env = process.env) {
143
+ if (servingAuthKindIsPinned(env))
144
+ return false;
145
+ const next = applyServingAuth(resolution, env);
146
+ env[SERVING_AUTH_KIND_ENV] = next[SERVING_AUTH_KIND_ENV];
147
+ return true;
148
+ }
149
+ /**
150
+ * True when `env` already pins the serving kind, i.e. `applyServingAuth` would
151
+ * defer to it. Exposed so startup can say "server said X, your env says Y,
152
+ * your env wins" instead of appearing to ignore the setting.
153
+ */
154
+ export function servingAuthKindIsPinned(env = process.env) {
155
+ return Boolean((env[SERVING_AUTH_KIND_ENV] ?? "").trim());
156
+ }
157
+ /**
158
+ * One line for the startup banner. Renders the kind and whether a credential
159
+ * was delivered — never the credential (rule 3).
160
+ */
161
+ export function describeServingAuthResolution(r) {
162
+ if (r.kind === "api_key") {
163
+ return `api_key (org setting) — sealed key delivered for identity ${r.identityId ?? "?"}`;
164
+ }
165
+ return r.fallbackReason
166
+ ? `subscription (fell back: ${r.fallbackReason})`
167
+ : "subscription (org setting)";
168
+ }
169
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/serving-auth/index.ts"],"names":[],"mappings":"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"}