@xopcai/xopc 0.0.211 → 0.0.213
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/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store-BzjFoSr0.js → activity-store-Xw-pOm9A.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DTfjhfVE.js → agent-avatar-dicebear-Ca1bciiK.js} +1 -1
- package/dist/gateway/static/root/assets/agents-DD3TqNrC.js +68 -0
- package/dist/gateway/static/root/assets/{api-D269PnU9.js → api-CZK-lRew.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BFpfQDWc.js → app-management-settings-panel-BLFIG09j.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DLxFdqhY.js → appearance-settings-BsTWUq1i.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-cJkDKn72.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-DPlH4dnc.js → archive-plugin-B9LsFfEx.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-xqfLLd0I.js → attachment-load-CsWiFfmN.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-CbjU2e75.js +1 -0
- package/dist/gateway/static/root/assets/automations-workspace-C4xyo0c4.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-C0tuoPXk.js → binary-plugins-DbqhT_JB.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Deyphj1o.js → block-editor-BGpHwxZ5.js} +47 -47
- package/dist/gateway/static/root/assets/browser-settings-page-CrhpQl-e.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-CYEbXyRF.js → browser-workflow-inputs-BXlon_hL.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-Bf0tPbGi.js → browser-workflows-page-B3BBDM_r.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-B9MoPW9u.js +7 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-DPkFA_-R.js → capability-presets-api-BqvMm6UW.js} +1 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-BmwldV9R.js +3 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-DqKaAcnZ.js → channel-recipient-api-9uca5kDa.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-CwLqWcy_.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-DeBw3du9.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-CTDRZa7e.js → chat-terminal-dock-DJjYT3WX.js} +2 -2
- package/dist/gateway/static/root/assets/{chunk-KS7C4IRE-BMhrPKJC.js → chunk-KS7C4IRE-BaASWQor.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-api-Buu8fif8.js → connectors-api-XCLfuDrN.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-CVkGtcMS.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-DTLR82NB.js → cron-expression-DzQN7zBR.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-DyNogHQH.js → date-picker-B-r5O5qd.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BpnCuo7B.js → dependency-picker-Ch2XBU2s.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-CDKI4gVB.js → desktop-pet-BdjX8jde.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DjT5C2a3.js → desktop-pet-settings-CzjjgMMn.js} +1 -1
- package/dist/gateway/static/root/assets/directory-picker-path-field-BCTgGTk4.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-DWf2z7q5.js → extension-debug-page-6OGgOucD.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-Dorx0kf9.js → extension-page-Cf6MUfCF.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-B1wU9ZOB.js → extension-settings-page-pSY_ZvQZ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-B1lG4dNr.js → gateway-config-api-CFJMng9v.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-BIxuwPQi.js → gateway-config-swr-DpiY6aub.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-DqIOqJjM.js → gateway-settings-aQYxNePf.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BpZgd4U-.js → gateway-startup-retry-BZ_6ChP4.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-DG4Kmgkc.js → heartbeat-settings-CI33q9i1.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-CAIaWs6r.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-PkhYohDa.js → image-generation-api-DPndEWOU.js} +1 -1
- package/dist/gateway/static/root/assets/index-BhstAl5i.js +108 -0
- package/dist/gateway/static/root/assets/index-DQzjgIkQ.css +2 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-6OQT3gQF.js → keyboard-shortcuts-settings-CbLJRGXR.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-BqFnCaKT.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-DfruRAmE.js → local-apps-page-Crf6c3SK.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-C5MK9WcP.js → locale-store-BYSRjM6g.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-BpfLQWex.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-L1VYkywO.js → management-settings-mxyYWKgM.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-oqgHbqt-.js → markdown-split-kZaPrUTM.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-V4rcPPH0.js → markdown-view-DlsczsQ1.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Bb6gSX2o.js → media-plugins-Dk67jaG6.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DyM8OOVG.js +3 -0
- package/dist/gateway/static/root/assets/notes-api-DaeeQw8A.js +1 -0
- package/dist/gateway/static/root/assets/{notes-page-B1rOXjpT.js → notes-page-CQDzw8fX.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-BYiROmRJ.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-CBuCKeyy.js → page-tabs-C4UkhX2U.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BQ0tLfPO.js → preview-open-alternatives-nzcjh6y0.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DPeFn7Hu.js → product-open-page-3FvW5cHm.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-p45i1sMj.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Y9yXB4DX.js +1 -0
- package/dist/gateway/static/root/assets/registry-api-Bu6OGEY2.js +2 -0
- package/dist/gateway/static/root/assets/remote-access-hub-CNsGY0VS.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-BCfQNzjG.js → runtime-tools-settings-panel-CVqPSfUb.js} +2 -2
- package/dist/gateway/static/root/assets/{schema-form-Bo7YbHYN.js → schema-form-Dz6eZpqv.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-BAtpgb1t.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-pgBQ21Oe.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-B9dnKr3M.js → settings-form-section-BaWFAZv4.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-CYDV2JtY.js → settings-loading-skeleton-BWmdZfNg.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-DbrIYfS9.js → settings-page-Btcb-Dc8.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BNllZUFP.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-olgr7LLN.js → share-preview-page-CGzY3S0N.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CncwbTHY.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CcW2dhSW.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-PE16CNw5.js → skills-page-Bi2IWpU0.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-nXmBcBxt.js → skills-page.utils-BancvwN2.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-C3qPwAdY.js → system-settings-panel-CihjIzWx.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-SSNFtY-d.js +1 -0
- package/dist/gateway/static/root/assets/{theme-store-KR5Otp5w.js → theme-store-D1_t_31B.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-lMZodtDF.js → typed-models-lib-C2LhiQq5.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-CKpatP3S.js → use-autosave-tf_8rxAK.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-BnPTFEar.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-CDcv0Wbh.js → voice-api-key-field-DN-y7Zfe.js} +1 -1
- package/dist/gateway/static/root/assets/work-discovery-overlay-bqqH4aZ9.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BAHYNlQt.js → workflow-run-setup-panel-2H33iXOB.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-BnfxRf1q.js +5 -0
- package/dist/gateway/static/root/index.html +12 -10
- package/dist/package.js +1 -1
- package/dist/src/auth/oauth/xopc-cloud.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/tunnel.js +3 -3
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/connectors/composio-managed-client.d.ts +60 -0
- package/dist/src/connectors/composio-managed-client.js +135 -0
- package/dist/src/connectors/composio-managed-events.d.ts +41 -0
- package/dist/src/connectors/composio-managed-events.js +105 -0
- package/dist/src/connectors/composio-sessions.d.ts +2 -1
- package/dist/src/connectors/composio-sessions.js +13 -7
- package/dist/src/connectors/composio.js +2 -1
- package/dist/src/connectors/connected-source-ingestion.js +67 -25
- package/dist/src/connectors/health.js +1 -1
- package/dist/src/connectors/learning-recipes.js +2 -0
- package/dist/src/connectors/runtime-adapter-registry.js +2 -2
- package/dist/src/discussions/sealer.js +2 -2
- package/dist/src/discussions/service.js +6 -2
- package/dist/src/discussions/transcript.d.ts +2 -0
- package/dist/src/discussions/transcript.js +16 -3
- package/dist/src/extensions/install.d.ts +10 -0
- package/dist/src/extensions/install.js +111 -14
- package/dist/src/extensions/loader.js +22 -18
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/middleware/auth.js +2 -2
- package/dist/src/gateway/hono/middleware/logger.js +1 -1
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +11 -4
- package/dist/src/gateway/hono/routes/exposure.js +1 -1
- package/dist/src/gateway/hono/routes/home.d.ts +1 -1
- package/dist/src/gateway/hono/routes/home.js +2 -2
- package/dist/src/gateway/hono/routes/mcp.js +1 -1
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/tunnel.js +3 -3
- package/dist/src/gateway/hono/routes/workflows.js +69 -0
- package/dist/src/gateway/index.js +2 -2
- package/dist/src/gateway/runtime-config.js +2 -2
- package/dist/src/gateway/security/audit.js +2 -2
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service.d.ts +1 -0
- package/dist/src/gateway/service.js +25 -10
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/notes/note-attachment-sync.js +1 -1
- package/dist/src/notes/service.d.ts +1 -0
- package/dist/src/notes/service.js +2 -1
- package/dist/src/notes/types.d.ts +2 -0
- package/dist/src/providers/model-catalog-persistence.d.ts +1 -1
- package/dist/src/providers/model-catalog-store.d.ts +2 -60
- package/dist/src/providers/model-catalog-types.d.ts +60 -0
- package/dist/src/providers/model-catalog-types.js +1 -0
- package/dist/src/providers/provider-disconnect-core.d.ts +11 -0
- package/dist/src/providers/provider-disconnect-core.js +35 -0
- package/dist/src/providers/provider-disconnect.d.ts +2 -10
- package/dist/src/providers/provider-disconnect.js +4 -26
- package/dist/src/providers/xopc-cloud-catalog-coordinator.js +2 -2
- package/dist/src/storage/sqlite/migrations/124_workflow_context_snapshots.sql +15 -0
- package/dist/src/storage/sqlite/migrations/125_project_workflow_presets.sql +12 -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/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tasks/home-query-service.d.ts +12 -127
- package/dist/src/tasks/home-query-service.js +73 -271
- package/dist/src/tasks/index.js +2 -2
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/xopc-tui-keybindings.d.ts +2 -2
- package/dist/src/tunnel/index.js +2 -2
- package/dist/src/voice/audio/normalize.d.ts +1 -0
- package/dist/src/voice/audio/normalize.js +24 -4
- package/dist/src/voice/local/wav.d.ts +3 -0
- package/dist/src/voice/local/wav.js +10 -4
- package/dist/src/work-discovery/service.js +6 -8
- package/dist/src/work-discovery/types.d.ts +2 -0
- package/dist/src/workflows/context/workflow-context-snapshot-repository.d.ts +21 -0
- package/dist/src/workflows/context/workflow-context-snapshot-repository.js +40 -0
- package/dist/src/workflows/context/workflow-context.d.ts +18 -0
- package/dist/src/workflows/context/workflow-context.js +159 -0
- package/dist/src/workflows/domain/run.d.ts +10 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +1 -0
- package/dist/src/workflows/engine/workflow-engine.js +2 -0
- package/dist/src/workflows/project-presets/project-workflow-preset-repository.d.ts +20 -0
- package/dist/src/workflows/project-presets/project-workflow-preset-repository.js +38 -0
- package/dist/src/workflows/service/workflow-run-service.d.ts +1 -0
- package/dist/src/workflows/service/workflow-run-service.js +107 -22
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +1 -0
- package/dist/src/workflows/service/workflow-writeback-service.d.ts +9 -0
- package/dist/src/workflows/service/workflow-writeback-service.js +106 -0
- package/package.json +6 -6
- package/dist/gateway/static/root/assets/agents-CjhgfuVJ.js +0 -68
- package/dist/gateway/static/root/assets/apps-page-CjmlGB5V.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-4m6Ey6wG.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-CAGCYx8U.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CKfLsxTI.js +0 -7
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-CpipKNqX.js +0 -3
- package/dist/gateway/static/root/assets/channels-settings-Bvq-O4pt.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CrMld2l7.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-CSQRzaVn.js +0 -2
- package/dist/gateway/static/root/assets/directory-picker-path-field-DlJY90TM.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BhqItS_s.js +0 -1
- package/dist/gateway/static/root/assets/index-DLhvsU9B.css +0 -2
- package/dist/gateway/static/root/assets/index-_cuTcWjB.js +0 -107
- package/dist/gateway/static/root/assets/local-app-workbench-page-DWjTmzxw.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-BA5efZ8B.js +0 -2
- package/dist/gateway/static/root/assets/messages-ctG2e-ix.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-CkHXVmKP.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-DCqet9-L.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-D0t_AjzG.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BUWPoBvw.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-vLhrrM3m.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-OP1y0Y8M.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Cxc-Ejl5.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-ZOqC6-aA.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DwvC3Iuf.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-DCRB-5q-.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-CoiedRuA.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-overlay-CGdT22un.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-BwaU1RqI.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-DHYmh9G7.js +0 -5
|
@@ -28,11 +28,6 @@ import "../automations/index.js";
|
|
|
28
28
|
import { ProjectService } from "../projects/project-service.js";
|
|
29
29
|
import { resolveProjectAgentId } from "../projects/project-agent.js";
|
|
30
30
|
import "../projects/index.js";
|
|
31
|
-
import { sanitizeTunnelConfig } from "../tunnel/tunnel-config.js";
|
|
32
|
-
import { wireTunnelEventsToGateway } from "../tunnel/gateway-lifecycle.js";
|
|
33
|
-
import { buckets } from "./rate-limit/buckets.js";
|
|
34
|
-
import { isGatewayStrictSecurityEnabled } from "./rate-limit/env-flags.js";
|
|
35
|
-
import "./rate-limit/index.js";
|
|
36
31
|
import { TaskApplicationService } from "../tasks/task-application-service.js";
|
|
37
32
|
import { ProactiveScenarioService } from "../proactive/scenarios/service.js";
|
|
38
33
|
import { TaskOutboxDispatcher } from "../tasks/task-outbox-dispatcher.js";
|
|
@@ -55,17 +50,18 @@ import { registerClarifyBridge } from "./clarify-runtime.js";
|
|
|
55
50
|
import { ChannelManager } from "../channels/manager.js";
|
|
56
51
|
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
57
52
|
import "../config/index.js";
|
|
58
|
-
import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
|
|
59
|
-
import "../knowledge/index.js";
|
|
60
|
-
import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
|
|
61
|
-
import { ConnectedSourceChangePublisher } from "../connectors/source-change-publisher.js";
|
|
62
|
-
import { startConnectorSupervisor } from "../connectors/supervisor.js";
|
|
63
53
|
import { DiscussionService } from "../discussions/service.js";
|
|
64
54
|
import { DiscussionOrganizer } from "../discussions/organizer.js";
|
|
65
55
|
import { DiscussionLiveWorker } from "../discussions/live-worker.js";
|
|
66
56
|
import { DiscussionOrganizerWorker } from "../discussions/organizer-worker.js";
|
|
67
57
|
import { DiscussionSealer } from "../discussions/sealer.js";
|
|
68
58
|
import "../discussions/index.js";
|
|
59
|
+
import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
|
|
60
|
+
import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
|
|
61
|
+
import "../knowledge/index.js";
|
|
62
|
+
import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
|
|
63
|
+
import { ConnectedSourceChangePublisher } from "../connectors/source-change-publisher.js";
|
|
64
|
+
import { startConnectorSupervisor } from "../connectors/supervisor.js";
|
|
69
65
|
import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
|
|
70
66
|
import "../endpoint-tools/index.js";
|
|
71
67
|
import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
|
|
@@ -83,9 +79,14 @@ import "./heartbeat/index.js";
|
|
|
83
79
|
import { EphemeralSideChatManager } from "./side-chat/manager.js";
|
|
84
80
|
import { SideChatRunService } from "./side-chat/run-service.js";
|
|
85
81
|
import "./side-chat/index.js";
|
|
82
|
+
import { wireTunnelEventsToGateway } from "../tunnel/gateway-lifecycle.js";
|
|
86
83
|
import { stopTailscaleExposure } from "./tailscale-lifecycle.js";
|
|
87
84
|
import { getExposureManager } from "../remote-access/exposure-manager.js";
|
|
85
|
+
import { sanitizeTunnelConfig } from "../tunnel/tunnel-config.js";
|
|
88
86
|
import { assertGatewayAuthNotKnownWeak } from "./security/known-weak-secrets.js";
|
|
87
|
+
import { buckets } from "./rate-limit/buckets.js";
|
|
88
|
+
import { isGatewayStrictSecurityEnabled } from "./rate-limit/env-flags.js";
|
|
89
|
+
import "./rate-limit/index.js";
|
|
89
90
|
import { assertGatewayRuntimeConfig } from "./runtime-config.js";
|
|
90
91
|
import { auditGatewayConfig } from "./security/audit.js";
|
|
91
92
|
import { getXopcCloudCatalogCoordinator } from "../providers/xopc-cloud-catalog-coordinator.js";
|
|
@@ -183,6 +184,7 @@ var GatewayService = class {
|
|
|
183
184
|
workflowRunServiceInstance = null;
|
|
184
185
|
taskRunDispatcher = null;
|
|
185
186
|
taskRunDispatchTimer = null;
|
|
187
|
+
managedComposioEventPoller;
|
|
186
188
|
mobileNotifications = null;
|
|
187
189
|
connectorSupervisor = null;
|
|
188
190
|
connectorLearningCoordinator = null;
|
|
@@ -941,6 +943,17 @@ var GatewayService = class {
|
|
|
941
943
|
getMemoryManager: () => this.agentService.getMemoryManager(),
|
|
942
944
|
emit: (type, payload) => this.emit(type, payload)
|
|
943
945
|
});
|
|
946
|
+
this.managedComposioEventPoller = new ManagedComposioEventPoller({
|
|
947
|
+
getConfig: () => this.config,
|
|
948
|
+
triggerAutomation: (event) => this.automationService.triggerEvent(event),
|
|
949
|
+
requestLearning: (toolkit) => {
|
|
950
|
+
this.requestConnectorLearningForToolkit(toolkit);
|
|
951
|
+
},
|
|
952
|
+
setLearningPaused: (connectionId, paused) => {
|
|
953
|
+
this.setConnectorLearningPaused(connectionId, paused);
|
|
954
|
+
}
|
|
955
|
+
});
|
|
956
|
+
this.managedComposioEventPoller.start();
|
|
944
957
|
this.connectedSourceChangePublisher = new ConnectedSourceChangePublisher(this.proactive);
|
|
945
958
|
this.connectedSourceChangePublisher.start();
|
|
946
959
|
this.connectedKnowledgeCoordinator = startConnectedKnowledgeCoordinator({ resolvePipelineOptions: () => ({
|
|
@@ -1096,6 +1109,8 @@ var GatewayService = class {
|
|
|
1096
1109
|
this.connectorSupervisor = null;
|
|
1097
1110
|
this.connectorLearningCoordinator?.stop();
|
|
1098
1111
|
this.connectorLearningCoordinator = null;
|
|
1112
|
+
this.managedComposioEventPoller?.stop();
|
|
1113
|
+
this.managedComposioEventPoller = void 0;
|
|
1099
1114
|
this.connectedSourceChangePublisher?.stop();
|
|
1100
1115
|
this.connectedSourceChangePublisher = null;
|
|
1101
1116
|
this.connectedKnowledgeCoordinator?.stop();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, shouldSilence, stripHeartbeatToken } from "./tokens.js";
|
|
2
|
+
import { appendCronEventLines } from "./event-prompt.js";
|
|
2
3
|
import { isWithinActiveHours } from "./active-hours.js";
|
|
3
4
|
import { isHeartbeatContentEmpty } from "./content-check.js";
|
|
4
|
-
import { appendCronEventLines } from "./event-prompt.js";
|
|
5
5
|
import { createHeartbeatWake } from "./wake.js";
|
|
6
6
|
export { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, appendCronEventLines, createHeartbeatWake, isHeartbeatContentEmpty, isWithinActiveHours, shouldSilence, stripHeartbeatToken };
|
|
@@ -8,7 +8,7 @@ function partitionAttachmentsByReference(note) {
|
|
|
8
8
|
const attachments = note.attachments ?? [];
|
|
9
9
|
const kept = [];
|
|
10
10
|
const removed = [];
|
|
11
|
-
for (const attachment of attachments) if (referenced.has(attachment.id)) kept.push(attachment);
|
|
11
|
+
for (const attachment of attachments) if (attachment.retainWithoutReference || referenced.has(attachment.id)) kept.push(attachment);
|
|
12
12
|
else removed.push(attachment);
|
|
13
13
|
return {
|
|
14
14
|
kept,
|
|
@@ -48,6 +48,7 @@ export declare class NotesService {
|
|
|
48
48
|
buffer: Buffer;
|
|
49
49
|
mimeType: string;
|
|
50
50
|
duration?: number;
|
|
51
|
+
retainWithoutReference?: boolean;
|
|
51
52
|
}): Promise<NoteAttachment | null>;
|
|
52
53
|
removeAttachment(noteId: string, attachmentId: string): Promise<boolean>;
|
|
53
54
|
getAttachmentPath(noteId: string, attachmentId: string): Promise<{
|
|
@@ -474,7 +474,8 @@ var NotesService = class {
|
|
|
474
474
|
fileName: file.name,
|
|
475
475
|
size,
|
|
476
476
|
relativePath,
|
|
477
|
-
duration: file.duration
|
|
477
|
+
duration: file.duration,
|
|
478
|
+
retainWithoutReference: file.retainWithoutReference
|
|
478
479
|
};
|
|
479
480
|
const attachments = [...note.attachments || [], attachment];
|
|
480
481
|
const kind = note.kind === "thought" && attachment.type === "audio" ? "voice" : note.kind === "thought" ? "media" : note.kind;
|
|
@@ -45,6 +45,8 @@ export interface NoteAttachment {
|
|
|
45
45
|
relativePath: string;
|
|
46
46
|
transcript?: string;
|
|
47
47
|
duration?: number;
|
|
48
|
+
/** Retained by a structured note feature even when absent from user-owned Markdown. */
|
|
49
|
+
retainWithoutReference?: boolean;
|
|
48
50
|
}
|
|
49
51
|
export interface NoteAiMeta {
|
|
50
52
|
summary?: string;
|
|
@@ -1,63 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
name: string;
|
|
4
|
-
availability: 'available' | 'unavailable';
|
|
5
|
-
kind: 'language' | 'image' | 'stt' | 'tts';
|
|
6
|
-
input: Array<'text' | 'image' | 'audio'>;
|
|
7
|
-
output: Array<'text' | 'image' | 'audio'>;
|
|
8
|
-
operations: Array<'chat.completions' | 'responses' | 'images.generate' | 'images.edit' | 'audio.transcription' | 'audio.speech'>;
|
|
9
|
-
reasoning: boolean;
|
|
10
|
-
contextWindow: number;
|
|
11
|
-
maxOutputTokens: number | null;
|
|
12
|
-
stability?: 'stable' | 'preview' | 'deprecated';
|
|
13
|
-
priority?: number;
|
|
14
|
-
tier?: string;
|
|
15
|
-
bestEffort?: boolean;
|
|
16
|
-
imageGeneration?: {
|
|
17
|
-
maxCount: number;
|
|
18
|
-
sizes: string[];
|
|
19
|
-
aspectRatios?: string[];
|
|
20
|
-
qualities: Array<'low' | 'medium' | 'high' | 'auto'>;
|
|
21
|
-
formats: Array<'png' | 'jpeg' | 'webp'>;
|
|
22
|
-
backgrounds: Array<'transparent' | 'opaque' | 'auto'>;
|
|
23
|
-
maxInputImages: number;
|
|
24
|
-
};
|
|
25
|
-
stt?: {
|
|
26
|
-
inputFormats: string[];
|
|
27
|
-
maxBytes: number;
|
|
28
|
-
maxDurationSeconds: number;
|
|
29
|
-
languages: string[];
|
|
30
|
-
languageHint: boolean;
|
|
31
|
-
prompt: boolean;
|
|
32
|
-
timestamps: Array<'segment' | 'word'>;
|
|
33
|
-
diarization: boolean;
|
|
34
|
-
};
|
|
35
|
-
tts?: {
|
|
36
|
-
maxCharacters: number;
|
|
37
|
-
languages: string[];
|
|
38
|
-
outputFormats: Array<'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm'>;
|
|
39
|
-
streaming: boolean;
|
|
40
|
-
speed: boolean;
|
|
41
|
-
pitch: boolean;
|
|
42
|
-
instructions: boolean;
|
|
43
|
-
defaultVoice?: string;
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
export interface CatalogSource {
|
|
47
|
-
providerId: string;
|
|
48
|
-
baseUrl: string;
|
|
49
|
-
api: 'openai-completions' | 'openai-responses';
|
|
50
|
-
etag: string | null;
|
|
51
|
-
recommendedModel: string | null;
|
|
52
|
-
recommended?: Partial<Record<'vision' | 'image-generation' | 'stt' | 'tts', string>>;
|
|
53
|
-
lastSuccessAt: number;
|
|
54
|
-
models: CatalogModel[];
|
|
55
|
-
}
|
|
56
|
-
export interface ModelCatalogSnapshot {
|
|
57
|
-
sources: Record<string, CatalogSource>;
|
|
58
|
-
}
|
|
59
|
-
export type CatalogSourceOrigin = 'memory' | 'disk' | 'network';
|
|
60
|
-
export type AvailableCatalogModel = Omit<CatalogModel, 'availability'>;
|
|
1
|
+
import type { AvailableCatalogModel, CatalogSource, CatalogSourceOrigin, ModelCatalogSnapshot } from './model-catalog-types.js';
|
|
2
|
+
export type { AvailableCatalogModel, CatalogModel, CatalogSource, CatalogSourceOrigin, ModelCatalogSnapshot, } from './model-catalog-types.js';
|
|
61
3
|
export declare class ModelCatalogStore {
|
|
62
4
|
private sources;
|
|
63
5
|
private origins;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export interface CatalogModel {
|
|
2
|
+
id: string;
|
|
3
|
+
name: string;
|
|
4
|
+
availability: 'available' | 'unavailable';
|
|
5
|
+
kind: 'language' | 'image' | 'stt' | 'tts';
|
|
6
|
+
input: Array<'text' | 'image' | 'audio'>;
|
|
7
|
+
output: Array<'text' | 'image' | 'audio'>;
|
|
8
|
+
operations: Array<'chat.completions' | 'responses' | 'images.generate' | 'images.edit' | 'audio.transcription' | 'audio.speech'>;
|
|
9
|
+
reasoning: boolean;
|
|
10
|
+
contextWindow: number;
|
|
11
|
+
maxOutputTokens: number | null;
|
|
12
|
+
stability?: 'stable' | 'preview' | 'deprecated';
|
|
13
|
+
priority?: number;
|
|
14
|
+
tier?: string;
|
|
15
|
+
bestEffort?: boolean;
|
|
16
|
+
imageGeneration?: {
|
|
17
|
+
maxCount: number;
|
|
18
|
+
sizes: string[];
|
|
19
|
+
aspectRatios?: string[];
|
|
20
|
+
qualities: Array<'low' | 'medium' | 'high' | 'auto'>;
|
|
21
|
+
formats: Array<'png' | 'jpeg' | 'webp'>;
|
|
22
|
+
backgrounds: Array<'transparent' | 'opaque' | 'auto'>;
|
|
23
|
+
maxInputImages: number;
|
|
24
|
+
};
|
|
25
|
+
stt?: {
|
|
26
|
+
inputFormats: string[];
|
|
27
|
+
maxBytes: number;
|
|
28
|
+
maxDurationSeconds: number;
|
|
29
|
+
languages: string[];
|
|
30
|
+
languageHint: boolean;
|
|
31
|
+
prompt: boolean;
|
|
32
|
+
timestamps: Array<'segment' | 'word'>;
|
|
33
|
+
diarization: boolean;
|
|
34
|
+
};
|
|
35
|
+
tts?: {
|
|
36
|
+
maxCharacters: number;
|
|
37
|
+
languages: string[];
|
|
38
|
+
outputFormats: Array<'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm'>;
|
|
39
|
+
streaming: boolean;
|
|
40
|
+
speed: boolean;
|
|
41
|
+
pitch: boolean;
|
|
42
|
+
instructions: boolean;
|
|
43
|
+
defaultVoice?: string;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface CatalogSource {
|
|
47
|
+
providerId: string;
|
|
48
|
+
baseUrl: string;
|
|
49
|
+
api: 'openai-completions' | 'openai-responses';
|
|
50
|
+
etag: string | null;
|
|
51
|
+
recommendedModel: string | null;
|
|
52
|
+
recommended?: Partial<Record<'vision' | 'image-generation' | 'stt' | 'tts', string>>;
|
|
53
|
+
lastSuccessAt: number;
|
|
54
|
+
models: CatalogModel[];
|
|
55
|
+
}
|
|
56
|
+
export interface ModelCatalogSnapshot {
|
|
57
|
+
sources: Record<string, CatalogSource>;
|
|
58
|
+
}
|
|
59
|
+
export type CatalogSourceOrigin = 'memory' | 'disk' | 'network';
|
|
60
|
+
export type AvailableCatalogModel = Omit<CatalogModel, 'availability'>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CredentialResolver } from '../auth/credentials.js';
|
|
2
|
+
export interface ProviderDisconnectOptions {
|
|
3
|
+
resolver?: Pick<CredentialResolver, 'deleteProviderCredential'>;
|
|
4
|
+
invalidateAuth?: () => void;
|
|
5
|
+
clearCloudCatalog?: () => Promise<void>;
|
|
6
|
+
refreshModels?: () => void;
|
|
7
|
+
evictRunners?: () => void;
|
|
8
|
+
withLock?: <T>(providerId: string, operation: () => Promise<T>) => Promise<T>;
|
|
9
|
+
}
|
|
10
|
+
/** Low-level disconnect operation. Cloud callers must inject catalog cleanup. */
|
|
11
|
+
export declare function disconnectProviderCore(providerId: string, options?: ProviderDisconnectOptions): Promise<void>;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createLogger } from "../utils/logger/index.js";
|
|
2
|
+
import { init_logger } from "../utils/logger.js";
|
|
3
|
+
import { getModelRegistry, init_model_registry } from "./model-registry.js";
|
|
4
|
+
import { init_oauth_provider_lock, withOAuthProviderLock } from "../auth/oauth-provider-lock.js";
|
|
5
|
+
import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
6
|
+
import { getProviderAuthService, init_provider_auth_service } from "./provider-auth-service.js";
|
|
7
|
+
import { evictAllEmbeddedSessionRunners } from "../agent/embedded/session-runner.js";
|
|
8
|
+
//#region src/providers/provider-disconnect-core.ts
|
|
9
|
+
init_credentials();
|
|
10
|
+
init_oauth_provider_lock();
|
|
11
|
+
init_logger();
|
|
12
|
+
init_model_registry();
|
|
13
|
+
init_provider_auth_service();
|
|
14
|
+
const log = createLogger("ProviderDisconnect");
|
|
15
|
+
/** Low-level disconnect operation. Cloud callers must inject catalog cleanup. */
|
|
16
|
+
async function disconnectProviderCore(providerId, options = {}) {
|
|
17
|
+
const provider = providerId.trim().toLowerCase();
|
|
18
|
+
if (!provider) throw new Error("Provider id is required");
|
|
19
|
+
const resolver = options.resolver ?? new CredentialResolver();
|
|
20
|
+
await (options.withLock ?? ((id, operation) => withOAuthProviderLock(id, operation)))(provider, async () => {
|
|
21
|
+
await resolver.deleteProviderCredential(provider);
|
|
22
|
+
(options.invalidateAuth ?? (() => getProviderAuthService().invalidate()))();
|
|
23
|
+
if (provider === "xopc-cloud") {
|
|
24
|
+
if (!options.clearCloudCatalog) throw new Error("XOPC Cloud disconnect requires a catalog cleanup hook");
|
|
25
|
+
await options.clearCloudCatalog();
|
|
26
|
+
} else (options.refreshModels ?? (() => getModelRegistry().refresh()))();
|
|
27
|
+
(options.evictRunners ?? (() => evictAllEmbeddedSessionRunners("provider_disconnected")))();
|
|
28
|
+
});
|
|
29
|
+
log.info({
|
|
30
|
+
provider,
|
|
31
|
+
phase: "provider_revoked"
|
|
32
|
+
}, `Disconnected provider: ${provider}`);
|
|
33
|
+
}
|
|
34
|
+
//#endregion
|
|
35
|
+
export { disconnectProviderCore };
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
resolver?: Pick<CredentialResolver, 'deleteProviderCredential'>;
|
|
4
|
-
invalidateAuth?: () => void;
|
|
5
|
-
clearCloudCatalog?: () => Promise<void>;
|
|
6
|
-
refreshModels?: () => void;
|
|
7
|
-
evictRunners?: () => void;
|
|
8
|
-
withLock?: <T>(providerId: string, operation: () => Promise<T>) => Promise<T>;
|
|
9
|
-
}
|
|
1
|
+
import { type ProviderDisconnectOptions } from './provider-disconnect-core.js';
|
|
2
|
+
export type { ProviderDisconnectOptions } from './provider-disconnect-core.js';
|
|
10
3
|
export declare function disconnectProvider(providerId: string, options?: ProviderDisconnectOptions): Promise<void>;
|
|
11
|
-
export {};
|
|
@@ -1,33 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { init_logger } from "../utils/logger.js";
|
|
3
|
-
import { getModelRegistry, init_model_registry } from "./model-registry.js";
|
|
4
|
-
import { init_oauth_provider_lock, withOAuthProviderLock } from "../auth/oauth-provider-lock.js";
|
|
5
|
-
import { CredentialResolver, init_credentials } from "../auth/credentials.js";
|
|
6
|
-
import { getProviderAuthService, init_provider_auth_service } from "./provider-auth-service.js";
|
|
7
|
-
import { evictAllEmbeddedSessionRunners } from "../agent/embedded/session-runner.js";
|
|
1
|
+
import { disconnectProviderCore } from "./provider-disconnect-core.js";
|
|
8
2
|
import { getXopcCloudCatalogCoordinator } from "./xopc-cloud-catalog-coordinator.js";
|
|
9
3
|
//#region src/providers/provider-disconnect.ts
|
|
10
|
-
init_credentials();
|
|
11
|
-
init_oauth_provider_lock();
|
|
12
|
-
init_logger();
|
|
13
|
-
init_model_registry();
|
|
14
|
-
init_provider_auth_service();
|
|
15
|
-
const log = createLogger("ProviderDisconnect");
|
|
16
4
|
async function disconnectProvider(providerId, options = {}) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
await (options.withLock ?? ((id, operation) => withOAuthProviderLock(id, operation)))(provider, async () => {
|
|
21
|
-
await resolver.deleteProviderCredential(provider);
|
|
22
|
-
(options.invalidateAuth ?? (() => getProviderAuthService().invalidate()))();
|
|
23
|
-
if (provider === "xopc-cloud") await (options.clearCloudCatalog ?? (() => getXopcCloudCatalogCoordinator().clear("revoke")))();
|
|
24
|
-
else (options.refreshModels ?? (() => getModelRegistry().refresh()))();
|
|
25
|
-
(options.evictRunners ?? (() => evictAllEmbeddedSessionRunners("provider_disconnected")))();
|
|
5
|
+
return disconnectProviderCore(providerId, {
|
|
6
|
+
...options,
|
|
7
|
+
clearCloudCatalog: options.clearCloudCatalog ?? (() => getXopcCloudCatalogCoordinator().clear("revoke"))
|
|
26
8
|
});
|
|
27
|
-
log.info({
|
|
28
|
-
provider,
|
|
29
|
-
phase: "provider_revoked"
|
|
30
|
-
}, `Disconnected provider: ${provider}`);
|
|
31
9
|
}
|
|
32
10
|
//#endregion
|
|
33
11
|
export { disconnectProvider };
|
|
@@ -5,6 +5,7 @@ import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-
|
|
|
5
5
|
import { getModelRegistry, init_model_registry } from "./model-registry.js";
|
|
6
6
|
import { init_oauth_provider_lock, withOAuthProviderLock } from "../auth/oauth-provider-lock.js";
|
|
7
7
|
import { reloadImageGenerationProviders } from "../agent/image/generation/provider-registry.js";
|
|
8
|
+
import { disconnectProviderCore } from "./provider-disconnect-core.js";
|
|
8
9
|
import { XopcCloudModelSource } from "./xopc-cloud-model-source.js";
|
|
9
10
|
//#region src/providers/xopc-cloud-catalog-coordinator.ts
|
|
10
11
|
init_oauth_provider_lock();
|
|
@@ -36,8 +37,7 @@ var XopcCloudCatalogCoordinator = class {
|
|
|
36
37
|
this.reloadImageProviders = options.reloadImageProviders ?? reloadImageGenerationProviders;
|
|
37
38
|
this.withLock = options.withLock ?? ((operation) => withOAuthProviderLock("xopc-cloud", operation));
|
|
38
39
|
this.onPermanentAuthFailure = options.onPermanentAuthFailure ?? (async () => {
|
|
39
|
-
|
|
40
|
-
await disconnectProvider("xopc-cloud");
|
|
40
|
+
await disconnectProviderCore("xopc-cloud", { clearCloudCatalog: () => this.clear("invalid-grant") });
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
async hydrate() {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
CREATE TABLE workflow_context_snapshots (
|
|
2
|
+
snapshot_id TEXT PRIMARY KEY,
|
|
3
|
+
trace_id TEXT NOT NULL UNIQUE,
|
|
4
|
+
run_id TEXT NOT NULL,
|
|
5
|
+
project_id TEXT,
|
|
6
|
+
selected_items_json TEXT NOT NULL,
|
|
7
|
+
estimated_tokens INTEGER NOT NULL DEFAULT 0,
|
|
8
|
+
content_hash TEXT NOT NULL,
|
|
9
|
+
created_at INTEGER NOT NULL
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
CREATE INDEX idx_workflow_context_snapshots_run
|
|
13
|
+
ON workflow_context_snapshots(run_id, created_at DESC);
|
|
14
|
+
CREATE INDEX idx_workflow_context_snapshots_project
|
|
15
|
+
ON workflow_context_snapshots(project_id, created_at DESC);
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
CREATE TABLE project_workflow_presets (
|
|
2
|
+
project_id TEXT NOT NULL,
|
|
3
|
+
definition_id TEXT NOT NULL,
|
|
4
|
+
context_refs_json TEXT NOT NULL DEFAULT '[]',
|
|
5
|
+
created_at INTEGER NOT NULL,
|
|
6
|
+
updated_at INTEGER NOT NULL,
|
|
7
|
+
PRIMARY KEY (project_id, definition_id),
|
|
8
|
+
FOREIGN KEY (project_id) REFERENCES projects(project_id) ON DELETE CASCADE
|
|
9
|
+
);
|
|
10
|
+
|
|
11
|
+
CREATE INDEX idx_project_workflow_presets_updated
|
|
12
|
+
ON project_workflow_presets(project_id, updated_at DESC);
|
|
@@ -3,7 +3,7 @@ import type { ApplyMigrationsOptions } from './types.js';
|
|
|
3
3
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
4
4
|
export declare const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
5
5
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
6
|
-
export declare const XOPC_DB_SCHEMA_VERSION =
|
|
6
|
+
export declare const XOPC_DB_SCHEMA_VERSION = 125;
|
|
7
7
|
export declare function resolveMigrationsDir(override?: string): string;
|
|
8
8
|
/**
|
|
9
9
|
* Apply sequential SQL migrations from (currentVersion + 1) through targetVersion.
|
|
@@ -12,7 +12,7 @@ const log = createLogger("Sqlite:Migrations");
|
|
|
12
12
|
/** Baseline schema version applied from schema.sql on first open. */
|
|
13
13
|
const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
14
14
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
15
|
-
const XOPC_DB_SCHEMA_VERSION =
|
|
15
|
+
const XOPC_DB_SCHEMA_VERSION = 125;
|
|
16
16
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
17
17
|
function backupBeforeTaskCutover(db, databasePath) {
|
|
18
18
|
db.exec("PRAGMA wal_checkpoint(FULL)");
|
|
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
|
|
|
57
57
|
* Each step runs in its own transaction and updates schema_meta on success.
|
|
58
58
|
*/
|
|
59
59
|
function applyPendingMigrations(db, options = {}) {
|
|
60
|
-
const targetVersion = options.targetVersion ??
|
|
60
|
+
const targetVersion = options.targetVersion ?? 125;
|
|
61
61
|
let currentVersion = readSchemaVersion(db);
|
|
62
62
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
63
63
|
if (currentVersion >= targetVersion) return currentVersion;
|
|
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
94
94
|
}
|
|
95
95
|
/** Inspect schema version without mutating the database. */
|
|
96
96
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
97
|
-
const appVersion = options.targetVersion ??
|
|
97
|
+
const appVersion = options.targetVersion ?? 125;
|
|
98
98
|
const dbVersion = readSchemaVersion(db);
|
|
99
99
|
if (dbVersion > appVersion) return {
|
|
100
100
|
dbVersion,
|
|
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
|
|
|
19
19
|
export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
20
20
|
|
|
21
21
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
22
|
-
export const XOPC_DB_SCHEMA_VERSION =
|
|
22
|
+
export const XOPC_DB_SCHEMA_VERSION = 125;
|
|
23
23
|
|
|
24
24
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
25
25
|
|
|
@@ -1,20 +1,12 @@
|
|
|
1
|
-
import type { HomeResponse } from '@xopcai/gateway-contract';
|
|
2
|
-
import { type AutomationRun } from '../automations/index.js';
|
|
1
|
+
import type { HomeAttention, HomeDecision, HomeResponse } from '@xopcai/gateway-contract';
|
|
3
2
|
import type { AutomationService } from '../automations/service/automation-service.js';
|
|
4
3
|
import type { Config } from '../config/schema.js';
|
|
5
|
-
import type { NotesService } from '../notes/service.js';
|
|
6
4
|
import type { ProactiveInboxService } from '../proactive/inbox/service.js';
|
|
7
5
|
import type { ProjectService } from '../projects/project-service.js';
|
|
8
|
-
import type { SessionIndex } from '../session/manager.js';
|
|
9
6
|
import type { WorkflowRunSummary } from '../workflows/domain/index.js';
|
|
10
7
|
import type { WorkflowRunService } from '../workflows/service/workflow-run-service.js';
|
|
8
|
+
import { type TaskAggregate } from './task-repository.js';
|
|
11
9
|
import { type TaskReadModel } from './task-read-model-projector.js';
|
|
12
|
-
type HomeDecision = HomeResponse['decisions'][number];
|
|
13
|
-
type HomeAttention = HomeResponse['attention'][number];
|
|
14
|
-
type HomeBriefingWin = HomeResponse['briefing']['wins'][number];
|
|
15
|
-
type HomeAutomation = HomeResponse['upcomingAutomations'][number];
|
|
16
|
-
type HomeFocusItem = HomeResponse['focusItems'][number];
|
|
17
|
-
type HomeRecentTask = HomeResponse['recentTasks'][number];
|
|
18
10
|
type HomeWorkflowRun = {
|
|
19
11
|
id: string;
|
|
20
12
|
definitionId: string;
|
|
@@ -26,141 +18,34 @@ type HomeWorkflowRun = {
|
|
|
26
18
|
completedAtMs?: number;
|
|
27
19
|
metrics: WorkflowRunSummary['metrics'];
|
|
28
20
|
};
|
|
29
|
-
type
|
|
21
|
+
type HomeAutomation = {
|
|
30
22
|
id: string;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
startedAtMs?: number;
|
|
36
|
-
endedAtMs?: number;
|
|
37
|
-
error?: string;
|
|
38
|
-
summary?: string;
|
|
39
|
-
sessionKey?: string;
|
|
40
|
-
workflowRunId?: string;
|
|
41
|
-
};
|
|
42
|
-
type HomeSnapshot = HomeResponse & {
|
|
43
|
-
recentlyOpened: unknown[];
|
|
44
|
-
inboxCount: number;
|
|
45
|
-
pendingTasks: unknown[];
|
|
46
|
-
pendingTaskCount: number;
|
|
47
|
-
recentSessions: unknown[];
|
|
48
|
-
activeAgent: {
|
|
49
|
-
id: string;
|
|
50
|
-
name?: string;
|
|
51
|
-
description?: string;
|
|
52
|
-
};
|
|
53
|
-
gateway: Record<string, unknown>;
|
|
54
|
-
recentAutomationRuns: HomeAutomationRun[];
|
|
23
|
+
name?: string;
|
|
24
|
+
trigger: string;
|
|
25
|
+
action: string;
|
|
26
|
+
nextRunAt: string;
|
|
55
27
|
};
|
|
56
28
|
interface HomeGatewayPort {
|
|
57
|
-
readonly notesServiceInstance: NotesService;
|
|
58
|
-
readonly sessions: Pick<SessionIndex, 'listSessions'> & {
|
|
59
|
-
getActiveRun(sessionKey: string): {
|
|
60
|
-
active: boolean;
|
|
61
|
-
runId?: string;
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
29
|
readonly currentConfig: Config;
|
|
65
30
|
readonly automationServiceInstance: AutomationService;
|
|
66
31
|
readonly projects: ProjectService;
|
|
67
32
|
readonly proactiveInbox: ProactiveInboxService;
|
|
68
33
|
createWorkflowRunService(): WorkflowRunService;
|
|
69
|
-
getHealth(): {
|
|
70
|
-
status: string;
|
|
71
|
-
ready: boolean;
|
|
72
|
-
httpListening: boolean;
|
|
73
|
-
version: string;
|
|
74
|
-
uptime: number;
|
|
75
|
-
};
|
|
76
34
|
}
|
|
77
|
-
export declare function decisionFromTask(model: TaskReadModel, projectName?: string): HomeDecision | null;
|
|
78
|
-
export declare function
|
|
79
|
-
locale?: string;
|
|
80
|
-
decisions: HomeDecision[];
|
|
81
|
-
attention: HomeAttention[];
|
|
82
|
-
activeWorkflowCount: number;
|
|
83
|
-
activeTaskCount: number;
|
|
84
|
-
wins: HomeBriefingWin[];
|
|
85
|
-
nextScheduled?: HomeAutomation;
|
|
86
|
-
nowMs: number;
|
|
87
|
-
}): {
|
|
88
|
-
generatedAt: number;
|
|
89
|
-
summary: string;
|
|
90
|
-
focus: {
|
|
91
|
-
id: string;
|
|
92
|
-
kind: "task" | "agent_judgment" | "connector_approval";
|
|
93
|
-
title: string;
|
|
94
|
-
reason: "external" | "paused" | "blocked" | "dependency" | "user_input" | "approval_required" | "overdue" | "needs_input" | "user_approval" | "scheduled" | "retry" | "due_soon" | "decision_needed";
|
|
95
|
-
urgency: "now" | "soon";
|
|
96
|
-
href: string;
|
|
97
|
-
updatedAt: number;
|
|
98
|
-
detail?: string;
|
|
99
|
-
projectId?: string;
|
|
100
|
-
projectName?: string;
|
|
101
|
-
judgment?: {
|
|
102
|
-
inboxItemId: string;
|
|
103
|
-
whyNow: string;
|
|
104
|
-
impact: string;
|
|
105
|
-
workDone: string;
|
|
106
|
-
recommendation: string;
|
|
107
|
-
confidence: number;
|
|
108
|
-
valueScore?: number;
|
|
109
|
-
disposition?: "show_in_work" | "request_approval" | "auto_execute";
|
|
110
|
-
dispositionReason?: string;
|
|
111
|
-
actionStatus?: "failed" | "completed" | "rejected" | "pending" | "approval_required" | "not_authorized" | "executing";
|
|
112
|
-
proposedActionTitle?: string;
|
|
113
|
-
actionError?: string;
|
|
114
|
-
decision?: {
|
|
115
|
-
question: string;
|
|
116
|
-
options: {
|
|
117
|
-
id: string;
|
|
118
|
-
label: string;
|
|
119
|
-
consequence: string;
|
|
120
|
-
}[];
|
|
121
|
-
};
|
|
122
|
-
};
|
|
123
|
-
response?: {
|
|
124
|
-
kind: "connector_approval";
|
|
125
|
-
approvalId: string;
|
|
126
|
-
};
|
|
127
|
-
}[];
|
|
128
|
-
progress: {
|
|
129
|
-
activeWorkflowCount: number;
|
|
130
|
-
activeTaskCount: number;
|
|
131
|
-
movingCount: number;
|
|
132
|
-
};
|
|
133
|
-
wins: {
|
|
134
|
-
id: string;
|
|
135
|
-
kind: "task" | "workflow_run" | "automation_run";
|
|
136
|
-
title: string;
|
|
137
|
-
href: string;
|
|
138
|
-
completedAt: number;
|
|
139
|
-
}[];
|
|
140
|
-
nextScheduled: {
|
|
141
|
-
id: string;
|
|
142
|
-
trigger: string;
|
|
143
|
-
action: string;
|
|
144
|
-
nextRunAt: string;
|
|
145
|
-
name?: string;
|
|
146
|
-
};
|
|
147
|
-
};
|
|
148
|
-
export declare function buildHomeFocusItems(input: {
|
|
35
|
+
export declare function decisionFromTask(model: TaskReadModel, projectName?: string, locale?: string): HomeDecision | null;
|
|
36
|
+
export declare function buildHomeWorkbench(input: {
|
|
149
37
|
locale?: string;
|
|
150
38
|
decisions: HomeDecision[];
|
|
151
39
|
attention: HomeAttention[];
|
|
152
40
|
activeWorkflowRuns: HomeWorkflowRun[];
|
|
153
|
-
runningTasks:
|
|
154
|
-
wins: HomeBriefingWin[];
|
|
41
|
+
runningTasks: TaskAggregate[];
|
|
155
42
|
scheduled: HomeAutomation[];
|
|
156
|
-
recentTasks: HomeRecentTask[];
|
|
157
|
-
inboxCount: number;
|
|
158
43
|
nowMs: number;
|
|
159
|
-
}):
|
|
44
|
+
}): Pick<HomeResponse, 'needsUser' | 'background' | 'backgroundCount'>;
|
|
160
45
|
export declare class HomeQueryService {
|
|
161
46
|
#private;
|
|
162
47
|
private readonly service;
|
|
163
48
|
constructor(service: HomeGatewayPort);
|
|
164
|
-
getSnapshot(locale?: string): Promise<
|
|
49
|
+
getSnapshot(locale?: string): Promise<HomeResponse>;
|
|
165
50
|
}
|
|
166
51
|
export {};
|