@aphexcms/cms-core 9.6.0 → 9.8.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/dist/agent-chat-state.svelte.d.ts +38 -0
- package/dist/agent-chat-state.svelte.d.ts.map +1 -0
- package/dist/agent-chat-state.svelte.js +86 -0
- package/dist/ai/content-workspace-tools.d.ts +3 -0
- package/dist/ai/content-workspace-tools.d.ts.map +1 -0
- package/dist/ai/content-workspace-tools.js +50 -0
- package/dist/ai/default-system-prompt.d.ts +2 -0
- package/dist/ai/default-system-prompt.d.ts.map +1 -0
- package/dist/ai/default-system-prompt.js +15 -0
- package/dist/ai/index.d.ts +2 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +4 -0
- package/dist/ai/interfaces/ai-provider.d.ts +67 -0
- package/dist/ai/interfaces/ai-provider.d.ts.map +1 -0
- package/dist/ai/interfaces/ai-provider.js +16 -0
- package/dist/ai/run-agent-turn.d.ts +29 -0
- package/dist/ai/run-agent-turn.d.ts.map +1 -0
- package/dist/ai/run-agent-turn.js +166 -0
- package/dist/api/agent-chat.d.ts +27 -0
- package/dist/api/agent-chat.d.ts.map +1 -0
- package/dist/api/agent-chat.js +64 -0
- package/dist/api/documents.d.ts +36 -3
- package/dist/api/documents.d.ts.map +1 -1
- package/dist/api/documents.js +24 -6
- package/dist/api/schemas/agent-chat.d.ts +45 -0
- package/dist/api/schemas/agent-chat.d.ts.map +1 -0
- package/dist/api/schemas/agent-chat.js +35 -0
- package/dist/api/schemas/agent-operations.d.ts +13 -0
- package/dist/api/schemas/agent-operations.d.ts.map +1 -0
- package/dist/api/schemas/agent-operations.js +15 -0
- package/dist/api/schemas/documents.d.ts +41 -0
- package/dist/api/schemas/documents.d.ts.map +1 -1
- package/dist/api/schemas/documents.js +38 -2
- package/dist/chunk-recovery.d.ts +33 -0
- package/dist/chunk-recovery.d.ts.map +1 -0
- package/dist/chunk-recovery.js +131 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -0
- package/dist/client/ui.d.ts +2 -0
- package/dist/client/ui.d.ts.map +1 -1
- package/dist/client/ui.js +3 -0
- package/dist/components/AdminApp.svelte +37 -3
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/ActivityView.svelte +436 -0
- package/dist/components/admin/ActivityView.svelte.d.ts +4 -0
- package/dist/components/admin/ActivityView.svelte.d.ts.map +1 -0
- package/dist/components/admin/AgentChat.svelte +977 -0
- package/dist/components/admin/AgentChat.svelte.d.ts +17 -0
- package/dist/components/admin/AgentChat.svelte.d.ts.map +1 -0
- package/dist/components/admin/DocumentEditor.svelte +469 -70
- package/dist/components/admin/DocumentEditor.svelte.d.ts +6 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/ObjectModal.svelte +4 -2
- package/dist/components/admin/ScheduleDialog.svelte +174 -0
- package/dist/components/admin/ScheduleDialog.svelte.d.ts +20 -0
- package/dist/components/admin/ScheduleDialog.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/ArrayField.svelte +4 -1
- package/dist/components/admin/fields/ReferenceField.svelte +12 -1
- package/dist/components/admin/fields/ReferenceField.svelte.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +1 -0
- package/dist/components/layout/OrganizationSwitcher.svelte +3 -3
- package/dist/components/layout/Sidebar.svelte +26 -2
- package/dist/components/layout/Sidebar.svelte.d.ts +1 -0
- package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/NavUser.svelte +5 -5
- package/dist/db/interfaces/agent-change-sets.d.ts +17 -0
- package/dist/db/interfaces/agent-change-sets.d.ts.map +1 -0
- package/dist/db/interfaces/agent-change-sets.js +1 -0
- package/dist/db/interfaces/document.d.ts +25 -3
- package/dist/db/interfaces/document.d.ts.map +1 -1
- package/dist/db/interfaces/document.js +19 -1
- package/dist/db/interfaces/events.d.ts +55 -0
- package/dist/db/interfaces/events.d.ts.map +1 -0
- package/dist/db/interfaces/events.js +1 -0
- package/dist/db/interfaces/index.d.ts +13 -2
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/db/interfaces/index.js +1 -1
- package/dist/db/interfaces/plugin-storage.d.ts +39 -0
- package/dist/db/interfaces/plugin-storage.d.ts.map +1 -0
- package/dist/db/interfaces/plugin-storage.js +1 -0
- package/dist/document-refresh.svelte.d.ts +2 -0
- package/dist/document-refresh.svelte.d.ts.map +1 -1
- package/dist/document-refresh.svelte.js +15 -0
- package/dist/document-workspace-registry.svelte.d.ts +15 -0
- package/dist/document-workspace-registry.svelte.d.ts.map +1 -0
- package/dist/document-workspace-registry.svelte.js +30 -0
- package/dist/events/catalog.d.ts +8 -0
- package/dist/events/catalog.d.ts.map +1 -0
- package/dist/events/catalog.js +11 -0
- package/dist/events/consumer.d.ts +79 -0
- package/dist/events/consumer.d.ts.map +1 -0
- package/dist/events/consumer.js +76 -0
- package/dist/events/define-event.d.ts +17 -0
- package/dist/events/define-event.d.ts.map +1 -0
- package/dist/events/define-event.js +7 -0
- package/dist/events/emit.d.ts +11 -0
- package/dist/events/emit.d.ts.map +1 -0
- package/dist/events/emit.js +20 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +3 -0
- package/dist/field-validation/rule.d.ts.map +1 -1
- package/dist/field-validation/rule.js +15 -0
- package/dist/field-validation/utils.d.ts.map +1 -1
- package/dist/field-validation/utils.js +211 -29
- package/dist/forms/define-form.d.ts +25 -0
- package/dist/forms/define-form.d.ts.map +1 -0
- package/dist/forms/define-form.js +22 -0
- package/dist/forms/index.d.ts +4 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +5 -0
- package/dist/forms/types.d.ts +49 -0
- package/dist/forms/types.d.ts.map +1 -0
- package/dist/forms/types.js +1 -0
- package/dist/forms/validate.d.ts +9 -0
- package/dist/forms/validate.d.ts.map +1 -0
- package/dist/forms/validate.js +18 -0
- package/dist/hooks.d.ts +2 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +17 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -0
- package/dist/jobs/document-jobs.d.ts +27 -0
- package/dist/jobs/document-jobs.d.ts.map +1 -0
- package/dist/jobs/document-jobs.js +42 -0
- package/dist/jobs/embedded-runner.d.ts +25 -0
- package/dist/jobs/embedded-runner.d.ts.map +1 -0
- package/dist/jobs/embedded-runner.js +46 -0
- package/dist/jobs/index.d.ts +7 -0
- package/dist/jobs/index.d.ts.map +1 -0
- package/dist/jobs/index.js +8 -0
- package/dist/jobs/relay.d.ts +27 -0
- package/dist/jobs/relay.d.ts.map +1 -0
- package/dist/jobs/relay.js +60 -0
- package/dist/jobs/run-batch.d.ts +52 -0
- package/dist/jobs/run-batch.d.ts.map +1 -0
- package/dist/jobs/run-batch.js +61 -0
- package/dist/jobs/run-due-jobs.d.ts +30 -0
- package/dist/jobs/run-due-jobs.d.ts.map +1 -0
- package/dist/jobs/run-due-jobs.js +69 -0
- package/dist/jobs/types.d.ts +18 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +1 -0
- package/dist/lib/agent-chat-state.svelte.d.ts +38 -0
- package/dist/lib/agent-chat-state.svelte.d.ts.map +1 -0
- package/dist/lib/agent-chat-state.svelte.js +87 -0
- package/dist/lib/agent-chat-state.svelte.js.map +1 -0
- package/dist/lib/ai/content-workspace-tools.d.ts +3 -0
- package/dist/lib/ai/content-workspace-tools.d.ts.map +1 -0
- package/dist/lib/ai/content-workspace-tools.js +51 -0
- package/dist/lib/ai/content-workspace-tools.js.map +1 -0
- package/dist/lib/ai/default-system-prompt.d.ts +2 -0
- package/dist/lib/ai/default-system-prompt.d.ts.map +1 -0
- package/dist/lib/ai/default-system-prompt.js +16 -0
- package/dist/lib/ai/default-system-prompt.js.map +1 -0
- package/dist/lib/ai/index.d.ts +2 -0
- package/dist/lib/ai/index.d.ts.map +1 -0
- package/dist/lib/ai/index.js +5 -0
- package/dist/lib/ai/index.js.map +1 -0
- package/dist/lib/ai/interfaces/ai-provider.d.ts +67 -0
- package/dist/lib/ai/interfaces/ai-provider.d.ts.map +1 -0
- package/dist/lib/ai/interfaces/ai-provider.js +17 -0
- package/dist/lib/ai/interfaces/ai-provider.js.map +1 -0
- package/dist/lib/ai/run-agent-turn.d.ts +29 -0
- package/dist/lib/ai/run-agent-turn.d.ts.map +1 -0
- package/dist/lib/ai/run-agent-turn.js +167 -0
- package/dist/lib/ai/run-agent-turn.js.map +1 -0
- package/dist/lib/api/agent-chat.d.ts +27 -0
- package/dist/lib/api/agent-chat.d.ts.map +1 -0
- package/dist/lib/api/agent-chat.js +65 -0
- package/dist/lib/api/agent-chat.js.map +1 -0
- package/dist/lib/api/documents.d.ts +36 -3
- package/dist/lib/api/documents.d.ts.map +1 -1
- package/dist/lib/api/documents.js +24 -6
- package/dist/lib/api/documents.js.map +1 -1
- package/dist/lib/api/schemas/agent-chat.d.ts +45 -0
- package/dist/lib/api/schemas/agent-chat.d.ts.map +1 -0
- package/dist/lib/api/schemas/agent-chat.js +36 -0
- package/dist/lib/api/schemas/agent-chat.js.map +1 -0
- package/dist/lib/api/schemas/agent-operations.d.ts +13 -0
- package/dist/lib/api/schemas/agent-operations.d.ts.map +1 -0
- package/dist/lib/api/schemas/agent-operations.js +16 -0
- package/dist/lib/api/schemas/agent-operations.js.map +1 -0
- package/dist/lib/api/schemas/documents.d.ts +41 -0
- package/dist/lib/api/schemas/documents.d.ts.map +1 -1
- package/dist/lib/api/schemas/documents.js +38 -2
- package/dist/lib/api/schemas/documents.js.map +1 -1
- package/dist/lib/chunk-recovery.d.ts +33 -0
- package/dist/lib/chunk-recovery.d.ts.map +1 -0
- package/dist/lib/chunk-recovery.js +132 -0
- package/dist/lib/chunk-recovery.js.map +1 -0
- package/dist/lib/client/index.d.ts +1 -0
- package/dist/lib/client/index.d.ts.map +1 -1
- package/dist/lib/client/index.js +1 -0
- package/dist/lib/client/index.js.map +1 -1
- package/dist/lib/client/ui.d.ts +2 -0
- package/dist/lib/client/ui.d.ts.map +1 -1
- package/dist/lib/client/ui.js +3 -0
- package/dist/lib/client/ui.js.map +1 -1
- package/dist/lib/components/index.d.ts +1 -0
- package/dist/lib/components/index.d.ts.map +1 -1
- package/dist/lib/components/index.js +1 -0
- package/dist/lib/components/index.js.map +1 -1
- package/dist/lib/db/interfaces/agent-change-sets.d.ts +17 -0
- package/dist/lib/db/interfaces/agent-change-sets.d.ts.map +1 -0
- package/dist/lib/db/interfaces/agent-change-sets.js +2 -0
- package/dist/lib/db/interfaces/agent-change-sets.js.map +1 -0
- package/dist/lib/db/interfaces/document.d.ts +25 -3
- package/dist/lib/db/interfaces/document.d.ts.map +1 -1
- package/dist/lib/db/interfaces/document.js +19 -1
- package/dist/lib/db/interfaces/document.js.map +1 -1
- package/dist/lib/db/interfaces/events.d.ts +55 -0
- package/dist/lib/db/interfaces/events.d.ts.map +1 -0
- package/dist/lib/db/interfaces/events.js +2 -0
- package/dist/lib/db/interfaces/events.js.map +1 -0
- package/dist/lib/db/interfaces/index.d.ts +13 -2
- package/dist/lib/db/interfaces/index.d.ts.map +1 -1
- package/dist/lib/db/interfaces/index.js +1 -1
- package/dist/lib/db/interfaces/index.js.map +1 -1
- package/dist/lib/db/interfaces/plugin-storage.d.ts +39 -0
- package/dist/lib/db/interfaces/plugin-storage.d.ts.map +1 -0
- package/dist/lib/db/interfaces/plugin-storage.js +2 -0
- package/dist/lib/db/interfaces/plugin-storage.js.map +1 -0
- package/dist/lib/document-refresh.svelte.d.ts +2 -0
- package/dist/lib/document-refresh.svelte.d.ts.map +1 -1
- package/dist/lib/document-refresh.svelte.js +15 -0
- package/dist/lib/document-refresh.svelte.js.map +1 -1
- package/dist/lib/document-workspace-registry.svelte.d.ts +15 -0
- package/dist/lib/document-workspace-registry.svelte.d.ts.map +1 -0
- package/dist/lib/document-workspace-registry.svelte.js +31 -0
- package/dist/lib/document-workspace-registry.svelte.js.map +1 -0
- package/dist/lib/events/catalog.d.ts +8 -0
- package/dist/lib/events/catalog.d.ts.map +1 -0
- package/dist/lib/events/catalog.js +12 -0
- package/dist/lib/events/catalog.js.map +1 -0
- package/dist/lib/events/consumer.d.ts +79 -0
- package/dist/lib/events/consumer.d.ts.map +1 -0
- package/dist/lib/events/consumer.js +77 -0
- package/dist/lib/events/consumer.js.map +1 -0
- package/dist/lib/events/define-event.d.ts +17 -0
- package/dist/lib/events/define-event.d.ts.map +1 -0
- package/dist/lib/events/define-event.js +8 -0
- package/dist/lib/events/define-event.js.map +1 -0
- package/dist/lib/events/emit.d.ts +11 -0
- package/dist/lib/events/emit.d.ts.map +1 -0
- package/dist/lib/events/emit.js +21 -0
- package/dist/lib/events/emit.js.map +1 -0
- package/dist/lib/events/index.d.ts +4 -0
- package/dist/lib/events/index.d.ts.map +1 -0
- package/dist/lib/events/index.js +4 -0
- package/dist/lib/events/index.js.map +1 -0
- package/dist/lib/field-validation/rule.d.ts.map +1 -1
- package/dist/lib/field-validation/rule.js +15 -0
- package/dist/lib/field-validation/rule.js.map +1 -1
- package/dist/lib/field-validation/utils.d.ts.map +1 -1
- package/dist/lib/field-validation/utils.js +211 -29
- package/dist/lib/field-validation/utils.js.map +1 -1
- package/dist/lib/forms/define-form.d.ts +25 -0
- package/dist/lib/forms/define-form.d.ts.map +1 -0
- package/dist/lib/forms/define-form.js +23 -0
- package/dist/lib/forms/define-form.js.map +1 -0
- package/dist/lib/forms/index.d.ts +4 -0
- package/dist/lib/forms/index.d.ts.map +1 -0
- package/dist/lib/forms/index.js +6 -0
- package/dist/lib/forms/index.js.map +1 -0
- package/dist/lib/forms/types.d.ts +49 -0
- package/dist/lib/forms/types.d.ts.map +1 -0
- package/dist/lib/forms/types.js +2 -0
- package/dist/lib/forms/types.js.map +1 -0
- package/dist/lib/forms/validate.d.ts +9 -0
- package/dist/lib/forms/validate.d.ts.map +1 -0
- package/dist/lib/forms/validate.js +19 -0
- package/dist/lib/forms/validate.js.map +1 -0
- package/dist/lib/hooks.d.ts +2 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +17 -0
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +6 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/jobs/document-jobs.d.ts +27 -0
- package/dist/lib/jobs/document-jobs.d.ts.map +1 -0
- package/dist/lib/jobs/document-jobs.js +43 -0
- package/dist/lib/jobs/document-jobs.js.map +1 -0
- package/dist/lib/jobs/embedded-runner.d.ts +25 -0
- package/dist/lib/jobs/embedded-runner.d.ts.map +1 -0
- package/dist/lib/jobs/embedded-runner.js +47 -0
- package/dist/lib/jobs/embedded-runner.js.map +1 -0
- package/dist/lib/jobs/index.d.ts +7 -0
- package/dist/lib/jobs/index.d.ts.map +1 -0
- package/dist/lib/jobs/index.js +9 -0
- package/dist/lib/jobs/index.js.map +1 -0
- package/dist/lib/jobs/relay.d.ts +27 -0
- package/dist/lib/jobs/relay.d.ts.map +1 -0
- package/dist/lib/jobs/relay.js +61 -0
- package/dist/lib/jobs/relay.js.map +1 -0
- package/dist/lib/jobs/run-batch.d.ts +52 -0
- package/dist/lib/jobs/run-batch.d.ts.map +1 -0
- package/dist/lib/jobs/run-batch.js +62 -0
- package/dist/lib/jobs/run-batch.js.map +1 -0
- package/dist/lib/jobs/run-due-jobs.d.ts +30 -0
- package/dist/lib/jobs/run-due-jobs.d.ts.map +1 -0
- package/dist/lib/jobs/run-due-jobs.js +70 -0
- package/dist/lib/jobs/run-due-jobs.js.map +1 -0
- package/dist/lib/jobs/types.d.ts +18 -0
- package/dist/lib/jobs/types.d.ts.map +1 -0
- package/dist/lib/jobs/types.js +2 -0
- package/dist/lib/jobs/types.js.map +1 -0
- package/dist/lib/local-api/collection-api.d.ts +49 -2
- package/dist/lib/local-api/collection-api.d.ts.map +1 -1
- package/dist/lib/local-api/collection-api.js +193 -27
- package/dist/lib/local-api/collection-api.js.map +1 -1
- package/dist/lib/mcp/tools.d.ts +39 -4
- package/dist/lib/mcp/tools.d.ts.map +1 -1
- package/dist/lib/mcp/tools.js +546 -362
- package/dist/lib/mcp/tools.js.map +1 -1
- package/dist/lib/plugins/resolver.d.ts +19 -1
- package/dist/lib/plugins/resolver.d.ts.map +1 -1
- package/dist/lib/plugins/resolver.js +17 -1
- package/dist/lib/plugins/resolver.js.map +1 -1
- package/dist/lib/plugins/types.d.ts +68 -2
- package/dist/lib/plugins/types.d.ts.map +1 -1
- package/dist/lib/plugins/types.js.map +1 -1
- package/dist/lib/preview/stega.d.ts +2 -2
- package/dist/lib/preview/stega.d.ts.map +1 -1
- package/dist/lib/preview/stega.js +52 -29
- package/dist/lib/preview/stega.js.map +1 -1
- package/dist/lib/schema-utils/validator.d.ts.map +1 -1
- package/dist/lib/schema-utils/validator.js +5 -2
- package/dist/lib/schema-utils/validator.js.map +1 -1
- package/dist/lib/server/api/index.d.ts.map +1 -1
- package/dist/lib/server/api/index.js +16 -0
- package/dist/lib/server/api/index.js.map +1 -1
- package/dist/lib/server/api/routes/agent-change-sets.d.ts +4 -0
- package/dist/lib/server/api/routes/agent-change-sets.d.ts.map +1 -0
- package/dist/lib/server/api/routes/agent-change-sets.js +132 -0
- package/dist/lib/server/api/routes/agent-change-sets.js.map +1 -0
- package/dist/lib/server/api/routes/agent-chat.d.ts +14 -0
- package/dist/lib/server/api/routes/agent-chat.d.ts.map +1 -0
- package/dist/lib/server/api/routes/agent-chat.js +224 -0
- package/dist/lib/server/api/routes/agent-chat.js.map +1 -0
- package/dist/lib/server/api/routes/document-versions.d.ts.map +1 -1
- package/dist/lib/server/api/routes/document-versions.js +16 -2
- package/dist/lib/server/api/routes/document-versions.js.map +1 -1
- package/dist/lib/server/api/routes/documents-by-id.d.ts.map +1 -1
- package/dist/lib/server/api/routes/documents-by-id.js +11 -1
- package/dist/lib/server/api/routes/documents-by-id.js.map +1 -1
- package/dist/lib/server/api/routes/documents-publish.d.ts.map +1 -1
- package/dist/lib/server/api/routes/documents-publish.js +145 -2
- package/dist/lib/server/api/routes/documents-publish.js.map +1 -1
- package/dist/lib/server/api/routes/jobs.d.ts +4 -0
- package/dist/lib/server/api/routes/jobs.d.ts.map +1 -0
- package/dist/lib/server/api/routes/jobs.js +95 -0
- package/dist/lib/server/api/routes/jobs.js.map +1 -0
- package/dist/lib/server/api/routes/resolve-created-by.d.ts +13 -0
- package/dist/lib/server/api/routes/resolve-created-by.d.ts.map +1 -0
- package/dist/lib/server/api/routes/resolve-created-by.js +31 -0
- package/dist/lib/server/api/routes/resolve-created-by.js.map +1 -0
- package/dist/lib/server/api/routes/workers-run.d.ts +4 -0
- package/dist/lib/server/api/routes/workers-run.d.ts.map +1 -0
- package/dist/lib/server/api/routes/workers-run.js +41 -0
- package/dist/lib/server/api/routes/workers-run.js.map +1 -0
- package/dist/lib/server/index.d.ts +2 -0
- package/dist/lib/server/index.d.ts.map +1 -1
- package/dist/lib/server/index.js +3 -0
- package/dist/lib/server/index.js.map +1 -1
- package/dist/lib/services/version-service.d.ts +19 -3
- package/dist/lib/services/version-service.d.ts.map +1 -1
- package/dist/lib/services/version-service.js +75 -69
- package/dist/lib/services/version-service.js.map +1 -1
- package/dist/lib/type-gen.d.ts.map +1 -1
- package/dist/lib/type-gen.js +11 -0
- package/dist/lib/type-gen.js.map +1 -1
- package/dist/lib/types/agent-change-sets.d.ts +70 -0
- package/dist/lib/types/agent-change-sets.d.ts.map +1 -0
- package/dist/lib/types/agent-change-sets.js +7 -0
- package/dist/lib/types/agent-change-sets.js.map +1 -0
- package/dist/lib/types/agent-stream.d.ts +60 -0
- package/dist/lib/types/agent-stream.d.ts.map +1 -0
- package/dist/lib/types/agent-stream.js +12 -0
- package/dist/lib/types/agent-stream.js.map +1 -0
- package/dist/lib/types/agent-tools.d.ts +65 -0
- package/dist/lib/types/agent-tools.d.ts.map +1 -0
- package/dist/lib/types/agent-tools.js +2 -0
- package/dist/lib/types/agent-tools.js.map +1 -0
- package/dist/lib/types/config.d.ts +62 -0
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/document-workspace.d.ts +53 -0
- package/dist/lib/types/document-workspace.d.ts.map +1 -0
- package/dist/lib/types/document-workspace.js +15 -0
- package/dist/lib/types/document-workspace.js.map +1 -0
- package/dist/lib/types/document.d.ts +5 -0
- package/dist/lib/types/document.d.ts.map +1 -1
- package/dist/lib/types/events.d.ts +134 -0
- package/dist/lib/types/events.d.ts.map +1 -0
- package/dist/lib/types/events.js +4 -0
- package/dist/lib/types/events.js.map +1 -0
- package/dist/lib/types/index.d.ts +3 -0
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +3 -0
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/schemas.js +1 -1
- package/dist/lib/types/schemas.js.map +1 -1
- package/dist/lib/utils/fetch-remote-file.d.ts +11 -0
- package/dist/lib/utils/fetch-remote-file.d.ts.map +1 -0
- package/dist/lib/utils/fetch-remote-file.js +169 -0
- package/dist/lib/utils/fetch-remote-file.js.map +1 -0
- package/dist/lib/utils/index.d.ts +1 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/local-api/collection-api.d.ts +49 -2
- package/dist/local-api/collection-api.d.ts.map +1 -1
- package/dist/local-api/collection-api.js +193 -27
- package/dist/mcp/tools.d.ts +39 -4
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +546 -362
- package/dist/plugins/resolver.d.ts +19 -1
- package/dist/plugins/resolver.d.ts.map +1 -1
- package/dist/plugins/resolver.js +17 -1
- package/dist/plugins/types.d.ts +68 -2
- package/dist/plugins/types.d.ts.map +1 -1
- package/dist/preview/stega.d.ts +2 -2
- package/dist/preview/stega.d.ts.map +1 -1
- package/dist/preview/stega.js +52 -29
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +5 -2
- package/dist/server/api/index.d.ts.map +1 -1
- package/dist/server/api/index.js +16 -0
- package/dist/server/api/routes/agent-change-sets.d.ts +4 -0
- package/dist/server/api/routes/agent-change-sets.d.ts.map +1 -0
- package/dist/server/api/routes/agent-change-sets.js +131 -0
- package/dist/server/api/routes/agent-chat.d.ts +14 -0
- package/dist/server/api/routes/agent-chat.d.ts.map +1 -0
- package/dist/server/api/routes/agent-chat.js +223 -0
- package/dist/server/api/routes/document-versions.d.ts.map +1 -1
- package/dist/server/api/routes/document-versions.js +16 -2
- package/dist/server/api/routes/documents-by-id.d.ts.map +1 -1
- package/dist/server/api/routes/documents-by-id.js +11 -1
- package/dist/server/api/routes/documents-publish.d.ts.map +1 -1
- package/dist/server/api/routes/documents-publish.js +145 -2
- package/dist/server/api/routes/jobs.d.ts +4 -0
- package/dist/server/api/routes/jobs.d.ts.map +1 -0
- package/dist/server/api/routes/jobs.js +94 -0
- package/dist/server/api/routes/resolve-created-by.d.ts +13 -0
- package/dist/server/api/routes/resolve-created-by.d.ts.map +1 -0
- package/dist/server/api/routes/resolve-created-by.js +30 -0
- package/dist/server/api/routes/workers-run.d.ts +4 -0
- package/dist/server/api/routes/workers-run.d.ts.map +1 -0
- package/dist/server/api/routes/workers-run.js +40 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +3 -0
- package/dist/services/version-service.d.ts +19 -3
- package/dist/services/version-service.d.ts.map +1 -1
- package/dist/services/version-service.js +75 -69
- package/dist/type-gen.d.ts.map +1 -1
- package/dist/type-gen.js +11 -0
- package/dist/types/agent-change-sets.d.ts +70 -0
- package/dist/types/agent-change-sets.d.ts.map +1 -0
- package/dist/types/agent-change-sets.js +6 -0
- package/dist/types/agent-stream.d.ts +60 -0
- package/dist/types/agent-stream.d.ts.map +1 -0
- package/dist/types/agent-stream.js +11 -0
- package/dist/types/agent-tools.d.ts +65 -0
- package/dist/types/agent-tools.d.ts.map +1 -0
- package/dist/types/agent-tools.js +1 -0
- package/dist/types/config.d.ts +62 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/document-workspace.d.ts +53 -0
- package/dist/types/document-workspace.d.ts.map +1 -0
- package/dist/types/document-workspace.js +14 -0
- package/dist/types/document.d.ts +5 -0
- package/dist/types/document.d.ts.map +1 -1
- package/dist/types/events.d.ts +134 -0
- package/dist/types/events.d.ts.map +1 -0
- package/dist/types/events.js +3 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +3 -0
- package/dist/types/schemas.js +1 -1
- package/dist/utils/fetch-remote-file.d.ts +11 -0
- package/dist/utils/fetch-remote-file.d.ts.map +1 -0
- package/dist/utils/fetch-remote-file.js +168 -0
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/package.json +5 -1
|
@@ -25,6 +25,12 @@ interface Props {
|
|
|
25
25
|
createdAt?: string;
|
|
26
26
|
} | null;
|
|
27
27
|
isReadOnly?: boolean;
|
|
28
|
+
/** Suppresses the bottom action bar (Publish / Schedule / Unpublish / Delete).
|
|
29
|
+
* Set by the host when another editor is stacked on top of this one and owns
|
|
30
|
+
* the actions instead — two action bars in the same corner give no clue which
|
|
31
|
+
* document each one publishes. This hides the bar only; the document keeps
|
|
32
|
+
* auto-saving and its status stays visible in the header. */
|
|
33
|
+
hideActionBar?: boolean;
|
|
28
34
|
/** When true, the host has hidden side panels — show a Minimize toggle. */
|
|
29
35
|
focusMode?: boolean;
|
|
30
36
|
/** Toggle host-driven focus mode. Omit to hide the focus button entirely. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentEditor.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"DocumentEditor.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/DocumentEditor.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AASzD,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAC;AAqCzE,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB;;kDAE8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1D,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7C,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,oBAAoB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACpD,sBAAsB,CAAC,EAAE;QACxB,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IACT,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;kEAI8D;IAC9D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,6EAA6E;IAC7E,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,2EAA2E;IAC3E,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,yGAAyG;IACzG,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB;AAiiFF,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
>
|
|
82
82
|
<!-- svelte-ignore a11y_no_static_element_interactions -->
|
|
83
83
|
<div
|
|
84
|
-
class="border-border bg-background max-h-full w-full max-w-3xl overflow-auto rounded-lg border shadow-lg"
|
|
84
|
+
class="border-border bg-background max-h-full w-full max-w-3xl cursor-default overflow-auto rounded-lg border shadow-lg"
|
|
85
85
|
style="z-index: {panelZ}"
|
|
86
86
|
onclick={(e) => e.stopPropagation()}
|
|
87
87
|
onkeydown={(e) => e.stopPropagation()}
|
|
@@ -89,7 +89,9 @@
|
|
|
89
89
|
<div
|
|
90
90
|
class="border-border bg-background sticky top-0 z-10 flex items-center justify-between gap-3 border-b px-4 py-2"
|
|
91
91
|
>
|
|
92
|
-
<span class="text-sm font-medium"
|
|
92
|
+
<span class="text-sm font-medium"
|
|
93
|
+
>Edit {schema.title ?? schema.name.charAt(0).toUpperCase() + schema.name.slice(1)}</span
|
|
94
|
+
>
|
|
93
95
|
<div class="flex items-center gap-2">
|
|
94
96
|
{#if saveState}
|
|
95
97
|
{#if saveState.saving}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
// Schedule a future publish/unpublish. Layout mirrors Sanity's scheduled-drafts dialog
|
|
3
|
+
// (title · description · "Schedule on" field → calendar+time popover · Cancel/Schedule),
|
|
4
|
+
// in Aphex's shadcn skin. Posts to /documents/:id/schedule; the worker runs it at `runAt`
|
|
5
|
+
// (re-validating then), and `runAt` is floored to the minute so 1:30 means 1:30:00.
|
|
6
|
+
import * as Dialog from '@aphexcms/ui/shadcn/dialog';
|
|
7
|
+
import * as Popover from '@aphexcms/ui/shadcn/popover';
|
|
8
|
+
import { Calendar } from '@aphexcms/ui/shadcn/calendar';
|
|
9
|
+
import { Button } from '@aphexcms/ui/shadcn/button';
|
|
10
|
+
import { Label } from '@aphexcms/ui/shadcn/label';
|
|
11
|
+
import { Calendar as CalendarIcon, Globe } from '@lucide/svelte';
|
|
12
|
+
import { CalendarDate, today, getLocalTimeZone, type DateValue } from '@internationalized/date';
|
|
13
|
+
import { documents } from '../../api/documents';
|
|
14
|
+
import { toast } from 'svelte-sonner';
|
|
15
|
+
|
|
16
|
+
interface Props {
|
|
17
|
+
open: boolean;
|
|
18
|
+
documentId: string;
|
|
19
|
+
/**
|
|
20
|
+
* The action to schedule. Derived from the editor's active perspective by the caller:
|
|
21
|
+
* viewing the Draft tab → 'publish' (send this draft live later); viewing the Published
|
|
22
|
+
* tab → 'unpublish' (take it down later). No in-dialog toggle — the tab is the intent.
|
|
23
|
+
*/
|
|
24
|
+
action: 'publish' | 'unpublish';
|
|
25
|
+
onScheduled?: (job: { jobId: string; type: string; runAt: string; status: string }) => void;
|
|
26
|
+
}
|
|
27
|
+
let { open = $bindable(), documentId, action, onScheduled }: Props = $props();
|
|
28
|
+
|
|
29
|
+
let dateValue = $state<DateValue | undefined>(undefined);
|
|
30
|
+
let timeStr = $state('09:00'); // "HH:MM", 24h internally
|
|
31
|
+
let pickerOpen = $state(false);
|
|
32
|
+
let submitting = $state(false);
|
|
33
|
+
|
|
34
|
+
const actionVerb = $derived(action === 'publish' ? 'Publish' : 'Unpublish');
|
|
35
|
+
|
|
36
|
+
const minDate = today(getLocalTimeZone());
|
|
37
|
+
// Short local timezone label, e.g. "MST" — shown so the user knows what zone they're setting.
|
|
38
|
+
const tzLabel =
|
|
39
|
+
new Intl.DateTimeFormat('en-US', { timeZoneName: 'short' })
|
|
40
|
+
.formatToParts(new Date())
|
|
41
|
+
.find((p) => p.type === 'timeZoneName')?.value ?? '';
|
|
42
|
+
|
|
43
|
+
const pad = (n: number) => String(n).padStart(2, '0');
|
|
44
|
+
|
|
45
|
+
// Reset the date/time each time the dialog opens: default to one hour out, floored to the minute.
|
|
46
|
+
$effect(() => {
|
|
47
|
+
if (open) {
|
|
48
|
+
const d = new Date(Date.now() + 60 * 60 * 1000);
|
|
49
|
+
dateValue = new CalendarDate(d.getFullYear(), d.getMonth() + 1, d.getDate());
|
|
50
|
+
timeStr = `${pad(d.getHours())}:${pad(d.getMinutes())}`;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
/** Combine the picked calendar date + time into a local Date floored to the minute. */
|
|
55
|
+
function buildRunAt(): Date | null {
|
|
56
|
+
if (!dateValue) return null;
|
|
57
|
+
const [h, m] = timeStr.split(':').map(Number);
|
|
58
|
+
const d = new Date(dateValue.year, dateValue.month - 1, dateValue.day, h ?? 0, m ?? 0, 0, 0);
|
|
59
|
+
return Number.isNaN(d.getTime()) ? null : d;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const runAtPreview = $derived(buildRunAt());
|
|
63
|
+
const fieldLabel = $derived(
|
|
64
|
+
runAtPreview
|
|
65
|
+
? runAtPreview.toLocaleString(undefined, {
|
|
66
|
+
month: 'short',
|
|
67
|
+
day: 'numeric',
|
|
68
|
+
year: 'numeric',
|
|
69
|
+
hour: 'numeric',
|
|
70
|
+
minute: '2-digit'
|
|
71
|
+
})
|
|
72
|
+
: 'Select date and time'
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
function setToCurrentTime() {
|
|
76
|
+
const now = new Date();
|
|
77
|
+
dateValue = new CalendarDate(now.getFullYear(), now.getMonth() + 1, now.getDate());
|
|
78
|
+
timeStr = `${pad(now.getHours())}:${pad(now.getMinutes())}`;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
async function submit() {
|
|
82
|
+
const runAt = buildRunAt();
|
|
83
|
+
if (!runAt) {
|
|
84
|
+
toast.error('Pick a date and time');
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
runAt.setSeconds(0, 0);
|
|
88
|
+
// Reject genuinely past minutes; the current minute is allowed (runs on the next tick).
|
|
89
|
+
const currentMinute = new Date();
|
|
90
|
+
currentMinute.setSeconds(0, 0);
|
|
91
|
+
if (runAt.getTime() < currentMinute.getTime()) {
|
|
92
|
+
toast.error('Pick a time in the future');
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
submitting = true;
|
|
97
|
+
try {
|
|
98
|
+
const res = await documents.schedule(documentId, { action, runAt: runAt.toISOString() });
|
|
99
|
+
if (res.success) {
|
|
100
|
+
toast.success(
|
|
101
|
+
`${action === 'publish' ? 'Publish' : 'Unpublish'} scheduled for ${runAt.toLocaleString()}`
|
|
102
|
+
);
|
|
103
|
+
open = false;
|
|
104
|
+
if (res.data) onScheduled?.(res.data);
|
|
105
|
+
} else {
|
|
106
|
+
toast.error(res.error || res.message || 'Failed to schedule');
|
|
107
|
+
}
|
|
108
|
+
} catch (err) {
|
|
109
|
+
toast.error(err instanceof Error ? err.message : 'Failed to schedule');
|
|
110
|
+
} finally {
|
|
111
|
+
submitting = false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
</script>
|
|
115
|
+
|
|
116
|
+
<Dialog.Root bind:open>
|
|
117
|
+
<Dialog.Content class="max-w-md">
|
|
118
|
+
<Dialog.Header>
|
|
119
|
+
<Dialog.Title>Schedule {actionVerb}</Dialog.Title>
|
|
120
|
+
<Dialog.Description>
|
|
121
|
+
Select when this document should be {action === 'publish' ? 'published' : 'unpublished'}.
|
|
122
|
+
</Dialog.Description>
|
|
123
|
+
</Dialog.Header>
|
|
124
|
+
|
|
125
|
+
<div class="space-y-4 py-2">
|
|
126
|
+
<div class="space-y-1.5">
|
|
127
|
+
<Label>Schedule on</Label>
|
|
128
|
+
<Popover.Root bind:open={pickerOpen}>
|
|
129
|
+
<Popover.Trigger
|
|
130
|
+
class="border-input bg-background hover:bg-muted/40 focus-visible:ring-ring flex w-full items-center justify-between rounded-md border px-3 py-2 text-left text-sm focus-visible:ring-1 focus-visible:outline-none"
|
|
131
|
+
>
|
|
132
|
+
<span>{fieldLabel}</span>
|
|
133
|
+
<CalendarIcon class="text-muted-foreground h-4 w-4" />
|
|
134
|
+
</Popover.Trigger>
|
|
135
|
+
<Popover.Content class="z-[70] w-[19rem] p-0" align="start">
|
|
136
|
+
<Calendar
|
|
137
|
+
type="single"
|
|
138
|
+
bind:value={dateValue}
|
|
139
|
+
minValue={minDate}
|
|
140
|
+
class="w-full rounded-b-none [--cell-size:2.4rem]"
|
|
141
|
+
/>
|
|
142
|
+
<div class="border-rule flex flex-wrap items-center gap-x-2 gap-y-1 border-t p-3">
|
|
143
|
+
<input
|
|
144
|
+
type="time"
|
|
145
|
+
bind:value={timeStr}
|
|
146
|
+
class="border-input bg-background focus-visible:ring-ring rounded-md border px-2 py-1 text-sm focus-visible:ring-1 focus-visible:outline-none"
|
|
147
|
+
/>
|
|
148
|
+
<button
|
|
149
|
+
type="button"
|
|
150
|
+
class="text-muted-foreground hover:text-foreground text-xs underline-offset-2 hover:underline"
|
|
151
|
+
onclick={setToCurrentTime}
|
|
152
|
+
>
|
|
153
|
+
Set to current time
|
|
154
|
+
</button>
|
|
155
|
+
<span class="text-muted-foreground ml-auto flex items-center gap-1 text-xs">
|
|
156
|
+
<Globe class="h-3 w-3" />
|
|
157
|
+
{tzLabel}
|
|
158
|
+
</span>
|
|
159
|
+
</div>
|
|
160
|
+
</Popover.Content>
|
|
161
|
+
</Popover.Root>
|
|
162
|
+
</div>
|
|
163
|
+
</div>
|
|
164
|
+
|
|
165
|
+
<Dialog.Footer>
|
|
166
|
+
<Button variant="ghost" size="sm" onclick={() => (open = false)} disabled={submitting}>
|
|
167
|
+
Cancel
|
|
168
|
+
</Button>
|
|
169
|
+
<Button size="sm" onclick={submit} disabled={submitting}>
|
|
170
|
+
{submitting ? 'Scheduling…' : 'Schedule'}
|
|
171
|
+
</Button>
|
|
172
|
+
</Dialog.Footer>
|
|
173
|
+
</Dialog.Content>
|
|
174
|
+
</Dialog.Root>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
open: boolean;
|
|
3
|
+
documentId: string;
|
|
4
|
+
/**
|
|
5
|
+
* The action to schedule. Derived from the editor's active perspective by the caller:
|
|
6
|
+
* viewing the Draft tab → 'publish' (send this draft live later); viewing the Published
|
|
7
|
+
* tab → 'unpublish' (take it down later). No in-dialog toggle — the tab is the intent.
|
|
8
|
+
*/
|
|
9
|
+
action: 'publish' | 'unpublish';
|
|
10
|
+
onScheduled?: (job: {
|
|
11
|
+
jobId: string;
|
|
12
|
+
type: string;
|
|
13
|
+
runAt: string;
|
|
14
|
+
status: string;
|
|
15
|
+
}) => void;
|
|
16
|
+
}
|
|
17
|
+
declare const ScheduleDialog: import("svelte").Component<Props, {}, "open">;
|
|
18
|
+
type ScheduleDialog = ReturnType<typeof ScheduleDialog>;
|
|
19
|
+
export default ScheduleDialog;
|
|
20
|
+
//# sourceMappingURL=ScheduleDialog.svelte.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleDialog.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/admin/ScheduleDialog.svelte.ts"],"names":[],"mappings":"AAkBC,UAAU,KAAK;IACd,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CAC5F;AAwJF,QAAA,MAAM,cAAc,+CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
return getSchemaByName(schemas, typeName);
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
const isBlockArray = $derived(field.of
|
|
77
|
+
const isBlockArray = $derived(field.of?.some((ref) => ref.type === 'block') ?? false);
|
|
78
78
|
// Rich text (TipTap) is by far the largest field dependency. Load it only when
|
|
79
79
|
// the array actually holds block content, so document editors without a
|
|
80
80
|
// rich-text field — and every admin page that never renders one — stay off
|
|
@@ -534,6 +534,7 @@
|
|
|
534
534
|
{@const sortable = createSortable({ id: item._key, index, disabled: readonly })}
|
|
535
535
|
<div
|
|
536
536
|
{@attach sortable.attach}
|
|
537
|
+
data-array-index={index}
|
|
537
538
|
class="flex items-center gap-1"
|
|
538
539
|
class:opacity-50={sortable.isDragging}
|
|
539
540
|
>
|
|
@@ -942,6 +943,7 @@
|
|
|
942
943
|
{@const sortable = createSortable({ id: item._key, index, disabled: readonly })}
|
|
943
944
|
<div
|
|
944
945
|
{@attach sortable.attach}
|
|
946
|
+
data-array-index={index}
|
|
945
947
|
class="border-border/50 bg-background hover:bg-muted/50 flex min-h-11 items-center gap-1 rounded border pl-1 transition-colors"
|
|
946
948
|
class:opacity-50={sortable.isDragging}
|
|
947
949
|
>
|
|
@@ -961,6 +963,7 @@
|
|
|
961
963
|
supplies a `subtitle` field, render it on a second line. -->
|
|
962
964
|
<button
|
|
963
965
|
class="flex flex-1 cursor-pointer items-center gap-2 self-stretch truncate px-1 py-2 text-left text-sm"
|
|
966
|
+
data-array-item-index={index}
|
|
964
967
|
onclick={() => handleEditItem(index)}
|
|
965
968
|
>
|
|
966
969
|
<span
|
|
@@ -104,11 +104,22 @@
|
|
|
104
104
|
let allDocs = $state<any[]>([]);
|
|
105
105
|
let allDocsFetched = $state(false);
|
|
106
106
|
|
|
107
|
+
/**
|
|
108
|
+
* The picker filters CLIENT-SIDE over this cache, so the fetch limit is also the
|
|
109
|
+
* search limit: anything beyond it can never be found by typing. At 20 that made
|
|
110
|
+
* documents silently unreachable in any collection larger than a screenful (a menu
|
|
111
|
+
* of 36 dishes could only ever surface the first 20). Fetch the API maximum instead.
|
|
112
|
+
*
|
|
113
|
+
* This raises the ceiling rather than removing it — collections beyond `PICKER_LIMIT`
|
|
114
|
+
* still need server-side search, which the list endpoint doesn't expose today.
|
|
115
|
+
*/
|
|
116
|
+
const PICKER_LIMIT = 200;
|
|
117
|
+
|
|
107
118
|
async function fetchAllDocs() {
|
|
108
119
|
if (allDocsFetched || !targetType) return;
|
|
109
120
|
loading = true;
|
|
110
121
|
try {
|
|
111
|
-
const result = await documents.list({ docType: targetType, limit:
|
|
122
|
+
const result = await documents.list({ docType: targetType, limit: PICKER_LIMIT });
|
|
112
123
|
if (result.success && result.data) {
|
|
113
124
|
allDocs = result.data;
|
|
114
125
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReferenceField.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/fields/ReferenceField.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAwC,MAAM,wBAAwB,CAAC;AAUzF,KAAK,cAAc,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,UAAU,KAAK;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;
|
|
1
|
+
{"version":3,"file":"ReferenceField.svelte.d.ts","sourceRoot":"","sources":["../../../../src/lib/components/admin/fields/ReferenceField.svelte.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAwC,MAAM,wBAAwB,CAAC;AAUzF,KAAK,cAAc,GAAG;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1E,UAAU,KAAK;IACd,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI,KAAK,IAAI,CAAC;IACjD,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;CACvB;AAuWF,QAAA,MAAM,cAAc,2CAAwC,CAAC;AAC7D,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC;AACxD,eAAe,cAAc,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as AdminApp } from './AdminApp.svelte';
|
|
2
2
|
export { default as Sidebar } from './layout/Sidebar.svelte';
|
|
3
3
|
export { default as DocumentEditor } from './admin/DocumentEditor.svelte';
|
|
4
|
+
export { default as AgentChat } from './admin/AgentChat.svelte';
|
|
4
5
|
export { default as SchemaField } from './admin/SchemaField.svelte';
|
|
5
6
|
export { default as MediaBrowser } from './admin/MediaBrowser.svelte';
|
|
6
7
|
export { default as AssetBrowserModal } from './admin/AssetBrowserModal.svelte';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/components/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGtF,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/components/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAG7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;AAChF,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAGtF,cAAc,gBAAgB,CAAC"}
|
package/dist/components/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export { default as AdminApp } from './AdminApp.svelte';
|
|
|
6
6
|
export { default as Sidebar } from './layout/Sidebar.svelte';
|
|
7
7
|
// Admin components (will be migrated from your current structure)
|
|
8
8
|
export { default as DocumentEditor } from './admin/DocumentEditor.svelte';
|
|
9
|
+
export { default as AgentChat } from './admin/AgentChat.svelte';
|
|
9
10
|
export { default as SchemaField } from './admin/SchemaField.svelte';
|
|
10
11
|
export { default as MediaBrowser } from './admin/MediaBrowser.svelte';
|
|
11
12
|
export { default as AssetBrowserModal } from './admin/AssetBrowserModal.svelte';
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
<SidebarMenuButton
|
|
112
112
|
{...props}
|
|
113
113
|
size="lg"
|
|
114
|
-
class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
|
|
114
|
+
class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground cursor-pointer"
|
|
115
115
|
disabled={isSwitching}
|
|
116
116
|
>
|
|
117
117
|
{#if activeOrganization}
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
<img
|
|
120
120
|
src={getOrganizationLogo(activeOrganization)!}
|
|
121
121
|
alt={activeOrganization.name}
|
|
122
|
-
class="aspect-square size-8
|
|
122
|
+
class="aspect-square size-8 object-cover"
|
|
123
123
|
/>
|
|
124
124
|
{:else}
|
|
125
125
|
<div
|
|
@@ -275,7 +275,7 @@
|
|
|
275
275
|
{#if canCreateOrganization}
|
|
276
276
|
<DropdownMenuSeparator />
|
|
277
277
|
<DropdownMenuItem
|
|
278
|
-
class="gap-2 p-2"
|
|
278
|
+
class="cursor-pointer gap-2 p-2"
|
|
279
279
|
onclick={() => goto('/admin/organizations?action=create')}
|
|
280
280
|
>
|
|
281
281
|
<div class="flex size-6 items-center justify-center rounded-md border bg-transparent">
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
import { SidebarProvider, SidebarInset, SidebarTrigger } from '@aphexcms/ui/shadcn/sidebar';
|
|
3
3
|
import { Separator } from '@aphexcms/ui/shadcn/separator';
|
|
4
4
|
import { Button } from '@aphexcms/ui/shadcn/button';
|
|
5
|
+
import * as Sheet from '@aphexcms/ui/shadcn/sheet';
|
|
5
6
|
import { ModeWatcher } from 'mode-watcher';
|
|
6
7
|
import { Toaster } from '@aphexcms/ui/shadcn/sonner';
|
|
7
|
-
import { Sun, Moon } from '@lucide/svelte';
|
|
8
|
+
import { Sun, Moon, Sparkles } from '@lucide/svelte';
|
|
8
9
|
import { toggleMode } from 'mode-watcher';
|
|
9
10
|
import { page } from '$app/state';
|
|
10
11
|
import type { SidebarData } from '../../types/sidebar';
|
|
@@ -13,6 +14,7 @@
|
|
|
13
14
|
import { setAdminSlots } from '../../admin/slots.svelte';
|
|
14
15
|
import type { AdminArea } from '../../admin/types';
|
|
15
16
|
import type { CMSPlugin, AdminToolPart } from '../../plugins/types';
|
|
17
|
+
import AgentChat from '../admin/AgentChat.svelte';
|
|
16
18
|
|
|
17
19
|
// Admin extension-slot registry, published to the whole admin subtree. The
|
|
18
20
|
// navbar renders `navbar-start` / `navbar-end` outlets; the document editor (and
|
|
@@ -24,6 +26,7 @@
|
|
|
24
26
|
onSignOut?: () => void | Promise<void>;
|
|
25
27
|
children: any;
|
|
26
28
|
enableGraphiQL?: boolean;
|
|
29
|
+
enableAssistant?: boolean;
|
|
27
30
|
activeTab?: { value: AdminArea };
|
|
28
31
|
onTabChange?: (value: string) => void;
|
|
29
32
|
/** Plugin registry — used to render sidebar-placed admin tools as persistent nav. */
|
|
@@ -35,10 +38,12 @@
|
|
|
35
38
|
onSignOut,
|
|
36
39
|
children,
|
|
37
40
|
enableGraphiQL = false,
|
|
41
|
+
enableAssistant = false,
|
|
38
42
|
activeTab,
|
|
39
43
|
onTabChange,
|
|
40
44
|
plugins = []
|
|
41
45
|
}: Props = $props();
|
|
46
|
+
let assistantOpen = $state(false);
|
|
42
47
|
|
|
43
48
|
function switchTab(value: AdminArea) {
|
|
44
49
|
if (onTabChange) {
|
|
@@ -151,8 +156,27 @@
|
|
|
151
156
|
</div>
|
|
152
157
|
</div>
|
|
153
158
|
</header>
|
|
154
|
-
<main class="flex flex-1 flex-col overflow-hidden pt-0">
|
|
159
|
+
<main class="flex flex-1 flex-col overflow-x-hidden overflow-y-auto pt-0">
|
|
155
160
|
{@render children()}
|
|
156
161
|
</main>
|
|
157
162
|
</SidebarInset>
|
|
163
|
+
{#if enableAssistant && !assistantOpen}
|
|
164
|
+
<Button
|
|
165
|
+
size="icon-lg"
|
|
166
|
+
class="fixed right-5 bottom-20 z-50 size-12 rounded-full shadow-lg sm:right-6"
|
|
167
|
+
onclick={() => (assistantOpen = true)}
|
|
168
|
+
aria-label="Open Aphex Assistant"
|
|
169
|
+
>
|
|
170
|
+
<Sparkles class="size-5" />
|
|
171
|
+
</Button>
|
|
172
|
+
{/if}
|
|
173
|
+
<Sheet.Root bind:open={assistantOpen}>
|
|
174
|
+
<Sheet.Content class="w-full gap-0 p-0 sm:max-w-xl">
|
|
175
|
+
<Sheet.Header class="sr-only">
|
|
176
|
+
<Sheet.Title>Aphex Assistant</Sheet.Title>
|
|
177
|
+
<Sheet.Description>CMS-aware answers and content tools</Sheet.Description>
|
|
178
|
+
</Sheet.Header>
|
|
179
|
+
<AgentChat embedded />
|
|
180
|
+
</Sheet.Content>
|
|
181
|
+
</Sheet.Root>
|
|
158
182
|
</SidebarProvider>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/layout/Sidebar.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sidebar.svelte.d.ts","sourceRoot":"","sources":["../../../src/lib/components/layout/Sidebar.svelte.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,qBAAqB,CAAC;AAInE,KAAK,KAAK,GAAG;IACZ,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,QAAQ,EAAE,GAAG,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,SAAS,CAAA;KAAE,CAAC;IACjC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,qFAAqF;IACrF,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;CACtB,CAAC;AAyJH,QAAA,MAAM,OAAO,2CAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
<SidebarMenuButton
|
|
41
41
|
{...props}
|
|
42
42
|
size="lg"
|
|
43
|
-
class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground"
|
|
43
|
+
class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground cursor-pointer"
|
|
44
44
|
>
|
|
45
45
|
{#if user.image}
|
|
46
46
|
<img
|
|
@@ -76,22 +76,22 @@
|
|
|
76
76
|
<p class="text-muted-foreground text-xs">{user.email}</p>
|
|
77
77
|
</div>
|
|
78
78
|
<DropdownMenuSeparator />
|
|
79
|
-
<DropdownMenuItem onclick={() => goto('/admin/settings/account')}>
|
|
79
|
+
<DropdownMenuItem class="cursor-pointer" onclick={() => goto('/admin/settings/account')}>
|
|
80
80
|
<Settings class="mr-2 h-4 w-4" />
|
|
81
81
|
<span>Account Settings</span>
|
|
82
82
|
</DropdownMenuItem>
|
|
83
|
-
<DropdownMenuItem onclick={() => goto('/invitations')}>
|
|
83
|
+
<DropdownMenuItem class="cursor-pointer" onclick={() => goto('/invitations')}>
|
|
84
84
|
<Mail class="mr-2 h-4 w-4" />
|
|
85
85
|
<span>Invitations</span>
|
|
86
86
|
</DropdownMenuItem>
|
|
87
87
|
{#if user.role === 'super_admin'}
|
|
88
|
-
<DropdownMenuItem onclick={() => goto('/god-mode')}>
|
|
88
|
+
<DropdownMenuItem class="cursor-pointer" onclick={() => goto('/god-mode')}>
|
|
89
89
|
<Shield class="mr-2 h-4 w-4" />
|
|
90
90
|
<span>God Mode</span>
|
|
91
91
|
</DropdownMenuItem>
|
|
92
92
|
{/if}
|
|
93
93
|
<DropdownMenuSeparator />
|
|
94
|
-
<DropdownMenuItem class="text-destructive" onclick={handleSignOut}>
|
|
94
|
+
<DropdownMenuItem class="text-destructive cursor-pointer" onclick={handleSignOut}>
|
|
95
95
|
<LogOut class="mr-2 h-4 w-4" />
|
|
96
96
|
<span>Sign Out</span>
|
|
97
97
|
</DropdownMenuItem>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { AgentChangeSet, AgentChangeSetWithOperations, AgentOperation, CreateAgentChangeSetInput, CompleteAgentChangeSetInput, RecordAgentOperationInput, ListAgentChangeSetsOptions } from '../../types/agent-change-sets.js';
|
|
2
|
+
import type { Page } from '../../types/events.js';
|
|
3
|
+
export interface AgentChangeSetAdapter {
|
|
4
|
+
/** One row per agent turn, created eagerly before the model is called. */
|
|
5
|
+
createChangeSet(input: CreateAgentChangeSetInput): Promise<AgentChangeSet>;
|
|
6
|
+
/** Record one mutating tool call's outcome against an existing change-set. */
|
|
7
|
+
recordOperation(input: RecordAgentOperationInput): Promise<AgentOperation>;
|
|
8
|
+
/** Finalize a change-set once the turn ends, with its accumulated token totals. */
|
|
9
|
+
completeChangeSet(organizationId: string, id: string, input: CompleteAgentChangeSetInput): Promise<void>;
|
|
10
|
+
/** Read one change-set with its operations (org-scoped) — what the undo endpoint acts on. */
|
|
11
|
+
getChangeSet(organizationId: string, id: string): Promise<AgentChangeSetWithOperations | null>;
|
|
12
|
+
/** List change-sets for the org, newest first (the activity view's "Agent Changes" tab).
|
|
13
|
+
* Includes each change-set's operations so the list can show what a turn did (e.g.
|
|
14
|
+
* "create_document") without a per-row detail fetch. */
|
|
15
|
+
listChangeSets(options: ListAgentChangeSetsOptions): Promise<Page<AgentChangeSetWithOperations>>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=agent-change-sets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-change-sets.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/agent-change-sets.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACX,cAAc,EACd,4BAA4B,EAC5B,cAAc,EACd,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,0BAA0B,EAC1B,MAAM,+BAA+B,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,WAAW,qBAAqB;IACrC,0EAA0E;IAC1E,eAAe,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,8EAA8E;IAC9E,eAAe,CAAC,KAAK,EAAE,yBAAyB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC3E,mFAAmF;IACnF,iBAAiB,CAChB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,2BAA2B,GAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,6FAA6F;IAC7F,YAAY,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,4BAA4B,GAAG,IAAI,CAAC,CAAC;IAC/F;;4DAEwD;IACxD,cAAc,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,CAAC;CACjG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -22,16 +22,38 @@ export interface UpdateDocumentData {
|
|
|
22
22
|
draftData?: any;
|
|
23
23
|
status?: string;
|
|
24
24
|
updatedBy?: string;
|
|
25
|
+
/** Compare-and-swap guard: the revision the caller last read. Omit to skip
|
|
26
|
+
* the check (existing unconditional-write behavior). */
|
|
27
|
+
expectedRevision?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Thrown when a write's `expectedRevision` no longer matches the document's
|
|
31
|
+
* current revision — another writer (a second tab, an AI agent, a concurrent
|
|
32
|
+
* request) saved in between the caller's read and this write. Callers should
|
|
33
|
+
* surface this distinctly from a validation error: re-fetch and let the user
|
|
34
|
+
* decide, never silently retry with an overwrite.
|
|
35
|
+
*/
|
|
36
|
+
export declare class RevisionConflictError extends Error {
|
|
37
|
+
readonly documentId: string;
|
|
38
|
+
readonly expectedRevision: number;
|
|
39
|
+
readonly currentRevision: number;
|
|
40
|
+
constructor(message: string, documentId: string, expectedRevision: number, currentRevision: number);
|
|
25
41
|
}
|
|
26
42
|
/**
|
|
27
43
|
* Document adapter interface for document-specific operations
|
|
28
44
|
*/
|
|
29
45
|
export interface DocumentAdapter {
|
|
30
46
|
createDocument(data: CreateDocumentData): Promise<Document>;
|
|
31
|
-
|
|
47
|
+
/**
|
|
48
|
+
* @param expectedRevision - Compare-and-swap guard. When provided, the
|
|
49
|
+
* update only applies if the document's current revision matches;
|
|
50
|
+
* otherwise implementations throw {@link RevisionConflictError}. Omit to
|
|
51
|
+
* write unconditionally (last-write-wins, the pre-CAS behavior).
|
|
52
|
+
*/
|
|
53
|
+
updateDocDraft(organizationId: string, id: string, data: any, updatedBy?: string, expectedRevision?: number): Promise<Document | null>;
|
|
32
54
|
deleteDocById(organizationId: string, id: string): Promise<boolean>;
|
|
33
|
-
publishDoc(organizationId: string, id: string): Promise<Document | null>;
|
|
34
|
-
unpublishDoc(organizationId: string, id: string): Promise<Document | null>;
|
|
55
|
+
publishDoc(organizationId: string, id: string, expectedRevision?: number): Promise<Document | null>;
|
|
56
|
+
unpublishDoc(organizationId: string, id: string, expectedRevision?: number): Promise<Document | null>;
|
|
35
57
|
countDocsByType(organizationId: string, type: string): Promise<number>;
|
|
36
58
|
getDocCountsByType(organizationId: string): Promise<Record<string, number>>;
|
|
37
59
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/lib/db/interfaces/document.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE1E,MAAM,WAAW,eAAe;IAC/B,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,GAAG,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mEAAmE;IACnE,EAAE,CAAC,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,kBAAkB;IAClC,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;6DACyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,qBAAa,qBAAsB,SAAQ,KAAK;aAG9B,UAAU,EAAE,MAAM;aAClB,gBAAgB,EAAE,MAAM;aACxB,eAAe,EAAE,MAAM;gBAHvC,OAAO,EAAE,MAAM,EACC,UAAU,EAAE,MAAM,EAClB,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM;CAKxC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAE/B,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D;;;;;OAKG;IACH,cAAc,CACb,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,GAAG,EACT,SAAS,CAAC,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC5B,aAAa,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAGpE,UAAU,CACT,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAC5B,YAAY,CACX,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAG5B,eAAe,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvE,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAG5E;;;;;;OAMG;IACH,mBAAmB,CAClB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,OAAO,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjC;;;;;;OAMG;IACH,mBAAmB,CAClB,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,GAC5B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IAE5B;;;;;;OAMG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE/F;;;;;;OAMG;IACH,6BAA6B,CAAC,CAC7B,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC,CAAC;IAE9F;;;;;;OAMG;IACH,gCAAgC,CAAC,CAChC,cAAc,EAAE,MAAM,EACtB,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,CAAC,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAEnC;;;OAGG;IACH,2BAA2B,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAGvF,qBAAqB,CAAC,CAAC,IAAI,EAAE;QAC5B,UAAU,EAAE,MAAM,CAAC;QACnB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;QAC/B,IAAI,EAAE,GAAG,CAAC;QACV,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KAC1B,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAEpC,oBAAoB,CAAC,CACpB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEhC,kBAAkB,CAAC,CAClB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;IAEnC,sBAAsB,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjF"}
|
|
@@ -1 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Thrown when a write's `expectedRevision` no longer matches the document's
|
|
3
|
+
* current revision — another writer (a second tab, an AI agent, a concurrent
|
|
4
|
+
* request) saved in between the caller's read and this write. Callers should
|
|
5
|
+
* surface this distinctly from a validation error: re-fetch and let the user
|
|
6
|
+
* decide, never silently retry with an overwrite.
|
|
7
|
+
*/
|
|
8
|
+
export class RevisionConflictError extends Error {
|
|
9
|
+
documentId;
|
|
10
|
+
expectedRevision;
|
|
11
|
+
currentRevision;
|
|
12
|
+
constructor(message, documentId, expectedRevision, currentRevision) {
|
|
13
|
+
super(message);
|
|
14
|
+
this.documentId = documentId;
|
|
15
|
+
this.expectedRevision = expectedRevision;
|
|
16
|
+
this.currentRevision = currentRevision;
|
|
17
|
+
this.name = 'RevisionConflictError';
|
|
18
|
+
}
|
|
19
|
+
}
|