@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 @@
|
|
|
1
|
+
{"version":3,"file":"repo.memory.js","sourceRoot":"","sources":["../../src/entries/repo.memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file Entries' half of the shared agent-tool-registration convention: maps `agent-tools.ts`'s 5
|
|
3
|
+
* catalog entries onto `write-service.ts`'s create/update/publish/unpublish and `list.ts`'s read, as
|
|
4
|
+
* `ToolRegistration`s. The entire catalog is wired — there is no delete/purge function to exclude
|
|
5
|
+
* and no cleanup ceremony in this domain (see `agent-tools.ts`'s own header for the 3 deliberate
|
|
6
|
+
* scope exclusions, none of which withhold a whole tool).
|
|
7
|
+
*
|
|
8
|
+
* Authorization shape, mixed and deliberately so: `createEntry`/`updateEntry`/`publishEntry`/
|
|
9
|
+
* `unpublishEntry` each call `deps.authorize({ permission: 'admin.collections.manage', ... })` as
|
|
10
|
+
* their own first line (confirmed directly against `write-service.ts`), so those four handlers must
|
|
11
|
+
* NOT re-check (the "one evaluator" rule). `listEntries` (`list.ts`) has no such call of its own —
|
|
12
|
+
* its file header says so explicitly ("no authorization of its own; the caller route checks
|
|
13
|
+
* `admin.collections.read` first") — so `collections_entry_list`'s handler performs that identical
|
|
14
|
+
* inline check itself, mirroring `entries/list.ts`'s admin route.
|
|
15
|
+
*/
|
|
16
|
+
import type { AuthorizeFn } from "../core/commands/command.js";
|
|
17
|
+
import type { OutboxPort } from "../core/ports.js";
|
|
18
|
+
import { type DerivedRiskByToolId, type ToolRegistration } from "../core/tools/registration-kit.js";
|
|
19
|
+
import { type EntryListPort } from "./list.js";
|
|
20
|
+
import { type ContentTypeLookupPort, type EntryRepoPort } from "./write-service.js";
|
|
21
|
+
/**
|
|
22
|
+
* The exact slice of the route-deps bag Entries' tool handlers read. Declared structurally (rather
|
|
23
|
+
* than importing `server/routes/types`'s `RouteDeps`) so this module carries no back-edge into the
|
|
24
|
+
* composition root. `server/routes/*` satisfies this structurally by passing its existing
|
|
25
|
+
* `RouteDeps` object; nothing there changes.
|
|
26
|
+
*
|
|
27
|
+
* `contentTypeRepo` is typed as `write-service.ts`'s own `ContentTypeLookupPort` — the narrow
|
|
28
|
+
* lookup contract Entries itself declares, not content-types' full `ContentTypeRepoPort` — mirroring
|
|
29
|
+
* `RouteDeps`'s own doc comment on this field ("satisfies entries' `ContentTypeLookupPort`
|
|
30
|
+
* structurally").
|
|
31
|
+
*/
|
|
32
|
+
export interface EntriesToolDeps {
|
|
33
|
+
authorize: AuthorizeFn;
|
|
34
|
+
workspaceId: string;
|
|
35
|
+
clock: {
|
|
36
|
+
nowIso(): string;
|
|
37
|
+
};
|
|
38
|
+
idGen: {
|
|
39
|
+
newId(): string;
|
|
40
|
+
};
|
|
41
|
+
outbox: OutboxPort;
|
|
42
|
+
entryRepo: EntryRepoPort & EntryListPort;
|
|
43
|
+
contentTypeRepo: ContentTypeLookupPort;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* This wiring layer's OWN risk classification, authored from what each handler below actually
|
|
47
|
+
* calls. See `DerivedRiskByToolId` in the kit for why it is independent of the catalog's own
|
|
48
|
+
* `sideEffects` declaration.
|
|
49
|
+
*/
|
|
50
|
+
export declare const entriesDerivedRisk: DerivedRiskByToolId;
|
|
51
|
+
export declare function buildEntriesRegistrations(routeDeps: EntriesToolDeps): ToolRegistration[];
|
|
52
|
+
//# sourceMappingURL=tool-registrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registrations.d.ts","sourceRoot":"","sources":["../../src/entries/tool-registrations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAYL,KAAK,mBAAmB,EAExB,KAAK,gBAAgB,EACtB,MAAM,mCAAmC,CAAC;AAG3C,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,EAA0D,KAAK,qBAAqB,EAAE,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAK5I;;;;;;;;;;GAUG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,MAAM,IAAI,MAAM,CAAA;KAAE,CAAC;IAC5B,KAAK,EAAE;QAAE,KAAK,IAAI,MAAM,CAAA;KAAE,CAAC;IAC3B,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,aAAa,GAAG,aAAa,CAAC;IACzC,eAAe,EAAE,qBAAqB,CAAC;CACxC;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,mBAW/B,CAAC;AA8DH,wBAAgB,yBAAyB,CAAC,SAAS,EAAE,eAAe,GAAG,gBAAgB,EAAE,CA4FxF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { AGENT_TOOL_PRINCIPAL_KIND, buildDomainRegistrations, fromResult, indexCatalogById, optionalString, requireInputRecord, requireNumber, requireString, requireToolPermission, withSchemaOnRejection, } from "../core/tools/registration-kit.js";
|
|
2
|
+
import { entriesAgentToolCatalog } from "./agent-tools.js";
|
|
3
|
+
import { EntryFieldValidationError } from "./errors.js";
|
|
4
|
+
import { listEntries } from "./list.js";
|
|
5
|
+
import { createEntry, publishEntry, unpublishEntry, updateEntry } from "./write-service.js";
|
|
6
|
+
import { toEntryOutbox } from "./repo.memory.js";
|
|
7
|
+
const CATALOG_BY_ID = indexCatalogById(entriesAgentToolCatalog);
|
|
8
|
+
/**
|
|
9
|
+
* This wiring layer's OWN risk classification, authored from what each handler below actually
|
|
10
|
+
* calls. See `DerivedRiskByToolId` in the kit for why it is independent of the catalog's own
|
|
11
|
+
* `sideEffects` declaration.
|
|
12
|
+
*/
|
|
13
|
+
export const entriesDerivedRisk = new Map([
|
|
14
|
+
// -> listEntries (list.ts): entryRepo.listByWorkspace only, no write.
|
|
15
|
+
["collections_entry_list", "none"],
|
|
16
|
+
// -> createEntry (write-service.ts): entryRepo.save + appendRevision in one tx.
|
|
17
|
+
["collections_entry_create", "mutates-durable-state"],
|
|
18
|
+
// -> updateEntry (write-service.ts): entryRepo.save + appendRevision in one tx.
|
|
19
|
+
["collections_entry_update", "mutates-durable-state"],
|
|
20
|
+
// -> publishEntry (write-service.ts): status flip, save + appendRevision.
|
|
21
|
+
["collections_entry_publish", "mutates-durable-state"],
|
|
22
|
+
// -> unpublishEntry (write-service.ts): status flip, save + appendRevision.
|
|
23
|
+
["collections_entry_unpublish", "mutates-durable-state"],
|
|
24
|
+
]);
|
|
25
|
+
/**
|
|
26
|
+
* The Entries rejections worth decorating with the published schema: `fieldsJson` SHAPE problems
|
|
27
|
+
* only. A not-found, a tombstoned-type rejection, or a version conflict is not a shape problem
|
|
28
|
+
* retrying the SAME input would ever resolve.
|
|
29
|
+
*/
|
|
30
|
+
function isEntriesShapeRejection(error) {
|
|
31
|
+
return error instanceof EntryFieldValidationError;
|
|
32
|
+
}
|
|
33
|
+
/** Shared dependency bag for `write-service.ts` calls — every mutating handler here takes this
|
|
34
|
+
* identical shape (a superset of what `updateEntry`/`publishEntry`/`unpublishEntry` individually
|
|
35
|
+
* need; passing the extra `ids` field to those is harmless since none of them declare it). */
|
|
36
|
+
function entriesDeps(routeDeps) {
|
|
37
|
+
return {
|
|
38
|
+
entryRepo: routeDeps.entryRepo,
|
|
39
|
+
contentTypeRepo: routeDeps.contentTypeRepo,
|
|
40
|
+
clock: routeDeps.clock,
|
|
41
|
+
ids: routeDeps.idGen,
|
|
42
|
+
authorize: routeDeps.authorize,
|
|
43
|
+
outbox: toEntryOutbox(routeDeps),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/** Projects an `EntryRecord` into the explicit model-facing shape — `workspaceId` is dropped: the
|
|
47
|
+
* agent is already scoped to one workspace it did not choose and cannot change. */
|
|
48
|
+
function toEntryToolView(entry) {
|
|
49
|
+
return {
|
|
50
|
+
id: entry.id,
|
|
51
|
+
type: entry.type,
|
|
52
|
+
slug: entry.slug,
|
|
53
|
+
status: entry.status,
|
|
54
|
+
title: entry.title,
|
|
55
|
+
fieldsJson: entry.fieldsJson,
|
|
56
|
+
bodyJson: entry.bodyJson,
|
|
57
|
+
publishedAt: entry.publishedAt,
|
|
58
|
+
createdAt: entry.createdAt,
|
|
59
|
+
updatedAt: entry.updatedAt,
|
|
60
|
+
version: entry.version,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function fromEntryResult(fn) {
|
|
64
|
+
return fromResult(fn).then(({ entry }) => ({ entry: toEntryToolView(entry) }));
|
|
65
|
+
}
|
|
66
|
+
export function buildEntriesRegistrations(routeDeps) {
|
|
67
|
+
const handlers = {
|
|
68
|
+
collections_entry_list: async (ctx) => {
|
|
69
|
+
const input = ctx.input !== undefined ? requireInputRecord(ctx.input) : {};
|
|
70
|
+
await requireToolPermission(routeDeps, { principalId: ctx.principal.id, permission: "admin.collections.read", entityType: "entry" });
|
|
71
|
+
const { items } = await listEntries({ repo: routeDeps.entryRepo, workspaceId: routeDeps.workspaceId, type: optionalString(input, "type") });
|
|
72
|
+
return { items: items.map(toEntryToolView) };
|
|
73
|
+
},
|
|
74
|
+
collections_entry_create: async (ctx) => {
|
|
75
|
+
const input = requireInputRecord(ctx.input);
|
|
76
|
+
return withSchemaOnRejection({ toolId: "collections_entry_create", catalog: CATALOG_BY_ID, isShapeRejection: isEntriesShapeRejection }, () => fromEntryResult(() => createEntry({
|
|
77
|
+
deps: entriesDeps(routeDeps),
|
|
78
|
+
input: {
|
|
79
|
+
actorId: ctx.principal.id,
|
|
80
|
+
principalKind: AGENT_TOOL_PRINCIPAL_KIND,
|
|
81
|
+
workspaceId: routeDeps.workspaceId,
|
|
82
|
+
type: requireString(input, "type"),
|
|
83
|
+
slug: requireString(input, "slug"),
|
|
84
|
+
title: requireString(input, "title"),
|
|
85
|
+
fieldsJson: input.fieldsJson ?? { ext: { site: {} } },
|
|
86
|
+
bodyJson: input.bodyJson,
|
|
87
|
+
},
|
|
88
|
+
})));
|
|
89
|
+
},
|
|
90
|
+
collections_entry_update: async (ctx) => {
|
|
91
|
+
const input = requireInputRecord(ctx.input);
|
|
92
|
+
return withSchemaOnRejection({ toolId: "collections_entry_update", catalog: CATALOG_BY_ID, isShapeRejection: isEntriesShapeRejection }, () => fromEntryResult(() => updateEntry({
|
|
93
|
+
deps: entriesDeps(routeDeps),
|
|
94
|
+
input: {
|
|
95
|
+
actorId: ctx.principal.id,
|
|
96
|
+
principalKind: AGENT_TOOL_PRINCIPAL_KIND,
|
|
97
|
+
workspaceId: routeDeps.workspaceId,
|
|
98
|
+
id: requireString(input, "id"),
|
|
99
|
+
title: typeof input.title === "string" ? input.title : undefined,
|
|
100
|
+
fieldsJson: input.fieldsJson,
|
|
101
|
+
expectedVersion: requireNumber(input, "expectedVersion"),
|
|
102
|
+
},
|
|
103
|
+
})));
|
|
104
|
+
},
|
|
105
|
+
collections_entry_publish: async (ctx) => {
|
|
106
|
+
const input = requireInputRecord(ctx.input);
|
|
107
|
+
return fromEntryResult(() => publishEntry({
|
|
108
|
+
deps: entriesDeps(routeDeps),
|
|
109
|
+
input: {
|
|
110
|
+
actorId: ctx.principal.id,
|
|
111
|
+
principalKind: AGENT_TOOL_PRINCIPAL_KIND,
|
|
112
|
+
workspaceId: routeDeps.workspaceId,
|
|
113
|
+
id: requireString(input, "id"),
|
|
114
|
+
expectedVersion: requireNumber(input, "expectedVersion"),
|
|
115
|
+
},
|
|
116
|
+
}));
|
|
117
|
+
},
|
|
118
|
+
collections_entry_unpublish: async (ctx) => {
|
|
119
|
+
const input = requireInputRecord(ctx.input);
|
|
120
|
+
return fromEntryResult(() => unpublishEntry({
|
|
121
|
+
deps: entriesDeps(routeDeps),
|
|
122
|
+
input: {
|
|
123
|
+
actorId: ctx.principal.id,
|
|
124
|
+
principalKind: AGENT_TOOL_PRINCIPAL_KIND,
|
|
125
|
+
workspaceId: routeDeps.workspaceId,
|
|
126
|
+
id: requireString(input, "id"),
|
|
127
|
+
expectedVersion: requireNumber(input, "expectedVersion"),
|
|
128
|
+
},
|
|
129
|
+
}));
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
// No `unwiredToolIds`: Entries wires its ENTIRE catalog, same tripwire discipline as Widgets/Forms.
|
|
133
|
+
return buildDomainRegistrations({
|
|
134
|
+
domain: "entries",
|
|
135
|
+
catalogModule: "features/entries/agent-tools.ts",
|
|
136
|
+
catalog: CATALOG_BY_ID,
|
|
137
|
+
handlers,
|
|
138
|
+
derivedRisk: entriesDerivedRisk,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=tool-registrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registrations.js","sourceRoot":"","sources":["../../src/entries/tool-registrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { ContentTypeFieldDef, ContentTypeStatus } from "../content-types/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* @file Shared vocabulary for the `entries` package.
|
|
4
|
+
*
|
|
5
|
+
* Purpose:
|
|
6
|
+
* The `EntryRecord` shape (the universal columns + the namespaced `fields.ext.{owner}.*`
|
|
7
|
+
* bag) and the read-only slice of a content type this package needs (`fields`/`status`/
|
|
8
|
+
* `workspaceId`) — imported by type only from `features/content-types`, never a runtime value, so
|
|
9
|
+
* this package never calls into content-types' write path directly.
|
|
10
|
+
*
|
|
11
|
+
* Architectural role:
|
|
12
|
+
* `features/entries` domain vocabulary. Type-only dependency on `features/content-types/types`.
|
|
13
|
+
*/
|
|
14
|
+
export type EntryStatus = "draft" | "published" | "unpublished";
|
|
15
|
+
/** The validated, namespaced field-extension envelope: `{ ext: { site: {...} } }`. */
|
|
16
|
+
export interface EntryFieldsJson {
|
|
17
|
+
ext: {
|
|
18
|
+
site: Record<string, unknown>;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface EntryRecord {
|
|
22
|
+
id: string;
|
|
23
|
+
workspaceId: string;
|
|
24
|
+
type: string;
|
|
25
|
+
slug: string;
|
|
26
|
+
status: EntryStatus;
|
|
27
|
+
title: string;
|
|
28
|
+
bodyJson: unknown | null;
|
|
29
|
+
fieldsJson: unknown;
|
|
30
|
+
publishedAt: string | null;
|
|
31
|
+
createdAt: string;
|
|
32
|
+
updatedAt: string;
|
|
33
|
+
version: number;
|
|
34
|
+
}
|
|
35
|
+
/** The read-only slice of a `content_types` row entries need — never entries' own write authority. */
|
|
36
|
+
export interface OwningContentType {
|
|
37
|
+
workspaceId: string;
|
|
38
|
+
key: string;
|
|
39
|
+
status: ContentTypeStatus;
|
|
40
|
+
fields: ContentTypeFieldDef[];
|
|
41
|
+
}
|
|
42
|
+
export interface ActorIdentityInput {
|
|
43
|
+
actorId: string;
|
|
44
|
+
principalKind?: "user" | "agent" | "api_key";
|
|
45
|
+
delegatedByWorkspaceId?: string | null;
|
|
46
|
+
delegatedById?: string | null;
|
|
47
|
+
}
|
|
48
|
+
export type Result<T, E> = {
|
|
49
|
+
ok: true;
|
|
50
|
+
value: T;
|
|
51
|
+
} | {
|
|
52
|
+
ok: false;
|
|
53
|
+
error: E;
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/entries/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAExF;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,WAAW,GAAG,aAAa,CAAC;AAEhE,sFAAsF;AACtF,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;CACxC;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,sGAAsG;AACtG,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,mBAAmB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7C,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entries/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import type { ClockPort } from "../core/ports.js";
|
|
2
|
+
import type { ActorIdentityInput, EntryRecord, OwningContentType, Result } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* @file The `entries` write chokepoint: `createEntry`,
|
|
5
|
+
* `updateEntry`, `publishEntry`, `unpublishEntry`.
|
|
6
|
+
*
|
|
7
|
+
* Purpose:
|
|
8
|
+
* The ONLY path that creates or mutates an `entries` row. `createEntry` validates the owning
|
|
9
|
+
* content type exists IN THIS WORKSPACE (a soft polymorphic reference, so a same-key type
|
|
10
|
+
* owned by a different workspace must never be silently accepted), is `active` (new-entry
|
|
11
|
+
* creation is blocked for both `deprecated` and `tombstone` owning types), and that `(workspaceId,
|
|
12
|
+
* type, slug)` is unique before writing.
|
|
13
|
+
*
|
|
14
|
+
* `updateEntry`/`publishEntry`/`unpublishEntry` invert that rule: only a
|
|
15
|
+
* `tombstone` owning type blocks these; `deprecated` blocks none of them —
|
|
16
|
+
* deprecation only ever stops NEW entries, never touches entries that already exist.
|
|
17
|
+
*
|
|
18
|
+
* How it relates to the project:
|
|
19
|
+
* `deps.watermark` and the actor-identity delegation fields mirror
|
|
20
|
+
* `features/content-types/write-service.ts`'s identical optional/additive shape —
|
|
21
|
+
* `watermark-stamping.integration.test.ts` exercises both packages side by side to prove they
|
|
22
|
+
* share the same chokepoint discipline.
|
|
23
|
+
*
|
|
24
|
+
* Architectural role:
|
|
25
|
+
* `features/entries` domain logic. Depends only on `core/ports` and this package's own
|
|
26
|
+
* `errors.ts`/`field-validation.ts`/`types.ts` — never on `features/content-types`' write path,
|
|
27
|
+
* only its read-only `OwningContentType` type shape.
|
|
28
|
+
*/
|
|
29
|
+
export type AuthorizeFn = (params: {
|
|
30
|
+
principalId: string;
|
|
31
|
+
permission: string;
|
|
32
|
+
workspaceId: string;
|
|
33
|
+
}) => Promise<{
|
|
34
|
+
allowed: boolean;
|
|
35
|
+
reason: string;
|
|
36
|
+
}>;
|
|
37
|
+
export interface EntryRevisionInput {
|
|
38
|
+
entryId: string;
|
|
39
|
+
workspaceId: string;
|
|
40
|
+
op: "create" | "update" | "publish" | "unpublish";
|
|
41
|
+
stateJson: EntryRecord;
|
|
42
|
+
actorId: string;
|
|
43
|
+
delegatedByWorkspaceId: string | null;
|
|
44
|
+
delegatedById: string | null;
|
|
45
|
+
recordedAt: string;
|
|
46
|
+
}
|
|
47
|
+
export interface EntryRepoPort {
|
|
48
|
+
findBySlug(params: {
|
|
49
|
+
workspaceId: string;
|
|
50
|
+
type: string;
|
|
51
|
+
slug: string;
|
|
52
|
+
}): Promise<EntryRecord | null>;
|
|
53
|
+
findById(params: {
|
|
54
|
+
workspaceId: string;
|
|
55
|
+
id: string;
|
|
56
|
+
}): Promise<EntryRecord | null>;
|
|
57
|
+
save(row: EntryRecord): Promise<void>;
|
|
58
|
+
appendRevision(revision: EntryRevisionInput): Promise<void>;
|
|
59
|
+
transaction<T>(fn: () => Promise<T>): Promise<T>;
|
|
60
|
+
}
|
|
61
|
+
export interface ContentTypeLookupPort {
|
|
62
|
+
findByKey(params: {
|
|
63
|
+
workspaceId: string;
|
|
64
|
+
key: string;
|
|
65
|
+
}): Promise<OwningContentType | null>;
|
|
66
|
+
}
|
|
67
|
+
export interface OutboxPort {
|
|
68
|
+
enqueue(event: {
|
|
69
|
+
name: string;
|
|
70
|
+
payload: Record<string, unknown>;
|
|
71
|
+
}): Promise<void>;
|
|
72
|
+
}
|
|
73
|
+
/** Optional — advances `database_write_watermark` by exactly 1 when supplied. */
|
|
74
|
+
export interface WatermarkPort {
|
|
75
|
+
stampWatermark(input: {
|
|
76
|
+
workspaceId: string;
|
|
77
|
+
}): Promise<number>;
|
|
78
|
+
}
|
|
79
|
+
export interface CreateEntryRequired {
|
|
80
|
+
deps: {
|
|
81
|
+
entryRepo: EntryRepoPort;
|
|
82
|
+
contentTypeRepo: ContentTypeLookupPort;
|
|
83
|
+
clock: ClockPort;
|
|
84
|
+
ids: {
|
|
85
|
+
newId: () => string;
|
|
86
|
+
};
|
|
87
|
+
authorize: AuthorizeFn;
|
|
88
|
+
outbox: OutboxPort;
|
|
89
|
+
watermark?: WatermarkPort;
|
|
90
|
+
/**
|
|
91
|
+
* Optional same-transaction side effect (e.g. a feature's `entry_refs` extractor), invoked
|
|
92
|
+
* inside the write's own `entryRepo.transaction()` block, after `save`/`appendRevision` but
|
|
93
|
+
* before commit — so a failure here rolls back the whole write, same unit of work, not a
|
|
94
|
+
* best-effort follow-up call. Purely additive: omit it and behavior is unchanged.
|
|
95
|
+
*/
|
|
96
|
+
onWritten?: (entry: EntryRecord) => Promise<void>;
|
|
97
|
+
};
|
|
98
|
+
input: ActorIdentityInput & {
|
|
99
|
+
workspaceId: string;
|
|
100
|
+
type: string;
|
|
101
|
+
slug: string;
|
|
102
|
+
title: string;
|
|
103
|
+
fieldsJson: unknown;
|
|
104
|
+
bodyJson?: unknown;
|
|
105
|
+
/** The `ext` sub-key `fieldsJson` is namespaced under. Defaults to `"site"` — see `field-validation.ts`'s `validateFieldsAgainstSchema`. */
|
|
106
|
+
owner?: string | undefined;
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* REQ-13/14/19 — creates a new entry. Order: authorize -> owning-type exists AND is owned by this
|
|
111
|
+
* workspace (INV-01) -> owning-type is `active` (REQ-10) -> `fieldsJson` validates against the
|
|
112
|
+
* type's current schema -> `(workspaceId, type, slug)` uniqueness (AC-21) -> same-tx write +
|
|
113
|
+
* revision + watermark + optional `deps.onWritten` side effect -> `entry.created` outbox event
|
|
114
|
+
* (AC-27).
|
|
115
|
+
*
|
|
116
|
+
* @complexity O(1) plus one content-type read, one field-validation pass, one slug lookup, and one
|
|
117
|
+
* same-tx write pair.
|
|
118
|
+
* @overallScore 100
|
|
119
|
+
*/
|
|
120
|
+
export declare function createEntry(required: CreateEntryRequired): Promise<Result<{
|
|
121
|
+
entry: EntryRecord;
|
|
122
|
+
}, Error>>;
|
|
123
|
+
interface ExistingEntryTransitionDeps {
|
|
124
|
+
entryRepo: EntryRepoPort;
|
|
125
|
+
contentTypeRepo: ContentTypeLookupPort;
|
|
126
|
+
clock: ClockPort;
|
|
127
|
+
authorize: AuthorizeFn;
|
|
128
|
+
outbox: OutboxPort;
|
|
129
|
+
watermark?: WatermarkPort;
|
|
130
|
+
/** Optional same-transaction side effect — see `CreateEntryRequired.deps.onWritten`. Only `updateEntry` invokes it; `publishEntry`/`unpublishEntry` don't change `fieldsJson`/`bodyJson`, so they have nothing to re-extract. */
|
|
131
|
+
onWritten?: (entry: EntryRecord) => Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
export interface UpdateEntryRequired {
|
|
134
|
+
deps: ExistingEntryTransitionDeps;
|
|
135
|
+
input: ActorIdentityInput & {
|
|
136
|
+
workspaceId: string;
|
|
137
|
+
id: string;
|
|
138
|
+
title?: string | undefined;
|
|
139
|
+
fieldsJson?: unknown;
|
|
140
|
+
/**
|
|
141
|
+
* Additive-only, optional. Every pre-existing caller omits this and is byte-for-byte
|
|
142
|
+
* unaffected (verified via a full-suite run before/after this change — see the widgets
|
|
143
|
+
* implementation report's identical `onWritten` precedent for the same verification
|
|
144
|
+
* discipline). Closes a real, previously-disclosed gap: no path existed to change an entry's
|
|
145
|
+
* `bodyJson` after creation (only `createEntry` accepted it), which blocked a server-side,
|
|
146
|
+
* versioned document-mutation command for widgetEmbed nodes — that command IS an
|
|
147
|
+
* `updateEntry` call with a mutated `bodyJson`, through the SAME chokepoint, `expectedVersion`
|
|
148
|
+
* guard, and revision machinery every other update already uses, not a second mutation path.
|
|
149
|
+
* No schema validation is applied to `bodyJson` here (none is applied anywhere else in this
|
|
150
|
+
* codebase either — every existing `bodyJson` writer, e.g. `CollectionEntryEditor.tsx`'s
|
|
151
|
+
* create call, already writes arbitrary TipTap JSON unchecked); `widgets/embed-service.ts` is
|
|
152
|
+
* responsible for its own guardrail check (`validateWidgetEmbedMutation`) before ever calling
|
|
153
|
+
* this.
|
|
154
|
+
*/
|
|
155
|
+
bodyJson?: unknown;
|
|
156
|
+
expectedVersion: number;
|
|
157
|
+
/** The `ext` sub-key `fieldsJson` is namespaced under. Defaults to `"site"` — see `field-validation.ts`'s `validateFieldsAgainstSchema`. */
|
|
158
|
+
owner?: string | undefined;
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* REQ-28 — updates an existing entry's `title`/`fieldsJson`/`bodyJson` (only the fields supplied
|
|
163
|
+
* are changed). Rejected `ContentTypeNotActiveError` only if the owning type is `tombstone`
|
|
164
|
+
* (AC-44/EC-13); a `deprecated` owning type is fine (AC-46).
|
|
165
|
+
*
|
|
166
|
+
* @complexity O(1) plus the shared resolve step and, when `fieldsJson` is supplied, one
|
|
167
|
+
* field-validation pass.
|
|
168
|
+
* @overallScore 100
|
|
169
|
+
*/
|
|
170
|
+
export declare function updateEntry(required: UpdateEntryRequired): Promise<Result<{
|
|
171
|
+
entry: EntryRecord;
|
|
172
|
+
}, Error>>;
|
|
173
|
+
export interface PublishUnpublishEntryRequired {
|
|
174
|
+
deps: ExistingEntryTransitionDeps;
|
|
175
|
+
input: ActorIdentityInput & {
|
|
176
|
+
workspaceId: string;
|
|
177
|
+
id: string;
|
|
178
|
+
expectedVersion: number;
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* REQ-28 — flips an entry to `published`. Rejected `ContentTypeNotActiveError` only if the owning
|
|
183
|
+
* type is `tombstone` (AC-45), with NO outbox event enqueued on rejection.
|
|
184
|
+
*
|
|
185
|
+
* @complexity O(1) plus the shared resolve step and one same-tx write pair.
|
|
186
|
+
* @overallScore 100
|
|
187
|
+
*/
|
|
188
|
+
export declare function publishEntry(required: PublishUnpublishEntryRequired): Promise<Result<{
|
|
189
|
+
entry: EntryRecord;
|
|
190
|
+
}, Error>>;
|
|
191
|
+
/**
|
|
192
|
+
* REQ-28 — flips an entry to `unpublished`. Rejected `ContentTypeNotActiveError` only if the
|
|
193
|
+
* owning type is `tombstone` (AC-45), with NO outbox event enqueued on rejection.
|
|
194
|
+
*
|
|
195
|
+
* @complexity O(1) plus the shared resolve step and one same-tx write pair.
|
|
196
|
+
* @overallScore 100
|
|
197
|
+
*/
|
|
198
|
+
export declare function unpublishEntry(required: PublishUnpublishEntryRequired): Promise<Result<{
|
|
199
|
+
entry: EntryRecord;
|
|
200
|
+
}, Error>>;
|
|
201
|
+
export {};
|
|
202
|
+
//# sourceMappingURL=write-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write-service.d.ts","sourceRoot":"","sources":["../../src/entries/write-service.ts"],"names":[],"mappings":"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"}
|