@claudexor/cli 3.4.2 → 3.5.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 (90) hide show
  1. package/dist/accounts-services.d.ts +2 -1
  2. package/dist/accounts-services.d.ts.map +1 -1
  3. package/dist/agy-quota-source.d.ts +36 -0
  4. package/dist/agy-quota-source.d.ts.map +1 -0
  5. package/dist/agy-quota-source.js +334 -0
  6. package/dist/agy-quota-source.js.map +1 -0
  7. package/dist/auth-login-harnesses.d.ts +11 -0
  8. package/dist/auth-login-harnesses.d.ts.map +1 -0
  9. package/dist/auth-login-harnesses.js +17 -0
  10. package/dist/auth-login-harnesses.js.map +1 -0
  11. package/dist/command-registry.d.ts.map +1 -1
  12. package/dist/command-registry.js +2 -13
  13. package/dist/command-registry.js.map +1 -1
  14. package/dist/config-dir-login-harnesses.d.ts +7 -0
  15. package/dist/config-dir-login-harnesses.d.ts.map +1 -0
  16. package/dist/config-dir-login-harnesses.js +46 -0
  17. package/dist/config-dir-login-harnesses.js.map +1 -0
  18. package/dist/control-services.d.ts +28 -14
  19. package/dist/control-services.d.ts.map +1 -1
  20. package/dist/control-services.js +11 -11
  21. package/dist/control-services.js.map +1 -1
  22. package/dist/credential-commands.d.ts.map +1 -1
  23. package/dist/credential-commands.js +5 -8
  24. package/dist/credential-commands.js.map +1 -1
  25. package/dist/harness-command-specs.d.ts +17 -0
  26. package/dist/harness-command-specs.d.ts.map +1 -0
  27. package/dist/harness-command-specs.js +22 -0
  28. package/dist/harness-command-specs.js.map +1 -0
  29. package/dist/harness-command.d.ts +4 -4
  30. package/dist/harness-command.d.ts.map +1 -1
  31. package/dist/harness-command.js +6 -5
  32. package/dist/harness-command.js.map +1 -1
  33. package/dist/harness-installer.d.ts +23 -10
  34. package/dist/harness-installer.d.ts.map +1 -1
  35. package/dist/harness-installer.js +93 -33
  36. package/dist/harness-installer.js.map +1 -1
  37. package/dist/native-login.d.ts +10 -1
  38. package/dist/native-login.d.ts.map +1 -1
  39. package/dist/native-login.js +50 -1
  40. package/dist/native-login.js.map +1 -1
  41. package/dist/ops-commands.d.ts +1 -2
  42. package/dist/ops-commands.d.ts.map +1 -1
  43. package/dist/ops-commands.js +6 -5
  44. package/dist/ops-commands.js.map +1 -1
  45. package/dist/profile-registration.d.ts.map +1 -1
  46. package/dist/profile-registration.js +3 -2
  47. package/dist/profile-registration.js.map +1 -1
  48. package/dist/quota-refreshers.d.ts +3 -0
  49. package/dist/quota-refreshers.d.ts.map +1 -1
  50. package/dist/quota-refreshers.js +2 -0
  51. package/dist/quota-refreshers.js.map +1 -1
  52. package/dist/quota-services.d.ts +4 -2
  53. package/dist/quota-services.d.ts.map +1 -1
  54. package/dist/quota-subject-universe.d.ts.map +1 -1
  55. package/dist/quota-subject-universe.js +5 -2
  56. package/dist/quota-subject-universe.js.map +1 -1
  57. package/dist/registry.d.ts +1 -1
  58. package/dist/registry.d.ts.map +1 -1
  59. package/dist/registry.js +3 -1
  60. package/dist/registry.js.map +1 -1
  61. package/dist/setup-job-store.d.ts +4 -2
  62. package/dist/setup-job-store.d.ts.map +1 -1
  63. package/dist/setup-job-support.d.ts +33 -1
  64. package/dist/setup-job-support.d.ts.map +1 -1
  65. package/dist/setup-job-support.js +64 -11
  66. package/dist/setup-job-support.js.map +1 -1
  67. package/dist/setup-jobs.d.ts +8 -4
  68. package/dist/setup-jobs.d.ts.map +1 -1
  69. package/dist/setup-jobs.js +16 -17
  70. package/dist/setup-jobs.js.map +1 -1
  71. package/dist/setup-login-completion.d.ts.map +1 -1
  72. package/dist/setup-login-completion.js +16 -0
  73. package/dist/setup-login-completion.js.map +1 -1
  74. package/dist/setup-login-io.d.ts +7 -1
  75. package/dist/setup-login-io.d.ts.map +1 -1
  76. package/dist/setup-login-io.js +43 -3
  77. package/dist/setup-login-io.js.map +1 -1
  78. package/dist/setup-login-pty.d.ts +27 -0
  79. package/dist/setup-login-pty.d.ts.map +1 -0
  80. package/dist/setup-login-pty.js +58 -0
  81. package/dist/setup-login-pty.js.map +1 -0
  82. package/dist/setup-login-runner.d.ts +1 -9
  83. package/dist/setup-login-runner.d.ts.map +1 -1
  84. package/dist/setup-login-runner.js +17 -49
  85. package/dist/setup-login-runner.js.map +1 -1
  86. package/dist/setup-login-url.d.ts +10 -0
  87. package/dist/setup-login-url.d.ts.map +1 -0
  88. package/dist/setup-login-url.js +48 -0
  89. package/dist/setup-login-url.js.map +1 -0
  90. package/package.json +24 -23
