@claudexor/harness-claude 1.0.1 → 2.1.3

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.
package/dist/parse.js CHANGED
@@ -73,7 +73,11 @@ function releaseSessionTasks(sessionId) {
73
73
  sessionTasks.delete(sessionId);
74
74
  }
75
75
  function sessionTaskItems(sessionId) {
76
- return (sessionTasks.get(sessionId) ?? []).map((t) => ({ id: `claude-${t.id}`, title: t.title, status: t.status }));
76
+ return (sessionTasks.get(sessionId) ?? []).map((t) => ({
77
+ id: `claude-${t.id}`,
78
+ title: t.title,
79
+ status: t.status,
80
+ }));
77
81
  }
78
82
  export function parseClaudeEvent(obj, sessionId) {
79
83
  return parseClaudeEventStateful(obj, sessionId, new Map());
@@ -99,12 +103,26 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
99
103
  ];
100
104
  }
101
105
  if (type === "system" && obj.subtype === "api_retry") {
106
+ // TYPED status, not a fabricated thinking block: the old mapping planted
107
+ // "api_retry: 529…" junk in the chat's reasoning disclosure. The official
108
+ // fields (attempt/max_retries/retry_delay_ms/error category) pass through
109
+ // so the activity feed can say "retrying (2/10, in 5s)" honestly.
102
110
  const errText = String(obj.error ?? "");
103
111
  const ev = {
104
- type: "thinking",
112
+ type: "status",
105
113
  session_id: sessionId,
106
114
  ts,
107
- text: `api_retry: ${redactSecrets(errText)}`,
115
+ // The prose is redacted AND bounded (a hostile frame must not inject a
116
+ // huge/secret-bearing field, review sol #7); the typed category is the
117
+ // official enum, never free-form text.
118
+ text: `api_retry: ${redactSecrets(errText).slice(0, 500)}`,
119
+ status: {
120
+ kind: "api_retry",
121
+ attempt: numberOrUndef(obj.attempt),
122
+ max_retries: numberOrUndef(obj.max_retries),
123
+ retry_delay_ms: numberOrUndef(obj.retry_delay_ms),
124
+ error_category: claudeRetryCategory(obj.error),
125
+ },
108
126
  payload: { api_retry: true, retry_delay_ms: obj.retry_delay_ms },
109
127
  };
110
128
  // Adapter-layer translation of claude's native retry into a TYPED rate-limit
@@ -117,20 +135,34 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
117
135
  }
118
136
  if (CLAUDE_TRANSIENT_RE.test(errText)) {
119
137
  ev.transient = {
120
- kind: /overloaded|temporar(?:y|ily) unavailable/i.test(errText) ? "service_unavailable" : "network",
138
+ kind: /overloaded|temporar(?:y|ily) unavailable/i.test(errText)
139
+ ? "service_unavailable"
140
+ : "network",
121
141
  retry_delay_ms: typeof obj.retry_delay_ms === "number" ? obj.retry_delay_ms : null,
122
142
  };
123
143
  }
124
144
  return [ev];
125
145
  }
