@claudexor/cli 3.6.0 → 3.8.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 (114) hide show
  1. package/dist/accounts-projection.d.ts +4 -2
  2. package/dist/accounts-projection.d.ts.map +1 -1
  3. package/dist/accounts-projection.js +49 -2
  4. package/dist/accounts-projection.js.map +1 -1
  5. package/dist/accounts-services.d.ts +7 -1
  6. package/dist/accounts-services.d.ts.map +1 -1
  7. package/dist/accounts-services.js +7 -2
  8. package/dist/accounts-services.js.map +1 -1
  9. package/dist/agy-quota-source.d.ts +1 -0
  10. package/dist/agy-quota-source.d.ts.map +1 -1
  11. package/dist/agy-quota-source.js +61 -108
  12. package/dist/agy-quota-source.js.map +1 -1
  13. package/dist/capabilities.d.ts.map +1 -1
  14. package/dist/capabilities.js +6 -1
  15. package/dist/capabilities.js.map +1 -1
  16. package/dist/claudexord-entry.d.ts +7 -2
  17. package/dist/claudexord-entry.d.ts.map +1 -1
  18. package/dist/claudexord-entry.js +33 -11
  19. package/dist/claudexord-entry.js.map +1 -1
  20. package/dist/cli.js +2 -1
  21. package/dist/cli.js.map +1 -1
  22. package/dist/command-flags.d.ts.map +1 -1
  23. package/dist/command-flags.js +1 -0
  24. package/dist/command-flags.js.map +1 -1
  25. package/dist/control-services.d.ts +28 -14
  26. package/dist/control-services.d.ts.map +1 -1
  27. package/dist/control-services.js +16 -5
  28. package/dist/control-services.js.map +1 -1
  29. package/dist/credential-commands.d.ts +16 -0
  30. package/dist/credential-commands.d.ts.map +1 -1
  31. package/dist/credential-commands.js +47 -13
  32. package/dist/credential-commands.js.map +1 -1
  33. package/dist/credential-profile-mutations.d.ts +7 -0
  34. package/dist/credential-profile-mutations.d.ts.map +1 -1
  35. package/dist/credential-profile-mutations.js +63 -31
  36. package/dist/credential-profile-mutations.js.map +1 -1
  37. package/dist/delegation-belt-descriptor.d.ts +2 -1
  38. package/dist/delegation-belt-descriptor.d.ts.map +1 -1
  39. package/dist/delegation-belt-descriptor.js +2 -1
  40. package/dist/delegation-belt-descriptor.js.map +1 -1
  41. package/dist/harness-command-specs.d.ts.map +1 -1
  42. package/dist/harness-command-specs.js +4 -4
  43. package/dist/harness-command-specs.js.map +1 -1
  44. package/dist/harness-command.d.ts +5 -3
  45. package/dist/harness-command.d.ts.map +1 -1
  46. package/dist/harness-command.js +5 -3
  47. package/dist/harness-command.js.map +1 -1
  48. package/dist/harness-install-lease.d.ts +11 -0
  49. package/dist/harness-install-lease.d.ts.map +1 -0
  50. package/dist/harness-install-lease.js +98 -0
  51. package/dist/harness-install-lease.js.map +1 -0
  52. package/dist/harness-install-proof.d.ts +36 -0
  53. package/dist/harness-install-proof.d.ts.map +1 -0
  54. package/dist/harness-install-proof.js +148 -0
  55. package/dist/harness-install-proof.js.map +1 -0
  56. package/dist/harness-install-recipes.d.ts +80 -0
  57. package/dist/harness-install-recipes.d.ts.map +1 -0
  58. package/dist/harness-install-recipes.js +130 -0
  59. package/dist/harness-install-recipes.js.map +1 -0
  60. package/dist/harness-installer.d.ts +45 -46
  61. package/dist/harness-installer.d.ts.map +1 -1
  62. package/dist/harness-installer.js +248 -156
  63. package/dist/harness-installer.js.map +1 -1
  64. package/dist/native-login.d.ts +7 -0
  65. package/dist/native-login.d.ts.map +1 -1
  66. package/dist/native-login.js +29 -13
  67. package/dist/native-login.js.map +1 -1
  68. package/dist/profile-registration.d.ts +2 -0
  69. package/dist/profile-registration.d.ts.map +1 -1
  70. package/dist/profile-registration.js +48 -5
  71. package/dist/profile-registration.js.map +1 -1
  72. package/dist/quota-services.d.ts +2 -2
  73. package/dist/remote-command.d.ts +0 -2
  74. package/dist/remote-command.d.ts.map +1 -1
  75. package/dist/remote-command.js +3 -74
  76. package/dist/remote-command.js.map +1 -1
  77. package/dist/setup-attach-command.d.ts +30 -0
  78. package/dist/setup-attach-command.d.ts.map +1 -0
  79. package/dist/setup-attach-command.js +118 -0
  80. package/dist/setup-attach-command.js.map +1 -0
  81. package/dist/setup-job-store.d.ts +2 -2
  82. package/dist/setup-job-support.d.ts +23 -13
  83. package/dist/setup-job-support.d.ts.map +1 -1
  84. package/dist/setup-job-support.js +55 -13
  85. package/dist/setup-job-support.js.map +1 -1
  86. package/dist/setup-jobs.d.ts +4 -4
  87. package/dist/setup-jobs.d.ts.map +1 -1
  88. package/dist/setup-jobs.js +50 -47
  89. package/dist/setup-jobs.js.map +1 -1
  90. package/dist/setup-login-capability.d.ts +37 -0
  91. package/dist/setup-login-capability.d.ts.map +1 -0
  92. package/dist/setup-login-capability.js +96 -0
  93. package/dist/setup-login-capability.js.map +1 -0
  94. package/dist/setup-login-io.d.ts +4 -1
  95. package/dist/setup-login-io.d.ts.map +1 -1
  96. package/dist/setup-login-io.js +22 -3
  97. package/dist/setup-login-io.js.map +1 -1
  98. package/dist/setup-login-pty.d.ts +64 -22
  99. package/dist/setup-login-pty.d.ts.map +1 -1
  100. package/dist/setup-login-pty.js +289 -48
  101. package/dist/setup-login-pty.js.map +1 -1
  102. package/dist/setup-login-runner-support.d.ts +12 -0
  103. package/dist/setup-login-runner-support.d.ts.map +1 -0
  104. package/dist/setup-login-runner-support.js +65 -0
  105. package/dist/setup-login-runner-support.js.map +1 -0
  106. package/dist/setup-login-runner.d.ts +2 -0
  107. package/dist/setup-login-runner.d.ts.map +1 -1
  108. package/dist/setup-login-runner.js +119 -116
  109. package/dist/setup-login-runner.js.map +1 -1
  110. package/dist/setup-runner-outcome.d.ts +10 -0
  111. package/dist/setup-runner-outcome.d.ts.map +1 -0
  112. package/dist/setup-runner-outcome.js +49 -0
  113. package/dist/setup-runner-outcome.js.map +1 -0
  114. package/package.json +24 -24
