@kya-os/mcp-i-cloudflare 1.13.6 → 1.14.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/agent.d.ts.map +1 -1
  2. package/dist/agent.js +23 -5
  3. package/dist/agent.js.map +1 -1
  4. package/dist/audit/deployment-binding.d.ts +54 -54
  5. package/dist/config.d.ts +4 -0
  6. package/dist/config.d.ts.map +1 -1
  7. package/dist/config.js +2 -0
  8. package/dist/config.js.map +1 -1
  9. package/dist/delegation-http/anchor-do.d.ts.map +1 -1
  10. package/dist/delegation-http/anchor-do.js +108 -10
  11. package/dist/delegation-http/anchor-do.js.map +1 -1
  12. package/dist/delegation-http/anchor-registration-validate.d.ts +4 -0
  13. package/dist/delegation-http/anchor-registration-validate.d.ts.map +1 -1
  14. package/dist/delegation-http/anchor-registration-validate.js +9 -0
  15. package/dist/delegation-http/anchor-registration-validate.js.map +1 -1
  16. package/dist/delegation-http/anchor-registration.d.ts.map +1 -1
  17. package/dist/delegation-http/anchor-registration.js +119 -29
  18. package/dist/delegation-http/anchor-registration.js.map +1 -1
  19. package/dist/delegation-http/bearer-retry.d.ts +6 -14
  20. package/dist/delegation-http/bearer-retry.d.ts.map +1 -1
  21. package/dist/delegation-http/bearer-retry.js +37 -73
  22. package/dist/delegation-http/bearer-retry.js.map +1 -1
  23. package/dist/delegation-http/challenge.d.ts +20 -4
  24. package/dist/delegation-http/challenge.d.ts.map +1 -1
  25. package/dist/delegation-http/challenge.js +58 -8
  26. package/dist/delegation-http/challenge.js.map +1 -1
  27. package/dist/delegation-http/consent-anchor-bridge.d.ts +5 -8
  28. package/dist/delegation-http/consent-anchor-bridge.d.ts.map +1 -1
  29. package/dist/delegation-http/consent-anchor-bridge.js +236 -40
  30. package/dist/delegation-http/consent-anchor-bridge.js.map +1 -1
  31. package/dist/delegation-http/constants.d.ts +2 -0
  32. package/dist/delegation-http/constants.d.ts.map +1 -1
  33. package/dist/delegation-http/constants.js +2 -0
  34. package/dist/delegation-http/constants.js.map +1 -1
  35. package/dist/delegation-http/credential-consent.d.ts +3 -1
  36. package/dist/delegation-http/credential-consent.d.ts.map +1 -1
  37. package/dist/delegation-http/credential-consent.js +11 -1
  38. package/dist/delegation-http/credential-consent.js.map +1 -1
  39. package/dist/delegation-http/native-capabilities.d.ts +4 -0
  40. package/dist/delegation-http/native-capabilities.d.ts.map +1 -0
  41. package/dist/delegation-http/native-capabilities.js +53 -0
  42. package/dist/delegation-http/native-capabilities.js.map +1 -0
  43. package/dist/delegation-http/native-fetch.d.ts +3 -0
  44. package/dist/delegation-http/native-fetch.d.ts.map +1 -0
  45. package/dist/delegation-http/native-fetch.js +13 -0
  46. package/dist/delegation-http/native-fetch.js.map +1 -0
  47. package/dist/delegation-http/native-http.d.ts +102 -0
  48. package/dist/delegation-http/native-http.d.ts.map +1 -0
  49. package/dist/delegation-http/native-http.js +191 -0
  50. package/dist/delegation-http/native-http.js.map +1 -0
  51. package/dist/delegation-http/native-oauth.d.ts +26 -0
  52. package/dist/delegation-http/native-oauth.d.ts.map +1 -0
  53. package/dist/delegation-http/native-oauth.js +369 -0
  54. package/dist/delegation-http/native-oauth.js.map +1 -0
  55. package/dist/delegation-http/native-pickup.d.ts +20 -0
  56. package/dist/delegation-http/native-pickup.d.ts.map +1 -0
  57. package/dist/delegation-http/native-pickup.js +227 -0
  58. package/dist/delegation-http/native-pickup.js.map +1 -0
  59. package/dist/delegation-http/pickup-routes.d.ts +1 -0
  60. package/dist/delegation-http/pickup-routes.d.ts.map +1 -1
  61. package/dist/delegation-http/pickup-routes.js +55 -1
  62. package/dist/delegation-http/pickup-routes.js.map +1 -1
  63. package/dist/delegation-http/register.d.ts.map +1 -1
  64. package/dist/delegation-http/register.js +4 -7
  65. package/dist/delegation-http/register.js.map +1 -1
  66. package/dist/delegation-http/remote-issuer.d.ts +37 -0
  67. package/dist/delegation-http/remote-issuer.d.ts.map +1 -0
  68. package/dist/delegation-http/remote-issuer.js +289 -0
  69. package/dist/delegation-http/remote-issuer.js.map +1 -0
  70. package/dist/delegation-http/sid.d.ts +5 -2
  71. package/dist/delegation-http/sid.d.ts.map +1 -1
  72. package/dist/delegation-http/sid.js +8 -2
  73. package/dist/delegation-http/sid.js.map +1 -1
  74. package/dist/delegation-http/types.d.ts +31 -0
  75. package/dist/delegation-http/types.d.ts.map +1 -1
  76. package/dist/delegation-http/well-known-capability.d.ts.map +1 -1
  77. package/dist/delegation-http/well-known-capability.js +5 -0
  78. package/dist/delegation-http/well-known-capability.js.map +1 -1
  79. package/dist/helpers/env-mapper.d.ts.map +1 -1
  80. package/dist/helpers/env-mapper.js +4 -0
  81. package/dist/helpers/env-mapper.js.map +1 -1
  82. package/dist/index.d.ts +4 -0
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +2 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/proof-generator.d.ts +2 -0
  87. package/dist/proof-generator.d.ts.map +1 -1
  88. package/dist/proof-generator.js +1 -0
  89. package/dist/proof-generator.js.map +1 -1
  90. package/dist/runtime/oauth-handler.d.ts.map +1 -1
  91. package/dist/runtime/oauth-handler.js +44 -1
  92. package/dist/runtime/oauth-handler.js.map +1 -1
  93. package/dist/security/mcp-admission.d.ts +43 -0
  94. package/dist/security/mcp-admission.d.ts.map +1 -0
  95. package/dist/security/mcp-admission.js +165 -0
  96. package/dist/security/mcp-admission.js.map +1 -0
  97. package/dist/security/mcp-holder-admission.d.ts +19 -0
  98. package/dist/security/mcp-holder-admission.d.ts.map +1 -0
  99. package/dist/security/mcp-holder-admission.js +52 -0
  100. package/dist/security/mcp-holder-admission.js.map +1 -0
  101. package/dist/security/presented-delegation.d.ts +13 -0
  102. package/dist/security/presented-delegation.d.ts.map +1 -0
  103. package/dist/security/presented-delegation.js +73 -0
  104. package/dist/security/presented-delegation.js.map +1 -0
  105. package/dist/services/consent.service.d.ts +10 -0
  106. package/dist/services/consent.service.d.ts.map +1 -1
  107. package/dist/services/consent.service.js +15 -3
  108. package/dist/services/consent.service.js.map +1 -1
  109. package/dist/types.d.ts +4 -0
  110. package/dist/types.d.ts.map +1 -1
  111. package/package.json +3 -3
