@xopcai/xopc 0.0.176 → 0.0.177
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-DsFM1upC.js → activity-store-Wu2ikfbM.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DvdMLOga.js → agent-avatar-dicebear-B0_biISn.js} +1 -1
- package/dist/gateway/static/root/assets/agents-TpIpJk59.js +2 -0
- package/dist/gateway/static/root/assets/{api-BdPLCCBm.js → api-DljBt-N5.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DMLDOHul.js → app-management-settings-panel-CKoZRi7Y.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DbI9foFR.js → appearance-settings-DOdXhNDo.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-Cxbn5hy8.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-Dfdxuwvb.js → archive-plugin-D18gyP76.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-Dn3RlnYD.js → attachment-load-CZh9fc8u.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-Bc0Y7A9u.js → automation-suggestion-card-DKrVoiiK.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-DYv16QMU.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-0XtB-xC0.js → binary-plugins-DdSyGL6M.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C4fXWbEE.js → block-editor-BOpNApiX.js} +6 -6
- package/dist/gateway/static/root/assets/{browser-settings-page-lC86-drr.js → browser-settings-page-DlcqaGu1.js} +4 -4
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-CZmzNymN.js → browser-workflow-inputs-C0SnSj_R.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-CBYM9HqG.js → browser-workflows-page-CzlzH7HA.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-QPX4wsGZ.js +7 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-BiJxmmhW.js → capability-presets-api-RM6S7ES5.js} +1 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-DmCeusO8.js +1 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-BKTUZDp-.js → channel-recipient-api-B4sha-30.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-HcKoP1wm.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-D3xr2enH.js +1 -0
- package/dist/gateway/static/root/assets/{connector-logo-Pr4RIKjj.js → connector-logo-BPsKIyoM.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-DwbThFvd.js +2 -0
- package/dist/gateway/static/root/assets/desktop-pet-DjL1GWON.js +1 -0
- package/dist/gateway/static/root/assets/{desktop-pet-settings-CEQacUDF.js → desktop-pet-settings-u_abAXh7.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-DWnxdZtc.js → directory-picker-path-field-BoZGualI.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-D2e2w2Ho.js → dreaming-settings-s3gn3f9h.js} +3 -3
- package/dist/gateway/static/root/assets/{extension-debug-page-BLjTGbv3.js → extension-debug-page-DIbMngCF.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-D2_UC6hy.js → extension-page-D94f2bWQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BsH6o_PX.js → extension-settings-page-B7TI13ex.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-C-DkC6UJ.js → gateway-config-api-Do77rV8R.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-DEOGiimF.js → gateway-settings-Dt1PNJmb.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BlSLh1TF.js → gateway-startup-retry-WaXTw3fi.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-create-dialog-CSFcRE_N.js → goal-create-dialog-DEiOOLGU.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-C1Qj4o1K.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-CcdS9qek.js → goals-config-api-BL0fAEns.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-BAcErdch.js → goals-page-qJDcEDzc.js} +2 -2
- package/dist/gateway/static/root/assets/{goals-settings-BY7crl0z.js → goals-settings-DV3ZlrdI.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-DtTkS0gs.js → heartbeat-settings-C3kzg6ai.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-WGgkbwDZ.js → image-generation-api-BgISY8i-.js} +1 -1
- package/dist/gateway/static/root/assets/{index-2UImfRDC.js → index-C1h0zkNo.js} +65 -65
- package/dist/gateway/static/root/assets/index-Da36E3WH.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-C5lpWQ3f.js → keyboard-shortcuts-settings-0KSmaPu0.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-DcD4mVId.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-b05wWvXG.js → local-apps-page-BMrU8u7w.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-sToMfHX_.js → locale-store-DVGhFXRz.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-cDE1jLJv.js → logs-page-CW5m9Cov.js} +3 -3
- package/dist/gateway/static/root/assets/{markdown-split-0gPVst5y.js → markdown-split-BVqbtN9o.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Rxyq_KTm.js → media-plugins-Dr_wtkNJ.js} +1 -1
- package/dist/gateway/static/root/assets/messages-r8L6Ur3A.js +3 -0
- package/dist/gateway/static/root/assets/{notes-page-DRhNDl_Q.js → notes-page-BWZRXsq6.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-DdnwNz9x.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-cOEOQqHh.js → page-tabs-DWWgy0bF.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BopOLFvu.js → preview-open-alternatives-Bnfs93ZP.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DWVPmmOq.js → product-open-page-BR7QFmT-.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-B8GeS4dl.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DOeu1Hk_.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-De94rxnE.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BfZmKe1t.js → save-bar-controls-BzS-rRTP.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-Cpi4jCRV.js → schedule-field-Cl2IIDAN.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-OXFkcZQe.js → schema-form-BjKjp5eZ.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-A7p8G0OJ.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BsGzjmqx.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-BwqkZCHJ.js → settings-form-section-BSDNBfHn.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-BbqH_S3Y.js → settings-loading-skeleton-BD4peoAv.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-BoxC-JSa.js → settings-page-S-P3U7at.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-Ddu2iGaW.js → settings-page-layout-BQTLh-86.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-z1Lwv0js.js → setup-status-panel-W3p6kNyA.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-CVazOFjy.js → share-preview-page-DQjMxyvw.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-Xo3N99PO.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-ByPEG5t1.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-C019Ml5q.js +2 -0
- package/dist/gateway/static/root/assets/{skills-page.utils-DgyB1tSo.js → skills-page.utils-CXnpudm6.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-BoLSQL65.js → system-settings-panel-BhFwdYJP.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-CBNcGOfj.js → theme-store-DQI-HPL-.js} +1 -1
- package/dist/gateway/static/root/assets/{time-picker-gochWrny.js → time-picker-C0DCya4U.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-DvRnr7YB.js → typed-models-lib-C-M3Fv2N.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-CA9BFVB7.js → use-channel-catalog-Bndq4y4I.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-fYBzpus-.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-v8tgylEZ.js → voice-api-key-field-p_g4UI1-.js} +1 -1
- package/dist/gateway/static/root/assets/work-discovery-page-DI0gCZRw.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-DnBRP2wI.js +1 -0
- package/dist/gateway/static/root/assets/work-page-Z-nUaS_n.js +3 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CC3cJn5k.js → workflow-run-setup-panel-CHEXVvhH.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-BDfwnM-Y.js +11 -0
- package/dist/gateway/static/root/index.html +7 -7
- package/dist/package.js +1 -1
- package/dist/src/automations/service/automation-service.d.ts +3 -0
- package/dist/src/automations/service/automation-service.js +37 -7
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/update.js +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/routes/browser-install.js +1 -1
- package/dist/src/gateway/hono/routes/home.d.ts +18 -2
- package/dist/src/gateway/hono/routes/home.js +19 -0
- package/dist/src/gateway/hono/routes/index.js +2 -2
- package/dist/src/gateway/hono/routes/local-apps.js +1 -1
- package/dist/src/gateway/hono/routes/proactive.d.ts +4 -0
- package/dist/src/gateway/hono/routes/proactive.js +157 -0
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/update.js +2 -2
- package/dist/src/gateway/index.js +1 -1
- package/dist/src/gateway/run-loop.js +1 -1
- package/dist/src/gateway/service.d.ts +10 -1
- package/dist/src/gateway/service.js +36 -36
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/gateway-processes.js +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/update-runner.js +2 -2
- package/dist/src/infra/update-startup.js +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/mobile/notification-service.d.ts +1 -0
- package/dist/src/mobile/notification-service.js +38 -18
- package/dist/src/mobile/notification-types.d.ts +2 -2
- package/dist/src/proactive/events/envelope.d.ts +2 -0
- package/dist/src/proactive/events/envelope.js +54 -0
- package/dist/src/proactive/events/publisher.d.ts +4 -0
- package/dist/src/proactive/events/repository.d.ts +9 -0
- package/dist/src/proactive/events/repository.js +62 -0
- package/dist/src/proactive/events/types.d.ts +44 -0
- package/dist/src/proactive/events/types.js +15 -0
- package/dist/src/proactive/execution/agent-executor.d.ts +16 -0
- package/dist/src/proactive/execution/agent-executor.js +104 -0
- package/dist/src/proactive/execution/context.d.ts +31 -0
- package/dist/src/proactive/execution/context.js +72 -0
- package/dist/src/proactive/execution/insight.d.ts +4 -0
- package/dist/src/proactive/execution/insight.js +74 -0
- package/dist/src/proactive/execution/repository.d.ts +23 -0
- package/dist/src/proactive/execution/repository.js +122 -0
- package/dist/src/proactive/execution/types.d.ts +54 -0
- package/dist/src/proactive/execution/types.js +1 -0
- package/dist/src/proactive/execution/worker.d.ts +15 -0
- package/dist/src/proactive/execution/worker.js +96 -0
- package/dist/src/proactive/inbox/repository.d.ts +24 -0
- package/dist/src/proactive/inbox/repository.js +117 -0
- package/dist/src/proactive/inbox/service.d.ts +17 -0
- package/dist/src/proactive/inbox/service.js +22 -0
- package/dist/src/proactive/inbox/types.d.ts +38 -0
- package/dist/src/proactive/inbox/types.js +1 -0
- package/dist/src/proactive/inbox/worker.d.ts +12 -0
- package/dist/src/proactive/inbox/worker.js +56 -0
- package/dist/src/proactive/index.d.ts +17 -0
- package/dist/src/proactive/index.js +11 -0
- package/dist/src/proactive/routing/batch-repository.d.ts +27 -0
- package/dist/src/proactive/routing/batch-repository.js +56 -0
- package/dist/src/proactive/routing/matcher.d.ts +5 -0
- package/dist/src/proactive/routing/matcher.js +56 -0
- package/dist/src/proactive/routing/types.d.ts +44 -0
- package/dist/src/proactive/routing/types.js +1 -0
- package/dist/src/proactive/scenarios/prompt-composer.d.ts +14 -0
- package/dist/src/proactive/scenarios/prompt-composer.js +24 -0
- package/dist/src/proactive/scenarios/repository.d.ts +23 -0
- package/dist/src/proactive/scenarios/repository.js +162 -0
- package/dist/src/proactive/scenarios/service.d.ts +15 -0
- package/dist/src/proactive/scenarios/service.js +26 -0
- package/dist/src/proactive/scenarios/types.d.ts +36 -0
- package/dist/src/proactive/scenarios/types.js +1 -0
- package/dist/src/proactive/service.d.ts +18 -0
- package/dist/src/proactive/service.js +61 -0
- package/dist/src/projects/project-service.d.ts +3 -1
- package/dist/src/projects/project-service.js +62 -32
- package/dist/src/storage/sqlite/migrations/068_proactive_event_spine.sql +71 -0
- package/dist/src/storage/sqlite/migrations/069_proactive_scenario_control.sql +69 -0
- package/dist/src/storage/sqlite/migrations/070_proactive_execution.sql +55 -0
- package/dist/src/storage/sqlite/migrations/071_proactive_inbox.sql +45 -0
- package/dist/src/storage/sqlite/migrations/072_proactive_judgments.sql +14 -0
- package/dist/src/storage/sqlite/migrations/073_enable_default_proactive_scenarios.sql +13 -0
- package/dist/src/storage/sqlite/migrations/074_deduplicate_blocked_work_routing.sql +5 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/work-discovery/thread-service.d.ts +1 -3
- package/dist/src/work-discovery/thread-service.js +13 -25
- package/dist/src/work-items/work-item-service.d.ts +3 -1
- package/dist/src/work-items/work-item-service.js +67 -36
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/agents-BVjlpbeZ.js +0 -2
- package/dist/gateway/static/root/assets/api-Bop4IQRW.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-njqxLWYD.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-D-eweHZJ.js +0 -6
- package/dist/gateway/static/root/assets/capabilities-settings-panel-6tYNfHqJ.js +0 -7
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-Co-ymbd9.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-D46eVjaQ.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-BMRAO4zZ.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-Dw1eYbRi.js +0 -2
- package/dist/gateway/static/root/assets/copy-VueTIC2x.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-B8cZuQUt.js +0 -1
- package/dist/gateway/static/root/assets/focus-detail-page-BBXUtxRB.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-VjRArfAJ.js +0 -4
- package/dist/gateway/static/root/assets/index-CS9sVShT.css +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Cl0fcPL4.js +0 -2
- package/dist/gateway/static/root/assets/messages-CarlxqXV.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-BKNBk0Uf.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-BhjEXNQW.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-B80e69PH.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CwdVob6H.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BGt3Asj6.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BnTdM9Nn.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-C4lXuyQj.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DSuIDkeI.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-xgZczqVe.js +0 -2
- package/dist/gateway/static/root/assets/user-context-page-CEfIy4WZ.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-B-3MClaf.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-CEsFEdax.js +0 -1
- package/dist/gateway/static/root/assets/work-page-CT9AHnq6.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-C-1-_Zp1.js +0 -11
- package/dist/src/focuses/candidate-repository.d.ts +0 -15
- package/dist/src/focuses/candidate-repository.js +0 -91
- package/dist/src/focuses/index.d.ts +0 -7
- package/dist/src/focuses/index.js +0 -7
- package/dist/src/focuses/insight-repository.d.ts +0 -22
- package/dist/src/focuses/insight-repository.js +0 -77
- package/dist/src/focuses/prompts.d.ts +0 -2
- package/dist/src/focuses/prompts.js +0 -18
- package/dist/src/focuses/reconciler.d.ts +0 -5
- package/dist/src/focuses/reconciler.js +0 -26
- package/dist/src/focuses/repository.d.ts +0 -61
- package/dist/src/focuses/repository.js +0 -214
- package/dist/src/focuses/run-processor.d.ts +0 -18
- package/dist/src/focuses/run-processor.js +0 -162
- package/dist/src/focuses/service.d.ts +0 -42
- package/dist/src/focuses/service.js +0 -241
- package/dist/src/focuses/types.d.ts +0 -89
- package/dist/src/gateway/hono/routes/focuses.d.ts +0 -3
- package/dist/src/gateway/hono/routes/focuses.js +0 -319
- /package/dist/src/{focuses/types.js → proactive/events/publisher.js} +0 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
CREATE TABLE proactive_inbox_items (
|
|
2
|
+
inbox_item_id TEXT PRIMARY KEY,
|
|
3
|
+
insight_id TEXT NOT NULL UNIQUE,
|
|
4
|
+
status TEXT NOT NULL CHECK (status IN ('unread', 'read', 'snoozed', 'resolved')),
|
|
5
|
+
snoozed_until TEXT,
|
|
6
|
+
resolution TEXT,
|
|
7
|
+
created_at TEXT NOT NULL,
|
|
8
|
+
updated_at TEXT NOT NULL,
|
|
9
|
+
FOREIGN KEY (insight_id) REFERENCES proactive_insights(insight_id) ON DELETE CASCADE
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
CREATE TABLE proactive_decisions (
|
|
13
|
+
decision_id TEXT PRIMARY KEY,
|
|
14
|
+
inbox_item_id TEXT NOT NULL,
|
|
15
|
+
choice TEXT NOT NULL,
|
|
16
|
+
note TEXT NOT NULL,
|
|
17
|
+
created_at TEXT NOT NULL,
|
|
18
|
+
FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
CREATE TABLE proactive_delivery_outbox (
|
|
22
|
+
delivery_id TEXT PRIMARY KEY,
|
|
23
|
+
inbox_item_id TEXT NOT NULL UNIQUE,
|
|
24
|
+
status TEXT NOT NULL CHECK (status IN ('pending', 'delivering', 'delivered', 'retryable', 'failed')),
|
|
25
|
+
attempt INTEGER NOT NULL DEFAULT 0 CHECK (attempt >= 0),
|
|
26
|
+
next_attempt_at TEXT NOT NULL,
|
|
27
|
+
lease_expires_at TEXT,
|
|
28
|
+
error_message TEXT,
|
|
29
|
+
created_at TEXT NOT NULL,
|
|
30
|
+
delivered_at TEXT,
|
|
31
|
+
updated_at TEXT NOT NULL,
|
|
32
|
+
FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
CREATE TABLE proactive_feedback (
|
|
36
|
+
feedback_id TEXT PRIMARY KEY,
|
|
37
|
+
inbox_item_id TEXT NOT NULL,
|
|
38
|
+
rating TEXT NOT NULL CHECK (rating IN ('useful', 'not_useful')),
|
|
39
|
+
note TEXT NOT NULL,
|
|
40
|
+
created_at TEXT NOT NULL,
|
|
41
|
+
FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE INDEX idx_proactive_inbox_status ON proactive_inbox_items(status, updated_at DESC);
|
|
45
|
+
CREATE INDEX idx_proactive_outbox_ready ON proactive_delivery_outbox(status, next_attempt_at);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
ALTER TABLE proactive_insights ADD COLUMN work_done TEXT NOT NULL DEFAULT '';
|
|
2
|
+
ALTER TABLE proactive_insights ADD COLUMN decision_json TEXT;
|
|
3
|
+
|
|
4
|
+
CREATE TABLE proactive_instruction_feedback (
|
|
5
|
+
instruction_id TEXT PRIMARY KEY,
|
|
6
|
+
inbox_item_id TEXT NOT NULL,
|
|
7
|
+
prompt_revision_id TEXT NOT NULL,
|
|
8
|
+
instruction TEXT NOT NULL,
|
|
9
|
+
created_at TEXT NOT NULL,
|
|
10
|
+
FOREIGN KEY (inbox_item_id) REFERENCES proactive_inbox_items(inbox_item_id) ON DELETE CASCADE,
|
|
11
|
+
FOREIGN KEY (prompt_revision_id) REFERENCES proactive_prompt_revisions(revision_id)
|
|
12
|
+
);
|
|
13
|
+
|
|
14
|
+
CREATE INDEX idx_proactive_instruction_item ON proactive_instruction_feedback(inbox_item_id, created_at DESC);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
INSERT OR IGNORE INTO proactive_scenario_subscriptions (
|
|
2
|
+
subscription_id,
|
|
3
|
+
scenario_key,
|
|
4
|
+
workspace_id,
|
|
5
|
+
scope_kind,
|
|
6
|
+
scope_id,
|
|
7
|
+
enabled,
|
|
8
|
+
created_at,
|
|
9
|
+
updated_at
|
|
10
|
+
) VALUES
|
|
11
|
+
('default-project-delivery-risk', 'project_delivery_risk', 'default', 'workspace', 'default', 1, datetime('now'), datetime('now')),
|
|
12
|
+
('default-blocked-work', 'blocked_work', 'default', 'workspace', 'default', 1, datetime('now'), datetime('now')),
|
|
13
|
+
('default-automation-failure-impact', 'automation_failure_impact', 'default', 'workspace', 'default', 1, datetime('now'), datetime('now'));
|
|
@@ -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 = 74;
|
|
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 = 74;
|
|
16
16
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
17
17
|
function resolveMigrationsDir(override) {
|
|
18
18
|
if (override) return override;
|
|
@@ -46,7 +46,7 @@ function applySingleMigration(db, migration) {
|
|
|
46
46
|
* Each step runs in its own transaction and updates schema_meta on success.
|
|
47
47
|
*/
|
|
48
48
|
function applyPendingMigrations(db, options = {}) {
|
|
49
|
-
const targetVersion = options.targetVersion ??
|
|
49
|
+
const targetVersion = options.targetVersion ?? 74;
|
|
50
50
|
let currentVersion = readSchemaVersion(db);
|
|
51
51
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
52
52
|
if (currentVersion >= targetVersion) return currentVersion;
|
|
@@ -62,7 +62,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
62
62
|
}
|
|
63
63
|
/** Inspect schema version without mutating the database. */
|
|
64
64
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
65
|
-
const appVersion = options.targetVersion ??
|
|
65
|
+
const appVersion = options.targetVersion ?? 74;
|
|
66
66
|
const dbVersion = readSchemaVersion(db);
|
|
67
67
|
if (dbVersion > appVersion) return {
|
|
68
68
|
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 = 74;
|
|
23
23
|
|
|
24
24
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
25
25
|
|
|
@@ -31,7 +31,7 @@ function ensureXopcDatabaseSchema(db) {
|
|
|
31
31
|
bootstrapFreshDatabase(db);
|
|
32
32
|
currentVersion = 11;
|
|
33
33
|
}
|
|
34
|
-
applyPendingMigrations(db, { targetVersion:
|
|
34
|
+
applyPendingMigrations(db, { targetVersion: 74 });
|
|
35
35
|
}
|
|
36
36
|
//#endregion
|
|
37
37
|
export { SCHEMA_META_SCHEMA_VERSION_KEY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, ensureSchemaMetaTable, ensureXopcDatabaseSchema, readSchemaVersion, readSchemaVersionForTest, setSchemaVersion };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { WorkContextSnapshot, WorkDiscoveryResult, WorkUnderstandingEvidenceItem, WorkUnderstandingThread } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Discovery
|
|
4
|
-
* The legacy thread-shaped return value remains local to the discovery result renderer; it is
|
|
5
|
-
* not a second persisted domain model.
|
|
3
|
+
* Discovery returns bounded suggestions for the current result only.
|
|
6
4
|
*/
|
|
7
5
|
export declare function persistWorkThreadsFromDiscovery(input: {
|
|
8
6
|
projectId: string;
|
|
@@ -1,50 +1,38 @@
|
|
|
1
|
-
import { upsertFocusCandidate } from "../focuses/candidate-repository.js";
|
|
2
1
|
//#region src/work-discovery/thread-service.ts
|
|
3
2
|
function confidenceValue(value) {
|
|
4
3
|
return value === "high" ? .9 : value === "medium" ? .72 : .55;
|
|
5
4
|
}
|
|
6
5
|
/**
|
|
7
|
-
* Discovery
|
|
8
|
-
* The legacy thread-shaped return value remains local to the discovery result renderer; it is
|
|
9
|
-
* not a second persisted domain model.
|
|
6
|
+
* Discovery returns bounded suggestions for the current result only.
|
|
10
7
|
*/
|
|
11
8
|
function persistWorkThreadsFromDiscovery(input) {
|
|
12
9
|
const nowMs = input.nowMs ?? Date.now();
|
|
13
10
|
return (input.result.workThreadCandidates ?? []).flatMap((candidate) => {
|
|
14
|
-
|
|
11
|
+
if (candidate.evidenceRefs.flatMap((ref) => {
|
|
15
12
|
const item = input.evidence.find((entry) => entry.sourceRef === ref);
|
|
16
13
|
return item ? [{
|
|
17
14
|
label: item.observation.slice(0, 300),
|
|
18
15
|
source: item.sourceRef
|
|
19
16
|
}] : [];
|
|
20
|
-
});
|
|
21
|
-
if (evidence.length === 0) return [];
|
|
17
|
+
}).length === 0) return [];
|
|
22
18
|
const canonicalKey = `${input.projectId}:${candidate.horizon}:${candidate.topicKey}`.slice(0, 300);
|
|
23
|
-
const
|
|
19
|
+
const confidence = confidenceValue(candidate.confidence);
|
|
20
|
+
return [{
|
|
21
|
+
id: canonicalKey,
|
|
24
22
|
canonicalKey,
|
|
25
23
|
title: candidate.title,
|
|
26
24
|
summary: candidate.summary,
|
|
27
|
-
confidence: confidenceValue(candidate.confidence),
|
|
28
|
-
evidence,
|
|
29
|
-
projectIds: [input.projectId],
|
|
30
|
-
nowMs
|
|
31
|
-
});
|
|
32
|
-
return [{
|
|
33
|
-
id: stored.id,
|
|
34
|
-
canonicalKey,
|
|
35
|
-
title: stored.title,
|
|
36
|
-
summary: stored.summary,
|
|
37
25
|
status: candidate.status,
|
|
38
26
|
horizon: candidate.horizon,
|
|
39
|
-
focusScore: Math.round(
|
|
40
|
-
confidence
|
|
27
|
+
focusScore: Math.round(confidence * 100),
|
|
28
|
+
confidence,
|
|
41
29
|
userStatus: "unreviewed",
|
|
42
|
-
projectIds:
|
|
30
|
+
projectIds: [input.projectId],
|
|
43
31
|
evidenceIds: [],
|
|
44
|
-
firstObservedAt:
|
|
45
|
-
lastObservedAt:
|
|
46
|
-
createdAt:
|
|
47
|
-
updatedAt:
|
|
32
|
+
firstObservedAt: nowMs,
|
|
33
|
+
lastObservedAt: nowMs,
|
|
34
|
+
createdAt: nowMs,
|
|
35
|
+
updatedAt: nowMs
|
|
48
36
|
}];
|
|
49
37
|
});
|
|
50
38
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { MediaRef } from '../media/types.js';
|
|
2
|
+
import type { ProactiveSignalPublisher } from '../proactive/events/publisher.js';
|
|
2
3
|
import { WorkItemStore } from './work-item-store.js';
|
|
3
4
|
import type { CreateWorkItemUpdateSuggestionInput, CreateWorkItemInput, UpdateWorkItemInput, WorkItem, WorkItemAttachment, WorkItemEvent, WorkItemLink, WorkItemListQuery, WorkItemListResult, WorkItemUpdateSuggestion, WorkItemUpdateSuggestionStatus } from './types.js';
|
|
4
5
|
export declare const WORK_ITEM_ATTACHMENT_MAX_BYTES: number;
|
|
@@ -6,7 +7,8 @@ export declare const WORK_ITEM_ATTACHMENT_MAX_COUNT = 10;
|
|
|
6
7
|
export declare const WORK_ITEM_ATTACHMENT_UPLOAD_BODY_MAX_BYTES: number;
|
|
7
8
|
export declare class WorkItemService {
|
|
8
9
|
private readonly store;
|
|
9
|
-
|
|
10
|
+
private readonly signals?;
|
|
11
|
+
constructor(store?: WorkItemStore, signals?: ProactiveSignalPublisher);
|
|
10
12
|
listProjectWorkItems(projectId: string, query?: WorkItemListQuery): WorkItemListResult;
|
|
11
13
|
listWorkItems(query?: WorkItemListQuery): WorkItemListResult;
|
|
12
14
|
createProjectWorkItem(projectId: string, input: CreateWorkItemInput): WorkItem;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import { runSqliteWriteTransaction } from "../storage/sqlite/transaction.js";
|
|
1
2
|
import { changedFieldsFromPatch, emitActivity, systemActivityActor, systemActivitySource } from "../activity/emitter.js";
|
|
2
3
|
import { deleteMediaBuffer, mimeTypeFromMediaPath, saveMediaBuffer } from "../media/store.js";
|
|
3
4
|
import { readMediaReference } from "../media/media-reference.js";
|
|
4
5
|
import { WorkItemStore } from "./work-item-store.js";
|
|
6
|
+
import { createHash } from "node:crypto";
|
|
5
7
|
//#region src/work-items/work-item-service.ts
|
|
6
8
|
const WORK_ITEM_ATTACHMENT_MAX_BYTES = 25 * 1024 * 1024;
|
|
7
9
|
const WORK_ITEM_ATTACHMENT_MAX_COUNT = 10;
|
|
@@ -16,8 +18,9 @@ function attachmentTypeForMediaRef(attachment) {
|
|
|
16
18
|
return attachment.type === "file" ? "document" : attachment.type;
|
|
17
19
|
}
|
|
18
20
|
var WorkItemService = class {
|
|
19
|
-
constructor(store = new WorkItemStore()) {
|
|
21
|
+
constructor(store = new WorkItemStore(), signals) {
|
|
20
22
|
this.store = store;
|
|
23
|
+
this.signals = signals;
|
|
21
24
|
}
|
|
22
25
|
listProjectWorkItems(projectId, query = {}) {
|
|
23
26
|
return this.store.list(projectId, query);
|
|
@@ -62,42 +65,70 @@ var WorkItemService = class {
|
|
|
62
65
|
return this.store.get(id);
|
|
63
66
|
}
|
|
64
67
|
updateWorkItem(id, patch) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
68
|
+
return runSqliteWriteTransaction(() => {
|
|
69
|
+
const before = this.store.get(id);
|
|
70
|
+
if (!before) return null;
|
|
71
|
+
const after = this.store.update(id, patch);
|
|
72
|
+
if (!after) return null;
|
|
73
|
+
if (before.status !== after.status) this.store.addEvent(id, "status_changed", {
|
|
74
|
+
from: before.status,
|
|
75
|
+
to: after.status
|
|
76
|
+
});
|
|
77
|
+
else this.store.addEvent(id, "updated", patch);
|
|
78
|
+
if (!before.archivedAt && after.archivedAt) this.store.addEvent(id, "archived", { archivedAt: after.archivedAt });
|
|
79
|
+
const type = !before.archivedAt && after.archivedAt ? "work_item.archived" : before.status !== after.status ? "work_item.status_changed" : "work_item.updated";
|
|
80
|
+
const changes = changedFieldsFromPatch(patch);
|
|
81
|
+
emitActivity({
|
|
82
|
+
type,
|
|
83
|
+
primaryObject: {
|
|
84
|
+
kind: "work_item",
|
|
85
|
+
id: after.id,
|
|
86
|
+
title: after.title
|
|
87
|
+
},
|
|
88
|
+
actor: systemActivityActor(),
|
|
89
|
+
source: systemActivitySource(),
|
|
90
|
+
payload: {
|
|
91
|
+
changes,
|
|
92
|
+
...type === "work_item.status_changed" ? {
|
|
93
|
+
from: before.status,
|
|
94
|
+
to: after.status
|
|
95
|
+
} : {},
|
|
96
|
+
...type === "work_item.archived" ? { archivedAt: after.archivedAt } : {}
|
|
97
|
+
},
|
|
98
|
+
scopes: [{
|
|
99
|
+
scopeKind: "project",
|
|
100
|
+
scopeId: after.projectId,
|
|
101
|
+
reason: "object_owner"
|
|
102
|
+
}],
|
|
103
|
+
nowMs: after.updatedAt
|
|
104
|
+
});
|
|
105
|
+
this.signals?.publish({
|
|
106
|
+
type: before.status !== after.status ? "work_item.status_changed.v1" : "work_item.updated.v1",
|
|
107
|
+
schemaVersion: 1,
|
|
108
|
+
source: {
|
|
109
|
+
kind: "work_items",
|
|
110
|
+
id: "local"
|
|
111
|
+
},
|
|
112
|
+
subject: {
|
|
113
|
+
kind: "work_item",
|
|
114
|
+
id: after.id
|
|
115
|
+
},
|
|
116
|
+
actor: { kind: "system" },
|
|
117
|
+
scope: {
|
|
118
|
+
workspaceId: "default",
|
|
119
|
+
projectId: after.projectId
|
|
120
|
+
},
|
|
121
|
+
occurredAt: new Date(after.updatedAt).toISOString(),
|
|
122
|
+
dedupeKey: `work_item:${after.id}:${after.updatedAt}:${createHash("sha256").update(JSON.stringify(patch)).digest("hex")}`,
|
|
123
|
+
sensitivity: "personal",
|
|
124
|
+
payload: {
|
|
125
|
+
before,
|
|
126
|
+
after,
|
|
127
|
+
changes
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
return after;
|
|
99
131
|
});
|
|
100
|
-
return after;
|
|
101
132
|
}
|
|
102
133
|
addLink(workItemId, input, eventType = "link_added") {
|
|
103
134
|
if (!this.store.get(workItemId)) return null;
|
package/package.json
CHANGED