@claudexor/core 1.0.0 → 2.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 (92) hide show
  1. package/dist/adapter.d.ts +14 -1
  2. package/dist/adapter.d.ts.map +1 -1
  3. package/dist/adapter.js.map +1 -1
  4. package/dist/answer-assembly.d.ts +22 -0
  5. package/dist/answer-assembly.d.ts.map +1 -0
  6. package/dist/answer-assembly.js +55 -0
  7. package/dist/answer-assembly.js.map +1 -0
  8. package/dist/attachment-integrity.d.ts +4 -0
  9. package/dist/attachment-integrity.d.ts.map +1 -0
  10. package/dist/attachment-integrity.js +12 -0
  11. package/dist/attachment-integrity.js.map +1 -0
  12. package/dist/auth-capability-verifier.d.ts +42 -0
  13. package/dist/auth-capability-verifier.d.ts.map +1 -0
  14. package/dist/auth-capability-verifier.js +417 -0
  15. package/dist/auth-capability-verifier.js.map +1 -0
  16. package/dist/auth-readiness.d.ts +24 -0
  17. package/dist/auth-readiness.d.ts.map +1 -0
  18. package/dist/auth-readiness.js +34 -0
  19. package/dist/auth-readiness.js.map +1 -0
  20. package/dist/browser-mcp-launcher.d.ts +3 -0
  21. package/dist/browser-mcp-launcher.d.ts.map +1 -0
  22. package/dist/browser-mcp-launcher.js +18 -0
  23. package/dist/browser-mcp-launcher.js.map +1 -0
  24. package/dist/browser-mcp.d.ts +10 -16
  25. package/dist/browser-mcp.d.ts.map +1 -1
  26. package/dist/browser-mcp.js +20 -23
  27. package/dist/browser-mcp.js.map +1 -1
  28. package/dist/capabilities.d.ts +0 -1
  29. package/dist/capabilities.d.ts.map +1 -1
  30. package/dist/capabilities.js +0 -3
  31. package/dist/capabilities.js.map +1 -1
  32. package/dist/conformance.d.ts +43 -0
  33. package/dist/conformance.d.ts.map +1 -1
  34. package/dist/conformance.js +67 -1
  35. package/dist/conformance.js.map +1 -1
  36. package/dist/diff.d.ts +9 -0
  37. package/dist/diff.d.ts.map +1 -1
  38. package/dist/diff.js +18 -3
  39. package/dist/diff.js.map +1 -1
  40. package/dist/doctor.d.ts +13 -2
  41. package/dist/doctor.d.ts.map +1 -1
  42. package/dist/doctor.js +88 -9
  43. package/dist/doctor.js.map +1 -1
  44. package/dist/effort.d.ts.map +1 -1
  45. package/dist/effort.js +2 -1
  46. package/dist/effort.js.map +1 -1
  47. package/dist/env-scope.d.ts.map +1 -1
  48. package/dist/env-scope.js +15 -0
  49. package/dist/env-scope.js.map +1 -1
  50. package/dist/executable-inspection.d.ts +52 -0
  51. package/dist/executable-inspection.d.ts.map +1 -0
  52. package/dist/executable-inspection.js +83 -0
  53. package/dist/executable-inspection.js.map +1 -0
  54. package/dist/inactivity.d.ts.map +1 -1
  55. package/dist/inactivity.js.map +1 -1
  56. package/dist/index.d.ts +9 -0
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +9 -0
  59. package/dist/index.js.map +1 -1
  60. package/dist/instructions.d.ts +10 -0
  61. package/dist/instructions.d.ts.map +1 -0
  62. package/dist/instructions.js +14 -0
  63. package/dist/instructions.js.map +1 -0
  64. package/dist/isolation-locator.d.ts +21 -0
  65. package/dist/isolation-locator.d.ts.map +1 -0
  66. package/dist/isolation-locator.js +55 -0
  67. package/dist/isolation-locator.js.map +1 -0
  68. package/dist/native/claudexor-process-identity +0 -0
  69. package/dist/proc.d.ts +32 -0
  70. package/dist/proc.d.ts.map +1 -1
  71. package/dist/proc.js +50 -0
  72. package/dist/proc.js.map +1 -1
  73. package/dist/process-group.d.ts +67 -0
  74. package/dist/process-group.d.ts.map +1 -0
  75. package/dist/process-group.js +107 -0
  76. package/dist/process-group.js.map +1 -0
  77. package/dist/process-identity.d.ts +65 -0
  78. package/dist/process-identity.d.ts.map +1 -0
  79. package/dist/process-identity.js +209 -0
  80. package/dist/process-identity.js.map +1 -0
  81. package/dist/process-registry.d.ts +17 -5
  82. package/dist/process-registry.d.ts.map +1 -1
  83. package/dist/process-registry.js +8 -3
  84. package/dist/process-registry.js.map +1 -1
  85. package/dist/runloop.d.ts.map +1 -1
  86. package/dist/runloop.js +1 -0
  87. package/dist/runloop.js.map +1 -1
  88. package/dist/runtime-env.d.ts +8 -0
  89. package/dist/runtime-env.d.ts.map +1 -1
  90. package/dist/runtime-env.js +48 -4
  91. package/dist/runtime-env.js.map +1 -1
  92. package/package.json +9 -3
