@xopcai/xopc 0.0.136 → 0.0.138
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/README.md +4 -0
- package/README.zh-CN.md +4 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/demo-memory/src/index.js +4 -0
- package/dist/extensions/demo-memory/src/index.js.map +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CER17NHM.js → agent-avatar-dicebear-CIsGDJzd.js} +1 -1
- package/dist/gateway/static/root/assets/agents-fX97A6iN.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-B3Ap_wpX.js → app-management-settings-panel-ByM4Bzwm.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-3kBO22Xd.js → appearance-settings-BF_poRd3.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-BHYbGQcZ.js → apps-page-BssdA5Qc.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-D_vGeNB8.js → archive-plugin-DJaYoyGn.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-hWV_8pHL.js → attachment-load-xx6dBaZU.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-DVKmVTIo.js → automation-suggestion-card-BMvGqYob.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-BCTXpOBp.js → automations-page-Dip8ZFmx.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-BuXIeSPc.js → binary-plugins-CuPLWibr.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C1m0u-UU.js → block-editor-bzfvlJnh.js} +58 -54
- package/dist/gateway/static/root/assets/{browser-settings-page-ChUF08V5.js → browser-settings-page-lbx_8Dku.js} +4 -4
- package/dist/gateway/static/root/assets/{capability-presets-api-B7WWYaEh.js → capability-presets-api-X4Imbf8n.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-D_Bh1PnA.js → capability-presets-settings-panel-v9JgKjJu.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-sV06LCht.js → channel-recipient-api-DllrPmp-.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-BI2ChQc7.js → channels-settings-CED7Oy5Y.js} +1 -1
- package/dist/gateway/static/root/assets/channels-status-swr-EUwWYx8l.js +1 -0
- package/dist/gateway/static/root/assets/{connectors-page-qgvEp09M.js → connectors-page-BMfp0jWL.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-BxMJlvb-.js → desktop-pet-oTig6qFO.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-settings-DCvpDImn.js → desktop-pet-settings-DXJiPL_H.js} +1 -1
- package/dist/gateway/static/root/assets/{directory-picker-path-field-D1nxs9PA.js → directory-picker-path-field-CltkXSR2.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-EAWkpOgw.js → dreaming-settings-CYrZQxoL.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-LUQ8dE8z.js → extension-debug-page-C-4BOy1R.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-B_mnhoRd.js → extension-page-C8nMpXqh.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-BWQsGmvW.js → extension-settings-page-CXWYOwka.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-BWXmBizE.js → fetch-BID89uCH.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-M9bzPASf.js → gateway-config-api-B3TGdim5.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-CbgtpprN.js → gateway-settings-D7tOnGAJ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-BALL91S7.js → gateway-startup-retry-BkrLLlpE.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-create-dialog-CbP4t9aM.js → goal-create-dialog-BL_cRshf.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-detail-page-DlwI-MZZ.js → goal-detail-page-T1vg6Ng_.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-config-api-BBhFVzBS.js → goals-config-api-D-WZWhP2.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-D26r7knp.js → goals-page-1vzWXl5W.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-settings-DdmVG_TR.js → goals-settings-DgGwvLVC.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-DZW2Xq-U.js → heartbeat-settings-yh0bEIwQ.js} +1 -1
- package/dist/gateway/static/root/assets/index-B8s8Pq5U.css +1 -0
- package/dist/gateway/static/root/assets/index-NwiCnzI-.js +262 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-1IWd88-T.js → keyboard-shortcuts-settings-CnxRFbgA.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-DxoKJO7-.js → logs-page-DebnvTpD.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-BtdBj32h.js → markdown-split-BU69Nof8.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-CpoPj3s8.js → media-plugins-CDs7OvWt.js} +1 -1
- package/dist/gateway/static/root/assets/messages-DbNQuFdA.js +3 -0
- package/dist/gateway/static/root/assets/{models-hub-panel-D1Rp__dV.js → models-hub-panel-Ca_jy26S.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-CgR1bO2W.js → notes-page-DTpeaI65.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-workbench-ozsnmDTV.js → notes-workbench-uKMYsjUU.js} +2 -2
- package/dist/gateway/static/root/assets/{page-tabs-CVLqCfQB.js → page-tabs-CROo8Vgz.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CKUXJk2t.js → preview-open-alternatives-BxsS9i1G.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-B4dqFAQF.js → project-detail-page-BWKOhshy.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-DlRGXv4a.js → projects-page-CoowiCLe.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-rZEYQMZV.js → remote-access-hub-CiOaX1wd.js} +1 -1
- package/dist/gateway/static/root/assets/{save-bar-controls-BtGni268.js → save-bar-controls-B4N17dMG.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-BDGzKVWn.js → schedule-field-ClJzQ2vz.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-DQJsKMCE.js → schema-form-oZvQUfDg.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-DxGoCGU8.js → sessions-page-Sx9Gc0cv.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-CnbVdze4.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-c8XGd4-8.js → settings-collapsible-section-B0kOLXUf.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-By0YiDWo.js → settings-form-section-DoVPlVFd.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-SYCPY-WM.js → settings-loading-skeleton-C7J96bLc.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-D9NwvnBt.js → settings-page-CXiAByF0.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-CrICyGob.js → settings-page-layout-R-6ArlMI.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-IjK-hDxf.js → setup-status-panel-Drz23n9l.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-Dfnk9M_m.js → share-preview-page-Bn1umseg.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-vQiRBra7.js → shares-settings-Bb-pcMWg.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DE9HCHct.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-CruV215G.js → skills-page-B6cDPqkk.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-BBVbSDFD.js → system-settings-panel-CtEddAy-.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-CwFayhxu.js → typed-models-lib-BkhSnYq7.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-BKtHOM50.js → use-channel-catalog-EA4hfbsP.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-_KDWzagh.js → user-profile-settings-panel-BssTVOBS.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-BiUjIHb4.js → utils-CI3ywKLT.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-agJqlm4o.js → voice-api-key-field-DXMEGw9O.js} +1 -1
- package/dist/gateway/static/root/assets/{work-item-detail-page-Bdw4ATCb.js → work-item-detail-page-DsFqU0tK.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-D-Dy6mTy.js → workflow-run-setup-panel-DImBi-m6.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-start-dialog-GammZ2GK.js → workflow-start-dialog-DuPpKAAc.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-Cw5zrqti.js → workflows-page-DfTVzTNY.js} +1 -1
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-instance-gateway.d.ts +3 -3
- package/dist/src/agent/agent-manager.d.ts +7 -8
- package/dist/src/agent/agent-manager.js +24 -25
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/background-review/coordinator.d.ts +9 -23
- package/dist/src/agent/background-review/coordinator.js +45 -54
- package/dist/src/agent/background-review/coordinator.js.map +1 -1
- package/dist/src/agent/background-review/prompts.d.ts +2 -4
- package/dist/src/agent/background-review/prompts.js +7 -19
- package/dist/src/agent/background-review/prompts.js.map +1 -1
- package/dist/src/agent/background-review/run-background-review.d.ts +0 -8
- package/dist/src/agent/background-review/run-background-review.js +87 -72
- package/dist/src/agent/background-review/run-background-review.js.map +1 -1
- package/dist/src/agent/background-review/settings.d.ts +4 -4
- package/dist/src/agent/background-review/settings.js +25 -10
- package/dist/src/agent/background-review/settings.js.map +1 -1
- package/dist/src/agent/code-intelligence/binary.d.ts +1 -0
- package/dist/src/agent/code-intelligence/binary.js +42 -0
- package/dist/src/agent/code-intelligence/binary.js.map +1 -0
- package/dist/src/agent/code-intelligence/index.d.ts +4 -0
- package/dist/src/agent/code-intelligence/index.js +4 -0
- package/dist/src/agent/code-intelligence/runtime.d.ts +34 -0
- package/dist/src/agent/code-intelligence/runtime.js +282 -0
- package/dist/src/agent/code-intelligence/runtime.js.map +1 -0
- package/dist/src/agent/code-intelligence/tools.d.ts +6 -0
- package/dist/src/agent/code-intelligence/tools.js +268 -0
- package/dist/src/agent/code-intelligence/tools.js.map +1 -0
- package/dist/src/agent/code-intelligence/types.d.ts +22 -0
- package/dist/src/agent/code-intelligence/types.js +1 -0
- package/dist/src/agent/memory/builtin-provider.d.ts +1 -2
- package/dist/src/agent/memory/builtin-provider.js +31 -12
- package/dist/src/agent/memory/builtin-provider.js.map +1 -1
- package/dist/src/agent/memory/context/planner.d.ts +11 -0
- package/dist/src/agent/memory/context/planner.js +163 -0
- package/dist/src/agent/memory/context/planner.js.map +1 -0
- package/dist/src/agent/memory/context/types.d.ts +19 -0
- package/dist/src/agent/memory/context/types.js +1 -0
- package/dist/src/agent/memory/context-fence.d.ts +3 -3
- package/dist/src/agent/memory/context-fence.js +9 -9
- package/dist/src/agent/memory/context-fence.js.map +1 -1
- package/dist/src/agent/memory/index.d.ts +6 -4
- package/dist/src/agent/memory/index.js +5 -5
- package/dist/src/agent/memory/manager.d.ts +16 -4
- package/dist/src/agent/memory/manager.js +32 -34
- package/dist/src/agent/memory/manager.js.map +1 -1
- package/dist/src/agent/memory/memory-config.d.ts +1 -1
- package/dist/src/agent/memory/memory-config.js +2 -2
- package/dist/src/agent/memory/memory-config.js.map +1 -1
- package/dist/src/agent/memory/provider.d.ts +1 -3
- package/dist/src/agent/memory/stub-memory-provider.d.ts +0 -1
- package/dist/src/agent/memory/stub-memory-provider.js +0 -5
- package/dist/src/agent/memory/stub-memory-provider.js.map +1 -1
- package/dist/src/agent/memory/types.d.ts +31 -2
- package/dist/src/agent/memory/understanding/correction.d.ts +3 -0
- package/dist/src/agent/memory/understanding/correction.js +41 -0
- package/dist/src/agent/memory/understanding/correction.js.map +1 -0
- package/dist/src/agent/memory/understanding/quality.d.ts +8 -0
- package/dist/src/agent/memory/understanding/quality.js +20 -0
- package/dist/src/agent/memory/understanding/quality.js.map +1 -0
- package/dist/src/agent/memory/understanding/service.d.ts +26 -0
- package/dist/src/agent/memory/understanding/service.js +233 -0
- package/dist/src/agent/memory/understanding/service.js.map +1 -0
- package/dist/src/agent/memory/understanding/types.d.ts +22 -0
- package/dist/src/agent/memory/understanding/types.js +1 -0
- package/dist/src/agent/memory/user-context-coordinator.d.ts +21 -0
- package/dist/src/agent/memory/user-context-coordinator.js +90 -0
- package/dist/src/agent/memory/user-context-coordinator.js.map +1 -0
- package/dist/src/agent/orchestration/agent-event-handler.d.ts +1 -0
- package/dist/src/agent/orchestration/agent-event-handler.js +1 -1
- package/dist/src/agent/orchestration/agent-event-handler.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +2 -2
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/orchestration/index.d.ts +1 -1
- package/dist/src/agent/orchestration/index.js +2 -2
- package/dist/src/agent/prompt/sections/tooling.js +10 -0
- package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
- package/dist/src/agent/prompt/system-prompt.js +2 -0
- package/dist/src/agent/prompt/system-prompt.js.map +1 -1
- package/dist/src/agent/service/direct-turn-helpers.js +2 -2
- package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
- package/dist/src/agent/service.js +7 -1
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/session/session-inspector.d.ts +1 -0
- package/dist/src/agent/session/session-inspector.js +8 -2
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/tools/factory.d.ts +3 -0
- package/dist/src/agent/tools/factory.js +17 -10
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/workspace-runtime/registry.d.ts +2 -0
- package/dist/src/agent/workspace-runtime/registry.js +11 -3
- package/dist/src/agent/workspace-runtime/registry.js.map +1 -1
- package/dist/src/agent-manifest/index.js +2 -2
- package/dist/src/agent-manifest/schema.d.ts +91 -0
- package/dist/src/agent-manifest/schema.js +27 -5
- package/dist/src/agent-manifest/schema.js.map +1 -1
- package/dist/src/agent-runtime/memory-runtime.d.ts +1 -1
- package/dist/src/agent-runtime/memory-runtime.js.map +1 -1
- package/dist/src/automations/domain/validation.d.ts +22 -22
- package/dist/src/automations/draft/automation-draft-validator.d.ts +4 -4
- package/dist/src/cli/command-loaders.js +1 -0
- package/dist/src/cli/command-loaders.js.map +1 -1
- package/dist/src/cli/command-manifest.js +4 -0
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/resume.d.ts +1 -0
- package/dist/src/cli/commands/resume.js +31 -0
- package/dist/src/cli/commands/resume.js.map +1 -0
- package/dist/src/cli/commands/tui-runner.d.ts +9 -0
- package/dist/src/cli/commands/tui-runner.js +40 -0
- package/dist/src/cli/commands/tui-runner.js.map +1 -0
- package/dist/src/cli/commands/tui.js +4 -28
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/index.js +2 -2
- package/dist/src/config/schema.d.ts +115 -0
- package/dist/src/config/schema.js +53 -4
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agent-builtin-tools.js +5 -0
- package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +18 -4
- package/dist/src/gateway/hono/routes/home.js +37 -2
- package/dist/src/gateway/hono/routes/home.js.map +1 -1
- package/dist/src/gateway/hono/routes/memory.js +129 -4
- package/dist/src/gateway/hono/routes/memory.js.map +1 -1
- package/dist/src/gateway/hono/routes/projects.js +16 -0
- package/dist/src/gateway/hono/routes/projects.js.map +1 -1
- package/dist/src/knowledge/index.d.ts +2 -0
- package/dist/src/knowledge/index.js +2 -0
- package/dist/src/knowledge/ingestion-service.d.ts +20 -0
- package/dist/src/knowledge/ingestion-service.js +75 -0
- package/dist/src/knowledge/ingestion-service.js.map +1 -0
- package/dist/src/knowledge/types.d.ts +70 -0
- package/dist/src/knowledge/types.js +1 -0
- package/dist/src/projects/project-kind.js +0 -1
- package/dist/src/projects/project-kind.js.map +1 -1
- package/dist/src/providers/presentation.js +1 -1
- package/dist/src/providers/presentation.js.map +1 -1
- package/dist/src/storage/sqlite/index.d.ts +2 -1
- package/dist/src/storage/sqlite/index.js +3 -2
- package/dist/src/storage/sqlite/knowledge-repository.d.ts +50 -0
- package/dist/src/storage/sqlite/knowledge-repository.js +237 -0
- package/dist/src/storage/sqlite/knowledge-repository.js.map +1 -0
- package/dist/src/storage/sqlite/memory-records-repository.d.ts +80 -2
- package/dist/src/storage/sqlite/memory-records-repository.js +271 -9
- package/dist/src/storage/sqlite/memory-records-repository.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/029_user_understanding.sql +133 -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.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/tui/tui-picker-overlay.d.ts +6 -1
- package/dist/src/tui/tui-picker-overlay.js +4 -1
- package/dist/src/tui/tui-picker-overlay.js.map +1 -1
- package/dist/src/tui/tui-types.d.ts +2 -0
- package/dist/src/tui/tui-types.js.map +1 -1
- package/dist/src/tui/tui.js +17 -2
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/work-items/work-item-service.d.ts +1 -0
- package/dist/src/work-items/work-item-service.js +3 -0
- package/dist/src/work-items/work-item-service.js.map +1 -1
- package/dist/src/work-items/work-item-store.d.ts +1 -0
- package/dist/src/work-items/work-item-store.js +13 -0
- package/dist/src/work-items/work-item-store.js.map +1 -1
- package/package.json +2 -1
- package/dist/gateway/static/root/assets/agents-Bv5R-N8Q.js +0 -2
- package/dist/gateway/static/root/assets/channels-status-swr-MY4Xh4fM.js +0 -1
- package/dist/gateway/static/root/assets/index-CPwVzi9x.css +0 -1
- package/dist/gateway/static/root/assets/index-DZOm5_ex.js +0 -262
- package/dist/gateway/static/root/assets/messages-CQ_k8RHj.js +0 -3
- package/dist/gateway/static/root/assets/settings-advanced-gate-4e8ZQwxr.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BIWv778A.js +0 -1
- package/dist/src/agent/memory/candidate-extractor.d.ts +0 -6
- package/dist/src/agent/memory/candidate-extractor.js +0 -60
- package/dist/src/agent/memory/candidate-extractor.js.map +0 -1
- package/dist/src/agent/memory/context-assembler.d.ts +0 -10
- package/dist/src/agent/memory/context-assembler.js +0 -26
- package/dist/src/agent/memory/context-assembler.js.map +0 -1
- package/dist/src/agent/memory/inject-prefetch.d.ts +0 -6
- package/dist/src/agent/memory/inject-prefetch.js +0 -48
- package/dist/src/agent/memory/inject-prefetch.js.map +0 -1
- package/dist/src/agent/memory/prefetch-coordinator.d.ts +0 -37
- package/dist/src/agent/memory/prefetch-coordinator.js +0 -45
- package/dist/src/agent/memory/prefetch-coordinator.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{hr as e}from"./index-DZOm5_ex.js";function t(t){let{children:n,fallback:r}=t,i=r===void 0?null:r;return e()?n:i}export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e}from"./rolldown-runtime-aKtaBQYM.js";import{o as t,t as n}from"./fetch-BWXmBizE.js";import{pr as r}from"./index-DZOm5_ex.js";var i=e({reloadSkills:()=>a});async function a(){let e=await n(t(`/api/skills/reload`),{method:`POST`});if(!e.ok)throw Error(await r(e))}export{i as n,a as t};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
//#region src/agent/memory/candidate-extractor.ts
|
|
2
|
-
const MAX_CANDIDATE_CHARS = 600;
|
|
3
|
-
const EXPLICIT_PATTERNS = [
|
|
4
|
-
/\b(?:please\s+)?remember(?:\s+that)?\s+(.+)/i,
|
|
5
|
-
/\bkeep\s+in\s+mind(?:\s+that)?\s+(.+)/i,
|
|
6
|
-
/(?:请)?记住[::\s]*(.+)/,
|
|
7
|
-
/以后(?:都)?(?:请)?[::\s]*(.+)/,
|
|
8
|
-
/下次(?:请)?[::\s]*(.+)/
|
|
9
|
-
];
|
|
10
|
-
function cleanCandidateContent(raw) {
|
|
11
|
-
return raw.replace(/^["'“”‘’\s]+|["'“”‘’\s]+$/g, "").replace(/\s+/g, " ").trim().slice(0, MAX_CANDIDATE_CHARS);
|
|
12
|
-
}
|
|
13
|
-
function inferKind(content) {
|
|
14
|
-
const lower = content.toLowerCase();
|
|
15
|
-
if (/\b(prefer|preference|like)\b/i.test(content) || /喜欢|偏好|习惯/.test(content)) return "user_profile";
|
|
16
|
-
if (/\b(tool|command|pnpm|npm|git|ripgrep|rg)\b/i.test(content) || /工具|命令/.test(content)) return "tool_preference";
|
|
17
|
-
if (/\b(project|repo|codebase|workspace)\b/i.test(content) || /项目|仓库|代码库/.test(content)) return "workspace_fact";
|
|
18
|
-
if (/\b(next time|lesson|avoid|failed|error)\b/i.test(lower) || /下次|教训|失败|错误|不要/.test(content)) return "task_lesson";
|
|
19
|
-
return "agent_note";
|
|
20
|
-
}
|
|
21
|
-
function inferSensitivity(kind, content) {
|
|
22
|
-
if (/\b(api[_-]?key|token|password|secret|credential)\b/i.test(content) || /密钥|密码|令牌/.test(content)) return "secret";
|
|
23
|
-
if (kind === "user_profile") return "personal";
|
|
24
|
-
return "normal";
|
|
25
|
-
}
|
|
26
|
-
function extractExplicitContent(userContent) {
|
|
27
|
-
const lines = userContent.split(/\r?\n/).map((line) => line.trim()).filter(Boolean);
|
|
28
|
-
for (const line of lines.length > 0 ? lines : [userContent.trim()]) for (const pattern of EXPLICIT_PATTERNS) {
|
|
29
|
-
const content = cleanCandidateContent(pattern.exec(line)?.[1] ?? "");
|
|
30
|
-
if (content.length >= 8) return content;
|
|
31
|
-
}
|
|
32
|
-
return null;
|
|
33
|
-
}
|
|
34
|
-
function proposeMemoryCandidatesFromTurn(params) {
|
|
35
|
-
const content = extractExplicitContent(params.userContent);
|
|
36
|
-
if (!content) return [];
|
|
37
|
-
const kind = inferKind(content);
|
|
38
|
-
const evidence = [{
|
|
39
|
-
...params.sessionKey ? { sessionKey: params.sessionKey } : {},
|
|
40
|
-
sourceText: params.userContent.trim().slice(0, MAX_CANDIDATE_CHARS)
|
|
41
|
-
}];
|
|
42
|
-
return [{
|
|
43
|
-
kind,
|
|
44
|
-
target: kind === "user_profile" ? "user" : "memory",
|
|
45
|
-
content,
|
|
46
|
-
status: "candidate",
|
|
47
|
-
sensitivity: inferSensitivity(kind, content),
|
|
48
|
-
confidence: .72,
|
|
49
|
-
evidence,
|
|
50
|
-
tags: ["auto-proposed", "explicit-user-request"],
|
|
51
|
-
source: {
|
|
52
|
-
provider: "turn-sync",
|
|
53
|
-
...params.sessionKey ? { sessionEntryId: params.sessionKey } : {}
|
|
54
|
-
}
|
|
55
|
-
}];
|
|
56
|
-
}
|
|
57
|
-
//#endregion
|
|
58
|
-
export { proposeMemoryCandidatesFromTurn };
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=candidate-extractor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"candidate-extractor.js","names":[],"sources":["../../../../src/agent/memory/candidate-extractor.ts"],"sourcesContent":["import type { MemoryEvidence, MemoryKind, MemorySensitivity, MemoryWriteRequest } from './types.js';\n\nconst MAX_CANDIDATE_CHARS = 600;\n\nconst EXPLICIT_PATTERNS: RegExp[] = [\n /\\b(?:please\\s+)?remember(?:\\s+that)?\\s+(.+)/i,\n /\\bkeep\\s+in\\s+mind(?:\\s+that)?\\s+(.+)/i,\n /(?:请)?记住[::\\s]*(.+)/,\n /以后(?:都)?(?:请)?[::\\s]*(.+)/,\n /下次(?:请)?[::\\s]*(.+)/,\n];\n\nfunction cleanCandidateContent(raw: string): string {\n return raw\n .replace(/^[\"'“”‘’\\s]+|[\"'“”‘’\\s]+$/g, '')\n .replace(/\\s+/g, ' ')\n .trim()\n .slice(0, MAX_CANDIDATE_CHARS);\n}\n\nfunction inferKind(content: string): MemoryKind {\n const lower = content.toLowerCase();\n if (/\\b(prefer|preference|like)\\b/i.test(content) || /喜欢|偏好|习惯/.test(content)) {\n return 'user_profile';\n }\n if (/\\b(tool|command|pnpm|npm|git|ripgrep|rg)\\b/i.test(content) || /工具|命令/.test(content)) {\n return 'tool_preference';\n }\n if (/\\b(project|repo|codebase|workspace)\\b/i.test(content) || /项目|仓库|代码库/.test(content)) {\n return 'workspace_fact';\n }\n if (/\\b(next time|lesson|avoid|failed|error)\\b/i.test(lower) || /下次|教训|失败|错误|不要/.test(content)) {\n return 'task_lesson';\n }\n return 'agent_note';\n}\n\nfunction inferSensitivity(kind: MemoryKind, content: string): MemorySensitivity {\n if (/\\b(api[_-]?key|token|password|secret|credential)\\b/i.test(content) || /密钥|密码|令牌/.test(content)) {\n return 'secret';\n }\n if (kind === 'user_profile') {\n return 'personal';\n }\n return 'normal';\n}\n\nfunction extractExplicitContent(userContent: string): string | null {\n const lines = userContent\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter(Boolean);\n for (const line of lines.length > 0 ? lines : [userContent.trim()]) {\n for (const pattern of EXPLICIT_PATTERNS) {\n const match = pattern.exec(line);\n const content = cleanCandidateContent(match?.[1] ?? '');\n if (content.length >= 8) {\n return content;\n }\n }\n }\n return null;\n}\n\nexport function proposeMemoryCandidatesFromTurn(params: {\n userContent: string;\n assistantContent?: string;\n sessionKey?: string;\n}): MemoryWriteRequest[] {\n const content = extractExplicitContent(params.userContent);\n if (!content) {\n return [];\n }\n const kind = inferKind(content);\n const evidence: MemoryEvidence[] = [\n {\n ...(params.sessionKey ? { sessionKey: params.sessionKey } : {}),\n sourceText: params.userContent.trim().slice(0, MAX_CANDIDATE_CHARS),\n },\n ];\n return [\n {\n kind,\n target: kind === 'user_profile' ? 'user' : 'memory',\n content,\n status: 'candidate',\n sensitivity: inferSensitivity(kind, content),\n confidence: 0.72,\n evidence,\n tags: ['auto-proposed', 'explicit-user-request'],\n source: {\n provider: 'turn-sync',\n ...(params.sessionKey ? { sessionEntryId: params.sessionKey } : {}),\n },\n },\n ];\n}\n"],"mappings":";AAEA,MAAM,sBAAsB;AAE5B,MAAM,oBAA8B;CAClC;CACA;CACA;CACA;CACA;CACD;AAED,SAAS,sBAAsB,KAAqB;AAClD,QAAO,IACJ,QAAQ,8BAA8B,GAAG,CACzC,QAAQ,QAAQ,IAAI,CACpB,MAAM,CACN,MAAM,GAAG,oBAAoB;;AAGlC,SAAS,UAAU,SAA6B;CAC9C,MAAM,QAAQ,QAAQ,aAAa;AACnC,KAAI,gCAAgC,KAAK,QAAQ,IAAI,WAAW,KAAK,QAAQ,CAC3E,QAAO;AAET,KAAI,8CAA8C,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,CACtF,QAAO;AAET,KAAI,yCAAyC,KAAK,QAAQ,IAAI,YAAY,KAAK,QAAQ,CACrF,QAAO;AAET,KAAI,6CAA6C,KAAK,MAAM,IAAI,iBAAiB,KAAK,QAAQ,CAC5F,QAAO;AAET,QAAO;;AAGT,SAAS,iBAAiB,MAAkB,SAAoC;AAC9E,KAAI,sDAAsD,KAAK,QAAQ,IAAI,WAAW,KAAK,QAAQ,CACjG,QAAO;AAET,KAAI,SAAS,eACX,QAAO;AAET,QAAO;;AAGT,SAAS,uBAAuB,aAAoC;CAClE,MAAM,QAAQ,YACX,MAAM,QAAQ,CACd,KAAK,SAAS,KAAK,MAAM,CAAC,CAC1B,OAAO,QAAQ;AAClB,MAAK,MAAM,QAAQ,MAAM,SAAS,IAAI,QAAQ,CAAC,YAAY,MAAM,CAAC,CAChE,MAAK,MAAM,WAAW,mBAAmB;EAEvC,MAAM,UAAU,sBADF,QAAQ,KAAK,KACgB,GAAG,MAAM,GAAG;AACvD,MAAI,QAAQ,UAAU,EACpB,QAAO;;AAIb,QAAO;;AAGT,SAAgB,gCAAgC,QAIvB;CACvB,MAAM,UAAU,uBAAuB,OAAO,YAAY;AAC1D,KAAI,CAAC,QACH,QAAO,EAAE;CAEX,MAAM,OAAO,UAAU,QAAQ;CAC/B,MAAM,WAA6B,CACjC;EACE,GAAI,OAAO,aAAa,EAAE,YAAY,OAAO,YAAY,GAAG,EAAE;EAC9D,YAAY,OAAO,YAAY,MAAM,CAAC,MAAM,GAAG,oBAAoB;EACpE,CACF;AACD,QAAO,CACL;EACE;EACA,QAAQ,SAAS,iBAAiB,SAAS;EAC3C;EACA,QAAQ;EACR,aAAa,iBAAiB,MAAM,QAAQ;EAC5C,YAAY;EACZ;EACA,MAAM,CAAC,iBAAiB,wBAAwB;EAChD,QAAQ;GACN,UAAU;GACV,GAAI,OAAO,aAAa,EAAE,gBAAgB,OAAO,YAAY,GAAG,EAAE;GACnE;EACF,CACF"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import type { MemoryManager } from './manager.js';
|
|
2
|
-
export interface MemoryContextAssemblerOptions {
|
|
3
|
-
memoryManager: MemoryManager;
|
|
4
|
-
sessionKey: string;
|
|
5
|
-
query: string;
|
|
6
|
-
maxSearchResults?: number;
|
|
7
|
-
}
|
|
8
|
-
export declare class MemoryContextAssembler {
|
|
9
|
-
assemble(options: MemoryContextAssemblerOptions): Promise<string>;
|
|
10
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { buildMemoryContextBlock } from "./context-fence.js";
|
|
2
|
-
//#region src/agent/memory/context-assembler.ts
|
|
3
|
-
var MemoryContextAssembler = class {
|
|
4
|
-
async assemble(options) {
|
|
5
|
-
const query = options.query.trim();
|
|
6
|
-
if (!query) return "";
|
|
7
|
-
const [prefetch, searchResults] = await Promise.all([options.memoryManager.prefetchAll(query, { sessionId: options.sessionKey }), options.memoryManager.search({
|
|
8
|
-
query,
|
|
9
|
-
scope: { sessionKey: options.sessionKey },
|
|
10
|
-
maxResults: options.maxSearchResults ?? 3,
|
|
11
|
-
minScore: .2
|
|
12
|
-
}).catch(() => [])]);
|
|
13
|
-
const lines = [];
|
|
14
|
-
if (prefetch.trim()) lines.push(prefetch.trim());
|
|
15
|
-
for (const result of searchResults) {
|
|
16
|
-
const path = result.citation.path ?? result.record.id;
|
|
17
|
-
const range = result.citation.lineStart != null ? `#L${result.citation.lineStart}${result.citation.lineEnd && result.citation.lineEnd !== result.citation.lineStart ? `-L${result.citation.lineEnd}` : ""}` : "";
|
|
18
|
-
lines.push(`- ${result.snippet.trim()}\n Source: ${path}${range}`);
|
|
19
|
-
}
|
|
20
|
-
return buildMemoryContextBlock(lines.join("\n\n"));
|
|
21
|
-
}
|
|
22
|
-
};
|
|
23
|
-
//#endregion
|
|
24
|
-
export { MemoryContextAssembler };
|
|
25
|
-
|
|
26
|
-
//# sourceMappingURL=context-assembler.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context-assembler.js","names":[],"sources":["../../../../src/agent/memory/context-assembler.ts"],"sourcesContent":["import { buildMemoryContextBlock } from './context-fence.js';\nimport type { MemoryManager } from './manager.js';\n\nexport interface MemoryContextAssemblerOptions {\n memoryManager: MemoryManager;\n sessionKey: string;\n query: string;\n maxSearchResults?: number;\n}\n\nexport class MemoryContextAssembler {\n async assemble(options: MemoryContextAssemblerOptions): Promise<string> {\n const query = options.query.trim();\n if (!query) return '';\n\n const [prefetch, searchResults] = await Promise.all([\n options.memoryManager.prefetchAll(query, { sessionId: options.sessionKey }),\n options.memoryManager.search({\n query,\n scope: { sessionKey: options.sessionKey },\n maxResults: options.maxSearchResults ?? 3,\n minScore: 0.2,\n }).catch(() => []),\n ]);\n\n const lines: string[] = [];\n if (prefetch.trim()) {\n lines.push(prefetch.trim());\n }\n for (const result of searchResults) {\n const path = result.citation.path ?? result.record.id;\n const range =\n result.citation.lineStart != null\n ? `#L${result.citation.lineStart}${result.citation.lineEnd && result.citation.lineEnd !== result.citation.lineStart ? `-L${result.citation.lineEnd}` : ''}`\n : '';\n lines.push(`- ${result.snippet.trim()}\\n Source: ${path}${range}`);\n }\n\n return buildMemoryContextBlock(lines.join('\\n\\n'));\n }\n}\n"],"mappings":";;AAUA,IAAa,yBAAb,MAAoC;CAClC,MAAM,SAAS,SAAyD;EACtE,MAAM,QAAQ,QAAQ,MAAM,MAAM;AAClC,MAAI,CAAC,MAAO,QAAO;EAEnB,MAAM,CAAC,UAAU,iBAAiB,MAAM,QAAQ,IAAI,CAClD,QAAQ,cAAc,YAAY,OAAO,EAAE,WAAW,QAAQ,YAAY,CAAC,EAC3E,QAAQ,cAAc,OAAO;GAC3B;GACA,OAAO,EAAE,YAAY,QAAQ,YAAY;GACzC,YAAY,QAAQ,oBAAoB;GACxC,UAAU;GACX,CAAC,CAAC,YAAY,EAAE,CAAC,CACnB,CAAC;EAEF,MAAM,QAAkB,EAAE;AAC1B,MAAI,SAAS,MAAM,CACjB,OAAM,KAAK,SAAS,MAAM,CAAC;AAE7B,OAAK,MAAM,UAAU,eAAe;GAClC,MAAM,OAAO,OAAO,SAAS,QAAQ,OAAO,OAAO;GACnD,MAAM,QACJ,OAAO,SAAS,aAAa,OACzB,KAAK,OAAO,SAAS,YAAY,OAAO,SAAS,WAAW,OAAO,SAAS,YAAY,OAAO,SAAS,YAAY,KAAK,OAAO,SAAS,YAAY,OACrJ;AACN,SAAM,KAAK,KAAK,OAAO,QAAQ,MAAM,CAAC,cAAc,OAAO,QAAQ;;AAGrE,SAAO,wBAAwB,MAAM,KAAK,OAAO,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import type { AgentMessage } from '@earendil-works/pi-agent-core';
|
|
2
|
-
import type { MemoryManager } from './manager.js';
|
|
3
|
-
/**
|
|
4
|
-
* Prefix user message with fenced prefetched memory context (if any).
|
|
5
|
-
*/
|
|
6
|
-
export declare function injectPrefetchIntoUserMessage(memoryManager: MemoryManager, sessionKey: string, userMessage: AgentMessage, queryText: string): Promise<AgentMessage>;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { readAgentMessageContent } from "./agent-message-access.js";
|
|
2
|
-
import { MemoryContextAssembler } from "./context-assembler.js";
|
|
3
|
-
//#region src/agent/memory/inject-prefetch.ts
|
|
4
|
-
/**
|
|
5
|
-
* Prefix user message with fenced prefetched memory context (if any).
|
|
6
|
-
*/
|
|
7
|
-
async function injectPrefetchIntoUserMessage(memoryManager, sessionKey, userMessage, queryText) {
|
|
8
|
-
const q = queryText.trim();
|
|
9
|
-
if (!q) return userMessage;
|
|
10
|
-
const block = await new MemoryContextAssembler().assemble({
|
|
11
|
-
memoryManager,
|
|
12
|
-
sessionKey,
|
|
13
|
-
query: q
|
|
14
|
-
});
|
|
15
|
-
if (!block.trim()) return userMessage;
|
|
16
|
-
const prefix = `${block}\n\n`;
|
|
17
|
-
const c = readAgentMessageContent(userMessage);
|
|
18
|
-
if (typeof c === "string") return {
|
|
19
|
-
...userMessage,
|
|
20
|
-
content: prefix + c
|
|
21
|
-
};
|
|
22
|
-
if (Array.isArray(c) && c.length > 0) {
|
|
23
|
-
const first = c[0];
|
|
24
|
-
if (first?.type === "text" && typeof first.text === "string") {
|
|
25
|
-
const copy = [...c];
|
|
26
|
-
copy[0] = {
|
|
27
|
-
type: "text",
|
|
28
|
-
text: prefix + first.text
|
|
29
|
-
};
|
|
30
|
-
return {
|
|
31
|
-
...userMessage,
|
|
32
|
-
content: copy
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
return {
|
|
36
|
-
...userMessage,
|
|
37
|
-
content: [{
|
|
38
|
-
type: "text",
|
|
39
|
-
text: prefix
|
|
40
|
-
}, ...c]
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
return userMessage;
|
|
44
|
-
}
|
|
45
|
-
//#endregion
|
|
46
|
-
export { injectPrefetchIntoUserMessage };
|
|
47
|
-
|
|
48
|
-
//# sourceMappingURL=inject-prefetch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"inject-prefetch.js","names":[],"sources":["../../../../src/agent/memory/inject-prefetch.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport { readAgentMessageContent } from './agent-message-access.js';\nimport { MemoryContextAssembler } from './context-assembler.js';\nimport type { MemoryManager } from './manager.js';\n\n/**\n * Prefix user message with fenced prefetched memory context (if any).\n */\nexport async function injectPrefetchIntoUserMessage(\n memoryManager: MemoryManager,\n sessionKey: string,\n userMessage: AgentMessage,\n queryText: string,\n): Promise<AgentMessage> {\n const q = queryText.trim();\n if (!q) {\n return userMessage;\n }\n\n const block = await new MemoryContextAssembler().assemble({\n memoryManager,\n sessionKey,\n query: q,\n });\n if (!block.trim()) {\n return userMessage;\n }\n\n const prefix = `${block}\\n\\n`;\n const c = readAgentMessageContent(userMessage);\n\n if (typeof c === 'string') {\n return { ...userMessage, content: prefix + c } as AgentMessage;\n }\n\n if (Array.isArray(c) && c.length > 0) {\n const first = c[0] as { type?: string; text?: string };\n if (first?.type === 'text' && typeof first.text === 'string') {\n const copy = [...c];\n copy[0] = { type: 'text', text: prefix + first.text };\n return { ...userMessage, content: copy } as AgentMessage;\n }\n return {\n ...userMessage,\n content: [{ type: 'text' as const, text: prefix }, ...c],\n } as AgentMessage;\n }\n\n return userMessage;\n}\n"],"mappings":";;;;;;AASA,eAAsB,8BACpB,eACA,YACA,aACA,WACuB;CACvB,MAAM,IAAI,UAAU,MAAM;AAC1B,KAAI,CAAC,EACH,QAAO;CAGT,MAAM,QAAQ,MAAM,IAAI,wBAAwB,CAAC,SAAS;EACxD;EACA;EACA,OAAO;EACR,CAAC;AACF,KAAI,CAAC,MAAM,MAAM,CACf,QAAO;CAGT,MAAM,SAAS,GAAG,MAAM;CACxB,MAAM,IAAI,wBAAwB,YAAY;AAE9C,KAAI,OAAO,MAAM,SACf,QAAO;EAAE,GAAG;EAAa,SAAS,SAAS;EAAG;AAGhD,KAAI,MAAM,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG;EACpC,MAAM,QAAQ,EAAE;AAChB,MAAI,OAAO,SAAS,UAAU,OAAO,MAAM,SAAS,UAAU;GAC5D,MAAM,OAAO,CAAC,GAAG,EAAE;AACnB,QAAK,KAAK;IAAE,MAAM;IAAQ,MAAM,SAAS,MAAM;IAAM;AACrD,UAAO;IAAE,GAAG;IAAa,SAAS;IAAM;;AAE1C,SAAO;GACL,GAAG;GACH,SAAS,CAAC;IAAE,MAAM;IAAiB,MAAM;IAAQ,EAAE,GAAG,EAAE;GACzD;;AAGH,QAAO"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MemoryPrefetchCoordinator — owns the per-session memory prefetch cadence and
|
|
3
|
-
* the post-turn sync hand-off to external memory providers.
|
|
4
|
-
*
|
|
5
|
-
* Previously these lived as two methods + a private `Map<sessionKey, turn>` on
|
|
6
|
-
* `AgentManager`. Moving them out makes the memory layer a stand-alone concern
|
|
7
|
-
* with a single owner that handles both "what to prefix on the user turn" and
|
|
8
|
-
* "what to sync after the turn ends".
|
|
9
|
-
*/
|
|
10
|
-
import type { AgentMessage } from '@earendil-works/pi-agent-core';
|
|
11
|
-
import type { Config } from '../../config/schema.js';
|
|
12
|
-
import type { MemoryManager } from './manager.js';
|
|
13
|
-
export interface MemoryPrefetchCoordinatorOptions {
|
|
14
|
-
/** Effective config snapshot accessor; tested against `isMemorySubsystemEnabled`. */
|
|
15
|
-
getConfig: () => Config | undefined;
|
|
16
|
-
/** Resolve the per-session memory manager (workspace runtime lookup lives in AgentManager). */
|
|
17
|
-
getMemoryManagerForSession: (sessionKey: string) => MemoryManager;
|
|
18
|
-
/** Return the last assistant text for a session — fed into external `syncAll`. */
|
|
19
|
-
getLastAssistantContent: (sessionKey: string) => string | null;
|
|
20
|
-
}
|
|
21
|
-
export declare class MemoryPrefetchCoordinator {
|
|
22
|
-
private readonly opts;
|
|
23
|
-
/** Per-session user-message index, incremented before each `applyPrefetch` call. */
|
|
24
|
-
private readonly prefetchUserTurn;
|
|
25
|
-
constructor(opts: MemoryPrefetchCoordinatorOptions);
|
|
26
|
-
/** Forget a session entirely (called when AgentManager removes the agent). */
|
|
27
|
-
forgetSession(sessionKey: string): void;
|
|
28
|
-
/** Tear down all per-session state (process stop / hot reload). */
|
|
29
|
-
clear(): void;
|
|
30
|
-
/**
|
|
31
|
-
* Prepend the prefetched memory fence to the user turn when the cadence
|
|
32
|
-
* config says we should. Returns the original message untouched otherwise.
|
|
33
|
-
*/
|
|
34
|
-
applyToUserMessage(userMessage: AgentMessage, sessionKey: string): Promise<AgentMessage>;
|
|
35
|
-
/** Post-turn: push the latest exchange to external providers + warm next prefetch. */
|
|
36
|
-
afterTurn(sessionKey: string, userPlainText: string): void;
|
|
37
|
-
}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import { isMemorySubsystemEnabled, shouldInjectMemoryPrefetchThisTurn } from "./memory-config.js";
|
|
2
|
-
import { extractAgentUserPlainText } from "./user-message-text.js";
|
|
3
|
-
import { injectPrefetchIntoUserMessage } from "./inject-prefetch.js";
|
|
4
|
-
//#region src/agent/memory/prefetch-coordinator.ts
|
|
5
|
-
var MemoryPrefetchCoordinator = class {
|
|
6
|
-
opts;
|
|
7
|
-
/** Per-session user-message index, incremented before each `applyPrefetch` call. */
|
|
8
|
-
prefetchUserTurn = /* @__PURE__ */ new Map();
|
|
9
|
-
constructor(opts) {
|
|
10
|
-
this.opts = opts;
|
|
11
|
-
}
|
|
12
|
-
/** Forget a session entirely (called when AgentManager removes the agent). */
|
|
13
|
-
forgetSession(sessionKey) {
|
|
14
|
-
this.prefetchUserTurn.delete(sessionKey);
|
|
15
|
-
}
|
|
16
|
-
/** Tear down all per-session state (process stop / hot reload). */
|
|
17
|
-
clear() {
|
|
18
|
-
this.prefetchUserTurn.clear();
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Prepend the prefetched memory fence to the user turn when the cadence
|
|
22
|
-
* config says we should. Returns the original message untouched otherwise.
|
|
23
|
-
*/
|
|
24
|
-
async applyToUserMessage(userMessage, sessionKey) {
|
|
25
|
-
const cfg = this.opts.getConfig();
|
|
26
|
-
if (!isMemorySubsystemEnabled(cfg)) return userMessage;
|
|
27
|
-
const plain = extractAgentUserPlainText(userMessage);
|
|
28
|
-
const turn = (this.prefetchUserTurn.get(sessionKey) ?? 0) + 1;
|
|
29
|
-
this.prefetchUserTurn.set(sessionKey, turn);
|
|
30
|
-
if (!shouldInjectMemoryPrefetchThisTurn(cfg, turn)) return userMessage;
|
|
31
|
-
return injectPrefetchIntoUserMessage(this.opts.getMemoryManagerForSession(sessionKey), sessionKey, userMessage, plain);
|
|
32
|
-
}
|
|
33
|
-
/** Post-turn: push the latest exchange to external providers + warm next prefetch. */
|
|
34
|
-
afterTurn(sessionKey, userPlainText) {
|
|
35
|
-
if (!isMemorySubsystemEnabled(this.opts.getConfig())) return;
|
|
36
|
-
const assistant = this.opts.getLastAssistantContent(sessionKey) ?? "";
|
|
37
|
-
const mm = this.opts.getMemoryManagerForSession(sessionKey);
|
|
38
|
-
mm.syncAll(userPlainText, assistant, { sessionId: sessionKey });
|
|
39
|
-
mm.queuePrefetchAll(userPlainText, { sessionId: sessionKey });
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
//#endregion
|
|
43
|
-
export { MemoryPrefetchCoordinator };
|
|
44
|
-
|
|
45
|
-
//# sourceMappingURL=prefetch-coordinator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"prefetch-coordinator.js","names":[],"sources":["../../../../src/agent/memory/prefetch-coordinator.ts"],"sourcesContent":["/**\n * MemoryPrefetchCoordinator — owns the per-session memory prefetch cadence and\n * the post-turn sync hand-off to external memory providers.\n *\n * Previously these lived as two methods + a private `Map<sessionKey, turn>` on\n * `AgentManager`. Moving them out makes the memory layer a stand-alone concern\n * with a single owner that handles both \"what to prefix on the user turn\" and\n * \"what to sync after the turn ends\".\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport type { Config } from '../../config/schema.js';\nimport type { MemoryManager } from './manager.js';\nimport { extractAgentUserPlainText } from './user-message-text.js';\nimport { injectPrefetchIntoUserMessage } from './inject-prefetch.js';\nimport {\n isMemorySubsystemEnabled,\n shouldInjectMemoryPrefetchThisTurn,\n} from './memory-config.js';\n\nexport interface MemoryPrefetchCoordinatorOptions {\n /** Effective config snapshot accessor; tested against `isMemorySubsystemEnabled`. */\n getConfig: () => Config | undefined;\n /** Resolve the per-session memory manager (workspace runtime lookup lives in AgentManager). */\n getMemoryManagerForSession: (sessionKey: string) => MemoryManager;\n /** Return the last assistant text for a session — fed into external `syncAll`. */\n getLastAssistantContent: (sessionKey: string) => string | null;\n}\n\nexport class MemoryPrefetchCoordinator {\n private readonly opts: MemoryPrefetchCoordinatorOptions;\n /** Per-session user-message index, incremented before each `applyPrefetch` call. */\n private readonly prefetchUserTurn = new Map<string, number>();\n\n constructor(opts: MemoryPrefetchCoordinatorOptions) {\n this.opts = opts;\n }\n\n /** Forget a session entirely (called when AgentManager removes the agent). */\n forgetSession(sessionKey: string): void {\n this.prefetchUserTurn.delete(sessionKey);\n }\n\n /** Tear down all per-session state (process stop / hot reload). */\n clear(): void {\n this.prefetchUserTurn.clear();\n }\n\n /**\n * Prepend the prefetched memory fence to the user turn when the cadence\n * config says we should. Returns the original message untouched otherwise.\n */\n async applyToUserMessage(\n userMessage: AgentMessage,\n sessionKey: string,\n ): Promise<AgentMessage> {\n const cfg = this.opts.getConfig();\n if (!isMemorySubsystemEnabled(cfg)) {\n return userMessage;\n }\n const plain = extractAgentUserPlainText(userMessage);\n const turn = (this.prefetchUserTurn.get(sessionKey) ?? 0) + 1;\n this.prefetchUserTurn.set(sessionKey, turn);\n if (!shouldInjectMemoryPrefetchThisTurn(cfg, turn)) {\n return userMessage;\n }\n return injectPrefetchIntoUserMessage(\n this.opts.getMemoryManagerForSession(sessionKey),\n sessionKey,\n userMessage,\n plain,\n );\n }\n\n /** Post-turn: push the latest exchange to external providers + warm next prefetch. */\n afterTurn(sessionKey: string, userPlainText: string): void {\n const cfg = this.opts.getConfig();\n if (!isMemorySubsystemEnabled(cfg)) {\n return;\n }\n const assistant = this.opts.getLastAssistantContent(sessionKey) ?? '';\n const mm = this.opts.getMemoryManagerForSession(sessionKey);\n void mm.syncAll(userPlainText, assistant, { sessionId: sessionKey });\n mm.queuePrefetchAll(userPlainText, { sessionId: sessionKey });\n }\n}\n"],"mappings":";;;;AA8BA,IAAa,4BAAb,MAAuC;CACrC;;CAEA,mCAAoC,IAAI,KAAqB;CAE7D,YAAY,MAAwC;AAClD,OAAK,OAAO;;;CAId,cAAc,YAA0B;AACtC,OAAK,iBAAiB,OAAO,WAAW;;;CAI1C,QAAc;AACZ,OAAK,iBAAiB,OAAO;;;;;;CAO/B,MAAM,mBACJ,aACA,YACuB;EACvB,MAAM,MAAM,KAAK,KAAK,WAAW;AACjC,MAAI,CAAC,yBAAyB,IAAI,CAChC,QAAO;EAET,MAAM,QAAQ,0BAA0B,YAAY;EACpD,MAAM,QAAQ,KAAK,iBAAiB,IAAI,WAAW,IAAI,KAAK;AAC5D,OAAK,iBAAiB,IAAI,YAAY,KAAK;AAC3C,MAAI,CAAC,mCAAmC,KAAK,KAAK,CAChD,QAAO;AAET,SAAO,8BACL,KAAK,KAAK,2BAA2B,WAAW,EAChD,YACA,aACA,MACD;;;CAIH,UAAU,YAAoB,eAA6B;AAEzD,MAAI,CAAC,yBADO,KAAK,KAAK,WACW,CAAC,CAChC;EAEF,MAAM,YAAY,KAAK,KAAK,wBAAwB,WAAW,IAAI;EACnE,MAAM,KAAK,KAAK,KAAK,2BAA2B,WAAW;AACtD,KAAG,QAAQ,eAAe,WAAW,EAAE,WAAW,YAAY,CAAC;AACpE,KAAG,iBAAiB,eAAe,EAAE,WAAW,YAAY,CAAC"}
|