@claudexor/cli 3.0.4 → 3.1.1

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 (160) hide show
  1. package/dist/about-command.d.ts +32 -0
  2. package/dist/about-command.d.ts.map +1 -0
  3. package/dist/about-command.js +40 -0
  4. package/dist/about-command.js.map +1 -0
  5. package/dist/acp-auth-command.d.ts +3 -0
  6. package/dist/acp-auth-command.d.ts.map +1 -0
  7. package/dist/acp-auth-command.js +18 -0
  8. package/dist/acp-auth-command.js.map +1 -0
  9. package/dist/acp-auth.d.ts +13 -0
  10. package/dist/acp-auth.d.ts.map +1 -0
  11. package/dist/acp-auth.js +47 -0
  12. package/dist/acp-auth.js.map +1 -0
  13. package/dist/acp-surface-runner.d.ts +12 -0
  14. package/dist/acp-surface-runner.d.ts.map +1 -1
  15. package/dist/acp-surface-runner.js +113 -11
  16. package/dist/acp-surface-runner.js.map +1 -1
  17. package/dist/bridge-serve.d.ts.map +1 -1
  18. package/dist/bridge-serve.js +2 -0
  19. package/dist/bridge-serve.js.map +1 -1
  20. package/dist/capabilities.d.ts.map +1 -1
  21. package/dist/capabilities.js +2 -1
  22. package/dist/capabilities.js.map +1 -1
  23. package/dist/claudexord.d.ts +21 -0
  24. package/dist/claudexord.d.ts.map +1 -1
  25. package/dist/claudexord.js +105 -21
  26. package/dist/claudexord.js.map +1 -1
  27. package/dist/cli-error.d.ts +97 -0
  28. package/dist/cli-error.d.ts.map +1 -0
  29. package/dist/cli-error.js +308 -0
  30. package/dist/cli-error.js.map +1 -0
  31. package/dist/cli-io.d.ts +9 -0
  32. package/dist/cli-io.d.ts.map +1 -1
  33. package/dist/cli-io.js +10 -1
  34. package/dist/cli-io.js.map +1 -1
  35. package/dist/cli.js +110 -116
  36. package/dist/cli.js.map +1 -1
  37. package/dist/codex-device-login.d.ts +117 -0
  38. package/dist/codex-device-login.d.ts.map +1 -0
  39. package/dist/codex-device-login.js +227 -0
  40. package/dist/codex-device-login.js.map +1 -0
  41. package/dist/command-flags.d.ts +0 -6
  42. package/dist/command-flags.d.ts.map +1 -1
  43. package/dist/command-flags.js +12 -4
  44. package/dist/command-flags.js.map +1 -1
  45. package/dist/command-help.d.ts +46 -0
  46. package/dist/command-help.d.ts.map +1 -0
  47. package/dist/command-help.js +92 -0
  48. package/dist/command-help.js.map +1 -0
  49. package/dist/command-registry.d.ts +2 -0
  50. package/dist/command-registry.d.ts.map +1 -1
  51. package/dist/command-registry.js +14 -7
  52. package/dist/command-registry.js.map +1 -1
  53. package/dist/control-services.d.ts +54 -27
  54. package/dist/control-services.d.ts.map +1 -1
  55. package/dist/control-services.js +56 -30
  56. package/dist/control-services.js.map +1 -1
  57. package/dist/credential-commands.d.ts.map +1 -1
  58. package/dist/credential-commands.js +44 -1
  59. package/dist/credential-commands.js.map +1 -1
  60. package/dist/daemon-outcome.d.ts +24 -0
  61. package/dist/daemon-outcome.d.ts.map +1 -0
  62. package/dist/daemon-outcome.js +59 -0
  63. package/dist/daemon-outcome.js.map +1 -0
  64. package/dist/daemon-run.d.ts +23 -4
  65. package/dist/daemon-run.d.ts.map +1 -1
  66. package/dist/daemon-run.js +66 -27
  67. package/dist/daemon-run.js.map +1 -1
  68. package/dist/delegation-belt-descriptor.d.ts +31 -13
  69. package/dist/delegation-belt-descriptor.d.ts.map +1 -1
  70. package/dist/delegation-belt-descriptor.js +43 -15
  71. package/dist/delegation-belt-descriptor.js.map +1 -1
  72. package/dist/live.d.ts +13 -1
  73. package/dist/live.d.ts.map +1 -1
  74. package/dist/live.js +56 -7
  75. package/dist/live.js.map +1 -1
  76. package/dist/mcp-runner.d.ts.map +1 -1
  77. package/dist/mcp-runner.js +60 -6
  78. package/dist/mcp-runner.js.map +1 -1
  79. package/dist/native-login.d.ts +10 -1
  80. package/dist/native-login.d.ts.map +1 -1
  81. package/dist/native-login.js +32 -10
  82. package/dist/native-login.js.map +1 -1
  83. package/dist/ops-commands.d.ts +5 -1
  84. package/dist/ops-commands.d.ts.map +1 -1
  85. package/dist/ops-commands.js +45 -52
  86. package/dist/ops-commands.js.map +1 -1
  87. package/dist/plan-implement-readiness.d.ts +32 -0
  88. package/dist/plan-implement-readiness.d.ts.map +1 -0
  89. package/dist/plan-implement-readiness.js +51 -0
  90. package/dist/plan-implement-readiness.js.map +1 -0
  91. package/dist/plugins.d.ts.map +1 -1
  92. package/dist/plugins.js +73 -20
  93. package/dist/plugins.js.map +1 -1
  94. package/dist/project-command.d.ts +15 -0
  95. package/dist/project-command.d.ts.map +1 -1
  96. package/dist/project-command.js +75 -20
  97. package/dist/project-command.js.map +1 -1
  98. package/dist/quota-command.d.ts.map +1 -1
  99. package/dist/quota-command.js +2 -6
  100. package/dist/quota-command.js.map +1 -1
  101. package/dist/release-command.d.ts.map +1 -1
  102. package/dist/release-command.js +31 -6
  103. package/dist/release-command.js.map +1 -1
  104. package/dist/release.d.ts +41 -10
  105. package/dist/release.d.ts.map +1 -1
  106. package/dist/release.js +70 -48
  107. package/dist/release.js.map +1 -1
  108. package/dist/repo-asset-authority.d.ts +89 -0
  109. package/dist/repo-asset-authority.d.ts.map +1 -0
  110. package/dist/repo-asset-authority.js +175 -0
  111. package/dist/repo-asset-authority.js.map +1 -0
  112. package/dist/retry-command.d.ts +15 -0
  113. package/dist/retry-command.d.ts.map +1 -1
  114. package/dist/retry-command.js +7 -4
  115. package/dist/retry-command.js.map +1 -1
  116. package/dist/review-command.d.ts.map +1 -1
  117. package/dist/review-command.js +2 -6
  118. package/dist/review-command.js.map +1 -1
  119. package/dist/reviewer-options.d.ts +11 -1
  120. package/dist/reviewer-options.d.ts.map +1 -1
  121. package/dist/reviewer-options.js +24 -9
  122. package/dist/reviewer-options.js.map +1 -1
  123. package/dist/run-options.d.ts.map +1 -1
  124. package/dist/run-options.js +13 -1
  125. package/dist/run-options.js.map +1 -1
  126. package/dist/settings-command.d.ts.map +1 -1
  127. package/dist/settings-command.js +2 -6
  128. package/dist/settings-command.js.map +1 -1
  129. package/dist/settings-service.d.ts +101 -10
  130. package/dist/settings-service.d.ts.map +1 -1
  131. package/dist/settings-service.js +201 -12
  132. package/dist/settings-service.js.map +1 -1
  133. package/dist/setup-job-store.d.ts +16 -5
  134. package/dist/setup-job-store.d.ts.map +1 -1
  135. package/dist/setup-job-store.js +24 -4
  136. package/dist/setup-job-store.js.map +1 -1
  137. package/dist/setup-jobs.d.ts +14 -4
  138. package/dist/setup-jobs.d.ts.map +1 -1
  139. package/dist/setup-jobs.js +204 -23
  140. package/dist/setup-jobs.js.map +1 -1
  141. package/dist/setup-login-inline.d.ts +71 -0
  142. package/dist/setup-login-inline.d.ts.map +1 -0
  143. package/dist/setup-login-inline.js +207 -0
  144. package/dist/setup-login-inline.js.map +1 -0
  145. package/dist/setup-login-protocol.d.ts +3 -2
  146. package/dist/setup-login-protocol.d.ts.map +1 -1
  147. package/dist/setup-login-protocol.js +16 -1
  148. package/dist/setup-login-protocol.js.map +1 -1
  149. package/dist/setup-login-runner.d.ts +9 -0
  150. package/dist/setup-login-runner.d.ts.map +1 -1
  151. package/dist/setup-login-runner.js +212 -5
  152. package/dist/setup-login-runner.js.map +1 -1
  153. package/dist/thread-delivery.d.ts.map +1 -1
  154. package/dist/thread-delivery.js +3 -1
  155. package/dist/thread-delivery.js.map +1 -1
  156. package/dist/thread-execution-workspace.d.ts +22 -0
  157. package/dist/thread-execution-workspace.d.ts.map +1 -0
  158. package/dist/thread-execution-workspace.js +21 -0
  159. package/dist/thread-execution-workspace.js.map +1 -0
  160. package/package.json +23 -23