126
146
  if (type === "assistant") {
147
+ // Subagent traffic (parent_tool_use_id set) is NOT the main conversation
148
+ // and must never enter narration / the answer — the guard belongs on the
149
+ // COMPLETE assistant frame too, not only stream_event deltas (review sol
150
+ // #8). Tool_use blocks still process (a subagent's edits are real file
151
+ // changes); only its assistant TEXT/thinking is suppressed.
152
+ const isSubagent = obj.parent_tool_use_id != null;
127
153
  const content = obj.message?.content ?? [];
128
154
  const out = [];
129
155
  for (const block of content) {
130
156
  if (block?.type === "text" && block.text) {
157
+ if (isSubagent)
158
+ continue;
131
159
  out.push({ type: "message", session_id: sessionId, ts, text: String(block.text) });
132
160
  }
133
- else if (block?.type === "thinking" && typeof block.thinking === "string" && block.thinking.trim()) {
161
+ else if (block?.type === "thinking" &&
162
+ typeof block.thinking === "string" &&
163
+ block.thinking.trim()) {
164
+ if (isSubagent)
165
+ continue;
134
166
  out.push({ type: "thinking", session_id: sessionId, ts, text: String(block.thinking) });
135
167
  }
136
168
  else if (block?.type === "tool_use") {
@@ -146,7 +178,13 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
146
178
  pendingTools.set(tool.use_id, tool);
147
179
  if (EDIT_TOOLS.has(name)) {
148
180
  const path = input.file_path ?? input.path ?? input.notebook_path;
149
- out.push({ type: "file_change", session_id: sessionId, ts, tool, payload: { path, tool: name, tool_use_id: block.id } });
181
+ out.push({
182
+ type: "file_change",
183
+ session_id: sessionId,
184
+ ts,
185
+ tool,
186
+ payload: { path, tool: name, tool_use_id: block.id },
187
+ });
150
188
  }
151
189
  else if (name === "TodoWrite" && Array.isArray(input.todos)) {
152
190
  // Typed plan progress, legacy surface: older claude CLIs plan
@@ -154,9 +192,20 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
154
192
  const items = input.todos.map((t, i) => ({
155
193
  id: `claude-${i}`,
156
194
  title: String(t.content ?? ""),
157
- status: t.status === "completed" ? "completed" : t.status === "in_progress" ? "in_progress" : "pending",
195
+ status: t.status === "completed"
196
+ ? "completed"
197
+ : t.status === "in_progress"
198
+ ? "in_progress"
199
+ : "pending",
158
200
  }));
159
- out.push({ type: "tool_call", session_id: sessionId, ts, text: name, tool, plan_progress: { items } });
201
+ out.push({
202
+ type: "tool_call",
203
+ session_id: sessionId,
204
+ ts,
205
+ text: name,
206
+ tool,
207
+ plan_progress: { items },
208
+ });
160
209
  }
161
210
  else if (name === "TaskCreate" || name === "TaskUpdate") {
162
211
  // Typed plan progress, current surface (LIVE-VERIFIED 2.1.165):
@@ -175,7 +224,14 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
175
224
  });
176
225
  }
177
226
  else {
178
- out.push({ type: "tool_call", session_id: sessionId, ts, text: name, tool, payload: { input } });
227
+ out.push({
228
+ type: "tool_call",
229
+ session_id: sessionId,
230
+ ts,
231
+ text: name,
232
+ tool,
233
+ payload: { input },
234
+ });
179
235
  }
180
236
  }
181
237
  else if (name === "ExitPlanMode" && typeof input.plan === "string" && input.plan.trim()) {
@@ -185,7 +241,14 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
185
241
  out.push({ type: "tool_call", session_id: sessionId, ts, text: name, tool });
186
242
  }
187
243
  else {
188
- out.push({ type: "tool_call", session_id: sessionId, ts, text: name, tool, payload: { input } });
244
+ out.push({
245
+ type: "tool_call",
246
+ session_id: sessionId,
247
+ ts,
248
+ text: name,
249
+ tool,
250
+ payload: { input },
251
+ });
189
252
  }
190
253
  }
191
254
  }
@@ -245,7 +308,9 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
245
308
  type: "tool_result",
246
309
  session_id: sessionId,
247
310
  ts,
248
- text: status !== "ok" ? `tool_result: ${status}${detail ? `: ${detail}` : ""}` : "tool_result",
311
+ text: status !== "ok"
312
+ ? `tool_result: ${status}${detail ? `: ${detail}` : ""}`
313
+ : "tool_result",
249
314
  tool,
250
315
  });
251
316
  }
@@ -268,8 +333,40 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
268
333
  cost_usd: numberOrUndef(obj.total_cost_usd),
269
334
  },
270
335
  });
