@classytic/arc 2.25.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/README.md +2 -0
  2. package/dist/{BaseController--M8EMzt0.mjs → BaseController-B5DwufbB.mjs} +15 -11
  3. package/dist/EventTransport-C6YA8xY9.mjs +103 -0
  4. package/dist/{HookSystem-C1vB_Gc9.mjs → HookSystem-WkIougo6.mjs} +15 -35
  5. package/dist/applyPermissionResult-Cf6zUCvb.mjs +257 -0
  6. package/dist/audit/index.d.mts +2 -2
  7. package/dist/audit/index.mjs +1 -1
  8. package/dist/auth/index.d.mts +2 -2
  9. package/dist/auth/index.mjs +1 -1
  10. package/dist/{buildHandler-Dtwd8fdz.mjs → buildHandler-BYS3Vkfz.mjs} +32 -6
  11. package/dist/cleanup/index.d.mts +313 -0
  12. package/dist/cleanup/index.mjs +1267 -0
  13. package/dist/cli/commands/describe.d.mts +1 -1
  14. package/dist/cli/commands/docs.mjs +1 -1
  15. package/dist/core/index.d.mts +2 -2
  16. package/dist/core/index.mjs +5 -3
  17. package/dist/core-poalJLvp.mjs +175 -0
  18. package/dist/{createActionRouter-B6GvAuAX.mjs → createActionRouter-BxuywVRB.mjs} +2 -2
  19. package/dist/{createAggregationRouter-wzwFa_dW.mjs → createAggregationRouter-BiY-lGdY.mjs} +7 -20
  20. package/dist/{preloadResources-DfyngIN9.mjs → createApp-CXrKFciH.mjs} +25 -76
  21. package/dist/defineAggregation-ufWjUwml.mjs +47 -0
  22. package/dist/{core-EUNu0u07.mjs → defineResource-CxWqDCAy.mjs} +36 -261
  23. package/dist/docs/index.d.mts +1 -1
  24. package/dist/docs/index.mjs +1 -1
  25. package/dist/{eventPlugin-DrQ_FesK.mjs → eventPlugin-D2NNR4py.mjs} +2 -103
  26. package/dist/events/index.d.mts +28 -2
  27. package/dist/events/index.mjs +24 -343
  28. package/dist/factory/index.d.mts +4 -3
  29. package/dist/factory/index.mjs +3 -1
  30. package/dist/{fastify-augmentation-dPNBVeIj.d.mts → fastify-augmentation-0WhPnUH7.d.mts} +3 -2
  31. package/dist/{applyPermissionResult-Tw4iXtlf.mjs → fields-CQ_7KQWw.mjs} +1 -97
  32. package/dist/hooks/index.d.mts +1 -1
  33. package/dist/hooks/index.mjs +1 -1
  34. package/dist/idempotency/index.mjs +1 -1
  35. package/dist/index-CCzVR-N3.d.mts +107 -0
  36. package/dist/{index-BMnbzvtO.d.mts → index-Ch16aAah.d.mts} +201 -21
  37. package/dist/{index-f4PTrk3B.d.mts → index-Cx7bro4R.d.mts} +4 -4
  38. package/dist/{index-DPRH0Cme.d.mts → index-Q5gzEIWY.d.mts} +97 -66
  39. package/dist/index.d.mts +6 -6
  40. package/dist/index.mjs +8 -6
  41. package/dist/integrations/index.d.mts +1 -1
  42. package/dist/integrations/mcp/index.d.mts +6 -6
  43. package/dist/integrations/mcp/index.mjs +1 -1
  44. package/dist/integrations/mcp/testing.d.mts +1 -1
  45. package/dist/integrations/mcp/testing.mjs +1 -1
  46. package/dist/{mcpPlugin-Cb7olw0j.mjs → mcpPlugin-nRzm5g2s.mjs} +36 -43
  47. package/dist/middleware/index.d.mts +1 -1
  48. package/dist/migrations/index.d.mts +0 -3
  49. package/dist/migrations/index.mjs +0 -3
  50. package/dist/module-_-M7C5ES.mjs +29 -0
  51. package/dist/{openapi-DrLtog_B.mjs → openapi-B8Vkbxbn.mjs} +1 -1
  52. package/dist/permissions/index.d.mts +3 -3
  53. package/dist/permissions/index.mjs +4 -3
  54. package/dist/{permissions-BrtiBKGs.mjs → permissions-Bfu_8y1U.mjs} +318 -289
  55. package/dist/pipeline/index.d.mts +1 -1
  56. package/dist/{pipeline-BN5G05rd.mjs → pipeline-BJnpkY9i.mjs} +4 -18
  57. package/dist/plugins/index.d.mts +4 -4
  58. package/dist/plugins/index.mjs +2 -2
  59. package/dist/plugins/tracing-entry.mjs +1 -1
  60. package/dist/{preloadResources-0oe-JSSS.d.mts → preloadResources-DCfa2egz.d.mts} +3 -2
  61. package/dist/preloadResources-DSY5HGpS.mjs +45 -0
  62. package/dist/presets/filesUpload.d.mts +2 -2
  63. package/dist/presets/filesUpload.mjs +1 -1
  64. package/dist/presets/index.d.mts +14 -2
  65. package/dist/presets/index.mjs +1 -1
  66. package/dist/presets/multiTenant.d.mts +1 -1
  67. package/dist/presets/search.d.mts +2 -2
  68. package/dist/presets/search.mjs +1 -1
  69. package/dist/{presets-DwFDVKP0.mjs → presets-CJOEXLuk.mjs} +25 -9
  70. package/dist/projection-UBDgfMwu.mjs +17 -0
  71. package/dist/{realtime-Cuw_deA-.mjs → realtime-B9nmIY5V.mjs} +2 -1
  72. package/dist/{registerRoute-v0Wb6Plt.mjs → registerRoute-JkxIEBJq.mjs} +3 -1
  73. package/dist/registry/index.d.mts +2 -2
  74. package/dist/registry/index.mjs +1 -1
  75. package/dist/{registry-vcOCtPij.mjs → registry-BYXUUg21.mjs} +16 -1
  76. package/dist/repositoryFilter-Dz8k3S4P.mjs +44 -0
  77. package/dist/subscribe-helpers-DfzsivM6.mjs +339 -0
  78. package/dist/testing/cleanupStoreContract.d.mts +10 -0
  79. package/dist/testing/cleanupStoreContract.mjs +375 -0
  80. package/dist/testing/index.d.mts +34 -5
  81. package/dist/testing/index.mjs +316 -211
  82. package/dist/testing/outboxStoreContract.d.mts +13 -0
  83. package/dist/testing/outboxStoreContract.mjs +247 -0
  84. package/dist/types/index.d.mts +3 -3
  85. package/dist/{types-QFGc3Cjv.d.mts → types-Bmmn-fO0.d.mts} +1 -1
  86. package/dist/types-C_ZZRcD6.d.mts +450 -0
  87. package/dist/{types-Dmw-6Qeo.d.mts → types-ChvvVNP8.d.mts} +93 -88
  88. package/dist/{index-KUoxjIq1.d.mts → types-D_n8L6VY.d.mts} +33 -106
  89. package/dist/usage/index.d.mts +1 -1
  90. package/dist/usage/index.mjs +0 -0
  91. package/dist/utils/index.d.mts +2 -5
  92. package/package.json +539 -524
