@xopcai/xopc 0.0.224 → 0.0.225
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/demo-memory/src/index.js +10 -1
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{activity-store--GBciH10.js → activity-store-CtTYnku4.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-K7V4XXt7.js → agent-avatar-dicebear-dizuqu_4.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-BsxTpXyq.js → agents-DeEEFZJ4.js} +1 -1
- package/dist/gateway/static/root/assets/{api-HoIz_ija.js → api-CLRMz2BT.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-xQCmkAHh.js → app-management-settings-panel-Cnk-DtQh.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BRoeA4kU.js → appearance-settings-wP0rogVI.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-BXgpBA8w.js → apps-page-Db5YNHVM.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-CteCVsBP.js → archive-plugin-Cpzsm-DM.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-D7xNA2jB.js → attachment-load-Bd2OOoEK.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BD1vK7r5.js → automations-page-DNqhguyk.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-workspace-wrgf-z7D.js → automations-workspace-CNT05YTb.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-C3DaJa0W.js → binary-plugins-Dcma5HdI.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-lTkcHTve.js → block-editor-D-B8ThwK.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-settings-page-zhzNkeVG.js → browser-settings-page-UbDj3LIq.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflow-inputs-1UZ0vnIy.js → browser-workflow-inputs-BAPZIXrs.js} +1 -1
- package/dist/gateway/static/root/assets/{browser-workflows-page-BHuJOF4M.js → browser-workflows-page-DHtaSKEh.js} +1 -1
- package/dist/gateway/static/root/assets/{capabilities-settings-panel-DuCmg2Ej.js → capabilities-settings-panel-CiO152QS.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-api-yNqTIuyd.js → capability-presets-api-zsZQ7im3.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-DjiP3mQQ.js → capability-presets-settings-panel-Bc_hRwfL.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-krezGsKc.js → channel-recipient-api-Cp8iaaXp.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-B4AtvQHk.js → channels-settings-CFW7zBoT.js} +1 -1
- package/dist/gateway/static/root/assets/channels-status-swr-5rNVq7iI.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-BRrL2iHA.js → chat-terminal-dock-Dr6Rq2ln.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-DLBr5nre.js +2 -0
- package/dist/gateway/static/root/assets/{cron-expression-Bl-2DzBQ.js → cron-expression-BiXrpzmo.js} +1 -1
- package/dist/gateway/static/root/assets/{date-picker-CxTl6Wlz.js → date-picker-BPuRtwKt.js} +1 -1
- package/dist/gateway/static/root/assets/{dependency-picker-DSl0mOPa.js → dependency-picker-BNC_W7wI.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-DTeCmCdb.js → desktop-pet-DzOpt5nI.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-BNebxg0V.js → desktop-pet-settings-BW0brCvH.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-Dn9XpmXY.js → directory-picker-path-field-Baml0uTS.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-D-J-eOTb.js → extension-debug-page-CBXyKmfS.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CpST24nU.js → extension-page-BBhcr_SZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-4nQXFnFq.js → extension-settings-page-4rwWpN9_.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-BHWHduDi.js → gateway-config-api-Dg-BlBe4.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-yUxMMVjK.js → gateway-config-swr-Du0MvK9s.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BimMKmkM.js → gateway-settings-BOuYZOYe.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-9mrsL84j.js → gateway-startup-retry-JbjcHCaN.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-MUJ3mEC9.js → heartbeat-settings-Dq4YAlSx.js} +1 -1
- package/dist/gateway/static/root/assets/{home-page-DSM6aPHF.js → home-page-BIXkO0Ck.js} +1 -1
- package/dist/gateway/static/root/assets/{image-generation-api-CgFAGDi8.js → image-generation-api-G2tfPvKP.js} +1 -1
- package/dist/gateway/static/root/assets/{index-B3zYJBhK.js → index-Csccu8sa.js} +11 -11
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-6Ar5rfX4.js → keyboard-shortcuts-settings-L1Vtxgp9.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-tzM0wTL8.js → local-app-workbench-page-D-eacBcO.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-B5n-x544.js → local-apps-page--thlkBLS.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-CPylQjH9.js → locale-store-DqJz-cOR.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-CgoQlera.js → logs-page-BRCglHvd.js} +1 -1
- package/dist/gateway/static/root/assets/{management-settings-CXBLyU-0.js → management-settings-p55fR4XO.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-CtmQemJi.js → markdown-split-DwMcRlBR.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-view-CUsob4Pz.js → markdown-view-CTB9u15e.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-Dsd-IEOW.js → media-plugins-O6H3GZn7.js} +1 -1
- package/dist/gateway/static/root/assets/{messages-B82nsi9k.js → messages-CeydamsI.js} +3 -3
- package/dist/gateway/static/root/assets/{notes-api-CfKZYrBC.js → notes-api-CrjQbmk1.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-BKbOTE2n.js → notes-page-miO9ig9C.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-workbench-BScELo01.js → notes-workbench-_13lmvmF.js} +2 -2
- package/dist/gateway/static/root/assets/{product-open-page-DqB9bsDB.js → product-open-page-BOu07nXf.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-DUoyty8X.js → project-detail-page-BStRkOQr.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-PeXUdGdO.js → projects-page-CY03RxVr.js} +1 -1
- package/dist/gateway/static/root/assets/{registry-api-B_5D8epF.js → registry-api-Bf_HDLUJ.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-sHho-uXP.js → remote-access-hub-B19llkld.js} +1 -1
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-DBTH_t0O.js → runtime-tools-settings-panel-DthuRqUH.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CqMKAwV0.js → schema-form-8W8PhXxa.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-DyvNgaP9.js → sessions-page-BDA2qbTd.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BONIDX4v.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-dPriuuYq.js → settings-form-section-CrsKGYiG.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-B-Mbm8Va.js → settings-loading-skeleton-WJtI0AAq.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-Dyj3w-Ml.js → settings-page-PCjwRF47.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-C4FxY5J3.js → setup-status-panel-D65CwlNC.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-emEdx7YL.js → share-preview-page-BGtvLLeZ.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-BQBVq-sN.js → shares-settings-CdzVKrBl.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-CsRWid5h.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-BNtYnrRT.js → skills-page-C_npyryI.js} +1 -1
- package/dist/gateway/static/root/assets/{skills-page.utils-DjnbNFs5.js → skills-page.utils-C46Sd78k.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-DDStf-jZ.js → system-settings-panel-DomTLwki.js} +1 -1
- package/dist/gateway/static/root/assets/{task-detail-page-ZVwr8KbS.js → task-detail-page-B6YFX7kK.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-BN-32Fz5.js → theme-store-Ce7wq__X.js} +1 -1
- package/dist/gateway/static/root/assets/{use-autosave-C2mKZ-ua.js → use-autosave-Do9mCRcY.js} +1 -1
- package/dist/gateway/static/root/assets/{user-context-page-CHjIinCW.js → user-context-page-CiCQA40E.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-D7OHeQby.js → voice-api-key-field-Bc5p-0tX.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-CIiXie7F.js → work-discovery-overlay-BieqsmT1.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-9_dAGW3_.js → workflow-run-setup-panel-DVj8iYvm.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-DXpYJxao.js → workflows-page-AG04TTuH.js} +1 -1
- package/dist/gateway/static/root/index.html +10 -10
- package/dist/package.js +1 -1
- package/dist/src/agent/embedded/run-turn.js +2 -0
- package/dist/src/agent/mcp/bundle-mcp-config.d.ts +9 -1
- package/dist/src/agent/mcp/bundle-mcp-config.js +11 -15
- package/dist/src/agent/mcp/embedded-mcp.d.ts +1 -1
- package/dist/src/agent/mcp/index.d.ts +1 -0
- package/dist/src/agent/mcp/index.js +7 -1
- package/dist/src/agent/mcp/mcp-http.d.ts +4 -0
- package/dist/src/agent/mcp/mcp-http.js +25 -1
- package/dist/src/agent/mcp/mcp-transport-config.d.ts +4 -0
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -0
- package/dist/src/agent/mcp/mcp-transport.d.ts +7 -1
- package/dist/src/agent/mcp/mcp-transport.js +38 -11
- package/dist/src/agent/mcp/oauth/index.d.ts +6 -0
- package/dist/src/agent/mcp/oauth/index.js +6 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-errors.d.ts +5 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-errors.js +14 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.d.ts +25 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-manager.js +219 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-provider.d.ts +33 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-provider.js +103 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-session.d.ts +29 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-session.js +169 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.d.ts +9 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-store.js +79 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-types.d.ts +22 -0
- package/dist/src/agent/mcp/oauth/mcp-oauth-types.js +1 -0
- package/dist/src/agent/memory/builtin-provider.js +23 -4
- package/dist/src/agent/memory/compaction-promotion.d.ts +18 -0
- package/dist/src/agent/memory/compaction-promotion.js +211 -0
- package/dist/src/agent/memory/context/types.d.ts +5 -0
- package/dist/src/agent/memory/manager.d.ts +3 -0
- package/dist/src/agent/memory/manager.js +12 -2
- package/dist/src/agent/memory/trusted-recall.d.ts +7 -0
- package/dist/src/agent/memory/trusted-recall.js +53 -0
- package/dist/src/agent/memory/turn-provenance.d.ts +14 -0
- package/dist/src/agent/memory/turn-provenance.js +60 -0
- package/dist/src/agent/memory/types.d.ts +18 -3
- package/dist/src/agent/memory/user-context-coordinator.js +57 -6
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +2 -0
- package/dist/src/agent/tools/memory-tool.js +5 -1
- package/dist/src/capabilities/store-connector.js +99 -10
- package/dist/src/cli/commands/channels.js +1 -1
- package/dist/src/cli/commands/connectors.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard.js +1 -1
- package/dist/src/config/config-mutation.d.ts +14 -0
- package/dist/src/config/config-mutation.js +33 -0
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/paths.d.ts +2 -0
- package/dist/src/config/paths.js +5 -1
- package/dist/src/config/schema.d.ts +17 -0
- package/dist/src/config/schema.js +26 -2
- package/dist/src/connectors/auth-provider-registry.d.ts +1 -1
- package/dist/src/connectors/auth-provider-registry.js +23 -2
- package/dist/src/connectors/install.js +3 -3
- package/dist/src/connectors/instances.d.ts +2 -1
- package/dist/src/connectors/instances.js +15 -5
- package/dist/src/connectors/materialize.d.ts +1 -0
- package/dist/src/connectors/materialize.js +9 -1
- package/dist/src/connectors/runtime-adapter-registry.js +1 -0
- package/dist/src/connectors/types.d.ts +4 -1
- package/dist/src/extensions/connector-dependencies.d.ts +10 -0
- package/dist/src/extensions/connector-dependencies.js +65 -0
- package/dist/src/extensions/install.js +27 -0
- package/dist/src/extensions/normalize-manifest.js +1 -0
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/extensions/types/manifest.d.ts +2 -0
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/routes/capabilities.js +8 -8
- package/dist/src/gateway/hono/routes/connectors.js +87 -55
- package/dist/src/gateway/hono/routes/mcp.js +77 -5
- package/dist/src/gateway/hono/routes/voice.js +1 -1
- package/dist/src/gateway/service.js +8 -8
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/knowledge/connected-knowledge-pipeline.js +26 -4
- package/dist/src/session/store.js +27 -0
- package/dist/src/storage/sqlite/memory-records-repository.d.ts +9 -1
- package/dist/src/storage/sqlite/memory-records-repository.js +40 -6
- package/dist/src/storage/sqlite/migrations/134_memory_provenance.sql +18 -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/tui/backends/embedded-backend.js +1 -1
- package/dist/src/user-context/planner.js +8 -3
- package/package.json +2 -2
- package/dist/gateway/static/root/assets/channels-status-swr-DMxB7slL.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-fmda2NEP.js +0 -2
- package/dist/gateway/static/root/assets/settings-advanced-gate-CnYf1R7z.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BFoEpQ4I.js +0 -1
- package/dist/src/extensions/bundle-mcp.d.ts +0 -18
- package/dist/src/extensions/bundle-mcp.js +0 -69
|
@@ -45,11 +45,17 @@ import { MessageBus, MessageBusShutdownError } from "../infra/bus/queue.js";
|
|
|
45
45
|
import "../infra/bus/index.js";
|
|
46
46
|
import { AgentService } from "../agent/service.js";
|
|
47
47
|
import { ensureStarterAgentsInitialized } from "../agent/starter-agents.js";
|
|
48
|
-
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
49
|
-
import "../config/index.js";
|
|
50
48
|
import { setPairingBroadcastSink } from "../channels/pairing/pairing-events.js";
|
|
51
49
|
import { registerClarifyBridge } from "./clarify-runtime.js";
|
|
52
50
|
import { ChannelManager } from "../channels/manager.js";
|
|
51
|
+
import { getWorkspacePath } from "../config/workspace-path-helpers.js";
|
|
52
|
+
import "../config/index.js";
|
|
53
|
+
import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
|
|
54
|
+
import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
|
|
55
|
+
import "../knowledge/index.js";
|
|
56
|
+
import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
|
|
57
|
+
import { ConnectedSourceChangePublisher } from "../connectors/source-change-publisher.js";
|
|
58
|
+
import { startConnectorSupervisor } from "../connectors/supervisor.js";
|
|
53
59
|
import { DiscussionService } from "../discussions/service.js";
|
|
54
60
|
import { DiscussionOrganizer } from "../discussions/organizer.js";
|
|
55
61
|
import { DiscussionLiveWorker } from "../discussions/live-worker.js";
|
|
@@ -58,12 +64,6 @@ import { DiscussionSealer } from "../discussions/sealer.js";
|
|
|
58
64
|
import "../discussions/index.js";
|
|
59
65
|
import { EndpointToolRuntime } from "../endpoint-tools/runtime.js";
|
|
60
66
|
import "../endpoint-tools/index.js";
|
|
61
|
-
import { ManagedComposioEventPoller } from "../connectors/composio-managed-events.js";
|
|
62
|
-
import { startConnectedKnowledgeCoordinator } from "../knowledge/coordinator.js";
|
|
63
|
-
import "../knowledge/index.js";
|
|
64
|
-
import { startConnectorLearningCoordinator } from "../connectors/learning-coordinator.js";
|
|
65
|
-
import { ConnectedSourceChangePublisher } from "../connectors/source-change-publisher.js";
|
|
66
|
-
import { startConnectorSupervisor } from "../connectors/supervisor.js";
|
|
67
67
|
import { assertGatewayAuthConfigured, extractToken, resolveGatewayAuth, validateToken } from "./auth.js";
|
|
68
68
|
import { prepareAutomationAgentSession } from "./automation-agent-session.js";
|
|
69
69
|
import { reconcileDreamingAutomations } from "./dreaming-automation-reconciler.js";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, shouldSilence, stripHeartbeatToken } from "./tokens.js";
|
|
2
|
+
import { appendCronEventLines } from "./event-prompt.js";
|
|
2
3
|
import { isWithinActiveHours } from "./active-hours.js";
|
|
3
4
|
import { isHeartbeatContentEmpty } from "./content-check.js";
|
|
4
|
-
import { appendCronEventLines } from "./event-prompt.js";
|
|
5
5
|
import { createHeartbeatWake } from "./wake.js";
|
|
6
6
|
export { DEFAULT_ACK_MAX_CHARS, HEARTBEAT_OK, NO_REPLY, appendCronEventLines, createHeartbeatWake, isHeartbeatContentEmpty, isWithinActiveHours, shouldSilence, stripHeartbeatToken };
|
|
@@ -2,8 +2,8 @@ import { createLogger } from "../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../utils/logger.js";
|
|
3
3
|
import { init_paths, resolveConfigPath } from "../config/paths.js";
|
|
4
4
|
import { init_loader, loadConfig } from "../config/loader.js";
|
|
5
|
-
import { isRestartEnabled } from "../config/commands.flags.js";
|
|
6
5
|
import { resolveGatewayService } from "../daemon/service.js";
|
|
6
|
+
import { isRestartEnabled } from "../config/commands.flags.js";
|
|
7
7
|
import { authorizeGatewaySigusr1Restart, writeGatewayRestartIntentSync } from "./restart.js";
|
|
8
8
|
import { findVerifiedGatewayListenerPidsOnPortSync, signalVerifiedGatewayPidSync } from "./gateway-processes.js";
|
|
9
9
|
import { refreshGatewayServiceAfterUpdate } from "./update-service-refresh.js";
|
|
@@ -87,7 +87,14 @@ var ConnectedKnowledgePipeline = class {
|
|
|
87
87
|
expiresAt: existing.expiresAt,
|
|
88
88
|
canonicalKey: existing.canonicalKey,
|
|
89
89
|
supersedesRecordId: existing.supersedesRecordId,
|
|
90
|
-
conflictGroupId: existing.conflictGroupId
|
|
90
|
+
conflictGroupId: existing.conflictGroupId,
|
|
91
|
+
originClass: existing.provenance.originClass,
|
|
92
|
+
sessionKind: existing.provenance.sessionKind,
|
|
93
|
+
observedAt: existing.provenance.observedAt,
|
|
94
|
+
sourceSessionId: existing.provenance.sourceSessionId,
|
|
95
|
+
sourceTurnId: existing.provenance.sourceTurnId,
|
|
96
|
+
supersedesKey: existing.provenance.supersedesKey,
|
|
97
|
+
derivedFromRecalledContext: existing.provenance.derivedFromRecalledContext
|
|
91
98
|
});
|
|
92
99
|
completeKnowledgeSourceItemSynthesis({
|
|
93
100
|
itemId: item.id,
|
|
@@ -141,7 +148,11 @@ var ConnectedKnowledgePipeline = class {
|
|
|
141
148
|
confidence: .78,
|
|
142
149
|
observedAt: item.occurredAt ?? item.sourceUpdatedAt
|
|
143
150
|
}],
|
|
144
|
-
validFrom: item.occurredAt ?? item.sourceUpdatedAt
|
|
151
|
+
validFrom: item.occurredAt ?? item.sourceUpdatedAt,
|
|
152
|
+
originClass: "untrusted",
|
|
153
|
+
sessionKind: "background",
|
|
154
|
+
observedAt: item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt,
|
|
155
|
+
derivedFromRecalledContext: false
|
|
145
156
|
});
|
|
146
157
|
attachMemoryEvidence({
|
|
147
158
|
recordId: record.id,
|
|
@@ -238,7 +249,14 @@ var ConnectedKnowledgePipeline = class {
|
|
|
238
249
|
validTo: (/* @__PURE__ */ new Date()).toISOString(),
|
|
239
250
|
reviewAfter: existing.reviewAfter,
|
|
240
251
|
expiresAt: existing.expiresAt,
|
|
241
|
-
canonicalKey: existing.canonicalKey
|
|
252
|
+
canonicalKey: existing.canonicalKey,
|
|
253
|
+
originClass: existing.provenance.originClass,
|
|
254
|
+
sessionKind: existing.provenance.sessionKind,
|
|
255
|
+
observedAt: existing.provenance.observedAt,
|
|
256
|
+
sourceSessionId: existing.provenance.sourceSessionId,
|
|
257
|
+
sourceTurnId: existing.provenance.sourceTurnId,
|
|
258
|
+
supersedesKey: existing.provenance.supersedesKey,
|
|
259
|
+
derivedFromRecalledContext: existing.provenance.derivedFromRecalledContext
|
|
242
260
|
});
|
|
243
261
|
return false;
|
|
244
262
|
}
|
|
@@ -282,7 +300,11 @@ var ConnectedKnowledgePipeline = class {
|
|
|
282
300
|
confidence: .72,
|
|
283
301
|
observedAt: item.occurredAt ?? item.sourceUpdatedAt
|
|
284
302
|
})),
|
|
285
|
-
validFrom: `${day}T00:00:00.000Z
|
|
303
|
+
validFrom: `${day}T00:00:00.000Z`,
|
|
304
|
+
originClass: "untrusted",
|
|
305
|
+
sessionKind: "background",
|
|
306
|
+
observedAt: items.map((item) => item.occurredAt ?? item.sourceUpdatedAt ?? item.updatedAt).sort().at(-1),
|
|
307
|
+
derivedFromRecalledContext: false
|
|
286
308
|
});
|
|
287
309
|
deleteMemoryEvidenceForRecord(summary.id, "derived_from");
|
|
288
310
|
for (const item of items) attachMemoryEvidence({
|
|
@@ -4,6 +4,7 @@ import { init_logger } from "../utils/logger.js";
|
|
|
4
4
|
import { requireXopcDatabase } from "../storage/sqlite/connection.js";
|
|
5
5
|
import { buildSessionContextForLlm, buildSessionDisplayMessages, isRuntimeOnlyTranscriptMessage, isTranscriptCompactionEntry, mergeLlmMessagesPreservingContextRows, transcriptRowsFromJsonArray } from "./session-context-for-llm.js";
|
|
6
6
|
import "./types.js";
|
|
7
|
+
import { init_agent_session_key, resolveAgentIdFromSessionKey } from "../routing/agent-session-key.js";
|
|
7
8
|
import { estimateTokensFromMessages } from "../storage/sqlite/row-mappers.js";
|
|
8
9
|
import { deleteSessionRecord, ensureSessionRecord, findSessionKeyBySessionId, getGlobalSessionStats, getSessionMetadata, listSessionMetadata, listSessionsByAgent, patchSessionMetadata, resetSessionRecord } from "../storage/sqlite/session-repository.js";
|
|
9
10
|
import { appendCompactionBoundaryIfUnchanged, appendTranscriptEntry, listCompactionBoundaries, loadCompactionSourceSnapshot, loadLlmMessagesForSession, loadTranscriptHistoryRowsForSession, loadTranscriptRowsForSession, paginateTranscriptMessages, replaceTranscriptRows, restoreBeforeCompactionBoundary, searchSessionTranscript } from "../storage/sqlite/transcript-repository.js";
|
|
@@ -12,12 +13,14 @@ import { resolveEffectiveAgentProfileForSession } from "../config/agent-profile.
|
|
|
12
13
|
import { readPostCompactionContext } from "../agent/reply/post-compaction-context.js";
|
|
13
14
|
import { SessionCompactor } from "../agent/memory/compaction.js";
|
|
14
15
|
import { resolveCompactionPolicy } from "../agent/memory/compaction-policy.js";
|
|
16
|
+
import { promoteCompactionLedger } from "../agent/memory/compaction-promotion.js";
|
|
15
17
|
import { SlidingWindow } from "../agent/memory/window.js";
|
|
16
18
|
import { isAppendOnlyLlmTranscriptMessage } from "./transcript-stats.js";
|
|
17
19
|
import { transcriptRowsToClientHistory } from "./client-history.js";
|
|
18
20
|
import { computeTranscriptUserRoundDeleteRange } from "./user-round-delete.js";
|
|
19
21
|
//#region src/session/store.ts
|
|
20
22
|
init_paths_state();
|
|
23
|
+
init_agent_session_key();
|
|
21
24
|
init_logger();
|
|
22
25
|
const log = createLogger("SessionStore");
|
|
23
26
|
const INDEX_VERSION = "1.0";
|
|
@@ -455,6 +458,30 @@ var SessionStore = class {
|
|
|
455
458
|
tokensBefore: result.tokensBefore,
|
|
456
459
|
tokensAfter: result.tokensAfter
|
|
457
460
|
})) throw new Error(`Session changed while compaction was running: ${key}`);
|
|
461
|
+
try {
|
|
462
|
+
const metadata = getSessionMetadata(key);
|
|
463
|
+
const promoted = promoteCompactionLedger({
|
|
464
|
+
sessionKey: key,
|
|
465
|
+
sessionId: expectedSnapshot.sessionId,
|
|
466
|
+
sourceAgentId: resolveAgentIdFromSessionKey(key),
|
|
467
|
+
workspaceId: this.resolveWorkspaceCwd(key),
|
|
468
|
+
projectId: metadata?.projectId,
|
|
469
|
+
handover: result.handover,
|
|
470
|
+
audit: result.audit,
|
|
471
|
+
sourceEntries: expectedSnapshot.entries
|
|
472
|
+
});
|
|
473
|
+
log.info({
|
|
474
|
+
sessionKey: key,
|
|
475
|
+
episodicCount: promoted.episodicRecordIds.length,
|
|
476
|
+
durableCount: promoted.durableRecordIds.length,
|
|
477
|
+
rejectedCount: promoted.rejectedRecordIds.length
|
|
478
|
+
}, "Compaction ledger memory promotion completed");
|
|
479
|
+
} catch (err) {
|
|
480
|
+
log.warn({
|
|
481
|
+
err,
|
|
482
|
+
sessionKey: key
|
|
483
|
+
}, "Compaction ledger memory promotion failed");
|
|
484
|
+
}
|
|
458
485
|
log.info({
|
|
459
486
|
key,
|
|
460
487
|
tokensBefore: result.tokensBefore,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { MemoryDisclosurePolicy, MemoryDurability, MemoryExplicitness, MemoryKind, MemoryRecord, MemorySensitivity, MemorySearchResult, MemorySignal, MemoryStatus } from '../../agent/memory/types.js';
|
|
1
|
+
import type { MemoryDisclosurePolicy, MemoryDurability, MemoryExplicitness, MemoryKind, MemoryOriginClass, MemoryRecord, MemorySessionKind, MemorySensitivity, MemorySearchResult, MemorySignal, MemoryStatus } from '../../agent/memory/types.js';
|
|
2
2
|
export interface UpsertMemoryRecordInput {
|
|
3
3
|
id?: string;
|
|
4
4
|
providerId: string;
|
|
@@ -26,6 +26,13 @@ export interface UpsertMemoryRecordInput {
|
|
|
26
26
|
expiresAt?: string;
|
|
27
27
|
supersedesRecordId?: string;
|
|
28
28
|
conflictGroupId?: string;
|
|
29
|
+
originClass?: MemoryOriginClass;
|
|
30
|
+
sessionKind?: MemorySessionKind;
|
|
31
|
+
observedAt?: string;
|
|
32
|
+
sourceSessionId?: string;
|
|
33
|
+
sourceTurnId?: string;
|
|
34
|
+
supersedesKey?: string;
|
|
35
|
+
derivedFromRecalledContext?: boolean;
|
|
29
36
|
nowMs?: number;
|
|
30
37
|
}
|
|
31
38
|
export interface ListMemoryRecordsOptions {
|
|
@@ -73,6 +80,7 @@ export interface SearchMemoryRecordsOptions {
|
|
|
73
80
|
statuses?: MemoryStatus[];
|
|
74
81
|
maxResults?: number;
|
|
75
82
|
minScore?: number;
|
|
83
|
+
trustedOnly?: boolean;
|
|
76
84
|
}
|
|
77
85
|
export interface AppendMemorySignalInput {
|
|
78
86
|
signal: MemorySignal;
|
|
@@ -86,7 +86,16 @@ function rowToRecord(row, evidence = []) {
|
|
|
86
86
|
...row.session_key ? { sessionKey: row.session_key } : {},
|
|
87
87
|
...row.project_id ? { projectId: row.project_id } : {}
|
|
88
88
|
},
|
|
89
|
-
provenance: {
|
|
89
|
+
provenance: {
|
|
90
|
+
sourceAgentId: row.source_agent_id,
|
|
91
|
+
originClass: row.origin_class,
|
|
92
|
+
sessionKind: row.session_kind,
|
|
93
|
+
observedAt: new Date(row.observed_at).toISOString(),
|
|
94
|
+
...row.source_session_id ? { sourceSessionId: row.source_session_id } : {},
|
|
95
|
+
...row.source_turn_id ? { sourceTurnId: row.source_turn_id } : {},
|
|
96
|
+
...row.supersedes_key ? { supersedesKey: row.supersedes_key } : {},
|
|
97
|
+
derivedFromRecalledContext: row.derived_from_recalled_context === 1
|
|
98
|
+
},
|
|
90
99
|
content: row.content,
|
|
91
100
|
source: parseSource(row.source_json),
|
|
92
101
|
...row.confidence != null ? { confidence: row.confidence } : {},
|
|
@@ -131,6 +140,9 @@ function upsertMemoryRecord(input) {
|
|
|
131
140
|
const validTo = parseOptionalTimestamp(input.validTo);
|
|
132
141
|
const reviewAfter = parseOptionalTimestamp(input.reviewAfter);
|
|
133
142
|
const expiresAt = parseOptionalTimestamp(input.expiresAt);
|
|
143
|
+
const observedAt = parseOptionalTimestamp(input.observedAt) ?? now;
|
|
144
|
+
const originClass = input.originClass ?? "untrusted";
|
|
145
|
+
const sessionKind = input.sessionKind ?? "unknown";
|
|
134
146
|
const source = {
|
|
135
147
|
...input.source ?? {},
|
|
136
148
|
provider: input.source?.provider ?? input.providerId
|
|
@@ -141,8 +153,10 @@ function upsertMemoryRecord(input) {
|
|
|
141
153
|
content, source_json, confidence, tags_json, status, sensitivity,
|
|
142
154
|
canonical_key, explicitness, durability, importance,
|
|
143
155
|
disclosure_policy, valid_from, valid_to, review_after, expires_at,
|
|
144
|
-
supersedes_record_id, conflict_group_id,
|
|
145
|
-
|
|
156
|
+
supersedes_record_id, conflict_group_id,
|
|
157
|
+
origin_class, session_kind, observed_at, source_session_id, source_turn_id,
|
|
158
|
+
supersedes_key, derived_from_recalled_context, created_at, updated_at
|
|
159
|
+
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
146
160
|
ON CONFLICT(record_id) DO UPDATE SET
|
|
147
161
|
provider_id = excluded.provider_id,
|
|
148
162
|
kind = excluded.kind,
|
|
@@ -168,7 +182,14 @@ function upsertMemoryRecord(input) {
|
|
|
168
182
|
expires_at = excluded.expires_at,
|
|
169
183
|
supersedes_record_id = excluded.supersedes_record_id,
|
|
170
184
|
conflict_group_id = excluded.conflict_group_id,
|
|
171
|
-
|
|
185
|
+
origin_class = excluded.origin_class,
|
|
186
|
+
session_kind = excluded.session_kind,
|
|
187
|
+
observed_at = excluded.observed_at,
|
|
188
|
+
source_session_id = excluded.source_session_id,
|
|
189
|
+
source_turn_id = excluded.source_turn_id,
|
|
190
|
+
supersedes_key = excluded.supersedes_key,
|
|
191
|
+
derived_from_recalled_context = excluded.derived_from_recalled_context,
|
|
192
|
+
updated_at = excluded.updated_at`).run(id, input.providerId, input.kind, input.userId ?? "local-owner", input.sourceAgentId, input.workspaceId ?? null, input.sessionKey ?? null, input.projectId ?? null, input.content, JSON.stringify(source), input.confidence ?? null, JSON.stringify(input.tags ?? []), status, sensitivity, input.canonicalKey ?? null, explicitness, durability, importance, disclosurePolicy, validFrom, validTo, reviewAfter, expiresAt, input.supersedesRecordId ?? null, input.conflictGroupId ?? null, originClass, sessionKind, observedAt, input.sourceSessionId ?? null, input.sourceTurnId ?? null, input.supersedesKey ?? null, input.derivedFromRecalledContext ? 1 : 0, now, now);
|
|
172
193
|
upsertMemoryRecordFts(db, {
|
|
173
194
|
...input,
|
|
174
195
|
id
|
|
@@ -204,7 +225,16 @@ function upsertMemoryRecord(input) {
|
|
|
204
225
|
...input.sessionKey ? { sessionKey: input.sessionKey } : {},
|
|
205
226
|
...input.projectId ? { projectId: input.projectId } : {}
|
|
206
227
|
},
|
|
207
|
-
provenance: {
|
|
228
|
+
provenance: {
|
|
229
|
+
sourceAgentId: input.sourceAgentId,
|
|
230
|
+
originClass,
|
|
231
|
+
sessionKind,
|
|
232
|
+
observedAt: new Date(observedAt).toISOString(),
|
|
233
|
+
...input.sourceSessionId ? { sourceSessionId: input.sourceSessionId } : {},
|
|
234
|
+
...input.sourceTurnId ? { sourceTurnId: input.sourceTurnId } : {},
|
|
235
|
+
...input.supersedesKey ? { supersedesKey: input.supersedesKey } : {},
|
|
236
|
+
derivedFromRecalledContext: input.derivedFromRecalledContext ?? false
|
|
237
|
+
},
|
|
208
238
|
content: input.content,
|
|
209
239
|
source,
|
|
210
240
|
...input.confidence != null ? { confidence: input.confidence } : {},
|
|
@@ -339,6 +369,10 @@ function searchMemoryRecords(options) {
|
|
|
339
369
|
filters.push(`f.kind IN (${options.kinds.map(() => "?").join(", ")})`);
|
|
340
370
|
params.push(...options.kinds);
|
|
341
371
|
}
|
|
372
|
+
if (options.trustedOnly) {
|
|
373
|
+
filters.push(`r.origin_class IN ('owner', 'agent')`);
|
|
374
|
+
filters.push("r.derived_from_recalled_context = 0");
|
|
375
|
+
}
|
|
342
376
|
const statuses = options.statuses && options.statuses.length > 0 ? options.statuses : ["active"];
|
|
343
377
|
filters.push(`r.status IN (${statuses.map(() => "?").join(", ")})`);
|
|
344
378
|
params.push(...statuses);
|
|
@@ -366,7 +400,7 @@ function searchMemoryRecords(options) {
|
|
|
366
400
|
visibleToWorkspaceId: options.visibleToWorkspaceId,
|
|
367
401
|
unscopedWorkspaceOnly: options.unscopedWorkspaceOnly,
|
|
368
402
|
limit: 500
|
|
369
|
-
}).filter((record) => statuses.includes(record.status ?? "active") && (!options.kinds?.length || options.kinds.includes(record.kind)));
|
|
403
|
+
}).filter((record) => statuses.includes(record.status ?? "active") && (!options.kinds?.length || options.kinds.includes(record.kind))).filter((record) => !options.trustedOnly || (record.provenance.originClass === "owner" || record.provenance.originClass === "agent") && !record.provenance.derivedFromRecalledContext);
|
|
370
404
|
const candidateById = new Map(candidateRecords.map((record) => [record.id, record]));
|
|
371
405
|
const missingRows = rows.filter((row) => !candidateById.has(row.record_id));
|
|
372
406
|
const missingEvidence = listMemoryEvidenceForRecords(missingRows.map((row) => row.record_id));
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
ALTER TABLE memory_records ADD COLUMN origin_class TEXT NOT NULL DEFAULT 'untrusted'
|
|
2
|
+
CHECK (origin_class IN ('owner', 'agent', 'untrusted', 'system'));
|
|
3
|
+
ALTER TABLE memory_records ADD COLUMN session_kind TEXT NOT NULL DEFAULT 'unknown'
|
|
4
|
+
CHECK (session_kind IN ('interactive', 'group', 'automation', 'workflow', 'subagent', 'background', 'unknown'));
|
|
5
|
+
ALTER TABLE memory_records ADD COLUMN observed_at INTEGER NOT NULL DEFAULT 0;
|
|
6
|
+
ALTER TABLE memory_records ADD COLUMN source_session_id TEXT;
|
|
7
|
+
ALTER TABLE memory_records ADD COLUMN source_turn_id TEXT;
|
|
8
|
+
ALTER TABLE memory_records ADD COLUMN supersedes_key TEXT;
|
|
9
|
+
ALTER TABLE memory_records ADD COLUMN derived_from_recalled_context INTEGER NOT NULL DEFAULT 0
|
|
10
|
+
CHECK (derived_from_recalled_context IN (0, 1));
|
|
11
|
+
|
|
12
|
+
UPDATE memory_records
|
|
13
|
+
SET observed_at = CASE WHEN observed_at = 0 THEN created_at ELSE observed_at END;
|
|
14
|
+
|
|
15
|
+
CREATE INDEX idx_memory_records_trusted_scope_updated
|
|
16
|
+
ON memory_records(origin_class, derived_from_recalled_context, status, workspace_id, updated_at DESC);
|
|
17
|
+
CREATE INDEX idx_memory_records_source_turn
|
|
18
|
+
ON memory_records(source_session_id, source_turn_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 = 134;
|
|
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 = 134;
|
|
16
16
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
17
17
|
function backupBeforeTaskCutover(db, databasePath) {
|
|
18
18
|
db.exec("PRAGMA wal_checkpoint(FULL)");
|
|
@@ -57,7 +57,7 @@ function applySingleMigration(db, migration) {
|
|
|
57
57
|
* Each step runs in its own transaction and updates schema_meta on success.
|
|
58
58
|
*/
|
|
59
59
|
function applyPendingMigrations(db, options = {}) {
|
|
60
|
-
const targetVersion = options.targetVersion ??
|
|
60
|
+
const targetVersion = options.targetVersion ?? 134;
|
|
61
61
|
let currentVersion = readSchemaVersion(db);
|
|
62
62
|
if (currentVersion > targetVersion) throw new DatabaseSchemaTooNewError(currentVersion, targetVersion);
|
|
63
63
|
if (currentVersion >= targetVersion) return currentVersion;
|
|
@@ -94,7 +94,7 @@ function applyPendingMigrations(db, options = {}) {
|
|
|
94
94
|
}
|
|
95
95
|
/** Inspect schema version without mutating the database. */
|
|
96
96
|
function inspectSchemaMigrationStatus(db, options = {}) {
|
|
97
|
-
const appVersion = options.targetVersion ??
|
|
97
|
+
const appVersion = options.targetVersion ?? 134;
|
|
98
98
|
const dbVersion = readSchemaVersion(db);
|
|
99
99
|
if (dbVersion > appVersion) return {
|
|
100
100
|
dbVersion,
|
|
@@ -19,7 +19,7 @@ const log = createLogger('Sqlite:Migrations');
|
|
|
19
19
|
export const XOPC_DB_BASELINE_SCHEMA_VERSION = 11;
|
|
20
20
|
|
|
21
21
|
/** Latest schema version this release supports (increment when adding migrations). */
|
|
22
|
-
export const XOPC_DB_SCHEMA_VERSION =
|
|
22
|
+
export const XOPC_DB_SCHEMA_VERSION = 134;
|
|
23
23
|
|
|
24
24
|
const MODULE_DIR = dirname(fileURLToPath(import.meta.url));
|
|
25
25
|
|
|
@@ -23,9 +23,9 @@ import { parseModelRef } from "../../agent/models/selection.js";
|
|
|
23
23
|
import { buildReviewContext, resolveGitRoot } from "../../review/review-git.js";
|
|
24
24
|
import { MessageBus, MessageBusShutdownError } from "../../infra/bus/queue.js";
|
|
25
25
|
import "../../infra/bus/index.js";
|
|
26
|
+
import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
|
|
26
27
|
import { getWorkspacePath } from "../../config/workspace-path-helpers.js";
|
|
27
28
|
import "../../config/index.js";
|
|
28
|
-
import { prependEnvelopeTimestamp } from "../../channels/envelope-timestamp.js";
|
|
29
29
|
import { buildWorkflowChildTools } from "../../agent/workflow/workflow-child-tools.js";
|
|
30
30
|
import { WorkflowRunService } from "../../workflows/service/workflow-run-service.js";
|
|
31
31
|
import { WorkflowSessionBridge } from "../../workflows/service/workflow-session-bridge.js";
|
|
@@ -160,6 +160,8 @@ var UserContextPlanner = class {
|
|
|
160
160
|
rejected: [],
|
|
161
161
|
consentRequests: [],
|
|
162
162
|
estimatedTokens: 0,
|
|
163
|
+
contextChars: 0,
|
|
164
|
+
contextItemCount: 0,
|
|
163
165
|
allocation: params.allocation
|
|
164
166
|
};
|
|
165
167
|
const started = Date.now();
|
|
@@ -174,7 +176,8 @@ var UserContextPlanner = class {
|
|
|
174
176
|
const queryProfile = buildRetrievalQueryProfile(query, scopeInput);
|
|
175
177
|
const selfReview = queryProfile.selfReview;
|
|
176
178
|
const maxResults = requestedMaxResults ?? (selfReview ? SELF_REVIEW_MAX_RESULTS : DEFAULT_MAX_RESULTS);
|
|
177
|
-
const
|
|
179
|
+
const budgetChars = requestedMaxChars ?? (selfReview ? SELF_REVIEW_MAX_CONTEXT_CHARS : DEFAULT_MAX_CONTEXT_CHARS);
|
|
180
|
+
const maxChars = Math.max(0, budgetChars - 2);
|
|
178
181
|
const projects = new ProjectStore();
|
|
179
182
|
const excluded = new Set(params.excludedRecordIds ?? []);
|
|
180
183
|
const rejected = [];
|
|
@@ -464,7 +467,7 @@ var UserContextPlanner = class {
|
|
|
464
467
|
turnId: params.turnId,
|
|
465
468
|
sessionKey: params.sessionKey,
|
|
466
469
|
query,
|
|
467
|
-
budget:
|
|
470
|
+
budget: budgetChars,
|
|
468
471
|
durationMs: Date.now() - started,
|
|
469
472
|
items: traceItems
|
|
470
473
|
});
|
|
@@ -474,7 +477,9 @@ var UserContextPlanner = class {
|
|
|
474
477
|
items,
|
|
475
478
|
rejected,
|
|
476
479
|
consentRequests,
|
|
477
|
-
estimatedTokens: Math.ceil(block.length / 4),
|
|
480
|
+
estimatedTokens: Math.ceil((block.length + (block ? 2 : 0)) / 4),
|
|
481
|
+
contextChars: block.length + (block ? 2 : 0),
|
|
482
|
+
contextItemCount: traceItems.filter((item) => item.decision === "selected").length,
|
|
478
483
|
allocation: params.allocation
|
|
479
484
|
};
|
|
480
485
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xopcai/xopc",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.225",
|
|
4
4
|
"description": "Local-first personal AI assistant with reviewable user understanding, durable tasks, workflows, automations, and local or cloud models.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/src/index.js",
|
|
@@ -157,8 +157,8 @@
|
|
|
157
157
|
"vitepress": "^1.6.4",
|
|
158
158
|
"vitest": "4.1.5",
|
|
159
159
|
"vue": "^3.5.35",
|
|
160
|
-
"@xopcai/gateway-contract": "0.0.0",
|
|
161
160
|
"@xopcai/endpoint-tools-protocol": "0.0.0",
|
|
161
|
+
"@xopcai/gateway-contract": "0.0.0",
|
|
162
162
|
"@xopcai/realtime-protocol": "0.0.0",
|
|
163
163
|
"@xopcai/realtime-client": "0.0.0"
|
|
164
164
|
},
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./locale-store-CPylQjH9.js";import{n as t}from"./channel-recipient-api-krezGsKc.js";function n(){return e(`/api/channels/status`)}var r=t;export{r as n,n as t};
|