@@ -63,6 +63,7 @@ export class SetupJobStore {
63
63
  runnerState: join(dir, "runner-state.json"),
64
64
  runnerResult: join(dir, "runner-result.json"),
65
65
  runnerPermit: join(dir, "runner-permit.json"),
66
+ runnerDeviceCode: join(dir, "runner-devicecode.json"),
66
67
  command: join(dir, "login.command"),
67
68
  };
68
69
  }
@@ -117,11 +118,30 @@ export class SetupJobStore {
117
118
  this.rememberBinding(binding);
118
119
  return cloneJob(stored);
119
120
  }
120
- update(jobId, patch) {
121
+ update(jobId, patch, idempotency) {
121
122
  const current = this.jobs.get(jobId);
122
123
  if (!current)
123
124
  throw Object.assign(new Error("setup job not found"), { status: 404 });
124
- return this.persist(reduceSetupJob(current, { ...current, ...patch }));
125
+ // QA-075: an additive extension binds its Idempotency-Key atomically with
126
+ // the state change (one durable `setup.job.saved` record carries both), so
127
+ // replay after restart returns the same job without re-extending.
128
+ const binding = idempotency
129
+ ? this.newBinding(jobId, idempotency, "setup.job.extend")
130
+ : undefined;
131
+ return this.persist(reduceSetupJob(current, { ...current, ...patch }), binding);
132
+ }
133
+ /** QA-075: resolve a prior extension bound to this Idempotency-Key. Returns
134
+ * the already-extended job (no further +15) on exact replay, throws on a
135
+ * key reused with a different request, null when the key is new. */
136
+ resolveExtend(idempotency) {
137
+ this.assertAvailable();
138
+ const binding = this.newBinding("pending", idempotency, "setup.job.extend");
139
+ const prior = this.createByKey.get(binding.keyDigest);
140
+ if (!prior)
141
+ return null;
142
+ if (prior.requestDigest !== binding.requestDigest)
143
+ throw idempotencyConflict();
144
+ return this.status(prior.jobId);
125
145
  }
126
146
  status(jobId) {
127
147
  this.assertAvailable();
@@ -259,7 +279,7 @@ export class SetupJobStore {
259
279
  // Partition-level recovery is acknowledged only by the global recovery
260
280
  // coordinator after every registered projection has validated the prefix.
261
281
  }
262
- newBinding(jobId, input) {
282
+ newBinding(jobId, input, operation = "setup.job.create") {
263
283
  if (!input.key.trim() || input.key.length > 256) {
264
284
  throw Object.assign(new Error("invalid Idempotency-Key"), { status: 400 });
265
285
  }
@@ -267,7 +287,7 @@ export class SetupJobStore {
267
287
  keyDigest: hashJson({
268
288
  client: input.client,
269
289
  partition: "global",
270
- operation: "setup.job.create",
290
+ operation,
271
291
  key: input.key,
272
292
  }),
273
293
  requestDigest: hashJson(input.request),
@@ -1 +1 @@
1
- {"version":3,"file":"setup-job-store.js","sourceRoot":"","sources":["../src/setup-job-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-job-store.js","sourceRoot":"","sources":["../src/setup-job-store.ts"],"names":[],"mappings":"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"}
@@ -95,8 +95,8 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
95
95
  } | undefined;
96
96
  outcome?: {
97
97
  reason: "completed" | "interrupted_unknown" | "interrupted" | "timed_out" | "not_supported" | "launch_failed" | "command_failed" | "auth_not_ready" | "capability_verification_failed" | "credential_route_mismatch" | "cancelled_by_user" | "cancelled_on_restart" | "termination_unconfirmed";
98
- exitCode?: number | null | undefined;
99
98
  signal?: string | null | undefined;
99
+ exitCode?: number | null | undefined;
100
100
  } | undefined;
101
101
  deadlineAt?: string | undefined;
102
102
  authCapability?: {
@@ -229,12 +229,12 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
229
229
  nativeCommand?: {
230
230
  commandDigest: string;
231
231
  finishedAt: string;
232
+ signal: string | null;
232
233
  executionId: string;
233
234
  manifestDigest: string;
234
235
  permitIssuedAt: string | null;
235
236
  commandStarted: boolean;
236
237
  exitCode: number | null;
237
- signal: string | null;
238
238
  errorCode?: "permit_timeout" | "spawn_failed" | "device_auth_unsupported" | undefined;
239
239
  } | undefined;
240
240
  terminationReconciliation?: {
@@ -242,6 +242,11 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
242
242
  observedAt: string;
243
243
  } | undefined;
244
244
  };
245
+ deviceCode?: {
246
+ flow: "chatgptDeviceCode" | "chatgpt";
247
+ verificationUrl: string;
248
+ userCode: string;
249
+ } | undefined;
245
250
  };
246
251
  events(input: unknown): {
247
252
  message: string;
@@ -286,8 +291,8 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
286
291
  } | undefined;
287
292
  outcome?: {
288
293
  reason: "completed" | "interrupted_unknown" | "interrupted" | "timed_out" | "not_supported" | "launch_failed" | "command_failed" | "auth_not_ready" | "capability_verification_failed" | "credential_route_mismatch" | "cancelled_by_user" | "cancelled_on_restart" | "termination_unconfirmed";
289
- exitCode?: number | null | undefined;
290
294
  signal?: string | null | undefined;
295
+ exitCode?: number | null | undefined;
291
296
  } | undefined;
292
297
  deadlineAt?: string | undefined;
293
298
  authCapability?: {
@@ -420,12 +425,12 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
420
425
  nativeCommand?: {
421
426
  commandDigest: string;
422
427
  finishedAt: string;
428
+ signal: string | null;
423
429
  executionId: string;
424
430
  manifestDigest: string;
425
431
  permitIssuedAt: string | null;
426
432
  commandStarted: boolean;
427
433
  exitCode: number | null;
428
- signal: string | null;
429
434
  errorCode?: "permit_timeout" | "spawn_failed" | "device_auth_unsupported" | undefined;
430
435
  } | undefined;
431
436
  terminationReconciliation?: {
@@ -433,6 +438,11 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
433
438
  observedAt: string;
434
439
  } | undefined;
435
440
  };
441
+ deviceCode?: {
442
+ flow: "chatgptDeviceCode" | "chatgpt";
443
+ verificationUrl: string;
444
+ userCode: string;
445
+ } | undefined;
436
446
  }[];
437
447
  cancel(input: unknown): Promise<ControlSetupJob>;
438
448
  reconcile(input: unknown): ControlSetupJob;
@@ -1 +1 @@
1
- {"version":3,"file":"setup-jobs.d.ts","sourceRoot":"","sources":["../src/setup-jobs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-jobs.d.ts","sourceRoot":"","sources":["../src/setup-jobs.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { spawn } from "node:child_process";
2
2
  import { randomUUID } from "node:crypto";
3
- import { chmodSync, writeFileSync } from "node:fs";
3
+ import { chmodSync, existsSync, rmSync, writeFileSync } from "node:fs";
4
4
  import { isAbsolute, join } from "node:path";
5
5
  import { AuthCapabilityVerifier, ProcessGroupService, parseProcessGroupHandle, } from "@claudexor/core";
6
6
  import { daemonDir } from "@claudexor/daemon";
@@ -10,7 +10,7 @@ import * as NativeLogin from "./native-login.js";
10
10
  import { SETUP_PROFILES, processGroupFromJob, profileDoctorProbe, resolveProfileBinding, resolveSetupLoginRunnerPath, shellQuote, stateMatchesDurableExecution, waitWithAbort, withAbortAndTimeout, } from "./setup-job-support.js";
11
11
  import { buildGateway } from "./registry.js";
12
12
  import { ACTIVE_SETUP_STATES, SetupJobStore, TERMINAL_SETUP_STATES } from "./setup-job-store.js";
13
- import { SETUP_LOGIN_PROTOCOL_VERSION, atomicPrivateJson, captureExecutableEvidence, commandDigest, readLoginManifest, readRunnerResult, readRunnerState, sealLoginManifest, verifyExecutableEvidence, } from "./setup-login-protocol.js";
13
+ import { SETUP_LOGIN_PROTOCOL_VERSION, atomicPrivateJson, captureExecutableEvidence, commandDigest, readLoginManifest, readRunnerDeviceCode, readRunnerResult, readRunnerState, sealLoginManifest, verifyExecutableEvidence, } from "./setup-login-protocol.js";
14
14
  import { SetupSupervisor } from "./setup-supervisor.js";
15
15
  const NO_PROJECT_ROOT = noProjectRepoRoot();
16
16
  const LOGIN_EXTENSION_MS = 15 * 60_000;
@@ -62,8 +62,54 @@ export function createSetupJobManager(opts = {}) {
62
62
  function iso() {
63
63
  return now().toISOString();
64
64
  }
65
- function update(jobId, patch) {
66
- return store.update(jobId, patch);
65
+ /** A device-code (app-server) login is identified by its authorized argv —
66
+ * the sealed manifest args carry `app-server` for that flow only. */
67
+ function isDeviceCodeJob(job) {
68
+ return job.authorization?.args.includes("app-server") ?? false;
69
+ }
70
+ function awaitingUserMessage(job) {
71
+ return isDeviceCodeJob(job)
72
+ ? `Complete ${job.harness} sign-in: open the URL and enter the one-time code shown in Claudexor.`
73
+ : `Complete ${job.harness} native login in Terminal.`;
74
+ }
75
+ /** The transient device-code disclosure the runner wrote, projected at READ
76
+ * time onto a snapshot/event. Never journaled: only surfaced while the login
77
+ * is genuinely awaiting the user (the sidecar is removed on terminalization).
78
+ * The one-time userCode rides this projection only (INV-062 / D-17). */
79
+ function projectDeviceCode(job) {
80
+ if (!ACTIVE_SETUP_STATES.has(job.state) || job.phase !== "awaiting_user")
81
+ return undefined;
82
+ if (!isDeviceCodeJob(job) || !job.authorization)
83
+ return undefined;
84
+ let sidecar;
85
+ try {
86
+ sidecar = readRunnerDeviceCode(store.paths(job.jobId).runnerDeviceCode);
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ if (!sidecar ||
92
+ sidecar.jobId !== job.jobId ||
93
+ sidecar.executionId !== job.authorization.executionId)
94
+ return undefined;
95
+ return {
96
+ flow: sidecar.flow,
97
+ verificationUrl: sidecar.verificationUrl,
98
+ userCode: sidecar.userCode,
99
+ };
100
+ }
101
+ /** Remove the transient device-code sidecar once a login is terminal so the
102
+ * one-time code stops being projected. Best-effort; the journal is authority. */
103
+ function removeDeviceCodeSidecar(jobId) {
104
+ try {
105
+ rmSync(store.paths(jobId).runnerDeviceCode, { force: true });
106
+ }
107
+ catch {
108
+ /* best-effort; the code is invalid once terminal regardless */
109
+ }
110
+ }
111
+ function update(jobId, patch, idempotency) {
112
+ return store.update(jobId, patch, idempotency);
67
113
  }
68
114
  function log(jobId, line) {
69
115
  store.appendLog(jobId, line);
@@ -89,6 +135,9 @@ export function createSetupJobManager(opts = {}) {
89
135
  message,
90
136
  ...(command ? { command } : {}),
91
137
  });
138
+ // The transient device-code disclosure is invalid once terminal — drop the
139
+ // sidecar so its one-time code stops being projected (INV-062 / D-17).
140
+ removeDeviceCodeSidecar(jobId);
92
141
  logAfterMutation(jobId, message);
93
142
  return done;
94
143
  }
@@ -393,9 +442,13 @@ export function createSetupJobManager(opts = {}) {
393
442
  if (job.phase === "launching") {
394
443
  update(jobId, {
395
444
  phase: "awaiting_user",
396
- message: `Complete ${job.harness} native login in Terminal.`,
445
+ message: awaitingUserMessage(job),
397
446
  });
398
447
  }
448
+ // Armed for launching AND already-awaiting_user adoption (a successor
449
+ // daemon adopting a runner whose code sidecar has not landed yet —
450
+ // round-7 sol critical); the registry makes repeats no-ops.
451
+ armDeviceCodeDisclosureWatcher(jobId);
399
452
  }
400
453
  async function consumeLoginResult(jobId, result) {
401
454
  let job = store.status(jobId);
@@ -420,8 +473,9 @@ export function createSetupJobManager(opts = {}) {
420
473
  job = persistNativeCommandOutcome(jobId, result);
421
474
  if (!result.commandStarted) {
422
475
  if (result.errorCode === "device_auth_unsupported") {
423
- finish(jobId, "not_supported", "not_supported", `${job.harness} CLI does not support device-code login (--device-auth needs codex >= 0.46.0); ` +
424
- `upgrade the codex CLI, or retry with \`claudexor auth login codex --browser-redirect\`.`);
476
+ finish(jobId, "not_supported", "not_supported", `${job.harness} does not expose typed device-code auth over its app-server ` +
477
+ `(upgrade the codex CLI), or retry the legacy Terminal flow with ` +
478
+ "`claudexor auth login codex --browser-redirect`.");
425
479
  return;
426
480
  }
427
481
  finish(jobId, "failed", "launch_failed", result.errorCode === "permit_timeout"
@@ -436,10 +490,12 @@ export function createSetupJobManager(opts = {}) {
436
490
  });
437
491
  return;
438
492
  }
439
- // R6: a failed device-auth flow ALWAYS carries the toggle remedy — the
440
- // vendor's rejection prose is not classified (no regex governance), the
441
- // remedy is keyed deterministically on the authorized flow itself.
442
- const deviceAuthRemedy = job.authorization?.args.includes("--device-auth")
493
+ // R6: a failed device-code / device-auth flow ALWAYS carries the toggle
494
+ // remedy — the vendor's rejection prose is not classified (no regex
495
+ // governance), the remedy is keyed deterministically on the authorized flow
496
+ // itself (the `--device-auth` Terminal flow or the app-server device-code
497
+ // flow, whose argv carries `app-server`).
498
+ const deviceAuthRemedy = job.authorization?.args.includes("--device-auth") || isDeviceCodeJob(job)
443
499
  ? " If the sign-in page rejected your one-time code, enable ChatGPT → Settings → Security → " +
444
500
  '"Allow device code login" and retry, or use `claudexor auth login codex --browser-redirect`.'
445
501
  : "";
@@ -520,13 +576,54 @@ export function createSetupJobManager(opts = {}) {
520
576
  remaining -= step;
521
577
  }
522
578
  }
579
+ /** D-17 disclosure race: awaiting_user flips before the one-time code
580
+ * sidecar exists, and a sidecar write is journal-less — SSE subscribers
581
+ * attached at the flip would never learn the code arrived. Armed at EVERY
582
+ * awaiting_user flip (create AND reconcile-adopt paths, one owner): watch
583
+ * for the sidecar (bounded by the job deadline) and bump ONE message event;
584
+ * the read-time projection then overlays the code as designed. */
585
+ const armedDisclosureWatchers = new Set();
586
+ function armDeviceCodeDisclosureWatcher(jobId) {
587
+ const job = store.status(jobId);
588
+ if (!isDeviceCodeJob(job))
589
+ return;
590
+ // Idempotent: create, permit-flip, and reconcile-adopt may each arm.
591
+ if (armedDisclosureWatchers.has(jobId))
592
+ return;
593
+ armedDisclosureWatchers.add(jobId);
594
+ const disclosurePath = store.paths(jobId).runnerDeviceCode;
595
+ const deadline = job.deadlineAt ? Date.parse(job.deadlineAt) : now().getTime() + 60_000;
596
+ const watch = () => {
597
+ let current;
598
+ try {
599
+ current = store.status(jobId);
600
+ }
601
+ catch {
602
+ return; // journal closed (shutdown/restart) — the successor re-arms
603
+ }
604
+ if (!ACTIVE_SETUP_STATES.has(current.state) || current.phase === "cancelling")
605
+ return;
606
+ if (existsSync(disclosurePath)) {
607
+ if (current.phase === "awaiting_user") {
608
+ update(jobId, {
609
+ message: `One-time code ready — enter it at the ${current.harness} verification page (shown in Claudexor).`,
610
+ });
611
+ }
612
+ return;
613
+ }
614
+ if (now().getTime() < deadline)
615
+ setTimeout(watch, 300).unref();
616
+ };
617
+ setTimeout(watch, 300).unref();
618
+ }
523
619
  function markAwaitingUser(jobId) {
524
620
  const current = store.status(jobId);
525
621
  if (current.phase === "launching") {
526
622
  update(jobId, {
527
623
  phase: "awaiting_user",
528
- message: `Complete ${current.harness} native login in Terminal.`,
624
+ message: awaitingUserMessage(current),
529
625
  });
626
+ armDeviceCodeDisclosureWatcher(jobId);
530
627
  }
531
628
  }
532
629
  async function monitorLogin(jobId) {
@@ -658,7 +755,11 @@ export function createSetupJobManager(opts = {}) {
658
755
  }
659
756
  }
660
757
  function startObservableLogin(job, spec, profileConfigDir) {
661
- if (platform !== "darwin") {
758
+ const deviceCode = spec.loginMode === "device_code";
759
+ // The device-code flow is driven by the daemon-hosted app-server runner and
760
+ // needs no Terminal, so it is not macOS-gated. The legacy Terminal handoff
761
+ // stays macOS-only.
762
+ if (!deviceCode && platform !== "darwin") {
662
763
  return finish(job.jobId, "failed", "launch_failed", `Terminal-handoff login is macOS-only. Run it yourself, then recheck Harness Doctor: ${spec.displayCommand}`, {}, spec.displayCommand);
663
764
  }
664
765
  try {
@@ -678,6 +779,16 @@ export function createSetupJobManager(opts = {}) {
678
779
  // Present ONLY on profile jobs: absent keeps pre-upgrade manifests'
679
780
  // sealed digests valid (the field is optional, never defaulted).
680
781
  ...(profileConfigDir ? { profileConfigDir } : {}),
782
+ // D-17 device-code (app-server) login: the runner hosts the app-server
783
+ // and writes the transient disclosure sidecar. Optional/undefaulted so
784
+ // Terminal manifests keep their sealed digest.
785
+ ...(deviceCode
786
+ ? {
787
+ loginMode: "device_code",
788
+ appServerFlow: spec.appServerFlow,
789
+ deviceCodePath: paths.runnerDeviceCode,
790
+ }
791
+ : {}),
681
792
  statePath: paths.runnerState,
682
793
  resultPath: paths.runnerResult,
683
794
  permitPath: paths.runnerPermit,
@@ -686,6 +797,47 @@ export function createSetupJobManager(opts = {}) {
686
797
  commandDigest: authorizedCommandDigest,
687
798
  });
688
799
  atomicPrivateJson(paths.manifest, manifest);
800
+ if (deviceCode) {
801
+ // D-17 primary flow: launch the app-server runner DETACHED (no Terminal,
802
+ // no login.command script). The runner survives daemon restart exactly
803
+ // like the Terminal runner (same detached process group + sidecars);
804
+ // reconcile/cancel/timeout/extend semantics are unchanged.
805
+ const waiting = update(job.jobId, {
806
+ state: "waiting_for_input",
807
+ phase: "launching",
808
+ deadlineAt: new Date(now().getTime() + loginTimeoutMs).toISOString(),
809
+ startedAt: iso(),
810
+ command: spec.displayCommand,
811
+ authorization: {
812
+ executionId,
813
+ executable,
814
+ args: [...spec.args],
815
+ commandDigest: authorizedCommandDigest,
816
+ manifestDigest: manifest.manifestDigest,
817
+ },
818
+ message: `Starting ${job.harness} device-code sign-in over the app-server (no Terminal).`,
819
+ });
820
+ log(job.jobId, `device-code runner: ${nodePath} ${runnerPath} ${paths.manifest}`);
821
+ const runner = spawnProcess(nodePath, [runnerPath, paths.manifest], {
822
+ detached: true,
823
+ stdio: "ignore",
824
+ });
825
+ const failLaunch = (detail) => {
826
+ if (!["idle", "healthy"].includes(supervisor.health().state))
827
+ return;
828
+ const current = store.status(job.jobId);
829
+ if (current.phase !== "launching")
830
+ return;
831
+ finish(job.jobId, "failed", "launch_failed", `Could not start the ${job.harness} device-code runner: ${detail}.`, {}, spec.displayCommand);
832
+ };
833
+ runner.once("error", (err) => failLaunch(err.message));
834
+ runner.once("exit", (code, signal) => {
835
+ if (code !== 0 && code !== null)
836
+ failLaunch(signal ? `signal ${signal}` : `exit code ${code}`);
837
+ });
838
+ runner.unref();
839
+ return waiting;
840
+ }
689
841
  // External-risk disclosure (v3.0.3, Bible): a browser-based OpenAI
690
842
  // sign-in completed in a browser holding ANOTHER account's session can
691
843
  // revoke sibling sessions (incl. the ChatGPT desktop app) server-side.
@@ -799,14 +951,21 @@ export function createSetupJobManager(opts = {}) {
799
951
  // --browser-redirect request must never be silently answered with the
800
952
  // active device-auth job.
801
953
  if ((active.profileId ?? null) === (profileBinding?.profileId ?? null)) {
802
- const activeDeviceAuth = active.authorization?.args.includes("--device-auth") ?? null;
803
- const requestedDeviceAuth = harness === "codex" ? request.loginFlow !== "browser_redirect" : null;
804
- if (activeDeviceAuth !== null &&
805
- requestedDeviceAuth !== null &&
806
- activeDeviceAuth !== requestedDeviceAuth) {
954
+ // The meaningful flow distinction for codex is the legacy Terminal
955
+ // localhost-redirect ("login" with no app-server / --device-auth argv)
956
+ // vs the app-server device-code / browser-callback flows. A mismatch
957
+ // refuses loudly rather than answering with the wrong-flow active job.
958
+ const activeBrowserRedirect = harness === "codex" && active.authorization
959
+ ? !active.authorization.args.includes("app-server") &&
960
+ !active.authorization.args.includes("--device-auth")
961
+ : null;
962
+ const requestedBrowserRedirect = harness === "codex" ? request.loginFlow === "browser_redirect" : null;
963
+ if (activeBrowserRedirect !== null &&
964
+ requestedBrowserRedirect !== null &&
965
+ activeBrowserRedirect !== requestedBrowserRedirect) {
807
966
  throw Object.assign(new Error(`another ${harness} login job is active (${active.jobId}) using the ` +
808
- `${activeDeviceAuth ? "device-auth" : "browser-redirect"} flow; finish or cancel ` +
809
- `it before starting a ${requestedDeviceAuth ? "device-auth" : "browser-redirect"} login`), { status: 409 });
967
+ `${activeBrowserRedirect ? "browser-redirect" : "device-code"} flow; finish or cancel ` +
968
+ `it before starting a ${requestedBrowserRedirect ? "browser-redirect" : "device-code"} login`), { status: 409 });
810
969
  }
811
970
  return binding ? store.bindCreate(active.jobId, binding) : active;
812
971
  }
@@ -860,13 +1019,20 @@ export function createSetupJobManager(opts = {}) {
860
1019
  },
861
1020
  snapshot(input) {
862
1021
  const p = (input ?? {});
863
- return store.snapshot(typeof p.jobId === "string" ? p.jobId : "");
1022
+ const snap = store.snapshot(typeof p.jobId === "string" ? p.jobId : "");
1023
+ // D-17: overlay the transient device-code disclosure at READ time. It is
1024
+ // never a field of the journaled job — only projected here (and on SSE).
1025
+ const deviceCode = projectDeviceCode(snap.job);
1026
+ return deviceCode ? { ...snap, deviceCode } : snap;
864
1027
  },
865
1028
  events(input) {
866
1029
  const p = (input ?? {});
867
1030
  const jobId = typeof p.jobId === "string" ? p.jobId : "";
868
1031
  const afterCursor = typeof p.afterCursor === "string" ? p.afterCursor : null;
869
- return store.events(jobId, afterCursor);
1032
+ return store.events(jobId, afterCursor).map((event) => {
1033
+ const deviceCode = projectDeviceCode(event.job);
1034
+ return deviceCode ? { ...event, deviceCode } : event;
1035
+ });
870
1036
  },
871
1037
  async cancel(input) {
872
1038
  const p = (input ?? {});
@@ -906,6 +1072,21 @@ export function createSetupJobManager(opts = {}) {
906
1072
  supervisor.assertCreateAllowed();
907
1073
  const p = (input ?? {});
908
1074
  const jobId = typeof p.jobId === "string" ? p.jobId : "";
1075
+ // QA-075: bind the extension to its Idempotency-Key. Exact replay of the
1076
+ // same key returns the same (already-extended) job instead of adding
1077
+ // another 15 minutes; a new key authorizes a distinct extension.
1078
+ const idempotency = typeof p.idempotencyKey === "string" && p.idempotencyKey
1079
+ ? {
1080
+ key: p.idempotencyKey,
1081
+ client: "control-api",
1082
+ request: { operation: "extend", jobId },
1083
+ }
1084
+ : undefined;
1085
+ if (idempotency) {
1086
+ const prior = store.resolveExtend(idempotency);
1087
+ if (prior)
1088
+ return prior;
1089
+ }
909
1090
  const job = store.status(jobId);
910
1091
  if (!ACTIVE_SETUP_STATES.has(job.state) ||
911
1092
  !["launching", "awaiting_user"].includes(job.phase ?? "") ||
@@ -915,7 +1096,7 @@ export function createSetupJobManager(opts = {}) {
915
1096
  return update(jobId, {
916
1097
  deadlineAt: new Date(Date.parse(job.deadlineAt) + LOGIN_EXTENSION_MS).toISOString(),
917
1098
  message: `${job.harness} login deadline extended by 15 minutes.`,
918
- });
1099
+ }, idempotency);
919
1100
  },
920
1101
  _store: store,
921
1102
  _supervisorHealth: () => supervisor.health(),