package/dist/adapter.d.ts CHANGED
@@ -1,10 +1,16 @@
1
- import type { AuthPreference, ConformanceReport, HarnessEvent, HarnessManifest, HarnessModel, HarnessRunSpec, InteractionAnswerSet, InteractionRequest } from "@claudexor/schema";
1
+ import type { AuthPreference, AuthSourceKind, ConformanceReport, CredentialProfile, CredentialProfileStatus, HarnessEvent, HarnessManifest, HarnessModel, HarnessRunSpec, InteractionAnswerSet, InteractionRequest } from "@claudexor/schema";
2
2
  export interface DoctorSpec {
3
3
  cwd: string;
4
4
  /** Optional scoped env for probes that must mirror a concrete run route. */
5
5
  env?: Record<string, string | null | undefined>;
6
6
  /** Optional auth route preference for probes that must mirror a concrete run route. */
7
7
  authPreference?: AuthPreference;
8
+ /** Bypass every readiness cache for this probe without reading, writing, or clearing shared cache state. */
9
+ fresh?: boolean;
10
+ /** Probe only this concrete auth source; adapters must not verify unrelated routes. */
11
+ authSource?: AuthSourceKind;
12
+ /** Cancels active vendor probes. This runtime-only value is never part of a cache key. */
13
+ abortSignal?: AbortSignal;
8
14
  }
9
15
  /**
10
16
  * The contract every harness adapter implements. Adapters translate a native
@@ -30,6 +36,13 @@ export interface HarnessAdapter {
30
36
  models?(spec?: DoctorSpec): Promise<HarnessModel[]>;
31
37
  /** Optional cancellation. */
32
38
  cancel?(sessionId: string): Promise<void>;
39
+ /**
40
+ * Optional per-profile readiness probe (INV-135): the doctor projection for
41
+ * one credential profile, without asserting anything about other routes.
42
+ * Adapters that support no profile transport simply omit it — the service
43
+ * layer reports `unknown` availability for their profiles.
44
+ */
45
+ probeCredentialProfile?(profile: CredentialProfile, abortSignal?: AbortSignal): Promise<CredentialProfileStatus>;
33
46
  }
34
47
  /** A registry of available adapters keyed by harness id. */
35
48
  export type AdapterRegistry = Map<string, HarnessAdapter>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChD,uFAAuF;IACvF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAErC,yEAAyE;IACzE,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErD,+CAA+C;IAC/C,GAAG,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAEvD,2EAA2E;IAC3E,MAAM,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEpD,6BAA6B;IAC7B,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACvE;kFAC8E;IAC9E,YAAY,CAAC,IAAI,MAAM,CAAC;CACzB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAK/F"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAChD,uFAAuF;IACvF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,4GAA4G;IAC5G,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,uFAAuF;IACvF,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,0FAA0F;IAC1F,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpB,iEAAiE;IACjE,QAAQ,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAErC,yEAAyE;IACzE,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAErD,+CAA+C;IAC/C,GAAG,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAEvD,2EAA2E;IAC3E,MAAM,CAAC,CAAC,IAAI,EAAE,cAAc,GAAG,aAAa,CAAC,YAAY,CAAC,CAAC;IAE3D;;;;;OAKG;IACH,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEpD,6BAA6B;IAC7B,MAAM,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C;;;;;OAKG;IACH,sBAAsB,CAAC,CACrB,OAAO,EAAE,iBAAiB,EAC1B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAAC;CACrC;AAED,4DAA4D;AAC5D,MAAM,MAAM,eAAe,GAAG,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAE1D;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IACvE;kFAC8E;IAC9E,YAAY,CAAC,IAAI,MAAM,CAAC;CACzB;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,cAAc,GAAG,kBAAkB,GAAG,SAAS,CAK/F"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AA0EA,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAsC,CAAC;IACzD,OAAO,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA8B,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/F,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AA8FA,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,oBAAoB,CAAC,CAAC;IACnD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC9D,MAAM,SAAS,GAAG,OAAsC,CAAC;IACzD,OAAO,OAAO,SAAS,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAE,OAA8B,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/F,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Answer assembly with TYPED finality (W-C1): a harness's `final` message