@@ -1,12 +1,14 @@
1
1
  import { p as isArcError, t as ArcError } from "./errors-DkO8Nk6-.mjs";
2
2
  import { n as requireSingleHeaderValue } from "./headers-BvlQSDMB.mjs";
3
3
  import { b as isElevated, c as getOrgId, g as getUserId, x as isMember } from "./types-CSyCxl2V.mjs";
4
- import { t as BaseController } from "./BaseController--M8EMzt0.mjs";
5
- import { i as applyFieldReadPermissions, r as normalizePermissionResult, s as resolveEffectiveRoles } from "./applyPermissionResult-Tw4iXtlf.mjs";
4
+ import { t as BaseController } from "./BaseController-B5DwufbB.mjs";
5
+ import { i as evaluatePermissionDecision } from "./applyPermissionResult-Cf6zUCvb.mjs";
6
+ import { i as resolveEffectiveRoles, t as applyFieldReadPermissions } from "./fields-CQ_7KQWw.mjs";
6
7
  import { t as executePipeline } from "./pipe-BOLmGIxa.mjs";
7
- import { r as resolvePipelineSteps, u as buildRequestScopeProjection } from "./pipeline-BN5G05rd.mjs";
8
+ import { t as buildRequestScopeProjection } from "./projection-UBDgfMwu.mjs";
9
+ import { r as resolvePipelineSteps } from "./pipeline-BJnpkY9i.mjs";
8
10
  import { n as validateAggregations } from "./validate-Bk44F2yT.mjs";
