@claudexor/cli 3.0.4 → 3.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (160) hide show
  1. package/dist/about-command.d.ts +32 -0
  2. package/dist/about-command.d.ts.map +1 -0
  3. package/dist/about-command.js +40 -0
  4. package/dist/about-command.js.map +1 -0
  5. package/dist/acp-auth-command.d.ts +3 -0
  6. package/dist/acp-auth-command.d.ts.map +1 -0
  7. package/dist/acp-auth-command.js +18 -0
  8. package/dist/acp-auth-command.js.map +1 -0
  9. package/dist/acp-auth.d.ts +13 -0
  10. package/dist/acp-auth.d.ts.map +1 -0
  11. package/dist/acp-auth.js +47 -0
  12. package/dist/acp-auth.js.map +1 -0
  13. package/dist/acp-surface-runner.d.ts +12 -0
  14. package/dist/acp-surface-runner.d.ts.map +1 -1
  15. package/dist/acp-surface-runner.js +113 -11
  16. package/dist/acp-surface-runner.js.map +1 -1
  17. package/dist/bridge-serve.d.ts.map +1 -1
  18. package/dist/bridge-serve.js +2 -0
  19. package/dist/bridge-serve.js.map +1 -1
  20. package/dist/capabilities.d.ts.map +1 -1
  21. package/dist/capabilities.js +2 -1
  22. package/dist/capabilities.js.map +1 -1
  23. package/dist/claudexord.d.ts +21 -0
  24. package/dist/claudexord.d.ts.map +1 -1
  25. package/dist/claudexord.js +105 -21
  26. package/dist/claudexord.js.map +1 -1
  27. package/dist/cli-error.d.ts +97 -0
  28. package/dist/cli-error.d.ts.map +1 -0
  29. package/dist/cli-error.js +308 -0
  30. package/dist/cli-error.js.map +1 -0
  31. package/dist/cli-io.d.ts +9 -0
  32. package/dist/cli-io.d.ts.map +1 -1
  33. package/dist/cli-io.js +10 -1
  34. package/dist/cli-io.js.map +1 -1
  35. package/dist/cli.js +110 -116
  36. package/dist/cli.js.map +1 -1
  37. package/dist/codex-device-login.d.ts +117 -0
  38. package/dist/codex-device-login.d.ts.map +1 -0
  39. package/dist/codex-device-login.js +227 -0
  40. package/dist/codex-device-login.js.map +1 -0
  41. package/dist/command-flags.d.ts +0 -6
  42. package/dist/command-flags.d.ts.map +1 -1
  43. package/dist/command-flags.js +12 -4
  44. package/dist/command-flags.js.map +1 -1
  45. package/dist/command-help.d.ts +46 -0
  46. package/dist/command-help.d.ts.map +1 -0
  47. package/dist/command-help.js +92 -0
  48. package/dist/command-help.js.map +1 -0
  49. package/dist/command-registry.d.ts +2 -0
  50. package/dist/command-registry.d.ts.map +1 -1
  51. package/dist/command-registry.js +14 -7
  52. package/dist/command-registry.js.map +1 -1
  53. package/dist/control-services.d.ts +54 -27
  54. package/dist/control-services.d.ts.map +1 -1
  55. package/dist/control-services.js +56 -30
  56. package/dist/control-services.js.map +1 -1
  57. package/dist/credential-commands.d.ts.map +1 -1
  58. package/dist/credential-commands.js +44 -1
  59. package/dist/credential-commands.js.map +1 -1
  60. package/dist/daemon-outcome.d.ts +24 -0
  61. package/dist/daemon-outcome.d.ts.map +1 -0
  62. package/dist/daemon-outcome.js +59 -0
  63. package/dist/daemon-outcome.js.map +1 -0
  64. package/dist/daemon-run.d.ts +23 -4
  65. package/dist/daemon-run.d.ts.map +1 -1
  66. package/dist/daemon-run.js +66 -27
  67. package/dist/daemon-run.js.map +1 -1
  68. package/dist/delegation-belt-descriptor.d.ts +31 -13
  69. package/dist/delegation-belt-descriptor.d.ts.map +1 -1
  70. package/dist/delegation-belt-descriptor.js +43 -15
  71. package/dist/delegation-belt-descriptor.js.map +1 -1
  72. package/dist/live.d.ts +13 -1
  73. package/dist/live.d.ts.map +1 -1
  74. package/dist/live.js +56 -7
  75. package/dist/live.js.map +1 -1
  76. package/dist/mcp-runner.d.ts.map +1 -1
  77. package/dist/mcp-runner.js +60 -6
  78. package/dist/mcp-runner.js.map +1 -1
  79. package/dist/native-login.d.ts +10 -1
  80. package/dist/native-login.d.ts.map +1 -1
  81. package/dist/native-login.js +32 -10
  82. package/dist/native-login.js.map +1 -1
  83. package/dist/ops-commands.d.ts +5 -1
  84. package/dist/ops-commands.d.ts.map +1 -1
  85. package/dist/ops-commands.js +45 -52
  86. package/dist/ops-commands.js.map +1 -1
  87. package/dist/plan-implement-readiness.d.ts +32 -0
  88. package/dist/plan-implement-readiness.d.ts.map +1 -0
  89. package/dist/plan-implement-readiness.js +51 -0
  90. package/dist/plan-implement-readiness.js.map +1 -0
  91. package/dist/plugins.d.ts.map +1 -1
  92. package/dist/plugins.js +73 -20
  93. package/dist/plugins.js.map +1 -1
  94. package/dist/project-command.d.ts +15 -0
  95. package/dist/project-command.d.ts.map +1 -1
  96. package/dist/project-command.js +75 -20
  97. package/dist/project-command.js.map +1 -1
  98. package/dist/quota-command.d.ts.map +1 -1
  99. package/dist/quota-command.js +2 -6
  100. package/dist/quota-command.js.map +1 -1
  101. package/dist/release-command.d.ts.map +1 -1
  102. package/dist/release-command.js +31 -6
  103. package/dist/release-command.js.map +1 -1
  104. package/dist/release.d.ts +41 -10
  105. package/dist/release.d.ts.map +1 -1
  106. package/dist/release.js +70 -48
  107. package/dist/release.js.map +1 -1
  108. package/dist/repo-asset-authority.d.ts +89 -0
  109. package/dist/repo-asset-authority.d.ts.map +1 -0
  110. package/dist/repo-asset-authority.js +175 -0
  111. package/dist/repo-asset-authority.js.map +1 -0
  112. package/dist/retry-command.d.ts +15 -0
  113. package/dist/retry-command.d.ts.map +1 -1
  114. package/dist/retry-command.js +7 -4
  115. package/dist/retry-command.js.map +1 -1
  116. package/dist/review-command.d.ts.map +1 -1
  117. package/dist/review-command.js +2 -6
  118. package/dist/review-command.js.map +1 -1
  119. package/dist/reviewer-options.d.ts +11 -1
  120. package/dist/reviewer-options.d.ts.map +1 -1
  121. package/dist/reviewer-options.js +24 -9
  122. package/dist/reviewer-options.js.map +1 -1
  123. package/dist/run-options.d.ts.map +1 -1
  124. package/dist/run-options.js +13 -1
  125. package/dist/run-options.js.map +1 -1
  126. package/dist/settings-command.d.ts.map +1 -1
  127. package/dist/settings-command.js +2 -6
  128. package/dist/settings-command.js.map +1 -1
  129. package/dist/settings-service.d.ts +101 -10
  130. package/dist/settings-service.d.ts.map +1 -1
  131. package/dist/settings-service.js +201 -12
  132. package/dist/settings-service.js.map +1 -1
  133. package/dist/setup-job-store.d.ts +16 -5
  134. package/dist/setup-job-store.d.ts.map +1 -1
  135. package/dist/setup-job-store.js +24 -4
  136. package/dist/setup-job-store.js.map +1 -1
  137. package/dist/setup-jobs.d.ts +14 -4
  138. package/dist/setup-jobs.d.ts.map +1 -1
  139. package/dist/setup-jobs.js +204 -23
  140. package/dist/setup-jobs.js.map +1 -1
  141. package/dist/setup-login-inline.d.ts +71 -0
  142. package/dist/setup-login-inline.d.ts.map +1 -0
  143. package/dist/setup-login-inline.js +207 -0
  144. package/dist/setup-login-inline.js.map +1 -0
  145. package/dist/setup-login-protocol.d.ts +3 -2
  146. package/dist/setup-login-protocol.d.ts.map +1 -1
  147. package/dist/setup-login-protocol.js +16 -1
  148. package/dist/setup-login-protocol.js.map +1 -1
  149. package/dist/setup-login-runner.d.ts +9 -0
  150. package/dist/setup-login-runner.d.ts.map +1 -1
  151. package/dist/setup-login-runner.js +212 -5
  152. package/dist/setup-login-runner.js.map +1 -1
  153. package/dist/thread-delivery.d.ts.map +1 -1
  154. package/dist/thread-delivery.js +3 -1
  155. package/dist/thread-delivery.js.map +1 -1
  156. package/dist/thread-execution-workspace.d.ts +22 -0
  157. package/dist/thread-execution-workspace.d.ts.map +1 -0
  158. package/dist/thread-execution-workspace.js +21 -0
  159. package/dist/thread-execution-workspace.js.map +1 -0
  160. package/package.json +23 -23