@@ -24,6 +24,7 @@ interface PickupRequestContext {
24
24
  param(name: string): string | undefined;
25
25
  header(name: string): string | undefined;
26
26
  url: string;
27
+ raw?: Request;
27
28
  };
28
29
  }
29
30
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"pickup-routes.d.ts","sourceRoot":"","sources":["../../src/delegation-http/pickup-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAS5C,wFAAwF;AACxF,UAAU,oBAAoB;IAC5B,GAAG,EAAE;QACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACzC,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;CACH;AA+CD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,EACtD,iBAAiB,EAAE,OAAO,GACzB,YAAY,GAAG,IAAI,CAerB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,CAAC,EAAE,oBAAoB,EACvB,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,CA4BnB"}
1
+ {"version":3,"file":"pickup-routes.d.ts","sourceRoot":"","sources":["../../src/delegation-http/pickup-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAY5C,wFAAwF;AACxF,UAAU,oBAAoB;IAC5B,GAAG,EAAE;QACH,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACxC,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;QACzC,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,CAAC,EAAE,OAAO,CAAC;KACf,CAAC;CACH;AA+CD;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,GAAG,IAAI,EACtD,iBAAiB,EAAE,OAAO,GACzB,YAAY,GAAG,IAAI,CAerB;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,CAAC,EAAE,oBAAoB,EACvB,GAAG,EAAE,aAAa,EAClB,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GACjC,OAAO,CAAC,QAAQ,CAAC,CAiEnB"}
@@ -17,7 +17,9 @@
17
17
  */
18
18
  import { getAnchorStub } from "./anchor-routing";
19
19
  import { isAnchorSid } from "./sid";
20
- import { PICKUP_TOKEN_HEADER, INTERNAL_PICKUP_POLL, KYAOS_ERRORS, } from "./constants";
20
+ import { claimNativeReplay, nativeError, nativeUnavailable } from "./native-http";
21
+ import { verifyNativePoll } from "./native-pickup";
22
+ import { PICKUP_TOKEN_HEADER, INTERNAL_PICKUP_POLL, INTERNAL_PICKUP_INFO, KYAOS_ERRORS, } from "./constants";
21
23
  /** A 404 invalid-session response (no-store JSON), used for a malformed/unknown sid. */
22
24
  function invalidSession() {
23
25
  return new Response(JSON.stringify({ error: KYAOS_ERRORS.invalidSession }), {
@@ -91,6 +93,58 @@ export async function handlePickupGet(c, env, cfg) {
91
93
  // Malformed sid — never routes to a durable object.
92
94
  return invalidSession();
93
95
  }
96
+ if (![PICKUP_TOKEN_HEADER, "Signature", "Signature-Input"].some((name) => c.req.header(name) !== undefined)) {
97
+ return cfg.native ? nativeError("kyaos/missing-signature", 401) : missingPickupHolder();
98
+ }
99
+ // Anchor metadata is read only through the internal DO seam. Native mode is
100
+ // immutable registration state; it is never selected by the poller's headers.
101
+ if (!env.MCP_OBJECT)
102
+ return nativeUnavailable();
103
+ const stub = getAnchorStub(env, sid);
104
+ let info;
105
+ try {
106
+ const response = await stub.fetch("https://do.internal" + INTERNAL_PICKUP_INFO, {
107
+ method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ sid }),
108
+ });
109
+ if (response.status === 404 || response.status === 410)
110
+ return response;
111
+ if (!response.ok)
112
+ return nativeUnavailable();
113
+ info = await response.json();
114
+ }
115
+ catch {
116
+ return nativeUnavailable();
117
+ }
118
+ if (info.nativeHttp) {
119
+ if (!cfg.native || !c.req.raw || info.nativeIssuerDid !== cfg.native.issuerDid || !info.audience)
120
+ return nativeUnavailable();
121
+ const request = c.req.raw;
122
+ const identity = await verifyNativePoll(request, cfg.native.authorizationOrigin);
123
+ if (!identity.ok)
124
+ return nativeError(identity.error, identity.status);
125
+ let sourceIp;
126
+ try {
127
+ sourceIp = cfg.native.resolveSourceIp ? cfg.native.resolveSourceIp(request) :
128
+ ("cf" in request && request.cf ? request.headers.get("CF-Connecting-IP") : null);
129
+ }
130
+ catch {
131
+ return nativeError("kyaos/replay-state-unavailable", 503);
132
+ }
133
+ if (!sourceIp)
134
+ return nativeError("kyaos/replay-state-unavailable", 503);
135
+ const result = await claimNativeReplay(env, cfg.native, { resourceDid: info.audience, ...identity.proof, sourceIp });
136
+ if (result !== "claimed")
137
+ return nativeError(result === "replay" ? "kyaos/replay" : result === "capacity" ? "kyaos/replay-capacity" : "kyaos/replay-state-unavailable", result === "replay" ? 401 : result === "capacity" ? 429 : 503);
138
+ try {
139
+ return await stub.fetch("https://do.internal" + INTERNAL_PICKUP_POLL, {
140
+ method: "POST", headers: { "Content-Type": "application/json" },
141
+ body: JSON.stringify({ sid, holder: { type: "keyid", value: identity.proof.keyId, nativeVerified: true } }),
142
+ });
143
+ }
144
+ catch {
145
+ return nativeUnavailable();
146
+ }
147
+ }
94
148
  const holder = extractPickupHolder((name) => c.req.header(name), cfg.allowUnverifiedKeyidHolders);
95
149
  if (!holder) {
96
150
  // A poll with no pickup credential is a MISSING-credential case, not a dead
@@ -1 +1 @@
1
- {"version":3,"file":"pickup-routes.js","sourceRoot":"","sources":["../../src/delegation-http/pickup-routes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pickup-routes.js","sourceRoot":"","sources":["../../src/delegation-http/pickup-routes.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,MAAM,CAAC;AAMvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAmBnE,iFAAiF;AACjF,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACpE;AA2BD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,oBAAoB,EAC7B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAwDN"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,MAAM,CAAC;AAMvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAEnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAmBnE,iFAAiF;AACjF,MAAM,WAAW,uBAAuB;IACtC,8EAA8E;IAC9E,cAAc,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,wBAAwB,CAAC,CAAC;CACpE;AA2BD;;;;GAIG;AACH,wBAAgB,4BAA4B,CAC1C,GAAG,EAAE,IAAI,EACT,OAAO,EAAE,oBAAoB,EAC7B,IAAI,CAAC,EAAE,uBAAuB,GAC7B,IAAI,CAqDN"}
@@ -51,7 +51,7 @@ export function registerDelegationHttpRoutes(app, options, deps) {
51
51
  return next();
52
52
  return handlePickupGet(c, env, cfg);
53
53
  });
54
- // Anchor consent surface. Only intercepts `?sid=kya-…`; everything else (and any
54
+ // Anchor consent surface. Only intercepts an explicit valid `?sid=…`; everything else (and any
55
55
  // flag-off request) falls through to the legacy consent service.
56
56
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
57
  app.all(CONSENT_ROUTE, async (c, next) => {
@@ -61,12 +61,9 @@ export function registerDelegationHttpRoutes(app, options, deps) {
61
61
  return next();
62
62
  return handleAnchorConsentGet(c, sid, env, cfg);
63
63
  });
64
- // Anchor approval POST. The legacy raw-HTML form posted to
65
- // `/consent/approve?sid=kya-…` (sid in the query). The `@kya-os/consent` Lit
66
- // component instead POSTs to a hardcoded `/consent/approve` with the sid
67
- // carried in the body as `session_id` — `resolveApproveSid` checks the query
68
- // FIRST and only peeks a *clone* of the body when it's absent, so a flag-off
69
- // or non-anchor request's original body stream is never consumed here.
64
+ // Anchor approval POST. Explicit `sid` selects anchors; generic `session_id`
65
+ // selects them only for older kya-prefixed forms. The resolver peeks a clone,
66
+ // leaving ordinary legacy submissions and their body intact for next().
70
67
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
71
68
  app.post(`${CONSENT_ROUTE}/approve`, async (c, next) => {
72
69
  const { env, cfg } = resolveRequest(c, options);
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/delegation-http/register.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type NativeHttpChallenge, type NativeHttpHostConfig } from "./native-http";
2
+ import type { DetachedProof } from "../proof-generator";
3
+ export interface NativeRemoteMint {
4
+ session_id: string;
5
+ holder_keyid: string;
6
+ user_did: string;
7
+ required_scopes: string[];
8
+ audience: string;
9
+ policy_id: string;
10
+ composed_blob_hash: string;
11
+ terms_accepted: boolean;
12
+ amr: string[];
13
+ }
14
+ export interface NativeRemoteIssuer {
15
+ /** Renew the org assertion for an existing native grant. The outbound
16
+ * consumer must still join the returned proof to its exact VC, holder and
17
+ * configured resource before signing/transmitting the request. */
18
+ propagationProof(delegationId: string): Promise<{
19
+ proof: string;
20
+ expires_at: number;
21
+ }>;
22
+ registerChallenge(registration: unknown, expected: NativeHttpChallenge, audience: string): Promise<{
23
+ proof: DetachedProof;
24
+ issuedAtMs: number;
25
+ }>;
26
+ issueDelegation(input: NativeRemoteMint): Promise<{
27
+ vcJwt: string;
28
+ subjectDid: string;
29
+ expiresAtUnix: number;
30
+ }>;
31
+ }
32
+ /** The deployment binding contains the org's PUBLIC assertion key only. It is
33
+ * provisioned by Checkpoint alongside the exact API-key role. The request path
34
+ * cannot supply a signer, control-plane URL, authorization origin or trust key.
35
+ */
36
+ export declare function resolveManagedNativeIssuer(env: Record<string, unknown>): NativeHttpHostConfig | null;
37
+ //# sourceMappingURL=remote-issuer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-issuer.d.ts","sourceRoot":"","sources":["../../src/delegation-http/remote-issuer.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EAC1B,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AACD,MAAM,WAAW,kBAAkB;IACjC;;sEAEkE;IAClE,gBAAgB,CACd,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClD,iBAAiB,CACf,YAAY,EAAE,OAAO,EACrB,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QACT,KAAK,EAAE,aAAa,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,eAAe,CACb,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1E;AAgDD;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,oBAAoB,GAAG,IAAI,CAuC7B"}
@@ -0,0 +1,289 @@
1
+ import { canonicalize } from "json-canonicalize";
2
+ import { fetchNativeNoRedirect } from "./native-fetch";
3
+ import { nativeHolderBinding, } from "./native-http";
4
+ const encoder = new TextEncoder();
5
+ const fail = () => {
6
+ throw new Error("Native issuer capability unavailable");
7
+ };
8
+ function equal(a, b) {
9
+ return canonicalize(a) === canonicalize(b);
10
+ }
11
+ function bytes(encoded) {
12
+ if (typeof encoded !== "string" || !/^[A-Za-z0-9_-]+$/.test(encoded))
13
+ return fail();
14
+ const raw = atob(encoded.replace(/-/g, "+").replace(/_/g, "/"));
15
+ return Uint8Array.from(raw, (c) => c.charCodeAt(0));
16
+ }
17
+ async function digest(value) {
18
+ const hash = new Uint8Array(await crypto.subtle.digest("SHA-256", encoder.encode(canonicalize(value))));
19
+ return ("sha256:" +
20
+ [...hash].map((byte) => byte.toString(16).padStart(2, "0")).join(""));
21
+ }
22
+ function isOrigin(value) {
23
+ if (typeof value !== "string")
24
+ return false;
25
+ try {
26
+ const url = new URL(value);
27
+ return (url.protocol === "https:" &&
28
+ !url.port &&
29
+ !url.username &&
30
+ !url.password &&
31
+ url.origin === value);
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ /** The deployment binding contains the org's PUBLIC assertion key only. It is
38
+ * provisioned by Checkpoint alongside the exact API-key role. The request path
39
+ * cannot supply a signer, control-plane URL, authorization origin or trust key.
40
+ */
41
+ export function resolveManagedNativeIssuer(env) {
42
+ if (typeof env.MCPI_NATIVE_HTTP_ISSUER_CONFIG !== "string" ||
43
+ typeof env.MCPI_NATIVE_HTTP_ISSUER_API_KEY !== "string")
44
+ return null;
45
+ try {
46
+ const binding = JSON.parse(env.MCPI_NATIVE_HTTP_ISSUER_CONFIG);
47
+ if (!binding ||
48
+ Object.keys(binding).length !== 6 ||
49
+ binding.version !== 1 ||
50
+ !/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(binding.projectId) ||
51
+ !/^did:web:[^/?#]+:orgs:[a-z0-9][a-z0-9-]*$/.test(binding.issuerDid) ||
52
+ bytes(binding.issuerPublicKey).length !== 32 ||
53
+ !isOrigin(binding.authorizationOrigin) ||
54
+ !isOrigin(binding.controlPlaneOrigin) ||
55
+ !env.MCPI_NATIVE_HTTP_ISSUER_API_KEY ||
56
+ env.MCPI_NATIVE_HTTP_ISSUER_API_KEY !== env.AGENTSHIELD_API_KEY ||
57
+ (env.CHECKPOINT_API_KEY !== undefined &&
58
+ env.CHECKPOINT_API_KEY !== env.MCPI_NATIVE_HTTP_ISSUER_API_KEY))
59
+ return null;
60
+ return {
61
+ authorizationOrigin: binding.authorizationOrigin,
62
+ issuerDid: binding.issuerDid,
63
+ projectId: binding.projectId,
64
+ remoteIssuer: createRemoteIssuer(binding, env.MCPI_NATIVE_HTTP_ISSUER_API_KEY),
65
+ };
66
+ }
67
+ catch {
68
+ return null;
69
+ }
70
+ }
71
+ function createRemoteIssuer(binding, apiKey) {
72
+ async function post(path, body) {
73
+ const response = await fetchNativeNoRedirect(binding.controlPlaneOrigin + "/api/v1/bouncer/native-http/" + path, {
74
+ method: "POST",
75
+ signal: AbortSignal.timeout(5000),
76
+ headers: {
77
+ "Content-Type": "application/json",
78
+ Authorization: "Bearer " + apiKey,
79
+ },
80
+ body: JSON.stringify(body),
81
+ });
82
+ if (![200, 201].includes(response.status) ||
83
+ !response.headers.get("content-type")?.startsWith("application/json") ||
84
+ !/\bno-store\b/.test(response.headers.get("cache-control") ?? ""))
85
+ return fail();
86
+ const reader = response.body?.getReader();
87
+ if (!reader)
88
+ return fail();
89
+ const chunks = [];
90
+ let length = 0;
91
+ try {
92
+ for (;;) {
93
+ const item = await reader.read();
94
+ if (item.done)
95
+ break;
96
+ length += item.value.length;
97
+ if (length > 128 * 1024) {
98
+ // Cleanup must not postpone rejection if the upstream cancel hook stalls.
99
+ void reader.cancel().catch(() => { });
100
+ return fail();
101
+ }
102
+ chunks.push(item.value);
103
+ }
104
+ }
105
+ finally {
106
+ reader.releaseLock();
107
+ }
108
+ const data = new Uint8Array(length);
109
+ let offset = 0;
110
+ for (const chunk of chunks) {
111
+ data.set(chunk, offset);
112
+ offset += chunk.length;
113
+ }
114
+ const result = JSON.parse(new TextDecoder().decode(data));
115
+ if (result?.success !== true || !result.data)
116
+ return fail();
117
+ return result.data;
118
+ }
119
+ async function verifySignedClaims(compact, profile = "credential") {
120
+ if (typeof compact !== "string" || compact.length > 128 * 1024)
121
+ return fail();
122
+ const [headerPart, payloadPart, signaturePart, extra] = compact.split(".");
123
+ if (!headerPart || !payloadPart || !signaturePart || extra !== undefined)
124
+ return fail();
125
+ const header = JSON.parse(new TextDecoder().decode(bytes(headerPart)));
126
+ if (header.alg !== "EdDSA" ||
127
+ (profile === "propagation"
128
+ ? header.typ !== "kya-http-propagation+jwt"
129
+ : header.typ !== "JWT" &&
130
+ !(profile === "challenge" && header.typ === undefined)) ||
131
+ header.crit ||
132
+ header.b64 !== undefined ||
133
+ ![
134
+ binding.issuerDid + "#key-1",
135
+ binding.issuerDid + "#key-1-jwk",
136
+ ].includes(header.kid))
137
+ return fail();
138
+ const key = await crypto.subtle.importKey("raw", bytes(binding.issuerPublicKey), "Ed25519", false, ["verify"]);
139
+ if (!(await crypto.subtle.verify("Ed25519", key, bytes(signaturePart), encoder.encode(headerPart + "." + payloadPart))))
140
+ return fail();
141
+ const payload = JSON.parse(new TextDecoder().decode(bytes(payloadPart)));
142
+ if (payload.iss !== binding.issuerDid)
143
+ return fail();
144
+ return { ...payload, protectedKid: header.kid };
145
+ }
146
+ return {
147
+ async propagationProof(delegationId) {
148
+ if (!/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(delegationId))
149
+ return fail();
150
+ const data = await post("propagation-proof", {
151
+ delegation_id: delegationId,
152
+ });
153
+ const claims = await verifySignedClaims(data.proof, "propagation");
154
+ const now = Math.floor(Date.now() / 1000);
155
+ let authority;
156
+ try {
157
+ authority = new URL("https://" + claims.aud);
158
+ }
159
+ catch {
160
+ return fail();
161
+ }
162
+ if (claims.profile !== "kya-http-propagation/1" ||
163
+ claims.delegation_id !== delegationId ||
164
+ typeof claims.sub !== "string" ||
165
+ !/^did:[^\s#]+$/.test(claims.sub) ||
166
+ typeof claims.aud !== "string" ||
167
+ authority.host !== claims.aud ||
168
+ authority.pathname !== "/" ||
169
+ authority.username ||
170
+ authority.password ||
171
+ authority.search ||
172
+ authority.hash ||
173
+ !Number.isSafeInteger(claims.iat) ||
174
+ !Number.isSafeInteger(claims.exp) ||
175
+ claims.iat > now + 30 ||
176
+ claims.exp <= now ||
177
+ claims.exp < claims.iat ||
178
+ claims.exp - claims.iat > 60 ||
179
+ data.expires_at !== claims.exp)
180
+ return fail();
181
+ return { proof: data.proof, expires_at: claims.exp };
182
+ },
183
+ async registerChallenge(registration, expected, audience) {
184
+ const data = await post("challenge", { registration });
185
+ const challenge = data.challenge;
186
+ if (data.session_id !== expected.sid ||
187
+ data.registered !== true ||
188
+ !challenge ||
189
+ !equal(challenge.http, expected) ||
190
+ challenge.consent_uri !== expected.consent_uri ||
191
+ !equal(challenge.required_scopes, expected.required_scopes) ||
192
+ !Number.isSafeInteger(challenge.issued_at) ||
193
+ challenge.issued_at > Date.now() + 30_000 ||
194
+ challenge.issued_at < Date.now() - 600_000)
195
+ return fail();
196
+ const proof = challenge.challenge_proof;
197
+ const claims = await verifySignedClaims(proof?.jws, "challenge");
198
+ const meta = proof.meta;
199
+ if (!meta ||
200
+ meta.did !== binding.issuerDid ||
201
+ meta.kid !== claims.protectedKid ||
202
+ meta.audience !== audience ||
203
+ meta.sessionId !== expected.sid ||
204
+ meta.outcome !== "needs_authorization" ||
205
+ !Number.isSafeInteger(meta.ts) ||
206
+ meta.ts * 1000 > Date.now() + 30_000 ||
207
+ meta.ts * 1000 < Date.now() - 600_000 ||
208
+ typeof meta.nonce !== "string" ||
209
+ meta.nonce.length < 16 ||
210
+ claims.aud !== audience ||
211
+ claims.sub !== binding.issuerDid ||
212
+ meta.responseHash !==
213
+ (await digest([{ type: "text", text: canonicalize(expected) }])) ||
214
+ meta.requestHash !==
215
+ (await digest({
216
+ method: "authorization/challenge_proof",
217
+ params: { sid: expected.sid },
218
+ })))
219
+ return fail();
220
+ for (const name of [
221
+ "requestHash",
222
+ "responseHash",
223
+ "ts",
224
+ "nonce",
225
+ "sessionId",
226
+ "outcome",
227
+ ])
228
+ if (claims[name] !== meta[name])
229
+ return fail();
230
+ for (const name of ["did", "kid", "audience"])
231
+ if (claims[name] !== undefined &&
232
+ claims[name] !== meta[name])
233
+ return fail();
234
+ return { proof, issuedAtMs: challenge.issued_at };
235
+ },
236
+ async issueDelegation(input) {
237
+ const data = await post("delegation", input);
238
+ if (data.status !== "ready" || data.token_type !== "Bearer")
239
+ return fail();
240
+ const claims = await verifySignedClaims(data.delegation);
241
+ const holder = await nativeHolderBinding(input.holder_keyid);
242
+ const delegation = claims.vc?.credentialSubject?.delegation;
243
+ const status = claims.vc?.credentialStatus;
244
+ const now = Math.floor(Date.now() / 1000);
245
+ const [, , host, , slug] = binding.issuerDid.split(":");
246
+ const statusUrl = "https://" + host + "/orgs/" + slug + "/delegation-status-list";
247
+ if (claims.sub !== holder.did ||
248
+ claims.vc?.credentialSubject?.id !== holder.did ||
249
+ claims.cnf?.jkt !== holder.jkt ||
250
+ claims.vc?.issuer !== binding.issuerDid ||
251
+ claims.aud !== input.audience ||
252
+ delegation?.constraints?.audience !== input.audience ||
253
+ delegation?.userDid !== input.user_did ||
254
+ claims.sid !== input.session_id ||
255
+ claims.assurance !== "key-bound" ||
256
+ !equal(claims.policy_revision, {
257
+ policy_id: input.policy_id,
258
+ composed_blob_hash: input.composed_blob_hash,
259
+ }) ||
260
+ !equal(claims.scope, input.required_scopes) ||
261
+ !equal(delegation.scopes, input.required_scopes) ||
262
+ !equal(delegation.constraints.scopes, input.required_scopes) ||
263
+ !equal(claims.amr, input.amr) ||
264
+ !Number.isSafeInteger(claims.exp) ||
265
+ !Number.isSafeInteger(claims.iat) ||
266
+ claims.exp <= now ||
267
+ claims.iat > now + 30 ||
268
+ claims.exp - claims.iat > 3600 ||
269
+ claims.exp <= claims.iat ||
270
+ (claims.nbf !== undefined &&
271
+ (!Number.isSafeInteger(claims.nbf) || claims.nbf > now + 30)) ||
272
+ !status ||
273
+ status.type !== "StatusList2021Entry" ||
274
+ status.statusPurpose !== "revocation" ||
275
+ status.statusListCredential !== statusUrl ||
276
+ !/^(0|[1-9][0-9]*)$/.test(status.statusListIndex) ||
277
+ Number(status.statusListIndex) >= 131072 ||
278
+ status.id !== statusUrl + "#" + status.statusListIndex ||
279
+ !equal(claims.credentialStatus, status))
280
+ return fail();
281
+ return {
282
+ vcJwt: data.delegation,
283
+ subjectDid: holder.did,
284
+ expiresAtUnix: claims.exp,
285
+ };
286
+ },
287
+ };
288
+ }
289
+ //# sourceMappingURL=remote-issuer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remote-issuer.js","sourceRoot":"","sources":["../../src/delegation-http/remote-issuer.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,11 @@
13
13
  */
14
14
  export declare function generateSid(): string;
15
15
  /**
16
- * Type guard for anchor sids. Accepts the generated 32-hex form and the 16–64 hex
17
- * range used by the golden fixtures.
16
+ * Validate anchor ID syntax, including externally registered opaque HTTP IDs.
17
+ * Syntax alone cannot select the anchor route: legacy UUID session IDs also
18
+ * pass this guard. Use it only for an explicit anchor field or dedicated route.
18
19
  */
19
20
  export declare function isAnchorSid(s: string | null | undefined): s is string;
21
+ /** Recognize the original anchor namespace in a generic legacy session_id. */
22
+ export declare function isNamespacedAnchorSid(s: unknown): s is string;
20
23
  //# sourceMappingURL=sid.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sid.d.ts","sourceRoot":"","sources":["../../src/delegation-http/sid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAQpC;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,IAAI,MAAM,CAErE"}
1
+ {"version":3,"file":"sid.d.ts","sourceRoot":"","sources":["../../src/delegation-http/sid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH;;;GAGG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAQpC;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,CAAC,IAAI,MAAM,CAKrE;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,MAAM,CAE7D"}
@@ -23,10 +23,16 @@ export function generateSid() {
23
23
  return `kya-${hex}`;
24
24
  }
25
25
  /**
26
- * Type guard for anchor sids. Accepts the generated 32-hex form and the 16–64 hex
27
- * range used by the golden fixtures.
26
+ * Validate anchor ID syntax, including externally registered opaque HTTP IDs.
27
+ * Syntax alone cannot select the anchor route: legacy UUID session IDs also
28
+ * pass this guard. Use it only for an explicit anchor field or dedicated route.
28
29
  */
29
30
  export function isAnchorSid(s) {
31
+ return (isNamespacedAnchorSid(s) ||
32
+ (typeof s === "string" && /^[A-Za-z0-9._~-]{22,255}$/.test(s)));
33
+ }
34
+ /** Recognize the original anchor namespace in a generic legacy session_id. */
35
+ export function isNamespacedAnchorSid(s) {
30
36
  return typeof s === "string" && ANCHOR_SID_RE.test(s);
31
37
  }
32
38
  //# sourceMappingURL=sid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sid.js","sourceRoot":"","sources":["../../src/delegation-http/sid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sFAAsF;AACtF,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,GAAG,EAAE,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAA4B;IACtD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"sid.js","sourceRoot":"","sources":["../../src/delegation-http/sid.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,sFAAsF;AACtF,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C;;;GAGG;AACH,MAAM,UAAU,WAAW;IACzB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,GAAG,EAAE,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,CAA4B;IACtD,OAAO,CACL,qBAAqB,CAAC,CAAC,CAAC;QACxB,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,2BAA2B,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAC,CAAU;IAC9C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -21,6 +21,8 @@ export interface AnchorPin {
21
21
  valueSha256: string;
22
22
  pinnedAt: number;
23
23
  source: "challenge" | "first-poll";
24
+ /** Verified public key identifier for native issuance, never a bearer token. */
25
+ keyId?: string;
24
26
  }
25
27
  /**
26
28
  * The full anchor record persisted in `ctx.storage`. All timestamps are epoch ms.
@@ -59,8 +61,17 @@ export interface PickupAnchorRecord {
59
61
  vcJwt: string;
60
62
  expiresInS: number;
61
63
  approvedAt: number;
64
+ /** Exact signed JWT exp for native grants; absent on legacy records. */
65
+ expiresAtUnix?: number;
62
66
  };
63
67
  lastPollAt?: number;
68
+ nativeHttp?: import("./native-http").NativeHttpChallenge;
69
+ nativeRegistration?: import("./native-http").NativeHttpRegistration;
70
+ nativeIssuerDid?: string;
71
+ nativePolicyRevision?: {
72
+ policyId?: string;
73
+ composedPolicyHash?: string;
74
+ };
64
75
  }
65
76
  /**
66
77
  * Inputs for building a §8.1 delegation challenge. Camel-case mirror of the golden
@@ -73,6 +84,24 @@ export interface ChallengeVerdictInput {
73
84
  realm: string;
74
85
  sid: string;
75
86
  pollIntervalS: number;
87
+ /**
88
+ * The pickup profile the AUTHORIZATION HOST actually supports, which gates
89
+ * the `instructions` choreography:
90
+ *
91
+ * - absent (default): token-first instructions only. This runtime's pickup
92
+ * surface treats a Signature-Input-only poll as a no-identity poll
93
+ * (pickup-poll-identity: the token path stands), and its consent mint
94
+ * does not `cnf`-bind the delegation to a pickup key — so directing an
95
+ * agent to sign polls or to sign retries with the pickup key dead-ends:
96
+ * the signed poll never establishes a binding, and a signed retry of a
97
+ * non-holder-bound VC is refused (`kyaos/holder-mismatch`).
98
+ * - `"kya-http/2"`: retained compatibility opt-in for the reviewed
99
+ * binding-first legacy envelope on a host with signed pickup support.
100
+ * This hint neither registers a native anchor nor makes a credential
101
+ * holder-bound. Strict native emission uses NativeHttpChallenge and
102
+ * native-http.ts, including the full signed action and bound-key retry.
103
+ */
104
+ pickupProfile?: "kya-http/2";
76
105
  }
77
106
  /**
78
107
  * A pickup poll holder, as presented on the wire. The raw `value` is hashed inside
@@ -81,5 +110,7 @@ export interface ChallengeVerdictInput {
81
110
  export interface PickupHolder {
82
111
  type: "token" | "keyid";
83
112
  value: string;
113
+ /** Set only by the verified native request/replay admission path. */
114
+ nativeVerified?: true;
84
115
  }
85
116
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/delegation-http/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kHAAkH;IAClH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/delegation-http/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE7D;;;GAGG;AACH,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,GAAG,YAAY,CAAC;IACnC,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,YAAY,CAAC;IACrB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kHAAkH;IAClH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,UAAU,CAAC,EAAE;QACX,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,wEAAwE;QACxE,aAAa,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,eAAe,EAAE,mBAAmB,CAAC;IACzD,kBAAkB,CAAC,EAAE,OAAO,eAAe,EAAE,sBAAsB,CAAC;IACpE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;;;;OAgBG;IACH,aAAa,CAAC,EAAE,YAAY,CAAC;CAC9B;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,cAAc,CAAC,EAAE,IAAI,CAAC;CACvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"well-known-capability.d.ts","sourceRoot":"","sources":["../../src/delegation-http/well-known-capability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAOlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAClD,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,IAAI,EACzC,kBAAkB,EAAE,OAAO,EAC3B,cAAc,CAAC,EAAE,uBAAuB,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAc5C"}
1
+ {"version":3,"file":"well-known-capability.d.ts","sourceRoot":"","sources":["../../src/delegation-http/well-known-capability.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAOlE;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,EAClD,GAAG,EAAE,QAAQ,CAAC,mBAAmB,CAAC,GAAG,IAAI,EACzC,kBAAkB,EAAE,OAAO,EAC3B,cAAc,CAAC,EAAE,uBAAuB,GACvC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GAAG,SAAS,CAmB5C"}