@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":"format-tui-hotkeys.js","names":[],"sources":["../../../src/tui/format-tui-hotkeys.ts"],"sourcesContent":["import type { Keybinding, KeybindingsManager } from '@earendil-works/pi-tui';\n\nimport { XOPC_TUI_HOTKEY_ORDER } from './xopc-tui-keybindings.js';\nimport { getTuiKeybindingsPath } from './tui-keybindings-file.js';\nimport { theme } from './theme.js';\n\nexport type KeyTextFormatOptions = {\n capitalize?: boolean;\n};\n\nexport function formatKeyText(key: string, options: KeyTextFormatOptions = {}): string {\n return key\n .split('/')\n .map((part) =>\n part\n .split('+')\n .map((keyPart) => {\n const display =\n process.platform === 'darwin' && keyPart.toLowerCase() === 'alt' ? 'option' : keyPart;\n return options.capitalize ? display.charAt(0).toUpperCase() + display.slice(1) : display;\n })\n .join('+'),\n )\n .join('/');\n}\n\nexport function formatKeyIds(\n manager: KeybindingsManager,\n id: Keybinding,\n options: KeyTextFormatOptions = {},\n): string {\n const keys = manager.getKeys(id);\n if (keys.length === 0) return '(not bound)';\n return keys.map((key) => formatKeyText(key, options)).join(' · ');\n}\n\nexport function keyHint(manager: KeybindingsManager, id: Keybinding, description: string): string {\n return `${theme.dim(formatKeyIds(manager, id))} ${theme.dim(description)}`;\n}\n\nexport interface TuiHotkeyExtensionShortcut {\n key: string;\n description?: string;\n}\n\n/** Human-readable shortcut list for `/hotkeys` (resolved keys, pi-style). */\nexport function formatXopcTuiHotkeys(\n manager: KeybindingsManager,\n extensionShortcuts: TuiHotkeyExtensionShortcut[] = [],\n): string {\n const lines: string[] = ['Keyboard shortcuts (resolved):'];\n for (const id of XOPC_TUI_HOTKEY_ORDER) {\n const def = manager.getDefinition(id);\n const desc = def.description ?? id;\n lines.push(` ${formatKeyIds(manager, id)} — ${desc}`);\n }\n if (extensionShortcuts.length > 0) {\n lines.push('', 'Extensions:');\n for (const shortcut of extensionShortcuts) {\n const key = formatKeyText(shortcut.key, { capitalize: true });\n lines.push(` ${key} — ${shortcut.description?.trim() || 'Extension shortcut'}`);\n }\n }\n lines.push('', `Customize in ${getTuiKeybindingsPath()} (/reload to apply).`);\n return lines.join('\\n');\n}\n"],"mappings":";;;;AAUA,SAAgB,cAAc,KAAa,UAAgC,EAAE,EAAU;AACrF,QAAO,IACJ,MAAM,IAAI,CACV,KAAK,SACJ,KACG,MAAM,IAAI,CACV,KAAK,YAAY;EAChB,MAAM,UACJ,QAAQ,aAAa,YAAY,QAAQ,aAAa,KAAK,QAAQ,WAAW;AAChF,SAAO,QAAQ,aAAa,QAAQ,OAAO,EAAE,CAAC,aAAa,GAAG,QAAQ,MAAM,EAAE,GAAG;GACjF,CACD,KAAK,IAAI,CACb,CACA,KAAK,IAAI;;AAGd,SAAgB,aACd,SACA,IACA,UAAgC,EAAE,EAC1B;CACR,MAAM,OAAO,QAAQ,QAAQ,GAAG;AAChC,KAAI,KAAK,WAAW,EAAG,QAAO;AAC9B,QAAO,KAAK,KAAK,QAAQ,cAAc,KAAK,QAAQ,CAAC,CAAC,KAAK,MAAM;;AAGnE,SAAgB,QAAQ,SAA6B,IAAgB,aAA6B;AAChG,QAAO,GAAG,MAAM,IAAI,aAAa,SAAS,GAAG,CAAC,CAAC,GAAG,MAAM,IAAI,YAAY;;;AAS1E,SAAgB,qBACd,SACA,qBAAmD,EAAE,EAC7C;CACR,MAAM,QAAkB,CAAC,iCAAiC;AAC1D,MAAK,MAAM,MAAM,uBAAuB;EAEtC,MAAM,OADM,QAAQ,cAAc,GAClB,CAAC,eAAe;AAChC,QAAM,KAAK,KAAK,aAAa,SAAS,GAAG,CAAC,KAAK,OAAO;;AAExD,KAAI,mBAAmB,SAAS,GAAG;AACjC,QAAM,KAAK,IAAI,cAAc;AAC7B,OAAK,MAAM,YAAY,oBAAoB;GACzC,MAAM,MAAM,cAAc,SAAS,KAAK,EAAE,YAAY,MAAM,CAAC;AAC7D,SAAM,KAAK,KAAK,IAAI,KAAK,SAAS,aAAa,MAAM,IAAI,uBAAuB;;;AAGpF,OAAM,KAAK,IAAI,gBAAgB,uBAAuB,CAAC,sBAAsB;AAC7E,QAAO,MAAM,KAAK,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sse-consumer.js","names":[],"sources":["../../../src/tui/sse-consumer.ts"],"sourcesContent":["import type { ParsedSSEEvent } from './tui-types.js';\n\n/**\n * Consume an SSE stream from a `ReadableStream<Uint8Array>` (Node.js 22+ fetch body).\n *\n * Parses the standard SSE wire format:\n * event: <name>\\n\n * data: <json>\\n\n * id: <id>\\n\n * \\n\n *\n * Calls `onEvent` for each complete event block.\n */\nexport async function consumeSSEStream(\n body: ReadableStream<Uint8Array>,\n onEvent: (event: ParsedSSEEvent) => void,\n signal?: AbortSignal,\n): Promise<void> {\n const reader = body.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n let currentEvent = '';\n let currentData = '';\n let currentId = '';\n\n try {\n while (true) {\n if (signal?.aborted) break;\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n // Keep the last (possibly incomplete) line in the buffer\n buffer = lines.pop() ?? '';\n\n for (const line of lines) {\n if (line === '') {\n // Empty line = end of event block\n if (currentData) {\n onEvent({\n event: currentEvent || 'message',\n data: currentData,\n id: currentId || undefined,\n });\n }\n currentEvent = '';\n currentData = '';\n currentId = '';\n continue;\n }\n\n if (line.startsWith(':')) {\n // Comment line, skip\n continue;\n }\n\n const colonIndex = line.indexOf(':');\n if (colonIndex === -1) continue;\n\n const field = line.slice(0, colonIndex);\n // SSE spec: if there's a space after the colon, skip it\n const valueStart = line[colonIndex + 1] === ' ' ? colonIndex + 2 : colonIndex + 1;\n const fieldValue = line.slice(valueStart);\n\n switch (field) {\n case 'event':\n currentEvent = fieldValue;\n break;\n case 'data':\n currentData = currentData ? `${currentData}\\n${fieldValue}` : fieldValue;\n break;\n case 'id':\n currentId = fieldValue;\n break;\n }\n }\n }\n } finally {\n buffer += decoder.decode();\n reader.releaseLock();\n }\n}\n\n/** Parse SSE data field as JSON, returning null on failure. */\nexport function parseSSEData<T = unknown>(data: string): T | null {\n try {\n return JSON.parse(data) as T;\n } catch {\n return null;\n }\n}\n"],"mappings":";;;;;;;;;;;;AAaA,eAAsB,iBACpB,MACA,SACA,QACe;CACf,MAAM,SAAS,KAAK,WAAW;CAC/B,MAAM,UAAU,IAAI,aAAa;CACjC,IAAI,SAAS;CACb,IAAI,eAAe;CACnB,IAAI,cAAc;CAClB,IAAI,YAAY;AAEhB,KAAI;AACF,SAAO,MAAM;AACX,OAAI,QAAQ,QAAS;GACrB,MAAM,EAAE,MAAM,UAAU,MAAM,OAAO,MAAM;AAC3C,OAAI,KAAM;AAEV,aAAU,QAAQ,OAAO,OAAO,EAAE,QAAQ,MAAM,CAAC;GACjD,MAAM,QAAQ,OAAO,MAAM,KAAK;AAEhC,YAAS,MAAM,KAAK,IAAI;AAExB,QAAK,MAAM,QAAQ,OAAO;AACxB,QAAI,SAAS,IAAI;AAEf,SAAI,YACF,SAAQ;MACN,OAAO,gBAAgB;MACvB,MAAM;MACN,IAAI,aAAa,KAAA;MAClB,CAAC;AAEJ,oBAAe;AACf,mBAAc;AACd,iBAAY;AACZ;;AAGF,QAAI,KAAK,WAAW,IAAI,CAEtB;IAGF,MAAM,aAAa,KAAK,QAAQ,IAAI;AACpC,QAAI,eAAe,GAAI;IAEvB,MAAM,QAAQ,KAAK,MAAM,GAAG,WAAW;IAEvC,MAAM,aAAa,KAAK,aAAa,OAAO,MAAM,aAAa,IAAI,aAAa;IAChF,MAAM,aAAa,KAAK,MAAM,WAAW;AAEzC,YAAQ,OAAR;KACE,KAAK;AACH,qBAAe;AACf;KACF,KAAK;AACH,oBAAc,cAAc,GAAG,YAAY,IAAI,eAAe;AAC9D;KACF,KAAK;AACH,kBAAY;AACZ;;;;WAIA;AACR,YAAU,QAAQ,QAAQ;AAC1B,SAAO,aAAa;;;;AAKxB,SAAgB,aAA0B,MAAwB;AAChE,KAAI;AACF,SAAO,KAAK,MAAM,KAAK;SACjB;AACN,SAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dark.js","names":[],"sources":["../../../../src/tui/theme/dark.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"light.js","names":[],"sources":["../../../../src/tui/theme/light.json"],"sourcesContent":[""],"mappings":""}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-manager.js","names":["darkThemeJson.palette","lightThemeJson.palette"],"sources":["../../../src/tui/theme-manager.ts"],"sourcesContent":["import { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport type { EditorTheme, MarkdownTheme, SelectListTheme } from '@earendil-works/pi-tui';\nimport chalk from 'chalk';\n\nimport { resolveStateDir } from '../config/paths.js';\nimport type { SearchableSelectListTheme } from './components/searchable-select-list.js';\nimport darkThemeJson from './theme/dark.json' with { type: 'json' };\nimport lightThemeJson from './theme/light.json' with { type: 'json' };\n\nconst XTERM_LEVELS = [0, 95, 135, 175, 215, 255] as const;\n\nexport type ThemePalette = Record<keyof typeof darkThemeJson.palette, string>;\n\ntype ThemeFile = { name: string; palette: ThemePalette };\n\nconst BUILTIN_THEMES: Record<string, ThemePalette> = {\n dark: darkThemeJson.palette as ThemePalette,\n light: lightThemeJson.palette as ThemePalette,\n};\n\nfunction channelToSrgb(value: number): number {\n const normalized = value / 255;\n return normalized <= 0.03928\n ? normalized / 12.92\n : ((normalized + 0.055) / 1.055) ** 2.4;\n}\n\nfunction relativeLuminanceRgb(red: number, green: number, blue: number): number {\n return (\n 0.2126 * channelToSrgb(red) +\n 0.7152 * channelToSrgb(green) +\n 0.0722 * channelToSrgb(blue)\n );\n}\n\nfunction relativeLuminanceHex(hex: string): number {\n return relativeLuminanceRgb(\n Number.parseInt(hex.slice(1, 3), 16),\n Number.parseInt(hex.slice(3, 5), 16),\n Number.parseInt(hex.slice(5, 7), 16),\n );\n}\n\nfunction contrastRatio(bgLuminance: number, fgHex: string): number {\n const fgLuminance = relativeLuminanceHex(fgHex);\n const lighter = Math.max(bgLuminance, fgLuminance);\n const darker = Math.min(bgLuminance, fgLuminance);\n return (lighter + 0.05) / (darker + 0.05);\n}\n\nfunction detectLightBackground(env: NodeJS.ProcessEnv = process.env): boolean {\n const explicit = (env.XOPC_THEME ?? '').toLowerCase().trim();\n if (explicit === 'light') return true;\n if (explicit === 'dark') return false;\n\n const colorfgbg = env.COLORFGBG;\n if (colorfgbg && colorfgbg.length <= 64) {\n const sep = colorfgbg.lastIndexOf(';');\n const bg = Number.parseInt(sep >= 0 ? colorfgbg.slice(sep + 1) : colorfgbg, 10);\n if (bg >= 0 && bg <= 255) {\n if (bg <= 15) return bg === 7 || bg === 15;\n if (bg >= 232) return bg >= 244;\n const cubeIndex = bg - 16;\n const bVal = XTERM_LEVELS[cubeIndex % 6]!;\n const gVal = XTERM_LEVELS[Math.floor(cubeIndex / 6) % 6]!;\n const rVal = XTERM_LEVELS[Math.floor(cubeIndex / 36)]!;\n const bgLum = relativeLuminanceRgb(rVal, gVal, bVal);\n return (\n contrastRatio(bgLum, '#1d1d1f') >= contrastRatio(bgLum, '#f5f5f7')\n );\n }\n }\n return false;\n}\n\nfunction resolveCustomThemesDir(): string {\n return join(resolveStateDir(), 'themes');\n}\n\nfunction loadCustomThemePalette(name: string): ThemePalette | null {\n const path = join(resolveCustomThemesDir(), `${name}.json`);\n if (!existsSync(path)) return null;\n try {\n const parsed = JSON.parse(readFileSync(path, 'utf8')) as ThemeFile;\n if (!parsed?.palette || typeof parsed.palette !== 'object') return null;\n return parsed.palette as ThemePalette;\n } catch {\n return null;\n }\n}\n\nfunction fg(hex: string) {\n return (text: string) => chalk.hex(hex)(text);\n}\n\nfunction bg(hex: string) {\n return (text: string) => chalk.bgHex(hex)(text);\n}\n\nfunction highlightCode(code: string, codeHex: string): string[] {\n return code.split('\\n').map((line) => fg(codeHex)(line));\n}\n\nexport type ThemeExports = {\n palette: ThemePalette;\n lightMode: boolean;\n theme: {\n fg: (key: keyof ThemePalette, text: string) => string;\n fgText: (text: string) => string;\n assistantText: (text: string) => string;\n dim: (text: string) => string;\n accent: (text: string) => string;\n accentSoft: (text: string) => string;\n success: (text: string) => string;\n error: (text: string) => string;\n header: (text: string) => string;\n system: (text: string) => string;\n userBg: (text: string) => string;\n userText: (text: string) => string;\n toolTitle: (text: string) => string;\n toolOutput: (text: string) => string;\n toolPendingBg: (text: string) => string;\n toolSuccessBg: (text: string) => string;\n toolErrorBg: (text: string) => string;\n border: (text: string) => string;\n bold: (text: string) => string;\n italic: (text: string) => string;\n };\n markdownTheme: MarkdownTheme;\n selectListTheme: SelectListTheme;\n searchableSelectListTheme: SearchableSelectListTheme;\n editorTheme: EditorTheme;\n};\n\nfunction buildThemeExports(palette: ThemePalette, lightMode: boolean): ThemeExports {\n const theme = {\n fg: (key: keyof ThemePalette, text: string) => fg(palette[key])(text),\n fgText: fg(palette.text),\n assistantText: (text: string) => text,\n dim: fg(palette.dim),\n accent: fg(palette.accent),\n accentSoft: fg(palette.accentSoft),\n success: fg(palette.success),\n error: fg(palette.error),\n header: (text: string) => chalk.bold(fg(palette.accent)(text)),\n system: fg(palette.systemText),\n userBg: bg(palette.userBg),\n userText: fg(palette.userText),\n toolTitle: fg(palette.toolTitle),\n toolOutput: fg(palette.toolOutput),\n toolPendingBg: bg(palette.toolPendingBg),\n toolSuccessBg: bg(palette.toolSuccessBg),\n toolErrorBg: bg(palette.toolErrorBg),\n border: fg(palette.border),\n bold: (text: string) => chalk.bold(text),\n italic: (text: string) => chalk.italic(text),\n };\n\n const markdownTheme: MarkdownTheme = {\n heading: (text) => chalk.bold(fg(palette.accent)(text)),\n link: (text) => fg(palette.link)(text),\n linkUrl: (text) => chalk.dim(text),\n code: (text) => fg(palette.code)(text),\n codeBlock: (text) => fg(palette.code)(text),\n codeBlockBorder: (text) => fg(palette.codeBorder)(text),\n quote: (text) => fg(palette.quote)(text),\n quoteBorder: (text) => fg(palette.quoteBorder)(text),\n hr: (text) => fg(palette.border)(text),\n listBullet: (text) => fg(palette.accentSoft)(text),\n bold: (text) => chalk.bold(text),\n italic: (text) => chalk.italic(text),\n strikethrough: (text) => chalk.strikethrough(text),\n underline: (text) => chalk.underline(text),\n highlightCode: (code) => highlightCode(code, palette.code),\n };\n\n const selectListTheme: SelectListTheme = {\n selectedPrefix: (text) => fg(palette.accent)(text),\n selectedText: (text) => chalk.bold(fg(palette.accent)(text)),\n description: (text) => fg(palette.dim)(text),\n scrollInfo: (text) => fg(palette.dim)(text),\n noMatch: (text) => fg(palette.dim)(text),\n };\n\n const searchableSelectListTheme: SearchableSelectListTheme = {\n ...selectListTheme,\n searchPrompt: (text) => fg(palette.dim)(text),\n searchInput: (text) => fg(palette.text)(text),\n matchHighlight: (text) => fg(palette.accentSoft)(text),\n };\n\n const editorTheme: EditorTheme = {\n borderColor: (text) => fg(palette.border)(text),\n selectList: selectListTheme,\n };\n\n return {\n palette,\n lightMode,\n theme,\n markdownTheme,\n selectListTheme,\n searchableSelectListTheme,\n editorTheme,\n };\n}\n\nlet activeThemeId = 'auto';\nlet activeExports = buildThemeExports(\n detectLightBackground() ? BUILTIN_THEMES.light! : BUILTIN_THEMES.dark!,\n detectLightBackground(),\n);\n\nexport function getActiveThemeId(): string {\n return activeThemeId;\n}\n\nexport function listAvailableThemeIds(): string[] {\n const ids = new Set<string>(['auto', 'dark', 'light']);\n const dir = resolveCustomThemesDir();\n if (existsSync(dir)) {\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (entry.isFile() && entry.name.endsWith('.json')) {\n ids.add(entry.name.replace(/\\.json$/, ''));\n }\n }\n }\n return [...ids];\n}\n\nexport function resolveThemePalette(\n themeId: string,\n env: NodeJS.ProcessEnv = process.env,\n): { palette: ThemePalette; lightMode: boolean; resolvedId: string } {\n const normalized = themeId.trim().toLowerCase() || 'auto';\n if (normalized === 'auto') {\n const light = detectLightBackground(env);\n return {\n palette: light ? BUILTIN_THEMES.light! : BUILTIN_THEMES.dark!,\n lightMode: light,\n resolvedId: light ? 'light' : 'dark',\n };\n }\n if (normalized === 'dark' || normalized === 'light') {\n return {\n palette: BUILTIN_THEMES[normalized]!,\n lightMode: normalized === 'light',\n resolvedId: normalized,\n };\n }\n const custom = loadCustomThemePalette(normalized);\n if (custom) {\n return { palette: custom, lightMode: false, resolvedId: normalized };\n }\n const light = detectLightBackground(env);\n return {\n palette: light ? BUILTIN_THEMES.light! : BUILTIN_THEMES.dark!,\n lightMode: light,\n resolvedId: light ? 'light' : 'dark',\n };\n}\n\n/** Apply theme by id (`auto`, `dark`, `light`, or custom name). Returns resolved palette id. */\nexport function applyThemeById(themeId: string, env: NodeJS.ProcessEnv = process.env): string {\n activeThemeId = themeId.trim() || 'auto';\n const resolved = resolveThemePalette(activeThemeId, env);\n activeExports = buildThemeExports(resolved.palette, resolved.lightMode);\n return resolved.resolvedId;\n}\n\nexport function getThemeExports(): ThemeExports {\n return activeExports;\n}\n\nexport function getThinkingBorderColor(level: string | undefined): (text: string) => string {\n const palette = activeExports.palette;\n const key = (() => {\n switch ((level ?? 'off').toLowerCase()) {\n case 'minimal':\n return 'thinkingMinimal' as const;\n case 'low':\n return 'thinkingLow' as const;\n case 'medium':\n return 'thinkingMedium' as const;\n case 'high':\n return 'thinkingHigh' as const;\n case 'xhigh':\n return 'thinkingXhigh' as const;\n case 'adaptive':\n return 'thinkingAdaptive' as const;\n default:\n return 'thinkingOff' as const;\n }\n })();\n return fg(palette[key]);\n}\n\nexport function getBashModeBorderColor(): (text: string) => string {\n return fg(activeExports.palette.bashMode);\n}\n\nexport function getBashExcludeBorderColor(): (text: string) => string {\n return fg(activeExports.palette.bashExclude);\n}\n\nexport function getDefaultEditorBorderColor(): (text: string) => string {\n return activeExports.editorTheme.borderColor;\n}\n\nexport function getCustomThemesDir(): string {\n return resolveCustomThemesDir();\n}\n\n/** Initialize theme from CLI flag, env, or settings id. */\nexport function initTuiTheme(options?: {\n themeId?: string;\n env?: NodeJS.ProcessEnv;\n}): string {\n const env = options?.env ?? process.env;\n const fromEnv = env.XOPC_THEME?.trim();\n const themeId = options?.themeId?.trim() || fromEnv || 'auto';\n return applyThemeById(themeId, env);\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme.js","names":[],"sources":["../../../src/tui/theme.ts"],"sourcesContent":["export {\n applyThemeById,\n getActiveThemeId,\n getBashExcludeBorderColor,\n getBashModeBorderColor,\n getCustomThemesDir,\n getDefaultEditorBorderColor,\n getThemeExports,\n getThinkingBorderColor,\n initTuiTheme,\n listAvailableThemeIds,\n resolveThemePalette,\n type ThemeExports,\n type ThemePalette,\n} from './theme-manager.js';\n\nimport { getThemeExports } from './theme-manager.js';\n\nexport function getLightMode(): boolean {\n return getThemeExports().lightMode;\n}\n\n/** Mutable theme accessors — updated when `applyThemeById` runs. */\nexport const theme = new Proxy({} as ReturnType<typeof getThemeExports>['theme'], {\n get(_target, prop) {\n const value = getThemeExports().theme[prop as keyof ReturnType<typeof getThemeExports>['theme']];\n return typeof value === 'function' ? value.bind(getThemeExports().theme) : value;\n },\n});\n\nexport const palette = new Proxy({} as ReturnType<typeof getThemeExports>['palette'], {\n get(_target, prop) {\n return getThemeExports().palette[prop as keyof ReturnType<typeof getThemeExports>['palette']];\n },\n});\n\nexport const markdownTheme = new Proxy({} as ReturnType<typeof getThemeExports>['markdownTheme'], {\n get(_target, prop) {\n const exports = getThemeExports().markdownTheme;\n const value = exports[prop as keyof typeof exports];\n return typeof value === 'function' ? value.bind(exports) : value;\n },\n});\n\nexport const selectListTheme = new Proxy({} as ReturnType<typeof getThemeExports>['selectListTheme'], {\n get(_target, prop) {\n const exports = getThemeExports().selectListTheme;\n const value = exports[prop as keyof typeof exports];\n return typeof value === 'function' ? value.bind(exports) : value;\n },\n});\n\nexport const searchableSelectListTheme = new Proxy(\n {} as ReturnType<typeof getThemeExports>['searchableSelectListTheme'],\n {\n get(_target, prop) {\n const exports = getThemeExports().searchableSelectListTheme;\n const value = exports[prop as keyof typeof exports];\n return typeof value === 'function' ? value.bind(exports) : value;\n },\n },\n);\n\nexport const editorTheme = new Proxy({} as ReturnType<typeof getThemeExports>['editorTheme'], {\n get(_target, prop) {\n const exports = getThemeExports().editorTheme;\n const value = exports[prop as keyof typeof exports];\n return typeof value === 'function' ? value.bind(exports) : value;\n },\n});\n"],"mappings":";;AAkBA,SAAgB,eAAwB;AACtC,QAAO,iBAAiB,CAAC;;;AAI3B,MAAa,QAAQ,IAAI,MAAM,EAAE,EAAiD,EAChF,IAAI,SAAS,MAAM;CACjB,MAAM,QAAQ,iBAAiB,CAAC,MAAM;AACtC,QAAO,OAAO,UAAU,aAAa,MAAM,KAAK,iBAAiB,CAAC,MAAM,GAAG;GAE9E,CAAC;AAEF,MAAa,UAAU,IAAI,MAAM,EAAE,EAAmD,EACpF,IAAI,SAAS,MAAM;AACjB,QAAO,iBAAiB,CAAC,QAAQ;GAEpC,CAAC;AAEF,MAAa,gBAAgB,IAAI,MAAM,EAAE,EAAyD,EAChG,IAAI,SAAS,MAAM;CACjB,MAAM,UAAU,iBAAiB,CAAC;CAClC,MAAM,QAAQ,QAAQ;AACtB,QAAO,OAAO,UAAU,aAAa,MAAM,KAAK,QAAQ,GAAG;GAE9D,CAAC;AAEF,MAAa,kBAAkB,IAAI,MAAM,EAAE,EAA2D,EACpG,IAAI,SAAS,MAAM;CACjB,MAAM,UAAU,iBAAiB,CAAC;CAClC,MAAM,QAAQ,QAAQ;AACtB,QAAO,OAAO,UAAU,aAAa,MAAM,KAAK,QAAQ,GAAG;GAE9D,CAAC;AAEF,MAAa,4BAA4B,IAAI,MAC3C,EAAE,EACF,EACE,IAAI,SAAS,MAAM;CACjB,MAAM,UAAU,iBAAiB,CAAC;CAClC,MAAM,QAAQ,QAAQ;AACtB,QAAO,OAAO,UAAU,aAAa,MAAM,KAAK,QAAQ,GAAG;GAE9D,CACF;AAED,MAAa,cAAc,IAAI,MAAM,EAAE,EAAuD,EAC5F,IAAI,SAAS,MAAM;CACjB,MAAM,UAAU,iBAAiB,CAAC;CAClC,MAAM,QAAQ,QAAQ;AACtB,QAAO,OAAO,UAAU,aAAa,MAAM,KAAK,QAAQ,GAAG;GAE9D,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-summary.js","names":[],"sources":["../../../src/tui/tool-summary.ts"],"sourcesContent":["import { basename, dirname } from 'node:path';\n\nimport { Text } from '@earendil-works/pi-tui';\n\nimport type { TuiToolContentBlock } from './tui-tool-result.js';\n\nconst MAX_ARG_VALUE_LENGTH = 120;\nconst MAX_PATH_LABEL_LENGTH = 72;\n\nexport type ToolSummaryKind = 'read' | 'search' | 'exec' | 'mcp' | 'generic';\n\nexport interface ToolSummaryContext {\n toolName: string;\n args: unknown;\n output: string;\n content?: TuiToolContentBlock[];\n details: unknown;\n isError: boolean;\n expandKey: string;\n}\n\nexport function formatArgsSummary(args: unknown, toolName: string): string {\n if (!args || typeof args !== 'object') return '';\n const compactRead = isReadStyleTool(toolName) ? formatCompactReadArgs(args) : null;\n if (compactRead) return compactRead;\n const command = isExecStyleTool(toolName) ? commandFromArgs(args) : null;\n if (command) return command;\n const entries = Object.entries(args as Record<string, unknown>);\n if (entries.length === 0) return '';\n return entries\n .map(([key, value]) => {\n const stringValue = formatArgValue(value);\n const truncated =\n stringValue.length > MAX_ARG_VALUE_LENGTH\n ? `${stringValue.slice(0, MAX_ARG_VALUE_LENGTH - 3)}...`\n : stringValue;\n return `${key}=${truncated}`;\n })\n .join(', ');\n}\n\nexport function getToolSummaryKind(toolName: string): ToolSummaryKind {\n if (isReadStyleTool(toolName)) return 'read';\n if (isSearchStyleTool(toolName)) return 'search';\n if (isExecStyleTool(toolName)) return 'exec';\n if (isMcpStyleTool(toolName)) return 'mcp';\n return 'generic';\n}\n\nexport function isReadStyleTool(toolName: string): boolean {\n const base = baseToolName(toolName);\n return ['read', 'read_file', 'memory_get', 'get_code_snippet', 'prepare_diff'].includes(base);\n}\n\nexport function isSearchStyleTool(toolName: string): boolean {\n const base = baseToolName(toolName);\n return [\n 'search',\n 'grep',\n 'rg',\n 'ripgrep',\n 'search_code',\n 'file_search',\n 'list_files',\n 'search_graph',\n 'query_graph',\n 'trace_path',\n 'get_architecture',\n ].includes(base);\n}\n\nexport function isExecStyleTool(toolName: string): boolean {\n const base = baseToolName(toolName);\n return [\n 'bash',\n 'shell',\n 'exec',\n 'run_command',\n 'exec_command',\n 'terminal',\n ].includes(base);\n}\n\nexport function isMcpStyleTool(toolName: string): boolean {\n return toolName.includes('__');\n}\n\nexport function displayToolName(toolName: string): string {\n const parts = toolName.split('__');\n if (parts.length === 2 && parts[0] && parts[1]) {\n return `${parts[0]}.${parts[1]}`;\n }\n return toolName;\n}\n\nexport function compactPath(path: string, maxLength = MAX_PATH_LABEL_LENGTH): string {\n const normalized = path.replace(/\\\\/g, '/');\n if (normalized.length <= maxLength) return normalized;\n const base = basename(normalized);\n const parent = basename(dirname(normalized));\n const suffix = parent ? `${parent}/${base}` : base;\n if (suffix.length + 2 <= maxLength) return `.../${suffix}`;\n return `.../${base.slice(Math.max(0, base.length - maxLength + 3))}`;\n}\n\nexport function formatCollapsedToolSummary(ctx: ToolSummaryContext): string {\n if (ctx.isError) {\n const rows = nonBlankLines(ctx.output).length;\n const rowLabel = rows === 1 ? '1 error line' : `${rows} error lines`;\n return `error; ${rowLabel}; ${ctx.expandKey} to expand`;\n }\n\n switch (getToolSummaryKind(ctx.toolName)) {\n case 'read': {\n const rows = new Text(ctx.output, 1, 0).render(80).length;\n const plural = rows === 1 ? 'row' : 'rows';\n return ` ${rows} ${plural}; ${ctx.expandKey} to expand`;\n }\n case 'search':\n return formatSearchSummary(ctx.output, ctx.expandKey);\n case 'exec':\n return formatExecSummary(ctx.output, ctx.details, ctx.isError, ctx.expandKey);\n case 'mcp':\n return formatMcpSummary(ctx.output, ctx.content, ctx.expandKey);\n case 'generic':\n return '';\n }\n}\n\nexport function formatExecExpandedOutput(output: string, details: unknown): string {\n const parsed = parseExecDetails(details);\n const sections: string[] = [];\n const stdout = parsed.stdout ?? output;\n if (stdout.trim()) {\n sections.push(`stdout\\n${stdout}`);\n }\n if (parsed.stderr?.trim()) {\n sections.push(`stderr\\n${parsed.stderr}`);\n }\n if (parsed.exitCode !== undefined) {\n sections.push(`exit ${parsed.exitCode}`);\n }\n return sections.join('\\n');\n}\n\nexport function extractExitCode(details: unknown): number | undefined {\n return parseExecDetails(details).exitCode;\n}\n\nfunction formatCompactReadArgs(args: unknown): string | null {\n if (!args || typeof args !== 'object') return null;\n const record = args as Record<string, unknown>;\n const rawPath = typeof record.path === 'string'\n ? record.path\n : typeof record.file_path === 'string'\n ? record.file_path\n : undefined;\n if (!rawPath) return null;\n\n const normalized = rawPath.replace(/\\\\/g, '/');\n const base = basename(normalized);\n let label: string;\n if (base === 'SKILL.md') {\n const parent = basename(dirname(normalized));\n label = parent ? `[skill] ${parent}` : '[skill]';\n } else if (base === 'AGENTS.md') {\n label = `read resource ${compactPath(normalized)}`;\n } else {\n label = compactPath(normalized);\n }\n\n const start = firstFiniteNumber(record.offset, record.from, record.start, record.line);\n const count = firstFiniteNumber(record.limit, record.lines, record.count);\n if (start != null && count != null && count > 0) {\n label += `:${start}-${start + count - 1}`;\n }\n return label;\n}\n\nfunction commandFromArgs(args: unknown): string | null {\n if (!args || typeof args !== 'object') return null;\n const record = args as Record<string, unknown>;\n const raw = record.command ?? record.cmd ?? record.script;\n if (Array.isArray(raw)) return raw.map(String).join(' ');\n if (typeof raw === 'string' && raw.trim()) return raw.trim();\n return null;\n}\n\nfunction baseToolName(toolName: string): string {\n return toolName.split(/__|\\./).pop()?.toLowerCase() ?? toolName.toLowerCase();\n}\n\nfunction firstFiniteNumber(...values: unknown[]): number | null {\n for (const value of values) {\n if (typeof value === 'number' && Number.isFinite(value)) return Math.floor(value);\n if (typeof value === 'string' && value.trim()) {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) return Math.floor(parsed);\n }\n }\n return null;\n}\n\nfunction formatArgValue(value: unknown): string {\n if (typeof value === 'string') return value;\n if (typeof value === 'bigint') return `${value.toString()}n`;\n if (typeof value === 'function') return '[function]';\n if (typeof value === 'symbol') return String(value);\n if (value instanceof Error) return value.message || value.name;\n try {\n const json = JSON.stringify(value);\n return json === undefined ? String(value) : json;\n } catch {\n return String(value);\n }\n}\n\nfunction formatSearchSummary(output: string, expandKey: string): string {\n const lines = nonBlankLines(output);\n const paths = new Set<string>();\n let matchCount = 0;\n for (const line of lines) {\n const path = extractResultPath(line);\n if (path) paths.add(compactPath(path, 48));\n if (line.trim()) matchCount += 1;\n }\n\n const matchLabel = matchCount === 1 ? '1 result' : `${matchCount} results`;\n const fileLabel = paths.size === 0\n ? ''\n : paths.size === 1\n ? ` in ${[...paths][0]}`\n : ` in ${paths.size} files`;\n const samples = [...paths].slice(0, 3).join(', ');\n const sampleSuffix = samples && paths.size > 1 ? `: ${samples}` : '';\n return `${matchLabel}${fileLabel}${sampleSuffix}; ${expandKey} to expand`;\n}\n\nfunction formatExecSummary(\n output: string,\n details: unknown,\n isError: boolean,\n expandKey: string,\n): string {\n const parsed = parseExecDetails(details);\n const outputText = [parsed.stdout, parsed.stderr].filter(Boolean).join('\\n') || output;\n const rows = nonBlankLines(outputText).length;\n const exit = parsed.exitCode === undefined\n ? isError ? 'failed' : 'completed'\n : `exit ${parsed.exitCode}`;\n const rowLabel = rows === 1 ? '1 output line' : `${rows} output lines`;\n return `${exit}; ${rowLabel}; ${expandKey} to expand`;\n}\n\nfunction formatMcpSummary(\n output: string,\n content: TuiToolContentBlock[] | undefined,\n expandKey: string,\n): string {\n if (content?.length) {\n const counts = new Map<string, number>();\n for (const block of content) {\n counts.set(block.type, (counts.get(block.type) ?? 0) + 1);\n }\n const label = [...counts.entries()]\n .map(([type, count]) => `${count} ${type}`)\n .join(', ');\n return `${label}; ${expandKey} to expand`;\n }\n const rows = nonBlankLines(output).length;\n const rowLabel = rows === 1 ? '1 result line' : `${rows} result lines`;\n return `${rowLabel}; ${expandKey} to expand`;\n}\n\nfunction parseExecDetails(details: unknown): {\n exitCode?: number;\n stdout?: string;\n stderr?: string;\n} {\n if (!details || typeof details !== 'object') return {};\n const record = details as Record<string, unknown>;\n return {\n exitCode: numberValue(record.exitCode ?? record.exit_code ?? record.code ?? record.status),\n stdout: stringValue(record.stdout ?? record.output),\n stderr: stringValue(record.stderr ?? record.errorOutput ?? record.error_output),\n };\n}\n\nfunction numberValue(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return Math.trunc(value);\n if (typeof value === 'string' && /^-?\\d+$/.test(value)) return Number(value);\n return undefined;\n}\n\nfunction stringValue(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\nfunction nonBlankLines(text: string): string[] {\n return text.split('\\n').filter((line) => line.trim().length > 0);\n}\n\nfunction extractResultPath(line: string): string | null {\n const trimmed = line.trim();\n const colonPath = trimmed.match(/^(.+?):\\d+(?::\\d+)?:/);\n if (colonPath?.[1]) return colonPath[1];\n const jsonPath = trimmed.match(/\"?(?:path|file|file_path)\"?\\s*[:=]\\s*\"([^\"]+)\"/i);\n if (jsonPath?.[1]) return jsonPath[1];\n return null;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-agent-events.js","names":[],"sources":["../../../src/tui/tui-agent-events.ts"],"sourcesContent":["import type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { TUI } from '@earendil-works/pi-tui';\n\nimport { formatAgentRunErrorForDisplay } from '../agent/client-error-format.js';\nimport type { ChatLog } from './components/chat-log.js';\nimport { createAssistantMessageFromText } from './components/assistant-message.js';\nimport { markRunEvent, markRunIdleAfterCompletion } from './tui-run-state.js';\nimport type { TuiEventSource, TuiState } from './tui-types.js';\n\nconst seenStreamEventKeys = new Set<string>();\nconst assistantByRun = new Map<string, AgentMessage>();\n\nexport function clearSeenStreamEvents(): void {\n seenStreamEventKeys.clear();\n assistantByRun.clear();\n}\n\nexport function clearSeenStreamEventsForRun(runId: string): void {\n const prefix = `${runId}:`;\n for (const key of Array.from(seenStreamEventKeys)) {\n if (key.startsWith(prefix)) seenStreamEventKeys.delete(key);\n }\n assistantByRun.delete(runId);\n}\n\nconst STREAM_TOUCH_EVENTS = new Set([\n 'run_start',\n 'assistant_message_start',\n 'assistant_delta',\n 'thinking_delta',\n 'thinking_end',\n 'review_start',\n 'review_delta',\n 'review_end',\n 'review',\n 'tool_start',\n 'tool_update',\n 'tool_end',\n 'assistant_message_end',\n 'progress',\n]);\n\nconst DIRECT_RESPONSE_OWNED_EVENTS = new Set([...STREAM_TOUCH_EVENTS, 'run_end', 'error']);\n\nfunction resolveEventRunId(data: Record<string, unknown>, state: TuiState): string | null {\n if (typeof data.runId === 'string' && data.runId) return data.runId;\n return state.activeRunId ?? state.runStatus.runId ?? state.runStatus.lastCompletedRunId;\n}\n\nexport function shouldSkipDuplicateBroadcastEvent(\n event: string,\n data: Record<string, unknown>,\n state: TuiState,\n source: TuiEventSource,\n): boolean {\n if (source !== 'broadcast') return false;\n if (!DIRECT_RESPONSE_OWNED_EVENTS.has(event)) return false;\n const directRunId = state.runStatus.directStreamRunId;\n if (!directRunId) return false;\n return resolveEventRunId(data, state) === directRunId;\n}\n\nfunction streamEventKey(data: Record<string, unknown>, state: TuiState): string | null {\n const runId = resolveEventRunId(data, state);\n const seq = data.seq;\n if (!runId || typeof seq !== 'number' || !Number.isFinite(seq)) return null;\n return `${runId}:${seq}`;\n}\n\nfunction shouldSkipSeenStreamEvent(\n data: Record<string, unknown>,\n state: TuiState,\n source: TuiEventSource,\n): boolean {\n if (source !== 'agent-response' && source !== 'agent-resume' && source !== 'broadcast') return false;\n const key = streamEventKey(data, state);\n if (!key) return false;\n if (seenStreamEventKeys.has(key)) return true;\n seenStreamEventKeys.add(key);\n return false;\n}\n\nfunction payload(data: Record<string, unknown>): Record<string, unknown> {\n return data.payload && typeof data.payload === 'object' ? data.payload as Record<string, unknown> : {};\n}\n\nfunction assistantForRun(runId: string): AgentMessage {\n let message = assistantByRun.get(runId);\n if (!message) {\n message = createAssistantMessageFromText('') as AgentMessage;\n assistantByRun.set(runId, message);\n }\n return message;\n}\n\nfunction appendAssistantText(message: AgentMessage, delta: string): void {\n const rec = message as { content?: unknown };\n if (!Array.isArray(rec.content)) rec.content = [];\n const content = rec.content as Array<Record<string, unknown>>;\n const last = content[content.length - 1];\n if (last?.type === 'text' && typeof last.text === 'string') {\n last.text += delta;\n return;\n }\n content.push({ type: 'text', text: delta });\n}\n\nfunction appendThinkingText(message: AgentMessage, delta: string): void {\n const rec = message as { content?: unknown };\n if (!Array.isArray(rec.content)) rec.content = [];\n const content = rec.content as Array<Record<string, unknown>>;\n const last = content[content.length - 1];\n if (last?.type === 'thinking' && typeof last.text === 'string') {\n last.text += delta;\n return;\n }\n content.push({ type: 'thinking', text: delta, streaming: true });\n}\n\nfunction appendReviewBlock(message: AgentMessage, review: unknown): void {\n if (!review || typeof review !== 'object' || Array.isArray(review)) return;\n const rec = review as { type?: unknown; target?: unknown };\n if (rec.type !== 'review') return;\n const msg = message as { content?: unknown };\n if (!Array.isArray(msg.content)) msg.content = [];\n const content = msg.content as Array<Record<string, unknown>>;\n const target = typeof rec.target === 'string' ? rec.target : 'working tree changes';\n const existing = content.findIndex((block) => block.type === 'review' && block.target === target);\n if (existing >= 0) {\n content[existing] = {\n ...(review as Record<string, unknown>),\n reviewId: content[existing].reviewId,\n status: content[existing].status === 'error' ? 'error' : 'complete',\n analysisMarkdown: content[existing].analysisMarkdown,\n errorMessage: content[existing].errorMessage,\n };\n return;\n }\n content.push(review as Record<string, unknown>);\n}\n\ntype ReviewContentBlock = Record<string, unknown> & { type?: unknown };\n\nfunction reviewBlocks(message: AgentMessage): ReviewContentBlock[] {\n const content = (message as { content?: unknown }).content;\n return Array.isArray(content)\n ? content.filter((block): block is ReviewContentBlock => !!block && typeof block === 'object')\n : [];\n}\n\nfunction reviewBlockForId(message: AgentMessage, reviewId: string): ReviewContentBlock | undefined {\n return reviewBlocks(message).find((block) => block.type === 'review' && block.reviewId === reviewId);\n}\n\nfunction startReviewBlock(\n message: AgentMessage,\n review: { reviewId: string; target: string; stage: 'preparing' | 'reviewing' },\n): void {\n const existing = reviewBlockForId(message, review.reviewId);\n if (existing) {\n existing.target = review.target || existing.target;\n existing.status = review.stage;\n return;\n }\n const msg = message as { content?: unknown };\n if (!Array.isArray(msg.content)) msg.content = [];\n (msg.content as ReviewContentBlock[]).push({\n type: 'review',\n reviewId: review.reviewId,\n target: review.target || 'working tree changes',\n findings: [],\n overallCorrectness: 'unknown',\n overallExplanation: '',\n status: review.stage,\n });\n}\n\nfunction appendReviewDraft(message: AgentMessage, reviewId: string, delta: string): void {\n const review = reviewBlockForId(message, reviewId);\n if (!review || !delta) return;\n review.status = 'reviewing';\n review.analysisMarkdown = `${typeof review.analysisMarkdown === 'string' ? review.analysisMarkdown : ''}${delta}`;\n}\n\nfunction finishReviewBlock(message: AgentMessage, reviewId: string, status: 'complete' | 'error', errorMessage?: string): void {\n const review = reviewBlockForId(message, reviewId);\n if (!review) return;\n review.status = status;\n if (status === 'error' && errorMessage) review.errorMessage = errorMessage;\n}\n\nfunction finalizeThinking(message: AgentMessage): void {\n const content = (message as { content?: unknown }).content;\n if (!Array.isArray(content)) return;\n for (const block of content) {\n if (!block || typeof block !== 'object') continue;\n const rec = block as { type?: unknown; streaming?: boolean };\n if (rec.type === 'thinking') rec.streaming = false;\n }\n}\n\nfunction errorAssistantMessage(errorContent: string): AgentMessage {\n return {\n ...createAssistantMessageFromText(''),\n stopReason: 'error',\n errorMessage: errorContent,\n } as AgentMessage;\n}\n\nexport function dispatchAgentEvent(\n event: string,\n data: Record<string, unknown>,\n state: TuiState,\n chatLog: ChatLog,\n tui: TUI,\n setActivityStatus: (status: string) => void,\n touchStreamingActivity?: () => void,\n onRunEnded?: () => void,\n onAssistantFinalized?: (message: AgentMessage, options?: { errorMessage?: string }) => void,\n source: TuiEventSource = 'unknown',\n): void {\n if (shouldSkipSeenStreamEvent(data, state, source)) return;\n if (shouldSkipDuplicateBroadcastEvent(event, data, state, source)) return;\n\n if (STREAM_TOUCH_EVENTS.has(event)) touchStreamingActivity?.();\n\n const runId = resolveEventRunId(data, state) ?? state.activeRunId ?? 'default';\n const p = payload(data);\n\n switch (event) {\n case 'run_start': {\n state.activeRunId = runId;\n markRunEvent(state, 'waiting', runId, event, source);\n setActivityStatus('waiting');\n break;\n }\n case 'user_message': {\n const message = p.message as { content?: unknown } | undefined;\n chatLog.addUser(Array.isArray(message?.content) || typeof message?.content === 'string' ? message.content : []);\n tui.requestRender();\n break;\n }\n case 'user_transcript': {\n chatLog.addUser(String(p.text ?? ''));\n tui.requestRender();\n break;\n }\n case 'assistant_message_start': {\n const message = assistantForRun(runId);\n chatLog.startAssistant(message, runId);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('streaming');\n tui.requestRender();\n break;\n }\n case 'assistant_delta': {\n const delta = typeof p.delta === 'string' ? p.delta : '';\n if (!delta) break;\n const message = assistantForRun(runId);\n appendAssistantText(message, delta);\n chatLog.updateAssistant(message, runId);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('streaming');\n tui.requestRender();\n break;\n }\n case 'thinking_delta': {\n const delta = typeof p.delta === 'string' ? p.delta : '';\n if (!delta) break;\n const message = assistantForRun(runId);\n appendThinkingText(message, delta);\n chatLog.updateAssistant(message, runId);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('streaming');\n tui.requestRender();\n break;\n }\n case 'thinking_end': {\n const message = assistantForRun(runId);\n finalizeThinking(message);\n chatLog.updateAssistant(message, runId);\n tui.requestRender();\n break;\n }\n case 'review': {\n const message = assistantForRun(runId);\n appendReviewBlock(message, p.review);\n chatLog.updateAssistant(message, runId);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('streaming');\n tui.requestRender();\n break;\n }\n case 'review_start': {\n const reviewId = typeof p.reviewId === 'string' ? p.reviewId : '';\n if (!reviewId) break;\n const message = assistantForRun(runId);\n startReviewBlock(message, {\n reviewId,\n target: typeof p.target === 'string' ? p.target : 'working tree changes',\n stage: p.stage === 'preparing' ? 'preparing' : 'reviewing',\n });\n chatLog.startAssistant(message, runId);\n chatLog.updateAssistant(message, runId);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('reviewing');\n tui.requestRender();\n break;\n }\n case 'review_delta': {\n const reviewId = typeof p.reviewId === 'string' ? p.reviewId : '';\n const delta = typeof p.delta === 'string' ? p.delta : '';\n if (!reviewId || !delta) break;\n const message = assistantForRun(runId);\n appendReviewDraft(message, reviewId, delta);\n chatLog.updateAssistant(message, runId);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('reviewing');\n tui.requestRender();\n break;\n }\n case 'review_end': {\n const reviewId = typeof p.reviewId === 'string' ? p.reviewId : '';\n if (!reviewId) break;\n const message = assistantForRun(runId);\n finishReviewBlock(\n message,\n reviewId,\n p.status === 'error' ? 'error' : 'complete',\n typeof p.message === 'string' ? p.message : undefined,\n );\n chatLog.updateAssistant(message, runId);\n tui.requestRender();\n break;\n }\n case 'tool_start': {\n const toolName = String(p.toolName ?? 'unknown');\n const toolCallId = String(p.toolCallId || '');\n if (!toolCallId) break;\n chatLog.startTool(toolCallId, toolName, p.args ?? {}, runId);\n chatLog.markToolExecutionStarted(toolCallId);\n markRunEvent(state, 'tool', runId, event, source);\n setActivityStatus('running');\n tui.requestRender();\n break;\n }\n case 'tool_update': {\n const toolName = String(p.toolName ?? 'unknown');\n const toolCallId = String(p.toolCallId || '');\n if (!toolCallId) break;\n chatLog.startTool(toolCallId, toolName, {}, runId);\n if ('details' in p) chatLog.updateToolDetails(toolCallId, p.details);\n if (typeof p.textDelta === 'string') chatLog.updateToolResult(toolCallId, { text: p.textDelta }, false, true);\n markRunEvent(state, 'tool', runId, event, source);\n setActivityStatus('running');\n tui.requestRender();\n break;\n }\n case 'tool_end': {\n const toolCallId = String(p.toolCallId || '');\n if (!toolCallId) break;\n chatLog.updateToolResult(toolCallId, p.result, p.status === 'error' || p.status === 'cancelled', false);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('streaming');\n tui.requestRender();\n break;\n }\n case 'assistant_message_end': {\n const message = assistantForRun(runId);\n finalizeThinking(message);\n chatLog.finalizeAssistant(message, runId);\n assistantByRun.delete(runId);\n onAssistantFinalized?.(message);\n markRunEvent(state, 'streaming', runId, event, source);\n setActivityStatus('streaming');\n tui.requestRender();\n break;\n }\n case 'error': {\n const errorContent = formatAgentRunErrorForDisplay(String(p.message ?? 'Unknown error'));\n const message = errorAssistantMessage(errorContent);\n chatLog.finalizeAssistant(message, runId);\n onAssistantFinalized?.(message, { errorMessage: errorContent });\n assistantByRun.delete(runId);\n state.activeRunId = null;\n markRunIdleAfterCompletion(state, runId, event, source);\n setActivityStatus('idle');\n onRunEnded?.();\n tui.requestRender();\n break;\n }\n case 'run_end': {\n assistantByRun.delete(runId);\n state.activeRunId = null;\n markRunIdleAfterCompletion(state, runId, event, source);\n setActivityStatus('idle');\n onRunEnded?.();\n tui.requestRender();\n break;\n }\n case 'progress': {\n const stage = typeof p.stage === 'string' ? p.stage : '';\n const message = typeof p.message === 'string' ? p.message : stage;\n state.progressMessage = message || null;\n markRunEvent(state, 'progress', runId, event, source);\n setActivityStatus(message ? `progress: ${message}` : 'running');\n tui.requestRender();\n break;\n }\n }\n}\n\nexport const DEFAULT_STREAMING_WATCHDOG_MS = 30_000;\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-command-formatters.js","names":[],"sources":["../../../src/tui/tui-command-formatters.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { dirname, join } from 'node:path';\n\nimport { visibleWidth } from '@earendil-works/pi-tui';\n\nimport type {\n TuiCompactionResult,\n TuiExportFormat,\n TuiModelChoice,\n TuiShareAudience,\n TuiShareMode,\n TuiShareRequest,\n TuiShareResult,\n TuiSessionStats,\n TuiSessionItem,\n TuiTranscriptTreeEntry,\n} from './tui-backend.js';\nimport { computeContextUsagePercent, formatContextUsageLabel } from './tui-context-usage.js';\nimport type { TuiState } from './tui-types.js';\nimport { formatSessionPickerDescription } from './tui-session-format.js';\nimport { formatTuiTranscriptTreeEntryDisplayText } from './tui-transcript-tree.js';\nimport { createWorkflowCatalog, type CatalogEntry } from '../agent/workflow/catalog.js';\nimport { normalizeVerboseLevel, type VerboseLevel } from '../agent/transcript/thinking-types.js';\nimport type { AuthProfileEntry } from '../auth/profiles/index.js';\nimport type { Config } from '../config/schema.js';\nimport { resolveConfigPath } from '../config/index.js';\nimport type { ProjectTrustStoreEntry } from '../project-trust/trust-store.js';\nimport {\n getProviderDisplayName,\n getSortedProviders,\n providerSupportsApiKey,\n providerSupportsOAuth,\n} from '../providers/index.js';\nimport { parseAgentSessionKey } from '../routing/agent-session-key.js';\nimport { getLogDir, getRuntimeLogStats } from '../utils/logger.js';\n\nexport interface TuiExportRequest {\n format: TuiExportFormat;\n outputPath?: string;\n}\n\nexport interface TuiImportRequest {\n inputPath?: string;\n targetKey?: string;\n}\n\nexport type TuiDebugDeps = {\n state: TuiState;\n tui: unknown;\n};\n\nconst SHARE_AUDIENCES = new Set<TuiShareAudience>(['friend', 'colleague', 'public']);\nconst SHARE_MODES = new Set<TuiShareMode>(['auto', 'force-file', 'force-site', 'force-zip']);\n\nfunction formatMaybe(value: string | undefined | null): string {\n const trimmed = value?.trim();\n return trimmed ? trimmed : '-';\n}\n\nfunction formatNumber(value: number | undefined | null): string {\n return value == null ? '-' : value.toLocaleString();\n}\n\nexport function formatModelLabel(state: TuiState): string {\n const provider = state.sessionInfo.modelProvider?.trim();\n const model = state.sessionInfo.model?.trim();\n if (provider && model) {\n return `${provider}/${model}`;\n }\n return formatMaybe(model ?? provider);\n}\n\nexport function nextVerboseLevel(current: string | undefined | null): VerboseLevel {\n const normalized = normalizeVerboseLevel(current);\n if (normalized === 'off') return 'on';\n if (normalized === 'on') return 'full';\n return 'off';\n}\n\nfunction splitCommandArgs(input: string): string[] {\n const tokens: string[] = [];\n const re = /\"([^\"]*)\"|'([^']*)'|(\\S+)/g;\n for (const match of input.matchAll(re)) {\n tokens.push(match[1] ?? match[2] ?? match[3] ?? '');\n }\n return tokens;\n}\n\nfunction normalizeExportFormat(raw: string | undefined): TuiExportFormat | undefined {\n const value = raw?.trim().toLowerCase();\n if (value === 'json' || value === 'markdown' || value === 'md' || value === 'html') {\n return value === 'md' ? 'markdown' : value;\n }\n return undefined;\n}\n\nfunction inferExportFormatFromPath(path: string | undefined): TuiExportFormat | undefined {\n const lower = path?.trim().toLowerCase();\n if (!lower) return undefined;\n if (lower.endsWith('.json')) return 'json';\n if (lower.endsWith('.md') || lower.endsWith('.markdown')) return 'markdown';\n if (lower.endsWith('.html') || lower.endsWith('.htm')) return 'html';\n return undefined;\n}\n\nexport function parseTuiExportRequest(args: string): TuiExportRequest {\n const tokens = splitCommandArgs(args.trim());\n const first = tokens[0];\n const explicitFormat = normalizeExportFormat(first);\n if (explicitFormat) {\n const outputPath = tokens[1];\n return { format: explicitFormat, outputPath };\n }\n const outputPath = first;\n return {\n format: inferExportFormatFromPath(outputPath) ?? 'html',\n outputPath,\n };\n}\n\nexport function parseTuiImportRequest(args: string): TuiImportRequest {\n const tokens = splitCommandArgs(args.trim());\n return {\n inputPath: tokens[0],\n targetKey: tokens[1],\n };\n}\n\nexport function parseTuiShareRequest(args: string): TuiShareRequest | null {\n const tokens = splitCommandArgs(args.trim());\n const path = tokens.shift();\n if (!path) return null;\n\n const request: TuiShareRequest = { path };\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i]!;\n const lower = token.toLowerCase();\n const next = tokens[i + 1];\n\n if (lower === '--friend' || lower === '--colleague' || lower === '--public') {\n request.audience = lower.slice(2) as TuiShareAudience;\n continue;\n }\n if (SHARE_AUDIENCES.has(lower as TuiShareAudience)) {\n request.audience = lower as TuiShareAudience;\n continue;\n }\n if (lower === '--file') {\n request.mode = 'force-file';\n continue;\n }\n if (lower === '--site') {\n request.mode = 'force-site';\n continue;\n }\n if (lower === '--zip') {\n request.mode = 'force-zip';\n continue;\n }\n if (SHARE_MODES.has(lower as TuiShareMode)) {\n request.mode = lower as TuiShareMode;\n continue;\n }\n if ((lower === '--title' || lower === '-t') && next) {\n request.title = next;\n i += 1;\n continue;\n }\n if ((lower === '--description' || lower === '--desc' || lower === '-d') && next) {\n request.description = next;\n i += 1;\n continue;\n }\n }\n return request;\n}\n\nexport function formatTuiShareResult(result: TuiShareResult): string {\n const lines = [\n 'Share',\n '',\n `Kind: ${result.kind}`,\n `URL: ${result.shareUrl}`,\n ];\n if (result.title?.trim()) lines.push(`Title: ${result.title.trim()}`);\n if (result.expiresAt?.trim()) lines.push(`Expires: ${result.expiresAt.trim()}`);\n if (result.maxViews != null) lines.push(`Max Views: ${formatNumber(result.maxViews)}`);\n if (result.reachability?.trim()) {\n lines.push(`Reachability: ${result.reachability.trim()}`);\n }\n if (result.reachabilityHint?.trim()) {\n lines.push(`Hint: ${result.reachabilityHint.trim()}`);\n }\n if (result.thumbnailUrl?.trim()) {\n lines.push(`Thumbnail: ${result.thumbnailUrl.trim()}`);\n }\n if (result.routingReason?.trim()) {\n lines.push(`Routing: ${result.routingReason.trim()}`);\n }\n if (result.routingHint?.trim()) {\n lines.push(`Routing Hint: ${result.routingHint.trim()}`);\n }\n return lines.join('\\n');\n}\n\nfunction formatModelChoice(choice: TuiModelChoice): string {\n const ref = `${choice.provider}/${choice.id}`;\n const name = choice.name?.trim();\n const suffix = name && name !== choice.id ? ` — ${name}` : '';\n return `${ref}${suffix}`;\n}\n\nfunction formatAuthProfileExpires(expires: number | undefined): string {\n if (!expires) return '';\n const date = new Date(expires);\n if (Number.isNaN(date.getTime())) return '';\n return `, expires ${date.toISOString()}`;\n}\n\nfunction formatAuthProfileLine(profile: AuthProfileEntry): string {\n const email = profile.email?.trim() ? `, ${profile.email.trim()}` : '';\n const key = profile.hasKey ? 'has credential' : 'empty credential';\n return ` ${profile.provider} — ${profile.profileId} (${profile.type}, ${key}${email}${formatAuthProfileExpires(profile.expires)})`;\n}\n\nexport function formatTuiStoredAuthProfilesInfo(\n profiles: AuthProfileEntry[],\n options: { authStorePath?: string } = {},\n): string {\n if (profiles.length === 0) {\n return [\n 'Auth Profiles',\n '',\n 'No stored auth profiles found.',\n 'Environment variables and config credentials are unchanged by /logout.',\n ].join('\\n');\n }\n\n const sorted = [...profiles].sort((a, b) => {\n const byProvider = a.provider.localeCompare(b.provider);\n return byProvider || a.profileId.localeCompare(b.profileId);\n });\n const lines = ['Auth Profiles', '', ...sorted.map(formatAuthProfileLine)];\n lines.push('', 'Use /logout <provider> to remove stored profiles for one provider.');\n lines.push('Environment variables and config credentials are unchanged.');\n if (options.authStorePath) {\n lines.push(`Store: ${options.authStorePath}`);\n }\n return lines.join('\\n');\n}\n\nexport function formatTuiLoginInfo(provider?: string): string {\n const trimmedProvider = provider?.trim();\n if (trimmedProvider) {\n const displayName = getProviderDisplayName(trimmedProvider);\n const lines = ['Login', '', `${trimmedProvider} — ${displayName}`, ''];\n if (providerSupportsOAuth(trimmedProvider)) {\n lines.push(`OAuth: /login ${trimmedProvider} (or xopc auth login ${trimmedProvider})`);\n }\n if (providerSupportsApiKey(trimmedProvider)) {\n lines.push(`API key: xopc auth set ${trimmedProvider} <key>`);\n }\n if (!providerSupportsOAuth(trimmedProvider) && !providerSupportsApiKey(trimmedProvider)) {\n lines.push('No direct xopc auth setup command is advertised for this provider.');\n }\n lines.push('', 'In the TUI, /login <provider> runs OAuth directly when supported.');\n lines.push('Stored credentials can be inspected with /logout and removed with /logout <provider>.');\n return lines.join('\\n');\n }\n\n const oauthProviders = getSortedProviders().filter(providerSupportsOAuth);\n const lines = ['Login', '', 'OAuth providers:'];\n if (oauthProviders.length === 0) {\n lines.push(' none detected');\n } else {\n for (const nextProvider of oauthProviders) {\n lines.push(` ${nextProvider} — ${getProviderDisplayName(nextProvider)}`);\n }\n }\n lines.push(\n '',\n 'Use /login <provider> to start OAuth directly when supported.',\n 'API keys: xopc auth set <provider> <key>',\n 'Stored credentials: /logout',\n );\n return lines.join('\\n');\n}\n\nexport function formatTuiChangelogInfo(markdown: string, sourcePath?: string): string {\n const trimmed = markdown.trim();\n if (!trimmed) {\n return 'What\\'s New\\n\\nNo changelog entries found.';\n }\n\n const lines = trimmed.split(/\\r?\\n/);\n const firstVersionIndex = lines.findIndex((line) => /^##\\s+/.test(line));\n const body = firstVersionIndex >= 0 ? lines.slice(firstVersionIndex).join('\\n').trim() : trimmed;\n const suffix = sourcePath ? `\\n\\nSource: ${sourcePath}` : '';\n return `What's New\\n\\n${body}${suffix}`;\n}\n\nexport function loadTuiChangelogInfo(): string {\n const candidates = [\n join(process.cwd(), 'CHANGELOG.md'),\n join(process.cwd(), 'CHANGELOG'),\n join(process.cwd(), 'docs', 'changelog.md'),\n ];\n const path = candidates.find((candidate) => existsSync(candidate));\n if (!path) {\n return formatTuiChangelogInfo('');\n }\n try {\n return formatTuiChangelogInfo(readFileSync(path, 'utf8'), path);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n return `What's New\\n\\nFailed to read changelog: ${errorMessage}`;\n }\n}\n\nexport function formatTuiDebugInfo(params: {\n state: TuiState;\n terminal: { columns?: number; rows?: number };\n renderedLines: string[];\n logStats: unknown;\n}): string {\n const width = params.terminal.columns ?? 0;\n const height = params.terminal.rows ?? 0;\n return [\n `Debug output at ${new Date().toISOString()}`,\n `Terminal: ${width}x${height}`,\n `Total rendered lines: ${params.renderedLines.length}`,\n '',\n '=== TUI State ===',\n JSON.stringify(params.state, null, 2),\n '',\n '=== Runtime Log Stats ===',\n JSON.stringify(params.logStats, null, 2),\n '',\n '=== Rendered lines with visible widths ===',\n ...params.renderedLines.map((line, index) => `[${index}] (w=${visibleWidth(line)}) ${JSON.stringify(line)}`),\n '',\n ].join('\\n');\n}\n\nexport function writeTuiDebugInfo(deps: TuiDebugDeps): string {\n const debugPath = join(getLogDir(), 'xopc-tui-debug.log');\n const terminal = (deps.tui as unknown as { terminal?: { columns?: number; rows?: number } }).terminal ?? {};\n const width = terminal.columns ?? 100;\n const renderedLines =\n typeof (deps.tui as unknown as { render?: (width: number) => string[] }).render === 'function'\n ? (deps.tui as unknown as { render: (width: number) => string[] }).render(width)\n : [];\n const content = formatTuiDebugInfo({\n state: deps.state,\n terminal,\n renderedLines,\n logStats: getRuntimeLogStats(),\n });\n mkdirSync(dirname(debugPath), { recursive: true });\n writeFileSync(debugPath, content, 'utf8');\n return debugPath;\n}\n\nexport function formatTuiModelsInfo(models: TuiModelChoice[]): string {\n if (models.length === 0) {\n return 'Models\\n\\nNo models available.';\n }\n const lines = ['Models', '', ...models.map((model) => ` ${formatModelChoice(model)}`)];\n return lines.join('\\n');\n}\n\nexport function formatTuiSessionListInfo(\n sessions: TuiSessionItem[],\n options: { currentSessionKey?: string; limit?: number } = {},\n): string {\n if (sessions.length === 0) {\n return 'Sessions\\n\\nNo sessions found.';\n }\n const limit = options.limit ?? 20;\n const visible = sessions.slice(0, limit);\n const lines = ['Sessions', ''];\n for (const session of visible) {\n const current = session.key === options.currentSessionKey ? '* ' : ' ';\n const label = session.displayName?.trim() || session.key;\n const description = formatSessionPickerDescription(session, { showKey: Boolean(session.displayName) });\n lines.push(`${current}${label}${description ? ` — ${description}` : ''}`);\n }\n if (sessions.length > visible.length) {\n lines.push('', `Showing ${visible.length} of ${sessions.length} sessions. Use /resume to search.`);\n }\n return lines.join('\\n');\n}\n\nfunction sessionTreeGroup(session: TuiSessionItem): { agentId: string; root: string; leaf: string } {\n const parsed = parseAgentSessionKey(session.key);\n const agentId = parsed?.agentId ?? 'unknown';\n const rest = parsed?.rest ?? session.key;\n const parts = rest.split(':').filter(Boolean);\n const root = parts[0] ?? rest;\n const leaf = parts.length > 1 ? parts.slice(1).join(':') : rest;\n return { agentId, root, leaf };\n}\n\nexport function formatTuiSessionTreeInfo(\n sessions: TuiSessionItem[],\n options: { currentSessionKey?: string; limitPerGroup?: number } = {},\n): string {\n if (sessions.length === 0) {\n return 'Session Tree\\n\\nNo sessions found.';\n }\n const limitPerGroup = options.limitPerGroup ?? 8;\n const byKey = new Map(sessions.map((session) => [session.key, session]));\n const groups = new Map<string, TuiSessionItem[]>();\n for (const session of sessions) {\n const group = sessionTreeGroup(session);\n const key = `${group.agentId}:${group.root}`;\n const list = groups.get(key) ?? [];\n list.push(session);\n groups.set(key, list);\n }\n\n const lines = ['Session Tree', ''];\n const sortedGroups = [...groups.entries()].sort(([a], [b]) => a.localeCompare(b));\n for (const [groupKey, groupSessions] of sortedGroups) {\n const [agentId, ...rootParts] = groupKey.split(':');\n lines.push(`${agentId}/${rootParts.join(':')}`);\n const sorted = [...groupSessions].sort((a, b) => (b.updatedAt ?? 0) - (a.updatedAt ?? 0));\n const visible = sorted.slice(0, limitPerGroup);\n for (const session of visible) {\n const current = session.key === options.currentSessionKey ? '*' : ' ';\n const group = sessionTreeGroup(session);\n const label = session.displayName?.trim() || group.leaf;\n const description = formatSessionPickerDescription(session, {\n showKey: Boolean(session.displayName),\n });\n lines.push(` ${current} ${label}${description ? ` — ${description}` : ''}`);\n if (session.forkedFromSessionKey) {\n const source = byKey.get(session.forkedFromSessionKey);\n const sourceLabel = source?.displayName?.trim() || session.forkedFromSessionKey;\n lines.push(` forked from ${sourceLabel}`);\n }\n }\n if (sorted.length > visible.length) {\n lines.push(` ... ${sorted.length - visible.length} more`);\n }\n }\n lines.push('', 'Use /resume to search and open a session.');\n return lines.join('\\n');\n}\n\nexport function formatTuiTranscriptTreeInfo(\n entries: TuiTranscriptTreeEntry[],\n options: { limit?: number; allEntries?: TuiTranscriptTreeEntry[] } = {},\n): string {\n if (entries.length === 0) {\n return 'Transcript Tree\\n\\nNo transcript entries found.';\n }\n const limit = options.limit ?? 80;\n const visible = entries.slice(0, limit);\n const prefixes = transcriptTreeInfoPrefixes(visible, options.allEntries ?? entries);\n const lines = ['Transcript Tree', ''];\n for (const entry of visible) {\n const prefix = prefixes.get(entry.id) ?? (entry.depth === 0 ? '-' : ' └─');\n const activeMarker = entry.isOnActivePath || entry.isCurrentLeaf ? '• ' : '';\n const turn = entry.turn > 0 ? `#${entry.turn} ` : '';\n const userLabel = entry.userLabel ? `[${entry.userLabel}] ` : '';\n lines.push(`${prefix} ${activeMarker}${turn}${userLabel}${formatTuiTranscriptTreeEntryDisplayText(entry)}`);\n }\n if (entries.length > visible.length) {\n lines.push('', `Showing ${visible.length} of ${entries.length} entries.`);\n }\n lines.push('', 'Interactive /tree supports search, filters, folds, labels, and fork selection.');\n return lines.join('\\n');\n}\n\nfunction transcriptTreeInfoPrefixes(\n entries: TuiTranscriptTreeEntry[],\n allEntries: TuiTranscriptTreeEntry[] = entries,\n): Map<string, string> {\n const byId = new Map(allEntries.map((entry) => [entry.id, entry]));\n const visibleIds = new Set(entries.map((entry) => entry.id));\n const parentByEntryId = new Map<string, string | null>();\n const childrenByParentId = new Map<string | null, string[]>();\n\n const nearestVisibleParent = (entry: TuiTranscriptTreeEntry, index: number): string | null => {\n let parentId = entry.parentId;\n while (parentId) {\n if (visibleIds.has(parentId)) return parentId;\n parentId = byId.get(parentId)?.parentId;\n }\n if (entry.depth > 0) {\n for (let i = index - 1; i >= 0; i -= 1) {\n const candidate = entries[i];\n if (candidate && candidate.depth < entry.depth) return candidate.id;\n }\n }\n return null;\n };\n\n for (const [index, entry] of entries.entries()) {\n const parentId = nearestVisibleParent(entry, index);\n parentByEntryId.set(entry.id, parentId);\n const children = childrenByParentId.get(parentId) ?? [];\n children.push(entry.id);\n childrenByParentId.set(parentId, children);\n }\n\n const prefixes = new Map<string, string>();\n for (const entry of entries) {\n const visibleParentId = parentByEntryId.get(entry.id) ?? null;\n if (visibleParentId === null) {\n prefixes.set(entry.id, '-');\n continue;\n }\n\n const ancestors: string[] = [];\n let parentId: string | null | undefined = visibleParentId;\n while (parentId) {\n ancestors.unshift(parentId);\n parentId = parentByEntryId.get(parentId) ?? null;\n }\n\n let prefix = ' ';\n for (const ancestor of ancestors.slice(1)) {\n prefix += hasTranscriptTreeInfoFollowingSibling(\n ancestor,\n parentByEntryId.get(ancestor) ?? null,\n childrenByParentId,\n )\n ? '│ '\n : ' ';\n }\n prefix += hasTranscriptTreeInfoFollowingSibling(entry.id, visibleParentId, childrenByParentId)\n ? '├─'\n : '└─';\n prefixes.set(entry.id, prefix);\n }\n return prefixes;\n}\n\nfunction hasTranscriptTreeInfoFollowingSibling(\n entryId: string,\n parentId: string | null,\n childrenByParentId: Map<string | null, string[]>,\n): boolean {\n const siblings = childrenByParentId.get(parentId) ?? [];\n return siblings.indexOf(entryId) < siblings.length - 1;\n}\n\nexport function formatTuiWorkflowsInfo(entries: CatalogEntry[]): string {\n if (entries.length === 0) {\n return 'Workflows\\n\\nNo workflows found.';\n }\n const lines = ['Workflows', ''];\n for (const entry of entries) {\n const tags = entry.tags?.length ? ` [${entry.tags.join(', ')}]` : '';\n lines.push(` ${entry.name} (${entry.source})${tags}`);\n if (entry.description) {\n lines.push(` ${entry.description}`);\n }\n }\n lines.push('', 'Run a workflow with /<name>, or inspect one with /workflow view <name>.');\n return lines.join('\\n');\n}\n\nexport function formatTuiWorkflowDetail(name: string): string {\n const catalog = createWorkflowCatalog();\n const loaded = catalog.load(name);\n const lines = [\n `Workflow: ${loaded.name}`,\n '',\n `Source: ${loaded.metadata.source}`,\n `Description: ${loaded.description}`,\n `Revision: ${loaded.revision}`,\n ];\n if (loaded.metadata.whenToUse) {\n lines.push(`When to use: ${loaded.metadata.whenToUse}`);\n }\n if (loaded.metadata.tags.length) {\n lines.push(`Tags: ${loaded.metadata.tags.join(', ')}`);\n }\n if (loaded.metadata.estimatedAgents) {\n lines.push(`Agents: ${loaded.metadata.estimatedAgents.min}-${loaded.metadata.estimatedAgents.max}`);\n }\n lines.push('', 'Flow:', loaded.graph.nodes.map((node) => `- ${node.title} (${node.kind})`).join('\\n'));\n return lines.join('\\n');\n}\n\nfunction formatTuiSessionStatsBlock(stats?: TuiSessionStats): string[] {\n if (!stats) return [];\n return [\n '',\n 'Messages',\n `User: ${formatNumber(stats.userMessages)}`,\n `Assistant: ${formatNumber(stats.assistantMessages)}`,\n `Tool Calls: ${formatNumber(stats.toolCalls)}`,\n `Tool Results: ${formatNumber(stats.toolResults)}`,\n `Context Rows: ${formatNumber(stats.contextRows)}`,\n `Total Rows: ${formatNumber(stats.totalMessages)}`,\n '',\n 'Token Usage',\n `Input: ${formatNumber(stats.tokens.input)}`,\n `Output: ${formatNumber(stats.tokens.output)}`,\n `Cache Read: ${formatNumber(stats.tokens.cacheRead)}`,\n `Cache Write: ${formatNumber(stats.tokens.cacheWrite)}`,\n `Total: ${formatNumber(stats.tokens.total)}`,\n ];\n}\n\nexport function formatTuiSessionInfo(state: TuiState, stats?: TuiSessionStats): string {\n const parsedKey = parseAgentSessionKey(state.currentSessionKey);\n const tokenEstimate = state.sessionInfo.totalTokens ?? state.sessionInfo.contextTokens;\n const contextPercent =\n state.sessionInfo.contextUsagePercent ??\n computeContextUsagePercent(tokenEstimate, state.sessionInfo.contextWindow);\n const contextLabel =\n formatContextUsageLabel(contextPercent, state.sessionInfo.contextWindow) ?? '-';\n const connectionLabel = state.isConnected ? 'connected' : 'disconnected';\n\n return [\n 'Session Info',\n '',\n `Name: ${formatMaybe(state.sessionInfo.displayName)}`,\n `Key: ${state.currentSessionKey}`,\n `Agent: ${formatMaybe(parsedKey?.agentId)}`,\n `Connection: ${connectionLabel} (${formatMaybe(state.connectionStatus)})`,\n `Activity: ${formatMaybe(state.activityStatus)}`,\n `Model: ${formatModelLabel(state)}`,\n `Thinking: ${formatMaybe(state.sessionInfo.thinkingLevel)}`,\n `Reasoning: ${formatMaybe(state.sessionInfo.reasoningLevel)}`,\n `Verbose: ${formatMaybe(state.sessionInfo.verboseLevel)}`,\n `Tokens: ${formatNumber(tokenEstimate)}`,\n `Context: ${contextLabel}`,\n `Tools: ${state.toolsExpanded ? 'expanded' : 'collapsed'}`,\n `Thinking Display: ${state.showThinking ? 'on' : 'off'}`,\n `Queue: ${state.messageFollowUpQueue.length}`,\n `Steering Queue: ${state.steeringQueue.length}`,\n ...formatTuiSessionStatsBlock(stats),\n ].join('\\n');\n}\n\nexport function formatTuiUsageInfo(state: TuiState, stats?: TuiSessionStats): string {\n const tokenEstimate = state.sessionInfo.totalTokens ?? state.sessionInfo.contextTokens;\n const contextPercent =\n state.sessionInfo.contextUsagePercent ??\n computeContextUsagePercent(tokenEstimate, state.sessionInfo.contextWindow);\n const contextLabel =\n formatContextUsageLabel(contextPercent, state.sessionInfo.contextWindow) ?? '-';\n\n return [\n 'Usage',\n '',\n `Estimated Tokens: ${formatNumber(tokenEstimate)}`,\n `Context Window: ${formatNumber(state.sessionInfo.contextWindow)}`,\n `Context Usage: ${contextLabel}`,\n `Model: ${formatModelLabel(state)}`,\n ...(stats\n ? [\n '',\n 'Transcript Tokens',\n `Input: ${formatNumber(stats.tokens.input)}`,\n `Output: ${formatNumber(stats.tokens.output)}`,\n `Cache Read: ${formatNumber(stats.tokens.cacheRead)}`,\n `Cache Write: ${formatNumber(stats.tokens.cacheWrite)}`,\n `Total: ${formatNumber(stats.tokens.total)}`,\n '',\n 'Transcript Rows',\n `User: ${formatNumber(stats.userMessages)}`,\n `Assistant: ${formatNumber(stats.assistantMessages)}`,\n `Tool Calls: ${formatNumber(stats.toolCalls)}`,\n `Tool Results: ${formatNumber(stats.toolResults)}`,\n `Context Rows: ${formatNumber(stats.contextRows)}`,\n `Total Rows: ${formatNumber(stats.totalMessages)}`,\n ]\n : []),\n ].join('\\n');\n}\n\nexport function formatTuiCompactionResult(result: TuiCompactionResult): string {\n if (!result.compacted) {\n return result.summary ?? 'Nothing to compact';\n }\n const before = formatNumber(result.tokensBefore);\n const after = formatNumber(result.tokensAfter);\n const summary = result.transcriptSummary?.trim();\n const lines = [\n '[compaction]',\n '',\n `Tokens: ${before} -> ${after}`,\n ];\n if (summary) {\n lines.push('', summary);\n } else if (result.summary) {\n lines.push('', result.summary);\n }\n return lines.join('\\n');\n}\n\nexport function formatTuiContextInfo(state: TuiState): string {\n const tokenEstimate = state.sessionInfo.totalTokens ?? state.sessionInfo.contextTokens;\n const contextPercent =\n state.sessionInfo.contextUsagePercent ??\n computeContextUsagePercent(tokenEstimate, state.sessionInfo.contextWindow);\n const contextLabel =\n formatContextUsageLabel(contextPercent, state.sessionInfo.contextWindow) ?? '-';\n const remaining =\n tokenEstimate != null && state.sessionInfo.contextWindow != null\n ? Math.max(0, state.sessionInfo.contextWindow - tokenEstimate)\n : null;\n\n return [\n 'Context',\n '',\n `Used: ${formatNumber(tokenEstimate)}`,\n `Window: ${formatNumber(state.sessionInfo.contextWindow)}`,\n `Remaining: ${formatNumber(remaining)}`,\n `Usage: ${contextLabel}`,\n ].join('\\n');\n}\n\nexport function formatTuiConfigInfo(state: TuiState): string {\n const scopedModels =\n state.scopedModelRefs == null\n ? 'all'\n : state.scopedModelRefs.length === 0\n ? 'none'\n : state.scopedModelRefs.join(', ');\n return [\n 'Config',\n '',\n `Session: ${state.currentSessionKey}`,\n `Model: ${formatModelLabel(state)}`,\n `Thinking: ${formatMaybe(state.sessionInfo.thinkingLevel)}`,\n `Reasoning: ${formatMaybe(state.sessionInfo.reasoningLevel)}`,\n `Verbose: ${formatMaybe(state.sessionInfo.verboseLevel)}`,\n `Workspace: ${formatMaybe(state.sessionInfo.effectiveWorkspacePath)}`,\n `Tools: ${state.toolsExpanded ? 'expanded' : 'collapsed'}`,\n `Thinking Display: ${state.showThinking ? 'on' : 'off'}`,\n `Scoped Models: ${scopedModels}`,\n ].join('\\n');\n}\n\ntype TuiTrustProvenance = {\n extensionId: string;\n source: string;\n installMethod?: string;\n};\n\nfunction extensionSecurityConfig(config: Config): {\n checkPermissions: boolean;\n allowUntrusted: boolean;\n allow: string[];\n trackProvenance: boolean;\n allowPromptInjection: boolean;\n} {\n const raw = (config.extensions as Record<string, unknown> | undefined)?.security;\n const sec = raw && typeof raw === 'object' ? raw as Record<string, unknown> : {};\n return {\n checkPermissions: sec.checkPermissions !== false,\n allowUntrusted: sec.allowUntrusted === true,\n allow: Array.isArray(sec.allow) ? sec.allow.filter((id): id is string => typeof id === 'string') : [],\n trackProvenance: sec.trackProvenance !== false,\n allowPromptInjection: sec.allowPromptInjection === true,\n };\n}\n\nexport function formatTuiTrustInfo(\n config: Config,\n options: {\n configPath?: string;\n provenance?: TuiTrustProvenance[];\n cwd?: string;\n projectTrustStorePath?: string;\n projectTrustEntry?: ProjectTrustStoreEntry | null;\n projectTrustSessionDecision?: boolean | null;\n hasProjectResources?: boolean;\n } = {},\n): string {\n const security = extensionSecurityConfig(config);\n const enabled = Array.isArray((config.extensions as Record<string, unknown> | undefined)?.enabled)\n ? ((config.extensions as Record<string, unknown>).enabled as unknown[])\n .filter((id): id is string => typeof id === 'string')\n : [];\n const disabled = Array.isArray((config.extensions as Record<string, unknown> | undefined)?.disabled)\n ? ((config.extensions as Record<string, unknown>).disabled as unknown[])\n .filter((id): id is string => typeof id === 'string')\n : [];\n const provenance = options.provenance ?? [];\n const projectTrustEntry = options.projectTrustEntry ?? null;\n const projectTrustStatus =\n options.projectTrustSessionDecision !== null && options.projectTrustSessionDecision !== undefined\n ? `${options.projectTrustSessionDecision ? 'trusted' : 'not trusted'} (this session)`\n : projectTrustEntry\n ? `${projectTrustEntry.decision ? 'trusted' : 'not trusted'} from ${projectTrustEntry.path}`\n : 'not saved';\n const lines = [\n 'Extension Trust',\n '',\n 'Project trust gates project-local xopc resources and extension UI context.',\n '',\n `Project: ${options.cwd ?? 'unknown'}`,\n `Project Resources: ${options.hasProjectResources === undefined ? 'unknown' : options.hasProjectResources ? 'detected' : 'none detected'}`,\n `Project Trust: ${projectTrustStatus}`,\n `Trust Store: ${options.projectTrustStorePath ?? '(default)'}`,\n '',\n `Config: ${options.configPath ?? resolveConfigPath()}`,\n `Permission Checks: ${security.checkPermissions ? 'on' : 'off'}`,\n `Allow Untrusted: ${security.allowUntrusted ? 'yes' : 'no'}`,\n `Prompt Injection Hooks: ${security.allowPromptInjection ? 'allowed' : 'blocked'}`,\n `Track Provenance: ${security.trackProvenance ? 'on' : 'off'}`,\n `Allowlist: ${security.allow.length ? security.allow.join(', ') : '(empty)'}`,\n `Enabled: ${enabled.length ? enabled.join(', ') : '(activation rules/defaults)'}`,\n `Disabled: ${disabled.length ? disabled.join(', ') : '(none)'}`,\n ];\n\n if (provenance.length > 0) {\n lines.push('', 'Loaded Extensions:');\n for (const item of provenance.slice(0, 20)) {\n const method = item.installMethod ? `, ${item.installMethod}` : '';\n lines.push(` ${item.extensionId} — ${item.source}${method}`);\n }\n if (provenance.length > 20) {\n lines.push(` ... ${provenance.length - 20} more`);\n }\n }\n\n lines.push(\n '',\n 'Use /trust to change project trust for this folder or its parent.',\n 'To trust specific extensions, add their ids to extensions.security.allow and run /reload.',\n 'To audit installed extensions, run: xopc extensions audit',\n );\n return lines.join('\\n');\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-commands.js","names":["listAllAuthProfiles"],"sources":["../../../src/tui/tui-commands.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { KeybindingsManager, TUI } from '@earendil-works/pi-tui';\n\nimport type {\n TuiCompactionResult,\n TuiModelChoice,\n TuiShareRequest,\n TuiSessionStats,\n TuiSessionItem,\n TuiStartupResources,\n TuiTranscriptTreeEntry,\n TuiAgentInfo,\n} from './tui-backend.js';\nimport type { ChatLog } from './components/chat-log.js';\nimport type { SessionTimelineItem } from '../session/transcript-outline.js';\nimport {\n buildTuiTimelineTurns,\n findNearestTimelineTurnByDisplayIndex,\n findTimelineTurnByNumber,\n type TuiTimelineTurn,\n} from './tui-timeline.js';\nimport {\n formatKeyIds,\n formatXopcTuiHotkeys,\n type TuiHotkeyExtensionShortcut,\n} from './format-tui-hotkeys.js';\nimport { getTuiKeybindingsPath } from './tui-keybindings-file.js';\nimport type { TuiState } from './tui-types.js';\nimport { createWorkflowCatalog } from '../agent/workflow/catalog.js';\nimport {\n isValidAgentId,\n normalizeAgentId,\n parseAgentSessionKey,\n} from '../routing/agent-session-key.js';\nimport {\n normalizeReasoningLevel,\n normalizeThinkLevel,\n normalizeVerboseLevel,\n type ReasoningLevel,\n type ThinkLevel,\n type VerboseLevel,\n} from '../agent/transcript/thinking-types.js';\nimport {\n getAuthStorePath,\n listAllProfiles as listAllAuthProfiles,\n listProfilesForProvider,\n removeAuthProfile,\n type AuthProfileEntry,\n} from '../auth/profiles/index.js';\nimport { loadConfig, resolveConfigPath } from '../config/index.js';\nimport type { TuiSlashCommandContext, TuiSlashCommandHandler } from '../extensions/types/tui.js';\nimport { provenanceTracker } from '../extensions/security.js';\nimport type { ProjectTrustStoreEntry } from '../project-trust/trust-store.js';\nimport { providerSupportsOAuth } from '../providers/index.js';\nimport { GoalService } from '../goals/index.js';\nimport {\n inferSuggestedProjectDefaultAgentId,\n isValidProjectAgentId,\n normalizeProjectAgentId,\n ProjectService,\n type Project,\n type ProjectStatus,\n} from '../projects/index.js';\nimport {\n closeXopcDatabase,\n getSessionMetadata,\n isXopcDatabaseOpen,\n openXopcDatabase,\n} from '../storage/sqlite/index.js';\n\nimport { rewriteUnknownSlashAsWorkflow } from './tui-workflow-slash.js';\nimport { formatTuiStartupText } from './tui-startup-text.js';\nimport { theme } from './theme.js';\n\nexport interface SlashCommandDef {\n name: string;\n originalName?: string;\n description: string;\n}\n\nexport type TuiExtensionSlashCommandEntry = SlashCommandDef & {\n handler: TuiSlashCommandHandler;\n getContext?: () => TuiSlashCommandContext;\n};\n\nfunction keyLabel(\n keybindings: KeybindingsManager | undefined,\n id: Parameters<KeybindingsManager['getKeys']>[0],\n fallback: string,\n): string {\n return keybindings ? formatKeyIds(keybindings, id, { capitalize: true }) : fallback;\n}\n\nexport function getSlashCommands(\n _isLocal: boolean,\n keybindings?: KeybindingsManager,\n): SlashCommandDef[] {\n const abortKey = keyLabel(keybindings, 'app.interrupt', 'Escape');\n const toolsKey = keyLabel(keybindings, 'app.tools.expand', 'Ctrl+O');\n const thinkingKey = keyLabel(keybindings, 'app.thinking.toggle', 'Ctrl+T');\n const sessionKey = keyLabel(keybindings, 'app.session.resume', 'Ctrl+Shift+P');\n const modelCycleKey = keyLabel(keybindings, 'app.model.cycleForward', 'Ctrl+P');\n return [\n { name: 'help', description: 'Show available commands' },\n { name: 'abort', description: `Abort active run (or press ${abortKey})` },\n { name: 'recover', description: 'Reload history and reattach to a stalled run' },\n { name: 'retry', description: 'Abort current run if needed and resend the last user message' },\n { name: 'tools', description: `Toggle tool output expanded/collapsed (or ${toolsKey})` },\n { name: 'thinking', description: `Toggle thinking display (or ${thinkingKey})` },\n { name: 'copy', description: 'Copy last assistant message to clipboard' },\n { name: 'exit', description: 'Exit the TUI' },\n { name: 'quit', description: 'Quit the TUI' },\n { name: 'model', description: 'Open model picker (optional search text)' },\n { name: 'models', description: 'List available models' },\n { name: 'switch', description: 'Switch model — copy `provider/model` from /models' },\n { name: 'login', description: 'Login to an OAuth provider' },\n { name: 'logout', description: 'Remove stored provider auth profiles' },\n { name: 'usage', description: 'Show token usage statistics' },\n { name: 'review', description: 'Review current workspace changes for correctness issues' },\n { name: 'session', description: 'Show current session info' },\n { name: 'project', description: 'Manage current project context' },\n { name: 'agent', description: 'Show or switch agent for this TUI session' },\n { name: 'agents', description: 'List available agents' },\n { name: 'tui-default-agent', description: 'Set default agent for new TUI sessions' },\n { name: 'new', description: 'Start a new isolated TUI session (tui-{uuid})' },\n { name: 'fork', description: 'Fork current session transcript into a new session' },\n { name: 'clone', description: 'Duplicate current session transcript into a new session' },\n { name: 'trust', description: 'Manage project trust and show extension security policy' },\n { name: 'name', description: 'Show or set current session display name' },\n { name: 'reset', description: 'Reset current session transcript and reload history' },\n { name: 'clear', description: 'Clear the TUI view without resetting the session' },\n { name: 'list', description: 'List sessions' },\n { name: 'resume', description: `Open session picker (or ${sessionKey})` },\n { name: 'tree', description: 'Show grouped session tree' },\n { name: 'timeline', description: 'Jump to a previous turn in the current session' },\n { name: 'scoped-models', description: `Choose models for ${modelCycleKey} cycling` },\n { name: 'compact', description: 'Compact session history (local API)' },\n { name: 'think', description: 'Set thinking level (e.g. /think high)' },\n { name: 'reasoning', description: 'Set reasoning visibility (e.g. /reasoning stream)' },\n { name: 'verbose', description: 'Toggle verbose mode' },\n { name: 'status', description: 'Show agent status' },\n { name: 'config', description: 'Show current configuration' },\n { name: 'context', description: 'Show context budget' },\n { name: 'btw', description: 'Side question without saving to session' },\n { name: 'aside', description: 'Alias for /btw' },\n { name: 'export', description: 'Export session (markdown/html/json)' },\n { name: 'import', description: 'Import an xopc JSON session export' },\n { name: 'share', description: 'Create a share link for a workspace file/folder/site' },\n { name: 'settings', description: 'Open TUI settings overlay' },\n { name: 'reload', description: 'Reload keybindings, TUI settings, theme, and extension UI' },\n { name: 'reload-keybindings', description: `Reload ${getTuiKeybindingsPath()}` },\n { name: 'start', description: 'Show welcome message' },\n { name: 'hotkeys', description: 'Show resolved keyboard shortcuts (pi-style)' },\n { name: 'changelog', description: 'Show version history' },\n { name: 'workflow', description: 'Workflow subcommands: list, view <name>' },\n ];\n}\n\nfunction formatExtraSlashCommands(commands: SlashCommandDef[], seen: Set<string>): string[] {\n const lines: string[] = [];\n for (const command of commands) {\n const name = command.name.replace(/^\\//, '').trim().toLowerCase();\n const originalName = command.originalName?.replace(/^\\//, '').trim().toLowerCase();\n if (!name || seen.has(name) || (originalName && seen.has(originalName))) continue;\n seen.add(name);\n lines.push(` /${name} — ${command.description}`);\n }\n return lines;\n}\n\nexport function formatTuiHelpText(\n isLocal: boolean,\n keybindings?: KeybindingsManager,\n extraSlashCommands: SlashCommandDef[] = [],\n skillSlashCommands: SlashCommandDef[] = [],\n workflowSlashCommands: SlashCommandDef[] = [],\n): string {\n const commands = getSlashCommands(isLocal, keybindings);\n const interrupt = keyLabel(keybindings, 'app.interrupt', 'Escape');\n const thinkCycle = keyLabel(keybindings, 'app.thinking.cycle', 'Shift+Tab');\n const modelNext = keyLabel(keybindings, 'app.model.cycleForward', 'Ctrl+P');\n const modelPrev = keyLabel(keybindings, 'app.model.cycleBackward', 'Shift+Ctrl+P');\n const modelPicker = keyLabel(keybindings, 'app.model.select', 'Ctrl+L');\n const sessionPicker = keyLabel(keybindings, 'app.session.resume', 'Ctrl+Shift+P');\n const sessionTree = keyLabel(keybindings, 'app.session.tree', '(not bound)');\n const sessionFork = keyLabel(keybindings, 'app.session.fork', '(not bound)');\n const toolExpand = keyLabel(keybindings, 'app.tools.expand', 'Ctrl+O');\n const thinkingToggle = keyLabel(keybindings, 'app.thinking.toggle', 'Ctrl+T');\n const editorExternal = keyLabel(keybindings, 'app.editor.external', 'Ctrl+G');\n const suspend = keyLabel(keybindings, 'app.suspend', 'Ctrl+Z');\n const followUp = keyLabel(keybindings, 'app.message.followUp', 'Alt+Enter');\n const dequeue = keyLabel(keybindings, 'app.message.dequeue', 'Alt+Up');\n const pasteImage = keyLabel(keybindings, 'app.clipboard.pasteImage', 'Ctrl+V / Alt+V');\n const clearInput = keyLabel(keybindings, 'app.clear', 'Ctrl+C');\n const exit = keyLabel(keybindings, 'app.exit', 'Ctrl+D');\n const lines = ['Available commands:'];\n for (const c of commands) {\n lines.push(` /${c.name} — ${c.description}`);\n }\n const seenCommands = new Set(commands.map((command) => command.name));\n const skillCommandLines = formatExtraSlashCommands(skillSlashCommands, seenCommands);\n if (skillCommandLines.length > 0) {\n lines.push('', 'Skill commands:');\n lines.push(...skillCommandLines);\n }\n const workflowCommandLines = formatExtraSlashCommands(workflowSlashCommands, seenCommands);\n if (workflowCommandLines.length > 0) {\n lines.push('', 'Workflow commands:');\n lines.push(...workflowCommandLines);\n }\n const extraCommandLines = formatExtraSlashCommands(extraSlashCommands, seenCommands);\n if (extraCommandLines.length > 0) {\n lines.push('', 'Extension commands:');\n lines.push(...extraCommandLines);\n }\n lines.push('', 'Keyboard shortcuts (defaults align with pi coding-agent where noted):');\n lines.push(` ${interrupt} — Abort active run`);\n lines.push(` ${thinkCycle} — Cycle /think level`);\n lines.push(` ${modelNext} / ${modelPrev} — Next / previous model (/switch)`);\n lines.push(` ${modelPicker} — Model picker`);\n lines.push(` ${sessionPicker} — Session picker (rename/delete)`);\n lines.push(` ${sessionTree} — Session tree`);\n lines.push(` ${sessionFork} — Fork current session`);\n lines.push(` /scoped-models — Limit ${modelNext} model cycle set`);\n lines.push(` ${toolExpand} — Toggle tool output`);\n lines.push(` ${thinkingToggle} — Toggle thinking block display`);\n lines.push(` ${editorExternal} — Edit draft in $EDITOR`);\n lines.push(` ${suspend} — Suspend to shell (Unix)`);\n lines.push(` ${followUp} — Queue follow-up while busy (sends when this reply finishes)`);\n lines.push(` ${dequeue} — Restore queued messages to editor`);\n lines.push(' Enter (while busy) — Steer: inject at next tool boundary');\n lines.push(` ${pasteImage} — Paste image from clipboard`);\n lines.push(' /settings — Theme, thinking display, terminal progress, …');\n lines.push(` ${getTuiKeybindingsPath()} — Custom shortcuts (use /reload)`);\n lines.push(` ${clearInput} — Clear input; repeat within ~0.5s to exit when empty`);\n lines.push(` ${exit} — Exit when input empty`);\n lines.push(' !cmd — Local shell (gated; runs on this machine)');\n lines.push('', 'Use /hotkeys for the resolved binding list from the active keymap.');\n return lines.join('\\n');\n}\n\nexport function formatTuiStartText(\n state: TuiState,\n isLocal: boolean,\n keybindings?: KeybindingsManager,\n resources?: TuiStartupResources,\n): string {\n return formatTuiStartupText({\n state,\n isLocal,\n keybindings,\n resources,\n expanded: true,\n });\n}\n\nimport {\n formatTuiConfigInfo,\n formatTuiContextInfo,\n formatTuiLoginInfo,\n formatTuiModelsInfo,\n formatTuiSessionInfo,\n formatTuiSessionListInfo,\n formatTuiSessionTreeInfo,\n formatTuiStoredAuthProfilesInfo,\n formatTuiTranscriptTreeInfo,\n formatTuiTrustInfo,\n formatTuiUsageInfo,\n formatTuiWorkflowDetail,\n formatTuiWorkflowsInfo,\n loadTuiChangelogInfo,\n nextVerboseLevel,\n parseTuiExportRequest,\n parseTuiImportRequest,\n parseTuiShareRequest,\n writeTuiDebugInfo,\n type TuiExportRequest,\n type TuiImportRequest,\n} from './tui-command-formatters.js';\n\nexport type CommandHandlerDeps = {\n state: TuiState;\n chatLog: ChatLog;\n tui: TUI;\n isLocalMode: boolean;\n abortActive: () => Promise<void>;\n sendMessage: (text: string) => void;\n requestExit: () => void;\n updateFooter: () => void;\n keybindings: KeybindingsManager;\n uiOverlays?: {\n openModelPicker: (initialSearch?: string) => void;\n openAgentPicker?: () => void;\n openReviewLauncher?: () => void;\n openSessionPicker: () => void;\n openSessionTree: () => void;\n openTranscriptTree: () => void;\n openTimeline: (initialSearch?: string) => void;\n openUserMessageFork: () => void;\n openScopedModels: () => void;\n openThinkingSelector: () => void;\n openSettings: () => void;\n openProjectTrust: () => void;\n reloadKeybindings: () => void | Promise<void>;\n };\n setThinkingLevel?: (level: ThinkLevel) => void | Promise<void>;\n setReasoningLevel?: (level: ReasoningLevel) => void | Promise<void>;\n setVerboseLevel?: (level: VerboseLevel) => void | Promise<void>;\n copyLastAssistant?: () => void | Promise<void>;\n renameCurrentSession?: (name: string) => void | Promise<void>;\n runCompaction?: (instructions?: string) => void | Promise<void | TuiCompactionResult>;\n listModels?: () => TuiModelChoice[] | Promise<TuiModelChoice[]>;\n switchModel?: (modelRef: string) => void | Promise<void>;\n listSessions?: () => TuiSessionItem[] | Promise<TuiSessionItem[]>;\n listAgents?: () => TuiAgentInfo[] | Promise<TuiAgentInfo[]>;\n setTuiDefaultAgent?: (agentId: string) => { agentId: string } | Promise<{ agentId: string }>;\n switchAgentSession?: (sessionKey: string, agentId: string) => void | Promise<void>;\n getSessionStats?: () => TuiSessionStats | Promise<TuiSessionStats>;\n getStartupResources?: () => TuiStartupResources | undefined;\n loadTranscriptTree?: () => TuiTranscriptTreeEntry[] | Promise<TuiTranscriptTreeEntry[]>;\n loadTimeline?: () => SessionTimelineItem[] | Promise<SessionTimelineItem[]>;\n loadHistoryWindow?: (opts: {\n rowNumber: number;\n before?: number;\n after?: number;\n }) => boolean | Promise<boolean>;\n loadSessionHistory?: () => void | Promise<void>;\n exportSession?: (request: TuiExportRequest) => void | Promise<void>;\n importSession?: (request: TuiImportRequest) => void | Promise<void>;\n createShare?: (request: TuiShareRequest) => void | Promise<void>;\n startWorkflowRun?: (request: { definitionId: string; goal?: string }) => {\n runId: string;\n sessionKey: string;\n definitionId: string;\n } | Promise<{\n runId: string;\n sessionKey: string;\n definitionId: string;\n }>;\n authProfiles?: {\n listAll: () => AuthProfileEntry[] | Promise<AuthProfileEntry[]>;\n listProvider: (provider: string) => AuthProfileEntry[] | Promise<AuthProfileEntry[]>;\n remove: (profileId: string) => boolean | Promise<boolean>;\n getStorePath: () => string;\n };\n projectTrust?: {\n cwd: string;\n hasProjectResources: () => boolean;\n getStorePath: () => string;\n getEntry: () => ProjectTrustStoreEntry | null;\n getSessionDecision: () => boolean | null;\n };\n runLogin?: (provider?: string) => void | Promise<void>;\n runBtwQuery?: (question: string) => void | Promise<void>;\n forkSession?: (rawKey?: string) => void | Promise<void>;\n skillSlashCommands?: SlashCommandDef[];\n workflowSlashCommands?: SlashCommandDef[];\n extensionSlashCommands?: TuiExtensionSlashCommandEntry[];\n extensionShortcuts?: TuiHotkeyExtensionShortcut[];\n currentAgentId?: string;\n setSession?: (rawKey: string) => Promise<void>;\n resetSession?: () => Promise<void>;\n recoverStream?: () => void | Promise<void>;\n retryLastMessage?: () => void | Promise<void>;\n};\n\nfunction defaultAuthProfiles(): NonNullable<CommandHandlerDeps['authProfiles']> {\n return {\n listAll: () => listAllAuthProfiles(),\n listProvider: (provider) => listProfilesForProvider(provider),\n remove: (profileId) => removeAuthProfile(profileId),\n getStorePath: () => getAuthStorePath(),\n };\n}\n\nfunction timelineUsage(): string {\n return [\n 'Usage: /timeline [turn|latest|prev|next|search <text>]',\n 'Examples: /timeline, /timeline 12, /timeline prev, /timeline search deploy',\n ].join('\\n');\n}\n\nfunction currentTimelineTurnIndex(turns: readonly TuiTimelineTurn[], chatLog: ChatLog): number {\n const viewState = chatLog.getTimelineViewportState();\n if (viewState.mode === 'history') {\n const current = findNearestTimelineTurnByDisplayIndex(turns, viewState.displayIndex);\n const index = current ? turns.findIndex((turn) => turn.id === current.id) : -1;\n return index >= 0 ? index : turns.length - 1;\n }\n return turns.length - 1;\n}\n\nasync function runTimelineCommand(\n commandArgs: string,\n deps: Pick<\n CommandHandlerDeps,\n 'chatLog' | 'tui' | 'uiOverlays' | 'loadTimeline' | 'loadHistoryWindow' | 'loadSessionHistory'\n >,\n): Promise<void> {\n const raw = commandArgs.trim();\n if (!raw) {\n if (deps.uiOverlays?.openTimeline) {\n deps.uiOverlays.openTimeline();\n } else {\n deps.chatLog.addSystem('Timeline picker is not available in this mode.');\n deps.tui.requestRender();\n }\n return;\n }\n\n const [subcommandRaw, ...rest] = raw.split(/\\s+/);\n const subcommand = (subcommandRaw ?? '').toLowerCase();\n\n if (subcommand === 'search' || subcommand === 'find') {\n if (deps.uiOverlays?.openTimeline) {\n deps.uiOverlays.openTimeline(rest.join(' ').trim());\n } else {\n deps.chatLog.addSystem('Timeline picker is not available in this mode.');\n deps.tui.requestRender();\n }\n return;\n }\n\n if (subcommand === 'latest' || subcommand === 'live' || subcommand === 'end') {\n await deps.loadSessionHistory?.();\n deps.chatLog.jumpToLatest();\n deps.chatLog.addSystem(theme.dim('Returned to latest transcript view.'));\n deps.tui.requestRender();\n return;\n }\n\n if (!deps.loadTimeline) {\n deps.chatLog.addSystem('Timeline is not available in this mode.');\n deps.tui.requestRender();\n return;\n }\n\n const turns = buildTuiTimelineTurns(await Promise.resolve(deps.loadTimeline()));\n if (turns.length === 0) {\n deps.chatLog.addSystem('No timeline turns found.');\n deps.tui.requestRender();\n return;\n }\n\n let target: TuiTimelineTurn | undefined;\n if (subcommand === 'prev' || subcommand === 'previous') {\n target = turns[Math.max(0, currentTimelineTurnIndex(turns, deps.chatLog) - 1)];\n } else if (subcommand === 'next') {\n target = turns[Math.min(turns.length - 1, currentTimelineTurnIndex(turns, deps.chatLog) + 1)];\n } else {\n const turnNumber = Number.parseInt(subcommand, 10);\n if (!Number.isFinite(turnNumber) || String(turnNumber) !== subcommand) {\n deps.chatLog.addSystem(timelineUsage());\n deps.tui.requestRender();\n return;\n }\n target = findTimelineTurnByNumber(turns, turnNumber);\n }\n\n if (!target) {\n deps.chatLog.addSystem(`Timeline turn not found: ${raw}`);\n deps.tui.requestRender();\n return;\n }\n\n if (!deps.chatLog.jumpToDisplayIndex(target.displayIndex)) {\n const loaded =\n target.rowNumber !== undefined && deps.loadHistoryWindow\n ? await deps.loadHistoryWindow({ rowNumber: target.rowNumber })\n : false;\n if (loaded && deps.chatLog.jumpToDisplayIndex(target.displayIndex)) {\n deps.tui.requestRender();\n return;\n }\n deps.chatLog.addSystem(`Turn ${target.turn} is outside loaded history.`);\n }\n deps.tui.requestRender();\n}\n\nfunction formatAgentsList(agents: TuiAgentInfo[], currentAgentId?: string): string {\n if (agents.length === 0) {\n return 'No agents available.';\n }\n const current = currentAgentId?.trim().toLowerCase();\n const sorted = [...agents].sort((a, b) => {\n if (a.id === current && b.id !== current) return -1;\n if (b.id === current && a.id !== current) return 1;\n if (a.id === 'coder' && b.id !== 'coder') return -1;\n if (b.id === 'coder' && a.id !== 'coder') return 1;\n return a.id.localeCompare(b.id);\n });\n return [\n 'Available agents:',\n ...sorted.map((agent) => {\n const marker = agent.id === current ? '*' : ' ';\n const label = agent.displayName ? ` — ${agent.displayName}` : '';\n return `${marker} ${agent.id}${label}`;\n }),\n '',\n 'Switch with: /agent <id>',\n ].join('\\n');\n}\n\nfunction formatCurrentAgent(state: TuiState): string {\n const parsed = parseAgentSessionKey(state.currentSessionKey);\n if (!parsed) {\n return `Current session is not an agent session.\\nSession: ${state.currentSessionKey}`;\n }\n const lines = [\n `Current agent: ${parsed.agentId}`,\n `Session: ${state.currentSessionKey}`,\n ];\n const workspace = state.sessionInfo.effectiveWorkspacePath?.trim();\n if (workspace) lines.push(`Workspace: ${workspace}`);\n const provider = state.sessionInfo.modelProvider?.trim();\n const model = state.sessionInfo.model?.trim();\n if (model) lines.push(`Model: ${provider ? `${provider}/${model}` : model}`);\n return lines.join('\\n');\n}\n\nfunction withTuiProjects<T>(fn: (projects: ProjectService) => T): T {\n const wasOpen = isXopcDatabaseOpen();\n if (!wasOpen) openXopcDatabase();\n try {\n return fn(new ProjectService());\n } finally {\n if (!wasOpen) closeXopcDatabase();\n }\n}\n\nfunction resolveTuiProject(projects: ProjectService, ref: string): Project | null {\n return projects.get(ref) ?? projects.getBySlug(ref);\n}\n\nfunction parseTuiProjectStatus(raw: string | undefined): ProjectStatus | undefined {\n return raw === 'active' || raw === 'paused' || raw === 'archived' ? raw : undefined;\n}\n\nfunction parseProjectNewArgs(parts: string[]): {\n name: string;\n workspaceRoot?: string;\n projectKind?: string;\n agentId?: string;\n error?: string;\n} {\n const nameParts: string[] = [];\n let workspaceRoot: string | undefined;\n let projectKind: string | undefined;\n let agentId: string | undefined;\n for (let index = 0; index < parts.length; index += 1) {\n const part = parts[index];\n if (part === '--path' || part === '-p') {\n workspaceRoot = parts[index + 1]?.trim();\n index += 1;\n if (!workspaceRoot) return { name: '', error: 'Missing value for --path' };\n continue;\n }\n if (part.startsWith('--path=') || part.startsWith('-p=')) {\n workspaceRoot = part.slice(part.indexOf('=') + 1).trim();\n if (!workspaceRoot) return { name: '', error: 'Missing value for --path' };\n continue;\n }\n if (part === '--type' || part === '-t') {\n projectKind = parts[index + 1]?.trim();\n index += 1;\n if (!['auto', 'coding', 'general'].includes(projectKind ?? '')) return { name: '', error: 'Project type must be auto, coding, or general' };\n continue;\n }\n if (part.startsWith('--type=') || part.startsWith('-t=')) {\n projectKind = part.slice(part.indexOf('=') + 1).trim();\n if (!['auto', 'coding', 'general'].includes(projectKind)) return { name: '', error: 'Project type must be auto, coding, or general' };\n continue;\n }\n if (part === '--agent' || part === '-a') {\n agentId = parts[index + 1]?.trim();\n index += 1;\n if (!agentId) return { name: '', error: 'Missing value for --agent' };\n continue;\n }\n if (part.startsWith('--agent=') || part.startsWith('-a=')) {\n agentId = part.slice(part.indexOf('=') + 1).trim();\n if (!agentId) return { name: '', error: 'Missing value for --agent' };\n continue;\n }\n nameParts.push(part);\n }\n return { name: nameParts.join(' ').trim(), workspaceRoot, projectKind, agentId };\n}\n\nfunction formatTuiProject(project: Project & { sessionCount?: number; goalCount?: number; activeGoalCount?: number }): string {\n const lines = [\n `${project.name} [${project.status}]`,\n `ID: ${project.id}`,\n `Slug: ${project.slug}`,\n `Default agent: ${project.defaultAgentId ?? 'global default'}`,\n project.workspaceRoot ? `Workspace: ${project.workspaceRoot}` : undefined,\n project.sessionCount != null ? `Sessions: ${project.sessionCount}` : undefined,\n project.goalCount != null ? `Goals: ${project.goalCount} (${project.activeGoalCount ?? 0} active)` : undefined,\n project.brief ? `Brief: ${project.brief}` : undefined,\n ];\n return lines.filter(Boolean).join('\\n');\n}\n\nfunction runTuiProjectCommand(state: TuiState, args: string): string {\n const parts = args.trim().split(/\\s+/).filter(Boolean);\n const subcommand = parts[0]?.toLowerCase();\n return withTuiProjects((projects) => {\n if (!subcommand || subcommand === 'status') {\n const projectId = getSessionMetadata(state.currentSessionKey)?.projectId;\n if (!projectId) return `No project selected.\\nSession: ${state.currentSessionKey}`;\n const project = projects.getWithDetails(projectId);\n return project ? formatTuiProject(project) : `Current project not found: ${projectId}`;\n }\n\n if (subcommand === 'list') {\n const status = parseTuiProjectStatus(parts[1]);\n const result = projects.list({ ...(status ? { status } : {}), limit: 20 });\n if (!result.items.length) return 'No projects.';\n return ['Projects:', ...result.items.map((project) => `- ${project.slug} [${project.status}] ${project.name}`)].join('\\n');\n }\n\n if (subcommand === 'new') {\n const parsed = parseProjectNewArgs(parts.slice(1));\n if (parsed.error) return parsed.error;\n if (!parsed.name && !parsed.workspaceRoot) return 'Usage: /project new <name> [--path <workspace>] [--type auto|coding|general] [--agent <agent-id>]';\n const cfg = loadConfig(resolveConfigPath());\n const explicitAgentId = normalizeProjectAgentId(parsed.agentId);\n if (parsed.agentId && !isValidProjectAgentId(cfg, explicitAgentId)) return `Agent not found: ${parsed.agentId}`;\n const defaultAgentId = explicitAgentId ?? inferSuggestedProjectDefaultAgentId({\n config: cfg,\n name: parsed.name,\n workspaceRoot: parsed.workspaceRoot,\n projectKind: parsed.projectKind,\n });\n const project = projects.create({\n ...(parsed.name ? { name: parsed.name } : {}),\n ...(parsed.workspaceRoot ? { workspaceRoot: parsed.workspaceRoot } : {}),\n ...(defaultAgentId ? { defaultAgentId } : {}),\n ...(parsed.projectKind ? { projectKind: parsed.projectKind } : {}),\n });\n projects.attachSession(state.currentSessionKey, project.id);\n return `Created and attached project:\\n${formatTuiProject(project)}`;\n }\n\n if (subcommand === 'switch' || subcommand === 'attach') {\n const ref = parts[1];\n if (!ref) return `Usage: /project ${subcommand} <id-or-slug>`;\n const project = resolveTuiProject(projects, ref);\n if (!project) return `Project not found: ${ref}`;\n projects.attachSession(state.currentSessionKey, project.id);\n return `Attached current session to project: ${project.name}`;\n }\n\n if (subcommand === 'detach') {\n projects.detachSession(state.currentSessionKey);\n return 'Detached current session from project.';\n }\n\n if (subcommand === 'archive') {\n const ref = parts[1];\n if (!ref) return 'Usage: /project archive <id-or-slug>';\n const project = resolveTuiProject(projects, ref);\n if (!project) return `Project not found: ${ref}`;\n projects.update(project.id, { status: 'archived' });\n return `Archived project: ${project.name}`;\n }\n\n if (subcommand === 'set-agent') {\n const agentId = normalizeProjectAgentId(parts[1]);\n if (!agentId) return 'Usage: /project set-agent <agent-id>';\n const currentProjectId = getSessionMetadata(state.currentSessionKey)?.projectId;\n if (!currentProjectId) return 'No current project.';\n const cfg = loadConfig(resolveConfigPath());\n if (!isValidProjectAgentId(cfg, agentId)) return `Agent not found: ${parts[1]}`;\n const project = projects.update(currentProjectId, { defaultAgentId: agentId });\n return `Project default agent set to ${project.defaultAgentId}.`;\n }\n\n if (subcommand === 'clear-agent') {\n const currentProjectId = getSessionMetadata(state.currentSessionKey)?.projectId;\n if (!currentProjectId) return 'No current project.';\n projects.update(currentProjectId, { defaultAgentId: null });\n return 'Project default agent cleared.';\n }\n\n if (subcommand === 'sessions') {\n const ref = parts[1];\n const currentProjectId = getSessionMetadata(state.currentSessionKey)?.projectId;\n const project = ref ? resolveTuiProject(projects, ref) : currentProjectId ? projects.get(currentProjectId) : null;\n if (!project) return ref ? `Project not found: ${ref}` : 'No current project.';\n const keys = projects.listSessionKeys(project.id, 20);\n if (!keys.length) return `No sessions in ${project.name}.`;\n return [`Sessions in ${project.name}:`, ...keys.map((key) => `- ${key}`)].join('\\n');\n }\n\n if (subcommand === 'goals') {\n const ref = parts[1];\n const currentProjectId = getSessionMetadata(state.currentSessionKey)?.projectId;\n const project = ref ? resolveTuiProject(projects, ref) : currentProjectId ? projects.get(currentProjectId) : null;\n if (!project) return ref ? `Project not found: ${ref}` : 'No current project.';\n const goals = new GoalService().list({ projectId: project.id, limit: 20 });\n if (!goals.length) return `No goals in ${project.name}.`;\n return [`Goals in ${project.name}:`, ...goals.map((goal) => `- ${goal.id} [${goal.status}] ${goal.title}`)].join('\\n');\n }\n\n return [\n 'Usage:',\n ' /project',\n ' /project list [active|paused|archived]',\n ' /project new <name> [--path <workspace>] [--type auto|coding|general] [--agent <agent-id>]',\n ' /project switch <id-or-slug>',\n ' /project attach <id-or-slug>',\n ' /project detach',\n ' /project set-agent <agent-id>',\n ' /project clear-agent',\n ' /project sessions [id-or-slug]',\n ' /project goals [id-or-slug]',\n ' /project archive <id-or-slug>',\n ].join('\\n');\n });\n}\n\nexport function createTuiCommandHandler(deps: CommandHandlerDeps): (input: string) => void {\n const {\n state,\n chatLog,\n tui,\n isLocalMode,\n abortActive,\n sendMessage,\n requestExit,\n updateFooter,\n keybindings,\n uiOverlays,\n skillSlashCommands = [],\n workflowSlashCommands = [],\n extensionSlashCommands = [],\n extensionShortcuts = [],\n setSession,\n resetSession,\n } = deps;\n\n const runReset = async () => {\n await abortActive();\n if (resetSession) {\n await resetSession();\n chatLog.addSystem(`session ${state.currentSessionKey} reset`);\n } else {\n chatLog.clearAll();\n state.messageFollowUpQueue.length = 0;\n state.steeringQueue.length = 0;\n chatLog.addSystem('Session cleared (reset not available in this mode).');\n }\n tui.requestRender();\n };\n\n return (input: string) => {\n const trimmed = input.replace(/^\\//, '').trim();\n const [commandName, ...restParts] = trimmed.split(/\\s+/);\n const normalizedCommand = (commandName ?? '').toLowerCase();\n const commandArgs = restParts.join(' ');\n\n switch (normalizedCommand) {\n case 'help':\n chatLog.addSystem(formatTuiHelpText(\n isLocalMode,\n keybindings,\n extensionSlashCommands,\n skillSlashCommands,\n workflowSlashCommands,\n ));\n tui.requestRender();\n return;\n case 'start':\n chatLog.addSystem(formatTuiStartText(state, isLocalMode, keybindings, deps.getStartupResources?.()));\n tui.requestRender();\n return;\n case 'hotkeys':\n case 'keys':\n chatLog.addSystem(formatXopcTuiHotkeys(keybindings, extensionShortcuts));\n tui.requestRender();\n return;\n case 'changelog':\n chatLog.addSystem(loadTuiChangelogInfo());\n tui.requestRender();\n return;\n case 'debug':\n try {\n const debugPath = writeTuiDebugInfo({ state, tui });\n chatLog.addSystem(`Debug log written\\n${debugPath}`);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Debug log failed: ${errorMessage}`);\n }\n tui.requestRender();\n return;\n case 'session':\n case 'status':\n void Promise.resolve(deps.getSessionStats?.())\n .catch(() => undefined)\n .then((stats) => {\n chatLog.addSystem(formatTuiSessionInfo(state, stats));\n tui.requestRender();\n });\n return;\n case 'project':\n try {\n chatLog.addSystem(runTuiProjectCommand(state, commandArgs));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Project command failed: ${errorMessage}`);\n }\n tui.requestRender();\n return;\n case 'agents':\n if (uiOverlays?.openAgentPicker) {\n uiOverlays.openAgentPicker();\n return;\n }\n void Promise.resolve(deps.listAgents?.() ?? [])\n .then((agents) => {\n const current = parseAgentSessionKey(state.currentSessionKey)?.agentId;\n chatLog.addSystem(formatAgentsList(agents, current));\n tui.requestRender();\n })\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Agents list failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n case 'agent': {\n const targetRaw = commandArgs.trim();\n if (!targetRaw) {\n chatLog.addSystem(formatCurrentAgent(state));\n tui.requestRender();\n return;\n }\n void (async () => {\n const parsedCurrent = parseAgentSessionKey(state.currentSessionKey);\n if (!parsedCurrent) {\n chatLog.addSystem('Cannot switch agent: current session is not an agent session.');\n tui.requestRender();\n return;\n }\n if (state.activeRunId) {\n chatLog.addSystem('Cannot switch agent while a run is active. Abort first.');\n tui.requestRender();\n return;\n }\n if (!isValidAgentId(targetRaw)) {\n chatLog.addSystem(`Invalid agent id: ${targetRaw}`);\n tui.requestRender();\n return;\n }\n const targetAgentId = normalizeAgentId(targetRaw);\n const agents = await Promise.resolve(deps.listAgents?.() ?? []);\n if (!agents.some((agent) => agent.enabled !== false && agent.id === targetAgentId)) {\n chatLog.addSystem(`Unknown agent: ${targetAgentId}`);\n tui.requestRender();\n return;\n }\n const targetSessionKey = `agent:${targetAgentId}:${parsedCurrent.rest}`;\n if (targetSessionKey === state.currentSessionKey) {\n chatLog.addSystem(`Already using agent: ${targetAgentId}`);\n tui.requestRender();\n return;\n }\n if (!deps.switchAgentSession) {\n chatLog.addSystem('Agent switching is not available in this mode.');\n tui.requestRender();\n return;\n }\n await deps.switchAgentSession(targetSessionKey, targetAgentId);\n chatLog.addSystem(`Switched to agent: ${targetAgentId}\\nSession: ${targetSessionKey}`);\n tui.requestRender();\n })().catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Agent switch failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n }\n case 'tui-default-agent': {\n const targetRaw = commandArgs.trim();\n if (!targetRaw) {\n void Promise.resolve(deps.listAgents?.() ?? [])\n .then((agents) => {\n chatLog.addSystem([\n 'Usage: /tui-default-agent <agent-id>',\n 'This changes new TUI sessions only; the current session is unchanged.',\n '',\n formatAgentsList(agents, parseAgentSessionKey(state.currentSessionKey)?.agentId),\n ].join('\\n'));\n tui.requestRender();\n })\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`TUI default agent help failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n }\n void (async () => {\n if (!isValidAgentId(targetRaw)) {\n chatLog.addSystem(`Invalid agent id: ${targetRaw}`);\n tui.requestRender();\n return;\n }\n if (!deps.setTuiDefaultAgent) {\n chatLog.addSystem('TUI default agent updates are not available in this mode.');\n tui.requestRender();\n return;\n }\n const result = await deps.setTuiDefaultAgent(normalizeAgentId(targetRaw));\n chatLog.addSystem(\n `TUI default agent set to ${result.agentId}. New TUI sessions will use it.`,\n );\n tui.requestRender();\n })().catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`TUI default agent update failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n }\n case 'usage':\n void Promise.resolve(deps.getSessionStats?.())\n .catch(() => undefined)\n .then((stats) => {\n chatLog.addSystem(formatTuiUsageInfo(state, stats));\n tui.requestRender();\n });\n return;\n case 'context':\n chatLog.addSystem(formatTuiContextInfo(state));\n tui.requestRender();\n return;\n case 'config':\n chatLog.addSystem(formatTuiConfigInfo(state));\n tui.requestRender();\n return;\n case 'trust':\n if (uiOverlays?.openProjectTrust) {\n uiOverlays.openProjectTrust();\n return;\n }\n chatLog.addSystem(\n formatTuiTrustInfo(loadConfig(), {\n configPath: resolveConfigPath(),\n provenance: provenanceTracker.getAll(),\n cwd: deps.projectTrust?.cwd,\n hasProjectResources: deps.projectTrust?.hasProjectResources(),\n projectTrustStorePath: deps.projectTrust?.getStorePath(),\n projectTrustEntry: deps.projectTrust?.getEntry(),\n projectTrustSessionDecision: deps.projectTrust?.getSessionDecision(),\n }),\n );\n tui.requestRender();\n return;\n case 'export':\n if (!deps.exportSession) {\n chatLog.addSystem('Export is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.exportSession(parseTuiExportRequest(commandArgs))).then(() => {\n tui.requestRender();\n });\n return;\n case 'import':\n if (!deps.importSession) {\n chatLog.addSystem('Import is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.importSession(parseTuiImportRequest(commandArgs))).then(() => {\n tui.requestRender();\n });\n return;\n case 'share': {\n if (!deps.createShare) {\n chatLog.addSystem('Share is not available in this mode.');\n tui.requestRender();\n return;\n }\n const request = parseTuiShareRequest(commandArgs);\n if (!request) {\n chatLog.addSystem(\n [\n 'Usage: /share <workspace-path> [friend|colleague|public] [--site|--zip|--file]',\n 'Optional: --title \"Title\" --description \"Description\"',\n ].join('\\n'),\n );\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.createShare(request)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'btw':\n case 'aside': {\n const question = commandArgs.trim();\n if (!question) {\n chatLog.addSystem(\n 'Usage: /btw <question>\\nAnswers use the current session as read-only background and are not saved.',\n );\n tui.requestRender();\n return;\n }\n if (!deps.runBtwQuery) {\n chatLog.addSystem('/btw is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.runBtwQuery(question)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'workflow': {\n const [subcommandRaw, ...workflowRest] = commandArgs.trim().split(/\\s+/);\n const subcommand = (subcommandRaw || 'list').toLowerCase();\n if (subcommand === 'list' || subcommand === 'ls') {\n try {\n chatLog.addSystem(formatTuiWorkflowsInfo(createWorkflowCatalog().list()));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Workflow list failed: ${errorMessage}`);\n }\n tui.requestRender();\n return;\n }\n if (subcommand === 'view' || subcommand === 'show') {\n const name = workflowRest[0]?.trim();\n if (!name) {\n chatLog.addSystem('Usage: /workflow view <name>');\n tui.requestRender();\n return;\n }\n try {\n chatLog.addSystem(formatTuiWorkflowDetail(name));\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Workflow view failed: ${errorMessage}`);\n }\n tui.requestRender();\n return;\n }\n if (subcommand === 'save') {\n chatLog.addSystem('/workflow save is not a TUI command. Save generated workflows through the workflow tool.');\n tui.requestRender();\n return;\n }\n chatLog.addSystem('Usage: /workflow list | /workflow view <name>');\n tui.requestRender();\n return;\n }\n case 'models':\n void Promise.resolve(deps.listModels?.() ?? []).then((models) => {\n chatLog.addSystem(formatTuiModelsInfo(models));\n tui.requestRender();\n });\n return;\n case 'model':\n if (uiOverlays) {\n uiOverlays.openModelPicker(commandArgs.trim() || undefined);\n return;\n }\n chatLog.addSystem('Model picker is not available in this mode. Use /models and /switch <provider/model>.');\n tui.requestRender();\n return;\n case 'list':\n void Promise.resolve(deps.listSessions?.() ?? []).then((sessions) => {\n chatLog.addSystem(\n formatTuiSessionListInfo(sessions, { currentSessionKey: state.currentSessionKey }),\n );\n tui.requestRender();\n });\n return;\n case 'tree':\n if (uiOverlays) {\n uiOverlays.openTranscriptTree();\n return;\n }\n if (deps.loadTranscriptTree) {\n void Promise.resolve(deps.loadTranscriptTree()).then((entries) => {\n chatLog.addSystem(formatTuiTranscriptTreeInfo(entries));\n tui.requestRender();\n });\n return;\n }\n uiOverlays?.openSessionTree();\n if (uiOverlays) return;\n void Promise.resolve(deps.listSessions?.() ?? []).then((sessions) => {\n chatLog.addSystem(\n formatTuiSessionTreeInfo(sessions, { currentSessionKey: state.currentSessionKey }),\n );\n tui.requestRender();\n });\n return;\n case 'timeline':\n void runTimelineCommand(commandArgs, deps).catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Timeline failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n case 'switch': {\n const modelRef = commandArgs.trim();\n if (!modelRef) {\n chatLog.addSystem('Usage: /switch <provider/model>');\n tui.requestRender();\n return;\n }\n if (!deps.switchModel) {\n chatLog.addSystem('Model switching is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.switchModel?.(modelRef)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'login':\n if (deps.runLogin && (!commandArgs.trim() || providerSupportsOAuth(commandArgs.trim()))) {\n void Promise.resolve(deps.runLogin(commandArgs.trim() || undefined))\n .catch((err) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Login failed: ${errorMessage}`);\n })\n .finally(() => tui.requestRender());\n return;\n }\n chatLog.addSystem(formatTuiLoginInfo(commandArgs));\n tui.requestRender();\n return;\n case 'logout': {\n const provider = commandArgs.trim();\n const authProfiles = deps.authProfiles ?? defaultAuthProfiles();\n void (async () => {\n try {\n if (!provider) {\n const profiles = await authProfiles.listAll();\n chatLog.addSystem(\n formatTuiStoredAuthProfilesInfo(profiles, { authStorePath: authProfiles.getStorePath() }),\n );\n tui.requestRender();\n return;\n }\n\n const profiles = await authProfiles.listProvider(provider);\n if (profiles.length === 0) {\n chatLog.addSystem(\n [\n `No stored auth profiles found for provider: ${provider}`,\n 'Environment variables and config credentials are unchanged.',\n ].join('\\n'),\n );\n tui.requestRender();\n return;\n }\n\n let removed = 0;\n for (const profile of profiles) {\n if (await authProfiles.remove(profile.profileId)) {\n removed += 1;\n }\n }\n chatLog.addSystem(\n [\n `Logged out from ${provider}: removed ${removed} stored auth profile${removed === 1 ? '' : 's'}.`,\n 'Environment variables and config credentials are unchanged.',\n ].join('\\n'),\n );\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Logout failed: ${errorMessage}`);\n }\n tui.requestRender();\n })();\n return;\n }\n case 'exit':\n case 'quit':\n requestExit();\n return;\n case 'abort':\n case 'stop':\n case 'cancel':\n void abortActive().then(() => {\n chatLog.addSystem('Aborted.');\n tui.requestRender();\n });\n return;\n case 'recover':\n if (!deps.recoverStream) {\n chatLog.addSystem('Stream recovery is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.recoverStream?.())\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Recover failed: ${errorMessage}`);\n })\n .finally(() => tui.requestRender());\n return;\n case 'retry':\n if (!deps.retryLastMessage) {\n chatLog.addSystem('Retry is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.retryLastMessage?.())\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Retry failed: ${errorMessage}`);\n })\n .finally(() => tui.requestRender());\n return;\n case 'tools':\n state.toolsExpanded = !state.toolsExpanded;\n chatLog.setToolsExpanded(state.toolsExpanded);\n chatLog.addSystem(`Tools: ${state.toolsExpanded ? 'expanded' : 'collapsed'}`);\n tui.requestRender();\n return;\n case 'thinking':\n state.showThinking = !state.showThinking;\n chatLog.setShowThinking(state.showThinking);\n chatLog.addSystem(`Thinking display: ${state.showThinking ? 'on' : 'off'}`);\n updateFooter();\n tui.requestRender();\n return;\n case 'copy':\n if (!deps.copyLastAssistant) {\n chatLog.addSystem('Copy is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.copyLastAssistant?.()).then(() => {\n tui.requestRender();\n });\n return;\n case 'name': {\n const name = commandArgs.trim();\n if (!name) {\n const currentName = state.sessionInfo.displayName?.trim();\n chatLog.addSystem(currentName ? `Session name: ${currentName}` : 'Usage: /name <name>');\n tui.requestRender();\n return;\n }\n if (!deps.renameCurrentSession) {\n chatLog.addSystem('Session rename is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.renameCurrentSession?.(name)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'resume':\n case 'sessions':\n if (!uiOverlays) {\n chatLog.addSystem('Session picker is not available in this mode. Use /list to show sessions.');\n tui.requestRender();\n return;\n }\n uiOverlays?.openSessionPicker();\n return;\n case 'scoped-models':\n case 'scopedmodels':\n if (!uiOverlays) {\n chatLog.addSystem('Scoped model picker is not available in this mode.');\n tui.requestRender();\n return;\n }\n uiOverlays?.openScopedModels();\n return;\n case 'think': {\n const level = normalizeThinkLevel(commandArgs);\n if (!commandArgs.trim()) {\n if (!uiOverlays) {\n const current = state.sessionInfo.thinkingLevel?.trim();\n chatLog.addSystem(\n current ? `Thinking level: ${current}` : 'Usage: /think <off|low|medium|high>',\n );\n tui.requestRender();\n return;\n }\n uiOverlays?.openThinkingSelector();\n return;\n }\n if (!level) {\n chatLog.addSystem(`Invalid thinking level: ${commandArgs}`);\n tui.requestRender();\n return;\n }\n if (!deps.setThinkingLevel) {\n chatLog.addSystem('Thinking level changes are not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.setThinkingLevel?.(level)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'reasoning': {\n const level = normalizeReasoningLevel(commandArgs);\n if (!commandArgs.trim()) {\n const current = state.sessionInfo.reasoningLevel?.trim();\n chatLog.addSystem(\n current\n ? `Reasoning visibility: ${current}`\n : 'Usage: /reasoning <off|on|stream>',\n );\n tui.requestRender();\n return;\n }\n if (!level) {\n chatLog.addSystem(`Invalid reasoning visibility: ${commandArgs}`);\n tui.requestRender();\n return;\n }\n if (!deps.setReasoningLevel) {\n chatLog.addSystem('Reasoning visibility changes are not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.setReasoningLevel?.(level)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'verbose': {\n const raw = commandArgs.trim();\n const level = raw ? normalizeVerboseLevel(raw) : nextVerboseLevel(state.sessionInfo.verboseLevel);\n if (raw && !level) {\n chatLog.addSystem(`Invalid verbose level: ${commandArgs}`);\n tui.requestRender();\n return;\n }\n if (!deps.setVerboseLevel) {\n chatLog.addSystem('Verbose mode changes are not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(deps.setVerboseLevel?.(level)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'settings':\n if (!uiOverlays) {\n chatLog.addSystem('Settings are not available in this mode.');\n tui.requestRender();\n return;\n }\n uiOverlays?.openSettings();\n return;\n case 'reload':\n case 'reload-keybindings':\n case 'reload-keybind':\n if (!uiOverlays) {\n chatLog.addSystem('Reload is not available in this mode.');\n tui.requestRender();\n return;\n }\n void Promise.resolve(uiOverlays?.reloadKeybindings())\n .then(() => {\n chatLog.addSystem('Reloaded keybindings, TUI settings, theme, and extension UI.');\n tui.requestRender();\n })\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Reload failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n case 'compact':\n if (!deps.runCompaction) {\n chatLog.addSystem('Compaction is not available in this mode.');\n tui.requestRender();\n return;\n }\n void deps.runCompaction?.(commandArgs.trim() || undefined);\n return;\n case 'review':\n if (!commandArgs.trim()) {\n if (uiOverlays?.openReviewLauncher) {\n uiOverlays.openReviewLauncher();\n } else {\n chatLog.addSystem('Usage: /review --uncommitted | /review --base <branch> | /review --commit <sha> | /review --custom <instructions>');\n tui.requestRender();\n }\n return;\n }\n sendMessage(input);\n return;\n default:\n break;\n }\n\n switch (normalizedCommand) {\n case 'new': {\n void (async () => {\n try {\n await abortActive();\n const uniqueKey = `tui-${randomUUID()}`;\n if (setSession) {\n await setSession(uniqueKey);\n chatLog.addSystem(`new session: ${state.currentSessionKey}`);\n } else {\n chatLog.clearAll();\n state.messageFollowUpQueue.length = 0;\n state.steeringQueue.length = 0;\n chatLog.addSystem('New session requires gateway or local session support.');\n }\n tui.requestRender();\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`new session failed: ${errorMessage}`);\n tui.requestRender();\n }\n })();\n return;\n }\n case 'fork': {\n if (!commandArgs.trim() && uiOverlays) {\n uiOverlays.openUserMessageFork();\n return;\n }\n void Promise.resolve(deps.forkSession?.(commandArgs.trim() || undefined)).then(() => {\n tui.requestRender();\n });\n return;\n }\n case 'clone':\n void Promise.resolve(deps.forkSession?.(commandArgs.trim() || undefined)).then(() => {\n tui.requestRender();\n });\n return;\n case 'reset':\n case 'restart':\n void runReset();\n return;\n case 'clear':\n chatLog.clearAll();\n state.messageFollowUpQueue.length = 0;\n state.steeringQueue.length = 0;\n chatLog.addSystem('TUI view cleared. Session transcript was not reset.');\n tui.requestRender();\n return;\n default:\n break;\n }\n\n const extensionCmd = extensionSlashCommands.find((c) => c.name === normalizedCommand);\n if (extensionCmd) {\n void Promise.resolve(\n extensionCmd.handler(commandArgs, extensionCmd.getContext?.()),\n ).then(() => {\n tui.requestRender();\n });\n return;\n }\n\n if (normalizedCommand.startsWith('skill:')) {\n sendMessage(input);\n return;\n }\n\n if (normalizedCommand.startsWith('workflow:')) {\n const workflowName = normalizedCommand.slice('workflow:'.length).trim();\n if (!workflowName) {\n chatLog.addSystem('Usage: /workflow:<name> [goal]');\n tui.requestRender();\n return;\n }\n if (!deps.startWorkflowRun) {\n chatLog.addSystem('Workflow runs are not available in this mode.');\n tui.requestRender();\n return;\n }\n chatLog.addSystem(`▶ Starting workflow: ${workflowName}`);\n tui.requestRender();\n void Promise.resolve(deps.startWorkflowRun({\n definitionId: workflowName,\n goal: commandArgs.trim() || undefined,\n })).then((result) => {\n chatLog.addSystem(\n `Workflow started: ${result.definitionId}\\nrunId: ${result.runId}\\nsessionKey: ${result.sessionKey}`,\n );\n tui.requestRender();\n }).catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n chatLog.addSystem(`Workflow start failed: ${errorMessage}`);\n tui.requestRender();\n });\n return;\n }\n\n // Unknown slash that names a known workflow → rewrite into a natural prompt\n // so the assistant deterministically calls workflow({name}) instead of\n // depending on the model to puzzle out \"/audit_repo\".\n if (input.trimStart().startsWith('/')) {\n const rewritten = rewriteUnknownSlashAsWorkflow(normalizedCommand, commandArgs);\n if (rewritten) {\n chatLog.addSystem(`▶ Running workflow: ${normalizedCommand}`);\n tui.requestRender();\n sendMessage(rewritten);\n return;\n }\n }\n\n sendMessage(input);\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-context-usage.js","names":[],"sources":["../../../src/tui/tui-context-usage.ts"],"sourcesContent":["/** Compute context window usage percent (0–100), rounded. */\nexport function computeContextUsagePercent(\n estimatedTokens: number | null | undefined,\n contextWindow: number | null | undefined,\n): number | null {\n if (estimatedTokens == null || contextWindow == null || contextWindow <= 0) {\n return null;\n }\n return Math.min(100, Math.round((estimatedTokens / contextWindow) * 100));\n}\n\nfunction formatTokens(count: number): string {\n if (count < 1000) return count.toString();\n if (count < 10000) return `${(count / 1000).toFixed(1)}k`;\n if (count < 1_000_000) return `${Math.round(count / 1000)}k`;\n if (count < 10_000_000) return `${(count / 1_000_000).toFixed(1)}M`;\n return `${Math.round(count / 1_000_000)}M`;\n}\n\nexport function formatContextUsageLabel(\n percent: number | null,\n contextWindow?: number | null,\n): string | null {\n if (contextWindow != null && contextWindow > 0) {\n const percentLabel = percent == null ? '?' : `${percent}%`;\n return `${percentLabel}/${formatTokens(contextWindow)} ctx`;\n }\n if (percent == null) return null;\n return `${percent}% ctx`;\n}\n"],"mappings":";;AACA,SAAgB,2BACd,iBACA,eACe;AACf,KAAI,mBAAmB,QAAQ,iBAAiB,QAAQ,iBAAiB,EACvE,QAAO;AAET,QAAO,KAAK,IAAI,KAAK,KAAK,MAAO,kBAAkB,gBAAiB,IAAI,CAAC;;AAG3E,SAAS,aAAa,OAAuB;AAC3C,KAAI,QAAQ,IAAM,QAAO,MAAM,UAAU;AACzC,KAAI,QAAQ,IAAO,QAAO,IAAI,QAAQ,KAAM,QAAQ,EAAE,CAAC;AACvD,KAAI,QAAQ,IAAW,QAAO,GAAG,KAAK,MAAM,QAAQ,IAAK,CAAC;AAC1D,KAAI,QAAQ,IAAY,QAAO,IAAI,QAAQ,KAAW,QAAQ,EAAE,CAAC;AACjE,QAAO,GAAG,KAAK,MAAM,QAAQ,IAAU,CAAC;;AAG1C,SAAgB,wBACd,SACA,eACe;AACf,KAAI,iBAAiB,QAAQ,gBAAgB,EAE3C,QAAO,GADc,WAAW,OAAO,MAAM,GAAG,QAAQ,GACjC,GAAG,aAAa,cAAc,CAAC;AAExD,KAAI,WAAW,KAAM,QAAO;AAC5B,QAAO,GAAG,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-extension-user-message.js","names":[],"sources":["../../../src/tui/tui-extension-user-message.ts"],"sourcesContent":["import type { ExtensionUserMessageContent } from '../extensions/types/core.js';\n\nexport function extensionUserMessageContentToText(content: ExtensionUserMessageContent): string {\n if (typeof content === 'string') return content;\n const parts: string[] = [];\n for (const block of content) {\n if (block.type === 'text' && typeof block.text === 'string') {\n parts.push(block.text);\n }\n }\n return parts.join('');\n}\n\nexport function extensionCustomMessageContentToText(content: string | unknown[] | undefined): string {\n if (typeof content === 'string') return content;\n if (!Array.isArray(content)) return '';\n const parts: string[] = [];\n for (const block of content) {\n if (typeof block !== 'object' || block === null) continue;\n const record = block as { type?: unknown; text?: unknown };\n if (record.type === 'text' && typeof record.text === 'string') {\n parts.push(record.text);\n }\n }\n return parts.join('');\n}\n\nexport function extensionCustomMessageToTurnText(message: {\n customType: string;\n content?: string | unknown[];\n details?: unknown;\n}): string {\n const type = message.customType.trim();\n const content = extensionCustomMessageContentToText(message.content).trim();\n const details =\n message.details == null\n ? ''\n : typeof message.details === 'string'\n ? message.details.trim()\n : JSON.stringify(message.details, null, 2);\n const sections = [\n `Extension message: ${type}`,\n content ? `Content:\\n${content}` : '',\n details ? `Details:\\n${details}` : '',\n ].filter(Boolean);\n return sections.join('\\n\\n');\n}\n"],"mappings":";AAEA,SAAgB,kCAAkC,SAA8C;AAC9F,KAAI,OAAO,YAAY,SAAU,QAAO;CACxC,MAAM,QAAkB,EAAE;AAC1B,MAAK,MAAM,SAAS,QAClB,KAAI,MAAM,SAAS,UAAU,OAAO,MAAM,SAAS,SACjD,OAAM,KAAK,MAAM,KAAK;AAG1B,QAAO,MAAM,KAAK,GAAG;;AAGvB,SAAgB,oCAAoC,SAAiD;AACnG,KAAI,OAAO,YAAY,SAAU,QAAO;AACxC,KAAI,CAAC,MAAM,QAAQ,QAAQ,CAAE,QAAO;CACpC,MAAM,QAAkB,EAAE;AAC1B,MAAK,MAAM,SAAS,SAAS;AAC3B,MAAI,OAAO,UAAU,YAAY,UAAU,KAAM;EACjD,MAAM,SAAS;AACf,MAAI,OAAO,SAAS,UAAU,OAAO,OAAO,SAAS,SACnD,OAAM,KAAK,OAAO,KAAK;;AAG3B,QAAO,MAAM,KAAK,GAAG;;AAGvB,SAAgB,iCAAiC,SAItC;CACT,MAAM,OAAO,QAAQ,WAAW,MAAM;CACtC,MAAM,UAAU,oCAAoC,QAAQ,QAAQ,CAAC,MAAM;CAC3E,MAAM,UACJ,QAAQ,WAAW,OACf,KACA,OAAO,QAAQ,YAAY,WACzB,QAAQ,QAAQ,MAAM,GACtB,KAAK,UAAU,QAAQ,SAAS,MAAM,EAAE;AAMhD,QALiB;EACf,sBAAsB;EACtB,UAAU,aAAa,YAAY;EACnC,UAAU,aAAa,YAAY;EACpC,CAAC,OAAO,QACM,CAAC,KAAK,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-fd-path.js","names":[],"sources":["../../../src/tui/tui-fd-path.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\n\n/** Resolve `fd` binary for pi-tui file autocomplete (`@path`, quoted paths). */\nexport function resolveFdPath(): string | null {\n if (process.platform === 'win32') {\n const where = spawnSync('where', ['fd'], { encoding: 'utf8' });\n const line = where.stdout?.trim().split(/\\r?\\n/)[0]?.trim();\n return line || null;\n }\n const which = spawnSync('which', ['fd'], { encoding: 'utf8' });\n const line = which.stdout?.trim();\n return line || null;\n}\n"],"mappings":";;;AAGA,SAAgB,gBAA+B;AAC7C,KAAI,QAAQ,aAAa,QAGvB,QAFc,UAAU,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,QAAQ,CAC3C,CAAC,QAAQ,MAAM,CAAC,MAAM,QAAQ,CAAC,IAAI,MAAM,IAC5C;AAIjB,QAFc,UAAU,SAAS,CAAC,KAAK,EAAE,EAAE,UAAU,QAAQ,CAC3C,CAAC,QAAQ,MAAM,IAClB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-file-autocomplete.js","names":[],"sources":["../../../src/tui/tui-file-autocomplete.ts"],"sourcesContent":["import type { TuiAutocompleteProvider } from '../extensions/types/tui.js';\nimport type { TuiWorkspaceFileSearchEntry } from './tui-backend.js';\n\nconst FILE_PATH_CHAR_CLASS = String.raw`a-zA-Z0-9_./\\-\\p{L}\\p{N}`;\nconst UNQUOTED_ONLY = new RegExp(`^[${FILE_PATH_CHAR_CLASS}]+$`, 'u');\n\nfunction formatFilePathForWire(path: string): string {\n if (UNQUOTED_ONLY.test(path)) return path;\n const body = path.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"');\n return `\"${body}\"`;\n}\n\nexport function createTuiFileAutocompleteProvider(\n searchWorkspaceFiles: (\n sessionKey: string,\n query: string,\n options?: { limit?: number },\n ) => Promise<TuiWorkspaceFileSearchEntry[]>,\n): TuiAutocompleteProvider {\n return async (query, { sessionKey }) => {\n const trimmed = query.trim();\n if (/^(skill|doc|url|symbol):/i.test(trimmed)) {\n return [];\n }\n const fileQuery = trimmed.replace(/^file:/i, '');\n const entries = await searchWorkspaceFiles(sessionKey, fileQuery, { limit: 15 });\n return entries.map((entry) => {\n const path = entry.isDirectory && !entry.path.endsWith('/') ? `${entry.path}/` : entry.path;\n const wire = `@file:${formatFilePathForWire(path)}`;\n return {\n name: path,\n value: wire,\n label: entry.name + (entry.isDirectory ? '/' : ''),\n description: entry.path,\n };\n });\n };\n}\n"],"mappings":";AAGA,MAAM,uBAAuB,OAAO,GAAG;AACvC,MAAM,gBAAgB,IAAI,OAAO,KAAK,qBAAqB,MAAM,IAAI;AAErE,SAAS,sBAAsB,MAAsB;AACnD,KAAI,cAAc,KAAK,KAAK,CAAE,QAAO;AAErC,QAAO,IADM,KAAK,QAAQ,OAAO,OAAO,CAAC,QAAQ,MAAM,OACxC,CAAC;;AAGlB,SAAgB,kCACd,sBAKyB;AACzB,QAAO,OAAO,OAAO,EAAE,iBAAiB;EACtC,MAAM,UAAU,MAAM,MAAM;AAC5B,MAAI,4BAA4B,KAAK,QAAQ,CAC3C,QAAO,EAAE;AAIX,UAAO,MADe,qBAAqB,YADzB,QAAQ,QAAQ,WAAW,GACmB,EAAE,EAAE,OAAO,IAAI,CAAC,EACjE,KAAK,UAAU;GAC5B,MAAM,OAAO,MAAM,eAAe,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,GAAG,MAAM,KAAK,KAAK,MAAM;AAEvF,UAAO;IACL,MAAM;IACN,OAAO,SAHa,sBAAsB,KAAK;IAI/C,OAAO,MAAM,QAAQ,MAAM,cAAc,MAAM;IAC/C,aAAa,MAAM;IACpB;IACD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-follow-up-queue.js","names":[],"sources":["../../../src/tui/tui-follow-up-queue.ts"],"sourcesContent":["import type { FollowUpMode } from './tui-settings.js';\n\nexport function drainFollowUpQueue(queue: string[], mode: FollowUpMode): string | undefined {\n if (mode === 'all') {\n const combined = queue.splice(0).join('\\n\\n').trim();\n return combined || undefined;\n }\n return queue.shift();\n}\n\nexport function restoreQueuedMessages(\n queues: {\n steeringQueue: string[];\n followUpQueue: string[];\n },\n currentText: string,\n): { text: string; restoredCount: number } {\n const steering = queues.steeringQueue.splice(0);\n const followUp = queues.followUpQueue.splice(0);\n const restored = [...steering, ...followUp];\n const text = [restored.join('\\n\\n'), currentText.trim()].filter(Boolean).join('\\n\\n');\n return { text, restoredCount: restored.length };\n}\n"],"mappings":";AAEA,SAAgB,mBAAmB,OAAiB,MAAwC;AAC1F,KAAI,SAAS,MAEX,QADiB,MAAM,OAAO,EAAE,CAAC,KAAK,OAAO,CAAC,MAC/B,IAAI,KAAA;AAErB,QAAO,MAAM,OAAO;;AAGtB,SAAgB,sBACd,QAIA,aACyC;CACzC,MAAM,WAAW,OAAO,cAAc,OAAO,EAAE;CAC/C,MAAM,WAAW,OAAO,cAAc,OAAO,EAAE;CAC/C,MAAM,WAAW,CAAC,GAAG,UAAU,GAAG,SAAS;AAE3C,QAAO;EAAE,MADI,CAAC,SAAS,KAAK,OAAO,EAAE,YAAY,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,OACjE;EAAE,eAAe,SAAS;EAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-git-branch.js","names":[],"sources":["../../../src/tui/tui-git-branch.ts"],"sourcesContent":["import { spawnSync } from 'node:child_process';\n\ntype Cache = { cwd: string; branch: string | null; at: number };\nlet cache: Cache | null = null;\n\nconst TTL_MS = 5000;\n\n/** Best-effort current git branch for footer (pi coding-agent style). */\nexport function getGitBranchCached(cwd: string): string | null {\n if (cache && cache.cwd === cwd && Date.now() - cache.at < TTL_MS) {\n return cache.branch;\n }\n const result = spawnSync(\n 'git',\n ['--no-optional-locks', 'symbolic-ref', '--quiet', '--short', 'HEAD'],\n {\n cwd,\n encoding: 'utf8',\n stdio: ['ignore', 'pipe', 'ignore'],\n timeout: 600,\n },\n );\n const branch =\n result.status === 0 && typeof result.stdout === 'string' && result.stdout.trim()\n ? result.stdout.trim()\n : null;\n cache = { cwd, branch, at: Date.now() };\n return branch;\n}\n"],"mappings":";;AAGA,IAAI,QAAsB;AAE1B,MAAM,SAAS;;AAGf,SAAgB,mBAAmB,KAA4B;AAC7D,KAAI,SAAS,MAAM,QAAQ,OAAO,KAAK,KAAK,GAAG,MAAM,KAAK,OACxD,QAAO,MAAM;CAEf,MAAM,SAAS,UACb,OACA;EAAC;EAAuB;EAAgB;EAAW;EAAW;EAAO,EACrE;EACE;EACA,UAAU;EACV,OAAO;GAAC;GAAU;GAAQ;GAAS;EACnC,SAAS;EACV,CACF;CACD,MAAM,SACJ,OAAO,WAAW,KAAK,OAAO,OAAO,WAAW,YAAY,OAAO,OAAO,MAAM,GAC5E,OAAO,OAAO,MAAM,GACpB;AACN,SAAQ;EAAE;EAAK;EAAQ,IAAI,KAAK,KAAK;EAAE;AACvC,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-keybindings-file.js","names":[],"sources":["../../../src/tui/tui-keybindings-file.ts"],"sourcesContent":["import { existsSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport {\n KeybindingsManager,\n type KeybindingsConfig,\n type KeyId,\n} from '@earendil-works/pi-tui';\n\nimport { resolveStateDir } from '../config/paths.js';\nimport { XOPC_TUI_KEYBINDINGS } from './xopc-tui-keybindings.js';\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction toKeybindingsConfig(value: unknown): KeybindingsConfig {\n if (!isRecord(value)) return {};\n const config: KeybindingsConfig = {};\n for (const [key, binding] of Object.entries(value)) {\n if (typeof binding === 'string') {\n config[key] = binding as KeyId;\n continue;\n }\n if (Array.isArray(binding) && binding.every((entry) => typeof entry === 'string')) {\n config[key] = binding as KeyId[];\n }\n }\n return config;\n}\n\nfunction loadRawConfig(path: string): Record<string, unknown> | undefined {\n if (!existsSync(path)) return undefined;\n try {\n const parsed = JSON.parse(readFileSync(path, 'utf8')) as unknown;\n return isRecord(parsed) ? parsed : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function getTuiKeybindingsPath(): string {\n return join(resolveStateDir(), 'keybindings.json');\n}\n\nexport function loadTuiKeybindingsConfig(path = getTuiKeybindingsPath()): KeybindingsConfig {\n return toKeybindingsConfig(loadRawConfig(path));\n}\n\nexport class XopcKeybindingsManager extends KeybindingsManager {\n constructor(\n userBindings: KeybindingsConfig = {},\n private readonly configPath = getTuiKeybindingsPath(),\n ) {\n super(XOPC_TUI_KEYBINDINGS, userBindings);\n }\n\n reload(): void {\n this.setUserBindings(loadTuiKeybindingsConfig(this.configPath));\n }\n\n getConfigPath(): string {\n return this.configPath;\n }\n}\n\nexport function createXopcTuiKeybindingsManager(): XopcKeybindingsManager {\n const configPath = getTuiKeybindingsPath();\n return new XopcKeybindingsManager(loadTuiKeybindingsConfig(configPath), configPath);\n}\n"],"mappings":";;;;;;;YASqD;AAGrD,SAAS,SAAS,OAAkD;AAClE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;;AAG7E,SAAS,oBAAoB,OAAmC;AAC9D,KAAI,CAAC,SAAS,MAAM,CAAE,QAAO,EAAE;CAC/B,MAAM,SAA4B,EAAE;AACpC,MAAK,MAAM,CAAC,KAAK,YAAY,OAAO,QAAQ,MAAM,EAAE;AAClD,MAAI,OAAO,YAAY,UAAU;AAC/B,UAAO,OAAO;AACd;;AAEF,MAAI,MAAM,QAAQ,QAAQ,IAAI,QAAQ,OAAO,UAAU,OAAO,UAAU,SAAS,CAC/E,QAAO,OAAO;;AAGlB,QAAO;;AAGT,SAAS,cAAc,MAAmD;AACxE,KAAI,CAAC,WAAW,KAAK,CAAE,QAAO,KAAA;AAC9B,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,aAAa,MAAM,OAAO,CAAC;AACrD,SAAO,SAAS,OAAO,GAAG,SAAS,KAAA;SAC7B;AACN;;;AAIJ,SAAgB,wBAAgC;AAC9C,QAAO,KAAK,iBAAiB,EAAE,mBAAmB;;AAGpD,SAAgB,yBAAyB,OAAO,uBAAuB,EAAqB;AAC1F,QAAO,oBAAoB,cAAc,KAAK,CAAC;;AAGjD,IAAa,yBAAb,cAA4C,mBAAmB;CAC7D,YACE,eAAkC,EAAE,EACpC,aAA8B,uBAAuB,EACrD;AACA,QAAM,sBAAsB,aAAa;AAFxB,OAAA,aAAA;;CAKnB,SAAe;AACb,OAAK,gBAAgB,yBAAyB,KAAK,WAAW,CAAC;;CAGjE,gBAAwB;AACtB,SAAO,KAAK;;;AAIhB,SAAgB,kCAA0D;CACxE,MAAM,aAAa,uBAAuB;AAC1C,QAAO,IAAI,uBAAuB,yBAAyB,WAAW,EAAE,WAAW"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-lifecycle.js","names":[],"sources":["../../../src/tui/tui-lifecycle.ts"],"sourcesContent":["import { Key, matchesKey } from '@earendil-works/pi-tui';\n\n/** Suppress duplicate backspace bursts from some terminals (openclaw-aligned). */\nexport function createBackspaceDeduper(params?: { dedupeWindowMs?: number; now?: () => number }) {\n const dedupeWindowMs = Math.max(0, Math.floor(params?.dedupeWindowMs ?? 8));\n const now = params?.now ?? (() => Date.now());\n let lastBackspaceAt = -1;\n\n return (data: string): string => {\n if (data !== '\\x08' && !matchesKey(data, Key.backspace)) {\n return data;\n }\n const ts = now();\n if (lastBackspaceAt >= 0 && ts - lastBackspaceAt <= dedupeWindowMs) {\n return '';\n }\n lastBackspaceAt = ts;\n return data;\n };\n}\n\nexport function isIgnorableTuiStopError(error: unknown): boolean {\n if (!error || typeof error !== 'object') {\n return false;\n }\n const err = error as { code?: unknown; syscall?: unknown; message?: unknown };\n const code = typeof err.code === 'string' ? err.code : '';\n const syscall = typeof err.syscall === 'string' ? err.syscall : '';\n const message = typeof err.message === 'string' ? err.message : '';\n if (code === 'EBADF' && syscall === 'setRawMode') {\n return true;\n }\n return /setRawMode/i.test(message) && /EBADF/i.test(message);\n}\n\nexport function stopTuiSafely(stop: () => void): void {\n try {\n stop();\n } catch (error) {\n if (!isIgnorableTuiStopError(error)) {\n throw error;\n }\n }\n}\n\nexport type DrainableTui = {\n stop: () => void;\n terminal?: {\n drainInput?: (maxMs?: number, idleMs?: number) => Promise<void>;\n };\n};\n\nexport async function drainAndStopTuiSafely(tui: DrainableTui): Promise<void> {\n if (typeof tui.terminal?.drainInput === 'function') {\n try {\n await tui.terminal.drainInput();\n } catch {\n // Best-effort only.\n }\n }\n stopTuiSafely(() => tui.stop());\n}\n\ntype CtrlCAction = 'clear' | 'warn' | 'exit';\n\n/** Double Ctrl+C within `exitWindowMs` to exit when the input line is empty (openclaw semantics). */\nexport function resolveCtrlCAction(params: {\n hasInput: boolean;\n now: number;\n lastCtrlCAt: number;\n exitWindowMs?: number;\n}): { action: CtrlCAction; nextLastCtrlCAt: number } {\n const exitWindowMs = Math.max(1, Math.floor(params.exitWindowMs ?? 500));\n if (params.hasInput) {\n return { action: 'clear', nextLastCtrlCAt: params.now };\n }\n if (params.now - params.lastCtrlCAt <= exitWindowMs) {\n return { action: 'exit', nextLastCtrlCAt: params.lastCtrlCAt };\n }\n return { action: 'warn', nextLastCtrlCAt: params.now };\n}\n"],"mappings":";;;AAGA,SAAgB,uBAAuB,QAA0D;CAC/F,MAAM,iBAAiB,KAAK,IAAI,GAAG,KAAK,MAAM,QAAQ,kBAAkB,EAAE,CAAC;CAC3E,MAAM,MAAM,QAAQ,cAAc,KAAK,KAAK;CAC5C,IAAI,kBAAkB;AAEtB,SAAQ,SAAyB;AAC/B,MAAI,SAAS,QAAU,CAAC,WAAW,MAAM,IAAI,UAAU,CACrD,QAAO;EAET,MAAM,KAAK,KAAK;AAChB,MAAI,mBAAmB,KAAK,KAAK,mBAAmB,eAClD,QAAO;AAET,oBAAkB;AAClB,SAAO;;;AAIX,SAAgB,wBAAwB,OAAyB;AAC/D,KAAI,CAAC,SAAS,OAAO,UAAU,SAC7B,QAAO;CAET,MAAM,MAAM;CACZ,MAAM,OAAO,OAAO,IAAI,SAAS,WAAW,IAAI,OAAO;CACvD,MAAM,UAAU,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;CAChE,MAAM,UAAU,OAAO,IAAI,YAAY,WAAW,IAAI,UAAU;AAChE,KAAI,SAAS,WAAW,YAAY,aAClC,QAAO;AAET,QAAO,cAAc,KAAK,QAAQ,IAAI,SAAS,KAAK,QAAQ;;AAG9D,SAAgB,cAAc,MAAwB;AACpD,KAAI;AACF,QAAM;UACC,OAAO;AACd,MAAI,CAAC,wBAAwB,MAAM,CACjC,OAAM;;;AAYZ,eAAsB,sBAAsB,KAAkC;AAC5E,KAAI,OAAO,IAAI,UAAU,eAAe,WACtC,KAAI;AACF,QAAM,IAAI,SAAS,YAAY;SACzB;AAIV,qBAAoB,IAAI,MAAM,CAAC;;;AAMjC,SAAgB,mBAAmB,QAKkB;CACnD,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,gBAAgB,IAAI,CAAC;AACxE,KAAI,OAAO,SACT,QAAO;EAAE,QAAQ;EAAS,iBAAiB,OAAO;EAAK;AAEzD,KAAI,OAAO,MAAM,OAAO,eAAe,aACrC,QAAO;EAAE,QAAQ;EAAQ,iBAAiB,OAAO;EAAa;AAEhE,QAAO;EAAE,QAAQ;EAAQ,iBAAiB,OAAO;EAAK"}
|