@xopcai/xopc 0.0.325 → 0.0.330
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/README.md +4 -3
- package/README.zh-CN.md +4 -3
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CxfXpPWs.js → agent-avatar-dicebear-BDG0hI-J.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-ArM6Sm9S.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-BX_Bhre1.js +1 -0
- package/dist/gateway/static/root/assets/agents-BiQqpMw0.js +70 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-p7fZB4dT.js → app-management-settings-panel-DgttzUCG.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-C-clVcfp.js → appearance-settings-CHpyWV8Z.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BhfYQcm8.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-Xm6xChUX.js → archive-plugin-B7Q7Oeo7.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-Di8kuG4L.js → attachment-load-BYwqQ8qN.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-GUZgDhKj.js → automations-page-CsvAtTNd.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-DMH_1Ped.js +7 -0
- package/dist/gateway/static/root/assets/{binary-plugins-OCrDjC9O.js → binary-plugins-DdgWCI-M.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-m9tqvu7x.js → block-editor-DyOagNnn.js} +3 -3
- package/dist/gateway/static/root/assets/{browser-automation-inputs-DSWXq9lI.js → browser-automation-inputs-CwF8OQFN.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-automations-page-DuOaridE.js → browser-automations-page-D_EQjiiu.js} +2 -2
- package/dist/gateway/static/root/assets/browser-settings-page-BE6691Jz.js +3 -0
- package/dist/gateway/static/root/assets/capabilities-page-MweWNrC1.js +2 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CdSWkh89.js +8 -0
- package/dist/gateway/static/root/assets/capability-header-actions-C5F2GNE9.js +1 -0
- package/dist/gateway/static/root/assets/capability-icon-BYm2-nS-.js +1 -0
- package/dist/gateway/static/root/assets/channels-NGfwR3He.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BfnVh8oo.js → chat-terminal-dock-C6tl9Rfw.js} +2 -2
- package/dist/gateway/static/root/assets/computer-settings-page-C0MsVw4l.js +1 -0
- package/dist/gateway/static/root/assets/connector-service-page-DsF60pPs.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-BE8NdQcR.js +2 -0
- package/dist/gateway/static/root/assets/{date-picker-CtDyij_x.js → date-picker-CELKKqYN.js} +1 -1
- package/dist/gateway/static/root/assets/dependency-picker-BcEwCnI5.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-BsIYCAkG.js → desktop-pet-Ww7Gm8-x.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-D-dbAxGu.js +1 -0
- package/dist/gateway/static/root/assets/device-pairing-wizard-DsYY6szg.js +1 -0
- package/dist/gateway/static/root/assets/directory-picker-path-field-CVmuCRyO.js +1 -0
- package/dist/gateway/static/root/assets/ellipsis-0k4rZLoy.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-Ct9pABNW.js → extension-debug-page-UUHNJj-d.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BktsR4hj.js → extension-page-BvL452mX.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BQJc-vXH.js → extension-settings-page-CrNnUSOs.js} +1 -1
- package/dist/gateway/static/root/assets/external-link-DjqjBmc3.js +1 -0
- package/dist/gateway/static/root/assets/eye-CABVeTq0.js +1 -0
- package/dist/gateway/static/root/assets/folder-open-CyzJ19I9.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-swr-CoQVulMd.js → gateway-config-swr-DMm1vU51.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-DrHhtZqv.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-B5GJ-CQV.js → gateway-startup-retry-Ck6tj6yE.js} +1 -1
- package/dist/gateway/static/root/assets/globe-DSSGFWFn.js +1 -0
- package/dist/gateway/static/root/assets/home-page-YgI6jfGA.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-DvWDkbk1.js → image-generation-api-BOh6j0BF.js} +1 -1
- package/dist/gateway/static/root/assets/imports-page-BuqdzA7h.js +1 -0
- package/dist/gateway/static/root/assets/index-DJmO2VAY.css +1 -0
- package/dist/gateway/static/root/assets/index-vCIBfJp7.js +121 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-ctJLm8TP.js → keyboard-shortcuts-settings-D9L7IdUg.js} +1 -1
- package/dist/gateway/static/root/assets/link-2-D_ZKYUW7.js +1 -0
- package/dist/gateway/static/root/assets/loader-circle-CifKLtgG.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-DO8uUtos.js +1 -0
- package/dist/gateway/static/root/assets/{local-apps-page-BxC_LTqq.js → local-apps-page-BEvyufm7.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-DAOwT3Zp.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-Jev1m9sS.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-41i7B1RO.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-Dft8ASFD.js → markdown-view-nL4xzvI8.js} +2 -2
- package/dist/gateway/static/root/assets/{media-plugins-ni5zJ4Ok.js → media-plugins-dHbcqMan.js} +1 -1
- package/dist/gateway/static/root/assets/message-square-plus-XP0tGdlV.js +1 -0
- package/dist/gateway/static/root/assets/messages-BZbt9x1y.js +3 -0
- package/dist/gateway/static/root/assets/minimize-2-DtOGrlpo.js +1 -0
- package/dist/gateway/static/root/assets/note-detail-panel-DonP0E6Q.js +5 -0
- package/dist/gateway/static/root/assets/note-image-lightbox-1qg2v-9j.js +1 -0
- package/dist/gateway/static/root/assets/notes-page-CYHMeVKo.js +8 -0
- package/dist/gateway/static/root/assets/page-context-capture-button-BKsMcPOy.js +1 -0
- package/dist/gateway/static/root/assets/pencil-DmIY3Oa-.js +1 -0
- package/dist/gateway/static/root/assets/preview-open-alternatives-Du18QgWc.js +1 -0
- package/dist/gateway/static/root/assets/{product-open-page-DQctU8z3.js → product-open-page-IY1QL6s0.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-Bpw9mxfV.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-BdYbDNUn.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-DWWO6ajd.js → registry-api-DCFXWBOt.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CLhbz3TF.js +1 -0
- package/dist/gateway/static/root/assets/rotate-cw-LIg3Am9S.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-xhOSYfiX.js → runtime-tools-settings-panel-CuTFmXyj.js} +2 -2
- package/dist/gateway/static/root/assets/scenes-page-XwK2IEmr.js +2 -0
- package/dist/gateway/static/root/assets/{schema-form-z8IeSdBp.js → schema-form-qWQii8IU.js} +1 -1
- package/dist/gateway/static/root/assets/search-DA7gz22f.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-4-QoiDES.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BggQVM1y.js +1 -0
- package/dist/gateway/static/root/assets/settings-form-section-B0ZBr0L9.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-Br9no5e4.js → settings-page-DpII4NO3.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-layout-X1x-2Cp9.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-HPpC7EE0.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-CE0SER59.js → share-preview-page-B2CGYZHc.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DhVCRYGP.js +1 -0
- package/dist/gateway/static/root/assets/skill-api-_ddww47C.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-XPZkWJJe.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-uF7DkJMC.js +2 -0
- package/dist/gateway/static/root/assets/system-settings-panel-25ABVt7H.js +1 -0
- package/dist/gateway/static/root/assets/task-detail-page-gepxhO4j.js +1 -0
- package/dist/gateway/static/root/assets/tunnel-api-CwQGBI_4.js +1 -0
- package/dist/gateway/static/root/assets/use-autosave-CL3wytbs.js +1 -0
- package/dist/gateway/static/root/assets/user-model-page-DldQW9Wh.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-By6Lgbse.js → voice-api-key-field-zjAzQrx4.js} +1 -1
- package/dist/gateway/static/root/assets/voice-config-api-DvzQ-128.js +1 -0
- package/dist/gateway/static/root/assets/{work-discovery-overlay-DdhgIlyf.js → work-discovery-overlay-MaPPjWwl.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BOJYQaxX.js → workflow-run-setup-panel-C3dQN1fE.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-B9lnTU3U.js +6 -0
- package/dist/gateway/static/root/connector-icons/SOURCES.md +1 -0
- package/dist/gateway/static/root/connector-icons/wecom.svg +9 -0
- package/dist/gateway/static/root/index.html +20 -8
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-instance-gateway.d.ts +2 -2
- package/dist/src/agent/agent-manager.d.ts +5 -2
- package/dist/src/agent/agent-manager.js +77 -23
- package/dist/src/agent/background-review/coordinator.d.ts +2 -7
- package/dist/src/agent/background-review/coordinator.js +17 -34
- package/dist/src/agent/background-review/prompts.d.ts +13 -5
- package/dist/src/agent/background-review/prompts.js +17 -12
- package/dist/src/agent/background-review/run-background-review.d.ts +3 -3
- package/dist/src/agent/background-review/run-background-review.js +59 -44
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
- package/dist/src/agent/capabilities/definitions.d.ts +3 -2
- package/dist/src/agent/capabilities/definitions.js +3 -2
- package/dist/src/agent/context/execution-context.js +5 -2
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/mcp/index.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +2 -2
- package/dist/src/agent/mcp/oauth/index.js +1 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +2 -2
- package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +2 -15
- package/dist/src/agent/prompt/sections/tooling.js +3 -0
- package/dist/src/agent/service/direct-turn-helpers.js +1 -1
- package/dist/src/agent/service.d.ts +1 -0
- package/dist/src/agent/service.js +5 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +12 -0
- package/dist/src/agent/tasks/task-judge-service.js +1 -1
- package/dist/src/agent/tools/factory.js +3 -2
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/user-context-tool.js +29 -4
- package/dist/src/agent/tools/workflow-manage-tool.d.ts +2 -0
- package/dist/src/agent/tools/workflow-manage-tool.js +225 -0
- package/dist/src/agent/tools/xopc-use-tool.js +1 -1
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/auth/credentials.js +1 -1
- package/dist/src/auth/oauth-provider-lock.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/domain/types.d.ts +7 -1
- package/dist/src/automations/draft/automation-draft-service.js +13 -4
- package/dist/src/automations/service/action-executor.d.ts +2 -2
- package/dist/src/automations/service/action-executor.js +36 -13
- package/dist/src/automations/service/automation-service.js +2 -1
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/browser/automations/index.js +2 -2
- package/dist/src/browser/automations/service.d.ts +11 -2
- package/dist/src/browser/automations/service.js +19 -5
- package/dist/src/capabilities/readiness/from-config.d.ts +0 -1
- package/dist/src/capabilities/readiness/from-config.js +2 -4
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.js +1 -1
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/chat-commands/builtins/config.js +1 -1
- package/dist/src/chat-previews/service.js +1 -2
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/auth.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-agent-plugin.js +2 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +3 -3
- package/dist/src/cli/commands/providers.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.js +5 -5
- package/dist/src/connectors/china-catalog.js +5 -1
- package/dist/src/connectors/connected-source-ingestion.js +6 -1
- package/dist/src/connectors/connected-source-observations.d.ts +10 -0
- package/dist/src/connectors/connected-source-observations.js +80 -0
- package/dist/src/connectors/connected-source-understanding.js +198 -8
- package/dist/src/connectors/learning-coordinator.js +63 -26
- package/dist/src/connectors/learning-recipes.js +19 -2
- package/dist/src/discussions/audio-repair.d.ts +1 -1
- package/dist/src/discussions/live-worker.js +1 -3
- package/dist/src/discussions/recording.js +2 -2
- package/dist/src/discussions/sealer.js +2 -2
- package/dist/src/extensions/agent-plugins/auth.d.ts +2 -2
- package/dist/src/extensions/agent-plugins/auth.js +6 -35
- package/dist/src/extensions/agent-plugins/credentials.d.ts +2 -0
- package/dist/src/extensions/agent-plugins/credentials.js +37 -0
- package/dist/src/extensions/agent-plugins/plugin-oauth-scope.d.ts +1 -0
- package/dist/src/extensions/agent-plugins/plugin-oauth-scope.js +8 -0
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/extensions/bundled-extension-activation.d.ts +3 -1
- package/dist/src/extensions/bundled-extension-activation.js +5 -8
- package/dist/src/extensions/marketplace.d.ts +4 -0
- package/dist/src/extensions/marketplace.js +4 -0
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/file-space-service.d.ts +9 -2
- package/dist/src/gateway/gateway-workflow-host.types.d.ts +1 -0
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/agent-plugins.js +2 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +27 -5
- package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
- package/dist/src/gateway/hono/routes/config.js +0 -3
- package/dist/src/gateway/hono/routes/connectors.js +3 -10
- package/dist/src/gateway/hono/routes/context-sources.d.ts +0 -1
- package/dist/src/gateway/hono/routes/context-sources.js +12 -15
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
- package/dist/src/gateway/hono/routes/status.js +0 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/hono/routes/user-model.js +21 -3
- package/dist/src/gateway/hono/routes/voice.js +0 -67
- package/dist/src/gateway/hono/routes/workflows.js +1 -23
- package/dist/src/gateway/image-generation-setup.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/service/config-coordinator.d.ts +4 -4
- package/dist/src/gateway/service/config-coordinator.js +6 -6
- package/dist/src/gateway/service/marketplace-service.js +8 -6
- package/dist/src/gateway/service.d.ts +1 -1
- package/dist/src/gateway/service.js +20 -18
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/generator.js +7 -6
- package/dist/src/home-intelligence/host.js +1 -1
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/media-understanding/types.d.ts +1 -1
- package/dist/src/memory-maintenance/service.d.ts +1 -0
- package/dist/src/memory-maintenance/service.js +13 -0
- package/dist/src/migrations/retired-local-stt.d.ts +2 -0
- package/dist/src/migrations/retired-local-stt.js +52 -0
- package/dist/src/migrations/runner.js +2 -1
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/providers/model-response.d.ts +2 -0
- package/dist/src/providers/model-response.js +24 -1
- package/dist/src/session/turn-outcome-projector.js +1 -1
- package/dist/src/storage/sqlite/connection.js +1 -0
- package/dist/src/storage/sqlite/migrations/207_user_model_policy_contract.sql +121 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/sql-assets.d.ts +1 -0
- package/dist/src/storage/sqlite/sql-assets.js +7 -4
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tasks/index.js +2 -2
- package/dist/src/tasks/task-application-service.d.ts +1 -0
- package/dist/src/tasks/task-application-service.js +4 -2
- package/dist/src/tasks/task-context-assembler.js +10 -1
- package/dist/src/tasks/task-run-dispatcher.d.ts +1 -0
- package/dist/src/tasks/task-run-dispatcher.js +15 -2
- package/dist/src/tui/backends/embedded-backend.js +6 -3
- package/dist/src/tui/tui-commands.js +2 -2
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +3 -3
- package/dist/src/user-context/sources/consent-repository.d.ts +7 -0
- package/dist/src/user-context/sources/consent-repository.js +81 -0
- package/dist/src/user-context/sources/index.d.ts +1 -0
- package/dist/src/user-context/sources/index.js +2 -1
- package/dist/src/user-context/sources/repository.js +73 -1
- package/dist/src/user-context/sources/types.d.ts +16 -0
- package/dist/src/user-model/action-rule-suggestions.d.ts +11 -0
- package/dist/src/user-model/action-rule-suggestions.js +29 -0
- package/dist/src/user-model/bootstrap.js +1 -1
- package/dist/src/user-model/capture/executor.js +83 -7
- package/dist/src/user-model/capture/semantic.d.ts +5 -2
- package/dist/src/user-model/capture/semantic.js +27 -11
- package/dist/src/user-model/domain.d.ts +26 -0
- package/dist/src/user-model/domain.js +40 -2
- package/dist/src/user-model/index.d.ts +2 -0
- package/dist/src/user-model/index.js +6 -4
- package/dist/src/user-model/maintenance-policy.d.ts +1 -0
- package/dist/src/user-model/maintenance-policy.js +13 -0
- package/dist/src/user-model/observation-repository.d.ts +48 -0
- package/dist/src/user-model/observation-repository.js +100 -0
- package/dist/src/user-model/repository.d.ts +5 -0
- package/dist/src/user-model/repository.js +121 -10
- package/dist/src/user-model/usage-policy.d.ts +5 -2
- package/dist/src/user-model/usage-policy.js +2 -2
- package/dist/src/voice/audio/normalize.d.ts +1 -1
- package/dist/src/voice/audio/normalize.js +1 -1
- package/dist/src/voice/{local → audio}/wav.js +1 -1
- package/dist/src/voice/language-profile.js +10 -16
- package/dist/src/voice/metadata/builtin.js +0 -46
- package/dist/src/voice/platform-streams.js +15 -7
- package/dist/src/voice/realtime/agentEngine.js +19 -3
- package/dist/src/voice/realtime/pcmFrameBuffer.js +2 -1
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/dist/src/voice/realtime/playback-echo.js +16 -1
- package/dist/src/voice/stt/providers/index.d.ts +0 -1
- package/dist/src/voice/stt/providers/index.js +1 -2
- package/dist/src/voice/stt/types.js +3 -4
- package/dist/src/voice/tts/merge-config.js +1 -1
- package/dist/src/voice/tts/speech-registry.d.ts +1 -1
- package/dist/src/voice/tts/types.d.ts +1 -1
- package/dist/src/work-discovery/analyzer.js +6 -5
- package/dist/src/work-discovery/service.js +2 -2
- package/dist/src/work-discovery/types.d.ts +1 -1
- package/dist/src/workflows/authoring/index.d.ts +1 -0
- package/dist/src/workflows/authoring/index.js +2 -1
- package/dist/src/workflows/authoring/workflow-draft-defaults.d.ts +3 -0
- package/dist/src/workflows/authoring/workflow-draft-defaults.js +63 -0
- package/dist/src/workflows/context/workflow-context.js +5 -1
- package/dist/src/workflows/domain/index.js +1 -1
- package/dist/src/workflows/engine/workflow-engine.js +1 -1
- package/dist/src/workflows/index.js +4 -4
- package/dist/src/workflows/service/workflow-run-service.d.ts +1 -0
- package/dist/src/workflows/service/workflow-run-service.js +39 -7
- package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
- package/package.json +12 -16
- package/skills/engineering/workflow-authoring/SKILL.md +32 -0
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-CDHe8gJf.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-DMv-udoZ.js +0 -1
- package/dist/gateway/static/root/assets/agents-D_xOAXgj.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-Dz2g7eAN.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-BUZhG9aJ.js +0 -7
- package/dist/gateway/static/root/assets/browser-settings-page-D2_PgHep.js +0 -3
- package/dist/gateway/static/root/assets/capabilities-settings-panel-7Y_pJqyt.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-B-Igy1ro.js +0 -1
- package/dist/gateway/static/root/assets/computer-settings-page-aRG2lU4w.js +0 -1
- package/dist/gateway/static/root/assets/connector-service-page-B5EhnfJH.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-7HfRt1LW.js +0 -2
- package/dist/gateway/static/root/assets/dependency-picker-z6ouWxmz.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-z-0aQ5ct.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-DlmhQvY5.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BfDVlvy6.js +0 -1
- package/dist/gateway/static/root/assets/home-page-CI_eQTPL.js +0 -1
- package/dist/gateway/static/root/assets/imports-page-DFpQfHVU.js +0 -1
- package/dist/gateway/static/root/assets/index-19rMUT3d.js +0 -121
- package/dist/gateway/static/root/assets/index-BKL5tg2f.css +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-C9kaP3Dy.js +0 -1
- package/dist/gateway/static/root/assets/locale-store-BPZR8x9b.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-Ok5SpG-G.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-aOzRaQHM.js +0 -1
- package/dist/gateway/static/root/assets/messages-kFWhF6_t.js +0 -3
- package/dist/gateway/static/root/assets/note-detail-panel-C9OEltN9.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-Dj9rMgdi.js +0 -8
- package/dist/gateway/static/root/assets/page-context-capture-button-BJA3d8vU.js +0 -1
- package/dist/gateway/static/root/assets/page-tabs-Dyc3wKkl.js +0 -1
- package/dist/gateway/static/root/assets/preview-open-alternatives-tIOIQbNX.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-Dy-EwZcc.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-JaGKa6rM.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Cb8-nd60.js +0 -1
- package/dist/gateway/static/root/assets/scenes-page-ClBkFdRY.js +0 -2
- package/dist/gateway/static/root/assets/sessions-page-BYW5l_nY.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CDNwmXuH.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-BXTJAser.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-layout-D6745w0p.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-D2N9764S.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-Dk3_QOKQ.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-CPt61fEv.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-Db6PB2C6.js +0 -2
- package/dist/gateway/static/root/assets/skills-page.utils-DrtW5FBy.js +0 -1
- package/dist/gateway/static/root/assets/system-settings-panel-CuY1Zh5s.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-o7RiDUMi.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-PGHDgvWb.js +0 -1
- package/dist/gateway/static/root/assets/use-autosave-B55oBQUt.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-DspelwAa.js +0 -2
- package/dist/gateway/static/root/assets/voice-config-api-BaxITrwZ.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-6ObD0IQZ.js +0 -6
- package/dist/src/voice/local/model-files.d.ts +0 -14
- package/dist/src/voice/local/model-files.js +0 -92
- package/dist/src/voice/local/model-manager.d.ts +0 -18
- package/dist/src/voice/local/model-manager.js +0 -133
- package/dist/src/voice/local/models.d.ts +0 -28
- package/dist/src/voice/local/models.js +0 -99
- package/dist/src/voice/local/provider-switch.d.ts +0 -4
- package/dist/src/voice/local/provider-switch.js +0 -36
- package/dist/src/voice/local/runtime-client.d.ts +0 -28
- package/dist/src/voice/local/runtime-client.js +0 -183
- package/dist/src/voice/local/runtime-worker.d.ts +0 -1
- package/dist/src/voice/local/runtime-worker.js +0 -271
- package/dist/src/voice/stt/providers/local-transcription.d.ts +0 -2
- package/dist/src/voice/stt/providers/local-transcription.js +0 -53
- package/dist/src/workflows/draft/index.d.ts +0 -3
- package/dist/src/workflows/draft/index.js +0 -3
- package/dist/src/workflows/draft/workflow-draft-prompt.d.ts +0 -22
- package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -54
- package/dist/src/workflows/draft/workflow-draft-service.d.ts +0 -12
- package/dist/src/workflows/draft/workflow-draft-service.js +0 -125
- package/dist/src/workflows/draft/workflow-draft-validator.d.ts +0 -4
- package/dist/src/workflows/draft/workflow-draft-validator.js +0 -123
- package/dist/src/workflows/draft/workflow-draft.types.d.ts +0 -44
- package/dist/src/workflows/draft/workflow-draft.types.js +0 -1
- /package/dist/src/voice/{local → audio}/wav.d.ts +0 -0
|
@@ -2,8 +2,10 @@ import { init_transaction, runSqliteWriteTransaction } from "../../../storage/sq
|
|
|
2
2
|
import { createCollaborationRule, getCollaborationRule, init_collaboration_rule_repository, listCollaborationRules, setCollaborationRuleStatus } from "../../../storage/sqlite/collaboration-rule-repository.js";
|
|
3
3
|
import { KnowledgeReviewConflictError, deleteKnowledgeItem, getKnowledgeItem, listKnowledgeItems, reviewKnowledgeItem, searchKnowledgeItems } from "../../../knowledge-memory/repository.js";
|
|
4
4
|
import "../../../knowledge-memory/index.js";
|
|
5
|
-
import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals, setUserGoalStatus, updatePriorityWindow, updateUserGoal } from "../../../user-model/goals.js";
|
|
6
5
|
import { deleteUserAssertion, getAssertionSlot, getUserAssertion, listUserAssertionSources, listUserAssertions, reconcileAssertion, setAssertionStatus } from "../../../user-model/repository.js";
|
|
6
|
+
import { listActionRuleSuggestions } from "../../../user-model/action-rule-suggestions.js";
|
|
7
|
+
import { createPriorityWindow, createUserGoal, listPriorityWindows, listUserGoals, setUserGoalStatus, updatePriorityWindow, updateUserGoal } from "../../../user-model/goals.js";
|
|
8
|
+
import { listUserAssertionEdges, listUserModelObservations } from "../../../user-model/observation-repository.js";
|
|
7
9
|
import { applyUserProfilePatch, getUserProfileSnapshot } from "../../../user-model/profile.js";
|
|
8
10
|
import { bootstrapUserModel } from "../../../user-model/bootstrap.js";
|
|
9
11
|
import { canUseAssertion } from "../../../user-model/usage-policy.js";
|
|
@@ -11,6 +13,7 @@ import "../../../user-model/index.js";
|
|
|
11
13
|
import { listMemoryMaintenanceRuns } from "../../../memory-maintenance/service.js";
|
|
12
14
|
import "../../../memory-maintenance/index.js";
|
|
13
15
|
import { getExecutionContextAudit, recordExecutionContextFeedback } from "../../../agent/context/audit.js";
|
|
16
|
+
import { getActiveUnderstandingConsent } from "../../../user-context/sources/consent-repository.js";
|
|
14
17
|
import { listUnderstandingSourceGrants } from "../../../user-context/sources/repository.js";
|
|
15
18
|
import { userInfo } from "node:os";
|
|
16
19
|
//#region src/gateway/hono/routes/user-model.ts
|
|
@@ -122,7 +125,10 @@ function assertionView(assertion, sources = listUserAssertionSources([assertion.
|
|
|
122
125
|
subject: slot.subject,
|
|
123
126
|
scope: slot.scope,
|
|
124
127
|
sources,
|
|
125
|
-
usable: canUseAssertion(assertion)
|
|
128
|
+
usable: canUseAssertion(assertion, Date.now(), {
|
|
129
|
+
use: "answer",
|
|
130
|
+
...assertion.allowedAgentIds?.[0] ? { agentId: assertion.allowedAgentIds[0] } : {}
|
|
131
|
+
})
|
|
126
132
|
};
|
|
127
133
|
}
|
|
128
134
|
function registerUserModelRoutes(authenticated, deps) {
|
|
@@ -153,13 +159,17 @@ function registerUserModelRoutes(authenticated, deps) {
|
|
|
153
159
|
adapterId: source.adapterId,
|
|
154
160
|
category: source.category,
|
|
155
161
|
displayName: source.displayName,
|
|
156
|
-
...source.lastCollectedAt ? { lastCollectedAt: source.lastCollectedAt } : {}
|
|
162
|
+
...source.lastCollectedAt ? { lastCollectedAt: source.lastCollectedAt } : {},
|
|
163
|
+
consent: getActiveUnderstandingConsent(source.id)
|
|
157
164
|
}));
|
|
158
165
|
return c.json({
|
|
159
166
|
assertions,
|
|
167
|
+
assertionEdges: listUserAssertionEdges(assertions.map((item) => item.id)),
|
|
168
|
+
observations: listUserModelObservations({ limit: 500 }),
|
|
160
169
|
goals,
|
|
161
170
|
priorities,
|
|
162
171
|
rules: listCollaborationRules(),
|
|
172
|
+
ruleSuggestions: listActionRuleSuggestions(),
|
|
163
173
|
knowledge,
|
|
164
174
|
maintenance: { lastRun: listMemoryMaintenanceRuns(1)[0] ?? null },
|
|
165
175
|
profile,
|
|
@@ -311,9 +321,17 @@ function registerUserModelRoutes(authenticated, deps) {
|
|
|
311
321
|
volatility: current.volatility,
|
|
312
322
|
sensitivity: current.sensitivity,
|
|
313
323
|
disclosurePolicy: current.disclosurePolicy,
|
|
324
|
+
domain: current.domain,
|
|
325
|
+
layer: current.layer,
|
|
326
|
+
sensitivityCategories: current.sensitivityCategories,
|
|
327
|
+
purposeIds: current.purposeIds,
|
|
328
|
+
allowedUses: current.allowedUses,
|
|
329
|
+
allowedAgentIds: current.allowedAgentIds,
|
|
330
|
+
deleteAfter: current.deleteAfter,
|
|
314
331
|
applicability: current.applicability,
|
|
315
332
|
...current.validFrom === void 0 ? {} : { validFrom: current.validFrom },
|
|
316
333
|
...current.validTo === void 0 ? {} : { validTo: current.validTo },
|
|
334
|
+
...current.reviewAt === void 0 ? {} : { reviewAt: current.reviewAt },
|
|
317
335
|
observedAt: Date.now(),
|
|
318
336
|
createdBy: "user",
|
|
319
337
|
correctionOfAssertionId: current.id
|
|
@@ -2,8 +2,6 @@ import { voiceSelectionSchema } from "../../../../packages/realtime-protocol/src
|
|
|
2
2
|
import { createVoiceSessionRequestSchema, init_voice } from "../../../../packages/realtime-protocol/src/voice.js";
|
|
3
3
|
import { getDefaultModelSync, init_providers, resolveModel } from "../../../providers/index.js";
|
|
4
4
|
import { completeWithResolvedCredentials } from "../../../providers/model-call.js";
|
|
5
|
-
import { getLocalVoiceRuntimeClient } from "../../../voice/local/runtime-client.js";
|
|
6
|
-
import { getAudioDecoderStatus } from "../../../voice/audio/normalize.js";
|
|
7
5
|
import { resolveSttProviderConfigSlice } from "../../../voice/stt/config-slice.js";
|
|
8
6
|
import { STTTranscriptionError, transcribe } from "../../../voice/stt/transcribe-core.js";
|
|
9
7
|
import { isSTTAvailable } from "../../../voice/stt/availability.js";
|
|
@@ -21,7 +19,6 @@ import { VoiceSessionCreationError, resolveStreamingStt, resolveStreamingTts } f
|
|
|
21
19
|
import { getGatewayPrincipal } from "../../security/gateway-principal.js";
|
|
22
20
|
import { createGatewayRouteLogger } from "../lib/route-logger.js";
|
|
23
21
|
import { selectPlatformVoice, voiceSettingsCatalog } from "../../../voice/platform-settings.js";
|
|
24
|
-
import { listLocalVoiceModelStatuses, removeLocalVoiceModel, startLocalVoiceModelInstall } from "../../../voice/local/model-manager.js";
|
|
25
22
|
import { listTtsProvidersForApi } from "../../../voice/tts/list-providers.js";
|
|
26
23
|
import { z } from "zod";
|
|
27
24
|
//#region src/gateway/hono/routes/voice.ts
|
|
@@ -410,70 +407,6 @@ function registerVoiceRoutes(authenticated, deps) {
|
|
|
410
407
|
payload
|
|
411
408
|
});
|
|
412
409
|
});
|
|
413
|
-
authenticated.get("/api/voice/local/status", async (c) => {
|
|
414
|
-
const config = service.currentConfig;
|
|
415
|
-
const sttConfig = mergeSttConfigFromAppConfig(config.tools?.media?.audio, config.tools?.media);
|
|
416
|
-
const modelId = typeof sttConfig.providers?.["xopc-local"]?.model === "string" ? sttConfig.providers["xopc-local"].model : "sensevoice-small";
|
|
417
|
-
const models = await listLocalVoiceModelStatuses();
|
|
418
|
-
const decoder = getAudioDecoderStatus();
|
|
419
|
-
try {
|
|
420
|
-
const runtime = await getLocalVoiceRuntimeClient().request("health", { modelId }, {
|
|
421
|
-
timeoutMs: 1e4,
|
|
422
|
-
stopOnTimeout: false
|
|
423
|
-
});
|
|
424
|
-
return c.json({
|
|
425
|
-
ok: true,
|
|
426
|
-
payload: {
|
|
427
|
-
runtime: {
|
|
428
|
-
...runtime,
|
|
429
|
-
ready: true
|
|
430
|
-
},
|
|
431
|
-
decoder,
|
|
432
|
-
models
|
|
433
|
-
}
|
|
434
|
-
});
|
|
435
|
-
} catch (error) {
|
|
436
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
437
|
-
return c.json({
|
|
438
|
-
ok: true,
|
|
439
|
-
payload: {
|
|
440
|
-
runtime: {
|
|
441
|
-
ready: false,
|
|
442
|
-
error: message
|
|
443
|
-
},
|
|
444
|
-
decoder,
|
|
445
|
-
models
|
|
446
|
-
}
|
|
447
|
-
});
|
|
448
|
-
}
|
|
449
|
-
});
|
|
450
|
-
authenticated.post("/api/voice/local/models/:modelId/install", strictRateLimitMiddleware, (c) => {
|
|
451
|
-
try {
|
|
452
|
-
const status = startLocalVoiceModelInstall(c.req.param("modelId"));
|
|
453
|
-
return c.json({
|
|
454
|
-
ok: true,
|
|
455
|
-
payload: { model: status }
|
|
456
|
-
}, 202);
|
|
457
|
-
} catch (error) {
|
|
458
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
459
|
-
return c.json({
|
|
460
|
-
ok: false,
|
|
461
|
-
error: { message }
|
|
462
|
-
}, 400);
|
|
463
|
-
}
|
|
464
|
-
});
|
|
465
|
-
authenticated.delete("/api/voice/local/models/:modelId", strictRateLimitMiddleware, async (c) => {
|
|
466
|
-
try {
|
|
467
|
-
await removeLocalVoiceModel(c.req.param("modelId"));
|
|
468
|
-
return c.json({ ok: true });
|
|
469
|
-
} catch (error) {
|
|
470
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
471
|
-
return c.json({
|
|
472
|
-
ok: false,
|
|
473
|
-
error: { message }
|
|
474
|
-
}, 400);
|
|
475
|
-
}
|
|
476
|
-
});
|
|
477
410
|
/**
|
|
478
411
|
* POST /api/voice/reveal-api-key — return plaintext voice provider apiKey from config file only.
|
|
479
412
|
* Body: `{ kind: 'stt' | 'tts', provider: string }`
|
|
@@ -3,13 +3,11 @@ import { resolveProjectAgentId } from "../../../projects/project-agent.js";
|
|
|
3
3
|
import "../../../projects/index.js";
|
|
4
4
|
import { messagesToClientHistory } from "../../../session/client-history.js";
|
|
5
5
|
import { validateWorkflowDefinitionInput } from "../../../workflows/domain/validation.js";
|
|
6
|
-
import { WorkflowDraftService } from "../../../workflows/draft/workflow-draft-service.js";
|
|
7
6
|
import { WorkflowNameConflictError, WorkflowRevisionConflictError, createWorkflowCatalog } from "../../../agent/workflow/catalog.js";
|
|
8
7
|
import "../../../workflows/domain/index.js";
|
|
9
|
-
import { resolveWorkflowRunArtifactsDir } from "../../../workflows/store/paths.js";
|
|
10
8
|
import { WorkflowDraftConflictError, WorkflowDraftStore } from "../../../workflows/authoring/workflow-draft-store.js";
|
|
11
9
|
import "../../../workflows/authoring/index.js";
|
|
12
|
-
import "../../../workflows/
|
|
10
|
+
import { resolveWorkflowRunArtifactsDir } from "../../../workflows/store/paths.js";
|
|
13
11
|
import { ProjectWorkflowPresetRepository } from "../../../workflows/project-presets/project-workflow-preset-repository.js";
|
|
14
12
|
import { basename, join } from "node:path";
|
|
15
13
|
import { readFile, stat } from "node:fs/promises";
|
|
@@ -108,26 +106,6 @@ function registerWorkflowRoutes(authenticated, deps) {
|
|
|
108
106
|
});
|
|
109
107
|
return c.json(result);
|
|
110
108
|
});
|
|
111
|
-
authenticated.post("/api/workflows/definitions/generate", async (c) => {
|
|
112
|
-
const body = await readJsonBody(c.req.raw);
|
|
113
|
-
const prompt = body.prompt?.trim();
|
|
114
|
-
if (!prompt) return c.json({ error: "prompt is required" }, 400);
|
|
115
|
-
const agentId = getAgentId(body.agentId ?? c.req.query("agentId"), service.currentConfig);
|
|
116
|
-
const draftService = new WorkflowDraftService({ config: service.currentConfig });
|
|
117
|
-
try {
|
|
118
|
-
const draft = await draftService.createDraft({
|
|
119
|
-
prompt,
|
|
120
|
-
agentId,
|
|
121
|
-
language: body.language,
|
|
122
|
-
mode: body.mode,
|
|
123
|
-
existingGraph: body.existingGraph,
|
|
124
|
-
constraints: body.constraints
|
|
125
|
-
}, c.req.raw.signal);
|
|
126
|
-
return c.json({ draft }, 201);
|
|
127
|
-
} catch (err) {
|
|
128
|
-
return c.json({ error: err instanceof Error ? err.message : "Failed to create workflow draft" }, 400);
|
|
129
|
-
}
|
|
130
|
-
});
|
|
131
109
|
authenticated.post("/api/workflows/definitions", async (c) => {
|
|
132
110
|
const body = await readJsonBody(c.req.raw);
|
|
133
111
|
if (body.expectedRevision !== 0) return c.json({ error: "expectedRevision must be 0 when creating a workflow" }, 400);
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { normalizeAgentId } from "../agent-catalog/id.js";
|
|
2
2
|
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
3
|
-
import { init_agent_scope } from "../agent/agent-scope.js";
|
|
4
|
-
import { AgentCatalogService } from "../agent-catalog/service.js";
|
|
5
3
|
import { ConfigSchema, init_schema } from "../config/schema.js";
|
|
4
|
+
import { init_agent_scope } from "../agent/agent-scope.js";
|
|
6
5
|
import { resolveEffectiveAgentConfigForAgent } from "../config/agent-profile.js";
|
|
7
6
|
import { fetchWithTimeoutGuarded } from "../media-shared/http/provider-http.js";
|
|
8
7
|
import "../media-shared/http/index.js";
|
|
8
|
+
import { AgentCatalogService } from "../agent-catalog/service.js";
|
|
9
9
|
import { getImageGenerationProvider, listImageGenerationProvidersSummary } from "../agent/image/generation/provider-registry.js";
|
|
10
10
|
//#region src/gateway/image-generation-setup.ts
|
|
11
11
|
init_repository();
|
package/dist/src/gateway/lock.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from "node:path";
|
|
2
2
|
import fs from "node:fs";
|
|
3
3
|
import { createHash } from "node:crypto";
|
|
4
|
-
import fs$1 from "node:fs/promises";
|
|
5
4
|
import net from "node:net";
|
|
5
|
+
import fs$1 from "node:fs/promises";
|
|
6
6
|
import { homedir } from "os";
|
|
7
7
|
//#region src/gateway/lock.ts
|
|
8
8
|
/**
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* Was 350 lines of `GatewayService` covering nine concerns:
|
|
6
6
|
* - manual `reloadConfig()` (CLI/UI trigger)
|
|
7
7
|
* - `saveConfig()` / `updateConfig()` (PATCH /api/config)
|
|
8
|
-
* - `
|
|
8
|
+
* - `setExtensionActivationTarget` (extension lifecycle)
|
|
9
9
|
* - `afterWeixinCredentialsPersisted` / `afterFeishuCredentialsPersisted`
|
|
10
10
|
* (QR-login follow-ups that bypass the watcher)
|
|
11
11
|
* - `ConfigHotReloader` (fs.watch → debounced per-section dispatch)
|
|
@@ -69,11 +69,11 @@ export declare class GatewayConfigCoordinator {
|
|
|
69
69
|
error?: string;
|
|
70
70
|
}>;
|
|
71
71
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
72
|
+
* Persist `extensions.enabled` / `extensions.disabled` for a discovered extension.
|
|
73
|
+
* Extensions hot-load on enable;
|
|
74
74
|
* disable still needs a gateway restart to unload.
|
|
75
75
|
*/
|
|
76
|
-
|
|
76
|
+
setExtensionActivationTarget(extensionId: string, wanted: boolean): Promise<{
|
|
77
77
|
ok: boolean;
|
|
78
78
|
error?: string;
|
|
79
79
|
requiresGatewayRestart: boolean;
|
|
@@ -8,7 +8,7 @@ import "../../agent/mcp/bundle-mcp-tools.js";
|
|
|
8
8
|
import { loadConfig, saveConfig } from "../../config/loader.js";
|
|
9
9
|
import { ConfigHotReloader } from "../../config/reload.js";
|
|
10
10
|
import "../../config/index.js";
|
|
11
|
-
import {
|
|
11
|
+
import { computeExtensionActivationPatch } from "../../extensions/bundled-extension-activation.js";
|
|
12
12
|
import { sanitizeTunnelConfig } from "../../tunnel/tunnel-config.js";
|
|
13
13
|
//#region src/gateway/service/config-coordinator.ts
|
|
14
14
|
init_providers();
|
|
@@ -113,11 +113,11 @@ var GatewayConfigCoordinator = class {
|
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
115
|
/**
|
|
116
|
-
*
|
|
117
|
-
*
|
|
116
|
+
* Persist `extensions.enabled` / `extensions.disabled` for a discovered extension.
|
|
117
|
+
* Extensions hot-load on enable;
|
|
118
118
|
* disable still needs a gateway restart to unload.
|
|
119
119
|
*/
|
|
120
|
-
async
|
|
120
|
+
async setExtensionActivationTarget(extensionId, wanted) {
|
|
121
121
|
const loader = this.opts.getExtensionLoader();
|
|
122
122
|
if (!loader) return {
|
|
123
123
|
ok: false,
|
|
@@ -130,7 +130,7 @@ var GatewayConfigCoordinator = class {
|
|
|
130
130
|
error: "Invalid extension id",
|
|
131
131
|
requiresGatewayRestart: false
|
|
132
132
|
};
|
|
133
|
-
const patch =
|
|
133
|
+
const patch = computeExtensionActivationPatch(loader, this.opts.getConfig(), id, wanted);
|
|
134
134
|
if (patch.ok === false) return {
|
|
135
135
|
ok: false,
|
|
136
136
|
error: patch.error,
|
|
@@ -163,7 +163,7 @@ var GatewayConfigCoordinator = class {
|
|
|
163
163
|
}
|
|
164
164
|
this.opts.emit("config.reload", {
|
|
165
165
|
section: "extensions",
|
|
166
|
-
source: "
|
|
166
|
+
source: "extension-activation"
|
|
167
167
|
});
|
|
168
168
|
return {
|
|
169
169
|
ok: true,
|
|
@@ -402,14 +402,16 @@ var GatewayMarketplaceService = class {
|
|
|
402
402
|
const id = extensionId.trim();
|
|
403
403
|
const prevExt = currentConfig.extensions;
|
|
404
404
|
const baseExt = prevExt && typeof prevExt === "object" && !Array.isArray(prevExt) ? { ...prevExt } : {};
|
|
405
|
-
const
|
|
406
|
-
|
|
405
|
+
for (const key of ["enabled", "disabled"]) {
|
|
406
|
+
const value = baseExt[key];
|
|
407
|
+
if (!Array.isArray(value)) continue;
|
|
408
|
+
const next = value.filter((x) => typeof x === "string" && x !== id);
|
|
409
|
+
if (next.length > 0) baseExt[key] = next;
|
|
410
|
+
else delete baseExt[key];
|
|
411
|
+
}
|
|
407
412
|
return {
|
|
408
413
|
...currentConfig,
|
|
409
|
-
extensions:
|
|
410
|
-
...baseExt,
|
|
411
|
-
enabled
|
|
412
|
-
}
|
|
414
|
+
extensions: baseExt
|
|
413
415
|
};
|
|
414
416
|
}
|
|
415
417
|
};
|
|
@@ -221,7 +221,7 @@ export declare class GatewayService {
|
|
|
221
221
|
mode: 'auto' | 'manual';
|
|
222
222
|
error?: string;
|
|
223
223
|
}>;
|
|
224
|
-
|
|
224
|
+
setExtensionActivationTarget(extensionId: string, wanted: boolean): Promise<{
|
|
225
225
|
ok: boolean;
|
|
226
226
|
error?: string;
|
|
227
227
|
requiresGatewayRestart: boolean;
|
|
@@ -17,14 +17,14 @@ import { init_session_repository, listSessionMetadata, patchSessionMetadata } fr
|
|
|
17
17
|
import { getSessionConfig, init_config_repository } from "../storage/sqlite/config-repository.js";
|
|
18
18
|
import { init_sqlite } from "../storage/sqlite/index.js";
|
|
19
19
|
import { normalizeAgentId } from "../agent-catalog/id.js";
|
|
20
|
-
import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
21
|
-
import { init_paths, resolveConfigPath, resolveExtensionsDir } from "../config/paths.js";
|
|
22
20
|
import { init_config, resolveKnowledgeReadPolicy } from "../user-context/config.js";
|
|
23
21
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
22
|
+
import { init_agent_scope, listAgentEntries, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
24
23
|
import { init_agent_session_key, resolveAgentMainConversationId } from "../routing/agent-session-key.js";
|
|
25
24
|
import { init_session_key, resolveConversationId, sanitizeSegment } from "../routing/session-key.js";
|
|
26
25
|
import { getDefaultAgentId, init_resolve_route } from "../routing/resolve-route.js";
|
|
27
26
|
import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
27
|
+
import { init_paths, resolveConfigPath, resolveExtensionsDir } from "../config/paths.js";
|
|
28
28
|
import { prewarmModelRegistry } from "../providers/model-registry.js";
|
|
29
29
|
import { init_providers, providers_exports } from "../providers/index.js";
|
|
30
30
|
import { TaskConversationRepository } from "../tasks/task-conversation-repository.js";
|
|
@@ -72,20 +72,24 @@ import { ChatPreviewService } from "../chat-previews/service.js";
|
|
|
72
72
|
import "../chat-previews/index.js";
|
|
73
73
|
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
74
74
|
import "../config/index.js";
|
|
75
|
-
import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
|
|
76
|
-
import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
|
|
77
|
-
import "../knowledge/index.js";
|
|
78
|
-
import { ConnectionRecoveryService } from "../connectors/connection-recovery-service.js";
|
|
79
|
-
import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
|
|
80
|
-
import { startConnectorSupervisor } from "../connectors/supervisor.js";
|
|
81
75
|
import { DiscussionService } from "../discussions/service.js";
|
|
82
76
|
import { DiscussionOrganizer } from "../discussions/organizer.js";
|
|
83
77
|
import { DiscussionLiveWorker } from "../discussions/live-worker.js";
|
|
84
78
|
import { DiscussionOrganizerWorker } from "../discussions/organizer-worker.js";
|
|
85
79
|
import { DiscussionSealer } from "../discussions/sealer.js";
|
|
86
80
|
import "../discussions/index.js";
|
|
81
|
+
import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
|
|
82
|
+
import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
|
|
83
|
+
import "../knowledge/index.js";
|
|
84
|
+
import { ConnectionRecoveryService } from "../connectors/connection-recovery-service.js";
|
|
85
|
+
import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
|
|
86
|
+
import { startConnectorSupervisor } from "../connectors/supervisor.js";
|
|
87
87
|
import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
|
|
88
88
|
import "../endpoint-tools/index.js";
|
|
89
|
+
import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
|
|
90
|
+
import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
|
|
91
|
+
import { HomeIntelligenceHost } from "../home-intelligence/host.js";
|
|
92
|
+
import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
|
|
89
93
|
import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
|
|
90
94
|
import { prepareAutomationAgentSession } from "./automation-agent-session.js";
|
|
91
95
|
import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
|
|
@@ -140,10 +144,6 @@ import { createGatewayStartupTrace } from "./startup-trace.js";
|
|
|
140
144
|
import { GatewaySceneHost } from "./scenes/host.js";
|
|
141
145
|
import { checkAppContextAccess, prepareAppContext } from "./service/app-context-access.js";
|
|
142
146
|
import { applyAutomaticVoiceLanguage, inferProductLanguageFromEnvironment, initializeVoiceDefaults } from "../voice/language-profile.js";
|
|
143
|
-
import { HomeIntelligenceHost } from "../home-intelligence/host.js";
|
|
144
|
-
import { HomeAdviceGenerator } from "../home-intelligence/generator.js";
|
|
145
|
-
import { HomeSnapshotBuilder } from "../home-intelligence/snapshot.js";
|
|
146
|
-
import { HomeCapabilityPreflightService } from "../home-intelligence/capability-preflight.js";
|
|
147
147
|
import crypto from "node:crypto";
|
|
148
148
|
//#region src/gateway/service.ts
|
|
149
149
|
init_session_repository();
|
|
@@ -699,7 +699,7 @@ var GatewayService = class {
|
|
|
699
699
|
prepareAgentSession: (input) => prepareAutomationAgentSession(this.sessionIndex.getStore(), this.projects, input),
|
|
700
700
|
workflowRunService: this.createWorkflowRunService(),
|
|
701
701
|
browserAutomationService: this.browserAutomations,
|
|
702
|
-
executeTaskCommand: ({ taskId, idempotencyKey, command }) => {
|
|
702
|
+
executeTaskCommand: ({ taskId, idempotencyKey, command, triggerEvent }) => {
|
|
703
703
|
const task = new TaskRepository().get(taskId);
|
|
704
704
|
if (!task) return {
|
|
705
705
|
ok: false,
|
|
@@ -713,7 +713,8 @@ var GatewayService = class {
|
|
|
713
713
|
actor: {
|
|
714
714
|
kind: "system",
|
|
715
715
|
id: "automation"
|
|
716
|
-
}
|
|
716
|
+
},
|
|
717
|
+
...triggerEvent ? { triggerContext: { automationTrigger: triggerEvent } } : {}
|
|
717
718
|
});
|
|
718
719
|
if (result.ok && result.runId) this.dispatchTaskRuns();
|
|
719
720
|
if (result.ok === false) return {
|
|
@@ -1206,7 +1207,7 @@ var GatewayService = class {
|
|
|
1206
1207
|
prepareAgentSession: (input) => prepareAutomationAgentSession(this.sessionIndex.getStore(), this.projects, input),
|
|
1207
1208
|
workflowRunService: this.createWorkflowRunService(),
|
|
1208
1209
|
browserAutomationService: this.browserAutomations,
|
|
1209
|
-
executeTaskCommand: ({ taskId, idempotencyKey, command }) => {
|
|
1210
|
+
executeTaskCommand: ({ taskId, idempotencyKey, command, triggerEvent }) => {
|
|
1210
1211
|
const task = new TaskRepository().get(taskId);
|
|
1211
1212
|
if (!task) return {
|
|
1212
1213
|
ok: false,
|
|
@@ -1220,7 +1221,8 @@ var GatewayService = class {
|
|
|
1220
1221
|
actor: {
|
|
1221
1222
|
kind: "system",
|
|
1222
1223
|
id: "automation"
|
|
1223
|
-
}
|
|
1224
|
+
},
|
|
1225
|
+
...triggerEvent ? { triggerContext: { automationTrigger: triggerEvent } } : {}
|
|
1224
1226
|
});
|
|
1225
1227
|
if (result.ok && result.runId) this.dispatchTaskRuns();
|
|
1226
1228
|
if (result.ok === false) return {
|
|
@@ -1496,8 +1498,8 @@ var GatewayService = class {
|
|
|
1496
1498
|
mode
|
|
1497
1499
|
};
|
|
1498
1500
|
}
|
|
1499
|
-
|
|
1500
|
-
return this.configCoordinator.
|
|
1501
|
+
setExtensionActivationTarget(extensionId, wanted) {
|
|
1502
|
+
return this.configCoordinator.setExtensionActivationTarget(extensionId, wanted);
|
|
1501
1503
|
}
|
|
1502
1504
|
updateConfig(updates) {
|
|
1503
1505
|
return this.configCoordinator.updateConfig(updates);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AgentCatalogRepository, init_repository } from "../agent-catalog/repository.js";
|
|
2
|
-
import { AgentCatalogService } from "../agent-catalog/service.js";
|
|
3
2
|
import { getModelCatalogStore, init_model_catalog_store } from "../providers/model-catalog-store.js";
|
|
4
3
|
import { compareCatalogModels } from "../providers/model-catalog-ranking.js";
|
|
4
|
+
import { AgentCatalogService } from "../agent-catalog/service.js";
|
|
5
5
|
import { prepareUpdateGlobalDefaults } from "./global-defaults-admin.js";
|
|
6
6
|
//#region src/gateway/xopc-cloud-capability-setup.ts
|
|
7
7
|
init_repository();
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { init_agent_scope, resolveDefaultAgentId } from "../agent/agent-scope.js";
|
|
2
2
|
import { init_providers, resolveModel } from "../providers/index.js";
|
|
3
3
|
import { completeWithResolvedCredentials, isLocalModelBaseUrl } from "../providers/model-call.js";
|
|
4
|
+
import { extractAssistantText, getAssistantMessageErrorReason } from "../providers/model-response.js";
|
|
4
5
|
import { resolveModelSelector } from "../config/agent-model-intents.js";
|
|
5
6
|
import { z } from "zod";
|
|
6
7
|
//#region src/home-intelligence/generator.ts
|
|
@@ -104,10 +105,10 @@ function buildSystemPrompt(locale) {
|
|
|
104
105
|
`Write only user-visible prose values such as title, rationale, steps, and prompts in ${locale === "zh" ? "Simplified Chinese" : "English"}. Machine values listed above must remain in English.`
|
|
105
106
|
].join("\n");
|
|
106
107
|
}
|
|
107
|
-
function
|
|
108
|
-
|
|
109
|
-
if (
|
|
110
|
-
return
|
|
108
|
+
function extractHomeResponseText(response) {
|
|
109
|
+
const modelError = getAssistantMessageErrorReason(response);
|
|
110
|
+
if (modelError) throw new Error(`Home intelligence provider request failed: ${modelError}`);
|
|
111
|
+
return extractAssistantText(response.content);
|
|
111
112
|
}
|
|
112
113
|
function parseJson(raw) {
|
|
113
114
|
const fenced = raw.match(/```json\s*([\s\S]*?)```/i)?.[1];
|
|
@@ -182,7 +183,7 @@ var HomeAdviceGenerator = class {
|
|
|
182
183
|
temperature: .1,
|
|
183
184
|
signal: requestSignal
|
|
184
185
|
});
|
|
185
|
-
const raw =
|
|
186
|
+
const raw = extractHomeResponseText(response);
|
|
186
187
|
let result;
|
|
187
188
|
try {
|
|
188
189
|
result = HomeModelResultSchema.parse(parseJson(raw));
|
|
@@ -206,7 +207,7 @@ var HomeAdviceGenerator = class {
|
|
|
206
207
|
signal: requestSignal
|
|
207
208
|
});
|
|
208
209
|
try {
|
|
209
|
-
result = HomeModelResultSchema.parse(parseJson(
|
|
210
|
+
result = HomeModelResultSchema.parse(parseJson(extractHomeResponseText(corrected)));
|
|
210
211
|
} catch (correctionError) {
|
|
211
212
|
throw new Error(`Home intelligence model returned invalid structured JSON after correction: ${validationSummary(correctionError)}`);
|
|
212
213
|
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { createLogger } from "../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { homePatternKey } from "./strategy.js";
|
|
4
|
-
import { HomeAdvicePolicy } from "./policy.js";
|
|
5
4
|
import { HomeIntelligenceRepository } from "./repository.js";
|
|
6
5
|
import { HomeOpportunityApplicationService } from "./application-service.js";
|
|
6
|
+
import { HomeAdvicePolicy } from "./policy.js";
|
|
7
7
|
import { buildHomeOpportunityNotification } from "./notification.js";
|
|
8
8
|
import { createHash } from "node:crypto";
|
|
9
9
|
//#region src/home-intelligence/host.ts
|
|
@@ -5,10 +5,10 @@ import { currentOperationId, init_operation_context } from "../infra/operation-c
|
|
|
5
5
|
import { afterSqliteCommit, init_transaction, runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
6
6
|
import { ExtensionCapabilityBindingsSchema, extensionCapabilityPermissions } from "../../packages/gateway-contract/src/extension-capabilities.js";
|
|
7
7
|
import { init_src } from "../../packages/gateway-contract/src/index.js";
|
|
8
|
-
import { CapabilityError } from "../capabilities/runtime/errors.js";
|
|
9
8
|
import { init_paths, resolveExtensionsDir } from "../config/paths.js";
|
|
10
9
|
import { LocalAppStore } from "./store.js";
|
|
11
10
|
import { slugifyProjectName } from "../projects/project-store.js";
|
|
11
|
+
import { CapabilityError } from "../capabilities/runtime/errors.js";
|
|
12
12
|
import { DomainOutboxDispatcher } from "../infra/domain-outbox-dispatcher.js";
|
|
13
13
|
import { validateLocalAppCapabilityContracts } from "./capabilities/contracts.js";
|
|
14
14
|
import { buildLocalAppFixGuidance } from "./fix-guidance.js";
|
|
@@ -228,7 +228,7 @@ export interface MediaUnderstandingProvider {
|
|
|
228
228
|
* Defaults to true.
|
|
229
229
|
*/
|
|
230
230
|
requiresApiKey?: boolean;
|
|
231
|
-
/** Optional runtime readiness check for
|
|
231
|
+
/** Optional runtime readiness check for providers whose backing service may be unavailable. */
|
|
232
232
|
isConfigured?: (options?: {
|
|
233
233
|
model?: string;
|
|
234
234
|
}) => boolean;
|
|
@@ -12,6 +12,7 @@ function emptyMetrics() {
|
|
|
12
12
|
needsReview: 0,
|
|
13
13
|
activated: 0,
|
|
14
14
|
expiredPriorities: 0,
|
|
15
|
+
expiredObservations: 0,
|
|
15
16
|
archived: 0,
|
|
16
17
|
repairedIndexes: 0
|
|
17
18
|
};
|
|
@@ -33,6 +34,17 @@ function addDecision(db, runId, objectType, objectId, action, reason, before, af
|
|
|
33
34
|
decision_id, run_id, object_type, object_id, action, reason, before_json, after_json, created_at
|
|
34
35
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(randomUUID(), runId, objectType, objectId, action, reason, before === void 0 ? null : JSON.stringify(before), after === void 0 ? null : JSON.stringify(after), now);
|
|
35
36
|
}
|
|
37
|
+
function purgeExpiredObservations(db, runId, principalId, now, limit, metrics) {
|
|
38
|
+
const rows = db.prepare(`SELECT observation_id, delete_after FROM user_model_observations
|
|
39
|
+
WHERE principal_id = ? AND delete_after IS NOT NULL AND delete_after <= ?
|
|
40
|
+
ORDER BY delete_after, observation_id LIMIT ?`).all(principalId, now, limit);
|
|
41
|
+
metrics.scanned += rows.length;
|
|
42
|
+
for (const row of rows) {
|
|
43
|
+
db.prepare("DELETE FROM user_model_observations WHERE observation_id = ?").run(row.observation_id);
|
|
44
|
+
addDecision(db, runId, "evidence", row.observation_id, "deleted", "observation_retention_expired", row, void 0, now);
|
|
45
|
+
metrics.expiredObservations += 1;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
36
48
|
function transitionAssertions(db, runId, principalId, now, limit, metrics) {
|
|
37
49
|
const rows = db.prepare(`SELECT a.assertion_id, a.status FROM user_assertions a
|
|
38
50
|
JOIN user_assertion_slots s ON s.slot_id = a.slot_id
|
|
@@ -211,6 +223,7 @@ function runMemoryMaintenance(input) {
|
|
|
211
223
|
transitionAssertions(db, runId, principalId, now, limit, metrics);
|
|
212
224
|
transitionPriorities(db, runId, principalId, now, limit, metrics);
|
|
213
225
|
transitionKnowledge(db, runId, principalId, now, limit, metrics);
|
|
226
|
+
purgeExpiredObservations(db, runId, principalId, now, limit, metrics);
|
|
214
227
|
if (input.jobType === "daily_reconciliation" || input.jobType === "manual_repair") {
|
|
215
228
|
reconcileEvidence(db, runId, principalId, now, limit, evidenceThreshold, metrics);
|
|
216
229
|
activateKnowledge(db, runId, principalId, now, limit, metrics);
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { isGatewayConfigLockedByAnotherProcessSync } from "../gateway/lock.js";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
//#region src/migrations/retired-local-stt.ts
|
|
4
|
+
const id = "retire-builtin-local-stt";
|
|
5
|
+
function migratedConfig(ctx) {
|
|
6
|
+
if (!existsSync(ctx.configPath)) return null;
|
|
7
|
+
const config = JSON.parse(readFileSync(ctx.configPath, "utf8"));
|
|
8
|
+
const tools = config.tools;
|
|
9
|
+
if (!tools || typeof tools !== "object" || Array.isArray(tools)) return null;
|
|
10
|
+
const media = tools.media;
|
|
11
|
+
if (!media || typeof media !== "object" || Array.isArray(media)) return null;
|
|
12
|
+
const audio = media.audio;
|
|
13
|
+
if (!audio || typeof audio !== "object" || Array.isArray(audio)) return null;
|
|
14
|
+
const stt = audio;
|
|
15
|
+
if (stt.provider !== "xopc-local" && stt.provider !== "local") return null;
|
|
16
|
+
stt.enabled = false;
|
|
17
|
+
stt.provider = "openai";
|
|
18
|
+
stt.fallback = {
|
|
19
|
+
enabled: false,
|
|
20
|
+
order: []
|
|
21
|
+
};
|
|
22
|
+
return config;
|
|
23
|
+
}
|
|
24
|
+
function item(status) {
|
|
25
|
+
return {
|
|
26
|
+
id,
|
|
27
|
+
title: "Retire built-in local speech recognition",
|
|
28
|
+
kind: "config",
|
|
29
|
+
safety: "auto",
|
|
30
|
+
status,
|
|
31
|
+
message: "Disable the removed xopc-local STT provider. Select an installed STT extension or another provider before enabling voice input again."
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
const retiredLocalSttMigration = {
|
|
35
|
+
id,
|
|
36
|
+
kind: "config",
|
|
37
|
+
safety: "auto",
|
|
38
|
+
detect: (ctx) => migratedConfig(ctx) ? item("planned") : null,
|
|
39
|
+
apply: (ctx) => {
|
|
40
|
+
if (isGatewayConfigLockedByAnotherProcessSync(ctx.configPath)) return {
|
|
41
|
+
...item("skipped"),
|
|
42
|
+
message: "Deferred local STT retirement until the running gateway restarts."
|
|
43
|
+
};
|
|
44
|
+
const config = migratedConfig(ctx);
|
|
45
|
+
return config ? {
|
|
46
|
+
...item("applied"),
|
|
47
|
+
details: { config }
|
|
48
|
+
} : item("not_needed");
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { retiredLocalSttMigration };
|
|
@@ -3,6 +3,7 @@ import { init_logger } from "../utils/logger.js";
|
|
|
3
3
|
import { ConfigSchema, init_schema } from "../config/schema.js";
|
|
4
4
|
import { listRegisteredMigrations } from "./registry.js";
|
|
5
5
|
import { memoryConfigMigration } from "./memory-config.js";
|
|
6
|
+
import { retiredLocalSttMigration } from "./retired-local-stt.js";
|
|
6
7
|
import { dirname, join } from "node:path";
|
|
7
8
|
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
8
9
|
//#region src/migrations/runner.ts
|
|
@@ -11,7 +12,7 @@ init_logger();
|
|
|
11
12
|
const log = createLogger("Migrations");
|
|
12
13
|
const MIGRATION_LEDGER_FILENAME = "migrations.json";
|
|
13
14
|
const CONFIG_BACKUP_COUNT = 10;
|
|
14
|
-
const CORE_MIGRATIONS = [memoryConfigMigration];
|
|
15
|
+
const CORE_MIGRATIONS = [memoryConfigMigration, retiredLocalSttMigration];
|
|
15
16
|
function listAllMigrations() {
|
|
16
17
|
return [...CORE_MIGRATIONS, ...listRegisteredMigrations().map((entry) => entry.migration)];
|
|
17
18
|
}
|