@@ -0,0 +1,118 @@
1
+ import { spawn } from "node:child_process";
2
+ import { closeSync, constants, existsSync, openSync } from "node:fs";
3
+ import { platform } from "node:os";
4
+ import { join } from "node:path";
5
+ import { daemonDir } from "@claudexor/daemon";
6
+ import { printUsageError } from "./cli-io.js";
7
+ import { connectDaemonIfRunning } from "./daemon-run.js";
8
+ import { controlApiFetch } from "./live.js";
9
+ import { resolveSetupLoginRunnerPath } from "./setup-job-support.js";
10
+ import { runnerBootstrapEnv } from "./setup-login-runner-support.js";
11
+ function waitForChild(child) {
12
+ return new Promise((resolve, reject) => {
13
+ child.once("error", reject);
14
+ child.once("close", (code, signal) => {
15
+ if (signal) {
16
+ process.stderr.write(`claudexor setup attach: runner exited on ${signal}\n`);
17
+ resolve(1);
18
+ }
19
+ else {
20
+ resolve(code ?? 1);
21
+ }
22
+ });
23
+ });
24
+ }
25
+ export function claimSetupAttachment(directory) {
26
+ const path = join(directory, "client-pty-attached");
27
+ let descriptor;
28
+ try {
29
+ descriptor = openSync(path, constants.O_WRONLY | constants.O_CREAT | constants.O_EXCL | constants.O_NOFOLLOW, 0o600);
30
+ }
31
+ catch {
32
+ throw new Error("setup job already has a client_pty attachment");
33
+ }
34
+ closeSync(descriptor);
35
+ }
36
+ /**
37
+ * Windows must keep the login worker in the terminal that attached the job:
38
+ * entering `--worker` directly avoids the detached bootstrap hop that daemon-
39
+ * hosted jobs require. POSIX retains the existing bootstrap invocation.
40
+ */
41
+ export function setupAttachRunnerInvocation(input) {
42
+ if (input.platform === "win32") {
43
+ return {
44
+ command: input.nodePath,
45
+ args: [input.runnerPath, "--worker", input.manifestPath],
46
+ options: {
47
+ cwd: input.cwd,
48
+ stdio: "inherit",
49
+ env: runnerBootstrapEnv(input.env),
50
+ detached: false,
51
+ },
52
+ };
53
+ }
54
+ return {
55
+ command: input.nodePath,
56
+ args: [input.runnerPath, input.manifestPath],
57
+ options: { cwd: input.cwd, stdio: "inherit", env: input.env },
58
+ };
59
+ }
60
+ /**
61
+ * One owner for the interactive setup attachment role. The full CLI and the
62
+ * packaged daemon bundle both enter here; neither re-authors daemon lookup,
63
+ * the one-use claim, adjacent runner resolution, nor the Windows worker shape.
64
+ */
65
+ export async function setupAttachCommand(argv, json) {
66
+ const sub = argv[1];
67
+ const jobId = argv[2];
68
+ if (argv[0] !== "setup" ||
69
+ sub !== "attach" ||
70
+ typeof jobId !== "string" ||
71
+ !/^setup-[A-Za-z0-9-]+$/.test(jobId) ||
72
+ argv.length !== 3) {
73
+ return printUsageError(json, "usage: claudexor setup attach <jobId>");
74
+ }
75
+ if (json) {
76
+ return printUsageError(true, "claudexor setup attach owns an interactive PTY and cannot use --json");
77
+ }
78
+ const daemon = await connectDaemonIfRunning();
79
+ if (!daemon)
80
+ throw new Error("setup daemon is not running");
81
+ const response = await controlApiFetch(daemon.addr, `/setup/jobs/${encodeURIComponent(jobId)}`);
82
+ const body = (await response.json());
83
+ if (!response.ok)
84
+ throw new Error(`setup job lookup failed (HTTP ${response.status})`);
85
+ if (body.transport !== "client_pty") {
86
+ throw new Error("setup job is not authorized for client_pty attachment");
87
+ }
88
+ if (!["queued", "running", "waiting_for_input"].includes(body.state ?? "") ||
89
+ !["launching", "awaiting_user"].includes(body.phase ?? "")) {
90
+ throw new Error(`setup job is not attachable (${body.state ?? "unknown"})`);
91
+ }
92
+ const artifactDirectory = join(daemonDir(), "setup-artifacts", jobId);
93
+ const manifest = join(artifactDirectory, "runner-manifest.json");
94
+ if (!existsSync(manifest))
95
+ throw new Error("sealed setup manifest is unavailable");
96
+ const runner = resolveSetupLoginRunnerPath();
97
+ if (!existsSync(runner))
98
+ throw new Error("setup login runner is unavailable");
99
+ // A sealed login job authorizes exactly one terminal runner. O_EXCL is the
100
+ // cross-process fence; the marker intentionally survives a crashed client so
101
+ // users cancel/recreate instead of accidentally launching the vendor login
102
+ // twice against one daemon-owned job.
103
+ claimSetupAttachment(artifactDirectory);
104
+ const invocation = setupAttachRunnerInvocation({
105
+ platform: platform(),
106
+ nodePath: process.execPath,
107
+ runnerPath: runner,
108
+ manifestPath: manifest,
109
+ cwd: artifactDirectory,
110
+ env: process.env,
111
+ });
112
+ return waitForChild(spawn(invocation.command, invocation.args, invocation.options));
113
+ }
114
+ /** Full-CLI adapter over the shared raw-argv role owner. */
115
+ export function setupCommand(args, json) {
116
+ return setupAttachCommand(args._, json);
117
+ }
118
+ //# sourceMappingURL=setup-attach-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-attach-command.js","sourceRoot":"","sources":["../src/setup-attach-command.ts"],"names":[],"mappings":"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"}
@@ -238,7 +238,7 @@ export declare class SetupJobStore {
238
238
  commandStarted: boolean;
239
239
  exitCode: number | null;
240
240
  signal: string | null;
241
- errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | undefined;
241
+ errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | "terminal_transport_failed" | "terminal_transport_probe_failed" | "terminal_transport_unavailable" | "terminal_transport_unsupported" | undefined;
242
242
  finishedAt: string;
243
243
  } | undefined;
