@tokenfactory/acc-runner 0.44.10 → 0.46.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 (52) hide show
  1. package/dist/applied-seq-roster.d.ts +77 -0
  2. package/dist/applied-seq-roster.d.ts.map +1 -0
  3. package/dist/applied-seq-roster.js +45 -0
  4. package/dist/applied-seq-roster.js.map +1 -0
  5. package/dist/build-info.generated.d.ts +1 -1
  6. package/dist/build-info.generated.js +2 -2
  7. package/dist/chat-cancel/cancel-controller.d.ts +1 -1
  8. package/dist/chat-cancel/cancel-controller.js +1 -1
  9. package/dist/chat-cancel/index.d.ts +1 -1
  10. package/dist/chat-cancel/index.js +1 -1
  11. package/dist/login.d.ts +17 -0
  12. package/dist/login.d.ts.map +1 -1
  13. package/dist/login.js +132 -45
  14. package/dist/login.js.map +1 -1
  15. package/dist/machine-capabilities/redact.d.ts +1 -1
  16. package/dist/machine-capabilities/redact.js +2 -2
  17. package/dist/machine-capabilities/types.d.ts +3 -3
  18. package/dist/machine-capabilities/types.js +1 -1
  19. package/dist/machine-console/index.d.ts +4 -0
  20. package/dist/machine-console/index.d.ts.map +1 -1
  21. package/dist/machine-console/index.js +52 -0
  22. package/dist/machine-console/index.js.map +1 -1
  23. package/dist/mcp-spawn.d.ts +1 -1
  24. package/dist/mcp-spawn.js +1 -1
  25. package/dist/migration-seq-guard.d.ts +34 -5
  26. package/dist/migration-seq-guard.d.ts.map +1 -1
  27. package/dist/migration-seq-guard.js +45 -6
  28. package/dist/migration-seq-guard.js.map +1 -1
  29. package/dist/prepr-gate.d.ts +12 -1
  30. package/dist/prepr-gate.d.ts.map +1 -1
  31. package/dist/prepr-gate.js +34 -3
  32. package/dist/prepr-gate.js.map +1 -1
  33. package/dist/production-migrations/executor.d.ts +28 -0
  34. package/dist/production-migrations/executor.d.ts.map +1 -1
  35. package/dist/production-migrations/executor.js +27 -2
  36. package/dist/production-migrations/executor.js.map +1 -1
  37. package/dist/staging-migrations/executor.d.ts +16 -0
  38. package/dist/staging-migrations/executor.d.ts.map +1 -1
  39. package/dist/staging-migrations/executor.js +20 -1
  40. package/dist/staging-migrations/executor.js.map +1 -1
  41. package/dist/task-runner.d.ts.map +1 -1
  42. package/dist/task-runner.js +13 -2
  43. package/dist/task-runner.js.map +1 -1
  44. package/dist/user-auth/device-login.d.ts +13 -0
  45. package/dist/user-auth/device-login.d.ts.map +1 -1
  46. package/dist/user-auth/device-login.js +113 -40
  47. package/dist/user-auth/device-login.js.map +1 -1
  48. package/dist/watch.d.ts +10 -0
  49. package/dist/watch.d.ts.map +1 -1
  50. package/dist/watch.js +2 -1
  51. package/dist/watch.js.map +1 -1
  52. package/package.json +1 -1