@@ -0,0 +1,308 @@
1
+ /**
2
+ * The ONE CLI result/error projector (D-7, GH #28). Every failure class —
3
+ * argument/usage validation, pre-daemon bootstrap, typed preflight/daemon
4
+ * problems, transport errors, and unexpected exceptions — is normalized into a
5
+ * single typed problem and rendered as EXACTLY ONE JSON envelope on stdout
6
+ * (`--json` mode) or one human line on stderr (text mode), both derived from
7
+ * the SAME typed object. A central category -> exit-code table owns the codes:
8
+ * usage/validation = 2, operational failure = 1.
9
+ *
10
+ * This projector is intentionally dependency-light: it imports only the CLI IO
11
+ * owner and the typed `ControlProblem`/Zod shapes. It never needs the daemon,
12
+ * writable state, or a schema-generation step that could itself fail — so it is
13
+ * a valid last-resort serializer even when bootstrap failed.
14
+ *
15
+ * The run-verb SUCCESS envelope (`{runId, runDir, status, ...}`) does NOT flow
16
+ * through here: the projector owns FAILURE paths and the non-run commands whose
17
+ * error handling was previously ad-hoc. The failure envelope keeps a legacy
18
+ * `error` alias of `message` so existing consumers/tests that read `error`
19
+ * keep working.
20
+ */
21
+ import { ControlProblem } from "@claudexor/schema";
22
+ import { redactSecrets } from "@claudexor/util";
23
+ import { printJson, printJsonLine } from "./cli-io.js";
24
+ /** The central category -> process exit-code table (the one owner). */
25
+ const CATEGORY_EXIT = {
26
+ usage: 2,
27
+ operational: 1,
28
+ };
29
+ /** A typed CLI failure: category picks the exit code, the rest survive projection. */
30
+ export class CliError extends Error {
31
+ category;
32
+ code;
33
+ retryable;
34
+ fieldErrors;
35
+ requiredActions;
36
+ details;
37
+ context;
38
+ constructor(category, message, fields = {}) {
39
+ super(message);
40
+ this.name = "CliError";
41
+ this.category = category;
42
+ this.code = fields.code;
43
+ this.retryable = fields.retryable;
44
+ this.fieldErrors = fields.fieldErrors;
45
+ this.requiredActions = fields.requiredActions;
46
+ this.details = fields.details;
47
+ this.context = fields.context;
48
+ }
49
+ }
50
+ /** A usage/validation failure (exit 2). An operational failure (exit 1) is
51
+ * `new CliError("operational", ...)` — most operational failures reach the
52
+ * projector as native throwables (Node errors, ControlProblem-derived errors)
53
+ * rather than a hand-built one. */
54
+ export function usageError(message, fields = {}) {
55
+ return new CliError("usage", message, fields);
56
+ }
57
+ /**
58
+ * A structured minimum-value validation error matching the #28 contract shape:
59
+ * `{code:invalid_argument, message, details:{field, minimum}, fieldErrors}`.
60
+ */
61
+ export function minIntError(field, minimum) {
62
+ const message = `--${field} must be at least ${minimum}`;
63
+ return new CliError("usage", message, {
64
+ code: "invalid_argument",
65
+ fieldErrors: { [field]: [message] },
66
+ details: { field, minimum },
67
+ });
68
+ }
69
+ /** Structural ZodError detection (no `zod` import — the projector stays
70
+ * dependency-light so it is a valid last-resort serializer). */
71
+ function asZodIssues(err) {
72
+ if (err &&
73
+ typeof err === "object" &&
74
+ err.name === "ZodError" &&
75
+ Array.isArray(err.issues)) {
76
+ return err.issues;
77
+ }
78
+ return null;
79
+ }
80
+ /** Convert Zod issues into path->messages field errors (no serialized Zod dump). */
81
+ export function zodFieldErrors(issues) {
82
+ const out = {};
83
+ for (const issue of issues) {
84
+ const key = issue.path.length > 0 ? issue.path.map((p) => String(p)).join(".") : "_";
85
+ (out[key] ??= []).push(issue.message);
86
+ }
87
+ return out;
88
+ }
89
+ /** A human one-liner from Zod issues — the first issue, never the whole object. */
90
+ function zodMessage(issues) {
91
+ const first = issues[0];
92
+ if (!first)
93
+ return "invalid input";
94
+ const at = first.path.length > 0 ? ` at ${first.path.map((p) => String(p)).join(".")}` : "";
95
+ return `${first.message}${at}`;
96
+ }
97
+ const ERRNO_RE = /^E[A-Z0-9]+$/;
98
+ const MAX_CONTEXT_STRING = 2000;
99
+ /** Bound long string values in a typed context so a localized git/tool stderr
100
+ * is demoted to bounded evidence instead of flooding the envelope (QA-051). */
101
+ export function boundContext(context) {
102
+ if (!context)
103
+ return undefined;
104
+ const keys = Object.keys(context);
105
+ if (keys.length === 0)
106
+ return undefined;
107
+ const out = {};
108
+ for (const [key, value] of Object.entries(context)) {
109
+ if (typeof value === "string" && value.length > MAX_CONTEXT_STRING) {
110
+ out[key] =
111
+ `${value.slice(0, MAX_CONTEXT_STRING)}… (truncated ${value.length - MAX_CONTEXT_STRING} chars)`;
112
+ }
113
+ else {
114
+ out[key] = value;
115
+ }
116
+ }
117
+ return out;
118
+ }
119
+ function nonEmptyRecord(value) {
120
+ return value && Object.keys(value).length > 0 ? value : undefined;
121
+ }
122
+ function nonEmptyArray(value) {
123
+ return value && value.length > 0 ? value : undefined;
124
+ }
125
+ /** A typed context record or undefined when empty. Unlike `boundContext` this
126
+ * does NOT truncate — bounding is deferred to `redactProblem` so redaction of a
127
+ * boundary-straddling token always runs on the FULL string first (finding 6). */
128
+ function nonEmptyContext(context) {
129
+ return context && Object.keys(context).length > 0 ? context : undefined;
130
+ }
131
+ /**
132
+ * Normalize ANY thrown value into a typed problem. `defaultCategory` decides the
133
+ * exit code only when the throwable carries no category signal of its own — a
134
+ * flag-parsing context passes "usage", the top-level catch passes "operational".
135
+ */
136
+ export function normalizeThrowable(err, defaultCategory) {
137
+ if (err instanceof CliError) {
138
+ return {
139
+ category: err.category,
140
+ message: err.message,
141
+ code: err.code,
142
+ retryable: err.retryable,
143
+ fieldErrors: nonEmptyRecord(err.fieldErrors),
144
+ requiredActions: nonEmptyArray(err.requiredActions),
145
+ details: err.details,
146
+ // RAW context here; redaction runs BEFORE truncation in redactProblem so a
147
+ // secret token straddling the truncation boundary cannot survive (finding 6).
148
+ context: nonEmptyContext(err.context),
149
+ };
150
+ }
151
+ const zodIssues = asZodIssues(err);
152
+ if (zodIssues) {
153
+ return {
154
+ category: "usage",
155
+ code: "invalid_argument",
156
+ message: zodMessage(zodIssues),
157
+ fieldErrors: zodFieldErrors(zodIssues),
158
+ };
159
+ }
160
+ if (err instanceof Error) {
161
+ const anyErr = err;
162
+ const code = typeof anyErr["code"] === "string" ? anyErr["code"] : undefined;
163
+ const status = typeof anyErr["status"] === "number" ? anyErr["status"] : undefined;
164
+ const category = status === 400 ||
165
+ status === 422 ||
166
+ code === "inline_secret_rejected" ||
167
+ code === "invalid_argument"
168
+ ? "usage"
169
+ : code && ERRNO_RE.test(code)
170
+ ? "operational"
171
+ : defaultCategory;
172
+ const retryable = typeof anyErr["retryable"] === "boolean" ? anyErr["retryable"] : undefined;
173
+ const fieldErrors = nonEmptyRecord(anyErr["fieldErrors"]);
174
+ const requiredActions = nonEmptyArray(anyErr["requiredActions"]);
175
+ // A Node system error's syscall/errno are stable machine detail.
176
+ const details = typeof anyErr["syscall"] === "string" || typeof anyErr["errno"] === "number"
177
+ ? {
178
+ ...(typeof anyErr["syscall"] === "string" ? { syscall: anyErr["syscall"] } : {}),
179
+ ...(typeof anyErr["errno"] === "number" ? { errno: anyErr["errno"] } : {}),
180
+ }
181
+ : undefined;
182
+ return {
183
+ category,
184
+ message: err.message,
185
+ code,
186
+ retryable,
187
+ fieldErrors,
188
+ requiredActions,
189
+ details,
190
+ };
191
+ }
192
+ return { category: defaultCategory, message: String(err) };
193
+ }
194
+ /** Recursively redact secret-like tokens from any projected value: strings are
195
+ * redacted directly; arrays and plain objects are mapped so a token nested in
196
+ * `details`/`context` (a runtime-assembled git/tool stderr, an errored URL)
197
+ * never leaks. Non-string leaves pass through untouched. */
198
+ function redactUnknown(value) {
199
+ if (typeof value === "string")
200
+ return redactSecrets(value);
201
+ if (Array.isArray(value))
202
+ return value.map(redactUnknown);
203
+ if (value && typeof value === "object") {
204
+ const out = {};
205
+ for (const [k, v] of Object.entries(value))
206
+ out[k] = redactUnknown(v);
207
+ return out;
208
+ }
209
+ return value;
210
+ }
211
+ /**
212
+ * The SINGLE redaction owner for the projector (QA — runtime-assembled tokens):
213
+ * every human/machine string a failure envelope renders — message, field-error
214
+ * lines, required actions, and details/context leaves — is passed through
215
+ * `redactSecrets` here, so a token that reached a thrown message or a bounded
216
+ * git/tool context is masked once, at the one place that serializes failures.
217
+ */
218
+ function redactProblem(p) {
219
+ return {
220
+ ...p,
221
+ message: redactSecrets(p.message),
222
+ fieldErrors: p.fieldErrors
223
+ ? Object.fromEntries(Object.entries(p.fieldErrors).map(([k, v]) => [k, v.map((s) => redactSecrets(s))]))
224
+ : undefined,
225
+ requiredActions: p.requiredActions?.map((s) => redactSecrets(s)),
226
+ details: p.details ? redactUnknown(p.details) : undefined,
227
+ // Redact THEN bound: a secret token that straddles the MAX_CONTEXT_STRING
228
+ // boundary is masked on the full string before truncation, so a split token
229
+ // can never evade the detector (finding 6).
230
+ context: p.context
231
+ ? boundContext(redactUnknown(p.context))
232
+ : undefined,
233
+ };
234
+ }
235
+ /**
236
+ * THE projector: render any thrown value as one failure envelope (json) or one
237
+ * stderr line (text), and return the process exit code. Human stderr and the
238
+ * JSON envelope are generated from the SAME normalized problem, and every string
239
+ * they carry is secret-redacted once here (the single owner).
240
+ */
241
+ export function renderCliFailure(json, err, opts = {}) {
242
+ const p = redactProblem(normalizeThrowable(err, opts.defaultCategory ?? "operational"));
243
+ const exitCode = CATEGORY_EXIT[p.category];
244
+ const prefix = opts.messagePrefix;
245
+ const message = prefix && !p.message.startsWith(prefix) ? `${prefix} ${p.message}` : p.message;
246
+ if (json) {
247
+ const envelope = {
248
+ // Per-command extras first; every canonical field below overrides a
249
+ // same-named extra so the failure shape can't be forged. Redacted once
250
+ // here (the single owner) like everything else in the envelope.
251
+ ...(opts.extras ? redactUnknown(opts.extras) : {}),
252
+ ok: false,
253
+ exitCode,
254
+ ...(p.code ? { code: p.code } : {}),
255
+ message,
256
+ // Legacy alias: earlier CLI envelopes and their consumers read `error`.
257
+ error: message,
258
+ ...(p.retryable !== undefined ? { retryable: p.retryable } : {}),
259
+ ...(p.fieldErrors ? { fieldErrors: p.fieldErrors } : {}),
260
+ ...(p.requiredActions ? { requiredActions: p.requiredActions } : {}),
261
+ ...(p.details ? { details: p.details } : {}),
262
+ ...(p.context ? { context: p.context } : {}),
263
+ };
264
+ if (opts.stream)
265
+ printJsonLine(envelope);
266
+ else
267
+ printJson(envelope);
268
+ }
269
+ else {
270
+ process.stderr.write(`${message}\n`);
271
+ }
272
+ return exitCode;
273
+ }
274
+ /**
275
+ * Build a typed CliError from a failed control-API response body. A typed
276
+ * `ControlProblem` (code/message/retryable/fieldErrors/requiredActions/context)
277
+ * is preserved intact — never flattened to a bare string. The exit category is
278
+ * derived from the HTTP status: 400/422 are validation (exit 2), everything
279
+ * else is an operational failure (exit 1). Context strings are bounded so a
280
+ * localized git/tool stderr rides as bounded evidence.
281
+ */
282
+ export function controlProblemError(status, body, fallbackMessage) {
283
+ const category = status === 400 || status === 422 ? "usage" : "operational";
284
+ const parsed = ControlProblem.safeParse(body);
285
+ if (parsed.success) {
286
+ const pb = parsed.data;
287
+ return new CliError(category, pb.message || fallbackMessage, {
288
+ code: pb.code,
289
+ retryable: pb.retryable,
290
+ fieldErrors: nonEmptyRecord(pb.fieldErrors),
291
+ requiredActions: nonEmptyArray(pb.requiredActions),
292
+ // RAW: redactProblem redacts before it bounds (finding 6).
293
+ context: nonEmptyContext(pb.context),
294
+ ...(pb.evidenceRefs.length > 0 ? { details: { evidenceRefs: pb.evidenceRefs } } : {}),
295
+ });
296
+ }
297
+ // Not a typed ControlProblem: salvage message/error/code without inventing fields.
298
+ const record = body && typeof body === "object" ? body : {};
299
+ const message = typeof record["message"] === "string"
300
+ ? record["message"]
301
+ : typeof record["error"] === "string"
302
+ ? record["error"]
303
+ : fallbackMessage;
304
+ const code = typeof record["code"] === "string" ? record["code"] : undefined;
305
+ const retryable = typeof record["retryable"] === "boolean" ? record["retryable"] : undefined;
306
+ return new CliError(category, message, { code, retryable });
307
+ }
308
+ //# sourceMappingURL=cli-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-error.js","sourceRoot":"","sources":["../src/cli-error.ts"],"names":[],"mappings":"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"}
package/dist/cli-io.d.ts CHANGED
@@ -8,6 +8,15 @@ export declare function printJson(value: unknown): void;
8
8
  /** One COMPACT JSON object per line — the NDJSON contract (--json-stream). A
9
9
  * pretty multi-line object would break `for line in stream: json.loads(line)`. */
