@claudexor/cli 1.0.1 → 2.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (213) hide show
  1. package/dist/acp-surface-runner.d.ts +17 -0
  2. package/dist/acp-surface-runner.d.ts.map +1 -0
  3. package/dist/acp-surface-runner.js +187 -0
  4. package/dist/acp-surface-runner.js.map +1 -0
  5. package/dist/args.d.ts.map +1 -1
  6. package/dist/args.js.map +1 -1
  7. package/dist/bridge-serve.d.ts +3 -0
  8. package/dist/bridge-serve.d.ts.map +1 -0
  9. package/dist/bridge-serve.js +39 -0
  10. package/dist/bridge-serve.js.map +1 -0
  11. package/dist/capabilities.d.ts.map +1 -1
  12. package/dist/capabilities.js +12 -3
  13. package/dist/capabilities.js.map +1 -1
  14. package/dist/claude-oauth-usage.d.ts +33 -0
  15. package/dist/claude-oauth-usage.d.ts.map +1 -0
  16. package/dist/claude-oauth-usage.js +190 -0
  17. package/dist/claude-oauth-usage.js.map +1 -0
  18. package/dist/claude-statusline.d.ts +25 -0
  19. package/dist/claude-statusline.d.ts.map +1 -0
  20. package/dist/claude-statusline.js +259 -0
  21. package/dist/claude-statusline.js.map +1 -0
  22. package/dist/claudexord.js +346 -543
  23. package/dist/claudexord.js.map +1 -1
  24. package/dist/cli-io.d.ts +8 -9
  25. package/dist/cli-io.d.ts.map +1 -1
  26. package/dist/cli-io.js +11 -7
  27. package/dist/cli-io.js.map +1 -1
  28. package/dist/cli.js +475 -516
  29. package/dist/cli.js.map +1 -1
  30. package/dist/codex-quota-source.d.ts +11 -0
  31. package/dist/codex-quota-source.d.ts.map +1 -0
  32. package/dist/codex-quota-source.js +181 -0
  33. package/dist/codex-quota-source.js.map +1 -0
  34. package/dist/command-flags.d.ts +18 -0
  35. package/dist/command-flags.d.ts.map +1 -0
  36. package/dist/command-flags.js +124 -0
  37. package/dist/command-flags.js.map +1 -0
  38. package/dist/command-registry.d.ts +2 -40
  39. package/dist/command-registry.d.ts.map +1 -1
  40. package/dist/command-registry.js +74 -164
  41. package/dist/command-registry.js.map +1 -1
  42. package/dist/control-services.d.ts +2483 -0
  43. package/dist/control-services.d.ts.map +1 -0
  44. package/dist/control-services.js +437 -0
  45. package/dist/control-services.js.map +1 -0
  46. package/dist/credential-commands.d.ts +9 -0
  47. package/dist/credential-commands.d.ts.map +1 -0
  48. package/dist/credential-commands.js +224 -0
  49. package/dist/credential-commands.js.map +1 -0
  50. package/dist/daemon-lifecycle.d.ts +7 -3
  51. package/dist/daemon-lifecycle.d.ts.map +1 -1
  52. package/dist/daemon-lifecycle.js +40 -12
  53. package/dist/daemon-lifecycle.js.map +1 -1
  54. package/dist/daemon-run.d.ts +2 -0
  55. package/dist/daemon-run.d.ts.map +1 -1
  56. package/dist/daemon-run.js +62 -14
  57. package/dist/daemon-run.js.map +1 -1
  58. package/dist/daemon-runtime-shutdown.d.ts +58 -0
  59. package/dist/daemon-runtime-shutdown.d.ts.map +1 -0
  60. package/dist/daemon-runtime-shutdown.js +142 -0
  61. package/dist/daemon-runtime-shutdown.js.map +1 -0
  62. package/dist/decision.d.ts.map +1 -1
  63. package/dist/decision.js +12 -3
  64. package/dist/decision.js.map +1 -1
  65. package/dist/live.d.ts +29 -0
  66. package/dist/live.d.ts.map +1 -1
  67. package/dist/live.js +117 -6
  68. package/dist/live.js.map +1 -1
  69. package/dist/local-attachment.d.ts +14 -0
  70. package/dist/local-attachment.d.ts.map +1 -0
  71. package/dist/local-attachment.js +67 -0
  72. package/dist/local-attachment.js.map +1 -0
  73. package/dist/mcp-runner.d.ts +4 -15
  74. package/dist/mcp-runner.d.ts.map +1 -1
  75. package/dist/mcp-runner.js +273 -145
  76. package/dist/mcp-runner.js.map +1 -1
  77. package/dist/native-login.d.ts +21 -0
  78. package/dist/native-login.d.ts.map +1 -0
  79. package/dist/native-login.js +111 -0
  80. package/dist/native-login.js.map +1 -0
  81. package/dist/ops-commands.d.ts +8 -6
  82. package/dist/ops-commands.d.ts.map +1 -1
  83. package/dist/ops-commands.js +250 -168
  84. package/dist/ops-commands.js.map +1 -1
  85. package/dist/orchestrate-options.d.ts.map +1 -1
  86. package/dist/orchestrate-options.js +1 -1
  87. package/dist/orchestrate-options.js.map +1 -1
  88. package/dist/orphan-reaper.d.ts +4 -5
  89. package/dist/orphan-reaper.d.ts.map +1 -1
  90. package/dist/orphan-reaper.js +29 -56
  91. package/dist/orphan-reaper.js.map +1 -1
  92. package/dist/orphan-sweeper.d.ts +1 -2
  93. package/dist/orphan-sweeper.d.ts.map +1 -1
  94. package/dist/orphan-sweeper.js +29 -48
  95. package/dist/orphan-sweeper.js.map +1 -1
  96. package/dist/plugins.d.ts.map +1 -1
  97. package/dist/plugins.js +196 -64
  98. package/dist/plugins.js.map +1 -1
  99. package/dist/primary-output.d.ts.map +1 -1
  100. package/dist/primary-output.js.map +1 -1
  101. package/dist/profile-registration.d.ts +15 -0
  102. package/dist/profile-registration.d.ts.map +1 -0
  103. package/dist/profile-registration.js +68 -0
  104. package/dist/profile-registration.js.map +1 -0
  105. package/dist/project-command.d.ts +3 -0
  106. package/dist/project-command.d.ts.map +1 -0
  107. package/dist/project-command.js +87 -0
  108. package/dist/project-command.js.map +1 -0
  109. package/dist/quota-command.d.ts +3 -0
  110. package/dist/quota-command.d.ts.map +1 -0
  111. package/dist/quota-command.js +59 -0
  112. package/dist/quota-command.js.map +1 -0
  113. package/dist/registry.d.ts +1 -1
  114. package/dist/registry.d.ts.map +1 -1
  115. package/dist/registry.js +16 -4
  116. package/dist/registry.js.map +1 -1
  117. package/dist/release.d.ts.map +1 -1
  118. package/dist/release.js +15 -3
  119. package/dist/release.js.map +1 -1
  120. package/dist/repl.d.ts +3 -8
  121. package/dist/repl.d.ts.map +1 -1
  122. package/dist/repl.js +23 -122
  123. package/dist/repl.js.map +1 -1
  124. package/dist/request-preflight.d.ts +13 -0
  125. package/dist/request-preflight.d.ts.map +1 -0
  126. package/dist/request-preflight.js +81 -0
  127. package/dist/request-preflight.js.map +1 -0
  128. package/dist/retention-service.d.ts +24 -0
  129. package/dist/retention-service.d.ts.map +1 -0
  130. package/dist/retention-service.js +100 -0
  131. package/dist/retention-service.js.map +1 -0
  132. package/dist/retry-command-specs.d.ts +3 -0
  133. package/dist/retry-command-specs.d.ts.map +1 -0
  134. package/dist/retry-command-specs.js +21 -0
  135. package/dist/retry-command-specs.js.map +1 -0
  136. package/dist/retry-command.d.ts +4 -0
  137. package/dist/retry-command.d.ts.map +1 -0
  138. package/dist/retry-command.js +57 -0
  139. package/dist/retry-command.js.map +1 -0
  140. package/dist/review-command.d.ts.map +1 -1
  141. package/dist/review-command.js +47 -12
  142. package/dist/review-command.js.map +1 -1
  143. package/dist/run-options.d.ts +2 -2
  144. package/dist/run-options.d.ts.map +1 -1
  145. package/dist/run-options.js +27 -5
  146. package/dist/run-options.js.map +1 -1
  147. package/dist/settings-command.d.ts.map +1 -1
  148. package/dist/settings-command.js +143 -188
  149. package/dist/settings-command.js.map +1 -1
  150. package/dist/settings-service.d.ts +50 -0
  151. package/dist/settings-service.d.ts.map +1 -1
  152. package/dist/settings-service.js +67 -1
  153. package/dist/settings-service.js.map +1 -1
  154. package/dist/setup-job-reducer.d.ts +9 -0
  155. package/dist/setup-job-reducer.d.ts.map +1 -0
  156. package/dist/setup-job-reducer.js +290 -0
  157. package/dist/setup-job-reducer.js.map +1 -0
  158. package/dist/setup-job-store.d.ts +250 -0
  159. package/dist/setup-job-store.d.ts.map +1 -0
  160. package/dist/setup-job-store.js +359 -0
  161. package/dist/setup-job-store.js.map +1 -0
  162. package/dist/setup-job-support.d.ts +27 -0
  163. package/dist/setup-job-support.d.ts.map +1 -0
  164. package/dist/setup-job-support.js +141 -0
  165. package/dist/setup-job-support.js.map +1 -0
  166. package/dist/setup-jobs.d.ts +437 -22
  167. package/dist/setup-jobs.d.ts.map +1 -1
  168. package/dist/setup-jobs.js +813 -423
  169. package/dist/setup-jobs.js.map +1 -1
  170. package/dist/setup-lifecycle-binding.d.ts +40 -0
  171. package/dist/setup-lifecycle-binding.d.ts.map +1 -0
  172. package/dist/setup-lifecycle-binding.js +159 -0
  173. package/dist/setup-lifecycle-binding.js.map +1 -0
  174. package/dist/setup-login-protocol.d.ts +13 -0
  175. package/dist/setup-login-protocol.d.ts.map +1 -0
  176. package/dist/setup-login-protocol.js +179 -0
  177. package/dist/setup-login-protocol.js.map +1 -0
  178. package/dist/setup-login-runner.d.ts +20 -0
  179. package/dist/setup-login-runner.d.ts.map +1 -0
  180. package/dist/setup-login-runner.js +225 -0
  181. package/dist/setup-login-runner.js.map +1 -0
  182. package/dist/setup-supervisor.d.ts +53 -0
  183. package/dist/setup-supervisor.d.ts.map +1 -0
  184. package/dist/setup-supervisor.js +177 -0
  185. package/dist/setup-supervisor.js.map +1 -0
  186. package/dist/spec.d.ts +9 -20
  187. package/dist/spec.d.ts.map +1 -1
  188. package/dist/spec.js +49 -21
  189. package/dist/spec.js.map +1 -1
  190. package/dist/thread-delivery.d.ts +18 -0
  191. package/dist/thread-delivery.d.ts.map +1 -0
  192. package/dist/thread-delivery.js +67 -0
  193. package/dist/thread-delivery.js.map +1 -0
  194. package/dist/thread-select.d.ts +9 -0
  195. package/dist/thread-select.d.ts.map +1 -0
  196. package/dist/thread-select.js +12 -0
  197. package/dist/thread-select.js.map +1 -0
  198. package/dist/trust-command.d.ts.map +1 -1
  199. package/dist/trust-command.js +69 -61
  200. package/dist/trust-command.js.map +1 -1
  201. package/dist/trust-services.d.ts +5 -6
  202. package/dist/trust-services.d.ts.map +1 -1
  203. package/dist/trust-services.js +42 -13
  204. package/dist/trust-services.js.map +1 -1
  205. package/package.json +24 -22
  206. package/dist/attachment-resolver.d.ts +0 -11
  207. package/dist/attachment-resolver.d.ts.map +0 -1
  208. package/dist/attachment-resolver.js +0 -61
  209. package/dist/attachment-resolver.js.map +0 -1
  210. package/dist/settings-display.d.ts +0 -3
  211. package/dist/settings-display.d.ts.map +0 -1
  212. package/dist/settings-display.js +0 -33
  213. package/dist/settings-display.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-job-support.d.ts","sourceRoot":"","sources":["../src/setup-job-support.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,KAAK,EACV,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAIvE,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,0BAA0B,EAAE,YAAY,CAa3E,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,0BAA0B,EACnC,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuCjD;AAED;kFACkF;AAClF,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,GAC1D,CACD,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,WAAW,KACrB,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAU3C;AAED,wBAAgB,2BAA2B,CACzC,SAAS,GAAE,MAAwB,EACnC,UAAU,GAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAoB,GACjD,MAAM,CAIR;AAED,wBAAgB,aAAa,CAC3B,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,eAAe,EAC3B,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAwBf;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,UAAU,EAAE,eAAe,EAC3B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,CAAC,CAAC,CAgCZ;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,kBAAkB,GAAG,IAAI,CAOnF;AAED,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,eAAe,EACpB,KAAK,EAAE,qBAAqB,GAC3B,OAAO,CAQT;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Closure-free support owners for the setup-job manager (complexity split:
3
+ * setup-jobs.ts is at its ratchet cap). Everything here is a pure function or
4
+ * a parameterized factory — no store, supervisor, or journal access.
5
+ */
6
+ import { existsSync } from "node:fs";
7
+ import { dirname, resolve } from "node:path";
8
+ import { fileURLToPath } from "node:url";
9
+ import { parseProcessGroupHandle, } from "@claudexor/core";
10
+ import { loadConfig } from "@claudexor/config";
11
+ import { canonicalProfileConfigDir } from "@claudexor/harness-claude";
12
+ import { canonicalCodexProfileHome } from "@claudexor/harness-codex";
13
+ import { noProjectRepoRoot } from "@claudexor/util";
14
+ const NO_PROJECT_ROOT = noProjectRepoRoot();
15
+ export const SETUP_PROFILES = {
16
+ codex: {
17
+ guideUrl: "https://developers.openai.com/codex/auth/",
18
+ note: "Codex native login updates the official vendor-owned CLI session. Exact subscription setup never falls back to a managed API key.",
19
+ },
20
+ claude: {
21
+ guideUrl: "https://code.claude.com/docs/en/authentication",
22
+ note: "Claude Code native login updates the official vendor-owned CLI session. Exact subscription setup never falls back to a managed API key.",
23
+ },
24
+ cursor: {
25
+ guideUrl: "https://docs.cursor.com/en/cli/reference/authentication",
26
+ note: "Cursor native CLI login is reused when available.",
27
+ },
28
+ };
29
+ /**
30
+ * Resolve an INV-135 profile-targeted login request to its canonical scoped
31
+ * config dir. Typed 400s: an unknown/disabled/secret-ref profile must refuse
32
+ * at create time, never open a Terminal login into the wrong store.
33
+ */
34
+ export function resolveProfileBinding(harness, profileId) {
35
+ if (!profileId)
36
+ return null;
37
+ if (harness !== "claude" && harness !== "codex") {
38
+ throw Object.assign(new Error(`harness "${harness}" has no isolated config-dir login; only claude and codex support profile logins`), { status: 400 });
39
+ }
40
+ const profile = loadConfig(NO_PROJECT_ROOT).global.credential_profiles.find((entry) => entry.harness_id === harness && entry.profile_id === profileId);
41
+ if (!profile) {
42
+ 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 });
43
+ }
44
+ if (!profile.enabled) {
45
+ throw Object.assign(new Error(`credential profile "${profileId}" is disabled`), {
46
+ status: 400,
47
+ });
48
+ }
49
+ if (profile.credential_kind !== "config_dir_login") {
50
+ throw Object.assign(new Error(`credential profile "${profileId}" is ${profile.credential_kind}; only config_dir_login profiles use the native login flow (store its secret instead)`), { status: 400 });
51
+ }
52
+ const configDir = harness === "claude"
53
+ ? canonicalProfileConfigDir(profile.isolation_locator ?? "")
54
+ : canonicalCodexProfileHome(profile.isolation_locator ?? "");
55
+ return { profileId, configDir };
56
+ }
57
+ /** INV-135 profile verification: the registry adapter's doctor probe against
58
+ * the durable registry entry — the SAME truth `claudexor profiles login` uses. */
59
+ export function profileDoctorProbe(getAdapter) {
60
+ return async (harness, profileId, abortSignal) => {
61
+ const profile = loadConfig(NO_PROJECT_ROOT).global.credential_profiles.find((entry) => entry.harness_id === harness && entry.profile_id === profileId);
62
+ if (!profile)
63
+ return null;
64
+ const adapter = getAdapter(harness);
65
+ if (!adapter?.probeCredentialProfile)
66
+ return null;
67
+ return adapter.probeCredentialProfile(profile, abortSignal);
68
+ };
69
+ }
70
+ export function resolveSetupLoginRunnerPath(moduleUrl = import.meta.url, pathExists = existsSync) {
71
+ const directory = dirname(fileURLToPath(moduleUrl));
72
+ const bundled = resolve(directory, "setup-login-runner.cjs");
73
+ return pathExists(bundled) ? bundled : resolve(directory, "setup-login-runner.js");
74
+ }
75
+ export function waitWithAbort(ms, controller, sleep) {
76
+ if (controller.signal.aborted)
77
+ return Promise.reject(controller.signal.reason);
78
+ return new Promise((resolveWait, rejectWait) => {
79
+ let settled = false;
80
+ const settle = (task) => {
81
+ if (settled)
82
+ return;
83
+ settled = true;
84
+ controller.signal.removeEventListener("abort", onAbort);
85
+ task();
86
+ };
87
+ const onAbort = () => settle(() => rejectWait(controller.signal.reason instanceof Error
88
+ ? controller.signal.reason
89
+ : new Error("setup operation aborted")));
90
+ controller.signal.addEventListener("abort", onAbort, { once: true });
91
+ sleep(ms).then(() => settle(resolveWait), (error) => settle(() => rejectWait(error)));
92
+ });
93
+ }
94
+ export function withAbortAndTimeout(operation, controller, timeoutMs, label) {
95
+ if (controller.signal.aborted)
96
+ return Promise.reject(controller.signal.reason);
97
+ return new Promise((resolveOperation, rejectOperation) => {
98
+ let settled = false;
99
+ const settle = (task) => {
100
+ if (settled)
101
+ return;
102
+ settled = true;
103
+ clearTimeout(timer);
104
+ controller.signal.removeEventListener("abort", onAbort);
105
+ task();
106
+ };
107
+ const onAbort = () => settle(() => rejectOperation(controller.signal.reason instanceof Error
108
+ ? controller.signal.reason
109
+ : new Error(`${label} aborted`)));
110
+ const timer = setTimeout(() => {
111
+ const error = Object.assign(new Error(`${label} timed out after ${timeoutMs / 1000}s`), {
112
+ code: "setup_timeout",
113
+ });
114
+ controller.abort(error);
115
+ }, timeoutMs);
116
+ timer.unref();
117
+ controller.signal.addEventListener("abort", onAbort, { once: true });
118
+ operation().then((value) => settle(() => resolveOperation(value)), (error) => settle(() => rejectOperation(error)));
119
+ });
120
+ }
121
+ export function processGroupFromJob(job) {
122
+ if (!job.execution)
123
+ return null;
124
+ try {
125
+ return parseProcessGroupHandle(job.execution.processGroup);
126
+ }
127
+ catch {
128
+ return null;
129
+ }
130
+ }
131
+ export function stateMatchesDurableExecution(job, state) {
132
+ return (job.execution?.executionId === state.executionId &&
133
+ job.execution.commandDigest === state.commandDigest &&
134
+ job.execution.manifestDigest === state.manifestDigest &&
135
+ job.execution.observedAt === state.observedAt &&
136
+ JSON.stringify(job.execution.processGroup) === JSON.stringify(state.processGroup));
137
+ }
138
+ export function shellQuote(value) {
139
+ return `'${value.replaceAll("'", `'"'"'`)}'`;
140
+ }
141
+ //# sourceMappingURL=setup-job-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-job-support.js","sourceRoot":"","sources":["../src/setup-job-support.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,443 @@
1
- import { type ControlSetupJob } from "@claudexor/schema";
2
- /** Native login command for a harness (null = API-key refs only). Single
3
- * source for both the setup-job Terminal handoff and `claudexor auth login`. */
4
- export declare function nativeLoginCommand(harness: string): string | null;
5
- /** Minimal doctor view the in-process verification needs (gateway statusAll). */
6
- export interface SetupDoctorStatus {
7
- id: string;
8
- status: string;
9
- checks: {
10
- id: string;
11
- status: string;
12
- }[];
13
- reasons?: string[];
14
- }
1
+ import { spawn, type ChildProcess } from "node:child_process";
2
+ import { ProcessGroupService } from "@claudexor/core";
3
+ import { type AuthSourceReadiness, type AuthCapabilityBinding, type AuthCapabilityReceipt, type ControlHarnessSetupHarness, type CredentialProfileStatus, type ControlSetupJob, type ControlSetupJobListFilter } from "@claudexor/schema";
4
+ import { SetupJobStore } from "./setup-job-store.js";
15
5
  export interface SetupJobManagerOptions {
16
- /** Injectable doctor probe (tests); defaults to the real gateway statusAll. */
17
- statusAll?: () => Promise<SetupDoctorStatus[]>;
18
- /** Override the doctor phase timeout (tests). */
19
- doctorTimeoutMs?: number;
6
+ rootDir?: string;
7
+ store?: SetupJobStore;
8
+ probeAuthSource?: (harness: string, source: "native_session", opts: {
9
+ fresh: true;
10
+ authPreference: "subscription";
11
+ abortSignal: AbortSignal;
12
+ }) => Promise<AuthSourceReadiness | null>;
13
+ /** INV-135 profile jobs verify the PROFILE's scoped store, never the default
14
+ * native session; the doctor probe is the verification truth (same contract
15
+ * as `claudexor profiles login`). */
16
+ probeCredentialProfile?: (harness: string, profileId: string, abortSignal: AbortSignal) => Promise<CredentialProfileStatus | null>;
17
+ authCapabilityVerifier?: {
18
+ prepare(input: {
19
+ attemptId: string;
20
+ harness: string;
21
+ requested: "subscription";
22
+ requiredRoute: "vendor_native";
23
+ requiredSource: "native_session";
24
+ }): {
25
+ binding: AuthCapabilityBinding;
26
+ };
27
+ verify(input: {
28
+ binding: AuthCapabilityBinding;
29
+ startedAt: string;
30
+ abortSignal?: AbortSignal;
31
+ }): Promise<AuthCapabilityReceipt>;
32
+ cleanup(attemptId: string): void;
33
+ };
34
+ onCredentialStateMayHaveChanged?: (harness: ControlHarnessSetupHarness) => void;
35
+ launcherTimeoutMs?: number;
36
+ loginTimeoutMs?: number;
37
+ verifyTimeoutMs?: number;
38
+ capabilityTimeoutMs?: number;
39
+ verifyPollMs?: number;
40
+ monitorPollMs?: number;
41
+ terminationGraceMs?: number;
42
+ platform?: NodeJS.Platform;
43
+ now?: () => Date;
44
+ sleep?: (ms: number) => Promise<void>;
45
+ spawn?: typeof spawn;
46
+ openTerminal?: (scriptPath: string) => ChildProcess;
47
+ processGroups?: ProcessGroupService;
48
+ runnerPath?: string;
49
+ nodePath?: string;
20
50
  }
