@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
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// The in-admin agent's default system prompt. Overridable per-instance via
|
|
2
|
+
// `createCMSConfig({ agentSystemPrompt: '...' })` (see types/config.ts) — an agency
|
|
3
|
+
// deploying this CMS for a client may want different tone/guardrails than another. Kept
|
|
4
|
+
// short and behavioral rather than descriptive: the tool list, schema, and capabilities are
|
|
5
|
+
// already self-describing via the `describe_cms` tool, so this only needs to say things a
|
|
6
|
+
// tool description can't — when to hold back, not what exists.
|
|
7
|
+
export const DEFAULT_AGENT_SYSTEM_PROMPT = `You are the in-admin content assistant for this CMS. You can read and edit content through the tools available to you — call \`describe_cms\` first if you don't already know what content types, fields, and tools exist in this session; never guess at a schema's shape.
|
|
8
|
+
|
|
9
|
+
Guidelines:
|
|
10
|
+
- Prefer drafts: create or edit content as a draft. Only call \`publish_document\` when the user has explicitly asked you to publish — writing or updating something is not itself a request to publish it.
|
|
11
|
+
- If \`content_patch_fields\`/\`content_save_draft\` are available, a document is currently open in the admin editor — use those two tools (not \`update_document\`) for any edit to that document, so the change appears live in the editor instead of only in the database.
|
|
12
|
+
- Before a broad or hard-to-reverse change (bulk edits, unpublishing, overwriting existing content), briefly say what you're about to do rather than doing it silently.
|
|
13
|
+
- Only reference fields, collections, and tools that \`describe_cms\`/\`get_schema\` actually showed you — never invent one.
|
|
14
|
+
- If a tool call fails or is forbidden, say why rather than retrying blindly or working around it.
|
|
15
|
+
- Keep responses concise — don't restate what a tool result already showed.`;
|
|
16
|
+
//# sourceMappingURL=default-system-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-system-prompt.js","sourceRoot":"","sources":["../../../src/lib/ai/default-system-prompt.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,oFAAoF;AACpF,wFAAwF;AACxF,4FAA4F;AAC5F,0FAA0F;AAC1F,+DAA+D;AAC/D,MAAM,CAAC,MAAM,2BAA2B,GAAG;;;;;;;;4EAQiC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/index.ts"],"names":[],"mappings":"AAIA,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/lib/ai/index.ts"],"names":[],"mappings":"AAAA,qBAAqB;AACrB,4DAA4D;AAE5D,aAAa;AACb,cAAc,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/** One message in a conversation. `tool` messages carry the result of a prior `toolCallId`. */
|
|
2
|
+
export interface AIMessage {
|
|
3
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
4
|
+
content: string;
|
|
5
|
+
/** Present on an assistant message that requested one or more tool calls. */
|
|
6
|
+
toolCalls?: AIToolCall[];
|
|
7
|
+
/** Present on a `tool` role message — which prior call this is the result of. */
|
|
8
|
+
toolCallId?: string;
|
|
9
|
+
}
|
|
10
|
+
/** A single tool invocation the model requested. */
|
|
11
|
+
export interface AIToolCall {
|
|
12
|
+
id: string;
|
|
13
|
+
name: string;
|
|
14
|
+
/** Parsed JSON arguments the model produced — already validated against the tool's zod schema by the caller before execution. */
|
|
15
|
+
arguments: Record<string, unknown>;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A tool definition adapted to the provider's function-calling format. The
|
|
19
|
+
* adapter owns converting `AgentToolDefinition.inputSchema` (zod) into this
|
|
20
|
+
* shape — cms-core stays schema-library-agnostic on the wire, only zod
|
|
21
|
+
* internally.
|
|
22
|
+
*/
|
|
23
|
+
export interface AIToolSpec {
|
|
24
|
+
name: string;
|
|
25
|
+
description: string;
|
|
26
|
+
/** JSON Schema describing the arguments object. */
|
|
27
|
+
parameters: Record<string, unknown>;
|
|
28
|
+
}
|
|
29
|
+
export interface AIChatRequest {
|
|
30
|
+
/** Provider-specific model identifier, e.g. `anthropic/claude-sonnet-4.5` (OpenRouter) or `claude-sonnet-4-5` (Anthropic direct). */
|
|
31
|
+
model: string;
|
|
32
|
+
messages: AIMessage[];
|
|
33
|
+
tools?: AIToolSpec[];
|
|
34
|
+
/** Optional cap; adapters should pass their provider's equivalent through unchanged when omitted. */
|
|
35
|
+
maxTokens?: number;
|
|
36
|
+
/** Aborts the in-flight request — cancellation propagates from the browser tab through the runtime to here. */
|
|
37
|
+
signal?: AbortSignal;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* One item in a streamed response. The runtime layer (apps/studio, not
|
|
41
|
+
* cms-core) maps this onto whatever wire format it sends the browser
|
|
42
|
+
* (SSE/NDJSON) — this is the provider-boundary shape, not the browser-facing
|
|
43
|
+
* one, though the two are intentionally close.
|
|
44
|
+
*/
|
|
45
|
+
export type AIStreamEvent = {
|
|
46
|
+
type: 'text';
|
|
47
|
+
delta: string;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'toolCall';
|
|
50
|
+
toolCall: AIToolCall;
|
|
51
|
+
} | {
|
|
52
|
+
type: 'usage';
|
|
53
|
+
promptTokens: number;
|
|
54
|
+
completionTokens: number;
|
|
55
|
+
} | {
|
|
56
|
+
type: 'error';
|
|
57
|
+
message: string;
|
|
58
|
+
} | {
|
|
59
|
+
type: 'done';
|
|
60
|
+
finishReason: 'stop' | 'tool_calls' | 'length' | 'error';
|
|
61
|
+
};
|
|
62
|
+
export interface AIProviderAdapter {
|
|
63
|
+
readonly name: string;
|
|
64
|
+
/** Stream a chat completion, yielding events as the model produces them. */
|
|
65
|
+
chatStream(request: AIChatRequest): AsyncIterable<AIStreamEvent>;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=ai-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-provider.d.ts","sourceRoot":"","sources":["../../../../src/lib/ai/interfaces/ai-provider.ts"],"names":[],"mappings":"AAgBA,+FAA+F;AAC/F,MAAM,WAAW,SAAS;IACzB,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,6EAA6E;IAC7E,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;IACzB,iFAAiF;IACjF,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oDAAoD;AACpD,MAAM,WAAW,UAAU;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,iIAAiI;IACjI,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC7B,qIAAqI;IACrI,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,qGAAqG;IACrG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+GAA+G;IAC/G,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GACtB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,UAAU,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAA;CAAE,CAAC;AAE9E,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;CACjE"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// ai/interfaces/ai-provider.ts
|
|
2
|
+
//
|
|
3
|
+
// Ports & adapters for the in-admin agent's model backend — same shape as
|
|
4
|
+
// EmailAdapter (see ../../email/interfaces/email.ts): cms-core owns the
|
|
5
|
+
// provider-neutral contract only; concrete provider clients (credentials,
|
|
6
|
+
// wire format, streaming parse) live in separate packages the app wires in
|
|
7
|
+
// via `createCMSConfig({ aiProvider: ... })`. Exactly one active instance-wide,
|
|
8
|
+
// same as database/storage/email — not a plugin, since a CMS install picks
|
|
9
|
+
// one model backend, not a composable set of them.
|
|
10
|
+
//
|
|
11
|
+
// Two adapters cover four providers: OpenAI, OpenRouter, and Ollama all speak
|
|
12
|
+
// the same OpenAI-compatible chat-completions + function-calling wire format
|
|
13
|
+
// (they differ only in base URL and auth), so one adapter handles all three;
|
|
14
|
+
// Anthropic's Messages API has a genuinely different shape (`tool_use` content
|
|
15
|
+
// blocks vs OpenAI's `tool_calls`) and gets its own.
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=ai-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-provider.js","sourceRoot":"","sources":["../../../../src/lib/ai/interfaces/ai-provider.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,gFAAgF;AAChF,2EAA2E;AAC3E,mDAAmD;AACnD,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,6EAA6E;AAC7E,+EAA+E;AAC/E,qDAAqD"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AIProviderAdapter, AIMessage } from './interfaces/ai-provider.js';
|
|
2
|
+
import type { AgentStreamEvent } from '../types/agent-stream.js';
|
|
3
|
+
import type { ContentAgentTool } from '../mcp/tools.js';
|
|
4
|
+
import type { AgentToolExecutionContext } from '../types/agent-tools.js';
|
|
5
|
+
export interface RunAgentTurnOptions {
|
|
6
|
+
aiProvider: AIProviderAdapter;
|
|
7
|
+
model: string;
|
|
8
|
+
messages: AIMessage[];
|
|
9
|
+
/** The caller's resolved tool list — see `resolveAgentTools` in `mcp/tools.ts`. */
|
|
10
|
+
tools: ContentAgentTool[];
|
|
11
|
+
toolContext: AgentToolExecutionContext;
|
|
12
|
+
/** Prepended ahead of `messages` on every model call within this turn, but never spliced
|
|
13
|
+
* into `messages` itself — it must stay out of the `done` event's `messages` (what the
|
|
14
|
+
* client persists and replays next turn), or a stale copy would get resent forever and an
|
|
15
|
+
* app-level prompt change would never reach an already-open conversation. */
|
|
16
|
+
systemPrompt?: string;
|
|
17
|
+
maxTokens?: number;
|
|
18
|
+
/** Safety cap on tool-calling round trips before the turn is force-stopped as an error. */
|
|
19
|
+
maxToolRoundtrips?: number;
|
|
20
|
+
signal?: AbortSignal;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Streams one agent turn: sends `messages` to the model, executes any tool calls it
|
|
24
|
+
* requests against `tools`, feeds the results back as `tool` messages, and repeats until
|
|
25
|
+
* the model stops calling tools (or `maxToolRoundtrips` is hit — surfaced as an error
|
|
26
|
+
* rather than looping forever against a model that won't stop calling tools).
|
|
27
|
+
*/
|
|
28
|
+
export declare function runAgentTurn(opts: RunAgentTurnOptions): AsyncIterable<AgentStreamEvent>;
|
|
29
|
+
//# sourceMappingURL=run-agent-turn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-agent-turn.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/run-agent-turn.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACX,iBAAiB,EACjB,SAAS,EAGT,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGtE,MAAM,WAAW,mBAAmB;IACnC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,mFAAmF;IACnF,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,WAAW,EAAE,yBAAyB,CAAC;IACvC;;;iFAG6E;IAC7E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2FAA2F;IAC3F,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,WAAW,CAAC;CACrB;AAYD;;;;;GAKG;AACH,wBAAuB,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAuJ9F"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
// ai/run-agent-turn.ts
|
|
2
|
+
//
|
|
3
|
+
// The tool-calling loop that drives one agent turn to completion — the "runtime" half of sitting on top of the
|
|
4
|
+
// `AIProviderAdapter` port and the `ContentAgentTool` list `resolveAgentTools` (mcp/tools.ts)
|
|
5
|
+
// already resolves for MCP. Transport-agnostic: this function has no knowledge of HTTP/SSE —
|
|
6
|
+
// a route handler consumes the `AgentStreamEvent`s it yields and maps them onto the wire.
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
import { hasCapability } from '../types/capabilities.js';
|
|
9
|
+
const DEFAULT_MAX_TOOL_ROUNDTRIPS = 8;
|
|
10
|
+
function toToolSpec(tool) {
|
|
11
|
+
return {
|
|
12
|
+
name: tool.definition.name,
|
|
13
|
+
description: tool.definition.description,
|
|
14
|
+
parameters: z.toJSONSchema(tool.definition.inputSchema)
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Streams one agent turn: sends `messages` to the model, executes any tool calls it
|
|
19
|
+
* requests against `tools`, feeds the results back as `tool` messages, and repeats until
|
|
20
|
+
* the model stops calling tools (or `maxToolRoundtrips` is hit — surfaced as an error
|
|
21
|
+
* rather than looping forever against a model that won't stop calling tools).
|
|
22
|
+
*/
|
|
23
|
+
export async function* runAgentTurn(opts) {
|
|
24
|
+
const messages = [...opts.messages];
|
|
25
|
+
const systemMessage = opts.systemPrompt
|
|
26
|
+
? { role: 'system', content: opts.systemPrompt }
|
|
27
|
+
: null;
|
|
28
|
+
const toolsByName = new Map(opts.tools.map((t) => [t.definition.name, t]));
|
|
29
|
+
const toolSpecs = opts.tools.map(toToolSpec);
|
|
30
|
+
const maxRoundtrips = opts.maxToolRoundtrips ?? DEFAULT_MAX_TOOL_ROUNDTRIPS;
|
|
31
|
+
let roundtrips = 0;
|
|
32
|
+
for (;;) {
|
|
33
|
+
let assistantText = '';
|
|
34
|
+
const pendingToolCalls = [];
|
|
35
|
+
let finishReason = 'stop';
|
|
36
|
+
let erroredOut = false;
|
|
37
|
+
for await (const event of opts.aiProvider.chatStream({
|
|
38
|
+
model: opts.model,
|
|
39
|
+
messages: systemMessage ? [systemMessage, ...messages] : messages,
|
|
40
|
+
tools: toolSpecs,
|
|
41
|
+
maxTokens: opts.maxTokens,
|
|
42
|
+
signal: opts.signal
|
|
43
|
+
})) {
|
|
44
|
+
switch (event.type) {
|
|
45
|
+
case 'text':
|
|
46
|
+
assistantText += event.delta;
|
|
47
|
+
yield event;
|
|
48
|
+
break;
|
|
49
|
+
case 'toolCall':
|
|
50
|
+
pendingToolCalls.push(event.toolCall);
|
|
51
|
+
yield {
|
|
52
|
+
type: 'toolCall',
|
|
53
|
+
toolCallId: event.toolCall.id,
|
|
54
|
+
name: event.toolCall.name,
|
|
55
|
+
arguments: event.toolCall.arguments
|
|
56
|
+
};
|
|
57
|
+
break;
|
|
58
|
+
case 'usage':
|
|
59
|
+
yield event;
|
|
60
|
+
break;
|
|
61
|
+
case 'error':
|
|
62
|
+
yield event;
|
|
63
|
+
erroredOut = true;
|
|
64
|
+
break;
|
|
65
|
+
case 'done':
|
|
66
|
+
finishReason = event.finishReason;
|
|
67
|
+
break;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
if (erroredOut) {
|
|
71
|
+
if (assistantText)
|
|
72
|
+
messages.push({ role: 'assistant', content: assistantText });
|
|
73
|
+
yield { type: 'done', finishReason: 'error', messages };
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (finishReason !== 'tool_calls' || pendingToolCalls.length === 0) {
|
|
77
|
+
// Unlike the tool-calling branch below, nothing else pushes this round's assistant
|
|
78
|
+
// reply onto `messages` — this is the terminal round, so it must happen here or the
|
|
79
|
+
// model's final answer would be silently missing from the conversation `messages`
|
|
80
|
+
// hands back for the next turn to replay.
|
|
81
|
+
if (assistantText)
|
|
82
|
+
messages.push({ role: 'assistant', content: assistantText });
|
|
83
|
+
yield { type: 'done', finishReason, messages };
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
if (++roundtrips > maxRoundtrips) {
|
|
87
|
+
yield { type: 'error', message: `Stopped after ${maxRoundtrips} tool-calling round trips.` };
|
|
88
|
+
yield { type: 'done', finishReason: 'error', messages };
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
messages.push({ role: 'assistant', content: assistantText, toolCalls: pendingToolCalls });
|
|
92
|
+
// `execution: 'workspace'` tools touch a live, possibly-unsaved editor draft that only
|
|
93
|
+
// exists in the browser — this server-side loop can't run them. Every other call in the
|
|
94
|
+
// round still executes normally below; the workspace calls are set aside and, once the
|
|
95
|
+
// round finishes, pause the turn instead of looping — the caller resolves them locally
|
|
96
|
+
// and resumes with a fresh request (see `types/agent-stream.ts`'s `done` event doc).
|
|
97
|
+
const workspaceCalls = [];
|
|
98
|
+
const executableCalls = [];
|
|
99
|
+
for (const call of pendingToolCalls) {
|
|
100
|
+
const tool = toolsByName.get(call.name);
|
|
101
|
+
(tool?.definition.execution === 'workspace' ? workspaceCalls : executableCalls).push(call);
|
|
102
|
+
}
|
|
103
|
+
for (const call of executableCalls) {
|
|
104
|
+
const tool = toolsByName.get(call.name);
|
|
105
|
+
let success;
|
|
106
|
+
let data;
|
|
107
|
+
let error;
|
|
108
|
+
if (!tool) {
|
|
109
|
+
success = false;
|
|
110
|
+
error = `Unknown tool: ${call.name}`;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
// Defense in depth: `tools` is expected to already be filtered to this caller's
|
|
114
|
+
// capabilities (see `resolveAgentTools`), but a tool must reject direct invocation
|
|
115
|
+
// too — never rely on the advertisement filter alone (AgentToolDefinition's own
|
|
116
|
+
// doc comment on `requiredCapabilities` is explicit about this).
|
|
117
|
+
const requiredCaps = tool.definition.requiredCapabilities ?? [];
|
|
118
|
+
const auth = opts.toolContext.context.auth;
|
|
119
|
+
const authorized = requiredCaps.length === 0 ||
|
|
120
|
+
(auth != null && requiredCaps.every((c) => hasCapability(auth, c)));
|
|
121
|
+
if (!authorized) {
|
|
122
|
+
success = false;
|
|
123
|
+
error = `Forbidden: requires ${requiredCaps.join(', ')}`;
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
const parsed = tool.definition.inputSchema.safeParse(call.arguments);
|
|
127
|
+
if (!parsed.success) {
|
|
128
|
+
success = false;
|
|
129
|
+
error = `Invalid arguments: ${parsed.error.message}`;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
try {
|
|
133
|
+
const result = await tool.execute(parsed.data, opts.toolContext);
|
|
134
|
+
success = result.success;
|
|
135
|
+
data = result.success ? result.data : undefined;
|
|
136
|
+
error = result.success ? undefined : result.error;
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
success = false;
|
|
140
|
+
error = err instanceof Error ? err.message : String(err);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
yield { type: 'toolResult', toolCallId: call.id, name: call.name, success, data, error };
|
|
146
|
+
messages.push({
|
|
147
|
+
role: 'tool',
|
|
148
|
+
toolCallId: call.id,
|
|
149
|
+
content: JSON.stringify(success ? (data ?? null) : { error })
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
if (workspaceCalls.length > 0) {
|
|
153
|
+
yield {
|
|
154
|
+
type: 'done',
|
|
155
|
+
finishReason: 'awaiting_workspace_tool',
|
|
156
|
+
messages,
|
|
157
|
+
pendingWorkspaceCalls: workspaceCalls.map((c) => ({
|
|
158
|
+
toolCallId: c.id,
|
|
159
|
+
name: c.name,
|
|
160
|
+
arguments: c.arguments
|
|
161
|
+
}))
|
|
162
|
+
};
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=run-agent-turn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-agent-turn.js","sourceRoot":"","sources":["../../../src/lib/ai/run-agent-turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ApiResponse } from './types.js';
|
|
2
|
+
import type { AgentChatRequest } from './schemas/agent-chat.js';
|
|
3
|
+
import type { RecordWorkspaceOperationRequest } from './schemas/agent-operations.js';
|
|
4
|
+
import type { AgentStreamEvent } from '../types/agent-stream.js';
|
|
5
|
+
/**
|
|
6
|
+
* Streams one leg of an agent turn. Not built on `apiClient` — that always `await`s and parses
|
|
7
|
+
* a JSON body, which is structurally incompatible with a chunked SSE response; this is the one
|
|
8
|
+
* agent-chat call that needs the raw `fetch` + `ReadableStream`. `signal` is caller-supplied
|
|
9
|
+
* (not `apiClient`'s own internal 10s timeout) so the chat panel's Stop button can abort
|
|
10
|
+
* mid-stream regardless of how long a turn runs.
|
|
11
|
+
*
|
|
12
|
+
* A turn that pauses for a workspace tool (`finishReason: 'awaiting_workspace_tool'`) ends this
|
|
13
|
+
* generator normally — resolving the pause and resuming is the caller's job (`AgentChat.svelte`
|
|
14
|
+
* re-calls this with the same `changeSetId` echoed back), not something this function loops on
|
|
15
|
+
* itself.
|
|
16
|
+
*/
|
|
17
|
+
export declare function streamAgentChat(body: AgentChatRequest, signal?: AbortSignal): AsyncGenerator<AgentStreamEvent>;
|
|
18
|
+
/**
|
|
19
|
+
* Records an audit row for a workspace-bridge tool (`content_patch_fields`/`content_save_draft`)
|
|
20
|
+
* the client resolved locally against a live `DocumentWorkspace` — see
|
|
21
|
+
* `server/api/routes/agent-chat.ts`'s `POST /operations`. Plain JSON request/response, so unlike
|
|
22
|
+
* `streamAgentChat` above, this one goes through the shared `apiClient`.
|
|
23
|
+
*/
|
|
24
|
+
export declare function recordWorkspaceOperation(body: RecordWorkspaceOperationRequest): Promise<ApiResponse<{
|
|
25
|
+
success: true;
|
|
26
|
+
}>>;
|
|
27
|
+
//# sourceMappingURL=agent-chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-chat.d.ts","sourceRoot":"","sources":["../../../src/lib/api/agent-chat.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAY9D;;;;;;;;;;;GAWG;AACH,wBAAuB,eAAe,CACrC,IAAI,EAAE,gBAAgB,EACtB,MAAM,CAAC,EAAE,WAAW,GAClB,cAAc,CAAC,gBAAgB,CAAC,CA8BlC;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,IAAI,EAAE,+BAA+B,GACnC,OAAO,CAAC,WAAW,CAAC;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC,CAAC,CAEzC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// Agent chat API client — the two HTTP calls AgentChat.svelte's send() loop makes, pulled out
|
|
2
|
+
// of the component per the same convention as api/documents.ts/api/assets.ts.
|
|
3
|
+
import { apiClient } from './client.js';
|
|
4
|
+
function parseSSEFrame(frame) {
|
|
5
|
+
const payload = frame
|
|
6
|
+
.split(/\r?\n/)
|
|
7
|
+
.filter((line) => line.startsWith('data:'))
|
|
8
|
+
.map((line) => line.slice(5).trimStart())
|
|
9
|
+
.join('\n');
|
|
10
|
+
if (!payload)
|
|
11
|
+
return null;
|
|
12
|
+
return JSON.parse(payload);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Streams one leg of an agent turn. Not built on `apiClient` — that always `await`s and parses
|
|
16
|
+
* a JSON body, which is structurally incompatible with a chunked SSE response; this is the one
|
|
17
|
+
* agent-chat call that needs the raw `fetch` + `ReadableStream`. `signal` is caller-supplied
|
|
18
|
+
* (not `apiClient`'s own internal 10s timeout) so the chat panel's Stop button can abort
|
|
19
|
+
* mid-stream regardless of how long a turn runs.
|
|
20
|
+
*
|
|
21
|
+
* A turn that pauses for a workspace tool (`finishReason: 'awaiting_workspace_tool'`) ends this
|
|
22
|
+
* generator normally — resolving the pause and resuming is the caller's job (`AgentChat.svelte`
|
|
23
|
+
* re-calls this with the same `changeSetId` echoed back), not something this function loops on
|
|
24
|
+
* itself.
|
|
25
|
+
*/
|
|
26
|
+
export async function* streamAgentChat(body, signal) {
|
|
27
|
+
const response = await fetch('/api/agent/chat', {
|
|
28
|
+
method: 'POST',
|
|
29
|
+
headers: { 'Content-Type': 'application/json' },
|
|
30
|
+
body: JSON.stringify(body),
|
|
31
|
+
signal
|
|
32
|
+
});
|
|
33
|
+
if (!response.ok || !response.body) {
|
|
34
|
+
const errorBody = await response.json().catch(() => null);
|
|
35
|
+
throw new Error(errorBody?.error ?? `Request failed (${response.status})`);
|
|
36
|
+
}
|
|
37
|
+
const reader = response.body.getReader();
|
|
38
|
+
const decoder = new TextDecoder();
|
|
39
|
+
let buffer = '';
|
|
40
|
+
for (;;) {
|
|
41
|
+
const { done, value } = await reader.read();
|
|
42
|
+
buffer += decoder.decode(value, { stream: !done });
|
|
43
|
+
const frames = buffer.split(/\r?\n\r?\n/);
|
|
44
|
+
buffer = frames.pop() ?? '';
|
|
45
|
+
if (done && buffer.trim())
|
|
46
|
+
frames.push(buffer);
|
|
47
|
+
for (const frame of frames) {
|
|
48
|
+
const event = parseSSEFrame(frame);
|
|
49
|
+
if (event)
|
|
50
|
+
yield event;
|
|
51
|
+
}
|
|
52
|
+
if (done)
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Records an audit row for a workspace-bridge tool (`content_patch_fields`/`content_save_draft`)
|
|
58
|
+
* the client resolved locally against a live `DocumentWorkspace` — see
|
|
59
|
+
* `server/api/routes/agent-chat.ts`'s `POST /operations`. Plain JSON request/response, so unlike
|
|
60
|
+
* `streamAgentChat` above, this one goes through the shared `apiClient`.
|
|
61
|
+
*/
|
|
62
|
+
export function recordWorkspaceOperation(body) {
|
|
63
|
+
return apiClient.post('/agent/operations', body);
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=agent-chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-chat.js","sourceRoot":"","sources":["../../../src/lib/api/agent-chat.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,8EAA8E;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAMrC,SAAS,aAAa,CAAC,KAAa;IACnC,MAAM,OAAO,GAAG,KAAK;SACnB,KAAK,CAAC,OAAO,CAAC;SACd,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;SACxC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAqB,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,eAAe,CACrC,IAAsB,EACtB,MAAoB;IAEpB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,iBAAiB,EAAE;QAC/C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM;KACN,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,SAAS,EAAE,KAAK,IAAI,mBAAmB,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,SAAS,CAAC;QACT,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QAC1C,MAAM,GAAG,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC5B,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE;YAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,KAAK;gBAAE,MAAM,KAAK,CAAC;QACxB,CAAC;QACD,IAAI,IAAI;YAAE,MAAM;IACjB,CAAC;AACF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CACvC,IAAqC;IAErC,OAAO,SAAS,CAAC,IAAI,CAAoB,mBAAmB,EAAE,IAAI,CAAC,CAAC;AACrE,CAAC"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { ApiResponse } from './types.js';
|
|
2
2
|
import type { DocumentDTO, ListDocumentsQuery, CreateDocumentRequest, UpdateDocumentRequest, DocumentVersion, ListVersionsQuery } from './schemas/documents.js';
|
|
3
|
+
/** Shared CAS-guard option accepted by publish/unpublish/restore. */
|
|
4
|
+
export interface RevisionGuardOptions {
|
|
5
|
+
/** The revision last read from `_meta.revision`. Omit to skip the check. */
|
|
6
|
+
expectedRevision?: number;
|
|
7
|
+
}
|
|
3
8
|
export type DocumentListParams = ListDocumentsQuery;
|
|
4
9
|
export declare class DocumentsApi {
|
|
5
10
|
/**
|
|
@@ -41,11 +46,36 @@ export declare class DocumentsApi {
|
|
|
41
46
|
/**
|
|
42
47
|
* Publish document (copy draft -> published)
|
|
43
48
|
*/
|
|
44
|
-
static publish(id: string): Promise<ApiResponse<DocumentDTO>>;
|
|
49
|
+
static publish(id: string, options?: RevisionGuardOptions): Promise<ApiResponse<DocumentDTO>>;
|
|
45
50
|
/**
|
|
46
51
|
* Unpublish document (revert to draft only)
|
|
47
52
|
*/
|
|
48
|
-
static unpublish(id: string): Promise<ApiResponse<DocumentDTO>>;
|
|
53
|
+
static unpublish(id: string, options?: RevisionGuardOptions): Promise<ApiResponse<DocumentDTO>>;
|
|
54
|
+
/**
|
|
55
|
+
* Schedule a publish/unpublish for a future time (ISO-8601 `runAt`).
|
|
56
|
+
* Enqueues a job the worker runs at that time — the permission check happens now.
|
|
57
|
+
*/
|
|
58
|
+
static schedule(id: string, body: {
|
|
59
|
+
action: 'publish' | 'unpublish';
|
|
60
|
+
runAt: string;
|
|
61
|
+
}): Promise<ApiResponse<{
|
|
62
|
+
jobId: string;
|
|
63
|
+
type: string;
|
|
64
|
+
runAt: string;
|
|
65
|
+
status: string;
|
|
66
|
+
}>>;
|
|
67
|
+
/** Pending scheduled publish/unpublish for a document (for the editor's schedule indicator). */
|
|
68
|
+
static getSchedule(id: string): Promise<ApiResponse<Array<{
|
|
69
|
+
jobId: string;
|
|
70
|
+
type: string;
|
|
71
|
+
runAt: string;
|
|
72
|
+
status: string;
|
|
73
|
+
createdAt: string;
|
|
74
|
+
}>>>;
|
|
75
|
+
/** Cancel the pending schedule for a document. */
|
|
76
|
+
static cancelSchedule(id: string): Promise<ApiResponse<{
|
|
77
|
+
cancelled: number;
|
|
78
|
+
}>>;
|
|
49
79
|
/**
|
|
50
80
|
* Delete document by ID
|
|
51
81
|
*/
|
|
@@ -73,7 +103,7 @@ export declare class DocumentsApi {
|
|
|
73
103
|
/**
|
|
74
104
|
* Restore a version to draft
|
|
75
105
|
*/
|
|
76
|
-
static restoreVersion(id: string, versionNumber: number): Promise<ApiResponse<DocumentDTO>>;
|
|
106
|
+
static restoreVersion(id: string, versionNumber: number, options?: RevisionGuardOptions): Promise<ApiResponse<DocumentDTO>>;
|
|
77
107
|
}
|
|
78
108
|
export declare const documents: {
|
|
79
109
|
list: typeof DocumentsApi.list;
|
|
@@ -84,6 +114,9 @@ export declare const documents: {
|
|
|
84
114
|
updateById: typeof DocumentsApi.updateById;
|
|
85
115
|
publish: typeof DocumentsApi.publish;
|
|
86
116
|
unpublish: typeof DocumentsApi.unpublish;
|
|
117
|
+
schedule: typeof DocumentsApi.schedule;
|
|
118
|
+
getSchedule: typeof DocumentsApi.getSchedule;
|
|
119
|
+
cancelSchedule: typeof DocumentsApi.cancelSchedule;
|
|
87
120
|
deleteById: typeof DocumentsApi.deleteById;
|
|
88
121
|
getByType: typeof DocumentsApi.getByType;
|
|
89
122
|
getPublished: typeof DocumentsApi.getPublished;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../src/lib/api/documents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EACX,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../../src/lib/api/documents.ts"],"names":[],"mappings":"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"}
|
|
@@ -55,14 +55,29 @@ export class DocumentsApi {
|
|
|
55
55
|
/**
|
|
56
56
|
* Publish document (copy draft -> published)
|
|
57
57
|
*/
|
|
58
|
-
static async publish(id) {
|
|
59
|
-
return apiClient.post(`/documents/${id}/publish
|
|
58
|
+
static async publish(id, options) {
|
|
59
|
+
return apiClient.post(`/documents/${id}/publish`, options);
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Unpublish document (revert to draft only)
|
|
63
63
|
*/
|
|
64
|
-
static async unpublish(id) {
|
|
65
|
-
return apiClient.delete(`/documents/${id}/publish
|
|
64
|
+
static async unpublish(id, options) {
|
|
65
|
+
return apiClient.delete(`/documents/${id}/publish`, options);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Schedule a publish/unpublish for a future time (ISO-8601 `runAt`).
|
|
69
|
+
* Enqueues a job the worker runs at that time — the permission check happens now.
|
|
70
|
+
*/
|
|
71
|
+
static async schedule(id, body) {
|
|
72
|
+
return apiClient.post(`/documents/${id}/schedule`, body);
|
|
73
|
+
}
|
|
74
|
+
/** Pending scheduled publish/unpublish for a document (for the editor's schedule indicator). */
|
|
75
|
+
static async getSchedule(id) {
|
|
76
|
+
return apiClient.get(`/documents/${id}/schedule`);
|
|
77
|
+
}
|
|
78
|
+
/** Cancel the pending schedule for a document. */
|
|
79
|
+
static async cancelSchedule(id) {
|
|
80
|
+
return apiClient.delete(`/documents/${id}/schedule`);
|
|
66
81
|
}
|
|
67
82
|
/**
|
|
68
83
|
* Delete document by ID
|
|
@@ -103,8 +118,8 @@ export class DocumentsApi {
|
|
|
103
118
|
/**
|
|
104
119
|
* Restore a version to draft
|
|
105
120
|
*/
|
|
106
|
-
static async restoreVersion(id, versionNumber) {
|
|
107
|
-
return apiClient.post(`/documents/${id}/versions/${versionNumber}/restore
|
|
121
|
+
static async restoreVersion(id, versionNumber, options) {
|
|
122
|
+
return apiClient.post(`/documents/${id}/versions/${versionNumber}/restore`, options);
|
|
108
123
|
}
|
|
109
124
|
}
|
|
110
125
|
// Export convenience functions for direct use
|
|
@@ -117,6 +132,9 @@ export const documents = {
|
|
|
117
132
|
updateById: DocumentsApi.updateById.bind(DocumentsApi),
|
|
118
133
|
publish: DocumentsApi.publish.bind(DocumentsApi),
|
|
119
134
|
unpublish: DocumentsApi.unpublish.bind(DocumentsApi),
|
|
135
|
+
schedule: DocumentsApi.schedule.bind(DocumentsApi),
|
|
136
|
+
getSchedule: DocumentsApi.getSchedule.bind(DocumentsApi),
|
|
137
|
+
cancelSchedule: DocumentsApi.cancelSchedule.bind(DocumentsApi),
|
|
120
138
|
deleteById: DocumentsApi.deleteById.bind(DocumentsApi),
|
|
121
139
|
getByType: DocumentsApi.getByType.bind(DocumentsApi),
|
|
122
140
|
getPublished: DocumentsApi.getPublished.bind(DocumentsApi),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/lib/api/documents.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"documents.js","sourceRoot":"","sources":["../../../src/lib/api/documents.ts"],"names":[],"mappings":"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"}
|