271
- if (typeof obj.result === "string" && obj.result.trim()) {
272
- out.push({ type: "message", session_id: sessionId, ts, text: obj.result });
336
+ // Structured-output runs (--json-schema): the typed `structured_output`
337
+ // value IS the answer surface it verbatim as the final message so the
338
+ // engine's single validator receives pure JSON (never the prose result,
339
+ // which may narrate around it).
340
+ // Finality is claimed ONLY for a SUCCESS result (review sol #1): a
341
+ // `subtype:"error_*"` result carries partial/aborted text that must never
342
+ // win in AnswerAssembly as the authoritative answer — it rides as a plain
343
+ // message (and the error branch below marks the run) instead.
344
+ const successResult = !obj.subtype || obj.subtype === "success";
345
+ if (obj.structured_output !== undefined && obj.structured_output !== null) {
346
+ out.push({
347
+ type: "message",
348
+ session_id: sessionId,
349
+ ts,
350
+ text: JSON.stringify(obj.structured_output),
351
+ // The final_source stamp is the machine-checkable identity of the
352
+ // wire event finality came from (conformance asserts it per fixture).
353
+ ...(successResult ? { final: true } : {}),
354
+ payload: {
355
+ structured_output: true,
356
+ ...(successResult ? { final_source: "structured_output" } : {}),
357
+ },
358
+ });
359
+ }
360
+ else if (typeof obj.result === "string" && obj.result.trim()) {
361
+ // The terminal `result` IS claude's typed final answer (docs: "the last
362
+ // line of the stream is a result message with the final response text").
363
+ out.push({
364
+ type: "message",
365
+ session_id: sessionId,
366
+ ts,
367
+ text: obj.result,
368
+ ...(successResult ? { final: true, payload: { final_source: "result" } } : {}),
369
+ });
273
370
  }
274
371
  if (obj.subtype && obj.subtype !== "success") {
275
372
  // `error_max_turns` is NOT a run failure: the turn ended because it hit the
@@ -287,12 +384,53 @@ function parseClaudeEventStateful(obj, sessionId, pendingTools, deniedTools = ne
287
384
  payload: { max_turns_reached: true, num_turns: numberOrUndef(obj.num_turns) },
288
385
  });
289
386
  }
387
+ else if (obj.subtype === "error_max_structured_output_retries") {
388
+ // The model exhausted its structured-output retries: a CONFORMANCE
389
+ // failure, not a run failure — the engine validator reports it as
390
+ // outputConformance failed and the run stays success-with-warnings.
391
+ out.push({
392
+ type: "thinking",
393
+ session_id: sessionId,
394
+ ts,
395
+ text: "structured-output retries exhausted; the final answer may not conform to the requested schema",
396
+ payload: { structured_output_retries_exhausted: true },
397
+ });
398
+ }
290
399
  else {
291
- out.push({ type: "error", session_id: sessionId, ts, error: `result subtype: ${obj.subtype}` });
400
+ out.push({
401
+ type: "error",
402
+ session_id: sessionId,
403
+ ts,
404
+ error: `result subtype: ${obj.subtype}`,
405
+ });
292
406
  }
293
407
  }
294
408
  return out;
295
409
  }
410
+ if (type === "stream_event") {
411
+ // --include-partial-messages (F2.5 W-C4): raw API stream frames. Only
412
+ // MAIN-conversation text deltas become delta messages (subagent frames
413
+ // carry parent_tool_use_id); every other frame (message_start, thinking
414
+ // deltas, block boundaries) is recognized plumbing — the complete
415
+ // assistant/result events still deliver the authoritative text.
416
+ const delta = obj.event?.delta;
417
+ if (obj.parent_tool_use_id == null &&
418
+ obj.event?.type === "content_block_delta" &&
419
+ delta?.type === "text_delta" &&
420
+ typeof delta.text === "string" &&
421
+ delta.text) {
422
+ return [
423
+ {
424
+ type: "message",
425
+ session_id: sessionId,
426
+ ts,
427
+ text: delta.text,
428
+ payload: { delta: true },
429
+ },
430
+ ];
431
+ }
432
+ return [];
433
+ }
296
434
  if (type === "system")