@@ -139,12 +139,13 @@ export declare function createCredentialProfilesService(quotaRegistry: () => Quo
139
139
  id: string;
140
140
  label: string;
141
141
  applies_to_models?: string[] | null | undefined;
142
+ applies_to_unspecified_model?: boolean | undefined;
142
143
  used_ratio: number | null;
143
144
  window_seconds: number | null;
144
145
  resets_at: string | null;
145
146
  cooldown_until: string | null;
146
147
  }[];
147
- source: "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout";
148
+ source: "agy_command_usage" | "claude_api_retry" | "claude_oauth_usage" | "claude_statusline" | "codex_app_server" | "codex_rollout";
148
149
  observed_at: string;
149
150
  freshness: "fresh" | "stale" | "unknown";
150
151
  availability?: {
@@ -1 +1 @@
1
- {"version":3,"file":"accounts-services.d.ts","sourceRoot":"","sources":["../src/accounts-services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAI5E,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EAGxB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE;;;;;;;;;;;;;gBAKpD,IAAI,GAAG,UAAU;kBAAY,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;KAuBpE;AAED;;8EAE8E;AAC9E,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,aAAa,YAyB1D;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBArDnB,IAAI,GAAG,UAAU;sBAAY,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFpE"}
1
+ {"version":3,"file":"accounts-services.d.ts","sourceRoot":"","sources":["../src/accounts-services.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAI5E,OAAO,KAAK,EACV,iBAAiB,EACjB,uBAAuB,EAGxB,MAAM,mBAAmB,CAAC;AAS3B,MAAM,MAAM,gBAAgB,GAAG;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAsB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE;;;;;;;;;;;;;gBAKpD,IAAI,GAAG,UAAU;kBAAY,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;KAuBpE;AAED;;8EAE8E;AAC9E,wBAAgB,+BAA+B,CAAC,aAAa,EAAE,MAAM,aAAa,YAyB1D;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;oBArDnB,IAAI,GAAG,UAAU;sBAAY,MAAM,GAAG,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyFpE"}
@@ -0,0 +1,36 @@
1
+ import type { QuotaRefreshResult } from "@claudexor/daemon";
2
+ import type { QuotaConstraint } from "@claudexor/schema";
3
+ /**
4
+ * agy quota (source `agy_command_usage`): the vendor's own `/quota` print-mode
5
+ * slash command returns a JSON envelope WITHOUT spending a turn (1.1.11+). One
6
+ * candidate per enabled agy config_dir_login profile — agy has NO default
7
+ * store (owner decision, PLAN Л-4), so there is no null-subject candidate.
8
+ * A candidate that cannot be observed yields a typed absence CLAIM, never a
9
+ * throw: one account's failure must never blind the others.
10
+ */
11
+ export declare function refreshAgyQuota(options?: {
12
+ bin?: string;
13
+ baseEnv?: NodeJS.ProcessEnv;
14
+ }): Promise<QuotaRefreshResult>;
15
+ type AgyQuotaParse = {
16
+ kind: "constraints";
17
+ constraints: QuotaConstraint[];
18
+ planLabel: string | null;
19
+ } | {
20
+ kind: "auth_revoked";
21
+ detail: string;
22
+ } | {
23
+ kind: "failed";
24
+ detail: string;
25
+ };
26
+ /**
27
+ * Tolerant parser for the `/quota` envelope (fixtures/agy-quota-print*.json).
28
+ * DIFFERENT account tiers return DIFFERENT window sets (a lower tier has no
29
+ * 5-hour windows — PLAN §1.2a), so a missing window is normal, never an error.
30
+ * Each of the two vendor GROUPS ("Gemini Models", "Claude and GPT models")
31
+ * becomes constraints tagged with its group's model slugs, so a spent Claude
32
+ * window can never block Gemini routing (INV-136 model scope; roast E2/grok).
33
+ */
34
+ export declare function parseAgyQuotaEnvelope(raw: string): AgyQuotaParse;
35
+ export {};
36
+ //# sourceMappingURL=agy-quota-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-quota-source.d.ts","sourceRoot":"","sources":["../src/agy-quota-source.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAU5D,OAAO,KAAK,EAAgB,eAAe,EAAiB,MAAM,mBAAmB,CAAC;AAGtF;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAO,GAC1D,OAAO,CAAC,kBAAkB,CAAC,CAiE7B;AAkHD,KAAK,aAAa,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,eAAe,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACjF;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAgFvC;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAkDhE"}
@@ -0,0 +1,334 @@
1
+ import { spawn } from "node:child_process";
2
+ import { loadConfig } from "@claudexor/config";
3
+ import { providerScrubEnv } from "@claudexor/core";
4
+ import { AGY_BIN, AGY_GEMINI_MODELS, AGY_THIRD_PARTY_MODELS, agyProfileRunEnv, agyTokenFilePresent, canonicalAgyProfileHome, } from "@claudexor/harness-agy";
5
+ import { QuotaConstraint as QuotaConstraintSchema } from "@claudexor/schema";
6
+ import { noProjectRepoRoot, redactSecrets } from "@claudexor/util";
7
+ /**
8
+ * agy quota (source `agy_command_usage`): the vendor's own `/quota` print-mode
9
+ * slash command returns a JSON envelope WITHOUT spending a turn (1.1.11+). One
10
+ * candidate per enabled agy config_dir_login profile — agy has NO default
11
+ * store (owner decision, PLAN Л-4), so there is no null-subject candidate.
12
+ * A candidate that cannot be observed yields a typed absence CLAIM, never a
13
+ * throw: one account's failure must never blind the others.
14
+ */
15
+ export async function refreshAgyQuota(options = {}) {
16
+ const bin = options.bin ?? AGY_BIN();
17
+ const snapshots = [];
18
+ const universe = agyQuotaCandidates();
19
+ const absences = [...universe.absences];
20
+ // Profiles are read CONCURRENTLY: several accounts is the point of the
21
+ // feature, the daemon awaits every refresher in one cycle, and each read can
22
+ // burn its full timeout — serially that is one stalled vendor per account
23
+ // added to claude's and codex's wait too.
24
+ const results = await Promise.all(universe.candidates.map(async (candidate) => {
25
+ const home = candidate.home;
26
+ // Logged-out precheck (codex pattern): a profile HOME without the
27
+ // vendor's file token cannot yield a window — typed absence WITHOUT
28
+ // spawning agy, which would otherwise open the user's browser and block
29
+ // on an interactive login prompt.
30
+ if (!agyTokenFilePresent(home)) {
31
+ return {
32
+ absence: agyAbsence(candidate.subjectId, "not_logged_in", `no Antigravity token in ${home}`),
33
+ };
34
+ }
35
+ try {
36
+ const env = agyProfileRunEnv(home, options.baseEnv ?? process.env);
37
+ const parsed = await readAgyQuota(bin, env);
38
+ if (parsed.kind === "auth_revoked")
39
+ return { absence: agyAbsence(candidate.subjectId, "auth_revoked", parsed.detail) };
40
+ if (parsed.kind !== "constraints")
41
+ return { absence: agyAbsence(candidate.subjectId, "refresh_failed", parsed.detail) };
42
+ // Which window governs a run that names no model depends on the model
43
+ // this profile is actually set to, which the vendor answers for free.
44
+ const selected = await readAgySelectedModel(bin, env);
45
+ return {
46
+ snapshot: {
47
+ subject: {
48
+ harness: "agy",
49
+ credential_route: "vendor_native",
50
+ plan_label: parsed.planLabel,
51
+ subject_id: candidate.subjectId,
52
+ },
53
+ constraints: scopeUnspecifiedModel(parsed.constraints, selected),
54
+ source: "agy_command_usage",
55
+ observed_at: new Date().toISOString(),
56
+ freshness: "fresh",
57
+ },
58
+ };
59
+ }
60
+ catch (err) {
61
+ return {
62
+ absence: agyAbsence(candidate.subjectId, "refresh_failed", redactSecrets(err instanceof Error ? err.message : String(err)).slice(0, 300)),
63
+ };
64
+ }
65
+ }));
66
+ for (const result of results) {
67
+ if (result.snapshot)
68
+ snapshots.push(result.snapshot);
69
+ if (result.absence)
70
+ absences.push(result.absence);
71
+ }
72
+ return { snapshots, absences };
73
+ }
74
+ /**
75
+ * The model this profile currently routes an unspecified-model run to. The
76
+ * vendor answers `/model` from the CLI without spending a turn; a failure
77
+ * leaves it null and the caller falls back to the Gemini group, which is what
78
+ * a fresh profile selects.
79
+ */
80
+ async function readAgySelectedModel(bin, env) {
81
+ const result = await readAgyCommand(bin, "/model", env);
82
+ if ("failure" in result)
83
+ return null;
84
+ try {
85
+ const parsed = JSON.parse(result.stdout.trim() || "{}");
86
+ const id = parsed?.command?.data?.id;
87
+ return typeof id === "string" && id ? id : null;
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ }
93
+ /**
94
+ * Stamp the ONE group that governs a run naming no model. Every agy window is
95
+ * model-scoped, and a scoped window deliberately cannot refuse a route whose
96
+ * model is unknowable before spawn — so without this stamp an exhausted
97
+ * account could never refuse a bare run or trigger rotation (Л-2). The stamp
98
+ * follows the profile's SELECTED model rather than an assumption, because a
99
+ * user who picks a Claude slug would otherwise rotate on Gemini exhaustion and
100
+ * never be refused on their own.
101
+ */
102
+ function scopeUnspecifiedModel(constraints, selectedModel) {
103
+ const scoped = constraints.filter((c) => c.applies_to_models && c.applies_to_models.length > 0);
104
+ // A model the pinned inventory does not know — the vendor ships new slugs
105
+ // between releases and the user picks them in its own TUI — must not leave
106
+ // EVERY window ungoverned: that reads as a healthy account no matter how
107
+ // spent it is, and rotation never fires. The Gemini group is the documented
108
+ // fallback, the same one an unreadable `/model` gets.
109
+ const known = selectedModel !== null && scoped.some((c) => c.applies_to_models.includes(selectedModel));
110
+ const governs = known
111
+ ? (c) => c.applies_to_models.includes(selectedModel)
112
+ : selectedModel === null || selectedModel.startsWith("gemini-")
113
+ ? // Unreadable, or a Gemini slug newer than the pinned inventory: the
114
+ // vendor's own group governs, as it does for a fresh profile.
115
+ (c) => c.applies_to_models.some((m) => m.startsWith("gemini-"))
116
+ : // A slug we cannot place at all: EVERY window governs, so an exhausted
117
+ // account is refused rather than reading as healthy. Over-refusing a
118
+ // bare run costs a rotation; under-refusing costs the whole feature.
119
+ () => true;
120
+ return constraints.map((constraint) => constraint.applies_to_models && constraint.applies_to_models.length > 0
121
+ ? { ...constraint, applies_to_unspecified_model: governs(constraint) }
122
+ : constraint);
123
+ }
124
+ function agyQuotaCandidates() {
125
+ const global = loadConfig(noProjectRepoRoot()).global;
126
+ if (global.harnesses.agy?.enabled === false)
127
+ return { candidates: [], absences: [] };
128
+ const candidates = [];
129
+ const absences = [];
130
+ for (const profile of global.credential_profiles) {
131
+ if (profile.harness_id !== "agy" || !profile.enabled)
132
+ continue;
133
+ if (profile.credential_kind !== "config_dir_login")
134
+ continue;
135
+ // A profile the subject universe still lists must yield a CLAIM either
136
+ // way: silently skipping a malformed or locator-less row would degrade it
137
+ // to `no_source` with no reason anyone can read (review Ф2 #9).
138
+ try {
139
+ if (!profile.isolation_locator)
140
+ throw new Error("profile has no isolation locator");
141
+ candidates.push({
142
+ home: canonicalAgyProfileHome(profile.isolation_locator),
143
+ subjectId: profile.profile_id,
144
+ });
145
+ }
146
+ catch (err) {
147
+ absences.push(agyAbsence(profile.profile_id, "refresh_failed", redactSecrets(err instanceof Error ? err.message : String(err)).slice(0, 300)));
148
+ }
149
+ }
150
+ return { candidates, absences };
151
+ }
152
+ function agyAbsence(subjectId, reason, detail) {
153
+ return {
154
+ subject: {
155
+ harness: "agy",
156
+ credential_route: "vendor_native",
157
+ plan_label: null,
158
+ subject_id: subjectId,
159
+ },
160
+ reason,
161
+ detail,
162
+ observed_at: new Date().toISOString(),
163
+ };
164
+ }
165
+ /**
166
+ * Spawn one print-mode slash command and return its raw stdout, or a typed
167
+ * failure. stdin is closed (an authenticated agy runs fine that way — PLAN
168
+ * §1.2b) and the caller's token precheck already proved a login exists, so
169
+ * this can never reach an interactive prompt.
170
+ *
171
+ * stderr is NOT piped: nothing reads it, and an unread pipe fills at 64 KB and
172
+ * blocks the vendor mid-write — which threw away a perfectly good stdout
173
+ * envelope and burned the whole timeout.
174
+ */
175
+ async function readAgyCommand(bin, command, env) {
176
+ const merged = {};
177
+ for (const [k, v] of Object.entries({ ...env, ...providerScrubEnv() })) {
178
+ if (typeof v === "string")
179
+ merged[k] = v;
180
+ }
181
+ merged.AGY_CLI_DISABLE_AUTO_UPDATE = "true";
182
+ const child = spawn(bin, ["-p", command, "--output-format", "json"], {
183
+ stdio: ["ignore", "pipe", "ignore"],
184
+ env: merged,
185
+ });
186
+ let timedOut = false;
187
+ const kill = setTimeout(() => {
188
+ timedOut = true;
189
+ child.kill("SIGKILL");
190
+ }, AGY_COMMAND_TIMEOUT_MS);
191
+ // Bounded by BYTES on the raw stream: a line-keyed cap cannot bound a stream
192
+ // with no newline in it, and readline's own buffer would grow first.
193
+ let stdout = "";
194
+ let overflowed = false;
195
+ child.stdout.on("data", (chunk) => {
196
+ if (overflowed)
197
+ return;
198
+ if (stdout.length + chunk.length > MAX_QUOTA_STDOUT) {
199
+ overflowed = true;
200
+ child.kill("SIGKILL");
201
+ return;
202
+ }
203
+ stdout += chunk.toString("utf8");
204
+ });
205
+ // `exit`, never `close`: `close` waits for every stdio pipe to end, so a
206
+ // surviving agy DESCENDANT holding stdout would keep this promise pending
207
+ // forever even after the SIGKILL — and a pending promise wedges
208
+ // QuotaPollPacer.inFlight, which stalls the daemon's whole quota refresh
209
+ // cycle (claude and codex included). codex-quota-source and
210
+ // claude-statusline both use `exit` for exactly this reason.
211
+ const outcome = await new Promise((resolve) => {
212
+ child.once("exit", (code) => resolve({ code }));
213
+ child.once("error", () => resolve({ spawnFailed: true }));
214
+ });
215
+ clearTimeout(kill);
216
+ child.stdout.destroy();
217
+ // The three not-a-result outcomes stay DISTINGUISHABLE: an operator reading
218
+ // "could not be spawned" must not be looking at a vendor that simply hung.
219
+ if ("spawnFailed" in outcome)
220
+ return { failure: `agy could not be spawned (is ${bin} installed?)` };
221
+ if (overflowed)
222
+ return { failure: "agy printed more output than the quota reader accepts" };
223
+ if (timedOut)
224
+ return {
225
+ failure: `agy did not answer ${command} within ${AGY_COMMAND_TIMEOUT_MS / 1000}s and was stopped`,
226
+ };
227
+ return { stdout };
228
+ }
229
+ const AGY_COMMAND_TIMEOUT_MS = 30_000;
230
+ /** Spawn the vendor's own `/quota` slash command and parse it tolerantly. */
231
+ async function readAgyQuota(bin, env) {
232
+ const result = await readAgyCommand(bin, "/quota", env);
233
+ if ("failure" in result)
234
+ return { kind: "failed", detail: result.failure };
235
+ return parseAgyQuotaEnvelope(result.stdout);
236
+ }
237
+ /**
238
+ * Tolerant parser for the `/quota` envelope (fixtures/agy-quota-print*.json).
239
+ * DIFFERENT account tiers return DIFFERENT window sets (a lower tier has no
240
+ * 5-hour windows — PLAN §1.2a), so a missing window is normal, never an error.
241
+ * Each of the two vendor GROUPS ("Gemini Models", "Claude and GPT models")
242
+ * becomes constraints tagged with its group's model slugs, so a spent Claude
243
+ * window can never block Gemini routing (INV-136 model scope; roast E2/grok).
244
+ */
245
+ export function parseAgyQuotaEnvelope(raw) {
246
+ let parsed;
247
+ try {
248
+ parsed = JSON.parse(raw.trim() || "{}");
249
+ }
250
+ catch {
251
+ return { kind: "failed", detail: "agy quota output was not valid JSON" };
252
+ }
253
+ if (parsed?.status === "ERROR" || (typeof parsed?.error === "string" && parsed.error)) {
254
+ const detail = String(parsed.error ?? "authentication required");
255
+ return /auth|login|credential|token/i.test(detail)
256
+ ? { kind: "auth_revoked", detail: redactSecrets(detail).slice(0, 300) }
257
+ : { kind: "failed", detail: redactSecrets(detail).slice(0, 300) };
258
+ }
259
+ const groups = parsed?.command?.data?.groups;
260
+ if (!Array.isArray(groups))
261
+ return { kind: "failed", detail: "agy quota envelope had no groups" };
262
+ const constraints = [];
263
+ for (const group of groups) {
264
+ const models = modelsForGroup(String(group?.name ?? ""));
265
+ for (const bucket of Array.isArray(group?.buckets) ? group.buckets : []) {
266
+ const remaining = typeof bucket?.remaining_fraction === "number" ? bucket.remaining_fraction : null;
267
+ const usedRatio = remaining === null ? null : Math.min(1, Math.max(0, 1 - remaining));
268
+ const window = String(bucket?.window ?? "");
269
+ const groupName = String(group?.name ?? "agy");
270
+ const candidate = {
271
+ // `??` alone is not enough: the vendor's blank string is not nullish,
272
+ // and a blank id/label fails the schema's min(1) (review Ф2 #3).
273
+ id: nonBlank(bucket?.id) ?? `${groupName}-${window || "window"}`,
274
+ label: nonBlank(bucket?.name) ?? nonBlank(window) ?? "Requests",
275
+ applies_to_models: models,
276
+ // Which window governs a run that NAMES NO MODEL is stamped by
277
+ // scopeUnspecifiedModel from the profile's actually selected model —
278
+ // one owner, so the parser never guesses it.
279
+ used_ratio: usedRatio,
280
+ // Own-property lookup only: a `window` of `__proto__`/`toString`
281
+ // otherwise resolves to an inherited value, not a number.
282
+ window_seconds: Object.hasOwn(WINDOW_SECONDS, window) ? WINDOW_SECONDS[window] : null,
283
+ resets_at: isoOrNull(bucket?.reset_time),
284
+ cooldown_until: null,
285
+ };
286
+ // One unparseable window must never cost the account its whole batch:
287
+ // the daemon drops the ENTIRE agy result — snapshots and absences — when
288
+ // a single constraint fails schema validation downstream.
289
+ const checked = QuotaConstraintSchema.safeParse(candidate);
290
+ if (checked.success)
291
+ constraints.push(checked.data);
292
+ }
293
+ }
294
+ if (constraints.length === 0)
295
+ return { kind: "failed", detail: "agy quota envelope carried no windows" };
296
+ return { kind: "constraints", constraints, planLabel: null };
297
+ }
298
+ /** A vendor string that is neither missing nor blank. */
299
+ function nonBlank(value) {
300
+ if (typeof value === "string" && value.trim())
301
+ return value;
302
+ if (typeof value === "number" && Number.isFinite(value))
303
+ return String(value);
304
+ return undefined;
305
+ }
306
+ /** The vendor's reset stamp only when it really is a date; a garbage string
307
+ * would otherwise fail the schema's datetime check and drop the batch. */
308
+ function isoOrNull(value) {
309
+ if (typeof value !== "string" || !value.trim())
310
+ return null;
311
+ const parsed = Date.parse(value);
312
+ return Number.isFinite(parsed) ? new Date(parsed).toISOString() : null;
313
+ }
314
+ const MAX_QUOTA_STDOUT = 256 * 1024;
315
+ const WINDOW_SECONDS = {
316
+ "5h": 5 * 60 * 60,
317
+ weekly: 7 * 24 * 60 * 60,
318
+ };
319
+ /**
320
+ * The vendor groups map to disjoint model families. Gemini models carry the
321
+ * Gemini window; Claude/GPT-OSS the other. Any slug not matched stays
322
+ * vendor-wide (null) so a future group cannot silently escape scoping.
323
+ */
324
+ const geminiModels = [...AGY_GEMINI_MODELS];
325
+ const thirdPartyModels = [...AGY_THIRD_PARTY_MODELS];
326
+ function modelsForGroup(groupName) {
327
+ const n = groupName.toLowerCase();
328
+ if (n.includes("gemini"))
329
+ return geminiModels;
330
+ if (n.includes("claude") || n.includes("gpt"))
331
+ return thirdPartyModels;
332
+ return null;
333
+ }
334
+ //# sourceMappingURL=agy-quota-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agy-quota-source.js","sourceRoot":"","sources":["../src/agy-quota-source.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `claudexor auth login` signs in the DEFAULT account, so a harness with no
3
+ * default credential store never belongs here: its accounts are all named
4
+ * profiles and `claudexor profiles login <harness> <id>` is the working verb.
5
+ * Deriving both the gate and the usage text from one place keeps the CLI from
6
+ * offering a command the daemon can only refuse.
7
+ */
8
+ export declare function isKnownAuthLoginHarness(harness: string): boolean;
9
+ /** The harnesses `auth login` accepts, for its own usage strings. */
10
+ export declare function authLoginHarnessList(): string;
11
+ //# sourceMappingURL=auth-login-harnesses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-login-harnesses.d.ts","sourceRoot":"","sources":["../src/auth-login-harnesses.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAKhE;AAED,qEAAqE;AACrE,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C"}
@@ -0,0 +1,17 @@
1
+ import { ControlHarnessSetupHarness, harnessHasDefaultCredentialStore } from "@claudexor/schema";
2
+ /**
3
+ * `claudexor auth login` signs in the DEFAULT account, so a harness with no
4
+ * default credential store never belongs here: its accounts are all named
5
+ * profiles and `claudexor profiles login <harness> <id>` is the working verb.
6
+ * Deriving both the gate and the usage text from one place keeps the CLI from
7
+ * offering a command the daemon can only refuse.
8
+ */
9
+ export function isKnownAuthLoginHarness(harness) {
10
+ return (ControlHarnessSetupHarness.safeParse(harness).success &&
11
+ harnessHasDefaultCredentialStore(harness));
12
+ }
13
+ /** The harnesses `auth login` accepts, for its own usage strings. */
14
+ export function authLoginHarnessList() {
15
+ return ControlHarnessSetupHarness.options.filter(harnessHasDefaultCredentialStore).join("|");
16
+ }
17
+ //# sourceMappingURL=auth-login-harnesses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-login-harnesses.js","sourceRoot":"","sources":["../src/auth-login-harnesses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAEjG;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe;IACrD,OAAO,CACL,0BAA0B,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,OAAO;QACrD,gCAAgC,CAAC,OAAO,CAAC,CAC1C,CAAC;AACJ,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,oBAAoB;IAClC,OAAO,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,gCAAgC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/F,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-registry.d.ts","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { HARNESS_COMMAND_SPECS } from "./harness-command-specs.js";
1
2
  import { REMOTE_COMMAND_SPECS } from "./remote-command-specs.js";
2
3
  import { RETRY_COMMAND_SPECS } from "./retry-command-specs.js";
3
4
  import { OPS_COMMAND_SPECS_AFTER_REMOTE, OPS_COMMAND_SPECS_BEFORE_REMOTE, } from "./ops-command-specs.js";
@@ -181,19 +182,7 @@ export const CLI_COMMANDS = [
181
182
  mutability: "ops",
182
183
  stability: "stable",
183
184
  },
184
- {
185
- id: "harness",
186
- positionalPatterns: [
187
- { prefix: ["list"], min: 1, max: 1 },
188
- { prefix: ["install"], min: 2, max: 2 },
189
- ],
190
- usageArgs: "list [--all] | install <claude|codex|cursor|opencode> [--dry-run] [--yes]",
191
- summary: "List harnesses, or install one pinned vendor CLI after disclosure",
192
- flags: ["all", "dry-run", "yes", "json"],
193
- subcommandFlags: { list: ["all"], install: ["dry-run", "yes"] },
194
- mutability: "ops",
195
- stability: "stable",
196
- },
185
+ ...HARNESS_COMMAND_SPECS,
197
186
  {
198
187
  id: "models",
199
188
  positionalPatterns: [{ min: 0, max: 0 }],
@@ -1 +1 @@
1
- {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command-registry.js","sourceRoot":"","sources":["../src/command-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const CONFIG_DIR_LOGIN_HARNESSES: readonly ["claude", "codex", "cursor", "agy"];
2
+ export type ConfigDirLoginHarness = (typeof CONFIG_DIR_LOGIN_HARNESSES)[number];
3
+ export declare function isConfigDirLoginHarness(value: string): value is ConfigDirLoginHarness;
4
+ /** Human list for error messages ("claude, codex, cursor, agy"). */
5
+ export declare function configDirLoginHarnessList(): string;
6
+ export declare function canonicalProfileLoginDir(harness: ConfigDirLoginHarness, locator: string): string;
7
+ //# sourceMappingURL=config-dir-login-harnesses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-dir-login-harnesses.d.ts","sourceRoot":"","sources":["../src/config-dir-login-harnesses.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,0BAA0B,YAAI,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AACxF,MAAM,MAAM,qBAAqB,GAAG,CAAC,OAAO,0BAA0B,CAAC,CAAC,MAAM,CAAC,CAAC;AAEhF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,qBAAqB,CAErF;AAED,oEAAoE;AACpE,wBAAgB,yBAAyB,IAAI,MAAM,CAElD;AAiBD,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,qBAAqB,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEhG"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * ONE owner for the "this harness supports isolated config-dir/HOME login
3
+ * profiles" fact (INV-122; roast A4, bounded derivation). Its three consumer
4
+ * sites — profile registration (`profile-registration.ts`), the CLI
5
+ * profile-login gate and that gate's canonical login-dir resolution
6
+ * (`credential-commands.ts`) — all read THIS module instead of each
7
+ * hand-maintaining a copy. Membership means: the vendor's native subscription
8
+ * login can be relocated into a Claudexor-owned profile dir
9
+ * (`CLAUDE_CONFIG_DIR` / `CODEX_HOME` / the cursor and agy profile HOMEs).
10
+ *
11
+ * NOT a consumer, deliberately: the profile-deletion 409 fence
12
+ * (`setup-job-support.ts` `activeProfileLoginJob`) asks a different question —
13
+ * "does this harness have daemon-managed setup jobs at all" — and derives from
14
+ * `ControlHarnessSetupHarness.options` — the same members today, but a
15
+ * different question, and nothing keeps the two lists equal.
16
+ */
17
+ import { canonicalAgyProfileHome } from "@claudexor/harness-agy";
18
+ import { canonicalProfileConfigDir } from "@claudexor/harness-claude";
19
+ import { canonicalCodexProfileHome } from "@claudexor/harness-codex";
20
+ import { canonicalCursorProfileHome } from "@claudexor/harness-cursor";
21
+ export const CONFIG_DIR_LOGIN_HARNESSES = ["claude", "codex", "cursor", "agy"];
22
+ export function isConfigDirLoginHarness(value) {
23
+ return CONFIG_DIR_LOGIN_HARNESSES.includes(value);
24
+ }
25
+ /** Human list for error messages ("claude, codex, cursor, agy"). */
26
+ export function configDirLoginHarnessList() {
27
+ return CONFIG_DIR_LOGIN_HARNESSES.join(", ");
28
+ }
29
+ /**
30
+ * Each member's own canonical login-dir resolver — the SAME one its harness
31
+ * package uses for runs and doctor probes, so a login can never address a
32
+ * different directory than the verification that follows it. A hand-written
33
+ * `claude ? … : agy ? … : cursor` ladder at a call site is exactly the
34
+ * fall-through this module exists to prevent: a new member silently inherits
35
+ * the last branch's store.
36
+ */
37
+ const CANONICAL_PROFILE_LOGIN_DIR = {
38
+ claude: canonicalProfileConfigDir,
39
+ codex: canonicalCodexProfileHome,
40
+ cursor: canonicalCursorProfileHome,
41
+ agy: canonicalAgyProfileHome,
42
+ };
43
+ export function canonicalProfileLoginDir(harness, locator) {
44
+ return CANONICAL_PROFILE_LOGIN_DIR[harness](locator);
45
+ }
46
+ //# sourceMappingURL=config-dir-login-harnesses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-dir-login-harnesses.js","sourceRoot":"","sources":["../src/config-dir-login-harnesses.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAU,CAAC;AAGxF,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,OAAQ,0BAAgD,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,yBAAyB;IACvC,OAAO,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,2BAA2B,GAA+D;IAC9F,MAAM,EAAE,yBAAyB;IACjC,KAAK,EAAE,yBAAyB;IAChC,MAAM,EAAE,0BAA0B;IAClC,GAAG,EAAE,uBAAuB;CAC7B,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,OAA8B,EAAE,OAAe;IACtF,OAAO,2BAA2B,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AACvD,CAAC"}