@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":"site-share-config.js","names":[],"sources":["../../../src/share/site-share-config.ts"],"sourcesContent":["import { z } from 'zod';\n\nimport type { Config } from '../config/schema.js';\nimport {\n SITE_SHARE_CONFIG_DEFAULTS,\n type SiteShareConfig,\n} from './site-share-types.js';\n\nconst SiteShareStaticPatchSchema = z.object({\n enabled: z.boolean().optional(),\n maxRootDirSize: z.number().int().min(1_048_576).max(10_737_418_240).optional(),\n maxFileCount: z.number().int().min(1).max(100_000).optional(),\n rewriteEnabledByDefault: z.boolean().optional(),\n});\n\nconst SiteShareProxyPatchSchema = z.object({\n enabled: z.boolean().optional(),\n allowedUpstreamHosts: z.array(z.string().min(1)).optional(),\n allowedUpstreamPorts: z.array(z.number().int().min(1).max(65535)).optional(),\n forwardWebSocket: z.boolean().optional(),\n bodySizeLimit: z.number().int().min(0).max(1_073_741_824).optional(),\n requestTimeoutMs: z.number().int().min(1_000).max(600_000).optional(),\n wsIdleTimeoutMs: z.number().int().min(10_000).max(3_600_000).optional(),\n rewriteSetCookiePath: z.boolean().optional(),\n});\n\nconst SiteSharePatchSchema = z.object({\n enabled: z.boolean().optional(),\n publicHostSuffix: z.string().min(1).optional(),\n defaultTtlMs: z.number().int().min(60_000).max(604_800_000).optional(),\n maxTtlMs: z.number().int().min(60_000).max(2_592_000_000).optional(),\n maxActiveSites: z.number().int().min(1).max(1_000).optional(),\n static: SiteShareStaticPatchSchema.optional(),\n proxy: SiteShareProxyPatchSchema.optional(),\n});\n\nexport function resolveSiteShareConfig(service: { currentConfig: Config }): SiteShareConfig {\n const raw = (service.currentConfig.gateway as Record<string, unknown> | undefined)?.siteShare;\n return mergeWithDefaults(raw);\n}\n\nexport function mergeWithDefaults(raw: unknown): SiteShareConfig {\n const base = SITE_SHARE_CONFIG_DEFAULTS;\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n return JSON.parse(JSON.stringify(base)) as SiteShareConfig;\n }\n const r = raw as Partial<SiteShareConfig> & {\n static?: Partial<SiteShareConfig['static']>;\n proxy?: Partial<SiteShareConfig['proxy']>;\n };\n return {\n enabled: r.enabled ?? base.enabled,\n publicHostSuffix: r.publicHostSuffix ?? base.publicHostSuffix,\n defaultTtlMs: r.defaultTtlMs ?? base.defaultTtlMs,\n maxTtlMs: r.maxTtlMs ?? base.maxTtlMs,\n maxActiveSites: r.maxActiveSites ?? base.maxActiveSites,\n static: {\n enabled: r.static?.enabled ?? base.static.enabled,\n maxRootDirSize: r.static?.maxRootDirSize ?? base.static.maxRootDirSize,\n maxFileCount: r.static?.maxFileCount ?? base.static.maxFileCount,\n rewriteEnabledByDefault: r.static?.rewriteEnabledByDefault ?? base.static.rewriteEnabledByDefault,\n },\n proxy: {\n enabled: r.proxy?.enabled ?? base.proxy.enabled,\n allowedUpstreamHosts: r.proxy?.allowedUpstreamHosts ?? [...base.proxy.allowedUpstreamHosts],\n allowedUpstreamPorts: r.proxy?.allowedUpstreamPorts ?? [...base.proxy.allowedUpstreamPorts],\n forwardWebSocket: r.proxy?.forwardWebSocket ?? base.proxy.forwardWebSocket,\n bodySizeLimit: r.proxy?.bodySizeLimit ?? base.proxy.bodySizeLimit,\n requestTimeoutMs: r.proxy?.requestTimeoutMs ?? base.proxy.requestTimeoutMs,\n wsIdleTimeoutMs: r.proxy?.wsIdleTimeoutMs ?? base.proxy.wsIdleTimeoutMs,\n rewriteSetCookiePath: r.proxy?.rewriteSetCookiePath ?? base.proxy.rewriteSetCookiePath,\n },\n };\n}\n\nexport function mergeSiteShareConfigPatch(\n config: Config,\n patch: Record<string, unknown>,\n): { ok: true } | { ok: false; message: string } {\n const parsed = SiteSharePatchSchema.safeParse(patch);\n if (!parsed.success) {\n return { ok: false, message: parsed.error.issues.map((i) => i.message).join('; ') };\n }\n if (!config.gateway) {\n config.gateway = {\n bind: 'loopback',\n port: 18790,\n auth: { mode: 'token' },\n heartbeat: { enabled: true, intervalMs: 1_800_000, includeSystemPromptSection: false },\n maxSseConnections: 100,\n corsOrigins: [],\n };\n }\n\n const cfg = config.gateway as Record<string, unknown>;\n const current = mergeWithDefaults(cfg.siteShare);\n const next: SiteShareConfig = {\n ...current,\n ...parsed.data,\n static: parsed.data.static ? { ...current.static, ...parsed.data.static } : current.static,\n proxy: parsed.data.proxy ? { ...current.proxy, ...parsed.data.proxy } : current.proxy,\n };\n if (next.defaultTtlMs > next.maxTtlMs) {\n return { ok: false, message: 'siteShare.defaultTtlMs must not exceed siteShare.maxTtlMs' };\n }\n cfg.siteShare = next as unknown as Record<string, unknown>;\n return { ok: true };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-share-router.js","names":[],"sources":["../../../src/share/site-share-router.ts"],"sourcesContent":["import type { Context, Hono } from 'hono';\n\nimport { resolveMimeType } from './share-store.js';\nimport { getSiteShareStore } from './site-share-store.js';\nimport { resolveSiteShareConfig } from './site-share-config.js';\nimport { serveStaticSiteRequest } from './site-static-serve.js';\nimport { forwardHttpRequest, handleProxyWebSocketUpgrade } from './site-proxy.js';\nimport { renderShareExpiredPage } from './share-landing.js';\nimport { getClientIpFromHeaders } from '../gateway/security/loopback.js';\nimport { createLogger } from '../utils/logger.js';\nimport type { GatewayService } from '../gateway/service.js';\nimport type { IncomingMessage } from 'node:http';\nimport type { Socket } from 'node:net';\n\nconst log = createLogger('SiteShareRouter');\n\nconst SITE_SUBPATH_PREFIX = '/site/';\n\n/**\n * Extract the share label from the request Host header when the public host\n * suffix matches. Returns `null` if the request did not target a site-share\n * subdomain.\n */\nexport function extractSiteShareLabel(host: string | null | undefined, suffix: string): string | null {\n if (!host) return null;\n const lowered = host.toLowerCase().split(':')[0];\n const normSuffix = suffix.toLowerCase();\n if (lowered === normSuffix) return null;\n if (!lowered.endsWith(`.${normSuffix}`)) return null;\n const label = lowered.slice(0, -1 * (normSuffix.length + 1));\n if (!label || label.includes('.')) return null;\n return label;\n}\n\n/**\n * Hono middleware. Intercepts requests whose Host header is `*.share.xopc.ai`\n * (or matches the configured suffix), routes them to the matching site share.\n * Falls through to next() when the host does not match.\n *\n * Also handles the subpath fallback `/site/:token/*` for environments without\n * wildcard DNS — same handler logic, just different prefix extraction.\n */\nexport function createSiteShareMiddleware(service: GatewayService) {\n return async (c: Context, next: () => Promise<void>) => {\n const config = resolveSiteShareConfig(service);\n if (!config.enabled) return next();\n const store = getSiteShareStore(config);\n store.updateConfig(config);\n\n const host = c.req.header('host');\n const label = extractSiteShareLabel(host, config.publicHostSuffix);\n const url = new URL(c.req.url);\n const clientIp = getClientIpFromHeaders({ get: (n: string) => c.req.header(n) ?? undefined });\n\n let record = null as ReturnType<typeof store.getByToken>;\n let innerPath = url.pathname;\n let basePrefix = '';\n\n if (label) {\n record = store.resolveByHostLabel(label);\n if (!record) return next();\n } else if (url.pathname.startsWith(SITE_SUBPATH_PREFIX)) {\n const rest = url.pathname.slice(SITE_SUBPATH_PREFIX.length);\n const slash = rest.indexOf('/');\n const token = slash < 0 ? rest : rest.slice(0, slash);\n const tail = slash < 0 ? '' : rest.slice(slash);\n record = store.getByToken(token) ?? store.getBySubdomain(token);\n if (!record) return next();\n innerPath = tail || '/';\n basePrefix = `${SITE_SUBPATH_PREFIX}${token}`;\n } else {\n return next();\n }\n\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n return c.html(renderShareExpiredPage(validation.reason as never), 410);\n }\n\n if (record.source.kind === 'static') {\n try {\n const result = await serveStaticSiteRequest(record, innerPath, basePrefix);\n store.recordRequest(record.id, clientIp);\n return result;\n } catch (err) {\n log.warn({ err, shareId: record.id }, 'static serve failed');\n return new Response('Internal error', { status: 500 });\n }\n }\n\n if (record.source.kind === 'proxy') {\n const ctx = {\n innerPath,\n basePrefix,\n clientIp,\n originalUrl: url,\n forwardedProto: url.protocol === 'https:' ? ('https' as const) : ('http' as const),\n };\n const { response } = await forwardHttpRequest(record, store, c.req.raw, ctx);\n return response;\n }\n\n return next();\n };\n}\n\n/** Standalone HTTP upgrade handler that bridges WebSocket requests to the proxy share. */\nexport function handleSiteShareUpgrade(\n service: GatewayService,\n req: IncomingMessage,\n socket: Socket,\n head: Buffer,\n): boolean {\n const config = resolveSiteShareConfig(service);\n if (!config.enabled) return false;\n if (!config.proxy.enabled || !config.proxy.forwardWebSocket) return false;\n\n const store = getSiteShareStore(config);\n store.updateConfig(config);\n\n const host = (req.headers.host ?? '').toString();\n const label = extractSiteShareLabel(host, config.publicHostSuffix);\n const url = new URL(req.url ?? '/', `http://${host || 'localhost'}`);\n\n let record: ReturnType<typeof store.getByToken> = null;\n let innerPath = url.pathname;\n let basePrefix = '';\n if (label) {\n record = store.resolveByHostLabel(label);\n } else if (url.pathname.startsWith(SITE_SUBPATH_PREFIX)) {\n const rest = url.pathname.slice(SITE_SUBPATH_PREFIX.length);\n const slash = rest.indexOf('/');\n const token = slash < 0 ? rest : rest.slice(0, slash);\n const tail = slash < 0 ? '' : rest.slice(slash);\n record = store.getByToken(token) ?? store.getBySubdomain(token);\n innerPath = tail || '/';\n basePrefix = `${SITE_SUBPATH_PREFIX}${token}`;\n }\n if (!record) return false;\n const validation = store.validateAccess(record);\n if (!validation.valid) {\n try {\n socket.write('HTTP/1.1 410 Gone\\r\\nConnection: close\\r\\n\\r\\n');\n } catch {\n /* ignore */\n }\n socket.destroy();\n return true;\n }\n if (record.source.kind !== 'proxy') {\n try {\n socket.write('HTTP/1.1 400 Bad Request\\r\\nConnection: close\\r\\n\\r\\n');\n } catch {\n /* ignore */\n }\n socket.destroy();\n return true;\n }\n\n const clientIp = (req.socket.remoteAddress ?? '').replace(/^::ffff:/, '') || '0.0.0.0';\n handleProxyWebSocketUpgrade({\n record,\n store,\n req,\n socket,\n head,\n innerPath,\n basePrefix,\n clientIp,\n });\n return true;\n}\n\n/** Register the middleware on a Hono app — call from createHonoApp. */\nexport function registerSiteShareMiddleware(app: Hono, service: GatewayService): void {\n app.use(createSiteShareMiddleware(service));\n}\n\nvoid resolveMimeType;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-share-store.js","names":["resolvePath","relPathPosix"],"sources":["../../../src/share/site-share-store.ts"],"sourcesContent":["import { randomBytes, randomUUID } from 'node:crypto';\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { stat, readdir, lstat, realpath } from 'node:fs/promises';\nimport { join, relative as relPathPosix, resolve as resolvePath } from 'node:path';\n\nimport { resolveStateDir } from '../config/paths.js';\nimport { isPathUnderWorkspace } from '../gateway/workspace-editor-path.js';\nimport { createLogger } from '../utils/logger.js';\nimport {\n SITE_SHARE_CONFIG_DEFAULTS,\n type CreateSiteShareParams,\n type SiteShareConfig,\n type SiteShareRecord,\n type SiteShareStoreData,\n type SiteSource,\n} from './site-share-types.js';\n\nconst log = createLogger('SiteShareStore');\n\nconst SITE_SHARES_FILE = 'site-shares.json';\nconst CLEANUP_INTERVAL_MS = 10 * 60_000;\nconst EXPIRED_RETENTION_MS = 24 * 60 * 60_000;\nconst MAX_STORED = 200;\nconst REQUEST_COUNT_DEBOUNCE_MS = 5_000;\nconst SUBDOMAIN_PATTERN = /^[a-z0-9]([a-z0-9-]{0,30}[a-z0-9])?$/;\n\nfunction resolveStorePath(): string {\n return join(resolveStateDir(), SITE_SHARES_FILE);\n}\n\nexport class SiteShareStore {\n private shares = new Map<string, SiteShareRecord>();\n private byToken = new Map<string, string>();\n private bySubdomain = new Map<string, string>();\n private config: SiteShareConfig;\n private dirty = false;\n private debounceTimer: ReturnType<typeof setTimeout> | null = null;\n private cleanupTimer: ReturnType<typeof setInterval> | null = null;\n /** Optional cleanup hook invoked when a record is dropped (e.g. delete staging dir). */\n private onCleanup: ((record: SiteShareRecord) => void) | null = null;\n\n constructor(config?: Partial<SiteShareConfig>) {\n this.config = { ...SITE_SHARE_CONFIG_DEFAULTS, ...config };\n this.load();\n this.startCleanupTimer();\n }\n\n updateConfig(config: Partial<SiteShareConfig>): void {\n this.config = { ...this.config, ...config };\n }\n\n setCleanupHook(hook: (record: SiteShareRecord) => void): void {\n this.onCleanup = hook;\n }\n\n getConfig(): SiteShareConfig {\n return JSON.parse(JSON.stringify(this.config)) as SiteShareConfig;\n }\n\n // ── CRUD ────────────────────────────────────────────────────────────────────\n\n async create(\n params: CreateSiteShareParams & {\n workspaceRoot: string | null;\n gatewayTokenHash: string;\n },\n ): Promise<SiteShareRecord> {\n if (!this.config.enabled) throw new Error('Site sharing is disabled');\n\n const active = this.getActiveShares();\n if (active.length >= this.config.maxActiveSites) {\n throw new Error(`Maximum active site shares reached (${this.config.maxActiveSites})`);\n }\n\n const ttlMs = params.ttlMs ?? this.config.defaultTtlMs;\n if (ttlMs < 60_000 || ttlMs > this.config.maxTtlMs) {\n throw new Error(`TTL must be between 60s and ${this.config.maxTtlMs / 1000}s`);\n }\n\n const source = await this.buildSource(params);\n\n const subdomain = this.resolveSubdomain(params.subdomain);\n const id = randomUUID();\n const token = randomBytes(24).toString('base64url');\n const now = new Date();\n const record: SiteShareRecord = {\n id,\n token,\n subdomain,\n source,\n createdAt: now.toISOString(),\n expiresAt: new Date(now.getTime() + ttlMs).toISOString(),\n revoked: false,\n description: params.description,\n createdByTokenHash: params.gatewayTokenHash,\n requestCount: 0,\n uniqueClientCount: 0,\n maxRequests: params.maxRequests ?? null,\n };\n\n this.shares.set(id, record);\n this.byToken.set(token, id);\n if (subdomain) this.bySubdomain.set(subdomain, id);\n this.persistSync();\n\n log.info(\n { id, tokenPrefix: token.slice(0, 8), subdomain, kind: source.kind },\n `Site share created (${source.kind})`,\n );\n\n return record;\n }\n\n private async buildSource(params: CreateSiteShareParams & { workspaceRoot: string | null }): Promise<SiteSource> {\n if (params.kind === 'static') {\n if (!this.config.static.enabled) throw new Error('Static site sharing is disabled');\n if (!params.workspaceRoot) throw new Error('workspaceRoot required for static site shares');\n if (!params.path) throw new Error('path required for static site shares');\n const relPath = params.path.trim().replace(/\\\\/g, '/').replace(/^\\/+/, '');\n if (!relPath) throw new Error('Empty path');\n if (relPath.includes('..') || relPath.includes('\\0')) throw new Error('Invalid path');\n const absRoot = resolvePath(params.workspaceRoot, relPath);\n const relToRoot = relPathPosix(resolvePath(params.workspaceRoot), absRoot);\n if (relToRoot.startsWith('..') || relToRoot.split(/[/\\\\]/).includes('..')) {\n throw new Error('Path is outside workspace');\n }\n const real = await realpath(absRoot);\n if (!isPathUnderWorkspace(params.workspaceRoot, real)) {\n throw new Error('Path target is outside workspace');\n }\n const stats = await stat(absRoot);\n if (!stats.isDirectory()) throw new Error('Static source must be a directory');\n const summary = await scanStatic(absRoot, this.config.static.maxFileCount, this.config.static.maxRootDirSize);\n log.debug({ ...summary, rootDir: absRoot }, 'Static site scanned');\n return {\n kind: 'static',\n rootDir: absRoot,\n workspaceRoot: params.workspaceRoot,\n workspaceRelativePath: relPath,\n spaFallback: params.spaFallback ?? true,\n rewriteMode: params.rewriteMode ?? (this.config.static.rewriteEnabledByDefault ? 'html-css' : 'none'),\n };\n }\n\n if (params.kind === 'proxy') {\n if (!this.config.proxy.enabled) throw new Error('Proxy site sharing is disabled');\n if (!params.upstreamUrl) throw new Error('upstreamUrl required for proxy shares');\n const validated = validateUpstreamUrl(params.upstreamUrl, this.config.proxy);\n return {\n kind: 'proxy',\n upstreamUrl: validated,\n rewriteSetCookiePath: this.config.proxy.rewriteSetCookiePath,\n forwardWebSocket: params.forwardWebSocket ?? this.config.proxy.forwardWebSocket,\n forwardedHeaders: 'minimal',\n };\n }\n\n throw new Error(`Unsupported site share kind: ${params.kind}`);\n }\n\n private resolveSubdomain(preferred?: string): string | null {\n if (!preferred) return null;\n const lower = preferred.trim().toLowerCase();\n if (!SUBDOMAIN_PATTERN.test(lower)) {\n throw new Error('Subdomain must match /^[a-z0-9]([a-z0-9-]{0,30}[a-z0-9])?$/');\n }\n if (this.bySubdomain.has(lower)) {\n throw new Error(`Subdomain '${lower}' already in use`);\n }\n return lower;\n }\n\n getById(id: string): SiteShareRecord | null {\n return this.shares.get(id) ?? null;\n }\n\n getByToken(token: string): SiteShareRecord | null {\n const id = this.byToken.get(token);\n return id ? this.shares.get(id) ?? null : null;\n }\n\n getBySubdomain(subdomain: string): SiteShareRecord | null {\n const id = this.bySubdomain.get(subdomain.toLowerCase());\n return id ? this.shares.get(id) ?? null : null;\n }\n\n /**\n * Look up a record by token first, then by subdomain. Subdomain label may\n * itself be the share token (when user didn't pick a custom subdomain).\n */\n resolveByHostLabel(label: string): SiteShareRecord | null {\n return this.getByToken(label) ?? this.getBySubdomain(label);\n }\n\n getActiveShares(): SiteShareRecord[] {\n const now = Date.now();\n return [...this.shares.values()].filter(\n (r) => !r.revoked && now < new Date(r.expiresAt).getTime(),\n );\n }\n\n getAllShares(): SiteShareRecord[] {\n return [...this.shares.values()].sort(\n (a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime(),\n );\n }\n\n validateAccess(record: SiteShareRecord): { valid: boolean; reason?: string } {\n if (record.revoked) return { valid: false, reason: 'revoked' };\n if (Date.now() >= new Date(record.expiresAt).getTime()) return { valid: false, reason: 'expired' };\n if (record.maxRequests !== null && record.requestCount >= record.maxRequests) {\n return { valid: false, reason: 'max_requests' };\n }\n return { valid: true };\n }\n\n /** Increment counters when a request lands. Debounced persist. */\n recordRequest(id: string, clientIp: string): void {\n const record = this.shares.get(id);\n if (!record) return;\n record.requestCount++;\n const recent = (record.recentClientIps ??= []);\n if (!recent.includes(clientIp)) {\n recent.unshift(clientIp);\n if (recent.length > 200) recent.length = 200;\n record.uniqueClientCount = recent.length;\n }\n this.scheduleDebouncedPersist();\n }\n\n setThumbnailStatus(id: string, status: 'pending' | 'ready' | 'failed'): void {\n const record = this.shares.get(id);\n if (!record) return;\n record.thumbnailStatus = status;\n if (status === 'ready') record.thumbnailGeneratedAt = new Date().toISOString();\n if (status === 'failed') record.thumbnailFailedAt = new Date().toISOString();\n this.persistSync();\n }\n\n revoke(id: string): boolean {\n const record = this.shares.get(id);\n if (!record) return false;\n record.revoked = true;\n this.persistSync();\n if (this.onCleanup) {\n try {\n this.onCleanup(record);\n } catch (err) {\n log.warn({ err, id }, 'Site share cleanup hook threw on revoke');\n }\n }\n log.info({ id, tokenPrefix: record.token.slice(0, 8) }, 'Site share revoked');\n return true;\n }\n\n revokeMany(ids: string[]): number {\n let count = 0;\n for (const id of ids) {\n const record = this.shares.get(id);\n if (record && !record.revoked) {\n record.revoked = true;\n count++;\n }\n }\n if (count > 0) this.persistSync();\n return count;\n }\n\n revokeExpired(): number {\n const now = Date.now();\n let count = 0;\n for (const record of this.shares.values()) {\n if (!record.revoked && now >= new Date(record.expiresAt).getTime()) {\n record.revoked = true;\n count++;\n }\n }\n if (count > 0) this.persistSync();\n return count;\n }\n\n update(id: string, patch: { extendTtlMs?: number; maxRequests?: number | null }): SiteShareRecord | null {\n const record = this.shares.get(id);\n if (!record) return null;\n if (patch.extendTtlMs !== undefined) {\n record.expiresAt = new Date(Date.now() + patch.extendTtlMs).toISOString();\n }\n if (patch.maxRequests !== undefined) {\n record.maxRequests = patch.maxRequests;\n }\n this.persistSync();\n return record;\n }\n\n // ── Persistence ─────────────────────────────────────────────────────────────\n\n private load(): void {\n const path = resolveStorePath();\n if (!existsSync(path)) return;\n try {\n const raw = readFileSync(path, 'utf8');\n const data = JSON.parse(raw) as SiteShareStoreData;\n if (data.version !== 1 || !Array.isArray(data.shares)) return;\n const now = Date.now();\n let cleaned = 0;\n for (const record of data.shares) {\n const expiredMs = now - new Date(record.expiresAt).getTime();\n if (expiredMs > EXPIRED_RETENTION_MS) {\n cleaned++;\n continue;\n }\n this.shares.set(record.id, record);\n this.byToken.set(record.token, record.id);\n if (record.subdomain) this.bySubdomain.set(record.subdomain, record.id);\n }\n if (cleaned > 0) {\n log.info({ cleaned }, `Cleaned ${cleaned} expired site-share records on load`);\n this.persistSync();\n }\n } catch (err) {\n log.warn({ err }, 'Failed to load site-shares.json');\n }\n }\n\n private persistSync(): void {\n const path = resolveStorePath();\n mkdirSync(resolveStateDir(), { recursive: true });\n let records = [...this.shares.values()];\n if (records.length > MAX_STORED) {\n records.sort((a, b) => new Date(b.createdAt).getTime() - new Date(a.createdAt).getTime());\n records = records.slice(0, MAX_STORED);\n this.shares.clear();\n this.byToken.clear();\n this.bySubdomain.clear();\n for (const r of records) {\n this.shares.set(r.id, r);\n this.byToken.set(r.token, r.id);\n if (r.subdomain) this.bySubdomain.set(r.subdomain, r.id);\n }\n }\n const data: SiteShareStoreData = { version: 1, shares: records };\n writeFileSync(path, `${JSON.stringify(data, null, 2)}\\n`, 'utf8');\n }\n\n private scheduleDebouncedPersist(): void {\n this.dirty = true;\n if (this.debounceTimer) return;\n this.debounceTimer = setTimeout(() => {\n this.debounceTimer = null;\n if (this.dirty) {\n this.dirty = false;\n this.persistSync();\n }\n }, REQUEST_COUNT_DEBOUNCE_MS);\n this.debounceTimer.unref?.();\n }\n\n private startCleanupTimer(): void {\n this.cleanupTimer = setInterval(() => {\n const now = Date.now();\n let removed = 0;\n for (const [id, record] of this.shares) {\n const expiredMs = now - new Date(record.expiresAt).getTime();\n if (expiredMs > EXPIRED_RETENTION_MS) {\n this.shares.delete(id);\n this.byToken.delete(record.token);\n if (record.subdomain) this.bySubdomain.delete(record.subdomain);\n if (this.onCleanup) {\n try {\n this.onCleanup(record);\n } catch (err) {\n log.warn({ err, id }, 'Site share cleanup hook threw');\n }\n }\n removed++;\n }\n }\n if (removed > 0) {\n this.persistSync();\n log.debug({ removed }, `Cleaned ${removed} expired site shares`);\n }\n }, CLEANUP_INTERVAL_MS);\n this.cleanupTimer.unref?.();\n }\n\n shutdown(): void {\n if (this.cleanupTimer) {\n clearInterval(this.cleanupTimer);\n this.cleanupTimer = null;\n }\n if (this.debounceTimer) {\n clearTimeout(this.debounceTimer);\n this.debounceTimer = null;\n }\n if (this.dirty) {\n this.dirty = false;\n this.persistSync();\n }\n }\n}\n\n// ── Helpers ───────────────────────────────────────────────────────────────────\n\nasync function scanStatic(\n root: string,\n maxFileCount: number,\n maxRootDirSize: number,\n): Promise<{ fileCount: number; totalSize: number }> {\n let fileCount = 0;\n let totalSize = 0;\n\n async function walk(dir: string, depth: number): Promise<void> {\n if (depth > 16) return;\n const dirents = await readdir(dir, { withFileTypes: true });\n for (const dirent of dirents) {\n if (fileCount >= maxFileCount) throw new Error(`Static site exceeds maxFileCount (${maxFileCount})`);\n const abs = resolvePath(dir, dirent.name);\n const lst = await lstat(abs);\n if (lst.isSymbolicLink()) continue; // never follow symlinks in a public static root\n if (lst.isFile()) {\n fileCount++;\n totalSize += lst.size;\n if (totalSize > maxRootDirSize) {\n const mb = (maxRootDirSize / 1_048_576).toFixed(0);\n throw new Error(`Static site exceeds maxRootDirSize (${mb} MB)`);\n }\n } else if (lst.isDirectory()) {\n await walk(abs, depth + 1);\n }\n }\n }\n\n await walk(root, 0);\n return { fileCount, totalSize };\n}\n\nfunction validateUpstreamUrl(raw: string, cfg: SiteShareConfig['proxy']): string {\n let parsed: URL;\n try {\n parsed = new URL(raw);\n } catch {\n throw new Error('upstreamUrl must be a valid URL');\n }\n if (parsed.protocol !== 'http:' && parsed.protocol !== 'https:') {\n throw new Error('upstreamUrl must use http or https');\n }\n const host = parsed.hostname.toLowerCase();\n if (!cfg.allowedUpstreamHosts.map((h) => h.toLowerCase()).includes(host)) {\n throw new Error(`upstream host '${host}' is not in allowedUpstreamHosts`);\n }\n const port = parsed.port ? Number(parsed.port) : parsed.protocol === 'https:' ? 443 : 80;\n if (!cfg.allowedUpstreamPorts.includes(port)) {\n throw new Error(`upstream port ${port} is not in allowedUpstreamPorts`);\n }\n // Strip path / search / hash — proxy uses base only\n return `${parsed.protocol}//${parsed.host}`;\n}\n\n// ── Singleton ─────────────────────────────────────────────────────────────────\n\nlet singleton: SiteShareStore | null = null;\n\nexport function getSiteShareStore(config?: Partial<SiteShareConfig>): SiteShareStore {\n if (!singleton) singleton = new SiteShareStore(config);\n return singleton;\n}\n\nexport function resetSiteShareStoreForTests(): void {\n singleton?.shutdown();\n singleton = null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-share-types.js","names":[],"sources":["../../../src/share/site-share-types.ts"],"sourcesContent":["export type SiteSourceKind = 'static' | 'proxy';\n\nexport interface SiteStaticSource {\n kind: 'static';\n /** Absolute filesystem root of the static site directory. */\n rootDir: string;\n /** Workspace root captured at creation for re-validation. */\n workspaceRoot: string;\n /** Workspace-relative POSIX path for display. */\n workspaceRelativePath: string;\n /** Send index.html (status 200) for unmatched paths under root (SPA). */\n spaFallback: boolean;\n /** Whether HTML/CSS absolute-path rewriting is applied. */\n rewriteMode: 'none' | 'html-only' | 'html-css';\n /** Regex string matched against URL path; matches get an immutable cache. */\n immutableAssetsRegex?: string;\n}\n\nexport interface SiteProxySource {\n kind: 'proxy';\n /** Upstream base URL (e.g. http://127.0.0.1:3000). */\n upstreamUrl: string;\n /** Forward Set-Cookie path attribute (subpath mode only). */\n rewriteSetCookiePath: boolean;\n /** Whether to handle WebSocket upgrades. */\n forwardWebSocket: boolean;\n /** Per-request forwarded headers strategy. */\n forwardedHeaders: 'minimal' | 'full';\n}\n\nexport type SiteSource = SiteStaticSource | SiteProxySource;\n\nexport interface SiteShareRecord {\n id: string;\n /** Token used both as the URL subdomain label (subdomain mode) and as `/site/:token/` subpath fallback. */\n token: string;\n /** Optional creator-chosen subdomain (must be unique, only [a-z0-9-]). */\n subdomain: string | null;\n source: SiteSource;\n createdAt: string;\n expiresAt: string;\n revoked: boolean;\n description?: string;\n createdByTokenHash: string;\n requestCount: number;\n uniqueClientCount: number;\n /** Hard cap on total requests served (null = unlimited). */\n maxRequests: number | null;\n /** Cached client IPs that have counted toward uniqueClientCount (last 200). */\n recentClientIps?: string[];\n /** Thumbnail generation status (parallels ShareRecord). */\n thumbnailStatus?: 'pending' | 'ready' | 'failed';\n thumbnailGeneratedAt?: string;\n thumbnailFailedAt?: string;\n}\n\nexport interface SiteShareStoreData {\n version: 1;\n shares: SiteShareRecord[];\n}\n\nexport interface CreateSiteShareParams {\n /** 'static' uses workspace path; 'proxy' uses upstreamUrl. */\n kind: SiteSourceKind;\n /** Static: workspace-relative path of build output. */\n path?: string;\n /** Proxy: full upstream URL (must be loopback or whitelisted). */\n upstreamUrl?: string;\n /** Default 6h. */\n ttlMs?: number;\n /** Optional friendly description. */\n description?: string;\n /** Optional preferred subdomain (will fall back to token if taken). */\n subdomain?: string;\n /** Optional max request count. */\n maxRequests?: number | null;\n /** Static: SPA fallback (default true for static). */\n spaFallback?: boolean;\n /** Static: rewrite mode (default 'none'). */\n rewriteMode?: 'none' | 'html-only' | 'html-css';\n /** Proxy: forward WS (default true if enabled in config). */\n forwardWebSocket?: boolean;\n sessionKey?: string;\n agentId?: string;\n}\n\nexport interface SiteShareConfig {\n enabled: boolean;\n publicHostSuffix: string;\n defaultTtlMs: number;\n maxTtlMs: number;\n maxActiveSites: number;\n static: {\n enabled: boolean;\n maxRootDirSize: number;\n maxFileCount: number;\n rewriteEnabledByDefault: boolean;\n };\n proxy: {\n enabled: boolean;\n allowedUpstreamHosts: string[];\n allowedUpstreamPorts: number[];\n forwardWebSocket: boolean;\n bodySizeLimit: number;\n requestTimeoutMs: number;\n wsIdleTimeoutMs: number;\n rewriteSetCookiePath: boolean;\n };\n}\n\nexport const SITE_SHARE_CONFIG_DEFAULTS: SiteShareConfig = {\n enabled: true,\n publicHostSuffix: 'share.xopc.ai',\n defaultTtlMs: 21_600_000,\n maxTtlMs: 604_800_000,\n maxActiveSites: 5,\n static: {\n enabled: true,\n maxRootDirSize: 524_288_000,\n maxFileCount: 10_000,\n rewriteEnabledByDefault: false,\n },\n proxy: {\n enabled: true,\n allowedUpstreamHosts: ['127.0.0.1', 'localhost', '::1'],\n allowedUpstreamPorts: [3000, 3001, 4321, 5173, 8000, 8080, 8888, 9000],\n forwardWebSocket: true,\n bodySizeLimit: 52_428_800,\n requestTimeoutMs: 30_000,\n wsIdleTimeoutMs: 300_000,\n rewriteSetCookiePath: true,\n },\n};\n"],"mappings":";AA8GA,MAAa,6BAA8C;CACzD,SAAS;CACT,kBAAkB;CAClB,cAAc;CACd,UAAU;CACV,gBAAgB;CAChB,QAAQ;EACN,SAAS;EACT,gBAAgB;EAChB,cAAc;EACd,yBAAyB;EAC1B;CACD,OAAO;EACL,SAAS;EACT,sBAAsB;GAAC;GAAa;GAAa;GAAM;EACvD,sBAAsB;GAAC;GAAM;GAAM;GAAM;GAAM;GAAM;GAAM;GAAM;GAAK;EACtE,kBAAkB;EAClB,eAAe;EACf,kBAAkB;EAClB,iBAAiB;EACjB,sBAAsB;EACvB;CACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"site-static-serve.js","names":["resolvePath","relPathPosix"],"sources":["../../../src/share/site-static-serve.ts"],"sourcesContent":["import { createReadStream } from 'node:fs';\nimport { stat, readFile } from 'node:fs/promises';\nimport { resolve as resolvePath, relative as relPathPosix, join } from 'node:path';\nimport { Readable } from 'node:stream';\n\nimport { isPathUnderWorkspace } from '../gateway/workspace-editor-path.js';\nimport { resolveMimeType, shareResponseContentType } from './share-store.js';\nimport type { SiteShareRecord, SiteStaticSource } from './site-share-types.js';\n\nconst HASHED_ASSET_RE = /\\.[a-f0-9]{8,}\\.(?:js|mjs|css|woff2?|ttf|otf|svg|png|jpg|jpeg|gif|webp|avif|ico)$/i;\nconst REWRITABLE_TYPES = new Set(['text/html', 'text/css']);\n\n/**\n * Serve a request for a static site share.\n *\n * `urlPath` is the in-site path (already stripped of any subdomain/subpath base).\n * `basePrefix` is the path prefix that the share is mounted under, used by the\n * HTML rewriter to make root-relative URLs (`/assets/x`) point back into the\n * share. Pass '' when serving on a subdomain (root mode).\n */\nexport async function serveStaticSiteRequest(\n record: SiteShareRecord,\n urlPath: string,\n basePrefix: string,\n): Promise<Response> {\n if (record.source.kind !== 'static') {\n return new Response('not_static', { status: 400 });\n }\n const source = record.source;\n\n const sanitized = sanitizePath(urlPath);\n if (sanitized.startsWith('..')) return new Response('forbidden', { status: 403 });\n\n const absInitial = resolvePath(source.rootDir, sanitized);\n const inside = await pathInsideRoot(source.rootDir, source.workspaceRoot, absInitial);\n if (!inside.ok) {\n if (source.spaFallback) {\n return serveIndexFallback(source, basePrefix);\n }\n return new Response('not_found', { status: 404 });\n }\n\n let abs = inside.abs;\n let stats;\n try {\n stats = await stat(abs);\n } catch {\n if (source.spaFallback) return serveIndexFallback(source, basePrefix);\n return new Response('not_found', { status: 404 });\n }\n\n if (stats.isDirectory()) {\n const indexPath = join(abs, 'index.html');\n try {\n const indexStat = await stat(indexPath);\n if (indexStat.isFile()) {\n abs = indexPath;\n stats = indexStat;\n } else if (source.spaFallback) {\n return serveIndexFallback(source, basePrefix);\n } else {\n return new Response('not_found', { status: 404 });\n }\n } catch {\n if (source.spaFallback) return serveIndexFallback(source, basePrefix);\n return new Response('not_found', { status: 404 });\n }\n }\n\n const fileName = abs.split(/[\\\\/]/).pop() ?? 'file';\n const mime = resolveMimeType(fileName);\n\n const cacheHeader = decideCacheHeader(sanitized, mime);\n\n if (source.rewriteMode !== 'none' && REWRITABLE_TYPES.has(mime)) {\n const raw = await readFile(abs, 'utf8');\n const rewritten = rewriteAbsolutePaths(raw, mime, basePrefix, source.rewriteMode);\n const bytes = Buffer.from(rewritten, 'utf8');\n return new Response(bytes, {\n status: 200,\n headers: buildHeaders(mime, bytes.length, cacheHeader, fileName),\n });\n }\n\n const stream = createReadStream(abs);\n const webStream = Readable.toWeb(stream) as ReadableStream;\n return new Response(webStream, {\n status: 200,\n headers: buildHeaders(mime, stats.size, cacheHeader, fileName),\n });\n}\n\nasync function serveIndexFallback(source: SiteStaticSource, basePrefix: string): Promise<Response> {\n const indexPath = join(source.rootDir, 'index.html');\n try {\n const raw = await readFile(indexPath, 'utf8');\n const rewritten =\n source.rewriteMode !== 'none' ? rewriteAbsolutePaths(raw, 'text/html', basePrefix, source.rewriteMode) : raw;\n const bytes = Buffer.from(rewritten, 'utf8');\n return new Response(bytes, {\n status: 200,\n headers: buildHeaders('text/html', bytes.length, 'no-cache', 'index.html'),\n });\n } catch {\n return new Response('not_found', { status: 404 });\n }\n}\n\nfunction buildHeaders(\n mime: string,\n contentLength: number,\n cacheControl: string,\n fileName: string,\n): Record<string, string> {\n return {\n 'Content-Type': shareResponseContentType(mime),\n 'Content-Length': String(contentLength),\n 'Cache-Control': cacheControl,\n 'X-Content-Type-Options': 'nosniff',\n 'Referrer-Policy': 'no-referrer',\n // Don't force attachment — site-share is meant to be browsed.\n 'Content-Disposition': `inline; filename=\"${fileName.replace(/[^\\x20-\\x7e]/g, '_').replace(/\"/g, '')}\"`,\n };\n}\n\nfunction decideCacheHeader(urlPath: string, mime: string): string {\n if (HASHED_ASSET_RE.test(urlPath)) {\n return 'public, max-age=31536000, immutable';\n }\n if (mime === 'text/html') return 'no-cache';\n return 'public, max-age=600';\n}\n\nfunction sanitizePath(input: string): string {\n let p = input.replace(/\\\\/g, '/');\n p = p.replace(/^\\/+/, '');\n if (p.includes('\\0')) return '..';\n if (p.split('/').includes('..')) return '..';\n return p;\n}\n\nasync function pathInsideRoot(\n rootDir: string,\n workspaceRoot: string,\n abs: string,\n): Promise<{ ok: true; abs: string } | { ok: false }> {\n const relToRoot = relPathPosix(rootDir, abs);\n if (relToRoot.startsWith('..') || relToRoot.split(/[/\\\\]/).includes('..')) {\n return { ok: false };\n }\n if (!isPathUnderWorkspace(workspaceRoot, abs)) {\n return { ok: false };\n }\n return { ok: true, abs };\n}\n\n// ── HTML/CSS rewriting ────────────────────────────────────────────────────────\n//\n// Best-effort root-relative path prefixing. For SPAs built with `base: '/'`,\n// the produced HTML/CSS contains `/assets/...` references that need to be\n// prefixed with the share's `basePrefix`. JS-generated URLs at runtime are NOT\n// handled here — recommend the user set `base` at build time when possible.\n\nfunction rewriteAbsolutePaths(\n body: string,\n mime: string,\n basePrefix: string,\n mode: 'none' | 'html-only' | 'html-css',\n): string {\n if (mode === 'none' || !basePrefix) return body;\n if (mime === 'text/html') {\n return rewriteHtml(body, basePrefix);\n }\n if (mime === 'text/css' && mode === 'html-css') {\n return rewriteCss(body, basePrefix);\n }\n return body;\n}\n\nfunction rewriteHtml(html: string, basePrefix: string): string {\n // Match attribute values like src=\"/x\", href='/y', srcset=\"/a, /b 2x\"\n const attrRe = /\\s(href|src|action|poster|formaction|data)\\s*=\\s*(\"|')\\/([^\"']*?)\\2/gi;\n let out = html.replace(attrRe, (_match, attr, quote, rest) => {\n if (rest.startsWith('/')) return _match; // protocol-relative '//'\n return ` ${attr}=${quote}${basePrefix}/${rest}${quote}`;\n });\n\n const srcsetRe = /\\s(srcset|imagesrcset)\\s*=\\s*(\"|')([^\"']*)\\2/gi;\n out = out.replace(srcsetRe, (_match, attr, quote, value) => {\n const fixed = value\n .split(',')\n .map((part: string) => {\n const trimmed = part.trim();\n const [url, descriptor] = trimmed.split(/\\s+/, 2);\n if (!url || !url.startsWith('/') || url.startsWith('//')) return trimmed;\n return descriptor ? `${basePrefix}${url} ${descriptor}` : `${basePrefix}${url}`;\n })\n .join(', ');\n return ` ${attr}=${quote}${fixed}${quote}`;\n });\n\n // Inject <base> tag for clarity (helps relative URLs inside the page)\n out = out.replace(/<head([^>]*)>/i, `<head$1><base href=\"${basePrefix}/\">`);\n\n return out;\n}\n\nfunction rewriteCss(css: string, basePrefix: string): string {\n // url(/x) — only absolute-root references\n return css.replace(/url\\(\\s*(\"|'|)\\/([^)\"']*?)\\1\\s*\\)/g, (_m, quote, rest) => {\n if (rest.startsWith('/')) return _m;\n return `url(${quote}${basePrefix}/${rest}${quote})`;\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activity-repository.js","names":[],"sources":["../../../../src/storage/sqlite/activity-repository.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type {\n ActivityEvent,\n ActivityEventWithRelations,\n ActivityListResult,\n ActivityObjectRef,\n ActivityRelatedProject,\n ActivityScope,\n ActivitySource,\n ActivityPrincipal,\n CreateObjectLinkInput,\n ListActivityOptions,\n ListObjectActivityOptions,\n ListProjectActivityOptions,\n ObjectLink,\n RecordActivityInput,\n} from '../../activity/types.js';\nimport { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';\n\ntype ActivityEventRow = {\n id: string;\n type: string;\n primary_object_kind: string;\n primary_object_id: string;\n primary_object_title: string | null;\n actor_json: string;\n initiator_json: string | null;\n source_json: string;\n payload_json: string;\n visibility: string;\n importance: string;\n created_at: number;\n};\n\ntype ActivityScopeRow = {\n activity_id: string;\n scope_kind: string;\n scope_id: string;\n reason: string;\n};\n\ntype ActivityRelatedProjectRow = {\n activity_id: string;\n project_id: string;\n reason: string;\n confidence: number;\n computed_at: number;\n};\n\ntype ObjectLinkRow = {\n id: string;\n from_kind: string;\n from_id: string;\n from_title: string | null;\n to_kind: string;\n to_id: string;\n to_title: string | null;\n relation: string;\n source: string;\n created_at: number;\n};\n\ntype CountRow = { count: number };\ntype SqlParam = string | number | bigint | null;\n\nfunction parseJson<T>(json: string, fallback: T): T {\n try {\n return JSON.parse(json) as T;\n } catch {\n return fallback;\n }\n}\n\nfunction eventFromRow(row: ActivityEventRow): ActivityEvent {\n return {\n id: row.id,\n type: row.type,\n primaryObject: {\n kind: row.primary_object_kind as ActivityObjectRef['kind'],\n id: row.primary_object_id,\n title: row.primary_object_title ?? undefined,\n },\n actor: parseJson<ActivityPrincipal>(row.actor_json, { kind: 'system' }),\n initiator: row.initiator_json ? parseJson<ActivityPrincipal | undefined>(row.initiator_json, undefined) : undefined,\n source: parseJson<ActivitySource>(row.source_json, { kind: 'system' }),\n payload: parseJson<Record<string, unknown>>(row.payload_json, {}),\n visibility: row.visibility as ActivityEvent['visibility'],\n importance: row.importance as ActivityEvent['importance'],\n createdAt: row.created_at,\n };\n}\n\nfunction scopeFromRow(row: ActivityScopeRow): ActivityScope {\n return {\n activityId: row.activity_id,\n scopeKind: row.scope_kind as ActivityScope['scopeKind'],\n scopeId: row.scope_id,\n reason: row.reason as ActivityScope['reason'],\n };\n}\n\nfunction relatedProjectFromRow(row: ActivityRelatedProjectRow): ActivityRelatedProject {\n return {\n activityId: row.activity_id,\n projectId: row.project_id,\n reason: row.reason as ActivityRelatedProject['reason'],\n confidence: row.confidence,\n computedAt: row.computed_at,\n };\n}\n\nfunction objectLinkFromRow(row: ObjectLinkRow): ObjectLink {\n return {\n id: row.id,\n from: {\n kind: row.from_kind as ActivityObjectRef['kind'],\n id: row.from_id,\n title: row.from_title ?? undefined,\n },\n to: {\n kind: row.to_kind as ActivityObjectRef['kind'],\n id: row.to_id,\n title: row.to_title ?? undefined,\n },\n relation: row.relation as ObjectLink['relation'],\n source: row.source as ObjectLink['source'],\n createdAt: row.created_at,\n };\n}\n\nfunction listScopesForActivity(activityId: string): ActivityScope[] {\n return getSqliteDatabase()\n .prepare(\n `SELECT activity_id, scope_kind, scope_id, reason\n FROM activity_scopes\n WHERE activity_id = ?\n ORDER BY scope_kind ASC, scope_id ASC, reason ASC`,\n )\n .all(activityId)\n .map((row) => scopeFromRow(row as ActivityScopeRow));\n}\n\nfunction listRelatedProjectsForActivity(activityId: string): ActivityRelatedProject[] {\n return getSqliteDatabase()\n .prepare(\n `SELECT activity_id, project_id, reason, confidence, computed_at\n FROM activity_related_projects\n WHERE activity_id = ?\n ORDER BY project_id ASC, reason ASC`,\n )\n .all(activityId)\n .map((row) => relatedProjectFromRow(row as ActivityRelatedProjectRow));\n}\n\nfunction eventWithRelations(row: ActivityEventRow): ActivityEventWithRelations {\n const event = eventFromRow(row);\n return {\n ...event,\n scopes: listScopesForActivity(event.id),\n relatedProjects: listRelatedProjectsForActivity(event.id),\n };\n}\n\nfunction normalizeLimit(limit: number | undefined): number {\n return Math.max(1, Math.min(100, Math.floor(limit ?? 50)));\n}\n\nfunction normalizeOffset(offset: number | undefined): number {\n return Math.max(0, Math.floor(offset ?? 0));\n}\n\nfunction visibilityClause(visibility: string | undefined, params: SqlParam[]): string {\n if (!visibility) return '';\n params.push(visibility);\n return 'WHERE visibility = ?';\n}\n\nfunction listResult(rows: ActivityEventRow[], total: number, limit: number, offset: number): ActivityListResult {\n return {\n items: rows.map(eventWithRelations),\n total,\n limit,\n offset,\n hasMore: offset + rows.length < total,\n };\n}\n\nexport function recordActivityEvent(input: RecordActivityInput): ActivityEventWithRelations {\n const id = input.id ?? randomUUID();\n const now = input.nowMs ?? Date.now();\n const visibility = input.visibility ?? 'timeline';\n const importance = input.importance ?? 'normal';\n const payload = input.payload ?? {};\n\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO activity_events (\n id, type, primary_object_kind, primary_object_id, primary_object_title,\n actor_json, initiator_json, source_json, payload_json,\n visibility, importance, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n ).run(\n id,\n input.type,\n input.primaryObject.kind,\n input.primaryObject.id,\n input.primaryObject.title ?? null,\n JSON.stringify(input.actor),\n input.initiator ? JSON.stringify(input.initiator) : null,\n JSON.stringify(input.source),\n JSON.stringify(payload),\n visibility,\n importance,\n now,\n );\n\n for (const scope of input.scopes ?? []) {\n db.prepare(\n `INSERT OR IGNORE INTO activity_scopes (activity_id, scope_kind, scope_id, reason)\n VALUES (?, ?, ?, ?)`,\n ).run(id, scope.scopeKind, scope.scopeId, scope.reason);\n }\n\n for (const related of input.relatedProjects ?? []) {\n db.prepare(\n `INSERT OR REPLACE INTO activity_related_projects (\n activity_id, project_id, reason, confidence, computed_at\n ) VALUES (?, ?, ?, ?, ?)`,\n ).run(id, related.projectId, related.reason, related.confidence, related.computedAt ?? now);\n }\n });\n\n const event = getActivityEventRecord(id);\n if (!event) {\n throw new Error(`Activity event was not persisted: ${id}`);\n }\n return event;\n}\n\nexport function getActivityEventRecord(id: string): ActivityEventWithRelations | null {\n const row = getSqliteDatabase()\n .prepare(\n `SELECT *\n FROM activity_events\n WHERE id = ?`,\n )\n .get(id) as ActivityEventRow | undefined;\n return row ? eventWithRelations(row) : null;\n}\n\nexport function listActivityRecords(options: ListActivityOptions = {}): ActivityListResult {\n const limit = normalizeLimit(options.limit);\n const offset = normalizeOffset(options.offset);\n const params: SqlParam[] = [];\n const where = visibilityClause(options.visibility, params);\n const total = (getSqliteDatabase()\n .prepare(`SELECT COUNT(*) AS count FROM activity_events ${where}`)\n .get(...params) as CountRow).count;\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT *\n FROM activity_events\n ${where}\n ORDER BY created_at DESC, id DESC\n LIMIT ? OFFSET ?`,\n )\n .all(...params, limit, offset)\n .map((row) => row as ActivityEventRow);\n return listResult(rows, total, limit, offset);\n}\n\nexport function listObjectActivityRecords(options: ListObjectActivityOptions): ActivityListResult {\n const limit = normalizeLimit(options.limit);\n const offset = normalizeOffset(options.offset);\n const params: SqlParam[] = [options.object.kind, options.object.id];\n const visibility = options.visibility ? 'AND visibility = ?' : '';\n if (options.visibility) params.push(options.visibility);\n const total = (getSqliteDatabase()\n .prepare(\n `SELECT COUNT(*) AS count\n FROM activity_events\n WHERE primary_object_kind = ? AND primary_object_id = ?\n ${visibility}`,\n )\n .get(...params) as CountRow).count;\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT *\n FROM activity_events\n WHERE primary_object_kind = ? AND primary_object_id = ?\n ${visibility}\n ORDER BY created_at DESC, id DESC\n LIMIT ? OFFSET ?`,\n )\n .all(...params, limit, offset)\n .map((row) => row as ActivityEventRow);\n return listResult(rows, total, limit, offset);\n}\n\nexport function listProjectActivityRecords(options: ListProjectActivityOptions): ActivityListResult {\n const limit = normalizeLimit(options.limit);\n const offset = normalizeOffset(options.offset);\n const params: SqlParam[] = ['project', options.projectId];\n const relatedClause = options.includeRelated\n ? `OR EXISTS (\n SELECT 1 FROM activity_related_projects ar\n WHERE ar.activity_id = ae.id AND ar.project_id = ?\n )`\n : '';\n if (options.includeRelated) params.push(options.projectId);\n const visibilityClauseSql = options.visibility ? 'AND ae.visibility = ?' : '';\n if (options.visibility) params.push(options.visibility);\n\n const baseWhere = `EXISTS (\n SELECT 1 FROM activity_scopes s\n WHERE s.activity_id = ae.id AND s.scope_kind = ? AND s.scope_id = ?\n ) ${relatedClause}`;\n\n const total = (getSqliteDatabase()\n .prepare(\n `SELECT COUNT(*) AS count\n FROM activity_events ae\n WHERE (${baseWhere})\n ${visibilityClauseSql}`,\n )\n .get(...params) as CountRow).count;\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT ae.*\n FROM activity_events ae\n WHERE (${baseWhere})\n ${visibilityClauseSql}\n ORDER BY ae.created_at DESC, ae.id DESC\n LIMIT ? OFFSET ?`,\n )\n .all(...params, limit, offset)\n .map((row) => row as ActivityEventRow);\n return listResult(rows, total, limit, offset);\n}\n\nexport function createObjectLinkRecord(input: CreateObjectLinkInput): ObjectLink {\n const id = input.id ?? randomUUID();\n const now = input.nowMs ?? Date.now();\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO object_links (\n id, from_kind, from_id, from_title, to_kind, to_id, to_title, relation, source, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n ).run(\n id,\n input.from.kind,\n input.from.id,\n input.from.title ?? null,\n input.to.kind,\n input.to.id,\n input.to.title ?? null,\n input.relation,\n input.source,\n now,\n );\n });\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM object_links WHERE id = ?`)\n .get(id) as ObjectLinkRow | undefined;\n if (!row) {\n throw new Error(`Object link was not persisted: ${id}`);\n }\n return objectLinkFromRow(row);\n}\n\nexport function listObjectLinkRecords(object: ActivityObjectRef): ObjectLink[] {\n return getSqliteDatabase()\n .prepare(\n `SELECT *\n FROM object_links\n WHERE (from_kind = ? AND from_id = ?) OR (to_kind = ? AND to_id = ?)\n ORDER BY created_at DESC, id DESC`,\n )\n .all(object.kind, object.id, object.kind, object.id)\n .map((row) => objectLinkFromRow(row as ObjectLinkRow));\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config-repository.js","names":[],"sources":["../../../../src/storage/sqlite/config-repository.ts"],"sourcesContent":["import type { DatabaseSync } from 'node:sqlite';\n\nimport type { SessionAgentConfig } from '../../session/config-types.js';\nimport { sessionConfigRowToConfig, type SessionConfigRow } from './row-mappers.js';\nimport { ensureSessionInTransaction } from './session-repository.js';\nimport { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';\n\nfunction readConfigRow(db: DatabaseSync, sessionKey: string): SessionConfigRow | undefined {\n return db\n .prepare(\n `SELECT session_key, thinking_level, reasoning_level, verbose_level, elevated_mode,\n model_override, provider_override, working_directory_override, updated_at\n FROM session_config WHERE session_key = ?`,\n )\n .get(sessionKey) as SessionConfigRow | undefined;\n}\n\nexport function getSessionConfig(sessionKey: string): SessionAgentConfig | null {\n const db = getSqliteDatabase();\n const row = readConfigRow(db, sessionKey);\n if (!row) {\n return null;\n }\n return sessionConfigRowToConfig(row);\n}\n\nexport function setSessionConfig(sessionKey: string, config: SessionAgentConfig, cwd: string): SessionAgentConfig {\n return runSqliteWriteTransaction((db) => {\n ensureSessionInTransaction(db, sessionKey, cwd);\n const updatedAt = Date.now();\n const next = { ...config, updatedAt };\n db.prepare(\n `INSERT INTO session_config (\n session_key, thinking_level, reasoning_level, verbose_level, elevated_mode,\n model_override, provider_override, working_directory_override, updated_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(session_key) DO UPDATE SET\n thinking_level = excluded.thinking_level,\n reasoning_level = excluded.reasoning_level,\n verbose_level = excluded.verbose_level,\n elevated_mode = excluded.elevated_mode,\n model_override = excluded.model_override,\n provider_override = excluded.provider_override,\n working_directory_override = excluded.working_directory_override,\n updated_at = excluded.updated_at`,\n ).run(\n sessionKey,\n next.thinkingLevel ?? null,\n next.reasoningLevel ?? null,\n next.verboseLevel ?? null,\n next.elevatedMode ?? null,\n next.modelOverride ?? null,\n next.providerOverride ?? null,\n next.workingDirectoryOverride ?? null,\n updatedAt,\n );\n return next;\n });\n}\n\nexport function updateSessionConfig(\n sessionKey: string,\n partial: Partial<SessionAgentConfig>,\n cwd: string,\n): SessionAgentConfig {\n const existing = getSessionConfig(sessionKey);\n return setSessionConfig(sessionKey, { ...existing, ...partial }, cwd);\n}\n\nexport function deleteSessionConfig(sessionKey: string): void {\n runSqliteWriteTransaction((db) => {\n db.prepare(`DELETE FROM session_config WHERE session_key = ?`).run(sessionKey);\n });\n}\n\nexport function hasSessionConfig(sessionKey: string): boolean {\n const db = getSqliteDatabase();\n const row = db\n .prepare(`SELECT 1 AS ok FROM session_config WHERE session_key = ?`)\n .get(sessionKey) as { ok?: number } | undefined;\n return row?.ok === 1;\n}\n"],"mappings":";;;;AAOA,SAAS,cAAc,IAAkB,YAAkD;AACzF,QAAO,GACJ,QACC;;kDAGD,CACA,IAAI,WAAW;;AAGpB,SAAgB,iBAAiB,YAA+C;CAE9E,MAAM,MAAM,cADD,mBACiB,EAAE,WAAW;AACzC,KAAI,CAAC,IACH,QAAO;AAET,QAAO,yBAAyB,IAAI;;AAGtC,SAAgB,iBAAiB,YAAoB,QAA4B,KAAiC;AAChH,QAAO,2BAA2B,OAAO;AACvC,6BAA2B,IAAI,YAAY,IAAI;EAC/C,MAAM,YAAY,KAAK,KAAK;EAC5B,MAAM,OAAO;GAAE,GAAG;GAAQ;GAAW;AACrC,KAAG,QACD;;;;;;;;;;;;0CAaD,CAAC,IACA,YACA,KAAK,iBAAiB,MACtB,KAAK,kBAAkB,MACvB,KAAK,gBAAgB,MACrB,KAAK,gBAAgB,MACrB,KAAK,iBAAiB,MACtB,KAAK,oBAAoB,MACzB,KAAK,4BAA4B,MACjC,UACD;AACD,SAAO;GACP;;AAGJ,SAAgB,oBACd,YACA,SACA,KACoB;AAEpB,QAAO,iBAAiB,YAAY;EAAE,GADrB,iBAAiB,WACe;EAAE,GAAG;EAAS,EAAE,IAAI;;AAGvE,SAAgB,oBAAoB,YAA0B;AAC5D,4BAA2B,OAAO;AAChC,KAAG,QAAQ,mDAAmD,CAAC,IAAI,WAAW;GAC9E;;AAGJ,SAAgB,iBAAiB,YAA6B;AAK5D,QAJW,mBACG,CACX,QAAQ,2DAA2D,CACnE,IAAI,WACG,EAAE,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connection.js","names":[],"sources":["../../../../src/storage/sqlite/connection.ts"],"sourcesContent":["import fs from 'node:fs';\nimport childProcess from 'node:child_process';\nimport path from 'node:path';\nimport type { DatabaseSync } from 'node:sqlite';\n\nimport { requireNodeSqlite } from '../../infra/node-sqlite.js';\nimport { installSqliteTransientRejectionHandler } from '../../infra/unhandled-rejections.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { resolveXopcDatabasePath } from './paths.js';\nimport { ensureXopcDatabaseSchema } from './schema.js';\n\nconst log = createLogger('Sqlite:Connection');\n\nconst XOPC_SQLITE_BUSY_TIMEOUT_MS = 30_000;\nconst DB_DIR_MODE = 0o700;\nconst DB_FILE_MODE = 0o600;\nconst DB_SIDECAR_SUFFIXES = ['', '-shm', '-wal'] as const;\nconst LINUX_NFS_SUPER_MAGIC = 0x6969;\nconst PROC_MOUNTINFO_PATH = '/proc/self/mountinfo';\nconst MAX_TIMER_TIMEOUT_MS = 2 ** 31 - 1;\n\ntype IntervalHandle = ReturnType<typeof setInterval> & { unref?: () => void };\ntype SqliteWalCheckpointMode = 'PASSIVE' | 'FULL' | 'RESTART' | 'TRUNCATE';\n\nexport type SqliteWalMaintenance = {\n checkpoint: () => boolean;\n close: () => boolean;\n};\n\nexport type SqliteConnectionPragmaOptions = {\n autoCheckpointPages?: number;\n checkpointIntervalMs?: number;\n checkpointMode?: SqliteWalCheckpointMode;\n busyTimeoutMs?: number;\n foreignKeys?: boolean;\n synchronous?: 'NORMAL';\n databasePath?: string;\n onCheckpointError?: (error: unknown) => void;\n};\n\nfunction normalizeNonNegativeInteger(value: number, label: string): number {\n if (!Number.isInteger(value) || value < 0) {\n throw new Error(`${label} must be a non-negative integer`);\n }\n return value;\n}\n\n// ---------------------------------------------------------------------------\n// NFS detection — refuse WAL on NFS-backed volumes (openclaw parity)\n// ---------------------------------------------------------------------------\n\nfunction findExistingVolumePath(targetPath: string): string | null {\n let current = path.resolve(targetPath);\n while (true) {\n try {\n const stats = fs.statSync(current);\n return stats.isDirectory() ? current : path.dirname(current);\n } catch {\n const parent = path.dirname(current);\n if (parent === current) return null;\n current = parent;\n }\n }\n}\n\nfunction decodeMountPath(value: string): string {\n return value.replace(/\\\\([0-7]{3})/g, (_match, octal: string) =>\n String.fromCharCode(Number.parseInt(octal, 8)),\n );\n}\n\nfunction parseProcMountInfoEntries(\n contents: string,\n): Array<{ mountPoint: string; fsType: string }> {\n const entries: Array<{ mountPoint: string; fsType: string }> = [];\n for (const line of contents.split('\\n')) {\n const separator = line.indexOf(' - ');\n if (separator === -1) continue;\n const fields = line.slice(0, separator).split(' ');\n const suffixFields = line.slice(separator + 3).split(' ');\n const mountPoint = fields[4];\n const fsType = suffixFields[0];\n if (mountPoint && fsType) {\n entries.push({ mountPoint: decodeMountPath(mountPoint), fsType });\n }\n }\n return entries;\n}\n\nfunction parseMountCommandEntries(contents: string): Array<{ mountPoint: string; fsType: string }> {\n const entries: Array<{ mountPoint: string; fsType: string }> = [];\n for (const line of contents.split('\\n')) {\n // Linux: /dev/sda1 on /mnt type ext4 (rw,relatime)\n const linuxMatch = /^.* on (.+) type ([^,\\s)]+) \\(/.exec(line);\n if (linuxMatch) {\n entries.push({ mountPoint: linuxMatch[1], fsType: linuxMatch[2] });\n continue;\n }\n // macOS/BSD: //host/share on /Volumes/share (nfs, nodev, nosuid)\n const bsdMatch = /^.* on (.+) \\(([^,\\s)]+)/.exec(line);\n if (bsdMatch) {\n entries.push({ mountPoint: bsdMatch[1], fsType: bsdMatch[2] });\n }\n }\n return entries;\n}\n\nfunction readMountEntries(): Array<{ mountPoint: string; fsType: string }> {\n try {\n return parseProcMountInfoEntries(fs.readFileSync(PROC_MOUNTINFO_PATH, 'utf8'));\n } catch {\n // macOS/BSD: fall through to mount command\n }\n try {\n return parseMountCommandEntries(String(childProcess.execFileSync('mount', [])));\n } catch {\n return [];\n }\n}\n\nfunction isPathWithinMount(targetPath: string, mountPoint: string): boolean {\n const resolvedTarget = path.resolve(targetPath);\n const resolvedMountPoint = path.resolve(mountPoint);\n return (\n resolvedTarget === resolvedMountPoint ||\n resolvedMountPoint === path.parse(resolvedMountPoint).root ||\n resolvedTarget.startsWith(`${resolvedMountPoint}${path.sep}`)\n );\n}\n\nfunction isNfsMountType(fsType: string): boolean {\n return fsType.toLowerCase().startsWith('nfs');\n}\n\nfunction isNfsMountEntryPath(targetPath: string): boolean {\n const mountEntry = readMountEntries()\n .filter((entry) => isPathWithinMount(targetPath, entry.mountPoint))\n .toSorted((a, b) => b.mountPoint.length - a.mountPoint.length)[0];\n return mountEntry ? isNfsMountType(mountEntry.fsType) : false;\n}\n\nfunction isNfsBackedPath(targetPath: string): boolean {\n if (typeof fs.statfsSync !== 'function') {\n return isNfsMountEntryPath(targetPath);\n }\n const checkedPath = findExistingVolumePath(targetPath);\n if (!checkedPath) return false;\n try {\n if (fs.statfsSync(checkedPath).type === LINUX_NFS_SUPER_MAGIC) return true;\n } catch {\n return isNfsMountEntryPath(checkedPath);\n }\n return isNfsMountEntryPath(checkedPath);\n}\n\nfunction readJournalModeResult(row: unknown): string | null {\n if (!row || typeof row !== 'object') return null;\n const record = row as Record<string, unknown>;\n const value = record.journal_mode ?? Object.values(record)[0];\n return typeof value === 'string' ? value.toLowerCase() : null;\n}\n\nfunction requireRollbackJournalMode(db: DatabaseSync, dbPath: string): void {\n const row = db.prepare('PRAGMA journal_mode = DELETE;').get();\n const mode = readJournalModeResult(row);\n if (mode !== 'delete') {\n throw new Error(\n `xopc.db at ${dbPath} is on an NFS-backed volume but SQLite kept journal_mode=${mode ?? 'unknown'}. ` +\n `WAL mode is unsafe on NFS. Move ~/.xopc to a local filesystem, or set XOPC_STATE_DIR to a local path.`,\n );\n }\n}\n\n// ---------------------------------------------------------------------------\n// Unified PRAGMA + WAL configuration (openclaw parity)\n// ---------------------------------------------------------------------------\n\nfunction configureSqliteConnectionPragmas(\n db: DatabaseSync,\n options: SqliteConnectionPragmaOptions = {},\n): SqliteWalMaintenance {\n // Set busy_timeout before journal_mode to avoid lock-retry ordering issues\n const busyTimeoutMs = options.busyTimeoutMs ?? XOPC_SQLITE_BUSY_TIMEOUT_MS;\n db.exec(`PRAGMA busy_timeout = ${normalizeNonNegativeInteger(busyTimeoutMs, 'busyTimeoutMs')};`);\n\n // NFS detection: refuse WAL, force DELETE mode\n if (options.databasePath && isNfsBackedPath(options.databasePath)) {\n requireRollbackJournalMode(db, options.databasePath);\n // No WAL checkpoint timer needed on DELETE mode\n return { checkpoint: () => true, close: () => true };\n }\n\n // WAL setup\n db.exec('PRAGMA journal_mode = WAL;');\n const autoCheckpointPages = normalizeNonNegativeInteger(\n options.autoCheckpointPages ?? 1000,\n 'autoCheckpointPages',\n );\n db.exec(`PRAGMA wal_autocheckpoint = ${autoCheckpointPages};`);\n\n // Remaining pragmas in safe order\n if (options.synchronous) db.exec(`PRAGMA synchronous = ${options.synchronous};`);\n if (options.foreignKeys) db.exec('PRAGMA foreign_keys = ON;');\n\n // Periodic checkpoint timer\n const checkpointMode = options.checkpointMode ?? 'TRUNCATE';\n const periodicCheckpointMode = options.checkpointMode ?? 'PASSIVE';\n const checkpointIntervalMs = normalizeNonNegativeInteger(\n options.checkpointIntervalMs ?? 30 * 60 * 1000,\n 'checkpointIntervalMs',\n );\n\n const runCheckpoint = (mode: SqliteWalCheckpointMode): boolean => {\n try {\n db.exec(`PRAGMA wal_checkpoint(${mode});`);\n return true;\n } catch (error) {\n options.onCheckpointError?.(error);\n return false;\n }\n };\n\n let timer: IntervalHandle | null = null;\n if (checkpointIntervalMs > 0) {\n const timerIntervalMs = Math.min(checkpointIntervalMs, MAX_TIMER_TIMEOUT_MS);\n timer = setInterval(() => runCheckpoint(periodicCheckpointMode), timerIntervalMs) as IntervalHandle;\n timer.unref?.();\n }\n\n return {\n checkpoint: () => runCheckpoint(checkpointMode),\n close: () => {\n if (timer) { clearInterval(timer); timer = null; }\n return runCheckpoint(checkpointMode);\n },\n };\n}\n\n// ---------------------------------------------------------------------------\n// Database lifecycle\n// ---------------------------------------------------------------------------\n\nexport type XopcDatabase = {\n db: DatabaseSync;\n path: string;\n walMaintenance: SqliteWalMaintenance;\n};\n\nexport type OpenXopcDatabaseOptions = {\n path?: string;\n env?: NodeJS.ProcessEnv;\n};\n\nlet cachedDatabase: XopcDatabase | null = null;\n\nfunction ensureDatabasePermissions(pathname: string): void {\n const dir = pathname.slice(0, Math.max(pathname.lastIndexOf('/'), pathname.lastIndexOf('\\\\')));\n if (dir) {\n fs.mkdirSync(dir, { recursive: true });\n fs.chmodSync(dir, DB_DIR_MODE);\n }\n for (const suffix of DB_SIDECAR_SUFFIXES) {\n const candidate = `${pathname}${suffix}`;\n if (!fs.existsSync(candidate)) continue;\n fs.chmodSync(candidate, DB_FILE_MODE);\n }\n}\n\nfunction openDatabaseAtPath(pathname: string): XopcDatabase {\n installSqliteTransientRejectionHandler();\n ensureDatabasePermissions(pathname);\n\n const { DatabaseSync } = requireNodeSqlite();\n const db = new DatabaseSync(pathname);\n\n // Single call: busy_timeout (30s) → WAL/NFS detection → synchronous → foreign_keys → checkpoint timer\n const walMaintenance = configureSqliteConnectionPragmas(db, {\n databasePath: pathname,\n synchronous: 'NORMAL',\n foreignKeys: true,\n onCheckpointError: (error) => {\n const em = error instanceof Error ? error.message : String(error);\n log.warn({ err: error instanceof Error ? error : undefined, errorMessage: em }, `SQLite WAL checkpoint failed: ${em}`);\n },\n });\n\n ensureXopcDatabaseSchema(db);\n ensureDatabasePermissions(pathname);\n\n log.info({ path: pathname }, 'Opened xopc SQLite database');\n return { db, path: pathname, walMaintenance };\n}\n\nexport function openXopcDatabase(options: OpenXopcDatabaseOptions = {}): XopcDatabase {\n const env = options.env ?? process.env;\n const pathname = options.path ?? resolveXopcDatabasePath(env);\n\n if (cachedDatabase && cachedDatabase.path === pathname) {\n return cachedDatabase;\n }\n\n if (cachedDatabase) {\n closeXopcDatabase();\n }\n\n cachedDatabase = openDatabaseAtPath(pathname);\n return cachedDatabase;\n}\n\nexport function getXopcDatabase(): XopcDatabase {\n if (!cachedDatabase) {\n throw new Error('xopc SQLite database is not open; call openXopcDatabase() first');\n }\n return cachedDatabase;\n}\n\n/**\n * Ensure the xopc SQLite database is open and return it.\n * Opens with default path if not already open. Use this instead of\n * the repetitive `if (!isXopcDatabaseOpen()) { openXopcDatabase(); }` pattern.\n */\nexport function requireXopcDatabase(options?: OpenXopcDatabaseOptions): XopcDatabase {\n if (!cachedDatabase) {\n openXopcDatabase(options ?? {});\n }\n return cachedDatabase!;\n}\n\nexport function isXopcDatabaseOpen(): boolean {\n return cachedDatabase !== null;\n}\n\nexport function closeXopcDatabase(): void {\n if (!cachedDatabase) {\n return;\n }\n\n const { db, path, walMaintenance } = cachedDatabase;\n try {\n walMaintenance.close();\n } catch (error) {\n const em = error instanceof Error ? error.message : String(error);\n log.warn({ err: error instanceof Error ? error : undefined, errorMessage: em, path }, `SQLite close checkpoint failed: ${em}`);\n }\n\n try {\n db.close();\n } catch (error) {\n const em = error instanceof Error ? error.message : String(error);\n log.warn({ err: error instanceof Error ? error : undefined, errorMessage: em, path }, `SQLite database close failed: ${em}`);\n }\n\n cachedDatabase = null;\n log.debug({ path }, 'Closed xopc SQLite database');\n}\n\n/** Test-only: reset singleton without touching files on disk. */\nexport function resetXopcDatabaseSingletonForTest(): void {\n cachedDatabase = null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connector-repository.js","names":[],"sources":["../../../../src/storage/sqlite/connector-repository.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type {\n ConnectorActionMetadata,\n ConnectorApprovalRecord,\n ConnectorConnection,\n ConnectorDefinition,\n ConnectorExecutionAuditRecord,\n ConnectorInstallationPolicy,\n} from '../../connectors/types.js';\nimport { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';\n\ntype InstallationRow = {\n id: string;\n connector_id: string;\n principal_id: string;\n enabled: number;\n allowed_agent_ids_json: string;\n max_scope: ConnectorInstallationPolicy['maxScope'];\n confirmation_policy: ConnectorInstallationPolicy['confirmationPolicy'];\n selected_connection_ids_json: string;\n created_at: string;\n updated_at: string;\n};\n\ntype ConnectionRow = {\n id: string;\n installation_id: string | null;\n connector_id: string;\n provider: string;\n principal_id: string;\n provider_connection_id: string;\n alias: string | null;\n identity_json: string;\n status: ConnectorConnection['status'];\n is_default: number;\n connected_at: string | null;\n expires_at: string | null;\n last_error: string | null;\n metadata_json: string;\n created_at: string;\n updated_at: string;\n};\n\ntype ActionRow = {\n connector_id: string;\n action_id: string;\n toolkit: string | null;\n scope: ConnectorActionMetadata['scope'];\n curated: number;\n input_schema_json: string | null;\n schema_version: string | null;\n cached_at: string;\n};\n\ntype AuditRow = {\n id: string;\n installation_id: string | null;\n connection_id: string | null;\n connector_id: string;\n principal_id: string;\n agent_id: string | null;\n session_key: string | null;\n action_id: string;\n scope: ConnectorExecutionAuditRecord['scope'];\n decision: ConnectorExecutionAuditRecord['decision'];\n result_status: ConnectorExecutionAuditRecord['resultStatus'];\n duration_ms: number | null;\n error_code: string | null;\n created_at: string;\n};\n\ntype CatalogRow = {\n connector_id: string;\n provider: string;\n definition_json: string;\n fetched_at: string;\n expires_at: string | null;\n};\n\ntype ApprovalRow = {\n id: string;\n principal_id: string;\n connector_id: string;\n connection_id: string | null;\n agent_id: string | null;\n session_key: string | null;\n action_id: string;\n scope: ConnectorApprovalRecord['scope'];\n arguments_hash: string;\n arguments_preview_json: string;\n status: ConnectorApprovalRecord['status'];\n expires_at: string;\n created_at: string;\n decided_at: string | null;\n consumed_at: string | null;\n};\n\nexport type CachedConnectorCatalogEntry = {\n connectorId: string;\n provider: string;\n definition: ConnectorDefinition;\n fetchedAt: string;\n expiresAt?: string;\n};\n\nfunction parseStringArray(value: string): string[] {\n try {\n const parsed = JSON.parse(value);\n return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [];\n } catch {\n return [];\n }\n}\n\nfunction parseObject(value: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(value);\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed as Record<string, unknown>\n : {};\n } catch {\n return {};\n }\n}\n\nfunction installationFromRow(row: InstallationRow): ConnectorInstallationPolicy {\n return {\n id: row.id,\n connectorId: row.connector_id,\n principalId: row.principal_id,\n enabled: row.enabled === 1,\n allowedAgentIds: parseStringArray(row.allowed_agent_ids_json),\n maxScope: row.max_scope,\n confirmationPolicy: row.confirmation_policy,\n selectedConnectionIds: parseStringArray(row.selected_connection_ids_json),\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction connectionFromRow(row: ConnectionRow): ConnectorConnection {\n return {\n id: row.id,\n installationId: row.installation_id ?? undefined,\n connectorId: row.connector_id,\n provider: row.provider,\n principalId: row.principal_id,\n providerConnectionId: row.provider_connection_id,\n alias: row.alias ?? undefined,\n identity: parseObject(row.identity_json),\n status: row.status,\n isDefault: row.is_default === 1,\n connectedAt: row.connected_at ?? undefined,\n expiresAt: row.expires_at ?? undefined,\n lastError: row.last_error ?? undefined,\n metadata: parseObject(row.metadata_json),\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction actionFromRow(row: ActionRow): ConnectorActionMetadata {\n return {\n connectorId: row.connector_id,\n actionId: row.action_id,\n toolkit: row.toolkit ?? undefined,\n scope: row.scope,\n curated: row.curated === 1,\n inputSchema: row.input_schema_json == null ? undefined : JSON.parse(row.input_schema_json),\n schemaVersion: row.schema_version ?? undefined,\n cachedAt: row.cached_at,\n };\n}\n\nfunction auditFromRow(row: AuditRow): ConnectorExecutionAuditRecord {\n return {\n id: row.id,\n installationId: row.installation_id ?? undefined,\n connectionId: row.connection_id ?? undefined,\n connectorId: row.connector_id,\n principalId: row.principal_id,\n agentId: row.agent_id ?? undefined,\n sessionKey: row.session_key ?? undefined,\n actionId: row.action_id,\n scope: row.scope,\n decision: row.decision,\n resultStatus: row.result_status,\n durationMs: row.duration_ms ?? undefined,\n errorCode: row.error_code ?? undefined,\n createdAt: row.created_at,\n };\n}\n\nfunction catalogFromRow(row: CatalogRow): CachedConnectorCatalogEntry | undefined {\n try {\n const definition = JSON.parse(row.definition_json) as ConnectorDefinition;\n if (!definition || typeof definition !== 'object' || definition.id !== row.connector_id) return undefined;\n return {\n connectorId: row.connector_id,\n provider: row.provider,\n definition,\n fetchedAt: row.fetched_at,\n expiresAt: row.expires_at ?? undefined,\n };\n } catch {\n return undefined;\n }\n}\n\nfunction approvalFromRow(row: ApprovalRow): ConnectorApprovalRecord {\n return {\n id: row.id,\n principalId: row.principal_id,\n connectorId: row.connector_id,\n connectionId: row.connection_id ?? undefined,\n agentId: row.agent_id ?? undefined,\n sessionKey: row.session_key ?? undefined,\n actionId: row.action_id,\n scope: row.scope,\n argumentsHash: row.arguments_hash,\n argumentsPreview: parseObject(row.arguments_preview_json),\n status: row.status,\n expiresAt: row.expires_at,\n createdAt: row.created_at,\n decidedAt: row.decided_at ?? undefined,\n consumedAt: row.consumed_at ?? undefined,\n };\n}\n\nexport function createConnectorApproval(\n input: Omit<ConnectorApprovalRecord, 'id' | 'status' | 'createdAt'> & Partial<Pick<ConnectorApprovalRecord, 'id' | 'status' | 'createdAt'>>,\n): ConnectorApprovalRecord {\n const record: ConnectorApprovalRecord = {\n ...input,\n id: input.id ?? randomUUID(),\n status: input.status ?? 'pending',\n createdAt: input.createdAt ?? new Date().toISOString(),\n };\n runSqliteWriteTransaction((db) => {\n db.prepare(`\n INSERT INTO connector_approvals (\n id, principal_id, connector_id, connection_id, agent_id, session_key, action_id,\n scope, arguments_hash, arguments_preview_json, status, expires_at, created_at,\n decided_at, consumed_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `).run(\n record.id,\n record.principalId,\n record.connectorId,\n record.connectionId ?? null,\n record.agentId ?? null,\n record.sessionKey ?? null,\n record.actionId,\n record.scope,\n record.argumentsHash,\n JSON.stringify(record.argumentsPreview),\n record.status,\n record.expiresAt,\n record.createdAt,\n record.decidedAt ?? null,\n record.consumedAt ?? null,\n );\n });\n return record;\n}\n\nexport function getConnectorApproval(id: string): ConnectorApprovalRecord | undefined {\n const row = getSqliteDatabase().prepare('SELECT * FROM connector_approvals WHERE id = ?').get(id) as ApprovalRow | undefined;\n return row ? approvalFromRow(row) : undefined;\n}\n\nexport function listConnectorApprovals(options: {\n principalId?: string;\n sessionKey?: string;\n status?: ConnectorApprovalRecord['status'];\n limit?: number;\n} = {}): ConnectorApprovalRecord[] {\n const clauses: string[] = [];\n const values: Array<string | number> = [];\n if (options.principalId) {\n clauses.push('principal_id = ?');\n values.push(options.principalId);\n }\n if (options.sessionKey) {\n clauses.push('session_key = ?');\n values.push(options.sessionKey);\n }\n if (options.status) {\n clauses.push('status = ?');\n values.push(options.status);\n }\n const where = clauses.length > 0 ? ` WHERE ${clauses.join(' AND ')}` : '';\n values.push(Math.max(1, Math.min(options.limit ?? 100, 500)));\n const rows = getSqliteDatabase().prepare(\n `SELECT * FROM connector_approvals${where} ORDER BY created_at DESC, rowid DESC LIMIT ?`,\n ).all(...values) as ApprovalRow[];\n return rows.map(approvalFromRow);\n}\n\nexport function decideConnectorApproval(id: string, decision: 'approved' | 'denied', now = new Date()): ConnectorApprovalRecord | undefined {\n return runSqliteWriteTransaction((db) => {\n const current = db.prepare('SELECT * FROM connector_approvals WHERE id = ?').get(id) as ApprovalRow | undefined;\n if (!current) return undefined;\n if (current.status !== 'pending' || Date.parse(current.expires_at) <= now.getTime()) {\n if (current.status === 'pending') {\n db.prepare(\"UPDATE connector_approvals SET status = 'expired', decided_at = ? WHERE id = ?\")\n .run(now.toISOString(), id);\n }\n const updated = db.prepare('SELECT * FROM connector_approvals WHERE id = ?').get(id) as ApprovalRow;\n return approvalFromRow(updated);\n }\n db.prepare('UPDATE connector_approvals SET status = ?, decided_at = ? WHERE id = ?')\n .run(decision, now.toISOString(), id);\n const updated = db.prepare('SELECT * FROM connector_approvals WHERE id = ?').get(id) as ApprovalRow;\n return approvalFromRow(updated);\n });\n}\n\nexport function consumeConnectorApproval(id: string, argumentsHash: string, now = new Date()): ConnectorApprovalRecord | undefined {\n return runSqliteWriteTransaction((db) => {\n const current = db.prepare('SELECT * FROM connector_approvals WHERE id = ?').get(id) as ApprovalRow | undefined;\n if (!current || current.arguments_hash !== argumentsHash) return undefined;\n if (current.status !== 'approved' || Date.parse(current.expires_at) <= now.getTime()) {\n if (current.status === 'approved' && Date.parse(current.expires_at) <= now.getTime()) {\n db.prepare(\"UPDATE connector_approvals SET status = 'expired' WHERE id = ?\").run(id);\n }\n return undefined;\n }\n db.prepare(\"UPDATE connector_approvals SET status = 'consumed', consumed_at = ? WHERE id = ? AND status = 'approved'\")\n .run(now.toISOString(), id);\n const updated = db.prepare('SELECT * FROM connector_approvals WHERE id = ?').get(id) as ApprovalRow;\n return approvalFromRow(updated);\n });\n}\n\nexport function upsertConnectorCatalogEntry(input: CachedConnectorCatalogEntry): CachedConnectorCatalogEntry {\n runSqliteWriteTransaction((db) => {\n db.prepare(`\n INSERT INTO connector_catalog_entries (connector_id, provider, definition_json, fetched_at, expires_at)\n VALUES (?, ?, ?, ?, ?)\n ON CONFLICT(connector_id) DO UPDATE SET\n provider = excluded.provider,\n definition_json = excluded.definition_json,\n fetched_at = excluded.fetched_at,\n expires_at = excluded.expires_at\n `).run(\n input.connectorId,\n input.provider,\n JSON.stringify(input.definition),\n input.fetchedAt,\n input.expiresAt ?? null,\n );\n });\n return input;\n}\n\nexport function getCachedConnectorCatalogEntry(connectorId: string): CachedConnectorCatalogEntry | undefined {\n const row = getSqliteDatabase().prepare(\n 'SELECT * FROM connector_catalog_entries WHERE connector_id = ?',\n ).get(connectorId) as CatalogRow | undefined;\n return row ? catalogFromRow(row) : undefined;\n}\n\nexport function listCachedConnectorCatalogEntries(provider?: string): CachedConnectorCatalogEntry[] {\n const rows = (provider\n ? getSqliteDatabase().prepare('SELECT * FROM connector_catalog_entries WHERE provider = ? ORDER BY connector_id').all(provider)\n : getSqliteDatabase().prepare('SELECT * FROM connector_catalog_entries ORDER BY provider, connector_id').all()) as CatalogRow[];\n return rows.flatMap((row) => {\n const entry = catalogFromRow(row);\n return entry ? [entry] : [];\n });\n}\n\nexport function upsertConnectorInstallation(\n input: Omit<ConnectorInstallationPolicy, 'createdAt' | 'updatedAt'> & Partial<Pick<ConnectorInstallationPolicy, 'createdAt' | 'updatedAt'>>,\n): ConnectorInstallationPolicy {\n const now = new Date().toISOString();\n return runSqliteWriteTransaction((db) => {\n db.prepare(`\n INSERT INTO connector_installations (\n id, connector_id, principal_id, enabled, allowed_agent_ids_json, max_scope,\n confirmation_policy, selected_connection_ids_json, created_at, updated_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(id) DO UPDATE SET\n connector_id = excluded.connector_id,\n principal_id = excluded.principal_id,\n enabled = excluded.enabled,\n allowed_agent_ids_json = excluded.allowed_agent_ids_json,\n max_scope = excluded.max_scope,\n confirmation_policy = excluded.confirmation_policy,\n selected_connection_ids_json = excluded.selected_connection_ids_json,\n updated_at = excluded.updated_at\n `).run(\n input.id,\n input.connectorId,\n input.principalId,\n input.enabled ? 1 : 0,\n JSON.stringify(input.allowedAgentIds),\n input.maxScope,\n input.confirmationPolicy,\n JSON.stringify(input.selectedConnectionIds),\n input.createdAt ?? now,\n input.updatedAt ?? now,\n );\n return getConnectorInstallation(input.id)!;\n });\n}\n\nexport function getConnectorInstallation(id: string): ConnectorInstallationPolicy | undefined {\n const row = getSqliteDatabase().prepare('SELECT * FROM connector_installations WHERE id = ?').get(id) as InstallationRow | undefined;\n return row ? installationFromRow(row) : undefined;\n}\n\nexport function listConnectorInstallations(principalId?: string): ConnectorInstallationPolicy[] {\n const rows = (principalId\n ? getSqliteDatabase().prepare('SELECT * FROM connector_installations WHERE principal_id = ? ORDER BY connector_id').all(principalId)\n : getSqliteDatabase().prepare('SELECT * FROM connector_installations ORDER BY principal_id, connector_id').all()) as InstallationRow[];\n return rows.map(installationFromRow);\n}\n\nexport function deleteConnectorInstallation(id: string): boolean {\n return runSqliteWriteTransaction((db) => db.prepare('DELETE FROM connector_installations WHERE id = ?').run(id).changes > 0);\n}\n\nexport function upsertConnectorConnection(\n input: Omit<ConnectorConnection, 'createdAt' | 'updatedAt'> & Partial<Pick<ConnectorConnection, 'createdAt' | 'updatedAt'>>,\n): ConnectorConnection {\n const now = new Date().toISOString();\n return runSqliteWriteTransaction((db) => {\n if (input.isDefault) {\n db.prepare('UPDATE connector_connections SET is_default = 0 WHERE principal_id = ? AND connector_id = ? AND id <> ?')\n .run(input.principalId, input.connectorId, input.id);\n }\n db.prepare(`\n INSERT INTO connector_connections (\n id, installation_id, connector_id, provider, principal_id, provider_connection_id,\n alias, identity_json, status, is_default, connected_at, expires_at, last_error,\n metadata_json, created_at, updated_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(id) DO UPDATE SET\n installation_id = excluded.installation_id,\n connector_id = excluded.connector_id,\n provider = excluded.provider,\n principal_id = excluded.principal_id,\n provider_connection_id = excluded.provider_connection_id,\n alias = excluded.alias,\n identity_json = excluded.identity_json,\n status = excluded.status,\n is_default = excluded.is_default,\n connected_at = excluded.connected_at,\n expires_at = excluded.expires_at,\n last_error = excluded.last_error,\n metadata_json = excluded.metadata_json,\n updated_at = excluded.updated_at\n `).run(\n input.id,\n input.installationId ?? null,\n input.connectorId,\n input.provider,\n input.principalId,\n input.providerConnectionId,\n input.alias ?? null,\n JSON.stringify(input.identity),\n input.status,\n input.isDefault ? 1 : 0,\n input.connectedAt ?? null,\n input.expiresAt ?? null,\n input.lastError ?? null,\n JSON.stringify(input.metadata),\n input.createdAt ?? now,\n input.updatedAt ?? now,\n );\n return getConnectorConnection(input.id)!;\n });\n}\n\nexport function getConnectorConnection(id: string): ConnectorConnection | undefined {\n const row = getSqliteDatabase().prepare('SELECT * FROM connector_connections WHERE id = ?').get(id) as ConnectionRow | undefined;\n return row ? connectionFromRow(row) : undefined;\n}\n\nexport function listConnectorConnections(options: { principalId?: string; connectorId?: string } = {}): ConnectorConnection[] {\n const clauses: string[] = [];\n const values: string[] = [];\n if (options.principalId) {\n clauses.push('principal_id = ?');\n values.push(options.principalId);\n }\n if (options.connectorId) {\n clauses.push('connector_id = ?');\n values.push(options.connectorId);\n }\n const where = clauses.length > 0 ? ` WHERE ${clauses.join(' AND ')}` : '';\n const rows = getSqliteDatabase().prepare(`SELECT * FROM connector_connections${where} ORDER BY is_default DESC, updated_at DESC`).all(...values) as ConnectionRow[];\n return rows.map(connectionFromRow);\n}\n\nexport function deleteConnectorConnection(id: string): boolean {\n return runSqliteWriteTransaction((db) => db.prepare('DELETE FROM connector_connections WHERE id = ?').run(id).changes > 0);\n}\n\nexport function upsertConnectorActionMetadata(input: ConnectorActionMetadata): ConnectorActionMetadata {\n return runSqliteWriteTransaction((db) => {\n db.prepare(`\n INSERT INTO connector_action_metadata (\n connector_id, action_id, toolkit, scope, curated, input_schema_json, schema_version, cached_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(connector_id, action_id) DO UPDATE SET\n toolkit = excluded.toolkit,\n scope = excluded.scope,\n curated = excluded.curated,\n input_schema_json = excluded.input_schema_json,\n schema_version = excluded.schema_version,\n cached_at = excluded.cached_at\n `).run(\n input.connectorId,\n input.actionId,\n input.toolkit ?? null,\n input.scope,\n input.curated ? 1 : 0,\n input.inputSchema === undefined ? null : JSON.stringify(input.inputSchema),\n input.schemaVersion ?? null,\n input.cachedAt,\n );\n return input;\n });\n}\n\nexport function listConnectorActionMetadata(connectorId: string): ConnectorActionMetadata[] {\n const rows = getSqliteDatabase().prepare(\n 'SELECT * FROM connector_action_metadata WHERE connector_id = ? ORDER BY action_id',\n ).all(connectorId) as ActionRow[];\n return rows.map(actionFromRow);\n}\n\nexport function appendConnectorExecutionAudit(\n input: Omit<ConnectorExecutionAuditRecord, 'id' | 'createdAt'> & Partial<Pick<ConnectorExecutionAuditRecord, 'id' | 'createdAt'>>,\n): ConnectorExecutionAuditRecord {\n const record: ConnectorExecutionAuditRecord = {\n ...input,\n id: input.id ?? randomUUID(),\n createdAt: input.createdAt ?? new Date().toISOString(),\n };\n runSqliteWriteTransaction((db) => {\n db.prepare(`\n INSERT INTO connector_execution_audit (\n id, installation_id, connection_id, connector_id, principal_id, agent_id,\n session_key, action_id, scope, decision, result_status, duration_ms, error_code, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n `).run(\n record.id,\n record.installationId ?? null,\n record.connectionId ?? null,\n record.connectorId,\n record.principalId,\n record.agentId ?? null,\n record.sessionKey ?? null,\n record.actionId,\n record.scope,\n record.decision,\n record.resultStatus,\n record.durationMs ?? null,\n record.errorCode ?? null,\n record.createdAt,\n );\n });\n return record;\n}\n\nexport function listConnectorExecutionAudit(options: { principalId?: string; connectorId?: string; limit?: number } = {}): ConnectorExecutionAuditRecord[] {\n const clauses: string[] = [];\n const values: Array<string | number> = [];\n if (options.principalId) {\n clauses.push('principal_id = ?');\n values.push(options.principalId);\n }\n if (options.connectorId) {\n clauses.push('connector_id = ?');\n values.push(options.connectorId);\n }\n const where = clauses.length > 0 ? ` WHERE ${clauses.join(' AND ')}` : '';\n values.push(Math.max(1, Math.min(options.limit ?? 100, 500)));\n const rows = getSqliteDatabase().prepare(\n `SELECT * FROM connector_execution_audit${where} ORDER BY created_at DESC, rowid DESC LIMIT ?`,\n ).all(...values) as AuditRow[];\n return rows.map(auditFromRow);\n}\n\nexport function claimConnectorWebhookDelivery(input: {\n id: string;\n provider: string;\n payloadHash: string;\n now?: Date;\n leaseMs?: number;\n}): 'claimed' | 'processed' | 'in_flight' {\n const now = input.now ?? new Date();\n return runSqliteWriteTransaction((db) => {\n const current = db.prepare('SELECT status, processing_at, payload_hash FROM connector_webhook_deliveries WHERE id = ?')\n .get(input.id) as { status: string; processing_at: string | null; payload_hash: string } | undefined;\n if (!current) {\n db.prepare(`\n INSERT INTO connector_webhook_deliveries (\n id, provider, payload_hash, status, attempts, received_at, processing_at\n ) VALUES (?, ?, ?, 'processing', 1, ?, ?)\n `).run(input.id, input.provider, input.payloadHash, now.toISOString(), now.toISOString());\n return 'claimed';\n }\n if (current.payload_hash !== input.payloadHash) throw new Error('Webhook delivery id was reused with a different payload.');\n if (current.status === 'processed') return 'processed';\n const leaseMs = input.leaseMs ?? 5 * 60_000;\n if (current.status === 'processing' && current.processing_at && Date.parse(current.processing_at) + leaseMs > now.getTime()) {\n return 'in_flight';\n }\n db.prepare(`\n UPDATE connector_webhook_deliveries\n SET status = 'processing', attempts = attempts + 1, processing_at = ?, last_error = NULL\n WHERE id = ?\n `).run(now.toISOString(), input.id);\n return 'claimed';\n });\n}\n\nexport function completeConnectorWebhookDelivery(id: string, now = new Date()): void {\n runSqliteWriteTransaction((db) => {\n db.prepare(`\n UPDATE connector_webhook_deliveries\n SET status = 'processed', processed_at = ?, processing_at = NULL, last_error = NULL\n WHERE id = ?\n `).run(now.toISOString(), id);\n });\n}\n\nexport function releaseConnectorWebhookDelivery(id: string, error: unknown): void {\n const message = error instanceof Error ? error.message : String(error);\n runSqliteWriteTransaction((db) => {\n db.prepare(`\n UPDATE connector_webhook_deliveries\n SET status = 'pending', processing_at = NULL, last_error = ?\n WHERE id = ? AND status = 'processing'\n `).run(message.slice(0, 500), id);\n });\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fts.js","names":[],"sources":["../../../../src/storage/sqlite/fts.ts"],"sourcesContent":["/** Quote a user query for FTS5 phrase/prefix-safe matching. */\nexport function escapeFts5Query(raw: string): string {\n const trimmed = raw.trim();\n if (!trimmed) {\n return '';\n }\n return `\"${trimmed.replace(/\"/g, '\"\"')}\"`;\n}\n\nconst FTS_SEARCH_STOP_WORDS = new Set([\n 'a', 'an', 'and', 'are', 'can', 'did', 'do', 'does', 'for', 'how', 'i', 'in', 'is',\n 'it', 'me', 'my', 'of', 'on', 'or', 'the', 'to', 'was', 'what', 'when', 'where',\n 'which', 'who', 'why', 'with', 'you', 'your',\n]);\n\n/** Build a syntax-safe, recall-oriented query for natural-language memory search. */\nexport function buildFts5SearchQuery(raw: string): string {\n const terms = raw\n .normalize('NFKC')\n .match(/[\\p{L}\\p{N}_]+/gu)\n ?.map((term) => term.toLocaleLowerCase())\n .filter((term) => term.length > 1 && !FTS_SEARCH_STOP_WORDS.has(term));\n if (!terms?.length) return escapeFts5Query(raw);\n return [...new Set(terms)]\n .slice(0, 12)\n .map((term) => escapeFts5Query(term))\n .join(' OR ');\n}\n\n/** Normalize FTS5 BM25 ranks, where a more-negative rank is a better match. */\nexport function fts5RankToScore(rank: number, bestRank: number, worstRank: number): number {\n if (![rank, bestRank, worstRank].every(Number.isFinite)) return 0;\n if (bestRank === worstRank) return 0.75;\n const normalized = (worstRank - rank) / (worstRank - bestRank);\n return 0.5 + 0.5 * Math.max(0, Math.min(1, normalized));\n}\n\nfunction lexicalFeatures(raw: string): Set<string> {\n const normalized = raw.normalize('NFKC').toLocaleLowerCase();\n const features = new Set<string>();\n for (const term of normalized.match(/[\\p{L}\\p{N}_]+/gu) ?? []) {\n if (term.length > 1 && !FTS_SEARCH_STOP_WORDS.has(term)) features.add(`word:${term}`);\n }\n for (const sequence of normalized.match(/\\p{Script=Han}+/gu) ?? []) {\n const chars = [...sequence];\n for (let index = 0; index < chars.length - 1; index += 1) {\n features.add(`han:${chars[index]}${chars[index + 1]}`);\n }\n }\n return features;\n}\n\n/** Bounded lexical fallback for reformulations unsupported by unicode61 tokenization. */\nexport function memoryLexicalSimilarity(query: string, content: string): number {\n const queryFeatures = lexicalFeatures(query);\n const contentFeatures = lexicalFeatures(content);\n if (queryFeatures.size === 0 || contentFeatures.size === 0) return 0;\n let shared = 0;\n for (const feature of queryFeatures) {\n if (contentFeatures.has(feature)) shared += 1;\n }\n return (2 * shared) / (queryFeatures.size + contentFeatures.size);\n}\n"],"mappings":";;AACA,SAAgB,gBAAgB,KAAqB;CACnD,MAAM,UAAU,IAAI,MAAM;AAC1B,KAAI,CAAC,QACH,QAAO;AAET,QAAO,IAAI,QAAQ,QAAQ,MAAM,OAAK,CAAC;;AAGzC,MAAM,wBAAwB,IAAI,IAAI;CACpC;CAAK;CAAM;CAAO;CAAO;CAAO;CAAO;CAAM;CAAQ;CAAO;CAAO;CAAK;CAAM;CAC9E;CAAM;CAAM;CAAM;CAAM;CAAM;CAAM;CAAO;CAAM;CAAO;CAAQ;CAAQ;CACxE;CAAS;CAAO;CAAO;CAAQ;CAAO;CACvC,CAAC;;AAGF,SAAgB,qBAAqB,KAAqB;CACxD,MAAM,QAAQ,IACX,UAAU,OAAO,CACjB,MAAM,mBAAmB,EACxB,KAAK,SAAS,KAAK,mBAAmB,CAAC,CACxC,QAAQ,SAAS,KAAK,SAAS,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAC;AACxE,KAAI,CAAC,OAAO,OAAQ,QAAO,gBAAgB,IAAI;AAC/C,QAAO,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,CACvB,MAAM,GAAG,GAAG,CACZ,KAAK,SAAS,gBAAgB,KAAK,CAAC,CACpC,KAAK,OAAO;;;AAIjB,SAAgB,gBAAgB,MAAc,UAAkB,WAA2B;AACzF,KAAI,CAAC;EAAC;EAAM;EAAU;EAAU,CAAC,MAAM,OAAO,SAAS,CAAE,QAAO;AAChE,KAAI,aAAa,UAAW,QAAO;CACnC,MAAM,cAAc,YAAY,SAAS,YAAY;AACrD,QAAO,KAAM,KAAM,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,WAAW,CAAC;;AAGzD,SAAS,gBAAgB,KAA0B;CACjD,MAAM,aAAa,IAAI,UAAU,OAAO,CAAC,mBAAmB;CAC5D,MAAM,2BAAW,IAAI,KAAa;AAClC,MAAK,MAAM,QAAQ,WAAW,MAAM,mBAAmB,IAAI,EAAE,CAC3D,KAAI,KAAK,SAAS,KAAK,CAAC,sBAAsB,IAAI,KAAK,CAAE,UAAS,IAAI,QAAQ,OAAO;AAEvF,MAAK,MAAM,YAAY,WAAW,MAAM,oBAAoB,IAAI,EAAE,EAAE;EAClE,MAAM,QAAQ,CAAC,GAAG,SAAS;AAC3B,OAAK,IAAI,QAAQ,GAAG,QAAQ,MAAM,SAAS,GAAG,SAAS,EACrD,UAAS,IAAI,OAAO,MAAM,SAAS,MAAM,QAAQ,KAAK;;AAG1D,QAAO;;;AAIT,SAAgB,wBAAwB,OAAe,SAAyB;CAC9E,MAAM,gBAAgB,gBAAgB,MAAM;CAC5C,MAAM,kBAAkB,gBAAgB,QAAQ;AAChD,KAAI,cAAc,SAAS,KAAK,gBAAgB,SAAS,EAAG,QAAO;CACnE,IAAI,SAAS;AACb,MAAK,MAAM,WAAW,cACpB,KAAI,gBAAgB,IAAI,QAAQ,CAAE,WAAU;AAE9C,QAAQ,IAAI,UAAW,cAAc,OAAO,gBAAgB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge-repository.js","names":[],"sources":["../../../../src/storage/sqlite/knowledge-repository.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type {\n KnowledgeSourceChange,\n KnowledgeSourceItem,\n KnowledgeSourceItemInput,\n KnowledgeSyncRun,\n KnowledgeSyncRunStatus,\n KnowledgeSynthesisPipeline,\n KnowledgeSynthesisStatus,\n} from '../../knowledge/types.js';\nimport type { MemoryEvidence, MemoryEvidenceRelation } from '../../agent/memory/types.js';\nimport { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';\n\ntype KnowledgeSourceItemRow = {\n item_id: string;\n source_instance_id: string;\n external_id: string;\n item_type: string;\n author_role: string | null;\n occurred_at: number | null;\n source_updated_at: number | null;\n content_hash: string;\n normalized_text: string | null;\n payload_ref: string | null;\n metadata_json: string;\n sensitivity: string;\n retention_class: string;\n synthesis_pipeline: string;\n synthesis_status: string;\n synthesis_attempts: number;\n synthesis_claimed_at: number | null;\n synthesis_claimed_by: string | null;\n synthesis_error: string | null;\n deleted_at: number | null;\n created_at: number;\n updated_at: number;\n};\n\ntype KnowledgeSourceChangeRow = {\n sequence: number;\n change_id: string;\n source_instance_id: string;\n source_item_id: string;\n change_kind: string;\n old_hash: string | null;\n new_hash: string | null;\n changed_at: number;\n};\n\ntype KnowledgeSyncRunRow = {\n run_id: string;\n source_instance_id: string;\n status: string;\n cursor_before: string | null;\n cursor_after: string | null;\n items_seen: number;\n items_created: number;\n items_updated: number;\n warnings_json: string;\n error: string | null;\n started_at: number;\n finished_at: number | null;\n};\n\ntype MemoryEvidenceRow = {\n evidence_id: string;\n record_id: string;\n source_item_id: string | null;\n relation: string;\n excerpt: string | null;\n confidence: number | null;\n observed_at: number | null;\n created_at: number;\n};\n\nfunction parseTimestamp(value: string | undefined): number | null {\n if (!value) return null;\n const parsed = Date.parse(value);\n return Number.isFinite(parsed) ? parsed : null;\n}\n\nfunction timestampToIso(value: number | null): string | undefined {\n return value == null ? undefined : new Date(value).toISOString();\n}\n\nfunction parseRecord(json: string): Record<string, unknown> {\n try {\n const parsed = JSON.parse(json) as unknown;\n return parsed && typeof parsed === 'object' && !Array.isArray(parsed)\n ? parsed as Record<string, unknown>\n : {};\n } catch {\n return {};\n }\n}\n\nfunction parseStrings(json: string): string[] {\n try {\n const parsed = JSON.parse(json) as unknown;\n return Array.isArray(parsed) ? parsed.filter((item): item is string => typeof item === 'string') : [];\n } catch {\n return [];\n }\n}\n\nfunction sourceItemFromRow(row: KnowledgeSourceItemRow): KnowledgeSourceItem {\n return {\n id: row.item_id,\n sourceInstanceId: row.source_instance_id,\n externalId: row.external_id,\n itemType: row.item_type,\n ...(row.author_role ? { authorRole: row.author_role as KnowledgeSourceItem['authorRole'] } : {}),\n ...(timestampToIso(row.occurred_at) ? { occurredAt: timestampToIso(row.occurred_at) } : {}),\n ...(timestampToIso(row.source_updated_at) ? { sourceUpdatedAt: timestampToIso(row.source_updated_at) } : {}),\n contentHash: row.content_hash,\n ...(row.normalized_text ? { normalizedText: row.normalized_text } : {}),\n ...(row.payload_ref ? { payloadRef: row.payload_ref } : {}),\n metadata: parseRecord(row.metadata_json),\n sensitivity: row.sensitivity as KnowledgeSourceItem['sensitivity'],\n retentionClass: row.retention_class as KnowledgeSourceItem['retentionClass'],\n synthesisPipeline: row.synthesis_pipeline as KnowledgeSourceItem['synthesisPipeline'],\n synthesisStatus: row.synthesis_status as KnowledgeSourceItem['synthesisStatus'],\n synthesisAttempts: row.synthesis_attempts,\n ...(timestampToIso(row.synthesis_claimed_at) ? { synthesisClaimedAt: timestampToIso(row.synthesis_claimed_at) } : {}),\n ...(row.synthesis_claimed_by ? { synthesisClaimedBy: row.synthesis_claimed_by } : {}),\n ...(row.synthesis_error ? { synthesisError: row.synthesis_error } : {}),\n ...(timestampToIso(row.deleted_at) ? { deletedAt: timestampToIso(row.deleted_at) } : {}),\n createdAt: new Date(row.created_at).toISOString(),\n updatedAt: new Date(row.updated_at).toISOString(),\n };\n}\n\nfunction sourceChangeFromRow(row: KnowledgeSourceChangeRow): KnowledgeSourceChange {\n return {\n sequence: row.sequence,\n id: row.change_id,\n sourceInstanceId: row.source_instance_id,\n sourceItemId: row.source_item_id,\n kind: row.change_kind as KnowledgeSourceChange['kind'],\n ...(row.old_hash ? { oldHash: row.old_hash } : {}),\n ...(row.new_hash ? { newHash: row.new_hash } : {}),\n changedAt: new Date(row.changed_at).toISOString(),\n };\n}\n\nfunction syncRunFromRow(row: KnowledgeSyncRunRow): KnowledgeSyncRun {\n return {\n id: row.run_id,\n sourceInstanceId: row.source_instance_id,\n status: row.status as KnowledgeSyncRunStatus,\n ...(row.cursor_before ? { cursorBefore: row.cursor_before } : {}),\n ...(row.cursor_after ? { cursorAfter: row.cursor_after } : {}),\n itemsSeen: row.items_seen,\n itemsCreated: row.items_created,\n itemsUpdated: row.items_updated,\n warnings: parseStrings(row.warnings_json),\n ...(row.error ? { error: row.error } : {}),\n startedAt: new Date(row.started_at).toISOString(),\n ...(timestampToIso(row.finished_at) ? { finishedAt: timestampToIso(row.finished_at) } : {}),\n };\n}\n\nexport function startKnowledgeSyncRun(input: {\n sourceInstanceId: string;\n cursorBefore?: string;\n nowMs?: number;\n}): KnowledgeSyncRun {\n const id = randomUUID();\n const now = input.nowMs ?? Date.now();\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO knowledge_sync_runs (\n run_id, source_instance_id, status, cursor_before, started_at\n ) VALUES (?, ?, 'running', ?, ?)`,\n ).run(id, input.sourceInstanceId, input.cursorBefore ?? null, now);\n });\n return {\n id,\n sourceInstanceId: input.sourceInstanceId,\n status: 'running',\n ...(input.cursorBefore ? { cursorBefore: input.cursorBefore } : {}),\n itemsSeen: 0,\n itemsCreated: 0,\n itemsUpdated: 0,\n warnings: [],\n startedAt: new Date(now).toISOString(),\n };\n}\n\nexport function finishKnowledgeSyncRun(input: {\n runId: string;\n status: Exclude<KnowledgeSyncRunStatus, 'running'>;\n cursorAfter?: string;\n itemsSeen?: number;\n itemsCreated?: number;\n itemsUpdated?: number;\n warnings?: string[];\n error?: string;\n nowMs?: number;\n}): KnowledgeSyncRun {\n const now = input.nowMs ?? Date.now();\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `UPDATE knowledge_sync_runs SET\n status = ?, cursor_after = ?, items_seen = ?, items_created = ?,\n items_updated = ?, warnings_json = ?, error = ?, finished_at = ?\n WHERE run_id = ?`,\n ).run(\n input.status,\n input.cursorAfter ?? null,\n input.itemsSeen ?? 0,\n input.itemsCreated ?? 0,\n input.itemsUpdated ?? 0,\n JSON.stringify(input.warnings ?? []),\n input.error ?? null,\n now,\n input.runId,\n );\n });\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM knowledge_sync_runs WHERE run_id = ?`)\n .get(input.runId) as KnowledgeSyncRunRow | undefined;\n if (!row) throw new Error(`Knowledge sync run not found: ${input.runId}`);\n return syncRunFromRow(row);\n}\n\nexport function listKnowledgeSyncRuns(options: {\n sourceInstanceId?: string;\n status?: KnowledgeSyncRunStatus;\n limit?: number;\n} = {}): KnowledgeSyncRun[] {\n const where: string[] = [];\n const params: Array<string | number> = [];\n if (options.sourceInstanceId) {\n where.push('source_instance_id = ?');\n params.push(options.sourceInstanceId);\n }\n if (options.status) {\n where.push('status = ?');\n params.push(options.status);\n }\n const limit = Math.max(1, Math.min(500, options.limit ?? 100));\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT * FROM knowledge_sync_runs\n ${where.length > 0 ? `WHERE ${where.join(' AND ')}` : ''}\n ORDER BY started_at DESC LIMIT ?`,\n )\n .all(...params, limit) as KnowledgeSyncRunRow[];\n return rows.map(syncRunFromRow);\n}\n\nexport function getKnowledgeSourceCursor(sourceInstanceId: string): string | undefined {\n const row = getSqliteDatabase()\n .prepare(`SELECT cursor FROM knowledge_source_state WHERE source_instance_id = ?`)\n .get(sourceInstanceId) as { cursor: string | null } | undefined;\n return row?.cursor ?? undefined;\n}\n\nexport function setKnowledgeSourceCursor(sourceInstanceId: string, cursor: string | undefined): void {\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO knowledge_source_state (source_instance_id, cursor, updated_at)\n VALUES (?, ?, ?)\n ON CONFLICT(source_instance_id) DO UPDATE SET\n cursor = excluded.cursor,\n updated_at = excluded.updated_at`,\n ).run(sourceInstanceId, cursor ?? null, Date.now());\n });\n}\n\nexport function upsertKnowledgeSourceItems(\n inputs: KnowledgeSourceItemInput[],\n nowMs = Date.now(),\n): { items: KnowledgeSourceItem[]; created: number; updated: number; unchanged: number } {\n return runSqliteWriteTransaction((db) => {\n const items: KnowledgeSourceItem[] = [];\n let created = 0;\n let updated = 0;\n let unchanged = 0;\n for (const input of inputs) {\n const existing = db.prepare(\n `SELECT * FROM knowledge_source_items\n WHERE source_instance_id = ? AND external_id = ?`,\n ).get(input.sourceInstanceId, input.externalId) as KnowledgeSourceItemRow | undefined;\n const id = existing?.item_id ?? input.id ?? randomUUID();\n if (existing?.content_hash === input.contentHash && existing.deleted_at === parseTimestamp(input.deletedAt)) {\n unchanged += 1;\n items.push(sourceItemFromRow(existing));\n continue;\n }\n db.prepare(\n `INSERT INTO knowledge_source_items (\n item_id, source_instance_id, external_id, item_type, author_role,\n occurred_at, source_updated_at, content_hash, normalized_text,\n payload_ref, metadata_json, sensitivity, retention_class,\n synthesis_pipeline, synthesis_status, deleted_at, created_at, updated_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(source_instance_id, external_id) DO UPDATE SET\n item_type = excluded.item_type,\n author_role = excluded.author_role,\n occurred_at = excluded.occurred_at,\n source_updated_at = excluded.source_updated_at,\n content_hash = excluded.content_hash,\n normalized_text = excluded.normalized_text,\n payload_ref = excluded.payload_ref,\n metadata_json = excluded.metadata_json,\n sensitivity = excluded.sensitivity,\n retention_class = excluded.retention_class,\n synthesis_pipeline = excluded.synthesis_pipeline,\n synthesis_status = excluded.synthesis_status,\n synthesis_attempts = 0,\n synthesis_claimed_at = NULL,\n synthesis_claimed_by = NULL,\n synthesis_error = NULL,\n deleted_at = excluded.deleted_at,\n updated_at = excluded.updated_at`,\n ).run(\n id,\n input.sourceInstanceId,\n input.externalId,\n input.itemType,\n input.authorRole ?? null,\n parseTimestamp(input.occurredAt),\n parseTimestamp(input.sourceUpdatedAt),\n input.contentHash,\n input.normalizedText ?? null,\n input.payloadRef ?? null,\n JSON.stringify(input.metadata ?? {}),\n input.sensitivity ?? 'normal',\n input.retentionClass ?? 'bounded',\n input.synthesisPipeline ?? 'user_understanding',\n input.synthesisStatus ?? 'pending',\n parseTimestamp(input.deletedAt),\n existing?.created_at ?? nowMs,\n nowMs,\n );\n const row = db.prepare(`SELECT * FROM knowledge_source_items WHERE item_id = ?`).get(id) as KnowledgeSourceItemRow;\n items.push(sourceItemFromRow(row));\n const changeKind = input.deletedAt ? 'deleted' : existing ? 'modified' : 'added';\n db.prepare(\n `INSERT INTO knowledge_source_changes (\n change_id, source_instance_id, source_item_id, change_kind,\n old_hash, new_hash, changed_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?)`,\n ).run(\n randomUUID(),\n input.sourceInstanceId,\n id,\n changeKind,\n existing?.content_hash ?? null,\n input.deletedAt ? null : input.contentHash,\n nowMs,\n );\n if (existing) updated += 1;\n else created += 1;\n }\n return { items, created, updated, unchanged };\n });\n}\n\nexport function getKnowledgeSourceItem(itemId: string): KnowledgeSourceItem | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM knowledge_source_items WHERE item_id = ?`)\n .get(itemId) as KnowledgeSourceItemRow | undefined;\n return row ? sourceItemFromRow(row) : null;\n}\n\nexport function listKnowledgeSourceChanges(options: {\n sourceInstanceId?: string;\n afterSequence?: number;\n limit?: number;\n} = {}): KnowledgeSourceChange[] {\n const where: string[] = [];\n const params: Array<string | number> = [];\n if (options.sourceInstanceId) {\n where.push('source_instance_id = ?');\n params.push(options.sourceInstanceId);\n }\n if (options.afterSequence != null) {\n where.push('sequence > ?');\n params.push(Math.max(0, options.afterSequence));\n }\n const limit = Math.max(1, Math.min(1_000, options.limit ?? 100));\n const rows = getSqliteDatabase().prepare(\n `SELECT * FROM knowledge_source_changes\n ${where.length > 0 ? `WHERE ${where.join(' AND ')}` : ''}\n ORDER BY sequence ASC LIMIT ?`,\n ).all(...params, limit) as KnowledgeSourceChangeRow[];\n return rows.map(sourceChangeFromRow);\n}\n\nexport function getKnowledgeConsumerWatermark(consumerId: string, sourceInstanceId: string): number {\n const row = getSqliteDatabase().prepare(\n `SELECT last_sequence FROM knowledge_consumer_watermarks\n WHERE consumer_id = ? AND source_instance_id = ?`,\n ).get(consumerId, sourceInstanceId) as { last_sequence: number } | undefined;\n return row?.last_sequence ?? 0;\n}\n\nexport function setKnowledgeConsumerWatermark(\n consumerId: string,\n sourceInstanceId: string,\n sequence: number,\n nowMs = Date.now(),\n): void {\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO knowledge_consumer_watermarks (\n consumer_id, source_instance_id, last_sequence, updated_at\n ) VALUES (?, ?, ?, ?)\n ON CONFLICT(consumer_id, source_instance_id) DO UPDATE SET\n last_sequence = MAX(last_sequence, excluded.last_sequence),\n updated_at = excluded.updated_at`,\n ).run(consumerId, sourceInstanceId, Math.max(0, sequence), nowMs);\n });\n}\n\nexport function listKnowledgeSourceItems(options: {\n sourceInstanceId?: string;\n synthesisStatus?: KnowledgeSynthesisStatus;\n includeDeleted?: boolean;\n limit?: number;\n offset?: number;\n} = {}): KnowledgeSourceItem[] {\n const where: string[] = [];\n const params: Array<string | number> = [];\n if (options.sourceInstanceId) {\n where.push('source_instance_id = ?');\n params.push(options.sourceInstanceId);\n }\n if (options.synthesisStatus) {\n where.push('synthesis_status = ?');\n params.push(options.synthesisStatus);\n }\n if (!options.includeDeleted) where.push('deleted_at IS NULL');\n const limit = Math.max(1, Math.min(500, options.limit ?? 100));\n const offset = Math.max(0, options.offset ?? 0);\n const rows = getSqliteDatabase()\n .prepare(\n `SELECT * FROM knowledge_source_items\n ${where.length > 0 ? `WHERE ${where.join(' AND ')}` : ''}\n ORDER BY COALESCE(source_updated_at, occurred_at, updated_at) DESC\n LIMIT ? OFFSET ?`,\n )\n .all(...params, limit, offset) as KnowledgeSourceItemRow[];\n return rows.map(sourceItemFromRow);\n}\n\nexport function setKnowledgeSourceItemSynthesisStatus(\n itemIds: string[],\n status: KnowledgeSynthesisStatus,\n nowMs = Date.now(),\n): number {\n if (itemIds.length === 0) return 0;\n return runSqliteWriteTransaction((db) => {\n const placeholders = itemIds.map(() => '?').join(', ');\n const result = db.prepare(\n `UPDATE knowledge_source_items SET synthesis_status = ?, updated_at = ?\n WHERE item_id IN (${placeholders})`,\n ).run(status, nowMs, ...itemIds);\n return Number(result.changes);\n });\n}\n\nexport function claimKnowledgeSourceItems(options: {\n workerId: string;\n sourceInstanceId?: string;\n synthesisPipeline?: KnowledgeSynthesisPipeline;\n limit?: number;\n leaseMs?: number;\n retryDelayMs?: number;\n maxAttempts?: number;\n nowMs?: number;\n}): KnowledgeSourceItem[] {\n const now = options.nowMs ?? Date.now();\n const leaseCutoff = now - Math.max(1_000, options.leaseMs ?? 5 * 60_000);\n const retryCutoff = now - Math.max(1_000, options.retryDelayMs ?? 30_000);\n const limit = Math.max(1, Math.min(100, options.limit ?? 20));\n const maxAttempts = Math.max(1, options.maxAttempts ?? 3);\n return runSqliteWriteTransaction((db) => {\n const rows = db.prepare(\n `SELECT * FROM knowledge_source_items\n WHERE synthesis_attempts < ?\n ${options.sourceInstanceId ? 'AND source_instance_id = ?' : ''}\n ${options.synthesisPipeline ? 'AND synthesis_pipeline = ?' : ''}\n AND (\n synthesis_status = 'pending'\n OR (synthesis_status = 'failed' AND updated_at < ?)\n OR (synthesis_status = 'processing' AND synthesis_claimed_at < ?)\n )\n ORDER BY COALESCE(source_updated_at, occurred_at, updated_at) ASC\n LIMIT ?`,\n ).all(\n maxAttempts,\n ...(options.sourceInstanceId ? [options.sourceInstanceId] : []),\n ...(options.synthesisPipeline ? [options.synthesisPipeline] : []),\n retryCutoff,\n leaseCutoff,\n limit,\n ) as KnowledgeSourceItemRow[];\n if (rows.length === 0) return [];\n const ids = rows.map((row) => row.item_id);\n const placeholders = ids.map(() => '?').join(', ');\n db.prepare(\n `UPDATE knowledge_source_items SET\n synthesis_status = 'processing',\n synthesis_attempts = synthesis_attempts + 1,\n synthesis_claimed_at = ?,\n synthesis_claimed_by = ?,\n synthesis_error = NULL,\n updated_at = ?\n WHERE item_id IN (${placeholders})`,\n ).run(now, options.workerId, now, ...ids);\n const claimed = db.prepare(\n `SELECT * FROM knowledge_source_items WHERE item_id IN (${placeholders})`,\n ).all(...ids) as KnowledgeSourceItemRow[];\n return claimed.map(sourceItemFromRow);\n });\n}\n\nexport function completeKnowledgeSourceItemSynthesis(input: {\n itemId: string;\n workerId: string;\n status: 'completed' | 'failed' | 'ignored';\n error?: string;\n nowMs?: number;\n}): boolean {\n const now = input.nowMs ?? Date.now();\n return runSqliteWriteTransaction((db) => {\n const result = db.prepare(\n `UPDATE knowledge_source_items SET\n synthesis_status = ?,\n synthesis_claimed_at = NULL,\n synthesis_claimed_by = NULL,\n synthesis_error = ?,\n updated_at = ?\n WHERE item_id = ? AND synthesis_status = 'processing' AND synthesis_claimed_by = ?`,\n ).run(input.status, input.error ?? null, now, input.itemId, input.workerId);\n return Number(result.changes) > 0;\n });\n}\n\nexport function attachMemoryEvidence(input: {\n recordId: string;\n sourceItemId?: string;\n relation?: MemoryEvidenceRelation;\n excerpt?: string;\n confidence?: number;\n observedAt?: string;\n nowMs?: number;\n}): MemoryEvidence {\n let evidenceId: string = randomUUID();\n const now = input.nowMs ?? Date.now();\n const observedAt = parseTimestamp(input.observedAt);\n runSqliteWriteTransaction((db) => {\n db.prepare(\n `INSERT INTO memory_evidence (\n evidence_id, record_id, source_item_id, relation, excerpt,\n confidence, observed_at, created_at\n ) VALUES (?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT DO UPDATE SET\n excerpt = COALESCE(excluded.excerpt, memory_evidence.excerpt),\n confidence = MAX(COALESCE(memory_evidence.confidence, 0), COALESCE(excluded.confidence, 0)),\n observed_at = MAX(COALESCE(memory_evidence.observed_at, 0), COALESCE(excluded.observed_at, 0))`,\n ).run(\n evidenceId,\n input.recordId,\n input.sourceItemId ?? null,\n input.relation ?? 'supports',\n input.excerpt ?? null,\n input.confidence ?? null,\n observedAt,\n now,\n );\n if (input.sourceItemId) {\n const stored = db.prepare(\n `SELECT evidence_id FROM memory_evidence\n WHERE record_id = ? AND source_item_id = ? AND relation = ?`,\n ).get(input.recordId, input.sourceItemId, input.relation ?? 'supports') as { evidence_id: string } | undefined;\n evidenceId = stored?.evidence_id ?? evidenceId;\n }\n });\n return {\n evidenceId,\n ...(input.sourceItemId ? { sourceItemId: input.sourceItemId } : {}),\n relation: input.relation ?? 'supports',\n ...(input.excerpt ? { sourceText: input.excerpt } : {}),\n ...(input.confidence != null ? { confidence: input.confidence } : {}),\n ...(observedAt != null ? { observedAt: new Date(observedAt).toISOString() } : {}),\n };\n}\n\nexport function deleteMemoryEvidenceForRecord(\n recordId: string,\n relation?: MemoryEvidenceRelation,\n): number {\n return runSqliteWriteTransaction((db) => {\n const result = relation\n ? db.prepare(`DELETE FROM memory_evidence WHERE record_id = ? AND relation = ?`).run(recordId, relation)\n : db.prepare(`DELETE FROM memory_evidence WHERE record_id = ?`).run(recordId);\n return Number(result.changes);\n });\n}\n\nexport function listMemoryEvidence(recordId: string): MemoryEvidence[] {\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM memory_evidence WHERE record_id = ? ORDER BY created_at ASC`)\n .all(recordId) as MemoryEvidenceRow[];\n return rows.map((row) => ({\n evidenceId: row.evidence_id,\n ...(row.source_item_id ? { sourceItemId: row.source_item_id } : {}),\n relation: row.relation as MemoryEvidenceRelation,\n ...(row.excerpt ? { sourceText: row.excerpt } : {}),\n ...(row.confidence != null ? { confidence: row.confidence } : {}),\n ...(timestampToIso(row.observed_at) ? { observedAt: timestampToIso(row.observed_at) } : {}),\n }));\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory-index-repository.js","names":[],"sources":["../../../../src/storage/sqlite/memory-index-repository.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\nimport { existsSync, readFileSync, statSync } from 'node:fs';\nimport { join, relative } from 'node:path';\n\nimport { buildFts5SearchQuery, fts5RankToScore, memoryLexicalSimilarity } from './fts.js';\nimport { getSqliteDatabase, runSqliteWriteTransaction } from './transaction.js';\n\nexport type MemorySearchHit = {\n path: string;\n lines: string;\n score: number;\n lineNumbers: number[];\n};\n\nconst AGENT_MEMORY_FILENAME = 'MEMORY.md';\nconst USER_MEMORY_DISPLAY_PATH = 'user/MEMORY.md';\nconst MEMORY_SYNC_CACHE_TTL_MS = 30_000;\n\ntype MemorySyncCache = {\n timestamp: number;\n paths: string[];\n};\n\nconst memorySyncCache = new Map<string, MemorySyncCache>();\n\nfunction getDailyMemoryPath(baseDir: string, date?: Date): string {\n const d = date || new Date();\n const year = d.getFullYear();\n const month = String(d.getMonth() + 1).padStart(2, '0');\n const day = String(d.getDate()).padStart(2, '0');\n return join(baseDir, 'memory', `${year}-${month}-${day}.md`);\n}\n\nfunction getCuratedMemoryPaths(memoriesDir: string | undefined, userMemoryPath: string | undefined): string[] {\n return [\n ...(memoriesDir ? [join(memoriesDir, AGENT_MEMORY_FILENAME)] : []),\n ...(userMemoryPath ? [userMemoryPath] : []),\n ].filter((p) => existsSync(p));\n}\n\nfunction collectMemoryPaths(baseDir: string, memoriesDir?: string, userMemoryPath?: string): string[] {\n const paths: string[] = [];\n paths.push(...getCuratedMemoryPaths(memoriesDir, userMemoryPath));\n\n const longTermPath = join(baseDir, 'MEMORY.md');\n if (existsSync(longTermPath)) {\n paths.push(longTermPath);\n }\n\n const memoryDir = join(baseDir, 'memory');\n if (existsSync(memoryDir)) {\n const today = new Date();\n for (let i = 0; i < 30; i++) {\n const date = new Date(today);\n date.setDate(date.getDate() - i);\n const path = getDailyMemoryPath(baseDir, date);\n if (existsSync(path)) {\n paths.push(path);\n }\n }\n }\n\n return paths;\n}\n\nfunction displayPath(\n baseDir: string,\n memoriesDir: string | undefined,\n userMemoryPath: string | undefined,\n absPath: string,\n): string {\n const normalized = absPath.replace(/\\\\/g, '/');\n if (userMemoryPath && normalized === userMemoryPath.replace(/\\\\/g, '/')) {\n return USER_MEMORY_DISPLAY_PATH;\n }\n if (memoriesDir) {\n const memoriesRoot = memoriesDir.replace(/\\\\/g, '/');\n if (normalized.startsWith(memoriesRoot)) {\n const filename = normalized.slice(memoriesRoot.length).replace(/^\\//, '');\n if (filename === AGENT_MEMORY_FILENAME) {\n return filename;\n }\n }\n }\n return relative(baseDir, absPath).replace(/\\\\/g, '/');\n}\n\nfunction contentHash(content: string): string {\n return createHash('sha256').update(content).digest('hex');\n}\n\nfunction indexFile(\n db: ReturnType<typeof getSqliteDatabase>,\n userId: string,\n baseDir: string,\n memoriesDir: string | undefined,\n userMemoryPath: string | undefined,\n absPath: string,\n): void {\n const content = readFileSync(absPath, 'utf-8');\n const mtimeMs = statSync(absPath).mtimeMs;\n const hash = contentHash(content);\n const relPath = displayPath(baseDir, memoriesDir, userMemoryPath, absPath);\n const fileId = `${userId}:${relPath}`;\n\n const existing = db\n .prepare(`SELECT content_hash, mtime_ms FROM memory_files WHERE file_id = ?`)\n .get(fileId) as { content_hash: string; mtime_ms: number } | undefined;\n if (existing && existing.content_hash === hash && existing.mtime_ms === mtimeMs) {\n return;\n }\n\n db.prepare(`DELETE FROM memory_fts WHERE chunk_id IN (SELECT chunk_id FROM memory_chunks WHERE file_id = ?)`).run(\n fileId,\n );\n db.prepare(`DELETE FROM memory_chunks WHERE file_id = ?`).run(fileId);\n db.prepare(`DELETE FROM memory_files WHERE file_id = ?`).run(fileId);\n\n db.prepare(\n `INSERT INTO memory_files (file_id, user_id, path, mtime_ms, content_hash)\n VALUES (?, ?, ?, ?, ?)`,\n ).run(fileId, userId, relPath, mtimeMs, hash);\n\n const lines = content.split('\\n');\n const insertChunk = db.prepare(\n `INSERT INTO memory_chunks (chunk_id, file_id, start_line, end_line, content)\n VALUES (?, ?, ?, ?, ?)`,\n );\n const insertFts = db.prepare(\n `INSERT INTO memory_fts (content, chunk_id, user_id, path, start_line, end_line)\n VALUES (?, ?, ?, ?, ?, ?)`,\n );\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i];\n if (!line.trim()) continue;\n const lineNo = i + 1;\n const chunkId = `${fileId}:${lineNo}`;\n insertChunk.run(chunkId, fileId, lineNo, lineNo, line);\n insertFts.run(line, chunkId, userId, relPath, lineNo, lineNo);\n }\n}\n\nexport function syncMemoryIndex(params: {\n userId: string;\n workspaceDir: string;\n memoriesDir?: string;\n userMemoryPath?: string;\n}): void {\n const cacheKey = `${params.userId}:${params.workspaceDir}:${params.memoriesDir ?? ''}:${params.userMemoryPath ?? ''}`;\n const now = Date.now();\n const cached = memorySyncCache.get(cacheKey);\n if (cached && now - cached.timestamp < MEMORY_SYNC_CACHE_TTL_MS) {\n return;\n }\n\n const paths = collectMemoryPaths(params.workspaceDir, params.memoriesDir, params.userMemoryPath);\n memorySyncCache.set(cacheKey, { timestamp: now, paths });\n runSqliteWriteTransaction((db) => {\n const seen = new Set<string>();\n for (const absPath of paths) {\n seen.add(`${params.userId}:${displayPath(params.workspaceDir, params.memoriesDir, params.userMemoryPath, absPath)}`);\n indexFile(db, params.userId, params.workspaceDir, params.memoriesDir, params.userMemoryPath, absPath);\n }\n\n const stale = db\n .prepare(`SELECT file_id FROM memory_files WHERE user_id = ?`)\n .all(params.userId) as Array<{ file_id: string }>;\n for (const row of stale) {\n if (!seen.has(row.file_id)) {\n db.prepare(\n `DELETE FROM memory_fts WHERE chunk_id IN (SELECT chunk_id FROM memory_chunks WHERE file_id = ?)`,\n ).run(row.file_id);\n db.prepare(`DELETE FROM memory_chunks WHERE file_id = ?`).run(row.file_id);\n db.prepare(`DELETE FROM memory_files WHERE file_id = ?`).run(row.file_id);\n }\n }\n });\n}\n\nexport function searchMemoryIndex(params: {\n userId: string;\n query: string;\n maxResults?: number;\n minScore?: number;\n}): MemorySearchHit[] {\n const { userId, query, maxResults = 5, minScore = 0.3 } = params;\n const ftsQuery = buildFts5SearchQuery(query);\n if (!ftsQuery) {\n return [];\n }\n\n const db = getSqliteDatabase();\n const rows = db\n .prepare(\n `SELECT chunk_id, path, start_line, end_line, content, bm25(memory_fts) AS rank\n FROM memory_fts\n WHERE memory_fts MATCH ? AND user_id = ?\n ORDER BY rank\n LIMIT ?`,\n )\n .all(ftsQuery, userId, maxResults * 3) as Array<{\n chunk_id: string;\n path: string;\n start_line: number;\n end_line: number;\n content: string;\n rank: number;\n }>;\n\n if (rows.length === 0) {\n const fallbackRows = db.prepare(\n `SELECT chunk_id, path, start_line, end_line, content\n FROM memory_fts\n WHERE user_id = ?\n LIMIT 500`,\n ).all(userId) as Array<{\n chunk_id: string;\n path: string;\n start_line: number;\n end_line: number;\n content: string;\n }>;\n return fallbackRows\n .map((row) => ({\n path: row.path,\n lines: row.content,\n score: memoryLexicalSimilarity(query, row.content),\n lineNumbers: [row.start_line],\n }))\n .filter((result) => result.score >= minScore)\n .sort((a, b) => b.score - a.score)\n .slice(0, maxResults);\n }\n\n const bestRank = Math.min(...rows.map((row) => row.rank));\n const worstRank = Math.max(...rows.map((row) => row.rank));\n const results: MemorySearchHit[] = [];\n for (const row of rows) {\n const score = fts5RankToScore(row.rank, bestRank, worstRank);\n if (score < minScore) continue;\n results.push({\n path: row.path,\n lines: row.content,\n score,\n lineNumbers: [row.start_line],\n });\n }\n\n results.sort((a, b) => b.score - a.score);\n return results.slice(0, maxResults);\n}\n"],"mappings":"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"}
|