3
+ * (claude/cursor terminal `result`, codex's finalized last agent message) IS
4
+ * the answer, verbatim — mid-run narration never bleeds into it. The joined
5
+ * narration remains the fallback for adapters/versions without the marker.
6
+ */
7
+ export declare class AnswerAssembly {
8
+ private readonly parts;
9
+ private finalText?;
10
+ /** Feed one already-sanitized harness event; non-answer events are ignored. */
11
+ observe(ev: {
12
+ type: string;
13
+ text?: string;
14
+ final?: boolean;
15
+ payload?: Record<string, unknown>;
16
+ }): void;
17
+ /** Whether a typed final answer has been accepted. */
18
+ hasFinal(): boolean;
19
+ /** The assembled answer: the typed final verbatim, else joined narration. */
20
+ text(): string;
21
+ }
22
+ //# sourceMappingURL=answer-assembly.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-assembly.d.ts","sourceRoot":"","sources":["../src/answer-assembly.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,SAAS,CAAC,CAAS;IAE3B,+EAA+E;IAC/E,OAAO,CAAC,EAAE,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,IAAI;IAiBR,sDAAsD;IACtD,QAAQ,IAAI,OAAO;IAInB,6EAA6E;IAC7E,IAAI,IAAI,MAAM;CAGf"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Answer assembly with TYPED finality (W-C1): a harness's `final` message
3
+ * (claude/cursor terminal `result`, codex's finalized last agent message) IS
4
+ * the answer, verbatim — mid-run narration never bleeds into it. The joined
5
+ * narration remains the fallback for adapters/versions without the marker.
6
+ */
7
+ export class AnswerAssembly {
8
+ parts = [];
9
+ finalText;
10
+ /** Feed one already-sanitized harness event; non-answer events are ignored. */
11
+ observe(ev) {
12
+ if (ev.type !== "message" || !ev.text)
13
+ return;
14
+ if (ev.payload?.["auth_switched"] === true)
15
+ return;
16
+ // Live deltas are DISPLAY-stream chunks (W-C4): the complete message
17
+ // always follows — joining chunks here would shred the answer.
18
+ if (ev.payload?.["delta"] === true)
19
+ return;
20
+ if (ev.final === true) {
21
+ // A whitespace-only final is NOT an answer: ignore it, never let it
22
+ // erase an earlier real final (review sol #3). The accepted final is
23
+ // kept VERBATIM (the documented contract) — no trimming.
24
+ if (ev.text.trim().length === 0)
25
+ return;
26
+ this.finalText = ev.text;
27
+ }
28
+ else {
29
+ pushUniqueText(this.parts, ev.text);
30
+ }
31
+ }
32
+ /** Whether a typed final answer has been accepted. */
33
+ hasFinal() {
34
+ return this.finalText !== undefined;
35
+ }
36
+ /** The assembled answer: the typed final verbatim, else joined narration. */
37
+ text() {
38
+ return this.finalText ?? this.parts.join("\n").trim();
39
+ }
40
+ }
41
+ /**
42
+ * Deduplicate the known "final result repeats the last streamed message" shape
43
+ * (adjacent only). Legitimately repeated earlier messages are preserved — a
44
+ * whole-array dedupe would silently merge real output.
45
+ */
46
+ function pushUniqueText(parts, text) {
47
+ const normalized = text.trim();
48
+ if (!normalized)
49
+ return;
50
+ const last = parts[parts.length - 1]?.trim();
51
+ if (last === normalized)
52
+ return;
53
+ parts.push(normalized);
54
+ }
55
+ //# sourceMappingURL=answer-assembly.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"answer-assembly.js","sourceRoot":"","sources":["../src/answer-assembly.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IACR,KAAK,GAAa,EAAE,CAAC;IAC9B,SAAS,CAAU;IAE3B,+EAA+E;IAC/E,OAAO,CAAC,EAKP;QACC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,EAAE,CAAC,IAAI;YAAE,OAAO;QAC9C,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,eAAe,CAAC,KAAK,IAAI;YAAE,OAAO;QACnD,qEAAqE;QACrE,+DAA+D;QAC/D,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI;YAAE,OAAO;QAC3C,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtB,oEAAoE;YACpE,qEAAqE;YACrE,yDAAyD;YACzD,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACxC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,QAAQ;QACN,OAAO,IAAI,CAAC,SAAS,KAAK,SAAS,CAAC;IACtC,CAAC;IAED,6EAA6E;IAC7E,IAAI;QACF,OAAO,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACxD,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,KAAe,EAAE,IAAY;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7C,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO;IAChC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { Attachment } from "@claudexor/schema";
2
+ /** Read once and bind the adapter payload to the finalized daemon resource digest. */
3
+ export declare function readVerifiedAttachmentBytes(attachment: Attachment): Buffer;
4
+ //# sourceMappingURL=attachment-integrity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-integrity.d.ts","sourceRoot":"","sources":["../src/attachment-integrity.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,sFAAsF;AACtF,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAU1E"}
@@ -0,0 +1,12 @@
1
+ import { createHash } from "node:crypto";
2
+ import { readFileSync } from "node:fs";
3
+ /** Read once and bind the adapter payload to the finalized daemon resource digest. */
4
+ export function readVerifiedAttachmentBytes(attachment) {
5
+ const bytes = readFileSync(attachment.path);
6
+ const digest = `sha256:${createHash("sha256").update(bytes).digest("hex")}`;
7
+ if (bytes.length !== attachment.size_bytes || digest !== attachment.sha256) {
8
+ throw Object.assign(new Error(`attachment bytes no longer match resource ${attachment.resource_id}`), { code: "attachment_digest_mismatch" });
9
+ }
10
+ return bytes;
11
+ }
12
+ //# sourceMappingURL=attachment-integrity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment-integrity.js","sourceRoot":"","sources":["../src/attachment-integrity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGvC,sFAAsF;AACtF,MAAM,UAAU,2BAA2B,CAAC,UAAsB;IAChE,MAAM,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5E,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC,UAAU,IAAI,MAAM,KAAK,UAAU,CAAC,MAAM,EAAE,CAAC;QAC3E,MAAM,MAAM,CAAC,MAAM,CACjB,IAAI,KAAK,CAAC,6CAA6C,UAAU,CAAC,WAAW,EAAE,CAAC,EAChF,EAAE,IAAI,EAAE,4BAA4B,EAAE,CACvC,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { type AuthCapabilityBinding as AuthCapabilityBindingType, type AuthCapabilityReceipt as AuthCapabilityReceiptType, type AuthRequest, type AuthSmokeDisclosure as AuthSmokeDisclosureType, type AuthSourceKind, type CredentialRoute } from "@claudexor/schema";
2
+ import type { AdapterRegistry, HarnessAdapter } from "./adapter.js";
3
+ export interface AuthCapabilityPreparationRequest {
4
+ attemptId: string;
5
+ harness: string;
6
+ requested: AuthRequest;
7
+ requiredRoute: CredentialRoute;
8
+ requiredSource: AuthSourceKind;
9
+ }
10
+ export interface AuthCapabilityPreparation {
11
+ binding: AuthCapabilityBindingType;
12
+ }
13
+ export interface AuthCapabilityVerificationRequest {
14
+ binding: AuthCapabilityBindingType;
15
+ startedAt: string;
16
+ abortSignal?: AbortSignal;
17
+ }
18
+ export interface AuthCapabilityVerifierDeps {
19
+ now?: () => Date;
20
+ receiptId?: () => string;
21
+ scratchRoot?: string;
22
+ }
23
+ /**
24
+ * Executes one ordinary adapter run and reduces only typed normalized events
25
+ * into a redacted exact-route receipt. It owns an external scratch tree, never
26
+ * discovers a second adapter, and never persists model output.
27
+ */
28
+ export declare class AuthCapabilityVerifier {
29
+ private readonly adapter;
30
+ private readonly now;
31
+ private readonly receiptId;
32
+ private readonly scratchRoot;
33
+ constructor(adapter: (id: string) => HarnessAdapter | undefined, deps?: AuthCapabilityVerifierDeps);
34
+ static fromRegistry(registry: AdapterRegistry, deps?: AuthCapabilityVerifierDeps): AuthCapabilityVerifier;
35
+ disclosure(harness: string, requested: AuthRequest, requiredRoute: CredentialRoute, requiredSource: AuthSourceKind): AuthSmokeDisclosureType;
36
+ prepare(request: AuthCapabilityPreparationRequest): AuthCapabilityPreparation;
37
+ verify(request: AuthCapabilityVerificationRequest): Promise<AuthCapabilityReceiptType>;
38
+ /** Remove only the verifier-owned directory for a validated durable attempt. */
39
+ cleanup(attemptId: string): void;
40
+ private createScratch;
41
+ }
42
+ //# sourceMappingURL=auth-capability-verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-capability-verifier.d.ts","sourceRoot":"","sources":["../src/auth-capability-verifier.ts"],"names":[],"mappings":"AAgBA,OAAO,EAML,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,qBAAqB,IAAI,yBAAyB,EACvD,KAAK,WAAW,EAChB,KAAK,mBAAmB,IAAI,uBAAuB,EACnD,KAAK,cAAc,EACnB,KAAK,eAAe,EAErB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAMpE,MAAM,WAAW,gCAAgC;IAC/C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,WAAW,CAAC;IACvB,aAAa,EAAE,eAAe,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,yBAAyB,CAAC;CACpC;AAED,MAAM,WAAW,iCAAiC;IAChD,OAAO,EAAE,yBAAyB,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,sBAAsB;IAM/B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAL1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGlB,OAAO,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,cAAc,GAAG,SAAS,EACpE,IAAI,GAAE,0BAA+B;IASvC,MAAM,CAAC,YAAY,CACjB,QAAQ,EAAE,eAAe,EACzB,IAAI,GAAE,0BAA+B,GACpC,sBAAsB;IAIzB,UAAU,CACR,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,WAAW,EACtB,aAAa,EAAE,eAAe,EAC9B,cAAc,EAAE,cAAc,GAC7B,uBAAuB;IAgB1B,OAAO,CAAC,OAAO,EAAE,gCAAgC,GAAG,yBAAyB;IAmBvE,MAAM,CAAC,OAAO,EAAE,iCAAiC,GAAG,OAAO,CAAC,yBAAyB,CAAC;IA2P5F,gFAAgF;IAChF,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAkBhC,OAAO,CAAC,aAAa;CAYtB"}
@@ -0,0 +1,417 @@
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { chmodSync, existsSync, lstatSync, mkdirSync, openSync, readSync, readdirSync, readlinkSync, realpathSync, rmSync, closeSync, } from "node:fs";
3
+ import { tmpdir } from "node:os";
4
+ import { join, relative, resolve, sep } from "node:path";
5
+ import { AuthCapabilityBinding, AuthCapabilityReceipt, AuthSmokeDisclosure, HarnessEvent, HarnessRunSpec as HarnessRunSpecSchema, } from "@claudexor/schema";
6
+ import { ensureCanonicalPrivateDirectory } from "@claudexor/util";
7
+ import { AnswerAssembly } from "./answer-assembly.js";
8
+ const MAX_RESPONSE_CHARS = 4_096;
9
+ const ATTEMPT_ID = /^[A-Za-z0-9-]+$/;
10
+ /**
11
+ * Executes one ordinary adapter run and reduces only typed normalized events
12
+ * into a redacted exact-route receipt. It owns an external scratch tree, never
13
+ * discovers a second adapter, and never persists model output.
14
+ */
15
+ export class AuthCapabilityVerifier {
16
+ adapter;
17
+ now;
18
+ receiptId;
19
+ scratchRoot;
20
+ constructor(adapter, deps = {}) {
21
+ this.adapter = adapter;
22
+ this.now = deps.now ?? (() => new Date());
23
+ this.receiptId = deps.receiptId ?? (() => `authcap-${randomUUID()}`);
24
+ this.scratchRoot = resolve(deps.scratchRoot ?? join(realpathSync(tmpdir()), "claudexor-auth-smokes"));
25
+ }
26
+ static fromRegistry(registry, deps = {}) {
27
+ return new AuthCapabilityVerifier((id) => registry.get(id), deps);
28
+ }
29
+ disclosure(harness, requested, requiredRoute, requiredSource) {
30
+ return AuthSmokeDisclosure.parse({
31
+ schemaVersion: 1,
32
+ protocolVersion: 1,
33
+ harness,
34
+ requested,
35
+ requiredRoute,
36
+ requiredSource,
37
+ networkScope: "selected_harness_only",
38
+ billingKnowledge: "unknown",
39
+ incrementalCostKnowledge: "unknown",
40
+ mayConsumeQuota: true,
41
+ generatedAt: this.now().toISOString(),
42
+ });
43
+ }
44
+ prepare(request) {
45
+ if (!ATTEMPT_ID.test(request.attemptId))
46
+ throw new Error("invalid auth capability attempt id");
47
+ const disclosure = this.disclosure(request.harness, request.requested, request.requiredRoute, request.requiredSource);
48
+ const challengeDigest = sha256(challengeFor(request.attemptId));
49
+ return {
50
+ binding: AuthCapabilityBinding.parse({
51
+ attemptId: request.attemptId,
52
+ challengeDigest,
53
+ requestDigest: capabilityRequestDigest(disclosure, challengeDigest),
54
+ disclosure,
55
+ }),
56
+ };
57
+ }
58
+ async verify(request) {
59
+ const binding = AuthCapabilityBinding.parse(request.binding);
60
+ const disclosure = binding.disclosure;
61
+ const expected = challengeFor(binding.attemptId);
62
+ const requestMismatch = binding.challengeDigest !== sha256(expected) ||
63
+ binding.requestDigest !== capabilityRequestDigest(disclosure, binding.challengeDigest);
64
+ const streamHash = createHash("sha256");
65
+ // The challenge answer follows the engine's typed-finality semantics
66
+ // (AnswerAssembly, W-C1): harnesses narrate the answer mid-run and then
67
+ // repeat it as their typed `final` message — concatenating both would
68
+ // false-fail every compliant run with "expected+expected".
69
+ const answer = new AnswerAssembly();
70
+ let narrationChars = 0;
71
+ let narrationTruncated = false;
72
+ let effective = null;
73
+ let effectiveSource = null;
74
+ let routeConflict = false;
75
+ let sourceConflict = false;
76
+ let startedEvents = 0;
77
+ let completedEvents = 0;
78
+ let errorEvents = 0;
79
+ let unexpectedToolEvents = 0;
80
+ let interactionEvents = 0;
81
+ let sessionMismatchEvents = 0;
82
+ let eventsAfterCompleted = 0;
83
+ let protocolViolation = false;
84
+ let adapterFailed = false;
85
+ let adapterMissing = false;
86
+ let adapterIdentityMismatch = false;
87
+ let cancelled = request.abortSignal?.aborted === true;
88
+ let terminalSeen = false;
89
+ const evidence = new Set();
90
+ const noScratchDigest = sha256("scratch:not-created");
91
+ let scratchBeforeDigest = noScratchDigest;
92
+ let scratchAfterDigest = noScratchDigest;
93
+ let scratchPath = null;
94
+ let adapter;
95
+ if (!requestMismatch) {
96
+ try {
97
+ adapter = this.adapter(disclosure.harness);
98
+ }
99
+ catch {
100
+ adapterFailed = true;
101
+ evidence.add("adapter:lookup_threw");
102
+ }
103
+ if (!adapter && !adapterFailed)
104
+ adapterMissing = true;
105
+ if (adapter && adapter.id !== disclosure.harness) {
106
+ adapterIdentityMismatch = true;
107
+ evidence.add("adapter:identity_mismatch");
108
+ }
109
+ }
110
+ if (adapter && !adapterIdentityMismatch && !adapterFailed && !requestMismatch && !cancelled) {
111
+ try {
112
+ scratchPath = this.createScratch(binding.attemptId);
113
+ scratchBeforeDigest = fingerprintTree(scratchPath);
114
+ const spec = HarnessRunSpecSchema.parse({
115
+ session_id: `auth-smoke-${binding.attemptId}`,
116
+ intent: "explain",
117
+ prompt: `Return exactly ${expected} and no other text. Do not call tools.`,
118
+ cwd: scratchPath,
119
+ access: "readonly",
120
+ external_context_policy: "off",
121
+ tool_permission_policy: { web: "off", allow: [], deny: [] },
122
+ model_hint: null,
123
+ effort_hint: null,
124
+ max_turns: 1,
125
+ auth_preference: disclosure.requested,
126
+ // The capability smoke proves the DEFAULT credential ladder's route;
127
+ // profile readiness has its own probe (probeCredentialProfile).
128
+ credential_profile: null,
129
+ resume_session_id: null,
130
+ env_inheritance: "clean",
131
+ evidence_policy: "stream_only",
132
+ env: {},
133
+ attachments: [],
134
+ browser: null,
135
+ stream_deltas: false,
136
+ extra: request.abortSignal ? { abortSignal: request.abortSignal } : {},
137
+ });
138
+ for await (const raw of adapter.run(spec)) {
139
+ const event = HarnessEvent.parse(raw);
140
+ streamHash.update(JSON.stringify({
141
+ type: event.type,
142
+ session: event.session_id,
143
+ route: event.credential_route ?? null,
144
+ source: event.credential_source ?? null,
145
+ aborted: event.aborted ?? false,
146
+ textDigest: event.text === undefined ? null : sha256(event.text),
147
+ }));
148
+ if (terminalSeen)
149
+ eventsAfterCompleted += 1;
150
+ if (event.session_id !== spec.session_id) {
151
+ sessionMismatchEvents += 1;
152
+ evidence.add("event:session_mismatch");
153
+ continue;
154
+ }
155
+ if (startedEvents === 0 && event.type !== "started")
156
+ protocolViolation = true;
157
+ switch (event.type) {
158
+ case "started":
159
+ startedEvents += 1;
160
+ if (startedEvents !== 1 || terminalSeen)
161
+ protocolViolation = true;
162
+ evidence.add("event:started");
163
+ if (event.credential_route) {
164
+ if (effective && effective !== event.credential_route)
165
+ routeConflict = true;
166
+ effective ??= event.credential_route;
167
+ evidence.add(`credential-route:${event.credential_route}`);
168
+ }
169
+ if (event.credential_source) {
170
+ if (effectiveSource && effectiveSource !== event.credential_source)
171
+ sourceConflict = true;
172
+ effectiveSource ??= event.credential_source;
173
+ evidence.add(`credential-source:${event.credential_source}`);
174
+ }
175
+ break;
176
+ case "message": {
177
+ // Bound only the retained NARRATION (the no-final fallback); a
178
+ // typed final is a single already-materialized event text and
179
+ // makes narration irrelevant to the comparison.
180
+ const text = event.text ?? "";
181
+ if (event.final !== true) {
182
+ if (narrationChars + text.length > MAX_RESPONSE_CHARS) {
183
+ narrationTruncated = true;
184
+ break;
185
+ }
186
+ narrationChars += text.length;
187
+ }
188
+ answer.observe(event);
189
+ break;
190
+ }
191
+ case "error":
192
+ errorEvents += 1;
193
+ evidence.add("event:error");
194
+ break;
195
+ case "interaction_requested":
196
+ interactionEvents += 1;
197
+ evidence.add("event:unexpected_interaction");
198
+ break;
199
+ case "tool_call":
200
+ case "tool_result":
201
+ case "file_change":
202
+ unexpectedToolEvents += 1;
203
+ evidence.add("event:unexpected_tool_activity");
204
+ break;
205
+ case "completed":
206
+ completedEvents += 1;
207
+ terminalSeen = true;
208
+ if (completedEvents !== 1 || event.aborted)
209
+ protocolViolation = true;
210
+ cancelled ||= event.aborted === true;
211
+ evidence.add("event:completed");
212
+ break;
213
+ default:
214
+ break;
215
+ }
216
+ }
217
+ cancelled ||= request.abortSignal?.aborted === true;
218
+ }
219
+ catch {
220
+ cancelled ||= request.abortSignal?.aborted === true;
221
+ adapterFailed = !cancelled;
222
+ evidence.add(cancelled ? "adapter:cancelled" : "adapter:threw");
223
+ }
224
+ finally {
225
+ if (scratchPath) {
226
+ try {
227
+ scratchAfterDigest = fingerprintTree(scratchPath);
228
+ }
229
+ catch {
230
+ scratchAfterDigest = sha256("scratch:missing-or-unreadable");
231
+ }
232
+ }
233
+ }
234
+ }
235
+ // The digest binds the receipt to the response that was actually COMPARED
236
+ // (typed final verbatim, else joined narration) — the per-event text
237
+ // digests remain visible in streamDigest.
238
+ const response = answer.text();
239
+ const responseOverflow = !answer.hasFinal() && narrationTruncated;
240
+ const responseDigest = sha256(response);
241
+ const streamDigest = streamHash.digest("hex");
242
+ evidence.add(`response:sha256:${responseDigest}`);
243
+ evidence.add(`stream:sha256:${streamDigest}`);
244
+ let selectionReason;
245
+ if (requestMismatch)
246
+ selectionReason = "request_mismatch";
247
+ else if (adapterIdentityMismatch)
248
+ selectionReason = "adapter_identity_mismatch";
249
+ else if (adapterMissing)
250
+ selectionReason = "adapter_unavailable";
251
+ else if (cancelled)
252
+ selectionReason = "cancelled";
253
+ else if (adapterFailed)
254
+ selectionReason = "adapter_error";
255
+ else if (startedEvents === 0 || effective === null)
256
+ selectionReason = "route_missing";
257
+ else if (routeConflict || effective !== disclosure.requiredRoute)
258
+ selectionReason = "route_mismatch";
259
+ else if (effectiveSource === null)
260
+ selectionReason = "source_missing";
261
+ else if (sourceConflict || effectiveSource !== disclosure.requiredSource)
262
+ selectionReason = "source_mismatch";
263
+ else if (protocolViolation ||
264
+ startedEvents !== 1 ||
265
+ completedEvents > 1 ||
266
+ eventsAfterCompleted > 0)
267
+ selectionReason = "protocol_violation";
268
+ else if (errorEvents > 0 ||
269
+ unexpectedToolEvents > 0 ||
270
+ interactionEvents > 0 ||
271
+ sessionMismatchEvents > 0)
272
+ selectionReason = "harness_error";
273
+ else if (completedEvents === 0)
274
+ selectionReason = "missing_completion";
275
+ else if (scratchBeforeDigest !== scratchAfterDigest)
276
+ selectionReason = "scratch_mutated";
277
+ else if (responseOverflow || response !== expected)
278
+ selectionReason = "response_mismatch";
279
+ else
280
+ selectionReason = "exact_requested_route";
281
+ const passed = selectionReason === "exact_requested_route";
282
+ return AuthCapabilityReceipt.parse({
283
+ receiptId: this.receiptId(),
284
+ attemptId: binding.attemptId,
285
+ harness: disclosure.harness,
286
+ requested: disclosure.requested,
287
+ requiredRoute: disclosure.requiredRoute,
288
+ requiredSource: disclosure.requiredSource,
289
+ effective,
290
+ effectiveSource,
291
+ selectionReason,
292
+ availability: effective && effectiveSource ? "available" : adapterMissing ? "unavailable" : "unknown",
293
+ verification: passed ? "passed" : "failed",
294
+ billingKnowledge: "unknown",
295
+ costKnowledge: "unknown",
296
+ startedAt: request.startedAt,
297
+ completedAt: this.now().toISOString(),
298
+ challengeDigest: binding.challengeDigest,
299
+ requestDigest: binding.requestDigest,
300
+ responseDigest,
301
+ streamDigest,
302
+ scratchBeforeDigest,
303
+ scratchAfterDigest,
304
+ stream: {
305
+ startedEvents,
306
+ completedEvents,
307
+ errorEvents,
308
+ unexpectedToolEvents,
309
+ interactionEvents,
310
+ sessionMismatchEvents,
311
+ eventsAfterCompleted,
312
+ aborted: cancelled,
313
+ },
314
+ evidenceRefs: [...evidence],
315
+ });
316
+ }
317
+ /** Remove only the verifier-owned directory for a validated durable attempt. */
318
+ cleanup(attemptId) {
319
+ if (!ATTEMPT_ID.test(attemptId))
320
+ throw new Error("invalid auth capability attempt id");
321
+ if (!existsSync(this.scratchRoot))
322
+ return;
323
+ const root = realpathSync(this.scratchRoot);
324
+ const path = join(root, attemptId);
325
+ if (!existsSync(path))
326
+ return;
327
+ const stat = lstatSync(path);
328
+ if (stat.isSymbolicLink() ||
329
+ !stat.isDirectory() ||
330
+ realpathSync(path) !== path ||
331
+ !path.startsWith(root + sep)) {
332
+ throw new Error("refusing unsafe auth capability scratch cleanup");
333
+ }
334
+ rmSync(path, { recursive: true, force: false });
335
+ }
336
+ createScratch(attemptId) {
337
+ if (!ATTEMPT_ID.test(attemptId))
338
+ throw new Error("invalid auth capability attempt id");
339
+ ensureCanonicalPrivateDirectory(this.scratchRoot);
340
+ const root = realpathSync(this.scratchRoot);
341
+ const path = join(root, attemptId);
342
+ if (existsSync(path))
343
+ throw new Error("auth capability scratch already exists");
344
+ mkdirSync(path, { recursive: false, mode: 0o700 });
345
+ chmodSync(path, 0o700);
346
+ if (realpathSync(path) !== path || !path.startsWith(root + sep))
347
+ throw new Error("unsafe auth capability scratch path");
348
+ return path;
349
+ }
350
+ }
351
+ function challengeFor(attemptId) {
352
+ return `claudexor-auth-capability-v1-${sha256(`auth-capability-v1:${attemptId}`).slice(0, 32)}`;
353
+ }
354
+ function capabilityRequestDigest(disclosure, challengeDigest) {
355
+ return sha256(JSON.stringify({
356
+ schemaVersion: 1,
357
+ protocolVersion: 1,
358
+ harness: disclosure.harness,
359
+ requested: disclosure.requested,
360
+ requiredRoute: disclosure.requiredRoute,
361
+ requiredSource: disclosure.requiredSource,
362
+ networkScope: disclosure.networkScope,
363
+ cwdPolicy: "owned_external_scratch_v1",
364
+ intent: "explain",
365
+ access: "readonly",
366
+ externalContextPolicy: "off",
367
+ maxTurns: 1,
368
+ envInheritance: "clean",
369
+ evidencePolicy: "stream_only",
370
+ challengeDigest,
371
+ }));
372
+ }
373
+ function fingerprintTree(root) {
374
+ const hash = createHash("sha256");
375
+ const walk = (directory) => {
376
+ for (const name of readdirSync(directory).sort()) {
377
+ const path = join(directory, name);
378
+ const rel = relative(root, path);
379
+ const stat = lstatSync(path);
380
+ const type = stat.isDirectory()
381
+ ? "directory"
382
+ : stat.isFile()
383
+ ? "file"
384
+ : stat.isSymbolicLink()
385
+ ? "symlink"
386
+ : "other";
387
+ hash.update(JSON.stringify({ rel, type, mode: stat.mode, size: stat.size }));
388
+ if (stat.isDirectory())
389
+ walk(path);
390
+ else if (stat.isSymbolicLink())
391
+ hash.update(readlinkSync(path));
392
+ else if (stat.isFile())
393
+ hashFile(path, hash);
394
+ }
395
+ };
396
+ walk(root);
397
+ return hash.digest("hex");
398
+ }
399
+ function hashFile(path, hash) {
400
+ const fd = openSync(path, "r");
401
+ const buffer = Buffer.allocUnsafe(64 * 1024);
402
+ try {
403
+ for (;;) {
404
+ const bytes = readSync(fd, buffer, 0, buffer.length, null);
405
+ if (bytes === 0)
406
+ break;
407
+ hash.update(buffer.subarray(0, bytes));
408
+ }
409
+ }
410
+ finally {
411
+ closeSync(fd);
412
+ }
413
+ }
414
+ function sha256(value) {
415
+ return createHash("sha256").update(value, "utf8").digest("hex");
416
+ }
417
+ //# sourceMappingURL=auth-capability-verifier.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-capability-verifier.js","sourceRoot":"","sources":["../src/auth-capability-verifier.ts"],"names":[],"mappings":"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"}