@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,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Password policy (NIST SP 800-63B aligned): a length floor only, no composition rules.
|
|
3
|
+
*
|
|
4
|
+
* NIST SP 800-63B — the current published memorized-secret guidance — recommends a minimum
|
|
5
|
+
* length requirement and explicitly recommends AGAINST composition rules (mandatory uppercase,
|
|
6
|
+
* digit, or symbol). Composition rules measurably push people toward predictable, guessable
|
|
7
|
+
* patterns ("Password1!") rather than genuinely stronger secrets, which is why this module
|
|
8
|
+
* enforces length only.
|
|
9
|
+
*
|
|
10
|
+
* `createUser` (`grant-service.ts`) and `resetUserPassword` (`admin-crud-service.ts`) are the
|
|
11
|
+
* identity system's only two write paths that ever set a password, confirmed by tracing the
|
|
12
|
+
* whole call graph — both call this module.
|
|
13
|
+
*
|
|
14
|
+
* Two things this deliberately does NOT do, both load-bearing:
|
|
15
|
+
* - Never reaches `seed.ts`'s first-boot owner password. `seedIdentity` hashes it directly
|
|
16
|
+
* (`deps.hasher.hash(ownerPassword)`, `seed.ts:317`) and calls neither `createUser` nor
|
|
17
|
+
* `resetUserPassword` — confirmed before writing this module. That separation is intentional
|
|
18
|
+
* to preserve here: the host chooses the first-boot owner password (`SeedIdentityInput` requires
|
|
19
|
+
* it and supplies no default), and an existing installation is already authenticating with
|
|
20
|
+
* whatever it chose. Enforcing this policy on that path would lock out every such installation
|
|
21
|
+
* whose chosen value predates the policy.
|
|
22
|
+
* - Never re-validates at login. This is a write-time policy — `login`/`verify` never call it.
|
|
23
|
+
* An account whose password predates this policy (or was seeded) must keep authenticating; NIST
|
|
24
|
+
* 800-63B's own guidance is that length rules apply when a secret is *chosen*, not retroactively
|
|
25
|
+
* to secrets already in use.
|
|
26
|
+
*/
|
|
27
|
+
/** NIST SP 800-63B's recommended floor. */
|
|
28
|
+
export const MIN_PASSWORD_LENGTH = 12;
|
|
29
|
+
/**
|
|
30
|
+
* Generous upper bound — not itself a security requirement (argon2id's cost is tuned by its
|
|
31
|
+
* `memoryCost`/`timeCost`/`parallelism` parameters, not by input size — see `hasher.ts`'s own
|
|
32
|
+
* `@complexity` note), but a defense-in-depth cap on how large a string this service will accept
|
|
33
|
+
* and pass to the hasher at all, independent of whatever limit (if any) sits in front of it at
|
|
34
|
+
* the HTTP layer. Comfortably above any realistic human-typed passphrase.
|
|
35
|
+
*/
|
|
36
|
+
export const MAX_PASSWORD_LENGTH = 512;
|
|
37
|
+
/**
|
|
38
|
+
* Validates `password` against the length-only policy.
|
|
39
|
+
*
|
|
40
|
+
* Measures length in Unicode CODE POINTS (`[...password].length`), not UTF-16 code units
|
|
41
|
+
* (`password.length`): a passphrase built from astral-plane characters (many emoji, some
|
|
42
|
+
* CJK/historic scripts) is represented as a surrogate pair per character in a JS string, so plain
|
|
43
|
+
* `.length` overcounts those characters relative to what a human typing them perceives as "12
|
|
44
|
+
* characters" — silently misjudging the exact floor this function states. No trimming, no
|
|
45
|
+
* character allowlist: every printable character, including leading/trailing spaces and full
|
|
46
|
+
* Unicode, is accepted as typed. Silently altering the input (trimming, stripping) would make the
|
|
47
|
+
* stored credential differ from the secret the operator actually chose.
|
|
48
|
+
*
|
|
49
|
+
* @returns `null` if `password` satisfies the policy, otherwise an operator-facing message
|
|
50
|
+
* stating the requirement plainly — used verbatim as the thrown `IdentityValidationError`'s
|
|
51
|
+
* message by both call sites, and rendered as-is through the admin's `describeApiError` layer.
|
|
52
|
+
*
|
|
53
|
+
* @complexity O(n) in the password's length — spreading a string into code points is a single
|
|
54
|
+
* linear pass, which is the minimum work a correct (non-UTF-16-code-unit) count requires.
|
|
55
|
+
* @overallScore 100
|
|
56
|
+
*/
|
|
57
|
+
export function validatePasswordPolicy(password) {
|
|
58
|
+
const length = [...password].length;
|
|
59
|
+
if (length < MIN_PASSWORD_LENGTH) {
|
|
60
|
+
return `Password must be at least ${MIN_PASSWORD_LENGTH} characters.`;
|
|
61
|
+
}
|
|
62
|
+
if (length > MAX_PASSWORD_LENGTH) {
|
|
63
|
+
return `Password must be no more than ${MAX_PASSWORD_LENGTH} characters.`;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=password-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-policy.js","sourceRoot":"","sources":["../../src/identity/password-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,2CAA2C;AAC3C,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAEtC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC;IACpC,IAAI,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACjC,OAAO,6BAA6B,mBAAmB,cAAc,CAAC;IACxE,CAAC;IACD,IAAI,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACjC,OAAO,iCAAiC,mBAAmB,cAAc,CAAC;IAC5E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import type { IdGeneratorPort, UUID } from "../core/ports.js";
|
|
2
|
+
import type { PolicyPermissionRepoPort, PolicyRepoPort } from "./ports.js";
|
|
3
|
+
/**
|
|
4
|
+
* @file Shared deprecate-old/grant-new permission migration mechanism
|
|
5
|
+
* (generalized from the `settings.write` ->
|
|
6
|
+
* `settings.definitions.manage` precedent already shipped ad hoc in
|
|
7
|
+
* `identity/seed.ts`/`identity/permissions.ts`; see
|
|
8
|
+
* `docs/decisions/permission-catalog-migration.md`).
|
|
9
|
+
*
|
|
10
|
+
* Purpose:
|
|
11
|
+
* A permission-string rename/split after real grants exist is a breaking
|
|
12
|
+
* migration. This module is
|
|
13
|
+
* the one place that fan-out runs, so Menus/Members/Analytics/Integrations
|
|
14
|
+
* remediation efforts each register their own `{from, to}` pair here instead of
|
|
15
|
+
* hand-rolling a fourth divergent copy of the same fix.
|
|
16
|
+
*
|
|
17
|
+
* How it relates to the project:
|
|
18
|
+
* - `registerPermissionMigration`/`listPermissionMigrations` are a small,
|
|
19
|
+
* in-process registry — pure metadata, no I/O, mirrors
|
|
20
|
+
* `permissions.ts`'s `PermissionCatalog.register` overwrite semantics.
|
|
21
|
+
* - `migrateDeprecatedPermissionGrants` is the actual grant fan-out: for
|
|
22
|
+
* every registered pair, every policy holding `from` gets every string in
|
|
23
|
+
* `to` it doesn't already hold. It is deliberately, structurally
|
|
24
|
+
* additive-only (INV-NEW-01) — there is no delete/update call against
|
|
25
|
+
* `policy_permissions` anywhere in this file.
|
|
26
|
+
* - Feature-agnostic by design: this module has zero knowledge of
|
|
27
|
+
* `navigation`/`settings`/any specific feature. Callers (e.g.
|
|
28
|
+
* `identity/permissions.ts`) register their own pairs.
|
|
29
|
+
*
|
|
30
|
+
* Architectural role:
|
|
31
|
+
* Security-adjacent domain logic (a bug here could fail-open (grant more than
|
|
32
|
+
* intended) or fail-closed (a policy silently missing a needed grant) across every
|
|
33
|
+
* feature that reuses it). The additive-only design bounds the fail-closed
|
|
34
|
+
* direction to "a required new permission is missing," never "an existing
|
|
35
|
+
* permission is removed." See `__tests__/permission-migrations.test.ts` for
|
|
36
|
+
* the dedicated fixture-driven certification required before any
|
|
37
|
+
* caller wires this into a live boot path.
|
|
38
|
+
*/
|
|
39
|
+
/** One registered deprecate-old/grant-new rename or split pair. */
|
|
40
|
+
export interface PermissionMigration {
|
|
41
|
+
/** The deprecated permission string. Never deleted from the catalog by this mechanism. */
|
|
42
|
+
readonly from: string;
|
|
43
|
+
/** The replacement permission string(s) every `from`-holding policy should also gain. */
|
|
44
|
+
readonly to: readonly string[];
|
|
45
|
+
/** Human-readable rationale, surfaced in docs/reviews — not interpreted by this module. */
|
|
46
|
+
readonly reason: string;
|
|
47
|
+
}
|
|
48
|
+
export interface MigrateDeprecatedPermissionGrantsDeps {
|
|
49
|
+
policyPermissions: PolicyPermissionRepoPort;
|
|
50
|
+
policies: PolicyRepoPort;
|
|
51
|
+
idGen: IdGeneratorPort;
|
|
52
|
+
workspaceId: UUID;
|
|
53
|
+
}
|
|
54
|
+
export interface MigrateDeprecatedPermissionGrantsResult {
|
|
55
|
+
/** Total new `policy_permissions` rows written across every policy and every registered pair. */
|
|
56
|
+
migratedGrantCount: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Register a `{from, to, reason}` rename/split pair for later fan-out.
|
|
60
|
+
* Idempotent: re-registering the same `from` overwrites the prior entry
|
|
61
|
+
* rather than duplicating it (matches `PermissionCatalog.register`'s
|
|
62
|
+
* existing overwrite semantics, `identity/permissions.ts`).
|
|
63
|
+
*
|
|
64
|
+
* @complexity O(1).
|
|
65
|
+
* @overallScore 100
|
|
66
|
+
*/
|
|
67
|
+
export declare function registerPermissionMigration(migration: PermissionMigration): void;
|
|
68
|
+
/** Enumerate every registered migration pair. */
|
|
69
|
+
export declare function listPermissionMigrations(): PermissionMigration[];
|
|
70
|
+
/**
|
|
71
|
+
* For every registered `{from, to}` pair, for every policy in the workspace
|
|
72
|
+
* holding `from`, ensure every string in `to` is also granted — adding only
|
|
73
|
+
* the rows that are missing. Never removes or mutates `from` (or any other
|
|
74
|
+
* existing row) — additive-only by construction (INV-NEW-01), so a failed or
|
|
75
|
+
* partial run leaves the system in its previous, still-functioning state.
|
|
76
|
+
*
|
|
77
|
+
* Safe to call on every boot (idempotent): a rerun with nothing new to add
|
|
78
|
+
* returns `migratedGrantCount: 0` (mirrors `migrateLegacyPresentationSettings`'s
|
|
79
|
+
* boot-safety precedent).
|
|
80
|
+
*
|
|
81
|
+
* @complexity O(p * m) where p = policies in the workspace, m = registered
|
|
82
|
+
* migration pairs; both are small, bounded collections in this app's shape.
|
|
83
|
+
* @overallScore 100
|
|
84
|
+
*/
|
|
85
|
+
export declare function migrateDeprecatedPermissionGrants(deps: MigrateDeprecatedPermissionGrantsDeps): Promise<MigrateDeprecatedPermissionGrantsResult>;
|
|
86
|
+
//# sourceMappingURL=permission-migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-migrations.d.ts","sourceRoot":"","sources":["../../src/identity/permission-migrations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,mEAAmE;AACnE,MAAM,WAAW,mBAAmB;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,yFAAyF;IACzF,QAAQ,CAAC,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,2FAA2F;IAC3F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,qCAAqC;IACpD,iBAAiB,EAAE,wBAAwB,CAAC;IAC5C,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,uCAAuC;IACtD,iGAAiG;IACjG,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAKD;;;;;;;;GAQG;AACH,wBAAgB,2BAA2B,CAAC,SAAS,EAAE,mBAAmB,GAAG,IAAI,CAEhF;AAED,iDAAiD;AACjD,wBAAgB,wBAAwB,IAAI,mBAAmB,EAAE,CAEhE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iCAAiC,CACrD,IAAI,EAAE,qCAAqC,GAC1C,OAAO,CAAC,uCAAuC,CAAC,CAmClD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** Module-singleton registry — keyed by `from` so re-registration overwrites (idempotent, matches `PermissionCatalog.register`). */
|
|
2
|
+
const registry = new Map();
|
|
3
|
+
/**
|
|
4
|
+
* Register a `{from, to, reason}` rename/split pair for later fan-out.
|
|
5
|
+
* Idempotent: re-registering the same `from` overwrites the prior entry
|
|
6
|
+
* rather than duplicating it (matches `PermissionCatalog.register`'s
|
|
7
|
+
* existing overwrite semantics, `identity/permissions.ts`).
|
|
8
|
+
*
|
|
9
|
+
* @complexity O(1).
|
|
10
|
+
* @overallScore 100
|
|
11
|
+
*/
|
|
12
|
+
export function registerPermissionMigration(migration) {
|
|
13
|
+
registry.set(migration.from, migration);
|
|
14
|
+
}
|
|
15
|
+
/** Enumerate every registered migration pair. */
|
|
16
|
+
export function listPermissionMigrations() {
|
|
17
|
+
return [...registry.values()];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* For every registered `{from, to}` pair, for every policy in the workspace
|
|
21
|
+
* holding `from`, ensure every string in `to` is also granted — adding only
|
|
22
|
+
* the rows that are missing. Never removes or mutates `from` (or any other
|
|
23
|
+
* existing row) — additive-only by construction (INV-NEW-01), so a failed or
|
|
24
|
+
* partial run leaves the system in its previous, still-functioning state.
|
|
25
|
+
*
|
|
26
|
+
* Safe to call on every boot (idempotent): a rerun with nothing new to add
|
|
27
|
+
* returns `migratedGrantCount: 0` (mirrors `migrateLegacyPresentationSettings`'s
|
|
28
|
+
* boot-safety precedent).
|
|
29
|
+
*
|
|
30
|
+
* @complexity O(p * m) where p = policies in the workspace, m = registered
|
|
31
|
+
* migration pairs; both are small, bounded collections in this app's shape.
|
|
32
|
+
* @overallScore 100
|
|
33
|
+
*/
|
|
34
|
+
export async function migrateDeprecatedPermissionGrants(deps) {
|
|
35
|
+
const migrations = listPermissionMigrations();
|
|
36
|
+
if (migrations.length === 0)
|
|
37
|
+
return { migratedGrantCount: 0 };
|
|
38
|
+
const policies = await deps.policies.list({ workspaceId: deps.workspaceId });
|
|
39
|
+
let migratedGrantCount = 0;
|
|
40
|
+
for (const policy of policies) {
|
|
41
|
+
const existing = await deps.policyPermissions.listByPolicyId({
|
|
42
|
+
workspaceId: deps.workspaceId,
|
|
43
|
+
policyId: policy.id,
|
|
44
|
+
});
|
|
45
|
+
const held = new Set(existing.map((row) => row.permission));
|
|
46
|
+
for (const migration of migrations) {
|
|
47
|
+
if (!held.has(migration.from))
|
|
48
|
+
continue;
|
|
49
|
+
for (const toPermission of migration.to) {
|
|
50
|
+
if (held.has(toPermission))
|
|
51
|
+
continue;
|
|
52
|
+
await deps.policyPermissions.save({
|
|
53
|
+
id: deps.idGen.newId(),
|
|
54
|
+
workspaceId: deps.workspaceId,
|
|
55
|
+
policyId: policy.id,
|
|
56
|
+
permission: toPermission,
|
|
57
|
+
resourceType: null,
|
|
58
|
+
constraintJson: null,
|
|
59
|
+
});
|
|
60
|
+
held.add(toPermission);
|
|
61
|
+
migratedGrantCount += 1;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { migratedGrantCount };
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=permission-migrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permission-migrations.js","sourceRoot":"","sources":["../../src/identity/permission-migrations.ts"],"names":[],"mappings":"AA8DA,oIAAoI;AACpI,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA+B,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,UAAU,2BAA2B,CAAC,SAA8B;IACxE,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AAC1C,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,wBAAwB;IACtC,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iCAAiC,CACrD,IAA2C;IAE3C,MAAM,UAAU,GAAG,wBAAwB,EAAE,CAAC;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC,EAAE,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC;YAC3D,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,MAAM,CAAC,EAAE;SACpB,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAE5D,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC;gBAAE,SAAS;YAExC,KAAK,MAAM,YAAY,IAAI,SAAS,CAAC,EAAE,EAAE,CAAC;gBACxC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC;oBAAE,SAAS;gBAErC,MAAM,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;oBAChC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;oBACtB,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,QAAQ,EAAE,MAAM,CAAC,EAAE;oBACnB,UAAU,EAAE,YAAY;oBACxB,YAAY,EAAE,IAAI;oBAClB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACvB,kBAAkB,IAAI,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAChC,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** One entry in the registered permission catalog. */
|
|
2
|
+
export interface PermissionDescriptor {
|
|
3
|
+
/** Dotted permission string, e.g. `"content.write"`. */
|
|
4
|
+
id: string;
|
|
5
|
+
/** Registering module, e.g. `"core"` or a feature name. */
|
|
6
|
+
owner: string;
|
|
7
|
+
description: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Code-side registry backing REQ-03's catalog validation and REQ-12's
|
|
11
|
+
* enumeration. `"*"` (the owner wildcard, REQ-04) is deliberately not a
|
|
12
|
+
* catalog entry — it is a distinct, built-in-only grant shape checked by
|
|
13
|
+
* `authorize()`/seed, never a registrable permission string.
|
|
14
|
+
*
|
|
15
|
+
* @complexity O(1) amortized per lookup (Map-backed); O(n) to list all.
|
|
16
|
+
* @overallScore 100
|
|
17
|
+
*/
|
|
18
|
+
declare class PermissionCatalog {
|
|
19
|
+
private readonly byId;
|
|
20
|
+
constructor(initial: readonly PermissionDescriptor[]);
|
|
21
|
+
/** Idempotent: re-registering the same `id` (e.g. on a warm reload) is a no-op overwrite. */
|
|
22
|
+
register(descriptor: PermissionDescriptor): void;
|
|
23
|
+
has(id: string): boolean;
|
|
24
|
+
list(): PermissionDescriptor[];
|
|
25
|
+
}
|
|
26
|
+
/** Module-singleton catalog — core's base vocabulary, extended by feature registration. */
|
|
27
|
+
export declare const permissionCatalog: PermissionCatalog;
|
|
28
|
+
/** Register an additional permission at feature startup (REQ-03). */
|
|
29
|
+
export declare function registerPermission(descriptor: PermissionDescriptor): void;
|
|
30
|
+
/** Enumerate the full registered catalog (REQ-12 core capability; CLI wiring is N/A, see file header). */
|
|
31
|
+
export declare function listPermissions(): PermissionDescriptor[];
|
|
32
|
+
/** Whether `id` is a recognized catalog permission. `"*"` is intentionally excluded (see class doc). */
|
|
33
|
+
export declare function isKnownPermission(id: string): boolean;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/identity/permissions.ts"],"names":[],"mappings":"AAsCA,sDAAsD;AACtD,MAAM,WAAW,oBAAoB;IACnC,wDAAwD;IACxD,EAAE,EAAE,MAAM,CAAC;IACX,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAmGD;;;;;;;;GAQG;AACH,cAAM,iBAAiB;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2C;gBAEpD,OAAO,EAAE,SAAS,oBAAoB,EAAE;IAIpD,6FAA6F;IAC7F,QAAQ,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI;IAIhD,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB,IAAI,IAAI,oBAAoB,EAAE;CAG/B;AAED,2FAA2F;AAC3F,eAAO,MAAM,iBAAiB,mBAAsC,CAAC;AAErE,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,oBAAoB,GAAG,IAAI,CAEzE;AAocD,0GAA0G;AAC1G,wBAAgB,eAAe,IAAI,oBAAoB,EAAE,CAExD;AAED,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAErD"}
|