@xopcai/xopc 0.0.249 → 0.0.251
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-B759R_qf.js → activity-store-DfBjTSo9.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BUu7EnwM.js → agent-avatar-dicebear-Bo_dmLv8.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-kILWelNb.js +1 -0
- package/dist/gateway/static/root/assets/{agents-DK9HjHO0.js → agents-yuUn8n-f.js} +1 -1
- package/dist/gateway/static/root/assets/{api-Cg0v7Lpn.js → api-zxpcJfgj.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-C9DkCW_d.js → app-management-settings-panel-Cz56nrVF.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CFggS95Y.js → appearance-settings-DxSws5U4.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BnizTdgs.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-BQrilVVv.js → archive-plugin-7k15-hqo.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BG0BliqV.js → attachment-load-B-SFpjd9.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Bo4RiTkh.js → automations-page-Qy36j19q.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-CZRKqSqY.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-BCnyNU0C.js → binary-plugins-CPOZQt8F.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Db8DlVvg.js → block-editor-DhvVlIp9.js} +4 -4
- package/dist/gateway/static/root/assets/browser-settings-page-pN5LbChY.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-C71vfl0b.js → browser-workflow-inputs-BX1-uM9L.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-vvmSYKsO.js → browser-workflows-page-C65MI57t.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CJw2e16J.js +7 -0
- package/dist/gateway/static/root/assets/channels-settings-CRgjb4Ck.js +1 -0
- package/dist/gateway/static/root/assets/{channels-status-swr-CKyV3jY5.js → channels-status-swr-CX-yWwLD.js} +1 -1
- package/dist/gateway/static/root/assets/{chat-terminal-dock-B1Xd6OFB.js → chat-terminal-dock-1PJoxRuV.js} +2 -2
- package/dist/gateway/static/root/assets/connectors-page-Dcpdy06y.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-D-F9vjtE.js → cron-expression-CBCc6zFA.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-B2OoYvic.js → date-picker-u8K5Kt_N.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BiGx9Sbj.js → dependency-picker-y_i_cnpz.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-BNMRqipe.js → desktop-pet-DyL0JxLm.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DeYbIV7A.js → desktop-pet-settings-d2d_IsyP.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-COyn05ub.js → extension-debug-page-DqIBKJwl.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-oH43chS2.js → extension-page-DUW1xxj2.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BMO59994.js → extension-settings-page-BHY9qaNw.js} +1 -1
- package/dist/gateway/static/root/assets/files-BArWTfr7.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-config-api-cimpViGk.js → gateway-config-api-e3BRcgDx.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-BGdHwT4e.js → gateway-config-swr-CMNbl0FZ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BHJtnSic.js → gateway-settings-Cheo0Rkc.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CuaM3b4c.js → gateway-startup-retry-CR7Xg8As.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-DNhrZHqx.js → heartbeat-settings-7CD9iPR7.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-DVrTRqNc.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-D7duj7Uj.js → image-generation-api-C5mn73ca.js} +1 -1
- package/dist/gateway/static/root/assets/{index-DGeGmj4k.css → index-B7CX4Qob.css} +1 -1
- package/dist/gateway/static/root/assets/index-BHrpyJ4t.js +72 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D8Zw_lYd.js → keyboard-shortcuts-settings-BtlqMleF.js} +1 -1
- package/dist/gateway/static/root/assets/languages-5WaOu0Lf.js +2 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-BjxfkjxE.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CvPDPRwb.js → local-apps-page-B7xqQe2s.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-zEL8bkwx.js → locale-store-CF4erhjB.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-kACaPZKL.js +2 -0
- package/dist/gateway/static/root/assets/{management-settings-D8moh99U.js → management-settings-A432siER.js} +1 -1
- package/dist/gateway/static/root/assets/markdown-editor-BjMTIM-m.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-DGRN-8wP.js → markdown-view-CQvzsE24.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BLaE5b1Y.js → media-plugins-CpvYiauZ.js} +1 -1
- package/dist/gateway/static/root/assets/messages-Cf5hpZE6.js +3 -0
- package/dist/gateway/static/root/assets/{mobile-pairing-wizard-DiVDuCxl.js → mobile-pairing-wizard-DyjVGngO.js} +1 -1
- package/dist/gateway/static/root/assets/note-detail-panel-CUd8O4K7.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-BLQwd39W.js +8 -0
- package/dist/gateway/static/root/assets/{page-tabs-BFMGjA60.js → page-tabs-B3FKzjR6.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DNEWZN7H.js → preview-open-alternatives-DnjrwAHD.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Co5u7asH.js → product-open-page-COcr_NUJ.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-NttW338u.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-BzH8pjEz.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-Cg92zSod.js → registry-api-BsRBlji7.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BxpjSDnL.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-C0ByNmlV.js → runtime-tools-settings-panel-LO4wZ_dO.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-Dq_VQpuY.js → schema-form-crcj4-Pm.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-BLMaibOb.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BRvvKhoH.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-CZu6FX4k.js → settings-form-section-Bl4MvTmq.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-S8ekeUZd.js → settings-page-DplrjZ6x.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BdVmwXMv.js → setup-status-panel-DTOsxQC1.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-D2fEidbn.js → share-preview-page-CJP1kURj.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CemgzEi4.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-BWYanBlQ.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-AYiPlgZE.js → skills-page-DsjcKg9Q.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DGzl-ib-.js → skills-page.utils-D6gWBbvy.js} +1 -1
- package/dist/gateway/static/root/assets/source-workspace-editor-CVWzt0oT.js +1 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-5Xd5mIiR.js → system-settings-panel-_eCXfqCo.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-BQAUaCDD.js → task-detail-page-D0Z_K5JT.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-ZVClZKQ0.js → theme-store-BOgkc_9D.js} +1 -1
- package/dist/gateway/static/root/assets/{tunnel-api-CdZN1Jin.js → tunnel-api-W5mktxl1.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-czRI0NBc.js → use-autosave-Na2DYzT3.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-B_-SNat-.js +2 -0
- package/dist/gateway/static/root/assets/{vendor-codemirror--gTq3YAI.js → vendor-codemirror-Qdcjid65.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-8YEvA3cU.js → voice-api-key-field-OXweUxS_.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-CopF64lY.js → voice-config-api-C-ryeIxj.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-keLtqYYJ.js → work-discovery-overlay-BqOsO47I.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Dy5WgYMO.js → workflow-run-setup-panel-B9S_lfT1.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-CNOT2Coo.js +5 -0
- package/dist/gateway/static/root/index.html +11 -11
- package/dist/package.js +1 -1
- package/dist/packages/gateway-contract/src/user-message-display.js +18 -0
- package/dist/src/agent/agent-instance-gateway.d.ts +1 -1
- package/dist/src/agent/agent-manager.d.ts +9 -9
- package/dist/src/agent/agent-manager.js +50 -32
- package/dist/src/agent/background-review/prompts.d.ts +1 -1
- package/dist/src/agent/background-review/prompts.js +11 -2
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/context/audit.d.ts +3 -1
- package/dist/src/agent/context/audit.js +32 -6
- package/dist/src/agent/context/coordinator.d.ts +6 -1
- package/dist/src/agent/context/coordinator.js +14 -13
- package/dist/src/agent/context/execution-context.d.ts +6 -47
- package/dist/src/agent/context/execution-context.js +79 -15
- package/dist/src/agent/context/execution-context.types.d.ts +50 -0
- package/dist/src/agent/context/execution-context.types.js +1 -0
- package/dist/src/agent/context/execution-scope.d.ts +5 -1
- package/dist/src/agent/context/execution-scope.js +6 -2
- package/dist/src/agent/context/project-context.d.ts +3 -0
- package/dist/src/agent/context/project-context.js +5 -3
- package/dist/src/agent/embedded/model-runtime.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/external-tools/index.d.ts +1 -0
- package/dist/src/agent/external-tools/index.js +1 -0
- package/dist/src/agent/external-tools/memory-provider.d.ts +1 -0
- package/dist/src/agent/external-tools/memory-provider.js +1 -0
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/inbound/attachment-pipeline.js +5 -1
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +1 -1
- package/dist/src/agent/memory/compaction-promotion.d.ts +1 -0
- package/dist/src/agent/memory/compaction-promotion.js +7 -2
- package/dist/src/agent/memory/index.d.ts +1 -1
- package/dist/src/agent/memory/index.js +3 -3
- package/dist/src/agent/memory/memory-config.d.ts +0 -5
- package/dist/src/agent/memory/memory-config.js +1 -8
- package/dist/src/agent/orchestration/context-overflow.js +1 -0
- package/dist/src/agent/service/direct-turn-helpers.d.ts +2 -2
- package/dist/src/agent/service/direct-turn-helpers.js +2 -2
- package/dist/src/agent/service/process-direct-streaming.js +3 -4
- package/dist/src/agent/service.js +2 -2
- package/dist/src/agent/session/session-inspector.js +1 -1
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/tasks/task-judge-service.js +3 -3
- package/dist/src/agent/tools/factory.d.ts +1 -0
- package/dist/src/agent/tools/factory.js +37 -7
- package/dist/src/agent/tools/knowledge-memory-tool.d.ts +6 -0
- package/dist/src/agent/tools/knowledge-memory-tool.js +81 -26
- package/dist/src/agent/tools/session-search-tool.d.ts +1 -0
- package/dist/src/agent/tools/session-search-tool.js +7 -0
- package/dist/src/agent/tools/user-context-tool.d.ts +2 -0
- package/dist/src/agent/tools/user-context-tool.js +21 -4
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/profiles/store.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +2 -2
- package/dist/src/automations/service/automation-service.d.ts +2 -1
- package/dist/src/automations/service/automation-service.js +6 -2
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/connectors/connection-recovery-service.d.ts +1 -0
- package/dist/src/connectors/connection-recovery-service.js +46 -22
- package/dist/src/extensions/lockfile.js +1 -1
- package/dist/src/files/file-service.js +142 -14
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/file-path-classifier.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/routes/connectors.js +17 -3
- package/dist/src/gateway/hono/routes/files.js +23 -2
- package/dist/src/gateway/hono/routes/models.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/security/gateway-scopes.js +2 -0
- package/dist/src/gateway/service/agent-runner.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/run-gateway-agent.js +1 -1
- package/dist/src/gateway/service/session-input-coordinator.js +1 -1
- package/dist/src/gateway/service.js +12 -8
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/knowledge-memory/domain.d.ts +1 -0
- package/dist/src/knowledge-memory/index.js +2 -2
- package/dist/src/knowledge-memory/repository.d.ts +4 -1
- package/dist/src/knowledge-memory/repository.js +16 -2
- package/dist/src/notifications/planner.js +7 -3
- package/dist/src/proactive/actions/service.d.ts +0 -1
- package/dist/src/proactive/actions/service.js +1 -10
- package/dist/src/proactive/execution/context.d.ts +6 -8
- package/dist/src/proactive/execution/context.js +78 -32
- package/dist/src/proactive/execution/insight.d.ts +4 -1
- package/dist/src/proactive/execution/insight.js +5 -2
- package/dist/src/proactive/execution/repository.d.ts +1 -0
- package/dist/src/proactive/execution/repository.js +9 -1
- package/dist/src/proactive/execution/types.d.ts +0 -1
- package/dist/src/proactive/execution/worker.js +7 -5
- package/dist/src/proactive/inbox/repository.js +8 -2
- package/dist/src/proactive/inbox/service.js +2 -2
- package/dist/src/proactive/inbox/types.d.ts +1 -0
- package/dist/src/proactive/inbox/worker.d.ts +1 -0
- package/dist/src/proactive/inbox/worker.js +7 -0
- package/dist/src/proactive/index.d.ts +1 -0
- package/dist/src/proactive/index.js +2 -1
- package/dist/src/proactive/maintenance.d.ts +4 -0
- package/dist/src/proactive/maintenance.js +21 -0
- package/dist/src/proactive/scenarios/repository.d.ts +1 -1
- package/dist/src/proactive/scenarios/repository.js +10 -3
- package/dist/src/proactive/scenarios/types.d.ts +7 -0
- package/dist/src/proactive/service.d.ts +7 -0
- package/dist/src/proactive/service.js +17 -1
- package/dist/src/projects/project-service.d.ts +2 -1
- package/dist/src/projects/project-service.js +3 -2
- package/dist/src/providers/auth-runtime/resolve-auth.js +1 -1
- package/dist/src/providers/index.js +2 -2
- package/dist/src/providers/model-registry.js +1 -1
- package/dist/src/providers/register-runtime-providers.js +1 -1
- package/dist/src/session/index.js +1 -1
- package/dist/src/session/store.js +5 -2
- package/dist/src/storage/sqlite/collaboration-rule-repository.d.ts +3 -1
- package/dist/src/storage/sqlite/collaboration-rule-repository.js +1 -1
- package/dist/src/storage/sqlite/config-repository.js +1 -1
- package/dist/src/storage/sqlite/connection-wait-repository.js +2 -2
- package/dist/src/storage/sqlite/index.js +2 -2
- package/dist/src/storage/sqlite/migrations/151_proactive_scope_cleanup.sql +6 -0
- package/dist/src/storage/sqlite/migrations/152_proactive_scenario_contract.sql +140 -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/row-mappers.js +2 -2
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-input-repository.js +1 -1
- package/dist/src/storage/sqlite/session-instance-repository.d.ts +2 -0
- package/dist/src/storage/sqlite/session-instance-repository.js +6 -0
- package/dist/src/storage/sqlite/session-repository.d.ts +1 -1
- package/dist/src/storage/sqlite/session-repository.js +3 -5
- package/dist/src/storage/sqlite/transcript-repository.js +2 -1
- package/dist/src/tasks/home-query-service.js +35 -13
- package/dist/src/tasks/project-monitoring-service.d.ts +2 -0
- package/dist/src/tasks/project-monitoring-service.js +4 -1
- package/dist/src/tui/backends/embedded-backend.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +1 -1
- package/dist/src/user-context/access-policy.d.ts +11 -0
- package/dist/src/user-context/access-policy.js +26 -0
- package/dist/src/user-model/capture/executor.d.ts +10 -0
- package/dist/src/user-model/capture/executor.js +99 -3
- package/dist/src/user-model/capture/semantic.d.ts +18 -0
- package/dist/src/user-model/capture/semantic.js +72 -6
- package/dist/src/user-model/goals.d.ts +4 -0
- package/dist/src/user-model/goals.js +4 -2
- package/dist/src/voice/realtime/agentEngine.js +0 -1
- package/dist/src/work-discovery/service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +1 -1
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C1rXNUAG.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-jOvT-fzU.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-BKjKTlW8.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-Dzq18pO1.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-DW4SBQf4.js +0 -7
- package/dist/gateway/static/root/assets/channels-settings-57OGuewD.js +0 -1
- package/dist/gateway/static/root/assets/code-editor-D4_k-6QN.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-CT_I3kbR.js +0 -2
- package/dist/gateway/static/root/assets/files-D6vf3S30.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BiHwiBnQ.js +0 -1
- package/dist/gateway/static/root/assets/html-workspace-editor-C3DKAkMc.js +0 -1
- package/dist/gateway/static/root/assets/index-aBs0EfQB.js +0 -72
- package/dist/gateway/static/root/assets/local-app-workbench-page-eBFVWmtH.js +0 -2
- package/dist/gateway/static/root/assets/logs-page-ClvcWlL6.js +0 -2
- package/dist/gateway/static/root/assets/markdown-editor-nDLmA_LF.js +0 -2
- package/dist/gateway/static/root/assets/markdown-split-D7V3j0vE.js +0 -1
- package/dist/gateway/static/root/assets/messages-W5P19VTF.js +0 -11
- package/dist/gateway/static/root/assets/note-detail-panel-CEEvR-fV.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-BLqgXNCx.js +0 -8
- package/dist/gateway/static/root/assets/project-detail-page-CIiFJ5tk.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-B3UF-Pfm.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BUtpkJPG.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-UgJmG-V4.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DDCzpdkl.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-BdsqnCYj.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-ghzAQKna.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-W3GTm6nA.js +0 -2
- package/dist/gateway/static/root/assets/workflows-page-BbAV3h7n.js +0 -5
|
@@ -15,7 +15,14 @@ function scenarioFromRow(row) {
|
|
|
15
15
|
...condition ? { condition } : {},
|
|
16
16
|
aggregation: text(row, "aggregation"),
|
|
17
17
|
debounceSeconds: Number(row.debounce_seconds),
|
|
18
|
-
maxWindowSeconds: Number(row.max_window_seconds)
|
|
18
|
+
maxWindowSeconds: Number(row.max_window_seconds),
|
|
19
|
+
contextProviderIds: JSON.parse(text(row, "context_provider_ids_json")),
|
|
20
|
+
valuePolicy: {
|
|
21
|
+
minConfidence: Number(row.min_confidence),
|
|
22
|
+
minScore: Number(row.min_value_score),
|
|
23
|
+
cooldownSeconds: Number(row.cooldown_seconds),
|
|
24
|
+
maxRunsPerDay: Number(row.max_runs_per_day)
|
|
25
|
+
}
|
|
19
26
|
};
|
|
20
27
|
}
|
|
21
28
|
function subscriptionFromRow(row) {
|
|
@@ -47,8 +54,8 @@ function revisionFromRow(row) {
|
|
|
47
54
|
function listScenarios() {
|
|
48
55
|
return getSqliteDatabase().prepare("SELECT * FROM proactive_scenarios ORDER BY scenario_key").all().map(scenarioFromRow);
|
|
49
56
|
}
|
|
50
|
-
function getScenario(key) {
|
|
51
|
-
const row = getSqliteDatabase().prepare("SELECT * FROM proactive_scenarios WHERE scenario_key = ?").get(key);
|
|
57
|
+
function getScenario(key, version) {
|
|
58
|
+
const row = version === void 0 ? getSqliteDatabase().prepare("SELECT * FROM proactive_scenarios WHERE scenario_key = ?").get(key) : getSqliteDatabase().prepare("SELECT * FROM proactive_scenario_versions WHERE scenario_key = ? AND version = ?").get(key, version);
|
|
52
59
|
return row ? scenarioFromRow(row) : null;
|
|
53
60
|
}
|
|
54
61
|
function upsertSubscription(input, now = /* @__PURE__ */ new Date()) {
|
|
@@ -11,6 +11,13 @@ export interface ScenarioDefinition {
|
|
|
11
11
|
aggregation: ScenarioRoute['aggregation'];
|
|
12
12
|
debounceSeconds: number;
|
|
13
13
|
maxWindowSeconds: number;
|
|
14
|
+
contextProviderIds: string[];
|
|
15
|
+
valuePolicy: {
|
|
16
|
+
minConfidence: number;
|
|
17
|
+
minScore: number;
|
|
18
|
+
cooldownSeconds: number;
|
|
19
|
+
maxRunsPerDay: number;
|
|
20
|
+
};
|
|
14
21
|
}
|
|
15
22
|
export interface ScenarioSubscription {
|
|
16
23
|
id: string;
|
|
@@ -14,5 +14,12 @@ export declare class ProactiveEventService {
|
|
|
14
14
|
collecting: number;
|
|
15
15
|
ready: number;
|
|
16
16
|
oldestReadyAt: string | null;
|
|
17
|
+
last24Hours: {
|
|
18
|
+
runs: number;
|
|
19
|
+
insights: number;
|
|
20
|
+
discarded: number;
|
|
21
|
+
useful: number;
|
|
22
|
+
notUseful: number;
|
|
23
|
+
};
|
|
17
24
|
};
|
|
18
25
|
}
|
|
@@ -49,11 +49,27 @@ var ProactiveEventService = class {
|
|
|
49
49
|
SUM(CASE WHEN status = 'ready' THEN 1 ELSE 0 END) AS ready,
|
|
50
50
|
MIN(CASE WHEN status = 'ready' THEN ready_at END) AS oldest_ready_at
|
|
51
51
|
FROM proactive_signal_batches`).get();
|
|
52
|
+
const since = (/* @__PURE__ */ new Date(Date.now() - 1440 * 6e4)).toISOString();
|
|
53
|
+
const runs = db.prepare(`SELECT COUNT(*) AS runs,
|
|
54
|
+
SUM(CASE WHEN status = 'discarded' THEN 1 ELSE 0 END) AS discarded
|
|
55
|
+
FROM proactive_runs WHERE started_at >= ?`).get(since);
|
|
56
|
+
const insights = db.prepare("SELECT COUNT(*) AS count FROM proactive_insights WHERE created_at >= ?").get(since);
|
|
57
|
+
const feedback = db.prepare(`SELECT
|
|
58
|
+
SUM(CASE WHEN rating = 'useful' THEN 1 ELSE 0 END) AS useful,
|
|
59
|
+
SUM(CASE WHEN rating = 'not_useful' THEN 1 ELSE 0 END) AS not_useful
|
|
60
|
+
FROM proactive_feedback WHERE created_at >= ?`).get(since);
|
|
52
61
|
return {
|
|
53
62
|
events: events.count,
|
|
54
63
|
collecting: batches.collecting ?? 0,
|
|
55
64
|
ready: batches.ready ?? 0,
|
|
56
|
-
oldestReadyAt: batches.oldest_ready_at
|
|
65
|
+
oldestReadyAt: batches.oldest_ready_at,
|
|
66
|
+
last24Hours: {
|
|
67
|
+
runs: runs.runs,
|
|
68
|
+
insights: insights.count,
|
|
69
|
+
discarded: runs.discarded ?? 0,
|
|
70
|
+
useful: feedback.useful ?? 0,
|
|
71
|
+
notUseful: feedback.not_useful ?? 0
|
|
72
|
+
}
|
|
57
73
|
};
|
|
58
74
|
}
|
|
59
75
|
};
|
|
@@ -11,7 +11,8 @@ export type ProjectSuggestion = {
|
|
|
11
11
|
export declare class ProjectService {
|
|
12
12
|
private readonly store;
|
|
13
13
|
private readonly signals?;
|
|
14
|
-
|
|
14
|
+
private readonly workspaceId;
|
|
15
|
+
constructor(store?: ProjectStore, signals?: ProactiveSignalPublisher, workspaceId?: string);
|
|
15
16
|
private listAllProjects;
|
|
16
17
|
create(input: CreateProjectInput): Project;
|
|
17
18
|
get(id: string): Project | null;
|
|
@@ -9,9 +9,10 @@ import { bindSessionToProject, listProjectSessionKeys, unbindSessionFromProject
|
|
|
9
9
|
import { createHash } from "node:crypto";
|
|
10
10
|
//#region src/projects/project-service.ts
|
|
11
11
|
var ProjectService = class {
|
|
12
|
-
constructor(store = new ProjectStore(), signals) {
|
|
12
|
+
constructor(store = new ProjectStore(), signals, workspaceId = "default") {
|
|
13
13
|
this.store = store;
|
|
14
14
|
this.signals = signals;
|
|
15
|
+
this.workspaceId = workspaceId;
|
|
15
16
|
}
|
|
16
17
|
listAllProjects() {
|
|
17
18
|
const items = [];
|
|
@@ -199,7 +200,7 @@ var ProjectService = class {
|
|
|
199
200
|
},
|
|
200
201
|
actor: { kind: "system" },
|
|
201
202
|
scope: {
|
|
202
|
-
workspaceId:
|
|
203
|
+
workspaceId: this.workspaceId,
|
|
203
204
|
projectId: project.id
|
|
204
205
|
},
|
|
205
206
|
occurredAt: new Date(project.updatedAt).toISOString(),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { init_sync_provider_auth, resolveProviderApiKeyForAgentSync } from "../../auth/sync-provider-auth.js";
|
|
2
1
|
import { getApiKeyFromEnv, init_env_keys } from "../env-keys.js";
|
|
2
|
+
import { init_sync_provider_auth, resolveProviderApiKeyForAgentSync } from "../../auth/sync-provider-auth.js";
|
|
3
3
|
import { getDefaultAuthProfileStore } from "./auth-profile-store.js";
|
|
4
4
|
//#region src/providers/auth-runtime/resolve-auth.ts
|
|
5
5
|
init_env_keys();
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { __esmMin, __exportAll } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { getAgentDefaultModelRef, init_schema } from "../config/schema.js";
|
|
3
|
-
import { getModelOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
4
|
-
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
5
3
|
import { PROVIDER_ENV_MAP, getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
6
4
|
import { init_model_ref, splitProviderModelRef } from "./model-ref.js";
|
|
7
5
|
import { ModelRegistry, getModelRegistry, init_model_registry, prewarmModelRegistry, resetModelRegistry } from "./model-registry.js";
|
|
6
|
+
import { getModelOAuthProviderIds, init_registry } from "../auth/oauth/registry.js";
|
|
8
7
|
import { CredentialResolver, hasCredentials, init_credentials } from "../auth/credentials.js";
|
|
8
|
+
import { hasProviderAuthOnDiskSync, init_sync_provider_auth } from "../auth/sync-provider-auth.js";
|
|
9
9
|
import { EXTENSION_PROVIDER_BASE_URL, init_constants } from "./constants.js";
|
|
10
10
|
import { applyOfficialModelMetadataCorrections, getSupplementalModels, init_model_supplements } from "./model-supplements.js";
|
|
11
11
|
import { getProviderRegistry, init_plugin_registry } from "./plugin-registry.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
2
|
import { createLogger } from "../utils/logger/index.js";
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
|
-
import { resolveModelsJsonPath } from "../config/paths.js";
|
|
5
4
|
import { init_resolve_config_value, resolveConfigValue, resolveHeaders } from "../config/resolve-config-value.js";
|
|
5
|
+
import { resolveModelsJsonPath } from "../config/paths.js";
|
|
6
6
|
import { getDefaultModelValues, init_models_json, validateModelsConfig } from "../config/models-json.js";
|
|
7
7
|
import { getApiKeyFromEnv, init_env_keys } from "./env-keys.js";
|
|
8
8
|
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
-
import { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.js";
|
|
3
2
|
import { getModelCatalogStore, init_model_catalog_store } from "./model-catalog-store.js";
|
|
3
|
+
import { getOAuthProviderDefinition, init_registry } from "../auth/oauth/registry.js";
|
|
4
4
|
import { XOPC_CLOUD_PROVIDER_ID, init_xopc_cloud_config, resolveXopcModelRouterUrl } from "./xopc-cloud-config.js";
|
|
5
5
|
//#region src/providers/register-runtime-providers.ts
|
|
6
6
|
function registerRuntimeProvider(modelRuntime, source) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { SessionStatus } from "./types.js";
|
|
2
1
|
import { buildSessionContextForLlm, isTranscriptContextEntry, mergeLlmMessagesPreservingContextRows, transcriptRowsFromJsonArray } from "./session-context-for-llm.js";
|
|
2
|
+
import { SessionStatus } from "./types.js";
|
|
3
3
|
import { effectiveWorkspacePathForSession, normalizeWorkingDirectoryInput, projectWorkspacePath } from "./session-workspace.js";
|
|
4
4
|
import { emitSessionTranscriptUpdate, onSessionTranscriptUpdate } from "./transcript-events.js";
|
|
5
5
|
import { fallbackTitleFromMessages, generateSessionTitleFromMessages, getSessionTitleSource, isWebchatSessionKey, maybeRefineSessionTitleWithLlm, maybeSetProvisionalSessionTitle, provisionalTitleFromUserText, sanitizeGeneratedSessionTitle, sanitizeSessionTitle, shouldAutoTitleSessionKey, shouldRefineSessionTitleWithLlm } from "./session-title.js";
|
|
@@ -3,8 +3,8 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
3
3
|
import { init_logger } from "../utils/logger.js";
|
|
4
4
|
import { requireXopcDatabase } from "../storage/sqlite/connection.js";
|
|
5
5
|
import { runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
6
|
-
import "./types.js";
|
|
7
6
|
import { buildSessionContextForLlm, buildSessionDisplayMessages, isRuntimeOnlyTranscriptMessage, isTranscriptCompactionEntry, mergeLlmMessagesPreservingContextRows, transcriptRowsFromJsonArray } from "./session-context-for-llm.js";
|
|
7
|
+
import "./types.js";
|
|
8
8
|
import { init_agent_session_key, resolveAgentIdFromSessionKey } from "../routing/agent-session-key.js";
|
|
9
9
|
import { estimateTokensFromMessages } from "../storage/sqlite/row-mappers.js";
|
|
10
10
|
import { deleteSessionRecord, ensureSessionRecord, findSessionKeyBySessionId, getGlobalSessionStats, getSessionMetadata, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord } from "../storage/sqlite/session-repository.js";
|
|
@@ -13,6 +13,7 @@ import { getSessionConfig, setSessionConfig } from "../storage/sqlite/config-rep
|
|
|
13
13
|
import "../storage/sqlite/index.js";
|
|
14
14
|
import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.js";
|
|
15
15
|
import { SessionCompactor } from "../agent/memory/compaction.js";
|
|
16
|
+
import { resolveUserContextSessionAccess } from "../user-context/access-policy.js";
|
|
16
17
|
import { readPostCompactionContext } from "../agent/reply/post-compaction-context.js";
|
|
17
18
|
import { resolveCompactionPolicy } from "../agent/memory/compaction-policy.js";
|
|
18
19
|
import { promoteCompactionLedger } from "../agent/memory/compaction-promotion.js";
|
|
@@ -464,6 +465,7 @@ var SessionStore = class {
|
|
|
464
465
|
})) throw new Error(`Session changed while compaction was running: ${key}`);
|
|
465
466
|
try {
|
|
466
467
|
const metadata = getSessionMetadata(key);
|
|
468
|
+
const access = resolveUserContextSessionAccess(this.options.config, key);
|
|
467
469
|
const promoted = promoteCompactionLedger({
|
|
468
470
|
sessionKey: key,
|
|
469
471
|
sessionId: expectedSnapshot.sessionId,
|
|
@@ -472,7 +474,8 @@ var SessionStore = class {
|
|
|
472
474
|
projectId: metadata?.projectId,
|
|
473
475
|
handover: result.handover,
|
|
474
476
|
audit: result.audit,
|
|
475
|
-
sourceEntries: expectedSnapshot.entries
|
|
477
|
+
sourceEntries: expectedSnapshot.entries,
|
|
478
|
+
writePolicy: access.knowledge && this.options.config.userContext.knowledgeMemory.sources.includes("session") ? this.options.config.userContext.knowledgeMemory.writePolicy : "deny"
|
|
476
479
|
});
|
|
477
480
|
log.info({
|
|
478
481
|
sessionKey: key,
|
|
@@ -13,5 +13,7 @@ export interface CollaborationRule {
|
|
|
13
13
|
}
|
|
14
14
|
export declare function getCollaborationRule(id: string): CollaborationRule | undefined;
|
|
15
15
|
export declare function listCollaborationRules(principalId?: string): CollaborationRule[];
|
|
16
|
-
export declare function createCollaborationRule(input: Pick<CollaborationRule, 'category' | 'priority' | 'scope' | 'conditions' | 'statement'>
|
|
16
|
+
export declare function createCollaborationRule(input: Pick<CollaborationRule, 'category' | 'priority' | 'scope' | 'conditions' | 'statement'> & {
|
|
17
|
+
status?: CollaborationRule['status'];
|
|
18
|
+
}): CollaborationRule;
|
|
17
19
|
export declare function setCollaborationRuleStatus(id: string, status: CollaborationRule['status']): CollaborationRule | undefined;
|
|
@@ -40,7 +40,7 @@ function createCollaborationRule(input) {
|
|
|
40
40
|
db.prepare(`INSERT INTO collaboration_rules (
|
|
41
41
|
rule_id, principal_id, category, status, priority, scope_type, scope_id,
|
|
42
42
|
conditions_json, current_revision_id, created_at, updated_at
|
|
43
|
-
) VALUES (?, ?, ?,
|
|
43
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`).run(id, USER_MODEL_PRINCIPAL_ID, input.category, input.status ?? "active", input.priority, input.scope.type, input.scope.id ?? null, JSON.stringify(input.conditions), revisionId, now, now);
|
|
44
44
|
db.prepare(`INSERT INTO collaboration_rule_revisions (
|
|
45
45
|
revision_id, rule_id, statement, created_by, created_at
|
|
46
46
|
) VALUES (?, ?, ?, 'user', ?)`).run(revisionId, id, input.statement.trim(), now);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
|
|
2
|
-
import { notifyUserContextChange } from "../../user-context/changes.js";
|
|
3
2
|
import { sessionConfigRowToConfig } from "./row-mappers.js";
|
|
3
|
+
import { notifyUserContextChange } from "../../user-context/changes.js";
|
|
4
4
|
import { ensureSessionInTransaction } from "./session-repository.js";
|
|
5
5
|
//#region src/storage/sqlite/config-repository.ts
|
|
6
6
|
function readConfigRow(db, sessionKey) {
|
|
@@ -2,9 +2,9 @@ import { createLogger } from "../../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { isXopcDatabaseOpen } from "./connection.js";
|
|
4
4
|
import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
|
|
5
|
-
import {
|
|
6
|
-
import { readCurrentSessionId } from "./session-repository.js";
|
|
5
|
+
import { readCurrentSessionId } from "./session-instance-repository.js";
|
|
7
6
|
import { bumpSessionInputRevision, getSessionInputById, getSessionInputState, insertSessionInput, setSessionInputStatus } from "./session-input-repository.js";
|
|
7
|
+
import { TaskRunRepository } from "../../tasks/task-run-repository.js";
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
import { EventEmitter } from "node:events";
|
|
10
10
|
//#region src/storage/sqlite/connection-wait-repository.ts
|
|
@@ -15,10 +15,9 @@ import { closeTemporalAssertions, createTemporalAssertion, linkContextObjects, l
|
|
|
15
15
|
import { createCollaborationRule, getCollaborationRule, listCollaborationRules, setCollaborationRuleStatus } from "./collaboration-rule-repository.js";
|
|
16
16
|
import { createContextEvidence } from "./context-evidence-repository.js";
|
|
17
17
|
import { getUserPeopleIndexState, getUserPerson, listUserPeople, mergeUserPeople, replaceUserPeopleIndex, summarizeUserPeople, updateUserPerson } from "./user-people-repository.js";
|
|
18
|
+
import { cancelQueuedSessionInput, claimNextSessionInput, findSessionInput, finishSessionInputRun, getSessionInputById, getSessionInputState, insertSessionInput, listActiveSessionInputRuns, mutateQueuedSessionInput, recoverSessionInputState, setSessionInputStatus } from "./session-input-repository.js";
|
|
18
19
|
import { buildDefaultSessionMetadata } from "./session-metadata.js";
|
|
19
20
|
import { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow } from "./row-mappers.js";
|
|
20
|
-
import { deleteSessionRecord, ensureSessionRecord, findSessionKeyBySessionId, getCurrentSessionId, getGlobalSessionStats, getSessionMetadata, getSessionPersistedLevels, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats } from "./session-repository.js";
|
|
21
|
-
import { cancelQueuedSessionInput, claimNextSessionInput, findSessionInput, finishSessionInputRun, getSessionInputById, getSessionInputState, insertSessionInput, listActiveSessionInputRuns, mutateQueuedSessionInput, recoverSessionInputState, setSessionInputStatus } from "./session-input-repository.js";
|
|
22
21
|
import { replaceLatestSessionTurnAndQueueInput, validateLatestSessionTurnTarget } from "./session-turn-replace-repository.js";
|
|
23
22
|
import { acknowledgeHomeAttention, isHomeAttentionAcknowledged } from "./home-attention-repository.js";
|
|
24
23
|
import { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob } from "./connector-learning-repository.js";
|
|
@@ -26,6 +25,7 @@ import { COMPOSER_INPUT_HISTORY_LIMIT, appendComposerInputHistory, clearComposer
|
|
|
26
25
|
import { bindEndpointPrincipal, createEndpointPrincipal, getEndpointPrincipal, listEndpointPrincipals, revokeEndpointPrincipal, touchEndpointPrincipal } from "./endpoint-principal-repository.js";
|
|
27
26
|
import { finishEndpointToolInvocationAudit, listEndpointToolInvocationAudits, startEndpointToolInvocationAudit } from "./endpoint-tool-invocation-repository.js";
|
|
28
27
|
import { getInteractionState, setInteractionState, updateInteractionStateFromMessage } from "./interaction-state-repository.js";
|
|
28
|
+
import { deleteSessionRecord, ensureSessionRecord, findSessionKeyBySessionId, getCurrentSessionId, getGlobalSessionStats, getSessionMetadata, getSessionPersistedLevels, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats } from "./session-repository.js";
|
|
29
29
|
import { getSessionTaskPlan, setSessionTaskPlan } from "./session-task-plan-repository.js";
|
|
30
30
|
import { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAllowed, updateRelationshipSettings } from "./relationship-settings-repository.js";
|
|
31
31
|
import { appendCompactionBoundaryIfUnchanged, appendTranscriptEntry, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript } from "./transcript-repository.js";
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
ALTER TABLE proactive_scenarios
|
|
2
|
+
ADD COLUMN context_provider_ids_json TEXT NOT NULL DEFAULT '["event_batch"]';
|
|
3
|
+
ALTER TABLE proactive_scenarios
|
|
4
|
+
ADD COLUMN min_confidence REAL NOT NULL DEFAULT 0.65
|
|
5
|
+
CHECK (min_confidence >= 0 AND min_confidence <= 1);
|
|
6
|
+
ALTER TABLE proactive_scenarios
|
|
7
|
+
ADD COLUMN min_value_score REAL NOT NULL DEFAULT 0.6
|
|
8
|
+
CHECK (min_value_score >= 0 AND min_value_score <= 1);
|
|
9
|
+
ALTER TABLE proactive_scenarios
|
|
10
|
+
ADD COLUMN cooldown_seconds INTEGER NOT NULL DEFAULT 604800
|
|
11
|
+
CHECK (cooldown_seconds >= 0);
|
|
12
|
+
ALTER TABLE proactive_scenarios
|
|
13
|
+
ADD COLUMN max_runs_per_day INTEGER NOT NULL DEFAULT 30
|
|
14
|
+
CHECK (max_runs_per_day > 0);
|
|
15
|
+
|
|
16
|
+
UPDATE proactive_scenarios
|
|
17
|
+
SET context_provider_ids_json = '["event_batch","connected_source","internal_objects","user_model","project_state"]'
|
|
18
|
+
WHERE scenario_key IN ('project_delivery_risk', 'blocked_work');
|
|
19
|
+
|
|
20
|
+
UPDATE proactive_scenarios
|
|
21
|
+
SET context_provider_ids_json = '["event_batch","user_model","automation_state","project_state"]',
|
|
22
|
+
cooldown_seconds = 86400,
|
|
23
|
+
max_runs_per_day = 20
|
|
24
|
+
WHERE scenario_key = 'automation_failure_impact';
|
|
25
|
+
|
|
26
|
+
UPDATE proactive_scenarios
|
|
27
|
+
SET context_provider_ids_json = '["event_batch","connected_source","user_model","meeting_workspace"]',
|
|
28
|
+
cooldown_seconds = 86400,
|
|
29
|
+
max_runs_per_day = 20
|
|
30
|
+
WHERE scenario_key = 'meeting_preparation';
|
|
31
|
+
|
|
32
|
+
UPDATE proactive_scenarios
|
|
33
|
+
SET context_provider_ids_json = '["event_batch","user_model","discussion"]',
|
|
34
|
+
cooldown_seconds = 86400,
|
|
35
|
+
max_runs_per_day = 20
|
|
36
|
+
WHERE scenario_key = 'discussion_follow_up';
|
|
37
|
+
|
|
38
|
+
CREATE TABLE proactive_scenario_versions (
|
|
39
|
+
scenario_key TEXT NOT NULL,
|
|
40
|
+
version INTEGER NOT NULL CHECK (version > 0),
|
|
41
|
+
title TEXT NOT NULL,
|
|
42
|
+
description TEXT NOT NULL,
|
|
43
|
+
base_prompt TEXT NOT NULL,
|
|
44
|
+
base_template_version INTEGER NOT NULL CHECK (base_template_version > 0),
|
|
45
|
+
event_types_json TEXT NOT NULL,
|
|
46
|
+
condition_json TEXT,
|
|
47
|
+
aggregation TEXT NOT NULL CHECK (aggregation IN ('subject', 'project', 'workspace')),
|
|
48
|
+
debounce_seconds INTEGER NOT NULL CHECK (debounce_seconds >= 0),
|
|
49
|
+
max_window_seconds INTEGER NOT NULL CHECK (max_window_seconds > 0),
|
|
50
|
+
context_provider_ids_json TEXT NOT NULL,
|
|
51
|
+
min_confidence REAL NOT NULL CHECK (min_confidence >= 0 AND min_confidence <= 1),
|
|
52
|
+
min_value_score REAL NOT NULL CHECK (min_value_score >= 0 AND min_value_score <= 1),
|
|
53
|
+
cooldown_seconds INTEGER NOT NULL CHECK (cooldown_seconds >= 0),
|
|
54
|
+
max_runs_per_day INTEGER NOT NULL CHECK (max_runs_per_day > 0),
|
|
55
|
+
created_at TEXT NOT NULL,
|
|
56
|
+
PRIMARY KEY (scenario_key, version),
|
|
57
|
+
FOREIGN KEY (scenario_key) REFERENCES proactive_scenarios(scenario_key) ON DELETE CASCADE
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
INSERT INTO proactive_scenario_versions (
|
|
61
|
+
scenario_key, version, title, description, base_prompt, base_template_version,
|
|
62
|
+
event_types_json, condition_json, aggregation, debounce_seconds,
|
|
63
|
+
max_window_seconds, context_provider_ids_json, min_confidence,
|
|
64
|
+
min_value_score, cooldown_seconds, max_runs_per_day, created_at
|
|
65
|
+
)
|
|
66
|
+
SELECT
|
|
67
|
+
scenario_key, version, title, description, base_prompt, base_template_version,
|
|
68
|
+
event_types_json, condition_json, aggregation, debounce_seconds,
|
|
69
|
+
max_window_seconds, context_provider_ids_json, min_confidence,
|
|
70
|
+
min_value_score, cooldown_seconds, max_runs_per_day, updated_at
|
|
71
|
+
FROM proactive_scenarios;
|
|
72
|
+
|
|
73
|
+
CREATE TRIGGER proactive_scenario_version_after_insert
|
|
74
|
+
AFTER INSERT ON proactive_scenarios
|
|
75
|
+
BEGIN
|
|
76
|
+
INSERT INTO proactive_scenario_versions (
|
|
77
|
+
scenario_key, version, title, description, base_prompt, base_template_version,
|
|
78
|
+
event_types_json, condition_json, aggregation, debounce_seconds,
|
|
79
|
+
max_window_seconds, context_provider_ids_json, min_confidence,
|
|
80
|
+
min_value_score, cooldown_seconds, max_runs_per_day, created_at
|
|
81
|
+
) VALUES (
|
|
82
|
+
NEW.scenario_key, NEW.version, NEW.title, NEW.description, NEW.base_prompt,
|
|
83
|
+
NEW.base_template_version, NEW.event_types_json, NEW.condition_json,
|
|
84
|
+
NEW.aggregation, NEW.debounce_seconds, NEW.max_window_seconds,
|
|
85
|
+
NEW.context_provider_ids_json, NEW.min_confidence, NEW.min_value_score,
|
|
86
|
+
NEW.cooldown_seconds, NEW.max_runs_per_day, NEW.updated_at
|
|
87
|
+
);
|
|
88
|
+
END;
|
|
89
|
+
|
|
90
|
+
CREATE TRIGGER proactive_scenario_contract_update_guard
|
|
91
|
+
BEFORE UPDATE ON proactive_scenarios
|
|
92
|
+
WHEN NEW.version = OLD.version AND (
|
|
93
|
+
NEW.title IS NOT OLD.title
|
|
94
|
+
OR NEW.description IS NOT OLD.description
|
|
95
|
+
OR NEW.base_prompt IS NOT OLD.base_prompt
|
|
96
|
+
OR NEW.base_template_version IS NOT OLD.base_template_version
|
|
97
|
+
OR NEW.event_types_json IS NOT OLD.event_types_json
|
|
98
|
+
OR NEW.condition_json IS NOT OLD.condition_json
|
|
99
|
+
OR NEW.aggregation IS NOT OLD.aggregation
|
|
100
|
+
OR NEW.debounce_seconds IS NOT OLD.debounce_seconds
|
|
101
|
+
OR NEW.max_window_seconds IS NOT OLD.max_window_seconds
|
|
102
|
+
OR NEW.context_provider_ids_json IS NOT OLD.context_provider_ids_json
|
|
103
|
+
OR NEW.min_confidence IS NOT OLD.min_confidence
|
|
104
|
+
OR NEW.min_value_score IS NOT OLD.min_value_score
|
|
105
|
+
OR NEW.cooldown_seconds IS NOT OLD.cooldown_seconds
|
|
106
|
+
OR NEW.max_runs_per_day IS NOT OLD.max_runs_per_day
|
|
107
|
+
)
|
|
108
|
+
BEGIN
|
|
109
|
+
SELECT RAISE(ABORT, 'proactive scenario contract changes require a new version');
|
|
110
|
+
END;
|
|
111
|
+
|
|
112
|
+
CREATE TRIGGER proactive_scenario_version_after_update
|
|
113
|
+
AFTER UPDATE OF version ON proactive_scenarios
|
|
114
|
+
WHEN NEW.version <> OLD.version
|
|
115
|
+
BEGIN
|
|
116
|
+
INSERT INTO proactive_scenario_versions (
|
|
117
|
+
scenario_key, version, title, description, base_prompt, base_template_version,
|
|
118
|
+
event_types_json, condition_json, aggregation, debounce_seconds,
|
|
119
|
+
max_window_seconds, context_provider_ids_json, min_confidence,
|
|
120
|
+
min_value_score, cooldown_seconds, max_runs_per_day, created_at
|
|
121
|
+
) VALUES (
|
|
122
|
+
NEW.scenario_key, NEW.version, NEW.title, NEW.description, NEW.base_prompt,
|
|
123
|
+
NEW.base_template_version, NEW.event_types_json, NEW.condition_json,
|
|
124
|
+
NEW.aggregation, NEW.debounce_seconds, NEW.max_window_seconds,
|
|
125
|
+
NEW.context_provider_ids_json, NEW.min_confidence, NEW.min_value_score,
|
|
126
|
+
NEW.cooldown_seconds, NEW.max_runs_per_day, NEW.updated_at
|
|
127
|
+
);
|
|
128
|
+
END;
|
|
129
|
+
|
|
130
|
+
CREATE TRIGGER proactive_scenario_versions_immutable_update
|
|
131
|
+
BEFORE UPDATE ON proactive_scenario_versions
|
|
132
|
+
BEGIN
|
|
133
|
+
SELECT RAISE(ABORT, 'proactive scenario versions are immutable');
|
|
134
|
+
END;
|
|
135
|
+
|
|
136
|
+
CREATE TRIGGER proactive_scenario_versions_immutable_delete
|
|
137
|
+
BEFORE DELETE ON proactive_scenario_versions
|
|
138
|
+
BEGIN
|
|
139
|
+
SELECT RAISE(ABORT, 'proactive scenario versions are immutable');
|
|
140
|
+
END;
|
|
@@ -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 = 152;
|
|
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 = 152;
|
|
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 ?? 152;
|
|
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 ?? 152;
|
|
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 = 152;
|
|
23
23
|
|
|
24
24
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
25
25
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import "../../session/types.js";
|
|
2
|
-
import { buildDefaultSessionMetadata } from "./session-metadata.js";
|
|
3
1
|
import { isTranscriptContextEntry } from "../../session/session-context-for-llm.js";
|
|
2
|
+
import "../../session/types.js";
|
|
4
3
|
import { init_agent_session_key, resolveAgentIdFromSessionKey } from "../../routing/agent-session-key.js";
|
|
4
|
+
import { buildDefaultSessionMetadata } from "./session-metadata.js";
|
|
5
5
|
//#region src/storage/sqlite/row-mappers.ts
|
|
6
6
|
init_agent_session_key();
|
|
7
7
|
function parseJson(raw) {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
|
|
2
|
-
import { readCurrentSessionId } from "./session-repository.js";
|
|
2
|
+
import { readCurrentSessionId } from "./session-instance-repository.js";
|
|
3
3
|
import { turnOriginSchema } from "../../../packages/endpoint-tools-protocol/src/index.js";
|
|
4
4
|
//#region src/storage/sqlite/session-input-repository.ts
|
|
5
5
|
function mapInput(row) {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
//#region src/storage/sqlite/session-instance-repository.ts
|
|
2
|
+
function readCurrentSessionId(db, sessionKey) {
|
|
3
|
+
return db.prepare(`SELECT session_id FROM sessions WHERE session_key = ?`).get(sessionKey)?.session_id ?? null;
|
|
4
|
+
}
|
|
5
|
+
//#endregion
|
|
6
|
+
export { readCurrentSessionId };
|
|
@@ -4,7 +4,7 @@ import { type SessionMetadataSeed } from './session-metadata.js';
|
|
|
4
4
|
import { buildGlobalSessionStats } from './row-mappers.js';
|
|
5
5
|
export declare function ensureSessionInTransaction(db: DatabaseSync, sessionKey: string, cwd: string, seed?: SessionMetadataSeed): SessionMetadata;
|
|
6
6
|
export declare function ensureSessionRecord(sessionKey: string, cwd: string, seed?: SessionMetadataSeed): SessionMetadata;
|
|
7
|
-
export
|
|
7
|
+
export { readCurrentSessionId } from './session-instance-repository.js';
|
|
8
8
|
export declare function getSessionMetadata(sessionKey: string): SessionMetadata | null;
|
|
9
9
|
export declare function getCurrentSessionId(sessionKey: string): string | null;
|
|
10
10
|
export declare function listSessionMetadata(query?: SessionListQuery): PaginatedResult<SessionMetadata>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
|
|
2
|
+
import { readCurrentSessionId } from "./session-instance-repository.js";
|
|
3
|
+
import { buildDefaultSessionMetadata } from "./session-metadata.js";
|
|
4
|
+
import { buildGlobalSessionStats, metadataToSessionInsert, sessionRowToMetadata } from "./row-mappers.js";
|
|
2
5
|
import { cancelConnectionObjective } from "./connection-wait-repository.js";
|
|
3
6
|
import { notifyUserContextChange } from "../../user-context/changes.js";
|
|
4
7
|
import { validateSessionId } from "../../session/session-id.js";
|
|
5
|
-
import { buildDefaultSessionMetadata } from "./session-metadata.js";
|
|
6
|
-
import { buildGlobalSessionStats, metadataToSessionInsert, sessionRowToMetadata } from "./row-mappers.js";
|
|
7
8
|
import { buildFts5SearchQuery } from "./fts.js";
|
|
8
9
|
import { randomUUID } from "node:crypto";
|
|
9
10
|
//#region src/storage/sqlite/session-repository.ts
|
|
@@ -64,9 +65,6 @@ function ensureSessionInTransaction(db, sessionKey, cwd, seed) {
|
|
|
64
65
|
function ensureSessionRecord(sessionKey, cwd, seed) {
|
|
65
66
|
return runSqliteWriteTransaction((db) => ensureSessionInTransaction(db, sessionKey, cwd, seed));
|
|
66
67
|
}
|
|
67
|
-
function readCurrentSessionId(db, sessionKey) {
|
|
68
|
-
return db.prepare(`SELECT session_id FROM sessions WHERE session_key = ?`).get(sessionKey)?.session_id ?? null;
|
|
69
|
-
}
|
|
70
68
|
function getSessionMetadata(sessionKey) {
|
|
71
69
|
const row = readSessionRow(getSqliteDatabase(), sessionKey);
|
|
72
70
|
if (!row) return null;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
|
|
2
|
+
import { readCurrentSessionId } from "./session-instance-repository.js";
|
|
2
3
|
import { buildSessionContextForLlm, isRuntimeOnlyTranscriptMessage } from "../../session/session-context-for-llm.js";
|
|
3
4
|
import { classifyStoredRow, estimateTokensFromMessages, extractFtsContent, transcriptEntryRowToStoredRow } from "./row-mappers.js";
|
|
4
5
|
import { escapeFts5Query } from "./fts.js";
|
|
5
|
-
import { getCurrentSessionId
|
|
6
|
+
import { getCurrentSessionId } from "./session-repository.js";
|
|
6
7
|
import { randomUUID } from "node:crypto";
|
|
7
8
|
//#region src/storage/sqlite/transcript-repository.ts
|
|
8
9
|
function nextSeq(db, sessionId) {
|
|
@@ -334,7 +334,7 @@ var HomeQueryService = class {
|
|
|
334
334
|
kind: "agent_judgment",
|
|
335
335
|
title: item.insight.title,
|
|
336
336
|
detail: item.insight.summary,
|
|
337
|
-
reason: item.insight.disposition === "request_approval" ? "approval_required" : "decision_needed",
|
|
337
|
+
reason: item.insight.disposition === "request_approval" ? "approval_required" : item.insight.attentionKind === "decision" ? "decision_needed" : "insight_available",
|
|
338
338
|
urgency: item.insight.urgency === "critical" || item.insight.urgency === "high" ? "now" : "soon",
|
|
339
339
|
href: `/?judgment=${encodeURIComponent(item.id)}`,
|
|
340
340
|
updatedAt: Date.parse(item.updatedAt),
|
|
@@ -346,6 +346,8 @@ var HomeQueryService = class {
|
|
|
346
346
|
recommendation: item.insight.recommendation,
|
|
347
347
|
confidence: item.insight.confidence,
|
|
348
348
|
valueScore: item.insight.valueScore,
|
|
349
|
+
evidenceIds: item.insight.evidenceIds,
|
|
350
|
+
attentionKind: item.insight.attentionKind,
|
|
349
351
|
disposition: item.insight.disposition,
|
|
350
352
|
dispositionReason: item.insight.dispositionReason,
|
|
351
353
|
...item.insight.actionStatus ? { actionStatus: item.insight.actionStatus } : {},
|
|
@@ -398,19 +400,39 @@ var HomeQueryService = class {
|
|
|
398
400
|
});
|
|
399
401
|
const decisions = governed.decisions;
|
|
400
402
|
const attention = governed.attention;
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
scheduled: upcomingAutomations,
|
|
412
|
-
nowMs
|
|
403
|
+
const interactiveDecisions = decisions.filter((item) => item.kind !== "agent_judgment" || item.judgment?.attentionKind === "decision");
|
|
404
|
+
const proactiveInformation = decisions.filter((item) => item.kind === "agent_judgment" && item.judgment?.attentionKind !== "decision");
|
|
405
|
+
const workbench = buildHomeWorkbench({
|
|
406
|
+
locale,
|
|
407
|
+
decisions: interactiveDecisions,
|
|
408
|
+
attention,
|
|
409
|
+
activeWorkflowRuns,
|
|
410
|
+
runningTasks: tasks.filter((task) => {
|
|
411
|
+
const state = this.#projector.project(task).operationalState;
|
|
412
|
+
return state === "queued" || state === "running" || state === "verifying";
|
|
413
413
|
}),
|
|
414
|
+
scheduled: upcomingAutomations,
|
|
415
|
+
nowMs
|
|
416
|
+
});
|
|
417
|
+
const informationItems = proactiveInformation.map((item) => ({
|
|
418
|
+
id: item.id,
|
|
419
|
+
kind: "insight",
|
|
420
|
+
title: item.title,
|
|
421
|
+
summary: item.detail ?? item.judgment.recommendation,
|
|
422
|
+
recommendation: item.judgment.recommendation,
|
|
423
|
+
updatedAt: item.updatedAt,
|
|
424
|
+
openAction: {
|
|
425
|
+
type: "review_judgment",
|
|
426
|
+
label: locale?.startsWith("zh") ? "查看" : "Review",
|
|
427
|
+
itemId: item.judgment.inboxItemId
|
|
428
|
+
},
|
|
429
|
+
secondaryActions: []
|
|
430
|
+
}));
|
|
431
|
+
const background = [...informationItems, ...workbench.background].sort((left, right) => right.updatedAt - left.updatedAt).slice(0, 3);
|
|
432
|
+
return {
|
|
433
|
+
...workbench,
|
|
434
|
+
background,
|
|
435
|
+
backgroundCount: workbench.backgroundCount + informationItems.length,
|
|
414
436
|
runningConversations,
|
|
415
437
|
decisions,
|
|
416
438
|
attentionPolicy: governed.policy
|