@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":"tui-local-shell.js","names":[],"sources":["../../../src/tui/tui-local-shell.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\n\nimport type { Component, KeybindingsManager, TUI } from '@earendil-works/pi-tui';\nimport { SelectList } from '@earendil-works/pi-tui';\n\nimport type { BashExecutionComponent } from './components/bash-execution.js';\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport { selectListTheme } from './theme.js';\n\ntype LocalShellDeps = {\n chatLog: {\n addSystem: (line: string) => void;\n addBashExecution: (\n command: string,\n ui: TUI,\n excludeFromContext: boolean,\n ) => BashExecutionComponent;\n };\n tui: TUI & { requestRender: () => void; setFocus: (c: Component) => void };\n editor: Component;\n openOverlay: (component: Component) => void;\n closeOverlay: () => void;\n spawnCommand?: typeof spawn;\n getCwd?: () => string;\n env?: NodeJS.ProcessEnv;\n maxOutputChars?: number;\n keybindings?: KeybindingsManager;\n /** Pause stdout/stderr filtering before handing the terminal to a child (`stdio: 'inherit'`). */\n pauseStdioFilter?: () => void;\n resumeStdioFilter?: () => void;\n /** Wrap work while the TUI is stopped (full-screen subprocess). */\n runWithInheritedStdio?: (work: () => Promise<void>) => Promise<void>;\n onComplete?: (entry: {\n command: string;\n output?: string;\n exitCode?: number | null;\n signal?: string | null;\n excludeFromContext: boolean;\n truncated?: boolean;\n }) => void | Promise<void>;\n};\n\nexport function formatLocalShellConsentHint(keybindings?: KeybindingsManager): string {\n const confirm = keybindings\n ? formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true })\n : 'Enter';\n const cancel = keybindings\n ? formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true })\n : 'Esc';\n return `↑/↓ + ${confirm} to choose, ${cancel} to cancel.`;\n}\n\n/** `!command` runs on the local machine (gated by in-session consent). `!!command` uses inherited stdio. */\nexport function createLocalShellRunner(deps: LocalShellDeps) {\n let localExecAsked = false;\n let localExecAllowed = false;\n const spawnCommand = deps.spawnCommand ?? spawn;\n const getCwd = deps.getCwd ?? (() => process.cwd());\n const env = deps.env ?? process.env;\n const maxChars = deps.maxOutputChars ?? 40_000;\n\n const ensureLocalExecAllowed = async (): Promise<boolean> => {\n if (localExecAllowed) {\n return true;\n }\n if (localExecAsked) {\n return false;\n }\n localExecAsked = true;\n\n return await new Promise<boolean>((resolve) => {\n deps.chatLog.addSystem('Allow local shell commands for this session?');\n deps.chatLog.addSystem(\n 'Runs on YOUR machine (not the gateway); may delete files or expose secrets.',\n );\n deps.chatLog.addSystem(formatLocalShellConsentHint(deps.keybindings));\n const selector = new SelectList(\n [\n { value: 'no', label: 'No' },\n { value: 'yes', label: 'Yes' },\n ],\n 2,\n selectListTheme,\n );\n selector.onSelect = (item) => {\n deps.closeOverlay();\n if (item.value === 'yes') {\n localExecAllowed = true;\n deps.chatLog.addSystem('local shell: enabled for this session');\n resolve(true);\n } else {\n deps.chatLog.addSystem('local shell: not enabled');\n resolve(false);\n }\n deps.tui.requestRender();\n };\n selector.onCancel = () => {\n deps.closeOverlay();\n deps.chatLog.addSystem('local shell: cancelled');\n deps.tui.requestRender();\n resolve(false);\n };\n deps.openOverlay(selector);\n deps.tui.requestRender();\n });\n };\n\n const runLocalShellLine = async (line: string) => {\n let cmd = line.slice(1);\n if (cmd === '') {\n return;\n }\n\n let inheritStdio = false;\n if (cmd.startsWith('!')) {\n inheritStdio = true;\n cmd = cmd.slice(1);\n if (cmd === '') {\n deps.chatLog.addSystem('[local] !! requires a command (e.g. !!vim file)');\n deps.tui.requestRender();\n return;\n }\n }\n\n if (localExecAsked && !localExecAllowed) {\n deps.chatLog.addSystem('local shell: not enabled for this session');\n deps.tui.requestRender();\n return;\n }\n\n const allowed = await ensureLocalExecAllowed();\n if (!allowed) {\n return;\n }\n\n let cwd: string;\n try {\n cwd = getCwd();\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n deps.chatLog.addSystem(`[local] workspace error: ${errorMessage}`);\n deps.tui.requestRender();\n return;\n }\n\n if (\n inheritStdio &&\n deps.runWithInheritedStdio &&\n deps.pauseStdioFilter &&\n deps.resumeStdioFilter\n ) {\n deps.pauseStdioFilter();\n try {\n await deps.runWithInheritedStdio(async () => {\n await new Promise<void>((resolve, reject) => {\n const child = spawnCommand(cmd, {\n shell: true,\n cwd,\n env: { ...env, XOPC_SHELL: 'tui-local' },\n stdio: 'inherit',\n });\n child.on('close', async (code, signal) => {\n deps.chatLog.addSystem(\n `[local] !! $ ${cmd} — exit ${code ?? '?'}${signal ? ` (signal ${signal})` : ''} (excluded from agent context)`,\n );\n await deps.onComplete?.({\n command: cmd,\n output: '',\n exitCode: code,\n signal,\n excludeFromContext: true,\n });\n resolve();\n });\n child.on('error', (err) => {\n deps.chatLog.addSystem(`[local] error: ${String(err)}`);\n reject(err);\n });\n });\n });\n } catch {\n // logged above\n } finally {\n deps.resumeStdioFilter();\n deps.tui.setFocus(deps.editor);\n deps.tui.requestRender();\n }\n return;\n }\n\n if (inheritStdio && !deps.runWithInheritedStdio) {\n deps.chatLog.addSystem('[local] inherited stdio requires full TUI wiring; use single ! instead.');\n deps.tui.requestRender();\n return;\n }\n\n const bashBlock = deps.chatLog.addBashExecution(cmd, deps.tui, false);\n deps.tui.requestRender();\n\n await new Promise<void>((resolve) => {\n const child = spawnCommand(cmd, {\n shell: true,\n cwd,\n env: { ...env, XOPC_SHELL: 'tui-local' },\n });\n\n let totalChars = 0;\n let output = '';\n let truncated = false;\n const appendCapped = (chunk: string) => {\n if (totalChars >= maxChars) {\n truncated = true;\n return;\n }\n const slice = chunk.slice(0, maxChars - totalChars);\n totalChars += slice.length;\n output += slice;\n if (slice.length < chunk.length) {\n truncated = true;\n }\n bashBlock.appendOutput(slice);\n deps.tui.requestRender();\n };\n\n child.stdout?.on('data', (buf) => appendCapped(buf.toString('utf8')));\n child.stderr?.on('data', (buf) => appendCapped(buf.toString('utf8')));\n\n child.on('close', async (code, signal) => {\n await deps.onComplete?.({\n command: cmd,\n output,\n exitCode: code,\n signal,\n excludeFromContext: false,\n truncated,\n });\n bashBlock.setComplete(code, signal);\n deps.tui.requestRender();\n resolve();\n });\n\n child.on('error', async (err) => {\n await deps.onComplete?.({\n command: cmd,\n output: String(err),\n exitCode: null,\n signal: null,\n excludeFromContext: false,\n });\n bashBlock.setError(String(err));\n deps.tui.requestRender();\n resolve();\n });\n });\n };\n\n return { runLocalShellLine };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-model-picker.js","names":[],"sources":["../../../src/tui/tui-model-picker.ts"],"sourcesContent":["import {\n Container,\n getKeybindings,\n type Component,\n type Focusable,\n type KeybindingsManager,\n matchesKey,\n Spacer,\n type SelectItem,\n Text,\n} from '@earendil-works/pi-tui';\n\nimport { SearchableSelectList } from './components/searchable-select-list.js';\nimport { DynamicBorder } from './components/dynamic-border.js';\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport type { TuiModelChoice } from './tui-backend.js';\nimport type { PickerServices } from './tui-picker-services.js';\nimport { modelRef } from './tui-scoped-models.js';\nimport type { TuiState } from './tui-types.js';\nimport { searchableSelectListTheme, theme } from './theme.js';\n\nfunction formatSelectNavigationHint(keybindings: KeybindingsManager): string {\n const up = formatKeyIds(keybindings, 'tui.select.up', { capitalize: true });\n const down = formatKeyIds(keybindings, 'tui.select.down', { capitalize: true });\n return up + '/' + down;\n}\n\nexport function formatModelPickerHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Select model (${nav} · type to filter · ${confirm} select · ${cancel} close)`;\n}\n\nfunction currentModelRef(state: Pick<TuiState, 'sessionInfo'>): string | null {\n const provider = state.sessionInfo.modelProvider?.trim();\n const model = state.sessionInfo.model?.trim();\n if (provider && model) return `${provider}/${model}`;\n return model && model.includes('/') ? model : null;\n}\n\nexport function modelPickerSelectItems(\n models: TuiModelChoice[],\n state: Pick<TuiState, 'sessionInfo'>,\n): SelectItem[] {\n const currentRef = currentModelRef(state);\n return models\n .map((m) => {\n const ref = `${m.provider}/${m.id}`;\n const isCurrent = ref === currentRef;\n const name = m.name && m.name !== m.id ? m.name : '';\n return {\n value: ref,\n label: `${isCurrent ? '✓ ' : ''}${m.id}`,\n description: [m.provider, name, isCurrent ? 'current' : ''].filter(Boolean).join(' · '),\n searchText: `${m.provider} ${m.id} ${m.name ?? ''} ${ref}`,\n isCurrent,\n };\n })\n .sort((a, b) => {\n if (a.isCurrent !== b.isCurrent) return a.isCurrent ? -1 : 1;\n return a.value.localeCompare(b.value);\n })\n .map(({ isCurrent: _isCurrent, ...item }) => item);\n}\n\ntype ModelPickerScope = 'scoped' | 'all';\n\nfunction scopedModelChoices(models: TuiModelChoice[], refs: string[]): TuiModelChoice[] {\n const byRef = new Map(models.map((model) => [modelRef(model), model]));\n return refs.map((ref) => byRef.get(ref)).filter((model): model is TuiModelChoice => Boolean(model));\n}\n\nexport class ModelPickerSelectList implements Component, Focusable {\n private scope: ModelPickerScope;\n private readonly list: SearchableSelectList;\n private readonly allItems: SelectItem[];\n private readonly scopedItems: SelectItem[];\n\n onSelect?: (item: SelectItem) => void;\n onCancel?: () => void;\n\n constructor(\n models: TuiModelChoice[],\n state: Pick<TuiState, 'sessionInfo'>,\n scopedRefs: string[],\n initialQuery?: string,\n private readonly keybindings?: KeybindingsManager,\n ) {\n this.allItems = modelPickerSelectItems(models, state);\n this.scopedItems = modelPickerSelectItems(scopedModelChoices(models, scopedRefs), state);\n this.scope = this.scopedItems.length > 0 ? 'scoped' : 'all';\n this.list = new SearchableSelectList(\n this.itemsForScope(),\n Math.min(10, Math.max(1, this.allItems.length)),\n searchableSelectListTheme,\n { initialQuery },\n );\n this.list.onSelect = (item) => this.onSelect?.(item);\n this.list.onCancel = () => this.onCancel?.();\n }\n\n get focused(): boolean {\n return this.list.focused;\n }\n\n set focused(value: boolean) {\n this.list.focused = value;\n }\n\n private itemsForScope(): SelectItem[] {\n return this.scope === 'scoped' ? this.scopedItems : this.allItems;\n }\n\n private toggleScope(): void {\n if (this.scopedItems.length === 0) return;\n this.scope = this.scope === 'scoped' ? 'all' : 'scoped';\n this.list.setItems(this.itemsForScope());\n }\n\n getSelectedItem(): SelectItem | null {\n return this.list.getSelectedItem();\n }\n\n invalidate(): void {\n this.list.invalidate();\n }\n\n render(width: number): string[] {\n if (this.scopedItems.length === 0) {\n return this.list.render(width);\n }\n const scoped = this.scope === 'scoped' ? theme.accent('scoped') : theme.dim('scoped');\n const all = this.scope === 'all' ? theme.accent('all') : theme.dim('all');\n const tab = this.keybindings\n ? formatKeyIds(this.keybindings, 'tui.input.tab', { capitalize: true })\n : 'Tab';\n return [theme.dim(`Scope: ${scoped} | ${all} · ${tab} scope`), '', ...this.list.render(width)];\n }\n\n handleInput(keyData: string): void {\n const keybindings = this.keybindings ?? getKeybindings();\n if (keybindings.matches(keyData, 'tui.input.tab') || matchesKey(keyData, 'tab')) {\n this.toggleScope();\n return;\n }\n this.list.handleInput(keyData);\n }\n}\n\nclass ModelPickerPanel extends Container implements Focusable {\n constructor(private readonly picker: Component & Focusable, keybindings: KeybindingsManager) {\n super();\n this.addChild(new DynamicBorder(theme.border));\n this.addChild(new Spacer(1));\n this.addChild(new Text(theme.dim(formatModelPickerHint(keybindings)), 0, 0));\n this.addChild(new Spacer(1));\n this.addChild(picker);\n this.addChild(new Spacer(1));\n this.addChild(new DynamicBorder(theme.border));\n }\n\n get focused(): boolean {\n return this.picker.focused;\n }\n\n set focused(value: boolean) {\n this.picker.focused = value;\n }\n\n handleInput(keyData: string): void {\n this.picker.handleInput(keyData);\n }\n}\n\n/** Ctrl+L or `/model` — pick model and apply it to the current session. */\nexport async function openModelPickerOverlay(\n svc: PickerServices,\n initialSearch?: string,\n): Promise<void> {\n const models = await svc.client.listModels();\n svc.setModelChoices(models);\n if (models.length === 0) {\n svc.chatLog.addSystem('No models available from gateway.');\n svc.tui.requestRender();\n return;\n }\n const items = modelPickerSelectItems(models, svc.state);\n const scopedRefs = svc.getScopedModelRefs();\n const list =\n scopedRefs && scopedRefs.length > 0\n ? new ModelPickerSelectList(models, svc.state, scopedRefs, initialSearch, svc.keybindings)\n : new SearchableSelectList(items, Math.min(10, items.length), searchableSelectListTheme, {\n initialQuery: initialSearch,\n });\n const panel = new ModelPickerPanel(list, svc.keybindings);\n const closeSelector = svc.openEditorSelector(panel, panel);\n list.onSelect = (item) => {\n closeSelector();\n void Promise.resolve(svc.switchModel(item.value));\n svc.tui.requestRender();\n };\n list.onCancel = () => {\n closeSelector();\n };\n svc.tui.requestRender();\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-oauth-login.js","names":[],"sources":["../../../src/tui/tui-oauth-login.ts"],"sourcesContent":["import { spawn } from 'node:child_process';\n\nimport {\n Container,\n SelectList,\n Spacer,\n Text,\n type Component,\n type KeybindingsManager,\n type SelectItem,\n} from '@earendil-works/pi-tui';\n\nimport type { OAuthLoginCallbacks } from '../auth/index.js';\nimport { CredentialResolver } from '../auth/credentials.js';\nimport {\n getOAuthProvider,\n getSupportedOAuthProviders,\n type OAuthProviderConfig,\n} from '../cli/utils/oauth-providers.js';\nimport { getProviderDisplayName } from '../providers/index.js';\nimport { createLogger } from '../utils/logger.js';\n\nimport { ExtensionInputDialog } from './components/extension-dialog.js';\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport { selectListTheme, theme } from './theme.js';\n\nconst log = createLogger('TuiOAuthLogin');\n\ntype TuiOAuthLoginDeps = {\n chatLog: { addSystem: (line: string) => void };\n tui: {\n requestRender: (force?: boolean) => void;\n setFocus: (component: Component) => void;\n };\n editor: Component;\n openOverlay: (component: Component) => void;\n closeOverlay: () => void;\n keybindings?: KeybindingsManager;\n};\n\ntype SelectDialogItem = SelectItem & {\n description?: string;\n};\n\nclass TuiSelectDialog extends Container implements Component {\n private readonly selectList: SelectList;\n\n constructor(\n title: string,\n items: SelectDialogItem[],\n callbacks: { onSelect: (value: string) => void; onCancel: () => void },\n keybindings?: KeybindingsManager,\n ) {\n super();\n this.addChild(new Text(theme.bold(theme.accent(title)), 0, 0));\n this.addChild(new Spacer(1));\n this.selectList = new SelectList(\n items,\n Math.min(Math.max(items.length, 1), 10),\n selectListTheme,\n {\n minPrimaryColumnWidth: 16,\n maxPrimaryColumnWidth: 48,\n },\n );\n this.selectList.onSelect = (item) => callbacks.onSelect(item.value);\n this.selectList.onCancel = callbacks.onCancel;\n this.addChild(this.selectList);\n this.addChild(new Spacer(1));\n this.addChild(new Text(theme.dim(formatSelectHint(keybindings)), 0, 0));\n }\n\n handleInput(data: string): void {\n this.selectList.handleInput(data);\n }\n}\n\nfunction formatSelectHint(keybindings?: KeybindingsManager): string {\n const confirm = keybindings\n ? formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true })\n : 'Enter';\n const cancel = keybindings\n ? formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true })\n : 'Esc';\n return `↑/↓ + ${confirm} to choose, ${cancel} to cancel.`;\n}\n\nfunction openBrowser(url: string): void {\n const platform = process.platform;\n const command = platform === 'darwin' ? 'open' : platform === 'win32' ? 'cmd' : 'xdg-open';\n const args = platform === 'win32' ? ['/c', 'start', '', url] : [url];\n const child = spawn(command, args, { stdio: 'ignore', detached: true });\n child.on('error', (err) => {\n log.debug({ err, command }, 'Browser open command failed');\n });\n child.unref();\n}\n\nfunction getDeviceCodeBrowserUrl(providerId: string, verificationUri: string, userCode: string): string {\n if (providerId !== 'github-copilot') return verificationUri;\n try {\n const url = new URL(verificationUri);\n url.searchParams.set('user_code', userCode);\n return url.toString();\n } catch {\n return verificationUri;\n }\n}\n\nfunction runManagedDialog<T>(\n deps: TuiOAuthLoginDeps,\n activeCleanups: Set<() => void>,\n createDialog: (resolve: (value: T) => void, reject: (err: Error) => void) => Component,\n): Promise<T> {\n return new Promise<T>((resolve, reject) => {\n let settled = false;\n const finish = (value: T) => {\n if (settled) return;\n settled = true;\n activeCleanups.delete(cleanup);\n deps.closeOverlay();\n deps.tui.requestRender(true);\n resolve(value);\n };\n const fail = (err: Error) => {\n if (settled) return;\n settled = true;\n activeCleanups.delete(cleanup);\n deps.closeOverlay();\n deps.tui.requestRender(true);\n reject(err);\n };\n const cleanup = () => fail(new Error('Login cancelled'));\n activeCleanups.add(cleanup);\n deps.openOverlay(createDialog(finish, fail));\n deps.tui.requestRender(true);\n });\n}\n\nasync function promptForProvider(deps: TuiOAuthLoginDeps, activeCleanups: Set<() => void>): Promise<string | undefined> {\n const providers = getSupportedOAuthProviders();\n if (providers.length === 0) {\n deps.chatLog.addSystem('No OAuth providers are available.');\n deps.tui.requestRender();\n return undefined;\n }\n\n return runManagedDialog(\n deps,\n activeCleanups,\n (resolve, reject) =>\n new TuiSelectDialog(\n 'Choose OAuth provider',\n providers.map((provider) => ({\n value: provider,\n label: provider,\n description: getProviderDisplayName(provider),\n })),\n {\n onSelect: resolve,\n onCancel: () => reject(new Error('Login cancelled')),\n },\n deps.keybindings,\n ),\n );\n}\n\nfunction buildTuiOAuthCallbacks(params: {\n config: OAuthProviderConfig;\n deps: TuiOAuthLoginDeps;\n activeCleanups: Set<() => void>;\n}): OAuthLoginCallbacks {\n const { config, deps, activeCleanups } = params;\n\n const inputDialog = (\n title: string,\n placeholder: string | undefined,\n allowEmpty: boolean | undefined,\n ): Promise<string> =>\n runManagedDialog<string>(\n deps,\n activeCleanups,\n (resolve, reject) =>\n new ExtensionInputDialog(\n title,\n placeholder,\n {\n onSubmit: (value) => {\n if (!allowEmpty && value.trim().length === 0) {\n deps.chatLog.addSystem('Input is required.');\n deps.tui.requestRender();\n return;\n }\n resolve(value);\n },\n onCancel: () => reject(new Error('Login cancelled')),\n },\n deps.keybindings,\n ),\n );\n\n return {\n onAuth: (info) => {\n const lines = [config.urlPrompt.trim(), info.url];\n if (info.instructions) lines.push('', info.instructions);\n if (config.provider.usesCallbackServer) {\n lines.push('', 'Waiting for localhost callback. If it does not complete, paste the final redirect URL when prompted.');\n }\n deps.chatLog.addSystem(lines.join('\\n'));\n openBrowser(info.url);\n deps.tui.requestRender();\n },\n onDeviceCode: (info) => {\n const browserUrl = getDeviceCodeBrowserUrl(config.provider.id, info.verificationUri, info.userCode);\n const lines = [`Open ${browserUrl} and enter code ${info.userCode}`];\n if (config.provider.id === 'github-copilot') {\n lines.push('GitHub may leave the browser on a /login/device/authorize 404 page after approval; return here and wait for completion.');\n }\n deps.chatLog.addSystem(lines.join('\\n'));\n openBrowser(browserUrl);\n deps.tui.requestRender();\n },\n onPrompt: (prompt) => inputDialog(prompt.message, prompt.placeholder, prompt.allowEmpty),\n onManualCodeInput: config.provider.usesCallbackServer\n ? () => inputDialog('Paste the authorization code (or full redirect URL):', undefined, false)\n : undefined,\n onProgress: (message) => {\n deps.chatLog.addSystem(message);\n deps.tui.requestRender();\n },\n onSelect: (prompt) => {\n if (prompt.options.length === 0) return Promise.resolve(undefined);\n return runManagedDialog(\n deps,\n activeCleanups,\n (resolve, reject) =>\n new TuiSelectDialog(\n prompt.message,\n prompt.options.map((option) => ({\n value: option.id,\n label: option.label,\n })),\n {\n onSelect: resolve,\n onCancel: () => reject(new Error('Login cancelled')),\n },\n deps.keybindings,\n ),\n );\n },\n };\n}\n\nexport async function runTuiOAuthLogin(provider: string | undefined, deps: TuiOAuthLoginDeps): Promise<void> {\n const activeCleanups = new Set<() => void>();\n try {\n const selectedProvider = provider?.trim() || await promptForProvider(deps, activeCleanups);\n if (!selectedProvider) return;\n\n const config = getOAuthProvider(selectedProvider);\n if (!config) {\n throw new Error(`OAuth not supported for provider: ${selectedProvider}`);\n }\n\n deps.chatLog.addSystem(`Starting OAuth login for ${selectedProvider}...`);\n deps.tui.requestRender();\n\n const credentials = await config.provider.login(\n buildTuiOAuthCallbacks({ config, deps, activeCleanups }),\n );\n\n const resolver = new CredentialResolver();\n await resolver.saveOAuthToken(selectedProvider, {\n access: config.provider.getApiKey(credentials),\n refresh: credentials.refresh,\n expiresAt: credentials.expires,\n scope: Array.isArray(credentials.scope)\n ? credentials.scope.filter((value): value is string => typeof value === 'string')\n : undefined,\n createdAt: new Date().toISOString(),\n });\n\n deps.chatLog.addSystem(`OAuth login completed for ${selectedProvider}.`);\n } finally {\n for (const cleanup of [...activeCleanups]) cleanup();\n deps.tui.setFocus(deps.editor);\n deps.tui.requestRender(true);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-overlays.js","names":[],"sources":["../../../src/tui/tui-overlays.ts"],"sourcesContent":["import type { Component, OverlayHandle, OverlayOptions, TUI } from '@earendil-works/pi-tui';\n\ntype OverlayHost = Pick<TUI, 'showOverlay' | 'hideOverlay' | 'hasOverlay' | 'setFocus'>;\n\n/** Focus management for pi-tui overlays (openclaw pattern). */\nexport function createOverlayHandlers(host: OverlayHost, fallbackFocus: Component | (() => Component)) {\n const openOverlay = (\n component: Component,\n options?: OverlayOptions,\n ): OverlayHandle => {\n const handle = host.showOverlay(component, options);\n host.setFocus(component);\n return handle;\n };\n\n const closeOverlay = () => {\n if (host.hasOverlay()) {\n host.hideOverlay();\n }\n host.setFocus(typeof fallbackFocus === 'function' ? fallbackFocus() : fallbackFocus);\n };\n\n return { openOverlay, closeOverlay };\n}\n"],"mappings":";;AAKA,SAAgB,sBAAsB,MAAmB,eAA8C;CACrG,MAAM,eACJ,WACA,YACkB;EAClB,MAAM,SAAS,KAAK,YAAY,WAAW,QAAQ;AACnD,OAAK,SAAS,UAAU;AACxB,SAAO;;CAGT,MAAM,qBAAqB;AACzB,MAAI,KAAK,YAAY,CACnB,MAAK,aAAa;AAEpB,OAAK,SAAS,OAAO,kBAAkB,aAAa,eAAe,GAAG,cAAc;;AAGtF,QAAO;EAAE;EAAa;EAAc"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-picker-overlay.js","names":[],"sources":["../../../src/tui/tui-picker-overlay.ts"],"sourcesContent":["import type { KeybindingsManager, SelectItem } from '@earendil-works/pi-tui';\n\nimport { ScopedModelsSelector } from './components/scoped-models-selector.js';\nimport { SettingsSelector } from './components/settings-selector.js';\nimport { SearchableSelectList } from './components/searchable-select-list.js';\nimport { SessionSelector } from './components/session-selector.js';\nimport { ThinkingSelector } from './components/thinking-selector.js';\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport type { TuiAgentInfo, TuiSessionItem } from './tui-backend.js';\nimport type { PickerServices } from './tui-picker-services.js';\nimport { formatSessionPickerDescription } from './tui-session-format.js';\nimport { searchableSelectListTheme, theme } from './theme.js';\nimport { buildTuiTimelineTurns } from './tui-timeline.js';\nimport {\n formatTimelineOpenedHint,\n TimelineSelectList,\n} from './tui-timeline-picker.js';\nimport { filterTuiTranscriptTreeEntries } from './tui-transcript-tree.js';\nimport {\n defaultTranscriptForkKey,\n formatTranscriptTreeFilterHint,\n formatUserMessageForkOpenedHint,\n TranscriptTreeSelectList,\n userMessageForkSelectItems,\n} from './tui-transcript-tree-picker.js';\nimport {\n listThinkingLevels,\n normalizeThinkLevel,\n type ThinkLevel,\n} from '../agent/transcript/thinking-types.js';\nimport { parseAgentSessionKey } from '../routing/agent-session-key.js';\nimport {\n getProjectTrustOptions,\n hasTrustRequiringProjectResources,\n} from '../project-trust/trust-store.js';\nimport type { ReviewContext } from '../review/review-git.js';\n\ntype SearchableSelectItem = SelectItem & { searchText?: string };\n\nfunction formatSelectNavigationHint(keybindings: KeybindingsManager): string {\n const up = formatKeyIds(keybindings, 'tui.select.up', { capitalize: true });\n const down = formatKeyIds(keybindings, 'tui.select.down', { capitalize: true });\n return `${up}/${down}`;\n}\n\nexport function formatScopedModelsOpenedHint(keybindings: KeybindingsManager): string {\n const modelCycle = formatKeyIds(keybindings, 'app.model.cycleForward', { capitalize: true });\n return `Scoped models for ${modelCycle}`;\n}\n\nexport function formatScopedModelsSavedHint(params: {\n refs: string[] | null;\n total: number;\n keybindings: KeybindingsManager;\n}): string {\n const modelCycle = formatKeyIds(params.keybindings, 'app.model.cycleForward', {\n capitalize: true,\n });\n if (params.refs === null) {\n return `${modelCycle} cycles all ${params.total} models`;\n }\n const count = params.refs.length;\n return `${modelCycle} cycles ${count} scoped model${count === 1 ? '' : 's'}`;\n}\n\nexport function formatSettingsOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Settings (${nav} · ${confirm} toggle · ${cancel} close)`;\n}\n\nexport function formatThinkingSelectorHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Thinking level (${nav} · ${confirm} select · ${cancel} close)`;\n}\n\nexport function formatThinkingLevelSavedHint(level: ThinkLevel): string {\n return `Thinking level: ${level}`;\n}\n\nexport function formatProjectTrustOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Project trust (${nav} · ${confirm} select · ${cancel} close)`;\n}\n\nexport function formatReviewPickerOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Review (${nav} · type to filter · ${confirm} select · ${cancel} close)`;\n}\n\nexport function formatAgentPickerOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Switch agent (${nav} · ${confirm} select · ${cancel} close)`;\n}\n\nfunction agentSelectItems(agents: TuiAgentInfo[], currentAgentId?: string): SelectItem[] {\n const current = currentAgentId?.trim().toLowerCase();\n return [...agents]\n .filter((agent) => agent.enabled !== false)\n .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 .map((agent) => ({\n label: agent.id === current ? `${agent.id} (current)` : agent.id,\n value: agent.id,\n description: agent.displayName,\n }));\n}\n\nexport function formatSessionTreeOpenedHint(keybindings: KeybindingsManager): string {\n const nav = formatSelectNavigationHint(keybindings);\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Session tree (${nav} · type to filter · ${confirm} resume · ${cancel} close)`;\n}\n\nexport async function openTimelineOverlay(\n svc: PickerServices,\n initialQuery?: string,\n): Promise<void> {\n const items = await svc.client.loadTimeline(svc.state.currentSessionKey);\n const turns = buildTuiTimelineTurns(items);\n if (turns.length === 0) {\n svc.chatLog.addSystem('No timeline turns found.');\n svc.tui.requestRender();\n return;\n }\n\n const viewState = svc.chatLog.getTimelineViewportState();\n const activeDisplayIndex =\n viewState.mode === 'history'\n ? viewState.displayIndex\n : turns[turns.length - 1]?.displayIndex;\n const list = new TimelineSelectList(turns, {\n keybindings: svc.keybindings,\n ...(activeDisplayIndex !== undefined ? { activeDisplayIndex } : {}),\n ...(initialQuery ? { initialQuery } : {}),\n });\n list.onSelect = (turn) => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n void (async () => {\n if (!svc.chatLog.jumpToDisplayIndex(turn.displayIndex)) {\n const loaded =\n turn.rowNumber !== undefined\n ? await svc.loadHistoryWindow({ rowNumber: turn.rowNumber })\n : false;\n if (!loaded || !svc.chatLog.jumpToDisplayIndex(turn.displayIndex)) {\n svc.chatLog.addSystem(`Turn ${turn.turn} is outside loaded history.`);\n }\n }\n svc.tui.requestRender();\n })();\n };\n list.onCancel = () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n };\n\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim(formatTimelineOpenedHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\nfunction resumeSession(svc: PickerServices, sessionKey: string): void {\n svc.setSessionKey(sessionKey);\n svc.clearChatForSessionSwitch();\n svc.chatLog.addSystem(`Session: ${sessionKey}`);\n void svc\n .refreshSessionInfo()\n .then(() => svc.loadSessionHistory())\n .then(() => {\n svc.updateHeader();\n svc.tui.requestRender();\n });\n svc.tui.requestRender();\n}\n\nfunction sessionTreeGroup(session: TuiSessionItem): { agentId: string; root: string; leaf: string } {\n const raw = session.key.trim();\n const parts = raw.split(':').filter(Boolean);\n if (parts.length >= 3 && parts[0] === 'agent') {\n const rest = parts.slice(2);\n return {\n agentId: parts[1] ?? 'main',\n root: rest[0] ?? raw,\n leaf: rest.length > 1 ? rest.slice(1).join(':') : rest.join(':') || raw,\n };\n }\n return { agentId: 'legacy', root: raw || 'session', leaf: raw || 'session' };\n}\n\nexport function sessionTreeSelectItems(\n sessions: TuiSessionItem[],\n currentSessionKey?: string,\n): SelectItem[] {\n const byKey = new Map(sessions.map((session) => [session.key, session]));\n return [...sessions]\n .sort((a, b) => {\n const ga = sessionTreeGroup(a);\n const gb = sessionTreeGroup(b);\n const groupCmp = `${ga.agentId}:${ga.root}`.localeCompare(`${gb.agentId}:${gb.root}`);\n if (groupCmp !== 0) return groupCmp;\n return (b.updatedAt ?? 0) - (a.updatedAt ?? 0);\n })\n .map((session) => {\n const group = sessionTreeGroup(session);\n const current = session.key === currentSessionKey ? '* ' : ' ';\n const label = session.displayName?.trim() || group.leaf;\n const parent = session.forkedFromSessionKey\n ? (byKey.get(session.forkedFromSessionKey)?.displayName?.trim() ?? session.forkedFromSessionKey)\n : null;\n const description = [\n `${group.agentId}/${group.root}`,\n formatSessionPickerDescription(session, { showKey: Boolean(session.displayName) }),\n parent ? `forked from ${parent}` : '',\n ]\n .filter(Boolean)\n .join(' · ');\n return {\n value: session.key,\n label: `${current}${label}`,\n description,\n searchText: `${session.key} ${session.displayName ?? ''} ${session.model ?? ''} ${parent ?? ''}`,\n };\n });\n}\n\n\n\n\n\nexport async function openAgentPickerOverlay(svc: PickerServices): Promise<void> {\n const parsed = parseAgentSessionKey(svc.state.currentSessionKey);\n if (!parsed) {\n svc.chatLog.addSystem('Cannot switch agent: current session is not an agent session.');\n svc.tui.requestRender();\n return;\n }\n if (svc.state.activeRunId) {\n svc.chatLog.addSystem('Cannot switch agent while a run is active. Abort first.');\n svc.tui.requestRender();\n return;\n }\n if (!svc.switchAgentSession) {\n svc.chatLog.addSystem('Agent switching is not available in this mode.');\n svc.tui.requestRender();\n return;\n }\n const agents = await svc.client.listAgents();\n const items = agentSelectItems(agents, parsed.agentId);\n if (items.length === 0) {\n svc.chatLog.addSystem('No agents available.');\n svc.tui.requestRender();\n return;\n }\n svc.chatLog.addSystem(theme.dim(formatAgentPickerOpenedHint(svc.keybindings)));\n const list = new SearchableSelectList(items, Math.min(10, items.length), searchableSelectListTheme, {\n searchPromptText: 'agent> ',\n });\n const closeSelector = svc.openEditorSelector(list, list);\n list.onSelect = (item) => {\n closeSelector();\n const targetAgentId = item.value;\n if (targetAgentId === parsed.agentId) {\n svc.chatLog.addSystem(`Already using agent: ${targetAgentId}`);\n svc.tui.requestRender();\n return;\n }\n const targetSessionKey = `agent:${targetAgentId}:${parsed.rest}`;\n void Promise.resolve(svc.switchAgentSession?.(targetSessionKey, targetAgentId))\n .then(() => {\n svc.chatLog.addSystem(`Switched to agent: ${targetAgentId}\\nSession: ${targetSessionKey}`);\n })\n .catch((err: unknown) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n svc.chatLog.addSystem(`Agent switch failed: ${errorMessage}`);\n })\n .finally(() => svc.tui.requestRender());\n svc.tui.requestRender();\n };\n list.onCancel = () => closeSelector();\n svc.tui.requestRender();\n}\n\nfunction quoteReviewArg(value: string): string {\n return /^[A-Za-z0-9._/@:-]+$/.test(value) ? value : JSON.stringify(value);\n}\n\nfunction formatReviewStatus(status: ReviewContext['status']): string {\n if (status.isClean) return 'working tree clean';\n const parts: string[] = [];\n if (status.changedFiles > 0) parts.push(`${status.changedFiles} changed`);\n if (status.untrackedFiles > 0) parts.push(`${status.untrackedFiles} untracked`);\n return parts.join(', ');\n}\n\nfunction reviewPresetItems(context: ReviewContext): SearchableSelectItem[] {\n return [\n {\n value: 'base',\n label: 'Review against a base branch',\n description: context.defaultBaseBranch ? `PR Style · default ${context.defaultBaseBranch}` : 'PR Style',\n searchText: 'pr pull request base branch merge base',\n },\n {\n value: 'uncommitted',\n label: 'Review uncommitted changes',\n description: formatReviewStatus(context.status),\n searchText: 'workspace working tree uncommitted diff status',\n },\n {\n value: 'commit',\n label: 'Review a commit',\n description: context.commits.length > 0 ? `${context.commits.length} recent commits` : 'no commits found',\n searchText: 'commit sha history log',\n },\n {\n value: 'custom',\n label: 'Custom review instructions',\n description: 'edit prompt before sending',\n searchText: 'custom instructions focus prompt',\n },\n ];\n}\n\nfunction branchSelectItems(context: ReviewContext): SelectItem[] {\n return context.branches\n .filter((branch) => !branch.current)\n .map((branch) => ({\n value: branch.name,\n label: branch.name,\n description: [\n branch.name === context.defaultBaseBranch ? 'default' : '',\n branch.remote ? 'remote' : 'local',\n ].filter(Boolean).join(' · '),\n searchText: branch.name,\n }));\n}\n\nfunction commitSelectItems(context: ReviewContext): SelectItem[] {\n return context.commits.map((commit) => ({\n value: commit.sha,\n label: commit.subject,\n description: [commit.shortSha, commit.date?.slice(0, 10)].filter(Boolean).join(' · '),\n searchText: `${commit.sha} ${commit.shortSha} ${commit.subject}`,\n }));\n}\n\nfunction openReviewBranchSelector(svc: PickerServices, context: ReviewContext): void {\n const items = branchSelectItems(context);\n if (items.length === 0) {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.chatLog.addSystem('No base branches available for review.');\n svc.tui.requestRender();\n return;\n }\n const list = new SearchableSelectList(items, Math.min(10, items.length), searchableSelectListTheme, {\n searchPromptText: 'branch> ',\n });\n const defaultIndex = context.defaultBaseBranch\n ? items.findIndex((item) => item.value === context.defaultBaseBranch)\n : -1;\n if (defaultIndex >= 0) list.setSelectedIndex(defaultIndex);\n list.onSelect = (item) => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.sendMessage(`/review --base ${quoteReviewArg(item.value)}`);\n };\n list.onCancel = () => {\n openReviewPresetSelector(svc, context);\n };\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim('Select a base branch to review'));\n svc.tui.requestRender();\n}\n\nfunction openReviewCommitSelector(svc: PickerServices, context: ReviewContext): void {\n const items = commitSelectItems(context);\n if (items.length === 0) {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.chatLog.addSystem('No commits available for review.');\n svc.tui.requestRender();\n return;\n }\n const list = new SearchableSelectList(items, Math.min(12, items.length), searchableSelectListTheme, {\n searchPromptText: 'commit> ',\n });\n list.onSelect = (item) => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.sendMessage(`/review --commit ${item.value}`);\n };\n list.onCancel = () => {\n openReviewPresetSelector(svc, context);\n };\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim('Select a commit to review'));\n svc.tui.requestRender();\n}\n\nfunction openReviewPresetSelector(svc: PickerServices, context: ReviewContext): void {\n const items = reviewPresetItems(context);\n const list = new SearchableSelectList(items, Math.min(8, items.length), searchableSelectListTheme, {\n searchPromptText: 'review> ',\n });\n list.onSelect = (item) => {\n if (item.value === 'uncommitted') {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.sendMessage('/review --uncommitted');\n return;\n }\n if (item.value === 'custom') {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.setEditorText('/review --custom ');\n svc.tui.requestRender();\n return;\n }\n if (item.value === 'base') {\n openReviewBranchSelector(svc, context);\n return;\n }\n if (item.value === 'commit') {\n openReviewCommitSelector(svc, context);\n }\n };\n list.onCancel = () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n };\n\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim(formatReviewPickerOpenedHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\nexport async function openReviewLauncherOverlay(svc: PickerServices): Promise<void> {\n if (!svc.client.getReviewContext) {\n svc.chatLog.addSystem('Review picker is not available in this mode. Use /review --uncommitted, /review --base <branch>, or /review --commit <sha>.');\n svc.tui.requestRender();\n return;\n }\n let context: ReviewContext;\n try {\n context = await svc.client.getReviewContext(svc.state.currentSessionKey);\n } catch (err) {\n const errorMessage = err instanceof Error ? err.message : String(err);\n svc.chatLog.addSystem(`Review picker failed: ${errorMessage}`);\n svc.tui.requestRender();\n return;\n }\n openReviewPresetSelector(svc, context);\n}\n\nexport interface SessionPickerOverlayOptions {\n onCancel?: () => void;\n onEmpty?: () => void;\n onResume?: () => void;\n}\n\n/** Ctrl+Shift+P — session picker with rename/delete. */\nexport async function openSessionPickerOverlay(\n svc: PickerServices,\n options: SessionPickerOverlayOptions = {},\n): Promise<void> {\n const sessions = await svc.client.listSessions();\n if (sessions.length === 0) {\n svc.chatLog.addSystem('No sessions listed.');\n svc.tui.requestRender();\n options.onEmpty?.();\n return;\n }\n\n const selector = new SessionSelector(\n sessions,\n {\n onResume: (sessionKey) => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n resumeSession(svc, sessionKey);\n options.onResume?.();\n },\n onRename: async (sessionKey, name) => {\n const result = await svc.client.renameSession(sessionKey, name);\n return result.ok ? { ok: true } : { ok: false, error: 'Rename failed' };\n },\n onDelete: async (sessionKey) => {\n if (sessionKey === svc.state.currentSessionKey) {\n return { ok: false, error: 'Switch away before deleting the active session' };\n }\n const result = await svc.client.deleteSession(sessionKey);\n return result.ok ? { ok: true } : { ok: false, error: 'Delete failed' };\n },\n onCancel: () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n options.onCancel?.();\n },\n requestRender: () => svc.tui.requestRender(),\n },\n svc.keybindings,\n sessions.find((s) => s.key === svc.state.currentSessionKey)?.cwd ?? process.cwd(),\n svc.state.currentSessionKey,\n );\n\n svc.openOverlay(selector);\n svc.chatLog.addSystem(theme.dim('Session picker'));\n svc.tui.requestRender();\n}\n\n/** Searchable session tree navigation overlay. */\nexport async function openSessionTreeOverlay(svc: PickerServices): Promise<void> {\n const sessions = await svc.client.listSessions();\n if (sessions.length === 0) {\n svc.chatLog.addSystem('No sessions listed.');\n svc.tui.requestRender();\n return;\n }\n\n const items = sessionTreeSelectItems(sessions, svc.state.currentSessionKey);\n const list = new SearchableSelectList(items, Math.min(14, items.length), searchableSelectListTheme);\n list.onSelect = (item) => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n resumeSession(svc, item.value);\n };\n list.onCancel = () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n };\n\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim(formatSessionTreeOpenedHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\n/** Searchable current-transcript tree overlay. */\nexport async function openTranscriptTreeOverlay(svc: PickerServices): Promise<void> {\n const entries = await svc.client.loadTranscriptTree(svc.state.currentSessionKey);\n const filterMode = svc.getTuiSettings().treeFilterMode;\n const visibleEntries = filterTuiTranscriptTreeEntries(entries, filterMode);\n if (visibleEntries.length === 0) {\n svc.chatLog.addSystem('No transcript entries found.');\n svc.tui.requestRender();\n return;\n }\n\n const byId = new Map(entries.map((entry) => [entry.id, entry]));\n const list = new TranscriptTreeSelectList(entries, filterMode, svc.keybindings, Math.min(16, visibleEntries.length));\n list.onSelect = (item) => {\n const entry = byId.get(item.value);\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n if (!entry) {\n svc.tui.requestRender();\n return;\n }\n const targetKey = defaultTranscriptForkKey(svc.state.currentSessionKey, entry.id);\n const sourceSessionKey = svc.state.currentSessionKey;\n svc.chatLog.addSystem(theme.dim(`Forking transcript at ${entry.id}...`));\n void svc.client\n .forkSessionAt(sourceSessionKey, targetKey, entry.id)\n .then((result) => {\n resumeSession(svc, result.sessionKey);\n svc.chatLog.addBranchSummary({\n sourceSessionKey,\n targetSessionKey: result.sessionKey,\n rowCount: result.rowCount,\n entryId: entry.id,\n });\n })\n .catch((err) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n svc.chatLog.addSystem(`Fork failed: ${errorMessage}`);\n svc.tui.requestRender();\n });\n svc.tui.requestRender();\n };\n list.onCancel = () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n };\n list.onFilterChange = (mode) => {\n svc.chatLog.addSystem(theme.dim(`Transcript tree filter: ${mode}`));\n svc.tui.requestRender();\n };\n list.onLabelSubmit = (entry, label) => {\n void svc.client\n .setTranscriptLabel(svc.state.currentSessionKey, entry.id, label)\n .then(() => {\n list.updateEntryLabel(entry.id, label);\n svc.chatLog.addSystem(\n theme.dim(label?.trim() ? `Labeled ${entry.id}: ${label.trim()}` : `Cleared label for ${entry.id}`),\n );\n svc.tui.requestRender();\n })\n .catch((err) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n svc.chatLog.addSystem(`Label failed: ${errorMessage}`);\n svc.tui.requestRender();\n });\n };\n\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim(formatTranscriptTreeFilterHint(svc.keybindings, filterMode)));\n svc.tui.requestRender();\n}\n\n/** Pi-style `/fork` overlay: select a previous user message and branch there. */\nexport async function openUserMessageForkOverlay(svc: PickerServices): Promise<void> {\n const entries = await svc.client.loadTranscriptTree(svc.state.currentSessionKey);\n const byId = new Map(entries.map((entry) => [entry.id, entry]));\n const items = userMessageForkSelectItems(entries);\n if (items.length === 0) {\n svc.chatLog.addSystem('No messages to fork from.');\n svc.tui.requestRender();\n return;\n }\n\n const list = new SearchableSelectList(items, Math.min(10, items.length), searchableSelectListTheme, {\n wrapNavigation: true,\n });\n list.setSelectedIndex(items.length - 1);\n list.onSelect = (item) => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n const entry = byId.get(item.value);\n const targetKey = defaultTranscriptForkKey(svc.state.currentSessionKey, item.value);\n const sourceSessionKey = svc.state.currentSessionKey;\n svc.chatLog.addSystem(theme.dim(`Forking from ${item.value}...`));\n void svc.client\n .forkSessionAt(sourceSessionKey, targetKey, item.value)\n .then((result) => {\n resumeSession(svc, result.sessionKey);\n if (entry?.contentText) {\n svc.setEditorText(entry.contentText);\n }\n svc.chatLog.addBranchSummary({\n sourceSessionKey,\n targetSessionKey: result.sessionKey,\n rowCount: result.rowCount,\n entryId: item.value,\n restoredText: entry?.contentText,\n });\n })\n .catch((err) => {\n const errorMessage = err instanceof Error ? err.message : String(err);\n svc.chatLog.addSystem(`Fork failed: ${errorMessage}`);\n svc.tui.requestRender();\n });\n svc.tui.requestRender();\n };\n list.onCancel = () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n };\n\n svc.openOverlay(list);\n svc.chatLog.addSystem(theme.dim(formatUserMessageForkOpenedHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\n/** `/scoped-models` — limit Ctrl+P model cycle set. */\nexport async function openScopedModelsOverlay(svc: PickerServices): Promise<void> {\n const catalog = await svc.client.listModels();\n svc.setModelChoices(catalog);\n if (catalog.length === 0) {\n svc.chatLog.addSystem('No models available.');\n svc.tui.requestRender();\n return;\n }\n\n const selector = new ScopedModelsSelector(\n catalog,\n svc.getScopedModelRefs(),\n {\n onSave: (refs) => {\n svc.setScopedModelRefs(refs);\n svc.refreshCycleModels();\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.chatLog.addSystem(\n theme.dim(formatScopedModelsSavedHint({\n refs,\n total: catalog.length,\n keybindings: svc.keybindings,\n })),\n );\n svc.tui.requestRender();\n },\n onCancel: () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n },\n requestRender: () => svc.tui.requestRender(),\n },\n svc.keybindings,\n );\n\n svc.openOverlay(selector);\n svc.chatLog.addSystem(theme.dim(formatScopedModelsOpenedHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\n/** `/settings` — TUI preferences overlay. */\nexport function openSettingsOverlay(svc: PickerServices): void {\n const selector = new SettingsSelector(svc.getTuiSettings(), {\n onChange: (settings) => svc.applyTuiSettings(settings),\n onThemePreview: (themeId) => svc.previewTheme(themeId),\n onReloadKeybindings: () => svc.reloadKeybindings(),\n onCancel: () => {\n svc.previewTheme(svc.getTuiSettings().theme);\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n },\n });\n\n svc.openOverlay(selector);\n svc.chatLog.addSystem(theme.dim(formatSettingsOpenedHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\n/** `/think` — select and persist the current session thinking level. */\nexport function openThinkingSelectorOverlay(svc: PickerServices): void {\n const current = normalizeThinkLevel(svc.state.sessionInfo.thinkingLevel) ?? 'medium';\n const levels = listThinkingLevels(\n svc.state.sessionInfo.modelProvider,\n svc.state.sessionInfo.model,\n ).map((level) => (level === 'on' ? 'low' : level)) as ThinkLevel[];\n const uniqueLevels = [...new Set(levels)];\n\n const selector = new ThinkingSelector(current, uniqueLevels, {\n onSelect: (level) => {\n void svc.setThinkingLevel(level).then(() => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n });\n },\n onCancel: () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n },\n }, svc.keybindings);\n\n svc.openOverlay(selector);\n svc.chatLog.addSystem(theme.dim(formatThinkingSelectorHint(svc.keybindings)));\n svc.tui.requestRender();\n}\n\nexport function openProjectTrustOverlay(svc: PickerServices): void {\n const cwd = process.cwd();\n const trustStore = svc.getProjectTrustStore();\n const currentStored = trustStore.getEntry(cwd);\n const sessionDecision = svc.getProjectTrustSessionDecision();\n const hasProjectResources = hasTrustRequiringProjectResources(cwd);\n const options = getProjectTrustOptions(cwd, { includeSessionOnly: true });\n const optionsByLabel = new Map(options.map((option) => [option.label, option]));\n const items: SelectItem[] = options.map((option) => ({\n value: option.label,\n label: option.label,\n description: option.savedPath ?? 'Current TUI session only',\n }));\n const list = new SearchableSelectList(items, Math.min(8, items.length), searchableSelectListTheme, {\n searchPromptText: 'trust: ',\n });\n\n list.onSelect = (item) => {\n const selected = optionsByLabel.get(item.value);\n if (!selected) return;\n if (selected.updates.length > 0) {\n trustStore.setMany(selected.updates);\n svc.setProjectTrustSessionDecision(null);\n } else {\n svc.setProjectTrustSessionDecision(selected.trusted);\n }\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n const scope = selected.savedPath ? `saved for ${selected.savedPath}` : 'this session only';\n svc.chatLog.addSystem(theme.dim(`Project trust: ${selected.trusted ? 'trusted' : 'not trusted'} (${scope})`));\n svc.tui.requestRender();\n };\n list.onCancel = () => {\n svc.closeOverlay();\n svc.tui.setFocus(svc.editor);\n svc.tui.requestRender();\n };\n\n svc.openOverlay(list);\n const storedLabel = currentStored\n ? `${currentStored.decision ? 'trusted' : 'not trusted'} from ${currentStored.path}`\n : 'not saved';\n const sessionLabel = sessionDecision === null ? 'none' : sessionDecision ? 'trusted' : 'not trusted';\n svc.chatLog.addSystem(\n theme.dim(\n [\n formatProjectTrustOpenedHint(svc.keybindings),\n `Project resources: ${hasProjectResources ? 'detected' : 'none detected'}`,\n `Stored: ${storedLabel}`,\n `Session: ${sessionLabel}`,\n ].join('\\n'),\n ),\n );\n svc.tui.requestRender();\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-run-state.js","names":[],"sources":["../../../src/tui/tui-run-state.ts"],"sourcesContent":["import type { ActivityStatus, TuiEventSource, TuiRunPhase, TuiState } from './tui-types.js';\n\nconst STALE_WATCH_ACTIVITY = new Set<ActivityStatus>(['sending', 'waiting', 'streaming', 'running']);\n\nexport function markRunEvent(\n state: TuiState,\n phase: TuiRunPhase,\n runId: string | null,\n event: string,\n source: TuiEventSource,\n nowMs = Date.now(),\n): void {\n const directStreamRunId =\n (source === 'agent-response' || source === 'agent-resume') && runId\n ? runId\n : state.runStatus.directStreamRunId;\n const isStartingNewRun =\n phase !== 'idle' &&\n state.runStatus.phase === 'idle' &&\n (runId === null || state.runStatus.runId === null || state.runStatus.runId !== runId);\n const startedAt =\n phase === 'idle'\n ? null\n : isStartingNewRun || state.runStatus.startedAt == null\n ? nowMs\n : state.runStatus.startedAt;\n state.runStatus = {\n ...state.runStatus,\n phase,\n runId,\n directStreamRunId,\n source,\n lastEvent: event,\n startedAt,\n lastActivityAt: nowMs,\n stalledAt: null,\n };\n}\n\nexport function markRunSending(state: TuiState, nowMs = Date.now()): void {\n state.runStatus = {\n ...state.runStatus,\n phase: 'sending',\n runId: null,\n directStreamRunId: null,\n lastCompletedRunId: null,\n source: 'unknown',\n lastEvent: 'send',\n startedAt: nowMs,\n lastActivityAt: nowMs,\n stalledAt: null,\n };\n}\n\nexport function markRunAborting(state: TuiState, runId: string, nowMs = Date.now()): void {\n state.runStatus = {\n ...state.runStatus,\n phase: 'aborting',\n runId,\n lastEvent: 'abort',\n startedAt: state.runStatus.startedAt ?? nowMs,\n lastActivityAt: nowMs,\n };\n}\n\nexport function markRunIdleAfterAbort(state: TuiState, nowMs = Date.now()): void {\n state.runStatus = {\n ...state.runStatus,\n phase: 'idle',\n runId: null,\n lastEvent: 'abort',\n startedAt: null,\n lastActivityAt: nowMs,\n stalledAt: null,\n };\n}\n\nexport function markRunIdleAfterCompletion(\n state: TuiState,\n completedRunId: string,\n event: string,\n source: TuiEventSource,\n nowMs = Date.now(),\n): void {\n markRunEvent(state, 'idle', null, event, source, nowMs);\n state.runStatus.lastCompletedRunId = completedRunId;\n}\n\nexport function resetRunStatus(state: TuiState): void {\n state.runStatus = {\n ...state.runStatus,\n phase: 'idle',\n runId: null,\n directStreamRunId: null,\n lastCompletedRunId: null,\n lastEvent: null,\n startedAt: null,\n stalledAt: null,\n };\n}\n\nexport function isActiveRunStreamStale(\n state: TuiState,\n nowMs: number,\n staleAfterMs: number,\n): boolean {\n if (!state.activeRunId) return false;\n if (!STALE_WATCH_ACTIVITY.has(state.activityStatus)) return false;\n if (state.runStatus.phase === 'stalled' || state.runStatus.phase === 'recovering') return false;\n if (state.runStatus.phase === 'aborting') return false;\n const lastActivityAt = state.runStatus.lastActivityAt ?? nowMs;\n return nowMs - lastActivityAt >= staleAfterMs;\n}\n\nexport function markActiveRunStalled(state: TuiState, nowMs: number): boolean {\n if (!state.activeRunId) return false;\n if (state.runStatus.phase === 'stalled' || state.runStatus.phase === 'recovering') {\n return false;\n }\n state.runStatus = {\n ...state.runStatus,\n phase: 'stalled',\n runId: state.activeRunId,\n startedAt: state.runStatus.startedAt ?? state.runStatus.lastActivityAt ?? nowMs,\n stalledAt: nowMs,\n };\n return true;\n}\n\nexport function markRunRecovering(state: TuiState, nowMs: number): void {\n state.runStatus = {\n ...state.runStatus,\n phase: 'recovering',\n runId: state.activeRunId,\n startedAt: state.runStatus.startedAt ?? state.runStatus.lastActivityAt ?? nowMs,\n recoveredAt: nowMs,\n };\n}\n\nexport function markRunRecoveryComplete(state: TuiState, nowMs: number): void {\n if (state.activeRunId) {\n state.runStatus = {\n ...state.runStatus,\n phase: 'stalled',\n runId: state.activeRunId,\n startedAt: state.runStatus.startedAt ?? state.runStatus.lastActivityAt ?? nowMs,\n recoveredAt: nowMs,\n };\n return;\n }\n state.runStatus = {\n ...state.runStatus,\n phase: 'idle',\n runId: null,\n startedAt: null,\n recoveredAt: nowMs,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-run-status-format.js","names":[],"sources":["../../../src/tui/tui-run-status-format.ts"],"sourcesContent":["import type { TuiState } from './tui-types.js';\n\nconst STALE_UPDATE_HINT_MS = 30_000;\n\nexport function formatRunDuration(elapsedMs: number): string {\n const totalSeconds = Math.max(0, Math.floor(elapsedMs / 1000));\n if (totalSeconds < 60) return `${totalSeconds}s`;\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n return `${minutes}m ${seconds}s`;\n}\n\nfunction activeRunLabel(state: TuiState): string {\n if (state.runStatus.phase === 'aborting' || state.activityStatus === 'aborting') {\n return 'Stopping';\n }\n if (state.runStatus.phase === 'recovering' || state.activityStatus === 'recovering') {\n return 'Reconnecting output';\n }\n if (state.runStatus.phase === 'stalled' || state.activityStatus === 'stalled') {\n return 'Output stale';\n }\n const message = state.progressMessage?.trim();\n if (message) return message;\n if (state.runStatus.phase === 'tool') return 'Running tool';\n if (state.activityStatus === 'sending') return 'Sending';\n return 'Working';\n}\n\nexport function formatActiveRunStatus(state: TuiState, nowMs = Date.now()): string | null {\n if (!state.activeRunId) return null;\n\n const startedAt = state.runStatus.startedAt ?? state.runStatus.lastActivityAt;\n const details: string[] = [];\n if (startedAt != null) {\n details.push(formatRunDuration(nowMs - startedAt));\n }\n\n const lastActivityAt = state.runStatus.lastActivityAt;\n const isStalePhase =\n state.runStatus.phase === 'stalled' ||\n state.runStatus.phase === 'recovering' ||\n state.activityStatus === 'stalled' ||\n state.activityStatus === 'recovering';\n if (\n lastActivityAt != null &&\n (isStalePhase || nowMs - lastActivityAt >= STALE_UPDATE_HINT_MS)\n ) {\n details.push(`last update ${formatRunDuration(nowMs - lastActivityAt)} ago`);\n }\n\n if (state.runStatus.phase !== 'aborting' && state.activityStatus !== 'aborting') {\n details.push('esc to interrupt');\n }\n\n const label = activeRunLabel(state);\n return details.length > 0 ? `${label} (${details.join(' • ')})` : label;\n}\n"],"mappings":";AAEA,MAAM,uBAAuB;AAE7B,SAAgB,kBAAkB,WAA2B;CAC3D,MAAM,eAAe,KAAK,IAAI,GAAG,KAAK,MAAM,YAAY,IAAK,CAAC;AAC9D,KAAI,eAAe,GAAI,QAAO,GAAG,aAAa;AAG9C,QAAO,GAFS,KAAK,MAAM,eAAe,GAEzB,CAAC,IADF,eAAe,GACD;;AAGhC,SAAS,eAAe,OAAyB;AAC/C,KAAI,MAAM,UAAU,UAAU,cAAc,MAAM,mBAAmB,WACnE,QAAO;AAET,KAAI,MAAM,UAAU,UAAU,gBAAgB,MAAM,mBAAmB,aACrE,QAAO;AAET,KAAI,MAAM,UAAU,UAAU,aAAa,MAAM,mBAAmB,UAClE,QAAO;CAET,MAAM,UAAU,MAAM,iBAAiB,MAAM;AAC7C,KAAI,QAAS,QAAO;AACpB,KAAI,MAAM,UAAU,UAAU,OAAQ,QAAO;AAC7C,KAAI,MAAM,mBAAmB,UAAW,QAAO;AAC/C,QAAO;;AAGT,SAAgB,sBAAsB,OAAiB,QAAQ,KAAK,KAAK,EAAiB;AACxF,KAAI,CAAC,MAAM,YAAa,QAAO;CAE/B,MAAM,YAAY,MAAM,UAAU,aAAa,MAAM,UAAU;CAC/D,MAAM,UAAoB,EAAE;AAC5B,KAAI,aAAa,KACf,SAAQ,KAAK,kBAAkB,QAAQ,UAAU,CAAC;CAGpD,MAAM,iBAAiB,MAAM,UAAU;CACvC,MAAM,eACJ,MAAM,UAAU,UAAU,aAC1B,MAAM,UAAU,UAAU,gBAC1B,MAAM,mBAAmB,aACzB,MAAM,mBAAmB;AAC3B,KACE,kBAAkB,SACjB,gBAAgB,QAAQ,kBAAkB,sBAE3C,SAAQ,KAAK,eAAe,kBAAkB,QAAQ,eAAe,CAAC,MAAM;AAG9E,KAAI,MAAM,UAAU,UAAU,cAAc,MAAM,mBAAmB,WACnE,SAAQ,KAAK,mBAAmB;CAGlC,MAAM,QAAQ,eAAe,MAAM;AACnC,QAAO,QAAQ,SAAS,IAAI,GAAG,MAAM,IAAI,QAAQ,KAAK,MAAM,CAAC,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-runtime-hints.js","names":[],"sources":["../../../src/tui/tui-runtime-hints.ts"],"sourcesContent":["import type { KeybindingsManager } from '@earendil-works/pi-tui';\n\nimport { formatKeyIds } from './format-tui-hotkeys.js';\n\nfunction keyLabel(\n keybindings: KeybindingsManager,\n id: Parameters<KeybindingsManager['getKeys']>[0],\n): string {\n return formatKeyIds(keybindings, id, { capitalize: true });\n}\n\nexport function formatBusyResponseHint(keybindings: KeybindingsManager): string {\n const followUp = keyLabel(keybindings, 'app.message.followUp');\n const abort = keyLabel(keybindings, 'app.interrupt');\n return `A response is still in progress. Press Enter to steer, ${followUp} to queue, or ${abort} to abort.`;\n}\n\nexport function formatSteerUnavailableHint(keybindings: KeybindingsManager): string {\n const abort = keyLabel(keybindings, 'app.interrupt');\n const followUp = keyLabel(keybindings, 'app.message.followUp');\n return `Could not steer — no active run or steer failed. Press ${abort} to abort, or ${followUp} to queue a follow-up.`;\n}\n\nexport function formatSuspendUnsupportedHint(keybindings: KeybindingsManager): string {\n const suspend = keyLabel(keybindings, 'app.suspend');\n return `Suspend (${suspend}) is not supported on Windows.`;\n}\n"],"mappings":";;AAIA,SAAS,SACP,aACA,IACQ;AACR,QAAO,aAAa,aAAa,IAAI,EAAE,YAAY,MAAM,CAAC;;AAG5D,SAAgB,uBAAuB,aAAyC;AAG9E,QAAO,0DAFU,SAAS,aAAa,uBAEkC,CAAC,gBAD5D,SAAS,aAAa,gBAC2D,CAAC;;AAGlG,SAAgB,2BAA2B,aAAyC;AAGlF,QAAO,0DAFO,SAAS,aAAa,gBAEkC,CAAC,gBADtD,SAAS,aAAa,uBACwD,CAAC;;AAGlG,SAAgB,6BAA6B,aAAyC;AAEpF,QAAO,YADS,SAAS,aAAa,cACZ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-scoped-models.js","names":[],"sources":["../../../src/tui/tui-scoped-models.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nimport type { TuiModelChoice } from './tui-backend.js';\n\nconst STORE_PATH = join(homedir(), '.xopc', 'tui-scoped-models.json');\n\ntype ScopedModelsFile = {\n /** `null` = all models enabled for Ctrl+P cycle. */\n byWorkspace?: Record<string, string[] | null>;\n};\n\nfunction normalizeWorkspaceKey(cwd: string): string {\n return cwd.replace(/\\\\/g, '/').replace(/\\/+$/, '') || '/';\n}\n\nfunction readStore(): ScopedModelsFile {\n try {\n if (!existsSync(STORE_PATH)) return {};\n const raw = readFileSync(STORE_PATH, 'utf8');\n const parsed = JSON.parse(raw) as ScopedModelsFile;\n return parsed && typeof parsed === 'object' ? parsed : {};\n } catch {\n return {};\n }\n}\n\nfunction writeStore(data: ScopedModelsFile): void {\n const dir = join(homedir(), '.xopc');\n if (!existsSync(dir)) {\n mkdirSync(dir, { recursive: true });\n }\n writeFileSync(STORE_PATH, `${JSON.stringify(data, null, 2)}\\n`, 'utf8');\n}\n\n/** Load scoped model refs for Ctrl+P cycling (`null` = all models). */\nexport function loadScopedModelRefs(cwd: string = process.cwd()): string[] | null {\n const key = normalizeWorkspaceKey(cwd);\n const store = readStore();\n const entry = store.byWorkspace?.[key];\n if (entry === undefined) return null;\n if (entry === null) return null;\n return [...entry];\n}\n\n/** Persist scoped model refs for this workspace. Pass `null` to enable all models. */\nexport function saveScopedModelRefs(\n refs: string[] | null,\n cwd: string = process.cwd(),\n): void {\n const key = normalizeWorkspaceKey(cwd);\n const store = readStore();\n const byWorkspace = { ...store.byWorkspace };\n if (refs === null) {\n byWorkspace[key] = null;\n } else {\n byWorkspace[key] = [...refs];\n }\n writeStore({ byWorkspace });\n}\n\nexport function modelRef(choice: TuiModelChoice): string {\n return `${choice.provider}/${choice.id}`;\n}\n\n/** Filter catalog by scoped refs; `null` means full catalog, empty array means no scoped models. */\nexport function filterModelsForCycle(\n catalog: TuiModelChoice[],\n scopedRefs: string[] | null,\n): TuiModelChoice[] {\n if (scopedRefs === null) return catalog;\n if (scopedRefs.length === 0) return [];\n const order = new Map(scopedRefs.map((ref, idx) => [ref, idx]));\n return catalog\n .filter((m) => order.has(modelRef(m)))\n .toSorted((a, b) => (order.get(modelRef(a)) ?? 0) - (order.get(modelRef(b)) ?? 0));\n}\n"],"mappings":";;;;AAMA,MAAM,aAAa,KAAK,SAAS,EAAE,SAAS,yBAAyB;AAOrE,SAAS,sBAAsB,KAAqB;AAClD,QAAO,IAAI,QAAQ,OAAO,IAAI,CAAC,QAAQ,QAAQ,GAAG,IAAI;;AAGxD,SAAS,YAA8B;AACrC,KAAI;AACF,MAAI,CAAC,WAAW,WAAW,CAAE,QAAO,EAAE;EACtC,MAAM,MAAM,aAAa,YAAY,OAAO;EAC5C,MAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,SAAO,UAAU,OAAO,WAAW,WAAW,SAAS,EAAE;SACnD;AACN,SAAO,EAAE;;;AAIb,SAAS,WAAW,MAA8B;CAChD,MAAM,MAAM,KAAK,SAAS,EAAE,QAAQ;AACpC,KAAI,CAAC,WAAW,IAAI,CAClB,WAAU,KAAK,EAAE,WAAW,MAAM,CAAC;AAErC,eAAc,YAAY,GAAG,KAAK,UAAU,MAAM,MAAM,EAAE,CAAC,KAAK,OAAO;;;AAIzE,SAAgB,oBAAoB,MAAc,QAAQ,KAAK,EAAmB;CAChF,MAAM,MAAM,sBAAsB,IAAI;CAEtC,MAAM,QADQ,WACK,CAAC,cAAc;AAClC,KAAI,UAAU,KAAA,EAAW,QAAO;AAChC,KAAI,UAAU,KAAM,QAAO;AAC3B,QAAO,CAAC,GAAG,MAAM;;;AAInB,SAAgB,oBACd,MACA,MAAc,QAAQ,KAAK,EACrB;CACN,MAAM,MAAM,sBAAsB,IAAI;CAEtC,MAAM,cAAc,EAAE,GADR,WACgB,CAAC,aAAa;AAC5C,KAAI,SAAS,KACX,aAAY,OAAO;KAEnB,aAAY,OAAO,CAAC,GAAG,KAAK;AAE9B,YAAW,EAAE,aAAa,CAAC;;AAG7B,SAAgB,SAAS,QAAgC;AACvD,QAAO,GAAG,OAAO,SAAS,GAAG,OAAO;;;AAItC,SAAgB,qBACd,SACA,YACkB;AAClB,KAAI,eAAe,KAAM,QAAO;AAChC,KAAI,WAAW,WAAW,EAAG,QAAO,EAAE;CACtC,MAAM,QAAQ,IAAI,IAAI,WAAW,KAAK,KAAK,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;AAC/D,QAAO,QACJ,QAAQ,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CACrC,UAAU,GAAG,OAAO,MAAM,IAAI,SAAS,EAAE,CAAC,IAAI,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC,IAAI,GAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-session-actions.js","names":[],"sources":["../../../src/tui/tui-session-actions.ts"],"sourcesContent":["import type { TUI } from '@earendil-works/pi-tui';\n\nimport { parseAgentSessionKey } from '../routing/agent-session-key.js';\nimport {\n appendHistoryToChatLog,\n historyKeysHaveAppendOnlyPrefix,\n historyMessageKey,\n} from './chat-history.js';\nimport type { ChatLog } from './components/chat-log.js';\nimport { clearSeenStreamEvents } from './tui-agent-events.js';\nimport type { TuiBackend } from './tui-backend.js';\nimport type { TuiState } from './tui-types.js';\nimport type { TuiSessionSnapshot } from './tui-session-snapshot.js';\nimport {\n markRunAborting,\n markRunIdleAfterAbort,\n resetRunStatus,\n} from './tui-run-state.js';\n\nexport type SessionActionsContext = {\n client: TuiBackend;\n chatLog: ChatLog;\n tui: TUI;\n state: TuiState;\n resolveSessionKey: (raw?: string) => string;\n updateHeader: () => void;\n updateFooter: () => void;\n setActivityStatus: (status: string) => void;\n historyLimit?: number;\n onAgentIdChange?: (agentId: string) => void;\n sessionSnapshot?: TuiSessionSnapshot;\n};\n\nexport function createSessionActions(context: SessionActionsContext) {\n const {\n client,\n chatLog,\n tui,\n state,\n resolveSessionKey,\n updateHeader,\n updateFooter,\n setActivityStatus,\n historyLimit = 200,\n onAgentIdChange,\n sessionSnapshot,\n } = context;\n\n let refreshSessionInfoPromise: Promise<void> = Promise.resolve();\n let lastHistoryKeys: string[] = [];\n\n const updateAgentFromSessionKey = (key: string) => {\n const parsed = parseAgentSessionKey(key);\n if (!parsed?.agentId) {\n return;\n }\n onAgentIdChange?.(parsed.agentId);\n };\n\n const runRefreshSessionInfo = async () => {\n try {\n state.sessionInfo = await client.getSessionInfo(state.currentSessionKey);\n updateFooter();\n tui.requestRender();\n } catch {\n // ignore\n }\n };\n\n const refreshSessionInfo = async () => {\n refreshSessionInfoPromise = refreshSessionInfoPromise.then(\n runRefreshSessionInfo,\n runRefreshSessionInfo,\n );\n await refreshSessionInfoPromise;\n };\n\n const clearChatForSessionSwitch = () => {\n chatLog.clearAll();\n clearSeenStreamEvents();\n sessionSnapshot?.clear();\n lastHistoryKeys = [];\n resetRunStatus(state);\n state.historyLoaded = false;\n state.messageFollowUpQueue.length = 0;\n state.steeringQueue.length = 0;\n };\n\n const loadHistory = async (opts?: { merge?: boolean }) => {\n try {\n const { messages } = await client.loadHistory({\n sessionKey: state.currentSessionKey,\n limit: historyLimit,\n });\n sessionSnapshot?.replaceFromHistory(messages);\n const nextKeys = messages.map(historyMessageKey);\n const canAppend =\n opts?.merge === true &&\n historyKeysHaveAppendOnlyPrefix(lastHistoryKeys, nextKeys);\n if (canAppend) {\n appendHistoryToChatLog(\n chatLog,\n messages.slice(lastHistoryKeys.length),\n state.toolsExpanded,\n state.showThinking,\n { startIndex: lastHistoryKeys.length },\n );\n } else {\n chatLog.clearAll();\n appendHistoryToChatLog(chatLog, messages, state.toolsExpanded, state.showThinking);\n }\n lastHistoryKeys = nextKeys;\n } catch {\n // ignore; footer already hints on disconnect\n } finally {\n state.historyLoaded = true;\n await refreshSessionInfo();\n tui.requestRender();\n }\n };\n\n const loadHistoryWindow = async (opts: {\n rowNumber: number;\n before?: number;\n after?: number;\n }): Promise<boolean> => {\n if (!client.loadHistoryWindow) {\n return false;\n }\n try {\n const { messages } = await client.loadHistoryWindow({\n sessionKey: state.currentSessionKey,\n rowNumber: opts.rowNumber,\n before: opts.before,\n after: opts.after,\n });\n if (messages.length === 0) {\n return false;\n }\n sessionSnapshot?.replaceFromHistory(messages);\n chatLog.clearAll();\n appendHistoryToChatLog(chatLog, messages, state.toolsExpanded, state.showThinking);\n lastHistoryKeys = messages.map(historyMessageKey);\n state.historyLoaded = true;\n return true;\n } catch {\n return false;\n } finally {\n await refreshSessionInfo();\n tui.requestRender();\n }\n };\n\n const setSession = async (rawKey: string) => {\n const nextKey = resolveSessionKey(rawKey);\n updateAgentFromSessionKey(nextKey);\n state.currentSessionKey = nextKey;\n state.activeRunId = null;\n setActivityStatus('idle');\n clearChatForSessionSwitch();\n updateHeader();\n updateFooter();\n await loadHistory();\n };\n\n const abortActive = async (opts?: { clearUi?: boolean }) => {\n if (!state.activeRunId) {\n return;\n }\n const runId = state.activeRunId;\n markRunAborting(state, runId);\n state.activeRunId = null;\n if (opts?.clearUi !== false) {\n chatLog.dropAssistant(runId);\n }\n setActivityStatus('idle');\n markRunIdleAfterAbort(state);\n tui.requestRender();\n await client.abortChat({ sessionKey: state.currentSessionKey, runId }).catch(() => {});\n };\n\n const resetCurrentSession = async () => {\n await client.resetSession(state.currentSessionKey);\n clearChatForSessionSwitch();\n await loadHistory();\n };\n\n return {\n refreshSessionInfo,\n loadHistory,\n loadHistoryWindow,\n setSession,\n abortActive,\n resetCurrentSession,\n clearChatForSessionSwitch,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-session-format.js","names":[],"sources":["../../../src/tui/tui-session-format.ts"],"sourcesContent":["import type { SessionMetadata } from '../session/types.js';\nimport type { TuiSessionItem } from './tui-backend.js';\n\nfunction homeDir(): string | undefined {\n return process.env.HOME || process.env.USERPROFILE;\n}\n\nexport function shortenSessionPath(path: string): string {\n const home = homeDir();\n if (home && path.startsWith(home)) {\n return `~${path.slice(home.length)}`;\n }\n return path;\n}\n\n/** Compact relative time for session picker rows (pi-style). */\nexport function formatSessionAge(updatedAtMs: number | null | undefined): string {\n if (updatedAtMs == null || !Number.isFinite(updatedAtMs)) return '';\n const diffMs = Date.now() - updatedAtMs;\n if (diffMs < 60_000) return 'now';\n const diffMins = Math.floor(diffMs / 60_000);\n if (diffMins < 60) return `${diffMins}m`;\n const diffHours = Math.floor(diffMs / 3_600_000);\n if (diffHours < 24) return `${diffHours}h`;\n const diffDays = Math.floor(diffMs / 86_400_000);\n if (diffDays < 7) return `${diffDays}d`;\n if (diffDays < 30) return `${Math.floor(diffDays / 7)}w`;\n if (diffDays < 365) return `${Math.floor(diffDays / 30)}mo`;\n return `${Math.floor(diffDays / 365)}y`;\n}\n\nexport function sessionMetadataToTuiItem(meta: SessionMetadata): TuiSessionItem {\n const cd = meta.customData;\n const modelRef =\n typeof cd?.model === 'string'\n ? cd.model\n : typeof cd?.modelRef === 'string'\n ? cd.modelRef\n : null;\n return {\n key: meta.key,\n displayName: meta.name,\n updatedAt: Date.parse(meta.updatedAt),\n totalTokens: meta.estimatedTokens ?? null,\n messageCount: meta.messageCount,\n model: modelRef,\n forkedFromSessionKey:\n typeof cd?.forkedFromSessionKey === 'string' ? cd.forkedFromSessionKey : undefined,\n cwd: meta.cwd,\n };\n}\n\nexport function formatSessionPickerDescription(\n session: TuiSessionItem,\n options: { showKey?: boolean } = {},\n): string {\n const parts: string[] = [];\n const age = formatSessionAge(session.updatedAt ?? null);\n if (age) parts.push(age);\n if (session.messageCount != null) parts.push(`${session.messageCount} msgs`);\n if (session.totalTokens != null) parts.push(`${session.totalTokens} tok`);\n if (session.model) parts.push(String(session.model));\n if (options.showKey) {\n if (session.cwd) parts.push(shortenSessionPath(session.cwd));\n parts.push(session.key);\n }\n return parts.join(' · ');\n}\n"],"mappings":";AAGA,SAAS,UAA8B;AACrC,QAAO,QAAQ,IAAI,QAAQ,QAAQ,IAAI;;AAGzC,SAAgB,mBAAmB,MAAsB;CACvD,MAAM,OAAO,SAAS;AACtB,KAAI,QAAQ,KAAK,WAAW,KAAK,CAC/B,QAAO,IAAI,KAAK,MAAM,KAAK,OAAO;AAEpC,QAAO;;;AAIT,SAAgB,iBAAiB,aAAgD;AAC/E,KAAI,eAAe,QAAQ,CAAC,OAAO,SAAS,YAAY,CAAE,QAAO;CACjE,MAAM,SAAS,KAAK,KAAK,GAAG;AAC5B,KAAI,SAAS,IAAQ,QAAO;CAC5B,MAAM,WAAW,KAAK,MAAM,SAAS,IAAO;AAC5C,KAAI,WAAW,GAAI,QAAO,GAAG,SAAS;CACtC,MAAM,YAAY,KAAK,MAAM,SAAS,KAAU;AAChD,KAAI,YAAY,GAAI,QAAO,GAAG,UAAU;CACxC,MAAM,WAAW,KAAK,MAAM,SAAS,MAAW;AAChD,KAAI,WAAW,EAAG,QAAO,GAAG,SAAS;AACrC,KAAI,WAAW,GAAI,QAAO,GAAG,KAAK,MAAM,WAAW,EAAE,CAAC;AACtD,KAAI,WAAW,IAAK,QAAO,GAAG,KAAK,MAAM,WAAW,GAAG,CAAC;AACxD,QAAO,GAAG,KAAK,MAAM,WAAW,IAAI,CAAC;;AAGvC,SAAgB,yBAAyB,MAAuC;CAC9E,MAAM,KAAK,KAAK;CAChB,MAAM,WACJ,OAAO,IAAI,UAAU,WACjB,GAAG,QACH,OAAO,IAAI,aAAa,WACtB,GAAG,WACH;AACR,QAAO;EACL,KAAK,KAAK;EACV,aAAa,KAAK;EAClB,WAAW,KAAK,MAAM,KAAK,UAAU;EACrC,aAAa,KAAK,mBAAmB;EACrC,cAAc,KAAK;EACnB,OAAO;EACP,sBACE,OAAO,IAAI,yBAAyB,WAAW,GAAG,uBAAuB,KAAA;EAC3E,KAAK,KAAK;EACX;;AAGH,SAAgB,+BACd,SACA,UAAiC,EAAE,EAC3B;CACR,MAAM,QAAkB,EAAE;CAC1B,MAAM,MAAM,iBAAiB,QAAQ,aAAa,KAAK;AACvD,KAAI,IAAK,OAAM,KAAK,IAAI;AACxB,KAAI,QAAQ,gBAAgB,KAAM,OAAM,KAAK,GAAG,QAAQ,aAAa,OAAO;AAC5E,KAAI,QAAQ,eAAe,KAAM,OAAM,KAAK,GAAG,QAAQ,YAAY,MAAM;AACzE,KAAI,QAAQ,MAAO,OAAM,KAAK,OAAO,QAAQ,MAAM,CAAC;AACpD,KAAI,QAAQ,SAAS;AACnB,MAAI,QAAQ,IAAK,OAAM,KAAK,mBAAmB,QAAQ,IAAI,CAAC;AAC5D,QAAM,KAAK,QAAQ,IAAI;;AAEzB,QAAO,MAAM,KAAK,MAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-session-snapshot.js","names":[],"sources":["../../../src/tui/tui-session-snapshot.ts"],"sourcesContent":["import type { HistoryMessage } from './tui-backend.js';\nimport { flattenMessageContent } from '../session/client-history.js';\n\nexport type TuiSessionSnapshotEntryType =\n | 'message'\n | 'compaction'\n | 'context'\n | 'bash'\n | 'custom'\n | 'branch';\n\nexport interface TuiSessionSnapshotEntry {\n id: string;\n type: TuiSessionSnapshotEntryType;\n parentId: string | null;\n customType?: string;\n data?: unknown;\n display?: boolean;\n userLabel?: string;\n labelTimestamp?: string;\n role?: 'user' | 'assistant' | 'system';\n message?: {\n role: 'user' | 'assistant' | 'system';\n content: string;\n usage?: {\n input: number;\n output: number;\n cost: { total: number };\n };\n };\n content: string;\n timestamp?: number;\n raw?: HistoryMessage | Record<string, unknown>;\n}\n\nexport interface TuiSessionSnapshotHeader {\n type: 'session';\n version?: number;\n id: string;\n timestamp: string;\n cwd: string;\n parentSession?: string;\n}\n\nexport interface TuiSessionSnapshotTreeNode {\n entry: TuiSessionSnapshotEntry;\n children: TuiSessionSnapshotTreeNode[];\n label?: string;\n labelTimestamp?: string;\n}\n\nexport interface TuiReadonlySessionManager {\n getEntries(): TuiSessionSnapshotEntry[];\n getBranch(): TuiSessionSnapshotEntry[];\n getLeafEntry(): TuiSessionSnapshotEntry | undefined;\n getLeafId(): string | null;\n getEntry(entryId: string): TuiSessionSnapshotEntry | undefined;\n getLabel(entryId: string): string | undefined;\n getHeader(): TuiSessionSnapshotHeader | null;\n getTree(): TuiSessionSnapshotTreeNode[];\n getSessionId(): string;\n getSessionFile(): string | undefined;\n getSessionDir(): string | undefined;\n getSessionName(): string | undefined;\n getCwd(): string;\n}\n\nexport class TuiSessionSnapshot {\n private entries: TuiSessionSnapshotEntry[] = [];\n private nextId = 1;\n\n constructor(\n private readonly getSessionKey: () => string,\n private readonly getCwdValue: () => string,\n private readonly getSessionNameValue: () => string | undefined,\n private readonly getSessionFileValue: () => string | undefined = () => undefined,\n private readonly getSessionDirValue: () => string | undefined = () => undefined,\n ) {}\n\n replaceFromHistory(messages: HistoryMessage[]): void {\n this.nextId = 1;\n let parentId: string | null = null;\n this.entries = messages.map((message) => {\n const entry = this.entryFromHistory(message, parentId);\n parentId = entry.id;\n return entry;\n });\n }\n\n clear(): void {\n this.entries = [];\n this.nextId = 1;\n }\n\n appendMessage(role: 'user' | 'assistant' | 'system', content: string): void {\n this.entries.push(this.createEntry({\n type: 'message',\n role,\n content,\n message: {\n role,\n content,\n usage: {\n input: 0,\n output: 0,\n cost: { total: 0 },\n },\n },\n timestamp: Date.now(),\n }));\n }\n\n setLabel(entryId: string, label: string | undefined): void {\n const entry = this.entries.find((candidate) => candidate.id === entryId);\n if (!entry) return;\n const trimmed = label?.trim();\n if (trimmed) {\n entry.userLabel = trimmed;\n entry.labelTimestamp = new Date().toISOString();\n } else {\n delete entry.userLabel;\n delete entry.labelTimestamp;\n }\n }\n\n appendCustomEntry(customType: string, data?: unknown): void {\n this.entries.push(this.createEntry({\n type: 'custom',\n customType,\n data,\n display: undefined,\n content: '',\n timestamp: Date.now(),\n raw: {\n type: 'custom',\n customType,\n data,\n },\n }));\n }\n\n appendCustomMessage(message: {\n customType: string;\n content?: string | unknown[];\n display?: boolean;\n details?: unknown;\n }): void {\n this.entries.push(this.createEntry({\n type: 'custom',\n customType: message.customType,\n data: message.details,\n display: message.display ?? true,\n content: typeof message.content === 'string'\n ? message.content\n : Array.isArray(message.content)\n ? flattenMessageContent(message.content)\n : '',\n timestamp: Date.now(),\n raw: {\n role: 'custom',\n customType: message.customType,\n content: message.content,\n display: message.display ?? true,\n details: message.details,\n },\n }));\n }\n\n manager(): TuiReadonlySessionManager {\n return {\n getEntries: () => [...this.entries],\n getBranch: () => [...this.entries],\n getLeafEntry: () => this.entries[this.entries.length - 1],\n getLeafId: () => this.entries[this.entries.length - 1]?.id ?? null,\n getEntry: (entryId) => this.entries.find((entry) => entry.id === entryId),\n getLabel: (entryId) => this.entries.find((entry) => entry.id === entryId)?.userLabel,\n getHeader: () => this.createHeader(),\n getTree: () => this.createTree(),\n getSessionId: () => this.getSessionKey(),\n getSessionFile: () => this.getSessionFileValue(),\n getSessionDir: () => this.getSessionDirValue(),\n getSessionName: () => this.getSessionNameValue(),\n getCwd: () => this.getCwdValue(),\n };\n }\n\n private entryFromHistory(\n message: HistoryMessage,\n parentId: string | null,\n ): TuiSessionSnapshotEntry {\n const type = message.kind ?? 'message';\n const role = message.role;\n const base = {\n id: message.id,\n parentId,\n type,\n customType: message.custom?.customType,\n data: message.custom?.details,\n display: message.custom?.display,\n role,\n content: message.content,\n timestamp: message.timestamp,\n raw: message,\n };\n if (type === 'message') {\n return this.createEntry({\n ...base,\n message: {\n role,\n content: message.content,\n usage: {\n input: 0,\n output: 0,\n cost: { total: 0 },\n },\n },\n });\n }\n return this.createEntry(base);\n }\n\n private createHeader(): TuiSessionSnapshotHeader {\n const firstTimestamp = this.entries[0]?.timestamp;\n const timestamp = typeof firstTimestamp === 'number'\n ? new Date(firstTimestamp).toISOString()\n : new Date(0).toISOString();\n return {\n type: 'session',\n version: 3,\n id: this.getSessionKey(),\n timestamp,\n cwd: this.getCwdValue(),\n };\n }\n\n private createTree(): TuiSessionSnapshotTreeNode[] {\n const nodeMap = new Map<string, TuiSessionSnapshotTreeNode>();\n const roots: TuiSessionSnapshotTreeNode[] = [];\n for (const entry of this.entries) {\n nodeMap.set(entry.id, {\n entry,\n children: [],\n label: entry.userLabel,\n labelTimestamp: entry.labelTimestamp,\n });\n }\n for (const entry of this.entries) {\n const node = nodeMap.get(entry.id);\n if (!node) continue;\n if (!entry.parentId || entry.parentId === entry.id) {\n roots.push(node);\n continue;\n }\n const parent = nodeMap.get(entry.parentId);\n if (parent) {\n parent.children.push(node);\n } else {\n roots.push(node);\n }\n }\n const stack = [...roots];\n while (stack.length > 0) {\n const node = stack.pop();\n if (!node) continue;\n node.children.sort((a, b) => (a.entry.timestamp ?? 0) - (b.entry.timestamp ?? 0));\n stack.push(...node.children);\n }\n return roots;\n }\n\n private createEntry(\n entry: Omit<TuiSessionSnapshotEntry, 'id' | 'parentId'> & {\n id?: string;\n parentId?: string | null;\n },\n ): TuiSessionSnapshotEntry {\n return {\n ...entry,\n id: entry.id ?? `tui:${this.nextId++}`,\n parentId: entry.parentId ?? this.entries[this.entries.length - 1]?.id ?? null,\n };\n }\n}\n"],"mappings":";;AAmEA,IAAa,qBAAb,MAAgC;CAC9B,UAA6C,EAAE;CAC/C,SAAiB;CAEjB,YACE,eACA,aACA,qBACA,4BAAuE,KAAA,GACvE,2BAAsE,KAAA,GACtE;AALiB,OAAA,gBAAA;AACA,OAAA,cAAA;AACA,OAAA,sBAAA;AACA,OAAA,sBAAA;AACA,OAAA,qBAAA;;CAGnB,mBAAmB,UAAkC;AACnD,OAAK,SAAS;EACd,IAAI,WAA0B;AAC9B,OAAK,UAAU,SAAS,KAAK,YAAY;GACvC,MAAM,QAAQ,KAAK,iBAAiB,SAAS,SAAS;AACtD,cAAW,MAAM;AACjB,UAAO;IACP;;CAGJ,QAAc;AACZ,OAAK,UAAU,EAAE;AACjB,OAAK,SAAS;;CAGhB,cAAc,MAAuC,SAAuB;AAC1E,OAAK,QAAQ,KAAK,KAAK,YAAY;GACjC,MAAM;GACN;GACA;GACA,SAAS;IACP;IACA;IACA,OAAO;KACL,OAAO;KACP,QAAQ;KACR,MAAM,EAAE,OAAO,GAAG;KACnB;IACF;GACD,WAAW,KAAK,KAAK;GACtB,CAAC,CAAC;;CAGL,SAAS,SAAiB,OAAiC;EACzD,MAAM,QAAQ,KAAK,QAAQ,MAAM,cAAc,UAAU,OAAO,QAAQ;AACxE,MAAI,CAAC,MAAO;EACZ,MAAM,UAAU,OAAO,MAAM;AAC7B,MAAI,SAAS;AACX,SAAM,YAAY;AAClB,SAAM,kCAAiB,IAAI,MAAM,EAAC,aAAa;SAC1C;AACL,UAAO,MAAM;AACb,UAAO,MAAM;;;CAIjB,kBAAkB,YAAoB,MAAsB;AAC1D,OAAK,QAAQ,KAAK,KAAK,YAAY;GACjC,MAAM;GACN;GACA;GACA,SAAS,KAAA;GACT,SAAS;GACT,WAAW,KAAK,KAAK;GACrB,KAAK;IACH,MAAM;IACN;IACA;IACD;GACF,CAAC,CAAC;;CAGL,oBAAoB,SAKX;AACP,OAAK,QAAQ,KAAK,KAAK,YAAY;GACjC,MAAM;GACN,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACd,SAAS,QAAQ,WAAW;GAC5B,SAAS,OAAO,QAAQ,YAAY,WAChC,QAAQ,UACR,MAAM,QAAQ,QAAQ,QAAQ,GAC5B,sBAAsB,QAAQ,QAAQ,GACtC;GACN,WAAW,KAAK,KAAK;GACrB,KAAK;IACH,MAAM;IACN,YAAY,QAAQ;IACpB,SAAS,QAAQ;IACjB,SAAS,QAAQ,WAAW;IAC5B,SAAS,QAAQ;IAClB;GACF,CAAC,CAAC;;CAGL,UAAqC;AACnC,SAAO;GACL,kBAAkB,CAAC,GAAG,KAAK,QAAQ;GACnC,iBAAiB,CAAC,GAAG,KAAK,QAAQ;GAClC,oBAAoB,KAAK,QAAQ,KAAK,QAAQ,SAAS;GACvD,iBAAiB,KAAK,QAAQ,KAAK,QAAQ,SAAS,IAAI,MAAM;GAC9D,WAAW,YAAY,KAAK,QAAQ,MAAM,UAAU,MAAM,OAAO,QAAQ;GACzE,WAAW,YAAY,KAAK,QAAQ,MAAM,UAAU,MAAM,OAAO,QAAQ,EAAE;GAC3E,iBAAiB,KAAK,cAAc;GACpC,eAAe,KAAK,YAAY;GAChC,oBAAoB,KAAK,eAAe;GACxC,sBAAsB,KAAK,qBAAqB;GAChD,qBAAqB,KAAK,oBAAoB;GAC9C,sBAAsB,KAAK,qBAAqB;GAChD,cAAc,KAAK,aAAa;GACjC;;CAGH,iBACE,SACA,UACyB;EACzB,MAAM,OAAO,QAAQ,QAAQ;EAC7B,MAAM,OAAO,QAAQ;EACrB,MAAM,OAAO;GACX,IAAI,QAAQ;GACZ;GACA;GACA,YAAY,QAAQ,QAAQ;GAC5B,MAAM,QAAQ,QAAQ;GACtB,SAAS,QAAQ,QAAQ;GACzB;GACA,SAAS,QAAQ;GACjB,WAAW,QAAQ;GACnB,KAAK;GACN;AACD,MAAI,SAAS,UACX,QAAO,KAAK,YAAY;GACtB,GAAG;GACH,SAAS;IACP;IACA,SAAS,QAAQ;IACjB,OAAO;KACL,OAAO;KACP,QAAQ;KACR,MAAM,EAAE,OAAO,GAAG;KACnB;IACF;GACF,CAAC;AAEJ,SAAO,KAAK,YAAY,KAAK;;CAG/B,eAAiD;EAC/C,MAAM,iBAAiB,KAAK,QAAQ,IAAI;EACxC,MAAM,YAAY,OAAO,mBAAmB,WACxC,IAAI,KAAK,eAAe,CAAC,aAAa,oBACtC,IAAI,KAAK,EAAE,EAAC,aAAa;AAC7B,SAAO;GACL,MAAM;GACN,SAAS;GACT,IAAI,KAAK,eAAe;GACxB;GACA,KAAK,KAAK,aAAa;GACxB;;CAGH,aAAmD;EACjD,MAAM,0BAAU,IAAI,KAAyC;EAC7D,MAAM,QAAsC,EAAE;AAC9C,OAAK,MAAM,SAAS,KAAK,QACvB,SAAQ,IAAI,MAAM,IAAI;GACpB;GACA,UAAU,EAAE;GACZ,OAAO,MAAM;GACb,gBAAgB,MAAM;GACvB,CAAC;AAEJ,OAAK,MAAM,SAAS,KAAK,SAAS;GAChC,MAAM,OAAO,QAAQ,IAAI,MAAM,GAAG;AAClC,OAAI,CAAC,KAAM;AACX,OAAI,CAAC,MAAM,YAAY,MAAM,aAAa,MAAM,IAAI;AAClD,UAAM,KAAK,KAAK;AAChB;;GAEF,MAAM,SAAS,QAAQ,IAAI,MAAM,SAAS;AAC1C,OAAI,OACF,QAAO,SAAS,KAAK,KAAK;OAE1B,OAAM,KAAK,KAAK;;EAGpB,MAAM,QAAQ,CAAC,GAAG,MAAM;AACxB,SAAO,MAAM,SAAS,GAAG;GACvB,MAAM,OAAO,MAAM,KAAK;AACxB,OAAI,CAAC,KAAM;AACX,QAAK,SAAS,MAAM,GAAG,OAAO,EAAE,MAAM,aAAa,MAAM,EAAE,MAAM,aAAa,GAAG;AACjF,SAAM,KAAK,GAAG,KAAK,SAAS;;AAE9B,SAAO;;CAGT,YACE,OAIyB;AACzB,SAAO;GACL,GAAG;GACH,IAAI,MAAM,MAAM,OAAO,KAAK;GAC5B,UAAU,MAAM,YAAY,KAAK,QAAQ,KAAK,QAAQ,SAAS,IAAI,MAAM;GAC1E"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-session-stats.js","names":[],"sources":["../../../src/tui/tui-session-stats.ts"],"sourcesContent":["import type { TranscriptStoredRow } from '../session/session-context-for-llm.js';\n\nimport type { TuiSessionStats } from './tui-backend.js';\n\nfunction usageNumber(value: unknown): number {\n return typeof value === 'number' && Number.isFinite(value) ? value : 0;\n}\n\nfunction usageFromRow(row: Record<string, unknown>): {\n input: number;\n output: number;\n cacheRead: number;\n cacheWrite: number;\n total: number;\n} {\n const usage = row.usage && typeof row.usage === 'object'\n ? row.usage as Record<string, unknown>\n : {};\n const input = usageNumber(usage.input) + usageNumber(usage.inputTokens);\n const output = usageNumber(usage.output) + usageNumber(usage.outputTokens);\n const cacheRead = usageNumber(usage.cacheRead) + usageNumber(usage.cacheReadTokens);\n const cacheWrite = usageNumber(usage.cacheWrite) + usageNumber(usage.cacheWriteTokens);\n const explicitTotal = usageNumber(usage.total) + usageNumber(usage.totalTokens);\n return {\n input,\n output,\n cacheRead,\n cacheWrite,\n total: explicitTotal || input + output + cacheRead + cacheWrite,\n };\n}\n\nexport function computeTuiSessionStats(rows: TranscriptStoredRow[]): TuiSessionStats {\n const stats: TuiSessionStats = {\n totalMessages: rows.length,\n userMessages: 0,\n assistantMessages: 0,\n toolCalls: 0,\n toolResults: 0,\n contextRows: 0,\n tokens: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n total: 0,\n },\n };\n\n for (const row of rows) {\n const record = row as unknown as Record<string, unknown>;\n if (record.kind === 'context' || record.type === 'compaction') {\n stats.contextRows += 1;\n continue;\n }\n const role = typeof record.role === 'string' ? record.role : '';\n if (role === 'user') stats.userMessages += 1;\n else if (role === 'assistant') stats.assistantMessages += 1;\n else if (role === 'tool' || role === 'toolResult') stats.toolResults += 1;\n\n const toolCalls = Array.isArray(record.tool_calls)\n ? record.tool_calls.length\n : Array.isArray(record.toolCalls)\n ? record.toolCalls.length\n : 0;\n stats.toolCalls += toolCalls;\n\n const usage = usageFromRow(record);\n stats.tokens.input += usage.input;\n stats.tokens.output += usage.output;\n stats.tokens.cacheRead += usage.cacheRead;\n stats.tokens.cacheWrite += usage.cacheWrite;\n stats.tokens.total += usage.total;\n }\n\n return stats;\n}\n"],"mappings":";AAIA,SAAS,YAAY,OAAwB;AAC3C,QAAO,OAAO,UAAU,YAAY,OAAO,SAAS,MAAM,GAAG,QAAQ;;AAGvE,SAAS,aAAa,KAMpB;CACA,MAAM,QAAQ,IAAI,SAAS,OAAO,IAAI,UAAU,WAC5C,IAAI,QACJ,EAAE;CACN,MAAM,QAAQ,YAAY,MAAM,MAAM,GAAG,YAAY,MAAM,YAAY;CACvE,MAAM,SAAS,YAAY,MAAM,OAAO,GAAG,YAAY,MAAM,aAAa;CAC1E,MAAM,YAAY,YAAY,MAAM,UAAU,GAAG,YAAY,MAAM,gBAAgB;CACnF,MAAM,aAAa,YAAY,MAAM,WAAW,GAAG,YAAY,MAAM,iBAAiB;AAEtF,QAAO;EACL;EACA;EACA;EACA;EACA,OANoB,YAAY,MAAM,MAAM,GAAG,YAAY,MAAM,YAAY,IAMrD,QAAQ,SAAS,YAAY;EACtD;;AAGH,SAAgB,uBAAuB,MAA8C;CACnF,MAAM,QAAyB;EAC7B,eAAe,KAAK;EACpB,cAAc;EACd,mBAAmB;EACnB,WAAW;EACX,aAAa;EACb,aAAa;EACb,QAAQ;GACN,OAAO;GACP,QAAQ;GACR,WAAW;GACX,YAAY;GACZ,OAAO;GACR;EACF;AAED,MAAK,MAAM,OAAO,MAAM;EACtB,MAAM,SAAS;AACf,MAAI,OAAO,SAAS,aAAa,OAAO,SAAS,cAAc;AAC7D,SAAM,eAAe;AACrB;;EAEF,MAAM,OAAO,OAAO,OAAO,SAAS,WAAW,OAAO,OAAO;AAC7D,MAAI,SAAS,OAAQ,OAAM,gBAAgB;WAClC,SAAS,YAAa,OAAM,qBAAqB;WACjD,SAAS,UAAU,SAAS,aAAc,OAAM,eAAe;EAExE,MAAM,YAAY,MAAM,QAAQ,OAAO,WAAW,GAC9C,OAAO,WAAW,SAClB,MAAM,QAAQ,OAAO,UAAU,GAC7B,OAAO,UAAU,SACjB;AACN,QAAM,aAAa;EAEnB,MAAM,QAAQ,aAAa,OAAO;AAClC,QAAM,OAAO,SAAS,MAAM;AAC5B,QAAM,OAAO,UAAU,MAAM;AAC7B,QAAM,OAAO,aAAa,MAAM;AAChC,QAAM,OAAO,cAAc,MAAM;AACjC,QAAM,OAAO,SAAS,MAAM;;AAG9B,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-settings.js","names":[],"sources":["../../../src/tui/tui-settings.ts"],"sourcesContent":["import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { resolveStateDir } from '../config/paths.js';\n\nexport type TuiThemeId = 'auto' | 'dark' | 'light' | (string & {});\n\nexport type DoubleEscapeAction = 'none' | 'tree' | 'fork';\nexport type FollowUpMode = 'one-at-a-time' | 'all';\nexport type SteeringMode = 'one-at-a-time' | 'all';\nexport type TreeFilterMode = 'default' | 'no-tools' | 'user-only' | 'labeled-only' | 'all';\n\nexport interface TuiSettings {\n /** `auto` follows terminal background detection; `dark`/`light` or custom theme name. */\n theme: TuiThemeId;\n showThinking: boolean;\n toolsExpanded: boolean;\n doubleEscapeAction: DoubleEscapeAction;\n showTerminalProgress: boolean;\n /** Show expanded startup hints under the header title. */\n showStartupHints: boolean;\n /** Render image content blocks inline when the terminal supports images. */\n showImages: boolean;\n /** Preferred inline image width in terminal cells. */\n imageWidthCells: number;\n /** Show the terminal hardware cursor at the editor cursor for IME support. */\n showHardwareCursor: boolean;\n /** Horizontal padding for the input editor. */\n editorPaddingX: number;\n /** Maximum visible autocomplete rows before the completion menu scrolls. */\n autocompleteMaxVisible: number;\n /** Clear empty terminal rows when rendered content shrinks. */\n clearOnShrink: boolean;\n /** How queued follow-up messages are delivered after an agent run ends. */\n followUpMode: FollowUpMode;\n /** How queued steering messages are delivered across active runs. */\n steeringMode: SteeringMode;\n /** Default transcript filter when opening `/tree`. */\n treeFilterMode: TreeFilterMode;\n}\n\nexport const DEFAULT_TUI_SETTINGS: TuiSettings = {\n theme: 'auto',\n showThinking: false,\n toolsExpanded: false,\n doubleEscapeAction: 'none',\n showTerminalProgress: false,\n showStartupHints: true,\n showImages: true,\n imageWidthCells: 60,\n showHardwareCursor: false,\n editorPaddingX: 0,\n autocompleteMaxVisible: 5,\n clearOnShrink: false,\n followUpMode: 'one-at-a-time',\n steeringMode: 'one-at-a-time',\n treeFilterMode: 'default',\n};\n\nconst SETTINGS_PATH = join(resolveStateDir(), 'tui-settings.json');\n\nfunction isDoubleEscapeAction(value: unknown): value is DoubleEscapeAction {\n return value === 'none' || value === 'tree' || value === 'fork';\n}\n\nfunction isFollowUpMode(value: unknown): value is FollowUpMode {\n return value === 'one-at-a-time' || value === 'all';\n}\n\nfunction isSteeringMode(value: unknown): value is SteeringMode {\n return value === 'one-at-a-time' || value === 'all';\n}\n\nfunction isTreeFilterMode(value: unknown): value is TreeFilterMode {\n return (\n value === 'default' ||\n value === 'no-tools' ||\n value === 'user-only' ||\n value === 'labeled-only' ||\n value === 'all'\n );\n}\n\nfunction normalizeSettings(raw: unknown): TuiSettings {\n const base = { ...DEFAULT_TUI_SETTINGS };\n if (!raw || typeof raw !== 'object') return base;\n const obj = raw as Record<string, unknown>;\n if (typeof obj.theme === 'string' && obj.theme.trim()) {\n base.theme = obj.theme.trim();\n }\n if (typeof obj.showThinking === 'boolean') base.showThinking = obj.showThinking;\n if (typeof obj.toolsExpanded === 'boolean') base.toolsExpanded = obj.toolsExpanded;\n if (isDoubleEscapeAction(obj.doubleEscapeAction)) {\n base.doubleEscapeAction = obj.doubleEscapeAction;\n }\n if (typeof obj.showTerminalProgress === 'boolean') {\n base.showTerminalProgress = obj.showTerminalProgress;\n }\n if (typeof obj.showStartupHints === 'boolean') {\n base.showStartupHints = obj.showStartupHints;\n }\n if (typeof obj.showImages === 'boolean') {\n base.showImages = obj.showImages;\n }\n if (typeof obj.imageWidthCells === 'number' && Number.isFinite(obj.imageWidthCells)) {\n base.imageWidthCells = Math.max(1, Math.floor(obj.imageWidthCells));\n }\n if (typeof obj.showHardwareCursor === 'boolean') {\n base.showHardwareCursor = obj.showHardwareCursor;\n }\n if (typeof obj.editorPaddingX === 'number' && Number.isFinite(obj.editorPaddingX)) {\n base.editorPaddingX = Math.max(0, Math.min(3, Math.floor(obj.editorPaddingX)));\n }\n if (typeof obj.autocompleteMaxVisible === 'number' && Number.isFinite(obj.autocompleteMaxVisible)) {\n base.autocompleteMaxVisible = Math.max(3, Math.min(20, Math.floor(obj.autocompleteMaxVisible)));\n }\n if (typeof obj.clearOnShrink === 'boolean') {\n base.clearOnShrink = obj.clearOnShrink;\n }\n if (isFollowUpMode(obj.followUpMode)) {\n base.followUpMode = obj.followUpMode;\n }\n if (isSteeringMode(obj.steeringMode)) {\n base.steeringMode = obj.steeringMode;\n }\n if (isTreeFilterMode(obj.treeFilterMode)) {\n base.treeFilterMode = obj.treeFilterMode;\n }\n return base;\n}\n\n/** Load persisted TUI settings from `~/.xopc/tui-settings.json`. */\nexport function loadTuiSettings(): TuiSettings {\n try {\n if (!existsSync(SETTINGS_PATH)) return { ...DEFAULT_TUI_SETTINGS };\n const raw = readFileSync(SETTINGS_PATH, 'utf8');\n return normalizeSettings(JSON.parse(raw));\n } catch {\n return { ...DEFAULT_TUI_SETTINGS };\n }\n}\n\n/** Persist TUI settings. */\nexport function saveTuiSettings(settings: TuiSettings): void {\n const dir = resolveStateDir();\n if (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n writeFileSync(SETTINGS_PATH, `${JSON.stringify(settings, null, 2)}\\n`, 'utf8');\n}\n\nexport function getTuiSettingsPath(): string {\n return SETTINGS_PATH;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-skills-autocomplete.js","names":[],"sources":["../../../src/tui/tui-skills-autocomplete.ts"],"sourcesContent":["import { resolveBundledSkillsDir, resolveStateDir } from '../config/paths.js';\nimport { getWorkspacePath, loadConfig } from '../config/index.js';\nimport { loadSkills } from '../agent/skills/index.js';\nimport type { TuiAutocompleteProvider } from '../extensions/types/tui.js';\n\n/** `@skill` autocomplete from workspace + global + bundled skill directories. */\nexport function createSkillsAutocompleteProvider(): TuiAutocompleteProvider {\n let cached: Array<{ name: string; description?: string }> | null = null;\n\n const refresh = () => {\n const config = loadConfig();\n const workspaceDir = getWorkspacePath(config);\n const result = loadSkills({\n workspaceDir,\n builtinDir: resolveBundledSkillsDir(),\n globalDir: resolveStateDir(),\n });\n cached = result.skills.map((skill) => ({\n name: skill.name,\n description: skill.description\n ? `skill · ${skill.description.slice(0, 112)}`\n : 'skill',\n }));\n };\n\n return (query) => {\n if (!cached) refresh();\n const skills = cached ?? [];\n const q = query.toLowerCase();\n const filtered = q\n ? skills.filter(\n (s) =>\n s.name.toLowerCase().includes(q) ||\n (s.description?.toLowerCase().includes(q) ?? false),\n )\n : skills;\n return filtered.slice(0, 30);\n };\n}\n\n/** Test helper — build skill list without caching. */\nexport function listSkillAutocompleteSuggestions(): Array<{ name: string; description?: string }> {\n const config = loadConfig();\n const result = loadSkills({\n workspaceDir: getWorkspacePath(config),\n builtinDir: resolveBundledSkillsDir(),\n globalDir: resolveStateDir(),\n });\n return result.skills.map((s) => ({\n name: s.name,\n description: s.description,\n }));\n}\n"],"mappings":";;;;;;;YAA8E;;AAM9E,SAAgB,mCAA4D;CAC1E,IAAI,SAA+D;CAEnE,MAAM,gBAAgB;AAQpB,WALe,WAAW;GACxB,cAFmB,iBADN,YAC6B,CAE9B;GACZ,YAAY,yBAAyB;GACrC,WAAW,iBAAiB;GAC7B,CACc,CAAC,OAAO,KAAK,WAAW;GACrC,MAAM,MAAM;GACZ,aAAa,MAAM,cACf,WAAW,MAAM,YAAY,MAAM,GAAG,IAAI,KAC1C;GACL,EAAE;;AAGL,SAAQ,UAAU;AAChB,MAAI,CAAC,OAAQ,UAAS;EACtB,MAAM,SAAS,UAAU,EAAE;EAC3B,MAAM,IAAI,MAAM,aAAa;AAQ7B,UAPiB,IACb,OAAO,QACJ,MACC,EAAE,KAAK,aAAa,CAAC,SAAS,EAAE,KAC/B,EAAE,aAAa,aAAa,CAAC,SAAS,EAAE,IAAI,OAChD,GACD,QACY,MAAM,GAAG,GAAG;;;;AAKhC,SAAgB,mCAAkF;AAOhG,QALe,WAAW;EACxB,cAAc,iBAFD,YAEwB,CAAC;EACtC,YAAY,yBAAyB;EACrC,WAAW,iBAAiB;EAC7B,CACY,CAAC,OAAO,KAAK,OAAO;EAC/B,MAAM,EAAE;EACR,aAAa,EAAE;EAChB,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-startup-resources.js","names":[],"sources":["../../../src/tui/tui-startup-resources.ts"],"sourcesContent":["import { basename } from 'node:path';\n\nimport { resolveBootstrapFilesSync } from '../agent/bootstrap/bootstrap-files.js';\nimport { loadSkills } from '../agent/skills/index.js';\nimport { isSkillEnabled, createSkillConfigManager } from '../agent/skills/config.js';\nimport { createWorkflowCatalog } from '../agent/workflow/catalog.js';\nimport { resolveEffectiveAgentProfileForSession } from '../config/agent-profile.js';\nimport { getWorkspacePath } from '../config/index.js';\nimport {\n resolveAgentProfileDir,\n resolveBundledSkillsDir,\n resolveStateDir,\n resolveUserProfilePath,\n} from '../config/paths.js';\nimport { listConnectorInstances } from '../connectors/instances.js';\nimport type { Config } from '../config/schema.js';\nimport type { TuiStartupResources } from './tui-backend.js';\n\nfunction uniqueSorted(values: Iterable<string>): string[] {\n return [...new Set([...values].map((value) => value.trim()).filter(Boolean))]\n .sort((a, b) => a.localeCompare(b));\n}\n\nexport function collectTuiStartupResources(config: Config, sessionKey?: string): TuiStartupResources {\n const profile = resolveEffectiveAgentProfileForSession(config, sessionKey);\n const profileDir = resolveAgentProfileDir(config, profile.agentId);\n const workspaceDir = profile.resolvedWorkspacePath || getWorkspacePath(config);\n\n const context = uniqueSorted(\n resolveBootstrapFilesSync({ profileDir, userProfilePath: resolveUserProfilePath(), sessionKey })\n .filter((file) => !file.missing)\n .map((file) => file.name || basename(file.path)),\n );\n\n const skillsConfig = createSkillConfigManager(resolveStateDir()).load();\n const skills = uniqueSorted(\n loadSkills({\n workspaceDir,\n builtinDir: resolveBundledSkillsDir() ?? undefined,\n }).skills\n .filter((skill) => !skill.disableModelInvocation && isSkillEnabled(skill, skillsConfig))\n .map((skill) => skill.name),\n );\n\n const workflows = uniqueSorted(createWorkflowCatalog().list().map((entry) => entry.name));\n const connectors = uniqueSorted(\n listConnectorInstances(config).map((instance) => instance.displayName || instance.connectorId || instance.instanceId),\n );\n\n return { context, skills, workflows, connectors };\n}\n"],"mappings":";;;;;;;;;;;;YAa4B;AAK5B,SAAS,aAAa,QAAoC;AACxD,QAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,OAAO,CAAC,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAC1E,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;;AAGvC,SAAgB,2BAA2B,QAAgB,YAA0C;CACnG,MAAM,UAAU,uCAAuC,QAAQ,WAAW;CAC1E,MAAM,aAAa,uBAAuB,QAAQ,QAAQ,QAAQ;CAClE,MAAM,eAAe,QAAQ,yBAAyB,iBAAiB,OAAO;CAE9E,MAAM,UAAU,aACd,0BAA0B;EAAE;EAAY,iBAAiB,wBAAwB;EAAE;EAAY,CAAC,CAC7F,QAAQ,SAAS,CAAC,KAAK,QAAQ,CAC/B,KAAK,SAAS,KAAK,QAAQ,SAAS,KAAK,KAAK,CAAC,CACnD;CAED,MAAM,eAAe,yBAAyB,iBAAiB,CAAC,CAAC,MAAM;AAevE,QAAO;EAAE;EAAS,QAdH,aACb,WAAW;GACT;GACA,YAAY,yBAAyB,IAAI,KAAA;GAC1C,CAAC,CAAC,OACA,QAAQ,UAAU,CAAC,MAAM,0BAA0B,eAAe,OAAO,aAAa,CAAC,CACvF,KAAK,UAAU,MAAM,KAAK,CAQP;EAAE,WALR,aAAa,uBAAuB,CAAC,MAAM,CAAC,KAAK,UAAU,MAAM,KAAK,CAKrD;EAAE,YAJlB,aACjB,uBAAuB,OAAO,CAAC,KAAK,aAAa,SAAS,eAAe,SAAS,eAAe,SAAS,WAAW,CAGxE;EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-startup-text.js","names":[],"sources":["../../../src/tui/tui-startup-text.ts"],"sourcesContent":["import type { KeybindingsManager } from '@earendil-works/pi-tui';\n\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport { formatModelLabel } from './tui-command-formatters.js';\nimport type { TuiStartupResources } from './tui-backend.js';\nimport type { TuiState } from './tui-types.js';\n\nconst DEFAULT_LIMIT = 6;\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: false }) : fallback;\n}\n\nfunction compactKeyLine(keybindings?: KeybindingsManager): string {\n const interrupt = keyLabel(keybindings, 'app.interrupt', 'escape');\n const clear = keyLabel(keybindings, 'app.clear', 'ctrl+c');\n const exit = keyLabel(keybindings, 'app.exit', 'ctrl+d');\n const tools = keyLabel(keybindings, 'app.tools.expand', 'ctrl+o');\n return `${interrupt} interrupt · ${clear}/${exit} clear/exit · / commands · ! bash · ${tools} tools`;\n}\n\nfunction formatResourceSection(\n title: string,\n values: readonly string[] | undefined,\n options: { expanded: boolean },\n): string[] {\n const list = [...new Set((values ?? []).map((v) => v.trim()).filter(Boolean))]\n .sort((a, b) => a.localeCompare(b));\n const lines = [`[${title}]`];\n if (list.length === 0) {\n lines.push(' none');\n return lines;\n }\n if (!options.expanded) {\n const visible = list.slice(0, DEFAULT_LIMIT);\n const suffix = list.length > visible.length ? `, ... ${list.length - visible.length} more` : '';\n lines.push(` ${visible.join(', ')}${suffix}`);\n return lines;\n }\n const visible = list.slice(0, 30);\n for (const value of visible) {\n lines.push(` ${value}`);\n }\n if (list.length > visible.length) {\n lines.push(` ... ${list.length - visible.length} more`);\n }\n return lines;\n}\n\nexport function formatTuiStartupText(input: {\n state: TuiState;\n isLocal: boolean;\n keybindings?: KeybindingsManager;\n resources?: TuiStartupResources;\n expanded?: boolean;\n}): string {\n const expanded = input.expanded === true;\n const lines: string[] = [];\n\n if (expanded) {\n lines.push('xopc TUI', '');\n lines.push(`Session: ${input.state.currentSessionKey}`);\n lines.push(`Mode: ${input.isLocal ? 'local embedded' : 'gateway'}`);\n lines.push(`Model: ${formatModelLabel(input.state)}`);\n lines.push('');\n }\n\n lines.push(compactKeyLine(input.keybindings));\n lines.push('Press /start to show full startup help.');\n\n if (expanded) {\n lines.push(\n '',\n 'xopc can use skills, workflows, connectors, and project context. Ask it how to automate or connect services.',\n '',\n 'Ask xopc:',\n ' \"what workflows are available?\"',\n ' \"use a connector to check issues or docs\"',\n ' \"what skills can help with this task?\"',\n );\n }\n\n if (expanded) {\n lines.push('');\n lines.push(...formatResourceSection('Context', input.resources?.context, { expanded }));\n lines.push('');\n lines.push(...formatResourceSection('Skills', input.resources?.skills, { expanded }));\n lines.push('');\n lines.push(...formatResourceSection('Workflows', input.resources?.workflows, { expanded }));\n lines.push('');\n lines.push(...formatResourceSection('Connectors', input.resources?.connectors, { expanded }));\n }\n\n if (expanded) {\n lines.push(\n '',\n 'Useful commands:',\n ' /help — Show all commands and shortcuts',\n ' /workflow list — List saved workflows',\n ' /models — List available models',\n ' /settings — Open TUI settings',\n ' /export — Export current session',\n );\n }\n\n return lines.join('\\n');\n}\n"],"mappings":";;;AAOA,MAAM,gBAAgB;AAEtB,SAAS,SACP,aACA,IACA,UACQ;AACR,QAAO,cAAc,aAAa,aAAa,IAAI,EAAE,YAAY,OAAO,CAAC,GAAG;;AAG9E,SAAS,eAAe,aAA0C;AAKhE,QAAO,GAJW,SAAS,aAAa,iBAAiB,SAItC,CAAC,eAHN,SAAS,aAAa,aAAa,SAGT,CAAC,GAF5B,SAAS,aAAa,YAAY,SAEC,CAAC,sCADnC,SAAS,aAAa,oBAAoB,SACoC,CAAC;;AAG/F,SAAS,sBACP,OACA,QACA,SACU;CACV,MAAM,OAAO,CAAC,GAAG,IAAI,KAAK,UAAU,EAAE,EAAE,KAAK,MAAM,EAAE,MAAM,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,CAC3E,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;CACrC,MAAM,QAAQ,CAAC,IAAI,MAAM,GAAG;AAC5B,KAAI,KAAK,WAAW,GAAG;AACrB,QAAM,KAAK,SAAS;AACpB,SAAO;;AAET,KAAI,CAAC,QAAQ,UAAU;EACrB,MAAM,UAAU,KAAK,MAAM,GAAG,cAAc;EAC5C,MAAM,SAAS,KAAK,SAAS,QAAQ,SAAS,SAAS,KAAK,SAAS,QAAQ,OAAO,SAAS;AAC7F,QAAM,KAAK,KAAK,QAAQ,KAAK,KAAK,GAAG,SAAS;AAC9C,SAAO;;CAET,MAAM,UAAU,KAAK,MAAM,GAAG,GAAG;AACjC,MAAK,MAAM,SAAS,QAClB,OAAM,KAAK,KAAK,QAAQ;AAE1B,KAAI,KAAK,SAAS,QAAQ,OACxB,OAAM,KAAK,SAAS,KAAK,SAAS,QAAQ,OAAO,OAAO;AAE1D,QAAO;;AAGT,SAAgB,qBAAqB,OAM1B;CACT,MAAM,WAAW,MAAM,aAAa;CACpC,MAAM,QAAkB,EAAE;AAE1B,KAAI,UAAU;AACZ,QAAM,KAAK,YAAY,GAAG;AAC1B,QAAM,KAAK,YAAY,MAAM,MAAM,oBAAoB;AACvD,QAAM,KAAK,SAAS,MAAM,UAAU,mBAAmB,YAAY;AACnE,QAAM,KAAK,UAAU,iBAAiB,MAAM,MAAM,GAAG;AACrD,QAAM,KAAK,GAAG;;AAGhB,OAAM,KAAK,eAAe,MAAM,YAAY,CAAC;AAC7C,OAAM,KAAK,0CAA0C;AAErD,KAAI,SACF,OAAM,KACJ,IACA,gHACA,IACA,aACA,uCACA,iDACA,6CACD;AAGH,KAAI,UAAU;AACZ,QAAM,KAAK,GAAG;AACd,QAAM,KAAK,GAAG,sBAAsB,WAAW,MAAM,WAAW,SAAS,EAAE,UAAU,CAAC,CAAC;AACvF,QAAM,KAAK,GAAG;AACd,QAAM,KAAK,GAAG,sBAAsB,UAAU,MAAM,WAAW,QAAQ,EAAE,UAAU,CAAC,CAAC;AACrF,QAAM,KAAK,GAAG;AACd,QAAM,KAAK,GAAG,sBAAsB,aAAa,MAAM,WAAW,WAAW,EAAE,UAAU,CAAC,CAAC;AAC3F,QAAM,KAAK,GAAG;AACd,QAAM,KAAK,GAAG,sBAAsB,cAAc,MAAM,WAAW,YAAY,EAAE,UAAU,CAAC,CAAC;;AAG/F,KAAI,SACF,OAAM,KACJ,IACA,oBACA,6CACA,2CACA,qCACA,mCACA,qCACD;AAGH,QAAO,MAAM,KAAK,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-stdio-filter.js","names":[],"sources":["../../../src/tui/tui-stdio-filter.ts"],"sourcesContent":["/**\n * While pi-tui owns the screen, strip whole-line pino JSON from stdout/stderr.\n * ANSI chunks must pass through immediately (see runTui).\n *\n * Longer-term (openclaw-style): prefer routing logger transports away from stdout when the TUI\n * is active (e.g. file-only + explicit subsystem tags) instead of patching stdio here.\n */\n\nexport function isLikelyPinoJsonLogLine(line: string): boolean {\n const t = line.trim();\n if (!t.startsWith('{')) return false;\n try {\n const parsed = JSON.parse(t) as { level?: unknown };\n return typeof parsed.level === 'number' || typeof parsed.level === 'string';\n } catch {\n return false;\n }\n}\n\nexport function isLikelyPinoJsonLogPrefix(text: string): boolean {\n const t = text.trimStart();\n return t.startsWith('{') && /\"level\"\\s*:/.test(t);\n}\n\nexport type TuiStdioFilterHandle = {\n restore: () => void;\n /** Restore native stdio writes temporarily (e.g. inherited child process). */\n pause: () => void;\n /** Re-apply filtering after `pause()`. */\n resume: () => void;\n};\n\n/** Patch process stdout/stderr; call `restore()` before exiting the TUI. */\nexport function installTuiStdioFilter(): TuiStdioFilterHandle {\n const originalStdoutWrite = process.stdout.write.bind(process.stdout);\n const originalStderrWrite = process.stderr.write.bind(process.stderr);\n let suppressLogs = true;\n\n const stdoutBuf = { s: '' };\n const stderrBuf = { s: '' };\n\n const takeEmitCompleteLines = (buf: { s: string }): string => {\n let emit = '';\n while (true) {\n const idx = buf.s.indexOf('\\n');\n if (idx === -1) break;\n const line = buf.s.slice(0, idx);\n buf.s = buf.s.slice(idx + 1);\n if (!isLikelyPinoJsonLogLine(line)) {\n emit += `${line}\\n`;\n }\n }\n return emit;\n };\n\n const installBufferedLogFilter = (\n original: typeof process.stdout.write,\n buf: { s: string },\n ): typeof process.stdout.write =>\n function filteredWrite(chunk: unknown, ...rest: unknown[]): boolean {\n if (!suppressLogs) {\n const extra = typeof chunk === 'string' ? chunk : chunk instanceof Buffer ? chunk.toString() : '';\n const combined = buf.s ? buf.s + extra : extra;\n buf.s = '';\n return combined.length > 0\n ? ((original as Function)(combined, ...rest) as boolean)\n : true;\n }\n const text = typeof chunk === 'string' ? chunk : chunk instanceof Buffer ? chunk.toString() : '';\n if (text.includes('\\x1b')) {\n let emit = takeEmitCompleteLines(buf);\n if (buf.s.length > 0) {\n if (isLikelyPinoJsonLogPrefix(buf.s)) {\n buf.s = '';\n } else {\n emit += buf.s;\n buf.s = '';\n }\n }\n if (emit.length > 0) {\n (original as Function)(emit, ...rest);\n }\n return (original as Function)(text, ...rest) as boolean;\n }\n buf.s += text;\n const emit = takeEmitCompleteLines(buf);\n return emit.length > 0 ? ((original as Function)(emit, ...rest) as boolean) : true;\n } as typeof process.stdout.write;\n\n const patch = () => {\n process.stdout.write = installBufferedLogFilter(originalStdoutWrite, stdoutBuf);\n process.stderr.write = installBufferedLogFilter(originalStderrWrite, stderrBuf);\n };\n\n const flushRemainder = (buf: { s: string }, orig: typeof process.stdout.write): void => {\n const rest = buf.s.trimEnd();\n buf.s = '';\n if (!rest.length) return;\n if (!isLikelyPinoJsonLogLine(rest)) {\n orig(`${rest}\\n`);\n }\n };\n\n const unpatch = () => {\n process.stdout.write = originalStdoutWrite;\n process.stderr.write = originalStderrWrite;\n };\n\n patch();\n\n return {\n restore: () => {\n suppressLogs = false;\n flushRemainder(stdoutBuf, originalStdoutWrite);\n flushRemainder(stderrBuf, originalStderrWrite);\n unpatch();\n },\n pause: () => {\n suppressLogs = false;\n flushRemainder(stdoutBuf, originalStdoutWrite);\n flushRemainder(stderrBuf, originalStderrWrite);\n unpatch();\n },\n resume: () => {\n suppressLogs = true;\n patch();\n },\n };\n}\n"],"mappings":";;;;;;;;AAQA,SAAgB,wBAAwB,MAAuB;CAC7D,MAAM,IAAI,KAAK,MAAM;AACrB,KAAI,CAAC,EAAE,WAAW,IAAI,CAAE,QAAO;AAC/B,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,EAAE;AAC5B,SAAO,OAAO,OAAO,UAAU,YAAY,OAAO,OAAO,UAAU;SAC7D;AACN,SAAO;;;AAIX,SAAgB,0BAA0B,MAAuB;CAC/D,MAAM,IAAI,KAAK,WAAW;AAC1B,QAAO,EAAE,WAAW,IAAI,IAAI,cAAc,KAAK,EAAE;;;AAYnD,SAAgB,wBAA8C;CAC5D,MAAM,sBAAsB,QAAQ,OAAO,MAAM,KAAK,QAAQ,OAAO;CACrE,MAAM,sBAAsB,QAAQ,OAAO,MAAM,KAAK,QAAQ,OAAO;CACrE,IAAI,eAAe;CAEnB,MAAM,YAAY,EAAE,GAAG,IAAI;CAC3B,MAAM,YAAY,EAAE,GAAG,IAAI;CAE3B,MAAM,yBAAyB,QAA+B;EAC5D,IAAI,OAAO;AACX,SAAO,MAAM;GACX,MAAM,MAAM,IAAI,EAAE,QAAQ,KAAK;AAC/B,OAAI,QAAQ,GAAI;GAChB,MAAM,OAAO,IAAI,EAAE,MAAM,GAAG,IAAI;AAChC,OAAI,IAAI,IAAI,EAAE,MAAM,MAAM,EAAE;AAC5B,OAAI,CAAC,wBAAwB,KAAK,CAChC,SAAQ,GAAG,KAAK;;AAGpB,SAAO;;CAGT,MAAM,4BACJ,UACA,QAEA,SAAS,cAAc,OAAgB,GAAG,MAA0B;AAClE,MAAI,CAAC,cAAc;GACjB,MAAM,QAAQ,OAAO,UAAU,WAAW,QAAQ,iBAAiB,SAAS,MAAM,UAAU,GAAG;GAC/F,MAAM,WAAW,IAAI,IAAI,IAAI,IAAI,QAAQ;AACzC,OAAI,IAAI;AACR,UAAO,SAAS,SAAS,IACnB,SAAsB,UAAU,GAAG,KAAK,GAC1C;;EAEN,MAAM,OAAO,OAAO,UAAU,WAAW,QAAQ,iBAAiB,SAAS,MAAM,UAAU,GAAG;AAC9F,MAAI,KAAK,SAAS,OAAO,EAAE;GACzB,IAAI,OAAO,sBAAsB,IAAI;AACrC,OAAI,IAAI,EAAE,SAAS,EACjB,KAAI,0BAA0B,IAAI,EAAE,CAClC,KAAI,IAAI;QACH;AACL,YAAQ,IAAI;AACZ,QAAI,IAAI;;AAGZ,OAAI,KAAK,SAAS,EACf,UAAsB,MAAM,GAAG,KAAK;AAEvC,UAAQ,SAAsB,MAAM,GAAG,KAAK;;AAE9C,MAAI,KAAK;EACT,MAAM,OAAO,sBAAsB,IAAI;AACvC,SAAO,KAAK,SAAS,IAAM,SAAsB,MAAM,GAAG,KAAK,GAAe;;CAGlF,MAAM,cAAc;AAClB,UAAQ,OAAO,QAAQ,yBAAyB,qBAAqB,UAAU;AAC/E,UAAQ,OAAO,QAAQ,yBAAyB,qBAAqB,UAAU;;CAGjF,MAAM,kBAAkB,KAAoB,SAA4C;EACtF,MAAM,OAAO,IAAI,EAAE,SAAS;AAC5B,MAAI,IAAI;AACR,MAAI,CAAC,KAAK,OAAQ;AAClB,MAAI,CAAC,wBAAwB,KAAK,CAChC,MAAK,GAAG,KAAK,IAAI;;CAIrB,MAAM,gBAAgB;AACpB,UAAQ,OAAO,QAAQ;AACvB,UAAQ,OAAO,QAAQ;;AAGzB,QAAO;AAEP,QAAO;EACL,eAAe;AACb,kBAAe;AACf,kBAAe,WAAW,oBAAoB;AAC9C,kBAAe,WAAW,oBAAoB;AAC9C,YAAS;;EAEX,aAAa;AACX,kBAAe;AACf,kBAAe,WAAW,oBAAoB;AAC9C,kBAAe,WAAW,oBAAoB;AAC9C,YAAS;;EAEX,cAAc;AACZ,kBAAe;AACf,UAAO;;EAEV"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-submit.js","names":[],"sources":["../../../src/tui/tui-submit.ts"],"sourcesContent":["/**\n * Submit handling aligned with openclaw: `!` local shell lines + paste burst coalescing\n * for terminals that split multiline paste into rapid single-line submits.\n */\n\nfunction normalizeLowercaseStringOrEmpty(value: string): string {\n return value.trim().toLowerCase();\n}\n\nexport function createEditorSubmitHandler(params: {\n editor: {\n setText: (value: string) => void;\n addToHistory: (value: string) => void;\n };\n handleCommand: (value: string) => void | Promise<void>;\n sendMessage: (value: string) => void | Promise<void>;\n handleBangLine: (value: string) => void | Promise<void>;\n getMode?: () => 'chat' | 'shell';\n enterShellMode?: () => void;\n exitShellMode?: () => void;\n isAgentBusy?: () => boolean;\n steerWhileBusy?: (value: string) => void | Promise<void>;\n hasPendingAttachments?: () => boolean;\n defaultAttachmentMessage?: string;\n}) {\n return (text: string) => {\n const raw = text;\n const rawTrimmed = raw.trim();\n const mode = params.getMode?.() ?? 'chat';\n const hasAttachments = params.hasPendingAttachments?.() === true;\n const value = rawTrimmed || (hasAttachments ? (params.defaultAttachmentMessage ?? 'Please analyze the attachment(s).') : '');\n params.editor.setText('');\n\n if (mode === 'shell') {\n if (!rawTrimmed) {\n params.exitShellMode?.();\n return;\n }\n params.editor.addToHistory(rawTrimmed);\n const line = rawTrimmed.startsWith('!') ? rawTrimmed : `!${rawTrimmed}`;\n void Promise.resolve(params.handleBangLine(line)).finally(() => {\n params.exitShellMode?.();\n });\n return;\n }\n\n if (!value) {\n return;\n }\n\n if (value === '!') {\n params.enterShellMode?.();\n return;\n }\n\n if (raw.startsWith('!') && raw !== '!') {\n params.editor.addToHistory(raw);\n void params.handleBangLine(raw);\n return;\n }\n\n params.editor.addToHistory(value);\n\n if (value.startsWith('/')) {\n void params.handleCommand(value);\n return;\n }\n\n if (params.isAgentBusy?.() && params.steerWhileBusy) {\n void params.steerWhileBusy(value);\n return;\n }\n\n void params.sendMessage(value);\n };\n}\n\nexport function shouldEnableWindowsGitBashPasteFallback(params?: {\n platform?: string;\n env?: NodeJS.ProcessEnv;\n}): boolean {\n const platform = params?.platform ?? process.platform;\n const env = params?.env ?? process.env;\n const termProgram = normalizeLowercaseStringOrEmpty(env.TERM_PROGRAM ?? '');\n\n if (platform === 'darwin') {\n if (termProgram.includes('iterm') || termProgram.includes('apple_terminal')) {\n return true;\n }\n return false;\n }\n\n if (platform !== 'win32') {\n return false;\n }\n\n const msystem = (env.MSYSTEM ?? '').toUpperCase();\n const shell = env.SHELL ?? '';\n if (msystem.startsWith('MINGW') || msystem.startsWith('MSYS')) {\n return true;\n }\n if (normalizeLowercaseStringOrEmpty(shell).includes('bash')) {\n return true;\n }\n return termProgram.includes('mintty');\n}\n\nexport function createSubmitBurstCoalescer(params: {\n submit: (value: string) => void;\n enabled: boolean;\n burstWindowMs?: number;\n now?: () => number;\n setTimer?: typeof setTimeout;\n clearTimer?: typeof clearTimeout;\n}) {\n const windowMs = Math.max(1, params.burstWindowMs ?? 50);\n const now = params.now ?? (() => Date.now());\n const setTimer = params.setTimer ?? setTimeout;\n const clearTimer = params.clearTimer ?? clearTimeout;\n let pending: string | null = null;\n let pendingAt = 0;\n let flushTimer: ReturnType<typeof setTimeout> | null = null;\n\n const clearFlushTimer = () => {\n if (!flushTimer) {\n return;\n }\n clearTimer(flushTimer);\n flushTimer = null;\n };\n\n const flushPending = () => {\n if (pending === null) {\n return;\n }\n const flushed = pending;\n pending = null;\n pendingAt = 0;\n clearFlushTimer();\n params.submit(flushed);\n };\n\n const scheduleFlush = () => {\n clearFlushTimer();\n flushTimer = setTimer(() => {\n flushPending();\n }, windowMs);\n };\n\n return (value: string) => {\n if (!params.enabled) {\n params.submit(value);\n return;\n }\n if (value.trim() === '!' || value.startsWith('!')) {\n flushPending();\n params.submit(value);\n return;\n }\n if (value.includes('\\n')) {\n flushPending();\n params.submit(value);\n return;\n }\n const ts = now();\n if (pending === null) {\n pending = value;\n pendingAt = ts;\n scheduleFlush();\n return;\n }\n if (ts - pendingAt <= windowMs) {\n pending = `${pending}\\n${value}`;\n pendingAt = ts;\n scheduleFlush();\n return;\n }\n flushPending();\n pending = value;\n pendingAt = ts;\n scheduleFlush();\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-suspend.js","names":[],"sources":["../../../src/tui/tui-suspend.ts"],"sourcesContent":["import { drainAndStopTuiSafely, type DrainableTui } from './tui-lifecycle.js';\n\ntype StartableTui = DrainableTui & { start: () => void };\n\n/**\n * Pause the TUI (drain stdin + stop), run async work with a normal terminal, then restart.\n * Caller should refocus the editor after `start()` if needed.\n */\nexport async function withTuiSuspended<T>(tui: StartableTui, work: () => Promise<T>): Promise<T> {\n await drainAndStopTuiSafely(tui);\n try {\n return await work();\n } finally {\n tui.start();\n }\n}\n"],"mappings":";;;;;;AAQA,eAAsB,iBAAoB,KAAmB,MAAoC;AAC/F,OAAM,sBAAsB,IAAI;AAChC,KAAI;AACF,SAAO,MAAM,MAAM;WACX;AACR,MAAI,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-timeline-picker.js","names":[],"sources":["../../../src/tui/tui-timeline-picker.ts"],"sourcesContent":["import type {\n Component,\n Focusable,\n KeybindingsManager,\n SelectItem,\n} from '@earendil-works/pi-tui';\n\nimport { SearchableSelectList } from './components/searchable-select-list.js';\nimport { formatKeyIds } from './format-tui-hotkeys.js';\nimport { searchableSelectListTheme, theme } from './theme.js';\nimport {\n formatTimelineToolSummary,\n type TuiTimelineTurn,\n} from './tui-timeline.js';\n\ntype TimelineSelectItem = SelectItem & {\n searchText?: string;\n turn: TuiTimelineTurn;\n};\n\nfunction formatTime(timestamp?: number): string {\n if (timestamp === undefined) return '';\n const date = new Date(timestamp);\n if (Number.isNaN(date.getTime())) return '';\n return new Intl.DateTimeFormat(undefined, {\n hour: '2-digit',\n minute: '2-digit',\n }).format(date);\n}\n\nfunction timelineSelectItems(\n turns: readonly TuiTimelineTurn[],\n activeDisplayIndex?: number,\n): TimelineSelectItem[] {\n const activeTurn = activeDisplayIndex === undefined\n ? undefined\n : [...turns].reverse().find((turn) => turn.displayIndex <= activeDisplayIndex);\n\n return turns.map((turn) => {\n const current = activeTurn?.id === turn.id;\n const description = [\n formatTimelineToolSummary(turn.toolCount),\n formatTime(turn.timestamp),\n turn.running ? 'running' : '',\n current ? 'current' : '',\n ].filter(Boolean).join(' · ');\n return {\n value: turn.id,\n label: `${String(turn.turn).padStart(3, ' ')} ${turn.preview}`,\n description,\n searchText: `${turn.turn} ${turn.preview} ${description}`,\n turn,\n };\n });\n}\n\nexport function formatTimelineOpenedHint(keybindings: KeybindingsManager): string {\n const up = formatKeyIds(keybindings, 'tui.select.up', { capitalize: true });\n const down = formatKeyIds(keybindings, 'tui.select.down', { capitalize: true });\n const confirm = formatKeyIds(keybindings, 'tui.select.confirm', { capitalize: true });\n const cancel = formatKeyIds(keybindings, 'tui.select.cancel', { capitalize: true });\n return `Timeline (${up}/${down} · type to filter · ${confirm} jump · ${cancel} close)`;\n}\n\nexport class TimelineSelectList implements Component, Focusable {\n private readonly list: SearchableSelectList;\n private readonly items: TimelineSelectItem[];\n\n onSelect?: (turn: TuiTimelineTurn) => void;\n onCancel?: () => void;\n\n constructor(\n turns: readonly TuiTimelineTurn[],\n options: {\n activeDisplayIndex?: number;\n initialQuery?: string;\n keybindings: KeybindingsManager;\n },\n ) {\n this.items = timelineSelectItems(turns, options.activeDisplayIndex);\n this.list = new SearchableSelectList(\n this.items,\n Math.min(14, Math.max(1, this.items.length)),\n searchableSelectListTheme,\n {\n searchPromptText: 'timeline: ',\n wrapNavigation: true,\n ...(options.initialQuery ? { initialQuery: options.initialQuery } : {}),\n },\n );\n this.list.onSelect = (item) => {\n const turn = (item as TimelineSelectItem).turn;\n if (turn) this.onSelect?.(turn);\n };\n this.list.onCancel = () => this.onCancel?.();\n\n const activeItem = this.items.find((item) => item.description?.includes('current'));\n if (activeItem) this.list.setSelectedValue(activeItem.value);\n }\n\n get focused(): boolean {\n return this.list.focused;\n }\n\n set focused(value: boolean) {\n this.list.focused = value;\n }\n\n invalidate(): void {\n this.list.invalidate();\n }\n\n render(width: number): string[] {\n const count = this.items.length;\n return [\n theme.dim(`Timeline · ${count} turn${count === 1 ? '' : 's'}`),\n '',\n ...this.list.render(width),\n ];\n }\n\n handleInput(keyData: string): void {\n this.list.handleInput(keyData);\n }\n}\n"],"mappings":";;;;;AAoBA,SAAS,WAAW,WAA4B;AAC9C,KAAI,cAAc,KAAA,EAAW,QAAO;CACpC,MAAM,OAAO,IAAI,KAAK,UAAU;AAChC,KAAI,OAAO,MAAM,KAAK,SAAS,CAAC,CAAE,QAAO;AACzC,QAAO,IAAI,KAAK,eAAe,KAAA,GAAW;EACxC,MAAM;EACN,QAAQ;EACT,CAAC,CAAC,OAAO,KAAK;;AAGjB,SAAS,oBACP,OACA,oBACsB;CACtB,MAAM,aAAa,uBAAuB,KAAA,IACtC,KAAA,IACA,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,SAAS,KAAK,gBAAgB,mBAAmB;AAEhF,QAAO,MAAM,KAAK,SAAS;EACzB,MAAM,UAAU,YAAY,OAAO,KAAK;EACxC,MAAM,cAAc;GAClB,0BAA0B,KAAK,UAAU;GACzC,WAAW,KAAK,UAAU;GAC1B,KAAK,UAAU,YAAY;GAC3B,UAAU,YAAY;GACvB,CAAC,OAAO,QAAQ,CAAC,KAAK,MAAM;AAC7B,SAAO;GACL,OAAO,KAAK;GACZ,OAAO,GAAG,OAAO,KAAK,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,KAAK;GACtD;GACA,YAAY,GAAG,KAAK,KAAK,GAAG,KAAK,QAAQ,GAAG;GAC5C;GACD;GACD;;AAGJ,SAAgB,yBAAyB,aAAyC;AAKhF,QAAO,aAJI,aAAa,aAAa,iBAAiB,EAAE,YAAY,MAAM,CAIpD,CAAC,GAHV,aAAa,aAAa,mBAAmB,EAAE,YAAY,MAAM,CAGhD,CAAC,sBAFf,aAAa,aAAa,sBAAsB,EAAE,YAAY,MAAM,CAExB,CAAC,UAD9C,aAAa,aAAa,qBAAqB,EAAE,YAAY,MAAM,CACL,CAAC;;AAGhF,IAAa,qBAAb,MAAgE;CAC9D;CACA;CAEA;CACA;CAEA,YACE,OACA,SAKA;AACA,OAAK,QAAQ,oBAAoB,OAAO,QAAQ,mBAAmB;AACnE,OAAK,OAAO,IAAI,qBACd,KAAK,OACL,KAAK,IAAI,IAAI,KAAK,IAAI,GAAG,KAAK,MAAM,OAAO,CAAC,EAC5C,2BACA;GACE,kBAAkB;GAClB,gBAAgB;GAChB,GAAI,QAAQ,eAAe,EAAE,cAAc,QAAQ,cAAc,GAAG,EAAE;GACvE,CACF;AACD,OAAK,KAAK,YAAY,SAAS;GAC7B,MAAM,OAAQ,KAA4B;AAC1C,OAAI,KAAM,MAAK,WAAW,KAAK;;AAEjC,OAAK,KAAK,iBAAiB,KAAK,YAAY;EAE5C,MAAM,aAAa,KAAK,MAAM,MAAM,SAAS,KAAK,aAAa,SAAS,UAAU,CAAC;AACnF,MAAI,WAAY,MAAK,KAAK,iBAAiB,WAAW,MAAM;;CAG9D,IAAI,UAAmB;AACrB,SAAO,KAAK,KAAK;;CAGnB,IAAI,QAAQ,OAAgB;AAC1B,OAAK,KAAK,UAAU;;CAGtB,aAAmB;AACjB,OAAK,KAAK,YAAY;;CAGxB,OAAO,OAAyB;EAC9B,MAAM,QAAQ,KAAK,MAAM;AACzB,SAAO;GACL,MAAM,IAAI,cAAc,MAAM,OAAO,UAAU,IAAI,KAAK,MAAM;GAC9D;GACA,GAAG,KAAK,KAAK,OAAO,MAAM;GAC3B;;CAGH,YAAY,SAAuB;AACjC,OAAK,KAAK,YAAY,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-timeline.js","names":[],"sources":["../../../src/tui/tui-timeline.ts"],"sourcesContent":["import type { SessionTimelineItem } from '../session/transcript-outline.js';\n\nexport interface TuiTimelineTurn {\n id: string;\n turn: number;\n displayIndex: number;\n rowNumber?: number;\n preview: string;\n timestamp?: number;\n toolCount: number;\n running: boolean;\n}\n\nfunction compactText(text: string, max = 72): string {\n const normalized = text.replace(/\\s+/g, ' ').trim();\n if (normalized.length <= max) return normalized;\n return `${normalized.slice(0, Math.max(0, max - 3)).trimEnd()}...`;\n}\n\nexport function buildTuiTimelineTurns(items: readonly SessionTimelineItem[]): TuiTimelineTurn[] {\n const turns: TuiTimelineTurn[] = [];\n let current: TuiTimelineTurn | null = null;\n let currentToolKeys = new Set<string>();\n let lastDisplayIndex = 0;\n\n for (const item of items) {\n if (typeof item.displayIndex === 'number' && Number.isFinite(item.displayIndex)) {\n lastDisplayIndex = item.displayIndex;\n }\n\n if (item.kind === 'turn' && item.role === 'user') {\n const turn = item.turn || turns.length + 1;\n current = {\n id: item.id,\n turn,\n displayIndex: item.displayIndex ?? lastDisplayIndex,\n preview: compactText(item.preview || item.title || 'Message'),\n toolCount: 0,\n running: false,\n ...(item.rowNumber !== undefined ? { rowNumber: item.rowNumber } : {}),\n ...(item.timestamp !== undefined ? { timestamp: item.timestamp } : {}),\n };\n turns.push(current);\n currentToolKeys = new Set();\n continue;\n }\n\n if (!current) continue;\n\n if (item.kind === 'tool' || item.kind === 'file' || item.kind === 'command') {\n const key = `${item.id}:${item.meta?.toolName ?? item.title ?? item.kind}`;\n if (currentToolKeys.has(key)) {\n current.running ||= item.status === 'running';\n continue;\n }\n currentToolKeys.add(key);\n current.toolCount += 1;\n current.running ||= item.status === 'running';\n }\n }\n\n return turns;\n}\n\nexport function findTimelineTurnByNumber(\n turns: readonly TuiTimelineTurn[],\n turnNumber: number,\n): TuiTimelineTurn | undefined {\n return turns.find((turn) => turn.turn === turnNumber);\n}\n\nexport function findNearestTimelineTurnByDisplayIndex(\n turns: readonly TuiTimelineTurn[],\n displayIndex: number,\n): TuiTimelineTurn | undefined {\n let selected = turns[0];\n for (const turn of turns) {\n if (turn.displayIndex <= displayIndex) {\n selected = turn;\n continue;\n }\n break;\n }\n return selected;\n}\n\nexport function formatTimelineToolSummary(toolCount: number): string {\n if (toolCount <= 0) return '0 tools';\n return `${toolCount} tool${toolCount === 1 ? '' : 's'}`;\n}\n"],"mappings":";AAaA,SAAS,YAAY,MAAc,MAAM,IAAY;CACnD,MAAM,aAAa,KAAK,QAAQ,QAAQ,IAAI,CAAC,MAAM;AACnD,KAAI,WAAW,UAAU,IAAK,QAAO;AACrC,QAAO,GAAG,WAAW,MAAM,GAAG,KAAK,IAAI,GAAG,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC;;AAGhE,SAAgB,sBAAsB,OAA0D;CAC9F,MAAM,QAA2B,EAAE;CACnC,IAAI,UAAkC;CACtC,IAAI,kCAAkB,IAAI,KAAa;CACvC,IAAI,mBAAmB;AAEvB,MAAK,MAAM,QAAQ,OAAO;AACxB,MAAI,OAAO,KAAK,iBAAiB,YAAY,OAAO,SAAS,KAAK,aAAa,CAC7E,oBAAmB,KAAK;AAG1B,MAAI,KAAK,SAAS,UAAU,KAAK,SAAS,QAAQ;GAChD,MAAM,OAAO,KAAK,QAAQ,MAAM,SAAS;AACzC,aAAU;IACR,IAAI,KAAK;IACT;IACA,cAAc,KAAK,gBAAgB;IACnC,SAAS,YAAY,KAAK,WAAW,KAAK,SAAS,UAAU;IAC7D,WAAW;IACX,SAAS;IACT,GAAI,KAAK,cAAc,KAAA,IAAY,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE;IACrE,GAAI,KAAK,cAAc,KAAA,IAAY,EAAE,WAAW,KAAK,WAAW,GAAG,EAAE;IACtE;AACD,SAAM,KAAK,QAAQ;AACnB,qCAAkB,IAAI,KAAK;AAC3B;;AAGF,MAAI,CAAC,QAAS;AAEd,MAAI,KAAK,SAAS,UAAU,KAAK,SAAS,UAAU,KAAK,SAAS,WAAW;GAC3E,MAAM,MAAM,GAAG,KAAK,GAAG,GAAG,KAAK,MAAM,YAAY,KAAK,SAAS,KAAK;AACpE,OAAI,gBAAgB,IAAI,IAAI,EAAE;AAC5B,YAAQ,YAAY,KAAK,WAAW;AACpC;;AAEF,mBAAgB,IAAI,IAAI;AACxB,WAAQ,aAAa;AACrB,WAAQ,YAAY,KAAK,WAAW;;;AAIxC,QAAO;;AAGT,SAAgB,yBACd,OACA,YAC6B;AAC7B,QAAO,MAAM,MAAM,SAAS,KAAK,SAAS,WAAW;;AAGvD,SAAgB,sCACd,OACA,cAC6B;CAC7B,IAAI,WAAW,MAAM;AACrB,MAAK,MAAM,QAAQ,OAAO;AACxB,MAAI,KAAK,gBAAgB,cAAc;AACrC,cAAW;AACX;;AAEF;;AAEF,QAAO;;AAGT,SAAgB,0BAA0B,WAA2B;AACnE,KAAI,aAAa,EAAG,QAAO;AAC3B,QAAO,GAAG,UAAU,OAAO,cAAc,IAAI,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-tool-diff.js","names":[],"sources":["../../../src/tui/tui-tool-diff.ts"],"sourcesContent":["import { getThemeExports } from './theme-manager.js';\n\ntype DiffLineKind = 'context' | 'add' | 'delete';\n\ntype HunkHeader = {\n oldStart: number;\n newStart: number;\n};\n\nexport type TuiFileChange = {\n kind: 'add' | 'delete' | 'update';\n path: string;\n movePath?: string;\n unifiedDiff: string;\n added: number;\n removed: number;\n};\n\nexport type TuiPatchSummary = {\n files: TuiFileChange[];\n added: number;\n removed: number;\n};\n\nconst DIFF_TOOLS = new Set([\n 'edit',\n 'write',\n 'apply_patch',\n 'patch',\n 'search_replace',\n 'str_replace',\n]);\n\nexport function isDiffFriendlyTool(toolName: string): boolean {\n const base = toolName.split('__').pop()?.toLowerCase() ?? toolName.toLowerCase();\n return DIFF_TOOLS.has(base);\n}\n\nexport function looksLikeUnifiedDiff(text: string): boolean {\n const sample = text.trimStart();\n if (sample.startsWith('@@')) return true;\n const lines = sample.split('\\n').slice(0, 20);\n let diffLines = 0;\n for (const line of lines) {\n if (/^(\\+\\+\\+|---|@@|[+-] |diff --git)/.test(line)) diffLines += 1;\n }\n return diffLines >= 2;\n}\n\n/** Colorize unified diff lines for terminal display. */\nexport function renderUnifiedDiff(text: string, maxLines = 80): string {\n const palette = getThemeExports().palette;\n const fg = (hex: string) => (line: string) => `\\x1b[38;2;${hexToRgb(hex)}m${line}\\x1b[0m`;\n const added = fg(palette.success);\n const removed = fg(palette.error);\n const context = fg(palette.dim);\n const header = fg(palette.accentSoft);\n const inverse = (value: string) => `\\x1b[7m${value}\\x1b[27m`;\n\n const lines = text.split('\\n');\n const capped = lines.length > maxLines ? [...lines.slice(0, maxLines), '…'] : lines;\n const lineNumberWidth = getLineNumberWidth(lines);\n\n const rendered: string[] = [];\n let oldLine = 0;\n let newLine = 0;\n for (let index = 0; index < capped.length; index += 1) {\n const line = capped[index] ?? '';\n const next = capped[index + 1] ?? '';\n\n const hunk = parseHunkHeader(line);\n if (hunk) {\n oldLine = hunk.oldStart;\n newLine = hunk.newStart;\n rendered.push(header(line));\n continue;\n }\n\n if (isRemovedDiffLine(line) && isAddedDiffLine(next)) {\n const pair = renderReplacementPair(line, next, inverse);\n rendered.push(removed(renderDiffBodyLine(oldLine, 'delete', pair.removedLine, lineNumberWidth)));\n rendered.push(added(renderDiffBodyLine(newLine, 'add', pair.addedLine, lineNumberWidth)));\n oldLine += 1;\n newLine += 1;\n index += 1;\n continue;\n }\n\n if (isDiffHeaderLine(line)) {\n rendered.push(header(line));\n } else if (line.startsWith('+')) {\n rendered.push(added(renderDiffBodyLine(newLine, 'add', replaceTabs(line), lineNumberWidth)));\n newLine += 1;\n } else if (line.startsWith('-')) {\n rendered.push(removed(renderDiffBodyLine(oldLine, 'delete', replaceTabs(line), lineNumberWidth)));\n oldLine += 1;\n } else if (line === '…') {\n rendered.push(context(line));\n } else {\n rendered.push(context(renderDiffBodyLine(newLine, 'context', replaceTabs(line), lineNumberWidth)));\n oldLine += 1;\n newLine += 1;\n }\n }\n\n return rendered.join('\\n');\n}\n\nexport function parseUnifiedPatch(text: string): TuiPatchSummary | null {\n if (!looksLikeUnifiedDiff(text)) return null;\n\n const files: TuiFileChange[] = [];\n let current: {\n oldPath?: string;\n newPath?: string;\n hunks: string[];\n added: number;\n removed: number;\n } | null = null;\n\n const finish = () => {\n if (!current || current.hunks.length === 0) return;\n const oldPath = normalizeDiffPath(current.oldPath);\n const newPath = normalizeDiffPath(current.newPath);\n const path = newPath && newPath !== '/dev/null'\n ? newPath\n : oldPath && oldPath !== '/dev/null'\n ? oldPath\n : 'unknown';\n const kind = oldPath === '/dev/null'\n ? 'add'\n : newPath === '/dev/null'\n ? 'delete'\n : 'update';\n files.push({\n kind,\n path,\n unifiedDiff: current.hunks.join('\\n'),\n added: current.added,\n removed: current.removed,\n });\n };\n\n for (const rawLine of text.split('\\n')) {\n const gitMatch = rawLine.match(/^diff --git a\\/(.+?) b\\/(.+)$/);\n if (gitMatch) {\n finish();\n current = {\n oldPath: gitMatch[1],\n newPath: gitMatch[2],\n hunks: [rawLine],\n added: 0,\n removed: 0,\n };\n continue;\n }\n\n if (rawLine.startsWith('--- ')) {\n if (!current) {\n current = { hunks: [], added: 0, removed: 0 };\n }\n current.oldPath = rawLine.slice(4).trim();\n current.hunks.push(rawLine);\n continue;\n }\n\n if (rawLine.startsWith('+++ ')) {\n if (!current) {\n current = { hunks: [], added: 0, removed: 0 };\n }\n current.newPath = rawLine.slice(4).trim();\n current.hunks.push(rawLine);\n continue;\n }\n\n if (!current && rawLine.startsWith('@@')) {\n current = { hunks: [], added: 0, removed: 0 };\n }\n if (!current) continue;\n\n current.hunks.push(rawLine);\n if (isAddedDiffLine(rawLine)) {\n current.added += 1;\n } else if (isRemovedDiffLine(rawLine)) {\n current.removed += 1;\n }\n }\n finish();\n\n if (files.length === 0) return null;\n return {\n files,\n added: files.reduce((sum, file) => sum + file.added, 0),\n removed: files.reduce((sum, file) => sum + file.removed, 0),\n };\n}\n\nexport function renderPatchSummary(text: string, maxLines = 120): string | null {\n const summary = parseUnifiedPatch(text);\n if (!summary) return null;\n\n const { theme } = getThemeExports();\n const fileCount = summary.files.length;\n const header = fileCount === 1\n ? `${changeVerb(summary.files[0]!)} ${summary.files[0]!.path} ${lineCountSummary(summary.files[0]!)}`\n : `Edited ${fileCount} files ${lineCountSummary(summary)}`;\n const rendered: string[] = [theme.accentSoft('• ') + theme.bold(header)];\n\n let remainingLines = Math.max(1, maxLines - 1);\n let omitted = false;\n for (const [index, file] of summary.files.entries()) {\n if (remainingLines <= 0) {\n omitted = true;\n break;\n }\n if (index > 0) {\n rendered.push('');\n remainingLines -= 1;\n }\n if (fileCount > 1) {\n rendered.push(theme.dim(` ${changeVerb(file)} ${file.path} ${lineCountSummary(file)}`));\n remainingLines -= 1;\n }\n\n const diff = renderUnifiedDiff(file.unifiedDiff, Math.max(1, remainingLines))\n .split('\\n')\n .map((line) => ` ${line}`)\n .join('\\n');\n rendered.push(diff);\n remainingLines -= diff.split('\\n').length;\n }\n\n if (omitted) {\n rendered.push(theme.dim(' …'));\n }\n\n return rendered.join('\\n');\n}\n\nfunction isDiffHeaderLine(line: string): boolean {\n return (\n line.startsWith('+++') ||\n line.startsWith('---') ||\n line.startsWith('@@') ||\n line.startsWith('diff --git') ||\n line.startsWith('index ') ||\n line.startsWith('new file mode ') ||\n line.startsWith('deleted file mode ') ||\n line.startsWith('similarity index ') ||\n line.startsWith('rename from ') ||\n line.startsWith('rename to ')\n );\n}\n\nfunction isRemovedDiffLine(line: string): boolean {\n return line.startsWith('-') && !line.startsWith('---');\n}\n\nfunction isAddedDiffLine(line: string): boolean {\n return line.startsWith('+') && !line.startsWith('+++');\n}\n\nfunction replaceTabs(text: string): string {\n return text.replace(/\\t/g, ' ');\n}\n\nfunction renderDiffBodyLine(\n lineNumber: number,\n kind: DiffLineKind,\n line: string,\n lineNumberWidth: number,\n): string {\n const gutter = lineNumber > 0 ? String(lineNumber).padStart(lineNumberWidth, ' ') : ''.padStart(lineNumberWidth, ' ');\n const marker = kind === 'add' ? '+' : kind === 'delete' ? '-' : ' ';\n const content = kind === 'context'\n ? line.startsWith(' ') ? line.slice(1) : line\n : line.slice(1);\n return `${gutter} ${marker}${content}`;\n}\n\nfunction renderReplacementPair(\n removedLine: string,\n addedLine: string,\n inverse: (value: string) => string,\n): { removedLine: string; addedLine: string } {\n const removedContent = replaceTabs(removedLine.slice(1));\n const addedContent = replaceTabs(addedLine.slice(1));\n const commonPrefix = commonPrefixLength(removedContent, addedContent);\n const commonSuffix = commonSuffixLength(\n removedContent.slice(commonPrefix),\n addedContent.slice(commonPrefix),\n );\n\n const removedChangedEnd = removedContent.length - commonSuffix;\n const addedChangedEnd = addedContent.length - commonSuffix;\n return {\n removedLine: `-${highlightChangedSpan(removedContent, commonPrefix, removedChangedEnd, inverse)}`,\n addedLine: `+${highlightChangedSpan(addedContent, commonPrefix, addedChangedEnd, inverse)}`,\n };\n}\n\nfunction highlightChangedSpan(\n text: string,\n start: number,\n end: number,\n inverse: (value: string) => string,\n): string {\n if (end <= start) return text;\n const changed = text.slice(start, end);\n const leadingWhitespace = changed.match(/^\\s*/)?.[0] ?? '';\n const highlightStart = start + leadingWhitespace.length;\n if (highlightStart >= end) return text;\n return `${text.slice(0, highlightStart)}${inverse(text.slice(highlightStart, end))}${text.slice(end)}`;\n}\n\nfunction parseHunkHeader(line: string): HunkHeader | null {\n const match = line.match(/^@@ -(\\d+)(?:,\\d+)? \\+(\\d+)(?:,\\d+)? @@/);\n if (!match) return null;\n return {\n oldStart: Number(match[1]),\n newStart: Number(match[2]),\n };\n}\n\nfunction getLineNumberWidth(lines: string[]): number {\n let oldLine = 0;\n let newLine = 0;\n let maxLine = 0;\n for (const line of lines) {\n const hunk = parseHunkHeader(line);\n if (hunk) {\n oldLine = hunk.oldStart;\n newLine = hunk.newStart;\n maxLine = Math.max(maxLine, oldLine, newLine);\n continue;\n }\n if (isAddedDiffLine(line)) {\n maxLine = Math.max(maxLine, newLine);\n newLine += 1;\n } else if (isRemovedDiffLine(line)) {\n maxLine = Math.max(maxLine, oldLine);\n oldLine += 1;\n } else if (!isDiffHeaderLine(line)) {\n maxLine = Math.max(maxLine, newLine);\n oldLine += 1;\n newLine += 1;\n }\n }\n return Math.max(1, String(maxLine).length);\n}\n\nfunction normalizeDiffPath(path: string | undefined): string | undefined {\n if (!path) return undefined;\n const [first] = path.split(/\\s+/);\n if (!first) return undefined;\n if (first === '/dev/null') return first;\n return first.replace(/^[ab]\\//, '');\n}\n\nfunction changeVerb(file: Pick<TuiFileChange, 'kind'>): string {\n if (file.kind === 'add') return 'Added';\n if (file.kind === 'delete') return 'Deleted';\n return 'Edited';\n}\n\nfunction lineCountSummary(change: Pick<TuiFileChange | TuiPatchSummary, 'added' | 'removed'>): string {\n return `(+${change.added} -${change.removed})`;\n}\n\nfunction commonPrefixLength(a: string, b: string): number {\n const max = Math.min(a.length, b.length);\n let index = 0;\n while (index < max && a[index] === b[index]) {\n index += 1;\n }\n return index;\n}\n\nfunction commonSuffixLength(a: string, b: string): number {\n const max = Math.min(a.length, b.length);\n let index = 0;\n while (index < max && a[a.length - index - 1] === b[b.length - index - 1]) {\n index += 1;\n }\n return index;\n}\n\nfunction hexToRgb(hex: string): string {\n const h = hex.replace('#', '');\n const r = Number.parseInt(h.slice(0, 2), 16);\n const g = Number.parseInt(h.slice(2, 4), 16);\n const b = Number.parseInt(h.slice(4, 6), 16);\n return `${r};${g};${b}`;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tui-tool-result.js","names":[],"sources":["../../../src/tui/tui-tool-result.ts"],"sourcesContent":["export interface TuiToolContentBlock {\n type: string;\n text?: string;\n data?: string;\n mimeType?: string;\n}\n\nexport interface TuiToolResultEnvelope {\n content: TuiToolContentBlock[];\n details?: unknown;\n}\n\nexport interface TuiParsedToolResult {\n envelope?: TuiToolResultEnvelope;\n text: string;\n wasJsonEnvelope: boolean;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nfunction normalizeContentBlock(value: unknown): TuiToolContentBlock | null {\n if (!isRecord(value) || typeof value.type !== 'string') return null;\n return {\n type: value.type,\n ...(typeof value.text === 'string' ? { text: value.text } : {}),\n ...(typeof value.data === 'string' ? { data: value.data } : {}),\n ...(typeof value.mimeType === 'string' ? { mimeType: value.mimeType } : {}),\n };\n}\n\nexport function parseTuiToolResult(raw: unknown): TuiParsedToolResult {\n if (raw === undefined || raw === null) {\n return { text: '', wasJsonEnvelope: false };\n }\n\n if (isRecord(raw) && Array.isArray(raw.content)) {\n const content = raw.content\n .map((item) => normalizeContentBlock(item))\n .filter((item): item is TuiToolContentBlock => item !== null);\n return {\n envelope: { content, details: raw.details },\n text: extractTextFromToolContent(content),\n wasJsonEnvelope: true,\n };\n }\n\n if (typeof raw !== 'string') {\n const text = safeStringify(raw);\n return { text, wasJsonEnvelope: false };\n }\n\n const trimmed = raw.trim();\n if (!trimmed.startsWith('{')) {\n return { text: raw, wasJsonEnvelope: false };\n }\n\n try {\n const parsed = JSON.parse(raw) as unknown;\n if (isRecord(parsed) && Array.isArray(parsed.content)) {\n const content = parsed.content\n .map((item) => normalizeContentBlock(item))\n .filter((item): item is TuiToolContentBlock => item !== null);\n return {\n envelope: { content, details: parsed.details },\n text: extractTextFromToolContent(content),\n wasJsonEnvelope: true,\n };\n }\n } catch {\n // Keep raw text fallback.\n }\n\n return { text: raw, wasJsonEnvelope: false };\n}\n\nexport function extractTextFromToolContent(content: TuiToolContentBlock[]): string {\n return content\n .map((block) => {\n if (block.type === 'text') return block.text ?? '';\n if (block.type === 'image') {\n const label = block.mimeType ? `image:${block.mimeType}` : 'image';\n return `[${label}]`;\n }\n return block.text ?? '';\n })\n .filter(Boolean)\n .join('\\n');\n}\n\nfunction safeStringify(value: unknown): string {\n try {\n return JSON.stringify(value, null, 2) ?? String(value);\n } catch {\n return String(value);\n }\n}\n"],"mappings":";AAkBA,SAAS,SAAS,OAAkD;AAClE,QAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,MAAM;;AAG7E,SAAS,sBAAsB,OAA4C;AACzE,KAAI,CAAC,SAAS,MAAM,IAAI,OAAO,MAAM,SAAS,SAAU,QAAO;AAC/D,QAAO;EACL,MAAM,MAAM;EACZ,GAAI,OAAO,MAAM,SAAS,WAAW,EAAE,MAAM,MAAM,MAAM,GAAG,EAAE;EAC9D,GAAI,OAAO,MAAM,SAAS,WAAW,EAAE,MAAM,MAAM,MAAM,GAAG,EAAE;EAC9D,GAAI,OAAO,MAAM,aAAa,WAAW,EAAE,UAAU,MAAM,UAAU,GAAG,EAAE;EAC3E;;AAGH,SAAgB,mBAAmB,KAAmC;AACpE,KAAI,QAAQ,KAAA,KAAa,QAAQ,KAC/B,QAAO;EAAE,MAAM;EAAI,iBAAiB;EAAO;AAG7C,KAAI,SAAS,IAAI,IAAI,MAAM,QAAQ,IAAI,QAAQ,EAAE;EAC/C,MAAM,UAAU,IAAI,QACjB,KAAK,SAAS,sBAAsB,KAAK,CAAC,CAC1C,QAAQ,SAAsC,SAAS,KAAK;AAC/D,SAAO;GACL,UAAU;IAAE;IAAS,SAAS,IAAI;IAAS;GAC3C,MAAM,2BAA2B,QAAQ;GACzC,iBAAiB;GAClB;;AAGH,KAAI,OAAO,QAAQ,SAEjB,QAAO;EAAE,MADI,cAAc,IACd;EAAE,iBAAiB;EAAO;AAIzC,KAAI,CADY,IAAI,MACR,CAAC,WAAW,IAAI,CAC1B,QAAO;EAAE,MAAM;EAAK,iBAAiB;EAAO;AAG9C,KAAI;EACF,MAAM,SAAS,KAAK,MAAM,IAAI;AAC9B,MAAI,SAAS,OAAO,IAAI,MAAM,QAAQ,OAAO,QAAQ,EAAE;GACrD,MAAM,UAAU,OAAO,QACpB,KAAK,SAAS,sBAAsB,KAAK,CAAC,CAC1C,QAAQ,SAAsC,SAAS,KAAK;AAC/D,UAAO;IACL,UAAU;KAAE;KAAS,SAAS,OAAO;KAAS;IAC9C,MAAM,2BAA2B,QAAQ;IACzC,iBAAiB;IAClB;;SAEG;AAIR,QAAO;EAAE,MAAM;EAAK,iBAAiB;EAAO;;AAG9C,SAAgB,2BAA2B,SAAwC;AACjF,QAAO,QACJ,KAAK,UAAU;AACd,MAAI,MAAM,SAAS,OAAQ,QAAO,MAAM,QAAQ;AAChD,MAAI,MAAM,SAAS,QAEjB,QAAO,IADO,MAAM,WAAW,SAAS,MAAM,aAAa,QAC1C;AAEnB,SAAO,MAAM,QAAQ;GACrB,CACD,OAAO,QAAQ,CACf,KAAK,KAAK;;AAGf,SAAS,cAAc,OAAwB;AAC7C,KAAI;AACF,SAAO,KAAK,UAAU,OAAO,MAAM,EAAE,IAAI,OAAO,MAAM;SAChD;AACN,SAAO,OAAO,MAAM"}
|