@xopcai/xopc 0.0.149 → 0.0.151
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 +10 -0
- package/README.zh-CN.md +10 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
- package/dist/extensions/demo-memory/src/index.js +0 -2
- package/dist/extensions/fal/src/image-generation-provider.js +0 -2
- package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
- package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
- package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
- package/dist/extensions/feishu/src/auth/pairing.js +0 -2
- package/dist/extensions/feishu/src/auth/paths.js +0 -2
- package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
- package/dist/extensions/feishu/src/format.js +0 -2
- package/dist/extensions/feishu/src/index.js +0 -2
- package/dist/extensions/feishu/src/outbound/actions.js +0 -2
- package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
- package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
- package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/feishu/src/plugin.js +0 -2
- package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
- package/dist/extensions/feishu/src/state/accounts.js +0 -2
- package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
- package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
- package/dist/extensions/feishu/src/status/doctor.js +0 -2
- package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
- package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
- package/dist/extensions/feishu/src/tools/tools.js +0 -2
- package/dist/extensions/feishu/src/transport/client/client.js +2 -4
- package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
- package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
- package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
- package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
- package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
- package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
- package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
- package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
- package/dist/extensions/feishu/src/workflow-progress.js +0 -2
- package/dist/extensions/google/src/image-generation-provider.js +0 -2
- package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
- package/dist/extensions/openai/src/image-generation-provider.js +0 -2
- package/dist/extensions/telegram/src/access-control.js +0 -2
- package/dist/extensions/telegram/src/account-manager.js +0 -2
- package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
- package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
- package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
- package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
- package/dist/extensions/telegram/src/adapters/index.js +0 -2
- package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
- package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
- package/dist/extensions/telegram/src/api-root.js +0 -2
- package/dist/extensions/telegram/src/approval-delivery.js +0 -2
- package/dist/extensions/telegram/src/approval-store.js +0 -2
- package/dist/extensions/telegram/src/caption.js +0 -2
- package/dist/extensions/telegram/src/command-handler.js +0 -2
- package/dist/extensions/telegram/src/config-schema.js +0 -2
- package/dist/extensions/telegram/src/conversation-id.js +0 -2
- package/dist/extensions/telegram/src/dedupe.js +0 -2
- package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
- package/dist/extensions/telegram/src/doctor.js +0 -2
- package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
- package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
- package/dist/extensions/telegram/src/draft-stream.js +0 -2
- package/dist/extensions/telegram/src/errors.js +0 -2
- package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
- package/dist/extensions/telegram/src/exec-approvals.js +0 -2
- package/dist/extensions/telegram/src/focus-handler.js +0 -2
- package/dist/extensions/telegram/src/format.js +0 -2
- package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
- package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
- package/dist/extensions/telegram/src/inbound-processor.js +0 -2
- package/dist/extensions/telegram/src/index.js +0 -2
- package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
- package/dist/extensions/telegram/src/network-errors.js +0 -2
- package/dist/extensions/telegram/src/outbound-sender.js +0 -2
- package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
- package/dist/extensions/telegram/src/plugin.js +0 -2
- package/dist/extensions/telegram/src/polling-session.js +0 -2
- package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
- package/dist/extensions/telegram/src/reactions.js +0 -2
- package/dist/extensions/telegram/src/reply-params.js +0 -2
- package/dist/extensions/telegram/src/routing-integration.js +0 -2
- package/dist/extensions/telegram/src/send-options.js +0 -2
- package/dist/extensions/telegram/src/sent-cache.js +0 -2
- package/dist/extensions/telegram/src/startup-errors.js +0 -2
- package/dist/extensions/telegram/src/telegram-actions.js +0 -2
- package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
- package/dist/extensions/telegram/src/thread-bindings.js +0 -2
- package/dist/extensions/telegram/src/timeout-abort.js +0 -2
- package/dist/extensions/telegram/src/token-resolver.js +0 -2
- package/dist/extensions/telegram/src/update-offset-store.js +0 -2
- package/dist/extensions/telegram/src/workflow-progress.js +0 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/weixin/src/api/api.js +0 -2
- package/dist/extensions/weixin/src/api/config-cache.js +0 -2
- package/dist/extensions/weixin/src/api/session-guard.js +0 -2
- package/dist/extensions/weixin/src/api/types.js +0 -2
- package/dist/extensions/weixin/src/auth/accounts.js +0 -2
- package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
- package/dist/extensions/weixin/src/auth/pairing.js +0 -2
- package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
- package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
- package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
- package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
- package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
- package/dist/extensions/weixin/src/cdn/upload.js +0 -2
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
- package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
- package/dist/extensions/weixin/src/config-schema.js +0 -2
- package/dist/extensions/weixin/src/config-surface.js +0 -2
- package/dist/extensions/weixin/src/delivery-to.js +0 -2
- package/dist/extensions/weixin/src/index.js +0 -2
- package/dist/extensions/weixin/src/media/data-url.js +0 -2
- package/dist/extensions/weixin/src/media/media-download.js +0 -2
- package/dist/extensions/weixin/src/media/mime.js +0 -2
- package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
- package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
- package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
- package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
- package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
- package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
- package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
- package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
- package/dist/extensions/weixin/src/messaging/send.js +0 -2
- package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
- package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
- package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
- package/dist/extensions/weixin/src/outbound-send.js +0 -2
- package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/weixin/src/plugin.js +0 -2
- package/dist/extensions/weixin/src/routing-integration.js +0 -2
- package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
- package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
- package/dist/extensions/weixin/src/util/logger.js +0 -2
- package/dist/extensions/weixin/src/util/random.js +0 -2
- package/dist/extensions/weixin/src/util/redact.js +0 -2
- package/dist/extensions/weixin/src/workflow-progress.js +0 -2
- package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-uu1xu9Pl.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
- package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
- package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
- package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
- package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
- package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
- package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
- package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
- package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
- package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
- package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
- package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
- package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
- package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
- package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
- package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
- package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
- package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
- package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
- package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
- package/dist/gateway/static/root/favicon.svg +1 -187
- package/dist/gateway/static/root/index.html +8 -7
- package/dist/gateway/static/root/logo-dark.svg +1 -185
- package/dist/gateway/static/root/logo.svg +1 -185
- package/dist/package.js +1 -3
- package/dist/src/activity/context.js +0 -2
- package/dist/src/activity/emitter.js +0 -2
- package/dist/src/activity/service.js +0 -2
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +1 -2
- package/dist/src/agent/agent-scope.js +0 -2
- package/dist/src/agent/background-review/coordinator.js +0 -2
- package/dist/src/agent/background-review/prompts.js +0 -2
- package/dist/src/agent/background-review/run-background-review.js +0 -2
- package/dist/src/agent/background-review/settings.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
- package/dist/src/agent/capabilities/definitions.js +0 -2
- package/dist/src/agent/capabilities/registry.js +0 -2
- package/dist/src/agent/child-agent-factory.js +0 -2
- package/dist/src/agent/client-error-format.js +0 -2
- package/dist/src/agent/code-intelligence/binary.js +0 -2
- package/dist/src/agent/code-intelligence/runtime.js +0 -2
- package/dist/src/agent/code-intelligence/tools.js +0 -2
- package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
- package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
- package/dist/src/agent/context/project-context.js +0 -2
- package/dist/src/agent/context/workspace-seed.js +0 -2
- package/dist/src/agent/context/workspace-state.js +0 -2
- package/dist/src/agent/context/workspace.js +0 -2
- package/dist/src/agent/embedded/run-for-session.js +0 -2
- package/dist/src/agent/embedded/run-turn.js +0 -2
- package/dist/src/agent/embedded/runs.js +0 -2
- package/dist/src/agent/embedded/session-manager-init.js +0 -2
- package/dist/src/agent/embedded/session-runner.js +0 -2
- package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
- package/dist/src/agent/embedded/subscribe-session.js +0 -2
- package/dist/src/agent/embedded/system-prompt-override.js +0 -2
- package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
- package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
- package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
- package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
- package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
- package/dist/src/agent/failover-error.js +0 -2
- package/dist/src/agent/fallback/candidates.js +0 -2
- package/dist/src/agent/fallback/reason.js +0 -2
- package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
- package/dist/src/agent/goals/checklist-judge.js +0 -2
- package/dist/src/agent/goals/checklist-types.js +0 -2
- package/dist/src/agent/goals/evaluate-turn.js +0 -2
- package/dist/src/agent/goals/goal-locale.js +0 -2
- package/dist/src/agent/goals/judge.js +0 -2
- package/dist/src/agent/goals/persistent-goal-service.js +0 -2
- package/dist/src/agent/goals/post-turn.js +0 -2
- package/dist/src/agent/goals/state.js +0 -2
- package/dist/src/agent/image/generation/bundled-registry.js +0 -2
- package/dist/src/agent/image/generation/bundled.js +0 -2
- package/dist/src/agent/image/generation/image-assets.js +0 -2
- package/dist/src/agent/image/generation/model-ref.js +0 -2
- package/dist/src/agent/image/generation/normalization.js +0 -2
- package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
- package/dist/src/agent/image/generation/provider-registry.js +0 -2
- package/dist/src/agent/image/generation/runtime.js +0 -2
- package/dist/src/agent/image/image-helpers.js +0 -2
- package/dist/src/agent/image/image-model-fallback.js +0 -2
- package/dist/src/agent/image/inbound-image-handling.js +0 -2
- package/dist/src/agent/image/load-image-media.js +0 -2
- package/dist/src/agent/image/tool-model-config.js +0 -2
- package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
- package/dist/src/agent/image/understanding/provider-registry.js +0 -2
- package/dist/src/agent/image/understanding/runtime.js +0 -2
- package/dist/src/agent/image/vision-detection.js +0 -2
- package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
- package/dist/src/agent/inbound/inbound-loop.js +0 -2
- package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
- package/dist/src/agent/ipc/bus.js +0 -2
- package/dist/src/agent/ipc/inbox.js +0 -2
- package/dist/src/agent/ipc/socket.js +0 -2
- package/dist/src/agent/ipc/types.js +0 -2
- package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
- package/dist/src/agent/lifecycle/hook-handler.js +0 -2
- package/dist/src/agent/lifecycle/manager.js +0 -2
- package/dist/src/agent/lifecycle/progress.js +0 -2
- package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
- package/dist/src/agent/lifecycle/typing.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
- package/dist/src/agent/mcp/embedded-mcp.js +0 -2
- package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
- package/dist/src/agent/mcp/mcp-http.js +0 -2
- package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
- package/dist/src/agent/mcp/mcp-stdio.js +0 -2
- package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
- package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
- package/dist/src/agent/mcp/mcp-transport.js +0 -2
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
- package/dist/src/agent/media-generation/model-ref.js +0 -2
- package/dist/src/agent/media-generation/normalization.types.js +0 -2
- package/dist/src/agent/media-generation/runtime-shared.js +0 -2
- package/dist/src/agent/memory/agent-message-access.js +0 -2
- package/dist/src/agent/memory/builtin-memory-store.js +0 -2
- package/dist/src/agent/memory/builtin-provider.js +0 -2
- package/dist/src/agent/memory/compaction.js +0 -2
- package/dist/src/agent/memory/context/planner.js +0 -2
- package/dist/src/agent/memory/context-fence.js +0 -2
- package/dist/src/agent/memory/create-memory-manager.js +0 -2
- package/dist/src/agent/memory/dreaming/config.js +0 -2
- package/dist/src/agent/memory/dreaming/constants.js +0 -2
- package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
- package/dist/src/agent/memory/dreaming/events.js +0 -2
- package/dist/src/agent/memory/dreaming/last-run.js +0 -2
- package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
- package/dist/src/agent/memory/dreaming/preview.js +0 -2
- package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
- package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
- package/dist/src/agent/memory/dreaming/scope.js +0 -2
- package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
- package/dist/src/agent/memory/dreaming/utils.js +0 -2
- package/dist/src/agent/memory/lifecycle.js +0 -2
- package/dist/src/agent/memory/manager.js +0 -2
- package/dist/src/agent/memory/memory-config.js +0 -2
- package/dist/src/agent/memory/message-sanitizer.js +0 -2
- package/dist/src/agent/memory/plugin-discovery.js +0 -2
- package/dist/src/agent/memory/sensitivity.js +0 -2
- package/dist/src/agent/memory/source-origin.js +0 -2
- package/dist/src/agent/memory/stub-memory-provider.js +0 -2
- package/dist/src/agent/memory/summary-generator.js +0 -2
- package/dist/src/agent/memory/understanding/correction.js +0 -2
- package/dist/src/agent/memory/understanding/quality.js +0 -2
- package/dist/src/agent/memory/understanding/service.js +0 -2
- package/dist/src/agent/memory/user-context-coordinator.js +0 -2
- package/dist/src/agent/memory/user-message-text.js +0 -2
- package/dist/src/agent/memory/window.js +0 -2
- package/dist/src/agent/messaging/command-handler.js +0 -2
- package/dist/src/agent/messaging/message-router.js +0 -2
- package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
- package/dist/src/agent/messaging/stream-manager.js +0 -2
- package/dist/src/agent/middleware/context.js +0 -2
- package/dist/src/agent/middleware/self-verify.js +0 -2
- package/dist/src/agent/models/manager.js +0 -2
- package/dist/src/agent/models/request-limiter.js +0 -2
- package/dist/src/agent/models/selection.js +0 -2
- package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
- package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
- package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
- package/dist/src/agent/orchestration/loop-guard.js +0 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
- package/dist/src/agent/prompt/cache-boundary.js +0 -2
- package/dist/src/agent/prompt/memory/index.js +0 -2
- package/dist/src/agent/prompt/safety.js +0 -2
- package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
- package/dist/src/agent/prompt/sections/behavior.js +0 -2
- package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
- package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
- package/dist/src/agent/prompt/sections/project-context.js +0 -2
- package/dist/src/agent/prompt/sections/tooling.js +0 -2
- package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
- package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
- package/dist/src/agent/prompt/subagent-context.js +0 -2
- package/dist/src/agent/prompt/system-prompt-params.js +0 -2
- package/dist/src/agent/prompt/system-prompt.js +0 -2
- package/dist/src/agent/prompt/system-reminder.js +0 -2
- package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
- package/dist/src/agent/reply/post-compaction-context.js +0 -2
- package/dist/src/agent/reply/startup-context.js +0 -2
- package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
- package/dist/src/agent/sandbox/command-validator.js +0 -2
- package/dist/src/agent/sandbox/exec-policy.js +0 -2
- package/dist/src/agent/sandbox/path-policy.js +0 -2
- package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
- package/dist/src/agent/sandbox/types.js +0 -2
- package/dist/src/agent/service/async-queue.js +0 -2
- package/dist/src/agent/service/btw-query.js +0 -2
- package/dist/src/agent/service/build-direct-message-content.js +0 -2
- package/dist/src/agent/service/direct-turn-helpers.js +0 -2
- package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
- package/dist/src/agent/service/process-direct-one-shot.js +0 -2
- package/dist/src/agent/service/process-direct-streaming.js +0 -2
- package/dist/src/agent/service/session-context-report.js +0 -2
- package/dist/src/agent/service/webchat-tts.js +0 -2
- package/dist/src/agent/service-inbound-utils.js +0 -2
- package/dist/src/agent/service.js +1 -2
- package/dist/src/agent/service.types.d.ts +2 -0
- package/dist/src/agent/session/session-config-service.js +0 -2
- package/dist/src/agent/session/session-context.js +0 -2
- package/dist/src/agent/session/session-hydrator.js +0 -2
- package/dist/src/agent/session/session-inspector.js +0 -2
- package/dist/src/agent/session/session-lifecycle.js +0 -2
- package/dist/src/agent/session/session-state-bag.js +0 -2
- package/dist/src/agent/session/tracker.js +0 -2
- package/dist/src/agent/skills/config.js +0 -2
- package/dist/src/agent/skills/filesystem-watcher.js +0 -2
- package/dist/src/agent/skills/format-skills-prompt.js +0 -2
- package/dist/src/agent/skills/hub-hash.js +0 -2
- package/dist/src/agent/skills/hub-lock.js +0 -2
- package/dist/src/agent/skills/hub-pull.js +0 -2
- package/dist/src/agent/skills/index.js +0 -2
- package/dist/src/agent/skills/install-target.js +0 -2
- package/dist/src/agent/skills/installer.js +0 -2
- package/dist/src/agent/skills/managed-store.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
- package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
- package/dist/src/agent/skills/marketplace/registry.js +0 -2
- package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
- package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
- package/dist/src/agent/skills/required-env-vars.js +0 -2
- package/dist/src/agent/skills/scanner.js +0 -2
- package/dist/src/agent/skills/skill-manage-ops.js +0 -2
- package/dist/src/agent/skills/skill-manager.js +0 -2
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
- package/dist/src/agent/skills/skill-tool-gating.js +0 -2
- package/dist/src/agent/skills/skill-view-path.js +0 -2
- package/dist/src/agent/skills/skills-marketplace.js +0 -2
- package/dist/src/agent/skills/test-framework.js +0 -2
- package/dist/src/agent/skills/watcher.js +0 -2
- package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
- package/dist/src/agent/source-context/injector.js +0 -2
- package/dist/src/agent/source-context/types.js +0 -2
- package/dist/src/agent/starter-agents.js +0 -2
- package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
- package/dist/src/agent/tool-manuals/browser.js +0 -2
- package/dist/src/agent/tool-manuals/index.js +0 -2
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
- package/dist/src/agent/tools/apply-patch.js +0 -2
- package/dist/src/agent/tools/automation-tool.js +45 -8
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
- package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
- package/dist/src/agent/tools/chain-tracker.js +0 -2
- package/dist/src/agent/tools/clarify-tool.js +0 -2
- package/dist/src/agent/tools/cli-clarify.js +0 -2
- package/dist/src/agent/tools/communication.js +0 -2
- package/dist/src/agent/tools/composio-tool.js +0 -2
- package/dist/src/agent/tools/concurrency.js +0 -2
- package/dist/src/agent/tools/create-share-tool.js +0 -2
- package/dist/src/agent/tools/curated-memory-tool.js +0 -2
- package/dist/src/agent/tools/delegate-tool.js +0 -2
- package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
- package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
- package/dist/src/agent/tools/dreaming-tool.js +0 -2
- package/dist/src/agent/tools/edit-diff.js +0 -2
- package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
- package/dist/src/agent/tools/error-tracker.js +0 -2
- package/dist/src/agent/tools/exec-command.js +0 -2
- package/dist/src/agent/tools/execute-code-tool.js +0 -2
- package/dist/src/agent/tools/executor.js +0 -2
- package/dist/src/agent/tools/factory.d.ts +2 -0
- package/dist/src/agent/tools/factory.js +3 -4
- package/dist/src/agent/tools/find.js +0 -2
- package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
- package/dist/src/agent/tools/goal-tool.d.ts +7 -1
- package/dist/src/agent/tools/goal-tool.js +34 -7
- package/dist/src/agent/tools/grep.js +0 -2
- package/dist/src/agent/tools/image-generate-tool.js +0 -2
- package/dist/src/agent/tools/image-tool.js +0 -2
- package/dist/src/agent/tools/list-dir.js +0 -2
- package/dist/src/agent/tools/media-read-tool.js +0 -2
- package/dist/src/agent/tools/memory-tool.js +0 -2
- package/dist/src/agent/tools/metadata.js +0 -2
- package/dist/src/agent/tools/read.js +0 -2
- package/dist/src/agent/tools/search/http.js +0 -2
- package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
- package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
- package/dist/src/agent/tools/search/providers/brave.js +0 -2
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
- package/dist/src/agent/tools/search/providers/searxng.js +0 -2
- package/dist/src/agent/tools/search/providers/tavily.js +0 -2
- package/dist/src/agent/tools/search/region.js +0 -2
- package/dist/src/agent/tools/search/registry.js +0 -2
- package/dist/src/agent/tools/search/resolve-config.js +0 -2
- package/dist/src/agent/tools/send-media.js +0 -2
- package/dist/src/agent/tools/session-search-tool.js +0 -2
- package/dist/src/agent/tools/session-status-tool.js +0 -2
- package/dist/src/agent/tools/skill-install-tool.js +0 -2
- package/dist/src/agent/tools/skill-manage-tool.js +0 -2
- package/dist/src/agent/tools/skills-tools.js +0 -2
- package/dist/src/agent/tools/structured-output.js +0 -2
- package/dist/src/agent/tools/todo-tool.js +0 -2
- package/dist/src/agent/tools/tool-manual-tool.js +0 -2
- package/dist/src/agent/tools/tool-paths.js +0 -2
- package/dist/src/agent/tools/truncate.js +0 -2
- package/dist/src/agent/tools/tts-tool.js +0 -2
- package/dist/src/agent/tools/update-plan-tool.js +0 -2
- package/dist/src/agent/tools/url-safety.js +0 -2
- package/dist/src/agent/tools/usage-analyzer.js +0 -2
- package/dist/src/agent/tools/web-extract.js +0 -2
- package/dist/src/agent/tools/web.js +4 -4
- package/dist/src/agent/tools/workflow-tool.js +32 -4
- package/dist/src/agent/tools/write.js +23 -5
- package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
- package/dist/src/agent/tools/xopc-use-tool.js +216 -8
- package/dist/src/agent/transcript/google-api.js +0 -2
- package/dist/src/agent/transcript/model-selection.js +0 -2
- package/dist/src/agent/transcript/provider-capabilities.js +0 -2
- package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
- package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
- package/dist/src/agent/transcript/thinking-types.js +0 -2
- package/dist/src/agent/transcript/thinking.js +0 -2
- package/dist/src/agent/transcript/tool-call-id.js +0 -2
- package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
- package/dist/src/agent/transcript/transcript-policy.js +0 -2
- package/dist/src/agent/workflow/agent-progress.js +0 -2
- package/dist/src/agent/workflow/builtins/index.js +0 -2
- package/dist/src/agent/workflow/catalog.js +0 -2
- package/dist/src/agent/workflow/progress-broker.js +0 -2
- package/dist/src/agent/workflow/snapshot-empty.js +0 -2
- package/dist/src/agent/workflow/snapshot.js +0 -2
- package/dist/src/agent/workflow/step-labels.js +0 -2
- package/dist/src/agent/workflow/structured-output-tool.js +0 -2
- package/dist/src/agent/workflow/subagent-runner.js +0 -2
- package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
- package/dist/src/agent/workspace-runtime/registry.js +0 -2
- package/dist/src/agent-manifest/index.js +0 -2
- package/dist/src/agent-manifest/preset-chain.js +0 -2
- package/dist/src/agent-manifest/prompt.js +0 -2
- package/dist/src/agent-manifest/resolver.js +0 -2
- package/dist/src/agent-manifest/schema.js +0 -2
- package/dist/src/agent-manifest/validator.js +0 -2
- package/dist/src/agent-runtime/boundary-guard.js +0 -2
- package/dist/src/agent-runtime/memory-runtime.js +0 -2
- package/dist/src/agent-runtime/model-router.js +0 -2
- package/dist/src/agent-runtime/run-trace.js +0 -2
- package/dist/src/agent-runtime/runtime-profile.js +0 -2
- package/dist/src/agent-runtime/tool-registry.js +0 -2
- package/dist/src/agent-runtime/workflow-runtime.js +0 -2
- package/dist/src/ai-assist/text-assist.js +0 -2
- package/dist/src/auth/credentials.js +0 -2
- package/dist/src/auth/index.js +0 -2
- package/dist/src/auth/oauth/anthropic.js +0 -2
- package/dist/src/auth/oauth/github-copilot.js +0 -2
- package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
- package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
- package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
- package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
- package/dist/src/auth/oauth/kimi-coding.js +0 -2
- package/dist/src/auth/oauth/minimax-cn.js +0 -2
- package/dist/src/auth/oauth/minimax.js +0 -2
- package/dist/src/auth/oauth/openai-codex.js +0 -2
- package/dist/src/auth/oauth/pkce.js +0 -2
- package/dist/src/auth/profiles/oauth.js +0 -2
- package/dist/src/auth/profiles/order.js +0 -2
- package/dist/src/auth/profiles/profiles.js +0 -2
- package/dist/src/auth/profiles/store.js +0 -2
- package/dist/src/auth/sync-provider-auth.js +0 -2
- package/dist/src/automations/api/routes.js +0 -2
- package/dist/src/automations/domain/schedule.js +0 -2
- package/dist/src/automations/domain/validation.js +0 -2
- package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
- package/dist/src/automations/draft/automation-draft-service.js +0 -2
- package/dist/src/automations/draft/automation-draft-validator.js +0 -2
- package/dist/src/automations/product-events.js +0 -2
- package/dist/src/automations/service/action-executor.js +0 -2
- package/dist/src/automations/service/automation-service.js +0 -2
- package/dist/src/automations/storage/automation-repository.js +0 -2
- package/dist/src/automations/storage/automation-run-repository.js +0 -2
- package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
- package/dist/src/browser/actions/registry.js +0 -2
- package/dist/src/browser/backend-from-config.js +0 -2
- package/dist/src/browser/browser-command-timeout.js +0 -2
- package/dist/src/browser/cache-dir-policy.js +0 -2
- package/dist/src/browser/cdp-local-launcher.js +0 -2
- package/dist/src/browser/cdp-supervisor.js +0 -2
- package/dist/src/browser/free-port.js +0 -2
- package/dist/src/browser/humanize.js +0 -2
- package/dist/src/browser/install-lock.js +0 -2
- package/dist/src/browser/manager.js +0 -2
- package/dist/src/browser/pipeline/output.js +0 -2
- package/dist/src/browser/pipeline/runner.js +0 -2
- package/dist/src/browser/pipeline/schema.js +0 -2
- package/dist/src/browser/pipeline/source.js +0 -2
- package/dist/src/browser/pipeline/template.js +0 -2
- package/dist/src/browser/providers/browser-ext-install.js +0 -2
- package/dist/src/browser/providers/browser-use.js +0 -2
- package/dist/src/browser/providers/browserbase.js +0 -2
- package/dist/src/browser/providers/cloakbrowser.js +0 -2
- package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
- package/dist/src/browser/providers/extension.js +0 -2
- package/dist/src/browser/providers/playwright-doctor.js +13 -4
- package/dist/src/browser/providers/playwright-install.js +0 -2
- package/dist/src/browser/readiness.js +0 -2
- package/dist/src/browser/schemas.js +0 -2
- package/dist/src/browser/session-lifecycle.js +0 -2
- package/dist/src/browser/snapshot-helpers.js +0 -2
- package/dist/src/browser/stealth.js +0 -2
- package/dist/src/browser/url-policy.js +0 -2
- package/dist/src/capabilities/store-connector.js +0 -2
- package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
- package/dist/src/channels/attachments/inbound-persist.js +0 -2
- package/dist/src/channels/attachments/inbound-types.js +0 -2
- package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
- package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
- package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
- package/dist/src/channels/config-helpers.js +0 -2
- package/dist/src/channels/envelope-timestamp.js +0 -2
- package/dist/src/channels/exec-approval-runtime.js +0 -2
- package/dist/src/channels/health-monitor.js +0 -2
- package/dist/src/channels/heartbeat-scheduler.js +0 -2
- package/dist/src/channels/internal-outbound.js +0 -2
- package/dist/src/channels/lifecycle-supervisor.js +0 -2
- package/dist/src/channels/manager.js +0 -2
- package/dist/src/channels/media.js +0 -2
- package/dist/src/channels/outbound/deliver.js +0 -2
- package/dist/src/channels/outbound/normalize.js +0 -2
- package/dist/src/channels/outbound/persist-store.js +0 -2
- package/dist/src/channels/outbound/queue.js +0 -2
- package/dist/src/channels/outbound-sender.js +0 -2
- package/dist/src/channels/pairing/allow-from-file.js +0 -2
- package/dist/src/channels/pairing/approve-cli.js +0 -2
- package/dist/src/channels/pairing/pairing-challenge.js +0 -2
- package/dist/src/channels/pairing/pairing-constants.js +0 -2
- package/dist/src/channels/pairing/pairing-events.js +0 -2
- package/dist/src/channels/pairing/pairing-messages.js +0 -2
- package/dist/src/channels/pairing/pairing-service.js +0 -2
- package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
- package/dist/src/channels/pairing/pairing-store.js +0 -2
- package/dist/src/channels/pairing/paths.js +0 -2
- package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
- package/dist/src/channels/pipeline.js +0 -2
- package/dist/src/channels/plugin-registry.js +0 -2
- package/dist/src/channels/plugins/registry.js +0 -2
- package/dist/src/channels/restart-policy.js +0 -2
- package/dist/src/channels/security-helpers.js +0 -2
- package/dist/src/channels/security.js +0 -2
- package/dist/src/channels/setup-wizard-discovery.js +0 -2
- package/dist/src/chat-commands/agent-edit.js +0 -2
- package/dist/src/chat-commands/builtins/config.js +0 -2
- package/dist/src/chat-commands/builtins/context.js +0 -2
- package/dist/src/chat-commands/builtins/goal.js +0 -2
- package/dist/src/chat-commands/builtins/model.js +0 -2
- package/dist/src/chat-commands/builtins/review.js +0 -2
- package/dist/src/chat-commands/builtins/session.js +0 -2
- package/dist/src/chat-commands/builtins/skill.js +0 -2
- package/dist/src/chat-commands/builtins/subgoal.js +0 -2
- package/dist/src/chat-commands/builtins/system.js +0 -2
- package/dist/src/chat-commands/builtins/thinking.js +0 -2
- package/dist/src/chat-commands/builtins/tts.js +0 -2
- package/dist/src/chat-commands/builtins/workflow.js +0 -2
- package/dist/src/chat-commands/command-parse.js +0 -2
- package/dist/src/chat-commands/config-paths.js +0 -2
- package/dist/src/chat-commands/config-value.js +0 -2
- package/dist/src/chat-commands/context.js +0 -2
- package/dist/src/chat-commands/format-output.js +0 -2
- package/dist/src/chat-commands/index.js +0 -2
- package/dist/src/chat-commands/processor.js +0 -2
- package/dist/src/chat-commands/registry.js +0 -2
- package/dist/src/chat-commands/session-key.js +0 -2
- package/dist/src/cli/argv-invocation.js +0 -2
- package/dist/src/cli/argv.js +0 -2
- package/dist/src/cli/bin.js +0 -2
- package/dist/src/cli/cli-log-level-preset.js +0 -2
- package/dist/src/cli/command-catalog.js +0 -2
- package/dist/src/cli/command-loaders.js +0 -2
- package/dist/src/cli/command-manifest.js +0 -2
- package/dist/src/cli/command-path-matches.js +0 -2
- package/dist/src/cli/command-path-policy.js +0 -2
- package/dist/src/cli/command-startup-policy.js +0 -2
- package/dist/src/cli/commands/agent/interactive.js +0 -2
- package/dist/src/cli/commands/agent/sessions.js +0 -2
- package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
- package/dist/src/cli/commands/agent.js +0 -2
- package/dist/src/cli/commands/agents.js +0 -2
- package/dist/src/cli/commands/auth.js +0 -2
- package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
- package/dist/src/cli/commands/browser.js +0 -2
- package/dist/src/cli/commands/channels.js +0 -2
- package/dist/src/cli/commands/config.js +0 -2
- package/dist/src/cli/commands/connectors.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
- package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
- package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
- package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
- package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
- package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
- package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
- package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
- package/dist/src/cli/commands/doctor/flow.js +0 -2
- package/dist/src/cli/commands/doctor/format.js +0 -2
- package/dist/src/cli/commands/doctor/index.js +0 -2
- package/dist/src/cli/commands/extension-create.js +0 -2
- package/dist/src/cli/commands/extension-dev.js +0 -2
- package/dist/src/cli/commands/extension-marketplace.js +0 -2
- package/dist/src/cli/commands/extension-pack.js +0 -2
- package/dist/src/cli/commands/extension.js +0 -2
- package/dist/src/cli/commands/gateway/call.js +0 -2
- package/dist/src/cli/commands/gateway/health.js +0 -2
- package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
- package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
- package/dist/src/cli/commands/gateway/logs.js +0 -2
- package/dist/src/cli/commands/gateway/probe.js +0 -2
- package/dist/src/cli/commands/gateway/restart-health.js +0 -2
- package/dist/src/cli/commands/gateway/restart.js +0 -2
- package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
- package/dist/src/cli/commands/gateway/service.js +0 -2
- package/dist/src/cli/commands/gateway/shared.js +0 -2
- package/dist/src/cli/commands/gateway/status.js +0 -2
- package/dist/src/cli/commands/gateway/stop.js +0 -2
- package/dist/src/cli/commands/gateway/subcommands.js +0 -2
- package/dist/src/cli/commands/gateway/token.js +0 -2
- package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
- package/dist/src/cli/commands/gateway.js +0 -2
- package/dist/src/cli/commands/goal.js +0 -2
- package/dist/src/cli/commands/image.js +0 -2
- package/dist/src/cli/commands/init.js +0 -2
- package/dist/src/cli/commands/logs.js +0 -2
- package/dist/src/cli/commands/models.js +0 -2
- package/dist/src/cli/commands/onboard/channels/index.js +0 -2
- package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
- package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
- package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
- package/dist/src/cli/commands/onboard/gateway.js +0 -2
- package/dist/src/cli/commands/onboard/model.js +0 -2
- package/dist/src/cli/commands/onboard.js +0 -2
- package/dist/src/cli/commands/profile.js +0 -2
- package/dist/src/cli/commands/project.js +0 -2
- package/dist/src/cli/commands/providers.js +0 -2
- package/dist/src/cli/commands/resume.js +0 -2
- package/dist/src/cli/commands/search.js +0 -2
- package/dist/src/cli/commands/session/actions.js +0 -2
- package/dist/src/cli/commands/session/utils.js +0 -2
- package/dist/src/cli/commands/session.js +0 -2
- package/dist/src/cli/commands/setup-shared/output.js +0 -2
- package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
- package/dist/src/cli/commands/setup-shared/runner.js +0 -2
- package/dist/src/cli/commands/setup-shared/types.js +0 -2
- package/dist/src/cli/commands/setup.js +0 -2
- package/dist/src/cli/commands/skills-test.js +0 -2
- package/dist/src/cli/commands/skills.js +0 -2
- package/dist/src/cli/commands/tailscale.js +0 -2
- package/dist/src/cli/commands/tui-runner.js +0 -2
- package/dist/src/cli/commands/tui.js +0 -2
- package/dist/src/cli/commands/tunnel.js +0 -2
- package/dist/src/cli/commands/update.js +0 -2
- package/dist/src/cli/commands/voice.js +0 -2
- package/dist/src/cli/context.js +0 -2
- package/dist/src/cli/extension-cli-register.js +0 -2
- package/dist/src/cli/gateway-run-argv.js +0 -2
- package/dist/src/cli/gateway-run-fast-path.js +0 -2
- package/dist/src/cli/index.js +0 -2
- package/dist/src/cli/registry.js +0 -2
- package/dist/src/cli/templates.js +0 -2
- package/dist/src/cli/utils/colors.js +0 -2
- package/dist/src/cli/utils/gateway-client-options.js +0 -2
- package/dist/src/cli/utils/gateway-client.js +0 -2
- package/dist/src/cli/utils/init-workspace-core.js +0 -2
- package/dist/src/cli/utils/init-workspace.js +0 -2
- package/dist/src/cli/utils/oauth-login.js +0 -2
- package/dist/src/cli/utils/oauth-providers.js +0 -2
- package/dist/src/cli/utils/session.js +0 -2
- package/dist/src/commands/agents.config.js +0 -2
- package/dist/src/config/agent-profile.js +0 -2
- package/dist/src/config/agent-typed-models.js +0 -2
- package/dist/src/config/commands.flags.js +0 -2
- package/dist/src/config/default-model.js +0 -2
- package/dist/src/config/diff.js +0 -2
- package/dist/src/config/gateway-bind.js +0 -2
- package/dist/src/config/index.js +0 -2
- package/dist/src/config/loader.js +0 -2
- package/dist/src/config/mcp-config-normalize.js +0 -2
- package/dist/src/config/model-input.js +0 -2
- package/dist/src/config/models-json.js +0 -2
- package/dist/src/config/paths-state.js +0 -2
- package/dist/src/config/paths.js +0 -2
- package/dist/src/config/profile.js +0 -2
- package/dist/src/config/public-url.js +0 -2
- package/dist/src/config/reload.js +0 -2
- package/dist/src/config/resolve-config-value.js +0 -2
- package/dist/src/config/rules.js +0 -2
- package/dist/src/config/runtime-overrides.js +0 -2
- package/dist/src/config/schema.js +0 -2
- package/dist/src/config/validate-channel-configs.js +0 -2
- package/dist/src/config/voice.js +0 -2
- package/dist/src/config/web-patch.js +0 -2
- package/dist/src/config/workspace-defaults.js +0 -2
- package/dist/src/config/workspace-dirs.js +0 -2
- package/dist/src/config/workspace-path-helpers.js +0 -2
- package/dist/src/config/workspace-path.js +0 -2
- package/dist/src/connectors/approval.js +0 -2
- package/dist/src/connectors/auth-provider-registry.js +0 -2
- package/dist/src/connectors/builtin-catalog.js +0 -2
- package/dist/src/connectors/catalog.js +0 -2
- package/dist/src/connectors/composio-catalog.js +0 -2
- package/dist/src/connectors/composio-logo.js +0 -2
- package/dist/src/connectors/composio-sessions.js +9 -5
- package/dist/src/connectors/composio-triggers.js +0 -2
- package/dist/src/connectors/composio.js +0 -2
- package/dist/src/connectors/connector-memory-sync.js +0 -2
- package/dist/src/connectors/health.js +0 -2
- package/dist/src/connectors/install.js +0 -2
- package/dist/src/connectors/instances.js +0 -2
- package/dist/src/connectors/integration-strategy.js +0 -2
- package/dist/src/connectors/lifecycle.js +0 -2
- package/dist/src/connectors/materialize.js +0 -2
- package/dist/src/connectors/policy.js +0 -2
- package/dist/src/connectors/providers.js +0 -2
- package/dist/src/connectors/registries/modelscope.js +0 -2
- package/dist/src/connectors/registries/official-mcp.js +0 -2
- package/dist/src/connectors/registries/search.js +0 -2
- package/dist/src/connectors/registries/smithery.js +0 -2
- package/dist/src/connectors/runtime-adapter-registry.js +0 -2
- package/dist/src/connectors/secret-store.js +0 -2
- package/dist/src/connectors/setup-secrets.js +0 -2
- package/dist/src/connectors/supervisor.js +0 -2
- package/dist/src/connectors/usage.js +0 -2
- package/dist/src/connectors/workflow-preflight.js +0 -2
- package/dist/src/daemon/constants.js +0 -2
- package/dist/src/daemon/install-plan.js +0 -2
- package/dist/src/daemon/launchd.js +0 -2
- package/dist/src/daemon/schtasks.js +0 -2
- package/dist/src/daemon/service-audit.js +0 -2
- package/dist/src/daemon/service.js +0 -2
- package/dist/src/daemon/systemd.js +0 -2
- package/dist/src/document-understanding/extract.js +0 -2
- package/dist/src/errors/index.js +0 -2
- package/dist/src/extensions/activation-context.js +0 -2
- package/dist/src/extensions/activation-planner.js +0 -2
- package/dist/src/extensions/api.js +0 -2
- package/dist/src/extensions/bundle-mcp.js +0 -2
- package/dist/src/extensions/bundled-extension-activation.js +0 -2
- package/dist/src/extensions/diagnostics.js +0 -2
- package/dist/src/extensions/discover-extensions.js +0 -2
- package/dist/src/extensions/engine-check.js +0 -2
- package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
- package/dist/src/extensions/extension-registry-impl.js +0 -2
- package/dist/src/extensions/health.js +0 -2
- package/dist/src/extensions/hooks.js +0 -2
- package/dist/src/extensions/index.js +0 -2
- package/dist/src/extensions/install-transaction.js +0 -2
- package/dist/src/extensions/install.js +0 -2
- package/dist/src/extensions/loader.js +0 -2
- package/dist/src/extensions/lockfile.js +0 -2
- package/dist/src/extensions/manifest-registry.js +0 -2
- package/dist/src/extensions/marketplace.js +0 -2
- package/dist/src/extensions/media-provider-contracts.js +0 -2
- package/dist/src/extensions/normalize-manifest.js +0 -2
- package/dist/src/extensions/onboard-helpers.js +0 -2
- package/dist/src/extensions/package-contract.js +0 -2
- package/dist/src/extensions/sdk/channel-entry.js +0 -2
- package/dist/src/extensions/sdk/channel-helpers.js +0 -2
- package/dist/src/extensions/sdk/index.js +0 -2
- package/dist/src/extensions/sdk/lazy.js +0 -2
- package/dist/src/extensions/sdk/testing.js +0 -2
- package/dist/src/extensions/security.js +0 -2
- package/dist/src/extensions/slots.js +0 -2
- package/dist/src/extensions/speech-provider-contracts.js +0 -2
- package/dist/src/extensions/store-zip-limits.js +0 -2
- package/dist/src/extensions/typed-event-bus.js +0 -2
- package/dist/src/extensions/types/hooks.js +0 -2
- package/dist/src/extensions/types/providers.js +0 -2
- package/dist/src/extensions/update.js +0 -2
- package/dist/src/extensions/when-context.js +0 -2
- package/dist/src/extensions/when-expression.js +0 -2
- package/dist/src/gateway/agent-builtin-tools.js +0 -2
- package/dist/src/gateway/agent-run-relay.js +0 -2
- package/dist/src/gateway/agents-admin.js +0 -2
- package/dist/src/gateway/auth.js +0 -2
- package/dist/src/gateway/capability-presets-admin.js +0 -2
- package/dist/src/gateway/chat-limits.js +0 -2
- package/dist/src/gateway/chat-stream/mapper.js +28 -14
- package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
- package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
- package/dist/src/gateway/clarify-bridge.js +3 -3
- package/dist/src/gateway/clarify-runtime.js +0 -2
- package/dist/src/gateway/client-ip.js +0 -2
- package/dist/src/gateway/config-tools-web.js +0 -2
- package/dist/src/gateway/credential.js +0 -2
- package/dist/src/gateway/discovery/mdns.js +0 -2
- package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
- package/dist/src/gateway/ensure-network-cors.js +0 -2
- package/dist/src/gateway/file-path-classifier.js +0 -2
- package/dist/src/gateway/file-reference-registry.js +0 -2
- package/dist/src/gateway/global-defaults-admin.js +0 -2
- package/dist/src/gateway/heartbeat/service.js +0 -2
- package/dist/src/gateway/hono/app.js +0 -2
- package/dist/src/gateway/hono/lib/agent-model.js +0 -2
- package/dist/src/gateway/hono/lib/config-payload.js +0 -2
- package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
- package/dist/src/gateway/hono/lib/extension-store.js +0 -2
- package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
- package/dist/src/gateway/hono/lib/route-logger.js +0 -2
- package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
- package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
- package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
- package/dist/src/gateway/hono/lib/static-ui.js +0 -2
- package/dist/src/gateway/hono/middleware/auth.js +0 -2
- package/dist/src/gateway/hono/middleware/log-context.js +0 -2
- package/dist/src/gateway/hono/middleware/logger.js +0 -2
- package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
- package/dist/src/gateway/hono/middleware/scopes.js +0 -2
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
- package/dist/src/gateway/hono/oauth-async.js +0 -2
- package/dist/src/gateway/hono/oauth.js +0 -2
- package/dist/src/gateway/hono/routes/activity.js +0 -2
- package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
- package/dist/src/gateway/hono/routes/agents.js +0 -2
- package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
- package/dist/src/gateway/hono/routes/browser-install.js +0 -2
- package/dist/src/gateway/hono/routes/browser.js +0 -2
- package/dist/src/gateway/hono/routes/capabilities.js +0 -2
- package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
- package/dist/src/gateway/hono/routes/channels.js +0 -2
- package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
- package/dist/src/gateway/hono/routes/config.js +0 -2
- package/dist/src/gateway/hono/routes/connectors.js +0 -2
- package/dist/src/gateway/hono/routes/doctor.js +0 -2
- package/dist/src/gateway/hono/routes/dreaming.js +0 -2
- package/dist/src/gateway/hono/routes/exposure.js +0 -2
- package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
- package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
- package/dist/src/gateway/hono/routes/goals.js +0 -2
- package/dist/src/gateway/hono/routes/home.js +0 -2
- package/dist/src/gateway/hono/routes/host-fs.js +0 -2
- package/dist/src/gateway/hono/routes/index.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
- package/dist/src/gateway/hono/routes/local-apps.js +0 -2
- package/dist/src/gateway/hono/routes/logs.js +0 -2
- package/dist/src/gateway/hono/routes/mcp.js +0 -2
- package/dist/src/gateway/hono/routes/media.js +0 -2
- package/dist/src/gateway/hono/routes/memory.js +0 -2
- package/dist/src/gateway/hono/routes/migrations.js +0 -2
- package/dist/src/gateway/hono/routes/mobile.js +0 -2
- package/dist/src/gateway/hono/routes/models.js +0 -2
- package/dist/src/gateway/hono/routes/notes.js +3 -3
- package/dist/src/gateway/hono/routes/projects.js +0 -2
- package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
- package/dist/src/gateway/hono/routes/search.js +0 -2
- package/dist/src/gateway/hono/routes/sessions.js +0 -2
- package/dist/src/gateway/hono/routes/shares.js +0 -2
- package/dist/src/gateway/hono/routes/site-shares.js +0 -2
- package/dist/src/gateway/hono/routes/status.js +0 -2
- package/dist/src/gateway/hono/routes/tui.js +0 -2
- package/dist/src/gateway/hono/routes/tunnel.js +0 -2
- package/dist/src/gateway/hono/routes/update.js +0 -2
- package/dist/src/gateway/hono/routes/voice.js +0 -2
- package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
- package/dist/src/gateway/hono/routes/workflows.js +0 -2
- package/dist/src/gateway/hono/routes/workspace.js +0 -2
- package/dist/src/gateway/hono/routes/you.js +0 -2
- package/dist/src/gateway/hono/sse-json.js +0 -2
- package/dist/src/gateway/hono/sse.js +0 -2
- package/dist/src/gateway/host.js +0 -2
- package/dist/src/gateway/image-capabilities.js +0 -2
- package/dist/src/gateway/listen.js +0 -2
- package/dist/src/gateway/lock.js +0 -2
- package/dist/src/gateway/ports.js +0 -2
- package/dist/src/gateway/protocol.js +0 -2
- package/dist/src/gateway/public-url.js +0 -2
- package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
- package/dist/src/gateway/rate-limit/buckets.js +0 -2
- package/dist/src/gateway/rate-limit/env-flags.js +0 -2
- package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
- package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
- package/dist/src/gateway/respawn.js +0 -2
- package/dist/src/gateway/run-loop.js +0 -2
- package/dist/src/gateway/runtime-config.js +0 -2
- package/dist/src/gateway/security/audit.js +0 -2
- package/dist/src/gateway/security/csp.js +0 -2
- package/dist/src/gateway/security/dangerous-tools.js +0 -2
- package/dist/src/gateway/security/external-content.js +0 -2
- package/dist/src/gateway/security/known-weak-secrets.js +0 -2
- package/dist/src/gateway/security/loopback.js +0 -2
- package/dist/src/gateway/security/operator-scopes.js +0 -2
- package/dist/src/gateway/security/origin-check.js +0 -2
- package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
- package/dist/src/gateway/security/secret-equal.js +0 -2
- package/dist/src/gateway/server-tailscale.js +0 -2
- package/dist/src/gateway/server.js +0 -2
- package/dist/src/gateway/service/agent-runner.js +0 -2
- package/dist/src/gateway/service/config-coordinator.js +0 -2
- package/dist/src/gateway/service/marketplace-service.js +0 -2
- package/dist/src/gateway/service/run-gateway-agent.js +0 -2
- package/dist/src/gateway/service/session-chat-ids.js +0 -2
- package/dist/src/gateway/service/sessions-api.js +0 -2
- package/dist/src/gateway/service/sse-hub.js +0 -2
- package/dist/src/gateway/service.js +1 -2
- package/dist/src/gateway/session-reset-service.js +0 -2
- package/dist/src/gateway/startup-readiness.js +0 -2
- package/dist/src/gateway/startup-trace.js +0 -2
- package/dist/src/gateway/tailscale-auth.js +0 -2
- package/dist/src/gateway/tailscale-lifecycle.js +0 -2
- package/dist/src/gateway/tls-server.js +0 -2
- package/dist/src/gateway/trusted-proxy.js +0 -2
- package/dist/src/gateway/user-turn-input.js +0 -2
- package/dist/src/gateway/workspace-editor-path.js +0 -2
- package/dist/src/gateway/workspace-file-search.js +0 -2
- package/dist/src/gateway/workspace-fs-file-list.js +0 -2
- package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
- package/dist/src/gateway/workspace-ripgrep.js +0 -2
- package/dist/src/gateway/ws-security.js +0 -2
- package/dist/src/generated/bundled-image-generation-providers.js +0 -2
- package/dist/src/goals/goal-contract-draft.js +0 -2
- package/dist/src/goals/goal-evidence-review.js +0 -2
- package/dist/src/goals/goal-notifications.js +0 -2
- package/dist/src/goals/goal-queue-store.js +0 -2
- package/dist/src/goals/goal-runner.js +0 -2
- package/dist/src/goals/goal-service.js +0 -2
- package/dist/src/goals/goal-store.js +0 -2
- package/dist/src/goals/goal-workflow-judge.js +0 -2
- package/dist/src/heartbeat/active-hours.js +0 -2
- package/dist/src/heartbeat/content-check.js +0 -2
- package/dist/src/heartbeat/event-prompt.js +0 -2
- package/dist/src/heartbeat/tokens.js +0 -2
- package/dist/src/heartbeat/wake.js +0 -2
- package/dist/src/i18n/format.js +0 -2
- package/dist/src/i18n/goals-bundle.js +0 -2
- package/dist/src/i18n/locale.js +0 -2
- package/dist/src/i18n/locales/goals.en.js +0 -2
- package/dist/src/i18n/locales/goals.zh.js +0 -2
- package/dist/src/i18n/locales/share-tool.en.js +0 -2
- package/dist/src/i18n/locales/share-tool.zh.js +0 -2
- package/dist/src/i18n/share-tool-bundle.js +0 -2
- package/dist/src/index.js +0 -2
- package/dist/src/infra/brew.js +0 -2
- package/dist/src/infra/bus/queue.js +0 -2
- package/dist/src/infra/debounce.js +0 -2
- package/dist/src/infra/exec.js +0 -2
- package/dist/src/infra/gateway-process-argv.js +0 -2
- package/dist/src/infra/gateway-processes.js +0 -2
- package/dist/src/infra/host-env-security-policy.js +0 -2
- package/dist/src/infra/host-env-security.js +0 -2
- package/dist/src/infra/http-proxy-env.js +0 -2
- package/dist/src/infra/is-main.js +0 -2
- package/dist/src/infra/json-utf8-bytes.js +0 -2
- package/dist/src/infra/node-sqlite.js +0 -2
- package/dist/src/infra/package-json.js +0 -2
- package/dist/src/infra/package-update-steps.js +0 -2
- package/dist/src/infra/path-env.js +0 -2
- package/dist/src/infra/path-prepend.js +0 -2
- package/dist/src/infra/ports.js +0 -2
- package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
- package/dist/src/infra/rate-limit/keyed-store.js +0 -2
- package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
- package/dist/src/infra/restart.js +0 -2
- package/dist/src/infra/retry.js +0 -2
- package/dist/src/infra/run-command.js +0 -2
- package/dist/src/infra/sqlite-errors.js +0 -2
- package/dist/src/infra/ssh-tunnel.js +0 -2
- package/dist/src/infra/stable-node-path.js +0 -2
- package/dist/src/infra/tailscale.js +0 -2
- package/dist/src/infra/undici-fetch.js +0 -2
- package/dist/src/infra/unhandled-rejections.js +0 -2
- package/dist/src/infra/update-channels.js +0 -2
- package/dist/src/infra/update-check.js +0 -2
- package/dist/src/infra/update-global.js +0 -2
- package/dist/src/infra/update-lock.js +0 -2
- package/dist/src/infra/update-log.js +0 -2
- package/dist/src/infra/update-restart.js +0 -2
- package/dist/src/infra/update-runner.js +0 -2
- package/dist/src/infra/update-startup.js +0 -2
- package/dist/src/infra/warning-filter.js +0 -2
- package/dist/src/infra/write-file-atomic.js +0 -2
- package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
- package/dist/src/knowledge/coordinator.js +0 -2
- package/dist/src/knowledge/ingestion-service.js +0 -2
- package/dist/src/local-apps/acceptance.js +0 -2
- package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
- package/dist/src/local-apps/runtime-entry.js +0 -2
- package/dist/src/local-apps/scaffold.js +0 -2
- package/dist/src/local-apps/service.js +0 -2
- package/dist/src/local-apps/store.js +0 -2
- package/dist/src/markdown/chunk.js +0 -2
- package/dist/src/markdown/code-spans.js +0 -2
- package/dist/src/markdown/fences.js +0 -2
- package/dist/src/markdown/frontmatter.js +0 -2
- package/dist/src/markdown/ir.js +0 -2
- package/dist/src/markdown/render.js +0 -2
- package/dist/src/markdown/tables.js +0 -2
- package/dist/src/mcp/channel-bridge.js +0 -2
- package/dist/src/mcp/channel-server.js +0 -2
- package/dist/src/mcp/channel-shared.js +0 -2
- package/dist/src/mcp/channel-tools.js +0 -2
- package/dist/src/mcp/gateway-http-client.js +0 -2
- package/dist/src/media/media-reference.js +0 -2
- package/dist/src/media/paths.js +0 -2
- package/dist/src/media/session-references.js +0 -2
- package/dist/src/media/store.js +0 -2
- package/dist/src/media/uri.js +0 -2
- package/dist/src/media-shared/http/api-key-rotation.js +0 -2
- package/dist/src/media-shared/http/deadline.js +0 -2
- package/dist/src/media-shared/http/private-network.js +0 -2
- package/dist/src/media-shared/http/provider-http-errors.js +0 -2
- package/dist/src/media-shared/http/provider-http.js +0 -2
- package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
- package/dist/src/media-shared/http/ssrf-guard.js +0 -2
- package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
- package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
- package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
- package/dist/src/media-understanding/registry.js +0 -2
- package/dist/src/media-understanding/resolve-entries.js +0 -2
- package/dist/src/media-understanding/runner.js +0 -2
- package/dist/src/migrations/config/default-capability-preset.js +0 -2
- package/dist/src/migrations/registry.js +0 -2
- package/dist/src/migrations/runner.js +0 -2
- package/dist/src/mobile/notification-service.js +0 -2
- package/dist/src/mobile/notification-store.js +0 -2
- package/dist/src/mobile/notification-types.js +0 -2
- package/dist/src/notes/agent-context.js +0 -2
- package/dist/src/notes/attachment-ref.js +0 -2
- package/dist/src/notes/note-attachment-sync.js +0 -2
- package/dist/src/notes/note-index-meta.js +0 -2
- package/dist/src/notes/note-markdown.js +0 -2
- package/dist/src/notes/paths.js +0 -2
- package/dist/src/notes/service.d.ts +3 -1
- package/dist/src/notes/service.js +19 -5
- package/dist/src/notes/store.js +0 -2
- package/dist/src/package-version.js +0 -2
- package/dist/src/pets/factory.d.ts +13 -0
- package/dist/src/pets/factory.js +23 -2
- package/dist/src/pets/manifest.js +0 -2
- package/dist/src/pets/validator.js +0 -2
- package/dist/src/process/kill-tree.js +0 -2
- package/dist/src/project-trust/trust-store.js +0 -2
- package/dist/src/projects/automation-bind.js +0 -2
- package/dist/src/projects/goal-bind.js +0 -2
- package/dist/src/projects/memory-bind.js +0 -2
- package/dist/src/projects/project-agent-suggestion.js +0 -2
- package/dist/src/projects/project-agent.js +0 -2
- package/dist/src/projects/project-kind.js +0 -2
- package/dist/src/projects/project-loop.js +0 -2
- package/dist/src/projects/project-service.js +0 -2
- package/dist/src/projects/project-store.js +0 -2
- package/dist/src/projects/session-bind.js +0 -2
- package/dist/src/projects/workflow-bind.js +0 -2
- package/dist/src/projects/workspace-project.js +0 -2
- package/dist/src/projects/workspace.js +0 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
- package/dist/src/providers/auth-runtime/is-configured.js +0 -2
- package/dist/src/providers/auth-runtime/oauth.js +0 -2
- package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
- package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
- package/dist/src/providers/constants.js +0 -2
- package/dist/src/providers/domestic-presets.js +0 -2
- package/dist/src/providers/env-keys.js +0 -2
- package/dist/src/providers/extension-stream-bridge.js +0 -2
- package/dist/src/providers/index.js +0 -2
- package/dist/src/providers/model-call.js +0 -2
- package/dist/src/providers/model-discovery.js +0 -2
- package/dist/src/providers/model-registry.js +0 -2
- package/dist/src/providers/model-supplements.js +0 -2
- package/dist/src/providers/plugin-registry.js +0 -2
- package/dist/src/providers/presentation.js +0 -2
- package/dist/src/remote-access/exposure-guards.js +0 -2
- package/dist/src/remote-access/exposure-manager.js +0 -2
- package/dist/src/review/review-git.js +0 -2
- package/dist/src/review/review-types.js +0 -2
- package/dist/src/routing/account-id.js +0 -2
- package/dist/src/routing/agent-session-key.js +0 -2
- package/dist/src/routing/bindings.js +0 -2
- package/dist/src/routing/index.js +0 -2
- package/dist/src/routing/resolve-route.js +0 -2
- package/dist/src/routing/resolve-tui-session-key.js +0 -2
- package/dist/src/routing/session-key-utils.js +0 -2
- package/dist/src/routing/session-key.js +0 -2
- package/dist/src/session/abort-cutoff.js +0 -2
- package/dist/src/session/chat-export.js +0 -2
- package/dist/src/session/client-history.js +0 -2
- package/dist/src/session/compaction-checkpoints.js +0 -2
- package/dist/src/session/config-store.js +0 -2
- package/dist/src/session/init-session-turn.js +0 -2
- package/dist/src/session/lifecycle-timestamps.js +0 -2
- package/dist/src/session/load-jsonl-entries.js +0 -2
- package/dist/src/session/manager.js +0 -2
- package/dist/src/session/patch-metadata.js +0 -2
- package/dist/src/session/reset-policy.js +0 -2
- package/dist/src/session/reset-triggers.js +0 -2
- package/dist/src/session/reset-type.js +0 -2
- package/dist/src/session/resolve-session.js +0 -2
- package/dist/src/session/session-context-for-llm.js +0 -2
- package/dist/src/session/session-id.js +0 -2
- package/dist/src/session/session-title.js +0 -2
- package/dist/src/session/session-workspace.js +0 -2
- package/dist/src/session/store.js +0 -2
- package/dist/src/session/stored-rows-to-file-entries.js +0 -2
- package/dist/src/session/thinking-resolve.js +0 -2
- package/dist/src/session/transcript-events.js +0 -2
- package/dist/src/session/transcript-format.js +0 -2
- package/dist/src/session/transcript-outline.js +0 -2
- package/dist/src/session/transcript-stats.js +0 -2
- package/dist/src/session/types.js +0 -2
- package/dist/src/session/user-round-delete.js +0 -2
- package/dist/src/share/share-audit.js +0 -2
- package/dist/src/share/share-auto.js +0 -2
- package/dist/src/share/share-config.js +0 -2
- package/dist/src/share/share-landing.js +0 -2
- package/dist/src/share/share-rate-limit.js +0 -2
- package/dist/src/share/share-store.js +0 -2
- package/dist/src/share/share-thumbnail.js +0 -2
- package/dist/src/share/share-types.js +0 -2
- package/dist/src/share/share-url.js +0 -2
- package/dist/src/share/share-zip.js +0 -2
- package/dist/src/share/site-proxy.js +0 -2
- package/dist/src/share/site-share-config.js +0 -2
- package/dist/src/share/site-share-router.js +0 -2
- package/dist/src/share/site-share-store.js +0 -2
- package/dist/src/share/site-share-types.js +0 -2
- package/dist/src/share/site-static-serve.js +0 -2
- package/dist/src/storage/sqlite/activity-repository.js +0 -2
- package/dist/src/storage/sqlite/config-repository.js +0 -2
- package/dist/src/storage/sqlite/connection.js +0 -2
- package/dist/src/storage/sqlite/connector-repository.js +0 -2
- package/dist/src/storage/sqlite/fts.js +0 -2
- package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
- package/dist/src/storage/sqlite/migrations/discover.js +0 -2
- package/dist/src/storage/sqlite/migrations/errors.js +0 -2
- package/dist/src/storage/sqlite/migrations/runner.js +0 -2
- package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
- package/dist/src/storage/sqlite/notes-repository.js +0 -2
- package/dist/src/storage/sqlite/paths.js +0 -2
- package/dist/src/storage/sqlite/row-mappers.js +0 -2
- package/dist/src/storage/sqlite/schema-version.js +0 -2
- package/dist/src/storage/sqlite/schema.js +0 -2
- package/dist/src/storage/sqlite/session-metadata.js +0 -2
- package/dist/src/storage/sqlite/session-repository.js +0 -2
- package/dist/src/storage/sqlite/transaction.js +0 -2
- package/dist/src/storage/sqlite/transcript-repository.js +0 -2
- package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
- package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
- package/dist/src/tui/backends/embedded-backend.js +0 -2
- package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
- package/dist/src/tui/chat-history.js +0 -2
- package/dist/src/tui/clipboard-image.js +0 -2
- package/dist/src/tui/clipboard-text.js +0 -2
- package/dist/src/tui/components/assistant-message.js +0 -2
- package/dist/src/tui/components/bash-execution.js +0 -2
- package/dist/src/tui/components/bash-summary.js +0 -2
- package/dist/src/tui/components/branch-message-summary.js +0 -2
- package/dist/src/tui/components/branch-summary.js +0 -2
- package/dist/src/tui/components/chat-log.js +0 -2
- package/dist/src/tui/components/compaction-summary.js +0 -2
- package/dist/src/tui/components/custom-editor.js +0 -2
- package/dist/src/tui/components/custom-message.js +0 -2
- package/dist/src/tui/components/dynamic-border.js +0 -2
- package/dist/src/tui/components/extension-dialog.js +0 -2
- package/dist/src/tui/components/fuzzy-filter.js +0 -2
- package/dist/src/tui/components/scoped-models-selector.js +0 -2
- package/dist/src/tui/components/searchable-select-list.js +0 -2
- package/dist/src/tui/components/session-selector.js +0 -2
- package/dist/src/tui/components/settings-selector.js +0 -2
- package/dist/src/tui/components/thinking-selector.js +0 -2
- package/dist/src/tui/components/tool-execution.js +0 -2
- package/dist/src/tui/components/tui-bottom-bar.js +0 -2
- package/dist/src/tui/components/tui-header.js +0 -2
- package/dist/src/tui/components/user-message.js +0 -2
- package/dist/src/tui/components/visual-truncate.js +0 -2
- package/dist/src/tui/extension-host/autocomplete.js +0 -2
- package/dist/src/tui/extension-host/host.js +0 -2
- package/dist/src/tui/extension-host/load-extensions.js +0 -2
- package/dist/src/tui/extension-host/runtime-context.js +0 -2
- package/dist/src/tui/extension-host/runtime.js +0 -2
- package/dist/src/tui/extension-host/surface.js +0 -2
- package/dist/src/tui/extension-host/tool-renderers.js +0 -2
- package/dist/src/tui/format-tui-hotkeys.js +0 -2
- package/dist/src/tui/sse-consumer.js +0 -2
- package/dist/src/tui/theme/dark.js +0 -2
- package/dist/src/tui/theme/light.js +0 -2
- package/dist/src/tui/theme-manager.js +0 -2
- package/dist/src/tui/theme.js +0 -2
- package/dist/src/tui/tool-summary.js +0 -2
- package/dist/src/tui/tui-agent-events.js +0 -2
- package/dist/src/tui/tui-command-formatters.js +0 -2
- package/dist/src/tui/tui-commands.js +0 -2
- package/dist/src/tui/tui-context-usage.js +0 -2
- package/dist/src/tui/tui-extension-user-message.js +0 -2
- package/dist/src/tui/tui-fd-path.js +0 -2
- package/dist/src/tui/tui-file-autocomplete.js +0 -2
- package/dist/src/tui/tui-follow-up-queue.js +0 -2
- package/dist/src/tui/tui-git-branch.js +0 -2
- package/dist/src/tui/tui-keybindings-file.js +0 -2
- package/dist/src/tui/tui-lifecycle.js +0 -2
- package/dist/src/tui/tui-local-shell.js +0 -2
- package/dist/src/tui/tui-model-picker.js +0 -2
- package/dist/src/tui/tui-oauth-login.js +0 -2
- package/dist/src/tui/tui-overlays.js +0 -2
- package/dist/src/tui/tui-picker-overlay.js +0 -2
- package/dist/src/tui/tui-run-state.js +0 -2
- package/dist/src/tui/tui-run-status-format.js +0 -2
- package/dist/src/tui/tui-runtime-hints.js +0 -2
- package/dist/src/tui/tui-scoped-models.js +0 -2
- package/dist/src/tui/tui-session-actions.js +0 -2
- package/dist/src/tui/tui-session-format.js +0 -2
- package/dist/src/tui/tui-session-snapshot.js +0 -2
- package/dist/src/tui/tui-session-stats.js +0 -2
- package/dist/src/tui/tui-settings.js +0 -2
- package/dist/src/tui/tui-skills-autocomplete.js +0 -2
- package/dist/src/tui/tui-startup-resources.js +0 -2
- package/dist/src/tui/tui-startup-text.js +0 -2
- package/dist/src/tui/tui-stdio-filter.js +0 -2
- package/dist/src/tui/tui-submit.js +0 -2
- package/dist/src/tui/tui-suspend.js +0 -2
- package/dist/src/tui/tui-timeline-picker.js +0 -2
- package/dist/src/tui/tui-timeline.js +0 -2
- package/dist/src/tui/tui-tool-diff.js +0 -2
- package/dist/src/tui/tui-tool-result.js +0 -2
- package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
- package/dist/src/tui/tui-transcript-tree.js +0 -2
- package/dist/src/tui/tui-types.js +0 -2
- package/dist/src/tui/tui-workflow-slash.js +0 -2
- package/dist/src/tui/tui.js +0 -2
- package/dist/src/tui/xopc-tui-keybindings.js +0 -2
- package/dist/src/tunnel/broker-client.js +0 -2
- package/dist/src/tunnel/consent.js +0 -2
- package/dist/src/tunnel/enable-lan-pairing.js +0 -2
- package/dist/src/tunnel/env.js +0 -2
- package/dist/src/tunnel/frp-subdomain-host.js +0 -2
- package/dist/src/tunnel/frpc-binary.js +0 -2
- package/dist/src/tunnel/frpc-config.js +0 -2
- package/dist/src/tunnel/frpc-extract.js +0 -2
- package/dist/src/tunnel/frpc-process.js +0 -2
- package/dist/src/tunnel/gateway-lifecycle.js +0 -2
- package/dist/src/tunnel/pair-context.js +0 -2
- package/dist/src/tunnel/pair-url.js +0 -2
- package/dist/src/tunnel/pairing-rate-limit.js +0 -2
- package/dist/src/tunnel/pairing.js +0 -2
- package/dist/src/tunnel/tunnel-audit.js +0 -2
- package/dist/src/tunnel/tunnel-config.js +0 -2
- package/dist/src/tunnel/tunnel-persist.js +0 -2
- package/dist/src/tunnel/tunnel-qr.js +0 -2
- package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
- package/dist/src/tunnel/tunnel-service.js +0 -2
- package/dist/src/tunnel/tunnel-state.js +0 -2
- package/dist/src/tunnel/well-known.js +0 -2
- package/dist/src/user-context/config.js +0 -2
- package/dist/src/user-context/import.js +0 -2
- package/dist/src/user-context/owner.js +0 -2
- package/dist/src/user-context/profile.js +0 -2
- package/dist/src/user-context/projection.js +0 -2
- package/dist/src/user-context/runtime.js +0 -2
- package/dist/src/user-context/source-recommendations.js +0 -2
- package/dist/src/user-context/trust-policy.js +0 -2
- package/dist/src/utils/global-singleton.js +0 -2
- package/dist/src/utils/helpers.js +0 -2
- package/dist/src/utils/index.js +0 -2
- package/dist/src/utils/is-record.js +0 -2
- package/dist/src/utils/logger/audit.js +0 -2
- package/dist/src/utils/logger/config.js +0 -2
- package/dist/src/utils/logger/context.js +0 -2
- package/dist/src/utils/logger/exporters.js +0 -2
- package/dist/src/utils/logger/index.js +0 -2
- package/dist/src/utils/logger/log-store.js +0 -2
- package/dist/src/utils/logger/log-stream.js +0 -2
- package/dist/src/utils/logger/pino-record.js +0 -2
- package/dist/src/utils/logger/redact.js +0 -2
- package/dist/src/utils/logger/rotation.js +0 -2
- package/dist/src/utils/logger/shutdown.js +0 -2
- package/dist/src/utils/logger/stats.js +0 -2
- package/dist/src/utils/logger/streams.js +0 -2
- package/dist/src/utils/logger/types.js +0 -2
- package/dist/src/utils/logger.js +0 -2
- package/dist/src/utils/redact-sensitive-url.js +0 -2
- package/dist/src/utils/sanitize-log.js +0 -2
- package/dist/src/utils/string-coerce.js +0 -2
- package/dist/src/voice/language-profile.js +0 -2
- package/dist/src/voice/local/model-files.js +0 -2
- package/dist/src/voice/local/model-manager.js +0 -2
- package/dist/src/voice/local/models.js +0 -2
- package/dist/src/voice/local/runtime-client.js +0 -2
- package/dist/src/voice/local/runtime-dispatcher.js +0 -2
- package/dist/src/voice/local/runtime-worker.js +12 -4
- package/dist/src/voice/local/wav.js +0 -2
- package/dist/src/voice/metadata/builtin.js +0 -2
- package/dist/src/voice/metadata/registry.js +0 -2
- package/dist/src/voice/stt/availability.js +0 -2
- package/dist/src/voice/stt/config-slice.js +0 -2
- package/dist/src/voice/stt/factory.js +0 -2
- package/dist/src/voice/stt/index.js +0 -2
- package/dist/src/voice/stt/list-providers.js +0 -2
- package/dist/src/voice/stt/mention.js +0 -2
- package/dist/src/voice/stt/preflight.js +0 -2
- package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
- package/dist/src/voice/stt/providers/local-transcription.js +0 -2
- package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
- package/dist/src/voice/stt/transcribe-core.js +0 -2
- package/dist/src/voice/stt/types.js +0 -2
- package/dist/src/voice/tts/audio.js +0 -2
- package/dist/src/voice/tts/config-slice.js +0 -2
- package/dist/src/voice/tts/directives.js +0 -2
- package/dist/src/voice/tts/factory.js +0 -2
- package/dist/src/voice/tts/list-providers.js +0 -2
- package/dist/src/voice/tts/merge-config.js +0 -2
- package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
- package/dist/src/voice/tts/payload.js +0 -2
- package/dist/src/voice/tts/preprocess.js +0 -2
- package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
- package/dist/src/voice/tts/providers/edge-speech.js +0 -2
- package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
- package/dist/src/voice/tts/providers/openai-speech.js +0 -2
- package/dist/src/voice/tts/sentence-boundary.js +0 -2
- package/dist/src/voice/tts/service.js +0 -2
- package/dist/src/voice/tts/speak-core.js +0 -2
- package/dist/src/voice/tts/speech-registry.js +0 -2
- package/dist/src/voice/tts/status-tracker.js +0 -2
- package/dist/src/voice/tts/summarize.js +0 -2
- package/dist/src/voice/tts/types.js +0 -2
- package/dist/src/work-discovery/analyzer.js +0 -2
- package/dist/src/work-discovery/probe.js +0 -2
- package/dist/src/work-discovery/repository.js +0 -2
- package/dist/src/work-discovery/service.js +0 -2
- package/dist/src/work-items/agent-context.js +0 -2
- package/dist/src/work-items/work-item-service.js +0 -2
- package/dist/src/work-items/work-item-store.js +0 -2
- package/dist/src/work-items/work-item-workflow-judge.js +0 -2
- package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
- package/dist/src/workflows/domain/definition-utils.js +0 -2
- package/dist/src/workflows/domain/run.js +0 -2
- package/dist/src/workflows/domain/schema-validation.js +0 -2
- package/dist/src/workflows/domain/validation.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
- package/dist/src/workflows/engine/projector.js +0 -2
- package/dist/src/workflows/engine/workflow-engine.js +0 -2
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
- package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
- package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
- package/dist/src/workflows/service/workflow-run-service.js +1 -3
- package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
- package/dist/src/workflows/service/workflow-session-key.js +0 -2
- package/dist/src/workflows/store/event-store.js +0 -2
- package/dist/src/workflows/store/paths.js +0 -2
- package/dist/src/workflows/store/run-index-store.js +0 -2
- package/dist/src/workflows/store/run-store.js +0 -2
- package/package.json +43 -12
- package/skills/creative/hatch-pet/SKILL.md +1 -0
- package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/demo-memory/src/index.js.map +0 -1
- package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
- package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
- package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
- package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/format.js.map +0 -1
- package/dist/extensions/feishu/src/index.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
- package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/feishu/src/plugin.js.map +0 -1
- package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
- package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
- package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
- package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
- package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
- package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
- package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
- package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
- package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
- package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
- package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
- package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
- package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
- package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
- package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
- package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
- package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/telegram/src/access-control.js.map +0 -1
- package/dist/extensions/telegram/src/account-manager.js.map +0 -1
- package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/api-root.js.map +0 -1
- package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
- package/dist/extensions/telegram/src/approval-store.js.map +0 -1
- package/dist/extensions/telegram/src/caption.js.map +0 -1
- package/dist/extensions/telegram/src/command-handler.js.map +0 -1
- package/dist/extensions/telegram/src/config-schema.js.map +0 -1
- package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
- package/dist/extensions/telegram/src/dedupe.js.map +0 -1
- package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
- package/dist/extensions/telegram/src/doctor.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
- package/dist/extensions/telegram/src/errors.js.map +0 -1
- package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
- package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
- package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
- package/dist/extensions/telegram/src/format.js.map +0 -1
- package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
- package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
- package/dist/extensions/telegram/src/index.js.map +0 -1
- package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
- package/dist/extensions/telegram/src/network-errors.js.map +0 -1
- package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
- package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
- package/dist/extensions/telegram/src/plugin.js.map +0 -1
- package/dist/extensions/telegram/src/polling-session.js.map +0 -1
- package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
- package/dist/extensions/telegram/src/reactions.js.map +0 -1
- package/dist/extensions/telegram/src/reply-params.js.map +0 -1
- package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
- package/dist/extensions/telegram/src/send-options.js.map +0 -1
- package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
- package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
- package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
- package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
- package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
- package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
- package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
- package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
- package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/weixin/src/api/api.js.map +0 -1
- package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
- package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
- package/dist/extensions/weixin/src/api/types.js.map +0 -1
- package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
- package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
- package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
- package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
- package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
- package/dist/extensions/weixin/src/config-schema.js.map +0 -1
- package/dist/extensions/weixin/src/config-surface.js.map +0 -1
- package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
- package/dist/extensions/weixin/src/index.js.map +0 -1
- package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
- package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
- package/dist/extensions/weixin/src/media/mime.js.map +0 -1
- package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
- package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
- package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
- package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/weixin/src/plugin.js.map +0 -1
- package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
- package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
- package/dist/extensions/weixin/src/util/logger.js.map +0 -1
- package/dist/extensions/weixin/src/util/random.js.map +0 -1
- package/dist/extensions/weixin/src/util/redact.js.map +0 -1
- package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
- package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
- package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
- package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
- package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
- package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
- package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
- package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
- package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
- package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
- package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
- package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
- package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
- package/dist/gateway/static/root/favicon-icon.svg +0 -187
- package/dist/package.js.map +0 -1
- package/dist/src/activity/context.js.map +0 -1
- package/dist/src/activity/emitter.js.map +0 -1
- package/dist/src/activity/service.js.map +0 -1
- package/dist/src/agent/agent-manager.js.map +0 -1
- package/dist/src/agent/agent-scope.js.map +0 -1
- package/dist/src/agent/background-review/coordinator.js.map +0 -1
- package/dist/src/agent/background-review/prompts.js.map +0 -1
- package/dist/src/agent/background-review/run-background-review.js.map +0 -1
- package/dist/src/agent/background-review/settings.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
- package/dist/src/agent/capabilities/definitions.js.map +0 -1
- package/dist/src/agent/capabilities/registry.js.map +0 -1
- package/dist/src/agent/child-agent-factory.js.map +0 -1
- package/dist/src/agent/client-error-format.js.map +0 -1
- package/dist/src/agent/code-intelligence/binary.js.map +0 -1
- package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
- package/dist/src/agent/code-intelligence/tools.js.map +0 -1
- package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
- package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
- package/dist/src/agent/context/project-context.js.map +0 -1
- package/dist/src/agent/context/workspace-seed.js.map +0 -1
- package/dist/src/agent/context/workspace-state.js.map +0 -1
- package/dist/src/agent/context/workspace.js.map +0 -1
- package/dist/src/agent/embedded/run-for-session.js.map +0 -1
- package/dist/src/agent/embedded/run-turn.js.map +0 -1
- package/dist/src/agent/embedded/runs.js.map +0 -1
- package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
- package/dist/src/agent/embedded/session-runner.js.map +0 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
- package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
- package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
- package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
- package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
- package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
- package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
- package/dist/src/agent/failover-error.js.map +0 -1
- package/dist/src/agent/fallback/candidates.js.map +0 -1
- package/dist/src/agent/fallback/reason.js.map +0 -1
- package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
- package/dist/src/agent/goals/checklist-judge.js.map +0 -1
- package/dist/src/agent/goals/checklist-types.js.map +0 -1
- package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
- package/dist/src/agent/goals/goal-locale.js.map +0 -1
- package/dist/src/agent/goals/judge.js.map +0 -1
- package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
- package/dist/src/agent/goals/post-turn.js.map +0 -1
- package/dist/src/agent/goals/state.js.map +0 -1
- package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
- package/dist/src/agent/image/generation/bundled.js.map +0 -1
- package/dist/src/agent/image/generation/image-assets.js.map +0 -1
- package/dist/src/agent/image/generation/model-ref.js.map +0 -1
- package/dist/src/agent/image/generation/normalization.js.map +0 -1
- package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
- package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
- package/dist/src/agent/image/generation/runtime.js.map +0 -1
- package/dist/src/agent/image/image-helpers.js.map +0 -1
- package/dist/src/agent/image/image-model-fallback.js.map +0 -1
- package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
- package/dist/src/agent/image/load-image-media.js.map +0 -1
- package/dist/src/agent/image/tool-model-config.js.map +0 -1
- package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
- package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
- package/dist/src/agent/image/understanding/runtime.js.map +0 -1
- package/dist/src/agent/image/vision-detection.js.map +0 -1
- package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
- package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
- package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
- package/dist/src/agent/ipc/bus.js.map +0 -1
- package/dist/src/agent/ipc/inbox.js.map +0 -1
- package/dist/src/agent/ipc/socket.js.map +0 -1
- package/dist/src/agent/ipc/types.js.map +0 -1
- package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
- package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
- package/dist/src/agent/lifecycle/manager.js.map +0 -1
- package/dist/src/agent/lifecycle/progress.js.map +0 -1
- package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
- package/dist/src/agent/lifecycle/typing.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
- package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
- package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
- package/dist/src/agent/mcp/mcp-http.js.map +0 -1
- package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
- package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
- package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
- package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
- package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
- package/dist/src/agent/media-generation/model-ref.js.map +0 -1
- package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
- package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
- package/dist/src/agent/memory/agent-message-access.js.map +0 -1
- package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
- package/dist/src/agent/memory/builtin-provider.js.map +0 -1
- package/dist/src/agent/memory/compaction.js.map +0 -1
- package/dist/src/agent/memory/context/planner.js.map +0 -1
- package/dist/src/agent/memory/context-fence.js.map +0 -1
- package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
- package/dist/src/agent/memory/dreaming/config.js.map +0 -1
- package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
- package/dist/src/agent/memory/dreaming/events.js.map +0 -1
- package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
- package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
- package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
- package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
- package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
- package/dist/src/agent/memory/lifecycle.js.map +0 -1
- package/dist/src/agent/memory/manager.js.map +0 -1
- package/dist/src/agent/memory/memory-config.js.map +0 -1
- package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
- package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
- package/dist/src/agent/memory/sensitivity.js.map +0 -1
- package/dist/src/agent/memory/source-origin.js.map +0 -1
- package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
- package/dist/src/agent/memory/summary-generator.js.map +0 -1
- package/dist/src/agent/memory/understanding/correction.js.map +0 -1
- package/dist/src/agent/memory/understanding/quality.js.map +0 -1
- package/dist/src/agent/memory/understanding/service.js.map +0 -1
- package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
- package/dist/src/agent/memory/user-message-text.js.map +0 -1
- package/dist/src/agent/memory/window.js.map +0 -1
- package/dist/src/agent/messaging/command-handler.js.map +0 -1
- package/dist/src/agent/messaging/message-router.js.map +0 -1
- package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
- package/dist/src/agent/messaging/stream-manager.js.map +0 -1
- package/dist/src/agent/middleware/context.js.map +0 -1
- package/dist/src/agent/middleware/self-verify.js.map +0 -1
- package/dist/src/agent/models/manager.js.map +0 -1
- package/dist/src/agent/models/request-limiter.js.map +0 -1
- package/dist/src/agent/models/selection.js.map +0 -1
- package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
- package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
- package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
- package/dist/src/agent/prompt/memory/index.js.map +0 -1
- package/dist/src/agent/prompt/safety.js.map +0 -1
- package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
- package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
- package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
- package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
- package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
- package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
- package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
- package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
- package/dist/src/agent/prompt/subagent-context.js.map +0 -1
- package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
- package/dist/src/agent/prompt/system-prompt.js.map +0 -1
- package/dist/src/agent/prompt/system-reminder.js.map +0 -1
- package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
- package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
- package/dist/src/agent/reply/startup-context.js.map +0 -1
- package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
- package/dist/src/agent/sandbox/command-validator.js.map +0 -1
- package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
- package/dist/src/agent/sandbox/path-policy.js.map +0 -1
- package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
- package/dist/src/agent/sandbox/types.js.map +0 -1
- package/dist/src/agent/service/async-queue.js.map +0 -1
- package/dist/src/agent/service/btw-query.js.map +0 -1
- package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
- package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
- package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
- package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
- package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
- package/dist/src/agent/service/session-context-report.js.map +0 -1
- package/dist/src/agent/service/webchat-tts.js.map +0 -1
- package/dist/src/agent/service-inbound-utils.js.map +0 -1
- package/dist/src/agent/service.js.map +0 -1
- package/dist/src/agent/session/session-config-service.js.map +0 -1
- package/dist/src/agent/session/session-context.js.map +0 -1
- package/dist/src/agent/session/session-hydrator.js.map +0 -1
- package/dist/src/agent/session/session-inspector.js.map +0 -1
- package/dist/src/agent/session/session-lifecycle.js.map +0 -1
- package/dist/src/agent/session/session-state-bag.js.map +0 -1
- package/dist/src/agent/session/tracker.js.map +0 -1
- package/dist/src/agent/skills/config.js.map +0 -1
- package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
- package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
- package/dist/src/agent/skills/hub-hash.js.map +0 -1
- package/dist/src/agent/skills/hub-lock.js.map +0 -1
- package/dist/src/agent/skills/hub-pull.js.map +0 -1
- package/dist/src/agent/skills/index.js.map +0 -1
- package/dist/src/agent/skills/install-target.js.map +0 -1
- package/dist/src/agent/skills/installer.js.map +0 -1
- package/dist/src/agent/skills/managed-store.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
- package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
- package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
- package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
- package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
- package/dist/src/agent/skills/required-env-vars.js.map +0 -1
- package/dist/src/agent/skills/scanner.js.map +0 -1
- package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
- package/dist/src/agent/skills/skill-manager.js.map +0 -1
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
- package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
- package/dist/src/agent/skills/skill-view-path.js.map +0 -1
- package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
- package/dist/src/agent/skills/test-framework.js.map +0 -1
- package/dist/src/agent/skills/watcher.js.map +0 -1
- package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
- package/dist/src/agent/source-context/injector.js.map +0 -1
- package/dist/src/agent/source-context/types.js.map +0 -1
- package/dist/src/agent/starter-agents.js.map +0 -1
- package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
- package/dist/src/agent/tool-manuals/browser.js.map +0 -1
- package/dist/src/agent/tool-manuals/index.js.map +0 -1
- package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
- package/dist/src/agent/tools/apply-patch.js.map +0 -1
- package/dist/src/agent/tools/automation-tool.js.map +0 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
- package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
- package/dist/src/agent/tools/chain-tracker.js.map +0 -1
- package/dist/src/agent/tools/clarify-tool.js.map +0 -1
- package/dist/src/agent/tools/cli-clarify.js.map +0 -1
- package/dist/src/agent/tools/communication.js.map +0 -1
- package/dist/src/agent/tools/composio-tool.js.map +0 -1
- package/dist/src/agent/tools/concurrency.js.map +0 -1
- package/dist/src/agent/tools/create-share-tool.js.map +0 -1
- package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
- package/dist/src/agent/tools/delegate-tool.js.map +0 -1
- package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
- package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
- package/dist/src/agent/tools/edit-diff.js.map +0 -1
- package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
- package/dist/src/agent/tools/error-tracker.js.map +0 -1
- package/dist/src/agent/tools/exec-command.js.map +0 -1
- package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
- package/dist/src/agent/tools/executor.js.map +0 -1
- package/dist/src/agent/tools/factory.js.map +0 -1
- package/dist/src/agent/tools/find.js.map +0 -1
- package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
- package/dist/src/agent/tools/goal-tool.js.map +0 -1
- package/dist/src/agent/tools/grep.js.map +0 -1
- package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
- package/dist/src/agent/tools/image-tool.js.map +0 -1
- package/dist/src/agent/tools/list-dir.js.map +0 -1
- package/dist/src/agent/tools/media-read-tool.js.map +0 -1
- package/dist/src/agent/tools/memory-tool.js.map +0 -1
- package/dist/src/agent/tools/metadata.js.map +0 -1
- package/dist/src/agent/tools/read.js.map +0 -1
- package/dist/src/agent/tools/search/http.js.map +0 -1
- package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
- package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
- package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
- package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
- package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
- package/dist/src/agent/tools/search/region.js.map +0 -1
- package/dist/src/agent/tools/search/registry.js.map +0 -1
- package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
- package/dist/src/agent/tools/send-media.js.map +0 -1
- package/dist/src/agent/tools/session-search-tool.js.map +0 -1
- package/dist/src/agent/tools/session-status-tool.js.map +0 -1
- package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
- package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
- package/dist/src/agent/tools/skills-tools.js.map +0 -1
- package/dist/src/agent/tools/structured-output.js.map +0 -1
- package/dist/src/agent/tools/todo-tool.js.map +0 -1
- package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
- package/dist/src/agent/tools/tool-paths.js.map +0 -1
- package/dist/src/agent/tools/truncate.js.map +0 -1
- package/dist/src/agent/tools/tts-tool.js.map +0 -1
- package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
- package/dist/src/agent/tools/url-safety.js.map +0 -1
- package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
- package/dist/src/agent/tools/web-extract.js.map +0 -1
- package/dist/src/agent/tools/web.js.map +0 -1
- package/dist/src/agent/tools/workflow-tool.js.map +0 -1
- package/dist/src/agent/tools/write.js.map +0 -1
- package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
- package/dist/src/agent/transcript/google-api.js.map +0 -1
- package/dist/src/agent/transcript/model-selection.js.map +0 -1
- package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
- package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
- package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
- package/dist/src/agent/transcript/thinking-types.js.map +0 -1
- package/dist/src/agent/transcript/thinking.js.map +0 -1
- package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
- package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
- package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
- package/dist/src/agent/workflow/agent-progress.js.map +0 -1
- package/dist/src/agent/workflow/builtins/index.js.map +0 -1
- package/dist/src/agent/workflow/catalog.js.map +0 -1
- package/dist/src/agent/workflow/progress-broker.js.map +0 -1
- package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
- package/dist/src/agent/workflow/snapshot.js.map +0 -1
- package/dist/src/agent/workflow/step-labels.js.map +0 -1
- package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
- package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
- package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
- package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
- package/dist/src/agent-manifest/index.js.map +0 -1
- package/dist/src/agent-manifest/preset-chain.js.map +0 -1
- package/dist/src/agent-manifest/prompt.js.map +0 -1
- package/dist/src/agent-manifest/resolver.js.map +0 -1
- package/dist/src/agent-manifest/schema.js.map +0 -1
- package/dist/src/agent-manifest/validator.js.map +0 -1
- package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
- package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
- package/dist/src/agent-runtime/model-router.js.map +0 -1
- package/dist/src/agent-runtime/run-trace.js.map +0 -1
- package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
- package/dist/src/agent-runtime/tool-registry.js.map +0 -1
- package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
- package/dist/src/ai-assist/text-assist.js.map +0 -1
- package/dist/src/auth/credentials.js.map +0 -1
- package/dist/src/auth/index.js.map +0 -1
- package/dist/src/auth/oauth/anthropic.js.map +0 -1
- package/dist/src/auth/oauth/github-copilot.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
- package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
- package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
- package/dist/src/auth/oauth/minimax.js.map +0 -1
- package/dist/src/auth/oauth/openai-codex.js.map +0 -1
- package/dist/src/auth/oauth/pkce.js.map +0 -1
- package/dist/src/auth/profiles/oauth.js.map +0 -1
- package/dist/src/auth/profiles/order.js.map +0 -1
- package/dist/src/auth/profiles/profiles.js.map +0 -1
- package/dist/src/auth/profiles/store.js.map +0 -1
- package/dist/src/auth/sync-provider-auth.js.map +0 -1
- package/dist/src/automations/api/routes.js.map +0 -1
- package/dist/src/automations/domain/schedule.js.map +0 -1
- package/dist/src/automations/domain/validation.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
- package/dist/src/automations/product-events.js.map +0 -1
- package/dist/src/automations/service/action-executor.js.map +0 -1
- package/dist/src/automations/service/automation-service.js.map +0 -1
- package/dist/src/automations/storage/automation-repository.js.map +0 -1
- package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
- package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
- package/dist/src/browser/actions/registry.js.map +0 -1
- package/dist/src/browser/backend-from-config.js.map +0 -1
- package/dist/src/browser/browser-command-timeout.js.map +0 -1
- package/dist/src/browser/cache-dir-policy.js.map +0 -1
- package/dist/src/browser/cdp-local-launcher.js.map +0 -1
- package/dist/src/browser/cdp-supervisor.js.map +0 -1
- package/dist/src/browser/free-port.js.map +0 -1
- package/dist/src/browser/humanize.js.map +0 -1
- package/dist/src/browser/install-lock.js.map +0 -1
- package/dist/src/browser/manager.js.map +0 -1
- package/dist/src/browser/pipeline/output.js.map +0 -1
- package/dist/src/browser/pipeline/runner.js.map +0 -1
- package/dist/src/browser/pipeline/schema.js.map +0 -1
- package/dist/src/browser/pipeline/source.js.map +0 -1
- package/dist/src/browser/pipeline/template.js.map +0 -1
- package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
- package/dist/src/browser/providers/browser-use.js.map +0 -1
- package/dist/src/browser/providers/browserbase.js.map +0 -1
- package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
- package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
- package/dist/src/browser/providers/extension.js.map +0 -1
- package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
- package/dist/src/browser/providers/playwright-install.js.map +0 -1
- package/dist/src/browser/readiness.js.map +0 -1
- package/dist/src/browser/schemas.js.map +0 -1
- package/dist/src/browser/session-lifecycle.js.map +0 -1
- package/dist/src/browser/snapshot-helpers.js.map +0 -1
- package/dist/src/browser/stealth.js.map +0 -1
- package/dist/src/browser/url-policy.js.map +0 -1
- package/dist/src/capabilities/store-connector.js.map +0 -1
- package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
- package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
- package/dist/src/channels/attachments/inbound-types.js.map +0 -1
- package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
- package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
- package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
- package/dist/src/channels/config-helpers.js.map +0 -1
- package/dist/src/channels/envelope-timestamp.js.map +0 -1
- package/dist/src/channels/exec-approval-runtime.js.map +0 -1
- package/dist/src/channels/health-monitor.js.map +0 -1
- package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
- package/dist/src/channels/internal-outbound.js.map +0 -1
- package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
- package/dist/src/channels/manager.js.map +0 -1
- package/dist/src/channels/media.js.map +0 -1
- package/dist/src/channels/outbound/deliver.js.map +0 -1
- package/dist/src/channels/outbound/normalize.js.map +0 -1
- package/dist/src/channels/outbound/persist-store.js.map +0 -1
- package/dist/src/channels/outbound/queue.js.map +0 -1
- package/dist/src/channels/outbound-sender.js.map +0 -1
- package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
- package/dist/src/channels/pairing/approve-cli.js.map +0 -1
- package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
- package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
- package/dist/src/channels/pairing/pairing-events.js.map +0 -1
- package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
- package/dist/src/channels/pairing/pairing-service.js.map +0 -1
- package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
- package/dist/src/channels/pairing/pairing-store.js.map +0 -1
- package/dist/src/channels/pairing/paths.js.map +0 -1
- package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
- package/dist/src/channels/pipeline.js.map +0 -1
- package/dist/src/channels/plugin-registry.js.map +0 -1
- package/dist/src/channels/plugins/registry.js.map +0 -1
- package/dist/src/channels/restart-policy.js.map +0 -1
- package/dist/src/channels/security-helpers.js.map +0 -1
- package/dist/src/channels/security.js.map +0 -1
- package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
- package/dist/src/chat-commands/agent-edit.js.map +0 -1
- package/dist/src/chat-commands/builtins/config.js.map +0 -1
- package/dist/src/chat-commands/builtins/context.js.map +0 -1
- package/dist/src/chat-commands/builtins/goal.js.map +0 -1
- package/dist/src/chat-commands/builtins/model.js.map +0 -1
- package/dist/src/chat-commands/builtins/review.js.map +0 -1
- package/dist/src/chat-commands/builtins/session.js.map +0 -1
- package/dist/src/chat-commands/builtins/skill.js.map +0 -1
- package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
- package/dist/src/chat-commands/builtins/system.js.map +0 -1
- package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
- package/dist/src/chat-commands/builtins/tts.js.map +0 -1
- package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
- package/dist/src/chat-commands/command-parse.js.map +0 -1
- package/dist/src/chat-commands/config-paths.js.map +0 -1
- package/dist/src/chat-commands/config-value.js.map +0 -1
- package/dist/src/chat-commands/context.js.map +0 -1
- package/dist/src/chat-commands/format-output.js.map +0 -1
- package/dist/src/chat-commands/index.js.map +0 -1
- package/dist/src/chat-commands/processor.js.map +0 -1
- package/dist/src/chat-commands/registry.js.map +0 -1
- package/dist/src/chat-commands/session-key.js.map +0 -1
- package/dist/src/cli/argv-invocation.js.map +0 -1
- package/dist/src/cli/argv.js.map +0 -1
- package/dist/src/cli/bin.js.map +0 -1
- package/dist/src/cli/cli-log-level-preset.js.map +0 -1
- package/dist/src/cli/command-catalog.js.map +0 -1
- package/dist/src/cli/command-loaders.js.map +0 -1
- package/dist/src/cli/command-manifest.js.map +0 -1
- package/dist/src/cli/command-path-matches.js.map +0 -1
- package/dist/src/cli/command-path-policy.js.map +0 -1
- package/dist/src/cli/command-startup-policy.js.map +0 -1
- package/dist/src/cli/commands/agent/interactive.js.map +0 -1
- package/dist/src/cli/commands/agent/sessions.js.map +0 -1
- package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
- package/dist/src/cli/commands/agent.js.map +0 -1
- package/dist/src/cli/commands/agents.js.map +0 -1
- package/dist/src/cli/commands/auth.js.map +0 -1
- package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
- package/dist/src/cli/commands/browser.js.map +0 -1
- package/dist/src/cli/commands/channels.js.map +0 -1
- package/dist/src/cli/commands/config.js.map +0 -1
- package/dist/src/cli/commands/connectors.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
- package/dist/src/cli/commands/doctor/flow.js.map +0 -1
- package/dist/src/cli/commands/doctor/format.js.map +0 -1
- package/dist/src/cli/commands/doctor/index.js.map +0 -1
- package/dist/src/cli/commands/extension-create.js.map +0 -1
- package/dist/src/cli/commands/extension-dev.js.map +0 -1
- package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
- package/dist/src/cli/commands/extension-pack.js.map +0 -1
- package/dist/src/cli/commands/extension.js.map +0 -1
- package/dist/src/cli/commands/gateway/call.js.map +0 -1
- package/dist/src/cli/commands/gateway/health.js.map +0 -1
- package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
- package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
- package/dist/src/cli/commands/gateway/logs.js.map +0 -1
- package/dist/src/cli/commands/gateway/probe.js.map +0 -1
- package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
- package/dist/src/cli/commands/gateway/restart.js.map +0 -1
- package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
- package/dist/src/cli/commands/gateway/service.js.map +0 -1
- package/dist/src/cli/commands/gateway/shared.js.map +0 -1
- package/dist/src/cli/commands/gateway/status.js.map +0 -1
- package/dist/src/cli/commands/gateway/stop.js.map +0 -1
- package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
- package/dist/src/cli/commands/gateway/token.js.map +0 -1
- package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
- package/dist/src/cli/commands/gateway.js.map +0 -1
- package/dist/src/cli/commands/goal.js.map +0 -1
- package/dist/src/cli/commands/image.js.map +0 -1
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/logs.js.map +0 -1
- package/dist/src/cli/commands/models.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
- package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
- package/dist/src/cli/commands/onboard/model.js.map +0 -1
- package/dist/src/cli/commands/onboard.js.map +0 -1
- package/dist/src/cli/commands/profile.js.map +0 -1
- package/dist/src/cli/commands/project.js.map +0 -1
- package/dist/src/cli/commands/providers.js.map +0 -1
- package/dist/src/cli/commands/resume.js.map +0 -1
- package/dist/src/cli/commands/search.js.map +0 -1
- package/dist/src/cli/commands/session/actions.js.map +0 -1
- package/dist/src/cli/commands/session/utils.js.map +0 -1
- package/dist/src/cli/commands/session.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
- package/dist/src/cli/commands/setup.js.map +0 -1
- package/dist/src/cli/commands/skills-test.js.map +0 -1
- package/dist/src/cli/commands/skills.js.map +0 -1
- package/dist/src/cli/commands/tailscale.js.map +0 -1
- package/dist/src/cli/commands/tui-runner.js.map +0 -1
- package/dist/src/cli/commands/tui.js.map +0 -1
- package/dist/src/cli/commands/tunnel.js.map +0 -1
- package/dist/src/cli/commands/update.js.map +0 -1
- package/dist/src/cli/commands/voice.js.map +0 -1
- package/dist/src/cli/context.js.map +0 -1
- package/dist/src/cli/extension-cli-register.js.map +0 -1
- package/dist/src/cli/gateway-run-argv.js.map +0 -1
- package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/registry.js.map +0 -1
- package/dist/src/cli/templates.js.map +0 -1
- package/dist/src/cli/utils/colors.js.map +0 -1
- package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
- package/dist/src/cli/utils/gateway-client.js.map +0 -1
- package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
- package/dist/src/cli/utils/init-workspace.js.map +0 -1
- package/dist/src/cli/utils/oauth-login.js.map +0 -1
- package/dist/src/cli/utils/oauth-providers.js.map +0 -1
- package/dist/src/cli/utils/session.js.map +0 -1
- package/dist/src/commands/agents.config.js.map +0 -1
- package/dist/src/config/agent-profile.js.map +0 -1
- package/dist/src/config/agent-typed-models.js.map +0 -1
- package/dist/src/config/commands.flags.js.map +0 -1
- package/dist/src/config/default-model.js.map +0 -1
- package/dist/src/config/diff.js.map +0 -1
- package/dist/src/config/gateway-bind.js.map +0 -1
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/mcp-config-normalize.js.map +0 -1
- package/dist/src/config/model-input.js.map +0 -1
- package/dist/src/config/models-json.js.map +0 -1
- package/dist/src/config/paths-state.js.map +0 -1
- package/dist/src/config/paths.js.map +0 -1
- package/dist/src/config/profile.js.map +0 -1
- package/dist/src/config/public-url.js.map +0 -1
- package/dist/src/config/reload.js.map +0 -1
- package/dist/src/config/resolve-config-value.js.map +0 -1
- package/dist/src/config/rules.js.map +0 -1
- package/dist/src/config/runtime-overrides.js.map +0 -1
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/config/validate-channel-configs.js.map +0 -1
- package/dist/src/config/voice.js.map +0 -1
- package/dist/src/config/web-patch.js.map +0 -1
- package/dist/src/config/workspace-defaults.js.map +0 -1
- package/dist/src/config/workspace-dirs.js.map +0 -1
- package/dist/src/config/workspace-path-helpers.js.map +0 -1
- package/dist/src/config/workspace-path.js.map +0 -1
- package/dist/src/connectors/approval.js.map +0 -1
- package/dist/src/connectors/auth-provider-registry.js.map +0 -1
- package/dist/src/connectors/builtin-catalog.js.map +0 -1
- package/dist/src/connectors/catalog.js.map +0 -1
- package/dist/src/connectors/composio-catalog.js.map +0 -1
- package/dist/src/connectors/composio-logo.js.map +0 -1
- package/dist/src/connectors/composio-sessions.js.map +0 -1
- package/dist/src/connectors/composio-triggers.js.map +0 -1
- package/dist/src/connectors/composio.js.map +0 -1
- package/dist/src/connectors/connector-memory-sync.js.map +0 -1
- package/dist/src/connectors/health.js.map +0 -1
- package/dist/src/connectors/install.js.map +0 -1
- package/dist/src/connectors/instances.js.map +0 -1
- package/dist/src/connectors/integration-strategy.js.map +0 -1
- package/dist/src/connectors/lifecycle.js.map +0 -1
- package/dist/src/connectors/materialize.js.map +0 -1
- package/dist/src/connectors/policy.js.map +0 -1
- package/dist/src/connectors/providers.js.map +0 -1
- package/dist/src/connectors/registries/modelscope.js.map +0 -1
- package/dist/src/connectors/registries/official-mcp.js.map +0 -1
- package/dist/src/connectors/registries/search.js.map +0 -1
- package/dist/src/connectors/registries/smithery.js.map +0 -1
- package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
- package/dist/src/connectors/secret-store.js.map +0 -1
- package/dist/src/connectors/setup-secrets.js.map +0 -1
- package/dist/src/connectors/supervisor.js.map +0 -1
- package/dist/src/connectors/usage.js.map +0 -1
- package/dist/src/connectors/workflow-preflight.js.map +0 -1
- package/dist/src/daemon/constants.js.map +0 -1
- package/dist/src/daemon/install-plan.js.map +0 -1
- package/dist/src/daemon/launchd.js.map +0 -1
- package/dist/src/daemon/schtasks.js.map +0 -1
- package/dist/src/daemon/service-audit.js.map +0 -1
- package/dist/src/daemon/service.js.map +0 -1
- package/dist/src/daemon/systemd.js.map +0 -1
- package/dist/src/document-understanding/extract.js.map +0 -1
- package/dist/src/errors/index.js.map +0 -1
- package/dist/src/extensions/activation-context.js.map +0 -1
- package/dist/src/extensions/activation-planner.js.map +0 -1
- package/dist/src/extensions/api.js.map +0 -1
- package/dist/src/extensions/bundle-mcp.js.map +0 -1
- package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
- package/dist/src/extensions/diagnostics.js.map +0 -1
- package/dist/src/extensions/discover-extensions.js.map +0 -1
- package/dist/src/extensions/engine-check.js.map +0 -1
- package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
- package/dist/src/extensions/extension-registry-impl.js.map +0 -1
- package/dist/src/extensions/health.js.map +0 -1
- package/dist/src/extensions/hooks.js.map +0 -1
- package/dist/src/extensions/index.js.map +0 -1
- package/dist/src/extensions/install-transaction.js.map +0 -1
- package/dist/src/extensions/install.js.map +0 -1
- package/dist/src/extensions/loader.js.map +0 -1
- package/dist/src/extensions/lockfile.js.map +0 -1
- package/dist/src/extensions/manifest-registry.js.map +0 -1
- package/dist/src/extensions/marketplace.js.map +0 -1
- package/dist/src/extensions/media-provider-contracts.js.map +0 -1
- package/dist/src/extensions/normalize-manifest.js.map +0 -1
- package/dist/src/extensions/onboard-helpers.js.map +0 -1
- package/dist/src/extensions/package-contract.js.map +0 -1
- package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
- package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
- package/dist/src/extensions/sdk/index.js.map +0 -1
- package/dist/src/extensions/sdk/lazy.js.map +0 -1
- package/dist/src/extensions/sdk/testing.js.map +0 -1
- package/dist/src/extensions/security.js.map +0 -1
- package/dist/src/extensions/slots.js.map +0 -1
- package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
- package/dist/src/extensions/store-zip-limits.js.map +0 -1
- package/dist/src/extensions/typed-event-bus.js.map +0 -1
- package/dist/src/extensions/types/hooks.js.map +0 -1
- package/dist/src/extensions/types/providers.js.map +0 -1
- package/dist/src/extensions/update.js.map +0 -1
- package/dist/src/extensions/when-context.js.map +0 -1
- package/dist/src/extensions/when-expression.js.map +0 -1
- package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
- package/dist/src/gateway/agent-run-relay.js.map +0 -1
- package/dist/src/gateway/agents-admin.js.map +0 -1
- package/dist/src/gateway/auth.js.map +0 -1
- package/dist/src/gateway/capability-presets-admin.js.map +0 -1
- package/dist/src/gateway/chat-limits.js.map +0 -1
- package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
- package/dist/src/gateway/clarify-bridge.js.map +0 -1
- package/dist/src/gateway/clarify-runtime.js.map +0 -1
- package/dist/src/gateway/client-ip.js.map +0 -1
- package/dist/src/gateway/config-tools-web.js.map +0 -1
- package/dist/src/gateway/credential.js.map +0 -1
- package/dist/src/gateway/discovery/mdns.js.map +0 -1
- package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
- package/dist/src/gateway/ensure-network-cors.js.map +0 -1
- package/dist/src/gateway/file-path-classifier.js.map +0 -1
- package/dist/src/gateway/file-reference-registry.js.map +0 -1
- package/dist/src/gateway/global-defaults-admin.js.map +0 -1
- package/dist/src/gateway/heartbeat/service.js.map +0 -1
- package/dist/src/gateway/hono/app.js.map +0 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
- package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
- package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
- package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
- package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
- package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
- package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
- package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
- package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
- package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
- package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
- package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
- package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
- package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
- package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
- package/dist/src/gateway/hono/oauth-async.js.map +0 -1
- package/dist/src/gateway/hono/oauth.js.map +0 -1
- package/dist/src/gateway/hono/routes/activity.js.map +0 -1
- package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
- package/dist/src/gateway/hono/routes/agents.js.map +0 -1
- package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
- package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
- package/dist/src/gateway/hono/routes/browser.js.map +0 -1
- package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
- package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
- package/dist/src/gateway/hono/routes/channels.js.map +0 -1
- package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
- package/dist/src/gateway/hono/routes/config.js.map +0 -1
- package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
- package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
- package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
- package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
- package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
- package/dist/src/gateway/hono/routes/goals.js.map +0 -1
- package/dist/src/gateway/hono/routes/home.js.map +0 -1
- package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
- package/dist/src/gateway/hono/routes/index.js.map +0 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
- package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
- package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
- package/dist/src/gateway/hono/routes/logs.js.map +0 -1
- package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
- package/dist/src/gateway/hono/routes/media.js.map +0 -1
- package/dist/src/gateway/hono/routes/memory.js.map +0 -1
- package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
- package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
- package/dist/src/gateway/hono/routes/models.js.map +0 -1
- package/dist/src/gateway/hono/routes/notes.js.map +0 -1
- package/dist/src/gateway/hono/routes/projects.js.map +0 -1
- package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/search.js.map +0 -1
- package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
- package/dist/src/gateway/hono/routes/shares.js.map +0 -1
- package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
- package/dist/src/gateway/hono/routes/status.js.map +0 -1
- package/dist/src/gateway/hono/routes/tui.js.map +0 -1
- package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
- package/dist/src/gateway/hono/routes/update.js.map +0 -1
- package/dist/src/gateway/hono/routes/voice.js.map +0 -1
- package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
- package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
- package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
- package/dist/src/gateway/hono/routes/you.js.map +0 -1
- package/dist/src/gateway/hono/sse-json.js.map +0 -1
- package/dist/src/gateway/hono/sse.js.map +0 -1
- package/dist/src/gateway/host.js.map +0 -1
- package/dist/src/gateway/image-capabilities.js.map +0 -1
- package/dist/src/gateway/listen.js.map +0 -1
- package/dist/src/gateway/lock.js.map +0 -1
- package/dist/src/gateway/ports.js.map +0 -1
- package/dist/src/gateway/protocol.js.map +0 -1
- package/dist/src/gateway/public-url.js.map +0 -1
- package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
- package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
- package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
- package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
- package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
- package/dist/src/gateway/respawn.js.map +0 -1
- package/dist/src/gateway/run-loop.js.map +0 -1
- package/dist/src/gateway/runtime-config.js.map +0 -1
- package/dist/src/gateway/security/audit.js.map +0 -1
- package/dist/src/gateway/security/csp.js.map +0 -1
- package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
- package/dist/src/gateway/security/external-content.js.map +0 -1
- package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
- package/dist/src/gateway/security/loopback.js.map +0 -1
- package/dist/src/gateway/security/operator-scopes.js.map +0 -1
- package/dist/src/gateway/security/origin-check.js.map +0 -1
- package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
- package/dist/src/gateway/security/secret-equal.js.map +0 -1
- package/dist/src/gateway/server-tailscale.js.map +0 -1
- package/dist/src/gateway/server.js.map +0 -1
- package/dist/src/gateway/service/agent-runner.js.map +0 -1
- package/dist/src/gateway/service/config-coordinator.js.map +0 -1
- package/dist/src/gateway/service/marketplace-service.js.map +0 -1
- package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
- package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
- package/dist/src/gateway/service/sessions-api.js.map +0 -1
- package/dist/src/gateway/service/sse-hub.js.map +0 -1
- package/dist/src/gateway/service.js.map +0 -1
- package/dist/src/gateway/session-reset-service.js.map +0 -1
- package/dist/src/gateway/startup-readiness.js.map +0 -1
- package/dist/src/gateway/startup-trace.js.map +0 -1
- package/dist/src/gateway/tailscale-auth.js.map +0 -1
- package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
- package/dist/src/gateway/tls-server.js.map +0 -1
- package/dist/src/gateway/trusted-proxy.js.map +0 -1
- package/dist/src/gateway/user-turn-input.js.map +0 -1
- package/dist/src/gateway/workspace-editor-path.js.map +0 -1
- package/dist/src/gateway/workspace-file-search.js.map +0 -1
- package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
- package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
- package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
- package/dist/src/gateway/ws-security.js.map +0 -1
- package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
- package/dist/src/goals/goal-contract-draft.js.map +0 -1
- package/dist/src/goals/goal-evidence-review.js.map +0 -1
- package/dist/src/goals/goal-notifications.js.map +0 -1
- package/dist/src/goals/goal-queue-store.js.map +0 -1
- package/dist/src/goals/goal-runner.js.map +0 -1
- package/dist/src/goals/goal-service.js.map +0 -1
- package/dist/src/goals/goal-store.js.map +0 -1
- package/dist/src/goals/goal-workflow-judge.js.map +0 -1
- package/dist/src/heartbeat/active-hours.js.map +0 -1
- package/dist/src/heartbeat/content-check.js.map +0 -1
- package/dist/src/heartbeat/event-prompt.js.map +0 -1
- package/dist/src/heartbeat/tokens.js.map +0 -1
- package/dist/src/heartbeat/wake.js.map +0 -1
- package/dist/src/i18n/format.js.map +0 -1
- package/dist/src/i18n/goals-bundle.js.map +0 -1
- package/dist/src/i18n/locale.js.map +0 -1
- package/dist/src/i18n/locales/goals.en.js.map +0 -1
- package/dist/src/i18n/locales/goals.zh.js.map +0 -1
- package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
- package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
- package/dist/src/i18n/share-tool-bundle.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/infra/brew.js.map +0 -1
- package/dist/src/infra/bus/queue.js.map +0 -1
- package/dist/src/infra/debounce.js.map +0 -1
- package/dist/src/infra/exec.js.map +0 -1
- package/dist/src/infra/gateway-process-argv.js.map +0 -1
- package/dist/src/infra/gateway-processes.js.map +0 -1
- package/dist/src/infra/host-env-security-policy.js.map +0 -1
- package/dist/src/infra/host-env-security.js.map +0 -1
- package/dist/src/infra/http-proxy-env.js.map +0 -1
- package/dist/src/infra/is-main.js.map +0 -1
- package/dist/src/infra/json-utf8-bytes.js.map +0 -1
- package/dist/src/infra/node-sqlite.js.map +0 -1
- package/dist/src/infra/package-json.js.map +0 -1
- package/dist/src/infra/package-update-steps.js.map +0 -1
- package/dist/src/infra/path-env.js.map +0 -1
- package/dist/src/infra/path-prepend.js.map +0 -1
- package/dist/src/infra/ports.js.map +0 -1
- package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
- package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
- package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
- package/dist/src/infra/restart.js.map +0 -1
- package/dist/src/infra/retry.js.map +0 -1
- package/dist/src/infra/run-command.js.map +0 -1
- package/dist/src/infra/sqlite-errors.js.map +0 -1
- package/dist/src/infra/ssh-tunnel.js.map +0 -1
- package/dist/src/infra/stable-node-path.js.map +0 -1
- package/dist/src/infra/tailscale.js.map +0 -1
- package/dist/src/infra/undici-fetch.js.map +0 -1
- package/dist/src/infra/unhandled-rejections.js.map +0 -1
- package/dist/src/infra/update-channels.js.map +0 -1
- package/dist/src/infra/update-check.js.map +0 -1
- package/dist/src/infra/update-global.js.map +0 -1
- package/dist/src/infra/update-lock.js.map +0 -1
- package/dist/src/infra/update-log.js.map +0 -1
- package/dist/src/infra/update-restart.js.map +0 -1
- package/dist/src/infra/update-runner.js.map +0 -1
- package/dist/src/infra/update-startup.js.map +0 -1
- package/dist/src/infra/warning-filter.js.map +0 -1
- package/dist/src/infra/write-file-atomic.js.map +0 -1
- package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
- package/dist/src/knowledge/coordinator.js.map +0 -1
- package/dist/src/knowledge/ingestion-service.js.map +0 -1
- package/dist/src/local-apps/acceptance.js.map +0 -1
- package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
- package/dist/src/local-apps/runtime-entry.js.map +0 -1
- package/dist/src/local-apps/scaffold.js.map +0 -1
- package/dist/src/local-apps/service.js.map +0 -1
- package/dist/src/local-apps/store.js.map +0 -1
- package/dist/src/markdown/chunk.js.map +0 -1
- package/dist/src/markdown/code-spans.js.map +0 -1
- package/dist/src/markdown/fences.js.map +0 -1
- package/dist/src/markdown/frontmatter.js.map +0 -1
- package/dist/src/markdown/ir.js.map +0 -1
- package/dist/src/markdown/render.js.map +0 -1
- package/dist/src/markdown/tables.js.map +0 -1
- package/dist/src/mcp/channel-bridge.js.map +0 -1
- package/dist/src/mcp/channel-server.js.map +0 -1
- package/dist/src/mcp/channel-shared.js.map +0 -1
- package/dist/src/mcp/channel-tools.js.map +0 -1
- package/dist/src/mcp/gateway-http-client.js.map +0 -1
- package/dist/src/media/media-reference.js.map +0 -1
- package/dist/src/media/paths.js.map +0 -1
- package/dist/src/media/session-references.js.map +0 -1
- package/dist/src/media/store.js.map +0 -1
- package/dist/src/media/uri.js.map +0 -1
- package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
- package/dist/src/media-shared/http/deadline.js.map +0 -1
- package/dist/src/media-shared/http/private-network.js.map +0 -1
- package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
- package/dist/src/media-shared/http/provider-http.js.map +0 -1
- package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
- package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
- package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
- package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
- package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
- package/dist/src/media-understanding/registry.js.map +0 -1
- package/dist/src/media-understanding/resolve-entries.js.map +0 -1
- package/dist/src/media-understanding/runner.js.map +0 -1
- package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
- package/dist/src/migrations/registry.js.map +0 -1
- package/dist/src/migrations/runner.js.map +0 -1
- package/dist/src/mobile/notification-service.js.map +0 -1
- package/dist/src/mobile/notification-store.js.map +0 -1
- package/dist/src/mobile/notification-types.js.map +0 -1
- package/dist/src/notes/agent-context.js.map +0 -1
- package/dist/src/notes/attachment-ref.js.map +0 -1
- package/dist/src/notes/note-attachment-sync.js.map +0 -1
- package/dist/src/notes/note-index-meta.js.map +0 -1
- package/dist/src/notes/note-markdown.js.map +0 -1
- package/dist/src/notes/paths.js.map +0 -1
- package/dist/src/notes/service.js.map +0 -1
- package/dist/src/notes/store.js.map +0 -1
- package/dist/src/package-version.js.map +0 -1
- package/dist/src/pets/factory.js.map +0 -1
- package/dist/src/pets/manifest.js.map +0 -1
- package/dist/src/pets/validator.js.map +0 -1
- package/dist/src/process/kill-tree.js.map +0 -1
- package/dist/src/project-trust/trust-store.js.map +0 -1
- package/dist/src/projects/automation-bind.js.map +0 -1
- package/dist/src/projects/goal-bind.js.map +0 -1
- package/dist/src/projects/memory-bind.js.map +0 -1
- package/dist/src/projects/project-agent-suggestion.js.map +0 -1
- package/dist/src/projects/project-agent.js.map +0 -1
- package/dist/src/projects/project-kind.js.map +0 -1
- package/dist/src/projects/project-loop.js.map +0 -1
- package/dist/src/projects/project-service.js.map +0 -1
- package/dist/src/projects/project-store.js.map +0 -1
- package/dist/src/projects/session-bind.js.map +0 -1
- package/dist/src/projects/workflow-bind.js.map +0 -1
- package/dist/src/projects/workspace-project.js.map +0 -1
- package/dist/src/projects/workspace.js.map +0 -1
- package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
- package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
- package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
- package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
- package/dist/src/providers/constants.js.map +0 -1
- package/dist/src/providers/domestic-presets.js.map +0 -1
- package/dist/src/providers/env-keys.js.map +0 -1
- package/dist/src/providers/extension-stream-bridge.js.map +0 -1
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/providers/model-call.js.map +0 -1
- package/dist/src/providers/model-discovery.js.map +0 -1
- package/dist/src/providers/model-registry.js.map +0 -1
- package/dist/src/providers/model-supplements.js.map +0 -1
- package/dist/src/providers/plugin-registry.js.map +0 -1
- package/dist/src/providers/presentation.js.map +0 -1
- package/dist/src/remote-access/exposure-guards.js.map +0 -1
- package/dist/src/remote-access/exposure-manager.js.map +0 -1
- package/dist/src/review/review-git.js.map +0 -1
- package/dist/src/review/review-types.js.map +0 -1
- package/dist/src/routing/account-id.js.map +0 -1
- package/dist/src/routing/agent-session-key.js.map +0 -1
- package/dist/src/routing/bindings.js.map +0 -1
- package/dist/src/routing/index.js.map +0 -1
- package/dist/src/routing/resolve-route.js.map +0 -1
- package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
- package/dist/src/routing/session-key-utils.js.map +0 -1
- package/dist/src/routing/session-key.js.map +0 -1
- package/dist/src/session/abort-cutoff.js.map +0 -1
- package/dist/src/session/chat-export.js.map +0 -1
- package/dist/src/session/client-history.js.map +0 -1
- package/dist/src/session/compaction-checkpoints.js.map +0 -1
- package/dist/src/session/config-store.js.map +0 -1
- package/dist/src/session/init-session-turn.js.map +0 -1
- package/dist/src/session/lifecycle-timestamps.js.map +0 -1
- package/dist/src/session/load-jsonl-entries.js.map +0 -1
- package/dist/src/session/manager.js.map +0 -1
- package/dist/src/session/patch-metadata.js.map +0 -1
- package/dist/src/session/reset-policy.js.map +0 -1
- package/dist/src/session/reset-triggers.js.map +0 -1
- package/dist/src/session/reset-type.js.map +0 -1
- package/dist/src/session/resolve-session.js.map +0 -1
- package/dist/src/session/session-context-for-llm.js.map +0 -1
- package/dist/src/session/session-id.js.map +0 -1
- package/dist/src/session/session-title.js.map +0 -1
- package/dist/src/session/session-workspace.js.map +0 -1
- package/dist/src/session/store.js.map +0 -1
- package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
- package/dist/src/session/thinking-resolve.js.map +0 -1
- package/dist/src/session/transcript-events.js.map +0 -1
- package/dist/src/session/transcript-format.js.map +0 -1
- package/dist/src/session/transcript-outline.js.map +0 -1
- package/dist/src/session/transcript-stats.js.map +0 -1
- package/dist/src/session/types.js.map +0 -1
- package/dist/src/session/user-round-delete.js.map +0 -1
- package/dist/src/share/share-audit.js.map +0 -1
- package/dist/src/share/share-auto.js.map +0 -1
- package/dist/src/share/share-config.js.map +0 -1
- package/dist/src/share/share-landing.js.map +0 -1
- package/dist/src/share/share-rate-limit.js.map +0 -1
- package/dist/src/share/share-store.js.map +0 -1
- package/dist/src/share/share-thumbnail.js.map +0 -1
- package/dist/src/share/share-types.js.map +0 -1
- package/dist/src/share/share-url.js.map +0 -1
- package/dist/src/share/share-zip.js.map +0 -1
- package/dist/src/share/site-proxy.js.map +0 -1
- package/dist/src/share/site-share-config.js.map +0 -1
- package/dist/src/share/site-share-router.js.map +0 -1
- package/dist/src/share/site-share-store.js.map +0 -1
- package/dist/src/share/site-share-types.js.map +0 -1
- package/dist/src/share/site-static-serve.js.map +0 -1
- package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
- package/dist/src/storage/sqlite/config-repository.js.map +0 -1
- package/dist/src/storage/sqlite/connection.js.map +0 -1
- package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
- package/dist/src/storage/sqlite/fts.js.map +0 -1
- package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
- package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
- package/dist/src/storage/sqlite/paths.js.map +0 -1
- package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
- package/dist/src/storage/sqlite/schema-version.js.map +0 -1
- package/dist/src/storage/sqlite/schema.js.map +0 -1
- package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
- package/dist/src/storage/sqlite/session-repository.js.map +0 -1
- package/dist/src/storage/sqlite/transaction.js.map +0 -1
- package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
- package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
- package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
- package/dist/src/tui/backends/embedded-backend.js.map +0 -1
- package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
- package/dist/src/tui/chat-history.js.map +0 -1
- package/dist/src/tui/clipboard-image.js.map +0 -1
- package/dist/src/tui/clipboard-text.js.map +0 -1
- package/dist/src/tui/components/assistant-message.js.map +0 -1
- package/dist/src/tui/components/bash-execution.js.map +0 -1
- package/dist/src/tui/components/bash-summary.js.map +0 -1
- package/dist/src/tui/components/branch-message-summary.js.map +0 -1
- package/dist/src/tui/components/branch-summary.js.map +0 -1
- package/dist/src/tui/components/chat-log.js.map +0 -1
- package/dist/src/tui/components/compaction-summary.js.map +0 -1
- package/dist/src/tui/components/custom-editor.js.map +0 -1
- package/dist/src/tui/components/custom-message.js.map +0 -1
- package/dist/src/tui/components/dynamic-border.js.map +0 -1
- package/dist/src/tui/components/extension-dialog.js.map +0 -1
- package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
- package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
- package/dist/src/tui/components/searchable-select-list.js.map +0 -1
- package/dist/src/tui/components/session-selector.js.map +0 -1
- package/dist/src/tui/components/settings-selector.js.map +0 -1
- package/dist/src/tui/components/thinking-selector.js.map +0 -1
- package/dist/src/tui/components/tool-execution.js.map +0 -1
- package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
- package/dist/src/tui/components/tui-header.js.map +0 -1
- package/dist/src/tui/components/user-message.js.map +0 -1
- package/dist/src/tui/components/visual-truncate.js.map +0 -1
- package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
- package/dist/src/tui/extension-host/host.js.map +0 -1
- package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
- package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
- package/dist/src/tui/extension-host/runtime.js.map +0 -1
- package/dist/src/tui/extension-host/surface.js.map +0 -1
- package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
- package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
- package/dist/src/tui/sse-consumer.js.map +0 -1
- package/dist/src/tui/theme/dark.js.map +0 -1
- package/dist/src/tui/theme/light.js.map +0 -1
- package/dist/src/tui/theme-manager.js.map +0 -1
- package/dist/src/tui/theme.js.map +0 -1
- package/dist/src/tui/tool-summary.js.map +0 -1
- package/dist/src/tui/tui-agent-events.js.map +0 -1
- package/dist/src/tui/tui-command-formatters.js.map +0 -1
- package/dist/src/tui/tui-commands.js.map +0 -1
- package/dist/src/tui/tui-context-usage.js.map +0 -1
- package/dist/src/tui/tui-extension-user-message.js.map +0 -1
- package/dist/src/tui/tui-fd-path.js.map +0 -1
- package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
- package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
- package/dist/src/tui/tui-git-branch.js.map +0 -1
- package/dist/src/tui/tui-keybindings-file.js.map +0 -1
- package/dist/src/tui/tui-lifecycle.js.map +0 -1
- package/dist/src/tui/tui-local-shell.js.map +0 -1
- package/dist/src/tui/tui-model-picker.js.map +0 -1
- package/dist/src/tui/tui-oauth-login.js.map +0 -1
- package/dist/src/tui/tui-overlays.js.map +0 -1
- package/dist/src/tui/tui-picker-overlay.js.map +0 -1
- package/dist/src/tui/tui-run-state.js.map +0 -1
- package/dist/src/tui/tui-run-status-format.js.map +0 -1
- package/dist/src/tui/tui-runtime-hints.js.map +0 -1
- package/dist/src/tui/tui-scoped-models.js.map +0 -1
- package/dist/src/tui/tui-session-actions.js.map +0 -1
- package/dist/src/tui/tui-session-format.js.map +0 -1
- package/dist/src/tui/tui-session-snapshot.js.map +0 -1
- package/dist/src/tui/tui-session-stats.js.map +0 -1
- package/dist/src/tui/tui-settings.js.map +0 -1
- package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
- package/dist/src/tui/tui-startup-resources.js.map +0 -1
- package/dist/src/tui/tui-startup-text.js.map +0 -1
- package/dist/src/tui/tui-stdio-filter.js.map +0 -1
- package/dist/src/tui/tui-submit.js.map +0 -1
- package/dist/src/tui/tui-suspend.js.map +0 -1
- package/dist/src/tui/tui-timeline-picker.js.map +0 -1
- package/dist/src/tui/tui-timeline.js.map +0 -1
- package/dist/src/tui/tui-tool-diff.js.map +0 -1
- package/dist/src/tui/tui-tool-result.js.map +0 -1
- package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
- package/dist/src/tui/tui-transcript-tree.js.map +0 -1
- package/dist/src/tui/tui-types.js.map +0 -1
- package/dist/src/tui/tui-workflow-slash.js.map +0 -1
- package/dist/src/tui/tui.js.map +0 -1
- package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
- package/dist/src/tunnel/broker-client.js.map +0 -1
- package/dist/src/tunnel/consent.js.map +0 -1
- package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
- package/dist/src/tunnel/env.js.map +0 -1
- package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
- package/dist/src/tunnel/frpc-binary.js.map +0 -1
- package/dist/src/tunnel/frpc-config.js.map +0 -1
- package/dist/src/tunnel/frpc-extract.js.map +0 -1
- package/dist/src/tunnel/frpc-process.js.map +0 -1
- package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
- package/dist/src/tunnel/pair-context.js.map +0 -1
- package/dist/src/tunnel/pair-url.js.map +0 -1
- package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
- package/dist/src/tunnel/pairing.js.map +0 -1
- package/dist/src/tunnel/tunnel-audit.js.map +0 -1
- package/dist/src/tunnel/tunnel-config.js.map +0 -1
- package/dist/src/tunnel/tunnel-persist.js.map +0 -1
- package/dist/src/tunnel/tunnel-qr.js.map +0 -1
- package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
- package/dist/src/tunnel/tunnel-service.js.map +0 -1
- package/dist/src/tunnel/tunnel-state.js.map +0 -1
- package/dist/src/tunnel/well-known.js.map +0 -1
- package/dist/src/user-context/config.js.map +0 -1
- package/dist/src/user-context/import.js.map +0 -1
- package/dist/src/user-context/owner.js.map +0 -1
- package/dist/src/user-context/profile.js.map +0 -1
- package/dist/src/user-context/projection.js.map +0 -1
- package/dist/src/user-context/runtime.js.map +0 -1
- package/dist/src/user-context/source-recommendations.js.map +0 -1
- package/dist/src/user-context/trust-policy.js.map +0 -1
- package/dist/src/utils/global-singleton.js.map +0 -1
- package/dist/src/utils/helpers.js.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/is-record.js.map +0 -1
- package/dist/src/utils/logger/audit.js.map +0 -1
- package/dist/src/utils/logger/config.js.map +0 -1
- package/dist/src/utils/logger/context.js.map +0 -1
- package/dist/src/utils/logger/exporters.js.map +0 -1
- package/dist/src/utils/logger/index.js.map +0 -1
- package/dist/src/utils/logger/log-store.js.map +0 -1
- package/dist/src/utils/logger/log-stream.js.map +0 -1
- package/dist/src/utils/logger/pino-record.js.map +0 -1
- package/dist/src/utils/logger/redact.js.map +0 -1
- package/dist/src/utils/logger/rotation.js.map +0 -1
- package/dist/src/utils/logger/shutdown.js.map +0 -1
- package/dist/src/utils/logger/stats.js.map +0 -1
- package/dist/src/utils/logger/streams.js.map +0 -1
- package/dist/src/utils/logger/types.js.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/redact-sensitive-url.js.map +0 -1
- package/dist/src/utils/sanitize-log.js.map +0 -1
- package/dist/src/utils/string-coerce.js.map +0 -1
- package/dist/src/voice/language-profile.js.map +0 -1
- package/dist/src/voice/local/model-files.js.map +0 -1
- package/dist/src/voice/local/model-manager.js.map +0 -1
- package/dist/src/voice/local/models.js.map +0 -1
- package/dist/src/voice/local/runtime-client.js.map +0 -1
- package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
- package/dist/src/voice/local/runtime-worker.js.map +0 -1
- package/dist/src/voice/local/wav.js.map +0 -1
- package/dist/src/voice/metadata/builtin.js.map +0 -1
- package/dist/src/voice/metadata/registry.js.map +0 -1
- package/dist/src/voice/stt/availability.js.map +0 -1
- package/dist/src/voice/stt/config-slice.js.map +0 -1
- package/dist/src/voice/stt/factory.js.map +0 -1
- package/dist/src/voice/stt/index.js.map +0 -1
- package/dist/src/voice/stt/list-providers.js.map +0 -1
- package/dist/src/voice/stt/mention.js.map +0 -1
- package/dist/src/voice/stt/preflight.js.map +0 -1
- package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
- package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
- package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
- package/dist/src/voice/stt/transcribe-core.js.map +0 -1
- package/dist/src/voice/stt/types.js.map +0 -1
- package/dist/src/voice/tts/audio.js.map +0 -1
- package/dist/src/voice/tts/config-slice.js.map +0 -1
- package/dist/src/voice/tts/directives.js.map +0 -1
- package/dist/src/voice/tts/factory.js.map +0 -1
- package/dist/src/voice/tts/list-providers.js.map +0 -1
- package/dist/src/voice/tts/merge-config.js.map +0 -1
- package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
- package/dist/src/voice/tts/payload.js.map +0 -1
- package/dist/src/voice/tts/preprocess.js.map +0 -1
- package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
- package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
- package/dist/src/voice/tts/service.js.map +0 -1
- package/dist/src/voice/tts/speak-core.js.map +0 -1
- package/dist/src/voice/tts/speech-registry.js.map +0 -1
- package/dist/src/voice/tts/status-tracker.js.map +0 -1
- package/dist/src/voice/tts/summarize.js.map +0 -1
- package/dist/src/voice/tts/types.js.map +0 -1
- package/dist/src/work-discovery/analyzer.js.map +0 -1
- package/dist/src/work-discovery/probe.js.map +0 -1
- package/dist/src/work-discovery/repository.js.map +0 -1
- package/dist/src/work-discovery/service.js.map +0 -1
- package/dist/src/work-items/agent-context.js.map +0 -1
- package/dist/src/work-items/work-item-service.js.map +0 -1
- package/dist/src/work-items/work-item-store.js.map +0 -1
- package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
- package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
- package/dist/src/workflows/domain/definition-utils.js.map +0 -1
- package/dist/src/workflows/domain/run.js.map +0 -1
- package/dist/src/workflows/domain/schema-validation.js.map +0 -1
- package/dist/src/workflows/domain/validation.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
- package/dist/src/workflows/engine/projector.js.map +0 -1
- package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
- package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
- package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
- package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
- package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
- package/dist/src/workflows/store/event-store.js.map +0 -1
- package/dist/src/workflows/store/paths.js.map +0 -1
- package/dist/src/workflows/store/run-index-store.js.map +0 -1
- package/dist/src/workflows/store/run-store.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"rem-patterns.js","names":[],"sources":["../../../../../src/agent/memory/dreaming/rem-patterns.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\n\nimport { createLogger } from '../../../utils/logger.js';\nimport { DREAMING_DIR_RELATIVE, DREAMS_MD_FILENAME, MS_PER_DAY } from './constants.js';\nimport type { DreamingRemConfig } from './config.js';\nimport {\n bumpEntryPhaseSignal,\n loadDreamingStore,\n saveDreamingStore,\n withDreamingStoreLock,\n type DreamingStoreEntry,\n} from './short-term-store.js';\nimport { isoDay } from './utils.js';\nimport { inferMemorySensitivity } from '../sensitivity.js';\nimport { activateRemInsight, remPatternKey } from './promotion-lifecycle.js';\nimport {\n DREAMING_LAST_RUN_FORMAT_VERSION,\n type DreamingRemLastRun,\n} from './last-run.js';\n\nconst log = createLogger('Dreaming:REM');\n\n// ── Pattern types ──────────────────────────────────────────────────────\n\ntype PatternCluster = {\n representative: DreamingStoreEntry;\n members: DreamingStoreEntry[];\n strength: number;\n /** Shared query hashes across members. */\n sharedQueries: string[];\n /** Distinct source files involved. */\n distinctPaths: string[];\n};\n\n// ── Config defaults ────────────────────────────────────────────────────\n\nfunction resolveConfig(overrides?: Partial<DreamingRemConfig>): DreamingRemConfig {\n return {\n enabled: overrides?.enabled === true,\n cron: typeof overrides?.cron === 'string' ? overrides.cron : '0 5 * * 0',\n lookbackDays: Math.max(1, Math.floor(Number(overrides?.lookbackDays) || 7)),\n limit: Math.max(0, Math.floor(Number(overrides?.limit) || 10)),\n minPatternStrength: Math.max(0, Math.min(1, Number(overrides?.minPatternStrength) || 0.75)),\n };\n}\n\n// ── Core REM pattern discovery ─────────────────────────────────────────\n\n/**\n * REM phase: cross-session pattern discovery.\n *\n * Scans the short-term store for entries that share query hashes or\n * appear across multiple indexed memory sources, then clusters them to identify\n * recurring themes/patterns. Bumps `remHits` on touched entries and\n * optionally writes a pattern summary to DREAMS.md.\n *\n * Runs weekly; expensive but insightful.\n */\nexport async function runRemPatterns(params: {\n agentId: string;\n workspaceDir: string;\n dreamingRoot: string;\n config?: Partial<DreamingRemConfig>;\n sensitiveWritePolicy?: 'deny' | 'confirm' | 'allow';\n promotionWritePolicy?: 'deny' | 'confirm' | 'allow';\n now?: Date;\n}): Promise<{\n ok: boolean;\n reason: string;\n patternsDiscovered: number;\n entriesAnalyzed: number;\n}> {\n const cfg = resolveConfig(params.config);\n const now = params.now ?? new Date();\n const startedAt = now.toISOString();\n const runId = `rem:${startedAt}:${process.pid}`;\n const startMs = Date.now();\n const nowMs = now.getTime();\n\n if (!cfg.enabled) {\n await writeLastRun(params.dreamingRoot, {\n runId, startedAt, cfg, ok: true, reason: 'REM patterns disabled', startMs,\n rem: { patternsDiscovered: 0, entriesAnalyzed: 0 },\n });\n return { ok: true, reason: 'REM patterns disabled', patternsDiscovered: 0, entriesAnalyzed: 0 };\n }\n\n try {\n return await withDreamingStoreLock(params.dreamingRoot, async () => {\n const { store } = await loadDreamingStore({ dreamingRoot: params.dreamingRoot });\n\n // Filter entries within the lookback window.\n const cutoffMs = nowMs - cfg.lookbackDays * MS_PER_DAY;\n const recentEntries = Object.values(store.entries ?? {}).filter(\n (entry): entry is DreamingStoreEntry => {\n if (!entry || typeof entry !== 'object') return false;\n if (!entry.lastRecalledAt) return false;\n const lastMs = Date.parse(entry.lastRecalledAt);\n return Number.isFinite(lastMs) && lastMs >= cutoffMs;\n },\n );\n\n if (recentEntries.length < 2) {\n await writeLastRun(params.dreamingRoot, {\n runId, startedAt, cfg, ok: true, reason: 'not enough recent entries for pattern analysis', startMs,\n rem: { patternsDiscovered: 0, entriesAnalyzed: recentEntries.length },\n });\n return {\n ok: true,\n reason: 'not enough recent entries for pattern analysis',\n patternsDiscovered: 0,\n entriesAnalyzed: recentEntries.length,\n };\n }\n\n // Discover patterns by clustering entries that share query hashes.\n const clusters = discoverPatternClusters(recentEntries, cfg.minPatternStrength);\n const topClusters = clusters\n .filter((cluster) => {\n const sensitivity = inferMemorySensitivity(cluster.members.map((member) => member.snippet).join('\\n'));\n return sensitivity === 'normal' || params.sensitiveWritePolicy === 'allow';\n })\n .slice(0, cfg.limit);\n\n // Bump remHits on all entries that belong to a discovered pattern.\n const touchedKeys = new Set<string>();\n for (const cluster of topClusters) {\n for (const member of cluster.members) {\n if (!touchedKeys.has(member.key)) {\n touchedKeys.add(member.key);\n const storeEntry = store.entries[member.key];\n if (storeEntry) {\n bumpEntryPhaseSignal(storeEntry, 'remHits');\n }\n }\n }\n }\n\n store.updatedAt = now.toISOString();\n await saveDreamingStore({ dreamingRoot: params.dreamingRoot, store });\n\n if (params.promotionWritePolicy === 'allow') {\n for (const cluster of topClusters) {\n const sensitivity = inferMemorySensitivity(cluster.members.map((member) => member.snippet).join('\\n'));\n activateRemInsight({\n agentId: params.agentId,\n workspaceId: params.workspaceDir,\n memberKeys: cluster.members.map((member) => member.key),\n representative: cluster.representative.snippet,\n distinctPaths: cluster.distinctPaths,\n strength: cluster.strength,\n observedAt: now.toISOString(),\n evidence: cluster.members.map((member) => member.snippet),\n sensitivity,\n });\n }\n }\n\n // Write pattern summary to DREAMS.md (append).\n if (topClusters.length > 0) {\n await appendPatternSummary(params.dreamingRoot, topClusters, now);\n }\n\n log.info(\n {\n dreamingRoot: params.dreamingRoot,\n patterns: topClusters.length,\n entriesAnalyzed: recentEntries.length,\n touched: touchedKeys.size,\n },\n 'REM pattern discovery complete',\n );\n\n await writeLastRun(params.dreamingRoot, {\n runId, startedAt, cfg, ok: true, reason: 'REM patterns complete', startMs,\n rem: { patternsDiscovered: topClusters.length, entriesAnalyzed: recentEntries.length },\n });\n\n return {\n ok: true,\n reason: 'REM patterns complete',\n patternsDiscovered: topClusters.length,\n entriesAnalyzed: recentEntries.length,\n };\n });\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n log.error({ err, errorMessage, dreamingRoot: params.dreamingRoot }, `REM pattern discovery failed: ${errorMessage}`);\n await writeLastRun(params.dreamingRoot, {\n runId, startedAt, cfg, ok: false, reason: `REM error: ${errorMessage}`, startMs,\n rem: { patternsDiscovered: 0, entriesAnalyzed: 0 }, errorMessage,\n }).catch(() => undefined);\n return { ok: false, reason: errorMessage, patternsDiscovered: 0, entriesAnalyzed: 0 };\n }\n}\n\n// ── Pattern clustering ─────────────────────────────────────────────────\n\n/**\n * Build an inverted index of queryHash → entries, then form clusters\n * where multiple entries share overlapping query hashes. Each cluster's\n * \"strength\" is the ratio of shared queries to total unique queries.\n */\nfunction discoverPatternClusters(\n entries: DreamingStoreEntry[],\n minStrength: number,\n): PatternCluster[] {\n // Build inverted index: queryHash → entry keys.\n const hashToEntries = new Map<string, DreamingStoreEntry[]>();\n for (const entry of entries) {\n for (const queryHash of entry.queryHashes ?? []) {\n const group = hashToEntries.get(queryHash);\n if (group) {\n group.push(entry);\n } else {\n hashToEntries.set(queryHash, [entry]);\n }\n }\n }\n\n // Find query hashes that appear in 2+ distinct entries from different paths.\n const significantHashes: Array<{ hash: string; entries: DreamingStoreEntry[] }> = [];\n for (const [hash, group] of hashToEntries) {\n const uniquePaths = new Set(group.map((e) => e.path));\n if (group.length >= 2 && uniquePaths.size >= 2) {\n significantHashes.push({ hash, entries: group });\n }\n }\n\n if (significantHashes.length === 0) return [];\n\n // Merge overlapping groups into clusters using union-find.\n const keyToCluster = new Map<string, Set<string>>();\n const keyToEntry = new Map<string, DreamingStoreEntry>();\n\n for (const entry of entries) {\n keyToEntry.set(entry.key, entry);\n }\n\n for (const { entries: groupEntries } of significantHashes) {\n const keys = groupEntries.map((e) => e.key);\n // Find or create the cluster for the first key.\n let mergedCluster = keyToCluster.get(keys[0]!);\n if (!mergedCluster) {\n mergedCluster = new Set<string>();\n mergedCluster.add(keys[0]!);\n keyToCluster.set(keys[0]!, mergedCluster);\n }\n // Merge all other keys into this cluster.\n for (const key of keys.slice(1)) {\n const existingCluster = keyToCluster.get(key);\n if (existingCluster && existingCluster !== mergedCluster) {\n for (const existingKey of existingCluster) {\n mergedCluster.add(existingKey);\n keyToCluster.set(existingKey, mergedCluster);\n }\n } else {\n mergedCluster.add(key);\n keyToCluster.set(key, mergedCluster);\n }\n }\n }\n\n // Deduplicate cluster sets.\n const seenClusters = new Set<Set<string>>();\n const rawClusters: Set<string>[] = [];\n for (const cluster of keyToCluster.values()) {\n if (!seenClusters.has(cluster) && cluster.size >= 2) {\n seenClusters.add(cluster);\n rawClusters.push(cluster);\n }\n }\n\n // Score each cluster.\n const scoredClusters: PatternCluster[] = [];\n for (const clusterKeys of rawClusters) {\n const members: DreamingStoreEntry[] = [];\n for (const key of clusterKeys) {\n const entry = keyToEntry.get(key);\n if (entry) members.push(entry);\n }\n if (members.length < 2) continue;\n\n // Shared queries: hashes that appear in 2+ members.\n const hashCounts = new Map<string, number>();\n for (const member of members) {\n for (const hash of member.queryHashes ?? []) {\n hashCounts.set(hash, (hashCounts.get(hash) ?? 0) + 1);\n }\n }\n const sharedQueries = [...hashCounts.entries()]\n .filter(([, count]) => count >= 2)\n .map(([hash]) => hash);\n\n const allUniqueHashes = new Set<string>();\n for (const member of members) {\n for (const hash of member.queryHashes ?? []) allUniqueHashes.add(hash);\n }\n\n const strength = allUniqueHashes.size > 0 ? sharedQueries.length / allUniqueHashes.size : 0;\n if (strength < minStrength) continue;\n\n const distinctPaths = [...new Set(members.map((m) => m.path))];\n\n // Representative: the member with the highest totalSignalCount.\n const representative = members.reduce((best, current) =>\n (current.totalSignalCount ?? 0) > (best.totalSignalCount ?? 0) ? current : best,\n );\n\n scoredClusters.push({\n representative,\n members,\n strength,\n sharedQueries,\n distinctPaths,\n });\n }\n\n // Sort by strength descending, then by member count.\n scoredClusters.sort((a, b) => {\n if (b.strength !== a.strength) return b.strength - a.strength;\n return b.members.length - a.members.length;\n });\n\n return scoredClusters;\n}\n\n// ── DREAMS.md writer ───────────────────────────────────────────────────\n\nasync function appendPatternSummary(\n dreamingRoot: string,\n clusters: PatternCluster[],\n now: Date,\n): Promise<void> {\n const dreamsPath = path.join(dreamingRoot, DREAMS_MD_FILENAME);\n const existing = await fs.readFile(dreamsPath, 'utf-8').catch((err: unknown) => {\n if ((err as NodeJS.ErrnoException)?.code === 'ENOENT') return '';\n throw err;\n });\n\n const day = isoDay(now);\n const lines: string[] = [];\n const newClusters = clusters.filter((cluster) =>\n !existing.includes(`xopc-rem-pattern id=\"${remPatternKey(cluster.members.map((member) => member.key))}\"`),\n );\n if (newClusters.length === 0) return;\n\n if (existing.trim().length === 0) {\n lines.push('# Dream Diary', '');\n }\n\n lines.push(`## REM Pattern Discovery — ${day}`, '');\n lines.push(`*${now.toISOString()}*`, '');\n\n for (let i = 0; i < newClusters.length; i++) {\n const cluster = newClusters[i]!;\n lines.push(`<!-- xopc-rem-pattern id=\"${remPatternKey(cluster.members.map((member) => member.key))}\" -->`);\n lines.push(\n `### Pattern ${i + 1}: ${cluster.distinctPaths.length} files, strength=${cluster.strength.toFixed(2)}`,\n );\n lines.push('');\n lines.push(`**Files involved:** ${cluster.distinctPaths.join(', ')}`);\n lines.push(`**Shared query themes:** ${cluster.sharedQueries.length} overlapping queries`);\n lines.push(`**Members:** ${cluster.members.length} snippets`);\n lines.push('');\n // Include the representative snippet.\n const rep = cluster.representative;\n lines.push(`> ${rep.snippet?.slice(0, 200) ?? '(no snippet)'}`);\n lines.push(`> — ${rep.path}:${rep.startLine}-${rep.endLine}`);\n lines.push('');\n }\n\n lines.push('---', '');\n\n const separator = existing.trim().length > 0 && !existing.endsWith('\\n') ? '\\n' : '';\n const next = `${existing}${separator}${lines.join('\\n')}`;\n await fs.writeFile(dreamsPath, next, 'utf-8');\n}\n\n// ── Last-run writer ────────────────────────────────────────────────────\n\nasync function writeLastRun(\n dreamingRoot: string,\n params: {\n runId: string;\n startedAt: string;\n cfg: DreamingRemConfig;\n ok: boolean;\n reason: string;\n startMs: number;\n rem: DreamingRemLastRun['rem'];\n errorMessage?: string;\n },\n): Promise<void> {\n const finishedAt = new Date().toISOString();\n const durationMs = Math.max(0, Date.now() - params.startMs);\n\n const lastRun: DreamingRemLastRun = {\n version: DREAMING_LAST_RUN_FORMAT_VERSION,\n phase: 'rem',\n runId: params.runId,\n startedAt: params.startedAt,\n finishedAt,\n durationMs,\n ok: params.ok,\n reason: params.reason,\n config: params.cfg,\n rem: params.rem,\n ...(params.errorMessage ? { errorMessage: params.errorMessage } : {}),\n };\n\n const lastRunPath = path.join(dreamingRoot, DREAMING_DIR_RELATIVE, 'last-run-rem.json');\n await fs.mkdir(path.dirname(lastRunPath), { recursive: true });\n const tmp = `${lastRunPath}.${process.pid}.${Date.now()}.tmp`;\n await fs.writeFile(tmp, `${JSON.stringify(lastRun, null, 2)}\\n`, 'utf-8');\n await fs.rename(tmp, lastRunPath);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","names":[],"sources":["../../../../../src/agent/memory/dreaming/scope.ts"],"sourcesContent":["import path from 'node:path';\n\nimport type { Config } from '../../../config/schema.js';\nimport {\n normalizeAgentId,\n resolveAgentWorkspaceDir,\n resolveDefaultAgentId,\n} from '../../agent-scope.js';\nimport { resolveUserDir } from '../../../config/paths.js';\nimport type { DreamingResolvedConfig } from './config.js';\nimport { resolveDreamingConfig } from './config.js';\n\nexport type DreamingAgentScope = {\n agentId: string;\n workspaceDir: string;\n memoriesDir: string;\n memoryPath: string;\n dreamsPath: string;\n config: DreamingResolvedConfig;\n memory: Config['userContext']['memory'];\n};\n\nexport function resolveDreamingRoot(): string {\n return path.join(resolveUserDir(), 'memories');\n}\n\nexport function resolveDreamingAgentScope(config: Config, requestedAgentId?: string | null): DreamingAgentScope {\n const agentId = normalizeAgentId(requestedAgentId || resolveDefaultAgentId(config));\n const memoriesDir = resolveDreamingRoot();\n return {\n agentId,\n workspaceDir: resolveAgentWorkspaceDir(config, agentId),\n memoriesDir,\n memoryPath: path.join(memoriesDir, 'MEMORY.md'),\n dreamsPath: path.join(memoriesDir, 'DREAMS.md'),\n config: resolveDreamingConfig(config, agentId),\n memory: config.userContext.memory,\n };\n}\n"],"mappings":";;;;;kBAO8B;YAC4B;AAc1D,SAAgB,sBAA8B;AAC5C,QAAO,KAAK,KAAK,gBAAgB,EAAE,WAAW;;AAGhD,SAAgB,0BAA0B,QAAgB,kBAAsD;CAC9G,MAAM,UAAU,iBAAiB,oBAAoB,sBAAsB,OAAO,CAAC;CACnF,MAAM,cAAc,qBAAqB;AACzC,QAAO;EACL;EACA,cAAc,yBAAyB,QAAQ,QAAQ;EACvD;EACA,YAAY,KAAK,KAAK,aAAa,YAAY;EAC/C,YAAY,KAAK,KAAK,aAAa,YAAY;EAC/C,QAAQ,sBAAsB,QAAQ,QAAQ;EAC9C,QAAQ,OAAO,YAAY;EAC5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"short-term-store.js","names":[],"sources":["../../../../../src/agent/memory/dreaming/short-term-store.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { createHash, randomUUID } from 'node:crypto';\n\nimport type { MemorySearchOptions } from '../../prompt/memory/index.js';\nimport { createLogger } from '../../../utils/logger.js';\nimport {\n SHORT_TERM_PROMOTION_LOCK_RELATIVE,\n SHORT_TERM_RECALL_STORE_RELATIVE,\n} from './constants.js';\nimport { buildEntryKey, clamp01, isoDay, normalizeMemoryPath } from './utils.js';\n\nconst log = createLogger('Dreaming:Store');\nconst STORE_MAX_ENTRIES = 2_000;\nconst STORE_MAX_AGE_MS = 90 * 24 * 60 * 60 * 1_000;\nconst PROMOTED_MAX_AGE_MS = 30 * 24 * 60 * 60 * 1_000;\nconst LOCK_STALE_MS = 60_000;\n\nexport type DreamingStoreEntry = {\n key: string;\n path: string;\n startLine: number;\n endLine: number;\n snippet: string;\n\n // ── Signal dimensions ────────────────────────────────────────────────\n /** Number of times this snippet was returned by a memory recall query. */\n recallCount: number;\n /** Number of times recorded from source-side sweep phases. */\n sourceCount: number;\n /** Number of times replayed from grounded context (agent-initiated). */\n groundedCount: number;\n /** Number of times the light phase touched this entry. */\n lightHits: number;\n /** Number of times the REM phase touched this entry. */\n remHits: number;\n /** Cross-phase hit count (light + deep + rem combined touches). */\n phaseHitCount: number;\n /** Weighted aggregate of all signal dimensions. */\n totalSignalCount: number;\n\n // ── Score tracking ───────────────────────────────────────────────────\n totalScore: number;\n maxScore: number;\n queryHashes: string[];\n recallDays: string[];\n\n // ── Timestamps ───────────────────────────────────────────────────────\n firstRecalledAt: string;\n lastRecalledAt: string;\n lastObservedAt?: string;\n promotedAt?: string;\n};\n\nexport type DreamingStore = {\n version: 1;\n updatedAt: string;\n entries: Record<string, DreamingStoreEntry>;\n};\n\ntype MemoryMatch = Awaited<ReturnType<typeof import('../../prompt/memory/index.js').memorySearch>>[number];\n\nfunction isRecordableMemoryPath(rel: string): boolean {\n const p = normalizeMemoryPath(rel);\n return p.length > 0 && !p.startsWith('../') && !path.isAbsolute(p);\n}\n\nfunction hashQuery(query: string): string {\n return createHash('sha1').update(query.trim().toLowerCase()).digest('hex').slice(0, 12);\n}\n\nfunction mergeRecentDistinct(existing: string[], nextValue: string, limit: number): string[] {\n const seen = new Set<string>();\n const normalized = existing\n .filter((v): v is string => typeof v === 'string')\n .map((v) => v.trim())\n .filter((v) => v.length > 0 && !seen.has(v) && (seen.add(v), true));\n if (nextValue && !normalized.includes(nextValue)) {\n normalized.push(nextValue);\n }\n return normalized.length <= limit ? normalized : normalized.slice(-limit);\n}\n\nfunction mergeQueryHashes(existing: string[], nextHash: string): string[] {\n const out = mergeRecentDistinct(existing, nextHash, 32);\n return out;\n}\n\nfunction emptyStore(nowIso: string): DreamingStore {\n return { version: 1, updatedAt: nowIso, entries: {} };\n}\n\nasync function ensureDreamDir(dreamingRoot: string): Promise<string> {\n const dir = path.join(dreamingRoot, path.dirname(SHORT_TERM_RECALL_STORE_RELATIVE));\n await fs.mkdir(dir, { recursive: true });\n return dir;\n}\n\nasync function readStore(dreamingRoot: string, nowIso: string): Promise<DreamingStore> {\n const storePath = path.join(dreamingRoot, SHORT_TERM_RECALL_STORE_RELATIVE);\n try {\n const raw = await fs.readFile(storePath, 'utf-8');\n const parsed = JSON.parse(raw) as unknown;\n if (!parsed || typeof parsed !== 'object') {\n throw new Error('Dreaming store root must be an object');\n }\n const rec = parsed as Partial<DreamingStore>;\n if (rec.version !== 1 || !rec.entries || typeof rec.entries !== 'object') {\n throw new Error('Dreaming store has an unsupported or invalid shape');\n }\n return {\n version: 1,\n updatedAt: typeof rec.updatedAt === 'string' ? rec.updatedAt : nowIso,\n entries: rec.entries as Record<string, DreamingStoreEntry>,\n };\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code === 'ENOENT') return emptyStore(nowIso);\n const quarantinePath = `${storePath}.corrupt-${Date.now()}`;\n await fs.rename(storePath, quarantinePath).catch(() => undefined);\n log.warn({ err, dreamingRoot, quarantinePath }, 'Failed to read dreaming store; quarantined corrupt data');\n return emptyStore(nowIso);\n }\n}\n\nfunction pruneStore(store: DreamingStore, nowMs = Date.now()): void {\n for (const [key, entry] of Object.entries(store.entries)) {\n const lastSeenMs = Math.max(\n Date.parse(entry.lastRecalledAt || entry.firstRecalledAt),\n entry.lastObservedAt ? Date.parse(entry.lastObservedAt) : 0,\n );\n const promotedMs = entry.promotedAt ? Date.parse(entry.promotedAt) : Number.NaN;\n if (\n (Number.isFinite(promotedMs) && nowMs - promotedMs > PROMOTED_MAX_AGE_MS)\n || (Number.isFinite(lastSeenMs) && nowMs - lastSeenMs > STORE_MAX_AGE_MS)\n ) {\n delete store.entries[key];\n }\n }\n const entries = Object.values(store.entries);\n if (entries.length <= STORE_MAX_ENTRIES) return;\n entries.sort((left, right) => {\n if (Boolean(left.promotedAt) !== Boolean(right.promotedAt)) return left.promotedAt ? 1 : -1;\n const signalDelta = (right.totalSignalCount ?? 0) - (left.totalSignalCount ?? 0);\n if (signalDelta !== 0) return signalDelta;\n return Date.parse(right.lastRecalledAt) - Date.parse(left.lastRecalledAt);\n });\n const keep = new Set(entries.slice(0, STORE_MAX_ENTRIES).map((entry) => entry.key));\n for (const key of Object.keys(store.entries)) {\n if (!keep.has(key)) delete store.entries[key];\n }\n}\n\nasync function writeStore(dreamingRoot: string, store: DreamingStore): Promise<void> {\n pruneStore(store);\n await ensureDreamDir(dreamingRoot);\n const storePath = path.join(dreamingRoot, SHORT_TERM_RECALL_STORE_RELATIVE);\n const tmp = `${storePath}.${process.pid}.${Date.now()}.${randomUUID()}.tmp`;\n await fs.writeFile(tmp, `${JSON.stringify(store, null, 2)}\\n`, 'utf-8');\n await fs.rename(tmp, storePath);\n}\n\nexport async function recordDreamingRecalls(params: {\n dreamingRoot: string;\n query: string;\n matches: MemoryMatch[];\n options?: MemorySearchOptions;\n now?: Date;\n}): Promise<{ recorded: number; skipped: number; storePath: string }> {\n const dreamingRoot = params.dreamingRoot.trim();\n const query = params.query.trim();\n if (!dreamingRoot || !query) {\n return { recorded: 0, skipped: params.matches.length, storePath: SHORT_TERM_RECALL_STORE_RELATIVE };\n }\n return withDreamingStoreLock(dreamingRoot, async () => {\n const now = params.now ?? new Date();\n const nowIso = now.toISOString();\n const dayBucket = isoDay(now);\n const qHash = hashQuery(query);\n const store = await readStore(dreamingRoot, nowIso);\n\n let recorded = 0;\n let skipped = 0;\n for (const match of params.matches) {\n const file = typeof match?.file === 'string' ? match.file : '';\n if (!file || !isRecordableMemoryPath(file)) {\n skipped += 1;\n continue;\n }\n const lines = typeof match?.lines === 'string' ? match.lines.trim() : '';\n const lineNumbers = Array.isArray(match?.lineNumbers) ? match.lineNumbers : [];\n const startLine = Math.max(1, Math.min(...lineNumbers.filter((n) => Number.isFinite(n) && n > 0)));\n const endLine = Math.max(startLine, Math.max(...lineNumbers.filter((n) => Number.isFinite(n) && n > 0)));\n if (!Number.isFinite(startLine) || !Number.isFinite(endLine)) {\n skipped += 1;\n continue;\n }\n const score = clamp01(Number(match.score));\n const key = buildEntryKey({ path: file, startLine, endLine });\n const existing = store.entries[key];\n const snippet = lines.length > 0 ? lines.slice(0, 360) : file;\n\n const next: DreamingStoreEntry = existing\n ? {\n ...existing,\n snippet,\n recallCount: Math.max(0, Math.floor(existing.recallCount + 1)),\n sourceCount: existing.sourceCount ?? 0,\n groundedCount: existing.groundedCount ?? 0,\n lightHits: existing.lightHits ?? 0,\n remHits: existing.remHits ?? 0,\n phaseHitCount: existing.phaseHitCount ?? 0,\n totalSignalCount: Math.max(0, (existing.totalSignalCount ?? existing.recallCount ?? 0) + 1),\n totalScore: Math.max(0, existing.totalScore + score),\n maxScore: Math.max(existing.maxScore, score),\n queryHashes: mergeQueryHashes(existing.queryHashes ?? [], qHash),\n recallDays: mergeRecentDistinct(existing.recallDays ?? [], dayBucket, 16),\n lastRecalledAt: nowIso,\n }\n : {\n key,\n path: normalizeMemoryPath(file),\n startLine,\n endLine,\n snippet,\n recallCount: 1,\n sourceCount: 0,\n groundedCount: 0,\n lightHits: 0,\n remHits: 0,\n phaseHitCount: 0,\n totalSignalCount: 1,\n totalScore: score,\n maxScore: score,\n queryHashes: [qHash],\n recallDays: [dayBucket],\n firstRecalledAt: nowIso,\n lastRecalledAt: nowIso,\n };\n\n store.entries[key] = next;\n recorded += 1;\n }\n\n if (recorded > 0) {\n store.updatedAt = nowIso;\n await writeStore(dreamingRoot, store);\n }\n\n return { recorded, skipped, storePath: SHORT_TERM_RECALL_STORE_RELATIVE };\n });\n}\n\n/** Serialize all read-modify-write operations against the shared Dreaming store. */\nexport async function withDreamingStoreLock<T>(\n dreamingRoot: string,\n task: () => Promise<T>,\n): Promise<T> {\n const lockPath = path.join(dreamingRoot, SHORT_TERM_PROMOTION_LOCK_RELATIVE);\n await ensureDreamDir(dreamingRoot);\n\n const startedAt = Date.now();\n const timeoutMs = 10_000;\n const retryDelayMs = 50;\n\n while (true) {\n try {\n const handle = await fs.open(lockPath, 'wx');\n await handle.writeFile(`${process.pid}:${Date.now()}\\n`, 'utf-8').catch(() => undefined);\n try {\n return await task();\n } finally {\n await handle.close().catch(() => undefined);\n await fs.unlink(lockPath).catch(() => undefined);\n }\n } catch (err) {\n const code = (err as NodeJS.ErrnoException | undefined)?.code;\n if (code !== 'EEXIST') {\n throw err;\n }\n const lockStat = await fs.stat(lockPath).catch(() => null);\n if (lockStat && Date.now() - lockStat.mtimeMs > LOCK_STALE_MS && await lockOwnerIsDead(lockPath)) {\n await fs.unlink(lockPath).catch(() => undefined);\n log.warn({ lockPath, ageMs: Date.now() - lockStat.mtimeMs }, 'Removed stale dreaming lock');\n continue;\n }\n if (Date.now() - startedAt >= timeoutMs) {\n throw new Error(`Timed out waiting for dreaming promotion lock at ${lockPath}`);\n }\n await new Promise((r) => setTimeout(r, retryDelayMs));\n }\n }\n}\n\n/** @deprecated Use the store-level name; retained for callers outside this module. */\nexport async function withDreamingPromotionLock<T>(\n dreamingRoot: string,\n task: () => Promise<T>,\n): Promise<T> {\n return withDreamingStoreLock(dreamingRoot, task);\n}\n\nasync function lockOwnerIsDead(lockPath: string): Promise<boolean> {\n const raw = await fs.readFile(lockPath, 'utf-8').catch(() => '');\n const pid = Number.parseInt(raw.split(':', 1)[0] ?? '', 10);\n if (!Number.isFinite(pid) || pid <= 0) return true;\n try {\n process.kill(pid, 0);\n return false;\n } catch (error) {\n return (error as NodeJS.ErrnoException | undefined)?.code === 'ESRCH';\n }\n}\n\nexport async function loadDreamingStore(params: {\n dreamingRoot: string;\n}): Promise<{ store: DreamingStore; storePath: string }> {\n const nowIso = new Date().toISOString();\n const store = await readStore(params.dreamingRoot, nowIso);\n return { store, storePath: SHORT_TERM_RECALL_STORE_RELATIVE };\n}\n\nexport async function saveDreamingStore(params: {\n dreamingRoot: string;\n store: DreamingStore;\n}): Promise<void> {\n await writeStore(params.dreamingRoot, params.store);\n}\n\nexport async function resetDreamingStore(params: {\n dreamingRoot: string;\n now?: Date;\n}): Promise<number> {\n return withDreamingStoreLock(params.dreamingRoot, async () => {\n const nowIso = (params.now ?? new Date()).toISOString();\n const store = await readStore(params.dreamingRoot, nowIso);\n const removed = Object.keys(store.entries).length;\n await writeStore(params.dreamingRoot, emptyStore(nowIso));\n return removed;\n });\n}\n\n/** Remove only a stale lock whose owning process is no longer alive. */\nexport async function clearStaleDreamingLock(dreamingRoot: string): Promise<boolean> {\n const lockPath = path.join(dreamingRoot, SHORT_TERM_PROMOTION_LOCK_RELATIVE);\n const lockStat = await fs.stat(lockPath).catch((error: unknown) => {\n if ((error as NodeJS.ErrnoException | undefined)?.code === 'ENOENT') return null;\n throw error;\n });\n if (!lockStat) return false;\n const ageMs = Date.now() - lockStat.mtimeMs;\n if (ageMs <= LOCK_STALE_MS || !(await lockOwnerIsDead(lockPath))) {\n throw new Error(`Dreaming lock is active and cannot be cleared: ${lockPath}`);\n }\n await fs.unlink(lockPath);\n log.warn({ lockPath, ageMs }, 'Cleared stale dreaming lock');\n return true;\n}\n\n// ── Phase-level signal helpers ─────────────────────────────────────────\n\ntype PhaseSignalField = 'sourceCount' | 'groundedCount' | 'lightHits' | 'remHits';\n\n/**\n * Increment a phase-specific signal counter on an existing store entry.\n * Also bumps `phaseHitCount` and `totalSignalCount`.\n * Returns `true` if the entry existed and was updated.\n */\nexport function bumpEntryPhaseSignal(\n entry: DreamingStoreEntry,\n field: PhaseSignalField,\n increment = 1,\n): void {\n entry[field] = (entry[field] ?? 0) + increment;\n entry.phaseHitCount = (entry.phaseHitCount ?? 0) + increment;\n entry.totalSignalCount = (entry.totalSignalCount ?? 0) + increment;\n}\n"],"mappings":";;;;;;;;aAKwD;AAOxD,MAAM,MAAM,aAAa,iBAAiB;AAC1C,MAAM,oBAAoB;AAC1B,MAAM,mBAAmB,OAAU,KAAK,KAAK;AAC7C,MAAM,sBAAsB,MAAU,KAAK,KAAK;AAChD,MAAM,gBAAgB;AA8CtB,SAAS,uBAAuB,KAAsB;CACpD,MAAM,IAAI,oBAAoB,IAAI;AAClC,QAAO,EAAE,SAAS,KAAK,CAAC,EAAE,WAAW,MAAM,IAAI,CAAC,KAAK,WAAW,EAAE;;AAGpE,SAAS,UAAU,OAAuB;AACxC,QAAO,WAAW,OAAO,CAAC,OAAO,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC,OAAO,MAAM,CAAC,MAAM,GAAG,GAAG;;AAGzF,SAAS,oBAAoB,UAAoB,WAAmB,OAAyB;CAC3F,MAAM,uBAAO,IAAI,KAAa;CAC9B,MAAM,aAAa,SAChB,QAAQ,MAAmB,OAAO,MAAM,SAAS,CACjD,KAAK,MAAM,EAAE,MAAM,CAAC,CACpB,QAAQ,MAAM,EAAE,SAAS,KAAK,CAAC,KAAK,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,EAAE,MAAM;AACrE,KAAI,aAAa,CAAC,WAAW,SAAS,UAAU,CAC9C,YAAW,KAAK,UAAU;AAE5B,QAAO,WAAW,UAAU,QAAQ,aAAa,WAAW,MAAM,CAAC,MAAM;;AAG3E,SAAS,iBAAiB,UAAoB,UAA4B;AAExE,QADY,oBAAoB,UAAU,UAAU,GAC1C;;AAGZ,SAAS,WAAW,QAA+B;AACjD,QAAO;EAAE,SAAS;EAAG,WAAW;EAAQ,SAAS,EAAE;EAAE;;AAGvD,eAAe,eAAe,cAAuC;CACnE,MAAM,MAAM,KAAK,KAAK,cAAc,KAAK,QAAQ,iCAAiC,CAAC;AACnF,OAAM,GAAG,MAAM,KAAK,EAAE,WAAW,MAAM,CAAC;AACxC,QAAO;;AAGT,eAAe,UAAU,cAAsB,QAAwC;CACrF,MAAM,YAAY,KAAK,KAAK,cAAc,iCAAiC;AAC3E,KAAI;EACF,MAAM,MAAM,MAAM,GAAG,SAAS,WAAW,QAAQ;EACjD,MAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,MAAI,CAAC,UAAU,OAAO,WAAW,SAC/B,OAAM,IAAI,MAAM,wCAAwC;EAE1D,MAAM,MAAM;AACZ,MAAI,IAAI,YAAY,KAAK,CAAC,IAAI,WAAW,OAAO,IAAI,YAAY,SAC9D,OAAM,IAAI,MAAM,qDAAqD;AAEvE,SAAO;GACL,SAAS;GACT,WAAW,OAAO,IAAI,cAAc,WAAW,IAAI,YAAY;GAC/D,SAAS,IAAI;GACd;UACM,KAAK;AAEZ,MADc,KAA2C,SAC5C,SAAU,QAAO,WAAW,OAAO;EAChD,MAAM,iBAAiB,GAAG,UAAU,WAAW,KAAK,KAAK;AACzD,QAAM,GAAG,OAAO,WAAW,eAAe,CAAC,YAAY,KAAA,EAAU;AACjE,MAAI,KAAK;GAAE;GAAK;GAAc;GAAgB,EAAE,0DAA0D;AAC1G,SAAO,WAAW,OAAO;;;AAI7B,SAAS,WAAW,OAAsB,QAAQ,KAAK,KAAK,EAAQ;AAClE,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,MAAM,QAAQ,EAAE;EACxD,MAAM,aAAa,KAAK,IACtB,KAAK,MAAM,MAAM,kBAAkB,MAAM,gBAAgB,EACzD,MAAM,iBAAiB,KAAK,MAAM,MAAM,eAAe,GAAG,EAC3D;EACD,MAAM,aAAa,MAAM,aAAa,KAAK,MAAM,MAAM,WAAW,GAAG;AACrE,MACG,OAAO,SAAS,WAAW,IAAI,QAAQ,aAAa,uBACjD,OAAO,SAAS,WAAW,IAAI,QAAQ,aAAa,iBAExD,QAAO,MAAM,QAAQ;;CAGzB,MAAM,UAAU,OAAO,OAAO,MAAM,QAAQ;AAC5C,KAAI,QAAQ,UAAU,kBAAmB;AACzC,SAAQ,MAAM,MAAM,UAAU;AAC5B,MAAI,QAAQ,KAAK,WAAW,KAAK,QAAQ,MAAM,WAAW,CAAE,QAAO,KAAK,aAAa,IAAI;EACzF,MAAM,eAAe,MAAM,oBAAoB,MAAM,KAAK,oBAAoB;AAC9E,MAAI,gBAAgB,EAAG,QAAO;AAC9B,SAAO,KAAK,MAAM,MAAM,eAAe,GAAG,KAAK,MAAM,KAAK,eAAe;GACzE;CACF,MAAM,OAAO,IAAI,IAAI,QAAQ,MAAM,GAAG,kBAAkB,CAAC,KAAK,UAAU,MAAM,IAAI,CAAC;AACnF,MAAK,MAAM,OAAO,OAAO,KAAK,MAAM,QAAQ,CAC1C,KAAI,CAAC,KAAK,IAAI,IAAI,CAAE,QAAO,MAAM,QAAQ;;AAI7C,eAAe,WAAW,cAAsB,OAAqC;AACnF,YAAW,MAAM;AACjB,OAAM,eAAe,aAAa;CAClC,MAAM,YAAY,KAAK,KAAK,cAAc,iCAAiC;CAC3E,MAAM,MAAM,GAAG,UAAU,GAAG,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,GAAG,YAAY,CAAC;AACtE,OAAM,GAAG,UAAU,KAAK,GAAG,KAAK,UAAU,OAAO,MAAM,EAAE,CAAC,KAAK,QAAQ;AACvE,OAAM,GAAG,OAAO,KAAK,UAAU;;AAGjC,eAAsB,sBAAsB,QAM0B;CACpE,MAAM,eAAe,OAAO,aAAa,MAAM;CAC/C,MAAM,QAAQ,OAAO,MAAM,MAAM;AACjC,KAAI,CAAC,gBAAgB,CAAC,MACpB,QAAO;EAAE,UAAU;EAAG,SAAS,OAAO,QAAQ;EAAQ,WAAW;EAAkC;AAErG,QAAO,sBAAsB,cAAc,YAAY;EACrD,MAAM,MAAM,OAAO,uBAAO,IAAI,MAAM;EACpC,MAAM,SAAS,IAAI,aAAa;EAChC,MAAM,YAAY,OAAO,IAAI;EAC7B,MAAM,QAAQ,UAAU,MAAM;EAC9B,MAAM,QAAQ,MAAM,UAAU,cAAc,OAAO;EAEnD,IAAI,WAAW;EACf,IAAI,UAAU;AACd,OAAK,MAAM,SAAS,OAAO,SAAS;GAClC,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,MAAM,OAAO;AAC5D,OAAI,CAAC,QAAQ,CAAC,uBAAuB,KAAK,EAAE;AAC1C,eAAW;AACX;;GAEF,MAAM,QAAQ,OAAO,OAAO,UAAU,WAAW,MAAM,MAAM,MAAM,GAAG;GACtE,MAAM,cAAc,MAAM,QAAQ,OAAO,YAAY,GAAG,MAAM,cAAc,EAAE;GAC9E,MAAM,YAAY,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,YAAY,QAAQ,MAAM,OAAO,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;GAClG,MAAM,UAAU,KAAK,IAAI,WAAW,KAAK,IAAI,GAAG,YAAY,QAAQ,MAAM,OAAO,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;AACxG,OAAI,CAAC,OAAO,SAAS,UAAU,IAAI,CAAC,OAAO,SAAS,QAAQ,EAAE;AAC5D,eAAW;AACX;;GAEF,MAAM,QAAQ,QAAQ,OAAO,MAAM,MAAM,CAAC;GAC1C,MAAM,MAAM,cAAc;IAAE,MAAM;IAAM;IAAW;IAAS,CAAC;GAC7D,MAAM,WAAW,MAAM,QAAQ;GAC/B,MAAM,UAAU,MAAM,SAAS,IAAI,MAAM,MAAM,GAAG,IAAI,GAAG;GAEzD,MAAM,OAA2B,WAC7B;IACE,GAAG;IACH;IACA,aAAa,KAAK,IAAI,GAAG,KAAK,MAAM,SAAS,cAAc,EAAE,CAAC;IAC9D,aAAa,SAAS,eAAe;IACrC,eAAe,SAAS,iBAAiB;IACzC,WAAW,SAAS,aAAa;IACjC,SAAS,SAAS,WAAW;IAC7B,eAAe,SAAS,iBAAiB;IACzC,kBAAkB,KAAK,IAAI,IAAI,SAAS,oBAAoB,SAAS,eAAe,KAAK,EAAE;IAC3F,YAAY,KAAK,IAAI,GAAG,SAAS,aAAa,MAAM;IACpD,UAAU,KAAK,IAAI,SAAS,UAAU,MAAM;IAC5C,aAAa,iBAAiB,SAAS,eAAe,EAAE,EAAE,MAAM;IAChE,YAAY,oBAAoB,SAAS,cAAc,EAAE,EAAE,WAAW,GAAG;IACzE,gBAAgB;IACjB,GACD;IACE;IACA,MAAM,oBAAoB,KAAK;IAC/B;IACA;IACA;IACA,aAAa;IACb,aAAa;IACb,eAAe;IACf,WAAW;IACX,SAAS;IACT,eAAe;IACf,kBAAkB;IAClB,YAAY;IACZ,UAAU;IACV,aAAa,CAAC,MAAM;IACpB,YAAY,CAAC,UAAU;IACvB,iBAAiB;IACjB,gBAAgB;IACjB;AAEL,SAAM,QAAQ,OAAO;AACrB,eAAY;;AAGd,MAAI,WAAW,GAAG;AAChB,SAAM,YAAY;AAClB,SAAM,WAAW,cAAc,MAAM;;AAGvC,SAAO;GAAE;GAAU;GAAS,WAAW;GAAkC;GACzE;;;AAIJ,eAAsB,sBACpB,cACA,MACY;CACZ,MAAM,WAAW,KAAK,KAAK,cAAc,mCAAmC;AAC5E,OAAM,eAAe,aAAa;CAElC,MAAM,YAAY,KAAK,KAAK;CAC5B,MAAM,YAAY;CAClB,MAAM,eAAe;AAErB,QAAO,KACL,KAAI;EACF,MAAM,SAAS,MAAM,GAAG,KAAK,UAAU,KAAK;AAC5C,QAAM,OAAO,UAAU,GAAG,QAAQ,IAAI,GAAG,KAAK,KAAK,CAAC,KAAK,QAAQ,CAAC,YAAY,KAAA,EAAU;AACxF,MAAI;AACF,UAAO,MAAM,MAAM;YACX;AACR,SAAM,OAAO,OAAO,CAAC,YAAY,KAAA,EAAU;AAC3C,SAAM,GAAG,OAAO,SAAS,CAAC,YAAY,KAAA,EAAU;;UAE3C,KAAK;AAEZ,MADc,KAA2C,SAC5C,SACX,OAAM;EAER,MAAM,WAAW,MAAM,GAAG,KAAK,SAAS,CAAC,YAAY,KAAK;AAC1D,MAAI,YAAY,KAAK,KAAK,GAAG,SAAS,UAAU,iBAAiB,MAAM,gBAAgB,SAAS,EAAE;AAChG,SAAM,GAAG,OAAO,SAAS,CAAC,YAAY,KAAA,EAAU;AAChD,OAAI,KAAK;IAAE;IAAU,OAAO,KAAK,KAAK,GAAG,SAAS;IAAS,EAAE,8BAA8B;AAC3F;;AAEF,MAAI,KAAK,KAAK,GAAG,aAAa,UAC5B,OAAM,IAAI,MAAM,oDAAoD,WAAW;AAEjF,QAAM,IAAI,SAAS,MAAM,WAAW,GAAG,aAAa,CAAC;;;;AAM3D,eAAsB,0BACpB,cACA,MACY;AACZ,QAAO,sBAAsB,cAAc,KAAK;;AAGlD,eAAe,gBAAgB,UAAoC;CACjE,MAAM,MAAM,MAAM,GAAG,SAAS,UAAU,QAAQ,CAAC,YAAY,GAAG;CAChE,MAAM,MAAM,OAAO,SAAS,IAAI,MAAM,KAAK,EAAE,CAAC,MAAM,IAAI,GAAG;AAC3D,KAAI,CAAC,OAAO,SAAS,IAAI,IAAI,OAAO,EAAG,QAAO;AAC9C,KAAI;AACF,UAAQ,KAAK,KAAK,EAAE;AACpB,SAAO;UACA,OAAO;AACd,SAAQ,OAA6C,SAAS;;;AAIlE,eAAsB,kBAAkB,QAEiB;CACvD,MAAM,0BAAS,IAAI,MAAM,EAAC,aAAa;AAEvC,QAAO;EAAE,OAAA,MADW,UAAU,OAAO,cAAc,OAAO;EAC1C,WAAW;EAAkC;;AAG/D,eAAsB,kBAAkB,QAGtB;AAChB,OAAM,WAAW,OAAO,cAAc,OAAO,MAAM;;AAGrD,eAAsB,mBAAmB,QAGrB;AAClB,QAAO,sBAAsB,OAAO,cAAc,YAAY;EAC5D,MAAM,UAAU,OAAO,uBAAO,IAAI,MAAM,EAAE,aAAa;EACvD,MAAM,QAAQ,MAAM,UAAU,OAAO,cAAc,OAAO;EAC1D,MAAM,UAAU,OAAO,KAAK,MAAM,QAAQ,CAAC;AAC3C,QAAM,WAAW,OAAO,cAAc,WAAW,OAAO,CAAC;AACzD,SAAO;GACP;;;AAIJ,eAAsB,uBAAuB,cAAwC;CACnF,MAAM,WAAW,KAAK,KAAK,cAAc,mCAAmC;CAC5E,MAAM,WAAW,MAAM,GAAG,KAAK,SAAS,CAAC,OAAO,UAAmB;AACjE,MAAK,OAA6C,SAAS,SAAU,QAAO;AAC5E,QAAM;GACN;AACF,KAAI,CAAC,SAAU,QAAO;CACtB,MAAM,QAAQ,KAAK,KAAK,GAAG,SAAS;AACpC,KAAI,SAAS,iBAAiB,CAAE,MAAM,gBAAgB,SAAS,CAC7D,OAAM,IAAI,MAAM,kDAAkD,WAAW;AAE/E,OAAM,GAAG,OAAO,SAAS;AACzB,KAAI,KAAK;EAAE;EAAU;EAAO,EAAE,8BAA8B;AAC5D,QAAO;;;;;;;AAYT,SAAgB,qBACd,OACA,OACA,YAAY,GACN;AACN,OAAM,UAAU,MAAM,UAAU,KAAK;AACrC,OAAM,iBAAiB,MAAM,iBAAiB,KAAK;AACnD,OAAM,oBAAoB,MAAM,oBAAoB,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","names":[],"sources":["../../../../../src/agent/memory/dreaming/utils.ts"],"sourcesContent":["import fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { createHash } from 'node:crypto';\n\nimport type { DreamingDeepConfig } from './config.js';\nimport {\n DEFAULT_DEEP_CRON,\n DEFAULT_MAX_AGE_DAYS,\n DEFAULT_RECENCY_HALF_LIFE_DAYS,\n DIVERSITY_DIMENSION_COUNT,\n DIVERSITY_WEIGHT,\n MS_PER_DAY,\n REINFORCEMENT_WEIGHT,\n} from './constants.js';\n// `DreamingStoreEntry` lives in `./short-term-store.js`, which imports value\n// helpers from THIS file — so importing it back creates a circular cycle.\n// `computeCandidateScore` only reads three numeric/string fields; declaring a\n// narrow structural type keeps the helper decoupled.\ntype DreamingStoreEntryScoringView = {\n recallCount: number;\n totalScore: number;\n lastRecalledAt?: string;\n queryHashes?: readonly string[];\n sourceCount: number;\n groundedCount: number;\n lightHits: number;\n remHits: number;\n};\n\n// ── Path + keying ─────────────────────────────────────────────────────\n\n/** Normalize a workspace-relative memory path: forward slashes, no odd ../ escapes at start. */\nexport function normalizeMemoryPath(rel: string): string {\n if (typeof rel !== 'string' || !rel.trim()) return '';\n const s = rel.trim().replace(/\\\\/g, '/');\n return path.posix\n .normalize(s)\n .replace(/^(\\.\\/)+/, '')\n .replace(/\\/+/g, '/');\n}\n\n/**\n * Stable id for a short-term store entry (path + line range).\n * Format: `{normalizedPath}#{start}-{end}` (1-based, inclusive end).\n */\nexport function buildEntryKey(parts: { path: string; startLine: number; endLine: number }): string {\n const p = normalizeMemoryPath(parts.path);\n const a = Math.max(1, Math.floor(parts.startLine));\n const b = Math.max(a, Math.floor(parts.endLine));\n return `${p}#${a}-${b}`;\n}\n\n/** YYYY-MM-DD in local time. */\nexport function isoDay(d: Date): string {\n const y = d.getFullYear();\n const m = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n return `${y}-${m}-${day}`;\n}\n\n// ── Numbers + deep config defaults ────────────────────────────────────\n\nexport function clamp01(value: number): number {\n if (!Number.isFinite(value)) return 0;\n return Math.max(0, Math.min(1, value));\n}\n\nfunction toPositiveInt(value: unknown, fallback: number): number {\n const num = typeof value === 'string' ? Number(value) : Number(value);\n if (!Number.isFinite(num)) return fallback;\n const floored = Math.floor(num);\n return floored > 0 ? floored : fallback;\n}\n\nfunction toNonNegInt(value: unknown, fallback: number): number {\n const num = typeof value === 'string' ? Number(value) : Number(value);\n if (!Number.isFinite(num)) return fallback;\n const floored = Math.floor(num);\n return floored >= 0 ? floored : fallback;\n}\n\nfunction clampScore(value: number, fallback: number): number {\n if (!Number.isFinite(value)) return fallback;\n return Math.max(0, Math.min(1, value));\n}\n\nfunction trimmedCron(value: unknown, fallback: string): string {\n return typeof value === 'string' && value.trim() ? value.trim() : fallback;\n}\n\n/** Fills in deep-phase defaults; mirrors `resolveDreamingConfig` deep object when only partial overrides are given. */\nexport function resolveDeepDefaults(overrides?: Partial<DreamingDeepConfig>): DreamingDeepConfig {\n return {\n enabled: overrides?.enabled !== false,\n cron: trimmedCron(overrides?.cron, DEFAULT_DEEP_CRON),\n minScore: clampScore(Number(overrides?.minScore), 0.8),\n minRecallCount: toPositiveInt(overrides?.minRecallCount, 3),\n minUniqueQueries: toPositiveInt(overrides?.minUniqueQueries, 3),\n limit: toNonNegInt(overrides?.limit, 10),\n recencyHalfLifeDays: toPositiveInt(overrides?.recencyHalfLifeDays, DEFAULT_RECENCY_HALF_LIFE_DAYS),\n maxAgeDays: toPositiveInt(overrides?.maxAgeDays, DEFAULT_MAX_AGE_DAYS),\n };\n}\n\n// ── Scoring (deep promotion) ─────────────────────────────────────────\n\nexport function computeCandidateScore(\n entry: DreamingStoreEntryScoringView,\n nowMs: number,\n recencyHalfLifeDays: number,\n): { avgScore: number; score: number; recencyDecay: number } {\n const recall = Math.max(0, entry.recallCount);\n const avgRaw = recall > 0 ? entry.totalScore / recall : 0;\n const avgScore = clamp01(avgRaw);\n\n let recencyDecay = 1;\n if (entry.lastRecalledAt) {\n const last = Date.parse(entry.lastRecalledAt);\n if (Number.isFinite(last)) {\n const days = Math.max(0, (nowMs - last) / MS_PER_DAY);\n const hl = Math.max(0.1, recencyHalfLifeDays);\n recencyDecay = 0.5 ** (days / hl);\n }\n }\n\n const logRecall = Math.log(1 + recall);\n const reinforcement = REINFORCEMENT_WEIGHT * Math.min(logRecall, 3);\n\n const qCount = entry.queryHashes?.length ?? 0;\n const uniqueQueryTerm = Math.min(1, qCount / 6) * DIVERSITY_WEIGHT;\n\n const dims = [entry.sourceCount, entry.groundedCount, entry.lightHits, entry.remHits].filter(\n (n) => n > 0,\n ).length;\n const signalDiversity = ((dims / DIVERSITY_DIMENSION_COUNT) * DIVERSITY_WEIGHT) / 2;\n\n const score = clamp01(avgScore * recencyDecay + reinforcement * 0.25 + uniqueQueryTerm + signalDiversity);\n\n return { avgScore, score, recencyDecay };\n}\n\nexport function compareCandidatesByScore(\n a: { score: number; key: string },\n b: { score: number; key: string },\n): number {\n if (b.score !== a.score) return b.score - a.score;\n return a.key.localeCompare(b.key);\n}\n\n// ── File slices + integrity ─────────────────────────────────────────\n\nexport async function readFileLines(fullPath: string): Promise<string[] | null> {\n try {\n const raw = await fs.readFile(fullPath, 'utf-8');\n return raw.split(/\\r?\\n/);\n } catch (err) {\n if ((err as NodeJS.ErrnoException | undefined)?.code === 'ENOENT') return null;\n throw err;\n }\n}\n\n/** 1-based inclusive line range. Joins with newlines. */\nexport function sliceRange(lines: string[], startLine: number, endLine: number): string {\n const a = Math.max(1, Math.floor(startLine));\n const b = Math.max(a, Math.floor(endLine));\n const out = lines.slice(a - 1, b);\n return out.join('\\n').trimEnd();\n}\n\nexport function isExpiredEntry(\n lastRecalledAt: string | undefined,\n nowMs: number,\n maxAgeDays: number,\n): boolean {\n if (!lastRecalledAt) return true;\n const t = Date.parse(lastRecalledAt);\n if (!Number.isFinite(t)) return true;\n return (nowMs - t) / MS_PER_DAY > maxAgeDays;\n}\n\n/** Reject empty, tiny, or absurdly long snippets; blocks obvious “tool error” text. */\nexport function isContaminatedSnippet(snippet: string): boolean {\n const s = snippet.trim();\n if (s.length < 3) return true;\n if (s.length > 12_000) return true;\n if (!/\\p{L}/u.test(s) && !/\\d/.test(s)) return true;\n return false;\n}\n\nexport function normalizeSnippetForHash(text: string): string {\n return text\n .toLowerCase()\n .replace(/\\s+/g, ' ')\n .replace(/['\"`]/g, '')\n .trim();\n}\n\nexport function snippetHash(text: string): string {\n const n = normalizeSnippetForHash(text);\n return createHash('sha1').update(n, 'utf8').digest('hex').slice(0, 20);\n}\n\nexport function extractPromotionMarkers(markdown: string): { keys: Set<string>; hashes: Set<string> } {\n const keys = new Set<string>();\n const hashes = new Set<string>();\n let m: RegExpExecArray | null;\n const re = /<!--\\s*xopc-memory-promotion\\s+key=\"([^\"]*)\"\\s+hash=\"([^\"]*)\"\\s*-->/g;\n while ((m = re.exec(markdown)) !== null) {\n if (m[1]) keys.add(m[1]);\n if (m[2]) hashes.add(m[2]);\n }\n return { keys, hashes };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","names":[],"sources":["../../../../src/agent/memory/lifecycle.ts"],"sourcesContent":["import type { MemoryRecord, MemoryStatus } from './types.js';\n\nexport type MemoryStabilityBand = 'strong' | 'working' | 'fragile';\n\nconst DAY_MS = 86_400_000;\n\nfunction clamp01(value: number): number {\n return Math.max(0, Math.min(1, value));\n}\n\nfunction reviewIntervalDays(record: Pick<MemoryRecord, 'durability' | 'explicitness'>): number {\n if (record.durability === 'ephemeral') return 14;\n if (record.durability === 'recurring') return record.explicitness === 'explicit' ? 120 : 60;\n if (record.explicitness === 'explicit') return 365;\n if (record.explicitness === 'observed') return 180;\n return 90;\n}\n\nexport function nextMemoryReviewAt(\n record: Pick<MemoryRecord, 'durability' | 'explicitness'>,\n fromMs = Date.now(),\n): string {\n return new Date(fromMs + reviewIntervalDays(record) * DAY_MS).toISOString();\n}\n\nexport function resolveMemoryStability(record: MemoryRecord, nowMs = Date.now()): {\n score: number;\n band: MemoryStabilityBand;\n reviewAt: string;\n reviewDue: boolean;\n expired: boolean;\n} {\n const confidence = clamp01(record.confidence ?? 0.5);\n const explicitness = record.explicitness === 'explicit' ? 1 : record.explicitness === 'observed' ? 0.7 : 0.45;\n const durability = record.durability === 'durable' ? 1 : record.durability === 'recurring' ? 0.85 : 0.55;\n const evidence = record.evidence ?? [];\n const evidenceConfidence = evidence.length > 0\n ? evidence.reduce((sum, item) => sum + clamp01(item.confidence ?? confidence), 0) / evidence.length\n : confidence * 0.8;\n const evidenceStrength = clamp01(evidenceConfidence * 0.75 + Math.min(evidence.length, 4) * 0.0625);\n const updatedAtMs = Date.parse(record.updatedAt);\n const ageDays = Number.isFinite(updatedAtMs) ? Math.max(0, (nowMs - updatedAtMs) / DAY_MS) : 0;\n const halfLifeDays = record.durability === 'ephemeral' ? 21 : record.durability === 'recurring' ? 120 : 365;\n const freshnessFloor = record.explicitness === 'explicit' ? 0.72 : record.explicitness === 'observed' ? 0.48 : 0.28;\n const freshness = freshnessFloor + (1 - freshnessFloor) * Math.pow(0.5, ageDays / halfLifeDays);\n const raw = confidence * 0.32\n + explicitness * 0.2\n + clamp01(record.importance) * 0.16\n + durability * 0.14\n + evidenceStrength * 0.18;\n const score = Math.round(clamp01(raw * freshness) * 1000) / 1000;\n const band: MemoryStabilityBand = score >= 0.75 ? 'strong' : score >= 0.5 ? 'working' : 'fragile';\n const inferredReviewAt = nextMemoryReviewAt(record, Number.isFinite(updatedAtMs) ? updatedAtMs : nowMs);\n const reviewAt = record.reviewAfter && Number.isFinite(Date.parse(record.reviewAfter))\n ? record.reviewAfter\n : inferredReviewAt;\n const expired = Boolean(\n (record.expiresAt && Date.parse(record.expiresAt) <= nowMs)\n || (record.validTo && Date.parse(record.validTo) <= nowMs),\n );\n const reviewDue = record.status === 'candidate'\n || record.status === 'needs_review'\n || record.status === 'stale'\n || Date.parse(reviewAt) <= nowMs;\n return { score, band, reviewAt, reviewDue, expired };\n}\n\nexport function effectiveMemoryStatus(record: MemoryRecord, nowMs = Date.now()): MemoryStatus {\n const lifecycle = resolveMemoryStability(record, nowMs);\n if (lifecycle.expired && record.status === 'active') return 'stale';\n if (lifecycle.reviewDue && record.status === 'active') return 'needs_review';\n return record.status ?? 'active';\n}\n"],"mappings":";AAIA,MAAM,SAAS;AAEf,SAAS,QAAQ,OAAuB;AACtC,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,MAAM,CAAC;;AAGxC,SAAS,mBAAmB,QAAmE;AAC7F,KAAI,OAAO,eAAe,YAAa,QAAO;AAC9C,KAAI,OAAO,eAAe,YAAa,QAAO,OAAO,iBAAiB,aAAa,MAAM;AACzF,KAAI,OAAO,iBAAiB,WAAY,QAAO;AAC/C,KAAI,OAAO,iBAAiB,WAAY,QAAO;AAC/C,QAAO;;AAGT,SAAgB,mBACd,QACA,SAAS,KAAK,KAAK,EACX;AACR,QAAO,IAAI,KAAK,SAAS,mBAAmB,OAAO,GAAG,OAAO,CAAC,aAAa;;AAG7E,SAAgB,uBAAuB,QAAsB,QAAQ,KAAK,KAAK,EAM7E;CACA,MAAM,aAAa,QAAQ,OAAO,cAAc,GAAI;CACpD,MAAM,eAAe,OAAO,iBAAiB,aAAa,IAAI,OAAO,iBAAiB,aAAa,KAAM;CACzG,MAAM,aAAa,OAAO,eAAe,YAAY,IAAI,OAAO,eAAe,cAAc,MAAO;CACpG,MAAM,WAAW,OAAO,YAAY,EAAE;CAItC,MAAM,mBAAmB,SAHE,SAAS,SAAS,IACzC,SAAS,QAAQ,KAAK,SAAS,MAAM,QAAQ,KAAK,cAAc,WAAW,EAAE,EAAE,GAAG,SAAS,SAC3F,aAAa,MACqC,MAAO,KAAK,IAAI,SAAS,QAAQ,EAAE,GAAG,MAAO;CACnG,MAAM,cAAc,KAAK,MAAM,OAAO,UAAU;CAChD,MAAM,UAAU,OAAO,SAAS,YAAY,GAAG,KAAK,IAAI,IAAI,QAAQ,eAAe,OAAO,GAAG;CAC7F,MAAM,eAAe,OAAO,eAAe,cAAc,KAAK,OAAO,eAAe,cAAc,MAAM;CACxG,MAAM,iBAAiB,OAAO,iBAAiB,aAAa,MAAO,OAAO,iBAAiB,aAAa,MAAO;CAC/G,MAAM,YAAY,kBAAkB,IAAI,kBAAkB,KAAK,IAAI,IAAK,UAAU,aAAa;CAC/F,MAAM,MAAM,aAAa,MACrB,eAAe,KACf,QAAQ,OAAO,WAAW,GAAG,MAC7B,aAAa,MACb,mBAAmB;CACvB,MAAM,QAAQ,KAAK,MAAM,QAAQ,MAAM,UAAU,GAAG,IAAK,GAAG;CAC5D,MAAM,OAA4B,SAAS,MAAO,WAAW,SAAS,KAAM,YAAY;CACxF,MAAM,mBAAmB,mBAAmB,QAAQ,OAAO,SAAS,YAAY,GAAG,cAAc,MAAM;CACvG,MAAM,WAAW,OAAO,eAAe,OAAO,SAAS,KAAK,MAAM,OAAO,YAAY,CAAC,GAClF,OAAO,cACP;CACJ,MAAM,UAAU,QACb,OAAO,aAAa,KAAK,MAAM,OAAO,UAAU,IAAI,SACjD,OAAO,WAAW,KAAK,MAAM,OAAO,QAAQ,IAAI,MACrD;AAKD,QAAO;EAAE;EAAO;EAAM;EAAU,WAJd,OAAO,WAAW,eAC/B,OAAO,WAAW,kBAClB,OAAO,WAAW,WAClB,KAAK,MAAM,SAAS,IAAI;EACc;EAAS;;AAGtD,SAAgB,sBAAsB,QAAsB,QAAQ,KAAK,KAAK,EAAgB;CAC5F,MAAM,YAAY,uBAAuB,QAAQ,MAAM;AACvD,KAAI,UAAU,WAAW,OAAO,WAAW,SAAU,QAAO;AAC5D,KAAI,UAAU,aAAa,OAAO,WAAW,SAAU,QAAO;AAC9D,QAAO,OAAO,UAAU"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","names":[],"sources":["../../../../src/agent/memory/manager.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\n\nimport { appendMemoryTraceEvent, setKnowledgeSourceItemSynthesisStatus } from '../../storage/sqlite/index.js';\nimport { createLogger } from '../../utils/logger.js';\nimport type { MemoryProvider, MemoryProviderInitOptions } from './provider.js';\nimport { UserUnderstandingService } from './understanding/service.js';\nimport type { UnderstandingCandidate } from './understanding/types.js';\nimport type {\n MemoryDeleteRequest,\n MemoryListRequest,\n MemoryReadRequest,\n MemoryReadResult,\n MemorySearchRequest,\n MemorySearchResult,\n MemorySyncEvent,\n MemoryUpdateRequest,\n MemoryWriteRequest,\n MemoryWriteResult,\n MemoryRecord,\n MemorySignal,\n MemoryKind,\n} from './types.js';\n\nconst log = createLogger('MemoryManager');\n\nexport type MemorySearchStrategy = 'local-first' | 'external-first' | 'fanout' | 'local-only' | 'external-only';\nexport type MemoryWriteStrategy = 'local-first' | 'external-first' | 'write-through' | 'local-only' | 'external-only';\n\nexport interface MemoryRoutingOptions {\n searchStrategy?: MemorySearchStrategy;\n writeStrategy?: MemoryWriteStrategy;\n replicateTo?: string[];\n}\n\nexport interface MemoryManagerOptions extends MemoryRoutingOptions {\n loadProviders?: () => Promise<MemoryProvider[]>;\n writePolicy?: MemoryWritePolicy;\n}\n\nexport interface MemoryWritePolicy {\n allowExternalWrites?: boolean;\n allowedProviderIds?: string[];\n autoWriteKinds?: MemoryKind[];\n requireUserProfileApproval?: boolean;\n}\n\nexport class MemoryManager {\n private providers: MemoryProvider[] = [];\n private toolToProvider = new Map<string, MemoryProvider>();\n private readonly routing: Required<MemoryRoutingOptions>;\n private readonly loadProviders?: () => Promise<MemoryProvider[]>;\n private readonly writePolicy: Required<Pick<MemoryWritePolicy, 'allowExternalWrites' | 'requireUserProfileApproval'>> &\n Omit<MemoryWritePolicy, 'allowExternalWrites' | 'requireUserProfileApproval'>;\n private pluginProvidersLoaded = false;\n private readonly understanding: UserUnderstandingService;\n private readonly lastTurnSourceItem = new Map<string, string>();\n private understandingAgentId: string | undefined;\n\n constructor(options: MemoryManagerOptions = {}) {\n this.routing = {\n searchStrategy: options.searchStrategy ?? 'fanout',\n writeStrategy: options.writeStrategy ?? 'local-first',\n replicateTo: options.replicateTo ?? [],\n };\n this.loadProviders = options.loadProviders;\n this.writePolicy = {\n allowExternalWrites: options.writePolicy?.allowExternalWrites ?? false,\n requireUserProfileApproval: options.writePolicy?.requireUserProfileApproval ?? false,\n allowedProviderIds: options.writePolicy?.allowedProviderIds,\n autoWriteKinds: options.writePolicy?.autoWriteKinds,\n };\n this.understanding = new UserUnderstandingService({\n write: (request) => this.write(request),\n list: (canonicalKey) => this.list({ canonicalKey }),\n });\n }\n\n addProvider(provider: MemoryProvider): void {\n this.providers.push(provider);\n\n for (const schema of provider.getToolSchemas?.() ?? []) {\n const toolName = schema.name;\n if (!toolName) {\n continue;\n }\n if (!this.toolToProvider.has(toolName)) {\n this.toolToProvider.set(toolName, provider);\n } else {\n log.warn(\n { toolName, existing: this.toolToProvider.get(toolName)?.id, ignored: provider.id },\n 'Memory tool name conflict',\n );\n }\n }\n\n log.info(\n { id: provider.id, toolCount: provider.getToolSchemas?.().length ?? 0, capabilities: provider.capabilities },\n 'Memory provider registered',\n );\n }\n\n get providersList(): MemoryProvider[] {\n return [...this.providers];\n }\n\n /**\n * Non-builtin static instructions (builtin uses curated snapshot in system prompt builder).\n */\n buildExternalSystemPrompt(): string {\n const blocks: string[] = [];\n for (const p of this.providers) {\n if (p.capabilities.local) {\n continue;\n }\n try {\n const block = p.systemPromptBlock?.();\n if (block?.trim()) {\n blocks.push(block.trim());\n }\n } catch (err) {\n log.warn({ err, id: p.id }, 'systemPromptBlock failed');\n }\n }\n return blocks.join('\\n\\n');\n }\n\n queuePrefetchAll(query: string, options?: { sessionId?: string }): void {\n for (const p of this.providers) {\n try {\n p.queuePrefetch?.(query, options);\n } catch (err) {\n log.debug({ err, id: p.id }, 'queuePrefetch failed (non-fatal)');\n }\n }\n }\n\n async syncAll(userContent: string, assistantContent: string, options?: { sessionId?: string }): Promise<void> {\n await this.captureTurnUnderstanding(userContent, assistantContent, options);\n await this.syncProvidersForTurn(userContent, assistantContent, options);\n }\n\n async captureTurnUnderstanding(\n userContent: string,\n assistantContent: string,\n options?: { agentId?: string; sessionId?: string; correctionTargetRecordIds?: string[] },\n ): Promise<import('./understanding/types.js').UnderstandingReviewResult> {\n const review = await this.understanding.reviewTurn({\n agentId: options?.agentId ?? this.understandingAgentId,\n userContent,\n assistantContent,\n sessionKey: options?.sessionId,\n correctionTargetRecordIds: options?.correctionTargetRecordIds,\n });\n if (options?.sessionId && review.sourceItemId) {\n this.lastTurnSourceItem.set(options.sessionId, review.sourceItemId);\n }\n return review;\n }\n\n async syncProvidersForTurn(\n userContent: string,\n assistantContent: string,\n options?: { sessionId?: string },\n ): Promise<void> {\n const event: MemorySyncEvent = {\n type: 'turn',\n userContent,\n assistantContent,\n sessionId: options?.sessionId,\n };\n for (const p of this.providers) {\n const started = Date.now();\n try {\n await p.sync?.(event);\n this.trace('sync', p.id, event, {\n resultCount: 1,\n durationMs: Date.now() - started,\n sessionKey: options?.sessionId,\n });\n } catch (err) {\n this.trace('sync', p.id, event, {\n error: err instanceof Error ? err.message : String(err),\n durationMs: Date.now() - started,\n sessionKey: options?.sessionId,\n });\n log.warn({ err, id: p.id }, 'memory sync failed');\n }\n }\n }\n\n async applyUnderstandingCandidates(\n candidates: UnderstandingCandidate[],\n context: {\n agentId?: string;\n sessionKey?: string;\n sourceText?: string;\n reviewSource?: 'turn' | 'background';\n } = {},\n ): Promise<void> {\n const sourceItemId = context.sessionKey\n ? this.lastTurnSourceItem.get(context.sessionKey)\n : undefined;\n await this.understanding.applyCandidates(candidates, {\n ...context,\n agentId: context.agentId ?? this.understandingAgentId,\n sourceItemId,\n });\n if (sourceItemId) {\n setKnowledgeSourceItemSynthesisStatus([sourceItemId], 'completed');\n }\n }\n\n getAdditionalTools(): AgentTool[] {\n const out: AgentTool[] = [];\n const seen = new Set<string>();\n for (const p of this.providers) {\n if (p.capabilities.local) {\n continue;\n }\n try {\n for (const t of p.getToolSchemas?.() ?? []) {\n if (t.name && !seen.has(t.name)) {\n seen.add(t.name);\n out.push(t);\n }\n }\n } catch (err) {\n log.warn({ err, id: p.id }, 'getToolSchemas failed');\n }\n }\n return out;\n }\n\n async handleToolCall(toolName: string, args: Record<string, unknown>): Promise<string> {\n const provider = this.toolToProvider.get(toolName);\n if (!provider) {\n throw new Error(`No memory provider handles tool '${toolName}'`);\n }\n if (!provider.handleToolCall) {\n throw new Error(`Memory provider '${provider.id}' does not handle tool calls`);\n }\n return provider.handleToolCall(toolName, args);\n }\n\n async search(request: MemorySearchRequest): Promise<MemorySearchResult[]> {\n const providers = this.providersForSearch();\n const results: MemorySearchResult[] = [];\n\n for (const p of providers) {\n if (!p.capabilities.search || !p.search) continue;\n const started = Date.now();\n try {\n const providerResults = await p.search(request);\n this.trace('search', p.id, request, {\n resultCount: providerResults.length,\n selectedRecordIds: providerResults.map((result) => result.record.id),\n durationMs: Date.now() - started,\n sessionKey: request.scope?.sessionKey,\n });\n results.push(...providerResults);\n if (providerResults.length > 0 && this.routing.searchStrategy !== 'fanout') {\n break;\n }\n } catch (err) {\n this.trace('search', p.id, request, {\n error: err instanceof Error ? err.message : String(err),\n durationMs: Date.now() - started,\n sessionKey: request.scope?.sessionKey,\n });\n log.warn({ err, id: p.id }, 'memory search failed');\n }\n }\n\n const seen = new Set<string>();\n return results\n .sort((a, b) => b.score - a.score)\n .filter((result) => this.canReadRecord(result.record, request.scope))\n .filter((result) => {\n const key = `${result.citation.providerId}:${result.citation.recordId}`;\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n })\n .slice(0, request.maxResults ?? 5);\n }\n\n async read(request: MemoryReadRequest): Promise<MemoryReadResult | null> {\n for (const p of this.providersForSearch()) {\n if (!p.capabilities.read || !p.read) continue;\n const started = Date.now();\n try {\n const result = await p.read(request);\n this.trace('read', p.id, request, {\n resultCount: result ? 1 : 0,\n selectedRecordIds: result ? [result.record.id] : [],\n durationMs: Date.now() - started,\n sessionKey: request.scope?.sessionKey,\n });\n if (result && this.canReadRecord(result.record, request.scope)) return result;\n } catch (err) {\n this.trace('read', p.id, request, {\n error: err instanceof Error ? err.message : String(err),\n durationMs: Date.now() - started,\n sessionKey: request.scope?.sessionKey,\n });\n log.warn({ err, id: p.id }, 'memory read failed');\n }\n }\n return null;\n }\n\n async get(id: string): Promise<MemoryRecord | null> {\n for (const p of this.providers) {\n if (!p.capabilities.read) continue;\n try {\n const direct = await p.get?.(id);\n if (direct && this.canReadRecord(direct)) return direct;\n } catch (err) {\n log.warn({ err, id: p.id, recordId: id }, 'memory get failed');\n }\n }\n return null;\n }\n\n async list(request: MemoryListRequest): Promise<MemoryRecord[]> {\n const out: MemoryRecord[] = [];\n for (const p of this.providersForSearch()) {\n if (!p.capabilities.read || !p.list) continue;\n try {\n out.push(...(await p.list(request)).filter((record) => this.canReadRecord(record, request.scope)));\n } catch (err) {\n log.warn({ err, id: p.id }, 'memory list failed');\n }\n }\n return out;\n }\n\n async write(request: MemoryWriteRequest): Promise<MemoryWriteResult> {\n return this.writeWithStrategy('write', request);\n }\n\n async update(request: MemoryUpdateRequest): Promise<MemoryWriteResult> {\n return this.writeWithStrategy('update', request);\n }\n\n async delete(request: MemoryDeleteRequest): Promise<MemoryWriteResult> {\n return this.writeWithStrategy('delete', request);\n }\n\n private canReadRecord(record: MemoryRecord, scope?: MemorySearchRequest['scope']): boolean {\n void record;\n void scope;\n return true;\n }\n\n onMemoryWrite(action: 'add' | 'replace' | 'remove', target: 'memory' | 'user', content: string): void {\n for (const p of this.providers) {\n if (p.capabilities.local) {\n continue;\n }\n try {\n p.sync?.({ type: 'write', action, target, content });\n } catch (err) {\n log.debug({ err, id: p.id }, 'memory write sync failed');\n }\n }\n }\n\n recordSignal(signal: MemorySignal): void {\n for (const p of this.providers) {\n const started = Date.now();\n try {\n p.sync?.({ type: 'signal', signal });\n this.trace('sync', p.id, { type: 'signal', signal }, {\n resultCount: 1,\n durationMs: Date.now() - started,\n });\n } catch (err) {\n this.trace('sync', p.id, { type: 'signal', signal }, {\n error: err instanceof Error ? err.message : String(err),\n durationMs: Date.now() - started,\n });\n log.debug({ err, id: p.id, source: signal.source }, 'memory signal sync failed');\n }\n }\n }\n\n async initializeAll(sessionId: string, options?: MemoryProviderInitOptions): Promise<void> {\n this.understandingAgentId = options?.agentId;\n await this.loadPluginProvidersOnce();\n for (const p of this.providers) {\n try {\n await p.initialize(sessionId, options);\n } catch (err) {\n log.warn({ err, id: p.id }, 'initialize failed');\n }\n }\n }\n\n private async loadPluginProvidersOnce(): Promise<void> {\n if (this.pluginProvidersLoaded || !this.loadProviders) return;\n this.pluginProvidersLoaded = true;\n try {\n const providers = await this.loadProviders();\n const existingIds = new Set(this.providers.map((p) => p.id));\n for (const provider of providers) {\n if (existingIds.has(provider.id)) {\n log.warn({ id: provider.id }, 'Skipped duplicate memory provider');\n continue;\n }\n this.addProvider(provider);\n existingIds.add(provider.id);\n }\n } catch (err) {\n log.warn({ err }, 'Memory provider plugin loading failed');\n }\n }\n\n async shutdownAll(): Promise<void> {\n this.lastTurnSourceItem.clear();\n for (const p of [...this.providers].reverse()) {\n try {\n await p.shutdown();\n } catch (err) {\n log.warn({ err, id: p.id }, 'shutdown failed');\n }\n }\n }\n\n private providersForSearch(): MemoryProvider[] {\n const locals = this.providers.filter((p) => p.capabilities.local);\n const externals = this.providers.filter((p) => !p.capabilities.local);\n switch (this.routing.searchStrategy) {\n case 'local-only':\n return locals;\n case 'external-only':\n return externals;\n case 'external-first':\n return [...externals, ...locals];\n case 'local-first':\n case 'fanout':\n default:\n return [...locals, ...externals];\n }\n }\n\n private providersForWrite(): MemoryProvider[] {\n const locals = this.providers.filter((p) => p.capabilities.local);\n const externals = this.providers.filter((p) => !p.capabilities.local);\n switch (this.routing.writeStrategy) {\n case 'local-only':\n return locals;\n case 'external-only':\n return externals;\n case 'external-first':\n return [...externals, ...locals];\n case 'write-through':\n case 'local-first':\n default:\n return [...locals, ...externals];\n }\n }\n\n private async writeWithStrategy(\n operation: 'write' | 'update' | 'delete',\n request: MemoryWriteRequest | MemoryUpdateRequest | MemoryDeleteRequest,\n ): Promise<MemoryWriteResult> {\n const providers =\n operation === 'write' && (request as MemoryWriteRequest).status === 'candidate'\n ? this.providers.filter((provider) => provider.capabilities.local)\n : this.providersForWrite();\n const errors: string[] = [];\n let firstSuccess: MemoryWriteResult | null = null;\n\n for (const p of providers) {\n const fn = p[operation];\n if (!this.providerAllowedForWrite(p, operation, request)) {\n this.trace(operation, p.id, request, {\n skippedReason: 'policy',\n sessionKey: request.scope?.sessionKey,\n });\n continue;\n }\n const canWrite =\n (operation === 'write' && p.capabilities.write) ||\n (operation === 'update' && p.capabilities.update) ||\n (operation === 'delete' && p.capabilities.delete);\n if (!canWrite || !fn) continue;\n const started = Date.now();\n try {\n const result = await fn.call(p, request as never);\n this.trace(operation, p.id, request, {\n resultCount: result.record ? 1 : 0,\n selectedRecordIds: result.record ? [result.record.id] : [],\n error: result.success ? undefined : result.error,\n durationMs: Date.now() - started,\n sessionKey: request.scope?.sessionKey,\n });\n if (result.success) {\n firstSuccess ??= result;\n if (this.routing.writeStrategy !== 'write-through') {\n return result;\n }\n } else if (result.error) {\n errors.push(`${p.id}: ${result.error}`);\n }\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n this.trace(operation, p.id, request, {\n error: message,\n durationMs: Date.now() - started,\n sessionKey: request.scope?.sessionKey,\n });\n errors.push(`${p.id}: ${message}`);\n log.warn({ err, id: p.id, operation }, 'memory write operation failed');\n }\n }\n\n if (firstSuccess) return firstSuccess;\n return { success: false, error: errors.join('; ') || `No provider supports memory ${operation}` };\n }\n\n private providerAllowedForWrite(\n provider: MemoryProvider,\n operation: 'write' | 'update' | 'delete',\n request: MemoryWriteRequest | MemoryUpdateRequest | MemoryDeleteRequest,\n ): boolean {\n if (!provider.capabilities.local && !this.writePolicy.allowExternalWrites) {\n return false;\n }\n if (\n !provider.capabilities.local &&\n this.writePolicy.allowedProviderIds &&\n this.writePolicy.allowedProviderIds.length > 0 &&\n !this.writePolicy.allowedProviderIds.includes(provider.id)\n ) {\n return false;\n }\n if (operation === 'write') {\n const writeRequest = request as MemoryWriteRequest;\n if (writeRequest.status === 'candidate' && !provider.capabilities.local) {\n return false;\n }\n if (\n this.writePolicy.autoWriteKinds &&\n this.writePolicy.autoWriteKinds.length > 0 &&\n !this.writePolicy.autoWriteKinds.includes(writeRequest.kind)\n ) {\n return false;\n }\n if (\n this.writePolicy.requireUserProfileApproval &&\n writeRequest.kind === 'user_profile' &&\n !writeRequest.approved\n ) {\n return false;\n }\n }\n if (operation === 'update' && this.writePolicy.requireUserProfileApproval) {\n const updateRequest = request as MemoryUpdateRequest;\n if (updateRequest.target === 'user' && !updateRequest.approved) {\n return false;\n }\n }\n return true;\n }\n\n private trace(\n phase: 'search' | 'read' | 'write' | 'update' | 'delete' | 'sync' | 'inject' | 'test',\n providerId: string,\n request: unknown,\n meta: {\n sessionKey?: string;\n resultCount?: number;\n selectedRecordIds?: string[];\n skippedReason?: string;\n error?: string;\n durationMs?: number;\n } = {},\n ): void {\n try {\n appendMemoryTraceEvent({\n phase,\n providerId,\n request: sanitizeTraceRequest(request),\n ...meta,\n });\n } catch (err) {\n log.debug({ err, providerId, phase }, 'memory trace append failed');\n }\n }\n}\n\nfunction sanitizeTraceRequest(request: unknown): unknown {\n if (!request || typeof request !== 'object') return request;\n const copy = { ...(request as Record<string, unknown>) };\n if (typeof copy.content === 'string' && copy.content.length > 500) {\n copy.content = `${copy.content.slice(0, 500)}…`;\n }\n return copy;\n}\n"],"mappings":";;;;;;;aAGqD;AAoBrD,MAAM,MAAM,aAAa,gBAAgB;AAuBzC,IAAa,gBAAb,MAA2B;CACzB,YAAsC,EAAE;CACxC,iCAAyB,IAAI,KAA6B;CAC1D;CACA;CACA;CAEA,wBAAgC;CAChC;CACA,qCAAsC,IAAI,KAAqB;CAC/D;CAEA,YAAY,UAAgC,EAAE,EAAE;AAC9C,OAAK,UAAU;GACb,gBAAgB,QAAQ,kBAAkB;GAC1C,eAAe,QAAQ,iBAAiB;GACxC,aAAa,QAAQ,eAAe,EAAE;GACvC;AACD,OAAK,gBAAgB,QAAQ;AAC7B,OAAK,cAAc;GACjB,qBAAqB,QAAQ,aAAa,uBAAuB;GACjE,4BAA4B,QAAQ,aAAa,8BAA8B;GAC/E,oBAAoB,QAAQ,aAAa;GACzC,gBAAgB,QAAQ,aAAa;GACtC;AACD,OAAK,gBAAgB,IAAI,yBAAyB;GAChD,QAAQ,YAAY,KAAK,MAAM,QAAQ;GACvC,OAAO,iBAAiB,KAAK,KAAK,EAAE,cAAc,CAAC;GACpD,CAAC;;CAGJ,YAAY,UAAgC;AAC1C,OAAK,UAAU,KAAK,SAAS;AAE7B,OAAK,MAAM,UAAU,SAAS,kBAAkB,IAAI,EAAE,EAAE;GACtD,MAAM,WAAW,OAAO;AACxB,OAAI,CAAC,SACH;AAEF,OAAI,CAAC,KAAK,eAAe,IAAI,SAAS,CACpC,MAAK,eAAe,IAAI,UAAU,SAAS;OAE3C,KAAI,KACF;IAAE;IAAU,UAAU,KAAK,eAAe,IAAI,SAAS,EAAE;IAAI,SAAS,SAAS;IAAI,EACnF,4BACD;;AAIL,MAAI,KACF;GAAE,IAAI,SAAS;GAAI,WAAW,SAAS,kBAAkB,CAAC,UAAU;GAAG,cAAc,SAAS;GAAc,EAC5G,6BACD;;CAGH,IAAI,gBAAkC;AACpC,SAAO,CAAC,GAAG,KAAK,UAAU;;;;;CAM5B,4BAAoC;EAClC,MAAM,SAAmB,EAAE;AAC3B,OAAK,MAAM,KAAK,KAAK,WAAW;AAC9B,OAAI,EAAE,aAAa,MACjB;AAEF,OAAI;IACF,MAAM,QAAQ,EAAE,qBAAqB;AACrC,QAAI,OAAO,MAAM,CACf,QAAO,KAAK,MAAM,MAAM,CAAC;YAEpB,KAAK;AACZ,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,2BAA2B;;;AAG3D,SAAO,OAAO,KAAK,OAAO;;CAG5B,iBAAiB,OAAe,SAAwC;AACtE,OAAK,MAAM,KAAK,KAAK,UACnB,KAAI;AACF,KAAE,gBAAgB,OAAO,QAAQ;WAC1B,KAAK;AACZ,OAAI,MAAM;IAAE;IAAK,IAAI,EAAE;IAAI,EAAE,mCAAmC;;;CAKtE,MAAM,QAAQ,aAAqB,kBAA0B,SAAiD;AAC5G,QAAM,KAAK,yBAAyB,aAAa,kBAAkB,QAAQ;AAC3E,QAAM,KAAK,qBAAqB,aAAa,kBAAkB,QAAQ;;CAGzE,MAAM,yBACJ,aACA,kBACA,SACuE;EACvE,MAAM,SAAS,MAAM,KAAK,cAAc,WAAW;GACjD,SAAS,SAAS,WAAW,KAAK;GAClC;GACA;GACA,YAAY,SAAS;GACrB,2BAA2B,SAAS;GACrC,CAAC;AACF,MAAI,SAAS,aAAa,OAAO,aAC/B,MAAK,mBAAmB,IAAI,QAAQ,WAAW,OAAO,aAAa;AAErE,SAAO;;CAGT,MAAM,qBACJ,aACA,kBACA,SACe;EACf,MAAM,QAAyB;GAC7B,MAAM;GACN;GACA;GACA,WAAW,SAAS;GACrB;AACD,OAAK,MAAM,KAAK,KAAK,WAAW;GAC9B,MAAM,UAAU,KAAK,KAAK;AAC1B,OAAI;AACF,UAAM,EAAE,OAAO,MAAM;AACrB,SAAK,MAAM,QAAQ,EAAE,IAAI,OAAO;KAC9B,aAAa;KACb,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,SAAS;KACtB,CAAC;YACK,KAAK;AACZ,SAAK,MAAM,QAAQ,EAAE,IAAI,OAAO;KAC9B,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;KACvD,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,SAAS;KACtB,CAAC;AACF,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,qBAAqB;;;;CAKvD,MAAM,6BACJ,YACA,UAKI,EAAE,EACS;EACf,MAAM,eAAe,QAAQ,aACzB,KAAK,mBAAmB,IAAI,QAAQ,WAAW,GAC/C,KAAA;AACJ,QAAM,KAAK,cAAc,gBAAgB,YAAY;GACnD,GAAG;GACH,SAAS,QAAQ,WAAW,KAAK;GACjC;GACD,CAAC;AACF,MAAI,aACF,uCAAsC,CAAC,aAAa,EAAE,YAAY;;CAItE,qBAAkC;EAChC,MAAM,MAAmB,EAAE;EAC3B,MAAM,uBAAO,IAAI,KAAa;AAC9B,OAAK,MAAM,KAAK,KAAK,WAAW;AAC9B,OAAI,EAAE,aAAa,MACjB;AAEF,OAAI;AACF,SAAK,MAAM,KAAK,EAAE,kBAAkB,IAAI,EAAE,CACxC,KAAI,EAAE,QAAQ,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE;AAC/B,UAAK,IAAI,EAAE,KAAK;AAChB,SAAI,KAAK,EAAE;;YAGR,KAAK;AACZ,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,wBAAwB;;;AAGxD,SAAO;;CAGT,MAAM,eAAe,UAAkB,MAAgD;EACrF,MAAM,WAAW,KAAK,eAAe,IAAI,SAAS;AAClD,MAAI,CAAC,SACH,OAAM,IAAI,MAAM,oCAAoC,SAAS,GAAG;AAElE,MAAI,CAAC,SAAS,eACZ,OAAM,IAAI,MAAM,oBAAoB,SAAS,GAAG,8BAA8B;AAEhF,SAAO,SAAS,eAAe,UAAU,KAAK;;CAGhD,MAAM,OAAO,SAA6D;EACxE,MAAM,YAAY,KAAK,oBAAoB;EAC3C,MAAM,UAAgC,EAAE;AAExC,OAAK,MAAM,KAAK,WAAW;AACzB,OAAI,CAAC,EAAE,aAAa,UAAU,CAAC,EAAE,OAAQ;GACzC,MAAM,UAAU,KAAK,KAAK;AAC1B,OAAI;IACF,MAAM,kBAAkB,MAAM,EAAE,OAAO,QAAQ;AAC/C,SAAK,MAAM,UAAU,EAAE,IAAI,SAAS;KAClC,aAAa,gBAAgB;KAC7B,mBAAmB,gBAAgB,KAAK,WAAW,OAAO,OAAO,GAAG;KACpE,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF,YAAQ,KAAK,GAAG,gBAAgB;AAChC,QAAI,gBAAgB,SAAS,KAAK,KAAK,QAAQ,mBAAmB,SAChE;YAEK,KAAK;AACZ,SAAK,MAAM,UAAU,EAAE,IAAI,SAAS;KAClC,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;KACvD,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,uBAAuB;;;EAIvD,MAAM,uBAAO,IAAI,KAAa;AAC9B,SAAO,QACJ,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,CACjC,QAAQ,WAAW,KAAK,cAAc,OAAO,QAAQ,QAAQ,MAAM,CAAC,CACpE,QAAQ,WAAW;GAClB,MAAM,MAAM,GAAG,OAAO,SAAS,WAAW,GAAG,OAAO,SAAS;AAC7D,OAAI,KAAK,IAAI,IAAI,CAAE,QAAO;AAC1B,QAAK,IAAI,IAAI;AACb,UAAO;IACP,CACD,MAAM,GAAG,QAAQ,cAAc,EAAE;;CAGtC,MAAM,KAAK,SAA8D;AACvE,OAAK,MAAM,KAAK,KAAK,oBAAoB,EAAE;AACzC,OAAI,CAAC,EAAE,aAAa,QAAQ,CAAC,EAAE,KAAM;GACrC,MAAM,UAAU,KAAK,KAAK;AAC1B,OAAI;IACF,MAAM,SAAS,MAAM,EAAE,KAAK,QAAQ;AACpC,SAAK,MAAM,QAAQ,EAAE,IAAI,SAAS;KAChC,aAAa,SAAS,IAAI;KAC1B,mBAAmB,SAAS,CAAC,OAAO,OAAO,GAAG,GAAG,EAAE;KACnD,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF,QAAI,UAAU,KAAK,cAAc,OAAO,QAAQ,QAAQ,MAAM,CAAE,QAAO;YAChE,KAAK;AACZ,SAAK,MAAM,QAAQ,EAAE,IAAI,SAAS;KAChC,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;KACvD,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,qBAAqB;;;AAGrD,SAAO;;CAGT,MAAM,IAAI,IAA0C;AAClD,OAAK,MAAM,KAAK,KAAK,WAAW;AAC9B,OAAI,CAAC,EAAE,aAAa,KAAM;AAC1B,OAAI;IACF,MAAM,SAAS,MAAM,EAAE,MAAM,GAAG;AAChC,QAAI,UAAU,KAAK,cAAc,OAAO,CAAE,QAAO;YAC1C,KAAK;AACZ,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,UAAU;KAAI,EAAE,oBAAoB;;;AAGlE,SAAO;;CAGT,MAAM,KAAK,SAAqD;EAC9D,MAAM,MAAsB,EAAE;AAC9B,OAAK,MAAM,KAAK,KAAK,oBAAoB,EAAE;AACzC,OAAI,CAAC,EAAE,aAAa,QAAQ,CAAC,EAAE,KAAM;AACrC,OAAI;AACF,QAAI,KAAK,IAAI,MAAM,EAAE,KAAK,QAAQ,EAAE,QAAQ,WAAW,KAAK,cAAc,QAAQ,QAAQ,MAAM,CAAC,CAAC;YAC3F,KAAK;AACZ,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,qBAAqB;;;AAGrD,SAAO;;CAGT,MAAM,MAAM,SAAyD;AACnE,SAAO,KAAK,kBAAkB,SAAS,QAAQ;;CAGjD,MAAM,OAAO,SAA0D;AACrE,SAAO,KAAK,kBAAkB,UAAU,QAAQ;;CAGlD,MAAM,OAAO,SAA0D;AACrE,SAAO,KAAK,kBAAkB,UAAU,QAAQ;;CAGlD,cAAsB,QAAsB,OAA+C;AAGzF,SAAO;;CAGT,cAAc,QAAsC,QAA2B,SAAuB;AACpG,OAAK,MAAM,KAAK,KAAK,WAAW;AAC9B,OAAI,EAAE,aAAa,MACjB;AAEF,OAAI;AACF,MAAE,OAAO;KAAE,MAAM;KAAS;KAAQ;KAAQ;KAAS,CAAC;YAC7C,KAAK;AACZ,QAAI,MAAM;KAAE;KAAK,IAAI,EAAE;KAAI,EAAE,2BAA2B;;;;CAK9D,aAAa,QAA4B;AACvC,OAAK,MAAM,KAAK,KAAK,WAAW;GAC9B,MAAM,UAAU,KAAK,KAAK;AAC1B,OAAI;AACF,MAAE,OAAO;KAAE,MAAM;KAAU;KAAQ,CAAC;AACpC,SAAK,MAAM,QAAQ,EAAE,IAAI;KAAE,MAAM;KAAU;KAAQ,EAAE;KACnD,aAAa;KACb,YAAY,KAAK,KAAK,GAAG;KAC1B,CAAC;YACK,KAAK;AACZ,SAAK,MAAM,QAAQ,EAAE,IAAI;KAAE,MAAM;KAAU;KAAQ,EAAE;KACnD,OAAO,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;KACvD,YAAY,KAAK,KAAK,GAAG;KAC1B,CAAC;AACF,QAAI,MAAM;KAAE;KAAK,IAAI,EAAE;KAAI,QAAQ,OAAO;KAAQ,EAAE,4BAA4B;;;;CAKtF,MAAM,cAAc,WAAmB,SAAoD;AACzF,OAAK,uBAAuB,SAAS;AACrC,QAAM,KAAK,yBAAyB;AACpC,OAAK,MAAM,KAAK,KAAK,UACnB,KAAI;AACF,SAAM,EAAE,WAAW,WAAW,QAAQ;WAC/B,KAAK;AACZ,OAAI,KAAK;IAAE;IAAK,IAAI,EAAE;IAAI,EAAE,oBAAoB;;;CAKtD,MAAc,0BAAyC;AACrD,MAAI,KAAK,yBAAyB,CAAC,KAAK,cAAe;AACvD,OAAK,wBAAwB;AAC7B,MAAI;GACF,MAAM,YAAY,MAAM,KAAK,eAAe;GAC5C,MAAM,cAAc,IAAI,IAAI,KAAK,UAAU,KAAK,MAAM,EAAE,GAAG,CAAC;AAC5D,QAAK,MAAM,YAAY,WAAW;AAChC,QAAI,YAAY,IAAI,SAAS,GAAG,EAAE;AAChC,SAAI,KAAK,EAAE,IAAI,SAAS,IAAI,EAAE,oCAAoC;AAClE;;AAEF,SAAK,YAAY,SAAS;AAC1B,gBAAY,IAAI,SAAS,GAAG;;WAEvB,KAAK;AACZ,OAAI,KAAK,EAAE,KAAK,EAAE,wCAAwC;;;CAI9D,MAAM,cAA6B;AACjC,OAAK,mBAAmB,OAAO;AAC/B,OAAK,MAAM,KAAK,CAAC,GAAG,KAAK,UAAU,CAAC,SAAS,CAC3C,KAAI;AACF,SAAM,EAAE,UAAU;WACX,KAAK;AACZ,OAAI,KAAK;IAAE;IAAK,IAAI,EAAE;IAAI,EAAE,kBAAkB;;;CAKpD,qBAA+C;EAC7C,MAAM,SAAS,KAAK,UAAU,QAAQ,MAAM,EAAE,aAAa,MAAM;EACjE,MAAM,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,aAAa,MAAM;AACrE,UAAQ,KAAK,QAAQ,gBAArB;GACE,KAAK,aACH,QAAO;GACT,KAAK,gBACH,QAAO;GACT,KAAK,iBACH,QAAO,CAAC,GAAG,WAAW,GAAG,OAAO;GAGlC,QACE,QAAO,CAAC,GAAG,QAAQ,GAAG,UAAU;;;CAItC,oBAA8C;EAC5C,MAAM,SAAS,KAAK,UAAU,QAAQ,MAAM,EAAE,aAAa,MAAM;EACjE,MAAM,YAAY,KAAK,UAAU,QAAQ,MAAM,CAAC,EAAE,aAAa,MAAM;AACrE,UAAQ,KAAK,QAAQ,eAArB;GACE,KAAK,aACH,QAAO;GACT,KAAK,gBACH,QAAO;GACT,KAAK,iBACH,QAAO,CAAC,GAAG,WAAW,GAAG,OAAO;GAGlC,QACE,QAAO,CAAC,GAAG,QAAQ,GAAG,UAAU;;;CAItC,MAAc,kBACZ,WACA,SAC4B;EAC5B,MAAM,YACJ,cAAc,WAAY,QAA+B,WAAW,cAChE,KAAK,UAAU,QAAQ,aAAa,SAAS,aAAa,MAAM,GAChE,KAAK,mBAAmB;EAC9B,MAAM,SAAmB,EAAE;EAC3B,IAAI,eAAyC;AAE7C,OAAK,MAAM,KAAK,WAAW;GACzB,MAAM,KAAK,EAAE;AACb,OAAI,CAAC,KAAK,wBAAwB,GAAG,WAAW,QAAQ,EAAE;AACxD,SAAK,MAAM,WAAW,EAAE,IAAI,SAAS;KACnC,eAAe;KACf,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF;;AAMF,OAAI,EAHD,cAAc,WAAW,EAAE,aAAa,SACxC,cAAc,YAAY,EAAE,aAAa,UACzC,cAAc,YAAY,EAAE,aAAa,WAC3B,CAAC,GAAI;GACtB,MAAM,UAAU,KAAK,KAAK;AAC1B,OAAI;IACF,MAAM,SAAS,MAAM,GAAG,KAAK,GAAG,QAAiB;AACjD,SAAK,MAAM,WAAW,EAAE,IAAI,SAAS;KACnC,aAAa,OAAO,SAAS,IAAI;KACjC,mBAAmB,OAAO,SAAS,CAAC,OAAO,OAAO,GAAG,GAAG,EAAE;KAC1D,OAAO,OAAO,UAAU,KAAA,IAAY,OAAO;KAC3C,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF,QAAI,OAAO,SAAS;AAClB,sBAAiB;AACjB,SAAI,KAAK,QAAQ,kBAAkB,gBACjC,QAAO;eAEA,OAAO,MAChB,QAAO,KAAK,GAAG,EAAE,GAAG,IAAI,OAAO,QAAQ;YAElC,KAAK;IACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAChE,SAAK,MAAM,WAAW,EAAE,IAAI,SAAS;KACnC,OAAO;KACP,YAAY,KAAK,KAAK,GAAG;KACzB,YAAY,QAAQ,OAAO;KAC5B,CAAC;AACF,WAAO,KAAK,GAAG,EAAE,GAAG,IAAI,UAAU;AAClC,QAAI,KAAK;KAAE;KAAK,IAAI,EAAE;KAAI;KAAW,EAAE,gCAAgC;;;AAI3E,MAAI,aAAc,QAAO;AACzB,SAAO;GAAE,SAAS;GAAO,OAAO,OAAO,KAAK,KAAK,IAAI,+BAA+B;GAAa;;CAGnG,wBACE,UACA,WACA,SACS;AACT,MAAI,CAAC,SAAS,aAAa,SAAS,CAAC,KAAK,YAAY,oBACpD,QAAO;AAET,MACE,CAAC,SAAS,aAAa,SACvB,KAAK,YAAY,sBACjB,KAAK,YAAY,mBAAmB,SAAS,KAC7C,CAAC,KAAK,YAAY,mBAAmB,SAAS,SAAS,GAAG,CAE1D,QAAO;AAET,MAAI,cAAc,SAAS;GACzB,MAAM,eAAe;AACrB,OAAI,aAAa,WAAW,eAAe,CAAC,SAAS,aAAa,MAChE,QAAO;AAET,OACE,KAAK,YAAY,kBACjB,KAAK,YAAY,eAAe,SAAS,KACzC,CAAC,KAAK,YAAY,eAAe,SAAS,aAAa,KAAK,CAE5D,QAAO;AAET,OACE,KAAK,YAAY,8BACjB,aAAa,SAAS,kBACtB,CAAC,aAAa,SAEd,QAAO;;AAGX,MAAI,cAAc,YAAY,KAAK,YAAY,4BAA4B;GACzE,MAAM,gBAAgB;AACtB,OAAI,cAAc,WAAW,UAAU,CAAC,cAAc,SACpD,QAAO;;AAGX,SAAO;;CAGT,MACE,OACA,YACA,SACA,OAOI,EAAE,EACA;AACN,MAAI;AACF,0BAAuB;IACrB;IACA;IACA,SAAS,qBAAqB,QAAQ;IACtC,GAAG;IACJ,CAAC;WACK,KAAK;AACZ,OAAI,MAAM;IAAE;IAAK;IAAY;IAAO,EAAE,6BAA6B;;;;AAKzE,SAAS,qBAAqB,SAA2B;AACvD,KAAI,CAAC,WAAW,OAAO,YAAY,SAAU,QAAO;CACpD,MAAM,OAAO,EAAE,GAAI,SAAqC;AACxD,KAAI,OAAO,KAAK,YAAY,YAAY,KAAK,QAAQ,SAAS,IAC5D,MAAK,UAAU,GAAG,KAAK,QAAQ,MAAM,GAAG,IAAI,CAAC;AAE/C,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
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 { resolveUserDir } from '../../config/paths.js';\n\nimport type { MemoryStoreConfig } from './types.js';\n\n/** When false, shared curated memory and external memory providers are off. */\nexport function isMemorySubsystemEnabled(config: Config | undefined): boolean {\n if (!config) return true;\n return config.userContext.enabled && config.userContext.memory.mode !== 'off';\n}\n\n/** Curated memory tool + shared user `memories/` store (not injected into system prompt). */\nexport function isCuratedMemoryInPrompt(config: Config | undefined): boolean {\n if (!config) return true;\n return config.userContext.enabled && config.userContext.memory.sources.includes('curated');\n}\n\nexport function resolveBuiltinMemoryStoreConfig(\n workspaceDir: string,\n config: Config | undefined,\n _requestedAgentId?: string,\n): MemoryStoreConfig {\n const memoriesDir = config != null ? join(resolveUserDir(), 'memories') : join(workspaceDir, 'memories');\n return {\n workspaceDir,\n memoriesDir,\n userMemoryPath: config != null ? resolveUserMemoryPath() : join(workspaceDir, 'user', 'MEMORY.md'),\n memoryCharLimit: config?.userContext.memory.retention?.maxChars ?? 2200,\n userCharLimit: 1375,\n userProfileEnabled: config?.userContext.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 shouldPlanUserContextThisTurn(\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;;AAM9D,SAAgB,yBAAyB,QAAqC;AAC5E,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,OAAO,YAAY,WAAW,OAAO,YAAY,OAAO,SAAS;;;AAI1E,SAAgB,wBAAwB,QAAqC;AAC3E,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,OAAO,YAAY,WAAW,OAAO,YAAY,OAAO,QAAQ,SAAS,UAAU;;AAG5F,SAAgB,gCACd,cACA,QACA,mBACmB;AAEnB,QAAO;EACL;EACA,aAHkB,UAAU,OAAO,KAAK,gBAAgB,EAAE,WAAW,GAAG,KAAK,cAAc,WAAW;EAItG,gBAAgB,UAAU,OAAO,uBAAuB,GAAG,KAAK,cAAc,QAAQ,YAAY;EAClG,iBAAiB,QAAQ,YAAY,OAAO,WAAW,YAAY;EACnE,eAAe;EACf,oBAAoB,QAAQ,YAAY,OAAO,QAAQ,SAAS,cAAc,IAAI;EACnF;;;;;;AAOH,SAAgB,8BACd,SACA,YACS;AACT,QAAO,cAAc;;AAGvB,SAAgB,gCAAgC,QAAqC;AACnF,QAAO,wBAAwB,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-sanitizer.js","names":["msg"],"sources":["../../../../src/agent/memory/message-sanitizer.ts"],"sourcesContent":["/**\n * Message Sanitizer - Cleans messages before saving to history\n *\n * Handles edge cases where LLM API calls fail and produce invalid messages\n * that would cause subsequent API calls to fail (creating a vicious cycle).\n *\n * Key issues addressed:\n * - Empty content from API errors\n * - Messages with stopReason: \"error\"\n * - Messages with errorMessage field\n * - Invalid tool_call_id references\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport { createLogger } from '../../utils/logger.js';\nimport { readAgentMessageContent } from './agent-message-access.js';\n\nconst log = createLogger('MessageSanitizer');\n\n/**\n * Single multimodal / structured block is meaningful for history persistence.\n * Handles blocks without `type` (e.g. { data, mimeType } only) that some providers emit.\n */\nfunction isMeaningfulContentBlock(item: unknown): boolean {\n if (typeof item === 'string') {\n return item.trim().length > 0;\n }\n if (!item || typeof item !== 'object') {\n return false;\n }\n const o = item as Record<string, unknown>;\n const t = o.type;\n\n if (t === 'text') {\n return String(o.text ?? '').trim().length > 0;\n }\n if (t === 'toolCall') {\n return String(o.name ?? '').trim().length > 0;\n }\n if (t === 'thinking') {\n return true;\n }\n if (\n t === 'image' ||\n t === 'image_url' ||\n t === 'input_image' ||\n t === 'file' ||\n t === 'audio' ||\n t === 'video'\n ) {\n return true;\n }\n if (o.image_url !== undefined || o.imageUrl !== undefined) {\n return true;\n }\n if (o.inlineData !== undefined || o.inline_data !== undefined) {\n return true;\n }\n if (typeof o.data === 'string' && o.data.length > 0 && typeof o.mimeType === 'string') {\n return true;\n }\n if (typeof t === 'string' && t.length > 0) {\n return true;\n }\n return false;\n}\n\n/**\n * Check if a message has valid, non-empty content\n */\nfunction hasValidContent(message: AgentMessage): boolean {\n const msg = message as AgentMessage & {\n tool_calls?: unknown[];\n toolCalls?: unknown[];\n };\n if (message.role === 'assistant') {\n if (Array.isArray(msg.tool_calls) && msg.tool_calls.length > 0) return true;\n if (Array.isArray(msg.toolCalls) && msg.toolCalls.length > 0) return true;\n }\n\n const content = readAgentMessageContent(message);\n\n // String content must be non-empty\n if (typeof content === 'string') {\n return content.trim().length > 0;\n }\n\n // Array content must have at least one meaningful item\n if (Array.isArray(content)) {\n return content.some((item) => isMeaningfulContentBlock(item));\n }\n\n return false;\n}\n\n/**\n * Check if a message is an error message from a failed LLM call\n */\nfunction isErrorMessage(message: AgentMessage): boolean {\n // Only check assistant messages\n if (message.role !== 'assistant') {\n return false;\n }\n\n const msg = message as { stopReason?: string; errorMessage?: string };\n if (msg.stopReason === 'error') {\n return true;\n }\n\n // User interrupt: keep partial assistant text in session history when non-empty\n if (msg.stopReason === 'aborted') {\n return !hasValidContent(message);\n }\n\n // Check for errorMessage field (added by pi-agent-core on API errors)\n if (msg.errorMessage) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Check if a message might cause issues in subsequent API calls\n */\nfunction isProblematicMessage(message: AgentMessage): boolean {\n // Only check assistant messages\n if (message.role !== 'assistant') {\n return false;\n }\n\n // Error messages are problematic\n if (isErrorMessage(message)) {\n return true;\n }\n\n // Empty content is problematic\n if (!hasValidContent(message)) {\n return true;\n }\n\n return false;\n}\n\n/**\n * Options for message sanitization\n */\nexport interface SanitizeOptions {\n /** Remove error messages (default: true) */\n removeErrors?: boolean;\n /** Remove empty messages (default: true) */\n removeEmpty?: boolean;\n /** Keep at least N recent messages (default: 0) */\n keepRecent?: number;\n /** Log removed messages (default: true in development) */\n logRemovals?: boolean;\n}\n\n/**\n * Result of sanitization\n */\nexport interface SanitizeResult {\n /** Sanitized messages */\n messages: AgentMessage[];\n /** Number of messages removed */\n removed: number;\n /** Reasons for removal */\n reasons: Array<{ index: number; reason: string }>;\n}\n\n/**\n * Sanitize messages before saving to history.\n *\n * Removes:\n * - Assistant messages with stopReason: \"error\"\n * - Assistant messages with stopReason: \"aborted\" only when empty (partial interrupted text is kept)\n * - Assistant messages with errorMessage field\n * - Assistant messages with empty/invalid content\n *\n * @param messages - Messages to sanitize\n * @param options - Sanitization options\n * @returns Sanitized messages and removal details\n */\nexport function sanitizeMessages(\n messages: AgentMessage[],\n options: SanitizeOptions = {}\n): SanitizeResult {\n const {\n removeErrors = true,\n removeEmpty = true,\n keepRecent = 0,\n logRemovals = process.env.NODE_ENV !== 'test',\n } = options;\n\n const reasons: Array<{ index: number; reason: string }> = [];\n const result: AgentMessage[] = [];\n\n // Track recent messages to preserve\n const preserveIndices = new Set<number>();\n if (keepRecent > 0) {\n for (let i = Math.max(0, messages.length - keepRecent); i < messages.length; i++) {\n preserveIndices.add(i);\n }\n }\n\n for (let i = 0; i < messages.length; i++) {\n const message = messages[i];\n const originalIndex = i;\n\n // Skip non-assistant messages\n if (message.role !== 'assistant') {\n result.push(message);\n continue;\n }\n\n // Check if this message should be preserved (recent message)\n if (preserveIndices.has(i)) {\n result.push(message);\n continue;\n }\n\n // Check for error messages\n if (removeErrors && isErrorMessage(message)) {\n reasons.push({\n index: originalIndex,\n reason: `Error message: stopReason=${message.stopReason}, errorMessage=${(message as any).errorMessage || 'none'}`,\n });\n continue;\n }\n\n // Check for empty content\n if (removeEmpty && !hasValidContent(message)) {\n reasons.push({\n index: originalIndex,\n reason: 'Empty or invalid content',\n });\n continue;\n }\n\n result.push(message);\n }\n\n const removed = messages.length - result.length;\n\n if (logRemovals && removed > 0) {\n log.info(\n {\n removed,\n original: messages.length,\n sanitized: result.length,\n reasons: reasons.slice(0, 5), // Log first 5 reasons\n },\n 'Sanitized messages'\n );\n }\n\n return { messages: result, removed, reasons };\n}\n\n/**\n * Clean trailing error messages from message history.\n *\n * This is useful for cleaning up after a failed turn, ensuring\n * the conversation can continue from the last valid state.\n *\n * @param messages - Messages to clean\n * @returns Cleaned messages\n */\nexport function cleanTrailingErrors(messages: AgentMessage[]): AgentMessage[] {\n const result = [...messages];\n\n // Remove trailing error/empty messages\n while (result.length > 0) {\n const last = result[result.length - 1];\n if (last.role === 'assistant' && isProblematicMessage(last)) {\n const msg = last as any;\n log.debug({ stopReason: msg.stopReason }, 'Removing trailing error message');\n result.pop();\n } else {\n break;\n }\n }\n\n return result;\n}\n\n/**\n * Validate a single message for potential issues.\n * Returns null if valid, or an error description if problematic.\n */\nexport function validateMessage(message: AgentMessage): string | null {\n if (message.role === 'assistant') {\n if (isErrorMessage(message)) {\n const msg = message as any;\n return `Error message: stopReason=${msg.stopReason}`;\n }\n if (!hasValidContent(message)) {\n return 'Empty or invalid content';\n }\n }\n\n // Check for tool result messages with error indicators\n if (message.role === 'toolResult') {\n const content = (message as any).content;\n if (typeof content === 'string' && content.includes('tool_call_id is not found')) {\n return 'Contains invalid tool_call_id reference';\n }\n }\n\n return null;\n}\n\n/**\n * Quick check if messages contain any problematic entries.\n * Useful for debugging and monitoring.\n */\nexport function hasProblematicMessages(messages: AgentMessage[]): boolean {\n return messages.some((m) => isProblematicMessage(m));\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sensitivity.js","names":[],"sources":["../../../../src/agent/memory/sensitivity.ts"],"sourcesContent":["import type { MemorySensitivity } from './types.js';\n\nexport function inferMemorySensitivity(content: string): MemorySensitivity {\n if (\n /\\b(api[_-]?key|access[_-]?key|token|password|secret|credential|private[_-]?key|bearer)\\b/i.test(content)\n || /密钥|密码|令牌|私钥/.test(content)\n || /\\b(?:sk|gh[opsu]|xox[abprs])-[a-z0-9_-]{8,}\\b/i.test(content)\n || /\\bAKIA[A-Z0-9]{12,}\\b/.test(content)\n || /-----BEGIN [A-Z ]*PRIVATE KEY-----/.test(content)\n ) return 'secret';\n if (\n /\\b(ssn|social security|bank account|credit card|medical record)\\b/i.test(content)\n || /身份证|银行卡|信用卡|医疗记录/.test(content)\n ) return 'regulated';\n return /家庭|住址|生日|健康|关系|family|address|birthday|health/i.test(content)\n ? 'personal'\n : 'normal';\n}\n\nexport function redactSensitiveMemoryText(content: string): string {\n return content\n .replace(/-----BEGIN [A-Z ]*PRIVATE KEY-----[\\s\\S]*?-----END [A-Z ]*PRIVATE KEY-----/g, '[REDACTED PRIVATE KEY]')\n .replace(/\\b(api[_-]?key|access[_-]?key|token|password|secret|credential|private[_-]?key|bearer)\\b\\s*[:=]?\\s*[^\\s,;]+/gi, '$1=[REDACTED]')\n .replace(/(密钥|密码|令牌|私钥)\\s*[::=]?\\s*[^\\s,;]+/g, '$1=[REDACTED]')\n .replace(/\\b(?:sk|gh[opsu]|xox[abprs])-[a-z0-9_-]{8,}\\b/gi, '[REDACTED TOKEN]')\n .replace(/\\bAKIA[A-Z0-9]{12,}\\b/g, '[REDACTED ACCESS KEY]');\n}\n"],"mappings":";AAEA,SAAgB,uBAAuB,SAAoC;AACzE,KACE,4FAA4F,KAAK,QAAQ,IACtG,cAAc,KAAK,QAAQ,IAC3B,iDAAiD,KAAK,QAAQ,IAC9D,wBAAwB,KAAK,QAAQ,IACrC,qCAAqC,KAAK,QAAQ,CACrD,QAAO;AACT,KACE,qEAAqE,KAAK,QAAQ,IAC/E,mBAAmB,KAAK,QAAQ,CACnC,QAAO;AACT,QAAO,iDAAiD,KAAK,QAAQ,GACjE,aACA;;AAGN,SAAgB,0BAA0B,SAAyB;AACjE,QAAO,QACJ,QAAQ,+EAA+E,yBAAyB,CAChH,QAAQ,iHAAiH,gBAAgB,CACzI,QAAQ,sCAAsC,gBAAgB,CAC9D,QAAQ,mDAAmD,mBAAmB,CAC9E,QAAQ,0BAA0B,wBAAwB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"source-origin.js","names":[],"sources":["../../../../src/agent/memory/source-origin.ts"],"sourcesContent":["import type { MemoryRecord } from './types.js';\n\nexport type MemoryContextOrigin = 'told_by_user' | 'observed' | 'inferred' | 'connected_source';\n\nconst INTERNAL_MEMORY_PROVIDERS = new Set([\n 'local',\n 'builtin',\n 'user-understanding',\n 'dreaming',\n 'workflow-run',\n]);\n\nexport function classifyMemoryContextOrigin(record: MemoryRecord): MemoryContextOrigin {\n const provider = record.source.provider?.trim().toLowerCase();\n if (provider && !INTERNAL_MEMORY_PROVIDERS.has(provider)) return 'connected_source';\n if (record.explicitness === 'explicit') return 'told_by_user';\n if (record.explicitness === 'observed') return 'observed';\n return 'inferred';\n}\n"],"mappings":";AAIA,MAAM,4BAA4B,IAAI,IAAI;CACxC;CACA;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAgB,4BAA4B,QAA2C;CACrF,MAAM,WAAW,OAAO,OAAO,UAAU,MAAM,CAAC,aAAa;AAC7D,KAAI,YAAY,CAAC,0BAA0B,IAAI,SAAS,CAAE,QAAO;AACjE,KAAI,OAAO,iBAAiB,WAAY,QAAO;AAC/C,KAAI,OAAO,iBAAiB,WAAY,QAAO;AAC/C,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
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 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,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 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summary-generator.js","names":[],"sources":["../../../../src/agent/memory/summary-generator.ts"],"sourcesContent":["/**\n * Summary Generator - Generates structured summaries for context compaction\n * \n * Creates structured summaries that preserve:\n * - User requests and intents\n * - Tool call history (deduplicated by file path)\n * - Key decisions and outcomes\n * - Modified files list\n * - Usage statistics\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { ToolResultMessage, Message } from '@earendil-works/pi-ai';\nimport { createLogger } from '../../utils/logger.js';\nimport { readAgentMessageContent } from './agent-message-access.js';\n\nconst log = createLogger('SummaryGenerator');\n\nexport interface ToolCallSummary {\n toolName: string;\n filePath?: string;\n operation: 'read' | 'write' | 'search' | 'command' | 'other';\n success: boolean;\n briefResult?: string;\n timestamp?: number;\n}\n\nexport interface ConversationSummary {\n userRequests: string[]; // User's core requests\n toolCalls: ToolCallSummary[]; // Tool call history\n keyDecisions: string[]; // Key decisions made\n filesModified: string[]; // List of modified files\n totalToolCalls: number; // Total tool calls (before dedup)\n successfulToolCalls: number; // Successful tool calls\n failedToolCalls: number; // Failed tool calls\n}\n\nexport interface SummaryGenerationOptions {\n maxUserRequests: number; // Max user requests to keep (default: 10)\n maxToolCalls: number; // Max tool calls to keep after dedup (default: 50)\n deduplicateByFile: boolean; // Deduplicate tool calls by file path (default: true)\n includeUsage: boolean; // Include usage statistics (default: true)\n}\n\nconst DEFAULT_OPTIONS: SummaryGenerationOptions = {\n maxUserRequests: 10,\n maxToolCalls: 50,\n deduplicateByFile: true,\n includeUsage: true,\n};\n\n/**\n * Categorize tool operation based on tool name\n */\nfunction categorizeToolOperation(toolName: string): 'read' | 'write' | 'search' | 'command' | 'other' {\n const name = toolName.toLowerCase();\n \n if (['read', 'read_file', 'read_multiple', 'glob', 'list_dir', 'ls', 'memory_get'].some(n => name.includes(n))) {\n return 'read';\n }\n \n if (['write', 'write_file', 'write_multiple', 'edit', 'patch', 'create', 'mkdir'].some(n => name.includes(n))) {\n return 'write';\n }\n \n if (['grep', 'search', 'find', 'find_files', 'memory_search', 'web_search'].some(n => name.includes(n))) {\n return 'search';\n }\n \n if (['bash', 'exec', 'run', 'command'].some(n => name.includes(n))) {\n return 'command';\n }\n \n return 'other';\n}\n\n/**\n * Extract text content from message\n */\nfunction extractTextContent(content: unknown): string {\n if (typeof content === 'string') {\n return content;\n }\n \n if (Array.isArray(content)) {\n return content\n .filter(c => c.type === 'text')\n .map(c => (c as { text?: string }).text || '')\n .join('\\n');\n }\n \n return '';\n}\n\n/**\n * Type guard: Check if message has tool calls (assistant message)\n */\nfunction hasToolCalls(msg: AgentMessage): msg is AgentMessage & { toolCalls?: unknown[] } {\n return msg.role === 'assistant' && 'toolCalls' in msg;\n}\n\n/**\n * Type guard: Check if message is a tool result\n */\nfunction isToolResult(msg: AgentMessage): msg is AgentMessage & { name?: string; role: 'toolResult' } {\n return msg.role === 'toolResult' && 'name' in msg;\n}\n\n/**\n * Deduplicate tool calls by file path (keep last operation per file)\n */\nfunction deduplicateByFilePath(toolCalls: ToolCallSummary[]): ToolCallSummary[] {\n const byFile = new Map<string, ToolCallSummary>();\n const otherCalls: ToolCallSummary[] = [];\n\n for (const call of toolCalls) {\n if (call.filePath) {\n // Keep the last operation for each file\n byFile.set(call.filePath, call);\n } else {\n // Keep all non-file operations\n otherCalls.push(call);\n }\n }\n\n return [...Array.from(byFile.values()), ...otherCalls];\n}\n\n/**\n * Generate structured summary from messages\n */\nexport function generateStructuredSummary(\n messages: AgentMessage[],\n options: Partial<SummaryGenerationOptions> = {}\n): ConversationSummary {\n const opts = { ...DEFAULT_OPTIONS, ...options };\n \n const summary: ConversationSummary = {\n userRequests: [],\n toolCalls: [],\n keyDecisions: [],\n filesModified: [],\n totalToolCalls: 0,\n successfulToolCalls: 0,\n failedToolCalls: 0,\n };\n\n let lastAssistantMessage: AgentMessage | null = null;\n\n for (const msg of messages) {\n // Extract user requests\n if (msg.role === 'user') {\n const text = extractTextContent(readAgentMessageContent(msg));\n if (text.trim().length > 20) {\n summary.userRequests.push(text.slice(0, 500)); // Limit each request length\n }\n }\n\n // Extract tool calls from assistant messages\n if (hasToolCalls(msg)) {\n lastAssistantMessage = msg;\n \n const toolCalls = (msg as Message & { toolCalls?: Array<{ name: string; args?: Record<string, unknown> }> }).toolCalls;\n if (toolCalls && toolCalls.length > 0) {\n summary.totalToolCalls += toolCalls.length;\n\n for (const call of toolCalls) {\n const toolSummary: ToolCallSummary = {\n toolName: call.name,\n operation: categorizeToolOperation(call.name),\n success: true, // Will be updated from tool_result\n filePath: String(call.args?.path || call.args?.file_path || call.args?.filePath || ''),\n timestamp: msg.timestamp,\n };\n summary.toolCalls.push(toolSummary);\n\n if (['write', 'edit'].includes(toolSummary.operation) && toolSummary.filePath) {\n summary.filesModified.push(toolSummary.filePath);\n }\n }\n }\n }\n\n // Extract tool results to determine success/failure\n if (isToolResult(msg)) {\n const toolMsg = msg as ToolResultMessage;\n const toolName = toolMsg.toolName;\n \n // Find the corresponding tool call and update success status\n const toolCall = summary.toolCalls\n .slice()\n .reverse()\n .find((tc: ToolCallSummary) => tc.toolName === toolName && !tc.timestamp); // Match by name, prefer unmatched\n \n if (toolCall) {\n const resultText = extractTextContent(readAgentMessageContent(toolMsg));\n \n // Detect failure from result content\n const isError = resultText.toLowerCase().includes('error') || \n resultText.toLowerCase().includes('failed') ||\n resultText.startsWith('Error:');\n \n toolCall.success = !isError;\n toolCall.briefResult = resultText.slice(0, 200);\n\n if (isError) {\n summary.failedToolCalls++;\n } else {\n summary.successfulToolCalls++;\n }\n }\n }\n }\n\n // Deduplicate tool calls by file path if enabled\n if (opts.deduplicateByFile) {\n summary.toolCalls = deduplicateByFilePath(summary.toolCalls);\n }\n\n // Limit tool calls\n if (summary.toolCalls.length > opts.maxToolCalls) {\n summary.toolCalls = summary.toolCalls.slice(-opts.maxToolCalls);\n }\n\n // Limit user requests\n if (summary.userRequests.length > opts.maxUserRequests) {\n summary.userRequests = summary.userRequests.slice(-opts.maxUserRequests);\n }\n\n // Deduplicate files modified\n summary.filesModified = [...new Set(summary.filesModified)];\n\n // Extract key decisions from last assistant message\n if (lastAssistantMessage) {\n const decisions = extractKeyDecisions(lastAssistantMessage);\n summary.keyDecisions = decisions;\n }\n\n log.debug(\n {\n userRequests: summary.userRequests.length,\n toolCalls: summary.toolCalls.length,\n filesModified: summary.filesModified.length,\n totalToolCalls: summary.totalToolCalls,\n successfulToolCalls: summary.successfulToolCalls,\n failedToolCalls: summary.failedToolCalls,\n },\n 'Generated structured summary'\n );\n\n return summary;\n}\n\n/**\n * Extract key decisions from assistant message\n */\nfunction extractKeyDecisions(msg: AgentMessage): string[] {\n const content = extractTextContent(readAgentMessageContent(msg));\n const decisions: string[] = [];\n\n // Look for decision patterns\n const decisionPatterns = [\n /(?:I'll|I will|Let's|We should|Decision:|Decided to|Chose to)\\s+(.+?)(?:\\.|\\n)/gi,\n /(?:Based on|After analyzing|Given that)\\s+(.+?)(?:\\.|\\n)/gi,\n /(?:The best approach|The solution|The answer) is\\s+(.+?)(?:\\.|\\n)/gi,\n ];\n\n for (const pattern of decisionPatterns) {\n const matches = content.match(pattern);\n if (matches) {\n decisions.push(...matches.slice(0, 5).map(m => m.trim()));\n }\n }\n\n // Limit decisions\n return decisions.slice(0, 10);\n}\n\n/**\n * Format structured summary as text for injection into context\n */\nexport function formatSummaryAsText(summary: ConversationSummary, includeUsage: boolean = true): string {\n const lines: string[] = [];\n\n lines.push('[Previous Conversation Summary]');\n\n // User requests\n if (summary.userRequests.length > 0) {\n lines.push('');\n lines.push('User Requests:');\n for (const req of summary.userRequests.slice(-5)) {\n lines.push(` - ${req.slice(0, 150)}${req.length > 150 ? '...' : ''}`);\n }\n }\n\n // Tool calls summary\n if (summary.toolCalls.length > 0) {\n lines.push('');\n lines.push('Tool Operations:');\n \n // Group by operation type\n const byType = new Map<string, ToolCallSummary[]>();\n for (const call of summary.toolCalls) {\n const list = byType.get(call.operation) || [];\n list.push(call);\n byType.set(call.operation, list);\n }\n\n for (const [type, calls] of byType.entries()) {\n const files = calls.filter(c => c.filePath).map(c => c.filePath!);\n const successCount = calls.filter(c => c.success).length;\n lines.push(` ${type.toUpperCase()}: ${calls.length} operations (${successCount}/${calls.length} successful)`);\n if (files.length > 0) {\n lines.push(` Files: ${files.slice(0, 10).join(', ')}${files.length > 10 ? '...' : ''}`);\n }\n }\n }\n\n // Files modified\n if (summary.filesModified.length > 0) {\n lines.push('');\n lines.push('Files Modified:');\n for (const file of summary.filesModified.slice(-10)) {\n lines.push(` - ${file}`);\n }\n }\n\n // Key decisions\n if (summary.keyDecisions.length > 0) {\n lines.push('');\n lines.push('Key Decisions:');\n for (const decision of summary.keyDecisions.slice(-5)) {\n lines.push(` - ${decision}`);\n }\n }\n\n // Usage statistics\n if (includeUsage) {\n lines.push('');\n lines.push('Statistics:');\n lines.push(` Total tool calls: ${summary.totalToolCalls}`);\n lines.push(` Successful: ${summary.successfulToolCalls}`);\n lines.push(` Failed: ${summary.failedToolCalls}`);\n lines.push(` Files modified: ${summary.filesModified.length}`);\n }\n\n return lines.join('\\n');\n}\n\n/**\n * Generate compact summary message for context injection\n */\nexport function createSummaryMessage(summary: ConversationSummary): AgentMessage {\n const text = formatSummaryAsText(summary, true);\n \n return {\n role: 'user',\n content: [{ type: 'text', text }],\n timestamp: Date.now(),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"correction.js","names":[],"sources":["../../../../../src/agent/memory/understanding/correction.ts"],"sourcesContent":["const UNDERSTANDING_CORRECTION_PATTERNS: RegExp[] = [\n /(?:你|您)(?:记错|理解错|搞错)(?:了)?(?:我|我的)/,\n /(?:这|那)(?:不是|并非)我的(?:偏好|习惯|情况|信息|边界)/,\n /我(?:没有|从没|从未)(?:说过|表示过|要求过)(?:这|那|这个|那个)/,\n /(?:不要|别再)(?:认为|假设|记成)(?:我|我的)/,\n /you (?:remembered|understood|got) (?:me|my .+?) wrong\\b/i,\n /that(?:'s| is) not my (?:preference|habit|situation|information|boundary)\\b/i,\n /i (?:never|did not|didn't) (?:say|said|tell you|told you|ask for|asked for) that\\b/i,\n /do not assume that about me\\b/i,\n];\n\nconst UNDERSTANDING_CORRECTION_CONTENT_PATTERNS: RegExp[] = [\n /(?:你|您)(?:记错|理解错|搞错)(?:了)?(?:我|我的)(?:偏好|习惯|情况|信息|边界|工作方式)?[,,::;;。]\\s*(?:其实|实际上|正确的是)?\\s*(.+)$/,\n /(?:这|那)(?:不是|并非)我的(?:偏好|习惯|情况|信息|边界)[,,::;;。]\\s*(.+)$/,\n /you (?:remembered|understood|got) (?:me|my .+?) wrong\\b[,:;.]?\\s*(?:actually[,:]?\\s*)?(.+)$/i,\n /that(?:'s| is) not my (?:preference|habit|situation|information|boundary)\\b[,:;.]?\\s*(.+)$/i,\n];\n\nfunction normalizeCorrectionContent(content: string): string | null {\n const normalized = content\n .replace(/^[“”‘’\"'\\s]+|[“”‘’\"'\\s]+$/g, '')\n .replace(/\\s+/g, ' ')\n .trim();\n return normalized.length >= 4 ? normalized.slice(0, 600) : null;\n}\n\nexport function isExplicitUnderstandingCorrection(text: string): boolean {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n return normalized.length > 0\n && UNDERSTANDING_CORRECTION_PATTERNS.some((pattern) => pattern.test(normalized));\n}\n\n/** Returns only a concrete replacement statement; pure denials intentionally return null. */\nexport function extractExplicitUnderstandingCorrectionContent(text: string): string | null {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n if (!isExplicitUnderstandingCorrection(normalized)) return null;\n for (const pattern of UNDERSTANDING_CORRECTION_CONTENT_PATTERNS) {\n const match = pattern.exec(normalized);\n if (!match?.[1]) continue;\n const content = normalizeCorrectionContent(match[1]);\n if (content) return content;\n }\n return null;\n}\n"],"mappings":";AAAA,MAAM,oCAA8C;CAClD;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACD;AAED,MAAM,4CAAsD;CAC1D;CACA;CACA;CACA;CACD;AAED,SAAS,2BAA2B,SAAgC;CAClE,MAAM,aAAa,QAChB,QAAQ,8BAA8B,GAAG,CACzC,QAAQ,QAAQ,IAAI,CACpB,MAAM;AACT,QAAO,WAAW,UAAU,IAAI,WAAW,MAAM,GAAG,IAAI,GAAG;;AAG7D,SAAgB,kCAAkC,MAAuB;CACvE,MAAM,aAAa,KAAK,QAAQ,QAAQ,IAAI,CAAC,MAAM;AACnD,QAAO,WAAW,SAAS,KACtB,kCAAkC,MAAM,YAAY,QAAQ,KAAK,WAAW,CAAC;;;AAIpF,SAAgB,8CAA8C,MAA6B;CACzF,MAAM,aAAa,KAAK,QAAQ,QAAQ,IAAI,CAAC,MAAM;AACnD,KAAI,CAAC,kCAAkC,WAAW,CAAE,QAAO;AAC3D,MAAK,MAAM,WAAW,2CAA2C;EAC/D,MAAM,QAAQ,QAAQ,KAAK,WAAW;AACtC,MAAI,CAAC,QAAQ,GAAI;EACjB,MAAM,UAAU,2BAA2B,MAAM,GAAG;AACpD,MAAI,QAAS,QAAO;;AAEtB,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"quality.js","names":[],"sources":["../../../../../src/agent/memory/understanding/quality.ts"],"sourcesContent":["import type { UserUnderstandingQualityMetrics } from '../../../storage/sqlite/index.js';\n\nexport interface UnderstandingCadenceDecision {\n baseIntervalTurns: number;\n effectiveIntervalTurns: number;\n slowed: boolean;\n reasons: Array<'candidate_backlog' | 'low_acceptance' | 'low_recall_quality'>;\n}\n\nexport function resolveAdaptiveUnderstandingCadence(\n baseIntervalTurns: number,\n metrics: UserUnderstandingQualityMetrics,\n enabled = true,\n): UnderstandingCadenceDecision {\n const base = Math.max(1, Math.min(1_000, Math.floor(baseIntervalTurns)));\n const reasons: UnderstandingCadenceDecision['reasons'] = [];\n if (enabled) {\n if (metrics.records.candidate >= 20 || metrics.records.agingCandidates >= 10) {\n reasons.push('candidate_backlog');\n }\n if (\n metrics.decisions.total >= 10\n && metrics.decisions.acceptanceRate != null\n && metrics.decisions.acceptanceRate < 0.25\n ) {\n reasons.push('low_acceptance');\n }\n if (\n metrics.recall.total >= 10\n && metrics.recall.helpfulRate != null\n && metrics.recall.helpfulRate < 0.4\n ) {\n reasons.push('low_recall_quality');\n }\n }\n return {\n baseIntervalTurns: base,\n effectiveIntervalTurns: reasons.length > 0 ? Math.min(1_000, base * 2) : base,\n slowed: reasons.length > 0,\n reasons,\n };\n}\n"],"mappings":";AASA,SAAgB,oCACd,mBACA,SACA,UAAU,MACoB;CAC9B,MAAM,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAO,KAAK,MAAM,kBAAkB,CAAC,CAAC;CACxE,MAAM,UAAmD,EAAE;AAC3D,KAAI,SAAS;AACX,MAAI,QAAQ,QAAQ,aAAa,MAAM,QAAQ,QAAQ,mBAAmB,GACxE,SAAQ,KAAK,oBAAoB;AAEnC,MACE,QAAQ,UAAU,SAAS,MACxB,QAAQ,UAAU,kBAAkB,QACpC,QAAQ,UAAU,iBAAiB,IAEtC,SAAQ,KAAK,iBAAiB;AAEhC,MACE,QAAQ,OAAO,SAAS,MACrB,QAAQ,OAAO,eAAe,QAC9B,QAAQ,OAAO,cAAc,GAEhC,SAAQ,KAAK,qBAAqB;;AAGtC,QAAO;EACL,mBAAmB;EACnB,wBAAwB,QAAQ,SAAS,IAAI,KAAK,IAAI,KAAO,OAAO,EAAE,GAAG;EACzE,QAAQ,QAAQ,SAAS;EACzB;EACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","names":[],"sources":["../../../../../src/agent/memory/understanding/service.ts"],"sourcesContent":["import { createHash, randomUUID } from 'node:crypto';\n\nimport {\n appendMemoryTraceEvent,\n attachMemoryEvidence,\n markMemoryRecordsConflicted,\n upsertKnowledgeSourceItems,\n} from '../../../storage/sqlite/index.js';\nimport { createLogger } from '../../../utils/logger.js';\nimport type {\n MemoryEvidence,\n MemoryKind,\n MemoryRecord,\n MemorySensitivity,\n MemoryWriteRequest,\n MemoryWriteResult,\n} from '../types.js';\nimport { nextMemoryReviewAt } from '../lifecycle.js';\nimport { extractExplicitUnderstandingCorrectionContent } from './correction.js';\nimport type { UnderstandingCandidate, UnderstandingReviewResult } from './types.js';\nimport { inferMemorySensitivity, redactSensitiveMemoryText } from '../sensitivity.js';\n\nconst log = createLogger('UserUnderstanding');\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 normalizeContent(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 if (/\\b(don't|do not|never|avoid)\\b/i.test(content) || /不要|别再|禁止|底线/.test(content)) {\n return 'boundary';\n }\n if (/\\b(prefer|preference|like)\\b/i.test(content) || /喜欢|偏好|习惯/.test(content)) {\n return 'preference';\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 'project_context';\n }\n if (/\\b(goal|plan|commit|deadline)\\b/i.test(content) || /目标|计划|承诺|截止/.test(content)) {\n return 'commitment';\n }\n if (/\\b(next time|lesson|failed|error)\\b/i.test(content) || /下次|教训|失败|错误/.test(content)) {\n return 'task_lesson';\n }\n return 'curated_note';\n}\n\nconst SENSITIVITY_RANK: Record<MemorySensitivity, number> = {\n normal: 0,\n personal: 1,\n regulated: 2,\n secret: 3,\n};\n\nfunction stricterSensitivity(content: string, declared: MemorySensitivity): MemorySensitivity {\n const inferred = inferMemorySensitivity(content);\n return SENSITIVITY_RANK[inferred] > SENSITIVITY_RANK[declared] ? inferred : declared;\n}\n\nfunction canonicalKey(kind: MemoryKind, content: string): string {\n const normalized = content\n .toLocaleLowerCase()\n .replace(/[^\\p{L}\\p{N}]+/gu, ' ')\n .trim();\n return `${kind}:${createHash('sha256').update(normalized).digest('hex').slice(0, 20)}`;\n}\n\nexport function extractExplicitUnderstandingCandidates(userContent: string): UnderstandingCandidate[] {\n const correction = extractExplicitUnderstandingCorrectionContent(userContent);\n if (correction) {\n const kind = inferKind(correction);\n return [{\n kind,\n content: correction,\n canonicalKey: canonicalKey(kind, correction),\n confidence: 0.95,\n importance: kind === 'boundary' ? 0.9 : 0.8,\n explicitness: 'explicit',\n durability: 'durable',\n sensitivity: inferMemorySensitivity(correction),\n disclosurePolicy: kind === 'boundary' ? 'silent' : 'referenceable',\n tags: ['user-understanding', 'explicit-user-correction'],\n }];\n }\n const lines = userContent.split(/\\r?\\n/).map((line) => line.trim()).filter(Boolean);\n for (const line of lines.length > 0 ? lines : [userContent.trim()]) {\n for (const pattern of EXPLICIT_PATTERNS) {\n const content = normalizeContent(pattern.exec(line)?.[1] ?? '');\n if (content.length < 8) continue;\n const kind = inferKind(content);\n return [{\n kind,\n content,\n canonicalKey: canonicalKey(kind, content),\n confidence: 0.92,\n importance: kind === 'boundary' ? 0.9 : 0.75,\n explicitness: 'explicit',\n durability: 'durable',\n sensitivity: inferMemorySensitivity(content),\n disclosurePolicy: kind === 'boundary' ? 'silent' : 'referenceable',\n tags: ['user-understanding', 'explicit-user-request'],\n }];\n }\n }\n return [];\n}\n\nexport interface UserUnderstandingServiceOptions {\n write: (request: MemoryWriteRequest) => Promise<MemoryWriteResult>;\n list: (canonicalKey: string) => Promise<MemoryRecord[]>;\n}\n\nexport class UserUnderstandingService {\n constructor(private readonly options: UserUnderstandingServiceOptions) {}\n\n async reviewTurn(params: {\n agentId?: string;\n userContent: string;\n assistantContent: string;\n sessionKey?: string;\n correctionTargetRecordIds?: string[];\n }): Promise<UnderstandingReviewResult> {\n const candidates = extractExplicitUnderstandingCandidates(params.userContent);\n const sourceText = `User:\\n${params.userContent.trim()}\\n\\nAssistant:\\n${params.assistantContent.trim()}`;\n const normalizedText = redactSensitiveMemoryText(sourceText);\n const contentHash = createHash('sha256').update(sourceText).digest('hex');\n const stored = upsertKnowledgeSourceItems([{\n sourceInstanceId: params.sessionKey ? `session:${params.sessionKey}` : 'session:unknown',\n externalId: contentHash,\n itemType: 'conversation_turn',\n authorRole: 'user',\n occurredAt: new Date().toISOString(),\n contentHash,\n normalizedText,\n metadata: params.sessionKey ? { sessionKey: params.sessionKey } : {},\n sensitivity: 'personal',\n retentionClass: 'bounded',\n synthesisStatus: 'pending',\n }]);\n const sourceItemId = stored.items[0]?.id;\n const result = await this.applyCandidates(candidates, {\n agentId: params.agentId,\n sessionKey: params.sessionKey,\n sourceItemId,\n sourceText: params.userContent,\n reviewSource: 'turn',\n supersedesRecordIds: params.correctionTargetRecordIds,\n });\n return { ...result, sourceItemId };\n }\n\n async applyCandidates(\n candidates: UnderstandingCandidate[],\n context: {\n agentId?: string;\n sessionKey?: string;\n sourceItemId?: string;\n sourceText?: string;\n reviewSource?: 'turn' | 'background';\n supersedesRecordIds?: string[];\n },\n ): Promise<Omit<UnderstandingReviewResult, 'sourceItemId'>> {\n const startedAt = Date.now();\n let created = 0;\n let deduplicated = 0;\n let rejected = 0;\n const recordIds: string[] = [];\n const createdRecords: UnderstandingReviewResult['createdRecords'] = [];\n const correctionTargets = [...new Set(context.supersedesRecordIds ?? [])];\n const conflictGroupId = correctionTargets.length > 1 ? randomUUID() : undefined;\n if (conflictGroupId) markMemoryRecordsConflicted(correctionTargets, conflictGroupId);\n for (const candidate of candidates.slice(0, 10)) {\n const content = normalizeContent(candidate.content);\n const sensitivity = stricterSensitivity(content, candidate.sensitivity);\n if (\n content.length < 4\n || candidate.confidence < 0.55\n || sensitivity === 'secret'\n || sensitivity === 'regulated'\n ) {\n rejected += 1;\n continue;\n }\n const evidenceText = context.sourceText\n ? redactSensitiveMemoryText(context.sourceText).slice(0, MAX_CANDIDATE_CHARS)\n : undefined;\n const key = candidate.canonicalKey ?? canonicalKey(candidate.kind, content);\n const supersedesRecordId = correctionTargets.length === 1\n ? correctionTargets[0]\n : undefined;\n const existing = await this.options.list(key);\n const evidence: MemoryEvidence = {\n ...(context.sourceItemId ? { sourceItemId: context.sourceItemId } : {}),\n relation: 'supports',\n ...(context.sessionKey ? { sessionKey: context.sessionKey } : {}),\n ...(evidenceText ? { sourceText: evidenceText } : {}),\n observedAt: new Date().toISOString(),\n confidence: candidate.confidence,\n };\n if (existing[0]) {\n deduplicated += 1;\n recordIds.push(existing[0].id);\n if (context.sourceItemId) {\n attachMemoryEvidence({\n recordId: existing[0].id,\n sourceItemId: context.sourceItemId,\n relation: 'supports',\n excerpt: evidenceText,\n confidence: candidate.confidence,\n });\n }\n continue;\n }\n const write = await this.options.write({\n kind: candidate.kind,\n content,\n canonicalKey: key,\n scope: context.agentId || context.sessionKey\n ? { userId: 'local-owner', sessionKey: context.sessionKey }\n : undefined,\n target: candidate.kind === 'preference' ? 'user' : 'memory',\n tags: [...new Set(['user-understanding', ...(candidate.tags ?? [])])],\n source: { provider: 'user-understanding' },\n confidence: candidate.confidence,\n status: 'candidate',\n sensitivity,\n explicitness: candidate.explicitness,\n durability: candidate.durability,\n importance: candidate.importance,\n disclosurePolicy: candidate.disclosurePolicy,\n evidence: [evidence],\n validFrom: candidate.validFrom,\n validTo: candidate.validTo,\n reviewAfter: nextMemoryReviewAt({\n durability: candidate.durability,\n explicitness: candidate.explicitness,\n }),\n supersedesRecordId,\n conflictGroupId,\n });\n if (write.success) {\n created += 1;\n if (write.record) {\n recordIds.push(write.record.id);\n createdRecords.push({ id: write.record.id, content: write.record.content, kind: write.record.kind });\n }\n if (write.record && context.sourceItemId) {\n attachMemoryEvidence({\n recordId: write.record.id,\n sourceItemId: context.sourceItemId,\n relation: 'supports',\n excerpt: evidenceText,\n confidence: candidate.confidence,\n });\n }\n } else {\n rejected += 1;\n log.debug({ errorMessage: write.error, canonicalKey: key }, 'Understanding candidate was not stored');\n }\n }\n try {\n appendMemoryTraceEvent({\n sessionKey: context.sessionKey,\n phase: 'understanding',\n providerId: 'user-understanding',\n request: {\n ...(context.agentId ? { agentId: context.agentId } : {}),\n source: context.reviewSource ?? 'turn',\n proposed: candidates.length,\n created,\n deduplicated,\n rejected,\n },\n resultCount: created,\n selectedRecordIds: recordIds,\n durationMs: Date.now() - startedAt,\n });\n } catch (err) {\n log.debug({ err, sessionKey: context.sessionKey }, 'Understanding quality trace append failed');\n }\n return { proposed: candidates.length, created, deduplicated, rejected, createdRecords };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-context-coordinator.js","names":[],"sources":["../../../../src/agent/memory/user-context-coordinator.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport type { Config } from '../../config/schema.js';\nimport { setLatestMemoryInjectFeedback } from '../../storage/sqlite/index.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { UserContextPlanner } from './context/planner.js';\nimport type { UserContextPlan } from './context/types.js';\nimport type { MemoryManager } from './manager.js';\nimport {\n shouldPlanUserContextThisTurn,\n} from './memory-config.js';\nimport { isExplicitUnderstandingCorrection } from './understanding/correction.js';\nimport { extractAgentUserPlainText } from './user-message-text.js';\n\nconst log = createLogger('UserContextCoordinator');\n\nexport interface UserContextCoordinatorOptions {\n getConfig: () => Config | undefined;\n isEnabledForSession: (sessionKey: string) => boolean;\n getAgentIdForSession: (sessionKey: string) => string;\n getMemoryManagerForSession: (sessionKey: string) => MemoryManager;\n getLastAssistantContent: (sessionKey: string) => string | null;\n}\n\nexport class UserContextCoordinator {\n private readonly userTurn = new Map<string, number>();\n private readonly correctionTargets = new Map<string, string[]>();\n private readonly planner = new UserContextPlanner();\n\n constructor(private readonly options: UserContextCoordinatorOptions) {}\n\n forgetSession(sessionKey: string): void {\n this.userTurn.delete(sessionKey);\n this.correctionTargets.delete(sessionKey);\n }\n\n clear(): void {\n this.userTurn.clear();\n this.correctionTargets.clear();\n }\n\n async prepare(userMessage: AgentMessage, sessionKey: string): Promise<UserContextPlan> {\n const empty = (): UserContextPlan => ({\n traceId: '',\n modelMessage: userMessage,\n items: [],\n rejected: [],\n consentRequests: [],\n estimatedTokens: 0,\n });\n const config = this.options.getConfig();\n if (!this.options.isEnabledForSession(sessionKey)) return empty();\n const query = extractAgentUserPlainText(userMessage);\n this.correctionTargets.delete(sessionKey);\n let excludedRecordIds: string[] | undefined;\n if (isExplicitUnderstandingCorrection(query)) {\n try {\n const trace = setLatestMemoryInjectFeedback({\n sessionKey,\n requireSelectedRecords: true,\n feedback: {\n outcome: 'not_helpful',\n source: 'system',\n reason: 'detected_explicit_user_correction',\n },\n });\n if (trace?.selectedRecordIds.length) {\n this.correctionTargets.set(sessionKey, trace.selectedRecordIds);\n excludedRecordIds = trace.selectedRecordIds;\n }\n } catch (err) {\n log.debug({ err, sessionKey }, 'Understanding correction feedback was not persisted');\n }\n }\n const turn = (this.userTurn.get(sessionKey) ?? 0) + 1;\n this.userTurn.set(sessionKey, turn);\n if (!shouldPlanUserContextThisTurn(config, turn)) return empty();\n return this.planner.plan({\n memoryManager: this.options.getMemoryManagerForSession(sessionKey),\n agentId: this.options.getAgentIdForSession(sessionKey),\n sessionKey,\n query,\n userMessage,\n excludedRecordIds,\n });\n }\n\n async afterTurn(sessionKey: string, userPlainText: string): Promise<import('./understanding/types.js').UnderstandingReviewResult | undefined> {\n if (!this.options.isEnabledForSession(sessionKey)) return undefined;\n const memoryManager = this.options.getMemoryManagerForSession(sessionKey);\n const assistantContent = this.options.getLastAssistantContent(sessionKey) ?? '';\n const correctionTargetRecordIds = this.correctionTargets.get(sessionKey);\n this.correctionTargets.delete(sessionKey);\n try {\n const review = await memoryManager.captureTurnUnderstanding(\n userPlainText,\n assistantContent,\n {\n agentId: this.options.getAgentIdForSession(sessionKey),\n sessionId: sessionKey,\n correctionTargetRecordIds,\n },\n );\n void memoryManager.syncProvidersForTurn(userPlainText, assistantContent, { sessionId: sessionKey });\n memoryManager.queuePrefetchAll(userPlainText, { sessionId: sessionKey });\n return review;\n } catch (err) {\n log.warn({ err, sessionKey }, 'Turn understanding capture failed');\n }\n void memoryManager.syncProvidersForTurn(userPlainText, assistantContent, { sessionId: sessionKey });\n memoryManager.queuePrefetchAll(userPlainText, { sessionId: sessionKey });\n return undefined;\n }\n}\n"],"mappings":";;;;;;;;;aAIqD;AAUrD,MAAM,MAAM,aAAa,yBAAyB;AAUlD,IAAa,yBAAb,MAAoC;CAClC,2BAA4B,IAAI,KAAqB;CACrD,oCAAqC,IAAI,KAAuB;CAChE,UAA2B,IAAI,oBAAoB;CAEnD,YAAY,SAAyD;AAAxC,OAAA,UAAA;;CAE7B,cAAc,YAA0B;AACtC,OAAK,SAAS,OAAO,WAAW;AAChC,OAAK,kBAAkB,OAAO,WAAW;;CAG3C,QAAc;AACZ,OAAK,SAAS,OAAO;AACrB,OAAK,kBAAkB,OAAO;;CAGhC,MAAM,QAAQ,aAA2B,YAA8C;EACrF,MAAM,eAAgC;GACpC,SAAS;GACT,cAAc;GACd,OAAO,EAAE;GACT,UAAU,EAAE;GACZ,iBAAiB,EAAE;GACnB,iBAAiB;GAClB;EACD,MAAM,SAAS,KAAK,QAAQ,WAAW;AACvC,MAAI,CAAC,KAAK,QAAQ,oBAAoB,WAAW,CAAE,QAAO,OAAO;EACjE,MAAM,QAAQ,0BAA0B,YAAY;AACpD,OAAK,kBAAkB,OAAO,WAAW;EACzC,IAAI;AACJ,MAAI,kCAAkC,MAAM,CAC1C,KAAI;GACF,MAAM,QAAQ,8BAA8B;IAC1C;IACA,wBAAwB;IACxB,UAAU;KACR,SAAS;KACT,QAAQ;KACR,QAAQ;KACT;IACF,CAAC;AACF,OAAI,OAAO,kBAAkB,QAAQ;AACnC,SAAK,kBAAkB,IAAI,YAAY,MAAM,kBAAkB;AAC/D,wBAAoB,MAAM;;WAErB,KAAK;AACZ,OAAI,MAAM;IAAE;IAAK;IAAY,EAAE,sDAAsD;;EAGzF,MAAM,QAAQ,KAAK,SAAS,IAAI,WAAW,IAAI,KAAK;AACpD,OAAK,SAAS,IAAI,YAAY,KAAK;AACnC,MAAI,CAAC,8BAA8B,QAAQ,KAAK,CAAE,QAAO,OAAO;AAChE,SAAO,KAAK,QAAQ,KAAK;GACvB,eAAe,KAAK,QAAQ,2BAA2B,WAAW;GAClE,SAAS,KAAK,QAAQ,qBAAqB,WAAW;GACtD;GACA;GACA;GACA;GACD,CAAC;;CAGJ,MAAM,UAAU,YAAoB,eAA0G;AAC5I,MAAI,CAAC,KAAK,QAAQ,oBAAoB,WAAW,CAAE,QAAO,KAAA;EAC1D,MAAM,gBAAgB,KAAK,QAAQ,2BAA2B,WAAW;EACzE,MAAM,mBAAmB,KAAK,QAAQ,wBAAwB,WAAW,IAAI;EAC7E,MAAM,4BAA4B,KAAK,kBAAkB,IAAI,WAAW;AACxE,OAAK,kBAAkB,OAAO,WAAW;AACzC,MAAI;GACF,MAAM,SAAS,MAAM,cAAc,yBACjC,eACA,kBACA;IACE,SAAS,KAAK,QAAQ,qBAAqB,WAAW;IACtD,WAAW;IACX;IACD,CACF;AACI,iBAAc,qBAAqB,eAAe,kBAAkB,EAAE,WAAW,YAAY,CAAC;AACnG,iBAAc,iBAAiB,eAAe,EAAE,WAAW,YAAY,CAAC;AACxE,UAAO;WACA,KAAK;AACZ,OAAI,KAAK;IAAE;IAAK;IAAY,EAAE,oCAAoC;;AAE/D,gBAAc,qBAAqB,eAAe,kBAAkB,EAAE,WAAW,YAAY,CAAC;AACnG,gBAAc,iBAAiB,eAAe,EAAE,WAAW,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"user-message-text.js","names":[],"sources":["../../../../src/agent/memory/user-message-text.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\n\nimport { readAgentMessageContent } from './agent-message-access.js';\nimport { extractTextContent } from '../context/workspace.js';\n\n/** Plain text from a user-role agent message (string or parts array). */\nexport function extractAgentUserPlainText(message: AgentMessage): string {\n const c = readAgentMessageContent(message);\n if (typeof c === 'string') {\n return c;\n }\n if (Array.isArray(c)) {\n return extractTextContent(c as Array<{ type: string; text?: string }>);\n }\n return '';\n}\n"],"mappings":";;;;AAMA,SAAgB,0BAA0B,SAA+B;CACvE,MAAM,IAAI,wBAAwB,QAAQ;AAC1C,KAAI,OAAO,MAAM,SACf,QAAO;AAET,KAAI,MAAM,QAAQ,EAAE,CAClB,QAAO,mBAAmB,EAA4C;AAExE,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"window.js","names":[],"sources":["../../../../src/agent/memory/window.ts"],"sourcesContent":["// Sliding Window Memory - Keep only recent messages\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { Message } from '@earendil-works/pi-ai';\n\nexport interface WindowConfig {\n maxMessages: number;\n keepRecentMessages: number;\n preserveSystemMessages: boolean;\n}\n\nconst DEFAULT_CONFIG: WindowConfig = {\n maxMessages: 100,\n keepRecentMessages: 20,\n preserveSystemMessages: true,\n};\n\nexport class SlidingWindow {\n constructor(private config: Partial<WindowConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Trim messages to keep within window size\n */\n trim(messages: AgentMessage[]): AgentMessage[] {\n if (messages.length <= this.config.maxMessages) {\n return messages;\n }\n\n const { maxMessages, keepRecentMessages, preserveSystemMessages } = this.config;\n\n // Separate system-like messages (role not in standard set)\n const systemMessages = messages.filter(m => {\n const role = (m as Message).role;\n return role !== 'user' && role !== 'assistant' && role !== 'toolResult';\n });\n const otherMessages = messages.filter(m => {\n const role = (m as Message).role;\n return role === 'user' || role === 'assistant' || role === 'toolResult';\n });\n\n if (preserveSystemMessages && systemMessages.length > 0) {\n if (systemMessages.length >= maxMessages) {\n return systemMessages.slice(-maxMessages);\n }\n\n const availableForRecent = maxMessages - systemMessages.length;\n const recentMessages = otherMessages.slice(-Math.min(keepRecentMessages, availableForRecent));\n \n return [...systemMessages, ...recentMessages];\n } else {\n return messages.slice(-maxMessages);\n }\n }\n\n /**\n * Check if messages need trimming\n */\n needsTrim(messages: AgentMessage[]): boolean {\n return messages.length > this.config.maxMessages;\n }\n\n /**\n * Get stats about current window\n */\n getStats(messages: AgentMessage[]): {\n total: number;\n system: number;\n user: number;\n assistant: number;\n tool: number;\n needsTrim: boolean;\n } {\n return {\n total: messages.length,\n system: messages.filter(m => {\n const role = (m as Message).role;\n return role !== 'user' && role !== 'assistant' && role !== 'toolResult';\n }).length,\n user: messages.filter(m => (m as Message).role === 'user').length,\n assistant: messages.filter(m => (m as Message).role === 'assistant').length,\n tool: messages.filter(m => (m as Message).role === 'toolResult').length,\n needsTrim: this.needsTrim(messages),\n };\n }\n}\n"],"mappings":";AAUA,MAAM,iBAA+B;CACnC,aAAa;CACb,oBAAoB;CACpB,wBAAwB;CACzB;AAED,IAAa,gBAAb,MAA2B;CACzB,YAAY,SAAwC,EAAE,EAAE;AAApC,OAAA,SAAA;AAClB,OAAK,SAAS;GAAE,GAAG;GAAgB,GAAG;GAAQ;;;;;CAMhD,KAAK,UAA0C;AAC7C,MAAI,SAAS,UAAU,KAAK,OAAO,YACjC,QAAO;EAGT,MAAM,EAAE,aAAa,oBAAoB,2BAA2B,KAAK;EAGzE,MAAM,iBAAiB,SAAS,QAAO,MAAK;GAC1C,MAAM,OAAQ,EAAc;AAC5B,UAAO,SAAS,UAAU,SAAS,eAAe,SAAS;IAC3D;EACF,MAAM,gBAAgB,SAAS,QAAO,MAAK;GACzC,MAAM,OAAQ,EAAc;AAC5B,UAAO,SAAS,UAAU,SAAS,eAAe,SAAS;IAC3D;AAEF,MAAI,0BAA0B,eAAe,SAAS,GAAG;AACvD,OAAI,eAAe,UAAU,YAC3B,QAAO,eAAe,MAAM,CAAC,YAAY;GAG3C,MAAM,qBAAqB,cAAc,eAAe;GACxD,MAAM,iBAAiB,cAAc,MAAM,CAAC,KAAK,IAAI,oBAAoB,mBAAmB,CAAC;AAE7F,UAAO,CAAC,GAAG,gBAAgB,GAAG,eAAe;QAE7C,QAAO,SAAS,MAAM,CAAC,YAAY;;;;;CAOvC,UAAU,UAAmC;AAC3C,SAAO,SAAS,SAAS,KAAK,OAAO;;;;;CAMvC,SAAS,UAOP;AACA,SAAO;GACL,OAAO,SAAS;GAChB,QAAQ,SAAS,QAAO,MAAK;IAC3B,MAAM,OAAQ,EAAc;AAC5B,WAAO,SAAS,UAAU,SAAS,eAAe,SAAS;KAC3D,CAAC;GACH,MAAM,SAAS,QAAO,MAAM,EAAc,SAAS,OAAO,CAAC;GAC3D,WAAW,SAAS,QAAO,MAAM,EAAc,SAAS,YAAY,CAAC;GACrE,MAAM,SAAS,QAAO,MAAM,EAAc,SAAS,aAAa,CAAC;GACjE,WAAW,KAAK,UAAU,SAAS;GACpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"command-handler.js","names":[],"sources":["../../../../src/agent/messaging/command-handler.ts"],"sourcesContent":["/**\n * Command Handler - Parses and executes commands\n *\n * Handles command execution using the unified command system.\n */\n\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport type { Config } from '../../config/schema.js';\nimport { isProviderConfiguredSync } from '../../providers/index.js';\nimport type { SessionConfigStore, SessionStore } from '../../session/index.js';\nimport type { ThinkLevel } from '../transcript/thinking-types.js';\nimport type { CompactionResult } from '../memory/compaction.js';\nimport { createLogger } from '../../utils/logger.js';\nimport {\n commandRegistry,\n createCommandContext,\n type BtwQueryOptions,\n type CommandContext as UnifiedCommandContext,\n type CommandStreamEvent,\n} from '../../chat-commands/index.js';\nimport { getAllProviders, getModelsByProvider, getProviderDisplayName } from '../../providers/index.js';\nimport type { PersistentGoalApis } from '../goals/persistent-goal-apis.js';\nimport type { WorkflowRunServiceLike } from '../../workflows/service/workflow-run-service.types.js';\nimport type {\n SkillInstallToolOptions,\n SkillInstallToolResult,\n} from '../tools/skill-install-tool.js';\n\nconst log = createLogger('CommandHandler');\n\n/** Gateway console direct stream uses SSE tokens; there is no ChannelPlugin outbound for `webchat`. */\nfunction shouldSkipBusOutboundForChannel(channel: string): boolean {\n return channel === 'webchat';\n}\n\nexport interface CommandContext {\n sessionKey: string;\n channel: string;\n chatId: string;\n senderId: string;\n isGroup: boolean;\n /** From inbound message metadata (thread/account, etc.) for `/goal` continuation routing. */\n inboundMetadata?: Record<string, unknown>;\n}\n\nexport interface CommandHandlerConfig {\n config: Config;\n bus: MessageBus;\n sessionStore: SessionStore;\n sessionConfigStore?: SessionConfigStore;\n /** After /think persists, sync pi-agent */\n applySessionThinkingLevel?: (sessionKey: string, level: ThinkLevel) => void;\n getCurrentModel: () => string;\n switchModelForSession: (sessionKey: string, modelId: string) => Promise<boolean>;\n /** Drop in-memory agent after session file is cleared (e.g. /new) */\n invalidateAgentSession?: (sessionKey: string) => void;\n /** Reset session in place (archive transcript, new session id; preserve overrides) */\n resetSession?: (sessionKey: string) => Promise<{ sessionId: string; previousSessionId: string } | null>;\n /** Cancel streaming preview + in-flight LLM work for this session (e.g. /abort) */\n abortSessionTurn?: (sessionKey: string) => Promise<void>;\n /** Reload skills from disk and refresh active agent prompts. */\n reloadSkills?: () => void | Promise<void>;\n /** Install a managed skill from an explicit source and refresh active agent prompts. */\n installSkillFromSource?: (opts: SkillInstallToolOptions) => Promise<SkillInstallToolResult>;\n\n compactSession?: (\n sessionKey: string,\n options?: { instructions?: string; force?: boolean },\n ) => Promise<CompactionResult>;\n\n btwQuery?: (\n sessionKey: string,\n question: string,\n options?: BtwQueryOptions,\n ) => Promise<{ text: string; error?: string }>;\n\n getSessionContextReport?: (\n sessionKey: string,\n mode: 'list' | 'detail' | 'json',\n ) => Promise<string>;\n\n getPersistentGoalApisForCommand: (routing: {\n sessionKey: string;\n channel: string;\n chatId: string;\n inboundMetadata?: Record<string, unknown>;\n }) => PersistentGoalApis;\n getWorkflowRunService?: () => WorkflowRunServiceLike | undefined;\n}\n\nexport class CommandHandler {\n private config: Config;\n private bus: MessageBus;\n private sessionStore: SessionStore;\n private sessionConfigStore?: SessionConfigStore;\n private applySessionThinkingLevel?: (sessionKey: string, level: ThinkLevel) => void;\n private getCurrentModel: () => string;\n private switchModelForSession: (sessionKey: string, modelId: string) => Promise<boolean>;\n private invalidateAgentSession?: (sessionKey: string) => void;\n private abortSessionTurn?: (sessionKey: string) => Promise<void>;\n private reloadSkills?: CommandHandlerConfig['reloadSkills'];\n private installSkillFromSource?: CommandHandlerConfig['installSkillFromSource'];\n private compactSession?: CommandHandlerConfig['compactSession'];\n private btwQuery?: CommandHandlerConfig['btwQuery'];\n private getSessionContextReport?: CommandHandlerConfig['getSessionContextReport'];\n private getPersistentGoalApisForCommand: CommandHandlerConfig['getPersistentGoalApisForCommand'];\n private resetSession?: CommandHandlerConfig['resetSession'];\n private getWorkflowRunService?: CommandHandlerConfig['getWorkflowRunService'];\n\n constructor(handlerConfig: CommandHandlerConfig) {\n this.config = handlerConfig.config;\n this.bus = handlerConfig.bus;\n this.sessionStore = handlerConfig.sessionStore;\n this.sessionConfigStore = handlerConfig.sessionConfigStore;\n this.applySessionThinkingLevel = handlerConfig.applySessionThinkingLevel;\n this.getCurrentModel = handlerConfig.getCurrentModel;\n this.switchModelForSession = handlerConfig.switchModelForSession;\n this.invalidateAgentSession = handlerConfig.invalidateAgentSession;\n this.abortSessionTurn = handlerConfig.abortSessionTurn;\n this.reloadSkills = handlerConfig.reloadSkills;\n this.installSkillFromSource = handlerConfig.installSkillFromSource;\n this.compactSession = handlerConfig.compactSession;\n this.btwQuery = handlerConfig.btwQuery;\n this.getSessionContextReport = handlerConfig.getSessionContextReport;\n this.getPersistentGoalApisForCommand = handlerConfig.getPersistentGoalApisForCommand;\n this.resetSession = handlerConfig.resetSession;\n this.getWorkflowRunService = handlerConfig.getWorkflowRunService;\n }\n\n /** Replace config reference after hot reload or gateway PATCH so commands see current defaults. */\n updateAgentConfig(config: Config): void {\n this.config = config;\n }\n\n /**\n * Build the unified command context shared by all execute paths.\n * When `recorder` is set, every reply text is also captured (for SSE / CLI aggregation).\n */\n private buildCommandContext(\n context: CommandContext,\n recorder?: (text: string) => void,\n emitEvent?: (event: CommandStreamEvent) => void | Promise<void>,\n ): UnifiedCommandContext {\n const skipBusOutbound = shouldSkipBusOutboundForChannel(context.channel);\n\n return createCommandContext({\n sessionKey: context.sessionKey,\n source: context.channel as 'telegram' | 'webui' | 'cli' | 'api' | 'system' | 'gateway',\n channelId: context.channel,\n chatId: context.chatId,\n senderId: context.senderId,\n isGroup: context.isGroup,\n config: this.config,\n bus: this.bus,\n sessionStore: this.sessionStore,\n sessionConfigStore: this.sessionConfigStore,\n applySessionThinkingLevel: this.applySessionThinkingLevel,\n\n replyHandler: async (text: string, _options?) => {\n recorder?.(text);\n if (skipBusOutbound) return;\n await this.bus.publishOutbound({\n channel: context.channel,\n chat_id: context.chatId,\n content: text,\n type: 'message',\n });\n },\n\n typingHandler: async (typing: boolean) => {\n if (skipBusOutbound) return;\n await this.bus.publishOutbound({\n channel: context.channel,\n chat_id: context.chatId,\n type: typing ? 'typing_on' : 'typing_off',\n });\n },\n\n supportedFeatures: ['markdown', 'typing'],\n\n getCurrentModel: this.getCurrentModel,\n\n switchModel: async (modelId: string) => {\n return this.switchModelForSession(context.sessionKey, modelId);\n },\n\n listModels: async () => {\n const providers = getAllProviders();\n const models: Array<{ id: string; name: string; provider: string }> = [];\n\n for (const providerId of providers) {\n if (isProviderConfiguredSync(providerId)) {\n const providerModels = getModelsByProvider(providerId);\n for (const m of providerModels) {\n models.push({\n id: `${m.provider}/${m.id}`,\n name: m.name || m.id,\n provider: getProviderDisplayName(providerId),\n });\n }\n }\n }\n\n return models;\n },\n\n getUsage: async () => {\n const messages = await this.sessionStore.load(context.sessionKey);\n let promptTokens = 0;\n let completionTokens = 0;\n\n for (const msg of messages) {\n if ('usage' in msg && msg.usage) {\n const usage = msg.usage as { input?: number; output?: number };\n promptTokens += usage.input || 0;\n completionTokens += usage.output || 0;\n }\n }\n\n return {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n messageCount: messages.length,\n };\n },\n\n invalidateAgentSession: this.invalidateAgentSession,\n\n resetSession: this.resetSession\n ? async (sk) => {\n await this.resetSession!(sk);\n }\n : undefined,\n\n abortCurrentTurn: this.abortSessionTurn\n ? async () => {\n await this.abortSessionTurn!(context.sessionKey);\n }\n : undefined,\n reloadSkills: this.reloadSkills\n ? async () => {\n await this.reloadSkills!();\n }\n : undefined,\n installSkillFromSource: this.installSkillFromSource\n ? (opts) => this.installSkillFromSource!({ ...opts, sessionKey: context.sessionKey })\n : undefined,\n\n compactSession: this.compactSession,\n btwQuery: this.btwQuery,\n emitEvent,\n getSessionContextReport: this.getSessionContextReport,\n persistentGoalApis: this.getPersistentGoalApisForCommand({\n sessionKey: context.sessionKey,\n channel: context.channel,\n chatId: context.chatId,\n inboundMetadata: context.inboundMetadata,\n }),\n workflowRunService: this.getWorkflowRunService?.(),\n });\n }\n\n /**\n * Execute a command using the unified command system\n */\n async executeCommand(\n commandName: string,\n args: string,\n context: CommandContext,\n ): Promise<boolean> {\n if (!commandRegistry.has(commandName)) {\n return false;\n }\n\n log.info({ command: commandName, sessionKey: context.sessionKey }, 'Executing command via new system');\n\n const cmdCtx = this.buildCommandContext(context);\n const result = await commandRegistry.execute(commandName, cmdCtx, args);\n\n if (result.content && !shouldSkipBusOutboundForChannel(context.channel)) {\n await this.bus.publishOutbound({\n channel: context.channel,\n chat_id: context.chatId,\n content: result.content,\n type: 'message',\n });\n }\n\n return true;\n }\n\n /**\n * Run command and return all user-visible text (ctx.reply + result.content) for SSE/CLI.\n * Same bus side effects as {@link executeCommand}.\n */\n async executeCommandAndAggregateReply(\n commandName: string,\n args: string,\n context: CommandContext,\n options?: { emitEvent?: (event: CommandStreamEvent) => void | Promise<void> },\n ): Promise<{ handled: boolean; aggregatedText: string; metadata?: Record<string, unknown> }> {\n if (!commandRegistry.has(commandName)) {\n return { handled: false, aggregatedText: '' };\n }\n\n log.info({ command: commandName, sessionKey: context.sessionKey }, 'Executing command (aggregate reply)');\n\n const segments: string[] = [];\n const wrapped = this.buildCommandContext(context, (text) => segments.push(text), options?.emitEvent);\n const result = await commandRegistry.execute(commandName, wrapped, args);\n\n if (result.content) {\n segments.push(result.content);\n if (!shouldSkipBusOutboundForChannel(context.channel)) {\n await this.bus.publishOutbound({\n channel: context.channel,\n chat_id: context.chatId,\n content: result.content,\n type: 'message',\n });\n }\n }\n\n const aggregatedText = segments.filter((s) => s && s.trim()).join('\\n\\n');\n return { handled: true, aggregatedText, metadata: result.metadata };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"message-router.js","names":[],"sources":["../../../../src/agent/messaging/message-router.ts"],"sourcesContent":["/**\n * Message Router - Routes inbound messages to appropriate handlers\n *\n * Handles message classification, session key resolution, and routing logic.\n */\n\nimport type { InboundMessage } from '../../infra/bus/index.js';\nimport { parseSlashCommand } from '../../chat-commands/command-parse.js';\nimport type { AgentContext } from '../service.types.js';\n\nexport interface MessageRoutingResult {\n context: AgentContext;\n isCommand: boolean;\n command?: string;\n commandArgs?: string;\n}\n\nexport class MessageRouter {\n /**\n * Route an inbound message and determine handling strategy\n */\n async routeMessage(msg: InboundMessage): Promise<MessageRoutingResult> {\n const sessionKey = this.resolveSessionKey(msg);\n\n const context: AgentContext = {\n channel: msg.channel,\n chatId: msg.chat_id,\n sessionKey,\n senderId: (msg.metadata?.senderId as string) || msg.sender_id,\n isGroup: (msg.metadata?.isGroup as boolean) || false,\n };\n\n const commandInfo = parseSlashCommand(msg.content);\n\n return {\n context,\n isCommand: commandInfo !== null,\n command: commandInfo?.command,\n commandArgs: commandInfo?.args,\n };\n }\n\n /**\n * Resolve session key from message metadata or derive from channel/chat_id\n */\n private resolveSessionKey(msg: InboundMessage): string {\n // Use sessionKey from metadata if available (for channels with custom session key format like Telegram)\n if (msg.metadata?.sessionKey) {\n return msg.metadata.sessionKey as string;\n }\n\n // For system messages, parse origin channel from chat_id\n if (msg.channel === 'system') {\n if (msg.chat_id.includes(':')) {\n const [ch, ...rest] = msg.chat_id.split(':');\n return `${ch}:${rest.join(':')}`;\n }\n }\n\n // Default: combine channel and chat_id\n return `${msg.channel}:${msg.chat_id}`;\n }\n}\n"],"mappings":";;AAiBA,IAAa,gBAAb,MAA2B;;;;CAIzB,MAAM,aAAa,KAAoD;EACrE,MAAM,aAAa,KAAK,kBAAkB,IAAI;EAE9C,MAAM,UAAwB;GAC5B,SAAS,IAAI;GACb,QAAQ,IAAI;GACZ;GACA,UAAW,IAAI,UAAU,YAAuB,IAAI;GACpD,SAAU,IAAI,UAAU,WAAuB;GAChD;EAED,MAAM,cAAc,kBAAkB,IAAI,QAAQ;AAElD,SAAO;GACL;GACA,WAAW,gBAAgB;GAC3B,SAAS,aAAa;GACtB,aAAa,aAAa;GAC3B;;;;;CAMH,kBAA0B,KAA6B;AAErD,MAAI,IAAI,UAAU,WAChB,QAAO,IAAI,SAAS;AAItB,MAAI,IAAI,YAAY;OACd,IAAI,QAAQ,SAAS,IAAI,EAAE;IAC7B,MAAM,CAAC,IAAI,GAAG,QAAQ,IAAI,QAAQ,MAAM,IAAI;AAC5C,WAAO,GAAG,GAAG,GAAG,KAAK,KAAK,IAAI;;;AAKlC,SAAO,GAAG,IAAI,QAAQ,GAAG,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"outbound-coordinator.js","names":[],"sources":["../../../../src/agent/messaging/outbound-coordinator.ts"],"sourcesContent":["/**\n * OutboundCoordinator — owns the post-turn outbound pipeline.\n *\n * Concentrates the responsibilities that used to be scattered across\n * `AgentService`:\n * - typing-on / typing-off lifecycle for channels that surface \"is typing…\"\n * - final assistant response delivery (silence guard + hook + bus publish)\n * - cross-cutting `webchat_turn_complete` hook + `/goal` post-turn\n * - thin pass-through for extension `message_sending` / `message_sent` hooks\n *\n * The class is intentionally framework-agnostic: it pulls everything it needs\n * via the constructor config (no direct AgentService reference), so it is\n * unit-testable and lets the parent `AgentService` shrink to a coordinator.\n */\n\nimport type { MessageBus, InboundMessage } from '../../infra/bus/index.js';\nimport type { Config } from '../../config/schema.js';\nimport type { HookHandler } from '../lifecycle/hook-handler.js';\nimport type { SessionContext } from '../session/index.js';\nimport { createTypingController, type TypingController } from '../lifecycle/typing.js';\nimport { DEFAULT_ACK_MAX_CHARS, NO_REPLY, shouldSilence } from '../../heartbeat/tokens.js';\nimport { createLogger } from '../../utils/logger.js';\nimport type { StreamManager } from './stream-manager.js';\n\nconst log = createLogger('OutboundCoordinator');\n\nexport interface OutboundCoordinatorConfig {\n bus: MessageBus;\n hookHandler: HookHandler;\n streamManager: StreamManager;\n /** Reads the effective config snapshot (honours runtime overrides). */\n getConfig: () => Config | undefined;\n /** Resolves the last visible assistant text for a session (in-memory + agent fallback). */\n getLastAssistantPlainText: (sessionKey: string) => string;\n /**\n * Run the `/goal` post-turn verdict for a completed user turn. Owned by\n * `PersistentGoalService`; OutboundCoordinator only forwards.\n */\n runPersistentGoalPostTurn: (payload: SessionTurnCompletePayload) => Promise<void>;\n}\n\nexport interface SessionTurnCompletePayload {\n sessionKey: string;\n channel: string;\n chatId: string;\n inboundUserText: string;\n assistantPlainText: string;\n aborted: boolean;\n streamError?: string;\n skipPersistentGoalPostTurn?: boolean;\n outboundMetadata?: Record<string, unknown>;\n}\n\nexport class OutboundCoordinator {\n private readonly bus: MessageBus;\n private readonly hookHandler: HookHandler;\n private readonly streamManager: StreamManager;\n private readonly getConfig: () => Config | undefined;\n private readonly getLastAssistantPlainText: (sessionKey: string) => string;\n private readonly runPersistentGoalPostTurn: OutboundCoordinatorConfig['runPersistentGoalPostTurn'];\n\n constructor(config: OutboundCoordinatorConfig) {\n this.bus = config.bus;\n this.hookHandler = config.hookHandler;\n this.streamManager = config.streamManager;\n this.getConfig = config.getConfig;\n this.getLastAssistantPlainText = config.getLastAssistantPlainText;\n this.runPersistentGoalPostTurn = config.runPersistentGoalPostTurn;\n }\n\n /**\n * Build the typing indicator controller for an inbound message. Returns\n * `null` for the CLI channel (no typing UI). Caller is responsible for\n * `start()` and `stop()` (`stop()` should run AFTER the final outbound so\n * Telegram/Weixin see `typing_off` only once the message is delivered).\n */\n createTypingControllerForInbound(msg: InboundMessage): TypingController | null {\n if (msg.channel === 'cli') {\n return null;\n }\n const meta = msg.metadata as Record<string, unknown> | undefined;\n return createTypingController({\n intervalSeconds: 5,\n onStart: async () => {\n await this.bus.publishOutbound({\n channel: msg.channel,\n chat_id: msg.chat_id,\n content: '',\n type: 'typing_on',\n metadata: {\n accountId: meta?.accountId,\n threadId: meta?.threadId,\n sessionWebhook: meta?.sessionWebhook,\n conversationId: meta?.conversationId,\n },\n });\n },\n onStop: async () => {\n await this.bus.publishOutbound({\n channel: msg.channel,\n chat_id: msg.chat_id,\n content: '',\n type: 'typing_off',\n metadata: {\n accountId: meta?.accountId,\n threadId: meta?.threadId,\n sessionWebhook: meta?.sessionWebhook,\n conversationId: meta?.conversationId,\n },\n });\n },\n });\n }\n\n /**\n * Publish the assistant's visible text as the final bus message. Honours the\n * stream-manager \"channel already streamed the final text\" hint, the heartbeat\n * silence guard, and the extension `message_sending` hook.\n */\n async sendFinalResponse(msg: InboundMessage, sessionContext: SessionContext): Promise<void> {\n if (this.streamManager.consumeSkipFinalOutbound()) {\n return;\n }\n\n const finalContent = this.getLastAssistantPlainText(sessionContext.sessionKey);\n if (!finalContent?.trim()) {\n return;\n }\n\n const ackMax = this.getConfig()?.gateway?.heartbeat?.ackMaxChars ?? DEFAULT_ACK_MAX_CHARS;\n if (shouldSilence(finalContent, ackMax) || finalContent.trim() === NO_REPLY) {\n log.debug({ sessionKey: sessionContext.sessionKey }, 'Silent reply — skipping outbound');\n return;\n }\n\n const hookResult = await this.hookHandler.runMessageSending(\n sessionContext.chatId,\n finalContent,\n sessionContext.channel,\n );\n if (!hookResult.send) {\n return;\n }\n\n await this.bus.publishOutbound({\n channel: sessionContext.channel,\n chat_id: sessionContext.chatId,\n content: hookResult.content || finalContent,\n type: 'message',\n metadata: {\n accountId: msg.metadata?.accountId,\n threadId: msg.metadata?.threadId,\n inboundMessageId: msg.metadata?.messageId,\n transcribedVoice: sessionContext.metadata?.transcribedVoice,\n sessionWebhook: msg.metadata?.sessionWebhook,\n conversationId: msg.metadata?.conversationId,\n },\n });\n }\n\n /**\n * Post-turn hook + `/goal` checklist evaluation. Wired into both the bus-driven\n * inbound finally block and the webchat direct-stream finally. The goal verdict\n * itself lives in `PersistentGoalService`; we just trigger the extension hook\n * here and delegate the `/goal` work.\n */\n async emitSessionTurnComplete(payload: SessionTurnCompletePayload): Promise<void> {\n await this.hookHandler.triggerWithSessionKey(payload.sessionKey, 'webchat_turn_complete', {\n sessionKey: payload.sessionKey,\n channel: payload.channel,\n chatId: payload.chatId,\n inboundUserText: payload.inboundUserText,\n assistantPlainText: payload.assistantPlainText,\n aborted: payload.aborted,\n ...(payload.streamError !== undefined ? { streamError: payload.streamError } : {}),\n });\n\n await this.runPersistentGoalPostTurn(payload);\n }\n\n /** Extension hook pass-through (Gateway ChannelManager). */\n invokeOutboundMessageSending(\n to: string,\n content: string,\n channel: string,\n ): Promise<{ send: boolean; content?: string; reason?: string }> {\n return this.hookHandler.runMessageSending(to, content, channel);\n }\n\n /** Extension hook pass-through (Gateway ChannelManager). */\n invokeOutboundMessageSent(\n to: string,\n content: string,\n success: boolean,\n error: string | undefined,\n channel: string,\n ): Promise<void> {\n return this.hookHandler.runMessageSent(to, content, success, error, channel);\n }\n}\n"],"mappings":";;;;;aAqBqD;AAGrD,MAAM,MAAM,aAAa,sBAAsB;AA6B/C,IAAa,sBAAb,MAAiC;CAC/B;CACA;CACA;CACA;CACA;CACA;CAEA,YAAY,QAAmC;AAC7C,OAAK,MAAM,OAAO;AAClB,OAAK,cAAc,OAAO;AAC1B,OAAK,gBAAgB,OAAO;AAC5B,OAAK,YAAY,OAAO;AACxB,OAAK,4BAA4B,OAAO;AACxC,OAAK,4BAA4B,OAAO;;;;;;;;CAS1C,iCAAiC,KAA8C;AAC7E,MAAI,IAAI,YAAY,MAClB,QAAO;EAET,MAAM,OAAO,IAAI;AACjB,SAAO,uBAAuB;GAC5B,iBAAiB;GACjB,SAAS,YAAY;AACnB,UAAM,KAAK,IAAI,gBAAgB;KAC7B,SAAS,IAAI;KACb,SAAS,IAAI;KACb,SAAS;KACT,MAAM;KACN,UAAU;MACR,WAAW,MAAM;MACjB,UAAU,MAAM;MAChB,gBAAgB,MAAM;MACtB,gBAAgB,MAAM;MACvB;KACF,CAAC;;GAEJ,QAAQ,YAAY;AAClB,UAAM,KAAK,IAAI,gBAAgB;KAC7B,SAAS,IAAI;KACb,SAAS,IAAI;KACb,SAAS;KACT,MAAM;KACN,UAAU;MACR,WAAW,MAAM;MACjB,UAAU,MAAM;MAChB,gBAAgB,MAAM;MACtB,gBAAgB,MAAM;MACvB;KACF,CAAC;;GAEL,CAAC;;;;;;;CAQJ,MAAM,kBAAkB,KAAqB,gBAA+C;AAC1F,MAAI,KAAK,cAAc,0BAA0B,CAC/C;EAGF,MAAM,eAAe,KAAK,0BAA0B,eAAe,WAAW;AAC9E,MAAI,CAAC,cAAc,MAAM,CACvB;AAIF,MAAI,cAAc,cADH,KAAK,WAAW,EAAE,SAAS,WAAW,eAAA,IACd,IAAI,aAAa,MAAM,KAAA,YAAe;AAC3E,OAAI,MAAM,EAAE,YAAY,eAAe,YAAY,EAAE,mCAAmC;AACxF;;EAGF,MAAM,aAAa,MAAM,KAAK,YAAY,kBACxC,eAAe,QACf,cACA,eAAe,QAChB;AACD,MAAI,CAAC,WAAW,KACd;AAGF,QAAM,KAAK,IAAI,gBAAgB;GAC7B,SAAS,eAAe;GACxB,SAAS,eAAe;GACxB,SAAS,WAAW,WAAW;GAC/B,MAAM;GACN,UAAU;IACR,WAAW,IAAI,UAAU;IACzB,UAAU,IAAI,UAAU;IACxB,kBAAkB,IAAI,UAAU;IAChC,kBAAkB,eAAe,UAAU;IAC3C,gBAAgB,IAAI,UAAU;IAC9B,gBAAgB,IAAI,UAAU;IAC/B;GACF,CAAC;;;;;;;;CASJ,MAAM,wBAAwB,SAAoD;AAChF,QAAM,KAAK,YAAY,sBAAsB,QAAQ,YAAY,yBAAyB;GACxF,YAAY,QAAQ;GACpB,SAAS,QAAQ;GACjB,QAAQ,QAAQ;GAChB,iBAAiB,QAAQ;GACzB,oBAAoB,QAAQ;GAC5B,SAAS,QAAQ;GACjB,GAAI,QAAQ,gBAAgB,KAAA,IAAY,EAAE,aAAa,QAAQ,aAAa,GAAG,EAAE;GAClF,CAAC;AAEF,QAAM,KAAK,0BAA0B,QAAQ;;;CAI/C,6BACE,IACA,SACA,SAC+D;AAC/D,SAAO,KAAK,YAAY,kBAAkB,IAAI,SAAS,QAAQ;;;CAIjE,0BACE,IACA,SACA,SACA,OACA,SACe;AACf,SAAO,KAAK,YAAY,eAAe,IAAI,SAAS,SAAS,OAAO,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream-manager.js","names":[],"sources":["../../../../src/agent/messaging/stream-manager.ts"],"sourcesContent":["/**\n * Stream Manager - Manages stream handles for progress updates\n *\n * Handles creation and lifecycle of stream handles for sending progress updates\n * and streaming responses.\n */\n\nimport type { ProgressStage } from '../lifecycle/progress.js';\n\nexport interface StreamHandle {\n update: (text: string) => void;\n updateReasoning?: (text: string) => void;\n updateProgress?: (text: string, stage: ProgressStage, detail?: string) => void;\n setProgress?: (stage: ProgressStage, detail?: string) => void;\n end: () => Promise<void>;\n abort: () => Promise<void>;\n messageId: () => number | undefined;\n skipFinalOutbound?: () => boolean;\n}\n\nexport class StreamManager {\n private currentHandle: StreamHandle | null = null;\n private skipFinalOutboundPending = false;\n\n /**\n * Set the current stream handle\n */\n setHandle(handle: StreamHandle): void {\n this.currentHandle = handle;\n }\n\n /**\n * Get the current stream handle\n */\n getHandle(): StreamHandle | null {\n return this.currentHandle;\n }\n\n /**\n * Clear the current stream handle\n */\n clearHandle(): void {\n this.currentHandle = null;\n }\n\n /**\n * Check if a stream handle is currently active\n */\n hasActiveHandle(): boolean {\n return this.currentHandle !== null;\n }\n\n /**\n * Update the stream with text content\n */\n update(text: string): void {\n this.currentHandle?.update(text);\n }\n\n updateReasoning(text: string): void {\n this.currentHandle?.updateReasoning?.(text);\n }\n\n /**\n * End the stream and clear the handle\n */\n async end(): Promise<void> {\n if (this.currentHandle) {\n const handle = this.currentHandle;\n await handle.end();\n this.skipFinalOutboundPending = handle.skipFinalOutbound?.() ?? false;\n this.clearHandle();\n } else {\n this.skipFinalOutboundPending = false;\n }\n }\n\n /**\n * Abort the stream and clear the handle\n */\n async abort(): Promise<void> {\n if (this.currentHandle) {\n await this.currentHandle.abort();\n this.skipFinalOutboundPending = false;\n this.clearHandle();\n }\n }\n\n /**\n * Whether the channel already delivered the final assistant text (e.g. Telegram streaming).\n * Consumes the flag for one outbound decision.\n */\n consumeSkipFinalOutbound(): boolean {\n const v = this.skipFinalOutboundPending;\n this.skipFinalOutboundPending = false;\n return v;\n }\n\n /**\n * Get the current message ID from the stream handle\n */\n getMessageId(): number | undefined {\n return this.currentHandle?.messageId();\n }\n\n /**\n * Update progress via the stream handle\n */\n updateProgress(text: string, stage: ProgressStage, detail?: string): void {\n if (this.currentHandle?.updateProgress) {\n this.currentHandle.updateProgress(text, stage, detail);\n }\n }\n\n /**\n * Set progress stage via the stream handle\n */\n setProgress(stage: ProgressStage, detail?: string): void {\n if (this.currentHandle?.setProgress) {\n this.currentHandle.setProgress(stage, detail);\n }\n }\n}\n"],"mappings":";AAoBA,IAAa,gBAAb,MAA2B;CACzB,gBAA6C;CAC7C,2BAAmC;;;;CAKnC,UAAU,QAA4B;AACpC,OAAK,gBAAgB;;;;;CAMvB,YAAiC;AAC/B,SAAO,KAAK;;;;;CAMd,cAAoB;AAClB,OAAK,gBAAgB;;;;;CAMvB,kBAA2B;AACzB,SAAO,KAAK,kBAAkB;;;;;CAMhC,OAAO,MAAoB;AACzB,OAAK,eAAe,OAAO,KAAK;;CAGlC,gBAAgB,MAAoB;AAClC,OAAK,eAAe,kBAAkB,KAAK;;;;;CAM7C,MAAM,MAAqB;AACzB,MAAI,KAAK,eAAe;GACtB,MAAM,SAAS,KAAK;AACpB,SAAM,OAAO,KAAK;AAClB,QAAK,2BAA2B,OAAO,qBAAqB,IAAI;AAChE,QAAK,aAAa;QAElB,MAAK,2BAA2B;;;;;CAOpC,MAAM,QAAuB;AAC3B,MAAI,KAAK,eAAe;AACtB,SAAM,KAAK,cAAc,OAAO;AAChC,QAAK,2BAA2B;AAChC,QAAK,aAAa;;;;;;;CAQtB,2BAAoC;EAClC,MAAM,IAAI,KAAK;AACf,OAAK,2BAA2B;AAChC,SAAO;;;;;CAMT,eAAmC;AACjC,SAAO,KAAK,eAAe,WAAW;;;;;CAMxC,eAAe,MAAc,OAAsB,QAAuB;AACxE,MAAI,KAAK,eAAe,eACtB,MAAK,cAAc,eAAe,MAAM,OAAO,OAAO;;;;;CAO1D,YAAY,OAAsB,QAAuB;AACvD,MAAI,KAAK,eAAe,YACtB,MAAK,cAAc,YAAY,OAAO,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","names":["baseLogger"],"sources":["../../../../src/agent/middleware/context.ts"],"sourcesContent":["/**\n * Request-scoped context for structured logging fields (requestId, sessionId, userId, …).\n *\n * Wire `onRequest` / `onResponse` around a handling scope; use `getContext` with\n * `logger.withContext` when you need request fields on log lines.\n *\n * import { ContextMiddleware } from './middleware/index.js';\n */\n\nimport { randomBytes } from 'crypto';\nimport type { LogContext } from '../../utils/logger.js';\nimport { logger as baseLogger } from '../../utils/logger.js';\n\nconst log = baseLogger.child({ module: 'ContextMiddleware' });\n\nexport interface RequestContext {\n sessionKey: string;\n userId?: string;\n channel?: string;\n chatId?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport class ContextMiddleware {\n private currentContext: LogContext = {};\n private contextDepth = 0;\n\n private generateRequestId(): string {\n const timestamp = Date.now().toString(36);\n const random = randomBytes(4).toString('hex');\n return `req_${timestamp}_${random}`;\n }\n\n private extractSessionId(sessionKey: string): string {\n const parts = sessionKey.split(':');\n return parts.slice(0, 2).join(':');\n }\n\n onRequest(context: RequestContext): string {\n this.contextDepth++;\n const requestId = this.generateRequestId();\n\n this.currentContext = {\n requestId,\n sessionId: this.extractSessionId(context.sessionKey),\n userId: context.userId,\n module: context.channel,\n service: 'xopc',\n ...context.metadata,\n };\n\n log.debug(\n {\n requestId,\n sessionId: this.currentContext.sessionId,\n userId: context.userId,\n depth: this.contextDepth,\n },\n 'Request context started',\n );\n\n return requestId;\n }\n\n onResponse(): void {\n this.contextDepth--;\n\n if (this.contextDepth <= 0) {\n this.currentContext = {};\n this.contextDepth = 0;\n }\n\n log.debug({ depth: this.contextDepth }, 'Request context ended');\n }\n\n getContext(): LogContext {\n return { ...this.currentContext };\n }\n\n getRequestId(): string | undefined {\n return this.currentContext.requestId;\n }\n\n extendContext(fields: Record<string, unknown>): void {\n this.currentContext = { ...this.currentContext, ...fields };\n }\n}\n"],"mappings":";;;;;;;;;;;;aAW6D;AAE7D,MAAM,MAAMA,OAAW,MAAM,EAAE,QAAQ,qBAAqB,CAAC;AAU7D,IAAa,oBAAb,MAA+B;CAC7B,iBAAqC,EAAE;CACvC,eAAuB;CAEvB,oBAAoC;AAGlC,SAAO,OAFW,KAAK,KAAK,CAAC,SAAS,GAEf,CAAC,GADT,YAAY,EAAE,CAAC,SAAS,MACN;;CAGnC,iBAAyB,YAA4B;AAEnD,SADc,WAAW,MAAM,IACnB,CAAC,MAAM,GAAG,EAAE,CAAC,KAAK,IAAI;;CAGpC,UAAU,SAAiC;AACzC,OAAK;EACL,MAAM,YAAY,KAAK,mBAAmB;AAE1C,OAAK,iBAAiB;GACpB;GACA,WAAW,KAAK,iBAAiB,QAAQ,WAAW;GACpD,QAAQ,QAAQ;GAChB,QAAQ,QAAQ;GAChB,SAAS;GACT,GAAG,QAAQ;GACZ;AAED,MAAI,MACF;GACE;GACA,WAAW,KAAK,eAAe;GAC/B,QAAQ,QAAQ;GAChB,OAAO,KAAK;GACb,EACD,0BACD;AAED,SAAO;;CAGT,aAAmB;AACjB,OAAK;AAEL,MAAI,KAAK,gBAAgB,GAAG;AAC1B,QAAK,iBAAiB,EAAE;AACxB,QAAK,eAAe;;AAGtB,MAAI,MAAM,EAAE,OAAO,KAAK,cAAc,EAAE,wBAAwB;;CAGlE,aAAyB;AACvB,SAAO,EAAE,GAAG,KAAK,gBAAgB;;CAGnC,eAAmC;AACjC,SAAO,KAAK,eAAe;;CAG7B,cAAc,QAAuC;AACnD,OAAK,iBAAiB;GAAE,GAAG,KAAK;GAAgB,GAAG;GAAQ"}
|