9
- import { n as executeAggregation } from "./buildHandler-Dtwd8fdz.mjs";
11
+ import { n as executeAggregation } from "./buildHandler-BYS3Vkfz.mjs";
10
12
  import { t as pluralize } from "./pluralize-BhrgwZb9.mjs";
11
13
  import { t as resolveActionPermission } from "./actionPermissions-CAphcmUG.mjs";
12
14
  import { t as createIdempotencyResult } from "./interface-n5hpKg1d.mjs";
@@ -181,9 +183,9 @@ function registerPrompt(server, prompt) {
181
183
  * | delete | { id } | {} | undefined |
182
184
  *
183
185
  * **scopeOverride** — when a permission check (e.g. `requireApiKey()`) returns
184
- * `PermissionResult.scope`, the MCP tool handler must install it on the request
185
- * context the same way CRUD/action routes do. This parameter follows the exact
186
- * same non-downgrade rule as `applyPermissionResult`: it overrides only when
186
+ * an `AuthorizationDecision.scope`, the MCP tool handler must install it on the
187
+ * request context the same way CRUD/action routes do. This parameter follows the exact
188
+ * same non-downgrade rule as `applyAuthorizationDecision`: it overrides only when
187
189
  * the session-derived scope is `public` (i.e. MCP called with `auth: false`).
188
190
  * An authenticated session scope is never overwritten.
189
191
  */
@@ -353,39 +355,30 @@ function buildScope(auth) {
353
355
  /**
354
356
  * Evaluate a resource's permission check in MCP context.
355
357
  *
356
- * Returns the full normalized `PermissionResult` so the caller can honor
357
- * ALL side-effects (filters + scope) consistently with CRUD/action routes.
358
- * Returns `null` when no permission is defined (= allow, no side effects).
358
+ * Returns the full normalized {@link AuthorizationDecision} so the caller can
359
+ * honor ALL side-effects (data policy + scope) consistently with CRUD/action
360
+ * routes. Returns `null` when no permission is defined (= allow, no side effects).
359
361
  *
360
- * Promoting booleans to `PermissionResult` via the shared
361
- * `normalizePermissionResult` helper keeps the contract aligned with the
362
- * rest of arc — one normalization path for every call site.
362
+ * This is the MCP transport adapter: it builds a `PermissionContext` from the
363
+ * MCP session and delegates the actual decision to the ONE transport-neutral
364
+ * `evaluatePermissionDecision` — same normalization + exception mapping every
365
+ * surface uses, so MCP enforcement can't drift from HTTP/aggregation.
363
366
  */
364
367
  async function evaluatePermission(check, session, resource, action, input) {
365
368
  if (!check) return null;
366
- const user = session ? {
367
- id: session.userId,
368
- _id: session.userId,
369
- ...session
370
- } : null;
371
- const scope = buildScope(session);
372
- return normalizePermissionResult(await check({
373
- user,
374
- request: {
375
- user,
376
- headers: {},
377
- params: {},
378
- query: {},
379
- body: input,
380
- scope,
381
- metadata: { _scope: scope }
382
- },
369
+ return evaluatePermissionDecision(check, {
370
+ user: session ? {
371
+ id: session.userId,
372
+ _id: session.userId,
373
+ ...session
374
+ } : null,
375
+ scope: buildScope(session),
383
376
  resource,
384
377
  action,
385
378
  resourceId: typeof input.id === "string" ? input.id : void 0,
386
379
  params: {},
387
380
  data: input
388
- }));
381
+ });
389
382
  }
390
383
  /**
391
384
  * Apply field-level READ permissions to an MCP tool payload — the same
@@ -399,7 +392,7 @@ async function evaluatePermission(check, session, resource, action, input) {
399
392
  * `requireOrgRole()` and `BodySanitizer` bypass logic.
400
393
  * - Effective roles = session roles ∪ org roles (member scope only),
401
394
  * via the shared `resolveEffectiveRoles`.
402
- * - `scopeOverride` (a `PermissionResult.scope`) follows the same
395
+ * - `scopeOverride` (a decision's `scope`) follows the same
403
396
  * non-downgrade rule as `buildRequestContext`: honored only when the
404
397
  * session-derived scope is `public`.
405
398
  *
@@ -639,14 +632,14 @@ async function invokeController(controller, op, input, options) {
639
632
  status: 501
640
633
  });
641
634
  const permResult = await evaluatePermission(permissions, session, resourceName, actionName, input);
642
- if (permResult && !permResult.granted) return permissionDeniedResult({
635
+ if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
643
636
  resource: resourceName,
644
637
  operation: actionName,
645
638
  reason: permResult.reason,
646
639
  session
647
640
  });
648
641
  const dispatch = async () => {
649
- const reqCtx = buildRequestContext(input, session, op, permResult?.filters, permResult?.scope, buildContextExtras(options));
642
+ const reqCtx = buildRequestContext(input, session, op, permResult?.policy, permResult?.scope, buildContextExtras(options));
650
643
  const response = await method(reqCtx);
651
644
  const data = applyMcpReadMasking(response.data, {
652
645
  fields,
@@ -1217,7 +1210,7 @@ function createActionToolHandler(actionName, handler, permissions, resourceName,
1217
1210
  });
1218
1211
  }
1219
1212
  const permResult = await evaluatePermission(permissions, session, resourceName, actionName, input);
1220
- if (permResult && !permResult.granted) return permissionDeniedResult({
1213
+ if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
1221
1214
  resource: resourceName,
1222
1215
  operation: `action.${actionName}`,
1223
1216
  reason: permResult.reason,
@@ -1226,7 +1219,7 @@ function createActionToolHandler(actionName, handler, permissions, resourceName,
1226
1219
  const reqCtx = buildRequestContext({
1227
1220
  ...input,
1228
1221
  action: actionName
1229
- }, session, "action", permResult?.filters, permResult?.scope, contextExtras);
1222
+ }, session, "action", permResult?.policy, permResult?.scope, contextExtras);
1230
1223
  const id = idLess ? "" : typeof input.id === "string" ? input.id : "";
1231
1224
  const { id: _discardId, ...data } = input;
1232
1225
  try {
@@ -1319,7 +1312,7 @@ function createAggregationToolHandler(args) {
1319
1312
  const { normalized, permissions, resourceName, repo, buildOptionsFromSession, fields } = args;
1320
1313
  return async (input, ctx) => {
1321
1314
  const permResult = await evaluatePermission(permissions, ctx.session, resourceName, `aggregation:${normalized.name}`, input);
1322
- if (permResult && !permResult.granted) return permissionDeniedResult({
1315
+ if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
1323
1316
  resource: resourceName,
1324
1317
  operation: `aggregation:${normalized.name}`,
1325
1318
  reason: permResult.reason,
@@ -1327,13 +1320,13 @@ function createAggregationToolHandler(args) {
1327
1320
  });
1328
1321
  const filterInput = input.filter ?? {};
1329
1322
  const tenantOptions = buildOptionsFromSession(ctx.session);
1330
- if (permResult?.filters) Object.assign(tenantOptions, { _policyFilters: permResult.filters });
1331
1323
  const result = await executeAggregation(normalized, {
1332
1324
  repo,
1333
1325
  buildOptions: () => tenantOptions
1334
1326
  }, {
1335
1327
  query: filterInput,
1336
- tenantOptions
1328
+ tenantOptions,
1329
+ policyFilter: permResult?.policy
1337
1330
  });
1338
1331
  if (result.status === 200) {
1339
1332
  const body = result.body;
@@ -1676,8 +1669,8 @@ function operationKindForRoute(method, hasId) {
1676
1669
  *
1677
1670
  * Enforces the same contract as the REST route:
1678
1671
  * 1. **Permission evaluation** via the shared `evaluatePermission` — the
1679
- * exact path CRUD and action MCP tools use. Filters and scope from a
1680
- * `PermissionResult` thread through `buildRequestContext`.
1672
+ * exact path CRUD and action MCP tools use. Policy and scope from the
1673
+ * `AuthorizationDecision` thread through `buildRequestContext`.
1681
1674
  * 2. **Pipeline integration** — function handlers run inside
1682
1675
  * `executePipeline` with the same steps the HTTP path resolves.
1683
1676
  * 3. **Controller dispatch** for string handlers.
@@ -1710,14 +1703,14 @@ function createCustomRouteHandler(route, controller, hasId, options) {
1710
1703
  return async (input, _ctx) => {
1711
1704
  const session = _ctx.session;
1712
1705
  const permResult = await evaluatePermission(permissions, session, resourceName, operationName, input);
1713
- if (permResult && !permResult.granted) return permissionDeniedResult({
1706
+ if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
1714
1707
  resource: resourceName,
1715
1708
  operation: operationName,
1716
1709
  reason: permResult.reason,
1717
1710
  session
1718
1711
  });
1719
1712
  try {
1720
- const reqCtx = buildRequestContext(input, session, operationKindForRoute(route.method, hasId), permResult?.filters, permResult?.scope, contextExtras);
1713
+ const reqCtx = buildRequestContext(input, session, operationKindForRoute(route.method, hasId), permResult?.policy, permResult?.scope, contextExtras);
1721
1714
  const emit = (envelope) => {
1722
1715
  const data = applyMcpReadMasking(envelope.data, {
1723
1716
  fields,
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, L as RequestWithExtras, Q as MiddlewareConfig } from "../index-DPRH0Cme.mjs";
1
+ import { I as MiddlewareHandler, L as RequestWithExtras, Q as MiddlewareConfig } from "../index-Q5gzEIWY.mjs";
2
2
  import { RouteHandlerMethod } from "fastify";
3
3
  //#region src/middleware/middleware.d.ts
4
4
  interface NamedMiddleware {
@@ -229,9 +229,6 @@ declare class MigrationRunner {
229
229
  * Get all applied migrations
230
230
  */
231
231
  getAppliedMigrations(): Promise<MigrationRecord[]>;
232
- /**
233
- * Get pending migrations
234
- */
235
232
  getPendingMigrations(migrations: Migration[]): Promise<Migration[]>;
236
233
  /**
237
234
  * Check if migrations are up to date
@@ -277,9 +277,6 @@ var MigrationRunner = class {
277
277
  async getAppliedMigrations() {
278
278
  return this.store.getApplied();
279
279
  }
280
- /**
281
- * Get pending migrations
282
- */
283
280
  async getPendingMigrations(migrations) {
284
281
  const applied = await this.store.getApplied();
285
282
  const appliedVersions = new Set(applied.map((m) => `${m.resource}:${m.version}`));
@@ -0,0 +1,29 @@
1
+ //#region src/factory/module/index.ts
2
+ /**
3
+ * Identity helper for authoring a typed module — mirrors `defineResource`.
4
+ * Gives inference + a single obvious construction site; does no work.
5
+ *
6
+ * `TExports` is inferred from the `bootstrap` return value, so a module
7
+ * author gets a typed public export for free:
8
+ *
9
+ * ```ts
10
+ * export const accountingModule = (deps: Deps) =>
11
+ * defineModule({
12
+ * name: "accounting",
13
+ * bootstrap: async () => createAccountingEngine(deps), // TExports inferred
14
+ * });
15
+ * ```
16
+ */
17
+ function defineModule(module) {
18
+ return module;
19
+ }
20
+ function getModuleExports(fastify, name) {
21
+ const modules = fastify.arc?.modules;
22
+ if (!modules || !Object.hasOwn(modules, name)) {
23
+ const available = modules ? Object.keys(modules) : [];
24
+ throw new Error(`[arc] no public export recorded for module "${name}".\nA module's export is its bootstrap() return value; it is readable only AFTER that module's bootstrap ran (dependsOn / list order = init order).\nModules with recorded exports: ${available.length ? available.join(", ") : "(none)"}.`);
25
+ }
26
+ return modules[name];
27
+ }
28
+ //#endregion
29
+ export { getModuleExports as n, defineModule as t };
@@ -2,7 +2,7 @@ import { n as getUserRoles } from "./userHelpers-Cg_y3fBz.mjs";
2
2
  import { n as convertRouteSchema } from "./schemaConverter-DJvodiHj.mjs";
3
3
  import { t as pluralize } from "./pluralize-BhrgwZb9.mjs";
4
4
  import { t as resolveActionPermission } from "./actionPermissions-CAphcmUG.mjs";
5
- import { t as buildActionBodySchema } from "./createActionRouter-B6GvAuAX.mjs";
5
+ import { t as buildActionBodySchema } from "./createActionRouter-BxuywVRB.mjs";
6
6
  import fp from "fastify-plugin";
7
7
  //#region src/docs/openapi/canonical-schemas.ts
8
8
  /**
@@ -1,4 +1,4 @@
1
- import { i as UserBase, n as PermissionContext, o as getUserRoles, r as PermissionResult, s as normalizeRoles, t as PermissionCheck } from "../types-Dmw-6Qeo.mjs";
1
+ import { a as UserBase, c as normalizeRoles, i as PermissionContext, n as DataPolicy, r as PermissionCheck, s as getUserRoles, t as AuthorizationDecision } from "../types-ChvvVNP8.mjs";
2
2
  import { a as applyFieldWritePermissions, i as applyFieldReadPermissions, n as FieldPermissionMap, o as fields, r as FieldPermissionType, s as resolveEffectiveRoles, t as FieldPermission } from "../fields-D3lhgzhD.mjs";
3
- import { A as allOf, B as applyPermissionResult, C as requireGrant, D as PermissionEventBus, E as DynamicPermissionMatrixConfig, F as requireAuth, G as requireDPoP, H as RequireAgentScopeOptions, I as requireOwnership, K as requireMandate, L as requireRoles, M as anyOf, N as denyAll, O as createDynamicPermissionMatrix, P as not, R as roles, S as modeSatisfies, T as DynamicPermissionMatrix, U as RequireMandateOptions, V as normalizePermissionResult, W as requireAgentScope, _ as createRoleHierarchy, a as permissionMatrix, b as GrantResolution, c as publicReadAdminWrite, d as requireOrgMembership, f as requireOrgRole, g as RoleHierarchy, h as requireTeamMembership, i as ownerWithAdminBypass, j as allowPublic, k as createOrgPermissions, l as readOnly, m as requireServiceScope, n as authenticated, o as presets_d_exports, p as requireScopeContext, r as fullPublic, s as publicRead, t as adminOnly, u as requireOrgInScope, v as GRANT_MODES, w as ConnectEventsOptions, x as RequireGrantOptions, y as GrantMode, z as when } from "../index-BMnbzvtO.mjs";
4
- export { type ConnectEventsOptions, type DynamicPermissionMatrix, type DynamicPermissionMatrixConfig, type FieldPermission, type FieldPermissionMap, type FieldPermissionType, GRANT_MODES, type GrantMode, type GrantResolution, type PermissionCheck, type PermissionContext, type PermissionEventBus, type PermissionResult, type RequireAgentScopeOptions, type RequireGrantOptions, type RequireMandateOptions, type RoleHierarchy, type UserBase, adminOnly, allOf, allowPublic, anyOf, applyFieldReadPermissions, applyFieldWritePermissions, applyPermissionResult, authenticated, createDynamicPermissionMatrix, createOrgPermissions, createRoleHierarchy, denyAll, fields, fullPublic, getUserRoles, modeSatisfies, normalizePermissionResult, normalizeRoles, not, ownerWithAdminBypass, permissionMatrix, presets_d_exports as permissions, publicRead, publicReadAdminWrite, readOnly, requireAgentScope, requireAuth, requireDPoP, requireGrant, requireMandate, requireOrgInScope, requireOrgMembership, requireOrgRole, requireOwnership, requireRoles, requireScopeContext, requireServiceScope, requireTeamMembership, resolveEffectiveRoles, roles, when };
3
+ import { $ as evaluatePermissionDecision, A as explainAccess, B as anyOf, C as requireGrant, D as collectPublicSurface, E as PermissionRequirement, F as createDynamicPermissionMatrix, G as requireOwnership, H as denyAll, I as createOrgPermissions, J as when, K as requireRoles, L as allOf, M as DynamicPermissionMatrix, N as DynamicPermissionMatrixConfig, O as describePermission, P as PermissionEventBus, Q as applyPermissionResult, R as allow, S as modeSatisfies, T as AccessExplanation, U as not, V as deny, W as requireAuth, X as PermissionCheckReturn, Y as scopeOf, Z as applyAuthorizationDecision, _ as createRoleHierarchy, a as permissionMatrix, at as requireMandate, b as GrantResolution, c as publicReadAdminWrite, d as requireOrgMembership, et as normalizeToDecision, f as requireOrgRole, g as RoleHierarchy, h as requireTeamMembership, i as ownerWithAdminBypass, it as requireDPoP, j as ConnectEventsOptions, k as describePermissionMap, l as readOnly, m as requireServiceScope, n as authenticated, nt as RequireMandateOptions, o as presets_d_exports, p as requireScopeContext, q as roles, r as fullPublic, rt as requireAgentScope, s as publicRead, t as adminOnly, tt as RequireAgentScopeOptions, u as requireOrgInScope, v as GRANT_MODES, w as conjoinPolicyFilters, x as RequireGrantOptions, y as GrantMode, z as allowPublic } from "../index-Ch16aAah.mjs";
4
+ export { type AccessExplanation, type AuthorizationDecision, type ConnectEventsOptions, type DataPolicy, type DynamicPermissionMatrix, type DynamicPermissionMatrixConfig, type FieldPermission, type FieldPermissionMap, type FieldPermissionType, GRANT_MODES, type GrantMode, type GrantResolution, type PermissionCheck, type PermissionCheckReturn, type PermissionContext, type PermissionEventBus, type PermissionRequirement, type RequireAgentScopeOptions, type RequireGrantOptions, type RequireMandateOptions, type RoleHierarchy, type UserBase, adminOnly, allOf, allow, allowPublic, anyOf, applyAuthorizationDecision, applyFieldReadPermissions, applyFieldWritePermissions, applyPermissionResult, authenticated, collectPublicSurface, conjoinPolicyFilters, createDynamicPermissionMatrix, createOrgPermissions, createRoleHierarchy, deny, denyAll, describePermission, describePermissionMap, evaluatePermissionDecision, explainAccess, fields, fullPublic, getUserRoles, modeSatisfies, normalizeRoles, normalizeToDecision, not, ownerWithAdminBypass, permissionMatrix, presets_d_exports as permissions, publicRead, publicReadAdminWrite, readOnly, requireAgentScope, requireAuth, requireDPoP, requireGrant, requireMandate, requireOrgInScope, requireOrgMembership, requireOrgRole, requireOwnership, requireRoles, requireScopeContext, requireServiceScope, requireTeamMembership, resolveEffectiveRoles, roles, scopeOf, when };
@@ -1,4 +1,5 @@
1
1
  import { n as getUserRoles, r as normalizeRoles } from "../userHelpers-Cg_y3fBz.mjs";
2
- import { a as applyFieldWritePermissions, i as applyFieldReadPermissions, o as fields, r as normalizePermissionResult, s as resolveEffectiveRoles, t as applyPermissionResult } from "../applyPermissionResult-Tw4iXtlf.mjs";
3
- import { A as requireAuth, C as requireDPoP, D as anyOf, E as allowPublic, M as requireRoles, N as roles, O as denyAll, P as when, S as requireAgentScope, T as allOf, _ as requireOrgMembership, a as permissionMatrix, b as requireServiceScope, c as publicReadAdminWrite, d as GRANT_MODES, f as modeSatisfies, g as requireOrgInScope, h as createOrgPermissions, i as ownerWithAdminBypass, j as requireOwnership, k as not, l as readOnly, m as createDynamicPermissionMatrix, n as authenticated, o as presets_exports, p as requireGrant, r as fullPublic, s as publicRead, t as adminOnly, u as createRoleHierarchy, v as requireOrgRole, w as requireMandate, x as requireTeamMembership, y as requireScopeContext } from "../permissions-BrtiBKGs.mjs";
4
- export { GRANT_MODES, adminOnly, allOf, allowPublic, anyOf, applyFieldReadPermissions, applyFieldWritePermissions, applyPermissionResult, authenticated, createDynamicPermissionMatrix, createOrgPermissions, createRoleHierarchy, denyAll, fields, fullPublic, getUserRoles, modeSatisfies, normalizePermissionResult, normalizeRoles, not, ownerWithAdminBypass, permissionMatrix, presets_exports as permissions, publicRead, publicReadAdminWrite, readOnly, requireAgentScope, requireAuth, requireDPoP, requireGrant, requireMandate, requireOrgInScope, requireOrgMembership, requireOrgRole, requireOwnership, requireRoles, requireScopeContext, requireServiceScope, requireTeamMembership, resolveEffectiveRoles, roles, when };
2
+ import { a as normalizeToDecision, i as evaluatePermissionDecision, n as applyPermissionResult, o as conjoinPolicyFilters, t as applyAuthorizationDecision } from "../applyPermissionResult-Cf6zUCvb.mjs";
3
+ import { i as resolveEffectiveRoles, n as applyFieldWritePermissions, r as fields, t as applyFieldReadPermissions } from "../fields-CQ_7KQWw.mjs";
4
+ import { A as allow, B as when, C as requireScopeContext, D as requireDPoP, E as requireAgentScope, F as not, I as requireAuth, L as requireOwnership, M as anyOf, N as deny, O as requireMandate, P as denyAll, R as requireRoles, S as requireOrgRole, T as requireTeamMembership, V as scopeOf, _ as explainAccess, a as permissionMatrix, b as requireOrgInScope, c as publicReadAdminWrite, d as GRANT_MODES, f as modeSatisfies, g as describePermissionMap, h as describePermission, i as ownerWithAdminBypass, j as allowPublic, k as allOf, l as readOnly, m as collectPublicSurface, n as authenticated, o as presets_exports, p as requireGrant, r as fullPublic, s as publicRead, t as adminOnly, u as createRoleHierarchy, v as createDynamicPermissionMatrix, w as requireServiceScope, x as requireOrgMembership, y as createOrgPermissions, z as roles } from "../permissions-Bfu_8y1U.mjs";
5
+ export { GRANT_MODES, adminOnly, allOf, allow, allowPublic, anyOf, applyAuthorizationDecision, applyFieldReadPermissions, applyFieldWritePermissions, applyPermissionResult, authenticated, collectPublicSurface, conjoinPolicyFilters, createDynamicPermissionMatrix, createOrgPermissions, createRoleHierarchy, deny, denyAll, describePermission, describePermissionMap, evaluatePermissionDecision, explainAccess, fields, fullPublic, getUserRoles, modeSatisfies, normalizeRoles, normalizeToDecision, not, ownerWithAdminBypass, permissionMatrix, presets_exports as permissions, publicRead, publicReadAdminWrite, readOnly, requireAgentScope, requireAuth, requireDPoP, requireGrant, requireMandate, requireOrgInScope, requireOrgMembership, requireOrgRole, requireOwnership, requireRoles, requireScopeContext, requireServiceScope, requireTeamMembership, resolveEffectiveRoles, roles, scopeOf, when };