@frontmcp/auth 1.11.2 → 1.12.0-rc.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 (128) hide show
  1. package/README.md +2 -2
  2. package/authorities/authorities.context.d.ts.map +1 -1
  3. package/authorities/authorities.engine.d.ts +1 -1
  4. package/authorities/authorities.engine.d.ts.map +1 -1
  5. package/authorities/authorities.evaluator.d.ts.map +1 -1
  6. package/authorities/authorities.metadata-augment.d.ts +3 -0
  7. package/authorities/authorities.metadata-augment.d.ts.map +1 -1
  8. package/authorities/authorities.profiles.d.ts +1 -1
  9. package/authorities/authorities.profiles.d.ts.map +1 -1
  10. package/authorities/authorities.registry.d.ts +1 -1
  11. package/authorities/authorities.registry.d.ts.map +1 -1
  12. package/authorities/authorities.scope-mapping.d.ts +1 -1
  13. package/authorities/authorities.scope-mapping.d.ts.map +1 -1
  14. package/authorities/authorities.types.d.ts +4 -0
  15. package/authorities/authorities.types.d.ts.map +1 -1
  16. package/authorization/orchestrated.accessor.d.ts.map +1 -1
  17. package/authorization/public.authorization.d.ts.map +1 -1
  18. package/authorization/transparent.authorization.d.ts +1 -1
  19. package/authorization/transparent.authorization.d.ts.map +1 -1
  20. package/browser/authorities/authorities.context.mjs +3 -1
  21. package/browser/authorities/authorities.engine.mjs +32 -33
  22. package/browser/authorities/authorities.evaluator.mjs +42 -16
  23. package/browser/authorization/dcr-client.registry.mjs +1 -1
  24. package/browser/authorization/public.authorization.mjs +1 -1
  25. package/browser/authorization/transparent.authorization.mjs +1 -1
  26. package/browser/cimd/cimd-client-assertion.mjs +108 -0
  27. package/browser/cimd/cimd-redis.cache.mjs +5 -3
  28. package/browser/cimd/cimd.errors.mjs +11 -0
  29. package/browser/cimd/cimd.service.mjs +127 -31
  30. package/browser/cimd/cimd.types.mjs +15 -10
  31. package/browser/cimd/index.mjs +13 -1
  32. package/browser/errors/auth-internal.error.mjs +3 -2
  33. package/browser/errors/auth-internal.errors.mjs +8 -1
  34. package/browser/errors/index.mjs +2 -0
  35. package/browser/index.mjs +21 -1
  36. package/browser/jwks/index.mjs +2 -0
  37. package/browser/jwks/jwks.service.mjs +22 -103
  38. package/browser/jwks/local-token-keys.mjs +155 -0
  39. package/browser/options/public.schema.mjs +7 -4
  40. package/browser/options/shared.schemas.mjs +38 -13
  41. package/browser/session/federated-auth.session.mjs +2 -0
  42. package/browser/session/incremental-auth-ticket.mjs +24 -1
  43. package/browser/session/index.mjs +4 -0
  44. package/browser/session/redis-session.store.mjs +3 -3
  45. package/browser/session/session-crypto.mjs +4 -4
  46. package/browser/session/storage/storage-authorization-vault.mjs +3 -1
  47. package/browser/session/token.vault.mjs +1 -1
  48. package/browser/session/utils/index.mjs +9 -1
  49. package/browser/session/utils/session-crypto.utils.mjs +4 -0
  50. package/browser/ui/index.mjs +2 -0
  51. package/browser/ui/templates.mjs +65 -11
  52. package/browser/upstream/index.mjs +6 -0
  53. package/browser/upstream/upstream-client-registration.mjs +273 -0
  54. package/cimd/cimd-client-assertion.d.ts +43 -0
  55. package/cimd/cimd-client-assertion.d.ts.map +1 -0
  56. package/cimd/cimd-redis.cache.d.ts +2 -2
  57. package/cimd/cimd-redis.cache.d.ts.map +1 -1
  58. package/cimd/cimd.cache.d.ts +1 -1
  59. package/cimd/cimd.cache.d.ts.map +1 -1
  60. package/cimd/cimd.errors.d.ts +14 -0
  61. package/cimd/cimd.errors.d.ts.map +1 -1
  62. package/cimd/cimd.service.d.ts +37 -2
  63. package/cimd/cimd.service.d.ts.map +1 -1
  64. package/cimd/cimd.types.d.ts +6 -0
  65. package/cimd/cimd.types.d.ts.map +1 -1
  66. package/cimd/index.d.ts +3 -2
  67. package/cimd/index.d.ts.map +1 -1
  68. package/errors/auth-internal.error.d.ts +4 -5
  69. package/errors/auth-internal.error.d.ts.map +1 -1
  70. package/errors/auth-internal.errors.d.ts +8 -0
  71. package/errors/auth-internal.errors.d.ts.map +1 -1
  72. package/errors/index.d.ts +1 -1
  73. package/errors/index.d.ts.map +1 -1
  74. package/esm/index.mjs +54 -14
  75. package/esm/package.json +5 -5
  76. package/index.d.ts +12 -10
  77. package/index.d.ts.map +1 -1
  78. package/index.js +58 -18
  79. package/jwks/index.d.ts +2 -0
  80. package/jwks/index.d.ts.map +1 -1
  81. package/jwks/jwks.service.d.ts +12 -12
  82. package/jwks/jwks.service.d.ts.map +1 -1
  83. package/jwks/jwks.types.d.ts +2 -0
  84. package/jwks/jwks.types.d.ts.map +1 -1
  85. package/jwks/local-token-keys.d.ts +41 -0
  86. package/jwks/local-token-keys.d.ts.map +1 -0
  87. package/options/interfaces.d.ts +64 -15
  88. package/options/interfaces.d.ts.map +1 -1
  89. package/options/public.schema.d.ts.map +1 -1
  90. package/options/shared.schemas.d.ts.map +1 -1
  91. package/package.json +5 -5
  92. package/session/authorization.store.d.ts +9 -2
  93. package/session/authorization.store.d.ts.map +1 -1
  94. package/session/federated-auth.session.d.ts +8 -0
  95. package/session/federated-auth.session.d.ts.map +1 -1
  96. package/session/incremental-auth-ticket.d.ts +10 -0
  97. package/session/incremental-auth-ticket.d.ts.map +1 -1
  98. package/session/index.d.ts +2 -2
  99. package/session/index.d.ts.map +1 -1
  100. package/session/redis-session.store.d.ts +1 -1
  101. package/session/redis-session.store.d.ts.map +1 -1
  102. package/session/session-crypto.d.ts.map +1 -1
  103. package/session/storage/in-memory-authorization-vault.d.ts.map +1 -1
  104. package/session/storage/storage-authorization-vault.d.ts +2 -2
  105. package/session/storage/storage-authorization-vault.d.ts.map +1 -1
  106. package/session/storage/storage-token-store.d.ts +2 -2
  107. package/session/storage/storage-token-store.d.ts.map +1 -1
  108. package/session/token.refresh.d.ts.map +1 -1
  109. package/session/utils/index.d.ts +1 -1
  110. package/session/utils/index.d.ts.map +1 -1
  111. package/session/utils/session-crypto.utils.d.ts +5 -0
  112. package/session/utils/session-crypto.utils.d.ts.map +1 -1
  113. package/ui/index.d.ts +2 -2
  114. package/ui/index.d.ts.map +1 -1
  115. package/ui/templates.d.ts +33 -0
  116. package/ui/templates.d.ts.map +1 -1
  117. package/upstream/index.d.ts +3 -0
  118. package/upstream/index.d.ts.map +1 -0
  119. package/upstream/upstream-client-registration.d.ts +50 -0
  120. package/upstream/upstream-client-registration.d.ts.map +1 -0
  121. package/vault/auth-providers.accessor.d.ts +1 -1
  122. package/vault/auth-providers.accessor.d.ts.map +1 -1
  123. package/vault/auth-providers.registry.d.ts +1 -1
  124. package/vault/auth-providers.registry.d.ts.map +1 -1
  125. package/vault/credential-cache.d.ts +1 -1
  126. package/vault/credential-cache.d.ts.map +1 -1
  127. package/vault/credential-loaders/eager-loader.d.ts +2 -2
  128. package/vault/credential-loaders/eager-loader.d.ts.map +1 -1
