@xopcai/xopc 0.0.170 → 0.0.172
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-CkUp1qvf.js → activity-store-C3Y-bESI.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-DDuem4HM.js → agent-avatar-dicebear-CPyev9P7.js} +1 -1
- package/dist/gateway/static/root/assets/agents-Bf_kK2Ay.js +2 -0
- package/dist/gateway/static/root/assets/{api-BnuPQhJW.js → api-B7qEr_Rw.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DdZw8Hi1.js → app-management-settings-panel-Br_9-7fs.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BN8Vk2bX.js → appearance-settings-uyLcRPai.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-DXFCP5-1.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-C82MaDQj.js → archive-plugin-B19REnR5.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-uilrwSdW.js → attachment-load-DLWCC4Yi.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-CkDZjAmy.js → automation-suggestion-card-ky5S5lly.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-D8pT1o2O.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-B7NTL0_T.js → binary-plugins-CtPEzLlo.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-D_LDNlB-.js → block-editor-CQVR4Xij.js} +32 -32
- package/dist/gateway/static/root/assets/browser-settings-page-Bav_skKN.js +8 -0
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-UFVUzn4v.js → browser-workflow-inputs-CimCGbhq.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-CGgC0N92.js → browser-workflows-page-DewuCw3p.js} +2 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-BHaYYo9E.js +7 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-DUIorGUd.js → capability-presets-api-B5RTs-Az.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-PTz00nR4.js → capability-presets-settings-panel-BgchTh81.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-BYwSB8c6.js → channel-recipient-api-Czu0YzIZ.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BP0e62wt.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-DBWKfeGe.js +1 -0
- package/dist/gateway/static/root/assets/connector-logo-Di3gnR_D.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-CC5kh0de.js +2 -0
- package/dist/gateway/static/root/assets/{desktop-pet-CkT98fPT.js → desktop-pet-D-ZUNHhn.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DkbIzdA3.js → desktop-pet-settings-C3L6AI8_.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-dBQvj1sG.js → directory-picker-path-field-Dvq4iG6P.js} +1 -1
- package/dist/gateway/static/root/assets/dreaming-settings-D9i54kWO.js +3 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-BfxoIiNo.js → extension-debug-page-BecQjU0J.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-EIJ3wIb7.js → extension-page-BeVkPSm-.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DBBec51N.js → extension-settings-page-DMoo2mKx.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-4_u53Ufq.js → gateway-config-api-Bthb3_6v.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-v9kJM59H.js → gateway-settings-Bh8nPvJQ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-CXITih5d.js → gateway-startup-retry-D3USVm9D.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-Dp0AyDHI.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-CNt7nrdS.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-D54YQPon.js → goals-config-api-C_2QWBtb.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-Bm_NZFiZ.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-DDezXaVi.js → goals-settings-DhL643tc.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-CRsIUeZN.js → heartbeat-settings-COVFwp7C.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-CY6cQUHL.js → image-generation-api-BNQlnwpU.js} +1 -1
- package/dist/gateway/static/root/assets/index-C_XSKOH6.css +1 -0
- package/dist/gateway/static/root/assets/{index-Dfq2laZe.js → index-DUasAutC.js} +67 -67
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-D9k7EDdY.js → keyboard-shortcuts-settings-DfdJRJVy.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-DZwkD1co.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-DbaiBolh.js → local-apps-page-BvCPOgoi.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-Dqp9H2Uf.js → locale-store-BP0vD37A.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DoCY0Mm9.js → logs-page-dNL0Y1dA.js} +3 -3
- package/dist/gateway/static/root/assets/{markdown-split-BGlQR-Be.js → markdown-split-YO1rDk9m.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BpaeV6f_.js → media-plugins-CU_RRf-q.js} +1 -1
- package/dist/gateway/static/root/assets/messages-BWtP5TFz.js +3 -0
- package/dist/gateway/static/root/assets/{notes-page-Cd2HpciM.js → notes-page-CeFiOK3S.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-B8MKxpZb.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-DyimBUp_.js → page-tabs-tiHmRJUA.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BKZulEYr.js → preview-open-alternatives-CU6XgaCz.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-Bjz9BxBY.js → product-open-page-Dn4_qor4.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-CWBuuX-S.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-BJSsLsXH.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-DXJDb8vB.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BPTqb2_r.js → save-bar-controls-edDUIbXo.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-YN0D81Dk.js → schedule-field-DqJO_5Yb.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-BmY5PSS2.js → schema-form-CMh0jzy5.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DeHpWgxM.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-Cf-TEYUd.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-B-RhgD_p.js → settings-form-section-Bb0Bc3nJ.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-DkPupX2B.js → settings-loading-skeleton-DQhADvz1.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-2QBMvaxj.js → settings-page-b0M5HukN.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-CtrW-LD6.js → settings-page-layout-hvjtIjvh.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BFyfed_g.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-BezIW1n9.js → share-preview-page-rbeaOpTg.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CYnH9sTt.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-Cr8_m-jS.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-Chtc1xDO.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-WAFhKyAu.js → system-settings-panel-BHo_hgnL.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-BiC0gIBa.js → theme-store-C3KnnjcU.js} +1 -1
- package/dist/gateway/static/root/assets/time-picker-D-G-uwVJ.js +1 -0
- package/dist/gateway/static/root/assets/{typed-models-lib-WAQO3F_8.js → typed-models-lib-DtRnG-YI.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-CKlfsSeU.js → use-channel-catalog-CWWItX2g.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-D7qMR26X.js +1 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-BAFHF0_v.js → voice-api-key-field-BTnltQHZ.js} +1 -1
- package/dist/gateway/static/root/assets/work-discovery-page-CpqFZze9.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-t4dXpGC0.js +1 -0
- package/dist/gateway/static/root/assets/work-page-BXwDKiMZ.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-1OP4HyvS.js → workflow-run-setup-panel-D7vKChFZ.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-Bos9HyqT.js +11 -0
- package/dist/gateway/static/root/index.html +7 -7
- package/dist/package.js +1 -1
- package/dist/src/agent/embedded/run-for-session.js +71 -24
- package/dist/src/agent/embedded/run-turn.js +68 -4
- package/dist/src/agent/inbound/inbound-loop.d.ts +0 -2
- package/dist/src/agent/inbound/inbound-loop.js +0 -2
- package/dist/src/agent/memory/builtin-provider.js +4 -4
- package/dist/src/agent/memory/compaction-planner.d.ts +16 -0
- package/dist/src/agent/memory/compaction-planner.js +152 -0
- package/dist/src/agent/memory/compaction-policy.d.ts +10 -0
- package/dist/src/agent/memory/compaction-policy.js +24 -0
- package/dist/src/agent/memory/compaction.d.ts +21 -22
- package/dist/src/agent/memory/compaction.js +220 -194
- package/dist/src/agent/memory/context-budget.d.ts +40 -0
- package/dist/src/agent/memory/context-budget.js +106 -0
- package/dist/src/agent/memory/manager.d.ts +4 -1
- package/dist/src/agent/memory/manager.js +8 -3
- package/dist/src/agent/memory/understanding/service.d.ts +2 -0
- package/dist/src/agent/memory/understanding/service.js +11 -9
- package/dist/src/agent/orchestration/context-overflow.d.ts +1 -0
- package/dist/src/agent/orchestration/context-overflow.js +19 -0
- package/dist/src/agent/orchestration/loop-guard.js +13 -9
- package/dist/src/agent/reply/post-compaction-context.d.ts +4 -0
- package/dist/src/agent/reply/post-compaction-context.js +5 -3
- package/dist/src/agent/service/process-direct-one-shot.js +1 -2
- package/dist/src/agent/service/process-direct-streaming.js +1 -2
- package/dist/src/agent/service.d.ts +1 -2
- package/dist/src/agent/service.js +16 -44
- package/dist/src/agent/session/session-inspector.js +10 -2
- package/dist/src/automations/domain/validation.d.ts +8 -8
- package/dist/src/automations/draft/automation-draft-validator.d.ts +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/config/schema.d.ts +17 -1
- package/dist/src/connectors/composio-sessions.d.ts +1 -0
- package/dist/src/connectors/composio-sessions.js +14 -5
- package/dist/src/connectors/composio-triggers.d.ts +1 -1
- package/dist/src/connectors/composio-triggers.js +4 -3
- package/dist/src/connectors/composio.js +1 -0
- package/dist/src/connectors/{connector-memory-sync.d.ts → connected-source-ingestion.d.ts} +11 -4
- package/dist/src/connectors/{connector-memory-sync.js → connected-source-ingestion.js} +49 -101
- package/dist/src/connectors/connected-source-normalizers.d.ts +15 -0
- package/dist/src/connectors/connected-source-normalizers.js +186 -0
- package/dist/src/connectors/connector-identity.d.ts +2 -0
- package/dist/src/connectors/connector-identity.js +29 -0
- package/dist/src/connectors/learning-coordinator.d.ts +25 -0
- package/dist/src/connectors/learning-coordinator.js +214 -0
- package/dist/src/connectors/learning-recipes.d.ts +22 -0
- package/dist/src/connectors/learning-recipes.js +121 -0
- package/dist/src/connectors/runtime-status.d.ts +1 -8
- package/dist/src/connectors/runtime-status.js +4 -29
- package/dist/src/gateway/hono/lib/config-payload.d.ts +23 -0
- package/dist/src/gateway/hono/lib/config-payload.js +3 -0
- package/dist/src/gateway/hono/routes/config-patch/misc.d.ts +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +28 -0
- package/dist/src/gateway/hono/routes/connectors.js +76 -118
- package/dist/src/gateway/hono/routes/models.js +24 -0
- package/dist/src/gateway/hono/routes/public-gateway.js +3 -2
- package/dist/src/gateway/hono/routes/sessions.js +17 -42
- package/dist/src/gateway/hono/routes/you.js +86 -5
- package/dist/src/gateway/service/sessions-api.d.ts +2 -3
- package/dist/src/gateway/service/sessions-api.js +4 -7
- package/dist/src/gateway/service.d.ts +5 -2
- package/dist/src/gateway/service.js +16 -11
- package/dist/src/knowledge/connected-understanding-pipeline.d.ts +19 -0
- package/dist/src/knowledge/connected-understanding-pipeline.js +268 -0
- package/dist/src/knowledge/index.d.ts +1 -0
- package/dist/src/knowledge/index.js +2 -1
- package/dist/src/knowledge/ingestion-service.d.ts +6 -4
- package/dist/src/knowledge/ingestion-service.js +13 -10
- package/dist/src/knowledge/local-folder-adapter.js +1 -0
- package/dist/src/knowledge/people-graph.js +43 -110
- package/dist/src/knowledge/types.d.ts +3 -0
- package/dist/src/providers/xopc-cloud-account-service.d.ts +40 -0
- package/dist/src/providers/xopc-cloud-account-service.js +65 -0
- package/dist/src/session/index.d.ts +1 -2
- package/dist/src/session/index.js +1 -2
- package/dist/src/session/init-session-turn.d.ts +0 -1
- package/dist/src/session/init-session-turn.js +1 -2
- package/dist/src/session/manager.d.ts +11 -17
- package/dist/src/session/manager.js +11 -14
- package/dist/src/session/session-context-for-llm.d.ts +19 -1
- package/dist/src/session/session-context-for-llm.js +87 -129
- package/dist/src/session/store.d.ts +28 -23
- package/dist/src/session/store.js +94 -83
- package/dist/src/session/transcript-format.d.ts +2 -8
- package/dist/src/session/types.d.ts +8 -6
- package/dist/src/session/user-round-delete.d.ts +3 -6
- package/dist/src/session/user-round-delete.js +12 -16
- package/dist/src/storage/sqlite/connector-learning-repository.d.ts +47 -0
- package/dist/src/storage/sqlite/connector-learning-repository.js +110 -0
- package/dist/src/storage/sqlite/index.d.ts +4 -2
- package/dist/src/storage/sqlite/index.js +5 -3
- package/dist/src/storage/sqlite/knowledge-repository.d.ts +4 -2
- package/dist/src/storage/sqlite/knowledge-repository.js +24 -13
- package/dist/src/storage/sqlite/migrations/060_remove_runtime_transcript_messages.sql +45 -0
- package/dist/src/storage/sqlite/migrations/061_drop_compaction_checkpoints.sql +2 -0
- package/dist/src/storage/sqlite/migrations/062_connector_learning_jobs.sql +27 -0
- package/dist/src/storage/sqlite/migrations/063_knowledge_collection_scopes.sql +14 -0
- package/dist/src/storage/sqlite/migrations/064_user_claims.sql +60 -0
- package/dist/src/storage/sqlite/migrations/065_knowledge_item_scope_identity.sql +116 -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/storage/sqlite/schema.sql +0 -19
- package/dist/src/storage/sqlite/transcript-repository.d.ts +6 -11
- package/dist/src/storage/sqlite/transcript-repository.js +90 -84
- package/dist/src/storage/sqlite/user-claims-repository.d.ts +101 -0
- package/dist/src/storage/sqlite/user-claims-repository.js +241 -0
- package/dist/src/user-context/config.d.ts +67 -2
- package/dist/src/user-context/config.js +36 -3
- package/dist/src/user-context/projection.d.ts +36 -1
- package/dist/src/user-context/projection.js +84 -6
- package/dist/src/work-discovery/service.js +1 -0
- package/package.json +1 -1
- package/dist/gateway/static/root/assets/agents-BiaQhiQp.js +0 -2
- package/dist/gateway/static/root/assets/apps-page-CuL8Q4yF.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-TZOluRNp.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-C-l6O68Z.js +0 -8
- package/dist/gateway/static/root/assets/capabilities-settings-panel-BW8c0xPp.js +0 -7
- package/dist/gateway/static/root/assets/channels-settings-h9CsE0GT.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-C058Mcfr.js +0 -1
- package/dist/gateway/static/root/assets/connector-logo-CsbegNqi.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BWALafGW.js +0 -2
- package/dist/gateway/static/root/assets/dreaming-settings-DkdnKMZx.js +0 -3
- package/dist/gateway/static/root/assets/goal-create-dialog-y2Y3p7_k.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-DuzL-alv.js +0 -4
- package/dist/gateway/static/root/assets/goals-page-OeLtfKI2.js +0 -2
- package/dist/gateway/static/root/assets/index-o4uaOGKT.css +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-3ssYIEK6.js +0 -2
- package/dist/gateway/static/root/assets/messages-KEk-hTFt.js +0 -3
- package/dist/gateway/static/root/assets/notes-workbench-CatZNAPc.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-DJUOgqm4.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-BQQAD_nu.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-fIGXTTnA.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BuU-8FCe.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DlKoeZm3.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BSUcDFnb.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-Bk2-SwGJ.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-e_Fx1kVC.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-D_cCADfj.js +0 -2
- package/dist/gateway/static/root/assets/time-picker-fqRXpNJV.js +0 -1
- package/dist/gateway/static/root/assets/user-context-page-9Ov4htPW.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-DGN2FxWv.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-HmyWSgUo.js +0 -1
- package/dist/gateway/static/root/assets/work-page-D3iKVjFq.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-B5L4SFw4.js +0 -11
- package/dist/src/agent/lifecycle/handlers/compaction.d.ts +0 -13
- package/dist/src/agent/lifecycle/handlers/compaction.js +0 -18
- package/dist/src/connectors/memory-sync-coordinator.d.ts +0 -28
- package/dist/src/connectors/memory-sync-coordinator.js +0 -162
- package/dist/src/connectors/memory-sync-profile.d.ts +0 -13
- package/dist/src/connectors/memory-sync-profile.js +0 -73
- package/dist/src/session/compaction-checkpoints.d.ts +0 -8
- package/dist/src/session/compaction-checkpoints.js +0 -19
|
@@ -5,6 +5,8 @@ export { DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, } from './m
|
|
|
5
5
|
export { discoverSqlMigrations, listRegisteredMigrationTargets } from './migrations/discover.js';
|
|
6
6
|
export { closeXopcDatabase, getXopcDatabase, isXopcDatabaseOpen, openXopcDatabase, requireXopcDatabase, resetXopcDatabaseSingletonForTest, type OpenXopcDatabaseOptions, type XopcDatabase, } from './connection.js';
|
|
7
7
|
export { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';
|
|
8
|
+
export { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, removeUserClaimEvidenceForSource, reinforceUserClaim, resolveUserEntity, setUserClaimDecision, type UserClaim, type UserClaimClass, type UserClaimState, type UserEntity, } from './user-claims-repository.js';
|
|
9
|
+
export { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob, type ConnectorLearningJob, type ConnectorLearningMode, type ConnectorLearningPhase, type ConnectorLearningStatus, } from './connector-learning-repository.js';
|
|
8
10
|
export { appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory, COMPOSER_INPUT_HISTORY_LIMIT, type ComposerInputHistoryItem, } from './composer-input-history-repository.js';
|
|
9
11
|
export { getInteractionState, setInteractionState, updateInteractionStateFromMessage, type InteractionState, } from './interaction-state-repository.js';
|
|
10
12
|
export { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAllowed, updateRelationshipSettings, type RelationshipSettings, type SupportMode, } from './relationship-settings-repository.js';
|
|
@@ -12,12 +14,12 @@ export { completeTaskOutcome, findTaskOutcomeForAssistant, getTaskOutcome, listT
|
|
|
12
14
|
export { buildDefaultSessionMetadata, type SessionMetadataSeed, } from './session-metadata.js';
|
|
13
15
|
export { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow, type SessionConfigRow, type SessionRow, type TranscriptEntryRow, } from './row-mappers.js';
|
|
14
16
|
export { deleteSessionRecord, ensureSessionRecord, getCurrentSessionId, getGlobalSessionStats, findSessionKeyBySessionId, getSessionPersistedLevels, getSessionMetadata, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats, } from './session-repository.js';
|
|
15
|
-
export {
|
|
17
|
+
export { appendCompactionBoundary, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, } from './transcript-repository.js';
|
|
16
18
|
export { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord, } from './notes-repository.js';
|
|
17
19
|
export { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord, type NoteAgentContextRecord, } from './note-agent-context-repository.js';
|
|
18
20
|
export { searchMemoryIndex, syncMemoryIndex, type MemorySearchHit, } from './memory-index-repository.js';
|
|
19
21
|
export { appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, findLatestMemoryInjectTrace, getMemoryProviderState, getMemoryRecord, hasUnresolvedMemoryConflict, listMemorySignals, listMemoryTraceEvents, listMemoryRecords, markMemoryRecordsConflicted, searchMemoryRecords, setMemoryProviderState, setMemoryTraceFeedback, setLatestMemoryInjectFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, USER_UNDERSTANDING_REMEDIATION_POLICY, upsertMemoryRecord, type AppendMemorySignalInput, type AppendMemoryTraceEventInput, type FindLatestMemoryInjectTraceInput, type ListMemoryRecordsOptions, type MemoryRecallFeedbackSummary, type MemoryFeedbackRemediationResult, type MemorySignalRowPayload, type MemoryTraceFeedback, type MemoryTraceEventPayload, type UserUnderstandingQualityMetrics, type SearchMemoryRecordsOptions, type SetMemoryTraceFeedbackInput, type SetLatestMemoryInjectFeedbackInput, type UpsertMemoryRecordInput, } from './memory-records-repository.js';
|
|
20
|
-
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
|
|
22
|
+
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceItems, listKnowledgeSourceChanges, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeSourceItemSynthesisStatus, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, startKnowledgeSyncRun, upsertKnowledgeSourceItems, } from './knowledge-repository.js';
|
|
21
23
|
export { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig, } from './config-repository.js';
|
|
22
24
|
export { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent, } from './activity-repository.js';
|
|
23
25
|
export { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getConnectorConnection, getConnectorApproval, getConnectorInstallation, getCachedConnectorCatalogEntry, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, type CachedConnectorCatalogEntry, } from './connector-repository.js';
|
|
@@ -6,6 +6,8 @@ import { XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_SCHEMA_VERSION, applyPendingMi
|
|
|
6
6
|
import { ensureXopcDatabaseSchema } from "./schema.js";
|
|
7
7
|
import { closeXopcDatabase, getXopcDatabase, isXopcDatabaseOpen, openXopcDatabase, requireXopcDatabase, resetXopcDatabaseSingletonForTest } from "./connection.js";
|
|
8
8
|
import { getSqliteDatabase, runSqliteWriteTransaction } from "./transaction.js";
|
|
9
|
+
import { getUserClaim, linkUserClaimMemoryRecord, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, reinforceUserClaim, removeUserClaimEvidenceForSource, resolveUserEntity, setUserClaimDecision } from "./user-claims-repository.js";
|
|
10
|
+
import { claimNextConnectorLearningJob, enqueueConnectorLearningJob, listConnectorLearningJobs, recoverStaleConnectorLearningJobs, setConnectorLearningPaused, updateConnectorLearningJob } from "./connector-learning-repository.js";
|
|
9
11
|
import { COMPOSER_INPUT_HISTORY_LIMIT, appendComposerInputHistory, clearComposerInputHistory, listComposerInputHistory } from "./composer-input-history-repository.js";
|
|
10
12
|
import { getInteractionState, setInteractionState, updateInteractionStateFromMessage } from "./interaction-state-repository.js";
|
|
11
13
|
import { buildRelationshipPrompt, getRelationshipSettings, isProactiveSupportAllowed, updateRelationshipSettings } from "./relationship-settings-repository.js";
|
|
@@ -13,16 +15,16 @@ import { completeTaskOutcome, findTaskOutcomeForAssistant, getTaskOutcome, listT
|
|
|
13
15
|
import { buildDefaultSessionMetadata } from "./session-metadata.js";
|
|
14
16
|
import { buildGlobalSessionStats, classifyStoredRow, estimateTokensFromMessages, extractFtsContent, metadataToSessionInsert, sessionConfigRowToConfig, sessionRowToMetadata, transcriptEntryRowToStoredRow } from "./row-mappers.js";
|
|
15
17
|
import { deleteSessionRecord, ensureSessionRecord, findSessionKeyBySessionId, getCurrentSessionId, getGlobalSessionStats, getSessionMetadata, getSessionPersistedLevels, incrementSessionStatsOnAppend, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord, resolveSessionAgentId, updateSessionStats } from "./session-repository.js";
|
|
16
|
-
import {
|
|
18
|
+
import { appendCompactionBoundary, appendTranscriptEntry, listCompactionBoundaries, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary } from "./transcript-repository.js";
|
|
17
19
|
import { deleteNoteRecord, getNoteRecord, listNoteRecords, upsertNoteRecord } from "./notes-repository.js";
|
|
18
20
|
import { deleteNoteAgentContextRecord, getNoteAgentContextRecord, upsertNoteAgentContextRecord } from "./note-agent-context-repository.js";
|
|
19
21
|
import { searchMemoryIndex, syncMemoryIndex } from "./memory-index-repository.js";
|
|
20
22
|
import { USER_UNDERSTANDING_REMEDIATION_POLICY, appendMemorySignal, appendMemoryTraceEvent, deleteMemoryRecord, findLatestMemoryInjectTrace, getMemoryProviderState, getMemoryRecord, hasUnresolvedMemoryConflict, listMemoryRecords, listMemorySignals, listMemoryTraceEvents, markMemoryRecordsConflicted, searchMemoryRecords, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, summarizeMemoryRecallFeedback, summarizeUserUnderstandingQuality, upsertMemoryRecord } from "./memory-records-repository.js";
|
|
21
|
-
import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
|
|
23
|
+
import { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems } from "./knowledge-repository.js";
|
|
22
24
|
import { deleteSessionConfig, getSessionConfig, hasSessionConfig, setSessionConfig, updateSessionConfig } from "./config-repository.js";
|
|
23
25
|
import { createObjectLinkRecord, getActivityEventRecord, listActivityRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, recordActivityEvent } from "./activity-repository.js";
|
|
24
26
|
import { appendConnectorExecutionAudit, claimConnectorWebhookDelivery, completeConnectorWebhookDelivery, consumeConnectorApproval, createConnectorApproval, decideConnectorApproval, deleteConnectorConnection, deleteConnectorInstallation, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, listCachedConnectorCatalogEntries, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, releaseConnectorWebhookDelivery, replaceConnectorCatalogEntries, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation } from "./connector-repository.js";
|
|
25
27
|
import { getUserTrustPolicy, setUserTrustPolicy } from "./user-trust-repository.js";
|
|
26
28
|
import { consumeMemoryReferenceConsent, decideMemoryReferenceConsent, ensureMemoryReferenceConsentRequest, hasMemoryReferenceConsent, listMemoryReferenceConsents, revokeMemoryReferenceConsent } from "./memory-reference-consent-repository.js";
|
|
27
29
|
import { getUserProfilePromptState, setUserProfilePromptState } from "./user-profile-setup-repository.js";
|
|
28
|
-
export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt,
|
|
30
|
+
export { COMPOSER_INPUT_HISTORY_LIMIT, DatabaseSchemaMigrationGapError, DatabaseSchemaTooNewError, SCHEMA_META_SCHEMA_VERSION_KEY, USER_UNDERSTANDING_REMEDIATION_POLICY, XOPC_DB_BASELINE_SCHEMA_VERSION, XOPC_DB_FILENAME, XOPC_DB_SCHEMA_VERSION, appendCompactionBoundary, appendComposerInputHistory, appendConnectorExecutionAudit, appendMemorySignal, appendMemoryTraceEvent, appendTranscriptEntry, applyPendingMigrations, attachMemoryEvidence, buildDefaultSessionMetadata, buildGlobalSessionStats, buildRelationshipPrompt, claimConnectorWebhookDelivery, claimKnowledgeSourceItems, claimNextConnectorLearningJob, classifyStoredRow, clearComposerInputHistory, closeXopcDatabase, completeConnectorWebhookDelivery, completeKnowledgeSourceItemSynthesis, completeTaskOutcome, consumeConnectorApproval, consumeMemoryReferenceConsent, createConnectorApproval, createObjectLinkRecord, decideConnectorApproval, decideMemoryReferenceConsent, deleteConnectorConnection, deleteConnectorInstallation, deleteMemoryEvidenceForRecord, deleteMemoryRecord, deleteNoteAgentContextRecord, deleteNoteRecord, deleteSessionConfig, deleteSessionRecord, discoverSqlMigrations, enqueueConnectorLearningJob, ensureMemoryReferenceConsentRequest, ensureSessionRecord, ensureXopcDatabaseSchema, estimateTokensFromMessages, extractFtsContent, findLatestMemoryInjectTrace, findSessionKeyBySessionId, findTaskOutcomeForAssistant, finishKnowledgeSyncRun, getActivityEventRecord, getCachedConnectorCatalogEntry, getConnectorApproval, getConnectorConnection, getConnectorInstallation, getCurrentSessionId, getGlobalSessionStats, getInteractionState, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, getMemoryProviderState, getMemoryRecord, getNoteAgentContextRecord, getNoteRecord, getRelationshipSettings, getSessionConfig, getSessionMetadata, getSessionPersistedLevels, getSqliteDatabase, getTaskOutcome, getUserClaim, getUserProfilePromptState, getUserTrustPolicy, getXopcDatabase, hasMemoryReferenceConsent, hasSessionConfig, hasUnresolvedMemoryConflict, incrementSessionStatsOnAppend, inspectSchemaMigrationStatus, isProactiveSupportAllowed, isXopcDatabaseOpen, linkUserClaimMemoryRecord, listActivityRecords, listCachedConnectorCatalogEntries, listCompactionBoundaries, listComposerInputHistory, listConnectorActionMetadata, listConnectorApprovals, listConnectorConnections, listConnectorExecutionAudit, listConnectorInstallations, listConnectorLearningJobs, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, listMemoryRecords, listMemoryReferenceConsents, listMemorySignals, listMemoryTraceEvents, listNoteRecords, listObjectActivityRecords, listObjectLinkRecords, listProjectActivityRecords, listRegisteredMigrationTargets, listSessionMetadata, listSessionsByAgent, listTaskOutcomes, listUserClaimEvidence, listUserClaimStatsBySource, listUserClaims, listUserPeopleGraphRows, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRows, loadTranscriptRowsForSession, markMemoryRecordsConflicted, metadataToSessionInsert, openXopcDatabase, paginateTranscriptMessages, patchSessionMetadata, pruneBoundedKnowledgeSourceItems, readSchemaVersion, readSchemaVersionForTest, recordActivityEvent, recoverStaleConnectorLearningJobs, reinforceUserClaim, releaseConnectorWebhookDelivery, removeUserClaimEvidenceForSource, replaceConnectorCatalogEntries, replaceTranscriptRows, requireXopcDatabase, resetSessionRecord, resetXopcDatabaseSingletonForTest, resolveMigrationsDir, resolveSessionAgentId, resolveUserEntity, resolveXopcDatabasePath, restoreBeforeCompactionBoundary, revokeMemoryReferenceConsent, runSqliteWriteTransaction, searchMemoryIndex, searchMemoryRecords, sessionConfigRowToConfig, sessionRowToMetadata, setConnectorLearningPaused, setInteractionState, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, setLatestMemoryInjectFeedback, setMemoryProviderState, setMemoryTraceFeedback, setSessionConfig, setTaskOutcomeFeedback, setUserClaimDecision, setUserProfilePromptState, setUserTrustPolicy, startKnowledgeSyncRun, startTaskOutcome, summarizeMemoryRecallFeedback, summarizeTaskOutcomes, summarizeUserUnderstandingQuality, syncMemoryIndex, transcriptEntryRowToStoredRow, updateConnectorLearningJob, updateInteractionStateFromMessage, updateRelationshipSettings, updateSessionConfig, updateSessionStats, updateTaskOutcome, upsertConnectorActionMetadata, upsertConnectorCatalogEntry, upsertConnectorConnection, upsertConnectorInstallation, upsertKnowledgeSourceItems, upsertMemoryRecord, upsertNoteAgentContextRecord, upsertNoteRecord };
|
|
@@ -21,8 +21,8 @@ export declare function listKnowledgeSyncRuns(options?: {
|
|
|
21
21
|
status?: KnowledgeSyncRunStatus;
|
|
22
22
|
limit?: number;
|
|
23
23
|
}): KnowledgeSyncRun[];
|
|
24
|
-
export declare function getKnowledgeSourceCursor(sourceInstanceId: string): string | undefined;
|
|
25
|
-
export declare function setKnowledgeSourceCursor(sourceInstanceId: string, cursor: string | undefined): void;
|
|
24
|
+
export declare function getKnowledgeSourceCursor(sourceInstanceId: string, collectionScope: string): string | undefined;
|
|
25
|
+
export declare function setKnowledgeSourceCursor(sourceInstanceId: string, collectionScope: string, cursor: string | undefined): void;
|
|
26
26
|
export declare function upsertKnowledgeSourceItems(inputs: KnowledgeSourceItemInput[], nowMs?: number): {
|
|
27
27
|
items: KnowledgeSourceItem[];
|
|
28
28
|
created: number;
|
|
@@ -39,12 +39,14 @@ export declare function getKnowledgeConsumerWatermark(consumerId: string, source
|
|
|
39
39
|
export declare function setKnowledgeConsumerWatermark(consumerId: string, sourceInstanceId: string, sequence: number, nowMs?: number): void;
|
|
40
40
|
export declare function listKnowledgeSourceItems(options?: {
|
|
41
41
|
sourceInstanceId?: string;
|
|
42
|
+
collectionScope?: string;
|
|
42
43
|
itemType?: string;
|
|
43
44
|
synthesisStatus?: KnowledgeSynthesisStatus;
|
|
44
45
|
includeDeleted?: boolean;
|
|
45
46
|
limit?: number;
|
|
46
47
|
offset?: number;
|
|
47
48
|
}): KnowledgeSourceItem[];
|
|
49
|
+
export declare function pruneBoundedKnowledgeSourceItems(sourceInstanceId: string, olderThanMs: number): number;
|
|
48
50
|
export declare function setKnowledgeSourceItemSynthesisStatus(itemIds: string[], status: KnowledgeSynthesisStatus, nowMs?: number): number;
|
|
49
51
|
export declare function claimKnowledgeSourceItems(options: {
|
|
50
52
|
workerId: string;
|
|
@@ -29,6 +29,7 @@ function sourceItemFromRow(row) {
|
|
|
29
29
|
return {
|
|
30
30
|
id: row.item_id,
|
|
31
31
|
sourceInstanceId: row.source_instance_id,
|
|
32
|
+
collectionScope: row.collection_scope,
|
|
32
33
|
externalId: row.external_id,
|
|
33
34
|
itemType: row.item_type,
|
|
34
35
|
...row.author_role ? { authorRole: row.author_role } : {},
|
|
@@ -127,16 +128,16 @@ function listKnowledgeSyncRuns(options = {}) {
|
|
|
127
128
|
${where.length > 0 ? `WHERE ${where.join(" AND ")}` : ""}
|
|
128
129
|
ORDER BY started_at DESC LIMIT ?`).all(...params, limit).map(syncRunFromRow);
|
|
129
130
|
}
|
|
130
|
-
function getKnowledgeSourceCursor(sourceInstanceId) {
|
|
131
|
-
return getSqliteDatabase().prepare(`SELECT cursor FROM
|
|
131
|
+
function getKnowledgeSourceCursor(sourceInstanceId, collectionScope) {
|
|
132
|
+
return getSqliteDatabase().prepare(`SELECT cursor FROM knowledge_collection_state WHERE source_instance_id = ? AND collection_scope = ?`).get(sourceInstanceId, collectionScope)?.cursor ?? void 0;
|
|
132
133
|
}
|
|
133
|
-
function setKnowledgeSourceCursor(sourceInstanceId, cursor) {
|
|
134
|
+
function setKnowledgeSourceCursor(sourceInstanceId, collectionScope, cursor) {
|
|
134
135
|
runSqliteWriteTransaction((db) => {
|
|
135
|
-
db.prepare(`INSERT INTO
|
|
136
|
-
VALUES (?, ?, ?)
|
|
137
|
-
ON CONFLICT(source_instance_id) DO UPDATE SET
|
|
136
|
+
db.prepare(`INSERT INTO knowledge_collection_state (source_instance_id, collection_scope, cursor, updated_at)
|
|
137
|
+
VALUES (?, ?, ?, ?)
|
|
138
|
+
ON CONFLICT(source_instance_id, collection_scope) DO UPDATE SET
|
|
138
139
|
cursor = excluded.cursor,
|
|
139
|
-
updated_at = excluded.updated_at`).run(sourceInstanceId, cursor ?? null, Date.now());
|
|
140
|
+
updated_at = excluded.updated_at`).run(sourceInstanceId, collectionScope, cursor ?? null, Date.now());
|
|
140
141
|
});
|
|
141
142
|
}
|
|
142
143
|
function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
|
|
@@ -147,7 +148,7 @@ function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
|
|
|
147
148
|
let unchanged = 0;
|
|
148
149
|
for (const input of inputs) {
|
|
149
150
|
const existing = db.prepare(`SELECT * FROM knowledge_source_items
|
|
150
|
-
WHERE source_instance_id = ? AND external_id = ?`).get(input.sourceInstanceId, input.externalId);
|
|
151
|
+
WHERE source_instance_id = ? AND collection_scope = ? AND external_id = ?`).get(input.sourceInstanceId, input.collectionScope, input.externalId);
|
|
151
152
|
const id = existing?.item_id ?? input.id ?? randomUUID();
|
|
152
153
|
if (existing?.content_hash === input.contentHash && existing.deleted_at === parseTimestamp(input.deletedAt)) {
|
|
153
154
|
unchanged += 1;
|
|
@@ -155,13 +156,14 @@ function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
|
|
|
155
156
|
continue;
|
|
156
157
|
}
|
|
157
158
|
db.prepare(`INSERT INTO knowledge_source_items (
|
|
158
|
-
item_id, source_instance_id, external_id, item_type, author_role,
|
|
159
|
+
item_id, source_instance_id, collection_scope, external_id, item_type, author_role,
|
|
159
160
|
occurred_at, source_updated_at, content_hash, normalized_text,
|
|
160
161
|
payload_ref, metadata_json, sensitivity, retention_class,
|
|
161
162
|
synthesis_pipeline, synthesis_status, deleted_at, created_at, updated_at
|
|
162
|
-
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
163
|
-
ON CONFLICT(source_instance_id, external_id) DO UPDATE SET
|
|
163
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
164
|
+
ON CONFLICT(source_instance_id, collection_scope, external_id) DO UPDATE SET
|
|
164
165
|
item_type = excluded.item_type,
|
|
166
|
+
collection_scope = excluded.collection_scope,
|
|
165
167
|
author_role = excluded.author_role,
|
|
166
168
|
occurred_at = excluded.occurred_at,
|
|
167
169
|
source_updated_at = excluded.source_updated_at,
|
|
@@ -178,7 +180,7 @@ function upsertKnowledgeSourceItems(inputs, nowMs = Date.now()) {
|
|
|
178
180
|
synthesis_claimed_by = NULL,
|
|
179
181
|
synthesis_error = NULL,
|
|
180
182
|
deleted_at = excluded.deleted_at,
|
|
181
|
-
updated_at = excluded.updated_at`).run(id, input.sourceInstanceId, input.externalId, input.itemType, input.authorRole ?? null, parseTimestamp(input.occurredAt), parseTimestamp(input.sourceUpdatedAt), input.contentHash, input.normalizedText ?? null, input.payloadRef ?? null, JSON.stringify(input.metadata ?? {}), input.sensitivity ?? "normal", input.retentionClass ?? "bounded", input.synthesisPipeline ?? "user_understanding", input.synthesisStatus ?? "pending", parseTimestamp(input.deletedAt), existing?.created_at ?? nowMs, nowMs);
|
|
183
|
+
updated_at = excluded.updated_at`).run(id, input.sourceInstanceId, input.collectionScope, input.externalId, input.itemType, input.authorRole ?? null, parseTimestamp(input.occurredAt), parseTimestamp(input.sourceUpdatedAt), input.contentHash, input.normalizedText ?? null, input.payloadRef ?? null, JSON.stringify(input.metadata ?? {}), input.sensitivity ?? "normal", input.retentionClass ?? "bounded", input.synthesisPipeline ?? "user_understanding", input.synthesisStatus ?? "pending", parseTimestamp(input.deletedAt), existing?.created_at ?? nowMs, nowMs);
|
|
182
184
|
const row = db.prepare(`SELECT * FROM knowledge_source_items WHERE item_id = ?`).get(id);
|
|
183
185
|
items.push(sourceItemFromRow(row));
|
|
184
186
|
const changeKind = input.deletedAt ? "deleted" : existing ? "modified" : "added";
|
|
@@ -238,6 +240,10 @@ function listKnowledgeSourceItems(options = {}) {
|
|
|
238
240
|
where.push("source_instance_id = ?");
|
|
239
241
|
params.push(options.sourceInstanceId);
|
|
240
242
|
}
|
|
243
|
+
if (options.collectionScope) {
|
|
244
|
+
where.push("collection_scope = ?");
|
|
245
|
+
params.push(options.collectionScope);
|
|
246
|
+
}
|
|
241
247
|
if (options.itemType) {
|
|
242
248
|
where.push("item_type = ?");
|
|
243
249
|
params.push(options.itemType);
|
|
@@ -254,6 +260,11 @@ function listKnowledgeSourceItems(options = {}) {
|
|
|
254
260
|
ORDER BY COALESCE(source_updated_at, occurred_at, updated_at) DESC
|
|
255
261
|
LIMIT ? OFFSET ?`).all(...params, limit, offset).map(sourceItemFromRow);
|
|
256
262
|
}
|
|
263
|
+
function pruneBoundedKnowledgeSourceItems(sourceInstanceId, olderThanMs) {
|
|
264
|
+
return runSqliteWriteTransaction((db) => Number(db.prepare(`DELETE FROM knowledge_source_items
|
|
265
|
+
WHERE source_instance_id = ? AND retention_class = 'bounded'
|
|
266
|
+
AND COALESCE(source_updated_at, occurred_at, updated_at) < ?`).run(sourceInstanceId, olderThanMs).changes));
|
|
267
|
+
}
|
|
257
268
|
function setKnowledgeSourceItemSynthesisStatus(itemIds, status, nowMs = Date.now()) {
|
|
258
269
|
if (itemIds.length === 0) return 0;
|
|
259
270
|
return runSqliteWriteTransaction((db) => {
|
|
@@ -350,4 +361,4 @@ function listMemoryEvidence(recordId) {
|
|
|
350
361
|
}));
|
|
351
362
|
}
|
|
352
363
|
//#endregion
|
|
353
|
-
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
|
|
364
|
+
export { attachMemoryEvidence, claimKnowledgeSourceItems, completeKnowledgeSourceItemSynthesis, deleteMemoryEvidenceForRecord, finishKnowledgeSyncRun, getKnowledgeConsumerWatermark, getKnowledgeSourceCursor, getKnowledgeSourceItem, listKnowledgeSourceChanges, listKnowledgeSourceItems, listKnowledgeSyncRuns, listMemoryEvidence, pruneBoundedKnowledgeSourceItems, setKnowledgeConsumerWatermark, setKnowledgeSourceCursor, setKnowledgeSourceItemSynthesisStatus, startKnowledgeSyncRun, upsertKnowledgeSourceItems };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
CREATE TEMP TABLE xopc_runtime_transcript_cleanup_sessions (
|
|
2
|
+
session_id TEXT PRIMARY KEY
|
|
3
|
+
);
|
|
4
|
+
|
|
5
|
+
INSERT INTO xopc_runtime_transcript_cleanup_sessions (session_id)
|
|
6
|
+
SELECT DISTINCT session_id
|
|
7
|
+
FROM transcript_entries
|
|
8
|
+
WHERE entry_kind = 'message'
|
|
9
|
+
AND json_extract(payload_json, '$.droppable') = 1;
|
|
10
|
+
|
|
11
|
+
DELETE FROM transcript_fts
|
|
12
|
+
WHERE entry_id IN (
|
|
13
|
+
SELECT entry_id
|
|
14
|
+
FROM transcript_entries
|
|
15
|
+
WHERE session_id IN (SELECT session_id FROM xopc_runtime_transcript_cleanup_sessions)
|
|
16
|
+
AND (
|
|
17
|
+
json_extract(payload_json, '$.droppable') = 1
|
|
18
|
+
OR json_extract(payload_json, '$.type') = 'compaction'
|
|
19
|
+
)
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
DELETE FROM transcript_entries
|
|
23
|
+
WHERE session_id IN (SELECT session_id FROM xopc_runtime_transcript_cleanup_sessions)
|
|
24
|
+
AND (
|
|
25
|
+
json_extract(payload_json, '$.droppable') = 1
|
|
26
|
+
OR json_extract(payload_json, '$.type') = 'compaction'
|
|
27
|
+
);
|
|
28
|
+
|
|
29
|
+
UPDATE sessions
|
|
30
|
+
SET
|
|
31
|
+
message_count = (
|
|
32
|
+
SELECT COUNT(*)
|
|
33
|
+
FROM transcript_entries e
|
|
34
|
+
WHERE e.session_id = sessions.session_id
|
|
35
|
+
AND e.entry_kind = 'message'
|
|
36
|
+
),
|
|
37
|
+
estimated_tokens = (
|
|
38
|
+
SELECT COALESCE(SUM((length(COALESCE(json_extract(e.payload_json, '$.content'), '')) + 3) / 4), 0)
|
|
39
|
+
FROM transcript_entries e
|
|
40
|
+
WHERE e.session_id = sessions.session_id
|
|
41
|
+
AND e.entry_kind = 'message'
|
|
42
|
+
)
|
|
43
|
+
WHERE session_id IN (SELECT session_id FROM xopc_runtime_transcript_cleanup_sessions);
|
|
44
|
+
|
|
45
|
+
DROP TABLE xopc_runtime_transcript_cleanup_sessions;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
CREATE TABLE connector_learning_jobs (
|
|
2
|
+
job_id TEXT PRIMARY KEY,
|
|
3
|
+
idempotency_key TEXT NOT NULL UNIQUE,
|
|
4
|
+
connector_id TEXT NOT NULL,
|
|
5
|
+
connection_id TEXT NOT NULL,
|
|
6
|
+
source_instance_id TEXT NOT NULL,
|
|
7
|
+
agent_id TEXT NOT NULL,
|
|
8
|
+
mode TEXT NOT NULL CHECK(mode IN ('bootstrap', 'incremental')),
|
|
9
|
+
status TEXT NOT NULL CHECK(status IN ('queued', 'running', 'completed', 'failed', 'paused')),
|
|
10
|
+
phase TEXT NOT NULL CHECK(phase IN ('queued', 'fetching', 'indexing', 'deriving', 'completed')),
|
|
11
|
+
items_discovered INTEGER NOT NULL DEFAULT 0,
|
|
12
|
+
items_indexed INTEGER NOT NULL DEFAULT 0,
|
|
13
|
+
candidates_created INTEGER NOT NULL DEFAULT 0,
|
|
14
|
+
attempt_count INTEGER NOT NULL DEFAULT 0,
|
|
15
|
+
error TEXT,
|
|
16
|
+
next_run_at INTEGER,
|
|
17
|
+
started_at INTEGER,
|
|
18
|
+
finished_at INTEGER,
|
|
19
|
+
created_at INTEGER NOT NULL,
|
|
20
|
+
updated_at INTEGER NOT NULL,
|
|
21
|
+
FOREIGN KEY(connection_id) REFERENCES connector_connections(id) ON DELETE CASCADE
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
CREATE INDEX idx_connector_learning_jobs_due
|
|
25
|
+
ON connector_learning_jobs(status, next_run_at, created_at);
|
|
26
|
+
CREATE INDEX idx_connector_learning_jobs_source
|
|
27
|
+
ON connector_learning_jobs(source_instance_id, created_at DESC);
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
ALTER TABLE knowledge_source_items ADD COLUMN collection_scope TEXT NOT NULL DEFAULT 'primary';
|
|
2
|
+
|
|
3
|
+
DROP TABLE knowledge_source_state;
|
|
4
|
+
|
|
5
|
+
CREATE TABLE knowledge_collection_state (
|
|
6
|
+
source_instance_id TEXT NOT NULL,
|
|
7
|
+
collection_scope TEXT NOT NULL,
|
|
8
|
+
cursor TEXT,
|
|
9
|
+
updated_at INTEGER NOT NULL,
|
|
10
|
+
PRIMARY KEY(source_instance_id, collection_scope)
|
|
11
|
+
);
|
|
12
|
+
|
|
13
|
+
CREATE INDEX idx_knowledge_source_items_collection
|
|
14
|
+
ON knowledge_source_items(source_instance_id, collection_scope, updated_at DESC);
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
CREATE TABLE user_entities (
|
|
2
|
+
entity_id TEXT PRIMARY KEY,
|
|
3
|
+
entity_type TEXT NOT NULL CHECK(entity_type IN ('person', 'project', 'organization')),
|
|
4
|
+
canonical_label TEXT NOT NULL,
|
|
5
|
+
created_at INTEGER NOT NULL,
|
|
6
|
+
updated_at INTEGER NOT NULL
|
|
7
|
+
);
|
|
8
|
+
|
|
9
|
+
CREATE TABLE user_entity_handles (
|
|
10
|
+
entity_id TEXT NOT NULL,
|
|
11
|
+
handle_type TEXT NOT NULL CHECK(handle_type IN ('email', 'provider_user', 'display_name')),
|
|
12
|
+
normalized_value TEXT NOT NULL,
|
|
13
|
+
source_scope TEXT NOT NULL,
|
|
14
|
+
verified INTEGER NOT NULL CHECK(verified IN (0, 1)),
|
|
15
|
+
created_at INTEGER NOT NULL,
|
|
16
|
+
PRIMARY KEY(handle_type, normalized_value, source_scope),
|
|
17
|
+
FOREIGN KEY(entity_id) REFERENCES user_entities(entity_id) ON DELETE CASCADE
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
CREATE INDEX idx_user_entity_handles_entity ON user_entity_handles(entity_id);
|
|
21
|
+
|
|
22
|
+
CREATE TABLE user_claims (
|
|
23
|
+
claim_id TEXT PRIMARY KEY,
|
|
24
|
+
agent_id TEXT NOT NULL,
|
|
25
|
+
claim_class TEXT NOT NULL CHECK(claim_class IN ('relationship', 'project', 'routine')),
|
|
26
|
+
claim_key TEXT NOT NULL,
|
|
27
|
+
subject_entity_id TEXT,
|
|
28
|
+
value_json TEXT NOT NULL,
|
|
29
|
+
state TEXT NOT NULL CHECK(state IN ('provisional', 'active', 'rejected', 'stale')),
|
|
30
|
+
user_state TEXT NOT NULL CHECK(user_state IN ('auto', 'confirmed', 'rejected')),
|
|
31
|
+
confidence REAL NOT NULL,
|
|
32
|
+
independent_evidence_count INTEGER NOT NULL,
|
|
33
|
+
active_day_count INTEGER NOT NULL,
|
|
34
|
+
first_observed_at INTEGER NOT NULL,
|
|
35
|
+
last_reinforced_at INTEGER NOT NULL,
|
|
36
|
+
memory_record_id TEXT,
|
|
37
|
+
created_at INTEGER NOT NULL,
|
|
38
|
+
updated_at INTEGER NOT NULL,
|
|
39
|
+
UNIQUE(agent_id, claim_class, claim_key),
|
|
40
|
+
FOREIGN KEY(subject_entity_id) REFERENCES user_entities(entity_id) ON DELETE SET NULL,
|
|
41
|
+
FOREIGN KEY(memory_record_id) REFERENCES memory_records(record_id) ON DELETE SET NULL
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
CREATE INDEX idx_user_claims_agent_state
|
|
45
|
+
ON user_claims(agent_id, state, confidence DESC, last_reinforced_at DESC);
|
|
46
|
+
|
|
47
|
+
CREATE TABLE user_claim_evidence (
|
|
48
|
+
claim_id TEXT NOT NULL,
|
|
49
|
+
logical_event_key TEXT NOT NULL,
|
|
50
|
+
source_item_id TEXT NOT NULL,
|
|
51
|
+
source_instance_id TEXT NOT NULL,
|
|
52
|
+
relation TEXT NOT NULL CHECK(relation IN ('supports', 'contradicts')),
|
|
53
|
+
observed_at INTEGER NOT NULL,
|
|
54
|
+
created_at INTEGER NOT NULL,
|
|
55
|
+
PRIMARY KEY(claim_id, logical_event_key),
|
|
56
|
+
FOREIGN KEY(claim_id) REFERENCES user_claims(claim_id) ON DELETE CASCADE,
|
|
57
|
+
FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE CASCADE
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
CREATE INDEX idx_user_claim_evidence_source ON user_claim_evidence(source_item_id);
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
CREATE TABLE memory_evidence_backup AS SELECT * FROM memory_evidence;
|
|
2
|
+
CREATE TABLE knowledge_source_changes_backup AS SELECT * FROM knowledge_source_changes;
|
|
3
|
+
CREATE TABLE user_claim_evidence_backup AS SELECT * FROM user_claim_evidence;
|
|
4
|
+
|
|
5
|
+
DROP TABLE memory_evidence;
|
|
6
|
+
DROP TABLE knowledge_source_changes;
|
|
7
|
+
DROP TABLE user_claim_evidence;
|
|
8
|
+
|
|
9
|
+
CREATE TABLE knowledge_source_items_v65 (
|
|
10
|
+
item_id TEXT PRIMARY KEY,
|
|
11
|
+
source_instance_id TEXT NOT NULL,
|
|
12
|
+
collection_scope TEXT NOT NULL,
|
|
13
|
+
external_id TEXT NOT NULL,
|
|
14
|
+
item_type TEXT NOT NULL,
|
|
15
|
+
author_role TEXT,
|
|
16
|
+
occurred_at INTEGER,
|
|
17
|
+
source_updated_at INTEGER,
|
|
18
|
+
content_hash TEXT NOT NULL,
|
|
19
|
+
normalized_text TEXT,
|
|
20
|
+
payload_ref TEXT,
|
|
21
|
+
metadata_json TEXT NOT NULL DEFAULT '{}',
|
|
22
|
+
sensitivity TEXT NOT NULL DEFAULT 'normal',
|
|
23
|
+
retention_class TEXT NOT NULL DEFAULT 'bounded',
|
|
24
|
+
synthesis_status TEXT NOT NULL DEFAULT 'pending',
|
|
25
|
+
synthesis_pipeline TEXT NOT NULL DEFAULT 'user_understanding'
|
|
26
|
+
CHECK(synthesis_pipeline IN ('user_understanding', 'connected_knowledge')),
|
|
27
|
+
synthesis_attempts INTEGER NOT NULL DEFAULT 0,
|
|
28
|
+
synthesis_claimed_at INTEGER,
|
|
29
|
+
synthesis_claimed_by TEXT,
|
|
30
|
+
synthesis_error TEXT,
|
|
31
|
+
deleted_at INTEGER,
|
|
32
|
+
created_at INTEGER NOT NULL,
|
|
33
|
+
updated_at INTEGER NOT NULL,
|
|
34
|
+
UNIQUE(source_instance_id, collection_scope, external_id)
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
INSERT INTO knowledge_source_items_v65 (
|
|
38
|
+
item_id, source_instance_id, collection_scope, external_id, item_type, author_role,
|
|
39
|
+
occurred_at, source_updated_at, content_hash, normalized_text, payload_ref, metadata_json,
|
|
40
|
+
sensitivity, retention_class, synthesis_status, synthesis_pipeline, synthesis_attempts,
|
|
41
|
+
synthesis_claimed_at, synthesis_claimed_by, synthesis_error, deleted_at, created_at, updated_at
|
|
42
|
+
)
|
|
43
|
+
SELECT
|
|
44
|
+
item_id, source_instance_id, collection_scope, external_id, item_type, author_role,
|
|
45
|
+
occurred_at, source_updated_at, content_hash, normalized_text, payload_ref, metadata_json,
|
|
46
|
+
sensitivity, retention_class, synthesis_status, synthesis_pipeline, synthesis_attempts,
|
|
47
|
+
synthesis_claimed_at, synthesis_claimed_by, synthesis_error, deleted_at, created_at, updated_at
|
|
48
|
+
FROM knowledge_source_items;
|
|
49
|
+
|
|
50
|
+
DROP TABLE knowledge_source_items;
|
|
51
|
+
ALTER TABLE knowledge_source_items_v65 RENAME TO knowledge_source_items;
|
|
52
|
+
|
|
53
|
+
CREATE INDEX idx_knowledge_source_items_source_updated
|
|
54
|
+
ON knowledge_source_items(source_instance_id, updated_at DESC);
|
|
55
|
+
CREATE INDEX idx_knowledge_source_items_synthesis
|
|
56
|
+
ON knowledge_source_items(synthesis_status, updated_at);
|
|
57
|
+
CREATE INDEX idx_knowledge_source_items_hash
|
|
58
|
+
ON knowledge_source_items(content_hash);
|
|
59
|
+
CREATE INDEX idx_knowledge_source_items_synthesis_lease
|
|
60
|
+
ON knowledge_source_items(synthesis_pipeline, synthesis_status, synthesis_claimed_at, updated_at);
|
|
61
|
+
CREATE INDEX idx_knowledge_source_items_collection
|
|
62
|
+
ON knowledge_source_items(source_instance_id, collection_scope, updated_at DESC);
|
|
63
|
+
|
|
64
|
+
CREATE TABLE memory_evidence (
|
|
65
|
+
evidence_id TEXT PRIMARY KEY,
|
|
66
|
+
record_id TEXT NOT NULL,
|
|
67
|
+
source_item_id TEXT,
|
|
68
|
+
relation TEXT NOT NULL,
|
|
69
|
+
excerpt TEXT,
|
|
70
|
+
confidence REAL,
|
|
71
|
+
observed_at INTEGER,
|
|
72
|
+
created_at INTEGER NOT NULL,
|
|
73
|
+
FOREIGN KEY(record_id) REFERENCES memory_records(record_id) ON DELETE CASCADE,
|
|
74
|
+
FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE SET NULL
|
|
75
|
+
);
|
|
76
|
+
INSERT INTO memory_evidence SELECT * FROM memory_evidence_backup;
|
|
77
|
+
DROP TABLE memory_evidence_backup;
|
|
78
|
+
CREATE INDEX idx_memory_evidence_record ON memory_evidence(record_id, created_at DESC);
|
|
79
|
+
CREATE INDEX idx_memory_evidence_source_item ON memory_evidence(source_item_id);
|
|
80
|
+
CREATE UNIQUE INDEX idx_memory_evidence_record_source_relation
|
|
81
|
+
ON memory_evidence(record_id, source_item_id, relation)
|
|
82
|
+
WHERE source_item_id IS NOT NULL;
|
|
83
|
+
|
|
84
|
+
CREATE TABLE knowledge_source_changes (
|
|
85
|
+
sequence INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
86
|
+
change_id TEXT NOT NULL UNIQUE,
|
|
87
|
+
source_instance_id TEXT NOT NULL,
|
|
88
|
+
source_item_id TEXT NOT NULL,
|
|
89
|
+
change_kind TEXT NOT NULL CHECK(change_kind IN ('added', 'modified', 'deleted')),
|
|
90
|
+
old_hash TEXT,
|
|
91
|
+
new_hash TEXT,
|
|
92
|
+
changed_at INTEGER NOT NULL,
|
|
93
|
+
FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE CASCADE
|
|
94
|
+
);
|
|
95
|
+
INSERT INTO knowledge_source_changes SELECT * FROM knowledge_source_changes_backup;
|
|
96
|
+
DROP TABLE knowledge_source_changes_backup;
|
|
97
|
+
CREATE INDEX idx_knowledge_source_changes_source_sequence
|
|
98
|
+
ON knowledge_source_changes(source_instance_id, sequence);
|
|
99
|
+
CREATE INDEX idx_knowledge_source_changes_changed_at
|
|
100
|
+
ON knowledge_source_changes(changed_at DESC);
|
|
101
|
+
|
|
102
|
+
CREATE TABLE user_claim_evidence (
|
|
103
|
+
claim_id TEXT NOT NULL,
|
|
104
|
+
logical_event_key TEXT NOT NULL,
|
|
105
|
+
source_item_id TEXT NOT NULL,
|
|
106
|
+
source_instance_id TEXT NOT NULL,
|
|
107
|
+
relation TEXT NOT NULL CHECK(relation IN ('supports', 'contradicts')),
|
|
108
|
+
observed_at INTEGER NOT NULL,
|
|
109
|
+
created_at INTEGER NOT NULL,
|
|
110
|
+
PRIMARY KEY(claim_id, logical_event_key),
|
|
111
|
+
FOREIGN KEY(claim_id) REFERENCES user_claims(claim_id) ON DELETE CASCADE,
|
|
112
|
+
FOREIGN KEY(source_item_id) REFERENCES knowledge_source_items(item_id) ON DELETE CASCADE
|
|
113
|
+
);
|
|
114
|
+
INSERT INTO user_claim_evidence SELECT * FROM user_claim_evidence_backup;
|
|
115
|
+
DROP TABLE user_claim_evidence_backup;
|
|
116
|
+
CREATE INDEX idx_user_claim_evidence_source ON user_claim_evidence(source_item_id);
|
|
@@ -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 = 65;
|
|
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 = 65;
|
|
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 ?? 65;
|
|
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 ?? 65;
|
|
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 = 65;
|
|
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: 65 });
|
|
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 };
|
|
@@ -91,25 +91,6 @@ CREATE INDEX IF NOT EXISTS idx_entries_session_seq
|
|
|
91
91
|
CREATE INDEX IF NOT EXISTS idx_entries_kind
|
|
92
92
|
ON transcript_entries(session_id, entry_kind);
|
|
93
93
|
|
|
94
|
-
CREATE TABLE IF NOT EXISTS compaction_checkpoints (
|
|
95
|
-
checkpoint_id TEXT PRIMARY KEY,
|
|
96
|
-
session_id TEXT NOT NULL,
|
|
97
|
-
session_key TEXT NOT NULL,
|
|
98
|
-
created_at INTEGER NOT NULL,
|
|
99
|
-
message_count INTEGER NOT NULL,
|
|
100
|
-
size_bytes INTEGER NOT NULL
|
|
101
|
-
);
|
|
102
|
-
|
|
103
|
-
CREATE TABLE IF NOT EXISTS checkpoint_entries (
|
|
104
|
-
checkpoint_id TEXT NOT NULL,
|
|
105
|
-
seq INTEGER NOT NULL,
|
|
106
|
-
entry_kind TEXT NOT NULL,
|
|
107
|
-
role TEXT,
|
|
108
|
-
payload_json TEXT NOT NULL,
|
|
109
|
-
PRIMARY KEY (checkpoint_id, seq),
|
|
110
|
-
FOREIGN KEY (checkpoint_id) REFERENCES compaction_checkpoints(checkpoint_id) ON DELETE CASCADE
|
|
111
|
-
);
|
|
112
|
-
|
|
113
94
|
CREATE VIRTUAL TABLE IF NOT EXISTS transcript_fts USING fts5(
|
|
114
95
|
content,
|
|
115
96
|
session_key UNINDEXED,
|
|
@@ -1,20 +1,17 @@
|
|
|
1
1
|
import type { AgentMessage } from '@earendil-works/pi-agent-core';
|
|
2
|
-
import type {
|
|
3
|
-
import type
|
|
4
|
-
import { type TranscriptStoredRow } from '../../session/session-context-for-llm.js';
|
|
2
|
+
import type { CompactionBoundarySummary } from '../../session/types.js';
|
|
3
|
+
import { type TranscriptStoredRow, type XopcTranscriptCompactionEntry } from '../../session/session-context-for-llm.js';
|
|
5
4
|
import { type TranscriptEntryRow } from './row-mappers.js';
|
|
6
5
|
export declare function appendTranscriptEntry(sessionKey: string, row: TranscriptStoredRow, opts?: {
|
|
7
6
|
sessionId?: string;
|
|
8
7
|
tokenDelta?: number;
|
|
9
8
|
}): TranscriptEntryRow;
|
|
9
|
+
export declare function appendCompactionBoundary(sessionKey: string, row: Omit<XopcTranscriptCompactionEntry, 'baseSeq'>): TranscriptEntryRow;
|
|
10
10
|
export declare function loadTranscriptRowsForSession(sessionKey: string): TranscriptStoredRow[];
|
|
11
11
|
export declare function loadTranscriptHistoryRowsForSession(sessionKey: string): TranscriptStoredRow[];
|
|
12
12
|
export declare function loadTranscriptRows(sessionId: string): TranscriptStoredRow[];
|
|
13
13
|
export declare function loadLlmMessagesForSession(sessionKey: string): AgentMessage[];
|
|
14
|
-
export declare function replaceTranscriptRows(sessionKey: string, rows: TranscriptStoredRow[]
|
|
15
|
-
appendCompaction?: TranscriptCompactionRecord;
|
|
16
|
-
}): void;
|
|
17
|
-
export declare function loadCheckpointRows(sessionKey: string, checkpointId: string): TranscriptStoredRow[];
|
|
14
|
+
export declare function replaceTranscriptRows(sessionKey: string, rows: TranscriptStoredRow[]): void;
|
|
18
15
|
export declare function paginateTranscriptMessages(sessionKey: string, options?: {
|
|
19
16
|
offset?: number;
|
|
20
17
|
limit?: number;
|
|
@@ -29,7 +26,5 @@ export declare function paginateTranscriptMessages(sessionKey: string, options?:
|
|
|
29
26
|
startSeq: number;
|
|
30
27
|
endSeq: number;
|
|
31
28
|
};
|
|
32
|
-
export declare function
|
|
33
|
-
export declare function
|
|
34
|
-
export declare function getCompactionCheckpointDetail(sessionKey: string, checkpointId: string): CompactionCheckpointDetail | null;
|
|
35
|
-
export declare function restoreCompactionCheckpoint(sessionKey: string, checkpointId: string): void;
|
|
29
|
+
export declare function listCompactionBoundaries(sessionKey: string): CompactionBoundarySummary[];
|
|
30
|
+
export declare function restoreBeforeCompactionBoundary(sessionKey: string, compactionId: string): void;
|