21
51
  export declare function createSetupJobManager(opts?: SetupJobManagerOptions): {
22
- create(input: unknown): ControlSetupJob;
23
- confirm(input: unknown): ControlSetupJob;
24
- list(): ControlSetupJob[];
52
+ start: () => Promise<void>;
53
+ beginDrain: () => void;
54
+ shutdown: () => Promise<void>;
55
+ create(input: unknown, idempotency?: {
56
+ key: string;
57
+ client: string;
58
+ }): ControlSetupJob;
59
+ list(filter?: ControlSetupJobListFilter): ControlSetupJob[];
25
60
  status(input: unknown): ControlSetupJob;
26
- cancel(input: unknown): ControlSetupJob;
61
+ snapshot(input: unknown): {
62
+ cursor: string;
63
+ sequence: number;
64
+ job: {
65
+ message: string;
66
+ harness: "cursor" | "codex" | "claude";
67
+ startedAt: string | null;
68
+ state: "failed" | "cancelled" | "running" | "interrupted_unknown" | "queued" | "succeeded" | "timed_out" | "waiting_for_input" | "not_supported";
69
+ profileId: string | null;
70
+ command: string | null;
71
+ createdAt: string;
72
+ jobId: string;
73
+ phase: "completed" | "preparing" | "launching" | "awaiting_user" | "verifying" | "cancelling";
74
+ finishedAt: string | null;
75
+ action: "login";
76
+ guideUrl: string | null;
77
+ outcome?: {
78
+ reason: "completed" | "interrupted_unknown" | "timed_out" | "not_supported" | "launch_failed" | "command_failed" | "auth_not_ready" | "capability_verification_failed" | "credential_route_mismatch" | "cancelled_by_user" | "cancelled_on_restart" | "interrupted" | "termination_unconfirmed";
79
+ exitCode?: number | null | undefined;
80
+ signal?: string | null | undefined;
81
+ } | undefined;
82
+ execution?: {
83
+ observedAt: string;
84
+ commandDigest: string;
85
+ executionId: string;
86
+ manifestDigest: string;
87
+ processGroup: {
88
+ schemaVersion: 1;
89
+ pgid: number;
90
+ leader: {
91
+ status: "known";
92
+ source: "procfs_stat" | "proc_pidinfo";
93
+ pid: number;
94
+ platform: "linux" | "darwin";
95
+ startToken: string;
96
+ processGroupId: number;
97
+ };
98
+ };
99
+ permitIssuedAt?: string | undefined;
100
+ } | undefined;
101
+ deadlineAt?: string | undefined;
102
+ authCapability?: {
103
+ attemptId: string;
104
+ challengeDigest: string;
105
+ requestDigest: string;
106
+ disclosure: {
107
+ schemaVersion: 1;
108
+ protocolVersion: 1;
109
+ harness: string;
110
+ requested: "auto" | "subscription" | "api_key";
111
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
112
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
113
+ networkScope: "selected_harness_only";
114
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
115
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
116
+ mayConsumeQuota: boolean;
117
+ generatedAt: string;
118
+ };
119
+ state: "disclosed";
120
+ } | {
121
+ attemptId: string;
122
+ startedAt: string;
123
+ challengeDigest: string;
124
+ requestDigest: string;
125
+ disclosure: {
126
+ schemaVersion: 1;
127
+ protocolVersion: 1;
128
+ harness: string;
129
+ requested: "auto" | "subscription" | "api_key";
130
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
131
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
132
+ networkScope: "selected_harness_only";
133
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
134
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
135
+ mayConsumeQuota: boolean;
136
+ generatedAt: string;
137
+ };
138
+ state: "running";
139
+ } | {
140
+ attemptId: string;
141
+ startedAt: string;
142
+ completedAt: string;
143
+ challengeDigest: string;
144
+ requestDigest: string;
145
+ disclosure: {
146
+ schemaVersion: 1;
147
+ protocolVersion: 1;
148
+ harness: string;
149
+ requested: "auto" | "subscription" | "api_key";
150
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
151
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
152
+ networkScope: "selected_harness_only";
153
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
154
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
155
+ mayConsumeQuota: boolean;
156
+ generatedAt: string;
157
+ };
158
+ state: "completed";
159
+ receipt: {
160
+ availability: "unknown" | "available" | "unavailable";
161
+ verification: "passed" | "failed" | "not_run";
162
+ harness: string;
163
+ requested: "auto" | "subscription" | "api_key";
164
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
165
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
166
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
167
+ receiptId: string;
168
+ attemptId: string;
169
+ effective: "local" | "vendor_native" | "managed_api_key" | null;
170
+ effectiveSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
171
+ selectionReason: "harness_error" | "exact_requested_route" | "adapter_unavailable" | "request_mismatch" | "route_missing" | "route_mismatch" | "source_missing" | "source_mismatch" | "adapter_error" | "missing_completion" | "response_mismatch" | "scratch_mutated" | "protocol_violation" | "adapter_identity_mismatch" | "cancelled";
172
+ costKnowledge: "exact" | "unknown" | "estimated";
173
+ startedAt: string;
174
+ completedAt: string;
175
+ challengeDigest: string;
176
+ requestDigest: string;
177
+ responseDigest: string;
178
+ streamDigest: string;
179
+ scratchBeforeDigest: string;
180
+ scratchAfterDigest: string;
181
+ stream: {
182
+ aborted: boolean;
183
+ startedEvents: number;
184
+ completedEvents: number;
185
+ errorEvents: number;
186
+ unexpectedToolEvents: number;
187
+ interactionEvents: number;
188
+ sessionMismatchEvents: number;
189
+ eventsAfterCompleted: number;
190
+ };
191
+ evidenceRefs: string[];
192
+ costUsd?: number | undefined;
193
+ };
194
+ } | {
195
+ attemptId: string;
196
+ startedAt: string;
197
+ challengeDigest: string;
198
+ requestDigest: string;
199
+ disclosure: {
200
+ schemaVersion: 1;
201
+ protocolVersion: 1;
202
+ harness: string;
203
+ requested: "auto" | "subscription" | "api_key";
204
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
205
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
206
+ networkScope: "selected_harness_only";
207
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
208
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
209
+ mayConsumeQuota: boolean;
210
+ generatedAt: string;
211
+ };
212
+ state: "interrupted_unknown";
213
+ interruptedAt: string;
214
+ } | undefined;
215
+ authorization?: {
216
+ args: string[];
217
+ commandDigest: string;
218
+ executionId: string;
219
+ manifestDigest: string;
220
+ executable: {
221
+ sha256: string;
222
+ mode: number;
223
+ realpath: string;
224
+ size: number;
225
+ device: string;
226
+ inode: string;
227
+ };
228
+ } | undefined;
229
+ nativeCommand?: {
230
+ commandDigest: string;
231
+ finishedAt: string;
232
+ executionId: string;
233
+ manifestDigest: string;
234
+ permitIssuedAt: string | null;
235
+ commandStarted: boolean;
236
+ exitCode: number | null;
237
+ signal: string | null;
238
+ errorCode?: "permit_timeout" | "spawn_failed" | undefined;
239
+ } | undefined;
240
+ terminationReconciliation?: {
241
+ status: "empty";
242
+ observedAt: string;
243
+ } | undefined;
244
+ };
245
+ };
246
+ events(input: unknown): {
247
+ message: string;
248
+ cursor: string;
249
+ state: "failed" | "cancelled" | "running" | "interrupted_unknown" | "queued" | "succeeded" | "timed_out" | "waiting_for_input" | "not_supported";
250
+ kind: "status";
251
+ time: string;
252
+ jobId: string;
253
+ previousCursor: string | null;
254
+ sequence: number;
255
+ job: {
256
+ message: string;
257
+ harness: "cursor" | "codex" | "claude";
258
+ startedAt: string | null;
259
+ state: "failed" | "cancelled" | "running" | "interrupted_unknown" | "queued" | "succeeded" | "timed_out" | "waiting_for_input" | "not_supported";
260
+ profileId: string | null;
261
+ command: string | null;
262
+ createdAt: string;
263
+ jobId: string;
264
+ phase: "completed" | "preparing" | "launching" | "awaiting_user" | "verifying" | "cancelling";
265
+ finishedAt: string | null;
266
+ action: "login";
267
+ guideUrl: string | null;
268
+ outcome?: {
269
+ reason: "completed" | "interrupted_unknown" | "timed_out" | "not_supported" | "launch_failed" | "command_failed" | "auth_not_ready" | "capability_verification_failed" | "credential_route_mismatch" | "cancelled_by_user" | "cancelled_on_restart" | "interrupted" | "termination_unconfirmed";
270
+ exitCode?: number | null | undefined;
271
+ signal?: string | null | undefined;
272
+ } | undefined;
273
+ execution?: {
274
+ observedAt: string;
275
+ commandDigest: string;
276
+ executionId: string;
277
+ manifestDigest: string;
278
+ processGroup: {
279
+ schemaVersion: 1;
280
+ pgid: number;
281
+ leader: {
282
+ status: "known";
283
+ source: "procfs_stat" | "proc_pidinfo";
284
+ pid: number;
285
+ platform: "linux" | "darwin";
286
+ startToken: string;
287
+ processGroupId: number;
288
+ };
289
+ };
290
+ permitIssuedAt?: string | undefined;
291
+ } | undefined;
292
+ deadlineAt?: string | undefined;
293
+ authCapability?: {
294
+ attemptId: string;
295
+ challengeDigest: string;
296
+ requestDigest: string;
297
+ disclosure: {
298
+ schemaVersion: 1;
299
+ protocolVersion: 1;
300
+ harness: string;
301
+ requested: "auto" | "subscription" | "api_key";
302
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
303
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
304
+ networkScope: "selected_harness_only";
305
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
306
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
307
+ mayConsumeQuota: boolean;
308
+ generatedAt: string;
309
+ };
310
+ state: "disclosed";
311
+ } | {
312
+ attemptId: string;
313
+ startedAt: string;
314
+ challengeDigest: string;
315
+ requestDigest: string;
316
+ disclosure: {
317
+ schemaVersion: 1;
318
+ protocolVersion: 1;
319
+ harness: string;
320
+ requested: "auto" | "subscription" | "api_key";
321
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
322
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
323
+ networkScope: "selected_harness_only";
324
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
325
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
326
+ mayConsumeQuota: boolean;
327
+ generatedAt: string;
328
+ };
329
+ state: "running";
330
+ } | {
331
+ attemptId: string;
332
+ startedAt: string;
333
+ completedAt: string;
334
+ challengeDigest: string;
335
+ requestDigest: string;
336
+ disclosure: {
337
+ schemaVersion: 1;
338
+ protocolVersion: 1;
339
+ harness: string;
340
+ requested: "auto" | "subscription" | "api_key";
341
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
342
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
343
+ networkScope: "selected_harness_only";
344
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
345
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
346
+ mayConsumeQuota: boolean;
347
+ generatedAt: string;
348
+ };
349
+ state: "completed";
350
+ receipt: {
351
+ availability: "unknown" | "available" | "unavailable";
352
+ verification: "passed" | "failed" | "not_run";
353
+ harness: string;
354
+ requested: "auto" | "subscription" | "api_key";
355
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
356
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
357
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
358
+ receiptId: string;
359
+ attemptId: string;
360
+ effective: "local" | "vendor_native" | "managed_api_key" | null;
361
+ effectiveSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none" | null;
362
+ selectionReason: "harness_error" | "exact_requested_route" | "adapter_unavailable" | "request_mismatch" | "route_missing" | "route_mismatch" | "source_missing" | "source_mismatch" | "adapter_error" | "missing_completion" | "response_mismatch" | "scratch_mutated" | "protocol_violation" | "adapter_identity_mismatch" | "cancelled";
363
+ costKnowledge: "exact" | "unknown" | "estimated";
364
+ startedAt: string;
365
+ completedAt: string;
366
+ challengeDigest: string;
367
+ requestDigest: string;
368
+ responseDigest: string;
369
+ streamDigest: string;
370
+ scratchBeforeDigest: string;
371
+ scratchAfterDigest: string;
372
+ stream: {
373
+ aborted: boolean;
374
+ startedEvents: number;
375
+ completedEvents: number;
376
+ errorEvents: number;
377
+ unexpectedToolEvents: number;
378
+ interactionEvents: number;
379
+ sessionMismatchEvents: number;
380
+ eventsAfterCompleted: number;
381
+ };
382
+ evidenceRefs: string[];
383
+ costUsd?: number | undefined;
384
+ };
385
+ } | {
386
+ attemptId: string;
387
+ startedAt: string;
388
+ challengeDigest: string;
389
+ requestDigest: string;
390
+ disclosure: {
391
+ schemaVersion: 1;
392
+ protocolVersion: 1;
393
+ harness: string;
394
+ requested: "auto" | "subscription" | "api_key";
395
+ requiredRoute: "local" | "vendor_native" | "managed_api_key";
396
+ requiredSource: "native_session" | "oauth_token_env" | "api_key_env" | "api_key_flag" | "provider_auth_file" | "none";
397
+ networkScope: "selected_harness_only";
398
+ billingKnowledge: "unknown" | "proven_zero" | "subscription_entitlement" | "metered";
399
+ incrementalCostKnowledge: "exact" | "unknown" | "estimated";
400
+ mayConsumeQuota: boolean;
401
+ generatedAt: string;
402
+ };
403
+ state: "interrupted_unknown";
404
+ interruptedAt: string;
405
+ } | undefined;
406
+ authorization?: {
407
+ args: string[];
408
+ commandDigest: string;
409
+ executionId: string;
410
+ manifestDigest: string;
411
+ executable: {
412
+ sha256: string;
413
+ mode: number;
414
+ realpath: string;
415
+ size: number;
416
+ device: string;
417
+ inode: string;
418
+ };
419
+ } | undefined;
420
+ nativeCommand?: {
421
+ commandDigest: string;
422
+ finishedAt: string;
423
+ executionId: string;
424
+ manifestDigest: string;
425
+ permitIssuedAt: string | null;
426
+ commandStarted: boolean;
427
+ exitCode: number | null;
428
+ signal: string | null;
429
+ errorCode?: "permit_timeout" | "spawn_failed" | undefined;
430
+ } | undefined;
431
+ terminationReconciliation?: {
432
+ status: "empty";
433
+ observedAt: string;
434
+ } | undefined;
435
+ };
436
+ }[];
437
+ cancel(input: unknown): Promise<ControlSetupJob>;
438
+ reconcile(input: unknown): ControlSetupJob;
439
+ extend(input: unknown): ControlSetupJob;
440
+ _store: SetupJobStore;
441
+ _supervisorHealth: () => import("./setup-supervisor.js").SetupSupervisorHealth;
27
442
  };
28
443
  //# sourceMappingURL=setup-jobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-jobs.d.ts","sourceRoot":"","sources":["../src/setup-jobs.ts"],"names":[],"mappings":"AAOA,OAAO,EAA4C,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAwDnG;gFACgF;AAChF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAEjE;AAYD,iFAAiF;AACjF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,sBAAsB;IACrC,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAC/C,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,sBAA2B;kBA4PrD,OAAO,GAAG,eAAe;mBAkFxB,OAAO,GAAG,eAAe;YAkBhC,eAAe,EAAE;kBAIX,OAAO,GAAG,eAAe;kBAQzB,OAAO,GAAG,eAAe;EAwB1C"}
1
+ {"version":3,"file":"setup-jobs.d.ts","sourceRoot":"","sources":["../src/setup-jobs.ts"],"names":[],"mappings":"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"}