@classytic/arc 2.28.0 → 2.31.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.
- package/LICENSE +1 -1
- package/README.md +7 -0
- package/TRADEMARK.md +22 -0
- package/dist/{BaseController-B65zbz9m.mjs → BaseController-De7GqHck.mjs} +25 -24
- package/dist/{EventTransport-QmY7A258.d.mts → EventTransport-2uVV34WU.d.mts} +1 -0
- package/dist/EventTransport-9mlTgqzE.mjs +104 -0
- package/dist/{HookSystem-C1vB_Gc9.mjs → HookSystem-BcmPyq5I.mjs} +16 -35
- package/dist/{QueryCache-DOMT_iq7.d.mts → QueryCache-DFA-QrU9.d.mts} +2 -1
- package/dist/{ResourceRegistry-y9Hnypus.mjs → ResourceRegistry-qq0mn2s9.mjs} +3 -2
- package/dist/{actionPermissions-CAphcmUG.mjs → actionPermissions-BE5NwaQk.mjs} +1 -0
- package/dist/audit/index.d.mts +3 -2
- package/dist/audit/index.mjs +3 -2
- package/dist/auth/audit.d.mts +1 -0
- package/dist/auth/audit.mjs +1 -0
- package/dist/auth/index.d.mts +5 -4
- package/dist/auth/index.mjs +6 -5
- package/dist/auth/redis-session.d.mts +2 -1
- package/dist/auth/redis-session.mjs +1 -0
- package/dist/authorizationDecision-ChvUQGG1.mjs +266 -0
- package/dist/{buildHandler-Dtwd8fdz.mjs → buildHandler-CDrCJzmB.mjs} +34 -7
- package/dist/cache/index.d.mts +4 -3
- package/dist/cache/index.mjs +4 -3
- package/dist/{caching-_NJeDd1_.mjs → caching-BFHA6Scf.mjs} +2 -1
- package/dist/cleanup/index.d.mts +4 -3
- package/dist/cleanup/index.mjs +9 -13
- package/dist/cli/commands/describe.d.mts +2 -1
- package/dist/cli/commands/describe.mjs +3 -2
- package/dist/cli/commands/docs.d.mts +1 -0
- package/dist/cli/commands/docs.mjs +3 -2
- package/dist/cli/commands/doctor.d.mts +1 -0
- package/dist/cli/commands/doctor.mjs +1 -0
- package/dist/cli/commands/generate.d.mts +2 -1
- package/dist/cli/commands/generate.mjs +2 -1
- package/dist/cli/commands/init.d.mts +2 -1
- package/dist/cli/commands/init.mjs +2 -1
- package/dist/cli/commands/introspect.d.mts +1 -0
- package/dist/cli/commands/introspect.mjs +2 -1
- package/dist/cli/index.d.mts +3 -2
- package/dist/cli/index.mjs +3 -2
- package/dist/{constants-DNre0wRg.mjs → constants-D3Dv4LAV.mjs} +1 -0
- package/dist/context/index.d.mts +1 -0
- package/dist/context/index.mjs +3 -2
- package/dist/core/index.d.mts +3 -2
- package/dist/core/index.mjs +7 -5
- package/dist/{core-BGa8TXJR.mjs → core-BGpIxINN.mjs} +4 -49
- package/dist/{createActionRouter-C-N7z2EL.mjs → createActionRouter-CDXEdasl.mjs} +8 -7
- package/dist/{createAggregationRouter-wzwFa_dW.mjs → createAggregationRouter-KrQDzx-k.mjs} +10 -22
- package/dist/{createApp-Du5G54TM.mjs → createApp-Df89BEni.mjs} +505 -209
- package/dist/defineAggregation-DbPPS8RI.mjs +48 -0
- package/dist/{defineResource-2zvVVpxg.mjs → defineResource-Bv6EtN1x.mjs} +90 -72
- package/dist/discovery/index.d.mts +1 -0
- package/dist/discovery/index.mjs +1 -0
- package/dist/docs/index.d.mts +3 -2
- package/dist/docs/index.mjs +3 -2
- package/dist/{elevation-C9s5hFP_.d.mts → elevation-BXCfVcNG.d.mts} +1 -0
- package/dist/{elevation-CIz1GjGm.mjs → elevation-D2l1mh4g.mjs} +4 -3
- package/dist/encryption/index.d.mts +2 -1
- package/dist/encryption/index.mjs +3 -2
- package/dist/{errorHandler-Bq2OeEQL.mjs → errorHandler-C5NeD6bT.mjs} +3 -2
- package/dist/{errorHandler-C6yv4ZTW.d.mts → errorHandler-CpYUJmPA.d.mts} +1 -0
- package/dist/{errors-DHcHVAgk.d.mts → errors-BGdVwP25.d.mts} +1 -0
- package/dist/{errors-DkO8Nk6-.mjs → errors-Cj42AntO.mjs} +1 -0
- package/dist/{eventPlugin-DrQ_FesK.mjs → eventPlugin-CkffEihm.mjs} +6 -106
- package/dist/{eventPlugin-Bg3cP2_u.d.mts → eventPlugin-GF5nnBIq.d.mts} +2 -1
- package/dist/events/index.d.mts +4 -3
- package/dist/events/index.mjs +17 -340
- package/dist/events/transports/redis-stream-entry.d.mts +2 -1
- package/dist/events/transports/redis-stream-entry.mjs +1 -0
- package/dist/events/transports/redis.d.mts +2 -1
- package/dist/events/transports/redis.mjs +1 -0
- package/dist/{externalPaths-BE6wFpYv.d.mts → externalPaths-CmGOxOtD.d.mts} +1 -0
- package/dist/factory/index.d.mts +9 -5
- package/dist/factory/index.mjs +7 -6
- package/dist/{fastify-augmentation-OzYGIiU1.d.mts → fastify-augmentation-zh0_AYHa.d.mts} +13 -4
- package/dist/{applyPermissionResult-BnyVE9eD.mjs → fields-CB5Cuzk9.mjs} +2 -107
- package/dist/{fields-D3lhgzhD.d.mts → fields-I_EeRWND.d.mts} +1 -0
- package/dist/{generate-BnsL9GBm.d.mts → generate-DCGuEbqI.d.mts} +1 -0
- package/dist/{generate-D0wZupBg.mjs → generate-EcA6ui4i.mjs} +2 -1
- package/dist/{headers-BvlQSDMB.mjs → headers-3zvE0rM3.mjs} +2 -1
- package/dist/{health-CB_m4S32.mjs → health-DjZYjM7H.mjs} +1 -0
- package/dist/hooks/index.d.mts +2 -1
- package/dist/hooks/index.mjs +2 -1
- package/dist/idempotency/index.d.mts +3 -2
- package/dist/idempotency/index.mjs +5 -4
- package/dist/idempotency/redis.d.mts +2 -1
- package/dist/idempotency/redis.mjs +1 -0
- package/dist/{index-CjVg-Epg.d.mts → index-Bc2ox8_U.d.mts} +6 -5
- package/dist/{index-CG4yqMDB.d.mts → index-C-481Zf2.d.mts} +74 -18
- package/dist/{index-BMnbzvtO.d.mts → index-CEJNZFtX.d.mts} +242 -24
- package/dist/index-CFThn1K9.d.mts +224 -0
- package/dist/{index-DPRH0Cme.d.mts → index-CpzxqePp.d.mts} +203 -97
- package/dist/index.d.mts +9 -8
- package/dist/index.mjs +11 -9
- package/dist/{init-tlRSt667.mjs → init-BEiNZBsJ.mjs} +19 -23
- package/dist/{init-BPEu8cs-.d.mts → init-Cscs4lab.d.mts} +1 -0
- package/dist/integrations/event-gateway.d.mts +3 -2
- package/dist/integrations/event-gateway.mjs +2 -1
- package/dist/integrations/index.d.mts +4 -3
- package/dist/integrations/index.mjs +1 -0
- package/dist/integrations/jobs/index.d.mts +2 -1
- package/dist/integrations/jobs/index.mjs +108 -32
- package/dist/integrations/mcp/index.d.mts +9 -9
- package/dist/integrations/mcp/index.mjs +2 -1
- package/dist/integrations/mcp/testing.d.mts +3 -2
- package/dist/integrations/mcp/testing.mjs +2 -2
- package/dist/integrations/streamline.d.mts +1 -0
- package/dist/integrations/streamline.mjs +3 -2
- package/dist/integrations/webhooks.d.mts +1 -0
- package/dist/integrations/webhooks.mjs +1 -0
- package/dist/integrations/websocket-pushref-redis.d.mts +2 -1
- package/dist/integrations/websocket-pushref-redis.mjs +1 -0
- package/dist/integrations/websocket-redis.d.mts +2 -1
- package/dist/integrations/websocket-redis.mjs +1 -0
- package/dist/integrations/websocket.d.mts +3 -2
- package/dist/integrations/websocket.mjs +1 -0
- package/dist/{interface-BGZCzOGL.d.mts → interface-BOk3YnTz.d.mts} +1 -0
- package/dist/{interface-Uk8ONJv7.d.mts → interface-DEWNOMza.d.mts} +1 -0
- package/dist/{interface-n5hpKg1d.mjs → interface-DYzM0q-u.mjs} +1 -0
- package/dist/{jsonBody-BlzAoGCe.mjs → jsonBody-BYbLDi5D.mjs} +2 -1
- package/dist/{keys-Cd316u_y.mjs → keys-C0_pa1tY.mjs} +1 -0
- package/dist/{loadResources-DpU8pfjV.mjs → loadResources-yawi9tAE.mjs} +2 -1
- package/dist/{loadResourcesFromEntry-kvGT6EcO.mjs → loadResourcesFromEntry-BAjYZonx.mjs} +2 -1
- package/dist/logger/index.d.mts +1 -0
- package/dist/logger/index.mjs +1 -0
- package/dist/{mcpPlugin-Cs6nRGCt.mjs → mcpPlugin-B_es0hiF.mjs} +52 -60
- package/dist/{memory-CmnzXE5Z.mjs → memory-DR6wpa9F.mjs} +2 -1
- package/dist/{metrics-fdxI5mn_.mjs → metrics-CUdw_wLB.mjs} +2 -1
- package/dist/middleware/index.d.mts +2 -1
- package/dist/middleware/index.mjs +3 -2
- package/dist/migrations/index.d.mts +1 -3
- package/dist/migrations/index.mjs +2 -4
- package/dist/module-0pFJA6YW.mjs +78 -0
- package/dist/{multipartBody-D0eBvkeq.mjs → multipartBody-wOgj_fnj.mjs} +1 -0
- package/dist/{openapi-BLV4OMXb.mjs → openapi-B2L4js1v.mjs} +6 -5
- package/dist/permissions/index.d.mts +5 -4
- package/dist/permissions/index.mjs +6 -4
- package/dist/{permissions-BrtiBKGs.mjs → permissions-L--QDAir.mjs} +518 -316
- package/dist/{pipe-BOLmGIxa.mjs → pipe-DRDNsI2T.mjs} +2 -1
- package/dist/pipeline/index.d.mts +2 -1
- package/dist/pipeline/index.mjs +2 -1
- package/dist/{pipeline-BGRnV-To.mjs → pipeline-UPQFatit.mjs} +7 -20
- package/dist/plugins/index.d.mts +8 -7
- package/dist/plugins/index.mjs +16 -15
- package/dist/plugins/response-cache.d.mts +1 -0
- package/dist/plugins/response-cache.mjs +2 -1
- package/dist/plugins/tracing-entry.d.mts +2 -1
- package/dist/plugins/tracing-entry.mjs +2 -1
- package/dist/{pluralize-BhrgwZb9.mjs → pluralize-O0FZgESl.mjs} +1 -0
- package/dist/{preloadResources-CM4uUaFv.d.mts → preloadResources-CyoJMSiO.d.mts} +117 -12
- package/dist/{preloadResources-DSY5HGpS.mjs → preloadResources-Dz6BjzM6.mjs} +1 -0
- package/dist/presets/filesUpload.d.mts +6 -5
- package/dist/presets/filesUpload.mjs +9 -11
- package/dist/presets/index.d.mts +15 -2
- package/dist/presets/index.mjs +2 -1
- package/dist/presets/multiTenant.d.mts +2 -1
- package/dist/presets/multiTenant.mjs +3 -2
- package/dist/presets/search.d.mts +3 -2
- package/dist/presets/search.mjs +2 -1
- package/dist/{presets-DwFDVKP0.mjs → presets-C4-g4_4P.mjs} +27 -10
- package/dist/projection-BHw6xlOQ.mjs +18 -0
- package/dist/{pushref-registry-BbcnpNTm.d.mts → pushref-registry-Dov9l4qE.d.mts} +1 -0
- package/dist/{queryCachePlugin-DSGuSVLW.mjs → queryCachePlugin-BZr8v46E.mjs} +5 -4
- package/dist/{queryCachePlugin-br4otiqF.d.mts → queryCachePlugin-BzqxconG.d.mts} +3 -2
- package/dist/{rateLimit-DrED-C4v.mjs → rateLimit-CMPY5Qms.mjs} +7 -3
- package/dist/{rateLimitKey-BoWRH3e7.mjs → rateLimitKey-Dn5JNmkj.mjs} +1 -0
- package/dist/{realtime-DEuDu9io.mjs → realtime-C5NoxWFY.mjs} +20 -8
- package/dist/{redis-UDtLaNj6.d.mts → redis-CduhKsJi.d.mts} +2 -1
- package/dist/{redis-stream-uIaauNpZ.d.mts → redis-stream-qN6A-RFv.d.mts} +2 -1
- package/dist/{registerRoute-DTp18Ah_.mjs → registerRoute-CBN84fc7.mjs} +5 -2
- package/dist/registry/index.d.mts +3 -2
- package/dist/registry/index.mjs +3 -2
- package/dist/{registry-9km_w1aP.mjs → registry-4213U4zb.mjs} +3 -2
- package/dist/{renewingLease-3cuQH7h8.mjs → renewingLease-Dll8mGgc.mjs} +1 -0
- package/dist/{replyHelpers-67tRawQZ.mjs → replyHelpers-DIiZKGUt.mjs} +2 -1
- package/dist/repositoryFilter-f9eAfq_l.mjs +45 -0
- package/dist/{requestContext-MrlJwECf.mjs → requestContext-2TxXOJ7T.mjs} +1 -0
- package/dist/{rolldown-runtime-8H4AJuhK.mjs → rolldown-runtime-CUsjNX9R.mjs} +1 -0
- package/dist/{schedules-CjOd2MG9.mjs → schedules-DdtlICTf.mjs} +3 -2
- package/dist/{schemaConverter-DJvodiHj.mjs → schemaConverter-D--wdJM-.mjs} +70 -17
- package/dist/{schemaIR-Ca7ySNPx.mjs → schemaIR-Bm2enbnh.mjs} +2 -1
- package/dist/schemas/index.d.mts +1 -0
- package/dist/schemas/index.mjs +1 -0
- package/dist/scim/index.d.mts +1 -0
- package/dist/scim/index.mjs +2 -1
- package/dist/scope/index.d.mts +3 -2
- package/dist/scope/index.mjs +5 -4
- package/dist/{scope-DfaPntpo.mjs → scope-DHx5Fous.mjs} +4 -3
- package/dist/{sessionManager-BHOM3N_0.d.mts → sessionManager-qimlKV0P.d.mts} +1 -0
- package/dist/{simpleEqualityMatcher-Cg05HPsn.mjs → simpleEqualityMatcher-DjQJ7FKA.mjs} +1 -0
- package/dist/{sse-BQ1w0dfl.mjs → sse-CUTo9y0X.mjs} +5 -4
- package/dist/{sseStream-BQ7Qaynp.mjs → sseStream-B_5XcVVd.mjs} +2 -1
- package/dist/{storage-DLUZ04kK.d.mts → storage-Cx9Sz3Ou.d.mts} +1 -0
- package/dist/{store-helpers-DY6xq4sM.mjs → store-helpers-D1MP_gRG.mjs} +1 -0
- package/dist/{streaming-BQcW6_Kq.mjs → streaming-PSZwi8JV.mjs} +1 -0
- package/dist/subscribe-helpers-C0Tb2aUp.mjs +340 -0
- package/dist/sync/changelog.d.mts +1 -0
- package/dist/sync/changelog.mjs +1 -0
- package/dist/testing/cleanupStoreContract.d.mts +2 -1
- package/dist/testing/cleanupStoreContract.mjs +1 -0
- package/dist/testing/index.d.mts +167 -12
- package/dist/testing/index.mjs +522 -205
- package/dist/testing/outboxStoreContract.d.mts +1 -0
- package/dist/testing/outboxStoreContract.mjs +1 -0
- package/dist/testing/storageContract.d.mts +2 -1
- package/dist/testing/storageContract.mjs +1 -0
- package/dist/{tracing-CsGKQJGg.d.mts → tracing-Dro5eH6j.d.mts} +1 -0
- package/dist/{transactionContext-PNdoyLLm.mjs → transactionContext-dAfBVUrk.mjs} +1 -0
- package/dist/{typeGuards-C9KXUly6.mjs → typeGuards-B0ryPo3I.mjs} +1 -0
- package/dist/types/index.d.mts +6 -5
- package/dist/types/index.mjs +1 -0
- package/dist/types/storage.d.mts +2 -1
- package/dist/types/storage.mjs +1 -0
- package/dist/{types-Dmw-6Qeo.d.mts → types-B7XeLEgK.d.mts} +127 -90
- package/dist/{types-Cc91nXuA.d.mts → types-ByHn9rEO.d.mts} +1 -0
- package/dist/{types-C_ZZRcD6.d.mts → types-C4QE8qnm.d.mts} +1 -0
- package/dist/{types-Cu6vVJmh.d.mts → types-CBgvkp8O.d.mts} +82 -12
- package/dist/{types-DjC-KUCz.d.mts → types-ChuShpCP.d.mts} +1 -0
- package/dist/{types-QFGc3Cjv.d.mts → types-CwcUQ610.d.mts} +2 -6
- package/dist/{types-CSyCxl2V.mjs → types-Cys0ko9Z.mjs} +4 -3
- package/dist/usage/index.d.mts +3 -2
- package/dist/usage/index.mjs +0 -0
- package/dist/{userHelpers-Cg_y3fBz.mjs → userHelpers-ChYJ6CdK.mjs} +1 -0
- package/dist/utils/index.d.mts +16 -10
- package/dist/utils/index.mjs +10 -9
- package/dist/{utils-taUVD4p3.mjs → utils-vL8BrDE2.mjs} +3 -2
- package/dist/{validate-Bk44F2yT.mjs → validate-_KbifpHF.mjs} +2 -1
- package/dist/{versioning-gKWyryT3.mjs → versioning-CHDTor3P.mjs} +3 -2
- package/dist/{versioning-DXgY5BUm.d.mts → versioning-D_rhHfZm.d.mts} +5 -2
- package/dist/{websocket-_Pd0CgR0.d.mts → websocket-BOXVggMf.d.mts} +2 -1
- package/package.json +15 -7
- package/skills/arc/SKILL.md +22 -8
- package/skills/arc/references/api-reference.md +4 -0
- package/skills/arc/references/auth.md +3 -0
- package/skills/arc/references/integrations.md +33 -0
- package/skills/arc/references/mcp.md +6 -7
- package/skills/arc/references/production.md +24 -25
- package/skills/arc-code-review/references/anti-patterns.md +3 -3
- package/dist/index-CZY4EGga.d.mts +0 -107
- package/dist/module-_-M7C5ES.mjs +0 -29
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { t as __exportAll } from "./rolldown-runtime-CUsjNX9R.mjs";
|
|
2
3
|
import { arcLog } from "./logger/index.mjs";
|
|
3
4
|
import { readdir } from "node:fs/promises";
|
|
4
5
|
import { dirname, join, resolve } from "node:path";
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { t as ResourceRegistry } from "./ResourceRegistry-qq0mn2s9.mjs";
|
|
2
3
|
import { resolve } from "node:path";
|
|
3
4
|
import { pathToFileURL } from "node:url";
|
|
4
5
|
//#region src/cli/utils/loadResourcesFromEntry.ts
|
package/dist/logger/index.d.mts
CHANGED
package/dist/logger/index.mjs
CHANGED
|
@@ -1,16 +1,19 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { t as
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { r as evaluatePermissionDecision } from "./authorizationDecision-ChvUQGG1.mjs";
|
|
3
|
+
import { p as isArcError, t as ArcError } from "./errors-Cj42AntO.mjs";
|
|
4
|
+
import { n as requireSingleHeaderValue } from "./headers-3zvE0rM3.mjs";
|
|
5
|
+
import { b as isElevated, c as getOrgId, g as getUserId, x as isMember } from "./types-Cys0ko9Z.mjs";
|
|
6
|
+
import { t as BaseController } from "./BaseController-De7GqHck.mjs";
|
|
7
|
+
import { i as resolveEffectiveRoles, t as applyFieldReadPermissions } from "./fields-CB5Cuzk9.mjs";
|
|
8
|
+
import { t as executePipeline } from "./pipe-DRDNsI2T.mjs";
|
|
9
|
+
import { t as buildRequestScopeProjection } from "./projection-BHw6xlOQ.mjs";
|
|
10
|
+
import { r as resolvePipelineSteps } from "./pipeline-UPQFatit.mjs";
|
|
11
|
+
import { n as validateAggregations } from "./validate-_KbifpHF.mjs";
|
|
12
|
+
import { n as executeAggregation } from "./buildHandler-CDrCJzmB.mjs";
|
|
13
|
+
import { t as pluralize } from "./pluralize-O0FZgESl.mjs";
|
|
14
|
+
import { t as resolveActionPermission } from "./actionPermissions-BE5NwaQk.mjs";
|
|
15
|
+
import { t as createIdempotencyResult } from "./interface-DYzM0q-u.mjs";
|
|
16
|
+
import { r as shouldRejectAdditionalProperties, t as normalizeSchemaIR } from "./schemaIR-Bm2enbnh.mjs";
|
|
14
17
|
import { isHttpError, toErrorContract } from "@classytic/repo-core/errors";
|
|
15
18
|
import { createHash, randomUUID } from "node:crypto";
|
|
16
19
|
import fp from "fastify-plugin";
|
|
@@ -181,9 +184,9 @@ function registerPrompt(server, prompt) {
|
|
|
181
184
|
* | delete | { id } | {} | undefined |
|
|
182
185
|
*
|
|
183
186
|
* **scopeOverride** — when a permission check (e.g. `requireApiKey()`) returns
|
|
184
|
-
* `
|
|
185
|
-
* context the same way CRUD/action routes do. This parameter follows the exact
|
|
186
|
-
* same non-downgrade rule as `
|
|
187
|
+
* an `AuthorizationDecision.scope`, the MCP tool handler must install it on the
|
|
188
|
+
* request context the same way CRUD/action routes do. This parameter follows the exact
|
|
189
|
+
* same non-downgrade rule as `applyAuthorizationDecision`: it overrides only when
|
|
187
190
|
* the session-derived scope is `public` (i.e. MCP called with `auth: false`).
|
|
188
191
|
* An authenticated session scope is never overwritten.
|
|
189
192
|
*/
|
|
@@ -353,39 +356,30 @@ function buildScope(auth) {
|
|
|
353
356
|
/**
|
|
354
357
|
* Evaluate a resource's permission check in MCP context.
|
|
355
358
|
*
|
|
356
|
-
* Returns the full normalized
|
|
357
|
-
* ALL side-effects (
|
|
358
|
-
* Returns `null` when no permission is defined (= allow, no side effects).
|
|
359
|
+
* Returns the full normalized {@link AuthorizationDecision} so the caller can
|
|
360
|
+
* honor ALL side-effects (data policy + scope) consistently with CRUD/action
|
|
361
|
+
* routes. Returns `null` when no permission is defined (= allow, no side effects).
|
|
359
362
|
*
|
|
360
|
-
*
|
|
361
|
-
*
|
|
362
|
-
*
|
|
363
|
+
* This is the MCP transport adapter: it builds a `PermissionContext` from the
|
|
364
|
+
* MCP session and delegates the actual decision to the ONE transport-neutral
|
|
365
|
+
* `evaluatePermissionDecision` — same normalization + exception mapping every
|
|
366
|
+
* surface uses, so MCP enforcement can't drift from HTTP/aggregation.
|
|
363
367
|
*/
|
|
364
368
|
async function evaluatePermission(check, session, resource, action, input) {
|
|
365
369
|
if (!check) return null;
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
user,
|
|
374
|
-
request: {
|
|
375
|
-
user,
|
|
376
|
-
headers: {},
|
|
377
|
-
params: {},
|
|
378
|
-
query: {},
|
|
379
|
-
body: input,
|
|
380
|
-
scope,
|
|
381
|
-
metadata: { _scope: scope }
|
|
382
|
-
},
|
|
370
|
+
return evaluatePermissionDecision(check, {
|
|
371
|
+
user: session ? {
|
|
372
|
+
id: session.userId,
|
|
373
|
+
_id: session.userId,
|
|
374
|
+
...session
|
|
375
|
+
} : null,
|
|
376
|
+
scope: buildScope(session),
|
|
383
377
|
resource,
|
|
384
378
|
action,
|
|
385
379
|
resourceId: typeof input.id === "string" ? input.id : void 0,
|
|
386
380
|
params: {},
|
|
387
381
|
data: input
|
|
388
|
-
})
|
|
382
|
+
});
|
|
389
383
|
}
|
|
390
384
|
/**
|
|
391
385
|
* Apply field-level READ permissions to an MCP tool payload — the same
|
|
@@ -399,7 +393,7 @@ async function evaluatePermission(check, session, resource, action, input) {
|
|
|
399
393
|
* `requireOrgRole()` and `BodySanitizer` bypass logic.
|
|
400
394
|
* - Effective roles = session roles ∪ org roles (member scope only),
|
|
401
395
|
* via the shared `resolveEffectiveRoles`.
|
|
402
|
-
* - `scopeOverride` (a `
|
|
396
|
+
* - `scopeOverride` (a decision's `scope`) follows the same
|
|
403
397
|
* non-downgrade rule as `buildRequestContext`: honored only when the
|
|
404
398
|
* session-derived scope is `public`.
|
|
405
399
|
*
|
|
@@ -639,14 +633,14 @@ async function invokeController(controller, op, input, options) {
|
|
|
639
633
|
status: 501
|
|
640
634
|
});
|
|
641
635
|
const permResult = await evaluatePermission(permissions, session, resourceName, actionName, input);
|
|
642
|
-
if (permResult &&
|
|
636
|
+
if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
|
|
643
637
|
resource: resourceName,
|
|
644
638
|
operation: actionName,
|
|
645
639
|
reason: permResult.reason,
|
|
646
640
|
session
|
|
647
641
|
});
|
|
648
642
|
const dispatch = async () => {
|
|
649
|
-
const reqCtx = buildRequestContext(input, session, op, permResult?.
|
|
643
|
+
const reqCtx = buildRequestContext(input, session, op, permResult?.policy, permResult?.scope, buildContextExtras(options));
|
|
650
644
|
const response = await method(reqCtx);
|
|
651
645
|
const data = applyMcpReadMasking(response.data, {
|
|
652
646
|
fields,
|
|
@@ -1217,7 +1211,7 @@ function createActionToolHandler(actionName, handler, permissions, resourceName,
|
|
|
1217
1211
|
});
|
|
1218
1212
|
}
|
|
1219
1213
|
const permResult = await evaluatePermission(permissions, session, resourceName, actionName, input);
|
|
1220
|
-
if (permResult &&
|
|
1214
|
+
if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
|
|
1221
1215
|
resource: resourceName,
|
|
1222
1216
|
operation: `action.${actionName}`,
|
|
1223
1217
|
reason: permResult.reason,
|
|
@@ -1226,7 +1220,7 @@ function createActionToolHandler(actionName, handler, permissions, resourceName,
|
|
|
1226
1220
|
const reqCtx = buildRequestContext({
|
|
1227
1221
|
...input,
|
|
1228
1222
|
action: actionName
|
|
1229
|
-
}, session, "action", permResult?.
|
|
1223
|
+
}, session, "action", permResult?.policy, permResult?.scope, contextExtras);
|
|
1230
1224
|
const id = idLess ? "" : typeof input.id === "string" ? input.id : "";
|
|
1231
1225
|
const { id: _discardId, ...data } = input;
|
|
1232
1226
|
try {
|
|
@@ -1319,7 +1313,7 @@ function createAggregationToolHandler(args) {
|
|
|
1319
1313
|
const { normalized, permissions, resourceName, repo, buildOptionsFromSession, fields } = args;
|
|
1320
1314
|
return async (input, ctx) => {
|
|
1321
1315
|
const permResult = await evaluatePermission(permissions, ctx.session, resourceName, `aggregation:${normalized.name}`, input);
|
|
1322
|
-
if (permResult &&
|
|
1316
|
+
if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
|
|
1323
1317
|
resource: resourceName,
|
|
1324
1318
|
operation: `aggregation:${normalized.name}`,
|
|
1325
1319
|
reason: permResult.reason,
|
|
@@ -1327,13 +1321,13 @@ function createAggregationToolHandler(args) {
|
|
|
1327
1321
|
});
|
|
1328
1322
|
const filterInput = input.filter ?? {};
|
|
1329
1323
|
const tenantOptions = buildOptionsFromSession(ctx.session);
|
|
1330
|
-
if (permResult?.filters) Object.assign(tenantOptions, { _policyFilters: permResult.filters });
|
|
1331
1324
|
const result = await executeAggregation(normalized, {
|
|
1332
1325
|
repo,
|
|
1333
1326
|
buildOptions: () => tenantOptions
|
|
1334
1327
|
}, {
|
|
1335
1328
|
query: filterInput,
|
|
1336
|
-
tenantOptions
|
|
1329
|
+
tenantOptions,
|
|
1330
|
+
policyFilter: permResult?.policy
|
|
1337
1331
|
});
|
|
1338
1332
|
if (result.status === 200) {
|
|
1339
1333
|
const body = result.body;
|
|
@@ -1641,7 +1635,7 @@ function mapJsonSchemaTypeToArcType(jsonType) {
|
|
|
1641
1635
|
*
|
|
1642
1636
|
* 1. `mcpHandler` (full bypass) — caller-supplied function owns the whole
|
|
1643
1637
|
* tool result; pipeline is not invoked.
|
|
1644
|
-
* 2. Function handler
|
|
1638
|
+
* 2. Function in `handler` (the arc pipeline) — arc's pipeline wrapper
|
|
1645
1639
|
* runs normally, and the envelope is serialized into the tool result.
|
|
1646
1640
|
* 3. String handler — looks up a method on the controller by name.
|
|
1647
1641
|
*/
|
|
@@ -1676,8 +1670,8 @@ function operationKindForRoute(method, hasId) {
|
|
|
1676
1670
|
*
|
|
1677
1671
|
* Enforces the same contract as the REST route:
|
|
1678
1672
|
* 1. **Permission evaluation** via the shared `evaluatePermission` — the
|
|
1679
|
-
* exact path CRUD and action MCP tools use.
|
|
1680
|
-
* `
|
|
1673
|
+
* exact path CRUD and action MCP tools use. Policy and scope from the
|
|
1674
|
+
* `AuthorizationDecision` thread through `buildRequestContext`.
|
|
1681
1675
|
* 2. **Pipeline integration** — function handlers run inside
|
|
1682
1676
|
* `executePipeline` with the same steps the HTTP path resolves.
|
|
1683
1677
|
* 3. **Controller dispatch** for string handlers.
|
|
@@ -1710,14 +1704,14 @@ function createCustomRouteHandler(route, controller, hasId, options) {
|
|
|
1710
1704
|
return async (input, _ctx) => {
|
|
1711
1705
|
const session = _ctx.session;
|
|
1712
1706
|
const permResult = await evaluatePermission(permissions, session, resourceName, operationName, input);
|
|
1713
|
-
if (permResult &&
|
|
1707
|
+
if (permResult && permResult.effect !== "allow") return permissionDeniedResult({
|
|
1714
1708
|
resource: resourceName,
|
|
1715
1709
|
operation: operationName,
|
|
1716
1710
|
reason: permResult.reason,
|
|
1717
1711
|
session
|
|
1718
1712
|
});
|
|
1719
1713
|
try {
|
|
1720
|
-
const reqCtx = buildRequestContext(input, session, operationKindForRoute(route.method, hasId), permResult?.
|
|
1714
|
+
const reqCtx = buildRequestContext(input, session, operationKindForRoute(route.method, hasId), permResult?.policy, permResult?.scope, contextExtras);
|
|
1721
1715
|
const emit = (envelope) => {
|
|
1722
1716
|
const data = applyMcpReadMasking(envelope.data, {
|
|
1723
1717
|
fields,
|
|
@@ -1879,10 +1873,10 @@ function resourceToTools(resource, config = {}) {
|
|
|
1879
1873
|
for (const route of resource.routes ?? []) {
|
|
1880
1874
|
if (route.mcp === false) continue;
|
|
1881
1875
|
const mcpHandler = route.mcpHandler;
|
|
1882
|
-
if (
|
|
1876
|
+
if (!(route.rawHandler === void 0) && !mcpHandler) continue;
|
|
1883
1877
|
if (!mcpHandler && typeof route.handler === "string" && !controller) continue;
|
|
1884
1878
|
const routeWithRef = route;
|
|
1885
|
-
let resolvedRouteHandler = route.handler;
|
|
1879
|
+
let resolvedRouteHandler = route.handler ?? route.rawHandler;
|
|
1886
1880
|
if (typeof routeWithRef.controllerMethod === "function" && !resolvedRouteHandler) {
|
|
1887
1881
|
if (!controller) continue;
|
|
1888
1882
|
const referenced = routeWithRef.controllerMethod(controller);
|
|
@@ -2197,7 +2191,6 @@ const mcpPluginImpl = async (fastify, options) => {
|
|
|
2197
2191
|
}
|
|
2198
2192
|
const enabledResources = filterResourcesForMcp(options.resources, {
|
|
2199
2193
|
expose: options.expose,
|
|
2200
|
-
include: options.include,
|
|
2201
2194
|
exclude: options.exclude
|
|
2202
2195
|
});
|
|
2203
2196
|
const fastifyAny = fastify;
|
|
@@ -2472,11 +2465,10 @@ function registerStatefulRoutes(fastify, prefix, options, cache, createServer, T
|
|
|
2472
2465
|
* same precedence rules without duplicating them.
|
|
2473
2466
|
*/
|
|
2474
2467
|
function filterResourcesForMcp(resources, inputs) {
|
|
2475
|
-
const { expose,
|
|
2476
|
-
if (expose &&
|
|
2477
|
-
if (expose && exclude) throw new Error("mcpPlugin: `expose` is default-deny — `exclude` is redundant. Drop `exclude` or switch to `include`/`exclude` for default-allow semantics.");
|
|
2468
|
+
const { expose, exclude } = inputs;
|
|
2469
|
+
if (expose && exclude) throw new Error("mcpPlugin: `expose` is default-deny (an allowlist) — `exclude` is redundant alongside it. Use `expose` to name what to surface, OR `exclude` to drop specific resources from the default-allow set. Not both.");
|
|
2478
2470
|
const eligible = resources.filter((r) => r.mcp !== false);
|
|
2479
|
-
const allow = expose
|
|
2471
|
+
const allow = expose;
|
|
2480
2472
|
if (allow) {
|
|
2481
2473
|
const allowSet = new Set(allow);
|
|
2482
2474
|
return eligible.filter((r) => allowSet.has(r.name));
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { t as __exportAll } from "./rolldown-runtime-CUsjNX9R.mjs";
|
|
2
3
|
//#region src/cache/memory.ts
|
|
3
4
|
var memory_exports = /* @__PURE__ */ __exportAll({ MemoryCacheStore: () => MemoryCacheStore });
|
|
4
5
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { t as __exportAll } from "./rolldown-runtime-CUsjNX9R.mjs";
|
|
2
3
|
import fp from "fastify-plugin";
|
|
3
4
|
//#region src/plugins/metrics.ts
|
|
4
5
|
var metrics_exports = /* @__PURE__ */ __exportAll({
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
|
|
2
|
+
import { I as MiddlewareHandler, L as RequestWithExtras, Q as MiddlewareConfig } from "../index-CpzxqePp.mjs";
|
|
2
3
|
import { RouteHandlerMethod } from "fastify";
|
|
3
4
|
//#region src/middleware/middleware.d.ts
|
|
4
5
|
interface NamedMiddleware {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import { t as
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { t as CRUD_OPERATIONS } from "../constants-D3Dv4LAV.mjs";
|
|
3
|
+
import { t as multipartBody } from "../multipartBody-wOgj_fnj.mjs";
|
|
3
4
|
//#region src/middleware/middleware.ts
|
|
4
5
|
/**
|
|
5
6
|
* Named Middleware — Priority-based, conditional middleware execution.
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
import { LockAdapter } from "@classytic/repo-core/lock";
|
|
2
3
|
//#region src/migrations/index.d.ts
|
|
3
4
|
interface Migration {
|
|
@@ -229,9 +230,6 @@ declare class MigrationRunner {
|
|
|
229
230
|
* Get all applied migrations
|
|
230
231
|
*/
|
|
231
232
|
getAppliedMigrations(): Promise<MigrationRecord[]>;
|
|
232
|
-
/**
|
|
233
|
-
* Get pending migrations
|
|
234
|
-
*/
|
|
235
233
|
getPendingMigrations(migrations: Migration[]): Promise<Migration[]>;
|
|
236
234
|
/**
|
|
237
235
|
* Check if migrations are up to date
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { t as startRenewingLease } from "../renewingLease-Dll8mGgc.mjs";
|
|
2
3
|
import { createHash, randomUUID } from "node:crypto";
|
|
3
4
|
//#region src/migrations/index.ts
|
|
4
5
|
/**
|
|
@@ -277,9 +278,6 @@ var MigrationRunner = class {
|
|
|
277
278
|
async getAppliedMigrations() {
|
|
278
279
|
return this.store.getApplied();
|
|
279
280
|
}
|
|
280
|
-
/**
|
|
281
|
-
* Get pending migrations
|
|
282
|
-
*/
|
|
283
281
|
async getPendingMigrations(migrations) {
|
|
284
282
|
const applied = await this.store.getApplied();
|
|
285
283
|
const appliedVersions = new Set(applied.map((m) => `${m.resource}:${m.version}`));
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
//#region src/factory/module/index.ts
|
|
3
|
+
/**
|
|
4
|
+
* Identity helper for authoring a typed module — mirrors `defineResource`.
|
|
5
|
+
* Gives inference + a single obvious construction site; does no work.
|
|
6
|
+
*
|
|
7
|
+
* `TExports` is inferred from the `bootstrap` return value, so a module
|
|
8
|
+
* author gets a typed public export for free:
|
|
9
|
+
*
|
|
10
|
+
* ```ts
|
|
11
|
+
* export const accountingModule = (deps: Deps) =>
|
|
12
|
+
* defineModule({
|
|
13
|
+
* name: "accounting",
|
|
14
|
+
* bootstrap: async () => createAccountingEngine(deps), // TExports inferred
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
function defineModule(module) {
|
|
19
|
+
return module;
|
|
20
|
+
}
|
|
21
|
+
function getModuleExports(fastify, name) {
|
|
22
|
+
const recorded = readModuleExports(fastify, name);
|
|
23
|
+
if (recorded === ABSENT) {
|
|
24
|
+
const available = fastify.arc?.modules ? Object.keys(fastify.arc.modules) : [];
|
|
25
|
+
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)"}.`);
|
|
26
|
+
}
|
|
27
|
+
return recorded;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Sentinel for "no entry recorded", distinct from a recorded `undefined`.
|
|
31
|
+
*
|
|
32
|
+
* registerResources never records an `undefined` export, so today the two
|
|
33
|
+
* cannot both happen — but encoding absence as `undefined` would make the
|
|
34
|
+
* optional/required accessors disagree the day that changes, and a required
|
|
35
|
+
* accessor that stops throwing is exactly the silent-null class of bug these
|
|
36
|
+
* helpers exist to remove.
|
|
37
|
+
*/
|
|
38
|
+
const ABSENT = Symbol("arc.module.absent");
|
|
39
|
+
/** The one honest read of the module-export map, shared by every accessor. */
|
|
40
|
+
function readModuleExports(fastify, name) {
|
|
41
|
+
const modules = fastify.arc?.modules;
|
|
42
|
+
if (!modules || !Object.hasOwn(modules, name)) return ABSENT;
|
|
43
|
+
return modules[name];
|
|
44
|
+
}
|
|
45
|
+
function getOptionalModuleExports(fastify, name) {
|
|
46
|
+
const recorded = readModuleExports(fastify, name);
|
|
47
|
+
return recorded === ABSENT ? void 0 : recorded;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Is a module's public export recorded yet? The predicate form of
|
|
51
|
+
* `getOptionalModuleExports`, for readiness gates (`ready: () => ...`) that
|
|
52
|
+
* should not have to reason about falsy-but-present exports.
|
|
53
|
+
*/
|
|
54
|
+
function hasModuleExports(fastify, name) {
|
|
55
|
+
return readModuleExports(fastify, name) !== ABSENT;
|
|
56
|
+
}
|
|
57
|
+
function lazyModuleExports(fastify, name) {
|
|
58
|
+
let resolved = ABSENT;
|
|
59
|
+
return () => {
|
|
60
|
+
if (resolved === ABSENT) resolved = readModuleExports(fastify, name);
|
|
61
|
+
return resolved === ABSENT ? void 0 : resolved;
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function lazyRequiredModuleExports(fastify, name) {
|
|
65
|
+
const states = fastify.arc?.moduleStates;
|
|
66
|
+
if (states !== void 0 && !Object.hasOwn(states, name)) {
|
|
67
|
+
const composed = Object.keys(states);
|
|
68
|
+
throw new Error(`[arc] lazyRequiredModuleExports("${name}"): module "${name}" is not in the composed module graph. A lazily-required module is still a HARD dependency — compose it (and declare it in the consumer's \`dependsOn\`), or use lazyModuleExports() if the integration is genuinely optional.
|
|
69
|
+
Composed modules: ${composed.length ? composed.join(", ") : "(none)"}.`);
|
|
70
|
+
}
|
|
71
|
+
let resolved = ABSENT;
|
|
72
|
+
return () => {
|
|
73
|
+
if (resolved === ABSENT) resolved = getModuleExports(fastify, name);
|
|
74
|
+
return resolved;
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
export { lazyModuleExports as a, hasModuleExports as i, getModuleExports as n, lazyRequiredModuleExports as o, getOptionalModuleExports as r, defineModule as t };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
import { n as
|
|
3
|
-
import {
|
|
4
|
-
import { t as
|
|
5
|
-
import { t as
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { n as getUserRoles } from "./userHelpers-ChYJ6CdK.mjs";
|
|
3
|
+
import { n as convertRouteSchema } from "./schemaConverter-D--wdJM-.mjs";
|
|
4
|
+
import { t as pluralize } from "./pluralize-O0FZgESl.mjs";
|
|
5
|
+
import { t as resolveActionPermission } from "./actionPermissions-BE5NwaQk.mjs";
|
|
6
|
+
import { t as buildActionBodySchema } from "./createActionRouter-CDXEdasl.mjs";
|
|
6
7
|
import fp from "fastify-plugin";
|
|
7
8
|
//#region src/docs/openapi/canonical-schemas.ts
|
|
8
9
|
/**
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
import { a as
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
|
|
2
|
+
import { a as UserBase, c as normalizeRoles, i as PermissionContext, n as DataPolicy, r as PermissionCheck, s as getUserRoles, t as AuthorizationDecision } from "../types-B7XeLEgK.mjs";
|
|
3
|
+
import { a as applyFieldWritePermissions, i as applyFieldReadPermissions, n as FieldPermissionMap, o as fields, r as FieldPermissionType, s as resolveEffectiveRoles, t as FieldPermission } from "../fields-I_EeRWND.mjs";
|
|
4
|
+
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 roles, K as requirePlatformRole, L as allOf, M as DynamicPermissionMatrix, N as DynamicPermissionMatrixConfig, O as describePermission, P as PermissionEventBus, Q as applyAuthorizationDecision, R as allow, S as modeSatisfies, T as AccessExplanation, U as not, V as deny, W as requireAuth, X as scopeOf, Y as when, Z as PermissionCheckReturn, _ 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 requireRoles, 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-CEJNZFtX.mjs";
|
|
5
|
+
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, 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, requirePlatformRole, requireRoles, requireScopeContext, requireServiceScope, requireTeamMembership, resolveEffectiveRoles, roles, scopeOf, when };
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
import { a as
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
/*! @classytic/arc v2.31.0 | MIT | https://classytic.com */
|
|
2
|
+
import { a as conjoinPolicyFilters, i as normalizeToDecision, r as evaluatePermissionDecision, t as applyAuthorizationDecision } from "../authorizationDecision-ChvUQGG1.mjs";
|
|
3
|
+
import { n as getUserRoles, r as normalizeRoles } from "../userHelpers-ChYJ6CdK.mjs";
|
|
4
|
+
import { i as resolveEffectiveRoles, n as applyFieldWritePermissions, r as fields, t as applyFieldReadPermissions } from "../fields-CB5Cuzk9.mjs";
|
|
5
|
+
import { A as allow, B as roles, C as requireScopeContext, D as requireDPoP, E as requireAgentScope, F as not, H as scopeOf, I as requireAuth, L as requireOwnership, M as anyOf, N as deny, O as requireMandate, P as denyAll, R as requirePlatformRole, S as requireOrgRole, T as requireTeamMembership, V as when, _ 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 requireRoles } from "../permissions-L--QDAir.mjs";
|
|
6
|
+
export { GRANT_MODES, adminOnly, allOf, allow, allowPublic, anyOf, applyAuthorizationDecision, applyFieldReadPermissions, applyFieldWritePermissions, 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, requirePlatformRole, requireRoles, requireScopeContext, requireServiceScope, requireTeamMembership, resolveEffectiveRoles, roles, scopeOf, when };
|