@jini-ai/cms 0.1.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 +201 -0
- package/README.md +84 -0
- package/dist/content-types/agent-tools.d.ts +65 -0
- package/dist/content-types/agent-tools.d.ts.map +1 -0
- package/dist/content-types/agent-tools.js +172 -0
- package/dist/content-types/agent-tools.js.map +1 -0
- package/dist/content-types/cleanup.d.ts +118 -0
- package/dist/content-types/cleanup.d.ts.map +1 -0
- package/dist/content-types/cleanup.js +65 -0
- package/dist/content-types/cleanup.js.map +1 -0
- package/dist/content-types/errors.d.ts +90 -0
- package/dist/content-types/errors.d.ts.map +1 -0
- package/dist/content-types/errors.js +119 -0
- package/dist/content-types/errors.js.map +1 -0
- package/dist/content-types/field-defs.d.ts +25 -0
- package/dist/content-types/field-defs.d.ts.map +1 -0
- package/dist/content-types/field-defs.js +155 -0
- package/dist/content-types/field-defs.js.map +1 -0
- package/dist/content-types/index-provisioning.d.ts +94 -0
- package/dist/content-types/index-provisioning.d.ts.map +1 -0
- package/dist/content-types/index-provisioning.js +133 -0
- package/dist/content-types/index-provisioning.js.map +1 -0
- package/dist/content-types/index.d.ts +63 -0
- package/dist/content-types/index.d.ts.map +1 -0
- package/dist/content-types/index.js +36 -0
- package/dist/content-types/index.js.map +1 -0
- package/dist/content-types/lifecycle-dispatch.d.ts +38 -0
- package/dist/content-types/lifecycle-dispatch.d.ts.map +1 -0
- package/dist/content-types/lifecycle-dispatch.js +28 -0
- package/dist/content-types/lifecycle-dispatch.js.map +1 -0
- package/dist/content-types/lifecycle.d.ts +104 -0
- package/dist/content-types/lifecycle.d.ts.map +1 -0
- package/dist/content-types/lifecycle.js +143 -0
- package/dist/content-types/lifecycle.js.map +1 -0
- package/dist/content-types/list.d.ts +44 -0
- package/dist/content-types/list.d.ts.map +1 -0
- package/dist/content-types/list.js +13 -0
- package/dist/content-types/list.js.map +1 -0
- package/dist/content-types/repo.memory.d.ts +72 -0
- package/dist/content-types/repo.memory.d.ts.map +1 -0
- package/dist/content-types/repo.memory.js +71 -0
- package/dist/content-types/repo.memory.js.map +1 -0
- package/dist/content-types/tool-registrations.d.ts +65 -0
- package/dist/content-types/tool-registrations.d.ts.map +1 -0
- package/dist/content-types/tool-registrations.js +180 -0
- package/dist/content-types/tool-registrations.js.map +1 -0
- package/dist/content-types/types.d.ts +78 -0
- package/dist/content-types/types.d.ts.map +1 -0
- package/dist/content-types/types.js +32 -0
- package/dist/content-types/types.js.map +1 -0
- package/dist/content-types/write-service.d.ts +141 -0
- package/dist/content-types/write-service.d.ts.map +1 -0
- package/dist/content-types/write-service.js +180 -0
- package/dist/content-types/write-service.js.map +1 -0
- package/dist/core/commands/change-set.d.ts +98 -0
- package/dist/core/commands/change-set.d.ts.map +1 -0
- package/dist/core/commands/change-set.js +2 -0
- package/dist/core/commands/change-set.js.map +1 -0
- package/dist/core/commands/command.d.ts +168 -0
- package/dist/core/commands/command.d.ts.map +1 -0
- package/dist/core/commands/command.js +173 -0
- package/dist/core/commands/command.js.map +1 -0
- package/dist/core/index.d.ts +45 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +43 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ports.d.ts +139 -0
- package/dist/core/ports.d.ts.map +1 -0
- package/dist/core/ports.js +2 -0
- package/dist/core/ports.js.map +1 -0
- package/dist/core/tools/registration-kit.d.ts +308 -0
- package/dist/core/tools/registration-kit.d.ts.map +1 -0
- package/dist/core/tools/registration-kit.js +381 -0
- package/dist/core/tools/registration-kit.js.map +1 -0
- package/dist/entries/agent-tools.d.ts +78 -0
- package/dist/entries/agent-tools.d.ts.map +1 -0
- package/dist/entries/agent-tools.js +158 -0
- package/dist/entries/agent-tools.js.map +1 -0
- package/dist/entries/errors.d.ts +43 -0
- package/dist/entries/errors.d.ts.map +1 -0
- package/dist/entries/errors.js +59 -0
- package/dist/entries/errors.js.map +1 -0
- package/dist/entries/field-validation.d.ts +70 -0
- package/dist/entries/field-validation.d.ts.map +1 -0
- package/dist/entries/field-validation.js +87 -0
- package/dist/entries/field-validation.js.map +1 -0
- package/dist/entries/index.d.ts +55 -0
- package/dist/entries/index.d.ts.map +1 -0
- package/dist/entries/index.js +38 -0
- package/dist/entries/index.js.map +1 -0
- package/dist/entries/lifecycle-dispatch.d.ts +15 -0
- package/dist/entries/lifecycle-dispatch.d.ts.map +1 -0
- package/dist/entries/lifecycle-dispatch.js +16 -0
- package/dist/entries/lifecycle-dispatch.js.map +1 -0
- package/dist/entries/list.d.ts +47 -0
- package/dist/entries/list.d.ts.map +1 -0
- package/dist/entries/list.js +12 -0
- package/dist/entries/list.js.map +1 -0
- package/dist/entries/repo.memory.d.ts +64 -0
- package/dist/entries/repo.memory.d.ts.map +1 -0
- package/dist/entries/repo.memory.js +73 -0
- package/dist/entries/repo.memory.js.map +1 -0
- package/dist/entries/tool-registrations.d.ts +52 -0
- package/dist/entries/tool-registrations.d.ts.map +1 -0
- package/dist/entries/tool-registrations.js +141 -0
- package/dist/entries/tool-registrations.js.map +1 -0
- package/dist/entries/types.d.ts +55 -0
- package/dist/entries/types.d.ts.map +1 -0
- package/dist/entries/types.js +2 -0
- package/dist/entries/types.js.map +1 -0
- package/dist/entries/write-service.d.ts +202 -0
- package/dist/entries/write-service.d.ts.map +1 -0
- package/dist/entries/write-service.js +204 -0
- package/dist/entries/write-service.js.map +1 -0
- package/dist/identity/admin-crud-service.d.ts +252 -0
- package/dist/identity/admin-crud-service.d.ts.map +1 -0
- package/dist/identity/admin-crud-service.js +437 -0
- package/dist/identity/admin-crud-service.js.map +1 -0
- package/dist/identity/agent-tool-input.d.ts +58 -0
- package/dist/identity/agent-tool-input.d.ts.map +1 -0
- package/dist/identity/agent-tool-input.js +126 -0
- package/dist/identity/agent-tool-input.js.map +1 -0
- package/dist/identity/agent-tools.d.ts +101 -0
- package/dist/identity/agent-tools.d.ts.map +1 -0
- package/dist/identity/agent-tools.js +290 -0
- package/dist/identity/agent-tools.js.map +1 -0
- package/dist/identity/auth-service.d.ts +87 -0
- package/dist/identity/auth-service.d.ts.map +1 -0
- package/dist/identity/auth-service.js +141 -0
- package/dist/identity/auth-service.js.map +1 -0
- package/dist/identity/authorize.d.ts +90 -0
- package/dist/identity/authorize.d.ts.map +1 -0
- package/dist/identity/authorize.js +94 -0
- package/dist/identity/authorize.js.map +1 -0
- package/dist/identity/grant-service.d.ts +198 -0
- package/dist/identity/grant-service.d.ts.map +1 -0
- package/dist/identity/grant-service.js +361 -0
- package/dist/identity/grant-service.js.map +1 -0
- package/dist/identity/hasher.d.ts +39 -0
- package/dist/identity/hasher.d.ts.map +1 -0
- package/dist/identity/hasher.js +39 -0
- package/dist/identity/hasher.js.map +1 -0
- package/dist/identity/index.d.ts +59 -0
- package/dist/identity/index.d.ts.map +1 -0
- package/dist/identity/index.js +51 -0
- package/dist/identity/index.js.map +1 -0
- package/dist/identity/password-policy.d.ts +58 -0
- package/dist/identity/password-policy.d.ts.map +1 -0
- package/dist/identity/password-policy.js +67 -0
- package/dist/identity/password-policy.js.map +1 -0
- package/dist/identity/permission-migrations.d.ts +86 -0
- package/dist/identity/permission-migrations.d.ts.map +1 -0
- package/dist/identity/permission-migrations.js +67 -0
- package/dist/identity/permission-migrations.js.map +1 -0
- package/dist/identity/permissions.d.ts +35 -0
- package/dist/identity/permissions.d.ts.map +1 -0
- package/dist/identity/permissions.js +603 -0
- package/dist/identity/permissions.js.map +1 -0
- package/dist/identity/ports.d.ts +201 -0
- package/dist/identity/ports.d.ts.map +1 -0
- package/dist/identity/ports.js +2 -0
- package/dist/identity/ports.js.map +1 -0
- package/dist/identity/repo.memory.d.ts +164 -0
- package/dist/identity/repo.memory.d.ts.map +1 -0
- package/dist/identity/repo.memory.js +224 -0
- package/dist/identity/repo.memory.js.map +1 -0
- package/dist/identity/seed.d.ts +42 -0
- package/dist/identity/seed.d.ts.map +1 -0
- package/dist/identity/seed.js +277 -0
- package/dist/identity/seed.js.map +1 -0
- package/dist/identity/tool-registrations.d.ts +50 -0
- package/dist/identity/tool-registrations.d.ts.map +1 -0
- package/dist/identity/tool-registrations.js +419 -0
- package/dist/identity/tool-registrations.js.map +1 -0
- package/dist/identity/types.d.ts +185 -0
- package/dist/identity/types.d.ts.map +1 -0
- package/dist/identity/types.js +64 -0
- package/dist/identity/types.js.map +1 -0
- package/dist/identity/username.d.ts +12 -0
- package/dist/identity/username.d.ts.map +1 -0
- package/dist/identity/username.js +14 -0
- package/dist/identity/username.js.map +1 -0
- package/dist/media/agent-tools.d.ts +66 -0
- package/dist/media/agent-tools.d.ts.map +1 -0
- package/dist/media/agent-tools.js +131 -0
- package/dist/media/agent-tools.js.map +1 -0
- package/dist/media/blob-gc-lock.d.ts +37 -0
- package/dist/media/blob-gc-lock.d.ts.map +1 -0
- package/dist/media/blob-gc-lock.js +55 -0
- package/dist/media/blob-gc-lock.js.map +1 -0
- package/dist/media/blob-gc.d.ts +246 -0
- package/dist/media/blob-gc.d.ts.map +1 -0
- package/dist/media/blob-gc.js +254 -0
- package/dist/media/blob-gc.js.map +1 -0
- package/dist/media/blob-key.d.ts +28 -0
- package/dist/media/blob-key.d.ts.map +1 -0
- package/dist/media/blob-key.js +11 -0
- package/dist/media/blob-key.js.map +1 -0
- package/dist/media/blob-store.fs.d.ts +23 -0
- package/dist/media/blob-store.fs.d.ts.map +1 -0
- package/dist/media/blob-store.fs.js +48 -0
- package/dist/media/blob-store.fs.js.map +1 -0
- package/dist/media/blob-store.memory.d.ts +22 -0
- package/dist/media/blob-store.memory.d.ts.map +1 -0
- package/dist/media/blob-store.memory.js +23 -0
- package/dist/media/blob-store.memory.js.map +1 -0
- package/dist/media/content-type-sniffer.d.ts +49 -0
- package/dist/media/content-type-sniffer.d.ts.map +1 -0
- package/dist/media/content-type-sniffer.js +141 -0
- package/dist/media/content-type-sniffer.js.map +1 -0
- package/dist/media/image-transformer.d.ts +45 -0
- package/dist/media/image-transformer.d.ts.map +1 -0
- package/dist/media/image-transformer.js +23 -0
- package/dist/media/image-transformer.js.map +1 -0
- package/dist/media/image-transformer.sharp.d.ts +26 -0
- package/dist/media/image-transformer.sharp.d.ts.map +1 -0
- package/dist/media/image-transformer.sharp.js +91 -0
- package/dist/media/image-transformer.sharp.js.map +1 -0
- package/dist/media/index.d.ts +43 -0
- package/dist/media/index.d.ts.map +1 -0
- package/dist/media/index.js +31 -0
- package/dist/media/index.js.map +1 -0
- package/dist/media/media-service.d.ts +244 -0
- package/dist/media/media-service.d.ts.map +1 -0
- package/dist/media/media-service.js +345 -0
- package/dist/media/media-service.js.map +1 -0
- package/dist/media/ports.d.ts +142 -0
- package/dist/media/ports.d.ts.map +1 -0
- package/dist/media/ports.js +2 -0
- package/dist/media/ports.js.map +1 -0
- package/dist/media/rendition-service.d.ts +66 -0
- package/dist/media/rendition-service.d.ts.map +1 -0
- package/dist/media/rendition-service.js +135 -0
- package/dist/media/rendition-service.js.map +1 -0
- package/dist/media/repo.memory.d.ts +107 -0
- package/dist/media/repo.memory.d.ts.map +1 -0
- package/dist/media/repo.memory.js +131 -0
- package/dist/media/repo.memory.js.map +1 -0
- package/dist/media/tool-registrations.d.ts +42 -0
- package/dist/media/tool-registrations.d.ts.map +1 -0
- package/dist/media/tool-registrations.js +121 -0
- package/dist/media/tool-registrations.js.map +1 -0
- package/dist/media/transform-lock.d.ts +36 -0
- package/dist/media/transform-lock.d.ts.map +1 -0
- package/dist/media/transform-lock.js +50 -0
- package/dist/media/transform-lock.js.map +1 -0
- package/dist/media/transform-registry.d.ts +103 -0
- package/dist/media/transform-registry.d.ts.map +1 -0
- package/dist/media/transform-registry.js +87 -0
- package/dist/media/transform-registry.js.map +1 -0
- package/dist/media/transform-types.d.ts +82 -0
- package/dist/media/transform-types.d.ts.map +1 -0
- package/dist/media/transform-types.js +47 -0
- package/dist/media/transform-types.js.map +1 -0
- package/dist/media/types.d.ts +150 -0
- package/dist/media/types.d.ts.map +1 -0
- package/dist/media/types.js +26 -0
- package/dist/media/types.js.map +1 -0
- package/dist/navigation/agent-tools.d.ts +90 -0
- package/dist/navigation/agent-tools.d.ts.map +1 -0
- package/dist/navigation/agent-tools.js +225 -0
- package/dist/navigation/agent-tools.js.map +1 -0
- package/dist/navigation/contracts.d.ts +98 -0
- package/dist/navigation/contracts.d.ts.map +1 -0
- package/dist/navigation/contracts.js +70 -0
- package/dist/navigation/contracts.js.map +1 -0
- package/dist/navigation/index.d.ts +39 -0
- package/dist/navigation/index.d.ts.map +1 -0
- package/dist/navigation/index.js +30 -0
- package/dist/navigation/index.js.map +1 -0
- package/dist/navigation/menu-service.d.ts +256 -0
- package/dist/navigation/menu-service.d.ts.map +1 -0
- package/dist/navigation/menu-service.js +382 -0
- package/dist/navigation/menu-service.js.map +1 -0
- package/dist/navigation/ports.d.ts +147 -0
- package/dist/navigation/ports.d.ts.map +1 -0
- package/dist/navigation/ports.js +2 -0
- package/dist/navigation/ports.js.map +1 -0
- package/dist/navigation/read-model.d.ts +11 -0
- package/dist/navigation/read-model.d.ts.map +1 -0
- package/dist/navigation/read-model.js +27 -0
- package/dist/navigation/read-model.js.map +1 -0
- package/dist/navigation/reconcile.d.ts +57 -0
- package/dist/navigation/reconcile.d.ts.map +1 -0
- package/dist/navigation/reconcile.js +33 -0
- package/dist/navigation/reconcile.js.map +1 -0
- package/dist/navigation/repo.memory.d.ts +137 -0
- package/dist/navigation/repo.memory.d.ts.map +1 -0
- package/dist/navigation/repo.memory.js +95 -0
- package/dist/navigation/repo.memory.js.map +1 -0
- package/dist/navigation/resolver.d.ts +110 -0
- package/dist/navigation/resolver.d.ts.map +1 -0
- package/dist/navigation/resolver.js +131 -0
- package/dist/navigation/resolver.js.map +1 -0
- package/dist/navigation/tool-registrations.d.ts +43 -0
- package/dist/navigation/tool-registrations.d.ts.map +1 -0
- package/dist/navigation/tool-registrations.js +126 -0
- package/dist/navigation/tool-registrations.js.map +1 -0
- package/dist/navigation/types.d.ts +207 -0
- package/dist/navigation/types.d.ts.map +1 -0
- package/dist/navigation/types.js +14 -0
- package/dist/navigation/types.js.map +1 -0
- package/dist/presentation/index.d.ts +15 -0
- package/dist/presentation/index.d.ts.map +1 -0
- package/dist/presentation/index.js +15 -0
- package/dist/presentation/index.js.map +1 -0
- package/dist/presentation/presentation.d.ts +72 -0
- package/dist/presentation/presentation.d.ts.map +1 -0
- package/dist/presentation/presentation.js +51 -0
- package/dist/presentation/presentation.js.map +1 -0
- package/dist/presentation/repo.memory.d.ts +9 -0
- package/dist/presentation/repo.memory.d.ts.map +1 -0
- package/dist/presentation/repo.memory.js +21 -0
- package/dist/presentation/repo.memory.js.map +1 -0
- package/dist/server/index.d.ts +28 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +28 -0
- package/dist/server/index.js.map +1 -0
- package/dist/settings/agent-tools.d.ts +83 -0
- package/dist/settings/agent-tools.d.ts.map +1 -0
- package/dist/settings/agent-tools.js +200 -0
- package/dist/settings/agent-tools.js.map +1 -0
- package/dist/settings/agent-writable-preferences.d.ts +67 -0
- package/dist/settings/agent-writable-preferences.d.ts.map +1 -0
- package/dist/settings/agent-writable-preferences.js +144 -0
- package/dist/settings/agent-writable-preferences.js.map +1 -0
- package/dist/settings/change-feed.d.ts +74 -0
- package/dist/settings/change-feed.d.ts.map +1 -0
- package/dist/settings/change-feed.js +61 -0
- package/dist/settings/change-feed.js.map +1 -0
- package/dist/settings/definitions-dispatch.d.ts +51 -0
- package/dist/settings/definitions-dispatch.d.ts.map +1 -0
- package/dist/settings/definitions-dispatch.js +86 -0
- package/dist/settings/definitions-dispatch.js.map +1 -0
- package/dist/settings/dictionaries/index.d.ts +45 -0
- package/dist/settings/dictionaries/index.d.ts.map +1 -0
- package/dist/settings/dictionaries/index.js +69 -0
- package/dist/settings/dictionaries/index.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ar.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.ar.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ar.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.ar.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.bn.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.bn.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.bn.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.bn.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.de.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.de.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.de.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.de.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.es.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.es.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.es.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.es.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.fa.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.fa.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.fa.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.fa.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.fr.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.fr.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.fr.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.fr.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.hi.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.hi.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.hi.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.hi.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.hu.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.hu.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.hu.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.hu.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.id.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.id.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.id.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.id.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.it.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.it.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.it.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.it.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ja.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.ja.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ja.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.ja.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ko.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.ko.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ko.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.ko.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.pl.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.pl.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.pl.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.pl.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.pt-BR.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.pt-BR.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.pt-BR.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.pt-BR.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ru.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.ru.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ru.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.ru.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.th.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.th.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.th.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.th.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.tr.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.tr.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.tr.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.tr.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.uk.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.uk.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.uk.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.uk.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ur.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.ur.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.ur.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.ur.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.zh-CN.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.zh-CN.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.zh-CN.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.zh-CN.js.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.zh-TW.d.ts +3 -0
- package/dist/settings/dictionaries/settings-dialog.zh-TW.d.ts.map +1 -0
- package/dist/settings/dictionaries/settings-dialog.zh-TW.js +28 -0
- package/dist/settings/dictionaries/settings-dialog.zh-TW.js.map +1 -0
- package/dist/settings/ensure-definitions.d.ts +88 -0
- package/dist/settings/ensure-definitions.d.ts.map +1 -0
- package/dist/settings/ensure-definitions.js +91 -0
- package/dist/settings/ensure-definitions.js.map +1 -0
- package/dist/settings/errors.d.ts +36 -0
- package/dist/settings/errors.d.ts.map +1 -0
- package/dist/settings/errors.js +40 -0
- package/dist/settings/errors.js.map +1 -0
- package/dist/settings/index.d.ts +37 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +36 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/ports.d.ts +117 -0
- package/dist/settings/ports.d.ts.map +1 -0
- package/dist/settings/ports.js +2 -0
- package/dist/settings/ports.js.map +1 -0
- package/dist/settings/purge-service.d.ts +53 -0
- package/dist/settings/purge-service.d.ts.map +1 -0
- package/dist/settings/purge-service.js +105 -0
- package/dist/settings/purge-service.js.map +1 -0
- package/dist/settings/repo.memory.d.ts +119 -0
- package/dist/settings/repo.memory.d.ts.map +1 -0
- package/dist/settings/repo.memory.js +199 -0
- package/dist/settings/repo.memory.js.map +1 -0
- package/dist/settings/settings.d.ts +124 -0
- package/dist/settings/settings.d.ts.map +1 -0
- package/dist/settings/settings.js +238 -0
- package/dist/settings/settings.js.map +1 -0
- package/dist/settings/tool-registrations.d.ts +56 -0
- package/dist/settings/tool-registrations.d.ts.map +1 -0
- package/dist/settings/tool-registrations.js +240 -0
- package/dist/settings/tool-registrations.js.map +1 -0
- package/dist/settings/types.d.ts +125 -0
- package/dist/settings/types.d.ts.map +1 -0
- package/dist/settings/types.js +3 -0
- package/dist/settings/types.js.map +1 -0
- package/dist/settings/ui-tab-definitions.d.ts +41 -0
- package/dist/settings/ui-tab-definitions.d.ts.map +1 -0
- package/dist/settings/ui-tab-definitions.js +148 -0
- package/dist/settings/ui-tab-definitions.js.map +1 -0
- package/dist/settings/write-service.d.ts +314 -0
- package/dist/settings/write-service.d.ts.map +1 -0
- package/dist/settings/write-service.js +677 -0
- package/dist/settings/write-service.js.map +1 -0
- package/dist/taxonomy/agent-tools.d.ts +76 -0
- package/dist/taxonomy/agent-tools.d.ts.map +1 -0
- package/dist/taxonomy/agent-tools.js +178 -0
- package/dist/taxonomy/agent-tools.js.map +1 -0
- package/dist/taxonomy/content-lookup.d.ts +45 -0
- package/dist/taxonomy/content-lookup.d.ts.map +1 -0
- package/dist/taxonomy/content-lookup.js +9 -0
- package/dist/taxonomy/content-lookup.js.map +1 -0
- package/dist/taxonomy/index.d.ts +38 -0
- package/dist/taxonomy/index.d.ts.map +1 -0
- package/dist/taxonomy/index.js +38 -0
- package/dist/taxonomy/index.js.map +1 -0
- package/dist/taxonomy/list.d.ts +39 -0
- package/dist/taxonomy/list.d.ts.map +1 -0
- package/dist/taxonomy/list.js +19 -0
- package/dist/taxonomy/list.js.map +1 -0
- package/dist/taxonomy/merge-term.d.ts +94 -0
- package/dist/taxonomy/merge-term.d.ts.map +1 -0
- package/dist/taxonomy/merge-term.js +65 -0
- package/dist/taxonomy/merge-term.js.map +1 -0
- package/dist/taxonomy/repo.memory.d.ts +160 -0
- package/dist/taxonomy/repo.memory.d.ts.map +1 -0
- package/dist/taxonomy/repo.memory.js +171 -0
- package/dist/taxonomy/repo.memory.js.map +1 -0
- package/dist/taxonomy/validation-chain.d.ts +114 -0
- package/dist/taxonomy/validation-chain.d.ts.map +1 -0
- package/dist/taxonomy/validation-chain.js +152 -0
- package/dist/taxonomy/validation-chain.js.map +1 -0
- package/dist/taxonomy/write-service.d.ts +387 -0
- package/dist/taxonomy/write-service.d.ts.map +1 -0
- package/dist/taxonomy/write-service.js +350 -0
- package/dist/taxonomy/write-service.js.map +1 -0
- package/dist/workspace/agent-tools.d.ts +67 -0
- package/dist/workspace/agent-tools.d.ts.map +1 -0
- package/dist/workspace/agent-tools.js +103 -0
- package/dist/workspace/agent-tools.js.map +1 -0
- package/dist/workspace/create.d.ts +116 -0
- package/dist/workspace/create.d.ts.map +1 -0
- package/dist/workspace/create.js +69 -0
- package/dist/workspace/create.js.map +1 -0
- package/dist/workspace/delete.d.ts +50 -0
- package/dist/workspace/delete.d.ts.map +1 -0
- package/dist/workspace/delete.js +24 -0
- package/dist/workspace/delete.js.map +1 -0
- package/dist/workspace/index.d.ts +27 -0
- package/dist/workspace/index.d.ts.map +1 -0
- package/dist/workspace/index.js +27 -0
- package/dist/workspace/index.js.map +1 -0
- package/dist/workspace/repo.memory.d.ts +34 -0
- package/dist/workspace/repo.memory.d.ts.map +1 -0
- package/dist/workspace/repo.memory.js +50 -0
- package/dist/workspace/repo.memory.js.map +1 -0
- package/dist/workspace/tool-registrations.d.ts +38 -0
- package/dist/workspace/tool-registrations.d.ts.map +1 -0
- package/dist/workspace/tool-registrations.js +71 -0
- package/dist/workspace/tool-registrations.js.map +1 -0
- package/dist/workspace/update.d.ts +52 -0
- package/dist/workspace/update.d.ts.map +1 -0
- package/dist/workspace/update.js +41 -0
- package/dist/workspace/update.js.map +1 -0
- package/package.json +149 -0
|
@@ -0,0 +1,603 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file The registered permission catalog (REQ-03/REQ-12).
|
|
3
|
+
*
|
|
4
|
+
* **This module has import-time side effects and is the only one in the package that does.** It
|
|
5
|
+
* makes ~60 top-level `registerPermission()` calls plus a `registerPermissionMigration()`, so
|
|
6
|
+
* merely loading it is what populates the catalog. The package therefore declares
|
|
7
|
+
* `"sideEffects": ["./dist/identity/permissions.js"]` rather than `false`.
|
|
8
|
+
*
|
|
9
|
+
* Do not change that back. Under a blanket `sideEffects: false`, a bundler is free to drop any
|
|
10
|
+
* module whose exports the consumer does not reference — so an app that imports only `authorize`
|
|
11
|
+
* would legally ship without this file, leaving the catalog empty, `isKnownPermission()` returning
|
|
12
|
+
* false for every string, and authorization failing closed. It would work in Node (no
|
|
13
|
+
* tree-shaking) and fail only in a production bundle, which is the worst possible place to find
|
|
14
|
+
* out. If this file is ever split, every resulting side-effectful module must be listed too.
|
|
15
|
+
*
|
|
16
|
+
* Purpose:
|
|
17
|
+
* Permissions are flat dotted strings validated against a code-side
|
|
18
|
+
* registered catalog, not a DB enum (REQ-03) — the anti-hook-soup rule
|
|
19
|
+
* applied to authZ. Core owns the base vocabulary;
|
|
20
|
+
* features may register more at startup.
|
|
21
|
+
*
|
|
22
|
+
* Scope note (core path): a "permissions list" CLI surface (REQ-12) has no
|
|
23
|
+
* caller inside this library, and should not — exposing the catalog to an
|
|
24
|
+
* operator is a host concern. `listPermissions()` is the capability such a
|
|
25
|
+
* surface wires to; it is exercised directly by tests instead.
|
|
26
|
+
*
|
|
27
|
+
* `navigation.manage` below is renamed/split into the `admin.menus.*` 7-entry
|
|
28
|
+
* catalog. `navigation.manage` itself stays registered (deprecated, not deleted — see its own doc
|
|
29
|
+
* comment) until the Point of No Return described in
|
|
30
|
+
* `docs/decisions/permission-catalog-migration.md`; `permission-migrations.ts`'s
|
|
31
|
+
* `migrateDeprecatedPermissionGrants()` is the fan-out mechanism that keeps
|
|
32
|
+
* any policy holding the old string from being silently narrowed by the
|
|
33
|
+
* split. NOTE: registration only — wiring the migration call into
|
|
34
|
+
* `seed.ts`'s live boot path is gated on a dedicated security-focused audit
|
|
35
|
+
* pass and is deliberately NOT done in this pass; see `seed.ts`'s own doc comment.
|
|
36
|
+
*/
|
|
37
|
+
import { registerPermissionMigration } from "./permission-migrations.js";
|
|
38
|
+
/** REQ-09: the base vocabulary core registers at startup. */
|
|
39
|
+
const BASE_CATALOG = [
|
|
40
|
+
{ id: "content.read", owner: "core", description: "Read content entries." },
|
|
41
|
+
{ id: "content.write", owner: "core", description: "Create and edit content entries." },
|
|
42
|
+
{ id: "content.publish", owner: "core", description: "Publish/unpublish content entries." },
|
|
43
|
+
{ id: "content.delete", owner: "core", description: "Delete content entries." },
|
|
44
|
+
{
|
|
45
|
+
id: "media.write",
|
|
46
|
+
owner: "core",
|
|
47
|
+
description: "DEPRECATED — superseded by the flat media.* permission " +
|
|
48
|
+
"set registered below. Retained (not deleted) — see the media.* registration block's own " +
|
|
49
|
+
"comment and docs/decisions/permission-catalog-migration.md for the same migration contract " +
|
|
50
|
+
"this repo's other permission renames (navigation.manage, integration.manage) have used. " +
|
|
51
|
+
"Do not register a new dependency on this string.",
|
|
52
|
+
},
|
|
53
|
+
{ id: "theme.set", owner: "core", description: "Change the active theme/presentation settings." },
|
|
54
|
+
{
|
|
55
|
+
id: "theme.edit",
|
|
56
|
+
owner: "core",
|
|
57
|
+
description: "Create and edit the source files inside a theme package (templates, tokens, styles, manifest). " +
|
|
58
|
+
"Distinct from theme.set, which only chooses among already-validated themes: editing a theme's " +
|
|
59
|
+
"files can take that theme to status:'invalid', degrading its pages to the built-in fallback " +
|
|
60
|
+
"body until corrected. Granted to admin (and owner via '*'), not to editor.",
|
|
61
|
+
},
|
|
62
|
+
{ id: "plugin.read", owner: "core", description: "List installed plugins and their state." },
|
|
63
|
+
{ id: "plugin.enable", owner: "core", description: "Enable a plugin." },
|
|
64
|
+
{ id: "plugin.disable", owner: "core", description: "Disable a plugin." },
|
|
65
|
+
{ id: "changeset.read", owner: "core", description: "Read the change-set audit trail." },
|
|
66
|
+
{ id: "changeset.revert", owner: "core", description: "Revert an applied change set." },
|
|
67
|
+
{ id: "member.manage", owner: "core", description: "Manage front-end members and subscriptions." },
|
|
68
|
+
{ id: "user.manage", owner: "core", description: "Create/disable operator users and principals." },
|
|
69
|
+
{ id: "role.manage", owner: "core", description: "Manage roles, policies, and grants." },
|
|
70
|
+
{
|
|
71
|
+
id: "settings.write",
|
|
72
|
+
owner: "core",
|
|
73
|
+
description: "DEPRECATED — superseded by the fine-grained settings.* catalog below. Retained until the data migration that maps existing grants to settings.workspace.write + settings.definitions.manage completes and is verified; do not reuse this string for anything else afterward. See docs/decisions/permission-catalog-migration.md for the migration's completion criteria.",
|
|
74
|
+
},
|
|
75
|
+
{ id: "apikey.manage", owner: "core", description: "Issue and revoke API keys." },
|
|
76
|
+
// settings.* catalog (core-only subset).
|
|
77
|
+
{ id: "settings.global.write", owner: "settings", description: "Set/clear a setting's global-layer value." },
|
|
78
|
+
{
|
|
79
|
+
id: "settings.workspace.write",
|
|
80
|
+
owner: "settings",
|
|
81
|
+
description: "Set/clear a setting's workspace-layer value.",
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
id: "settings.user.self.write",
|
|
85
|
+
owner: "settings",
|
|
86
|
+
description: "Set/clear a setting's own user-layer value.",
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: "settings.user.write",
|
|
90
|
+
owner: "settings",
|
|
91
|
+
description: "Set/clear another principal's user-layer value.",
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
id: "settings.user.read",
|
|
95
|
+
owner: "settings",
|
|
96
|
+
description: "Read another principal's user-layer value. The read-side counterpart of settings.user.write — " +
|
|
97
|
+
"gates the ?principalId= cross-principal path on the settings read routes (get-raw/get-effective), " +
|
|
98
|
+
"which previously had no read permission of its own and borrowed settings.user.write.",
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: "settings.definitions.manage",
|
|
102
|
+
owner: "settings",
|
|
103
|
+
description: "Register/rename/retype/deprecate/tombstone setting definitions; also gates the purge service and authorizes the background coerce repair job.",
|
|
104
|
+
},
|
|
105
|
+
{ id: "settings.reset.global", owner: "settings", description: "Reset a namespace's global-layer values to defaults." },
|
|
106
|
+
{
|
|
107
|
+
id: "settings.reset.workspace",
|
|
108
|
+
owner: "settings",
|
|
109
|
+
description: "Reset a namespace's workspace-layer values to defaults.",
|
|
110
|
+
},
|
|
111
|
+
{ id: "settings.reset.user", owner: "settings", description: "Reset a namespace's user-layer values to defaults." },
|
|
112
|
+
{ id: "settings.read", owner: "settings", description: "Read effective setting values (getEffective)." },
|
|
113
|
+
{
|
|
114
|
+
id: "settings.read.raw",
|
|
115
|
+
owner: "settings",
|
|
116
|
+
description: "Read per-layer raw setting values. Reserved for a future API surface.",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
id: "settings.read.revisions",
|
|
120
|
+
owner: "settings",
|
|
121
|
+
description: "Read the setting_revisions ledger. Reserved for a future API surface.",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
id: "settings.read.definitions",
|
|
125
|
+
owner: "settings",
|
|
126
|
+
description: "List setting definitions grouped by namespace.",
|
|
127
|
+
},
|
|
128
|
+
];
|
|
129
|
+
/**
|
|
130
|
+
* Code-side registry backing REQ-03's catalog validation and REQ-12's
|
|
131
|
+
* enumeration. `"*"` (the owner wildcard, REQ-04) is deliberately not a
|
|
132
|
+
* catalog entry — it is a distinct, built-in-only grant shape checked by
|
|
133
|
+
* `authorize()`/seed, never a registrable permission string.
|
|
134
|
+
*
|
|
135
|
+
* @complexity O(1) amortized per lookup (Map-backed); O(n) to list all.
|
|
136
|
+
* @overallScore 100
|
|
137
|
+
*/
|
|
138
|
+
class PermissionCatalog {
|
|
139
|
+
byId = new Map();
|
|
140
|
+
constructor(initial) {
|
|
141
|
+
for (const descriptor of initial)
|
|
142
|
+
this.byId.set(descriptor.id, descriptor);
|
|
143
|
+
}
|
|
144
|
+
/** Idempotent: re-registering the same `id` (e.g. on a warm reload) is a no-op overwrite. */
|
|
145
|
+
register(descriptor) {
|
|
146
|
+
this.byId.set(descriptor.id, descriptor);
|
|
147
|
+
}
|
|
148
|
+
has(id) {
|
|
149
|
+
return this.byId.has(id);
|
|
150
|
+
}
|
|
151
|
+
list() {
|
|
152
|
+
return [...this.byId.values()];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** Module-singleton catalog — core's base vocabulary, extended by feature registration. */
|
|
156
|
+
export const permissionCatalog = new PermissionCatalog(BASE_CATALOG);
|
|
157
|
+
/** Register an additional permission at feature startup (REQ-03). */
|
|
158
|
+
export function registerPermission(descriptor) {
|
|
159
|
+
permissionCatalog.register(descriptor);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Backfills the newly-introduced `settings.user.read` (BASE_CATALOG above) onto every policy that
|
|
163
|
+
* already holds `settings.user.write`, closing internal-audit finding F2 without narrowing anyone.
|
|
164
|
+
*
|
|
165
|
+
* Deliberate departure from this file's other four pairs: `from` here is NOT a deprecated string.
|
|
166
|
+
* `settings.user.write` remains live and meaningful (set/clear another principal's value); this pair
|
|
167
|
+
* expresses a one-time *capability implication* — anyone already trusted to overwrite another
|
|
168
|
+
* principal's user-layer value is self-evidently trusted to read it. The fan-out's contract fits
|
|
169
|
+
* exactly (`permission-migrations.ts`: for every policy holding `from`, add each missing string in
|
|
170
|
+
* `to`; additive-only, never touches `from`), so no mechanism change is needed.
|
|
171
|
+
*
|
|
172
|
+
* Why a migration is required at all: `seedIdentity` early-returns once an owner user exists
|
|
173
|
+
* (`seed.ts`), so adding the string to `BUILTIN_ADMIN_PERMISSIONS` only reaches *fresh* workspaces.
|
|
174
|
+
* Without this pair, an already-seeded install's built-in admin role would silently lose the
|
|
175
|
+
* Settings screen's target-principal read the moment the route stopped accepting
|
|
176
|
+
* `settings.user.write` — the precise fail-closed lockout this mechanism exists to prevent. The
|
|
177
|
+
* built-in owner role is unaffected either way (it holds the `*` wildcard).
|
|
178
|
+
*/
|
|
179
|
+
registerPermissionMigration({
|
|
180
|
+
from: "settings.user.write",
|
|
181
|
+
to: ["settings.user.read"],
|
|
182
|
+
reason: "Internal audit F2 remediation (2026-07-29): the cross-principal settings read path was gated on " +
|
|
183
|
+
"settings.user.write for lack of a read-side permission. settings.user.read now gates it; every " +
|
|
184
|
+
"existing write-holder gains the explicit read grant so no operator loses a shipped capability. " +
|
|
185
|
+
"Unlike this file's other pairs, `from` is not deprecated — it stays live for writes.",
|
|
186
|
+
});
|
|
187
|
+
/**
|
|
188
|
+
* Feature-registered permissions beyond the core BASE_CATALOG (REQ-03), added while wiring
|
|
189
|
+
* `authorize()` into the admin routes for the `navigation` and `integrations`
|
|
190
|
+
* libraries. Both libraries' own early design notes separately floated a namespaced
|
|
191
|
+
* `admin.<section>.manage` string in a "decisions" convention note — that convention had no
|
|
192
|
+
* implementation behind it anywhere in this codebase at the time. This registers the flat
|
|
193
|
+
* two-segment `domain.verb` shape instead ("one permission language" — the pattern every other
|
|
194
|
+
* catalog entry above and every currently-gated route already uses) so menus/integrations
|
|
195
|
+
* authorization is checked with real, tested code rather than a convention that existed only as
|
|
196
|
+
* design-note prose.
|
|
197
|
+
*
|
|
198
|
+
* One permission per domain (not split into `.read`/`.write`) mirrors `member.manage`/`user.manage`
|
|
199
|
+
* above — no finer split was directed, and neither library's routes distinguish read/write access
|
|
200
|
+
* today.
|
|
201
|
+
*/
|
|
202
|
+
registerPermission({
|
|
203
|
+
id: "navigation.manage",
|
|
204
|
+
owner: "navigation",
|
|
205
|
+
description: "DEPRECATED — superseded by the admin.menus.* catalog below. " +
|
|
206
|
+
"Retained (not deleted) until the Point of No Return: a persistent identity store shipping " +
|
|
207
|
+
"plus a real deprecation window with observed zero reliance on this string, gated on " +
|
|
208
|
+
"authorize()-decision logging existing first to measure that. See " +
|
|
209
|
+
"docs/decisions/permission-catalog-migration.md. Do not register a new dependency on this string.",
|
|
210
|
+
});
|
|
211
|
+
/**
|
|
212
|
+
* The `admin.menus.*` 7-entry catalog that replaces
|
|
213
|
+
* `navigation.manage` above. Split by action (force-purge is now gated
|
|
214
|
+
* separately from ordinary edits) and renamed to the frozen
|
|
215
|
+
* `admin.<section>.<action>` convention that `navigation.manage` predates. Values must stay in
|
|
216
|
+
* lockstep with `navigation/contracts.ts`'s `NAVIGATION_PERMISSIONS`.
|
|
217
|
+
*/
|
|
218
|
+
registerPermission({
|
|
219
|
+
id: "admin.menus.read",
|
|
220
|
+
owner: "navigation",
|
|
221
|
+
description: "Read menus and their location bindings.",
|
|
222
|
+
});
|
|
223
|
+
registerPermission({
|
|
224
|
+
id: "admin.menus.create",
|
|
225
|
+
owner: "navigation",
|
|
226
|
+
description: "Create a new menu.",
|
|
227
|
+
});
|
|
228
|
+
registerPermission({
|
|
229
|
+
id: "admin.menus.update",
|
|
230
|
+
owner: "navigation",
|
|
231
|
+
description: "Replace a menu's item tree.",
|
|
232
|
+
});
|
|
233
|
+
registerPermission({
|
|
234
|
+
id: "admin.menus.delete",
|
|
235
|
+
owner: "navigation",
|
|
236
|
+
description: "Trash a menu, and attempt an ordinary (non-forced) hard purge.",
|
|
237
|
+
});
|
|
238
|
+
registerPermission({
|
|
239
|
+
id: "admin.menus.delete.force",
|
|
240
|
+
owner: "navigation",
|
|
241
|
+
description: "Force-purge a menu past the dangling-location-binding guard — split from " +
|
|
242
|
+
"admin.menus.delete so force-purge is not reachable with only the ordinary delete grant.",
|
|
243
|
+
});
|
|
244
|
+
registerPermission({
|
|
245
|
+
id: "admin.menus.assign",
|
|
246
|
+
owner: "navigation",
|
|
247
|
+
description: "Assign (or reassign) a menu to a theme location.",
|
|
248
|
+
});
|
|
249
|
+
registerPermission({
|
|
250
|
+
id: "admin.menus.manage",
|
|
251
|
+
owner: "navigation",
|
|
252
|
+
description: "Umbrella grant covering every admin.menus.* action (mirrors owner-tier convenience grants).",
|
|
253
|
+
});
|
|
254
|
+
registerPermissionMigration({
|
|
255
|
+
from: "navigation.manage",
|
|
256
|
+
to: [
|
|
257
|
+
"admin.menus.read",
|
|
258
|
+
"admin.menus.create",
|
|
259
|
+
"admin.menus.update",
|
|
260
|
+
"admin.menus.delete",
|
|
261
|
+
"admin.menus.delete.force",
|
|
262
|
+
"admin.menus.assign",
|
|
263
|
+
],
|
|
264
|
+
reason: "navigation.manage split into per-action admin.menus.* strings; " +
|
|
265
|
+
"every policy holding the old flat permission must not be silently narrowed by the split.",
|
|
266
|
+
});
|
|
267
|
+
registerPermission({
|
|
268
|
+
id: "integration.manage",
|
|
269
|
+
owner: "integrations",
|
|
270
|
+
description: "DEPRECATED — superseded by admin.integrations.manage below, " +
|
|
271
|
+
"mirroring the navigation.manage -> admin.menus.* precedent. Retained (not " +
|
|
272
|
+
"deleted) — see admin.integrations.manage's own comment and " +
|
|
273
|
+
"docs/decisions/permission-catalog-migration.md for the same migration contract " +
|
|
274
|
+
"this repo's other permission renames have used.",
|
|
275
|
+
});
|
|
276
|
+
/**
|
|
277
|
+
* The single umbrella permission superseding the flat
|
|
278
|
+
* `integration.manage` above, renamed to the frozen `admin.<section>.<action>` convention —
|
|
279
|
+
* mirrors the identical navigation.manage -> admin.menus.* rename. One permission (not split
|
|
280
|
+
* by action) because `integration.manage` itself was never split and no finer split was
|
|
281
|
+
* directed for this pass.
|
|
282
|
+
*/
|
|
283
|
+
registerPermission({
|
|
284
|
+
id: "admin.integrations.manage",
|
|
285
|
+
owner: "integrations",
|
|
286
|
+
description: "Create, update, pause, and delete webhook subscriptions; read delivery logs.",
|
|
287
|
+
});
|
|
288
|
+
registerPermissionMigration({
|
|
289
|
+
from: "integration.manage",
|
|
290
|
+
to: ["admin.integrations.manage"],
|
|
291
|
+
reason: "integration.manage renamed to admin.integrations.manage; every " +
|
|
292
|
+
"policy holding the old flat permission must not be silently locked out by the rename.",
|
|
293
|
+
});
|
|
294
|
+
/**
|
|
295
|
+
* A single umbrella permission
|
|
296
|
+
* gating all 6 SEO admin routes (both reads and writes — no self-vs-other
|
|
297
|
+
* branching to get wrong, matching `theme.set`'s single-permission-per-domain
|
|
298
|
+
* precedent). Uses the frozen `admin.<section>.<action>`
|
|
299
|
+
* convention directly (unlike `navigation.manage`/`integration.manage` above,
|
|
300
|
+
* which predate it) as the owner-frozen shape new admin sections should register under.
|
|
301
|
+
*/
|
|
302
|
+
registerPermission({
|
|
303
|
+
id: "admin.seo.manage",
|
|
304
|
+
owner: "seo",
|
|
305
|
+
description: "Read and write per-entry SEO overrides, site-level SEO settings, and the sitemap cache.",
|
|
306
|
+
});
|
|
307
|
+
/**
|
|
308
|
+
* A single umbrella permission gating both AI Assistant admin routes (read and write), registered
|
|
309
|
+
* under the frozen `admin.<section>.<action>` convention `admin.seo.manage`'s own comment above
|
|
310
|
+
* names as the shape new admin sections should use.
|
|
311
|
+
*
|
|
312
|
+
* One string, not a read/write split, matching SEO's rationale verbatim: there is no self-vs-other
|
|
313
|
+
* branching here to get wrong, and the read is not sensitive independently of the write — knowing
|
|
314
|
+
* whether the public assistant is on is exactly as privileged as being able to turn it off.
|
|
315
|
+
*
|
|
316
|
+
* This gates the PUBLIC assistant's master switch only. It has nothing to do with reaching the admin
|
|
317
|
+
* assistant dock, which is gated by `requireAdminSession` at the proxy
|
|
318
|
+
* (`server/modules/assistant.ts`) and by each individual agent tool's own permission thereafter.
|
|
319
|
+
*/
|
|
320
|
+
registerPermission({
|
|
321
|
+
id: "admin.assistant.manage",
|
|
322
|
+
owner: "assistant",
|
|
323
|
+
description: "Read and change the visitor-facing AI assistant's settings, including its master on/off switch.",
|
|
324
|
+
});
|
|
325
|
+
/**
|
|
326
|
+
* Closes a standing security-by-default gap on the analytics
|
|
327
|
+
* `recent-hits` admin route (previously zero `authorize()` call at all). Flat
|
|
328
|
+
* `domain.verb` shape, matching `navigation.manage`/`integration.manage` above rather
|
|
329
|
+
* than the never-implemented `admin.analytics.view` string floated in early design
|
|
330
|
+
* prose.
|
|
331
|
+
*/
|
|
332
|
+
registerPermission({
|
|
333
|
+
id: "analytics.read",
|
|
334
|
+
owner: "analytics",
|
|
335
|
+
description: "Read recent ingested analytics hits.",
|
|
336
|
+
});
|
|
337
|
+
/**
|
|
338
|
+
* Gates all 7 admin `redirects` endpoints
|
|
339
|
+
* (list/get/create/update/tombstone/import/hit-read). A flagged, disclosed deviation:
|
|
340
|
+
* this is the FIRST
|
|
341
|
+
* `admin.<section>.<action>`-prefixed permission in the catalog — every
|
|
342
|
+
* other entry above (`navigation.manage`, `integration.manage`,
|
|
343
|
+
* `analytics.read`, ...) uses the flat `domain.verb` shape and explicitly
|
|
344
|
+
* rejected the `admin.<section>.<action>` convention floated only in early design
|
|
345
|
+
* prose. This one is used exactly as the redirects feature's own spec directs, not
|
|
346
|
+
* silently normalized to match the flat-string precedent — a real,
|
|
347
|
+
* disclosed inconsistency in the catalog, not an oversight.
|
|
348
|
+
*/
|
|
349
|
+
registerPermission({
|
|
350
|
+
id: "admin.redirects.manage",
|
|
351
|
+
owner: "redirects",
|
|
352
|
+
description: "Create, update, tombstone, import, and read hit stats for redirect rules.",
|
|
353
|
+
});
|
|
354
|
+
/**
|
|
355
|
+
* The three `admin.forms.*` capability
|
|
356
|
+
* strings, verbatim per this plugin's own manifest data. Unlike
|
|
357
|
+
* `navigation.manage`/`integration.manage` above, Forms deliberately splits into three (not one
|
|
358
|
+
* flat `forms.manage`) — submission data is visitor-supplied PII, so an admin who manages form
|
|
359
|
+
* definitions need not automatically see or delete submission content, and vice versa (mirrors the
|
|
360
|
+
* `webhooks.read` vs `webhooks.redeliver` granularity precedent in the integrations library).
|
|
361
|
+
*/
|
|
362
|
+
registerPermission({
|
|
363
|
+
id: "admin.forms.manage",
|
|
364
|
+
owner: "forms",
|
|
365
|
+
description: "Create, update, and disable/enable form definitions.",
|
|
366
|
+
});
|
|
367
|
+
registerPermission({
|
|
368
|
+
id: "admin.forms.submissions.read",
|
|
369
|
+
owner: "forms",
|
|
370
|
+
description: "List and view form submissions.",
|
|
371
|
+
});
|
|
372
|
+
registerPermission({
|
|
373
|
+
id: "admin.forms.submissions.delete",
|
|
374
|
+
owner: "forms",
|
|
375
|
+
description: "Permanently delete a form submission.",
|
|
376
|
+
});
|
|
377
|
+
/**
|
|
378
|
+
* Namespaced `admin.newsletter.*`
|
|
379
|
+
* shape (unlike `navigation.manage`/`integration.manage`/`analytics.read` above) — matches
|
|
380
|
+
* this feature's own per-endpoint auth-profile table exactly (8 strings actually gate a route this
|
|
381
|
+
* pass) and `admin.redirects.manage`'s naming precedent. `admin.newsletter.settings.manage`/
|
|
382
|
+
* `admin.newsletter.manage` are registered but not yet gate any route — reserved for a future API
|
|
383
|
+
* surface, same disclosed convention as `settings.read.raw`/`settings.read.revisions` above.
|
|
384
|
+
*/
|
|
385
|
+
registerPermission({
|
|
386
|
+
id: "admin.newsletter.read",
|
|
387
|
+
owner: "newsletter",
|
|
388
|
+
description: "List and read newsletter campaigns, lists, and the send log.",
|
|
389
|
+
});
|
|
390
|
+
registerPermission({
|
|
391
|
+
id: "admin.newsletter.campaign.compose",
|
|
392
|
+
owner: "newsletter",
|
|
393
|
+
description: "Create/edit/cancel a newsletter campaign in draft or scheduled state.",
|
|
394
|
+
});
|
|
395
|
+
registerPermission({
|
|
396
|
+
id: "admin.newsletter.campaign.schedule",
|
|
397
|
+
owner: "newsletter",
|
|
398
|
+
description: "Schedule a draft newsletter campaign to send at a future time.",
|
|
399
|
+
});
|
|
400
|
+
registerPermission({
|
|
401
|
+
id: "admin.newsletter.campaign.send",
|
|
402
|
+
owner: "newsletter",
|
|
403
|
+
description: "Send, pause, or resume a newsletter campaign — real outbound mail.",
|
|
404
|
+
});
|
|
405
|
+
registerPermission({
|
|
406
|
+
id: "admin.newsletter.campaign.send_test",
|
|
407
|
+
owner: "newsletter",
|
|
408
|
+
description: "Send a test copy of a newsletter campaign to a small address list.",
|
|
409
|
+
});
|
|
410
|
+
registerPermission({
|
|
411
|
+
id: "admin.newsletter.list.manage",
|
|
412
|
+
owner: "newsletter",
|
|
413
|
+
description: "Create and archive newsletter subscriber lists.",
|
|
414
|
+
});
|
|
415
|
+
registerPermission({
|
|
416
|
+
id: "admin.newsletter.subscriber.read",
|
|
417
|
+
owner: "newsletter",
|
|
418
|
+
description: "Read newsletter subscriptions and the per-campaign send log.",
|
|
419
|
+
});
|
|
420
|
+
registerPermission({
|
|
421
|
+
id: "admin.newsletter.subscriber.manage",
|
|
422
|
+
owner: "newsletter",
|
|
423
|
+
description: "Add, import, remove newsletter subscriptions, and resend confirmation emails.",
|
|
424
|
+
});
|
|
425
|
+
registerPermission({
|
|
426
|
+
id: "admin.newsletter.settings.manage",
|
|
427
|
+
owner: "newsletter",
|
|
428
|
+
description: "Reserved for a future API surface (no route uses this yet).",
|
|
429
|
+
});
|
|
430
|
+
registerPermission({
|
|
431
|
+
id: "admin.newsletter.manage",
|
|
432
|
+
owner: "newsletter",
|
|
433
|
+
description: "Umbrella newsletter permission. Reserved for a future API surface (no route uses this yet).",
|
|
434
|
+
});
|
|
435
|
+
/**
|
|
436
|
+
* Database Timeline permissions (renamed from "Storage" per a naming-correction note —
|
|
437
|
+
* "Storage" read as ambiguous next to the Media/Assets subsystem's file/blob storage), plus
|
|
438
|
+
* Backups/Recovery — the house-style flat `domain.verb` permissions this feature's own design
|
|
439
|
+
* notes name
|
|
440
|
+
* directly (matching `navigation.manage`/`integration.manage`/`analytics.read`'s shape, not the
|
|
441
|
+
* `admin.<section>.<action>` convention). Only `database.read` gates a route this pass
|
|
442
|
+
* (`routes/admin/database/timeline.ts`); the rest are registered now — matching this catalog's
|
|
443
|
+
* existing precedent of registering a domain's full permission vocabulary even before every
|
|
444
|
+
* verb has a route (e.g. `admin.newsletter.settings.manage` above) — so a future session wiring
|
|
445
|
+
* the remaining Database/Recovery routes need not touch this file again.
|
|
446
|
+
*/
|
|
447
|
+
registerPermission({
|
|
448
|
+
id: "storage.read",
|
|
449
|
+
owner: "database",
|
|
450
|
+
description: "DEPRECATED — superseded by database.read below, " +
|
|
451
|
+
"mirroring this catalog's integration.manage -> admin.integrations.manage precedent. Retained " +
|
|
452
|
+
"(not deleted) — see database.read's own comment and " +
|
|
453
|
+
"docs/decisions/permission-catalog-migration.md for the same migration contract " +
|
|
454
|
+
"this repo's other permission renames have used.",
|
|
455
|
+
});
|
|
456
|
+
registerPermission({ id: "database.read", owner: "database", description: "Read the Database Timeline, schema drift status, and restore points." });
|
|
457
|
+
registerPermissionMigration({
|
|
458
|
+
from: "storage.read",
|
|
459
|
+
to: ["database.read"],
|
|
460
|
+
reason: "Naming-correction: storage.read renamed to database.read; every " +
|
|
461
|
+
"policy holding the old flat permission must not be silently locked out by the rename.",
|
|
462
|
+
});
|
|
463
|
+
/** Gates `GET /api/admin/v1/system/module-status`. */
|
|
464
|
+
registerPermission({ id: "system.read", owner: "server", description: "Read boot/readiness module lifecycle status." });
|
|
465
|
+
registerPermission({
|
|
466
|
+
id: "storage.migrate",
|
|
467
|
+
owner: "database",
|
|
468
|
+
description: "DEPRECATED — superseded by database.migrate below, " +
|
|
469
|
+
"mirroring this catalog's integration.manage -> admin.integrations.manage precedent. Retained " +
|
|
470
|
+
"(not deleted) — see database.migrate's own comment and " +
|
|
471
|
+
"docs/decisions/permission-catalog-migration.md for the same migration contract " +
|
|
472
|
+
"this repo's other permission renames have used.",
|
|
473
|
+
});
|
|
474
|
+
registerPermission({ id: "database.migrate", owner: "database", description: "Plan, confirm, and execute a forward schema migration." });
|
|
475
|
+
registerPermissionMigration({
|
|
476
|
+
from: "storage.migrate",
|
|
477
|
+
to: ["database.migrate"],
|
|
478
|
+
reason: "Naming-correction: storage.migrate renamed to database.migrate; every " +
|
|
479
|
+
"policy holding the old flat permission must not be silently locked out by the rename.",
|
|
480
|
+
});
|
|
481
|
+
registerPermission({ id: "backup.read", owner: "recovery", description: "Read restore points and this site's restore capability." });
|
|
482
|
+
registerPermission({ id: "backup.create", owner: "recovery", description: "Mint a restore point independent of any migration." });
|
|
483
|
+
registerPermission({ id: "backup.restore", owner: "recovery", description: "Confirm and execute a restore to a prior restore point." });
|
|
484
|
+
/** Flat `comments.*` strings, one catalog, mirroring `analytics.read`'s
|
|
485
|
+
* shape (not the `admin.<section>.<action>` convention). Public/anonymous submission is
|
|
486
|
+
* ingress-governed (`CommentIngressPolicy`), not `authorize()`-gated — `comments.submit` exists
|
|
487
|
+
* for a future member-only mode, not the anonymous path this feature's route uses. */
|
|
488
|
+
registerPermission({ id: "comments.read", owner: "comments", description: "Read comments and the moderation queue." });
|
|
489
|
+
registerPermission({ id: "comments.moderate", owner: "comments", description: "Approve, mark spam, or restore a comment." });
|
|
490
|
+
registerPermission({ id: "comments.reply", owner: "comments", description: "Post an operator reply to a comment thread." });
|
|
491
|
+
registerPermission({ id: "comments.delete", owner: "comments", description: "Trash a comment (soft delete, recoverable)." });
|
|
492
|
+
registerPermission({ id: "comments.delete.force", owner: "comments", description: "Purge a comment permanently (hard delete, not recoverable)." });
|
|
493
|
+
registerPermission({ id: "comments.submit", owner: "comments", description: "Reserved for a future member-only submission gate; the anonymous path is ingress-governed, not authorize()-gated." });
|
|
494
|
+
registerPermission({ id: "comments.configure", owner: "comments", description: "Change Comments settings (moderation defaults, spam threshold, depth cap)." });
|
|
495
|
+
/**
|
|
496
|
+
* An admin-UI backend-gap closure pass wired 18 new
|
|
497
|
+
* admin routes over the content-types/entries/taxonomy domains gated by these three strings, but
|
|
498
|
+
* registering them in this catalog was out of that pass's own scope-file list — they worked
|
|
499
|
+
* anyway via the seeded owner's `"*"` wildcard grant (`isKnownPermission()` is not consulted by
|
|
500
|
+
* `authorize()` on the runtime path). This closes that disclosed catalog-completeness gap; no
|
|
501
|
+
* route or authorize() behavior changes as a result (`isKnownPermission` has no caller in the
|
|
502
|
+
* authorize path today).
|
|
503
|
+
*/
|
|
504
|
+
registerPermission({
|
|
505
|
+
id: "admin.collections.read",
|
|
506
|
+
owner: "content-types",
|
|
507
|
+
description: "List Collections content types and their entries.",
|
|
508
|
+
});
|
|
509
|
+
registerPermission({
|
|
510
|
+
id: "admin.collections.manage",
|
|
511
|
+
owner: "content-types",
|
|
512
|
+
description: "Create/edit content types and entries; deprecate/reactivate/tombstone a content type; publish/unpublish an entry.",
|
|
513
|
+
});
|
|
514
|
+
registerPermission({
|
|
515
|
+
id: "admin.taxonomy.manage",
|
|
516
|
+
owner: "taxonomy",
|
|
517
|
+
description: "Read and write taxonomies, terms, and term assignments (one permission for this whole domain, no .read/.write split).",
|
|
518
|
+
});
|
|
519
|
+
/**
|
|
520
|
+
* The flat `media.*` permission set, verbatim per this feature's own design notes,
|
|
521
|
+
* superseding the single, broader `media.write` above (mirrors `navigation.manage` ->
|
|
522
|
+
* `admin.menus.*` and `integration.manage` -> `admin.integrations.manage`: deprecate-not-delete the
|
|
523
|
+
* old flat string, register the new set, fan out via `registerPermissionMigration` below so no
|
|
524
|
+
* existing `media.write` grant is silently narrowed). Wired into the 5 admin media routes this
|
|
525
|
+
* pass (`routes/admin/media/{list,upload,update,trash,delete}.ts`); `media.download_original` and
|
|
526
|
+
* `media.upload_svg` are registered for catalog completeness per those notes but gate no route yet
|
|
527
|
+
* (no original-download route exists, and SVG upload is already rejected outright rather than
|
|
528
|
+
* gated). `media.manage` is the umbrella/admin-override grant, also
|
|
529
|
+
* registered but not checked as an alternate by any route — no existing umbrella-as-alternate
|
|
530
|
+
* precedent was found in this catalog to extend (unlike `admin.menus.manage`, which is likewise
|
|
531
|
+
* registered but unused by any route), so one specific permission per route was kept, not invented.
|
|
532
|
+
*/
|
|
533
|
+
registerPermission({ id: "media.read", owner: "media", description: "List and read media assets." });
|
|
534
|
+
registerPermission({ id: "media.upload", owner: "media", description: "Upload a new media asset." });
|
|
535
|
+
registerPermission({ id: "media.update", owner: "media", description: "Edit a media asset's metadata (title/alt/caption/credit)." });
|
|
536
|
+
registerPermission({ id: "media.delete", owner: "media", description: "Trash (soft-delete) a media asset." });
|
|
537
|
+
registerPermission({
|
|
538
|
+
id: "media.delete.force",
|
|
539
|
+
owner: "media",
|
|
540
|
+
description: "Permanently purge a trashed media asset, past the still-referenced guard.",
|
|
541
|
+
});
|
|
542
|
+
registerPermission({
|
|
543
|
+
id: "media.download_original",
|
|
544
|
+
owner: "media",
|
|
545
|
+
description: "Mint a short-TTL signed URL to download a media asset's original bytes. Reserved for a future API surface — no route uses this yet.",
|
|
546
|
+
});
|
|
547
|
+
registerPermission({
|
|
548
|
+
id: "media.upload_svg",
|
|
549
|
+
owner: "media",
|
|
550
|
+
description: "Upload an SVG asset (sanitized at ingest, served origin-isolated).",
|
|
551
|
+
});
|
|
552
|
+
registerPermission({
|
|
553
|
+
id: "media.manage",
|
|
554
|
+
owner: "media",
|
|
555
|
+
description: "Umbrella grant covering every media.* action (mirrors owner-tier convenience grants like admin.menus.manage).",
|
|
556
|
+
});
|
|
557
|
+
registerPermissionMigration({
|
|
558
|
+
from: "media.write",
|
|
559
|
+
to: ["media.read", "media.upload", "media.update", "media.delete", "media.delete.force", "media.download_original", "media.upload_svg"],
|
|
560
|
+
reason: "media.write replaced by the flat media.* permission set; " +
|
|
561
|
+
"every policy holding the old flat permission must not be silently narrowed by the split.",
|
|
562
|
+
});
|
|
563
|
+
/**
|
|
564
|
+
* Flat `widgets.*` permissions,
|
|
565
|
+
* matching `comments.*`'s shape (flat `domain.verb`, not the `admin.<section>.<action>`
|
|
566
|
+
* convention). `.place` is split from `.update` (mirrors `admin.menus.assign`'s split from
|
|
567
|
+
* `admin.menus.update`): placing a widget onto the live site is higher-trust than editing an
|
|
568
|
+
* off-site instance's config. `.delete`/`.delete.force` mirrors `media.delete`/`media.delete.force`
|
|
569
|
+
* (the trash -> purge-blocked -> force-purge ladder).
|
|
570
|
+
*/
|
|
571
|
+
registerPermission({ id: "widgets.read", owner: "widgets", description: "Read widget instances, widget_area regions, and their revision history." });
|
|
572
|
+
registerPermission({ id: "widgets.create", owner: "widgets", description: "Create a new widget instance." });
|
|
573
|
+
registerPermission({ id: "widgets.update", owner: "widgets", description: "Update an existing widget instance's config." });
|
|
574
|
+
registerPermission({
|
|
575
|
+
id: "widgets.place",
|
|
576
|
+
owner: "widgets",
|
|
577
|
+
description: "Bind/reorder/disable a widget in a region's widget_area, or insert/remove/reorder a widgetEmbed node.",
|
|
578
|
+
});
|
|
579
|
+
registerPermission({ id: "widgets.delete", owner: "widgets", description: "Trash a widget instance." });
|
|
580
|
+
registerPermission({
|
|
581
|
+
id: "widgets.delete.force",
|
|
582
|
+
owner: "widgets",
|
|
583
|
+
description: "Force-purge a widget instance past the still-referenced guard, flagging any resulting dangling references.",
|
|
584
|
+
});
|
|
585
|
+
/**
|
|
586
|
+
* Workspace Administration — a distinct grant, not reused from `settings.write`:
|
|
587
|
+
* workspace identity (rename, eventual multi-tenant delete) is a higher-blast-radius operation than
|
|
588
|
+
* a settings-ledger value edit, worth auditing independently.
|
|
589
|
+
*/
|
|
590
|
+
registerPermission({
|
|
591
|
+
id: "workspace.manage",
|
|
592
|
+
owner: "workspace",
|
|
593
|
+
description: "List/view/rename/delete the workspace.",
|
|
594
|
+
});
|
|
595
|
+
/** Enumerate the full registered catalog (REQ-12 core capability; CLI wiring is N/A, see file header). */
|
|
596
|
+
export function listPermissions() {
|
|
597
|
+
return permissionCatalog.list();
|
|
598
|
+
}
|
|
599
|
+
/** Whether `id` is a recognized catalog permission. `"*"` is intentionally excluded (see class doc). */
|
|
600
|
+
export function isKnownPermission(id) {
|
|
601
|
+
return permissionCatalog.has(id);
|
|
602
|
+
}
|
|
603
|
+
//# sourceMappingURL=permissions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/identity/permissions.ts"],"names":[],"mappings":"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"}
|