@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,40 @@
|
|
|
1
|
+
import { Hono } from 'hono';
|
|
2
|
+
import { randomUUID, timingSafeEqual } from 'node:crypto';
|
|
3
|
+
import { runJobsBatch } from '../../../jobs/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Constant-time compare of the presented bearer token against the configured secret.
|
|
6
|
+
* Length is compared first (and short-circuits), which leaks only the secret's length —
|
|
7
|
+
* acceptable, and unavoidable without hashing both sides.
|
|
8
|
+
*/
|
|
9
|
+
function secretMatches(presented, expected) {
|
|
10
|
+
const a = Buffer.from(presented);
|
|
11
|
+
const b = Buffer.from(expected);
|
|
12
|
+
if (a.length !== b.length)
|
|
13
|
+
return false;
|
|
14
|
+
return timingSafeEqual(a, b);
|
|
15
|
+
}
|
|
16
|
+
export const workersRunRouter = new Hono();
|
|
17
|
+
/**
|
|
18
|
+
* POST /api/internal/workers/run — drive one bounded batch of due jobs and return counts.
|
|
19
|
+
*
|
|
20
|
+
* Machine-to-machine: authorized by a shared secret (`Authorization: Bearer <secret>`),
|
|
21
|
+
* NOT the user capability system — platform cron (hosted) or a self-hosted worker loop
|
|
22
|
+
* calls it on a cadence. Disabled (404) unless `jobs.workerSecret` is configured, so it
|
|
23
|
+
* never exists as an unauthenticated surface by default. Bounded per call (batchSize), so
|
|
24
|
+
* a single invocation can't run unboundedly; the caller's cadence sets throughput.
|
|
25
|
+
*/
|
|
26
|
+
workersRunRouter.post('/run', async (c) => {
|
|
27
|
+
const secret = c.var.aphexCMS.config.jobs?.workerSecret;
|
|
28
|
+
// Not configured → the endpoint doesn't exist. Don't advertise it or hint at auth.
|
|
29
|
+
if (!secret)
|
|
30
|
+
return c.json({ success: false, error: 'Not found' }, 404);
|
|
31
|
+
const header = c.req.header('authorization') ?? '';
|
|
32
|
+
const presented = header.startsWith('Bearer ') ? header.slice('Bearer '.length) : '';
|
|
33
|
+
if (!presented || !secretMatches(presented, secret)) {
|
|
34
|
+
return c.json({ success: false, error: 'Unauthorized' }, 401);
|
|
35
|
+
}
|
|
36
|
+
// Shared seam: builds the handler map (built-in + app-registered) and runs one batch.
|
|
37
|
+
// The embedded poll loop calls the same helper, so the two modes can't drift.
|
|
38
|
+
const result = await runJobsBatch(c.var.aphexCMS, { workerId: `endpoint-${randomUUID()}` });
|
|
39
|
+
return c.json({ success: true, result });
|
|
40
|
+
});
|
package/dist/server/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from '../types/index.js';
|
|
|
2
2
|
export * from '../auth/provider.js';
|
|
3
3
|
export * from '../cache/index.js';
|
|
4
4
|
export * from '../email/index.js';
|
|
5
|
+
export * from '../ai/index.js';
|
|
5
6
|
export { AuthError, type AuthErrorCode } from '../auth/auth-errors.js';
|
|
6
7
|
export { createCMSConfig } from '../config.js';
|
|
7
8
|
export { cmsLogger, setLogger, type Logger } from '../utils/logger.js';
|
|
@@ -16,6 +17,7 @@ export { AssetService } from '../services/asset-service.js';
|
|
|
16
17
|
export { RolesService } from '../services/roles-service.js';
|
|
17
18
|
export { GET as serveAssetCDN } from '../routes/assets-cdn.js';
|
|
18
19
|
export { createAphexApi, mountAphexBuiltins, toHonoHandler, type AphexEnv } from './api/index.js';
|
|
20
|
+
export * from '../jobs/index.js';
|
|
19
21
|
export * from '../schema-utils/index.js';
|
|
20
22
|
export { createHashForPublishing } from '../utils/content-hash.js';
|
|
21
23
|
export { getPreviewPerspective, type PreviewPerspective } from '../preview/perspective.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/server/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/server/index.ts"],"names":[],"mappings":"AAIA,cAAc,gBAAgB,CAAC;AAE/B,cAAc,kBAAkB,CAAC;AAEjC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,gBAAgB,CAAC;AAE/B,cAAc,aAAa,CAAC;AAG5B,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGpE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,KAAK,YAAY,EAAE,MAAM,UAAU,CAAC;AAGxF,cAAc,wBAAwB,CAAC;AAGvC,cAAc,kBAAkB,CAAC;AACjC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAG7C,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,EAAE,GAAG,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAI5D,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG/F,cAAc,eAAe,CAAC;AAG9B,cAAc,uBAAuB,CAAC;AAGtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAGhE,OAAO,EAAE,qBAAqB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAGxF,OAAO,EACN,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACN,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,WAAW,EACX,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EACN,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,MAAM,cAAc,CAAC"}
|
package/dist/server/index.js
CHANGED
|
@@ -5,6 +5,7 @@ export * from '../types/index.js';
|
|
|
5
5
|
export * from '../auth/provider.js';
|
|
6
6
|
export * from '../cache/index.js';
|
|
7
7
|
export * from '../email/index.js';
|
|
8
|
+
export * from '../ai/index.js';
|
|
8
9
|
// Authentication errors
|
|
9
10
|
export { AuthError } from '../auth/auth-errors.js';
|
|
10
11
|
// Configuration system
|
|
@@ -32,6 +33,8 @@ export { GET as serveAssetCDN } from '../routes/assets-cdn.js';
|
|
|
32
33
|
// Hono API app — exposed so user apps (and tests) can construct or extend
|
|
33
34
|
// the same router the SK catch-all forwards to.
|
|
34
35
|
export { createAphexApi, mountAphexBuiltins, toHonoHandler } from './api/index.js';
|
|
36
|
+
// Job execution — the DB-backed job runner (claim → run handler → complete/retry/fail).
|
|
37
|
+
export * from '../jobs/index.js';
|
|
35
38
|
// Schema utilities
|
|
36
39
|
export * from '../schema-utils/index.js';
|
|
37
40
|
// Content hash utilities (server-side)
|
|
@@ -17,18 +17,34 @@ export declare class VersionService {
|
|
|
17
17
|
* Create a version snapshot and enforce rolling retention.
|
|
18
18
|
*/
|
|
19
19
|
createVersion(db: DatabaseAdapter, organizationId: string, documentId: string, eventType: 'draft' | 'publish', data: any, userId?: string | null): Promise<DocumentVersion | null>;
|
|
20
|
+
/**
|
|
21
|
+
* Write a version snapshot on an already-transactional adapter. The caller owns
|
|
22
|
+
* the transaction boundary and retention (call `enforceRetentionFor` post-commit).
|
|
23
|
+
* No-op when the adapter has no versioning support.
|
|
24
|
+
*/
|
|
25
|
+
snapshotTx(tx: DatabaseAdapter, organizationId: string, documentId: string, eventType: 'draft' | 'publish', data: any, userId?: string | null): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Publish + snapshot on an already-transactional adapter. Caller owns the tx
|
|
28
|
+
* and retention. Returns the published document (or null if publish was a no-op).
|
|
29
|
+
*/
|
|
30
|
+
publishTx(tx: DatabaseAdapter, organizationId: string, documentId: string, expectedRevision?: number): Promise<Document | null>;
|
|
31
|
+
/**
|
|
32
|
+
* Public retention trigger for callers that manage their own transaction and
|
|
33
|
+
* therefore can't rely on `saveWithVersion`/`publishWithVersion` to run it.
|
|
34
|
+
*/
|
|
35
|
+
enforceRetentionFor(db: DatabaseAdapter, organizationId: string, documentId: string): Promise<void>;
|
|
20
36
|
/**
|
|
21
37
|
* Save draft and create version atomically using adapter transaction.
|
|
22
38
|
*/
|
|
23
|
-
saveWithVersion(db: DatabaseAdapter, organizationId: string, documentId: string, data: any, userId?: string): Promise<Document | null>;
|
|
39
|
+
saveWithVersion(db: DatabaseAdapter, organizationId: string, documentId: string, data: any, userId?: string, expectedRevision?: number): Promise<Document | null>;
|
|
24
40
|
/**
|
|
25
41
|
* Publish and create version.
|
|
26
42
|
*/
|
|
27
|
-
publishWithVersion(db: DatabaseAdapter, organizationId: string, documentId: string): Promise<Document | null>;
|
|
43
|
+
publishWithVersion(db: DatabaseAdapter, organizationId: string, documentId: string, expectedRevision?: number): Promise<Document | null>;
|
|
28
44
|
/**
|
|
29
45
|
* Restore a version to draft. Creates a 'draft' version entry.
|
|
30
46
|
*/
|
|
31
|
-
restoreVersion(db: DatabaseAdapter, organizationId: string, documentId: string, versionNumber: number, userId?: string): Promise<Document | null>;
|
|
47
|
+
restoreVersion(db: DatabaseAdapter, organizationId: string, documentId: string, versionNumber: number, userId?: string, expectedRevision?: number): Promise<Document | null>;
|
|
32
48
|
listVersions(db: DatabaseAdapter, organizationId: string, documentId: string, options?: {
|
|
33
49
|
limit?: number;
|
|
34
50
|
offset?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version-service.d.ts","sourceRoot":"","sources":["../../src/lib/services/version-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"version-service.d.ts","sourceRoot":"","sources":["../../src/lib/services/version-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG7E;;;;;;GAMG;AACH,qBAAa,cAAc;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE;IAI9C;;OAEG;IACG,aAAa,CAClB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAelC;;;;OAIG;IACG,UAAU,CACf,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,OAAO,GAAG,SAAS,EAC9B,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GACpB,OAAO,CAAC,IAAI,CAAC;IAWhB;;;OAGG;IACG,SAAS,CACd,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAoB3B;;;OAGG;IACG,mBAAmB,CACxB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;OAEG;IACG,eAAe,CACpB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,GAAG,EACT,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwB3B;;OAEG;IACG,kBAAkB,CACvB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiB3B;;OAEG;IACG,cAAc,CACnB,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,MAAM,CAAC,EAAE,MAAM,EACf,gBAAgB,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IA6BrB,YAAY,CACjB,EAAE,EAAE,eAAe,EACnB,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;IAKzB,UAAU,CACf,EAAE,EAAE,eAAe,EACnB,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;YAKpB,gBAAgB;CAuB9B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { emitDocumentPublished } from '../events/emit.js';
|
|
1
2
|
/**
|
|
2
3
|
* VersionService — orchestrates document versioning with rolling retention.
|
|
3
4
|
*
|
|
@@ -27,98 +28,103 @@ export class VersionService {
|
|
|
27
28
|
return version;
|
|
28
29
|
}
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
+
* Write a version snapshot on an already-transactional adapter. The caller owns
|
|
32
|
+
* the transaction boundary and retention (call `enforceRetentionFor` post-commit).
|
|
33
|
+
* No-op when the adapter has no versioning support.
|
|
34
|
+
*/
|
|
35
|
+
async snapshotTx(tx, organizationId, documentId, eventType, data, userId) {
|
|
36
|
+
if (!tx.createDocumentVersion)
|
|
37
|
+
return;
|
|
38
|
+
await tx.createDocumentVersion({
|
|
39
|
+
documentId,
|
|
40
|
+
organizationId,
|
|
41
|
+
eventType,
|
|
42
|
+
data,
|
|
43
|
+
createdBy: userId
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Publish + snapshot on an already-transactional adapter. Caller owns the tx
|
|
48
|
+
* and retention. Returns the published document (or null if publish was a no-op).
|
|
31
49
|
*/
|
|
32
|
-
async
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
data,
|
|
42
|
-
createdBy: userId
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return result;
|
|
46
|
-
});
|
|
47
|
-
if (updated)
|
|
48
|
-
await this.enforceRetention(db, documentId, organizationId);
|
|
49
|
-
return updated;
|
|
50
|
+
async publishTx(tx, organizationId, documentId, expectedRevision) {
|
|
51
|
+
const result = await tx.publishDoc(organizationId, documentId, expectedRevision);
|
|
52
|
+
if (result) {
|
|
53
|
+
await this.snapshotTx(tx, organizationId, documentId, 'publish', result.publishedData, result.updatedBy);
|
|
54
|
+
// Transactional outbox: record the durable fact in the same tx as the publish, so
|
|
55
|
+
// the event and the state change commit (or roll back) together — a consumer can
|
|
56
|
+
// never see a publish that didn't happen, nor miss one that did. The non-versioned
|
|
57
|
+
// publish path (collection-api) emits the same event via the same helper.
|
|
58
|
+
await emitDocumentPublished(tx, organizationId, result);
|
|
50
59
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Public retention trigger for callers that manage their own transaction and
|
|
64
|
+
* therefore can't rely on `saveWithVersion`/`publishWithVersion` to run it.
|
|
65
|
+
*/
|
|
66
|
+
async enforceRetentionFor(db, organizationId, documentId) {
|
|
67
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Save draft and create version atomically using adapter transaction.
|
|
71
|
+
*/
|
|
72
|
+
async saveWithVersion(db, organizationId, documentId, data, userId, expectedRevision) {
|
|
73
|
+
// No versioning support: a single write, atomic on its own.
|
|
74
|
+
if (!db.createDocumentVersion) {
|
|
75
|
+
return db.updateDocDraft(organizationId, documentId, data, userId, expectedRevision);
|
|
55
76
|
}
|
|
77
|
+
// RevisionConflictError propagates out of the transaction un-swallowed —
|
|
78
|
+
// callers must surface it distinctly from a validation error.
|
|
79
|
+
const updated = await db.withTransaction(async (txAdapter) => {
|
|
80
|
+
const result = await txAdapter.updateDocDraft(organizationId, documentId, data, userId, expectedRevision);
|
|
81
|
+
if (result)
|
|
82
|
+
await this.snapshotTx(txAdapter, organizationId, documentId, 'draft', data, userId);
|
|
83
|
+
return result;
|
|
84
|
+
});
|
|
85
|
+
if (updated)
|
|
86
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
56
87
|
return updated;
|
|
57
88
|
}
|
|
58
89
|
/**
|
|
59
90
|
* Publish and create version.
|
|
60
91
|
*/
|
|
61
|
-
async publishWithVersion(db, organizationId, documentId) {
|
|
92
|
+
async publishWithVersion(db, organizationId, documentId, expectedRevision) {
|
|
62
93
|
// Publish + version snapshot must commit together: a crash between them
|
|
63
94
|
// would leave a published document with no 'publish' version row. Mirror
|
|
64
95
|
// saveWithVersion / restoreVersion and run both writes in one transaction.
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
if (result) {
|
|
69
|
-
await txAdapter.createDocumentVersion({
|
|
70
|
-
documentId,
|
|
71
|
-
organizationId,
|
|
72
|
-
eventType: 'publish',
|
|
73
|
-
data: result.publishedData,
|
|
74
|
-
createdBy: result.updatedBy
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
return result;
|
|
78
|
-
});
|
|
79
|
-
if (published)
|
|
80
|
-
await this.enforceRetention(db, documentId, organizationId);
|
|
81
|
-
return published;
|
|
96
|
+
// No versioning support: a single write, atomic on its own.
|
|
97
|
+
if (!db.createDocumentVersion) {
|
|
98
|
+
return db.publishDoc(organizationId, documentId, expectedRevision);
|
|
82
99
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
return null;
|
|
87
|
-
await this.createVersion(db, organizationId, documentId, 'publish', published.publishedData, published.updatedBy);
|
|
100
|
+
const published = await db.withTransaction((txAdapter) => this.publishTx(txAdapter, organizationId, documentId, expectedRevision));
|
|
101
|
+
if (published)
|
|
102
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
88
103
|
return published;
|
|
89
104
|
}
|
|
90
105
|
/**
|
|
91
106
|
* Restore a version to draft. Creates a 'draft' version entry.
|
|
92
107
|
*/
|
|
93
|
-
async restoreVersion(db, organizationId, documentId, versionNumber, userId) {
|
|
108
|
+
async restoreVersion(db, organizationId, documentId, versionNumber, userId, expectedRevision) {
|
|
94
109
|
if (!db.getDocumentVersion)
|
|
95
110
|
return null;
|
|
96
111
|
const version = await db.getDocumentVersion(organizationId, documentId, versionNumber);
|
|
97
112
|
if (!version)
|
|
98
113
|
return null;
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
documentId,
|
|
105
|
-
organizationId,
|
|
106
|
-
eventType: 'draft',
|
|
107
|
-
data: version.data,
|
|
108
|
-
createdBy: userId
|
|
109
|
-
});
|
|
110
|
-
}
|
|
111
|
-
return result;
|
|
112
|
-
});
|
|
113
|
-
if (restored)
|
|
114
|
-
await this.enforceRetention(db, documentId, organizationId);
|
|
115
|
-
return restored;
|
|
116
|
-
}
|
|
117
|
-
// Fallback: non-atomic
|
|
118
|
-
const restored = await db.updateDocDraft(organizationId, documentId, version.data, userId);
|
|
119
|
-
if (restored) {
|
|
120
|
-
await this.createVersion(db, organizationId, documentId, 'draft', version.data, userId);
|
|
114
|
+
// A restore is itself a draft write — just as capable of clobbering a
|
|
115
|
+
// concurrent edit as a normal save, so it goes through the same CAS guard.
|
|
116
|
+
// No versioning support: a single write, atomic on its own.
|
|
117
|
+
if (!db.createDocumentVersion) {
|
|
118
|
+
return db.updateDocDraft(organizationId, documentId, version.data, userId, expectedRevision);
|
|
121
119
|
}
|
|
120
|
+
const restored = await db.withTransaction(async (txAdapter) => {
|
|
121
|
+
const result = await txAdapter.updateDocDraft(organizationId, documentId, version.data, userId, expectedRevision);
|
|
122
|
+
if (result)
|
|
123
|
+
await this.snapshotTx(txAdapter, organizationId, documentId, 'draft', version.data, userId);
|
|
124
|
+
return result;
|
|
125
|
+
});
|
|
126
|
+
if (restored)
|
|
127
|
+
await this.enforceRetention(db, documentId, organizationId);
|
|
122
128
|
return restored;
|
|
123
129
|
}
|
|
124
130
|
async listVersions(db, organizationId, documentId, options) {
|
package/dist/type-gen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"type-gen.d.ts","sourceRoot":"","sources":["../src/lib/type-gen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoJzD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAG3E;AA6VD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CA8I3D;
|
|
1
|
+
{"version":3,"file":"type-gen.d.ts","sourceRoot":"","sources":["../src/lib/type-gen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoJzD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAG3E;AA6VD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CA8I3D;AA2GD,wBAAsB,uBAAuB,CAC5C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
package/dist/type-gen.js
CHANGED
|
@@ -573,6 +573,17 @@ async function compileAndImportModule(absolutePath, tempName, opts = {}) {
|
|
|
573
573
|
{
|
|
574
574
|
name: 'remove-icons',
|
|
575
575
|
setup(build) {
|
|
576
|
+
// SvelteKit's `$env/*` virtual modules (dynamic/static, public/private)
|
|
577
|
+
// only exist inside Vite — plain esbuild can't resolve them. A
|
|
578
|
+
// plugin/schema module may import one just to read a default config
|
|
579
|
+
// value, which never affects the generated types, so stub it out to
|
|
580
|
+
// an empty object rather than fail the whole build.
|
|
581
|
+
build.onResolve({ filter: /^\$env\// }, (args) => {
|
|
582
|
+
return { path: args.path, namespace: 'env-stub' };
|
|
583
|
+
});
|
|
584
|
+
build.onLoad({ filter: /.*/, namespace: 'env-stub' }, () => {
|
|
585
|
+
return { contents: 'export const env = {};', loader: 'js' };
|
|
586
|
+
});
|
|
576
587
|
build.onResolve({ filter: /^@lucide\/svelte/ }, (args) => {
|
|
577
588
|
return { path: args.path, namespace: 'lucide-stub' };
|
|
578
589
|
});
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
export type AgentChangeSetStatus = 'in_progress' | 'completed' | 'failed';
|
|
2
|
+
/** One agent turn. Created eagerly, before the model is even called, so token usage is
|
|
3
|
+
* captured regardless of whether the turn ends up mutating anything. */
|
|
4
|
+
export interface AgentChangeSet {
|
|
5
|
+
id: string;
|
|
6
|
+
organizationId: string;
|
|
7
|
+
createdBy: string | null;
|
|
8
|
+
status: AgentChangeSetStatus;
|
|
9
|
+
/** The turn's first user message, truncated — a human-readable label for the activity list. */
|
|
10
|
+
summary: string | null;
|
|
11
|
+
/** `AIProviderAdapter.name`, e.g. `'anthropic'` / `'openai'` / `'openrouter'`. */
|
|
12
|
+
provider: string;
|
|
13
|
+
model: string;
|
|
14
|
+
promptTokens: number;
|
|
15
|
+
completionTokens: number;
|
|
16
|
+
createdAt: Date;
|
|
17
|
+
completedAt: Date | null;
|
|
18
|
+
}
|
|
19
|
+
export interface CreateAgentChangeSetInput {
|
|
20
|
+
organizationId: string;
|
|
21
|
+
createdBy?: string | null;
|
|
22
|
+
summary?: string | null;
|
|
23
|
+
provider: string;
|
|
24
|
+
model: string;
|
|
25
|
+
}
|
|
26
|
+
export interface CompleteAgentChangeSetInput {
|
|
27
|
+
status: AgentChangeSetStatus;
|
|
28
|
+
promptTokens?: number;
|
|
29
|
+
completionTokens?: number;
|
|
30
|
+
}
|
|
31
|
+
/** One mutating tool call within a turn. `versionBefore` is what an undo restores to — null
|
|
32
|
+
* means there's nothing to restore to (e.g. this was a `create_document`, which isn't
|
|
33
|
+
* undoable in this pass). */
|
|
34
|
+
export interface AgentOperation {
|
|
35
|
+
id: string;
|
|
36
|
+
changeSetId: string;
|
|
37
|
+
organizationId: string;
|
|
38
|
+
collection: string;
|
|
39
|
+
documentId: string;
|
|
40
|
+
toolName: string;
|
|
41
|
+
arguments: Record<string, unknown>;
|
|
42
|
+
success: boolean;
|
|
43
|
+
error: string | null;
|
|
44
|
+
versionBefore: number | null;
|
|
45
|
+
versionAfter: number | null;
|
|
46
|
+
createdAt: Date;
|
|
47
|
+
}
|
|
48
|
+
export interface RecordAgentOperationInput {
|
|
49
|
+
changeSetId: string;
|
|
50
|
+
organizationId: string;
|
|
51
|
+
collection: string;
|
|
52
|
+
documentId: string;
|
|
53
|
+
toolName: string;
|
|
54
|
+
arguments: Record<string, unknown>;
|
|
55
|
+
success: boolean;
|
|
56
|
+
error?: string | null;
|
|
57
|
+
versionBefore?: number | null;
|
|
58
|
+
versionAfter?: number | null;
|
|
59
|
+
}
|
|
60
|
+
/** A change-set with its operations attached — what the undo endpoint and the activity
|
|
61
|
+
* detail view both need. */
|
|
62
|
+
export interface AgentChangeSetWithOperations extends AgentChangeSet {
|
|
63
|
+
operations: AgentOperation[];
|
|
64
|
+
}
|
|
65
|
+
export interface ListAgentChangeSetsOptions {
|
|
66
|
+
organizationId: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
offset?: number;
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=agent-change-sets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-change-sets.d.ts","sourceRoot":"","sources":["../../src/lib/types/agent-change-sets.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1E;wEACwE;AACxE,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,+FAA+F;IAC/F,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,IAAI,CAAC;IAChB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACzC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,2BAA2B;IAC3C,MAAM,EAAE,oBAAoB,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;6BAE6B;AAC7B,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,yBAAyB;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B;AAED;4BAC4B;AAC5B,MAAM,WAAW,4BAA6B,SAAQ,cAAc;IACnE,UAAU,EAAE,cAAc,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,0BAA0B;IAC1C,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// Dialect-agnostic shapes for the agent audit/undo trail — mirrors `types/events.ts`'s
|
|
2
|
+
// relationship to `cms_domain_events`/`cms_jobs`, but for `cms_agent_change_sets`/
|
|
3
|
+
// `cms_agent_operations`. One `AgentChangeSet` row per agent turn (not per mutation — a
|
|
4
|
+
// pure Q&A turn still costs tokens and is still worth an audit/cost row), with zero or more
|
|
5
|
+
// `AgentOperation` children recording the mutating tool calls that turn made.
|
|
6
|
+
export {};
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { AIMessage } from '../ai/interfaces/ai-provider.js';
|
|
2
|
+
/** One event in an agent turn's response stream. */
|
|
3
|
+
export type AgentStreamEvent = {
|
|
4
|
+
type: 'text';
|
|
5
|
+
delta: string;
|
|
6
|
+
} | {
|
|
7
|
+
type: 'toolCall';
|
|
8
|
+
toolCallId: string;
|
|
9
|
+
name: string;
|
|
10
|
+
arguments: Record<string, unknown>;
|
|
11
|
+
} | {
|
|
12
|
+
type: 'toolResult';
|
|
13
|
+
toolCallId: string;
|
|
14
|
+
name: string;
|
|
15
|
+
success: boolean;
|
|
16
|
+
data?: unknown;
|
|
17
|
+
/** Present when `success` is false — a message safe to show the model/user. */
|
|
18
|
+
error?: string;
|
|
19
|
+
} | {
|
|
20
|
+
type: 'usage';
|
|
21
|
+
promptTokens: number;
|
|
22
|
+
completionTokens: number;
|
|
23
|
+
} | {
|
|
24
|
+
type: 'error';
|
|
25
|
+
message: string;
|
|
26
|
+
} | {
|
|
27
|
+
type: 'done';
|
|
28
|
+
/**
|
|
29
|
+
* `'awaiting_workspace_tool'` means the model requested one or more
|
|
30
|
+
* `execution: 'workspace'` tool calls this round — those can only be executed by
|
|
31
|
+
* the browser (they touch a live, possibly-unsaved editor draft), so the server
|
|
32
|
+
* stopped short of resolving them. `pendingWorkspaceCalls` lists exactly which
|
|
33
|
+
* ones need a result before the turn can continue; the caller resolves them
|
|
34
|
+
* locally, appends `tool` messages, and re-POSTs to resume — see
|
|
35
|
+
* `server/api/routes/agent-chat.ts` and `AgentChat.svelte`.
|
|
36
|
+
*/
|
|
37
|
+
finishReason: 'stop' | 'tool_calls' | 'length' | 'error' | 'awaiting_workspace_tool';
|
|
38
|
+
/**
|
|
39
|
+
* The complete running conversation, including every intermediate
|
|
40
|
+
* `assistant`(toolCalls)/`tool` message this turn produced — not just the final
|
|
41
|
+
* user-visible text. `/api/agent/chat` is stateless per call, so the caller is
|
|
42
|
+
* expected to resend this wholesale as `messages` on the next turn rather than
|
|
43
|
+
* reconstructing it client-side (easy to get subtly wrong — see the history bug
|
|
44
|
+
* this replaced).
|
|
45
|
+
*/
|
|
46
|
+
messages: AIMessage[];
|
|
47
|
+
/** Only present when `finishReason === 'awaiting_workspace_tool'`. */
|
|
48
|
+
pendingWorkspaceCalls?: {
|
|
49
|
+
toolCallId: string;
|
|
50
|
+
name: string;
|
|
51
|
+
arguments: Record<string, unknown>;
|
|
52
|
+
}[];
|
|
53
|
+
/**
|
|
54
|
+
* Stamped by `agent-chat.ts` (not `runAgentTurn`, which has no DB access) on every
|
|
55
|
+
* `done` event so a resume request can echo it back and the audit trail's
|
|
56
|
+
* `cms_agent_change_sets` row stays the same across a paused turn's multiple legs.
|
|
57
|
+
*/
|
|
58
|
+
changeSetId?: string | null;
|
|
59
|
+
};
|
|
60
|
+
//# sourceMappingURL=agent-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-stream.d.ts","sourceRoot":"","sources":["../../src/lib/types/agent-stream.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAE9D,oDAAoD;AACpD,MAAM,MAAM,gBAAgB,GACzB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC/B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC1F;IACA,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;CACd,GACD;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;IACA,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;;OAQG;IACH,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,yBAAyB,CAAC;IACrF;;;;;;;OAOG;IACH,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtB,sEAAsE;IACtE,qBAAqB,CAAC,EAAE;QACvB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,EAAE,CAAC;IACJ;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// types/agent-stream.ts
|
|
2
|
+
//
|
|
3
|
+
// Browser-facing stream contract for an agent turn — what an SSE/NDJSON chat
|
|
4
|
+
// endpoint actually sends over the wire. Deliberately close to `AIProviderAdapter`'s `AIStreamEvent`
|
|
5
|
+
// (ai/interfaces/ai-provider.ts) since most events pass through unchanged — this type
|
|
6
|
+
// adds the one thing the provider boundary doesn't have: the *result* of a tool call
|
|
7
|
+
// the runtime executed, which the browser needs to render (and which the model needs
|
|
8
|
+
// fed back as a `tool` message for the next round trip).
|
|
9
|
+
//
|
|
10
|
+
// Client-safe: no DB handles, no provider SDKs, just the wire shape.
|
|
11
|
+
export {};
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { z } from 'zod';
|
|
2
|
+
import type { Capability } from './capabilities.js';
|
|
3
|
+
import type { CMSInstances } from '../hooks.js';
|
|
4
|
+
import type { LocalAPIContext } from '../local-api/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Where a tool's `execute` actually runs.
|
|
7
|
+
*
|
|
8
|
+
* - `server`: runs entirely in this process against the database — the vast
|
|
9
|
+
* majority of tools (read, patch, publish, ...).
|
|
10
|
+
* - `workspace`: must round-trip to a live editor tab holding the in-progress
|
|
11
|
+
* draft (e.g. "apply this change to what's currently open, unsaved, in the
|
|
12
|
+
* browser"). `run-agent-turn.ts` never calls `execute` for a tool declared
|
|
13
|
+
* this way — it pauses the turn instead (`AgentStreamEvent`'s
|
|
14
|
+
* `awaiting_workspace_tool` finish reason) and the caller resolves it
|
|
15
|
+
* client-side against a `DocumentWorkspace` (types/document-workspace.ts),
|
|
16
|
+
* then resumes. Only advertised at all when `resolveAgentTools` is given a
|
|
17
|
+
* `documentContext` (mcp/tools.ts) — see `ai/content-workspace-tools.ts` for
|
|
18
|
+
* the two tools that currently use this mode.
|
|
19
|
+
*/
|
|
20
|
+
export type AgentToolExecutionMode = 'server' | 'workspace';
|
|
21
|
+
/**
|
|
22
|
+
* Serializable description of a tool — the part an LLM/UI needs to know a
|
|
23
|
+
* tool exists and how to call it, without knowing how to run it.
|
|
24
|
+
*/
|
|
25
|
+
export interface AgentToolDefinition<TInput = unknown> {
|
|
26
|
+
/** Unique, namespaced by package to avoid collisions (e.g. `content_patch_fields`). */
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
/**
|
|
30
|
+
* Whether invoking this tool can change stored data. A coarse, cheap-to-display
|
|
31
|
+
* hint for approval flows and audit — not itself an authorization mechanism
|
|
32
|
+
* (`requiredCapabilities` is what's actually enforced).
|
|
33
|
+
*/
|
|
34
|
+
mutates: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Capabilities required to see AND to invoke this tool — checked at both
|
|
37
|
+
* advertisement (don't list a tool the caller can't use) and execution
|
|
38
|
+
* (don't trust the advertisement check alone). A tool hidden from an
|
|
39
|
+
* unauthorized caller must also reject direct invocation.
|
|
40
|
+
*/
|
|
41
|
+
requiredCapabilities: Capability[];
|
|
42
|
+
execution: AgentToolExecutionMode;
|
|
43
|
+
/** zod schema for the tool's arguments — single source of truth for validation. */
|
|
44
|
+
inputSchema: z.ZodType<TInput>;
|
|
45
|
+
}
|
|
46
|
+
/** Outcome of a single tool call. */
|
|
47
|
+
export interface AgentToolResult {
|
|
48
|
+
success: boolean;
|
|
49
|
+
data?: unknown;
|
|
50
|
+
/** Present when `success` is false — a message safe to show the model/user. */
|
|
51
|
+
error?: string;
|
|
52
|
+
}
|
|
53
|
+
/** Everything an `execute` function needs to act on behalf of the calling request. */
|
|
54
|
+
export interface AgentToolExecutionContext {
|
|
55
|
+
aphexCMS: CMSInstances;
|
|
56
|
+
context: LocalAPIContext;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Runs a tool call. Receives services via `ctx` at call time rather than
|
|
60
|
+
* static import, so a module defining an executor never has a heavy/server
|
|
61
|
+
* import at its top level — safe to sit alongside a definition in a plugin
|
|
62
|
+
* part that's also referenced from client-shared code.
|
|
63
|
+
*/
|
|
64
|
+
export type AgentToolExecutor<TInput = unknown> = (input: TInput, ctx: AgentToolExecutionContext) => Promise<AgentToolResult>;
|
|
65
|
+
//# sourceMappingURL=agent-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-tools.d.ts","sourceRoot":"","sources":["../../src/lib/types/agent-tools.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,GAAG,WAAW,CAAC;AAE5D;;;GAGG;AACH,MAAM,WAAW,mBAAmB,CAAC,MAAM,GAAG,OAAO;IACpD,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,oBAAoB,EAAE,UAAU,EAAE,CAAC;IACnC,SAAS,EAAE,sBAAsB,CAAC;IAClC,mFAAmF;IACnF,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B;AAED,qCAAqC;AACrC,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,sFAAsF;AACtF,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,eAAe,CAAC;CACzB;AAED;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,CAAC,MAAM,GAAG,OAAO,IAAI,CACjD,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,yBAAyB,KAC1B,OAAO,CAAC,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|