244
244
  terminationReconciliation?: {
@@ -435,7 +435,7 @@ export declare class SetupJobStore {
435
435
  commandStarted: boolean;
436
436
  exitCode: number | null;
437
437
  signal: string | null;
438
- errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | undefined;
438
+ errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | "terminal_transport_failed" | "terminal_transport_probe_failed" | "terminal_transport_unavailable" | "terminal_transport_unsupported" | undefined;
439
439
  finishedAt: string;
440
440
  } | undefined;
441
441
  terminationReconciliation?: {
@@ -1,5 +1,5 @@
1
1
  import { type HarnessAdapter, type ProcessGroupHandle } from "@claudexor/core";
2
- import { ControlHarnessSetupHarness, type ControlSetupJob, type CredentialProfileStatus } from "@claudexor/schema";
2
+ import { ControlHarnessSetupHarness, type ControlSetupJob, type ControlSetupJobCreateRequest as ControlSetupJobCreateRequestValue, type CredentialProfileStatus, type EffectiveCredentialProfilePolicy } from "@claudexor/schema";
3
3
  import type { SetupLoginRunnerState } from "./setup-login-protocol.js";
4
4
  /** Where a harness's DEFAULT (unnamed) login lands, for the harnesses whose
5
5
  * default store Claudexor owns. Absent = the vendor keeps its own default
@@ -10,15 +10,17 @@ export type SetupProfile = {
10
10
  note: string;
11
11
  };
12
12
  export declare const SETUP_PROFILES: Record<ControlHarnessSetupHarness, SetupProfile>;
13
+ export interface ResolvedSetupProfileBinding {
14
+ profileId: string;
15
+ configDir: string;
16
+ credentialPolicy: EffectiveCredentialProfilePolicy;
17
+ }
13
18
  /**
14
19
  * Resolve an INV-135 profile-targeted login request to its canonical scoped
15
20
  * config dir. Typed 400s: an unknown/disabled/secret-ref profile must refuse
16
21
  * at create time, never open a Terminal login into the wrong store.
17
22
  */
18
- export declare function resolveProfileBinding(harness: ControlHarnessSetupHarness, profileId: string | undefined): {
19
- profileId: string;
20
- configDir: string;
21
- } | null;
23
+ export declare function resolveProfileBinding(harness: ControlHarnessSetupHarness, profileId: string | undefined, platform?: NodeJS.Platform): ResolvedSetupProfileBinding | null;
22
24
  /**
23
25
  * The login-request binding under the unified account model (K.4): an explicit
24
26
  * profileId resolves as before; a profile-less LOGIN request is the bootstrap
@@ -32,17 +34,25 @@ export declare function resolveProfileBinding(harness: ControlHarnessSetupHarnes
32
34
  * env-overridden native home outside the owned root, never blocks the login;
33
35
  * the startup migration registers the row after the login lands).
34
36
  */
35
- export declare function resolveLoginProfileBinding(harness: ControlHarnessSetupHarness, action: string, requestedProfileId: string | undefined): {
36
- profileId: string;
37
- configDir: string;
38
- } | null;
37
+ export declare function resolveLoginProfileBinding(harness: ControlHarnessSetupHarness, action: string, requestedProfileId: string | undefined, platform?: NodeJS.Platform): ResolvedSetupProfileBinding | null;
39
38
  /**
40
- * A harness with no default credential store (agy — owner decision Л-4) can
41
- * only sign in INTO a named account. Refusing at CREATE time keeps the runner
42
- * from spawning a vendor login whose token would land in the daemon's own home
43
- * directory, and gives the caller a 400 instead of an opaque spawn failure.
39
+ * A harness with no default binding store (agy — owner decision Л-4) can only
40
+ * start login under a named binding. Refusing at CREATE time keeps the runner
41
+ * from targeting vendor state/login artifacts at the daemon's own HOME; the
42
+ * effective platform policy separately owns credential custody. The caller
43
+ * gets a 400 instead of an opaque spawn failure.
44
44
  */
45
45
  export declare function assertDefaultLoginAllowed(harness: string, hasProfile: boolean): void;
46
+ /**
47
+ * Mutation-free setup admission. Request shape, named-profile binding,
48
+ * required-profile policy and the current cardinality invariant are resolved
49
+ * before any terminal helper probe or bootstrap-row creation. The durable
50
+ * manager repeats the binding while creating the single job; this first pass
51
+ * exists to keep rejected requests at zero probe and zero mutation.
52
+ */
53
+ export declare function preflightSetupJobCreateRequest(input: unknown, platform?: NodeJS.Platform): ControlSetupJobCreateRequestValue;
54
+ /** Durable, user-facing custody statement for a profile-targeted setup job. */
55
+ export declare function setupProfileBindingMessage(harness: string, binding: ResolvedSetupProfileBinding): string;
46
56
  /**
47
57
  * Whether a login's deadline may be pushed out. A deadline that IS the
48
58
  * vendor's own window cannot be: publishing a later one would promise fifteen
@@ -1 +1 @@
1
- {"version":3,"file":"setup-job-support.d.ts","sourceRoot":"","sources":["../src/setup-job-support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-job-support.d.ts","sourceRoot":"","sources":["../src/setup-job-support.ts"],"names":[],"mappings":"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"}
@@ -6,13 +6,14 @@
6
6
  import { existsSync } from "node:fs";
7
7
  import { dirname, resolve } from "node:path";
8
8
  import { fileURLToPath } from "node:url";
9
- import { parseProcessGroupHandle, } from "@claudexor/core";
9
+ import { credentialProfilePolicyProblem, credentialProfilePolicyState, parseProcessGroupHandle, } from "@claudexor/core";
10
10
  import { loadConfig } from "@claudexor/config";
11
11
  import { defaultNativeClaudeConfigDir } from "@claudexor/harness-claude";
12
12
  import { defaultNativeCodexHome } from "@claudexor/harness-codex";
13
- import { ControlHarnessSetupHarness, harnessHasDefaultCredentialStore, harnessSupportsBootstrapLogin, } from "@claudexor/schema";
13
+ import { ControlHarnessSetupHarness, ControlSetupJobCreateRequest, harnessHasDefaultCredentialStore, harnessSupportsBootstrapLogin, } from "@claudexor/schema";
14
14
  import { noProjectRepoRoot } from "@claudexor/util";
15
15
  import { ensureBootstrapProfile } from "./profile-registration.js";
16
+ import { buildRegistry } from "./registry.js";
16
17
  import { canonicalProfileLoginDir, configDirLoginHarnessList, isConfigDirLoginHarness, } from "./config-dir-login-harnesses.js";
17
18
  import { ACTIVE_SETUP_STATES } from "./setup-job-store.js";
18
19
  const NO_PROJECT_ROOT = noProjectRepoRoot();
@@ -38,7 +39,7 @@ export const SETUP_PROFILES = {
38
39
  },
39
40
  agy: {
40
41
  guideUrl: "https://antigravity.google/docs/cli/install",
41
- note: "Antigravity sign-in always targets one named account folder: the CLI keeps its whole state under a home directory, so every Google account you add gets its own.",
42
+ note: "Antigravity sign-in always targets one named Claudexor binding. Credential custody depends on the host platform and is stated below.",
42
43
  },
43
44
  };
44
45
  /**
@@ -46,13 +47,21 @@ export const SETUP_PROFILES = {
46
47
  * config dir. Typed 400s: an unknown/disabled/secret-ref profile must refuse
47
48
  * at create time, never open a Terminal login into the wrong store.
48
49
  */
49
- export function resolveProfileBinding(harness, profileId) {
50
+ export function resolveProfileBinding(harness, profileId, platform = process.platform) {
51
+ const registry = loadConfig(NO_PROJECT_ROOT).global.credential_profiles;
52
+ const policyState = credentialProfilePolicyState({
53
+ adapter: buildRegistry({ includeFakes: false }).get(harness),
54
+ registry,
55
+ platform,
56
+ });
57
+ if (policyState.ambiguous)
58
+ throw credentialProfilePolicyProblem(policyState, "credential_profile_ambiguous");
50
59
  if (!profileId)
51
60
  return null;
52
61
  if (!isConfigDirLoginHarness(harness)) {
53
62
  throw Object.assign(new Error(`harness "${harness}" has no isolated config-dir login; only ${configDirLoginHarnessList()} support profile logins`), { status: 400 });
54
63
  }
55
- const profile = loadConfig(NO_PROJECT_ROOT).global.credential_profiles.find((entry) => entry.harness_id === harness && entry.profile_id === profileId);
64
+ const profile = registry.find((entry) => entry.harness_id === harness && entry.profile_id === profileId);
56
65
  if (!profile) {
57
66
  throw Object.assign(new Error(`no credential profile "${profileId}" for harness "${harness}" — register it first (POST /v2/credential-profiles or \`claudexor profiles add\`)`), { status: 400 });
58
67
  }
@@ -67,6 +76,7 @@ export function resolveProfileBinding(harness, profileId) {
67
76
  return {
68
77
  profileId,
69
78
  configDir: canonicalProfileLoginDir(harness, profile.isolation_locator ?? ""),
79
+ credentialPolicy: policyState.policy,
70
80
  };
71
81
  }
72
82
  /**
@@ -82,12 +92,12 @@ export function resolveProfileBinding(harness, profileId) {
82
92
  * env-overridden native home outside the owned root, never blocks the login;
83
93
  * the startup migration registers the row after the login lands).
84
94
  */
85
- export function resolveLoginProfileBinding(harness, action, requestedProfileId) {
86
- const explicit = resolveProfileBinding(harness, requestedProfileId);
95
+ export function resolveLoginProfileBinding(harness, action, requestedProfileId, platform = process.platform) {
96
+ const explicit = resolveProfileBinding(harness, requestedProfileId, platform);
87
97
  if (explicit || action !== "login" || !harnessSupportsBootstrapLogin(harness))
88
98
  return explicit;
89
99
  if (!harnessHasDefaultCredentialStore(harness)) {
90
- return resolveProfileBinding(harness, ensureBootstrapProfile(harness).profile_id);
100
+ return resolveProfileBinding(harness, ensureBootstrapProfile(harness).profile_id, platform);
91
101
  }
92
102
  try {
93
103
  ensureBootstrapProfile(harness);
@@ -98,15 +108,47 @@ export function resolveLoginProfileBinding(harness, action, requestedProfileId)
98
108
  return null;
99
109
  }
100
110
  /**
101
- * A harness with no default credential store (agy — owner decision Л-4) can
102
- * only sign in INTO a named account. Refusing at CREATE time keeps the runner
103
- * from spawning a vendor login whose token would land in the daemon's own home
104
- * directory, and gives the caller a 400 instead of an opaque spawn failure.
111
+ * A harness with no default binding store (agy — owner decision Л-4) can only
112
+ * start login under a named binding. Refusing at CREATE time keeps the runner
113
+ * from targeting vendor state/login artifacts at the daemon's own HOME; the
114
+ * effective platform policy separately owns credential custody. The caller
115
+ * gets a 400 instead of an opaque spawn failure.
105
116
  */
106
117
  export function assertDefaultLoginAllowed(harness, hasProfile) {
107
118
  if (hasProfile || harnessHasDefaultCredentialStore(harness))
108
119
  return;
109
- throw Object.assign(new Error(`harness "${harness}" has no default credential store: sign in from a named account (add one first, then start the login from it)`), { status: 400 });
120
+ throw Object.assign(new Error(`harness "${harness}" has no default credential store: sign in from a named account (add one first, then start the login from it)`), {
121
+ status: 400,
122
+ code: "credential_profile_required",
123
+ retryable: false,
124
+ fieldErrors: {
125
+ "/profileId": ["A named credential profile is required for this harness."],
126
+ },
127
+ requiredActions: ["add_named_account"],
128
+ });
129
+ }
130
+ /**
131
+ * Mutation-free setup admission. Request shape, named-profile binding,
132
+ * required-profile policy and the current cardinality invariant are resolved
133
+ * before any terminal helper probe or bootstrap-row creation. The durable
134
+ * manager repeats the binding while creating the single job; this first pass
135
+ * exists to keep rejected requests at zero probe and zero mutation.
136
+ */
137
+ export function preflightSetupJobCreateRequest(input, platform = process.platform) {
138
+ const request = ControlSetupJobCreateRequest.parse(input);
139
+ const explicitBinding = resolveProfileBinding(request.harness, request.profileId, platform);
140
+ const canBootstrap = request.action === "login" &&
141
+ request.profileId === undefined &&
142
+ harnessSupportsBootstrapLogin(request.harness);
143
+ assertDefaultLoginAllowed(request.harness, explicitBinding !== null || canBootstrap);
144
+ return request;
145
+ }
146
+ /** Durable, user-facing custody statement for a profile-targeted setup job. */
147
+ export function setupProfileBindingMessage(harness, binding) {
148
+ if (binding.credentialPolicy.identity_scope === "os_user") {
149
+ return `This login targets the Claudexor binding "${binding.profileId}". Its folder scopes ${harness} state, while the vendor credential is shared by the current OS user; it is not a separate per-folder identity, and removing the binding does not sign out the vendor account.`;
150
+ }
151
+ return `This login targets the scoped Claudexor profile "${binding.profileId}"; the default vendor store is not touched.`;
110
152
  }
111
153
  /**
112
154
  * Whether a login's deadline may be pushed out. A deadline that IS the
@@ -1 +1 @@
1
- {"version":3,"file":"setup-job-support.js","sourceRoot":"","sources":["../src/setup-job-support.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup-job-support.js","sourceRoot":"","sources":["../src/setup-job-support.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EACL,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,GAGxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAK5B,gCAAgC,EAChC,6BAA6B,GAC9B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,eAAe,GAAG,iBAAiB,EAAE,CAAC;AAE5C;;yCAEyC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAA0C;IACrE,KAAK,EAAE,sBAAsB;IAC7B,MAAM,EAAE,4BAA4B;CACrC,CAAC;AAOF,MAAM,CAAC,MAAM,cAAc,GAAqD;IAC9E,KAAK,EAAE;QACL,QAAQ,EAAE,2CAA2C;QACrD,IAAI,EAAE,mIAAmI;KAC1I;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,gDAAgD;QAC1D,IAAI,EAAE,yIAAyI;KAChJ;IACD,MAAM,EAAE;QACN,QAAQ,EAAE,yDAAyD;QACnE,IAAI,EAAE,mDAAmD;KAC1D;IACD,GAAG,EAAE;QACH,QAAQ,EAAE,6CAA6C;QACvD,IAAI,EAAE,sIAAsI;KAC7I;CACF,CAAC;AAQF;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAmC,EACnC,SAA6B,EAC7B,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,MAAM,QAAQ,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACxE,MAAM,WAAW,GAAG,4BAA4B,CAAC;QAC/C,OAAO,EAAE,aAAa,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;QAC5D,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,SAAS;QACvB,MAAM,8BAA8B,CAAC,WAAW,EAAE,8BAA8B,CAAC,CAAC;IACpF,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,YAAY,OAAO,4CAA4C,yBAAyB,EAAE,yBAAyB,CACpH,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAC1E,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,0BAA0B,SAAS,kBAAkB,OAAO,oFAAoF,CACjJ,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,SAAS,eAAe,CAAC,EAAE;YAC9E,MAAM,EAAE,GAAG;SACZ,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,CAAC,eAAe,KAAK,kBAAkB,EAAE,CAAC;QACnD,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,uBAAuB,SAAS,QAAQ,OAAO,CAAC,eAAe,uFAAuF,CACvJ,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,SAAS;QACT,SAAS,EAAE,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAC7E,gBAAgB,EAAE,WAAW,CAAC,MAAM;KACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CACxC,OAAmC,EACnC,MAAc,EACd,kBAAsC,EACtC,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,CAAC,CAAC;IAC9E,IAAI,QAAQ,IAAI,MAAM,KAAK,OAAO,IAAI,CAAC,6BAA6B,CAAC,OAAO,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC/F,IAAI,CAAC,gCAAgC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/C,OAAO,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,CAAC;QACH,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAAe,EAAE,UAAmB;IAC5E,IAAI,UAAU,IAAI,gCAAgC,CAAC,OAAO,CAAC;QAAE,OAAO;IACpE,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,YAAY,OAAO,+GAA+G,CACnI,EACD;QACE,MAAM,EAAE,GAAG;QACX,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,KAAK;QAChB,WAAW,EAAE;YACX,YAAY,EAAE,CAAC,0DAA0D,CAAC;SAC3E;QACD,eAAe,EAAE,CAAC,mBAAmB,CAAC;KACvC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAC5C,KAAc,EACd,QAAQ,GAAoB,OAAO,CAAC,QAAQ;IAE5C,MAAM,OAAO,GAAG,4BAA4B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC5F,MAAM,YAAY,GAChB,OAAO,CAAC,MAAM,KAAK,OAAO;QAC1B,OAAO,CAAC,SAAS,KAAK,SAAS;QAC/B,6BAA6B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACjD,yBAAyB,CAAC,OAAO,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,IAAI,YAAY,CAAC,CAAC;IACrF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,0BAA0B,CACxC,OAAe,EACf,OAAoC;IAEpC,IAAI,OAAO,CAAC,gBAAgB,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC1D,OAAO,6CAA6C,OAAO,CAAC,SAAS,wBAAwB,OAAO,gLAAgL,CAAC;IACvR,CAAC;IACD,OAAO,oDAAoD,OAAO,CAAC,SAAS,6CAA6C,CAAC;AAC5H,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,wBAAwB,CACtC,GAAoB;IAEpB,IACE,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC;QACnC,CAAC,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QACzD,CAAC,GAAG,CAAC,UAAU,EACf,CAAC;QACD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;QACtB,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CACP,GAAG,GAAG,CAAC,OAAO,qFAAqF,CACpG,EACD,EAAE,MAAM,EAAE,GAAG,EAAE,CAChB,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAiG,EACjG,SAAiB,EACjB,SAAiB;IAEjB,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAuC,CAAC,EAAE,CAAC;QAC1F,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,EAAE;SACf,IAAI,CAAC,EAAE,OAAO,EAAE,SAAuC,EAAE,CAAC;SAC1D,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;AACtF,CAAC;AAED;kFACkF;AAClF,MAAM,UAAU,kBAAkB,CAChC,UAA2D;IAM3D,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CACzE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,OAAO,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAC1E,CAAC;QACF,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC;QAC1B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,EAAE,sBAAsB;YAAE,OAAO,IAAI,CAAC;QAClD,OAAO,OAAO,CAAC,sBAAsB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,SAAS,GAAW,OAAO,IAAI,CAAC,GAAG,EACnC,UAAU,GAA8B,UAAU;IAElD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,EAAE,wBAAwB,CAAC,CAAC;IAC7D,OAAO,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,EAAU,EACV,UAA2B,EAC3B,KAAoC;IAEpC,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,UAAU,EAAE,EAAE;QAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAE,EAAE;YAClC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,MAAM,CAAC,GAAG,EAAE,CACV,UAAU,CACR,UAAU,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK;YACvC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM;YAC1B,CAAC,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CACzC,CACF,CAAC;QACJ,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CACZ,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EACzB,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAC3C,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,SAA2B,EAC3B,UAA2B,EAC3B,SAAiB,EACjB,KAAa;IAEb,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,IAAI,OAAO,CAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,EAAE;QACvD,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,MAAM,GAAG,CAAC,IAAgB,EAAE,EAAE;YAClC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,UAAU,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACxD,IAAI,EAAE,CAAC;QACT,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,MAAM,CAAC,GAAG,EAAE,CACV,eAAe,CACb,UAAU,CAAC,MAAM,CAAC,MAAM,YAAY,KAAK;YACvC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM;YAC1B,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,CAClC,CACF,CAAC;QACJ,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,KAAK,oBAAoB,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE;gBACtF,IAAI,EAAE,eAAe;aACtB,CAAC,CAAC;YACH,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC,EAAE,SAAS,CAAC,CAAC;QACd,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,UAAU,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QACrE,SAAS,EAAE,CAAC,IAAI,CACd,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAChD,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAoB;IACtD,IAAI,CAAC,GAAG,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,GAAoB,EACpB,KAA4B;IAE5B,OAAO,CACL,GAAG,CAAC,SAAS,EAAE,WAAW,KAAK,KAAK,CAAC,WAAW;QAChD,GAAG,CAAC,SAAS,CAAC,aAAa,KAAK,KAAK,CAAC,aAAa;QACnD,GAAG,CAAC,SAAS,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;QACrD,GAAG,CAAC,SAAS,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QAC7C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,CAClF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAC/C,CAAC"}
@@ -235,7 +235,7 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
235
235
  commandStarted: boolean;
236
236
  exitCode: number | null;
237
237
  signal: string | null;
238
- errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | undefined;
238
+ errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | "terminal_transport_failed" | "terminal_transport_probe_failed" | "terminal_transport_unavailable" | "terminal_transport_unsupported" | undefined;
239
239
  finishedAt: string;
240
240
  } | undefined;
241
241
  terminationReconciliation?: {
@@ -421,7 +421,7 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
421
421
  commandStarted: boolean;
422
422
  exitCode: number | null;
423
423
  signal: string | null;
424
- errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | undefined;
424
+ errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | "terminal_transport_failed" | "terminal_transport_probe_failed" | "terminal_transport_unavailable" | "terminal_transport_unsupported" | undefined;
425
425
  finishedAt: string;
426
426
  } | undefined;
427
427
  terminationReconciliation?: {
@@ -622,7 +622,7 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
622
622
  commandStarted: boolean;
623
623
  exitCode: number | null;
624
624
  signal: string | null;
625
- errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | undefined;
625
+ errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | "terminal_transport_failed" | "terminal_transport_probe_failed" | "terminal_transport_unavailable" | "terminal_transport_unsupported" | undefined;
626
626
  finishedAt: string;
627
627
  } | undefined;
628
628
  terminationReconciliation?: {
@@ -814,7 +814,7 @@ export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
814
814
  commandStarted: boolean;
815
815
  exitCode: number | null;
816
816
  signal: string | null;
817
- errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | undefined;
817
+ errorCode?: "device_auth_unsupported" | "permit_timeout" | "spawn_failed" | "terminal_transport_failed" | "terminal_transport_probe_failed" | "terminal_transport_unavailable" | "terminal_transport_unsupported" | undefined;
818
818
  finishedAt: string;
819
819
  } | undefined;
820
820
  terminationReconciliation?: {
@@ -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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"}
@@ -7,15 +7,16 @@ import { daemonDir } from "@claudexor/daemon";
7
7
  import { ControlSetupJobCreateRequest, SetupNativeCommandReceipt, } from "@claudexor/schema";
8
8
  import { noProjectRepoRoot } from "@claudexor/util";
9
9
  import * as NativeLogin from "./native-login.js";
10
- import { SETUP_PROFILES, processGroupFromJob, profileDoctorProbe, DEFAULT_STORE_OF, assertDefaultLoginAllowed, assertSetupJobExtendable, resolveLoginProfileBinding, resolveSetupLoginRunnerPath, shellQuote, stateMatchesDurableExecution, waitWithAbort, withAbortAndTimeout, } from "./setup-job-support.js";
10
+ import { SETUP_PROFILES, processGroupFromJob, profileDoctorProbe, DEFAULT_STORE_OF, assertDefaultLoginAllowed, assertSetupJobExtendable, resolveLoginProfileBinding, resolveSetupLoginRunnerPath, setupProfileBindingMessage, 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
13
  import { SETUP_LOGIN_PROTOCOL_VERSION, atomicPrivateJson, captureExecutableEvidence, commandDigest, readLoginManifest, readRunnerResult, readRunnerState, sealLoginManifest, verifyExecutableEvidence, } from "./setup-login-protocol.js";
14
14
  import { SetupSupervisor } from "./setup-supervisor.js";
15
15
  import { createDeviceCodeDisclosureWatcher } from "./setup-device-code-disclosure.js";
16
- import { awaitingSetupUserMessage, deviceAuthUnsupportedMessage, deviceCodeRejectionRemedy, clientPtyWaitingPatch, isDeviceCodeSetupJob, projectSetupDeviceCode, removeSetupDeviceCodeSidecar, setupTransportConflict, } from "./setup-client-pty.js";
16
+ import { awaitingSetupUserMessage, deviceCodeRejectionRemedy, clientPtyWaitingPatch, isDeviceCodeSetupJob, projectSetupDeviceCode, removeSetupDeviceCodeSidecar, setupTransportConflict, } from "./setup-client-pty.js";
17
17
  import { persistSetupLoginPermit, setupLoginDeadlines } from "./setup-login-permit.js";
18
18
  import { graceVerifyAfterDeadline, isUrlDisclosureLoginMode, submitSetupLoginInput, } from "./setup-login-completion.js";
19
+ import { setupRunnerFailureOutcome } from "./setup-runner-outcome.js";
19
20
  const NO_PROJECT_ROOT = noProjectRepoRoot();
20
21
  const LOGIN_EXTENSION_MS = 15 * 60_000;
21
22
  export function createSetupJobManager(opts = {}) {
@@ -438,14 +439,9 @@ export function createSetupJobManager(opts = {}) {
438
439
  return;
439
440
  }
440
441
  job = persistNativeCommandOutcome(jobId, result);
441
- if (!result.commandStarted) {
442
- if (result.errorCode === "device_auth_unsupported") {
443
- finish(jobId, "not_supported", "not_supported", deviceAuthUnsupportedMessage(job.harness, platform));
444
- return;
445
- }
446
- finish(jobId, "failed", "launch_failed", result.errorCode === "permit_timeout"
447
- ? `${job.harness} login worker timed out before a durable execution permit was issued.`
448
- : `${job.harness} login command could not be spawned after authorization.`);
442
+ const runnerFailure = setupRunnerFailureOutcome(job.harness, result, platform);
443
+ if (runnerFailure) {
444
+ finish(jobId, ...runnerFailure);
449
445
  return;
450
446
  }
451
447
  if (result.exitCode === 0 && result.signal === null) {
@@ -691,6 +687,7 @@ export function createSetupJobManager(opts = {}) {
691
687
  }
692
688
  function startObservableLogin(job, spec, profileConfigDir) {
693
689
  const deviceCode = spec.loginMode === "device_code";
690
+ const clientPty = job.transport === "client_pty";
694
691
  // Daemon-hosted modes never touch Terminal and run on any posix platform;
695
692
  // only the legacy Terminal handoff (codex browser_redirect) is macOS-only.
696
693
  const daemonHosted = deviceCode || isUrlDisclosureLoginMode(spec.loginMode);
@@ -730,24 +727,28 @@ export function createSetupJobManager(opts = {}) {
730
727
  args: [...spec.args],
731
728
  cwd: paths.dir,
732
729
  ...(targetConfigDir ? { profileConfigDir: targetConfigDir } : {}),
733
- // D-17 device-code (app-server) login: the runner hosts the app-server
734
- // and writes the transient disclosure sidecar. Terminal-mode logins
735
- // (claude/cursor, codex fallback) carry the SAME sidecar path so the
736
- // runner can capture the vendor login's OAuth URL into it as an
737
- // `oauth_url` disclosure — the no-Terminal "open this link" card.
738
- // Pre-upgrade sealed manifests (no deviceCodePath) stay digest-valid.
739
- deviceCodePath: paths.runnerDeviceCode,
740
- ...(deviceCode
741
- ? { loginMode: "device_code", appServerFlow: spec.appServerFlow }
742
- : isUrlDisclosureLoginMode(spec.loginMode)
743
- ? {
744
- loginMode: spec.loginMode,
745
- // ptyStdin only where the vendor refuses a piped stdin.
746
- ...(spec.loginMode === "url_disclosure_with_input"
747
- ? { inputPath: paths.runnerInput, ...(spec.ptyStdin ? { ptyStdin: true } : {}) }
730
+ // These fields describe DAEMON-owned disclosure/control only. A
731
+ // client_pty manifest is an external-attach command contract: attach
732
+ // runs the vendor in the already attached terminal with inherited
733
+ // stdio, so it must not contain sidecars, login modes, or a PTY helper.
734
+ ...(!clientPty
735
+ ? {
736
+ deviceCodePath: paths.runnerDeviceCode,
737
+ ...(deviceCode
738
+ ? { loginMode: "device_code", appServerFlow: spec.appServerFlow }
739
+ : isUrlDisclosureLoginMode(spec.loginMode)
740
+ ? {
741
+ loginMode: spec.loginMode,
742
+ ...(spec.loginMode === "url_disclosure_with_input"
743
+ ? {
744
+ inputPath: paths.runnerInput,
745
+ ...(spec.ptyStdin ? { ptyStdin: true } : {}),
746
+ }
747
+ : {}),
748
+ }
748
749
  : {}),
749
- }
750
- : {}),
750
+ }
751
+ : {}),
751
752
  statePath: paths.runnerState,
752
753
  resultPath: paths.runnerResult,
753
754
  permitPath: paths.runnerPermit,
@@ -757,6 +758,26 @@ export function createSetupJobManager(opts = {}) {
757
758
  commandDigest: authorizedCommandDigest,
758
759
  });
759
760
  atomicPrivateJson(paths.manifest, manifest);
761
+ // External attach is a real transport, not a daemon-hosted login with a
762
+ // second terminal layered on top. Seal and wait before any runner spawn.
763
+ if (clientPty) {
764
+ const authorization = {
765
+ executionId,
766
+ executable,
767
+ args: [...spec.args],
768
+ commandDigest: authorizedCommandDigest,
769
+ manifestDigest: manifest.manifestDigest,
770
+ };
771
+ const waiting = update(job.jobId, clientPtyWaitingPatch({
772
+ job,
773
+ deadlineAt: loginDeadlineAt,
774
+ startedAt: iso(),
775
+ command: spec.displayCommand,
776
+ authorization,
777
+ }));
778
+ log(job.jobId, `client_pty attach prepared: ${paths.manifest}`);
779
+ return waiting;
780
+ }
760
781
  if (daemonHosted) {
761
782
  // D-17 primary flow: launch the app-server runner DETACHED (no Terminal,
762
783
  // no login.command script). The runner survives daemon restart exactly
@@ -802,24 +823,6 @@ export function createSetupJobManager(opts = {}) {
802
823
  runner.unref();
803
824
  return waiting;
804
825
  }
805
- if (job.transport === "client_pty") {
806
- const authorization = {
807
- executionId,
808
- executable,
809
- args: [...spec.args],
810
- commandDigest: authorizedCommandDigest,
811
- manifestDigest: manifest.manifestDigest,
812
- };
813
- const waiting = update(job.jobId, clientPtyWaitingPatch({
814
- job,
815
- deadlineAt: loginDeadlineAt,
816
- startedAt: iso(),
817
- command: spec.displayCommand,
818
- authorization,
819
- }));
820
- log(job.jobId, `client_pty attach prepared: ${paths.manifest}`);
821
- return waiting;
822
- }
823
826
  // External-risk disclosure (v3.0.3, Bible): a browser-based OpenAI
824
827
  // sign-in completed in a browser holding ANOTHER account's session can
825
828
  // revoke sibling sessions (incl. the ChatGPT desktop app) server-side.
@@ -918,7 +921,7 @@ export function createSetupJobManager(opts = {}) {
918
921
  create(input, idempotency) {
919
922
  const request = ControlSetupJobCreateRequest.parse(input);
920
923
  const { harness, action } = request;
921
- const profileBinding = resolveLoginProfileBinding(harness, action, request.profileId);
924
+ const profileBinding = resolveLoginProfileBinding(harness, action, request.profileId, platform);
922
925
  assertDefaultLoginAllowed(harness, profileBinding !== null);
923
926
  const binding = idempotency ? { ...idempotency, request } : undefined;
924
927
  const prior = binding ? store.resolveCreate(binding) : null;
@@ -996,7 +999,7 @@ export function createSetupJobManager(opts = {}) {
996
999
  command: null,
997
1000
  guideUrl: profile.guideUrl,
998
1001
  message: profileBinding
999
- ? `${profile.note} This login targets the scoped Claudexor profile "${profileBinding.profileId}" (INV-135); the default vendor store is never touched.`
1002
+ ? `${profile.note} ${setupProfileBindingMessage(harness, profileBinding)}`
1000
1003
  : `${profile.note} The required same-harness smoke may consume quota; incremental billing is unknown.`,
1001
1004
  createdAt: iso(),
1002
1005
  startedAt: null,