@xopcai/xopc 0.0.249 → 0.0.250
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-BN6FJXkJ.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C7rZH1A2.js +1 -0
- package/dist/gateway/static/root/assets/{agents-DK9HjHO0.js → agents-CgGaoo4z.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-D2gMshuS.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-CFggS95Y.js → appearance-settings-wMu0jSKx.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-jOvT-fzU.js → apps-page-KF1Gnv36.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-BQrilVVv.js → archive-plugin-u6EE3JV8.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BG0BliqV.js → attachment-load-DbJurnv-.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-Bo4RiTkh.js → automations-page-Ew_e5HDn.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-Ch-ldu35.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-BCnyNU0C.js → binary-plugins-DtDFNfPM.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Db8DlVvg.js → block-editor-CnAwmabq.js} +50 -50
- package/dist/gateway/static/root/assets/browser-settings-page-DtVhsHJW.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-CcbUOWDF.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel--sXeylhe.js +7 -0
- package/dist/gateway/static/root/assets/channels-settings-AXSBDujZ.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-CryTDNdD.js} +2 -2
- package/dist/gateway/static/root/assets/connectors-page-HBHUWohz.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-D-F9vjtE.js → cron-expression-ji5aWrjG.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-B2OoYvic.js → date-picker-Dro_w3eX.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-BiGx9Sbj.js → dependency-picker-Ce19KKnX.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-BNMRqipe.js → desktop-pet-DsSi-3uZ.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DeYbIV7A.js → desktop-pet-settings-8WQ4woJy.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-COyn05ub.js → extension-debug-page-CgvEBfLZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-oH43chS2.js → extension-page-DkznBbMj.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BMO59994.js → extension-settings-page-BOjhchK2.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-OEruhhX3.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-BgH3A0LO.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-C97naDkO.js +1 -0
- package/dist/gateway/static/root/assets/home-page-BBKKme4G.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-BcaF-dgQ.js +72 -0
- package/dist/gateway/static/root/assets/{index-DGeGmj4k.css → index-DAryGvZ7.css} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D8Zw_lYd.js → keyboard-shortcuts-settings-BYhfzsqe.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-eBFVWmtH.js → local-app-workbench-page-DNncc2tn.js} +2 -2
- package/dist/gateway/static/root/assets/{local-apps-page-CvPDPRwb.js → local-apps-page-vBlknU7C.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-ClvcWlL6.js → logs-page-CizZInrT.js} +2 -2
- package/dist/gateway/static/root/assets/{management-settings-D8moh99U.js → management-settings-Dnx6mSNe.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-D7V3j0vE.js → markdown-split-DtBtcHWi.js} +1 -1
- 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-DrMYeHe7.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-AKgGy3Kx.js} +1 -1
- package/dist/gateway/static/root/assets/note-detail-panel-Bw3jD9Jf.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-Dpqq7Z-J.js +8 -0
- package/dist/gateway/static/root/assets/{page-tabs-BFMGjA60.js → page-tabs-CX9T71by.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DNEWZN7H.js → preview-open-alternatives-DvEHoimN.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-BuT6MCTs.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DXWMxOjf.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-7rBCUWzZ.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-C0ByNmlV.js → runtime-tools-settings-panel-CQ13P-mS.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-Dq_VQpuY.js → schema-form-BUVyTpZj.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-gmEOYNb4.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DYYoJcl7.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-CZu6FX4k.js → settings-form-section-DVY-8_B9.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-S8ekeUZd.js → settings-page-CdiVYyTl.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BdVmwXMv.js → setup-status-panel-BhenBnUj.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-D2fEidbn.js → share-preview-page-C88YLKm4.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-Dq7xIj0_.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-MDI9Lz6z.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-AYiPlgZE.js → skills-page-DLir1nM0.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DGzl-ib-.js → skills-page.utils-BMZAfS3G.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-5Xd5mIiR.js → system-settings-panel-BM8ivYan.js} +1 -1
- package/dist/gateway/static/root/assets/task-detail-page-P0_RldWv.js +1 -0
- 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-DemxChjo.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-czRI0NBc.js → use-autosave-CV3Ui5hu.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-CxfnoRVn.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-8YEvA3cU.js → voice-api-key-field-CUoCi4Sq.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-BhDlkCMB.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-Dy5WgYMO.js → workflow-run-setup-panel-D8CcPc_C.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-Bxn2Dc16.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 +46 -28
- 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/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/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/inbound/attachment-pipeline.js +5 -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/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/automations/service/automation-service.d.ts +2 -1
- package/dist/src/automations/service/automation-service.js +6 -2
- package/dist/src/cli/commands/doctor/checks/database-schema.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/files/file-service.js +4 -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/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/run-gateway-agent.js +1 -1
- package/dist/src/gateway/service/session-input-coordinator.js +1 -1
- package/dist/src/gateway/service.js +8 -4
- 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/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/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/package.json +3 -3
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-C1rXNUAG.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/connectors-page-CT_I3kbR.js +0 -2
- package/dist/gateway/static/root/assets/files-D6vf3S30.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-DNhrZHqx.js +0 -1
- package/dist/gateway/static/root/assets/home-page-BiHwiBnQ.js +0 -1
- package/dist/gateway/static/root/assets/index-aBs0EfQB.js +0 -72
- 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/task-detail-page-BQAUaCDD.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
|
@@ -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
|
|
@@ -18,6 +18,8 @@ export declare function isInQuietHours(quietHours: QuietHours | undefined, now?:
|
|
|
18
18
|
export declare function nextQuietHoursEnd(quietHours: QuietHours | undefined, now?: Date): Date | undefined;
|
|
19
19
|
export declare class ProjectMonitoringService {
|
|
20
20
|
#private;
|
|
21
|
+
private readonly workspaceId;
|
|
22
|
+
constructor(workspaceId?: string);
|
|
21
23
|
get(projectId: string): ProjectMonitoringPolicy;
|
|
22
24
|
configure(input: {
|
|
23
25
|
projectId: string;
|
|
@@ -61,6 +61,9 @@ function nextQuietHoursEnd(quietHours, now = /* @__PURE__ */ new Date()) {
|
|
|
61
61
|
}
|
|
62
62
|
var ProjectMonitoringService = class {
|
|
63
63
|
#scenarios = new ProactiveScenarioService();
|
|
64
|
+
constructor(workspaceId = "default") {
|
|
65
|
+
this.workspaceId = workspaceId;
|
|
66
|
+
}
|
|
64
67
|
get(projectId) {
|
|
65
68
|
const row = getSqliteDatabase().prepare("SELECT * FROM project_monitoring_policies WHERE project_id = ?").get(projectId);
|
|
66
69
|
const scenarios = this.#scenarios.subscriptions().filter((item) => item.scopeKind === "project" && item.scopeId === projectId && item.enabled).map((item) => item.scenarioKey).sort();
|
|
@@ -100,7 +103,7 @@ var ProjectMonitoringService = class {
|
|
|
100
103
|
if (!selected.has(scenario) && !existingSubscriptions.has(scenario)) continue;
|
|
101
104
|
this.#scenarios.subscribe({
|
|
102
105
|
scenarioKey: scenario,
|
|
103
|
-
workspaceId:
|
|
106
|
+
workspaceId: this.workspaceId,
|
|
104
107
|
scopeKind: "project",
|
|
105
108
|
scopeId: input.projectId,
|
|
106
109
|
enabled: selected.has(scenario)
|
|
@@ -2,8 +2,8 @@ import { createLogger } from "../../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { openXopcDatabase } from "../../storage/sqlite/connection.js";
|
|
4
4
|
import { init_agent_session_key, resolveAgentIdFromSessionKey } from "../../routing/agent-session-key.js";
|
|
5
|
-
import { getSessionMetadata } from "../../storage/sqlite/session-repository.js";
|
|
6
5
|
import { appendComposerInputHistory, listComposerInputHistory } from "../../storage/sqlite/composer-input-history-repository.js";
|
|
6
|
+
import { getSessionMetadata } from "../../storage/sqlite/session-repository.js";
|
|
7
7
|
import "../../storage/sqlite/index.js";
|
|
8
8
|
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
9
9
|
import { init_agent_scope, listAgentEntries, normalizeAgentId } from "../../agent/agent-scope.js";
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Config } from '../config/schema.js';
|
|
2
|
+
import type { KnowledgeSource } from '../knowledge-memory/index.js';
|
|
3
|
+
export interface UserContextSessionAccess {
|
|
4
|
+
enabled: boolean;
|
|
5
|
+
userModel: boolean;
|
|
6
|
+
knowledge: boolean;
|
|
7
|
+
crossSessionHistory: boolean;
|
|
8
|
+
knowledgeSources: readonly KnowledgeSource[];
|
|
9
|
+
}
|
|
10
|
+
/** One policy boundary for every shared-context read and write path. */
|
|
11
|
+
export declare function resolveUserContextSessionAccess(config: Config | undefined, sessionKey: string | undefined): UserContextSessionAccess;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { getSessionConfig } from "../storage/sqlite/config-repository.js";
|
|
2
|
+
import { init_session_key, parseSessionKey } from "../routing/session-key.js";
|
|
3
|
+
//#region src/user-context/access-policy.ts
|
|
4
|
+
init_session_key();
|
|
5
|
+
/** One policy boundary for every shared-context read and write path. */
|
|
6
|
+
function resolveUserContextSessionAccess(config, sessionKey) {
|
|
7
|
+
if (!config || !sessionKey) return {
|
|
8
|
+
enabled: false,
|
|
9
|
+
userModel: false,
|
|
10
|
+
knowledge: false,
|
|
11
|
+
crossSessionHistory: false,
|
|
12
|
+
knowledgeSources: []
|
|
13
|
+
};
|
|
14
|
+
const session = parseSessionKey(sessionKey);
|
|
15
|
+
const mode = getSessionConfig(sessionKey)?.userContextMode ?? "enabled";
|
|
16
|
+
const enabled = Boolean(config.userContext.enabled && session?.peerKind === "direct" && mode === "enabled");
|
|
17
|
+
return {
|
|
18
|
+
enabled,
|
|
19
|
+
userModel: enabled && config.userContext.userModel.enabled,
|
|
20
|
+
knowledge: enabled && config.userContext.knowledgeMemory.enabled,
|
|
21
|
+
crossSessionHistory: enabled,
|
|
22
|
+
knowledgeSources: enabled && config.userContext.knowledgeMemory.enabled ? config.userContext.knowledgeMemory.sources : []
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
//#endregion
|
|
26
|
+
export { resolveUserContextSessionAccess };
|
|
@@ -22,6 +22,16 @@ export interface UserModelCaptureResult {
|
|
|
22
22
|
kind: string;
|
|
23
23
|
status: AssertionStatus;
|
|
24
24
|
}>;
|
|
25
|
+
createdGoals: Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
title: string;
|
|
28
|
+
status: 'proposed' | 'active';
|
|
29
|
+
}>;
|
|
30
|
+
createdRules: Array<{
|
|
31
|
+
id: string;
|
|
32
|
+
statement: string;
|
|
33
|
+
status: 'active' | 'disabled';
|
|
34
|
+
}>;
|
|
25
35
|
outputs: Array<{
|
|
26
36
|
candidateKey: string;
|
|
27
37
|
assertionId?: string;
|