297
435
  return []; // recognized but uninteresting system subtypes
298
436
  // Control-protocol plumbing frames. Incoming control_requests are consumed
@@ -325,7 +463,11 @@ function summarizeToolResultContent(content) {
325
463
  if (!item || typeof item !== "object" || Array.isArray(item))
326
464
  return "";
327
465
  const rec = item;
328
- return typeof rec["text"] === "string" ? rec["text"] : typeof rec["content"] === "string" ? rec["content"] : "";
466
+ return typeof rec["text"] === "string"
467
+ ? rec["text"]
468
+ : typeof rec["content"] === "string"
469
+ ? rec["content"]
470
+ : "";
329
471
  })
330
472
  .filter(Boolean);
331
473
  return redactSecrets(parts.join(" ")).trim().replace(/\s+/g, " ").slice(0, 1000);
@@ -338,6 +480,55 @@ function summarizeToolResultContent(content) {
338
480
  function numberOrUndef(v) {
339
481
  return typeof v === "number" ? v : undefined;
340
482
  }
483
+ /**
484
+ * Map claude's `api_retry.error` onto the documented category enum (headless
485
+ * docs). It IS the category label, but a hostile/newer frame could send
486
+ * anything — unrecognized values collapse to "unknown" so the typed field is
487
+ * never free-form prose (review sol #7).
488
+ */
489
+ const CLAUDE_RETRY_CATEGORIES = new Set([
490
+ "authentication_failed",
491
+ "oauth_org_not_allowed",
492
+ "billing_error",
493
+ "rate_limit",
494
+ "overloaded",
495
+ "invalid_request",
496
+ "model_not_found",
497
+ "server_error",
498
+ "max_output_tokens",
499
+ "unknown",
500
+ ]);
501
+ function claudeRetryCategory(raw) {
502
+ if (raw === undefined || raw === null)
503
+ return undefined;
504
+ const s = String(raw);
505
+ if (CLAUDE_RETRY_CATEGORIES.has(s))
506
+ return s;
507
+ // Claude 2.1.x sends the human error LINE here, not the bare label (the F3
508
+ // "Known trap"): classify the documented categories from their stable
509
+ // markers so bounded-retry policy keeps the reason. Adapter-layer prose
510
+ // parsing is the one allowed home for this (no-regex governance applies to
511
+ // consumers, which read only the typed category).
512
+ if (/rate.?limit|too many requests|(?:^|\D)429(?:\D|$)/i.test(s))
513
+ return "rate_limit";
514
+ if (/overloaded|(?:^|\D)529(?:\D|$)/i.test(s))
515
+ return "overloaded";
516
+ if (/authentication|unauthorized|(?:^|\D)401(?:\D|$)/i.test(s))
517
+ return "authentication_failed";
518
+ if (/oauth.*org|org.*not.*allowed/i.test(s))
519
+ return "oauth_org_not_allowed";
520
+ if (/billing|payment|credit balance|(?:^|\D)402(?:\D|$)/i.test(s))
521
+ return "billing_error";
522
+ if (/model.{0,20}not.{0,10}found/i.test(s))
523
+ return "model_not_found";
524
+ if (/max.?output.?tokens/i.test(s))
525
+ return "max_output_tokens";
526
+ if (/invalid.?request|(?:^|\D)400(?:\D|$)/i.test(s))
527
+ return "invalid_request";
528
+ if (/internal server error|server.?error|(?:^|\D)5\d\d(?:\D|$)/i.test(s))
529
+ return "server_error";
530
+ return "unknown";
531
+ }
341
532
  function sumOrUndef(...values) {
342
533
  const nums = values.filter((v) => typeof v === "number");
343
534
  if (nums.length === 0)
package/dist/parse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../src/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { CredentialProfile, CredentialProfileStatus } from "@claudexor/schema";
2
+ import { type ClaudeProfileRuntimeDeps } from "./index.js";
3
+ /**
4
+ * Canonicalize a profile's isolation locator (INV-135): absolute, trailing
5
+ * separators stripped, symlinks resolved when the dir exists. Refuses the
6
+ * Claudexor-owned default native dir — profiles are ADDITIVE identities;
7
+ * ordinary ~/.claude is never a target, so profile operations cannot touch it.
8
+ */
9
+ export declare function canonicalProfileConfigDir(locator: string): string;
10
+ /**
11
+ * INV-135 strict profile routing for a run: exactly the profile's transport
12
+ * or a typed refusal — never the default ladder, never a cross-profile
13
+ * fallback. Pure resolution; the caller yields the refusal into the stream.
14
+ */
15
+ export declare function resolveClaudeProfileRoute(profile: CredentialProfile, specEnv: Record<string, string>, runtime: ClaudeProfileRuntimeDeps, abortSignal?: AbortSignal): Promise<{
16
+ route: "subscription" | "api_key";
17
+ nativeEnv: Record<string, string | null | undefined>;
18
+ subscriptionSource: "native_session" | "oauth_token_env" | null;
19
+ key: string | null;
20
+ oauthToken: string | null;
21
+ refusal: null;
22
+ } | {
23
+ refusal: string;
24
+ }>;
25
+ /** Doctor projection for one claude profile (INV-135). */
26
+ export declare function probeClaudeCredentialProfile(profile: CredentialProfile, runtime: ClaudeProfileRuntimeDeps, abortSignal?: AbortSignal): Promise<CredentialProfileStatus>;
27
+ //# sourceMappingURL=profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.d.ts","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAKpF,OAAO,EAAwB,KAAK,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAGjF;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASjE;AAED;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,EAAE,wBAAwB,EACjC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CACN;IACE,KAAK,EAAE,cAAc,GAAG,SAAS,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrD,kBAAkB,EAAE,gBAAgB,GAAG,iBAAiB,GAAG,IAAI,CAAC;IAChE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,IAAI,CAAC;CACf,GACD;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CACtB,CAiDA;AAED,0DAA0D;AAC1D,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,wBAAwB,EACjC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,uBAAuB,CAAC,CA6ElC"}
@@ -0,0 +1,174 @@
1
+ import { CredentialProfileStatus as CredentialProfileStatusSchema } from "@claudexor/schema";
2
+ import { nowIso, redactSecrets } from "@claudexor/util";
3
+ import { canonicalIsolationLocator, normalizeThroughExistingAncestor } from "@claudexor/core";
4
+ import { namespacedSecretRefBase } from "@claudexor/secrets";
5
+ import { claudeNativeEnv, BIN } from "./index.js";
6
+ import { defaultNativeClaudeConfigDir } from "./native-home.js";
7
+ /**
8
+ * Canonicalize a profile's isolation locator (INV-135): absolute, trailing
9
+ * separators stripped, symlinks resolved when the dir exists. Refuses the
10
+ * Claudexor-owned default native dir — profiles are ADDITIVE identities;
11
+ * ordinary ~/.claude is never a target, so profile operations cannot touch it.
12
+ */
13
+ export function canonicalProfileConfigDir(locator) {
14
+ const dir = canonicalIsolationLocator(locator, "credential profile config dir");
15
+ const defaultDir = normalizeThroughExistingAncestor(defaultNativeClaudeConfigDir());
16
+ if (dir === defaultDir) {
17
+ throw new Error("credential profile config dir must not be the default native Claude dir (profiles are additive; INV-135)");
18
+ }
19
+ return dir;
20
+ }
21
+ /**
22
+ * INV-135 strict profile routing for a run: exactly the profile's transport
23
+ * or a typed refusal — never the default ladder, never a cross-profile
24
+ * fallback. Pure resolution; the caller yields the refusal into the stream.
25
+ */
26
+ export async function resolveClaudeProfileRoute(profile, specEnv, runtime, abortSignal) {
27
+ let nativeEnv = claudeNativeEnv(specEnv);
28
+ let key = null;
29
+ let oauthToken = null;
30
+ let subscriptionSource = null;
31
+ if (profile.credential_kind === "config_dir_login") {
32
+ try {
33
+ const configDir = canonicalProfileConfigDir(profile.isolation_locator ?? "");
34
+ nativeEnv = claudeNativeEnv(specEnv, configDir);
35
+ // configDir rides EXPLICITLY (round-17 BLOCK): the production probe
36
+ // re-normalizes its env, and without the explicit dir it would inspect
37
+ // the DEFAULT store while claiming to verify the profile.
38
+ const probe = await runtime.probeAuthStatus(BIN, { env: nativeEnv, configDir, abortSignal });
39
+ if (probe.authed)
40
+ subscriptionSource = "native_session";
41
+ else
42
+ return {
43
+ refusal: probe.probeError
44
+ ? `credential profile "${profile.profile_id}": auth probe failed — ${probe.probeError}`
45
+ : `credential profile "${profile.profile_id}" has no verified claude.ai login in its config dir (run the profile login first)`,
46
+ };
47
+ }
48
+ catch (err) {
49
+ return { refusal: err instanceof Error ? err.message : String(err) };
50
+ }
51
+ }
52
+ else if (profile.credential_kind === "oauth_token") {
53
+ const slotRefusal = claudeProfileSlotRefusal(profile);
54
+ if (slotRefusal)
55
+ return { refusal: slotRefusal };
56
+ oauthToken = profile.secret_ref ? runtime.resolveProfileSecret(profile.secret_ref) : null;
57
+ if (oauthToken)
58
+ subscriptionSource = "oauth_token_env";
59
+ else
60
+ return {
61
+ refusal: `credential profile "${profile.profile_id}": secret "${profile.secret_ref ?? "(missing ref)"}" is not stored`,
62
+ };
63
+ }
64
+ else {
65
+ const slotRefusal = claudeProfileSlotRefusal(profile);
66
+ if (slotRefusal)
67
+ return { refusal: slotRefusal };
68
+ key = profile.secret_ref ? runtime.resolveProfileSecret(profile.secret_ref) : null;
69
+ if (!key)
70
+ return {
71
+ refusal: `credential profile "${profile.profile_id}": secret "${profile.secret_ref ?? "(missing ref)"}" is not stored`,
72
+ };
73
+ }
74
+ return {
75
+ route: subscriptionSource !== null ? "subscription" : "api_key",
76
+ nativeEnv,
77
+ subscriptionSource,
78
+ key,
79
+ oauthToken,
80
+ refusal: null,
81
+ };
82
+ }
83
+ /** Doctor projection for one claude profile (INV-135). */
84
+ export async function probeClaudeCredentialProfile(profile, runtime, abortSignal) {
85
+ const base = { profile_id: profile.profile_id, harness_id: "claude" };
86
+ try {
87
+ if (profile.credential_kind === "config_dir_login") {
88
+ const dir = canonicalProfileConfigDir(profile.isolation_locator ?? "");
89
+ const probe = await runtime.probeAuthStatus(BIN, {
90
+ env: claudeNativeEnv(undefined, dir),
91
+ configDir: dir,
92
+ abortSignal,
93
+ });
94
+ if (probe.authed)
95
+ return CredentialProfileStatusSchema.parse({
96
+ ...base,
97
+ availability: "available",
98
+ verification: "passed",
99
+ detail: "claude.ai login verified in the profile config dir",
100
+ last_verified_at: nowIso(),
101
+ });
102
+ // Readiness-edge contract (ARCHITECTURE §auth / DEVELOPMENT): a probe
103
+ // that could not decide is unknown+not_run; a cleanly logged-out dir is
104
+ // absent → unavailable+NOT_RUN (there is no login to have failed); a dir
105
+ // logged in under the WRONG method (e.g. an API key, not claude.ai) is
106
+ // present-but-wrong → available+failed.
107
+ if (probe.probeError)
108
+ return CredentialProfileStatusSchema.parse({
109
+ ...base,
110
+ availability: "unknown",
111
+ verification: "not_run",
112
+ detail: probe.probeError,
113
+ });
114
+ if (!probe.loggedIn)
115
+ return CredentialProfileStatusSchema.parse({
116
+ ...base,
117
+ availability: "unavailable",
118
+ verification: "not_run",
119
+ detail: "no claude.ai login in the profile config dir (run the profile login)",
120
+ });
121
+ return CredentialProfileStatusSchema.parse({
122
+ ...base,
123
+ availability: "available",
124
+ verification: "failed",
125
+ detail: `logged in via ${probe.authMethod ?? "an unknown method"}, not claude.ai subscription auth`,
126
+ });
127
+ }
128
+ // Secret-ref kinds: the probe enforces the SAME slot binding as the run
129
+ // path (release wave round-15 #4) — a foreign-provider or bare ref is
130
+ // unavailable, never admitted-then-rejected at execution. The foreign
131
+ // slot is never even read.
132
+ const slotRefusal = claudeProfileSlotRefusal(profile);
133
+ if (slotRefusal)
134
+ return CredentialProfileStatusSchema.parse({
135
+ ...base,
136
+ availability: "unavailable",
137
+ verification: "failed",
138
+ detail: slotRefusal,
139
+ });
140
+ // PRESENCE is the honest doctor fact here; liveness is the capability
141
+ // smoke's job, not a listing probe's.
142
+ const stored = profile.secret_ref
143
+ ? runtime.resolveProfileSecret(profile.secret_ref) !== null
144
+ : false;
145
+ return CredentialProfileStatusSchema.parse({
146
+ ...base,
147
+ availability: stored ? "available" : "unavailable",
148
+ verification: "not_run",
149
+ detail: stored
150
+ ? `secret "${profile.secret_ref}" is stored`
151
+ : `secret "${profile.secret_ref ?? "(missing ref)"}" is not stored`,
152
+ });
153
+ }
154
+ catch (err) {
155
+ return CredentialProfileStatusSchema.parse({
156
+ ...base,
157
+ availability: "unavailable",
158
+ verification: "failed",
159
+ detail: redactSecrets(err instanceof Error ? err.message : String(err)).slice(0, 300),
160
+ });
161
+ }
162
+ }
163
+ /** ONE owner of the claude slot binding, shared by the run route and the
164
+ * doctor probe (INV-135): a profile's ref must be a NAMESPACED managed slot
165
+ * bound to its own provider — a claude profile referencing openai:* would
166
+ * transmit that key to Anthropic, and a bare ref (e.g. "anthropic") would
167
+ * alias the engine-default credential. Null = the binding holds. */
168
+ function claudeProfileSlotRefusal(profile) {
169
+ const expected = profile.credential_kind === "oauth_token" ? "claude_oauth" : "anthropic";
170
+ if (namespacedSecretRefBase(profile.secret_ref) === expected)
171
+ return null;
172
+ return `credential profile "${profile.profile_id}": ${profile.credential_kind} secret_ref must use a namespaced ${expected} slot (base:profile, e.g. ${expected}:${profile.profile_id}; got "${profile.secret_ref ?? ""}")`;
173
+ }
174
+ //# sourceMappingURL=profile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"profile.js","sourceRoot":"","sources":["../src/profile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export declare function smokeIsolatedApiKey(abortSignal?: AbortSignal): Promise<{
2
+ ok: boolean;
3
+ detail: string;
4
+ }>;
5
+ export declare function smokeIsolatedOAuthToken(token: string, abortSignal?: AbortSignal): Promise<{
6
+ ok: boolean;
7
+ detail: string;
8
+ }>;
9
+ //# sourceMappingURL=smoke.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"smoke.d.ts","sourceRoot":"","sources":["../src/smoke.ts"],"names":[],"mappings":"AAUA,wBAAsB,mBAAmB,CACvC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA+C1C;AAED,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC;IAAE,EAAE,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA6C1C"}