10
10
  export declare function printJsonLine(value: unknown): void;
11
+ /**
12
+ * A usage/validation failure (exit 2). The JSON envelope aligns with the D-7
13
+ * projector shape ({ok, exitCode, code, message}) while keeping the legacy
14
+ * `error` alias for existing consumers. The `code` uses the SAME vocabulary the
15
+ * projector stamps for this class (`invalid_argument`, matching `minIntError`
16
+ * and the Zod path) so a machine consumer never sees two names for one failure.
17
+ * Typed failures (field errors, domain codes) go through `renderCliFailure` in
18
+ * cli-error.ts instead.
19
+ */
11
20
  export declare function printUsageError(json: boolean, error: string): number;
12
21
  export declare function statusGlyph(status: string): string;
13
22
  export declare function authSourceAvailability(status: {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-io.d.ts","sourceRoot":"","sources":["../src/cli-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAErC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED;mFACmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAElD;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;QACtD,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;KAC/C,EAAE,CAAC;CACL,GAAG,MAAM,CAST;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D,GAAG,MAAM,CAIT"}
1
+ {"version":3,"file":"cli-io.d.ts","sourceRoot":"","sources":["../src/cli-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAErC;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAED;mFACmF;AACnF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAIpE;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,WAAW,CAAC,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,YAAY,EAAE,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;QACtD,YAAY,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;KAC/C,EAAE,CAAC;CACL,GAAG,MAAM,CAST;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE;IACpC,MAAM,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5D,GAAG,MAAM,CAIT"}
package/dist/cli-io.js CHANGED
@@ -14,9 +14,18 @@ export function printJson(value) {
14
14
  export function printJsonLine(value) {
15
15
  process.stdout.write(JSON.stringify(value) + "\n");
16
16
  }
17
+ /**
18
+ * A usage/validation failure (exit 2). The JSON envelope aligns with the D-7
19
+ * projector shape ({ok, exitCode, code, message}) while keeping the legacy
20
+ * `error` alias for existing consumers. The `code` uses the SAME vocabulary the
21
+ * projector stamps for this class (`invalid_argument`, matching `minIntError`
22
+ * and the Zod path) so a machine consumer never sees two names for one failure.
23
+ * Typed failures (field errors, domain codes) go through `renderCliFailure` in
24
+ * cli-error.ts instead.
25
+ */
17
26
  export function printUsageError(json, error) {
18
27
  if (json)
19
- printJson({ ok: false, exitCode: 2, error });
28
+ printJson({ ok: false, exitCode: 2, code: "invalid_argument", message: error, error });
20
29
  else
21
30
  process.stderr.write(`${error}\n`);
22
31
  return 2;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-io.js","sourceRoot":"","sources":["../src/cli-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;mFACmF;AACnF,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,KAAa;IAC1D,IAAI,IAAI;QAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAMtC;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,wBAAwB,CAAC;IAC1D,OAAO,OAAO;SACX,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CACT,GAAG,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,YAAY,iBAAiB,MAAM,CAAC,YAAY,GAAG,CAC9F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAE7B;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC"}
1
+ {"version":3,"file":"cli-io.js","sourceRoot":"","sources":["../src/cli-io.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,UAAU,KAAK,CAAC,CAAS;IAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;mFACmF;AACnF,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAa,EAAE,KAAa;IAC1D,IAAI,IAAI;QAAE,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;;QAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC;IACxC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAMtC;IACC,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IACzC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,wBAAwB,CAAC;IAC1D,OAAO,OAAO;SACX,GAAG,CACF,CAAC,MAAM,EAAE,EAAE,CACT,GAAG,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,YAAY,iBAAiB,MAAM,CAAC,YAAY,GAAG,CAC9F;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAE7B;IACC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACnC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACvC,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7D,CAAC"}