@@ -0,0 +1,77 @@
1
+ /**
2
+ * L1-B — the live `acc.applied_migrations` roster, read with the runner's OWN
3
+ * authenticated Supabase session.
4
+ *
5
+ * WHY IT EXISTS
6
+ * ----------------------------------------------------------------------------
7
+ * MIG-SEQ-GUARD's baseline is "every migration seq claimed OUTSIDE this
8
+ * worktree". That has two halves:
9
+ *
10
+ * • the freshly-fetched integration head — seqs whose FILE has merged;
11
+ * • the applied ledger — seqs that were APPLIED but whose file has not merged
12
+ * yet (an operator `psql` apply per MIGRATION_PROMOTION_RUNBOOK, or the
13
+ * halt-processor auto-apply; both record the row before the PR merges).
14
+ *
15
+ * `revalidateMigrationSeq` has always accepted the second half
16
+ * (`SeqGuardOptions.appliedSeqs`), and the runner — its only caller — never
17
+ * passed one. So the ledger half of the baseline was a silent no-op in
18
+ * production: a seq already burned in the ledger still read as free, and the
19
+ * guard would let the branch push straight into the collision that
20
+ * `migration-lint`'s AU-4/live-seq rules then reject on the PR.
21
+ *
22
+ * WHY POSTGREST AND NOT `psql`
23
+ * ----------------------------------------------------------------------------
24
+ * `scripts/ci/migration-lint.mjs` (`gatherAppliedSeqs`) shells out to
25
+ * `psql "$ACC_DB_URL"`. The runner has no `ACC_DB_URL` and must not grow one —
26
+ * that is a CI/server credential and CLAUDE.md §Secrets keeps it there. What the
27
+ * runner does hold is an authenticated Supabase client scoped to the `acc`
28
+ * schema (src `supabase.ts`), and migration 0325 put
29
+ *
30
+ * create policy applied_migrations_read on acc.applied_migrations
31
+ * for select to authenticated using (true);
32
+ *
33
+ * on the ledger for exactly this reason ("non-sensitive metadata the drift /
34
+ * version UI may read; keep signed-in reads working"). So the runner reads the
35
+ * roster as ITSELF: no new credential, no new env var, no new grant.
36
+ *
37
+ * VERIFIED, 2026-09-25 — on the production parent (ctknjrtevjrzwpuojghx, the
38
+ * live operational board the runner's session points at) `authenticated` holds
39
+ * SELECT on acc.applied_migrations and the 0325 policy is present, so the read
40
+ * returns the full 402-row roster. On the STAGING branch (qfevnwuybyygexkcbdfy)
41
+ * the policy exists but the table grant does not, so the same read is refused
42
+ * there and this module returns `null` — the guard then falls back to the
43
+ * remote head alone, exactly as it behaved before L1-B. Closing that
44
+ * divergence is a grant-only migration and belongs to the schema track, not
45
+ * here; nothing in this module depends on it.
46
+ *
47
+ * BEST-EFFORT BY CONSTRUCTION
48
+ * ----------------------------------------------------------------------------
49
+ * Every failure — RLS refusing the read, an offline machine, a pre-0325
50
+ * database, a malformed row — yields `null`, which is byte-for-byte the input
51
+ * the guard handled before this module existed (`opts.appliedSeqs ?? []`). An
52
+ * unreadable ledger must never be the reason a push is delayed, and never the
53
+ * reason a seq moves.
54
+ */
55
+ import type { RunnerSupabaseClient } from "./supabase.js";
56
+ /**
57
+ * Row cap on the roster read. The ledger is ~400 rows today and only grows, and
58
+ * PostgREST silently truncates an over-large response — so the rows are ordered
59
+ * by seq DESCENDING before the cap. A truncated read then still carries the
60
+ * HIGHEST seqs, which is what the guard's staleness test turns on; a truncation
61
+ * that dropped the top rows would lower the baseline and disarm the guard.
62
+ */
63
+ export declare const APPLIED_SEQ_ROSTER_LIMIT = 2000;
64
+ /**
65
+ * Numeric seqs recorded in `acc.applied_migrations`, newest-first, or `null`
66
+ * when the ledger could not be read (or is empty).
67
+ *
68
+ * Non-numeric seqs are dropped, mirroring `gatherAppliedSeqs`'s
69
+ * `where seq ~ '^[0-9]+$'` — the two rosters must agree on what counts as a
70
+ * migration seq, because the guard hands this one to that same linter as
71
+ * `--baseline-seqs`.
72
+ *
73
+ * Never throws and never logs: the connection string, the JWT and the row
74
+ * contents stay out of the transcript (CLAUDE.md §Secrets).
75
+ */
76
+ export declare function readAppliedMigrationSeqs(supabase: RunnerSupabaseClient): Promise<number[] | null>;
77
+ //# sourceMappingURL=applied-seq-roster.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-seq-roster.d.ts","sourceRoot":"","sources":["../src/applied-seq-roster.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAK1D;;;;;;GAMG;AACH,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAO9C;;;;;;;;;;;GAWG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,CAmB1B"}
@@ -0,0 +1,45 @@
1
+ /** Table name, relative to the client's `acc` schema binding. */
2
+ const LEDGER_TABLE = "applied_migrations";
3
+ /**
4
+ * Row cap on the roster read. The ledger is ~400 rows today and only grows, and
5
+ * PostgREST silently truncates an over-large response — so the rows are ordered
6
+ * by seq DESCENDING before the cap. A truncated read then still carries the
7
+ * HIGHEST seqs, which is what the guard's staleness test turns on; a truncation
8
+ * that dropped the top rows would lower the baseline and disarm the guard.
9
+ */
10
+ export const APPLIED_SEQ_ROSTER_LIMIT = 2_000;
11
+ /**
12
+ * Numeric seqs recorded in `acc.applied_migrations`, newest-first, or `null`
13
+ * when the ledger could not be read (or is empty).
14
+ *
15
+ * Non-numeric seqs are dropped, mirroring `gatherAppliedSeqs`'s
16
+ * `where seq ~ '^[0-9]+$'` — the two rosters must agree on what counts as a
17
+ * migration seq, because the guard hands this one to that same linter as
18
+ * `--baseline-seqs`.
19
+ *
20
+ * Never throws and never logs: the connection string, the JWT and the row
21
+ * contents stay out of the transcript (CLAUDE.md §Secrets).
22
+ */
23
+ export async function readAppliedMigrationSeqs(supabase) {
24
+ try {
25
+ const { data, error } = await supabase
26
+ .from(LEDGER_TABLE)
27
+ .select("seq")
28
+ .order("seq", { ascending: false })
29
+ .limit(APPLIED_SEQ_ROSTER_LIMIT);
30
+ if (error || !Array.isArray(data))
31
+ return null;
32
+ const seqs = data
33
+ .map((row) => Number(String(row?.seq ?? "").trim()))
34
+ .filter((n) => Number.isFinite(n) && n > 0)
35
+ .map((n) => Math.trunc(n));
36
+ // Empty → null, same as `gatherAppliedSeqs`: "no readable roster" and "a
37
+ // roster with nothing in it" are indistinguishable here and neither may
38
+ // change a verdict.
39
+ return seqs.length > 0 ? seqs : null;
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ //# sourceMappingURL=applied-seq-roster.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applied-seq-roster.js","sourceRoot":"","sources":["../src/applied-seq-roster.ts"],"names":[],"mappings":"AAwDA,iEAAiE;AACjE,MAAM,YAAY,GAAG,oBAAoB,CAAC;AAE1C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,KAAK,CAAC;AAO9C;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAA8B;IAE9B,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,QAAQ;aACnC,IAAI,CAAC,YAAY,CAAC;aAClB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;aAClC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/C,MAAM,IAAI,GAAI,IAAuB;aAClC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aACnD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7B,yEAAyE;QACzE,wEAAwE;QACxE,oBAAoB;QACpB,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -1,3 +1,3 @@
1
- export declare const BUILD_COMMIT_SHA = "613a59504f17e8b647cf2213de3de405f44fedb7";
1
+ export declare const BUILD_COMMIT_SHA = "31f604212edc74723cdd951c39b4d3d0765e1a3e";
2
2
  export declare const BUILD_DIST_SHA256 = "pending-build";
3
3
  //# sourceMappingURL=build-info.generated.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Generated by scripts/gen-build-info.mjs. Do not edit by hand.
2
- export const BUILD_COMMIT_SHA = "613a59504f17e8b647cf2213de3de405f44fedb7";
3
- export const BUILD_DIST_SHA256 = "2866eb442770f85c3fab472a1fe9785182157129ae4720822e14f5a7987a1479";
2
+ export const BUILD_COMMIT_SHA = "31f604212edc74723cdd951c39b4d3d0765e1a3e";
3
+ export const BUILD_DIST_SHA256 = "3a5a93ca6a0d24819ef93df18e81040ab231ed7681fb9b2c1cd5dc70f6c8ac95";
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CX-3 STOP-CANCEL: the runner-side cancel controller.
3
3
  *
4
- * The browser's Stop calls acc.cancel_chat_turn (migration 0278), which makes the
4
+ * The browser's Stop calls acc.cancel_chat_turn (migration 0282), which makes the
5
5
  * turn terminal-CANCELLED server-side. This controller is the local counterpart
6
6
  * that tears the still-running engine down promptly so the child is provably dead
7
7
  * and the runner's slot frees:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CX-3 STOP-CANCEL: the runner-side cancel controller.
3
3
  *
4
- * The browser's Stop calls acc.cancel_chat_turn (migration 0278), which makes the
4
+ * The browser's Stop calls acc.cancel_chat_turn (migration 0282), which makes the
5
5
  * turn terminal-CANCELLED server-side. This controller is the local counterpart
6
6
  * that tears the still-running engine down promptly so the child is provably dead
7
7
  * and the runner's slot frees:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CX-3 STOP-CANCEL: the runner-side chat-cancel barrel.
3
3
  *
4
- * When the operator hits Stop, acc.cancel_chat_turn (migration 0278) makes the
4
+ * When the operator hits Stop, acc.cancel_chat_turn (migration 0282) makes the
5
5
  * turn terminal-CANCELLED server-side and persists the partial reply. These
6
6
  * primitives tear the still-running engine down locally so the child is provably
7
7
  * dead and the slot frees:
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * CX-3 STOP-CANCEL: the runner-side chat-cancel barrel.
3
3
  *
4
- * When the operator hits Stop, acc.cancel_chat_turn (migration 0278) makes the
4
+ * When the operator hits Stop, acc.cancel_chat_turn (migration 0282) makes the
5
5
  * turn terminal-CANCELLED server-side and persists the partial reply. These
6
6
  * primitives tear the still-running engine down locally so the child is provably
7
7
  * dead and the slot frees:
package/dist/login.d.ts CHANGED
@@ -91,6 +91,23 @@ export declare function liveProcessCapabilities(cfg: Pick<RunnerConfig, "capabil
91
91
  * the suffix can never reach some payloads and not others. */
92
92
  export declare function machineIdentity(): string;
93
93
  export declare function detectInstalledModels(): Promise<string[]>;
94
+ /**
95
+ * DEC-046 (CLI half) — how many REPLACEMENT device codes a single login will
96
+ * mint after the code on screen expires.
97
+ *
98
+ * The flow this closes: a device code lives 10 minutes, and the person holding
99
+ * the terminal is usually away from it for most of them — finding the tab,
100
+ * signing in, reading the code back. When it expired the CLI exited with
101
+ * "Run `acc-runner login` again", so the one thing they still had to do was the
102
+ * one thing the dead terminal could no longer help them do. Re-minting keeps the
103
+ * login alive and puts a fresh code exactly where they are already looking.
104
+ *
105
+ * Bounded, and bounded deliberately: unbounded re-minting turns an abandoned
106
+ * terminal into a code-minting loop against the create lane for as long as the
107
+ * process lives. Three replacements is ~40 minutes of patience, after which the
108
+ * honest reading is that nobody is coming.
109
+ */
110
+ export declare const MAX_DEVICE_REMINTS = 3;
94
111
  /**
95
112
  * RUNNER-NO-OPEN — the browser-open gate.
96
113
  *
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"AAaA,OAAO,EAKL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AASrB,OAAO,KAAK,EAGV,UAAU,EACX,MAAM,YAAY,CAAC;AAUpB,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACpF,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAIlC,eAAO,MAAM,WAAW,EAAE,UAezB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACpC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,EACvC,IAAI,GAAE,iBAA8C,EAKpD,MAAM,GAAE,iBAAgE,EACxE,mBAAmB,GAAE,SAAS,MAAM,EAAO,EAK3C,QAAQ,GAAE,kBAAoD,EAC9D,KAAK,CAAC,EAAE,eAAe,GACtB,UAAU,GAAG;IACd,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,oBAAoB,EAAE,MAAM,EAAE,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,iBAAiB,CAAC;IACtC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,iBAAiB,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;IAC3D,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB,CAYA;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,GAAG,cAAc,CAAC,EACjD,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,iBAAiB,EACvB,QAAQ,EAAE,kBAAkB,EAC5B,KAAK,EAAE,eAAe,GAAG,SAAS,GACjC,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAcxC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GACtC,MAAM,EAAE,CAEV;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EACvC,mBAAmB,GAAE,SAAS,MAAM,EAAgB,GACnD,MAAM,EAAE,CAMV;AAED;;;8DAG8D;AAC9D,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAGD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB/D;AAqCD;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAEhD,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,wEAAwE;IACxE,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AASD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,kBAAuB,GAAG,MAAM,GAAG,IAAI,CAWhF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,kBAAuB,GAAG,OAAO,CAEvE;AAED,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjD;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,uBAA4B,GACpC,OAAO,CAAC,OAAO,CAAC,CASlB;AAED,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,gEAAgE;IAChE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACxC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,wBAAsB,YAAY,CAAC,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmJ5E"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
package/dist/login.js CHANGED
@@ -205,10 +205,31 @@ async function postJson(url, body) {
205
205
  /** Consecutive transient exchange failures tolerated before we give up. */
206
206
  const MAX_POLL_FAILURES = 5;
207
207
  /**
208
- * One sentence for a spent code, whether the server said so in a 200 body or in
209
- * a 404/410. Both are the same fact and deserve the same instruction.
208
+ * DEC-046 (CLI half) — how many REPLACEMENT device codes a single login will
209
+ * mint after the code on screen expires.
210
+ *
211
+ * The flow this closes: a device code lives 10 minutes, and the person holding
212
+ * the terminal is usually away from it for most of them — finding the tab,
213
+ * signing in, reading the code back. When it expired the CLI exited with
214
+ * "Run `acc-runner login` again", so the one thing they still had to do was the
215
+ * one thing the dead terminal could no longer help them do. Re-minting keeps the
216
+ * login alive and puts a fresh code exactly where they are already looking.
217
+ *
218
+ * Bounded, and bounded deliberately: unbounded re-minting turns an abandoned
219
+ * terminal into a code-minting loop against the create lane for as long as the
220
+ * process lives. Three replacements is ~40 minutes of patience, after which the
221
+ * honest reading is that nobody is coming.
222
+ */
223
+ export const MAX_DEVICE_REMINTS = 3;
224
+ /**
225
+ * The exit after the LAST replacement expires. It says what actually happened —
226
+ * how many codes were issued, and that none of them was ever entered — because
227
+ * "expired" on its own reads as the CLI's failure when in fact nothing arrived
228
+ * to bind.
210
229
  */
211
- const EXPIRED_MESSAGE = "Device code expired before sign-in completed. Run `acc-runner login` again.";
230
+ const REMINTS_EXHAUSTED_MESSAGE = `Device code expired ${MAX_DEVICE_REMINTS + 1} times without a sign-in ` +
231
+ `(${MAX_DEVICE_REMINTS} replacement codes were printed above, and none was entered). ` +
232
+ "Nothing was signed in. Run `acc-runner login` when you are ready to enter the code.";
212
233
  /**
213
234
  * RUNNER-NO-OPEN — the browser-open gate.
214
235
  *
@@ -277,10 +298,13 @@ export async function maybeOpenBrowser(url, options = {}) {
277
298
  return false;
278
299
  }
279
300
  }
280
- export async function loginCommand(options = {}) {
281
- const cfg = loadConfig();
282
- // 1. Request a device code.
283
- const start = await postJson(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/device-code/create`, {});
301
+ /**
302
+ * The "here is your code" block. Extracted for one reason: a REPLACEMENT code
303
+ * has to reach the screen byte-identically to the first one. DEC-046's drift
304
+ * list names re-minting WITHOUT printing the new code, which would leave the
305
+ * person carefully typing a code the server has already forgotten.
306
+ */
307
+ function printDeviceCode(start) {
284
308
  console.log("");
285
309
  console.log(chalk.bold("To continue, sign in with your ACC account:"));
286
310
  console.log("");
@@ -288,56 +312,119 @@ export async function loginCommand(options = {}) {
288
312
  console.log(` ${chalk.cyan("2.")} Enter code: ${chalk.bold.green(start.user_code)}`);
289
313
  console.log("");
290
314
  console.log(chalk.gray("Waiting for confirmation…"));
315
+ }
316
+ /**
317
+ * The replacement code, with the one line that explains why a second code just
318
+ * appeared.
319
+ *
320
+ * The wording is load-bearing across two surfaces. v1.49-E's `/runner/device`
321
+ * page tells the person "That code expired — codes last 10 minutes. Your
322
+ * terminal shows a new one; if it stopped instead, run `acc-runner login`." This
323
+ * is the terminal keeping that promise in the same words, so the page and the
324
+ * CLI read as one flow instead of two pieces of software disagreeing about what
325
+ * just happened.
326
+ */
327
+ function printRemintedDeviceCode(start, attempt) {
328
+ console.log("");
329
+ console.log(chalk.yellow(`That code expired — codes last 10 minutes. Here is a new one (${attempt} of ${MAX_DEVICE_REMINTS}):`));
330
+ printDeviceCode(start);
331
+ }
332
+ export async function loginCommand(options = {}) {
333
+ const cfg = loadConfig();
334
+ const base = cfg.publicUrl.replace(/\/+$/, "");
335
+ const createUrl = `${base}/api/runner/device-code/create`;
336
+ const exchangeUrl = `${base}/api/runner/device-code/exchange`;
337
+ // 1. Request a device code. `let`, because an expiry re-mints into it.
338
+ let start = await postJson(createUrl, {});
339
+ printDeviceCode(start);
291
340
  // Fire-and-forget, as before: the poll below must start immediately and must
292
341
  // never be blocked by a browser that is slow to spawn (or by the gate itself).
342
+ //
343
+ // FIRST code only. A re-mint deliberately does not re-open the browser: the
344
+ // person is already on the page (that is why they are waiting), DEC-046 has
345
+ // the page clear and focus its field for the new code, and RUNNER-NO-OPEN's
346
+ // lesson was that a side effect which reaches out onto the host needs a reason
347
+ // every time it fires. Three surprise tabs is not one.
293
348
  void maybeOpenBrowser(start.verification_url, options);
294
349
  const machine = machineIdentity();
295
350
  const hostname = os.hostname();
296
- // 2. Poll the exchange endpoint.
297
- const interval = (options.intervalSeconds ?? start.interval) * 1000;
298
- const deadline = Date.now() + (options.timeoutSeconds ?? start.expires_in) * 1000;
351
+ // 2. Poll the exchange endpoint, re-minting the code when it expires under us.
299
352
  let exchanged = null;
300
- // A transient exchange failure (pooler hiccup, cold function, 5xx) must not
301
- // abort a login whose code is still valid — poll through it and only give up
302
- // when the failures are persistent or the real TTL runs out.
303
- let consecutiveFailures = 0;
304
- let lastFailure = null;
305
- while (Date.now() < deadline) {
306
- await sleep(interval);
307
- let exchange;
308
- try {
309
- exchange = await postJson(`${cfg.publicUrl.replace(/\/+$/, "")}/api/runner/device-code/exchange`, { device_code: start.device_code, machine, hostname });
310
- }
311
- catch (err) {
312
- // DEVICE-EXCHANGE-REFUSAL: a PERMANENT refusal (beta admission, an
313
- // unresolvable org, a malformed request) must stop the loop and say what
314
- // it was. Polling it four more times cannot change the answer, and the
315
- // deadline path would then report a refusal as a timeout — the one thing
316
- // it demonstrably was not.
317
- if (err instanceof DeviceExchangeHttpError) {
318
- const verdict = classifyExchangeFailure(err.status, err.rawBody, err.body);
319
- if (verdict.kind === "expired")
320
- throw new Error(EXPIRED_MESSAGE);
321
- if (verdict.kind === "terminal")
322
- throw new Error(formatDeviceRefusal(verdict.refusal));
353
+ let remints = 0;
354
+ while (exchanged === null) {
355
+ const interval = (options.intervalSeconds ?? start.interval) * 1000;
356
+ // Re-derived per code: a replacement carries its OWN TTL, and reusing the
357
+ // first code's deadline would retire a brand-new code the moment it printed.
358
+ const deadline = Date.now() + (options.timeoutSeconds ?? start.expires_in) * 1000;
359
+ // A transient exchange failure (pooler hiccup, cold function, 5xx) must not
360
+ // abort a login whose code is still valid — poll through it and only give up
361
+ // when the failures are persistent or the real TTL runs out.
362
+ let consecutiveFailures = 0;
363
+ let lastFailure = null;
364
+ // Set by the SERVER telling us the code is spent, in a 200 body or a 404/410.
365
+ let expired = false;
366
+ while (Date.now() < deadline) {
367
+ await sleep(interval);
368
+ let exchange;
369
+ try {
370
+ exchange = await postJson(exchangeUrl, {
371
+ device_code: start.device_code,
372
+ machine,
373
+ hostname,
374
+ });
323
375
  }
324
- consecutiveFailures += 1;
325
- lastFailure = err.message;
326
- if (consecutiveFailures >= MAX_POLL_FAILURES) {
327
- throw new Error(`Device-code exchange failed ${consecutiveFailures} times in a row: ${lastFailure}`);
376
+ catch (err) {
377
+ // DEVICE-EXCHANGE-REFUSAL: a PERMANENT refusal (beta admission, an
378
+ // unresolvable org, a malformed request) must stop the loop and say what
379
+ // it was. Polling it four more times cannot change the answer, and the
380
+ // deadline path would then report a refusal as a timeout — the one thing
381
+ // it demonstrably was not.
382
+ if (err instanceof DeviceExchangeHttpError) {
383
+ const verdict = classifyExchangeFailure(err.status, err.rawBody, err.body);
384
+ // A spent code on a 404/410 is the same fact as a 200 `expired` body,
385
+ // so it takes the same re-mint path rather than ending the login.
386
+ if (verdict.kind === "expired") {
387
+ expired = true;
388
+ break;
389
+ }
390
+ if (verdict.kind === "terminal")
391
+ throw new Error(formatDeviceRefusal(verdict.refusal));
392
+ }
393
+ consecutiveFailures += 1;
394
+ lastFailure = err.message;
395
+ if (consecutiveFailures >= MAX_POLL_FAILURES) {
396
+ throw new Error(`Device-code exchange failed ${consecutiveFailures} times in a row: ${lastFailure}`);
397
+ }
398
+ continue;
399
+ }
400
+ consecutiveFailures = 0;
401
+ if (exchange.status === "expired") {
402
+ expired = true;
403
+ break;
404
+ }
405
+ if (exchange.status === "ok") {
406
+ exchanged = exchange;
407
+ break;
328
408
  }
329
- continue;
330
- }
331
- consecutiveFailures = 0;
332
- if (exchange.status === "expired") {
333
- throw new Error(EXPIRED_MESSAGE);
334
409
  }
335
- if (exchange.status === "ok") {
336
- exchanged = exchange;
410
+ if (exchanged !== null)
337
411
  break;
412
+ // Only a SERVER-reported expiry re-mints. Running the local deadline out
413
+ // without ever being TOLD the code was spent is a different fact — an
414
+ // unreachable or silent exchange lane — and it keeps its own sentence.
415
+ if (!expired) {
416
+ throw new Error("Device code timed out before sign-in completed.");
417
+ }
418
+ if (remints >= MAX_DEVICE_REMINTS) {
419
+ throw new Error(REMINTS_EXHAUSTED_MESSAGE);
338
420
  }
421
+ remints += 1;
422
+ start = await postJson(createUrl, {});
423
+ printRemintedDeviceCode(start, remints);
339
424
  }
340
- if (!exchanged || exchanged.status !== "ok") {
425
+ // Narrows the 2xx union to the success variant for everything below; the loop
426
+ // only ever assigns an `ok` exchange, so this cannot fire.
427
+ if (exchanged.status !== "ok") {
341
428
  throw new Error("Device code timed out before sign-in completed.");
342
429
  }
343
430
  console.log(chalk.green(`✓ Logged in as ${exchanged.email ?? exchanged.user_id}`));
package/dist/login.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../src/login.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@ import { type EngineCapability, type MachineCapabilitySnapshot, type ToolCapabil
2
2
  /**
3
3
  * Credential SHAPES a developer machine actually holds, plus the two generic
4
4
  * carriers. Mirrors the regexes in `acc.machine_capability_material_free`
5
- * (0310 §2); `tests/unit/t1785160000000035-machine-capabilities.test.ts` asserts
5
+ * (0315 §2); `tests/unit/t1785160000000035-machine-capabilities.test.ts` asserts
6
6
  * the mirror by running the same vectors through both spellings.
7
7
  */
8
8
  export declare const CREDENTIAL_SHAPES: readonly RegExp[];
@@ -11,7 +11,7 @@
11
11
  * to capture can ride along. A rebuild rather than a filter: a field nobody
12
12
  * whitelisted is absent from the output by construction, not removed by a
13
13
  * rule somebody has to remember to write.
14
- * 2. `acc._normalize_machine_capability_{tools,engines}` (migration 0310 §6)
14
+ * 2. `acc._normalize_machine_capability_{tools,engines}` (migration 0315 §6)
15
15
  * does the same rebuild server-side, so a rogue or stale runner build cannot
16
16
  * widen the record.
17
17
  * 3. Two CHECK constraints on `acc.machine_capabilities` reject anything SHAPED
@@ -31,7 +31,7 @@ import { HOST_TOOLS, } from "./types.js";
31
31
  /**
32
32
  * Credential SHAPES a developer machine actually holds, plus the two generic
33
33
  * carriers. Mirrors the regexes in `acc.machine_capability_material_free`
34
- * (0310 §2); `tests/unit/t1785160000000035-machine-capabilities.test.ts` asserts
34
+ * (0315 §2); `tests/unit/t1785160000000035-machine-capabilities.test.ts` asserts
35
35
  * the mirror by running the same vectors through both spellings.
36
36
  */
37
37
  export const CREDENTIAL_SHAPES = [
@@ -11,7 +11,7 @@
11
11
  * There is deliberately no field that could hold a token, and the field set is
12
12
  * CLOSED on three sides: `sanitizeSnapshot` (redact.ts) rebuilds every record
13
13
  * from these fields before it leaves the host,
14
- * `acc._normalize_machine_capability_{tools,engines}` (migration 0310) rebuilds
14
+ * `acc._normalize_machine_capability_{tools,engines}` (migration 0315) rebuilds
15
15
  * it again from the same whitelist server-side, and two CHECK constraints reject
16
16
  * anything shaped like a credential at rest. Adding a field here without adding
17
17
  * it to BOTH whitelists means the field is silently dropped, which is the
@@ -22,7 +22,7 @@
22
22
  */
23
23
  import type { EngineAuthMode, EnginePlanHint } from "../engines/types.js";
24
24
  /**
25
- * The host tools ACC probes. Mirrors `acc.machine_capability_tools()` (0310 §1)
25
+ * The host tools ACC probes. Mirrors `acc.machine_capability_tools()` (0315 §1)
26
26
  * and `HOST_TOOLS` in api/_lib/machine-capabilities.ts — the unit suite asserts
27
27
  * all three agree, so a tool added on one side cannot silently be dropped by
28
28
  * the writer's whitelist on another.
@@ -103,7 +103,7 @@ export interface MachineCapabilitySnapshot {
103
103
  * what `recordMachineCapabilities` sends to
104
104
  * `acc.record_machine_capabilities` — note there is no timestamp: `probed_at` is
105
105
  * server time, because a host with a wrong clock would otherwise win every
106
- * last-writer-wins comparison forever (0310 §4).
106
+ * last-writer-wins comparison forever (0315 §4).
107
107
  */
108
108
  export interface MachineCapabilityReport {
109
109
  snapshot: MachineCapabilitySnapshot;
@@ -1,5 +1,5 @@
1
1
  /**
2
- * The host tools ACC probes. Mirrors `acc.machine_capability_tools()` (0310 §1)
2
+ * The host tools ACC probes. Mirrors `acc.machine_capability_tools()` (0315 §1)
3
3
  * and `HOST_TOOLS` in api/_lib/machine-capabilities.ts — the unit suite asserts
4
4
  * all three agree, so a tool added on one side cannot silently be dropped by
5
5
  * the writer's whitelist on another.
@@ -5,6 +5,8 @@ import { type MachineCommandTransport } from "./transport.js";
5
5
  export declare const MACHINE_CONSOLE_ENABLED_ENV = "ACC_RUNNER_MACHINE_CONSOLE";
6
6
  export declare const DEFAULT_MACHINE_POLL_MS = 1000;
7
7
  export declare const DEFAULT_MACHINE_WALL_MS = 120000;
8
+ /** Grace period for stdio to drain after "exit"; see drainStdio. */
9
+ export declare const STDIO_DRAIN_MS = 2000;
8
10
  export interface MachineConsoleHandle {
9
11
  stop(): Promise<void>;
10
12
  refreshClient(client: RunnerSupabaseClient): void;
@@ -17,6 +19,8 @@ export interface MachineConsoleDeps {
17
19
  supabase: RunnerSupabaseClient;
18
20
  pollMs?: number;
19
21
  wallClockMs?: number;
22
+ /** Override the post-exit stdio drain grace period (tests). */
23
+ stdioDrainMs?: number;
20
24
  onLog?: (line: string) => void;
21
25
  spawnCommand?: typeof spawn;
22
26
  transport?: MachineCommandTransport;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machine-console/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAC7C,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAG/C,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,IAAI,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEnF;AAQD,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc9E;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAKzF;AA+BD,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAgK/G;AAED,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACjG,mBAAmB,8BAA8B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machine-console/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAGjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,OAAO,EAIL,KAAK,uBAAuB,EAC7B,MAAM,gBAAgB,CAAC;AAExB,eAAO,MAAM,2BAA2B,+BAA+B,CAAC;AACxE,eAAO,MAAM,uBAAuB,OAAQ,CAAC;AAC7C,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAC/C,oEAAoE;AACpE,eAAO,MAAM,cAAc,OAAQ,CAAC;AAGpC,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,aAAa,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClD,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,cAAc,IAAI,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,YAAY,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+DAA+D;IAC/D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC;IAC5B,SAAS,CAAC,EAAE,uBAAuB,CAAC;CACrC;AAED,wBAAgB,qBAAqB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEnF;AAQD,mEAAmE;AACnE,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAc9E;AAED,oEAAoE;AACpE,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAAC,UAAU,CAKzF;AA2ED,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAmK/G;AAED,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EACL,4BAA4B,EAC5B,+BAA+B,GAChC,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,8BAA8B,EAC9B,mBAAmB,EACnB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACjG,mBAAmB,8BAA8B,CAAC"}