package/README.md CHANGED
@@ -98,9 +98,9 @@ export default class Server {}
98
98
  - **Auth modes**: `authOptionsSchema` and the option types of each mode. See [Auth modes](https://frontmcp.dev/reference/auth/modes).
99
99
  - **Local mode**: FrontMCP as an OAuth 2.1 authorization server, with PKCE (Proof Key for Code Exchange), dynamic client registration and refresh tokens. See [Local auth](https://frontmcp.dev/reference/auth/local).
100
100
  - **Remote mode**: users sign in at your identity provider, and FrontMCP issues the tokens. See [Remote and proxied auth](https://frontmcp.dev/reference/auth/remote).
101
- - **Upstream providers**: several OAuth providers linked in one sign-in. See [Upstream providers](https://frontmcp.dev/reference/auth/upstream-providers).
101
+ - **Upstream providers**: several OAuth providers linked in one sign-in, on one picker page or one provider per page (`incrementalAuth.showAllAppsAtOnce: false`, `buildFederatedStepPage`). See [Upstream providers](https://frontmcp.dev/reference/auth/upstream-providers).
102
102
  - **Token checks**: JWT verification against a JSON Web Key Set (JWKS), and audience and scope checks (`JwksService`, `validateAudience`). See [Tokens and sessions](https://frontmcp.dev/reference/auth/tokens).
103
- - **CIMD (Client ID Metadata Documents)**: clients whose `client_id` is the URL of a metadata document (`CimdService`). See [Client ID metadata](https://frontmcp.dev/reference/auth/cimd).
103
+ - **CIMD (Client ID Metadata Documents)**: clients whose `client_id` is the URL of a metadata document (`CimdService`). A public client declares `token_endpoint_auth_method: 'none'`; a confidential one declares `private_key_jwt` and authenticates at the token endpoint with a client assertion signed by a key from its `jwks` / `jwks_uri` (RFC 7523, `CimdService.verifyClientAssertion`). See [Client ID metadata](https://frontmcp.dev/reference/auth/cimd).
104
104
  - **Authorities**: rules on tools, resources, prompts, skills and agents, from roles, permissions, token claims, the call's arguments or your own code (`AuthorityDeniedError`). See [Authorities](https://frontmcp.dev/reference/auth/authorities).
105
105
  - **Credential vault**: per-user credentials that tools read with `this.credentials`, and that users can add to mid-session. See [Progressive auth](https://frontmcp.dev/reference/auth/progressive).
106
106
  - **Sign-in pages**: the built-in sign-in, consent and error pages, and `escapeHtml`, `buildLoginPage` and `baseLayout` for your own. See [Custom login UI](https://frontmcp.dev/reference/auth/login-ui).
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.context.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE9F;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAelF;AA0BD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK;IAClE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAI9G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGxF;AAQD;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;gBAEhD,OAAO,GAAE,gCAAqC;IAM1D;;OAEG;IACH,KAAK,CACH,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAC/B,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAc,GACxC,4BAA4B;CAoEhC"}
1
+ {"version":3,"file":"authorities.context.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,KAAK,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE9F;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAelF;AA0BD;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK;IAClE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IAC1F,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,SAAS,GAAG,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAI9G;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAExD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGxF;AAQD;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAuC;IACrE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA+B;IAC9D,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAuB;gBAEhD,OAAO,GAAE,gCAAqC;IAM1D;;OAEG;IACH,KAAK,CACH,QAAQ,EAAE,OAAO,CAAC,YAAY,CAAC,EAC/B,KAAK,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACnC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAc,GACxC,4BAA4B;CAwEhC"}
@@ -76,7 +76,7 @@ export declare class AuthoritiesEngine {
76
76
  */
77
77
  private evaluateAnyOf;
78
78
  /**
79
- * not combinator — inverts the nested policy result.
79
+ * not combinator — inverts the nested policy result; an unresolved denial stays a denial.
80
80
  */
81
81
  private evaluateNot;
82
82
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.engine.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AA0B7B;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAG7C,QAAQ,EAAE,0BAA0B,EACpC,UAAU,EAAE,4BAA4B;IAG3D;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE;IAShD;;;OAGG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAM/B;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB/G;;OAEG;YACW,eAAe;IAyB7B,yEAAyE;IACzE,OAAO,CAAC,UAAU;IAUlB;;OAEG;YACW,oBAAoB;IAclC;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACH,OAAO,CAAC,cAAc;IA0BtB;;OAEG;YACW,cAAc;IA2B5B;;;;OAIG;YACW,cAAc;IAyB5B;;OAEG;YACW,aAAa;IAiB3B;;OAEG;YACW,aAAa;IAwB3B;;OAEG;YACW,WAAW;IAczB;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;CAGpE"}
1
+ {"version":3,"file":"authorities.engine.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.engine.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AACvG,OAAO,KAAK,EACV,4BAA4B,EAC5B,mBAAmB,EACnB,yBAAyB,EACzB,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AA2C7B;;;;;;;;;GASG;AACH,qBAAa,iBAAiB;IAK1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAL7B,iGAAiG;IACjG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmC;gBAG7C,QAAQ,EAAE,0BAA0B,EACpC,UAAU,EAAE,4BAA4B;IAG3D;;;;OAIG;IACH,gBAAgB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,EAAE;IAShD;;;OAGG;IACH,mBAAmB,IAAI,MAAM,EAAE;IAM/B;;;;OAIG;IACG,QAAQ,CAAC,WAAW,EAAE,mBAAmB,EAAE,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAkB/G;;OAEG;YACW,eAAe;IAyB7B,yEAAyE;IACzE,OAAO,CAAC,UAAU;IAUlB;;OAEG;YACW,oBAAoB;IAIlC;;OAEG;YACW,cAAc;IA+C5B;;OAEG;IACH,OAAO,CAAC,cAAc;IA4BtB;;OAEG;YACW,cAAc;IAkB5B;;;;OAIG;YACW,cAAc;IAyB5B;;OAEG;YACW,aAAa;IAO3B;;OAEG;YACW,aAAa;IA4B3B;;OAEG;YACW,WAAW;IAiBzB;;;OAGG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;CAGpE"}
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.evaluator.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.evaluator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAEV,UAAU,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,4BAA4B,GAAG,iBAAiB,CA4B/G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,4BAA4B,GAChC,iBAAiB,CA4BnB;AAqGD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,4BAA4B,GAAG,iBAAiB,CAsCrG;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,4BAA4B,GAAG,MAAM,GAAG,SAAS,CAc3G;AAgDD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,EACnC,GAAG,EAAE,4BAA4B,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAS5B"}
1
+ {"version":3,"file":"authorities.evaluator.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.evaluator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,UAAU,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,aAAa,EACd,MAAM,qBAAqB,CAAC;AAM7B;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,EAAE,4BAA4B,GAAG,iBAAiB,CA4B/G;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,4BAA4B,GAChC,iBAAiB,CA4BnB;AAgHD;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,4BAA4B,GAAG,iBAAiB,CAmDrG;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,4BAA4B,GAAG,MAAM,GAAG,SAAS,CAc3G;AAiDD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,WAAW,GAAG,WAAW,EAAE,EACnC,GAAG,EAAE,4BAA4B,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAY5B"}
@@ -27,5 +27,8 @@ declare global {
27
27
  interface ExtendFrontMcpSkillMetadata {
28
28
  authorities?: AuthoritiesMetadata;
29
29
  }
30
+ interface ExtendFrontMcpEventMetadata {
31
+ authorities?: AuthoritiesMetadata;
32
+ }
30
33
  }
31
34
  //# sourceMappingURL=authorities.metadata-augment.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.metadata-augment.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.metadata-augment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,0BAA0B;QAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,8BAA8B;QACtC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,sCAAsC;QAC9C,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,4BAA4B;QACpC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,2BAA2B;QACnC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;CACF"}
1
+ {"version":3,"file":"authorities.metadata-augment.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.metadata-augment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,0BAA0B;QAClC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,8BAA8B;QACtC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,sCAAsC;QAC9C,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,4BAA4B;QACpC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,2BAA2B;QACnC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;IAED,UAAU,2BAA2B;QACnC,WAAW,CAAC,EAAE,mBAAmB,CAAC;KACnC;CACF"}
@@ -33,7 +33,7 @@ export interface AuthoritiesClaimsMapping {
33
33
  roles?: string;
34
34
  /** Dot-path to permissions array/string in JWT claims */
35
35
  permissions?: string;
36
- /** Dot-path to tenant/org ID in JWT claims */
36
+ /** Dot-path to tenant/org ID in JWT claims; a string value becomes `user.tenantId` for rules and guards */
37
37
  tenantId?: string;
38
38
  /** Dot-path to user ID in JWT claims (default: 'sub') */
39
39
  userId?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.profiles.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.profiles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAMjH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,wBAAwB;IACvC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC;;;OAGG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACrD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAClD,sDAAsD;IACtD,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,kCAAkC,EAAE,eAAe,EAAE,CAAC;CACtE"}
1
+ {"version":3,"file":"authorities.profiles.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.profiles.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAMjH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,wBAAwB;IACvC,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2GAA2G;IAC3G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAMD;;;;;GAKG;AACH,MAAM,WAAW,uBAAuB;IACtC,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACjC,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CACrC;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,sCAAsC;IACtC,aAAa,CAAC,EAAE,wBAAwB,CAAC;IACzC;;;OAGG;IACH,cAAc,CAAC,EAAE,gBAAgB,CAAC;IAClC,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;IACrD;;;OAGG;IACH,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAClD,sDAAsD;IACtD,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,kCAAkC,EAAE,eAAe,EAAE,CAAC;CACtE"}
@@ -4,7 +4,7 @@
4
4
  * - AuthoritiesProfileRegistry: stores named authority profiles
5
5
  * - AuthoritiesEvaluatorRegistry: stores custom evaluators
6
6
  */
7
- import type { AuthoritiesPolicyMetadata, AuthoritiesEvaluator } from './authorities.types';
7
+ import type { AuthoritiesEvaluator, AuthoritiesPolicyMetadata } from './authorities.types';
8
8
  /**
9
9
  * Registry for named authority profiles.
10
10
  * Profiles map a string name to a policy, allowing
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.registry.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAM7B;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IAEzE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAI/D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI;IAMtE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;IAI5D;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAQnD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAMD;;;GAGG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAEtE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAI7D;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,IAAI;IAMnE;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAInD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"authorities.registry.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,yBAAyB,EAAE,MAAM,qBAAqB,CAAC;AAM3F;;;;GAIG;AACH,qBAAa,0BAA0B;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgD;IAEzE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,yBAAyB,GAAG,IAAI;IAI/D;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI;IAMtE;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS;IAI5D;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC;IAQnD;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd;AAMD;;;GAGG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2C;IAEtE;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAI7D;;OAEG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,CAAC,GAAG,IAAI;IAMnE;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,GAAG,SAAS;IAInD;;OAEG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -4,8 +4,8 @@
4
4
  * Resolves required OAuth scopes from a structured authority denial
5
5
  * using explicit scopeMapping configuration.
6
6
  */
7
- import type { AuthoritiesDenial, AuthoritiesMetadata } from './authorities.types';
8
7
  import type { AuthoritiesScopeMapping } from './authorities.profiles';
8
+ import type { AuthoritiesDenial, AuthoritiesMetadata } from './authorities.types';
9
9
  /**
10
10
  * Resolve required OAuth scopes from a structured denial and scopeMapping.
11
11
  * Returns undefined if no mapping matches the denial.
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.scope-mapping.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.scope-mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAEtE;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,mBAAmB,GAC/B,MAAM,EAAE,GAAG,SAAS,CAkCtB"}
1
+ {"version":3,"file":"authorities.scope-mapping.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.scope-mapping.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAElF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,uBAAuB,EAChC,WAAW,EAAE,mBAAmB,GAC/B,MAAM,EAAE,GAAG,SAAS,CAkCtB"}
@@ -216,6 +216,8 @@ export interface AuthoritiesDenial {
216
216
  export interface AuthoritiesResult {
217
217
  /** Whether access was granted */
218
218
  granted: boolean;
219
+ /** With `granted: false`: the check couldn't be decided (e.g. a missing `{ fromInput }` value), so `not` keeps the denial */
220
+ unresolved?: boolean;
219
221
  /** Human-readable reason for denial (kept for backward compatibility) */
220
222
  deniedBy?: string;
221
223
  /** Structured denial data (machine-parsable) */
@@ -257,6 +259,8 @@ export interface AuthoritiesEvaluationContext {
257
259
  permissions: string[];
258
260
  /** Raw JWT claims */
259
261
  claims: Record<string, unknown>;
262
+ /** Tenant or organization id, read from the claim `claimsMapping.tenantId` names; undefined without one */
263
+ tenantId?: string;
260
264
  };
261
265
  /** Tool/prompt input arguments */
262
266
  input: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"authorities.types.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"authorities.types.d.ts","sourceRoot":"","sources":["../../src/authorities/authorities.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,wCAAwC;IACxC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAMD;;GAEG;AACH,MAAM,MAAM,YAAY,GACpB,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,OAAO,GACP,IAAI,GACJ,KAAK,GACL,IAAI,GACJ,KAAK,GACL,UAAU,GACV,YAAY,GACZ,UAAU,GACV,QAAQ,GACR,SAAS,CAAC;AAEd;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7E;;;;;;;;;GASG;AACH,MAAM,WAAW,aAAa;IAC5B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,EAAE,EAAE,YAAY,CAAC;IACjB;;;OAGG;IACH,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC;;OAEG;IACH,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;CAC9B;AAMD;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,uEAAuE;IACvE,UAAU,EAAE,aAAa,CAAC;CAC3B;AAMD;;;;;GAKG;AACH;;;;;;;;;;;GAWG;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,4BAA4B,KAAK,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;AAEnH,MAAM,WAAW,yBAAyB;IACxC,2BAA2B;IAC3B,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,iCAAiC;IACjC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IACpC,uCAAuC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,uCAAuC;IACvC,aAAa,CAAC,EAAE,WAAW,GAAG,WAAW,EAAE,CAAC;IAC5C,0FAA0F;IAC1F,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC;;;;OAIG;IACH,MAAM,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC5B,wDAAwD;IACxD,QAAQ,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IACxB,6BAA6B;IAC7B,GAAG,CAAC,EAAE,yBAAyB,CAAC;IAChC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACpC,qDAAqD;IACrD,KAAK,CAAC,EAAE,yBAAyB,EAAE,CAAC;CACrC;AAMD;;;;;;;;;;;;;;GAcG;AAEH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,yBAAyB;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;KACrB;CACF;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,yBAAyB,CAAC;AAM5E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,MAAM,mBAAmB,GAAG,oBAAoB,GAAG,oBAAoB,EAAE,GAAG,yBAAyB,CAAC;AAM5G;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,0CAA0C;IAC1C,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,eAAe,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;IAClH,2FAA2F;IAC3F,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yBAAyB;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,6HAA6H;IAC7H,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,gCAAgC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC;;;;;;;;OAQG;IACH,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,4BAA4B,GAChC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAMD;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,gCAAgC;IAChC,IAAI,EAAE;QACJ,+DAA+D;QAC/D,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,+CAA+C;QAC/C,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,qDAAqD;QACrD,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,qBAAqB;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,2GAA2G;QAC3G,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,6CAA6C;IAC7C,aAAa,EAAE,oBAAoB,CAAC;CACrC;AAMD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,4BAA4B,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC1F"}
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrated.accessor.d.ts","sourceRoot":"","sources":["../../src/authorization/orchestrated.accessor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrated.accessor.d.ts","sourceRoot":"","sources":["../../src/authorization/orchestrated.accessor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAIrC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/C;;;;;OAKG;IACH,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEzD;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAEnD;;;;;OAKG;IACH,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAEzC;;OAEG;IACH,cAAc,IAAI,MAAM,EAAE,CAAC;IAE3B;;;;;OAKG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IAExC;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE,CAAC;IAEnC;;;;;OAKG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAEnD;;OAEG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAEpC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,0BAA0B,EAElC,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAErC;;GAEG;AACH,qBAAa,4BAA6B,YAAW,wBAAwB;IAC3E,QAAQ,CAAC,iBAAiB,YAAa;IACvC,QAAQ,CAAC,MAAM,YAAa;IAC5B,QAAQ,CAAC,eAAe,UAAU;IAClC,QAAQ,CAAC,eAAe,SAAS;IAE3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9C,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,IAAI,MAAM,EAAE;IAI1B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIvC,sBAAsB,IAAI,MAAM,EAAE;IAIlC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;CAGnD;AAED;;GAEG;AACH,qBAAa,+BAAgC,YAAW,wBAAwB;IAE5E,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE;QAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;QAC9B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QACzB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;QACzC,cAAc,IAAI,MAAM,EAAE,CAAC;QAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC/C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;QACnD,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;QACxC,sBAAsB,IAAI,MAAM,EAAE,CAAC;QACnC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;KACpD;IAGH,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,eAAe,IAAI,OAAO,CAE7B;IAEK,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI9C,WAAW,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQxD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;IAIxC,cAAc,IAAI,MAAM,EAAE;IAI1B,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIvC,sBAAsB,IAAI,MAAM,EAAE;IAIlC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;CAGnD"}
@@ -1 +1 @@
1
- {"version":3,"file":"public.authorization.d.ts","sourceRoot":"","sources":["../../src/authorization/public.authorization.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAoC,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAGxF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAY;IAEnC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO;IAKP;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,GAAE,4BAAiC,GAAG,mBAAmB;IA6D1E;;;;OAIG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACM,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/C;;OAEG;IACM,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAOpD"}
1
+ {"version":3,"file":"public.authorization.d.ts","sourceRoot":"","sources":["../../src/authorization/public.authorization.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAoC,MAAM,uBAAuB,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,YAAY,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;IAEhC;;;OAGG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,CAAC;CACnC;AAED;;;;;;;;GAQG;AACH,qBAAa,mBAAoB,SAAQ,iBAAiB;IACxD,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAY;IAEnC;;OAEG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,OAAO;IAKP;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,MAAM,CAAC,GAAG,GAAE,4BAAiC,GAAG,mBAAmB;IA6D1E;;;;OAIG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED;;OAEG;IACM,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAQ/C;;OAEG;IACM,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAOpD"}
@@ -1,5 +1,5 @@
1
1
  import { AuthorizationBase } from './authorization.class';
2
- import type { AuthorizationCreateCtx, AuthMode } from './authorization.types';
2
+ import type { AuthMode, AuthorizationCreateCtx } from './authorization.types';
3
3
  /**
4
4
  * Verified JWT payload from transparent auth provider
5
5
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transparent.authorization.d.ts","sourceRoot":"","sources":["../../src/authorization/transparent.authorization.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,sBAAsB,EAAY,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAIxF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,EAAE,0BAA0B,CAAC;IAEpC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAChE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAiB;IAExC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,OAAO;IAWP;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,iCAAiC,GAAG,wBAAwB;IA8C1F;;;;;;;;OAQG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAMtC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE5C;IAED;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAMlC"}
1
+ {"version":3,"file":"transparent.authorization.d.ts","sourceRoot":"","sources":["../../src/authorization/transparent.authorization.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAY,MAAM,uBAAuB,CAAC;AAExF;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe;IACf,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACxB,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,mBAAmB;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,wBAAwB;IACxB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC;IAChD;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,OAAO,EAAE,0BAA0B,CAAC;IAEpC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,eAAe,CAAC,EAAE,sBAAsB,CAAC,iBAAiB,CAAC,CAAC;IAC5D,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,iBAAiB,CAAC,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,CAAC;IAChE,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IAC1D,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;CAChC;AAED;;;;;;;;GAQG;AACH,qBAAa,wBAAyB,SAAQ,iBAAiB;IAC7D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAiB;IAExC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B;;OAEG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAE/B,OAAO;IAWP;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE,iCAAiC,GAAG,wBAAwB;IA8C1F;;;;;;;;OAQG;IACG,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAOrD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAM1B;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAMtC;;OAEG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAE5C;IAED;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAMlC"}
@@ -93,12 +93,14 @@ var AuthoritiesContextBuilder = class {
93
93
  permissions = toStringArray(user["permissions"] ?? []);
94
94
  }
95
95
  const mappedSub = this.claimsMapping?.userId ? resolveDotPath(rawClaims, this.claimsMapping.userId) : void 0;
96
+ const mappedTenantId = this.claimsMapping?.tenantId ? resolveDotPath(rawClaims, this.claimsMapping.tenantId) : void 0;
96
97
  return {
97
98
  user: {
98
99
  sub: signedInSubject(user.sub, mappedSub),
99
100
  roles,
100
101
  permissions,
101
- claims: rawClaims
102
+ claims: rawClaims,
103
+ tenantId: typeof mappedTenantId === "string" && mappedTenantId !== "" ? mappedTenantId : void 0
102
104
  },
103
105
  input,
104
106
  env,
@@ -15,6 +15,17 @@ function invalidRule(problems, policies = []) {
15
15
  evaluatedPolicies: policies
16
16
  };
17
17
  }
18
+ async function evaluateEvery(items, evaluateItem, evaluatedPolicies = []) {
19
+ let unresolved;
20
+ for (const item of items) {
21
+ const result = await evaluateItem(item);
22
+ evaluatedPolicies.push(...result.evaluatedPolicies);
23
+ if (result.granted) continue;
24
+ if (!result.unresolved) return { ...result, evaluatedPolicies };
25
+ unresolved ??= result;
26
+ }
27
+ return unresolved ? { ...unresolved, evaluatedPolicies } : { granted: true, evaluatedPolicies };
28
+ }
18
29
  var AuthoritiesEngine = class {
19
30
  constructor(profiles, evaluators) {
20
31
  this.profiles = profiles;
@@ -98,15 +109,7 @@ var AuthoritiesEngine = class {
98
109
  * Evaluate an array of profile names (AND semantics).
99
110
  */
100
111
  async evaluateProfileArray(names, ctx) {
101
- const allPolicies = [];
102
- for (const name of names) {
103
- const result = await this.evaluateProfile(name, ctx);
104
- allPolicies.push(...result.evaluatedPolicies);
105
- if (!result.granted) {
106
- return { ...result, evaluatedPolicies: allPolicies };
107
- }
108
- }
109
- return { granted: true, evaluatedPolicies: allPolicies };
112
+ return evaluateEvery(names, (name) => this.evaluateProfile(name, ctx));
110
113
  }
111
114
  /**
112
115
  * Evaluate an inline policy object.
@@ -152,7 +155,7 @@ var AuthoritiesEngine = class {
152
155
  combineResults(results, operator) {
153
156
  const allPolicies = results.flatMap((r) => r.evaluatedPolicies);
154
157
  if (operator === "AND") {
155
- const denied = results.find((r) => !r.granted);
158
+ const denied = results.find((r) => !r.granted && !r.unresolved) ?? results.find((r) => !r.granted);
156
159
  if (denied) {
157
160
  return { ...denied, evaluatedPolicies: allPolicies };
158
161
  }
@@ -162,10 +165,12 @@ var AuthoritiesEngine = class {
162
165
  if (anyGranted) {
163
166
  return { granted: true, evaluatedPolicies: allPolicies };
164
167
  }
165
- const firstDenied = results.find((r) => !r.granted);
168
+ const unresolved = results.find((r) => r.unresolved);
169
+ const reported = unresolved ?? results.find((r) => !r.granted);
166
170
  return {
167
171
  granted: false,
168
- deniedBy: firstDenied?.deniedBy ?? "all policies denied (OR)",
172
+ ...unresolved && { unresolved: true },
173
+ deniedBy: reported?.deniedBy ?? "all policies denied (OR)",
169
174
  evaluatedPolicies: allPolicies
170
175
  };
171
176
  }
@@ -173,23 +178,18 @@ var AuthoritiesEngine = class {
173
178
  * Evaluate custom evaluators.
174
179
  */
175
180
  async evaluateCustom(custom, ctx) {
176
- const allPolicies = [];
177
- for (const [name, config] of Object.entries(custom)) {
181
+ return evaluateEvery(Object.entries(custom), async ([name, config]) => {
178
182
  const evaluator = this.evaluators.get(name);
179
183
  if (!evaluator) {
180
184
  return {
181
185
  granted: false,
182
186
  deniedBy: `custom evaluator '${name}' is not registered`,
183
- evaluatedPolicies: [...allPolicies, `custom.${name}`]
187
+ evaluatedPolicies: [`custom.${name}`]
184
188
  };
185
189
  }
186
190
  const result = await evaluator.evaluate(config, ctx);
187
- allPolicies.push(`custom.${name}`, ...result.evaluatedPolicies);
188
- if (!result.granted) {
189
- return { ...result, evaluatedPolicies: allPolicies };
190
- }
191
- }
192
- return { granted: true, evaluatedPolicies: allPolicies };
191
+ return { ...result, evaluatedPolicies: [`custom.${name}`, ...result.evaluatedPolicies] };
192
+ });
193
193
  }
194
194
  /**
195
195
  * Evaluate async guard functions in sequence.
@@ -216,15 +216,7 @@ var AuthoritiesEngine = class {
216
216
  * allOf combinator \u2014 all nested policies must pass.
217
217
  */
218
218
  async evaluateAllOf(policies, ctx) {
219
- const allPolicies = ["allOf"];
220
- for (const policy of policies) {
221
- const result = await this.evaluatePolicy(policy, ctx);
222
- allPolicies.push(...result.evaluatedPolicies);
223
- if (!result.granted) {
224
- return { ...result, evaluatedPolicies: allPolicies };
225
- }
226
- }
227
- return { granted: true, evaluatedPolicies: allPolicies };
219
+ return evaluateEvery(policies, (policy) => this.evaluatePolicy(policy, ctx), ["allOf"]);
228
220
  }
229
221
  /**
230
222
  * anyOf combinator \u2014 at least one nested policy must pass.
@@ -232,6 +224,7 @@ var AuthoritiesEngine = class {
232
224
  async evaluateAnyOf(policies, ctx) {
233
225
  const allPolicies = ["anyOf"];
234
226
  let lastDenied;
227
+ let unresolved;
235
228
  for (const policy of policies) {
236
229
  const result = await this.evaluatePolicy(policy, ctx);
237
230
  allPolicies.push(...result.evaluatedPolicies);
@@ -239,19 +232,25 @@ var AuthoritiesEngine = class {
239
232
  return { granted: true, evaluatedPolicies: allPolicies };
240
233
  }
241
234
  lastDenied = result;
235
+ if (result.unresolved) unresolved ??= result;
242
236
  }
237
+ const reported = unresolved ?? lastDenied;
243
238
  return {
244
239
  granted: false,
245
- deniedBy: lastDenied?.deniedBy ?? "no policies in anyOf",
246
- denial: lastDenied?.denial ?? { kind: "anyOf", path: "anyOf" },
240
+ ...unresolved && { unresolved: true },
241
+ deniedBy: reported?.deniedBy ?? "no policies in anyOf",
242
+ denial: reported?.denial ?? { kind: "anyOf", path: "anyOf" },
247
243
  evaluatedPolicies: allPolicies
248
244
  };
249
245
  }
250
246
  /**
251
- * not combinator \u2014 inverts the nested policy result.
247
+ * not combinator \u2014 inverts the nested policy result; an unresolved denial stays a denial.
252
248
  */
253
249
  async evaluateNot(policy, ctx) {
254
250
  const result = await this.evaluatePolicy(policy, ctx);
251
+ if (!result.granted && result.unresolved) {
252
+ return { ...result, evaluatedPolicies: ["not", ...result.evaluatedPolicies] };
253
+ }
255
254
  return {
256
255
  granted: !result.granted,
257
256
  deniedBy: result.granted ? "not: inner policy was granted (negated to denied)" : void 0,
@@ -72,11 +72,25 @@ function resolveValue(value, ctx) {
72
72
  }
73
73
  return value;
74
74
  }
75
+ function describeMissingValue(value) {
76
+ const reference = value ?? {};
77
+ if (typeof reference["fromInput"] === "string") return `input '${reference["fromInput"]}'`;
78
+ if (typeof reference["fromClaims"] === "string") return `claim '${reference["fromClaims"]}'`;
79
+ return "the value";
80
+ }
81
+ function unresolvedAttribute(policyPath, denialPath, path, value, actual) {
82
+ return {
83
+ granted: false,
84
+ unresolved: true,
85
+ deniedBy: `${policyPath}: '${path}' could not be checked: ${describeMissingValue(value)} is missing`,
86
+ denial: { kind: "attributes", path: denialPath, actual },
87
+ evaluatedPolicies: [policyPath]
88
+ };
89
+ }
75
90
  function applyOperator(actual, op, expected) {
76
91
  switch (op) {
77
- // A missing expected value (e.g. an absent fromInput) never matches, even an absent actual value
78
92
  case "eq":
79
- return expected !== void 0 && actual === expected;
93
+ return actual === expected;
80
94
  case "neq":
81
95
  return actual !== expected;
82
96
  case "in":
@@ -114,23 +128,21 @@ function applyOperator(actual, op, expected) {
114
128
  return false;
115
129
  }
116
130
  }
117
- function evaluateCondition(condition, envelope, ctx) {
118
- const actual = resolveDotPath(envelope, condition.path);
119
- const expected = resolveValue(condition.value, ctx);
120
- return applyOperator(actual, condition.op, expected);
121
- }
122
131
  var REDACTED_ENV_VALUE = "[redacted]";
123
132
  function reportableActual(path, actual) {
124
133
  return path === "env" || path.startsWith("env.") ? REDACTED_ENV_VALUE : actual;
125
134
  }
126
135
  function evaluateAbac(policy, ctx) {
127
136
  const envelope = buildContextEnvelope(ctx);
137
+ let unresolved;
128
138
  if (policy.match) {
129
139
  for (const [path, expectedRaw] of Object.entries(policy.match)) {
130
140
  const actual = resolveDotPath(envelope, path);
131
141
  const expected = resolveValue(expectedRaw, ctx);
132
- if (expected === void 0 || actual !== expected) {
133
- const reported = reportableActual(path, actual);
142
+ const reported = reportableActual(path, actual);
143
+ if (expected === void 0) {
144
+ unresolved ??= unresolvedAttribute("attributes.match", "attributes.match", path, expectedRaw, reported);
145
+ } else if (actual !== expected) {
134
146
  return {
135
147
  granted: false,
136
148
  deniedBy: `attributes.match: '${path}' expected '${String(expected)}' but got '${String(reported)}'`,
@@ -143,19 +155,29 @@ function evaluateAbac(policy, ctx) {
143
155
  if (policy.conditions) {
144
156
  for (let i = 0; i < policy.conditions.length; i++) {
145
157
  const condition = policy.conditions[i];
146
- if (!evaluateCondition(condition, envelope, ctx)) {
147
- const expected = resolveValue(condition.value, ctx);
148
- const actual = reportableActual(condition.path, resolveDotPath(envelope, condition.path));
158
+ const denialPath = `attributes.conditions[${i}]`;
159
+ const actual = resolveDotPath(envelope, condition.path);
160
+ const expected = resolveValue(condition.value, ctx);
161
+ const reported = reportableActual(condition.path, actual);
162
+ if (expected === void 0) {
163
+ unresolved ??= unresolvedAttribute(
164
+ "attributes.conditions",
165
+ denialPath,
166
+ condition.path,
167
+ condition.value,
168
+ reported
169
+ );
170
+ } else if (!applyOperator(actual, condition.op, expected)) {
149
171
  return {
150
172
  granted: false,
151
173
  deniedBy: `attributes.conditions: '${condition.path}' failed '${condition.op}' check against '${String(expected)}'`,
152
- denial: { kind: "attributes", path: `attributes.conditions[${i}]`, expected, actual },
174
+ denial: { kind: "attributes", path: denialPath, expected, actual: reported },
153
175
  evaluatedPolicies: ["attributes.conditions"]
154
176
  };
155
177
  }
156
178
  }
157
179
  }
158
- return { granted: true, evaluatedPolicies: ["attributes"] };
180
+ return unresolved ?? { granted: true, evaluatedPolicies: ["attributes"] };
159
181
  }
160
182
  function resolveResourceId(ref, ctx) {
161
183
  if (typeof ref === "string") return ref;
@@ -183,6 +205,7 @@ async function evaluateSingleRebac(policy, ctx) {
183
205
  if (resourceId === void 0) {
184
206
  return {
185
207
  granted: false,
208
+ unresolved: true,
186
209
  deniedBy: `relationships: could not resolve resourceId for ${policy.resource}`,
187
210
  denial: {
188
211
  kind: "relationships",
@@ -210,11 +233,14 @@ async function evaluateSingleRebac(policy, ctx) {
210
233
  }
211
234
  async function evaluateRebac(policy, ctx) {
212
235
  const policies = Array.isArray(policy) ? policy : [policy];
236
+ let unresolved;
213
237
  for (const p of policies) {
214
238
  const result = await evaluateSingleRebac(p, ctx);
215
- if (!result.granted) return result;
239
+ if (result.granted) continue;
240
+ if (!result.unresolved) return result;
241
+ unresolved ??= result;
216
242
  }
217
- return { granted: true, evaluatedPolicies: ["relationships"] };
243
+ return unresolved ?? { granted: true, evaluatedPolicies: ["relationships"] };
218
244
  }
219
245
  export {
220
246
  evaluateAbac,
@@ -86,7 +86,7 @@ var DcrClientRegistry = class {
86
86
  client_id: c.clientId,
87
87
  client_secret: c.clientSecret,
88
88
  token_endpoint_auth_method: c.tokenEndpointAuthMethod ?? "none",
89
- grant_types: c.grantTypes ?? ["authorization_code"],
89
+ grant_types: c.grantTypes ?? ["authorization_code", "refresh_token"],
90
90
  response_types: c.responseTypes ?? ["code"],
91
91
  redirect_uris: c.redirectUris,
92
92
  client_name: c.clientName,
@@ -1,7 +1,7 @@
1
1
  // libs/auth/src/authorization/public.authorization.ts
2
2
  import { randomUUID } from "@frontmcp/utils";
3
- import { AuthorizationBase } from "./authorization.class.mjs";
4
3
  import { TokenNotAvailableError } from "../errors/auth-internal.errors.mjs";
4
+ import { AuthorizationBase } from "./authorization.class.mjs";
5
5
  var PublicAuthorization = class _PublicAuthorization extends AuthorizationBase {
6
6
  mode = "public";
7
7
  /**
@@ -1,7 +1,7 @@
1
1
  // libs/auth/src/authorization/transparent.authorization.ts
2
2
  import { sha256Hex } from "@frontmcp/utils";
3
- import { AuthorizationBase } from "./authorization.class.mjs";
4
3
  import { TokenNotAvailableError } from "../errors/auth-internal.errors.mjs";
4
+ import { AuthorizationBase } from "./authorization.class.mjs";
5
5
  var TransparentAuthorization = class _TransparentAuthorization extends AuthorizationBase {
6
6
  mode = "transparent";
7
7
  /**
@@ -0,0 +1,108 @@
1
+ // libs/auth/src/cimd/cimd-client-assertion.ts
2
+ import { sha256Hex } from "@frontmcp/utils";
3
+ import { loadJose } from "../jwks/jose.loader.mjs";
4
+ import { CimdClientAssertionError, CimdError } from "./cimd.errors.mjs";
5
+ var CLIENT_ASSERTION_TYPE_JWT_BEARER = "urn:ietf:params:oauth:client-assertion-type:jwt-bearer";
6
+ var CLIENT_ASSERTION_SIGNING_ALGORITHMS = [
7
+ "RS256",
8
+ "RS384",
9
+ "RS512",
10
+ "PS256",
11
+ "PS384",
12
+ "PS512",
13
+ "ES256",
14
+ "ES384",
15
+ "ES512",
16
+ "EdDSA",
17
+ "Ed25519"
18
+ ];
19
+ var MAX_CLIENT_ASSERTION_LIFETIME_SECONDS = 600;
20
+ var CLOCK_TOLERANCE_SECONDS = 30;
21
+ var MAX_CLIENT_ASSERTION_LENGTH = 16384;
22
+ async function verifyClientAssertion(context) {
23
+ const { clientId, assertion } = context;
24
+ const refuse = (reason) => new CimdClientAssertionError(clientId, reason);
25
+ if (!assertion) throw refuse("missing_assertion");
26
+ if (context.type !== CLIENT_ASSERTION_TYPE_JWT_BEARER) throw refuse("unsupported_assertion_type");
27
+ if (assertion.length > MAX_CLIENT_ASSERTION_LENGTH) throw refuse("malformed");
28
+ const jose = await loadJose();
29
+ let algorithm;
30
+ try {
31
+ algorithm = jose.decodeProtectedHeader(assertion).alg;
32
+ } catch {
33
+ throw refuse("malformed");
34
+ }
35
+ if (typeof algorithm !== "string" || !CLIENT_ASSERTION_SIGNING_ALGORITHMS.includes(algorithm)) {
36
+ throw refuse("unsupported_algorithm");
37
+ }
38
+ let payload;
39
+ try {
40
+ payload = await verifySignedClaims(jose, context);
41
+ } catch (error) {
42
+ if (error instanceof CimdError) throw error;
43
+ throw refuse(refusalFor(error));
44
+ }
45
+ const now = Math.floor(Date.now() / 1e3);
46
+ const expiresAt = payload.exp ?? now;
47
+ if (expiresAt - now > MAX_CLIENT_ASSERTION_LIFETIME_SECONDS) throw refuse("lifetime_too_long");
48
+ if (typeof payload.iat === "number" && payload.iat > now + CLOCK_TOLERANCE_SECONDS) throw refuse("not_yet_valid");
49
+ if (typeof payload.jti !== "string" || payload.jti.length === 0) throw refuse("missing_claim");
50
+ const ttlMs = (expiresAt - now + CLOCK_TOLERANCE_SECONDS) * 1e3;
51
+ const claimed = await context.claimOnce(`client-assertion:${sha256Hex(`${clientId}
52
+ ${payload.jti}`)}`, ttlMs);
53
+ if (!claimed) throw refuse("replayed");
54
+ }
55
+ async function verifySignedClaims(jose, context) {
56
+ const options = {
57
+ algorithms: CLIENT_ASSERTION_SIGNING_ALGORITHMS,
58
+ issuer: context.clientId,
59
+ subject: context.clientId,
60
+ audience: [...context.audiences],
61
+ requiredClaims: ["exp", "jti"],
62
+ clockTolerance: CLOCK_TOLERANCE_SECONDS
63
+ };
64
+ const verifyWith = async (refresh) => {
65
+ const keys = jose.createLocalJWKSet(await context.keys(refresh));
66
+ return (await jose.jwtVerify(context.assertion ?? "", keys, options)).payload;
67
+ };
68
+ try {
69
+ return await verifyWith(false);
70
+ } catch (error) {
71
+ if (errorCode(error) !== "ERR_JWKS_NO_MATCHING_KEY") throw error;
72
+ return verifyWith(true);
73
+ }
74
+ }
75
+ function refusalFor(error) {
76
+ const { claim, reason } = error;
77
+ switch (errorCode(error)) {
78
+ case "ERR_JOSE_ALG_NOT_ALLOWED":
79
+ return "unsupported_algorithm";
80
+ case "ERR_JWKS_NO_MATCHING_KEY":
81
+ case "ERR_JWKS_MULTIPLE_MATCHING_KEYS":
82
+ case "ERR_JWKS_INVALID":
83
+ case "ERR_JWK_INVALID":
84
+ return "unknown_key";
85
+ case "ERR_JWS_SIGNATURE_VERIFICATION_FAILED":
86
+ return "bad_signature";
87
+ case "ERR_JWT_EXPIRED":
88
+ return "expired";
89
+ case "ERR_JWT_CLAIM_VALIDATION_FAILED":
90
+ if (reason === "missing") return "missing_claim";
91
+ if (claim === "iss") return "wrong_issuer";
92
+ if (claim === "sub") return "wrong_subject";
93
+ if (claim === "aud") return "wrong_audience";
94
+ if (claim === "nbf") return "not_yet_valid";
95
+ return "malformed";
96
+ default:
97
+ return "malformed";
98
+ }
99
+ }
100
+ function errorCode(error) {
101
+ return typeof error === "object" && error !== null ? error.code : void 0;
102
+ }
103
+ export {
104
+ CLIENT_ASSERTION_SIGNING_ALGORITHMS,
105
+ CLIENT_ASSERTION_TYPE_JWT_BEARER,
106
+ MAX_CLIENT_ASSERTION_LIFETIME_SECONDS,
107
+ verifyClientAssertion
108
+ };