@xopcai/xopc 0.0.116 → 0.0.118
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 +44 -28
- package/README.zh-CN.md +63 -45
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/demo-memory/src/index.d.ts +6 -0
- package/dist/extensions/demo-memory/src/index.js +132 -0
- package/dist/extensions/demo-memory/src/index.js.map +1 -0
- package/dist/extensions/demo-memory/xopc.extension.json +15 -0
- package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
- package/dist/extensions/feishu/src/schema/config-schema.d.ts +3 -3
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
- package/dist/extensions/telegram/src/command-handler.js +1 -2
- package/dist/extensions/telegram/src/command-handler.js.map +1 -1
- package/dist/extensions/telegram/src/config-schema.d.ts +8 -8
- package/dist/extensions/telegram/src/inbound-processor.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/update-offset-store.js +1 -1
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +2 -2
- package/dist/extensions/weixin/src/auth/accounts.js +1 -1
- package/dist/extensions/weixin/src/cdn/upload.js +1 -1
- package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
- package/dist/extensions/weixin/src/media/data-url.js +1 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
- package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-CWM1UU5P.js → agent-avatar-dicebear-dzUrQoeZ.js} +1 -1
- package/dist/gateway/static/root/assets/agents-BCxZbkOw.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-yXSXY_bu.js → app-management-settings-panel-bxYJVJpx.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DjY1P_ug.js → appearance-settings-BCIykXlI.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page--wMEL00f.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-CytE5j-e.js → archive-plugin-Cki4SfU2.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-BvvrN6rF.js → attachment-load-D-KnS2Do.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-IBWSitnj.js → binary-plugins-D2sgvJja.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C-wDpsf-.js → block-editor-DIq-4Gvb.js} +27 -27
- package/dist/gateway/static/root/assets/browser-settings-page-DRhKdn81.js +8 -0
- package/dist/gateway/static/root/assets/capability-presets-api-CorhiHlg.js +1 -0
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-qFx9Jtce.js +1 -0
- package/dist/gateway/static/root/assets/channels-settings-BAwAkqIA.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-BQLcfitM.js +2 -0
- package/dist/gateway/static/root/assets/cron-api-qGwmL-24.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-BBWMAj8-.js +3 -0
- package/dist/gateway/static/root/assets/dreaming-settings-Dw89Obml.js +1 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-BAIyjDlq.js → extension-debug-page-DYu1KaFQ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DEhv2GpC.js → extension-page-B3W6QwlZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-DOuAxTDW.js → extension-settings-page-D7VQ-cxE.js} +1 -1
- package/dist/gateway/static/root/assets/{fetch-CTsREQIe.js → fetch-B7xDPu-R.js} +1 -1
- package/dist/gateway/static/root/assets/{format-interval-label-D35Bfhtx.js → format-interval-label-BzxafKxR.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-config-api-BTBLSeUu.js +1 -0
- package/dist/gateway/static/root/assets/gateway-settings-Cmwy58rS.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-C1KAHrd2.js → gateway-startup-retry-CYj9FWCp.js} +1 -1
- package/dist/gateway/static/root/assets/goal-detail-page-l7mu5GWX.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-KnLGpu6h.js → goals-config-api-CQQgzPr3.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-BHitvJAv.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-DtPtqZi8.js → goals-settings-CYVY4NGp.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-config-api-uKw1f0IG.js → heartbeat-config-api-DriO_CN9.js} +1 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-CUQTKxg7.js +1 -0
- package/dist/gateway/static/root/assets/index-C17Tsd_b.css +1 -0
- package/dist/gateway/static/root/assets/index-Cc41r16l.js +191 -0
- package/dist/gateway/static/root/assets/{interval-presets-Dq0FXJ65.js → interval-presets-DFPCKW_W.js} +1 -1
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-C9_t4m7t.js → keyboard-shortcuts-settings-CcVcqstx.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-SNkWzidV.js → logs-page-C2Uqvae9.js} +2 -2
- package/dist/gateway/static/root/assets/{markdown-split-Ca87W8-h.js → markdown-split-BwOFrJ2E.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-BAcUjPRJ.js → media-plugins-Cnz6Q5G6.js} +1 -1
- package/dist/gateway/static/root/assets/messages-B1iSKjiw.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-BfLfcta8.js +2 -0
- package/dist/gateway/static/root/assets/note-detail-page-BjwOQBfT.js +2 -0
- package/dist/gateway/static/root/assets/{note-image-lightbox-hnSX5SSn.js → note-image-lightbox-B-Svpmza.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-DktdBiwB.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CNgM20H5.js → preview-open-alternatives-Bss4TiwP.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-rfVx96fq.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-CcdjGcfT.js → save-bar-controls-BRNjdgKq.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CYr39z76.js → schedule-field-CUCKODde.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-BRAJgZQ2.js → schema-form-Dub9sy8r.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DbtMFuuH.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-5re5gAnP.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BhzjeGWi.js → settings-collapsible-section-BeFLavGi.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-Cz3Pcr9b.js → settings-form-section-dmyaPOTG.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-D-WMyLlj.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-Cl-DEJAU.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DL4y9K5e.js → share-preview-page-C8glrdqe.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-CyPVvbLt.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CleTH1oz.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-Ck8hdXqR.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-FD2jxRZ3.js → system-settings-panel-DI-LN_8G.js} +1 -1
- package/dist/gateway/static/root/assets/typed-models-lib-kX9duch4.js +1 -0
- package/dist/gateway/static/root/assets/{use-channel-catalog-BInPrfR5.js → use-channel-catalog-DqlWTsDb.js} +1 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-B-UFPMXy.js +1 -0
- package/dist/gateway/static/root/assets/utils-Dm0hKalR.js +1 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-C73IVZeC.js +1 -0
- package/dist/gateway/static/root/assets/{voice-player-store-1U3vFppm.js → voice-player-store-C_ArLJPM.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-BtFGp2y_.js +18 -0
- package/dist/gateway/static/root/index.html +5 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +1 -1
- package/dist/src/agent/agent-manager.js +14 -14
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/agent-scope.js +5 -9
- package/dist/src/agent/agent-scope.js.map +1 -1
- package/dist/src/agent/background-review/coordinator.js +0 -1
- package/dist/src/agent/background-review/coordinator.js.map +1 -1
- package/dist/src/agent/background-review/prompts.d.ts +2 -2
- package/dist/src/agent/background-review/prompts.js +2 -2
- package/dist/src/agent/background-review/prompts.js.map +1 -1
- package/dist/src/agent/background-review/run-background-review.d.ts +0 -2
- package/dist/src/agent/background-review/run-background-review.js +2 -4
- package/dist/src/agent/background-review/run-background-review.js.map +1 -1
- package/dist/src/agent/background-review/settings.d.ts +1 -1
- package/dist/src/agent/background-review/settings.js +8 -8
- package/dist/src/agent/background-review/settings.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.d.ts +1 -0
- package/dist/src/agent/bootstrap/bootstrap-cache.js +4 -3
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-context.d.ts +2 -2
- package/dist/src/agent/bootstrap/bootstrap-context.js +4 -4
- package/dist/src/agent/bootstrap/bootstrap-context.js.map +1 -1
- package/dist/src/agent/bootstrap/bootstrap-files.d.ts +4 -0
- package/dist/src/agent/bootstrap/bootstrap-files.js +4 -3
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +4 -2
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.d.ts +2 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +18 -17
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +1 -1
- package/dist/src/agent/bootstrap/project-agents-context.js +1 -1
- package/dist/src/agent/bootstrap/types.d.ts +1 -1
- package/dist/src/agent/context/workspace-seed.js +3 -3
- package/dist/src/agent/context/workspace-state.js +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +1 -1
- package/dist/src/agent/context/workspace.d.ts +4 -2
- package/dist/src/agent/context/workspace.js +6 -5
- package/dist/src/agent/context/workspace.js.map +1 -1
- package/dist/src/agent/embedded/run-for-session.js +4 -1
- package/dist/src/agent/embedded/run-for-session.js.map +1 -1
- package/dist/src/agent/fallback/candidates.js +11 -9
- package/dist/src/agent/fallback/candidates.js.map +1 -1
- package/dist/src/agent/goals/goal-locale.js +2 -2
- package/dist/src/agent/goals/post-turn.js +3 -3
- package/dist/src/agent/image/generation/runtime-types.d.ts +2 -0
- package/dist/src/agent/image/generation/runtime.js +1 -1
- package/dist/src/agent/image/generation/runtime.js.map +1 -1
- package/dist/src/agent/image/image-helpers.d.ts +1 -1
- package/dist/src/agent/image/image-helpers.js +4 -17
- package/dist/src/agent/image/image-helpers.js.map +1 -1
- package/dist/src/agent/image/image-model-fallback.js +1 -1
- package/dist/src/agent/image/image-model-fallback.js.map +1 -1
- package/dist/src/agent/image/inbound-image-handling.js +1 -1
- package/dist/src/agent/image/inbound-image-handling.js.map +1 -1
- package/dist/src/agent/image/load-image-media.js +2 -2
- package/dist/src/agent/image/tool-model-config.d.ts +1 -1
- package/dist/src/agent/image/tool-model-config.js +2 -2
- package/dist/src/agent/image/tool-model-config.js.map +1 -1
- package/dist/src/agent/ipc/inbox.js +3 -3
- package/dist/src/agent/ipc/socket.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +1 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +1 -1
- package/dist/src/agent/media-generation/runtime-shared.d.ts +5 -2
- package/dist/src/agent/media-generation/runtime-shared.js +1 -1
- package/dist/src/agent/media-generation/runtime-shared.js.map +1 -1
- package/dist/src/agent/memory/builtin-memory-store.d.ts +6 -2
- package/dist/src/agent/memory/builtin-memory-store.js +15 -6
- package/dist/src/agent/memory/builtin-memory-store.js.map +1 -1
- package/dist/src/agent/memory/builtin-provider.d.ts +31 -9
- package/dist/src/agent/memory/builtin-provider.js +290 -11
- package/dist/src/agent/memory/builtin-provider.js.map +1 -1
- package/dist/src/agent/memory/candidate-extractor.d.ts +6 -0
- package/dist/src/agent/memory/candidate-extractor.js +60 -0
- package/dist/src/agent/memory/candidate-extractor.js.map +1 -0
- package/dist/src/agent/memory/context-assembler.d.ts +10 -0
- package/dist/src/agent/memory/context-assembler.js +26 -0
- package/dist/src/agent/memory/context-assembler.js.map +1 -0
- package/dist/src/agent/memory/create-memory-manager.js +25 -7
- package/dist/src/agent/memory/create-memory-manager.js.map +1 -1
- package/dist/src/agent/memory/dreaming/config.d.ts +1 -6
- package/dist/src/agent/memory/dreaming/config.js +8 -8
- package/dist/src/agent/memory/dreaming/config.js.map +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +2 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.js +25 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +1 -1
- package/dist/src/agent/memory/dreaming/events.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
- package/dist/src/agent/memory/dreaming/preview.js +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
- package/dist/src/agent/memory/dreaming/utils.js +1 -1
- package/dist/src/agent/memory/index.d.ts +1 -0
- package/dist/src/agent/memory/index.js +4 -3
- package/dist/src/agent/memory/inject-prefetch.js +6 -2
- package/dist/src/agent/memory/inject-prefetch.js.map +1 -1
- package/dist/src/agent/memory/manager.d.ts +39 -2
- package/dist/src/agent/memory/manager.js +355 -39
- package/dist/src/agent/memory/manager.js.map +1 -1
- package/dist/src/agent/memory/memory-config.js +15 -15
- package/dist/src/agent/memory/memory-config.js.map +1 -1
- package/dist/src/agent/memory/memory-flush.js +1 -1
- package/dist/src/agent/memory/plugin-discovery.d.ts +19 -5
- package/dist/src/agent/memory/plugin-discovery.js +97 -31
- package/dist/src/agent/memory/plugin-discovery.js.map +1 -1
- package/dist/src/agent/memory/prefetch-coordinator.js.map +1 -1
- package/dist/src/agent/memory/provider.d.ts +20 -15
- package/dist/src/agent/memory/stub-memory-provider.d.ts +17 -2
- package/dist/src/agent/memory/stub-memory-provider.js +20 -3
- package/dist/src/agent/memory/stub-memory-provider.js.map +1 -1
- package/dist/src/agent/memory/types.d.ts +162 -3
- package/dist/src/agent/models/manager.d.ts +1 -1
- package/dist/src/agent/models/manager.js +2 -2
- package/dist/src/agent/models/manager.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.d.ts +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +2 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +2 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.d.ts +2 -6
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +2 -8
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +1 -1
- package/dist/src/agent/prompt/memory/index.d.ts +4 -2
- package/dist/src/agent/prompt/memory/index.js +19 -13
- package/dist/src/agent/prompt/memory/index.js.map +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js +1 -1
- package/dist/src/agent/prompt/sections/memory-skills.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +5 -20
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/reply/post-compaction-context.js +10 -7
- package/dist/src/agent/reply/post-compaction-context.js.map +1 -1
- package/dist/src/agent/reply/startup-context.js +7 -12
- package/dist/src/agent/reply/startup-context.js.map +1 -1
- package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
- package/dist/src/agent/sandbox/path-policy.js +2 -2
- package/dist/src/agent/service/process-direct-streaming.js +1 -4
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service/session-context-report.js +1 -1
- package/dist/src/agent/service/session-context-report.js.map +1 -1
- package/dist/src/agent/service.d.ts +3 -3
- package/dist/src/agent/service.js +30 -35
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +1 -2
- package/dist/src/agent/session/session-hydrator.js +1 -2
- package/dist/src/agent/session/session-hydrator.js.map +1 -1
- package/dist/src/agent/session/session-inspector.d.ts +1 -1
- package/dist/src/agent/session/session-inspector.js +10 -15
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/skills/config.js +2 -2
- package/dist/src/agent/skills/filesystem-watcher.js +1 -1
- package/dist/src/agent/skills/hub-hash.js +2 -2
- package/dist/src/agent/skills/hub-lock.js +1 -1
- package/dist/src/agent/skills/hub-pull.js +3 -3
- package/dist/src/agent/skills/index.js +2 -2
- package/dist/src/agent/skills/installer.js +2 -2
- package/dist/src/agent/skills/managed-store.js +1 -1
- package/dist/src/agent/skills/skill-manage-ops.js +1 -1
- package/dist/src/agent/skills/skill-manager.js +1 -1
- package/dist/src/agent/skills/skill-view-path.js +1 -1
- package/dist/src/agent/skills/test-framework.js +1 -1
- package/dist/src/agent/starter-agents.d.ts +1 -3
- package/dist/src/agent/starter-agents.js +14 -22
- package/dist/src/agent/starter-agents.js.map +1 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -2
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +1 -1
- package/dist/src/agent/tools/curated-memory-tool.d.ts +2 -5
- package/dist/src/agent/tools/curated-memory-tool.js +77 -18
- package/dist/src/agent/tools/curated-memory-tool.js.map +1 -1
- package/dist/src/agent/tools/dreaming-tool.js +1 -1
- package/dist/src/agent/tools/factory.d.ts +0 -4
- package/dist/src/agent/tools/factory.js +19 -58
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/find.js +1 -1
- package/dist/src/agent/tools/grep.js +1 -1
- package/dist/src/agent/tools/image-generate-tool.d.ts +1 -1
- package/dist/src/agent/tools/image-generate-tool.js +20 -15
- package/dist/src/agent/tools/image-generate-tool.js.map +1 -1
- package/dist/src/agent/tools/image-tool.js +1 -3
- package/dist/src/agent/tools/image-tool.js.map +1 -1
- package/dist/src/agent/tools/memory-tool.d.ts +2 -2
- package/dist/src/agent/tools/memory-tool.js +39 -14
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/agent/tools/session-search-tool.js +1 -3
- package/dist/src/agent/tools/session-search-tool.js.map +1 -1
- package/dist/src/agent/tools/skill-manage-tool.js +1 -1
- package/dist/src/agent/tools/web-extract.js +8 -9
- package/dist/src/agent/tools/web-extract.js.map +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/workflow/catalog.js +1 -1
- package/dist/src/agent/workflow/subagent-runner.js +1 -3
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent-manifest/index.d.ts +4 -0
- package/dist/src/agent-manifest/index.js +10 -0
- package/dist/src/agent-manifest/index.js.map +1 -0
- package/dist/src/agent-manifest/prompt.d.ts +2 -0
- package/dist/src/agent-manifest/prompt.js +57 -0
- package/dist/src/agent-manifest/prompt.js.map +1 -0
- package/dist/src/agent-manifest/resolver.d.ts +12 -0
- package/dist/src/agent-manifest/resolver.js +95 -0
- package/dist/src/agent-manifest/resolver.js.map +1 -0
- package/dist/src/agent-manifest/schema.d.ts +1010 -0
- package/dist/src/agent-manifest/schema.js +269 -0
- package/dist/src/agent-manifest/schema.js.map +1 -0
- package/dist/src/agent-manifest/validator.d.ts +25 -0
- package/dist/src/agent-manifest/validator.js +88 -0
- package/dist/src/agent-manifest/validator.js.map +1 -0
- package/dist/src/agent-runtime/boundary-guard.d.ts +12 -0
- package/dist/src/agent-runtime/boundary-guard.js +23 -0
- package/dist/src/agent-runtime/boundary-guard.js.map +1 -0
- package/dist/src/agent-runtime/index.d.ts +7 -0
- package/dist/src/agent-runtime/index.js +8 -0
- package/dist/src/agent-runtime/memory-runtime.d.ts +21 -0
- package/dist/src/agent-runtime/memory-runtime.js +50 -0
- package/dist/src/agent-runtime/memory-runtime.js.map +1 -0
- package/dist/src/agent-runtime/model-router.d.ts +11 -0
- package/dist/src/agent-runtime/model-router.js +16 -0
- package/dist/src/agent-runtime/model-router.js.map +1 -0
- package/dist/src/agent-runtime/run-trace.d.ts +27 -0
- package/dist/src/agent-runtime/run-trace.js +53 -0
- package/dist/src/agent-runtime/run-trace.js.map +1 -0
- package/dist/src/agent-runtime/runtime-profile.d.ts +24 -0
- package/dist/src/agent-runtime/runtime-profile.js +44 -0
- package/dist/src/agent-runtime/runtime-profile.js.map +1 -0
- package/dist/src/agent-runtime/tool-registry.d.ts +28 -0
- package/dist/src/agent-runtime/tool-registry.js +52 -0
- package/dist/src/agent-runtime/tool-registry.js.map +1 -0
- package/dist/src/agent-runtime/workflow-runtime.d.ts +31 -0
- package/dist/src/agent-runtime/workflow-runtime.js +34 -0
- package/dist/src/agent-runtime/workflow-runtime.js.map +1 -0
- package/dist/src/ai-assist/text-assist.js +1 -1
- package/dist/src/auth/credentials.js +2 -2
- package/dist/src/auth/profiles/store.js +2 -2
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js.map +1 -1
- package/dist/src/browser/actions/registry.js +5 -8
- package/dist/src/browser/actions/registry.js.map +1 -1
- package/dist/src/browser/backend-from-config.d.ts +1 -1
- package/dist/src/browser/backend-from-config.js +50 -71
- package/dist/src/browser/backend-from-config.js.map +1 -1
- package/dist/src/browser/browser-command-timeout.d.ts +0 -1
- package/dist/src/browser/browser-command-timeout.js +3 -7
- package/dist/src/browser/browser-command-timeout.js.map +1 -1
- package/dist/src/browser/cache-dir-policy.js +1 -1
- package/dist/src/browser/cdp-local-launcher.js +2 -2
- package/dist/src/browser/pipeline/source.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.d.ts +2 -12
- package/dist/src/browser/providers/browser-ext-install.js +7 -12
- package/dist/src/browser/providers/browser-ext-install.js.map +1 -1
- package/dist/src/browser/providers/cloakbrowser.js +5 -5
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/readiness.js +16 -16
- package/dist/src/browser/readiness.js.map +1 -1
- package/dist/src/browser/schemas.js +1 -1
- package/dist/src/browser/schemas.js.map +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/channels/catalog/channel-catalog-service.js +1 -1
- package/dist/src/channels/outbound/persist-store.js +1 -1
- package/dist/src/channels/pairing/allow-from-file.js +1 -1
- package/dist/src/channels/pairing/pairing-store.js +2 -2
- package/dist/src/channels/pipeline.d.ts +1 -1
- package/dist/src/channels/pipeline.js.map +1 -1
- package/dist/src/chat-commands/agent-edit.js +2 -3
- package/dist/src/chat-commands/agent-edit.js.map +1 -1
- package/dist/src/chat-commands/builtins/config.js +6 -6
- package/dist/src/chat-commands/builtins/config.js.map +1 -1
- package/dist/src/chat-commands/builtins/model.js +2 -2
- package/dist/src/chat-commands/builtins/model.js.map +1 -1
- package/dist/src/chat-commands/builtins/thinking.js +16 -42
- package/dist/src/chat-commands/builtins/thinking.js.map +1 -1
- package/dist/src/chat-commands/config-paths.js +1 -1
- package/dist/src/chat-commands/config-paths.js.map +1 -1
- package/dist/src/chat-commands/context.js +3 -4
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/cli/command-manifest.d.ts +1 -1
- package/dist/src/cli/command-manifest.js +2 -2
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/agent.js +3 -1
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/agents.js +3 -6
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/browser-cli-helpers.js +9 -11
- package/dist/src/cli/commands/browser-cli-helpers.js.map +1 -1
- package/dist/src/cli/commands/config.js +6 -6
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +3 -18
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -2
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +1 -1
- package/dist/src/cli/commands/extension-create.js +1 -1
- package/dist/src/cli/commands/extension-dev.js +2 -2
- package/dist/src/cli/commands/extension-marketplace.js +2 -2
- package/dist/src/cli/commands/extension-pack.js +2 -2
- package/dist/src/cli/commands/extension.js +3 -3
- package/dist/src/cli/commands/gateway/logs.js +1 -1
- package/dist/src/cli/commands/goal.js +1 -1
- package/dist/src/cli/commands/image.js +13 -372
- package/dist/src/cli/commands/image.js.map +1 -1
- package/dist/src/cli/commands/init.js +7 -6
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/commands/models.js +14 -16
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/registry.js.map +1 -1
- package/dist/src/cli/commands/onboard/model.js +28 -23
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +3 -3
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/skills-test.js +1 -1
- package/dist/src/cli/commands/tui.js +2 -2
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/index.d.ts +1 -0
- package/dist/src/cli/index.js +10 -5
- package/dist/src/cli/index.js.map +1 -1
- package/dist/src/cli/registry.js +1 -1
- package/dist/src/cli/registry.js.map +1 -1
- package/dist/src/cli/templates.d.ts +1 -1
- package/dist/src/cli/templates.js +2 -12
- package/dist/src/cli/templates.js.map +1 -1
- package/dist/src/cli/utils/gateway-client.js +1 -1
- package/dist/src/cli/utils/init-workspace-core.d.ts +1 -4
- package/dist/src/cli/utils/init-workspace-core.js +9 -8
- package/dist/src/cli/utils/init-workspace-core.js.map +1 -1
- package/dist/src/commands/agents.config.d.ts +0 -1
- package/dist/src/commands/agents.config.js +59 -13
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-profile.d.ts +5 -17
- package/dist/src/config/agent-profile.js +32 -64
- package/dist/src/config/agent-profile.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +1 -1
- package/dist/src/config/agent-typed-models.js +3 -6
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +9 -9
- package/dist/src/config/integration.d.ts +1 -1
- package/dist/src/config/loader.js +4 -4
- package/dist/src/config/models-json.js +2 -2
- package/dist/src/config/paths-state.js +1 -1
- package/dist/src/config/paths.d.ts +8 -1
- package/dist/src/config/paths.js +17 -4
- package/dist/src/config/paths.js.map +1 -1
- package/dist/src/config/profile.js +1 -1
- package/dist/src/config/reload.js +2 -2
- package/dist/src/config/reload.js.map +1 -1
- package/dist/src/config/rules.js +6 -56
- package/dist/src/config/rules.js.map +1 -1
- package/dist/src/config/schema.d.ts +916 -779
- package/dist/src/config/schema.js +174 -423
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/workspace-path.js +1 -1
- package/dist/src/connectors/composio-triggers.js +1 -1
- package/dist/src/cron/executor.js +1 -1
- package/dist/src/cron/index.js +1 -1
- package/dist/src/cron/service.js +2 -2
- package/dist/src/cron/validation.d.ts +3 -3
- package/dist/src/daemon/constants.js +1 -1
- package/dist/src/daemon/install-plan.js +2 -2
- package/dist/src/daemon/launchd.js +2 -2
- package/dist/src/daemon/schtasks.js +2 -2
- package/dist/src/daemon/systemd.js +2 -2
- package/dist/src/extensions/activation-context.js +13 -7
- package/dist/src/extensions/activation-context.js.map +1 -1
- package/dist/src/extensions/bundle-mcp.js +1 -1
- package/dist/src/extensions/discover-extensions.js +2 -2
- package/dist/src/extensions/health.js +1 -1
- package/dist/src/extensions/install.js +2 -2
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/extensions/lockfile.js +3 -3
- package/dist/src/extensions/security.js +1 -1
- package/dist/src/extensions/update.js +2 -2
- package/dist/src/gateway/agents-admin.d.ts +24 -18
- package/dist/src/gateway/agents-admin.js +158 -92
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/capability-presets-admin.d.ts +56 -0
- package/dist/src/gateway/capability-presets-admin.js +214 -0
- package/dist/src/gateway/capability-presets-admin.js.map +1 -0
- package/dist/src/gateway/chat-stream/mapper.js +9 -2
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
- package/dist/src/gateway/file-path-classifier.js +2 -2
- package/dist/src/gateway/global-defaults-admin.d.ts +36 -0
- package/dist/src/gateway/global-defaults-admin.js +146 -0
- package/dist/src/gateway/global-defaults-admin.js.map +1 -0
- package/dist/src/gateway/hono/lib/agent-model.d.ts +1 -1
- package/dist/src/gateway/hono/lib/agent-model.js +1 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +234 -127
- package/dist/src/gateway/hono/lib/config-payload.js +14 -38
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/lib/extension-store.js +2 -2
- package/dist/src/gateway/hono/lib/static-ui.js +2 -2
- package/dist/src/gateway/hono/routes/agents.js +88 -33
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
- package/dist/src/gateway/hono/routes/browser.js +8 -15
- package/dist/src/gateway/hono/routes/browser.js.map +1 -1
- package/dist/src/gateway/hono/routes/capability-presets.d.ts +3 -0
- package/dist/src/gateway/hono/routes/capability-presets.js +145 -0
- package/dist/src/gateway/hono/routes/capability-presets.js.map +1 -0
- package/dist/src/gateway/hono/routes/commands-skills.js +4 -5
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.d.ts +1 -17
- package/dist/src/gateway/hono/routes/config-patch/agents.js +2 -443
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js +7 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +1 -1
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +8 -1
- package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
- package/dist/src/gateway/hono/routes/global-defaults.d.ts +3 -0
- package/dist/src/gateway/hono/routes/global-defaults.js +61 -0
- package/dist/src/gateway/hono/routes/global-defaults.js.map +1 -0
- package/dist/src/gateway/hono/routes/host-fs.js +2 -2
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +17 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/memory.d.ts +3 -0
- package/dist/src/gateway/hono/routes/memory.js +361 -0
- package/dist/src/gateway/hono/routes/memory.js.map +1 -0
- package/dist/src/gateway/hono/routes/models.js +2 -2
- package/dist/src/gateway/hono/routes/shares.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +1 -1
- package/dist/src/gateway/hono/routes/workspace.js +2 -2
- package/dist/src/gateway/lock.js +3 -3
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/config-coordinator.js +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +4 -4
- package/dist/src/gateway/service/marketplace-service.js +13 -9
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service.d.ts +1 -1
- package/dist/src/gateway/service.js +15 -16
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/gateway/workspace-fs-file-list.js +1 -1
- package/dist/src/goals/goal-workflow-judge.js +2 -2
- package/dist/src/i18n/goals-bundle.js +1 -1
- package/dist/src/i18n/index.js +1 -1
- package/dist/src/i18n/share-tool-bundle.js +2 -2
- package/dist/src/infra/brew.js +1 -1
- package/dist/src/infra/package-json.js +1 -1
- package/dist/src/infra/package-update-steps.js +1 -1
- package/dist/src/infra/path-env.js +2 -2
- package/dist/src/infra/restart.js +1 -1
- package/dist/src/infra/stable-node-path.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-global.js +1 -1
- package/dist/src/infra/update-lock.js +2 -2
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/infra/update-runner.js +1 -1
- package/dist/src/infra/update-startup.js +1 -1
- package/dist/src/infra/write-file-atomic.js +2 -2
- package/dist/src/media/store.js +1 -1
- package/dist/src/notes/agent-context.js +3 -3
- package/dist/src/notes/service.js +4 -2
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +2 -2
- package/dist/src/project-trust/trust-store.js +2 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
- package/dist/src/providers/index.d.ts +5 -6
- package/dist/src/providers/index.js +26 -30
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/providers/model-registry.js +4 -4
- package/dist/src/session/index.js +1 -1
- package/dist/src/session/init-session-turn.js +1 -1
- package/dist/src/session/resolve-session.js +1 -1
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/store.js +1 -1
- package/dist/src/session/thinking-resolve.d.ts +1 -1
- package/dist/src/session/thinking-resolve.js +1 -1
- package/dist/src/session/thinking-resolve.js.map +1 -1
- package/dist/src/share/share-auto.js +2 -2
- package/dist/src/share/share-store.js +3 -3
- package/dist/src/share/share-thumbnail.js +2 -2
- package/dist/src/share/share-zip.js +1 -1
- package/dist/src/share/site-share-store.js +3 -3
- package/dist/src/share/site-static-serve.js +1 -1
- package/dist/src/storage/sqlite/connection.js +2 -2
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/memory-index-repository.d.ts +1 -0
- package/dist/src/storage/sqlite/memory-index-repository.js +17 -16
- package/dist/src/storage/sqlite/memory-index-repository.js.map +1 -1
- package/dist/src/storage/sqlite/memory-records-repository.d.ts +144 -0
- package/dist/src/storage/sqlite/memory-records-repository.js +453 -0
- package/dist/src/storage/sqlite/memory-records-repository.js.map +1 -0
- package/dist/src/storage/sqlite/migrations/012_memory_records.sql +63 -0
- package/dist/src/storage/sqlite/migrations/013_memory_trace_events.sql +21 -0
- package/dist/src/storage/sqlite/migrations/014_memory_record_governance.sql +10 -0
- package/dist/src/storage/sqlite/migrations/015_memory_trace_feedback.sql +4 -0
- package/dist/src/storage/sqlite/migrations/discover.js +1 -1
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +4 -4
- 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 +2 -2
- package/dist/src/storage/sqlite/schema.sql +86 -0
- package/dist/src/tui/backends/embedded-backend.d.ts +3 -0
- package/dist/src/tui/backends/embedded-backend.js +43 -24
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +1 -0
- package/dist/src/tui/backends/gateway-sse-backend.js +16 -3
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/clipboard-image.js +3 -3
- package/dist/src/tui/components/tui-header.d.ts +0 -1
- package/dist/src/tui/components/tui-header.js +3 -8
- package/dist/src/tui/components/tui-header.js.map +1 -1
- package/dist/src/tui/extension-host/load-extensions.js +1 -1
- package/dist/src/tui/extension-host/load-extensions.js.map +1 -1
- package/dist/src/tui/theme-manager.js +1 -1
- package/dist/src/tui/tui-command-formatters.js +4 -4
- package/dist/src/tui/tui-commands.js +2 -2
- package/dist/src/tui/tui-keybindings-file.js +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-settings.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +2 -1
- package/dist/src/tui/tui-startup-resources.js.map +1 -1
- package/dist/src/tui/tui-startup-text.js +12 -12
- package/dist/src/tui/tui-startup-text.js.map +1 -1
- package/dist/src/tui/tui.js +10 -7
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/tunnel/frpc-binary.js +4 -4
- package/dist/src/tunnel/frpc-config.js +1 -1
- package/dist/src/tunnel/frpc-extract.js +1 -1
- package/dist/src/tunnel/tunnel-state.js +1 -1
- package/dist/src/utils/logger/audit.js +1 -1
- package/dist/src/utils/logger/log-store.js +1 -1
- package/dist/src/utils/logger/rotation.js +1 -1
- package/dist/src/utils/logger/streams.js +1 -1
- package/dist/src/voice/tts/audio.js +1 -1
- package/dist/src/voice/tts/providers/edge-speech.js +2 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +4 -5
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
- package/dist/src/workflows/store/event-store.js +1 -1
- package/dist/src/workflows/store/run-store.js +1 -1
- package/package.json +3 -2
- package/dist/gateway/static/root/assets/agent-browser-settings-page-D1SyFYeh.js +0 -6
- package/dist/gateway/static/root/assets/agent-defaults-tabbed-page-C9YxgvuI.js +0 -1
- package/dist/gateway/static/root/assets/agents-CteVs3UO.js +0 -71
- package/dist/gateway/static/root/assets/apps-page-CVQ1M8Ax.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-Cd3JbeQ1.js +0 -1
- package/dist/gateway/static/root/assets/config-api-C4RAtTKW.js +0 -3
- package/dist/gateway/static/root/assets/connectors-page-MsMa5qBr.js +0 -2
- package/dist/gateway/static/root/assets/cron-api-sJNMqB6P.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-D30CSwkn.js +0 -3
- package/dist/gateway/static/root/assets/dreaming-settings-6fCUWRQf.js +0 -1
- package/dist/gateway/static/root/assets/gateway-config-api-C6989a-W.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BpF26t91.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-DOjhmRyf.js +0 -1
- package/dist/gateway/static/root/assets/goals-page-Xl9_wrFc.js +0 -2
- package/dist/gateway/static/root/assets/heartbeat-settings-DN9vEj9P.js +0 -1
- package/dist/gateway/static/root/assets/index-C8ytlAF2.js +0 -122
- package/dist/gateway/static/root/assets/index-CVpJW2NS.css +0 -1
- package/dist/gateway/static/root/assets/messages-BqzIDrlr.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-BO4o-GmO.js +0 -2
- package/dist/gateway/static/root/assets/note-detail-page-DLV_XDmT.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-ycsDlkFA.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-DQpnE8K9.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-BZui7iAY.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DEfzZ1ax.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-CLuSsu1-.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-Cq4qpXLi.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-B9F3HyYQ.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-Bp9UPPwm.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BIoBsfSV.js +0 -2
- package/dist/gateway/static/root/assets/use-agent-defaults-form-Cz2_pPzu.js +0 -1
- package/dist/gateway/static/root/assets/use-settings-tab-guard-nuHMmZQv.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BUIrKb8s.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-qE3SexnO.js +0 -18
- package/dist/src/agent/context/workspace-templates/USER.md +0 -24
|
@@ -1,26 +1,30 @@
|
|
|
1
1
|
import { init_agent_scope, resolveAgentHomeDir, resolveAgentIdForWorkspacePath } from "../agent-scope.js";
|
|
2
|
+
import { resolveEffectiveAgentManifestForAgent } from "../../config/agent-profile.js";
|
|
3
|
+
import { init_paths, resolveUserMemoryPath } from "../../config/paths.js";
|
|
2
4
|
import { join } from "node:path";
|
|
3
5
|
//#region src/agent/memory/memory-config.ts
|
|
6
|
+
init_paths();
|
|
4
7
|
init_agent_scope();
|
|
5
8
|
/** When false, curated `memories/` (under agent home) + external memory providers are off. */
|
|
6
9
|
function isMemorySubsystemEnabled(config) {
|
|
7
|
-
|
|
10
|
+
if (!config) return true;
|
|
11
|
+
return config.agents.list.some((agent) => agent.enabled !== false && agent.memory.mode !== "off");
|
|
8
12
|
}
|
|
9
13
|
/** Curated memory tool + agent-home `memories/` store (not injected into system prompt). */
|
|
10
14
|
function isCuratedMemoryInPrompt(config) {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
if (m?.useEnhancedSystem === false) return false;
|
|
14
|
-
return true;
|
|
15
|
+
if (!config) return true;
|
|
16
|
+
return config.agents.list.some((agent) => agent.enabled !== false && agent.memory.sources.includes("curated"));
|
|
15
17
|
}
|
|
16
18
|
function resolveBuiltinMemoryStoreConfig(workspaceDir, config) {
|
|
17
|
-
const
|
|
19
|
+
const agentId = config != null ? resolveAgentIdForWorkspacePath(config, workspaceDir) : void 0;
|
|
20
|
+
const manifest = config && agentId ? resolveEffectiveAgentManifestForAgent(config, agentId) : void 0;
|
|
18
21
|
return {
|
|
19
22
|
workspaceDir,
|
|
20
|
-
memoriesDir: config != null ? join(resolveAgentHomeDir(config,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
memoriesDir: config != null ? join(resolveAgentHomeDir(config, agentId ?? "main"), "memories") : join(workspaceDir, "memories"),
|
|
24
|
+
userMemoryPath: config != null ? resolveUserMemoryPath() : join(workspaceDir, "user", "MEMORY.md"),
|
|
25
|
+
memoryCharLimit: manifest?.memory.retention?.maxItems ?? 2200,
|
|
26
|
+
userCharLimit: 1375,
|
|
27
|
+
userProfileEnabled: manifest?.memory.sources.includes("userProfile") ?? true
|
|
24
28
|
};
|
|
25
29
|
}
|
|
26
30
|
/**
|
|
@@ -28,11 +32,7 @@ function resolveBuiltinMemoryStoreConfig(workspaceDir, config) {
|
|
|
28
32
|
* `first-turn` only injects on turn 1. `contextCadence` N injects on turns 1, N+1, 2N+1, …
|
|
29
33
|
*/
|
|
30
34
|
function shouldInjectMemoryPrefetchThisTurn(config, turnNumber) {
|
|
31
|
-
|
|
32
|
-
if ((m?.injectionFrequency ?? "every-turn") === "first-turn") return turnNumber === 1;
|
|
33
|
-
const cadence = m?.contextCadence ?? 1;
|
|
34
|
-
if (cadence <= 1) return true;
|
|
35
|
-
return (turnNumber - 1) % cadence === 0;
|
|
35
|
+
return turnNumber >= 1;
|
|
36
36
|
}
|
|
37
37
|
function shouldRegisterCuratedMemoryTool(config) {
|
|
38
38
|
return isCuratedMemoryInPrompt(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-config.js","names":[],"sources":["../../../../src/agent/memory/memory-config.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport type { Config } from '../../config/schema.js';\nimport { resolveAgentHomeDir, resolveAgentIdForWorkspacePath } from '../agent-scope.js';\n\nimport type { MemoryStoreConfig } from './types.js';\n\n/** When false, curated `memories/` (under agent home) + external memory providers are off. */\nexport function isMemorySubsystemEnabled(config: Config | undefined): boolean {\n return config
|
|
1
|
+
{"version":3,"file":"memory-config.js","names":[],"sources":["../../../../src/agent/memory/memory-config.ts"],"sourcesContent":["import { join } from 'node:path';\n\nimport type { Config } from '../../config/schema.js';\nimport { resolveUserMemoryPath } from '../../config/paths.js';\nimport { resolveEffectiveAgentManifestForAgent } from '../../config/agent-profile.js';\nimport { resolveAgentHomeDir, resolveAgentIdForWorkspacePath } from '../agent-scope.js';\n\nimport type { MemoryStoreConfig } from './types.js';\n\n/** When false, curated `memories/` (under agent home) + external memory providers are off. */\nexport function isMemorySubsystemEnabled(config: Config | undefined): boolean {\n if (!config) return true;\n return config.agents.list.some((agent) => agent.enabled !== false && agent.memory.mode !== 'off');\n}\n\n/** Curated memory tool + agent-home `memories/` store (not injected into system prompt). */\nexport function isCuratedMemoryInPrompt(config: Config | undefined): boolean {\n if (!config) return true;\n return config.agents.list.some((agent) => agent.enabled !== false && agent.memory.sources.includes('curated'));\n}\n\nexport function resolveBuiltinMemoryStoreConfig(\n workspaceDir: string,\n config: Config | undefined,\n): MemoryStoreConfig {\n const agentId = config != null ? resolveAgentIdForWorkspacePath(config, workspaceDir) : undefined;\n const manifest = config && agentId ? resolveEffectiveAgentManifestForAgent(config, agentId) : undefined;\n const memoriesDir =\n config != null\n ? join(\n resolveAgentHomeDir(config, agentId ?? 'main'),\n 'memories',\n )\n : join(workspaceDir, 'memories');\n return {\n workspaceDir,\n memoriesDir,\n userMemoryPath: config != null ? resolveUserMemoryPath() : join(workspaceDir, 'user', 'MEMORY.md'),\n memoryCharLimit: manifest?.memory.retention?.maxItems ?? 2200,\n userCharLimit: 1375,\n userProfileEnabled: manifest?.memory.sources.includes('userProfile') ?? true,\n };\n}\n\n/**\n * Whether to prefix the user message with prefetched external memory this turn.\n * `first-turn` only injects on turn 1. `contextCadence` N injects on turns 1, N+1, 2N+1, …\n */\nexport function shouldInjectMemoryPrefetchThisTurn(\n config: Config | undefined,\n turnNumber: number,\n): boolean {\n return turnNumber >= 1;\n}\n\nexport function shouldRegisterCuratedMemoryTool(config: Config | undefined): boolean {\n return isCuratedMemoryInPrompt(config);\n}\n"],"mappings":";;;;;YAG8D;kBAE0B;;AAKxF,SAAgB,yBAAyB,QAAqC;AAC5E,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,OAAO,OAAO,KAAK,MAAM,UAAU,MAAM,YAAY,SAAS,MAAM,OAAO,SAAS,MAAM;;;AAInG,SAAgB,wBAAwB,QAAqC;AAC3E,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,OAAO,OAAO,KAAK,MAAM,UAAU,MAAM,YAAY,SAAS,MAAM,OAAO,QAAQ,SAAS,UAAU,CAAC;;AAGhH,SAAgB,gCACd,cACA,QACmB;CACnB,MAAM,UAAU,UAAU,OAAO,+BAA+B,QAAQ,aAAa,GAAG,KAAA;CACxF,MAAM,WAAW,UAAU,UAAU,sCAAsC,QAAQ,QAAQ,GAAG,KAAA;AAQ9F,QAAO;EACL;EACA,aARA,UAAU,OACN,KACE,oBAAoB,QAAQ,WAAW,OAAO,EAC9C,WACD,GACD,KAAK,cAAc,WAAW;EAIlC,gBAAgB,UAAU,OAAO,uBAAuB,GAAG,KAAK,cAAc,QAAQ,YAAY;EAClG,iBAAiB,UAAU,OAAO,WAAW,YAAY;EACzD,eAAe;EACf,oBAAoB,UAAU,OAAO,QAAQ,SAAS,cAAc,IAAI;EACzE;;;;;;AAOH,SAAgB,mCACd,QACA,YACS;AACT,QAAO,cAAc;;AAGvB,SAAgB,gCAAgC,QAAqC;AACnF,QAAO,wBAAwB,OAAO"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { join } from "node:path";
|
|
3
4
|
import { existsSync } from "node:fs";
|
|
4
5
|
import { appendFile, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
5
|
-
import { join } from "node:path";
|
|
6
6
|
//#region src/agent/memory/memory-flush.ts
|
|
7
7
|
init_logger();
|
|
8
8
|
const log = createLogger("MemoryFlush");
|
|
@@ -1,10 +1,24 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import type { Config } from '../../config/schema.js';
|
|
2
|
+
import type { DiscoveredExtension } from '../../extensions/types/loader.js';
|
|
3
|
+
import type { MemoryProvider } from './provider.js';
|
|
4
|
+
import type { MemoryProviderManifest } from './types.js';
|
|
5
5
|
export interface MemoryPluginMetadata {
|
|
6
6
|
name: string;
|
|
7
7
|
description: string;
|
|
8
8
|
available: boolean;
|
|
9
|
+
manifest?: MemoryProviderManifest;
|
|
9
10
|
}
|
|
10
|
-
export
|
|
11
|
+
export interface MemoryPluginProviderContext {
|
|
12
|
+
config?: Config;
|
|
13
|
+
manifest?: MemoryProviderManifest;
|
|
14
|
+
extension?: {
|
|
15
|
+
id: string;
|
|
16
|
+
path: string;
|
|
17
|
+
source: DiscoveredExtension['source'];
|
|
18
|
+
config?: Record<string, unknown>;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export declare function discoverMemoryPlugins(config?: Config): Promise<MemoryPluginMetadata[]>;
|
|
22
|
+
export declare function loadMemoryPluginProviders(params?: {
|
|
23
|
+
config?: Config;
|
|
24
|
+
}): Promise<MemoryProvider[]>;
|
|
@@ -1,39 +1,105 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { discoverExtensionsFromDisk, init_discover_extensions } from "../../extensions/discover-extensions.js";
|
|
2
|
+
import { isAbsolute, join } from "node:path";
|
|
3
|
+
import { stat } from "node:fs/promises";
|
|
4
|
+
import { pathToFileURL } from "node:url";
|
|
4
5
|
//#region src/agent/memory/plugin-discovery.ts
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
plugins.push({
|
|
19
|
-
name: entry,
|
|
20
|
-
description: mod.description ?? `${entry} memory plugin`,
|
|
21
|
-
available
|
|
22
|
-
});
|
|
23
|
-
} catch {
|
|
24
|
-
plugins.push({
|
|
25
|
-
name: entry,
|
|
26
|
-
description: `${entry} memory plugin`,
|
|
27
|
-
available: false
|
|
28
|
-
});
|
|
29
|
-
}
|
|
6
|
+
init_discover_extensions();
|
|
7
|
+
async function discoverMemoryPlugins(config) {
|
|
8
|
+
const plugins = [];
|
|
9
|
+
for (const extension of discoverMemoryProviderExtensions(config)) for (const providerId of extension.manifest.contracts?.memoryProviders ?? []) plugins.push({
|
|
10
|
+
name: providerId,
|
|
11
|
+
description: extension.manifest.description ?? `${extension.manifest.name} memory provider`,
|
|
12
|
+
available: true,
|
|
13
|
+
manifest: {
|
|
14
|
+
type: "memory-provider",
|
|
15
|
+
id: providerId,
|
|
16
|
+
displayName: extension.manifest.name || providerId,
|
|
17
|
+
entry: extension.manifest.main,
|
|
18
|
+
capabilities: {}
|
|
30
19
|
}
|
|
31
|
-
|
|
20
|
+
});
|
|
21
|
+
return plugins.sort((a, b) => a.name.localeCompare(b.name));
|
|
22
|
+
}
|
|
23
|
+
async function loadMemoryPluginProviders(params = {}) {
|
|
24
|
+
const providers = [];
|
|
25
|
+
for (const extension of discoverMemoryProviderExtensions(params.config)) {
|
|
26
|
+
const module = await loadMemoryProviderModule(extension);
|
|
27
|
+
if (!module?.createMemoryProvider) continue;
|
|
28
|
+
if (module.isAvailable?.() === false) continue;
|
|
29
|
+
const fallbackId = (extension.manifest.contracts?.memoryProviders ?? [])[0] ?? extension.id;
|
|
30
|
+
const manifest = normalizeMemoryProviderManifest(fallbackId, module.manifest) ?? {
|
|
31
|
+
type: "memory-provider",
|
|
32
|
+
id: fallbackId,
|
|
33
|
+
displayName: extension.manifest.name || fallbackId,
|
|
34
|
+
entry: extension.manifest.main,
|
|
35
|
+
capabilities: {}
|
|
36
|
+
};
|
|
37
|
+
const provider = await module.createMemoryProvider({
|
|
38
|
+
config: params.config,
|
|
39
|
+
manifest,
|
|
40
|
+
extension: {
|
|
41
|
+
id: extension.id,
|
|
42
|
+
path: extension.path,
|
|
43
|
+
source: extension.source,
|
|
44
|
+
config: extensionConfig(params.config, extension.id)
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
providers.push(provider);
|
|
48
|
+
}
|
|
49
|
+
return providers;
|
|
50
|
+
}
|
|
51
|
+
function discoverMemoryProviderExtensions(config) {
|
|
52
|
+
if (areExtensionsDisabled(config)) return [];
|
|
53
|
+
const disabled = new Set(extensionIds(config?.extensions?.disabled));
|
|
54
|
+
const enabled = config?.extensions?.enabled;
|
|
55
|
+
const enabledSet = Array.isArray(enabled) ? new Set(extensionIds(enabled)) : null;
|
|
56
|
+
return discoverExtensionsFromDisk({}, config).filter((extension) => (extension.manifest.contracts?.memoryProviders?.length ?? 0) > 0).filter((extension) => !disabled.has(extension.id)).filter((extension) => extension.manifest.enabledByDefault === true || enabledSet?.has(extension.id));
|
|
57
|
+
}
|
|
58
|
+
async function loadMemoryProviderModule(extension) {
|
|
59
|
+
if (!extension.manifest.main) return null;
|
|
60
|
+
const resolved = await resolveModuleEntry(isAbsolute(extension.manifest.main) ? extension.manifest.main : join(extension.path, extension.manifest.main));
|
|
61
|
+
try {
|
|
62
|
+
const mod = await import(pathToFileURL(resolved).href);
|
|
63
|
+
return "default" in mod && mod.default ? mod.default : mod;
|
|
32
64
|
} catch {
|
|
33
|
-
return
|
|
65
|
+
return null;
|
|
34
66
|
}
|
|
35
67
|
}
|
|
68
|
+
async function resolveModuleEntry(entryPath) {
|
|
69
|
+
for (const candidate of entryCandidates(entryPath)) try {
|
|
70
|
+
await stat(candidate);
|
|
71
|
+
return candidate;
|
|
72
|
+
} catch {}
|
|
73
|
+
return entryPath;
|
|
74
|
+
}
|
|
75
|
+
function entryCandidates(entryPath) {
|
|
76
|
+
const candidates = [entryPath];
|
|
77
|
+
if (entryPath.endsWith(".js")) candidates.push(`${entryPath.slice(0, -3)}.ts`);
|
|
78
|
+
return candidates;
|
|
79
|
+
}
|
|
80
|
+
function extensionIds(value) {
|
|
81
|
+
return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
|
|
82
|
+
}
|
|
83
|
+
function areExtensionsDisabled(config) {
|
|
84
|
+
return config?.extensions?.enabled === false;
|
|
85
|
+
}
|
|
86
|
+
function extensionConfig(config, extensionId) {
|
|
87
|
+
const raw = config?.extensions?.[extensionId];
|
|
88
|
+
return raw && typeof raw === "object" && !Array.isArray(raw) ? raw : void 0;
|
|
89
|
+
}
|
|
90
|
+
function normalizeMemoryProviderManifest(fallbackId, manifest) {
|
|
91
|
+
if (!manifest || manifest.type !== "memory-provider") return void 0;
|
|
92
|
+
const id = typeof manifest.id === "string" && manifest.id.trim() ? manifest.id.trim() : fallbackId;
|
|
93
|
+
return {
|
|
94
|
+
type: "memory-provider",
|
|
95
|
+
id,
|
|
96
|
+
displayName: typeof manifest.displayName === "string" && manifest.displayName.trim() ? manifest.displayName.trim() : id,
|
|
97
|
+
...manifest.entry ? { entry: manifest.entry } : {},
|
|
98
|
+
capabilities: manifest.capabilities ?? {},
|
|
99
|
+
...manifest.configSchema ? { configSchema: manifest.configSchema } : {}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
36
102
|
//#endregion
|
|
37
|
-
export { discoverMemoryPlugins };
|
|
103
|
+
export { discoverMemoryPlugins, loadMemoryPluginProviders };
|
|
38
104
|
|
|
39
105
|
//# sourceMappingURL=plugin-discovery.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-discovery.js","names":[],"sources":["../../../../src/agent/memory/plugin-discovery.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"plugin-discovery.js","names":[],"sources":["../../../../src/agent/memory/plugin-discovery.ts"],"sourcesContent":["import { stat } from 'node:fs/promises';\nimport { isAbsolute, join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport type { Config } from '../../config/schema.js';\nimport { discoverExtensionsFromDisk } from '../../extensions/discover-extensions.js';\nimport type { DiscoveredExtension } from '../../extensions/types/loader.js';\nimport type { MemoryProvider } from './provider.js';\nimport type { MemoryProviderManifest } from './types.js';\n\nexport interface MemoryPluginMetadata {\n name: string;\n description: string;\n available: boolean;\n manifest?: MemoryProviderManifest;\n}\n\nexport interface MemoryPluginProviderContext {\n config?: Config;\n manifest?: MemoryProviderManifest;\n extension?: {\n id: string;\n path: string;\n source: DiscoveredExtension['source'];\n config?: Record<string, unknown>;\n };\n}\n\ntype MemoryPluginModule = {\n isAvailable?: () => boolean;\n description?: string;\n manifest?: MemoryProviderManifest;\n createMemoryProvider?: (\n context: MemoryPluginProviderContext,\n ) => MemoryProvider | Promise<MemoryProvider>;\n};\n\nexport async function discoverMemoryPlugins(config?: Config): Promise<MemoryPluginMetadata[]> {\n const plugins: MemoryPluginMetadata[] = [];\n for (const extension of discoverMemoryProviderExtensions(config)) {\n for (const providerId of extension.manifest.contracts?.memoryProviders ?? []) {\n plugins.push({\n name: providerId,\n description: extension.manifest.description ?? `${extension.manifest.name} memory provider`,\n available: true,\n manifest: {\n type: 'memory-provider',\n id: providerId,\n displayName: extension.manifest.name || providerId,\n entry: extension.manifest.main,\n capabilities: {},\n },\n });\n }\n }\n return plugins.sort((a, b) => a.name.localeCompare(b.name));\n}\n\nexport async function loadMemoryPluginProviders(params: {\n config?: Config;\n} = {}): Promise<MemoryProvider[]> {\n const providers: MemoryProvider[] = [];\n for (const extension of discoverMemoryProviderExtensions(params.config)) {\n const module = await loadMemoryProviderModule(extension);\n if (!module?.createMemoryProvider) continue;\n if (module.isAvailable?.() === false) continue;\n\n const declaredProviderIds = extension.manifest.contracts?.memoryProviders ?? [];\n const fallbackId = declaredProviderIds[0] ?? extension.id;\n const manifest = normalizeMemoryProviderManifest(fallbackId, module.manifest) ?? {\n type: 'memory-provider',\n id: fallbackId,\n displayName: extension.manifest.name || fallbackId,\n entry: extension.manifest.main,\n capabilities: {},\n };\n\n const provider = await module.createMemoryProvider({\n config: params.config,\n manifest,\n extension: {\n id: extension.id,\n path: extension.path,\n source: extension.source,\n config: extensionConfig(params.config, extension.id),\n },\n });\n providers.push(provider);\n }\n return providers;\n}\n\nfunction discoverMemoryProviderExtensions(config?: Config): DiscoveredExtension[] {\n if (areExtensionsDisabled(config)) return [];\n const disabled = new Set(extensionIds(config?.extensions?.disabled));\n const enabled = config?.extensions?.enabled;\n const enabledSet = Array.isArray(enabled) ? new Set(extensionIds(enabled)) : null;\n return discoverExtensionsFromDisk({}, config as unknown as Record<string, unknown> | undefined)\n .filter((extension) => (extension.manifest.contracts?.memoryProviders?.length ?? 0) > 0)\n .filter((extension) => !disabled.has(extension.id))\n .filter((extension) => extension.manifest.enabledByDefault === true || enabledSet?.has(extension.id));\n}\n\nasync function loadMemoryProviderModule(extension: DiscoveredExtension): Promise<MemoryPluginModule | null> {\n if (!extension.manifest.main) return null;\n const entryPath = isAbsolute(extension.manifest.main)\n ? extension.manifest.main\n : join(extension.path, extension.manifest.main);\n const resolved = await resolveModuleEntry(entryPath);\n try {\n const mod = (await import(pathToFileURL(resolved).href)) as MemoryPluginModule | { default?: MemoryPluginModule };\n return 'default' in mod && mod.default ? mod.default : (mod as MemoryPluginModule);\n } catch {\n return null;\n }\n}\n\nasync function resolveModuleEntry(entryPath: string): Promise<string> {\n for (const candidate of entryCandidates(entryPath)) {\n try {\n await stat(candidate);\n return candidate;\n } catch {\n // Try the next candidate; source tests use .ts, builds use .js.\n }\n }\n return entryPath;\n}\n\nfunction entryCandidates(entryPath: string): string[] {\n const candidates = [entryPath];\n if (entryPath.endsWith('.js')) {\n candidates.push(`${entryPath.slice(0, -3)}.ts`);\n }\n return candidates;\n}\n\nfunction extensionIds(value: unknown): string[] {\n return Array.isArray(value) ? value.filter((item): item is string => typeof item === 'string') : [];\n}\n\nfunction areExtensionsDisabled(config?: Config): boolean {\n return config?.extensions?.enabled === false;\n}\n\nfunction extensionConfig(config: Config | undefined, extensionId: string): Record<string, unknown> | undefined {\n const raw = config?.extensions?.[extensionId as keyof Config['extensions']];\n return raw && typeof raw === 'object' && !Array.isArray(raw) ? (raw as Record<string, unknown>) : undefined;\n}\n\nfunction normalizeMemoryProviderManifest(\n fallbackId: string,\n manifest: MemoryProviderManifest | undefined,\n): MemoryProviderManifest | undefined {\n if (!manifest || manifest.type !== 'memory-provider') return undefined;\n const id = typeof manifest.id === 'string' && manifest.id.trim() ? manifest.id.trim() : fallbackId;\n const displayName =\n typeof manifest.displayName === 'string' && manifest.displayName.trim()\n ? manifest.displayName.trim()\n : id;\n return {\n type: 'memory-provider',\n id,\n displayName,\n ...(manifest.entry ? { entry: manifest.entry } : {}),\n capabilities: manifest.capabilities ?? {},\n ...(manifest.configSchema ? { configSchema: manifest.configSchema } : {}),\n };\n}\n"],"mappings":";;;;;0BAKqF;AAgCrF,eAAsB,sBAAsB,QAAkD;CAC5F,MAAM,UAAkC,EAAE;AAC1C,MAAK,MAAM,aAAa,iCAAiC,OAAO,CAC9D,MAAK,MAAM,cAAc,UAAU,SAAS,WAAW,mBAAmB,EAAE,CAC1E,SAAQ,KAAK;EACX,MAAM;EACN,aAAa,UAAU,SAAS,eAAe,GAAG,UAAU,SAAS,KAAK;EAC1E,WAAW;EACX,UAAU;GACR,MAAM;GACN,IAAI;GACJ,aAAa,UAAU,SAAS,QAAQ;GACxC,OAAO,UAAU,SAAS;GAC1B,cAAc,EAAE;GACjB;EACF,CAAC;AAGN,QAAO,QAAQ,MAAM,GAAG,MAAM,EAAE,KAAK,cAAc,EAAE,KAAK,CAAC;;AAG7D,eAAsB,0BAA0B,SAE5C,EAAE,EAA6B;CACjC,MAAM,YAA8B,EAAE;AACtC,MAAK,MAAM,aAAa,iCAAiC,OAAO,OAAO,EAAE;EACvE,MAAM,SAAS,MAAM,yBAAyB,UAAU;AACxD,MAAI,CAAC,QAAQ,qBAAsB;AACnC,MAAI,OAAO,eAAe,KAAK,MAAO;EAGtC,MAAM,cADsB,UAAU,SAAS,WAAW,mBAAmB,EAAE,EACxC,MAAM,UAAU;EACvD,MAAM,WAAW,gCAAgC,YAAY,OAAO,SAAS,IAAI;GAC/E,MAAM;GACN,IAAI;GACJ,aAAa,UAAU,SAAS,QAAQ;GACxC,OAAO,UAAU,SAAS;GAC1B,cAAc,EAAE;GACjB;EAED,MAAM,WAAW,MAAM,OAAO,qBAAqB;GACjD,QAAQ,OAAO;GACf;GACA,WAAW;IACT,IAAI,UAAU;IACd,MAAM,UAAU;IAChB,QAAQ,UAAU;IAClB,QAAQ,gBAAgB,OAAO,QAAQ,UAAU,GAAG;IACrD;GACF,CAAC;AACF,YAAU,KAAK,SAAS;;AAE1B,QAAO;;AAGT,SAAS,iCAAiC,QAAwC;AAChF,KAAI,sBAAsB,OAAO,CAAE,QAAO,EAAE;CAC5C,MAAM,WAAW,IAAI,IAAI,aAAa,QAAQ,YAAY,SAAS,CAAC;CACpE,MAAM,UAAU,QAAQ,YAAY;CACpC,MAAM,aAAa,MAAM,QAAQ,QAAQ,GAAG,IAAI,IAAI,aAAa,QAAQ,CAAC,GAAG;AAC7E,QAAO,2BAA2B,EAAE,EAAE,OAAyD,CAC5F,QAAQ,eAAe,UAAU,SAAS,WAAW,iBAAiB,UAAU,KAAK,EAAE,CACvF,QAAQ,cAAc,CAAC,SAAS,IAAI,UAAU,GAAG,CAAC,CAClD,QAAQ,cAAc,UAAU,SAAS,qBAAqB,QAAQ,YAAY,IAAI,UAAU,GAAG,CAAC;;AAGzG,eAAe,yBAAyB,WAAoE;AAC1G,KAAI,CAAC,UAAU,SAAS,KAAM,QAAO;CAIrC,MAAM,WAAW,MAAM,mBAHL,WAAW,UAAU,SAAS,KAAK,GACjD,UAAU,SAAS,OACnB,KAAK,UAAU,MAAM,UAAU,SAAS,KAAK,CACG;AACpD,KAAI;EACF,MAAM,MAAO,MAAM,OAAO,cAAc,SAAS,CAAC;AAClD,SAAO,aAAa,OAAO,IAAI,UAAU,IAAI,UAAW;SAClD;AACN,SAAO;;;AAIX,eAAe,mBAAmB,WAAoC;AACpE,MAAK,MAAM,aAAa,gBAAgB,UAAU,CAChD,KAAI;AACF,QAAM,KAAK,UAAU;AACrB,SAAO;SACD;AAIV,QAAO;;AAGT,SAAS,gBAAgB,WAA6B;CACpD,MAAM,aAAa,CAAC,UAAU;AAC9B,KAAI,UAAU,SAAS,MAAM,CAC3B,YAAW,KAAK,GAAG,UAAU,MAAM,GAAG,GAAG,CAAC,KAAK;AAEjD,QAAO;;AAGT,SAAS,aAAa,OAA0B;AAC9C,QAAO,MAAM,QAAQ,MAAM,GAAG,MAAM,QAAQ,SAAyB,OAAO,SAAS,SAAS,GAAG,EAAE;;AAGrG,SAAS,sBAAsB,QAA0B;AACvD,QAAO,QAAQ,YAAY,YAAY;;AAGzC,SAAS,gBAAgB,QAA4B,aAA0D;CAC7G,MAAM,MAAM,QAAQ,aAAa;AACjC,QAAO,OAAO,OAAO,QAAQ,YAAY,CAAC,MAAM,QAAQ,IAAI,GAAI,MAAkC,KAAA;;AAGpG,SAAS,gCACP,YACA,UACoC;AACpC,KAAI,CAAC,YAAY,SAAS,SAAS,kBAAmB,QAAO,KAAA;CAC7D,MAAM,KAAK,OAAO,SAAS,OAAO,YAAY,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG;AAKxF,QAAO;EACL,MAAM;EACN;EACA,aANA,OAAO,SAAS,gBAAgB,YAAY,SAAS,YAAY,MAAM,GACnE,SAAS,YAAY,MAAM,GAC3B;EAKJ,GAAI,SAAS,QAAQ,EAAE,OAAO,SAAS,OAAO,GAAG,EAAE;EACnD,cAAc,SAAS,gBAAgB,EAAE;EACzC,GAAI,SAAS,eAAe,EAAE,cAAc,SAAS,cAAc,GAAG,EAAE;EACzE"}
|
|
@@ -1 +1 @@
|
|
|
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 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;
|
|
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"}
|
|
@@ -1,35 +1,40 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pluggable memory provider. Builtin curated files use `BuiltinMemoryStore` + `curated_memory`;
|
|
3
|
-
* external providers add instructions, prefetch/sync, and optional tools.
|
|
4
|
-
*/
|
|
5
1
|
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
|
+
import type { MemoryCapabilities, MemoryDeleteRequest, MemoryListRequest, MemoryProviderManifest, MemoryReadRequest, MemoryReadResult, MemorySearchRequest, MemorySearchResult, MemorySyncEvent, MemoryUpdateRequest, MemoryWriteRequest, MemoryWriteResult, MemoryRecord } from './types.js';
|
|
6
3
|
export interface MemoryProviderInitOptions {
|
|
7
4
|
workspace?: string;
|
|
8
5
|
agentWorkspace?: string;
|
|
9
6
|
sessionId?: string;
|
|
7
|
+
config?: Record<string, unknown>;
|
|
10
8
|
[key: string]: unknown;
|
|
11
9
|
}
|
|
12
10
|
export interface MemoryProvider {
|
|
13
|
-
readonly
|
|
11
|
+
readonly id: string;
|
|
12
|
+
readonly displayName?: string;
|
|
13
|
+
readonly manifest?: MemoryProviderManifest;
|
|
14
|
+
readonly capabilities: MemoryCapabilities;
|
|
14
15
|
isAvailable(): boolean;
|
|
15
16
|
initialize(sessionId: string, options?: MemoryProviderInitOptions): Promise<void> | void;
|
|
16
|
-
/** Static text merged into system prompt
|
|
17
|
-
systemPromptBlock(): string;
|
|
18
|
-
prefetch(query: string, options?: {
|
|
17
|
+
/** Static text merged into the system prompt. */
|
|
18
|
+
systemPromptBlock?(): string;
|
|
19
|
+
prefetch?(query: string, options?: {
|
|
19
20
|
sessionId?: string;
|
|
20
21
|
}): Promise<string>;
|
|
21
|
-
queuePrefetch(query: string, options?: {
|
|
22
|
+
queuePrefetch?(query: string, options?: {
|
|
22
23
|
sessionId?: string;
|
|
23
24
|
}): void;
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
sync?(event: MemorySyncEvent): Promise<void> | void;
|
|
26
|
+
search?(request: MemorySearchRequest): Promise<MemorySearchResult[]>;
|
|
27
|
+
read?(request: MemoryReadRequest): Promise<MemoryReadResult | null>;
|
|
28
|
+
get?(id: string): Promise<MemoryRecord | null>;
|
|
29
|
+
list?(request: MemoryListRequest): Promise<MemoryRecord[]>;
|
|
30
|
+
write?(request: MemoryWriteRequest): Promise<MemoryWriteResult>;
|
|
31
|
+
update?(request: MemoryUpdateRequest): Promise<MemoryWriteResult>;
|
|
32
|
+
delete?(request: MemoryDeleteRequest): Promise<MemoryWriteResult>;
|
|
33
|
+
getToolSchemas?(): AgentTool[];
|
|
28
34
|
/** JSON string result for tool calls routed by name (when not using inline AgentTool.execute only). */
|
|
29
|
-
handleToolCall(toolName: string, args: Record<string, unknown>): Promise<string>;
|
|
35
|
+
handleToolCall?(toolName: string, args: Record<string, unknown>): Promise<string>;
|
|
30
36
|
shutdown(): Promise<void> | void;
|
|
31
37
|
onTurnStart?(turnNumber: number, message: string, metadata?: Record<string, unknown>): void;
|
|
32
38
|
onSessionEnd?(messages: unknown[]): void;
|
|
33
39
|
onPreCompress?(messages: unknown[]): string;
|
|
34
|
-
onMemoryWrite?(action: 'add' | 'replace' | 'remove', target: 'memory' | 'user', content: string): void;
|
|
35
40
|
}
|
|
@@ -3,14 +3,29 @@ import type { MemoryProvider, MemoryProviderInitOptions } from './provider.js';
|
|
|
3
3
|
* Placeholder external provider — enables wiring tests without cloud deps.
|
|
4
4
|
*/
|
|
5
5
|
export declare class StubMemoryProvider implements MemoryProvider {
|
|
6
|
-
readonly
|
|
6
|
+
readonly id = "stub";
|
|
7
|
+
readonly displayName = "Stub Memory Provider";
|
|
8
|
+
readonly capabilities: {
|
|
9
|
+
search: boolean;
|
|
10
|
+
read: boolean;
|
|
11
|
+
write: boolean;
|
|
12
|
+
update: boolean;
|
|
13
|
+
delete: boolean;
|
|
14
|
+
keywordSearch: boolean;
|
|
15
|
+
semanticSearch: boolean;
|
|
16
|
+
hybridSearch: boolean;
|
|
17
|
+
citations: boolean;
|
|
18
|
+
sync: boolean;
|
|
19
|
+
local: boolean;
|
|
20
|
+
};
|
|
7
21
|
isAvailable(): boolean;
|
|
8
22
|
initialize(_sessionId: string, _options?: MemoryProviderInitOptions): Promise<void>;
|
|
9
23
|
systemPromptBlock(): string;
|
|
10
24
|
prefetch(query: string): Promise<string>;
|
|
11
25
|
queuePrefetch(): void;
|
|
12
|
-
|
|
26
|
+
sync(): void;
|
|
13
27
|
getToolSchemas(): any[];
|
|
14
28
|
handleToolCall(toolName: string): Promise<string>;
|
|
29
|
+
search(): Promise<[]>;
|
|
15
30
|
shutdown(): Promise<void>;
|
|
16
31
|
}
|
|
@@ -3,13 +3,27 @@
|
|
|
3
3
|
* Placeholder external provider — enables wiring tests without cloud deps.
|
|
4
4
|
*/
|
|
5
5
|
var StubMemoryProvider = class {
|
|
6
|
-
|
|
6
|
+
id = "stub";
|
|
7
|
+
displayName = "Stub Memory Provider";
|
|
8
|
+
capabilities = {
|
|
9
|
+
search: true,
|
|
10
|
+
read: false,
|
|
11
|
+
write: false,
|
|
12
|
+
update: false,
|
|
13
|
+
delete: false,
|
|
14
|
+
keywordSearch: false,
|
|
15
|
+
semanticSearch: false,
|
|
16
|
+
hybridSearch: false,
|
|
17
|
+
citations: false,
|
|
18
|
+
sync: true,
|
|
19
|
+
local: false
|
|
20
|
+
};
|
|
7
21
|
isAvailable() {
|
|
8
22
|
return true;
|
|
9
23
|
}
|
|
10
24
|
async initialize(_sessionId, _options) {}
|
|
11
25
|
systemPromptBlock() {
|
|
12
|
-
return "External memory provider: stub (wiring only; no cloud backend).
|
|
26
|
+
return "External memory provider: stub (wiring only; no cloud backend).";
|
|
13
27
|
}
|
|
14
28
|
async prefetch(query) {
|
|
15
29
|
const q = query.trim();
|
|
@@ -17,13 +31,16 @@ var StubMemoryProvider = class {
|
|
|
17
31
|
return `[stub prefetch] query length=${q.length}`;
|
|
18
32
|
}
|
|
19
33
|
queuePrefetch() {}
|
|
20
|
-
|
|
34
|
+
sync() {}
|
|
21
35
|
getToolSchemas() {
|
|
22
36
|
return [];
|
|
23
37
|
}
|
|
24
38
|
async handleToolCall(toolName) {
|
|
25
39
|
return JSON.stringify({ error: `stub provider has no tools (${toolName})` });
|
|
26
40
|
}
|
|
41
|
+
async search() {
|
|
42
|
+
return [];
|
|
43
|
+
}
|
|
27
44
|
async shutdown() {}
|
|
28
45
|
};
|
|
29
46
|
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stub-memory-provider.js","names":[],"sources":["../../../../src/agent/memory/stub-memory-provider.ts"],"sourcesContent":["import type { MemoryProvider, MemoryProviderInitOptions } from './provider.js';\n\n/**\n * Placeholder external provider — enables wiring tests without cloud deps.\n */\nexport class StubMemoryProvider implements MemoryProvider {\n readonly
|
|
1
|
+
{"version":3,"file":"stub-memory-provider.js","names":[],"sources":["../../../../src/agent/memory/stub-memory-provider.ts"],"sourcesContent":["import type { MemoryProvider, MemoryProviderInitOptions } from './provider.js';\n\n/**\n * Placeholder external provider — enables wiring tests without cloud deps.\n */\nexport class StubMemoryProvider implements MemoryProvider {\n readonly id = 'stub';\n readonly displayName = 'Stub Memory Provider';\n readonly capabilities = {\n search: true,\n read: false,\n write: false,\n update: false,\n delete: false,\n keywordSearch: false,\n semanticSearch: false,\n hybridSearch: false,\n citations: false,\n sync: true,\n local: false,\n };\n\n isAvailable(): boolean {\n return true;\n }\n\n async initialize(_sessionId: string, _options?: MemoryProviderInitOptions): Promise<void> {}\n\n systemPromptBlock(): string {\n return 'External memory provider: stub (wiring only; no cloud backend).';\n }\n\n async prefetch(query: string): Promise<string> {\n const q = query.trim();\n if (!q) {\n return '';\n }\n return `[stub prefetch] query length=${q.length}`;\n }\n\n queuePrefetch(): void {}\n\n sync(): void {}\n\n getToolSchemas() {\n return [];\n }\n\n async handleToolCall(toolName: string): Promise<string> {\n return JSON.stringify({ error: `stub provider has no tools (${toolName})` });\n }\n\n async search(): Promise<[]> {\n return [];\n }\n\n async shutdown(): Promise<void> {}\n}\n"],"mappings":";;;;AAKA,IAAa,qBAAb,MAA0D;CACxD,KAAc;CACd,cAAuB;CACvB,eAAwB;EACtB,QAAQ;EACR,MAAM;EACN,OAAO;EACP,QAAQ;EACR,QAAQ;EACR,eAAe;EACf,gBAAgB;EAChB,cAAc;EACd,WAAW;EACX,MAAM;EACN,OAAO;EACR;CAED,cAAuB;AACrB,SAAO;;CAGT,MAAM,WAAW,YAAoB,UAAqD;CAE1F,oBAA4B;AAC1B,SAAO;;CAGT,MAAM,SAAS,OAAgC;EAC7C,MAAM,IAAI,MAAM,MAAM;AACtB,MAAI,CAAC,EACH,QAAO;AAET,SAAO,gCAAgC,EAAE;;CAG3C,gBAAsB;CAEtB,OAAa;CAEb,iBAAiB;AACf,SAAO,EAAE;;CAGX,MAAM,eAAe,UAAmC;AACtD,SAAO,KAAK,UAAU,EAAE,OAAO,+BAA+B,SAAS,IAAI,CAAC;;CAG9E,MAAM,SAAsB;AAC1B,SAAO,EAAE;;CAGX,MAAM,WAA0B"}
|
|
@@ -1,15 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Built-in curated memory
|
|
2
|
+
* Built-in curated memory:
|
|
3
|
+
* - agent notes: `~/.xopc/agents/<id>/memories/MEMORY.md`
|
|
4
|
+
* - user memory: `~/.xopc/user/MEMORY.md`
|
|
3
5
|
*/
|
|
4
6
|
export interface MemoryStoreConfig {
|
|
5
7
|
workspaceDir: string;
|
|
6
8
|
/** Absolute path to `…/agents/<id>/memories/` (not under markdown workspace). */
|
|
7
9
|
memoriesDir: string;
|
|
10
|
+
/** Absolute path to global user memory (`~/.xopc/user/MEMORY.md`). */
|
|
11
|
+
userMemoryPath: string;
|
|
8
12
|
/** Max chars for MEMORY.md entries (excluding delimiter overhead in limit check uses joined body). */
|
|
9
13
|
memoryCharLimit: number;
|
|
10
|
-
/** Max chars for
|
|
14
|
+
/** Max chars for global user memory entries. */
|
|
11
15
|
userCharLimit: number;
|
|
12
|
-
/** When false,
|
|
16
|
+
/** When false, global user memory is not loaded into the snapshot or shown in the system prompt. */
|
|
13
17
|
userProfileEnabled?: boolean;
|
|
14
18
|
}
|
|
15
19
|
/** Frozen at session start; not updated when tools mutate disk mid-session. */
|
|
@@ -17,3 +21,158 @@ export interface MemorySnapshot {
|
|
|
17
21
|
memory: string;
|
|
18
22
|
user: string;
|
|
19
23
|
}
|
|
24
|
+
export type MemoryKind = 'user_profile' | 'agent_note' | 'workspace_fact' | 'daily_note' | 'session_summary' | 'derived_insight' | 'task_lesson' | 'tool_preference' | 'long_term_goal';
|
|
25
|
+
export type MemoryStatus = 'candidate' | 'active' | 'needs_review' | 'stale' | 'archived' | 'rejected';
|
|
26
|
+
export type MemorySensitivity = 'normal' | 'personal' | 'secret' | 'regulated';
|
|
27
|
+
export interface MemoryEvidence {
|
|
28
|
+
sessionKey?: string;
|
|
29
|
+
turnId?: string;
|
|
30
|
+
toolCallId?: string;
|
|
31
|
+
sourceText?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface MemoryScope {
|
|
34
|
+
agentId: string;
|
|
35
|
+
workspaceId?: string;
|
|
36
|
+
sessionKey?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface MemoryCitation {
|
|
39
|
+
providerId: string;
|
|
40
|
+
recordId: string;
|
|
41
|
+
title?: string;
|
|
42
|
+
uri?: string;
|
|
43
|
+
path?: string;
|
|
44
|
+
lineStart?: number;
|
|
45
|
+
lineEnd?: number;
|
|
46
|
+
createdAt?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface MemoryRecord {
|
|
49
|
+
id: string;
|
|
50
|
+
kind: MemoryKind;
|
|
51
|
+
status?: MemoryStatus;
|
|
52
|
+
scope: MemoryScope;
|
|
53
|
+
content: string;
|
|
54
|
+
source: {
|
|
55
|
+
path?: string;
|
|
56
|
+
lineStart?: number;
|
|
57
|
+
lineEnd?: number;
|
|
58
|
+
sessionEntryId?: string;
|
|
59
|
+
provider?: string;
|
|
60
|
+
};
|
|
61
|
+
confidence?: number;
|
|
62
|
+
sensitivity?: MemorySensitivity;
|
|
63
|
+
evidence?: MemoryEvidence[];
|
|
64
|
+
reviewAfter?: string;
|
|
65
|
+
expiresAt?: string;
|
|
66
|
+
createdAt: string;
|
|
67
|
+
updatedAt: string;
|
|
68
|
+
tags?: string[];
|
|
69
|
+
}
|
|
70
|
+
export interface MemorySearchRequest {
|
|
71
|
+
query: string;
|
|
72
|
+
scope?: Partial<MemoryScope>;
|
|
73
|
+
kinds?: MemoryKind[];
|
|
74
|
+
maxResults?: number;
|
|
75
|
+
minScore?: number;
|
|
76
|
+
}
|
|
77
|
+
export interface MemorySearchResult {
|
|
78
|
+
record: MemoryRecord;
|
|
79
|
+
score: number;
|
|
80
|
+
snippet: string;
|
|
81
|
+
citation: MemoryCitation;
|
|
82
|
+
}
|
|
83
|
+
export interface MemoryReadRequest {
|
|
84
|
+
id?: string;
|
|
85
|
+
path?: string;
|
|
86
|
+
from?: number;
|
|
87
|
+
lines?: number;
|
|
88
|
+
scope?: Partial<MemoryScope>;
|
|
89
|
+
}
|
|
90
|
+
export interface MemoryReadResult {
|
|
91
|
+
record: MemoryRecord;
|
|
92
|
+
lineNumbers?: {
|
|
93
|
+
start: number;
|
|
94
|
+
end: number;
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
export interface MemoryListRequest {
|
|
98
|
+
kind?: MemoryKind;
|
|
99
|
+
target?: 'memory' | 'user';
|
|
100
|
+
scope?: Partial<MemoryScope>;
|
|
101
|
+
}
|
|
102
|
+
export interface MemoryWriteRequest {
|
|
103
|
+
kind: MemoryKind;
|
|
104
|
+
content: string;
|
|
105
|
+
scope?: Partial<MemoryScope>;
|
|
106
|
+
target?: 'memory' | 'user';
|
|
107
|
+
tags?: string[];
|
|
108
|
+
source?: MemoryRecord['source'];
|
|
109
|
+
confidence?: number;
|
|
110
|
+
status?: MemoryStatus;
|
|
111
|
+
sensitivity?: MemorySensitivity;
|
|
112
|
+
evidence?: MemoryEvidence[];
|
|
113
|
+
reviewAfter?: string;
|
|
114
|
+
expiresAt?: string;
|
|
115
|
+
approved?: boolean;
|
|
116
|
+
}
|
|
117
|
+
export interface MemoryUpdateRequest {
|
|
118
|
+
id?: string;
|
|
119
|
+
matchText?: string;
|
|
120
|
+
content: string;
|
|
121
|
+
scope?: Partial<MemoryScope>;
|
|
122
|
+
target?: 'memory' | 'user';
|
|
123
|
+
approved?: boolean;
|
|
124
|
+
}
|
|
125
|
+
export interface MemoryDeleteRequest {
|
|
126
|
+
id?: string;
|
|
127
|
+
matchText?: string;
|
|
128
|
+
scope?: Partial<MemoryScope>;
|
|
129
|
+
target?: 'memory' | 'user';
|
|
130
|
+
}
|
|
131
|
+
export interface MemoryWriteResult {
|
|
132
|
+
success: boolean;
|
|
133
|
+
message?: string;
|
|
134
|
+
error?: string;
|
|
135
|
+
record?: MemoryRecord;
|
|
136
|
+
}
|
|
137
|
+
export interface MemoryCapabilities {
|
|
138
|
+
search: boolean;
|
|
139
|
+
read: boolean;
|
|
140
|
+
write: boolean;
|
|
141
|
+
update: boolean;
|
|
142
|
+
delete: boolean;
|
|
143
|
+
keywordSearch?: boolean;
|
|
144
|
+
semanticSearch?: boolean;
|
|
145
|
+
hybridSearch?: boolean;
|
|
146
|
+
citations?: boolean;
|
|
147
|
+
sync?: boolean;
|
|
148
|
+
local?: boolean;
|
|
149
|
+
}
|
|
150
|
+
export interface MemoryProviderManifest {
|
|
151
|
+
type: 'memory-provider';
|
|
152
|
+
id: string;
|
|
153
|
+
displayName: string;
|
|
154
|
+
entry?: string;
|
|
155
|
+
capabilities: Partial<MemoryCapabilities>;
|
|
156
|
+
configSchema?: string;
|
|
157
|
+
}
|
|
158
|
+
export type MemorySyncEvent = {
|
|
159
|
+
type: 'turn';
|
|
160
|
+
userContent: string;
|
|
161
|
+
assistantContent: string;
|
|
162
|
+
sessionId?: string;
|
|
163
|
+
} | {
|
|
164
|
+
type: 'write';
|
|
165
|
+
action: 'add' | 'replace' | 'remove';
|
|
166
|
+
target?: 'memory' | 'user';
|
|
167
|
+
content: string;
|
|
168
|
+
} | {
|
|
169
|
+
type: 'signal';
|
|
170
|
+
signal: MemorySignal;
|
|
171
|
+
};
|
|
172
|
+
export interface MemorySignal {
|
|
173
|
+
source: 'search_recall' | 'session_summary' | 'explicit_remember' | 'background_review' | 'dreaming';
|
|
174
|
+
recordId?: string;
|
|
175
|
+
score?: number;
|
|
176
|
+
content?: string;
|
|
177
|
+
metadata?: Record<string, unknown>;
|
|
178
|
+
}
|