@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":"extract.js","names":[],"sources":["../../../src/document-understanding/extract.ts"],"sourcesContent":["import { extname } from 'node:path';\n\nexport type DocumentExtractionResult =\n | { ok: true; text: string; kind: 'plain' | 'pdf' }\n | { ok: false; reason: string };\n\nconst MAX_EXTRACTED_CHARS = 60_000;\n\nfunction truncate(text: string): string {\n return text.length > MAX_EXTRACTED_CHARS\n ? `${text.slice(0, MAX_EXTRACTED_CHARS)}\\n\\n[document extraction truncated ${text.length - MAX_EXTRACTED_CHARS} chars]`\n : text;\n}\n\nfunction decodePdfEscapedString(input: string): string {\n return input\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\r/g, '\\n')\n .replace(/\\\\t/g, '\\t')\n .replace(/\\\\\\(/g, '(')\n .replace(/\\\\\\)/g, ')')\n .replace(/\\\\\\\\/g, '\\\\');\n}\n\nfunction extractPdfLiteralStrings(raw: string): string[] {\n const out: string[] = [];\n const re = /\\((?:\\\\.|[^\\\\()])*\\)\\s*T[Jj]/g;\n for (const match of raw.matchAll(re)) {\n const token = match[0];\n const body = token.slice(1, token.lastIndexOf(')'));\n const text = decodePdfEscapedString(body).trim();\n if (text.length >= 2) out.push(text);\n }\n return out;\n}\n\nfunction extractPdfHexStrings(raw: string): string[] {\n const out: string[] = [];\n const re = /<([0-9a-fA-F\\s]{6,})>\\s*T[Jj]/g;\n for (const match of raw.matchAll(re)) {\n const hex = (match[1] ?? '').replace(/\\s+/g, '');\n if (hex.length < 6 || hex.length % 2 !== 0) continue;\n const bytes: number[] = [];\n for (let i = 0; i < hex.length; i += 2) bytes.push(Number.parseInt(hex.slice(i, i + 2), 16));\n const buf = Buffer.from(bytes);\n const utf16 = buf.length >= 2 && ((buf[0] === 0xfe && buf[1] === 0xff) || (buf[0] === 0xff && buf[1] === 0xfe));\n const text = (utf16 ? buf.toString('utf16le') : buf.toString('utf8')).replace(/[\\u0000-\\u001f]+/g, ' ').trim();\n if (text.length >= 2) out.push(text);\n }\n return out;\n}\n\nfunction extractPdfText(buffer: Buffer): DocumentExtractionResult {\n const raw = buffer.toString('latin1');\n const parts = [...extractPdfLiteralStrings(raw), ...extractPdfHexStrings(raw)]\n .map((line) => line.replace(/\\s+/g, ' ').trim())\n .filter(Boolean);\n const text = Array.from(new Set(parts)).join('\\n');\n if (!text.trim()) {\n return { ok: false, reason: 'PDF text extraction found no text; scanned or compressed PDFs require a dedicated extractor.' };\n }\n return { ok: true, kind: 'pdf', text: truncate(text) };\n}\n\nexport function extractDocumentText(params: {\n buffer: Buffer;\n fileName: string;\n mimeType?: string;\n}): DocumentExtractionResult {\n const ext = extname(params.fileName).toLowerCase();\n const mime = params.mimeType?.toLowerCase() ?? '';\n if (mime === 'application/pdf' || ext === '.pdf') return extractPdfText(params.buffer);\n if (mime.startsWith('text/')) return { ok: true, kind: 'plain', text: truncate(params.buffer.toString('utf8')) };\n return { ok: false, reason: `No document extractor registered for ${params.mimeType || ext || 'unknown type'}.` };\n}\n"],"mappings":";;AAMA,MAAM,sBAAsB;AAE5B,SAAS,SAAS,MAAsB;AACtC,QAAO,KAAK,SAAS,sBACjB,GAAG,KAAK,MAAM,GAAG,oBAAoB,CAAC,qCAAqC,KAAK,SAAS,oBAAoB,WAC7G;;AAGN,SAAS,uBAAuB,OAAuB;AACrD,QAAO,MACJ,QAAQ,QAAQ,KAAK,CACrB,QAAQ,QAAQ,KAAK,CACrB,QAAQ,QAAQ,IAAK,CACrB,QAAQ,SAAS,IAAI,CACrB,QAAQ,SAAS,IAAI,CACrB,QAAQ,SAAS,KAAK;;AAG3B,SAAS,yBAAyB,KAAuB;CACvD,MAAM,MAAgB,EAAE;AAExB,MAAK,MAAM,SAAS,IAAI,SAAS,gCAAG,EAAE;EACpC,MAAM,QAAQ,MAAM;EAEpB,MAAM,OAAO,uBADA,MAAM,MAAM,GAAG,MAAM,YAAY,IAAI,CACV,CAAC,CAAC,MAAM;AAChD,MAAI,KAAK,UAAU,EAAG,KAAI,KAAK,KAAK;;AAEtC,QAAO;;AAGT,SAAS,qBAAqB,KAAuB;CACnD,MAAM,MAAgB,EAAE;AAExB,MAAK,MAAM,SAAS,IAAI,SAAS,iCAAG,EAAE;EACpC,MAAM,OAAO,MAAM,MAAM,IAAI,QAAQ,QAAQ,GAAG;AAChD,MAAI,IAAI,SAAS,KAAK,IAAI,SAAS,MAAM,EAAG;EAC5C,MAAM,QAAkB,EAAE;AAC1B,OAAK,IAAI,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK,EAAG,OAAM,KAAK,OAAO,SAAS,IAAI,MAAM,GAAG,IAAI,EAAE,EAAE,GAAG,CAAC;EAC5F,MAAM,MAAM,OAAO,KAAK,MAAM;EAE9B,MAAM,QADQ,IAAI,UAAU,MAAO,IAAI,OAAO,OAAQ,IAAI,OAAO,OAAU,IAAI,OAAO,OAAQ,IAAI,OAAO,OACnF,IAAI,SAAS,UAAU,GAAG,IAAI,SAAS,OAAO,EAAE,QAAQ,qBAAqB,IAAI,CAAC,MAAM;AAC9G,MAAI,KAAK,UAAU,EAAG,KAAI,KAAK,KAAK;;AAEtC,QAAO;;AAGT,SAAS,eAAe,QAA0C;CAChE,MAAM,MAAM,OAAO,SAAS,SAAS;CACrC,MAAM,QAAQ,CAAC,GAAG,yBAAyB,IAAI,EAAE,GAAG,qBAAqB,IAAI,CAAC,CAC3E,KAAK,SAAS,KAAK,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,CAC/C,OAAO,QAAQ;CAClB,MAAM,OAAO,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,KAAK,KAAK;AAClD,KAAI,CAAC,KAAK,MAAM,CACd,QAAO;EAAE,IAAI;EAAO,QAAQ;EAAgG;AAE9H,QAAO;EAAE,IAAI;EAAM,MAAM;EAAO,MAAM,SAAS,KAAK;EAAE;;AAGxD,SAAgB,oBAAoB,QAIP;CAC3B,MAAM,MAAM,QAAQ,OAAO,SAAS,CAAC,aAAa;CAClD,MAAM,OAAO,OAAO,UAAU,aAAa,IAAI;AAC/C,KAAI,SAAS,qBAAqB,QAAQ,OAAQ,QAAO,eAAe,OAAO,OAAO;AACtF,KAAI,KAAK,WAAW,QAAQ,CAAE,QAAO;EAAE,IAAI;EAAM,MAAM;EAAS,MAAM,SAAS,OAAO,OAAO,SAAS,OAAO,CAAC;EAAE;AAChH,QAAO;EAAE,IAAI;EAAO,QAAQ,wCAAwC,OAAO,YAAY,OAAO,eAAe;EAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/errors/index.ts"],"sourcesContent":["/**\n * Error classification system for xopc\n * \n * Provides structured error types for better handling and user feedback.\n */\n\nexport type ErrorCategory = 'user' | 'config' | 'system' | 'network' | 'provider';\n\n// Symbol markers for reliable type identification\nconst XOPC_ERROR_MARKER = Symbol.for('xopc.error');\nconst USER_ERROR_MARKER = Symbol.for('xopc.error.user');\nconst CONFIG_ERROR_MARKER = Symbol.for('xopc.error.config');\nconst SYSTEM_ERROR_MARKER = Symbol.for('xopc.error.system');\nconst NETWORK_ERROR_MARKER = Symbol.for('xopc.error.network');\nconst PROVIDER_ERROR_MARKER = Symbol.for('xopc.error.provider');\n\nexport interface ErrorDetails {\n code: string;\n category: ErrorCategory;\n message: string;\n suggestion?: string;\n retryable?: boolean;\n}\n\n/**\n * Base error class for all xopc errors\n */\nexport class XopcError extends Error {\n public readonly [XOPC_ERROR_MARKER] = true;\n public readonly code: string;\n public readonly category: ErrorCategory;\n public readonly retryable: boolean;\n public readonly suggestion?: string;\n public readonly cause?: Error;\n\n constructor(details: ErrorDetails, cause?: Error) {\n super(details.message);\n this.name = 'XopcError';\n this.code = details.code;\n this.category = details.category;\n this.retryable = details.retryable ?? false;\n this.suggestion = details.suggestion;\n this.cause = cause;\n \n // Fix prototype chain\n Object.setPrototypeOf(this, XopcError.prototype);\n }\n\n /**\n * Format error for user display\n */\n toUserMessage(): string {\n let msg = `❌ ${this.message}`;\n if (this.suggestion) {\n msg += `\\n💡 ${this.suggestion}`;\n }\n return msg;\n }\n\n /**\n * Format error for logging\n */\n toLogObject(): Record<string, unknown> {\n return {\n code: this.code,\n category: this.category,\n message: this.message,\n retryable: this.retryable,\n cause: this.cause?.message,\n stack: this.stack,\n };\n }\n}\n\n/**\n * User input/operation errors - caused by user actions\n */\nexport class UserError extends XopcError {\n public readonly [USER_ERROR_MARKER] = true;\n\n constructor(code: string, message: string, suggestion?: string, cause?: Error) {\n super({\n code: `USER_${code}`,\n category: 'user',\n message,\n suggestion,\n retryable: false,\n }, cause);\n this.name = 'UserError';\n }\n\n static invalidCommand(command: string): UserError {\n return new UserError(\n 'INVALID_COMMAND',\n `Unknown command: \"${command}\"`,\n 'Use /help to see available commands'\n );\n }\n\n static invalidInput(message: string, suggestion?: string): UserError {\n return new UserError('INVALID_INPUT', message, suggestion);\n }\n\n static unauthorized(message = 'You are not authorized to perform this action'): UserError {\n return new UserError('UNAUTHORIZED', message, 'Contact your administrator');\n }\n}\n\n/**\n * Configuration errors - caused by invalid/missing config\n */\nexport class ConfigError extends XopcError {\n public readonly [CONFIG_ERROR_MARKER] = true;\n\n constructor(code: string, message: string, suggestion?: string, cause?: Error) {\n super({\n code: `CONFIG_${code}`,\n category: 'config',\n message,\n suggestion,\n retryable: false,\n }, cause);\n this.name = 'ConfigError';\n }\n\n static missingApiKey(provider: string): ConfigError {\n return new ConfigError(\n 'MISSING_API_KEY',\n `API key not configured for provider: ${provider}`,\n `Set ${provider.toUpperCase().replace(/-/g, '_')}_API_KEY environment variable or run 'xopc configure'`\n );\n }\n\n static invalidConfig(path: string, reason: string): ConfigError {\n return new ConfigError(\n 'INVALID_CONFIG',\n `Invalid configuration at ${path}: ${reason}`,\n 'Check your config.json or run xopc configure'\n );\n }\n\n static missingConfig(key: string): ConfigError {\n return new ConfigError(\n 'MISSING_CONFIG',\n `Missing required configuration: ${key}`,\n 'Run xopc configure to set up your configuration'\n );\n }\n}\n\n/**\n * System errors - internal/system-level failures\n */\nexport class SystemError extends XopcError {\n public readonly [SYSTEM_ERROR_MARKER] = true;\n\n constructor(code: string, message: string, retryable = false, suggestion?: string, cause?: Error) {\n super({\n code: `SYSTEM_${code}`,\n category: 'system',\n message,\n suggestion,\n retryable,\n }, cause);\n this.name = 'SystemError';\n }\n\n static internal(message: string, cause?: Error): SystemError {\n return new SystemError('INTERNAL', message, false, 'Please report this issue', cause);\n }\n\n static filesystem(path: string, operation: string, cause?: Error): SystemError {\n return new SystemError(\n 'FILESYSTEM',\n `Failed to ${operation} at ${path}`,\n true,\n 'Check file permissions and disk space',\n cause\n );\n }\n\n static outOfMemory(): SystemError {\n return new SystemError(\n 'OUT_OF_MEMORY',\n 'System ran out of memory',\n true,\n 'Try reducing context size or restarting'\n );\n }\n}\n\n/**\n * Network errors - connectivity/timeout issues\n */\nexport class NetworkError extends XopcError {\n public readonly [NETWORK_ERROR_MARKER] = true;\n\n constructor(code: string, message: string, retryable = true, suggestion?: string, cause?: Error) {\n super({\n code: `NET_${code}`,\n category: 'network',\n message,\n suggestion,\n retryable,\n }, cause);\n this.name = 'NetworkError';\n }\n\n static timeout(url: string, timeoutMs: number, cause?: Error): NetworkError {\n return new NetworkError(\n 'TIMEOUT',\n `Request to ${url} timed out after ${timeoutMs}ms`,\n true,\n 'Check your internet connection or try again later',\n cause\n );\n }\n\n static connectionFailed(url: string, cause?: Error): NetworkError {\n return new NetworkError(\n 'CONNECTION_FAILED',\n `Failed to connect to ${url}`,\n true,\n 'Check your internet connection',\n cause\n );\n }\n}\n\n/**\n * LLM Provider errors - model/API failures\n */\nexport class ProviderError extends XopcError {\n public readonly [PROVIDER_ERROR_MARKER] = true;\n public readonly provider: string;\n public readonly model?: string;\n public readonly statusCode?: number;\n\n constructor(\n provider: string,\n code: string,\n message: string,\n retryable = false,\n suggestion?: string,\n cause?: Error,\n statusCode?: number,\n model?: string\n ) {\n super({\n code: `PROVIDER_${provider.toUpperCase().replace(/-/g, '_')}_${code}`,\n category: 'provider',\n message: `[${provider}] ${message}`,\n suggestion,\n retryable,\n }, cause);\n this.name = 'ProviderError';\n this.provider = provider;\n this.model = model;\n this.statusCode = statusCode;\n }\n\n static rateLimit(provider: string, retryAfter?: number, model?: string): ProviderError {\n const suggestion = retryAfter \n ? `Wait ${retryAfter} seconds before retrying`\n : 'Retry after a short delay';\n \n return new ProviderError(\n provider,\n 'RATE_LIMIT',\n 'Rate limit exceeded',\n true,\n suggestion,\n undefined,\n 429,\n model\n );\n }\n\n static authFailed(provider: string, cause?: Error): ProviderError {\n return new ProviderError(\n provider,\n 'AUTH_FAILED',\n 'Authentication failed - check your API key',\n false,\n `Verify your ${provider} API key is correct`,\n cause,\n 401\n );\n }\n\n static modelNotFound(provider: string, model: string): ProviderError {\n return new ProviderError(\n provider,\n 'MODEL_NOT_FOUND',\n `Model \"${model}\" not found`,\n false,\n 'Check available models with /models command'\n );\n }\n\n static overloaded(provider: string, model?: string): ProviderError {\n return new ProviderError(\n provider,\n 'OVERLOADED',\n 'Provider is currently overloaded',\n true,\n 'Retry after a short delay or try a different model',\n undefined,\n 503,\n model\n );\n }\n\n static insufficientFunds(provider: string): ProviderError {\n return new ProviderError(\n provider,\n 'INSUFFICIENT_FUNDS',\n 'Insufficient funds or quota exceeded',\n false,\n 'Check your account balance and billing settings'\n );\n }\n}\n\n/**\n * Error handling utilities\n */\nexport function isXopcError(error: unknown): error is XopcError {\n return error instanceof XopcError || \n (error != null && typeof error === 'object' && XOPC_ERROR_MARKER in error);\n}\n\nexport function isUserError(error: unknown): error is UserError {\n return error instanceof UserError || \n (error != null && typeof error === 'object' && USER_ERROR_MARKER in error);\n}\n\nexport function isConfigError(error: unknown): error is ConfigError {\n return error instanceof ConfigError || \n (error != null && typeof error === 'object' && CONFIG_ERROR_MARKER in error);\n}\n\nexport function isProviderError(error: unknown): error is ProviderError {\n return error instanceof ProviderError || \n (error != null && typeof error === 'object' && PROVIDER_ERROR_MARKER in error);\n}\n\nexport function isRetryable(error: unknown): boolean {\n if (isXopcError(error)) {\n return error.retryable;\n }\n // Default: network errors are retryable\n if (error instanceof Error) {\n const msg = error.message.toLowerCase();\n return msg.includes('timeout') || \n msg.includes('econnreset') || \n msg.includes('enotfound') ||\n msg.includes('econnrefused');\n }\n return false;\n}\n\n/**\n * Wrap unknown error into XopcError\n */\nexport function wrapError(error: unknown, context?: string): XopcError {\n if (isXopcError(error)) {\n return error;\n }\n\n const message = error instanceof Error ? error.message : String(error);\n const prefix = context ? `${context}: ` : '';\n \n // Try to classify common errors\n const lowerMsg = message.toLowerCase();\n \n if (lowerMsg.includes('api key') || lowerMsg.includes('unauthorized') || lowerMsg.includes('401')) {\n return new ProviderError('unknown', 'AUTH_FAILED', prefix + message, false, 'Check your API key', error instanceof Error ? error : undefined);\n }\n \n if (lowerMsg.includes('timeout') || lowerMsg.includes('etimedout')) {\n return NetworkError.timeout('unknown', 30000, error instanceof Error ? error : undefined);\n }\n \n if (lowerMsg.includes('rate limit') || lowerMsg.includes('429')) {\n return ProviderError.rateLimit('unknown');\n }\n\n return SystemError.internal(prefix + message, error instanceof Error ? error : undefined);\n}\n\n/**\n * Format error for user display\n */\nexport function formatErrorForUser(error: unknown): string {\n if (isXopcError(error)) {\n return error.toUserMessage();\n }\n \n if (error instanceof Error) {\n return `❌ ${error.message}`;\n }\n \n return `❌ An unexpected error occurred: ${String(error)}`;\n}\n\n/**\n * Format error for logging\n */\nexport function formatErrorForLog(error: unknown): Record<string, unknown> {\n if (isXopcError(error)) {\n return error.toLogObject();\n }\n \n if (error instanceof Error) {\n return {\n name: error.name,\n message: error.message,\n stack: error.stack,\n };\n }\n \n return { error: String(error) };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-context.js","names":["root"],"sources":["../../../src/extensions/activation-context.ts"],"sourcesContent":["/**\n * Build ActivationContext from app config + optional overrides.\n */\n\nimport type { Config } from '../config/config-surface.js';\nimport { mergeSttConfigFromAppConfig } from '../channels/attachments/voice-stt-webchat.js';\nimport { collectSttProviderConfigEntries } from '../voice/stt/config-slice.js';\nimport { isSttProviderConfigured } from '../voice/stt/list-providers.js';\nimport { collectTtsProviderConfigEntries } from '../voice/tts/config-slice.js';\nimport { isProviderConfigured } from '../voice/tts/factory.js';\nimport { mergeTtsConfigFromAppConfig } from '../voice/tts/merge-config.js';\nimport { isProviderConfiguredSync } from '../providers/index.js';\nimport { PROVIDER_ENV_MAP } from '../providers/env-keys.js';\nimport type { ActivationContext } from './activation-planner.js';\n\nfunction isRecord(x: unknown): x is Record<string, unknown> {\n return typeof x === 'object' && x !== null && !Array.isArray(x);\n}\n\nfunction telegramConfigured(ch: Record<string, unknown> | undefined): boolean {\n if (!ch) return false;\n if (ch.enabled === true) return true;\n const accounts = ch.accounts;\n if (isRecord(accounts)) {\n for (const acc of Object.values(accounts)) {\n if (!isRecord(acc)) continue;\n if (acc.enabled === false) continue;\n if (typeof acc.botToken === 'string' && acc.botToken.trim().length > 0) return true;\n }\n }\n return false;\n}\n\nfunction weixinConfigured(ch: Record<string, unknown> | undefined): boolean {\n if (!ch) return false;\n if (ch.enabled === true) return true;\n const accounts = ch.accounts;\n if (isRecord(accounts) && Object.keys(accounts).length > 0) {\n for (const acc of Object.values(accounts)) {\n if (isRecord(acc) && acc.enabled === false) continue;\n return true;\n }\n }\n return false;\n}\n\n/**\n * Derive configured channel plugin ids from `channels.*` config.\n */\nexport function collectConfiguredChannelIds(config: unknown): string[] | undefined {\n const root = config as Record<string, unknown> | undefined;\n const channels = root?.channels;\n if (!isRecord(channels)) return undefined;\n\n const ids: string[] = [];\n\n if (telegramConfigured(channels.telegram as Record<string, unknown> | undefined)) {\n ids.push('telegram');\n }\n if (weixinConfigured(channels.weixin as Record<string, unknown> | undefined)) {\n ids.push('weixin');\n }\n\n for (const [key, value] of Object.entries(channels)) {\n if (key === 'telegram' || key === 'weixin') continue;\n if (isRecord(value) && value.enabled === true && !ids.includes(key)) {\n ids.push(key);\n }\n }\n\n return ids.length ? ids : undefined;\n}\n\nfunction collectConfiguredLlmProviderIds(config: unknown): string[] {\n const root = config as Record<string, unknown> | undefined;\n const candidateIds = new Set<string>(Object.keys(PROVIDER_ENV_MAP));\n const providers = root?.providers;\n if (isRecord(providers)) {\n for (const key of Object.keys(providers)) {\n candidateIds.add(key);\n }\n }\n const ids: string[] = [];\n for (const key of candidateIds) {\n if (isProviderConfiguredSync(key)) {\n ids.push(key);\n }\n }\n return ids;\n}\n\nfunction collectConfiguredSpeechProviderIds(config: unknown): string[] {\n const root = config as Record<string, unknown> | undefined;\n const messages = root?.messages;\n if (!isRecord(messages) || !isRecord(messages.tts)) {\n return [];\n }\n\n const ttsConfig = mergeTtsConfigFromAppConfig(messages.tts);\n const ids = new Set<string>();\n const primary = ttsConfig.provider?.trim();\n if (primary && isProviderConfigured(primary, ttsConfig)) {\n ids.add(primary);\n }\n for (const providerId of Object.keys(collectTtsProviderConfigEntries(ttsConfig))) {\n if (isProviderConfigured(providerId, ttsConfig)) {\n ids.add(providerId);\n }\n }\n return [...ids];\n}\n\nfunction collectConfiguredMediaUnderstandingProviderIds(config: unknown): string[] {\n const root = config as Record<string, unknown> | undefined;\n const tools = root?.tools;\n if (!isRecord(tools) || !isRecord(tools.media)) {\n return [];\n }\n\n const sttConfig = mergeSttConfigFromAppConfig(\n tools.media.audio as Parameters<typeof mergeSttConfigFromAppConfig>[0],\n tools.media as Parameters<typeof mergeSttConfigFromAppConfig>[1],\n );\n const ids = new Set<string>();\n const primary = sttConfig.provider?.trim();\n if (primary && isSttProviderConfigured(primary, sttConfig)) {\n ids.add(primary);\n }\n for (const providerId of Object.keys(collectSttProviderConfigEntries(sttConfig))) {\n if (isSttProviderConfigured(providerId, sttConfig)) {\n ids.add(providerId);\n }\n }\n return [...ids];\n}\n\n/**\n * Derive configured provider ids for extension activation (LLM + speech + STT).\n */\nexport function collectConfiguredProviderIds(config: unknown): string[] | undefined {\n const ids = new Set<string>([\n ...collectConfiguredLlmProviderIds(config),\n ...collectConfiguredSpeechProviderIds(config),\n ...collectConfiguredMediaUnderstandingProviderIds(config),\n ]);\n return ids.size > 0 ? [...ids] : undefined;\n}\n\nfunction defaultModelId(config: unknown): string | undefined {\n const root = config as Record<string, unknown> | undefined;\n const agents = root?.agents;\n if (!isRecord(agents)) return undefined;\n const list = agents.list;\n if (!Array.isArray(list)) return undefined;\n const defaultId = typeof agents.default === 'string' ? agents.default : undefined;\n const entry =\n list.find((candidate) => isRecord(candidate) && candidate.id === defaultId) ??\n list.find((candidate) => isRecord(candidate) && candidate.enabled !== false);\n if (!isRecord(entry)) return undefined;\n const models = entry.models;\n if (!isRecord(models)) return undefined;\n const defaultRole = typeof models.defaultRole === 'string' ? models.defaultRole : undefined;\n const roles = models.roles;\n if (!defaultRole || !isRecord(roles)) return undefined;\n const role = roles[defaultRole];\n if (isRecord(role)) {\n const model = role.model;\n if (typeof model === 'string' && model.trim().length > 0) return model;\n }\n return undefined;\n}\n\n/**\n * Merge partial activation context over values inferred from loaded app config.\n */\nexport function mergeActivationContext(\n appConfig: Config | Record<string, unknown> | undefined,\n partial?: Partial<ActivationContext>,\n): ActivationContext {\n const ext = appConfig && isRecord((appConfig as Record<string, unknown>).extensions)\n ? ((appConfig as Record<string, unknown>).extensions as Record<string, unknown>)\n : undefined;\n\n const base: ActivationContext = {\n enabledIds: Array.isArray(ext?.enabled)\n ? ext!.enabled.filter((x): x is string => typeof x === 'string')\n : undefined,\n disabledIds: Array.isArray(ext?.disabled)\n ? ext!.disabled.filter((x): x is string => typeof x === 'string')\n : undefined,\n requestedModelId: defaultModelId(appConfig),\n configuredProviderIds: collectConfiguredProviderIds(appConfig),\n configuredChannelIds: collectConfiguredChannelIds(appConfig),\n env: process.env,\n };\n\n return {\n env: partial?.env ?? base.env,\n enabledIds: partial?.enabledIds !== undefined ? partial.enabledIds : base.enabledIds,\n disabledIds: partial?.disabledIds !== undefined ? partial.disabledIds : base.disabledIds,\n requestedModelId:\n partial?.requestedModelId !== undefined ? partial.requestedModelId : base.requestedModelId,\n configuredProviderIds:\n partial?.configuredProviderIds !== undefined\n ? partial.configuredProviderIds\n : base.configuredProviderIds,\n configuredChannelIds:\n partial?.configuredChannelIds !== undefined\n ? partial.configuredChannelIds\n : base.configuredChannelIds,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"activation-planner.js","names":[],"sources":["../../../src/extensions/activation-planner.ts"],"sourcesContent":["/**\n * Decides which extensions to activate from manifest metadata + config + env.\n */\n\nimport type { ManifestRegistry, ManifestRegistryEntry } from './manifest-registry.js';\n\nexport type ActivationLoadPhase = 'startup' | 'deferred';\n\nexport type ActivationReason =\n | 'explicit_enabled'\n | 'explicit_disabled'\n | 'enabled_by_default'\n | 'model_match'\n | 'env_var_detected'\n | 'auto_enable_provider'\n | 'activation_trigger'\n | 'not_activated';\n\nexport interface ActivationDecision {\n extensionId: string;\n activated: boolean;\n reason: ActivationReason;\n trigger?: string;\n}\n\nexport interface ActivationContext {\n enabledIds?: string[];\n disabledIds?: string[];\n requestedModelId?: string;\n configuredProviderIds?: string[];\n configuredChannelIds?: string[];\n env?: NodeJS.ProcessEnv;\n}\n\nexport class ActivationPlanner {\n constructor(private registry: ManifestRegistry) {}\n\n plan(context: ActivationContext): ActivationDecision[] {\n const decisions: ActivationDecision[] = [];\n const decided = new Set<string>();\n\n if (context.enabledIds) {\n for (const id of context.enabledIds) {\n decisions.push({\n extensionId: id,\n activated: true,\n reason: 'explicit_enabled',\n });\n decided.add(id);\n }\n }\n\n if (context.disabledIds) {\n for (const id of context.disabledIds) {\n if (!decided.has(id)) {\n decisions.push({\n extensionId: id,\n activated: false,\n reason: 'explicit_disabled',\n });\n decided.add(id);\n }\n }\n }\n\n if (context.requestedModelId) {\n const entry = this.registry.findByModelId(context.requestedModelId);\n if (entry && !decided.has(entry.id)) {\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'model_match',\n trigger: context.requestedModelId,\n });\n decided.add(entry.id);\n }\n }\n\n if (context.env) {\n const envEntries = this.registry.detectAvailableByEnv(context.env);\n for (const entry of envEntries) {\n if (!decided.has(entry.id)) {\n const triggerVar = this.findTriggerEnvVar(entry, context.env);\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'env_var_detected',\n trigger: triggerVar,\n });\n decided.add(entry.id);\n }\n }\n }\n\n if (context.configuredProviderIds) {\n for (const entry of this.registry.getAllEntries()) {\n if (decided.has(entry.id)) continue;\n\n const autoEnableProviders = entry.manifest.autoEnableWhenConfiguredProviders;\n if (autoEnableProviders) {\n const matchedProvider = autoEnableProviders.find((pid) =>\n context.configuredProviderIds!.includes(pid),\n );\n if (matchedProvider) {\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'auto_enable_provider',\n trigger: matchedProvider,\n });\n decided.add(entry.id);\n }\n }\n }\n }\n\n for (const entry of this.registry.getAllEntries()) {\n if (decided.has(entry.id)) continue;\n\n const activation = entry.manifest.activation;\n if (!activation) continue;\n\n if (activation.onProviders && context.configuredProviderIds) {\n const matched = activation.onProviders.find((pid) =>\n context.configuredProviderIds!.includes(pid),\n );\n if (matched) {\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'activation_trigger',\n trigger: `provider:${matched}`,\n });\n decided.add(entry.id);\n continue;\n }\n }\n\n if (activation.onChannels && context.configuredChannelIds) {\n const matched = activation.onChannels.find((cid) =>\n context.configuredChannelIds!.includes(cid),\n );\n if (matched) {\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'activation_trigger',\n trigger: `channel:${matched}`,\n });\n decided.add(entry.id);\n continue;\n }\n }\n }\n\n for (const entry of this.registry.getAllEntries()) {\n if (decided.has(entry.id)) continue;\n if (entry.manifest.channelContributions && Object.keys(entry.manifest.channelContributions).length > 0) {\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'activation_trigger',\n trigger: 'channel-contribution',\n });\n decided.add(entry.id);\n }\n }\n\n for (const entry of this.registry.getAllEntries()) {\n if (decided.has(entry.id)) continue;\n\n if (entry.manifest.enabledByDefault) {\n decisions.push({\n extensionId: entry.id,\n activated: true,\n reason: 'enabled_by_default',\n });\n decided.add(entry.id);\n }\n }\n\n for (const entry of this.registry.getAllEntries()) {\n if (!decided.has(entry.id)) {\n decisions.push({\n extensionId: entry.id,\n activated: false,\n reason: 'not_activated',\n });\n }\n }\n\n return decisions;\n }\n\n getActivatedIds(context: ActivationContext): string[] {\n return this.plan(context)\n .filter((d) => d.activated)\n .map((d) => d.extensionId);\n }\n\n /**\n * Split activated ids by manifest `activation.onStartup`.\n * Extensions without the field remain on the startup path (backward compatible).\n */\n filterActivatedIdsByLoadPhase(\n activatedIds: readonly string[],\n phase: ActivationLoadPhase,\n ): string[] {\n return activatedIds.filter((extensionId) => {\n const entry = this.registry.getEntry(extensionId);\n const onStartup = entry?.manifest.activation?.onStartup;\n const eager = onStartup !== false;\n return phase === 'startup' ? eager : !eager;\n });\n }\n\n explainPlan(context: ActivationContext): string {\n const decisions = this.plan(context);\n const lines: string[] = ['Extension Activation Plan:'];\n\n for (const decision of decisions) {\n const status = decision.activated ? '✅' : '❌';\n const trigger = decision.trigger ? ` (trigger: ${decision.trigger})` : '';\n lines.push(` ${status} ${decision.extensionId}: ${decision.reason}${trigger}`);\n }\n\n return lines.join('\\n');\n }\n\n private findTriggerEnvVar(\n entry: ManifestRegistryEntry,\n env: NodeJS.ProcessEnv,\n ): string | undefined {\n const manifest = entry.manifest;\n\n if (manifest.providerAuthEnvVars) {\n for (const envVars of Object.values(manifest.providerAuthEnvVars)) {\n for (const envVar of envVars) {\n if (env[envVar]) return envVar;\n }\n }\n }\n\n if (manifest.channelEnvVars) {\n for (const envVars of Object.values(manifest.channelEnvVars)) {\n for (const envVar of envVars) {\n if (env[envVar]) return envVar;\n }\n }\n }\n\n return undefined;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","names":[],"sources":["../../../src/extensions/api.ts"],"sourcesContent":["/**\n * Extension API Implementation\n * \n * Complete extension API with strong typing, security, and provider support.\n */\n\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { Command } from 'commander';\nimport type {\n ExtensionApi,\n ExtensionLogger,\n ExtensionRuntime,\n ExtensionCliRegistration,\n GatewayMethodHandler,\n HttpRequestHandler,\n ExtensionCommand,\n ExtensionCommandContext,\n ExtensionCommandHandler,\n ExtensionReloadHandler,\n ExtensionService,\n FlagConfig,\n FlagValue,\n ShortcutConfig,\n HookHandlerMap,\n ExtensionHookEvent,\n ExtensionHookHandler,\n HookExecutionMode,\n TuiExtensionRegistrar,\n ExtensionSendUserMessageOptions,\n ExtensionUserMessageContent,\n ExtensionCustomMessage,\n ExtensionSendMessageOptions,\n} from './types/index.js';\nimport type { CommandContribution, ContractDeclaration } from './types/manifest.js';\nimport type { CommandDefinition } from '../chat-commands/types.js';\nimport { commandRegistry } from '../chat-commands/registry.js';\nimport type { ChannelPlugin } from '../channels/plugin-types.js';\nimport {\n HOOK_EXECUTION_MODES,\n} from './types/hooks.js';\nimport type { Config } from '../config/config-surface.js';\nimport type { Config as SchemaConfig } from '../config/schema.js';\nimport { resolve, isAbsolute } from 'path';\nimport { EventEmitter } from 'events';\nimport { createLogger } from '../utils/logger.js';\nimport { TypedEventBus } from './typed-event-bus.js';\nimport { ExtensionRegistryImpl } from './extension-registry-impl.js';\nimport { registerMarketplaceAdapter as _registerMarketplaceAdapter, unregisterMarketplaceAdapter as _unregisterMarketplaceAdapter } from '../agent/skills/marketplace/registry.js';\nimport { registerSpeechProvider as registerSpeechProviderInRegistry } from '../voice/tts/speech-registry.js';\nimport type { SpeechProviderPlugin } from '../voice/tts/speech-provider-types.js';\nimport { registerMediaUnderstandingProvider as registerMediaUnderstandingProviderInRegistry } from '../media-understanding/registry.js';\nimport type { MediaUnderstandingProvider } from '../media-understanding/types.js';\nimport { registerMigration as registerRuntimeMigration } from '../migrations/registry.js';\nimport type { Migration } from '../migrations/types.js';\n\nexport class ExtensionApiImpl implements ExtensionApi {\n private _tools: Map<string, AgentTool> = new Map();\n private _hooks: Map<string, Set<Function>> = new Map();\n // Strongly typed hooks (for on() method)\n private _typedHooks: Map<ExtensionHookEvent, Set<Function>> = new Map();\n private _eventBus = new EventEmitter();\n private _typedEventBus: TypedEventBus;\n \n // Unified Registry\n private _registry: ExtensionRegistryImpl;\n\n private readonly _runtime: ExtensionRuntime;\n\n private _reloadConfigPrefixes: string[] = [];\n private _registeredCommandIds: string[] = [];\n private _registeredSpeechProviderIds: string[] = [];\n private _registeredMediaUnderstandingProviderIds: string[] = [];\n private _registeredMarketplaceAdapterIds: string[] = [];\n private readonly _manifestCommands = new Map<string, CommandContribution>();\n\n constructor(\n public readonly id: string,\n public readonly name: string,\n public readonly version: string | undefined,\n public readonly source: string,\n public readonly config: Config,\n public readonly extensionConfig: Record<string, unknown>,\n private readonly _logger: ExtensionLogger,\n private readonly _resolvePath: (input: string) => string,\n private readonly _coreRegistry?: ExtensionRegistryImpl,\n private readonly _contracts: ContractDeclaration = {},\n runtime?: ExtensionRuntime,\n ) {\n // Initialize typed event bus\n this._typedEventBus = new TypedEventBus({\n logger: _logger,\n });\n \n this._registry = _coreRegistry ?? new ExtensionRegistryImpl();\n this._runtime =\n runtime ??\n ({\n config: this.config,\n log: this._logger,\n } as ExtensionRuntime);\n }\n\n get logger(): ExtensionLogger {\n return this._logger;\n }\n\n get runtime(): ExtensionRuntime {\n return this._runtime;\n }\n\n private _assertContract(kind: keyof ContractDeclaration, value: string): void {\n const declared = this._contracts[kind];\n if (!declared?.length) {\n throw new Error(\n `Extension ${this.id} attempted to register ${kind}:${value}, but manifest contracts.${kind} is missing`,\n );\n }\n const allowed = declared.some((entry) => {\n if (entry === value) return true;\n if (entry.endsWith('*')) return value.startsWith(entry.slice(0, -1));\n return false;\n });\n if (!allowed) {\n throw new Error(\n `Extension ${this.id} attempted to register ${kind}:${value}, but it is not declared in manifest contracts.${kind}`,\n );\n }\n }\n\n registerTool(tool: AgentTool): void {\n this._assertContract('tools', tool.name);\n if (this._tools.has(tool.name)) {\n this._logger.warn(`Tool ${tool.name} already registered, overwriting`);\n }\n this._tools.set(tool.name, tool);\n this._logger.info(`Registered tool: ${tool.name}`);\n }\n\n registerHook(event: string, handler: Function, opts?: { priority?: number; once?: boolean }): void {\n this._assertContract('hooks', event);\n if (!this._hooks.has(event)) {\n this._hooks.set(event, new Set());\n }\n this._hooks.get(event)!.add(handler);\n\n if (opts?.once) {\n const wrapper = async (...args: unknown[]) => {\n await handler(...args);\n this._hooks.get(event)?.delete(wrapper);\n };\n this._hooks.get(event)!.add(wrapper);\n }\n\n this._registry.addHook(event as ExtensionHookEvent, handler as ExtensionHookHandler, this.id, opts?.priority ?? 0);\n this._logger.info(`Registered hook: ${event}`);\n }\n\n /**\n * Strongly typed hook registration\n * Provides compile-time type checking and IDE autocomplete\n * \n * @example\n * api.on('before_agent_start', async (event, ctx) => {\n * console.log('Agent starting with prompt:', event.prompt);\n * return { systemPrompt: event.systemPrompt };\n * });\n */\n onHook<K extends ExtensionHookEvent>(\n hookName: K,\n handler: HookHandlerMap[K],\n _opts?: { priority?: number },\n ): void {\n this._assertContract('hooks', hookName);\n // Get execution mode for this hook\n const mode = (HOOK_EXECUTION_MODES as Record<string, HookExecutionMode>)[hookName];\n \n if (!this._typedHooks.has(hookName)) {\n this._typedHooks.set(hookName, new Set());\n }\n \n this._typedHooks.get(hookName)!.add(handler);\n\n this._logger.debug(`Registered typed hook: ${hookName} (mode: ${mode})`);\n }\n\n /**\n * Get typed hooks for a specific event\n */\n _getTypedHooks<K extends ExtensionHookEvent>(hookName: K): HookHandlerMap[K][] {\n const hooks = this._typedHooks.get(hookName);\n return hooks ? Array.from(hooks) as HookHandlerMap[K][] : [];\n }\n\n /** Adds a ChannelPlugin to the extension registry; emits `channel:register` for observability. */\n registerChannel(registration: { plugin: ChannelPlugin }): void {\n const plugin = registration.plugin;\n this._assertContract('channels', plugin.id);\n this._registry.addChannelPlugin(plugin);\n for (const migration of plugin.migrations ?? []) {\n this.registerMigration(migration);\n }\n this._eventBus.emit('channel:register', plugin);\n this._logger.info(`Registered channel plugin: ${plugin.id}`);\n }\n\n registerHttpRoute(path: string, handler: HttpRequestHandler): void {\n this._assertContract('httpRoutes', path);\n this._registry.addHttpRoute(path, handler);\n this._eventBus.emit('http:route', { path, handler });\n this._logger.info(`Registered HTTP route: ${path}`);\n }\n\n registerCommand(command: ExtensionCommand): void {\n this._assertContract('commands', command.name);\n const commandId = `ext.${this.id}.${command.name}`;\n\n const definition: CommandDefinition = {\n id: commandId,\n name: command.name,\n aliases: command.aliases,\n description: command.description,\n category: 'extension',\n scope: command.scope ?? ['global'],\n acceptsArgs: command.acceptsArgs,\n examples: command.examples,\n handler: async (ctx, args) => {\n const extensionCtx: ExtensionCommandContext = {\n sessionKey: ctx.sessionKey,\n source: ctx.source,\n isGroup: ctx.isGroup,\n config: ctx.config as SchemaConfig as ExtensionCommandContext['config'],\n reply: (text: string) => ctx.reply(text),\n };\n\n const result = await command.handler(args, extensionCtx);\n\n if (!result) {\n return { content: '', success: true };\n }\n return {\n content: result.content,\n success: result.success ?? true,\n };\n },\n };\n\n commandRegistry.register(definition);\n this._registeredCommandIds.push(commandId);\n this._registry.addCommand(command);\n\n this._eventBus.emit('command:register', command);\n this._logger.info(`Registered chat command: /${command.name}`);\n }\n\n /** Injected from manifest `ui.contributions.commands` by the loader. */\n _setManifestCommands(commands: CommandContribution[]): void {\n this._manifestCommands.clear();\n for (const c of commands) {\n this._manifestCommands.set(c.id, c);\n }\n }\n\n onCommand(commandId: string, handler: ExtensionCommandHandler): void {\n const meta = this._manifestCommands.get(commandId);\n if (!meta) {\n throw new Error(\n `Extension ${this.id} attempted to bind command ${commandId}, but it is not declared in manifest ui.contributions.commands`,\n );\n }\n let name: string;\n if (meta.chatAlias?.trim()) {\n name = meta.chatAlias.trim().replace(/^\\//, '');\n } else {\n name = meta.id.includes('.') ? (meta.id.split('.').pop() ?? meta.id) : meta.id;\n }\n if (!name) {\n name = meta.id;\n }\n this.registerCommand({\n name,\n description: meta.title,\n handler,\n });\n this._logger.info(`Bound manifest command \"${commandId}\" as /${name}`);\n }\n\n registerMigration(migration: Migration): void {\n this._registry.addMigrationRegistration({ extensionId: this.id, migration });\n registerRuntimeMigration(`extension:${this.id}`, migration);\n this._logger.info(`Registered migration: ${migration.id}`);\n }\n\n registerReload(handler: ExtensionReloadHandler): void {\n const prefixes =\n this._reloadConfigPrefixes.length > 0\n ? this._reloadConfigPrefixes\n : [`extensions.${this.id}`];\n\n this._registry.addReloadRegistration({\n extensionId: this.id,\n handler,\n configPrefixes: prefixes,\n });\n this._logger.info('Registered reload handler');\n }\n\n /** Called from loader when manifest declares `reload.configPrefixes`. */\n _setReloadConfigPrefixes(prefixes: string[]): void {\n this._reloadConfigPrefixes = [...prefixes];\n }\n\n registerService(service: ExtensionService): void {\n this._assertContract('services', service.id);\n this._registry.addService(service);\n this._eventBus.emit('service:register', service);\n this._logger.info(`Registered service: ${service.id}`);\n }\n\n registerGatewayMethod(method: string, handler: GatewayMethodHandler): void {\n this._assertContract('gatewayMethods', method);\n this._registry.addGatewayMethod(method, handler);\n this._eventBus.emit('gateway:method', { method, handler });\n this._logger.info(`Registered gateway method: ${method}`);\n }\n\n registerCli(\n factory: (ctx: { program: Command }) => void,\n opts?: { commands: string[] },\n ): void {\n for (const command of opts?.commands ?? []) {\n this._assertContract('cliCommands', command);\n }\n const reg: ExtensionCliRegistration = {\n extensionId: this.id,\n commands: opts?.commands ?? [],\n factory,\n };\n this._registry.addCliRegistration(reg);\n this._eventBus.emit('cli:register', reg);\n this._logger.info(\n `Registered CLI factory${opts?.commands?.length ? ` (${opts.commands.join(', ')})` : ''}`,\n );\n }\n\n resolvePath(input: string): string {\n return this._resolvePath(input);\n }\n\n emit(event: string, data: unknown): void {\n this._eventBus.emit(event, data);\n }\n\n on(event: string, handler: (data: unknown) => void): void {\n this._eventBus.on(event, handler);\n }\n\n off(event: string, handler: (data: unknown) => void): void {\n this._eventBus.off(event, handler);\n }\n\n // Typed Event Bus\n get events(): TypedEventBus {\n return this._typedEventBus;\n }\n\n // Unified Registry Methods\n \n /**\n * Register a full ProviderPlugin\n */\n registerProvider(plugin: import('./types/providers.js').ProviderPlugin): void {\n this._assertContract('providers', plugin.id);\n import('../providers/plugin-registry.js').then(({ getProviderRegistry }) => {\n const registry = getProviderRegistry();\n registry.register(plugin);\n this._logger.info(`Extension registered provider: ${plugin.id}`);\n }).catch((err: unknown) => {\n this._logger.error(`Failed to register provider: ${err instanceof Error ? err.message : String(err)}`);\n });\n }\n\n /**\n * Register a full ProviderPlugin (alias for registerProvider)\n */\n registerProviderPlugin(plugin: import('./types/providers.js').ProviderPlugin): void {\n this.registerProvider(plugin);\n }\n\n registerSpeechProvider(plugin: SpeechProviderPlugin): void {\n this._assertContract('speechProviders', plugin.id);\n registerSpeechProviderInRegistry(plugin);\n if (!this._registeredSpeechProviderIds.includes(plugin.id)) {\n this._registeredSpeechProviderIds.push(plugin.id);\n }\n this._logger.info(`Registered speech provider: ${plugin.id}`);\n }\n\n /** Speech provider ids registered through this extension API instance. */\n getRegisteredSpeechProviderIds(): readonly string[] {\n return [...this._registeredSpeechProviderIds];\n }\n\n registerMediaUnderstandingProvider(plugin: MediaUnderstandingProvider): void {\n this._assertContract('mediaUnderstandingProviders', plugin.id);\n registerMediaUnderstandingProviderInRegistry(plugin);\n if (!this._registeredMediaUnderstandingProviderIds.includes(plugin.id)) {\n this._registeredMediaUnderstandingProviderIds.push(plugin.id);\n }\n this._logger.info(`Registered media understanding provider: ${plugin.id}`);\n }\n\n /** Media understanding provider ids registered through this extension API instance. */\n getRegisteredMediaUnderstandingProviderIds(): readonly string[] {\n return [...this._registeredMediaUnderstandingProviderIds];\n }\n\n /**\n * Register a skills marketplace adapter so it appears in the UI provider picker.\n */\n registerMarketplaceAdapter(registration: {\n adapter: import('../agent/skills/marketplace/adapter.types.js').SkillsMarketplaceAdapter;\n displayName?: string;\n }): void {\n const adapterId = registration.adapter.id;\n this._assertContract('marketplaceAdapters', adapterId);\n _registerMarketplaceAdapter(registration);\n if (!this._registeredMarketplaceAdapterIds.includes(adapterId)) {\n this._registeredMarketplaceAdapterIds.push(adapterId);\n }\n this._logger.info(`Extension registered marketplace adapter: ${adapterId}`);\n }\n\n registerFlag(_name: string, _config: FlagConfig): void {\n // this._registry.registerFlag(name, config, this.id);\n }\n\n getFlag(_name: string): FlagValue {\n return undefined; // this._registry.getFlag(name);\n }\n\n registerShortcut(_key: string, _config: ShortcutConfig): void {\n // this._registry.registerShortcut(key, config, { extensionId: this.id });\n }\n\n registerTui(register: TuiExtensionRegistrar): void {\n this._assertContract('tui', this.id);\n this._registry.addTuiRegistration(this.id, register);\n this._logger.info('Registered TUI contributions (deferred until xopc tui starts)');\n }\n\n setLabel(entryId: string, label: string | undefined): void {\n this._runtime.setLabel?.(entryId, label);\n }\n\n sendUserMessage(\n content: ExtensionUserMessageContent,\n options?: ExtensionSendUserMessageOptions,\n ): void {\n this._runtime.sendUserMessage?.(content, options);\n }\n\n appendEntry<T = unknown>(customType: string, data?: T): void {\n this._runtime.appendEntry?.(customType, data);\n }\n\n sendMessage<T = unknown>(\n message: ExtensionCustomMessage<T>,\n options?: ExtensionSendMessageOptions,\n ): void {\n this._runtime.sendMessage?.(message, options);\n }\n\n // Internal methods for extension manager\n _getTools(): Map<string, AgentTool> {\n return this._tools;\n }\n\n _getHooks(): Map<string, Set<Function>> {\n return this._hooks;\n }\n\n _getEventBus(): EventEmitter {\n return this._eventBus;\n }\n\n _cleanup(): void {\n for (const commandId of this._registeredCommandIds) {\n commandRegistry.unregister(commandId);\n }\n this._registeredCommandIds = [];\n this._manifestCommands.clear();\n\n this._registry.removeReloadRegistration(this.id);\n\n for (const adapterId of this._registeredMarketplaceAdapterIds) {\n _unregisterMarketplaceAdapter(adapterId);\n }\n this._registeredMarketplaceAdapterIds = [];\n\n this._typedEventBus.cleanupAll();\n this._eventBus.removeAllListeners();\n this._hooks.clear();\n this._typedHooks.clear();\n }\n}\n\n// ============================================================================\n// Default Logger\n// ============================================================================\n\nexport function createExtensionLogger(prefix: string): ExtensionLogger {\n const childLogger = createLogger(`Extension:${prefix}`);\n\n return {\n debug: (msg: string) => childLogger.debug(msg),\n info: (msg: string) => childLogger.info(msg),\n warn: (msg: string) => childLogger.warn(msg),\n error: (msg: string) => childLogger.error(msg),\n };\n}\n\n// ============================================================================\n// Path Resolver\n// ============================================================================\n\nexport function createPathResolver(extensionDir: string, workspaceDir: string) {\n return (input: string): string => {\n if (input.startsWith('~')) {\n return input.replace('~', process.env.HOME || '');\n }\n if (input.startsWith('.')) {\n return resolve(extensionDir, input);\n }\n if (!isAbsolute(input)) {\n return resolve(workspaceDir, input);\n }\n return input;\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundle-mcp.js","names":[],"sources":["../../../src/extensions/bundle-mcp.ts"],"sourcesContent":["import { existsSync, readdirSync, readFileSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { Config } from '../config/schema.js';\nimport { normalizeConfiguredMcpServers } from '../config/mcp-config-normalize.js';\nimport {\n resolveBundledExtensionsDir,\n resolveExtensionsDir,\n} from '../config/paths.js';\nimport { isRecord } from '../utils/is-record.js';\n\nexport type BundleMcpServerConfig = Record<string, unknown>;\n\nexport type BundleMcpConfig = {\n mcpServers: Record<string, BundleMcpServerConfig>;\n};\n\nexport type BundleMcpDiagnostic = {\n extensionId: string;\n message: string;\n};\n\nexport type EnabledBundleMcpConfigResult = {\n config: BundleMcpConfig;\n diagnostics: BundleMcpDiagnostic[];\n};\n\nfunction extractMcpServerMap(raw: unknown): Record<string, BundleMcpServerConfig> {\n if (!isRecord(raw)) {\n return {};\n }\n const nested = isRecord(raw.mcpServers)\n ? raw.mcpServers\n : isRecord(raw.servers)\n ? raw.servers\n : raw;\n if (!isRecord(nested)) {\n return {};\n }\n const result: Record<string, BundleMcpServerConfig> = {};\n for (const [serverName, serverRaw] of Object.entries(nested)) {\n if (!isRecord(serverRaw)) {\n continue;\n }\n result[serverName] = { ...serverRaw };\n }\n return result;\n}\n\nfunction readMcpJsonFile(filePath: string): Record<string, BundleMcpServerConfig> {\n if (!existsSync(filePath)) {\n return {};\n }\n try {\n const raw = JSON.parse(readFileSync(filePath, 'utf-8')) as unknown;\n return extractMcpServerMap(raw);\n } catch {\n return {};\n }\n}\n\nfunction isExtensionEnabled(extensionId: string, cfg?: Config): boolean {\n const disabled = (cfg?.extensions?.disabled ?? []) as string[];\n if (disabled.includes(extensionId)) {\n return false;\n }\n const enabled = cfg?.extensions?.enabled as string[] | undefined;\n if (Array.isArray(enabled) && enabled.length > 0) {\n return enabled.includes(extensionId);\n }\n return true;\n}\n\nfunction scanExtensionsRoot(root: string, cfg: Config | undefined, merged: Record<string, BundleMcpServerConfig>, diagnostics: BundleMcpDiagnostic[]): void {\n if (!existsSync(root)) {\n return;\n }\n for (const entry of readdirSync(root, { withFileTypes: true })) {\n if (!entry.isDirectory()) {\n continue;\n }\n const extensionId = entry.name;\n if (!isExtensionEnabled(extensionId, cfg)) {\n continue;\n }\n const extRoot = join(root, extensionId);\n const servers = readMcpJsonFile(join(extRoot, '.mcp.json'));\n for (const [name, server] of Object.entries(servers)) {\n const key = merged[name] ? `${extensionId}__${name}` : name;\n if (merged[name] && !merged[`${extensionId}__${name}`]) {\n diagnostics.push({\n extensionId,\n message: `MCP server \"${name}\" renamed to \"${key}\" due to name collision.`,\n });\n }\n merged[key] = server;\n }\n }\n}\n\nexport function loadEnabledBundleMcpConfig(params: {\n workspaceDir?: string;\n cfg?: Config;\n}): EnabledBundleMcpConfigResult {\n void params.workspaceDir;\n const merged: Record<string, BundleMcpServerConfig> = {};\n const diagnostics: BundleMcpDiagnostic[] = [];\n\n scanExtensionsRoot(resolveExtensionsDir(), params.cfg, merged, diagnostics);\n const bundled = resolveBundledExtensionsDir();\n if (bundled) {\n scanExtensionsRoot(bundled, params.cfg, merged, diagnostics);\n }\n\n return {\n config: { mcpServers: merged },\n diagnostics,\n };\n}\n\nexport function hasAnyMcpServers(cfg?: Config): boolean {\n const user = normalizeConfiguredMcpServers(cfg?.mcp?.servers);\n if (Object.keys(user).length > 0) {\n return true;\n }\n const bundle = loadEnabledBundleMcpConfig({ cfg });\n return Object.keys(bundle.config.mcpServers).length > 0;\n}\n"],"mappings":";;;;;;YAO4B;AAmB5B,SAAS,oBAAoB,KAAqD;AAChF,KAAI,CAAC,SAAS,IAAI,CAChB,QAAO,EAAE;CAEX,MAAM,SAAS,SAAS,IAAI,WAAW,GACnC,IAAI,aACJ,SAAS,IAAI,QAAQ,GACnB,IAAI,UACJ;AACN,KAAI,CAAC,SAAS,OAAO,CACnB,QAAO,EAAE;CAEX,MAAM,SAAgD,EAAE;AACxD,MAAK,MAAM,CAAC,YAAY,cAAc,OAAO,QAAQ,OAAO,EAAE;AAC5D,MAAI,CAAC,SAAS,UAAU,CACtB;AAEF,SAAO,cAAc,EAAE,GAAG,WAAW;;AAEvC,QAAO;;AAGT,SAAS,gBAAgB,UAAyD;AAChF,KAAI,CAAC,WAAW,SAAS,CACvB,QAAO,EAAE;AAEX,KAAI;AAEF,SAAO,oBADK,KAAK,MAAM,aAAa,UAAU,QAAQ,CACxB,CAAC;SACzB;AACN,SAAO,EAAE;;;AAIb,SAAS,mBAAmB,aAAqB,KAAuB;AAEtE,MADkB,KAAK,YAAY,YAAY,EAAE,EACpC,SAAS,YAAY,CAChC,QAAO;CAET,MAAM,UAAU,KAAK,YAAY;AACjC,KAAI,MAAM,QAAQ,QAAQ,IAAI,QAAQ,SAAS,EAC7C,QAAO,QAAQ,SAAS,YAAY;AAEtC,QAAO;;AAGT,SAAS,mBAAmB,MAAc,KAAyB,QAA+C,aAA0C;AAC1J,KAAI,CAAC,WAAW,KAAK,CACnB;AAEF,MAAK,MAAM,SAAS,YAAY,MAAM,EAAE,eAAe,MAAM,CAAC,EAAE;AAC9D,MAAI,CAAC,MAAM,aAAa,CACtB;EAEF,MAAM,cAAc,MAAM;AAC1B,MAAI,CAAC,mBAAmB,aAAa,IAAI,CACvC;EAGF,MAAM,UAAU,gBAAgB,KADhB,KAAK,MAAM,YACiB,EAAE,YAAY,CAAC;AAC3D,OAAK,MAAM,CAAC,MAAM,WAAW,OAAO,QAAQ,QAAQ,EAAE;GACpD,MAAM,MAAM,OAAO,QAAQ,GAAG,YAAY,IAAI,SAAS;AACvD,OAAI,OAAO,SAAS,CAAC,OAAO,GAAG,YAAY,IAAI,QAC7C,aAAY,KAAK;IACf;IACA,SAAS,eAAe,KAAK,gBAAgB,IAAI;IAClD,CAAC;AAEJ,UAAO,OAAO;;;;AAKpB,SAAgB,2BAA2B,QAGV;AAC1B,QAAO;CACZ,MAAM,SAAgD,EAAE;CACxD,MAAM,cAAqC,EAAE;AAE7C,oBAAmB,sBAAsB,EAAE,OAAO,KAAK,QAAQ,YAAY;CAC3E,MAAM,UAAU,6BAA6B;AAC7C,KAAI,QACF,oBAAmB,SAAS,OAAO,KAAK,QAAQ,YAAY;AAG9D,QAAO;EACL,QAAQ,EAAE,YAAY,QAAQ;EAC9B;EACD;;AAGH,SAAgB,iBAAiB,KAAuB;CACtD,MAAM,OAAO,8BAA8B,KAAK,KAAK,QAAQ;AAC7D,KAAI,OAAO,KAAK,KAAK,CAAC,SAAS,EAC7B,QAAO;CAET,MAAM,SAAS,2BAA2B,EAAE,KAAK,CAAC;AAClD,QAAO,OAAO,KAAK,OAAO,OAAO,WAAW,CAAC,SAAS"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-extension-activation.js","names":[],"sources":["../../../src/extensions/bundled-extension-activation.ts"],"sourcesContent":["/**\n * Compute `extensions` config changes for enabling/disabling a bundled extension from the gateway UI.\n * Activation is manifest-driven; `extensions.enabled` / `extensions.disabled` are merged in {@link mergeActivationContext}.\n */\n\nimport type { Config as SurfaceConfig } from '../config/config-surface.js';\nimport type { Config as SchemaConfig } from '../config/schema.js';\nimport { mergeActivationContext } from './activation-context.js';\nimport { ActivationPlanner } from './activation-planner.js';\nimport type { ExtensionLoader } from './loader.js';\n\nfunction asSurfaceConfig(config: SchemaConfig): SurfaceConfig {\n return config as unknown as SurfaceConfig;\n}\n\nfunction filterStringIds(val: unknown): string[] {\n if (!Array.isArray(val)) return [];\n return val.filter((x): x is string => typeof x === 'string');\n}\n\nfunction optionalEnabledIds(val: unknown): string[] | undefined {\n if (!Array.isArray(val)) return undefined;\n const ids = filterStringIds(val);\n return ids.length > 0 ? ids : undefined;\n}\n\nfunction buildExtensionsRecord(\n base: Record<string, unknown>,\n enabled: string[] | undefined,\n disabled: string[],\n): Record<string, unknown> {\n const o = { ...base };\n if (enabled !== undefined && enabled.length > 0) {\n o.enabled = enabled;\n } else {\n delete o.enabled;\n }\n if (disabled.length > 0) {\n o.disabled = disabled;\n } else {\n delete o.disabled;\n }\n return o;\n}\n\nexport function isExtensionActivationEligible(\n loader: ExtensionLoader,\n config: SchemaConfig,\n extensionId: string,\n): boolean {\n const surface = asSurfaceConfig(config);\n loader.setConfig(surface);\n const registry = loader.buildManifestRegistry();\n const planner = new ActivationPlanner(registry);\n return planner.getActivatedIds(mergeActivationContext(surface)).includes(extensionId);\n}\n\nexport function computeBundledExtensionExtensionsPatch(\n loader: ExtensionLoader,\n config: SchemaConfig,\n extensionId: string,\n wanted: boolean,\n): { ok: true; extensions: Record<string, unknown> } | { ok: false; error: string } {\n const discovered = loader.discoverExtensions();\n const hit = discovered.find((e) => e.id === extensionId);\n if (!hit) {\n return { ok: false, error: 'Extension not found' };\n }\n if (hit.source !== 'bundled') {\n return {\n ok: false,\n error:\n 'Only bundled extensions can be toggled here (workspace or global installs override the same id — use CLI to manage those).',\n };\n }\n\n const base = (config.extensions as Record<string, unknown> | undefined) ?? {};\n let enabled = optionalEnabledIds(base.enabled);\n let disabled = filterStringIds(base.disabled);\n\n if (wanted) {\n disabled = disabled.filter((id) => id !== extensionId);\n let candidate = buildExtensionsRecord(base, enabled, disabled);\n if (\n !isExtensionActivationEligible(\n loader,\n { ...config, extensions: candidate } as SchemaConfig,\n extensionId,\n )\n ) {\n const nextEnabled = [...(enabled ?? [])];\n if (!nextEnabled.includes(extensionId)) {\n nextEnabled.push(extensionId);\n }\n enabled = nextEnabled;\n candidate = buildExtensionsRecord(base, enabled, disabled);\n }\n if (\n !isExtensionActivationEligible(\n loader,\n { ...config, extensions: candidate } as SchemaConfig,\n extensionId,\n )\n ) {\n return {\n ok: false,\n error:\n 'Extension would still not activate with current settings (channels, environment, or activation rules).',\n };\n }\n return { ok: true, extensions: candidate };\n }\n\n if (enabled) {\n enabled = enabled.filter((id) => id !== extensionId);\n if (enabled.length === 0) {\n enabled = undefined;\n }\n }\n if (!disabled.includes(extensionId)) {\n disabled = [...disabled, extensionId];\n }\n const candidate = buildExtensionsRecord(base, enabled, disabled);\n return { ok: true, extensions: candidate };\n}\n"],"mappings":";;;AAWA,SAAS,gBAAgB,QAAqC;AAC5D,QAAO;;AAGT,SAAS,gBAAgB,KAAwB;AAC/C,KAAI,CAAC,MAAM,QAAQ,IAAI,CAAE,QAAO,EAAE;AAClC,QAAO,IAAI,QAAQ,MAAmB,OAAO,MAAM,SAAS;;AAG9D,SAAS,mBAAmB,KAAoC;AAC9D,KAAI,CAAC,MAAM,QAAQ,IAAI,CAAE,QAAO,KAAA;CAChC,MAAM,MAAM,gBAAgB,IAAI;AAChC,QAAO,IAAI,SAAS,IAAI,MAAM,KAAA;;AAGhC,SAAS,sBACP,MACA,SACA,UACyB;CACzB,MAAM,IAAI,EAAE,GAAG,MAAM;AACrB,KAAI,YAAY,KAAA,KAAa,QAAQ,SAAS,EAC5C,GAAE,UAAU;KAEZ,QAAO,EAAE;AAEX,KAAI,SAAS,SAAS,EACpB,GAAE,WAAW;KAEb,QAAO,EAAE;AAEX,QAAO;;AAGT,SAAgB,8BACd,QACA,QACA,aACS;CACT,MAAM,UAAU,gBAAgB,OAAO;AACvC,QAAO,UAAU,QAAQ;AAGzB,QAAO,IADa,kBADH,OAAO,uBACsB,CAChC,CAAC,gBAAgB,uBAAuB,QAAQ,CAAC,CAAC,SAAS,YAAY;;AAGvF,SAAgB,uCACd,QACA,QACA,aACA,QACkF;CAElF,MAAM,MADa,OAAO,oBACJ,CAAC,MAAM,MAAM,EAAE,OAAO,YAAY;AACxD,KAAI,CAAC,IACH,QAAO;EAAE,IAAI;EAAO,OAAO;EAAuB;AAEpD,KAAI,IAAI,WAAW,UACjB,QAAO;EACL,IAAI;EACJ,OACE;EACH;CAGH,MAAM,OAAQ,OAAO,cAAsD,EAAE;CAC7E,IAAI,UAAU,mBAAmB,KAAK,QAAQ;CAC9C,IAAI,WAAW,gBAAgB,KAAK,SAAS;AAE7C,KAAI,QAAQ;AACV,aAAW,SAAS,QAAQ,OAAO,OAAO,YAAY;EACtD,IAAI,YAAY,sBAAsB,MAAM,SAAS,SAAS;AAC9D,MACE,CAAC,8BACC,QACA;GAAE,GAAG;GAAQ,YAAY;GAAW,EACpC,YACD,EACD;GACA,MAAM,cAAc,CAAC,GAAI,WAAW,EAAE,CAAE;AACxC,OAAI,CAAC,YAAY,SAAS,YAAY,CACpC,aAAY,KAAK,YAAY;AAE/B,aAAU;AACV,eAAY,sBAAsB,MAAM,SAAS,SAAS;;AAE5D,MACE,CAAC,8BACC,QACA;GAAE,GAAG;GAAQ,YAAY;GAAW,EACpC,YACD,CAED,QAAO;GACL,IAAI;GACJ,OACE;GACH;AAEH,SAAO;GAAE,IAAI;GAAM,YAAY;GAAW;;AAG5C,KAAI,SAAS;AACX,YAAU,QAAQ,QAAQ,OAAO,OAAO,YAAY;AACpD,MAAI,QAAQ,WAAW,EACrB,WAAU,KAAA;;AAGd,KAAI,CAAC,SAAS,SAAS,YAAY,CACjC,YAAW,CAAC,GAAG,UAAU,YAAY;AAGvC,QAAO;EAAE,IAAI;EAAM,YADD,sBAAsB,MAAM,SAAS,SACf;EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","names":[],"sources":["../../../src/extensions/diagnostics.ts"],"sourcesContent":["/**\n * Extension Diagnostics System\n * \n * Extension lifecycle enhancement with diagnostics.\n * Provides caching, diagnostics, and performance tracking.\n */\n\nimport { createLogger } from '../utils/logger.js';\n\nconst log = createLogger('Extension:Diagnostics');\n\n// ============================================================================\n// Diagnostic Types\n// ============================================================================\n\nexport type DiagnosticLevel = 'info' | 'warn' | 'error';\n\nexport interface ExtensionDiagnostic {\n level: DiagnosticLevel;\n extensionId?: string;\n source?: string;\n message: string;\n timestamp: number;\n code?: string;\n details?: Record<string, unknown>;\n}\n\n// ============================================================================\n// Registry Cache\n// ============================================================================\n\nexport interface CacheEntry<T> {\n value: T;\n expiresAt: number;\n}\n\nexport interface ExtensionLoaderCache {\n /** Cache key builder */\n buildKey(options: unknown, enabledIds?: string[]): string;\n /** Get cached value */\n get<T>(key: string): T | undefined;\n /** Set cached value with TTL (in ms) */\n set<T>(key: string, value: T, ttl?: number): void;\n /** Invalidate cache */\n invalidate(key?: string): void;\n /** Check if cache exists */\n has(key: string): boolean;\n}\n\nconst DEFAULT_CACHE_TTL = 5 * 60 * 1000; // 5 minutes\n\n/**\n * Simple in-memory cache with TTL support\n */\nexport class ExtensionLoaderCacheImpl implements ExtensionLoaderCache {\n private cache = new Map<string, CacheEntry<unknown>>();\n\n /**\n * Build a cache key from loader options\n */\n buildKey(options: {\n workspaceDir?: string;\n globalDir?: string;\n bundledDir?: string;\n }, enabledIds?: string[]): string {\n return JSON.stringify({\n workspaceDir: options.workspaceDir,\n globalDir: options.globalDir,\n bundledDir: options.bundledDir,\n enabledIds: enabledIds?.sort(),\n });\n }\n\n /**\n * Get cached value\n */\n get<T>(key: string): T | undefined {\n const entry = this.cache.get(key);\n \n if (!entry) {\n return undefined;\n }\n\n // Check expiration\n if (Date.now() > entry.expiresAt) {\n this.cache.delete(key);\n return undefined;\n }\n\n return entry.value as T;\n }\n\n /**\n * Set cached value with TTL\n */\n set<T>(key: string, value: T, ttl = DEFAULT_CACHE_TTL): void {\n this.cache.set(key, {\n value,\n expiresAt: Date.now() + ttl,\n });\n }\n\n /**\n * Invalidate cache\n */\n invalidate(key?: string): void {\n if (key) {\n this.cache.delete(key);\n } else {\n this.cache.clear();\n }\n log.info(key ? `Cache invalidated for: ${key}` : 'All cache invalidated');\n }\n\n /**\n * Check if cache exists and is valid\n */\n has(key: string): boolean {\n return this.get(key) !== undefined;\n }\n\n /**\n * Get cache stats\n */\n getStats(): { size: number; keys: string[] } {\n return {\n size: this.cache.size,\n keys: Array.from(this.cache.keys()),\n };\n }\n}\n\n// ============================================================================\n// Diagnostic System\n// ============================================================================\n\n/**\n * Extension diagnostics collector\n */\nexport class ExtensionDiagnostics {\n private diagnostics: ExtensionDiagnostic[] = [];\n private maxDiagnostics = 1000;\n\n /**\n * Add a diagnostic\n */\n addDiagnostic(diagnostic: ExtensionDiagnostic): void {\n // Trim old diagnostics if needed\n if (this.diagnostics.length >= this.maxDiagnostics) {\n this.diagnostics = this.diagnostics.slice(-this.maxDiagnostics / 2);\n }\n\n this.diagnostics.push({\n ...diagnostic,\n timestamp: diagnostic.timestamp || Date.now(),\n });\n\n // Log based on level - with safety check\n const logFnName = diagnostic.level === 'error' ? 'error' : diagnostic.level === 'warn' ? 'warn' : 'info';\n const logFn = log[logFnName]?.bind(log) || (() => {});\n logFn({\n extensionId: diagnostic.extensionId,\n code: diagnostic.code,\n }, diagnostic.message);\n }\n\n /**\n * Add info diagnostic\n */\n info(extensionId: string, message: string, details?: Record<string, unknown>): void {\n this.addDiagnostic({ level: 'info', extensionId, message, details, timestamp: Date.now() });\n }\n\n /**\n * Add warning diagnostic\n */\n warn(extensionId: string, message: string, details?: Record<string, unknown>): void {\n this.addDiagnostic({ level: 'warn', extensionId, message, details, timestamp: Date.now() });\n }\n\n /**\n * Add error diagnostic\n */\n error(extensionId: string, message: string, details?: Record<string, unknown>): void {\n this.addDiagnostic({ level: 'error', extensionId, message, details, timestamp: Date.now() });\n }\n\n /**\n * Get all diagnostics\n */\n getAll(): ExtensionDiagnostic[] {\n return [...this.diagnostics];\n }\n\n /**\n * Get diagnostics for a specific extension\n */\n getForExtension(extensionId: string): ExtensionDiagnostic[] {\n return this.diagnostics.filter(d => d.extensionId === extensionId);\n }\n\n /**\n * Get diagnostics by level\n */\n getByLevel(level: DiagnosticLevel): ExtensionDiagnostic[] {\n return this.diagnostics.filter(d => d.level === level);\n }\n\n /**\n * Get errors\n */\n getErrors(): ExtensionDiagnostic[] {\n return this.getByLevel('error');\n }\n\n /**\n * Get warnings\n */\n getWarnings(): ExtensionDiagnostic[] {\n return this.getByLevel('warn');\n }\n\n /**\n * Clear diagnostics\n */\n clear(): void {\n this.diagnostics = [];\n }\n\n /**\n * Get summary\n */\n getSummary(): { errorCount: number; warnCount: number; infoCount: number } {\n return {\n errorCount: this.getByLevel('error').length,\n warnCount: this.getByLevel('warn').length,\n infoCount: this.getByLevel('info').length,\n };\n }\n}\n\n// ============================================================================\n// Singleton Instances\n// ============================================================================\n\nlet globalCache: ExtensionLoaderCacheImpl | null = null;\nlet globalDiagnostics: ExtensionDiagnostics | null = null;\n\nexport function getExtensionCache(): ExtensionLoaderCacheImpl {\n if (!globalCache) {\n globalCache = new ExtensionLoaderCacheImpl();\n }\n return globalCache;\n}\n\nexport function getExtensionDiagnostics(): ExtensionDiagnostics {\n if (!globalDiagnostics) {\n globalDiagnostics = new ExtensionDiagnostics();\n }\n return globalDiagnostics;\n}\n\nexport function setExtensionCache(cache: ExtensionLoaderCacheImpl): void {\n globalCache = cache;\n}\n\nexport function setExtensionDiagnostics(diagnostics: ExtensionDiagnostics): void {\n globalDiagnostics = diagnostics;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discover-extensions.js","names":[],"sources":["../../../src/extensions/discover-extensions.ts"],"sourcesContent":["/**\n * Filesystem-only extension discovery (manifest parse, no module load).\n */\n\nimport { existsSync, readdirSync, readFileSync } from 'fs';\nimport { join } from 'path';\n\nimport { resolveDefaultAgentId } from '../agent/agent-scope.js';\nimport type { Config } from '../config/schema.js';\nimport {\n resolveBundledExtensionsDir,\n resolveExtensionsDir,\n resolveWorkspaceExtensionsDir,\n} from '../config/paths.js';\nimport { createLogger } from '../utils/logger.js';\nimport { normalizeExtensionManifest } from './normalize-manifest.js';\nimport type { ExtensionManifest } from './types/manifest.js';\nimport type { DiscoveredExtension } from './types/loader.js';\n\n/** App config slice used for discovery (any loaded config shape). */\nexport type DiscoverConfig = Record<string, unknown>;\n\nfunction asSchemaConfig(config: DiscoverConfig): Config {\n return config as Config;\n}\n\nconst EXTENSION_MANIFEST_FILE = 'xopc.extension.json';\n\nconst log = createLogger('ExtensionDiscover');\n\nexport type ExtensionSourceOrigin = 'workspace' | 'global' | 'bundled' | 'config';\n\nexport interface ExtensionLoaderOptions {\n workspaceDir?: string;\n extensionsDir?: string;\n workspaceExtensionsDir?: string;\n bundledExtensions?: string[];\n}\n\nfunction isRecord(x: unknown): x is Record<string, unknown> {\n return typeof x === 'object' && x !== null && !Array.isArray(x);\n}\n\nfunction loadManifest(extensionPath: string): ExtensionManifest | null {\n const manifestPath = join(extensionPath, EXTENSION_MANIFEST_FILE);\n\n if (existsSync(manifestPath)) {\n try {\n const raw = JSON.parse(readFileSync(manifestPath, 'utf-8'));\n if (!raw || typeof raw !== 'object' || Array.isArray(raw)) {\n log.error({ manifestPath }, 'Manifest root must be a JSON object');\n return null;\n }\n return normalizeExtensionManifest(raw as Record<string, unknown>);\n } catch (error) {\n log.error({ err: error, manifestPath }, 'Failed to parse manifest');\n return null;\n }\n }\n\n const packagePath = join(extensionPath, 'package.json');\n if (existsSync(packagePath)) {\n try {\n const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));\n\n if (packageJson.xopc?.extension) {\n const xopcConfig = packageJson.xopc;\n return normalizeExtensionManifest({\n id: xopcConfig.id || packageJson.name,\n name: xopcConfig.name || packageJson.name,\n description: xopcConfig.description || packageJson.description,\n version: xopcConfig.version || packageJson.version || '1.0.0',\n kind: xopcConfig.kind || 'utility',\n main: xopcConfig.main || packageJson.main || 'index.js',\n configSchema: xopcConfig.configSchema,\n });\n }\n\n if (packageJson.name?.startsWith('xopc-extension-')) {\n const id = packageJson.name.replace('xopc-extension-', '');\n return normalizeExtensionManifest({\n id,\n name: packageJson.name,\n description: packageJson.description,\n version: packageJson.version || '1.0.0',\n kind: 'utility',\n main: packageJson.main || 'index.js',\n });\n }\n } catch (error) {\n log.error({ err: error, packagePath }, 'Failed to parse package.json');\n }\n }\n\n return null;\n}\n\nfunction discoverInDirectory(\n dir: string,\n source: ExtensionSourceOrigin,\n discovered: Map<string, DiscoveredExtension>,\n): void {\n if (!existsSync(dir)) {\n return;\n }\n\n let entries: string[];\n try {\n entries = readdirSync(dir);\n } catch {\n return;\n }\n\n for (const entry of entries) {\n const extensionPath = join(dir, entry);\n\n try {\n if (!existsSync(extensionPath)) continue;\n } catch {\n continue;\n }\n\n const manifest = loadManifest(extensionPath);\n if (!manifest) continue;\n\n const extensionId = manifest.id || entry;\n\n const existing = discovered.get(extensionId);\n if (existing) {\n const priority = { workspace: 3, global: 2, bundled: 1, config: 0 };\n if (priority[source] <= priority[existing.source]) {\n log.debug(\n { extensionId, from: source, existing: existing.source },\n 'Skipping lower priority extension',\n );\n continue;\n }\n log.info(\n { extensionId, from: source, overriding: existing.source },\n 'Extension override by higher priority source',\n );\n }\n\n discovered.set(extensionId, {\n id: extensionId,\n path: extensionPath,\n source,\n manifest,\n });\n }\n}\n\nfunction resolveDiscoveryPaths(\n options: ExtensionLoaderOptions,\n config?: DiscoverConfig,\n): {\n bundledDir: string | null;\n globalDir: string;\n workspaceExtensionsDir: string | null;\n} {\n const cfg = config ? asSchemaConfig(config) : null;\n const aid = cfg ? resolveDefaultAgentId(cfg) : null;\n\n return {\n bundledDir: resolveBundledExtensionsDir(),\n globalDir: options.extensionsDir ?? resolveExtensionsDir(),\n workspaceExtensionsDir:\n options.workspaceExtensionsDir ??\n (cfg && aid ? resolveWorkspaceExtensionsDir(cfg, aid) : null),\n };\n}\n\n/**\n * Discover extensions from workspace, global, and bundled tiers without loading code.\n */\nexport function discoverExtensionsFromDisk(\n options: ExtensionLoaderOptions = {},\n config?: DiscoverConfig,\n): DiscoveredExtension[] {\n const discovered = new Map<string, DiscoveredExtension>();\n const paths = resolveDiscoveryPaths(options, config);\n\n if (paths.bundledDir) {\n discoverInDirectory(paths.bundledDir, 'bundled', discovered);\n }\n\n // Electron ships self-contained extension bundles. Do not let stale user/global source\n // extensions override those packaged manifests.\n if (process.env.XOPC_BUNDLED_EXTENSIONS_ROOT || paths.bundledDir?.includes(`${join('dist', 'electron', 'extensions')}`)) {\n return Array.from(discovered.values());\n }\n\n discoverInDirectory(paths.globalDir, 'global', discovered);\n if (paths.workspaceExtensionsDir) {\n discoverInDirectory(paths.workspaceExtensionsDir, 'workspace', discovered);\n }\n\n return Array.from(discovered.values());\n}\n\n/** True when extension discovery/load should be skipped entirely. */\nexport function areExtensionsGloballyDisabled(config?: DiscoverConfig): boolean {\n if (\n process.env.XOPC_SKIP_EXTENSIONS === '1' ||\n process.env.XOPC_SKIP_EXTENSIONS === 'true'\n ) {\n return true;\n }\n\n const ext =\n config && isRecord(config) && isRecord((config as Record<string, unknown>).extensions)\n ? ((config as Record<string, unknown>).extensions as Record<string, unknown>)\n : undefined;\n\n return ext?.enabled === false;\n}\n"],"mappings":";;;;;;;;;;;;AAsBA,SAAS,eAAe,QAAgC;AACtD,QAAO;;AAgBT,SAAS,SAAS,GAA0C;AAC1D,QAAO,OAAO,MAAM,YAAY,MAAM,QAAQ,CAAC,MAAM,QAAQ,EAAE;;AAGjE,SAAS,aAAa,eAAiD;CACrE,MAAM,eAAe,KAAK,eAAe,wBAAwB;AAEjE,KAAI,WAAW,aAAa,CAC1B,KAAI;EACF,MAAM,MAAM,KAAK,MAAM,aAAa,cAAc,QAAQ,CAAC;AAC3D,MAAI,CAAC,OAAO,OAAO,QAAQ,YAAY,MAAM,QAAQ,IAAI,EAAE;AACzD,OAAI,MAAM,EAAE,cAAc,EAAE,sCAAsC;AAClE,UAAO;;AAET,SAAO,2BAA2B,IAA+B;UAC1D,OAAO;AACd,MAAI,MAAM;GAAE,KAAK;GAAO;GAAc,EAAE,2BAA2B;AACnE,SAAO;;CAIX,MAAM,cAAc,KAAK,eAAe,eAAe;AACvD,KAAI,WAAW,YAAY,CACzB,KAAI;EACF,MAAM,cAAc,KAAK,MAAM,aAAa,aAAa,QAAQ,CAAC;AAElE,MAAI,YAAY,MAAM,WAAW;GAC/B,MAAM,aAAa,YAAY;AAC/B,UAAO,2BAA2B;IAChC,IAAI,WAAW,MAAM,YAAY;IACjC,MAAM,WAAW,QAAQ,YAAY;IACrC,aAAa,WAAW,eAAe,YAAY;IACnD,SAAS,WAAW,WAAW,YAAY,WAAW;IACtD,MAAM,WAAW,QAAQ;IACzB,MAAM,WAAW,QAAQ,YAAY,QAAQ;IAC7C,cAAc,WAAW;IAC1B,CAAC;;AAGJ,MAAI,YAAY,MAAM,WAAW,kBAAkB,CAEjD,QAAO,2BAA2B;GAChC,IAFS,YAAY,KAAK,QAAQ,mBAAmB,GAEnD;GACF,MAAM,YAAY;GAClB,aAAa,YAAY;GACzB,SAAS,YAAY,WAAW;GAChC,MAAM;GACN,MAAM,YAAY,QAAQ;GAC3B,CAAC;UAEG,OAAO;AACd,MAAI,MAAM;GAAE,KAAK;GAAO;GAAa,EAAE,+BAA+B;;AAI1E,QAAO;;AAGT,SAAS,oBACP,KACA,QACA,YACM;AACN,KAAI,CAAC,WAAW,IAAI,CAClB;CAGF,IAAI;AACJ,KAAI;AACF,YAAU,YAAY,IAAI;SACpB;AACN;;AAGF,MAAK,MAAM,SAAS,SAAS;EAC3B,MAAM,gBAAgB,KAAK,KAAK,MAAM;AAEtC,MAAI;AACF,OAAI,CAAC,WAAW,cAAc,CAAE;UAC1B;AACN;;EAGF,MAAM,WAAW,aAAa,cAAc;AAC5C,MAAI,CAAC,SAAU;EAEf,MAAM,cAAc,SAAS,MAAM;EAEnC,MAAM,WAAW,WAAW,IAAI,YAAY;AAC5C,MAAI,UAAU;GACZ,MAAM,WAAW;IAAE,WAAW;IAAG,QAAQ;IAAG,SAAS;IAAG,QAAQ;IAAG;AACnE,OAAI,SAAS,WAAW,SAAS,SAAS,SAAS;AACjD,QAAI,MACF;KAAE;KAAa,MAAM;KAAQ,UAAU,SAAS;KAAQ,EACxD,oCACD;AACD;;AAEF,OAAI,KACF;IAAE;IAAa,MAAM;IAAQ,YAAY,SAAS;IAAQ,EAC1D,+CACD;;AAGH,aAAW,IAAI,aAAa;GAC1B,IAAI;GACJ,MAAM;GACN;GACA;GACD,CAAC;;;AAIN,SAAS,sBACP,SACA,QAKA;CACA,MAAM,MAAM,SAAS,eAAe,OAAO,GAAG;CAC9C,MAAM,MAAM,MAAM,sBAAsB,IAAI,GAAG;AAE/C,QAAO;EACL,YAAY,6BAA6B;EACzC,WAAW,QAAQ,iBAAiB,sBAAsB;EAC1D,wBACE,QAAQ,2BACP,OAAO,MAAM,8BAA8B,KAAK,IAAI,GAAG;EAC3D;;;;;AAMH,SAAgB,2BACd,UAAkC,EAAE,EACpC,QACuB;CACvB,MAAM,6BAAa,IAAI,KAAkC;CACzD,MAAM,QAAQ,sBAAsB,SAAS,OAAO;AAEpD,KAAI,MAAM,WACR,qBAAoB,MAAM,YAAY,WAAW,WAAW;AAK9D,KAAI,QAAQ,IAAI,gCAAgC,MAAM,YAAY,SAAS,GAAG,KAAK,QAAQ,YAAY,aAAa,GAAG,CACrH,QAAO,MAAM,KAAK,WAAW,QAAQ,CAAC;AAGxC,qBAAoB,MAAM,WAAW,UAAU,WAAW;AAC1D,KAAI,MAAM,uBACR,qBAAoB,MAAM,wBAAwB,aAAa,WAAW;AAG5E,QAAO,MAAM,KAAK,WAAW,QAAQ,CAAC;;;AAIxC,SAAgB,8BAA8B,QAAkC;AAC9E,KACE,QAAQ,IAAI,yBAAyB,OACrC,QAAQ,IAAI,yBAAyB,OAErC,QAAO;AAQT,SAJE,UAAU,SAAS,OAAO,IAAI,SAAU,OAAmC,WAAW,GAChF,OAAmC,aACrC,KAAA,IAEM,YAAY;;;;mBA/MsC;aAMpC;cACsB;0BACmB;AAW/D,2BAA0B;AAE1B,OAAM,aAAa,oBAAoB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"engine-check.js","names":[],"sources":["../../../src/extensions/engine-check.ts"],"sourcesContent":["/**\n * Light semver range check for `manifest.engines.xopc` without a `semver` dependency.\n * Supports: ^, ~, >=, >, <=, <, =, exact, space-combined (AND). No ||, x-ranges, or pre-release.\n */\n\nexport interface EngineCheckResult {\n compatible: boolean;\n reason?: string;\n parseWarning?: boolean;\n}\n\ninterface SemVer {\n major: number;\n minor: number;\n patch: number;\n}\n\nfunction parseSemver(s: string): SemVer | null {\n const t = s.trim().replace(/^v/i, '');\n const m = t.match(/^(\\d+)\\.(\\d+)\\.(\\d+)$/);\n if (!m) return null;\n return { major: +m[1]!, minor: +m[2]!, patch: +m[3]! };\n}\n\nfunction compareSemver(a: SemVer, b: SemVer): number {\n if (a.major !== b.major) return a.major < b.major ? -1 : 1;\n if (a.minor !== b.minor) return a.minor < b.minor ? -1 : 1;\n if (a.patch !== b.patch) return a.patch < b.patch ? -1 : 1;\n return 0;\n}\n\nconst gte = (a: SemVer, b: SemVer) => compareSemver(a, b) >= 0;\nconst gt = (a: SemVer, b: SemVer) => compareSemver(a, b) > 0;\nconst lt = (a: SemVer, b: SemVer) => compareSemver(a, b) < 0;\nconst lte = (a: SemVer, b: SemVer) => compareSemver(a, b) <= 0;\nconst eq = (a: SemVer, b: SemVer) => compareSemver(a, b) === 0;\n\nfunction checkToken(current: SemVer, token: string): { sat: boolean; warn: boolean } {\n const t = token.trim();\n if (!t) return { sat: true, warn: false };\n\n if (t.startsWith('^')) {\n const v = parseSemver(t.slice(1).trim());\n if (!v) return { sat: true, warn: true };\n const upper: SemVer = { major: v.major + 1, minor: 0, patch: 0 };\n return { sat: gte(current, v) && lt(current, upper), warn: false };\n }\n\n if (t.startsWith('~')) {\n const v = parseSemver(t.slice(1).trim());\n if (!v) return { sat: true, warn: true };\n const upper: SemVer = { major: v.major, minor: v.minor + 1, patch: 0 };\n return { sat: gte(current, v) && lt(current, upper), warn: false };\n }\n\n const comp = t.match(/^(>=|<=|>|=|<)\\s*(.+)$/);\n if (comp) {\n const op = comp[1]!;\n const v = parseSemver(String(comp[2] ?? '').trim());\n if (!v) return { sat: true, warn: true };\n switch (op) {\n case '>=':\n return { sat: gte(current, v), warn: false };\n case '<=':\n return { sat: lte(current, v), warn: false };\n case '>':\n return { sat: gt(current, v), warn: false };\n case '<':\n return { sat: lt(current, v), warn: false };\n case '=':\n return { sat: eq(current, v), warn: false };\n default:\n return { sat: true, warn: true };\n }\n }\n\n const exact = parseSemver(t);\n if (exact) {\n return { sat: eq(current, exact), warn: false };\n }\n\n return { sat: true, warn: true };\n}\n\n/**\n * @param currentVersion — e.g. from `PACKAGE_VERSION`\n * @param requiredRange — e.g. `\">=1.0.0 <2.0.0\"` or `\"^0.0.1\"`\n */\nexport function checkEngineCompatibility(\n currentVersion: string,\n requiredRange: string,\n): EngineCheckResult {\n const current = parseSemver(currentVersion.trim());\n if (!current) {\n return {\n compatible: true,\n parseWarning: true,\n reason: `Current xopc version could not be parsed: ${currentVersion}`,\n };\n }\n\n const range = requiredRange.trim();\n if (!range) {\n return { compatible: true, parseWarning: true };\n }\n\n const parts = range.split(/\\s+/).filter(Boolean);\n if (parts.length === 0) {\n return { compatible: true, parseWarning: true };\n }\n\n let anyWarn = false;\n for (const p of parts) {\n const { sat, warn } = checkToken(current, p);\n if (warn) {\n anyWarn = true;\n continue;\n }\n if (!sat) {\n return {\n compatible: false,\n reason: `xopc version ${currentVersion} does not satisfy engines.xopc: \"${requiredRange}\"`,\n };\n }\n }\n\n if (anyWarn) {\n return {\n compatible: true,\n parseWarning: true,\n reason: `Could not fully parse engines.xopc range: \"${requiredRange}\"`,\n };\n }\n\n return { compatible: true };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension-metadata-snapshot.js","names":[],"sources":["../../../src/extensions/extension-metadata-snapshot.ts"],"sourcesContent":["/**\n * One-shot extension manifest discovery for config load + gateway bootstrap reuse.\n */\n\nimport { resolveDefaultAgentId } from '../agent/agent-scope.js';\nimport type { Config } from '../config/schema.js';\nimport {\n resolveAgentWorkspaceDir,\n resolveExtensionsDir,\n resolveWorkspaceExtensionsDir,\n} from '../config/paths.js';\nimport {\n discoverExtensionsFromDisk,\n type DiscoverConfig,\n type ExtensionLoaderOptions,\n} from './discover-extensions.js';\nimport { ManifestRegistry } from './manifest-registry.js';\nimport type { DiscoveredExtension } from './types/loader.js';\n\nexport interface ExtensionMetadataSnapshot {\n discovered: DiscoveredExtension[];\n manifestRegistry: ManifestRegistry;\n}\n\n/**\n * Scan extension directories once and build a manifest registry snapshot.\n * Pass the result to {@link ExtensionLoader.setManifestSnapshot} to avoid rediscovery.\n */\nexport function buildExtensionMetadataSnapshot(\n options: ExtensionLoaderOptions,\n config?: DiscoverConfig,\n): ExtensionMetadataSnapshot {\n const discovered = discoverExtensionsFromDisk(options, config);\n return {\n discovered,\n manifestRegistry: ManifestRegistry.fromDiscovered(discovered),\n };\n}\n\n/**\n * Resolve loader options from app config when caller omits workspace paths.\n */\nexport function resolveExtensionLoaderOptionsFromConfig(\n config: DiscoverConfig,\n): ExtensionLoaderOptions {\n const cfg = config as Config;\n const aid = resolveDefaultAgentId(cfg);\n return {\n workspaceDir: resolveAgentWorkspaceDir(cfg, aid),\n extensionsDir: resolveExtensionsDir(),\n workspaceExtensionsDir: resolveWorkspaceExtensionsDir(cfg, aid),\n };\n}\n"],"mappings":";;;;;;;;;;AA4BA,SAAgB,+BACd,SACA,QAC2B;CAC3B,MAAM,aAAa,2BAA2B,SAAS,OAAO;AAC9D,QAAO;EACL;EACA,kBAAkB,iBAAiB,eAAe,WAAW;EAC9D;;;;;AAMH,SAAgB,wCACd,QACwB;CACxB,MAAM,MAAM;CACZ,MAAM,MAAM,sBAAsB,IAAI;AACtC,QAAO;EACL,cAAc,yBAAyB,KAAK,IAAI;EAChD,eAAe,sBAAsB;EACrC,wBAAwB,8BAA8B,KAAK,IAAI;EAChE;;;mBA/C6D;aAMpC;2BAKM;yBACwB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"extension-registry-impl.js","names":[],"sources":["../../../src/extensions/extension-registry-impl.ts"],"sourcesContent":["/**\n * `ExtensionRegistryImpl` — extracted from `loader.ts` so `api.ts` can use it\n * without going through `loader.ts` (which imports back from `api.ts`,\n * forming a circular cycle).\n *\n * `loader.ts` still re-exports the class for backward-compat; this file is a\n * leaf and only depends on the type definitions in `./types/index.js`.\n */\n\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\n\nimport type { ChannelPlugin } from '../channels/plugin-types.js';\nimport { createLogger } from '../utils/logger.js';\nimport type {\n ExtensionCliRegistration,\n ExtensionCommand,\n ExtensionHookEvent,\n ExtensionHookHandler,\n ExtensionRecord,\n ExtensionRegistry,\n ExtensionMigrationRegistration,\n ExtensionReloadRegistration,\n ExtensionService,\n GatewayMethodHandler,\n HttpRequestHandler,\n TuiExtensionRegistrar,\n TuiExtensionRegistration,\n} from './types/index.js';\n\nconst log = createLogger('ExtensionRegistry');\n\nexport class ExtensionRegistryImpl implements ExtensionRegistry {\n extensions = new Map<string, ExtensionRecord>();\n hooks = new Map<ExtensionHookEvent, ExtensionHookHandler[]>();\n httpRoutes = new Map<string, HttpRequestHandler>();\n commands = new Map<string, ExtensionCommand>();\n services = new Map<string, ExtensionService>();\n gatewayMethods = new Map<string, GatewayMethodHandler>();\n tools: Map<string, AgentTool<any, any>> = new Map();\n channelPlugins: ChannelPlugin[] = [];\n private cliRegistrations: ExtensionCliRegistration[] = [];\n private reloadRegistrations: ExtensionReloadRegistration[] = [];\n private migrationRegistrations: ExtensionMigrationRegistration[] = [];\n private tuiRegistrations: TuiExtensionRegistration[] = [];\n\n addExtension(record: ExtensionRecord): void {\n this.extensions.set(record.id, record);\n }\n\n getExtension(id: string): ExtensionRecord | undefined {\n return this.extensions.get(id);\n }\n\n getEnabledExtensions(): ExtensionRecord[] {\n return Array.from(this.extensions.values()).filter((p) => p.enabled);\n }\n\n addHook(\n event: ExtensionHookEvent,\n handler: ExtensionHookHandler,\n _extensionId: string,\n _priority = 0,\n ): void {\n if (!this.hooks.has(event)) {\n this.hooks.set(event, []);\n }\n this.hooks.get(event)!.push(handler);\n }\n\n getHooks(event: ExtensionHookEvent): ExtensionHookHandler[] {\n return this.hooks.get(event) || [];\n }\n\n addChannelPlugin(plugin: ChannelPlugin): void {\n this.channelPlugins = this.channelPlugins.filter((p) => p.id !== plugin.id);\n this.channelPlugins.push(plugin);\n }\n\n addHttpRoute(path: string, handler: HttpRequestHandler): void {\n if (this.httpRoutes.has(path)) {\n log.warn({ path }, `HTTP route already registered, overwriting`);\n }\n this.httpRoutes.set(path, handler);\n }\n\n getHttpRoute(path: string): HttpRequestHandler | undefined {\n return this.httpRoutes.get(path);\n }\n\n addCommand(command: ExtensionCommand): void {\n if (this.commands.has(command.name)) {\n log.warn({ command: command.name }, `Command already registered, overwriting`);\n }\n this.commands.set(command.name, command);\n }\n\n getCommand(name: string): ExtensionCommand | undefined {\n return this.commands.get(name);\n }\n\n addService(service: ExtensionService): void {\n if (this.services.has(service.id)) {\n log.warn({ service: service.id }, `Service already registered, overwriting`);\n }\n this.services.set(service.id, service);\n }\n\n getService(id: string): ExtensionService | undefined {\n return this.services.get(id);\n }\n\n addGatewayMethod(method: string, handler: GatewayMethodHandler): void {\n if (this.gatewayMethods.has(method)) {\n log.warn({ method }, `Gateway method already registered, overwriting`);\n }\n this.gatewayMethods.set(method, handler);\n }\n\n getGatewayMethod(method: string): GatewayMethodHandler | undefined {\n return this.gatewayMethods.get(method);\n }\n\n // Tools\n addTool(tool: any): void {\n if (this.tools.has(tool.name)) {\n log.warn({ tool: tool.name }, `Tool already registered, overwriting`);\n }\n this.tools.set(tool.name, tool);\n }\n\n removeTool(name: string): void {\n this.tools.delete(name);\n }\n\n getTools(): Map<string, any> {\n return this.tools;\n }\n\n getTool(name: string): any | undefined {\n return this.tools.get(name);\n }\n\n getAllTools(): any[] {\n return Array.from(this.tools.values());\n }\n\n addCliRegistration(reg: ExtensionCliRegistration): void {\n this.cliRegistrations.push(reg);\n }\n\n getCliRegistrations(): readonly ExtensionCliRegistration[] {\n return this.cliRegistrations;\n }\n\n addTuiRegistration(extensionId: string, register: TuiExtensionRegistrar): void {\n this.tuiRegistrations.push({ extensionId, register });\n }\n\n getTuiRegistrations(): readonly TuiExtensionRegistration[] {\n return this.tuiRegistrations;\n }\n\n addReloadRegistration(reg: ExtensionReloadRegistration): void {\n this.reloadRegistrations = this.reloadRegistrations.filter(\n (r) => r.extensionId !== reg.extensionId,\n );\n this.reloadRegistrations.push(reg);\n }\n\n removeReloadRegistration(extensionId: string): void {\n this.reloadRegistrations = this.reloadRegistrations.filter(\n (r) => r.extensionId !== extensionId,\n );\n }\n\n getReloadRegistrations(): readonly ExtensionReloadRegistration[] {\n return this.reloadRegistrations;\n }\n\n addMigrationRegistration(reg: ExtensionMigrationRegistration): void {\n this.migrationRegistrations = this.migrationRegistrations.filter(\n (r) => !(r.extensionId === reg.extensionId && r.migration.id === reg.migration.id),\n );\n this.migrationRegistrations.push(reg);\n }\n\n getMigrationRegistrations(): readonly ExtensionMigrationRegistration[] {\n return this.migrationRegistrations;\n }\n\n getMatchingReloadRegistrations(changedPaths: string[]): ExtensionReloadRegistration[] {\n return this.reloadRegistrations.filter((reg) => {\n if (reg.configPrefixes.length === 0) {\n return true;\n }\n return reg.configPrefixes.some((prefix) =>\n changedPaths.some((path) => path === prefix || path.startsWith(`${prefix}.`)),\n );\n });\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"health.js","names":[],"sources":["../../../src/extensions/health.ts"],"sourcesContent":["import { existsSync } from 'fs';\nimport { readFile, readdir } from 'fs/promises';\nimport { join } from 'path';\nimport { resolveExtensionsDir } from '../config/paths.js';\nimport { getExtensionLockfileManager } from './lockfile.js';\n\n// ============================================\n// Types\n// ============================================\n\nexport type HealthStatus = 'healthy' | 'warning' | 'error';\n\nexport interface ExtensionHealth {\n /** Extension ID */\n extensionId: string;\n /** Overall health status */\n status: HealthStatus;\n /** Installed version */\n version?: string;\n /** Expected version from lockfile */\n expectedVersion?: string;\n /** List of issues */\n issues: string[];\n /** Last check timestamp */\n checkedAt: string;\n}\n\nexport interface HealthReport {\n /** Overall status */\n status: HealthStatus;\n /** Per-extension health */\n extensions: ExtensionHealth[];\n /** Summary counts */\n summary: {\n total: number;\n healthy: number;\n warning: number;\n error: number;\n };\n /** Check timestamp */\n checkedAt: string;\n}\n\n// ============================================\n// Extension Health Checker\n// ============================================\n\nexport class ExtensionHealthChecker {\n private readonly extensionsDir: string;\n\n constructor(extensionsDir?: string) {\n this.extensionsDir = extensionsDir || resolveExtensionsDir();\n }\n\n /**\n * Check health of a single extension\n */\n async checkExtension(extensionId: string): Promise<ExtensionHealth> {\n const extDir = join(this.extensionsDir, extensionId);\n const issues: string[] = [];\n let status: HealthStatus = 'healthy';\n\n // Check if directory exists\n if (!existsSync(extDir)) {\n return {\n extensionId,\n status: 'error',\n issues: ['Extension directory not found'],\n checkedAt: new Date().toISOString(),\n };\n }\n\n // Check required files\n const requiredFiles = ['package.json', 'xopc.extension.json'];\n for (const file of requiredFiles) {\n const filePath = join(extDir, file);\n if (!existsSync(filePath)) {\n issues.push(`Missing required file: ${file}`);\n status = 'error';\n }\n }\n\n // Check if node_modules exists\n const nodeModulesPath = join(extDir, 'node_modules');\n if (!existsSync(nodeModulesPath)) {\n issues.push('node_modules not found (run npm install)');\n status = status === 'error' ? 'error' : 'warning';\n }\n\n // Load and validate package.json\n let version: string | undefined;\n try {\n const pkgPath = join(extDir, 'package.json');\n const pkgContent = await readFile(pkgPath, 'utf-8');\n const pkg = JSON.parse(pkgContent);\n version = pkg.version;\n\n // Check for required fields\n if (!pkg.name) {\n issues.push('package.json missing name field');\n status = 'error';\n }\n if (!pkg.version) {\n issues.push('package.json missing version field');\n status = 'error';\n }\n if (!pkg.main && !pkg.exports) {\n issues.push('package.json missing main or exports field');\n status = 'warning';\n }\n } catch {\n issues.push('Failed to parse package.json');\n status = 'error';\n }\n\n // Load and validate xopc.extension.json\n try {\n const extConfigPath = join(extDir, 'xopc.extension.json');\n if (existsSync(extConfigPath)) {\n const extContent = await readFile(extConfigPath, 'utf-8');\n const extConfig = JSON.parse(extContent);\n\n if (!extConfig.id) {\n issues.push('xopc.extension.json missing id field');\n status = 'error';\n }\n if (!extConfig.name) {\n issues.push('xopc.extension.json missing name field');\n status = 'warning';\n }\n if (!extConfig.version) {\n issues.push('xopc.extension.json missing version field');\n status = 'warning';\n }\n }\n } catch {\n issues.push('Failed to parse xopc.extension.json');\n status = status === 'error' ? 'error' : 'warning';\n }\n\n // Check against lockfile\n const lockfileManager = getExtensionLockfileManager();\n const lockEntry = await lockfileManager.get(extensionId);\n\n if (lockEntry) {\n if (version && version !== lockEntry.version) {\n issues.push(\n `Version mismatch: installed ${version}, expected ${lockEntry.version}`\n );\n status = 'warning';\n }\n }\n\n return {\n extensionId,\n status,\n version,\n expectedVersion: lockEntry?.version,\n issues,\n checkedAt: new Date().toISOString(),\n };\n }\n\n /**\n * Check health of all extensions\n */\n async checkAll(): Promise<HealthReport> {\n const extensions: ExtensionHealth[] = [];\n\n if (!existsSync(this.extensionsDir)) {\n return {\n status: 'healthy',\n extensions: [],\n summary: { total: 0, healthy: 0, warning: 0, error: 0 },\n checkedAt: new Date().toISOString(),\n };\n }\n\n const entries = await readdir(this.extensionsDir, { withFileTypes: true });\n const extensionDirs = entries.filter((e) => e.isDirectory() && !e.name.startsWith('.'));\n\n for (const dir of extensionDirs) {\n const health = await this.checkExtension(dir.name);\n extensions.push(health);\n }\n\n // Calculate summary\n const summary = {\n total: extensions.length,\n healthy: extensions.filter((e) => e.status === 'healthy').length,\n warning: extensions.filter((e) => e.status === 'warning').length,\n error: extensions.filter((e) => e.status === 'error').length,\n };\n\n // Determine overall status\n let status: HealthStatus = 'healthy';\n if (summary.error > 0) {\n status = 'error';\n } else if (summary.warning > 0) {\n status = 'warning';\n }\n\n return {\n status,\n extensions,\n summary,\n checkedAt: new Date().toISOString(),\n };\n }\n\n /**\n * Fix common issues automatically\n */\n async fixIssues(extensionId: string): Promise<{ fixed: string[]; failed: string[] }> {\n const fixed: string[] = [];\n const failed: string[] = [];\n\n const health = await this.checkExtension(extensionId);\n const extDir = join(this.extensionsDir, extensionId);\n\n for (const issue of health.issues) {\n // Try to fix missing node_modules\n if (issue.includes('node_modules not found')) {\n try {\n const { spawn } = await import('child_process');\n const npm = process.platform === 'win32' ? 'npm.cmd' : 'npm';\n\n await new Promise<void>((resolve, reject) => {\n const proc = spawn(npm, ['install'], {\n cwd: extDir,\n stdio: 'pipe',\n });\n\n proc.on('close', (code) => {\n if (code === 0) resolve();\n else reject(new Error(`npm install exited with code ${code}`));\n });\n\n proc.on('error', reject);\n });\n\n fixed.push('Installed node_modules');\n } catch {\n failed.push('Failed to install node_modules');\n }\n }\n\n // Other auto-fixes can be added here\n }\n\n return { fixed, failed };\n }\n\n /**\n * Check for orphaned extensions (not in lockfile)\n */\n async findOrphaned(): Promise<string[]> {\n if (!existsSync(this.extensionsDir)) {\n return [];\n }\n\n const entries = await readdir(this.extensionsDir, { withFileTypes: true });\n const extensionDirs = entries.filter((e) => e.isDirectory() && !e.name.startsWith('.'));\n\n const lockfileManager = getExtensionLockfileManager();\n const orphaned: string[] = [];\n\n for (const dir of extensionDirs) {\n const isLocked = await lockfileManager.has(dir.name);\n if (!isLocked) {\n orphaned.push(dir.name);\n }\n }\n\n return orphaned;\n }\n\n /**\n * Generate health report as string\n */\n formatReport(report: HealthReport): string {\n const lines: string[] = [];\n\n lines.push('Extension Health Report');\n lines.push('='.repeat(50));\n lines.push('');\n\n lines.push(`Status: ${report.status.toUpperCase()}`);\n lines.push(`Checked: ${new Date(report.checkedAt).toLocaleString()}`);\n lines.push('');\n\n lines.push('Summary:');\n lines.push(` Total: ${report.summary.total}`);\n lines.push(` Healthy: ${report.summary.healthy} ✓`);\n lines.push(` Warning: ${report.summary.warning} ⚠`);\n lines.push(` Error: ${report.summary.error} ✗`);\n lines.push('');\n\n if (report.extensions.length > 0) {\n lines.push('Details:');\n for (const ext of report.extensions) {\n const icon =\n ext.status === 'healthy' ? '✓' : ext.status === 'warning' ? '⚠' : '✗';\n lines.push(` ${icon} ${ext.extensionId}`);\n\n if (ext.version) {\n lines.push(` Version: ${ext.version}`);\n }\n\n for (const issue of ext.issues) {\n lines.push(` - ${issue}`);\n }\n }\n }\n\n return lines.join('\\n');\n }\n}\n\n// ============================================\n// Global Instance\n// ============================================\n\nlet globalChecker: ExtensionHealthChecker | undefined;\n\nexport function getExtensionHealthChecker(\n extensionsDir?: string\n): ExtensionHealthChecker {\n if (!globalChecker) {\n globalChecker = new ExtensionHealthChecker(extensionsDir);\n }\n return globalChecker;\n}\n\nexport function resetExtensionHealthChecker(): void {\n globalChecker = undefined;\n}\n\n// ============================================\n// Convenience Functions\n// ============================================\n\nexport async function checkExtensionHealth(\n extensionId: string\n): Promise<ExtensionHealth> {\n const checker = getExtensionHealthChecker();\n return checker.checkExtension(extensionId);\n}\n\nexport async function checkAllExtensionsHealth(): Promise<HealthReport> {\n const checker = getExtensionHealthChecker();\n return checker.checkAll();\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","names":["typedResult"],"sources":["../../../src/extensions/hooks.ts"],"sourcesContent":["/**\n * Extension Hook System\n */\n\nimport type {\n ExtensionHookEvent,\n HookAgentContext as HookContext,\n AgentMessage,\n BeforeAgentStartContext,\n BeforeToolCallContext,\n BeforeToolCallResult,\n MessageSendingContext,\n MessageSendingResult,\n MessageSentContext,\n} from './types/hooks.js';\n\nimport { ExtensionRegistryImpl as ExtensionRegistry } from './loader.js';\nimport { HOOK_EXECUTION_MODES } from './types/hooks.js';\n\n// ============================================================================\n// Hook Runner Options\n// ============================================================================\n\nexport interface HookRunnerOptions {\n catchErrors?: boolean;\n logger?: HookLogger;\n}\n\nexport interface HookLogger {\n debug?: (message: string) => void;\n info: (message: string) => void;\n warn: (message: string) => void;\n error: (message: string) => void;\n}\n\n// ============================================================================\n// Extension Hook Runner\n// ============================================================================\n\nexport class ExtensionHookRunner {\n private registry: ExtensionRegistry;\n private options: HookRunnerOptions;\n\n constructor(registry: ExtensionRegistry, options?: HookRunnerOptions) {\n this.registry = registry;\n this.options = options || {};\n }\n\n getRegistry(): ExtensionRegistry {\n return this.registry;\n }\n\n async runHooks<K extends ExtensionHookEvent>(\n event: K,\n eventData: unknown,\n context: HookContext,\n ): Promise<{ success: boolean; results: unknown[] }> {\n const handlers = this.registry.getHooks(event);\n const results: unknown[] = [];\n\n for (const handler of handlers) {\n try {\n const result = await handler(eventData, context);\n results.push({ success: true, result });\n } catch (error) {\n results.push({ \n success: false, \n error: error instanceof Error ? error.message : String(error) \n });\n \n if (!this.options.catchErrors) {\n throw error;\n }\n \n this.options.logger?.error?.(\n `Hook error in ${event}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n return { success: true, results };\n }\n\n async runHooksWithResult<K extends ExtensionHookEvent>(\n event: K,\n eventData: BeforeAgentStartContext,\n context: HookContext,\n ): Promise<BeforeAgentStartContext> {\n const handlers = this.registry.getHooks(event);\n let modifiedData = { ...eventData };\n\n for (const handler of handlers) {\n try {\n const result = await handler(modifiedData, context);\n if (result && typeof result === 'object') {\n modifiedData = { ...modifiedData, ...result };\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(`Hook modification error: ${error}`);\n }\n }\n\n return modifiedData;\n }\n\n async runBeforeToolCall(\n toolName: string,\n params: Record<string, unknown>,\n context: HookContext,\n ): Promise<{ allowed: boolean; params?: Record<string, unknown>; reason?: string }> {\n const event: BeforeToolCallContext = {\n ...context,\n toolName,\n params,\n timestamp: new Date(),\n };\n\n const handlers = this.registry.getHooks('before_tool_call');\n let modifiedParams = { ...params };\n let blocked = false;\n let blockReason: string | undefined;\n\n for (const handler of handlers) {\n try {\n const result = await handler(event, context);\n if (result && typeof result === 'object') {\n const typedResult = result as BeforeToolCallResult;\n if (typedResult.block) {\n blocked = true;\n blockReason = typedResult.blockReason;\n }\n if (typedResult.params) {\n modifiedParams = typedResult.params;\n }\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(`before_tool_call hook error: ${error}`);\n }\n }\n\n if (blocked) {\n return { allowed: false, reason: blockReason };\n }\n\n return { allowed: true, params: modifiedParams };\n }\n\n async runMessageSending(\n to: string,\n content: string,\n context: HookContext,\n opts?: { channel?: string },\n ): Promise<{ send: boolean; content?: string; reason?: string }> {\n const event: MessageSendingContext = {\n ...context,\n to,\n content,\n channel: opts?.channel,\n timestamp: new Date(),\n };\n\n const handlers = this.registry.getHooks('message_sending');\n let modifiedContent = content;\n let cancelled = false;\n let cancelReason: string | undefined;\n\n for (const handler of handlers) {\n try {\n const result = await handler(event, context);\n if (result && typeof result === 'object') {\n const typedResult = result as MessageSendingResult;\n if (typedResult.cancel) {\n cancelled = true;\n cancelReason = typedResult.cancelReason;\n }\n if (typedResult.content) {\n modifiedContent = typedResult.content;\n }\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(`message_sending hook error: ${error}`);\n }\n }\n\n if (cancelled) {\n return { send: false, reason: cancelReason };\n }\n\n return { send: true, content: modifiedContent };\n }\n\n async runMessageSent(\n to: string,\n content: string,\n success: boolean,\n error: string | undefined,\n context: HookContext,\n opts?: { channel?: string },\n ): Promise<void> {\n const event: MessageSentContext = {\n ...context,\n to,\n content,\n success,\n error,\n channel: opts?.channel,\n timestamp: new Date(),\n };\n\n const handlers = this.registry.getHooks('message_sent');\n for (const handler of handlers) {\n try {\n await handler(event, context);\n } catch (err) {\n if (!this.options.catchErrors) {\n throw err;\n }\n this.options.logger?.warn?.(\n `message_sent hook error: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n\n // Enhanced Hook Methods\n async runContextHook(\n messages: AgentMessage[],\n context?: HookContext,\n ): Promise<{ messages: AgentMessage[]; modified: boolean }> {\n const handlers = this.registry.getHooks('context');\n \n if (handlers.length === 0) {\n return { messages, modified: false };\n }\n\n let currentMessages = [...messages];\n let modified = false;\n\n const event = {\n messages: currentMessages,\n timestamp: new Date(),\n ...context,\n };\n\n for (const handler of handlers) {\n try {\n const result = await handler(event, context || {});\n \n if (result && typeof result === 'object' && 'messages' in result) {\n const typedResult = result as { messages: AgentMessage[] };\n currentMessages = typedResult.messages as AgentMessage[];\n event.messages = currentMessages;\n modified = true;\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(\n `context hook error: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n return { messages: currentMessages as AgentMessage[], modified };\n }\n\n async runInputHook(\n text: string,\n images: Array<{ type: string; data: string; mimeType?: string }> | undefined,\n source: string,\n context?: HookContext,\n ): Promise<{\n text: string;\n images: Array<{ type: string; data: string; mimeType?: string }> | undefined;\n action: 'continue' | 'handled';\n skipAgent: boolean;\n response?: string;\n }> {\n const handlers = this.registry.getHooks('input');\n\n if (handlers.length === 0) {\n return {\n text,\n images,\n action: 'continue',\n skipAgent: false,\n };\n }\n\n let currentText = text;\n let currentImages = images;\n\n const event = {\n text: currentText,\n images: currentImages,\n source,\n timestamp: new Date(),\n ...context,\n };\n\n for (const handler of handlers) {\n try {\n const result = await handler(event, context || {});\n\n if (result && typeof result === 'object') {\n const typedResult = result as {\n action: 'continue' | 'handled' | 'transform';\n text?: string;\n images?: Array<{ type: string; data: string; mimeType?: string }>;\n response?: string;\n };\n\n if (typedResult.action === 'transform') {\n if (typedResult.text !== undefined) {\n currentText = typedResult.text;\n event.text = currentText;\n }\n if (typedResult.images !== undefined) {\n currentImages = typedResult.images;\n event.images = currentImages;\n }\n continue;\n }\n\n if (typedResult.action === 'handled') {\n return {\n text: currentText,\n images: currentImages,\n action: 'handled',\n skipAgent: true,\n response: typedResult.response,\n };\n }\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(\n `input hook error: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n return {\n text: currentText,\n images: currentImages,\n action: 'continue',\n skipAgent: false,\n };\n }\n\n // Three-Mode Hook Execution\n async runVoidHook<K extends ExtensionHookEvent>(\n hookName: K,\n eventData: unknown,\n context: HookContext,\n ): Promise<void> {\n const handlers = this.registry.getHooks(hookName);\n if (handlers.length === 0) return;\n\n await Promise.allSettled(\n handlers.map(async (handler) => {\n try {\n await handler(eventData, context);\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(\n `Void hook error in ${hookName}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n })\n );\n }\n\n async runModifyingHook<K extends ExtensionHookEvent, R = unknown>(\n hookName: K,\n eventData: unknown,\n context: HookContext,\n merge?: (current: R, next: R) => R,\n ): Promise<R | undefined> {\n const handlers = this.registry.getHooks(hookName);\n if (handlers.length === 0) return undefined;\n\n let result: R | undefined;\n\n for (const handler of handlers) {\n try {\n const handlerResult = await handler(eventData, context);\n if (handlerResult && typeof handlerResult === 'object') {\n if (merge && result) {\n result = merge(result, handlerResult as R);\n } else if (!result) {\n result = handlerResult as R;\n }\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(\n `Modifying hook error in ${hookName}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n return result;\n }\n\n async runClaimingHook<K extends ExtensionHookEvent>(\n hookName: K,\n eventData: unknown,\n context: HookContext,\n ): Promise<{ handled: boolean; result?: unknown }> {\n const handlers = this.registry.getHooks(hookName);\n\n for (const handler of handlers) {\n try {\n const result = await handler(eventData, context);\n \n if (result && typeof result === 'object' && 'handled' in result) {\n const typedResult = result as { handled: boolean };\n if (typedResult.handled) {\n return { handled: true, result };\n }\n }\n } catch (error) {\n if (!this.options.catchErrors) {\n throw error;\n }\n this.options.logger?.warn?.(\n `Claiming hook error in ${hookName}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n return { handled: false };\n }\n\n async runHooksByMode<K extends ExtensionHookEvent>(\n hookName: K,\n eventData: unknown,\n context: HookContext,\n ): Promise<{ success: boolean; result?: unknown }> {\n const mode = HOOK_EXECUTION_MODES[hookName];\n\n switch (mode) {\n case 'void':\n await this.runVoidHook(hookName, eventData, context);\n return { success: true };\n\n case 'modifying':\n const modifyingResult = await this.runModifyingHook(hookName, eventData, context);\n return { success: true, result: modifyingResult };\n\n case 'claiming':\n const claimingResult = await this.runClaimingHook(hookName, eventData, context);\n return { success: true, result: claimingResult };\n\n default: {\n const fallbackResult = await this.runHooks(hookName, eventData, context);\n return { success: fallbackResult.success };\n }\n }\n }\n}\n\n// ============================================================================\n// Hook Utilities\n// ============================================================================\n\nexport function createHookContext(overrides?: Partial<HookContext>): HookContext {\n return {\n timestamp: new Date(),\n ...overrides,\n };\n}\n\nexport function isHookEvent(value: string): value is ExtensionHookEvent {\n const hookEvents: ExtensionHookEvent[] = [\n 'before_agent_start',\n 'agent_end',\n 'before_compaction',\n 'after_compaction',\n 'message_received',\n 'message_sending',\n 'message_sent',\n 'before_tool_call',\n 'after_tool_call',\n 'session_start',\n 'session_end',\n 'gateway_start',\n 'gateway_stop',\n 'context',\n 'input',\n 'turn_start',\n 'turn_end',\n 'tool_execution_start',\n 'tool_execution_update',\n 'tool_execution_end',\n 'before_model_resolve',\n 'before_prompt_build',\n 'llm_input',\n 'llm_output',\n 'inbound_claim',\n 'before_reset',\n 'before_message_write',\n 'subagent_spawning',\n 'subagent_delivery_target',\n 'subagent_ended',\n 'webchat_turn_complete',\n ];\n return hookEvents.includes(value as ExtensionHookEvent);\n}\n\nexport type { HookContext };\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/extensions/index.ts"],"sourcesContent":["/**\n * xopc Extension System\n * \n * @module extensions\n */\n\n// Core Types\nexport * from './types/index.js';\n\n// Extension API\nexport { ExtensionApiImpl, createExtensionLogger, createPathResolver } from './api.js';\n\n// Extension Loader and Registry\nexport { ExtensionRegistryImpl, ExtensionLoader, normalizeExtensionConfig, resolveExtensionPath, areExtensionsGloballyDisabled } from './loader.js';\nexport type { ActivationPlanLoadOptions } from './loader.js';\nexport type { ExtensionRegistry } from './types/core.js';\n\n// Manifest-first control plane\nexport { ManifestRegistry, type ManifestRegistryEntry } from './manifest-registry.js';\nexport {\n ActivationPlanner,\n type ActivationContext,\n type ActivationDecision,\n type ActivationReason,\n type ActivationLoadPhase,\n} from './activation-planner.js';\nexport {\n mergeActivationContext,\n collectConfiguredChannelIds,\n collectConfiguredProviderIds,\n} from './activation-context.js';\nexport {\n listOnboardProviders,\n listOnboardChannels,\n resolveProviderForModel,\n type OnboardProviderInfo,\n type OnboardChannelInfo,\n} from './onboard-helpers.js';\nexport { normalizeExtensionManifest } from './normalize-manifest.js';\nexport {\n buildExtensionMetadataSnapshot,\n resolveExtensionLoaderOptionsFromConfig,\n type ExtensionMetadataSnapshot,\n} from './extension-metadata-snapshot.js';\nexport {\n discoverExtensionsFromDisk,\n type ExtensionLoaderOptions,\n type ExtensionSourceOrigin,\n} from './discover-extensions.js';\n\n// Hook System\nexport { ExtensionHookRunner, createHookContext, isHookEvent } from './hooks.js';\n"],"mappings":";;;;;;;;;;;;;;wBAkBsF;yBAoBjB;kCAK3B;0BAKR"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install-transaction.js","names":[],"sources":["../../../src/extensions/install-transaction.ts"],"sourcesContent":["import {\n existsSync,\n mkdirSync,\n mkdtempSync,\n readFileSync,\n renameSync,\n rmSync,\n} from 'node:fs';\nimport { join } from 'node:path';\nimport { pathToFileURL } from 'node:url';\n\nimport { installExtensionFromStoreZip } from './install.js';\n\ninterface ExtensionManifestEntry {\n id?: string;\n main?: string;\n}\n\nexport interface StagedExtensionInstall {\n extensionId: string;\n stagingRoot: string;\n stagedExtensionDir: string;\n targetDir: string;\n backupDir?: string;\n committed: boolean;\n}\n\n/** Extract, validate, install dependencies, and import-check an extension away from its live path. */\nexport async function stageExtensionStoreZip(\n buffer: Buffer,\n extensionsDir: string,\n): Promise<StagedExtensionInstall> {\n mkdirSync(extensionsDir, { recursive: true });\n const stagingRoot = mkdtempSync(join(extensionsDir, '.xopc-install-'));\n\n try {\n const result = await installExtensionFromStoreZip(buffer, stagingRoot);\n if (!result.ok || !result.extensionId || !result.targetDir) {\n throw new Error(result.error ?? 'Extension staging failed');\n }\n\n const manifestPath = join(result.targetDir, 'xopc.extension.json');\n const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) as ExtensionManifestEntry;\n if (!manifest.main) {\n throw new Error('Extension manifest must declare main');\n }\n\n const mainUrl = pathToFileURL(join(result.targetDir, manifest.main));\n mainUrl.searchParams.set('xopcInstallCheck', `${Date.now()}-${Math.random()}`);\n await import(mainUrl.href);\n\n return {\n extensionId: result.extensionId,\n stagingRoot,\n stagedExtensionDir: result.targetDir,\n targetDir: join(extensionsDir, result.extensionId),\n committed: false,\n };\n } catch (err) {\n rmSync(stagingRoot, { recursive: true, force: true });\n throw err;\n }\n}\n\n/** Move a staged extension into its live path, preserving the previous version for rollback. */\nexport function commitStagedExtensionInstall(\n state: StagedExtensionInstall,\n overwrite: boolean,\n): void {\n if (existsSync(state.targetDir)) {\n if (!overwrite) {\n throw new Error(`Extension already exists at ${state.targetDir}. Use overwrite to replace it.`);\n }\n state.backupDir = join(state.stagingRoot, 'previous');\n renameSync(state.targetDir, state.backupDir);\n }\n\n try {\n renameSync(state.stagedExtensionDir, state.targetDir);\n state.committed = true;\n } catch (err) {\n if (state.backupDir && existsSync(state.backupDir) && !existsSync(state.targetDir)) {\n renameSync(state.backupDir, state.targetDir);\n state.backupDir = undefined;\n }\n throw err;\n }\n}\n\n/** Restore the previous live extension, or remove a newly committed install. */\nexport function rollbackStagedExtensionInstall(state: StagedExtensionInstall): void {\n if (state.committed && existsSync(state.targetDir)) {\n rmSync(state.targetDir, { recursive: true, force: true });\n }\n if (state.backupDir && existsSync(state.backupDir)) {\n renameSync(state.backupDir, state.targetDir);\n }\n state.committed = false;\n rmSync(state.stagingRoot, { recursive: true, force: true });\n}\n\n/** Delete the preserved previous version after every durable metadata write succeeds. */\nexport function finalizeStagedExtensionInstall(state: StagedExtensionInstall): void {\n rmSync(state.stagingRoot, { recursive: true, force: true });\n state.backupDir = undefined;\n}\n"],"mappings":";;;;;;AA4BA,eAAsB,uBACpB,QACA,eACiC;AACjC,WAAU,eAAe,EAAE,WAAW,MAAM,CAAC;CAC7C,MAAM,cAAc,YAAY,KAAK,eAAe,iBAAiB,CAAC;AAEtE,KAAI;EACF,MAAM,SAAS,MAAM,6BAA6B,QAAQ,YAAY;AACtE,MAAI,CAAC,OAAO,MAAM,CAAC,OAAO,eAAe,CAAC,OAAO,UAC/C,OAAM,IAAI,MAAM,OAAO,SAAS,2BAA2B;EAG7D,MAAM,eAAe,KAAK,OAAO,WAAW,sBAAsB;EAClE,MAAM,WAAW,KAAK,MAAM,aAAa,cAAc,OAAO,CAAC;AAC/D,MAAI,CAAC,SAAS,KACZ,OAAM,IAAI,MAAM,uCAAuC;EAGzD,MAAM,UAAU,cAAc,KAAK,OAAO,WAAW,SAAS,KAAK,CAAC;AACpE,UAAQ,aAAa,IAAI,oBAAoB,GAAG,KAAK,KAAK,CAAC,GAAG,KAAK,QAAQ,GAAG;AAC9E,QAAM,OAAO,QAAQ;AAErB,SAAO;GACL,aAAa,OAAO;GACpB;GACA,oBAAoB,OAAO;GAC3B,WAAW,KAAK,eAAe,OAAO,YAAY;GAClD,WAAW;GACZ;UACM,KAAK;AACZ,SAAO,aAAa;GAAE,WAAW;GAAM,OAAO;GAAM,CAAC;AACrD,QAAM;;;;AAKV,SAAgB,6BACd,OACA,WACM;AACN,KAAI,WAAW,MAAM,UAAU,EAAE;AAC/B,MAAI,CAAC,UACH,OAAM,IAAI,MAAM,+BAA+B,MAAM,UAAU,gCAAgC;AAEjG,QAAM,YAAY,KAAK,MAAM,aAAa,WAAW;AACrD,aAAW,MAAM,WAAW,MAAM,UAAU;;AAG9C,KAAI;AACF,aAAW,MAAM,oBAAoB,MAAM,UAAU;AACrD,QAAM,YAAY;UACX,KAAK;AACZ,MAAI,MAAM,aAAa,WAAW,MAAM,UAAU,IAAI,CAAC,WAAW,MAAM,UAAU,EAAE;AAClF,cAAW,MAAM,WAAW,MAAM,UAAU;AAC5C,SAAM,YAAY,KAAA;;AAEpB,QAAM;;;;AAKV,SAAgB,+BAA+B,OAAqC;AAClF,KAAI,MAAM,aAAa,WAAW,MAAM,UAAU,CAChD,QAAO,MAAM,WAAW;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AAE3D,KAAI,MAAM,aAAa,WAAW,MAAM,UAAU,CAChD,YAAW,MAAM,WAAW,MAAM,UAAU;AAE9C,OAAM,YAAY;AAClB,QAAO,MAAM,aAAa;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;;;AAI7D,SAAgB,+BAA+B,OAAqC;AAClF,QAAO,MAAM,aAAa;EAAE,WAAW;EAAM,OAAO;EAAM,CAAC;AAC3D,OAAM,YAAY,KAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","names":["resolveGlobalExtensionsDir"],"sources":["../../../src/extensions/install.ts"],"sourcesContent":["/**\n * Extension Installation Module\n * Supports installing from npm packages, local directories, and xopc-store zips\n * Supports three-tier storage: workspace, global, bundled\n */\n\nimport { execSync } from 'child_process';\nimport AdmZip from 'adm-zip';\nimport {\n existsSync,\n mkdirSync,\n readFileSync,\n cpSync,\n rmSync,\n readdirSync,\n mkdtempSync,\n writeFileSync,\n} from 'fs';\nimport { dirname, join, isAbsolute, resolve, sep } from 'path';\nimport { tmpdir } from 'os';\nimport {\n resolveExtensionsDir as resolveGlobalExtensionsDir,\n resolveBundledExtensionsDir,\n} from '../config/paths.js';\nimport { PACKAGE_VERSION } from '../package-version.js';\nimport { createLogger } from '../utils/logger.js';\nimport { checkEngineCompatibility } from './engine-check.js';\nimport { collectExtensionPackageDependencyIssues } from './package-contract.js';\nimport { MAX_EXTENSION_STORE_ZIP_BYTES } from './store-zip-limits.js';\n\nconst log = createLogger('ExtensionInstall');\n\nconst NPM_INSTALL_ENV = process.env.XOPC_EXTENSION_NPM_INSTALL?.trim().toLowerCase();\n\nfunction extractExecSyncOutput(error: unknown): string {\n if (!error || typeof error !== 'object') return '';\n const o = error as { stderr?: Buffer | string; stdout?: Buffer | string; message?: string };\n const read = (x?: Buffer | string | null) => {\n if (x == null) return '';\n return Buffer.isBuffer(x) ? x.toString('utf8') : x;\n };\n const stderr = read(o.stderr).trim();\n const stdout = read(o.stdout).trim();\n if (stderr) return stderr;\n if (stdout) return stdout;\n return typeof o.message === 'string' ? o.message.trim() : '';\n}\n\nfunction truncateOutput(text: string, max = 4500): string {\n const t = text.trim();\n if (t.length <= max) return t;\n return `…${t.slice(-max)}`;\n}\n\n/**\n * Install production `node_modules` for an unpacked extension (package.json dependencies).\n * Uses pnpm when `pnpm-lock.yaml` is present, otherwise npm. Set `XOPC_EXTENSION_NPM_INSTALL=skip`\n * to skip (extensions must ship runnable code or you install deps manually).\n */\nfunction installExtensionProdDependencies(extensionDir: string): { ok: true } | { ok: false; error: string } {\n if (NPM_INSTALL_ENV === 'skip' || NPM_INSTALL_ENV === '0' || NPM_INSTALL_ENV === 'false') {\n log.warn(\n { extensionDir, XOPC_EXTENSION_NPM_INSTALL: process.env.XOPC_EXTENSION_NPM_INSTALL },\n 'Skipping extension dependency install (XOPC_EXTENSION_NPM_INSTALL)',\n );\n return { ok: true };\n }\n\n const execOpts = {\n cwd: extensionDir,\n timeout: 300_000,\n encoding: 'utf-8' as const,\n stdio: ['ignore', 'pipe', 'pipe'] as ('ignore' | 'pipe')[],\n maxBuffer: 20 * 1024 * 1024,\n env: process.env,\n ...(process.platform === 'win32'\n ? { shell: (process.env.ComSpec && process.env.ComSpec.trim()) || 'cmd.exe' }\n : {}),\n };\n\n const run = (label: string, command: string): { ok: true } | { ok: false; error: string } => {\n try {\n execSync(command, execOpts);\n return { ok: true };\n } catch (err) {\n const out = truncateOutput(extractExecSyncOutput(err));\n const hint =\n label === 'npm'\n ? ' Check that Node.js/npm is on PATH, the registry is reachable, and peer/engine rules allow install.'\n : ' Check that pnpm is on PATH or remove pnpm-lock.yaml to use npm instead.';\n return {\n ok: false,\n error: `${label} install failed.${hint}${out ? `\\n\\n${out}` : ''}`,\n };\n }\n };\n\n const usePnpm = existsSync(join(extensionDir, 'pnpm-lock.yaml'));\n if (usePnpm) {\n const pnpm = run('pnpm', 'pnpm install --prod --no-frozen-lockfile');\n if (pnpm.ok) return pnpm;\n const npmFallback = run('npm', 'npm install --omit=dev --no-audit --no-fund');\n if (npmFallback.ok) {\n log.warn({ extensionDir }, 'pnpm failed; extension dependencies installed with npm instead');\n return { ok: true };\n }\n return npmFallback;\n }\n\n return run('npm', 'npm install --omit=dev --no-audit --no-fund');\n}\n\nexport interface InstallOptions {\n source: 'npm' | 'local';\n targetDir: string;\n timeoutMs?: number;\n global?: boolean;\n}\n\nexport interface InstallResult {\n ok: boolean;\n extensionId?: string;\n targetDir?: string;\n origin?: 'workspace' | 'global';\n error?: string;\n}\n\nexport interface ListedExtension {\n id: string;\n name?: string;\n version?: string;\n kind?: string;\n path: string;\n origin: 'workspace' | 'global' | 'bundled';\n}\n\ninterface ExtensionManifest {\n id: string;\n name?: string;\n version?: string;\n main?: string;\n engines?: {\n xopc?: string;\n extensionApi?: string;\n extensionUiApi?: string;\n };\n}\n\nfunction isSafeZipPath(name: string): boolean {\n if (!name) return false;\n const normalized = name.replace(/\\\\/g, '/');\n if (normalized.includes('..')) return false;\n if (normalized.startsWith('/') || /^\\w:/.test(normalized)) return false;\n for (const p of normalized.split('/')) {\n if (p === '..') return false;\n }\n return true;\n}\n\nfunction isIgnorableZipEntry(name: string): boolean {\n const n = name.replace(/\\\\/g, '/');\n if (n.startsWith('__MACOSX/')) return true;\n const segments = n.split('/').filter(Boolean);\n for (const s of segments) {\n if (s === '.DS_Store' || s === 'Thumbs.db' || s === 'desktop.ini') return true;\n if (s.startsWith('._')) return true;\n }\n return false;\n}\n\nfunction inferExtensionStripPrefix(primaryManifestPath: string): string {\n const norm = primaryManifestPath.replace(/\\\\/g, '/');\n const lower = norm.toLowerCase();\n const suff = 'xopc.extension.json';\n if (lower === suff) return '';\n if (!lower.endsWith(suff)) return '';\n return norm.slice(0, norm.length - suff.length);\n}\n\nfunction readShallowestExtensionManifestFromZip(buffer: Buffer): Record<string, unknown> | undefined {\n if (buffer.length > MAX_EXTENSION_STORE_ZIP_BYTES) return undefined;\n let zip: AdmZip;\n try {\n zip = new AdmZip(buffer);\n } catch {\n return undefined;\n }\n const entries = zip\n .getEntries()\n .filter((e) => !e.isDirectory && e.entryName && !isIgnorableZipEntry(e.entryName));\n const safeEntries = entries.filter((e) => isSafeZipPath(e.entryName));\n const names = safeEntries.map((e) => e.entryName.replace(/\\\\/g, '/'));\n const manifestPaths = names.filter((n) => /(^|\\/)xopc\\.extension\\.json$/i.test(n));\n const shallow = manifestPaths.filter((n) => n.split('/').filter(Boolean).length <= 2);\n if (shallow.length === 0) return undefined;\n shallow.sort((a, b) => a.length - b.length);\n const path = shallow[0];\n const entry = safeEntries.find((e) => e.entryName.replace(/\\\\/g, '/') === path);\n if (!entry) return undefined;\n try {\n const raw = entry.getData().toString('utf8');\n const parsed = JSON.parse(raw) as unknown;\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\nexport function peekExtensionManifestFromStoreZip(buffer: Buffer): Record<string, unknown> | undefined {\n return readShallowestExtensionManifestFromZip(buffer);\n}\n\n/** Read package.json from the same root as the shallowest extension manifest. */\nexport function peekExtensionPackageJsonFromStoreZip(\n buffer: Buffer,\n): Record<string, unknown> | undefined {\n if (buffer.length > MAX_EXTENSION_STORE_ZIP_BYTES) return undefined;\n let zip: AdmZip;\n try {\n zip = new AdmZip(buffer);\n } catch {\n return undefined;\n }\n const entries = zip\n .getEntries()\n .filter((e) => !e.isDirectory && e.entryName && !isIgnorableZipEntry(e.entryName))\n .filter((e) => isSafeZipPath(e.entryName));\n const manifestPaths = entries\n .map((e) => e.entryName.replace(/\\\\/g, '/'))\n .filter((name) => /(^|\\/)xopc\\.extension\\.json$/i.test(name))\n .filter((name) => name.split('/').filter(Boolean).length <= 2)\n .sort((a, b) => a.length - b.length);\n if (manifestPaths.length === 0) return undefined;\n\n const prefix = inferExtensionStripPrefix(manifestPaths[0]);\n const packagePath = `${prefix}package.json`;\n const entry = entries.find((candidate) => candidate.entryName.replace(/\\\\/g, '/') === packagePath);\n if (!entry) return undefined;\n try {\n const parsed = JSON.parse(entry.getData().toString('utf8')) as unknown;\n return typeof parsed === 'object' && parsed !== null && !Array.isArray(parsed)\n ? (parsed as Record<string, unknown>)\n : undefined;\n } catch {\n return undefined;\n }\n}\n\n/** Read `id` from the shallowest xopc.extension.json in a store zip (for --force / preflight). */\nexport function peekExtensionIdFromStoreZip(buffer: Buffer): string | undefined {\n const m = readShallowestExtensionManifestFromZip(buffer) as { id?: string } | undefined;\n const id = typeof m?.id === 'string' ? m.id.trim() : '';\n if (!id || id.includes('/') || id.includes('\\\\')) return undefined;\n return id;\n}\n\n/**\n * Install an extension from an xopc-store zip buffer (layout: manifest at archive root\n * or under a single top-level folder).\n */\nexport async function installExtensionFromStoreZip(\n buffer: Buffer,\n extensionsDir: string,\n): Promise<InstallResult> {\n if (buffer.length > MAX_EXTENSION_STORE_ZIP_BYTES) {\n return {\n ok: false,\n error: `Extension zip exceeds maximum size (${MAX_EXTENSION_STORE_ZIP_BYTES} bytes)`,\n };\n }\n\n const zip = new AdmZip(buffer);\n const entries = zip\n .getEntries()\n .filter((e) => !e.isDirectory && e.entryName && !isIgnorableZipEntry(e.entryName));\n const safeEntries = entries.filter((e) => isSafeZipPath(e.entryName));\n if (safeEntries.length === 0) {\n return { ok: false, error: 'Zip is empty or invalid' };\n }\n\n const names = safeEntries.map((e) => e.entryName.replace(/\\\\/g, '/'));\n const manifestPaths = names.filter((n) => /(^|\\/)xopc\\.extension\\.json$/i.test(n));\n if (manifestPaths.length === 0) {\n return { ok: false, error: 'Zip must contain xopc.extension.json' };\n }\n const shallow = manifestPaths.filter((n) => n.split('/').filter(Boolean).length <= 2);\n if (shallow.length === 0) {\n return {\n ok: false,\n error:\n 'xopc.extension.json is nested too deeply; use a zip with manifest at archive root or one folder (e.g. my-ext/xopc.extension.json)',\n };\n }\n shallow.sort((a, b) => a.length - b.length);\n const stripPrefix = inferExtensionStripPrefix(shallow[0]);\n if (stripPrefix) {\n const prefixNorm = stripPrefix.replace(/\\\\/g, '/');\n const outside = names.filter((n) => !n.startsWith(prefixNorm) && !isIgnorableZipEntry(n));\n if (outside.length > 0) {\n return {\n ok: false,\n error: `Invalid zip: expected all files under \"${prefixNorm.replace(/\\/$/, '')}/\", but found \"${outside[0]}\".`,\n };\n }\n }\n\n const tmpRoot = mkdtempSync(join(tmpdir(), 'xopc-ext-zip-'));\n const destResolved = resolve(tmpRoot);\n try {\n for (const e of safeEntries) {\n const norm = e.entryName.replace(/\\\\/g, '/');\n let rel: string;\n if (stripPrefix) {\n const prefixNorm = stripPrefix.replace(/\\\\/g, '/');\n if (!norm.startsWith(prefixNorm)) {\n return {\n ok: false,\n error: `Zip entry outside extension prefix \"${prefixNorm.replace(/\\/$/, '')}\": ${norm}`,\n };\n }\n rel = norm.slice(prefixNorm.length).replace(/^\\//, '');\n } else {\n rel = norm;\n }\n if (!rel || rel.includes('..')) {\n return { ok: false, error: `Refusing unsafe zip entry path: ${e.entryName}` };\n }\n const targetPath = join(tmpRoot, rel);\n const resolvedTarget = resolve(targetPath);\n if (!resolvedTarget.startsWith(destResolved + sep) && resolvedTarget !== destResolved) {\n return {\n ok: false,\n error: `Refusing unsafe zip path (possible traversal): ${e.entryName}`,\n };\n }\n mkdirSync(dirname(targetPath), { recursive: true });\n writeFileSync(targetPath, e.getData());\n }\n\n if (!existsSync(join(tmpRoot, 'xopc.extension.json'))) {\n return { ok: false, error: 'Extracted content is missing xopc.extension.json' };\n }\n\n return await installFromDirectory(tmpRoot, extensionsDir);\n } finally {\n try {\n rmSync(tmpRoot, { recursive: true, force: true });\n } catch {\n // ignore\n }\n }\n}\n\n/**\n * Resolve target extensions directory based on options\n */\nexport function resolveExtensionsDir(\n workspaceDir: string,\n global = false,\n): string {\n if (global) {\n const globalDir = resolveGlobalExtensionsDir();\n mkdirSync(globalDir, { recursive: true });\n return globalDir;\n }\n return join(workspaceDir, '.extensions');\n}\n\n/**\n * Install extension from npm package\n */\nexport async function installFromNpm(\n packageSpec: string,\n extensionsDir: string,\n timeoutMs = 120000,\n): Promise<InstallResult> {\n const tmpDir = join(tmpdir(), `xopc-install-${Date.now()}`);\n\n try {\n console.log(`📦 Downloading ${packageSpec} from npm...`);\n\n // Create temp directory\n mkdirSync(tmpDir, { recursive: true });\n\n // Use npm pack to download package\n const result = execSync(`npm pack ${packageSpec} --pack-destination ${tmpDir}`, {\n timeout: timeoutMs,\n encoding: 'utf-8',\n stdio: 'pipe',\n });\n\n const packedFile = result.trim().split('\\n').pop()?.trim();\n if (!packedFile) {\n return { ok: false, error: 'Failed to download package from npm' };\n }\n\n const archivePath = join(tmpDir, packedFile);\n\n // Extract tarball\n console.log(`📂 Extracting ${packedFile}...`);\n execSync(`tar -xzf ${archivePath} -C ${tmpDir}`, {\n timeout: 30000,\n stdio: 'pipe',\n });\n\n // npm pack extracts to 'package' directory\n const extractDir = join(tmpDir, 'package');\n\n // Validate and install\n return await installFromDirectory(extractDir, extensionsDir);\n } catch (error) {\n return {\n ok: false,\n error: `Failed to install from npm: ${error instanceof Error ? error.message : String(error)}`,\n };\n } finally {\n // Cleanup temp directory\n try {\n rmSync(tmpDir, { recursive: true, force: true });\n } catch {\n // Ignore cleanup errors\n }\n }\n}\n\n/**\n * Install extension from local directory\n */\nexport async function installFromLocal(\n localPath: string,\n extensionsDir: string,\n): Promise<InstallResult> {\n // Resolve to absolute path\n const sourceDir = isAbsolute(localPath) ? localPath : resolve(process.cwd(), localPath);\n\n if (!existsSync(sourceDir)) {\n return { ok: false, error: `Directory not found: ${sourceDir}` };\n }\n\n console.log(`📂 Installing from local directory: ${sourceDir}...`);\n\n return await installFromDirectory(sourceDir, extensionsDir);\n}\n\n/**\n * Install extension from extracted directory\n */\nasync function installFromDirectory(\n sourceDir: string,\n extensionsDir: string,\n): Promise<InstallResult> {\n // Validate manifest\n const manifestPath = join(sourceDir, 'xopc.extension.json');\n const packagePath = join(sourceDir, 'package.json');\n\n let manifest: ExtensionManifest | null = null;\n let packageJson: { name?: string; version?: string; dependencies?: Record<string, string> } | null =\n null;\n\n // Try to load xopc.extension.json first\n if (existsSync(manifestPath)) {\n try {\n manifest = JSON.parse(readFileSync(manifestPath, 'utf-8')) as ExtensionManifest;\n } catch {\n return { ok: false, error: 'Invalid xopc.extension.json manifest file' };\n }\n }\n\n // Also try package.json for metadata\n if (existsSync(packagePath)) {\n try {\n packageJson = JSON.parse(readFileSync(packagePath, 'utf-8')) as typeof packageJson;\n } catch {\n // Ignore package.json parse errors\n }\n }\n\n if (packageJson) {\n const packageIssues = collectExtensionPackageDependencyIssues(\n packageJson as Record<string, unknown>,\n { strictRuntimeSdkDeps: true },\n );\n if (packageIssues.length > 0) {\n return {\n ok: false,\n error: `Extension package is not installable as an independent package:\\n${packageIssues\n .map((issue) => `- ${issue.message}`)\n .join('\\n')}`,\n };\n }\n }\n\n // Determine extension ID\n const extensionId = manifest?.id || packageJson?.name;\n if (!extensionId) {\n return {\n ok: false,\n error: 'Extension must have an id in xopc.extension.json or name in package.json',\n };\n }\n\n // Validate extension ID (no path separators)\n if (extensionId.includes('/') || extensionId.includes('\\\\')) {\n return { ok: false, error: 'Extension ID cannot contain path separators' };\n }\n\n // Check if already exists\n const targetDir = join(extensionsDir, extensionId);\n if (existsSync(targetDir)) {\n return { ok: false, error: `Extension already exists at ${targetDir}. Use update instead.` };\n }\n\n if (!manifest) {\n return { ok: false, error: 'Extension must include xopc.extension.json' };\n }\n\n if (!manifest.engines?.xopc) {\n return { ok: false, error: 'Extension manifest must declare engines.xopc' };\n }\n const engineCheck = checkEngineCompatibility(PACKAGE_VERSION, manifest.engines.xopc);\n if (engineCheck.parseWarning) {\n return {\n ok: false,\n error: engineCheck.reason ?? `Could not parse engines.xopc ${manifest.engines.xopc}`,\n };\n }\n if (!engineCheck.compatible) {\n return {\n ok: false,\n error: engineCheck.reason ?? `xopc ${PACKAGE_VERSION} does not satisfy engines.xopc ${manifest.engines.xopc}`,\n };\n }\n\n if (!manifest.main) {\n return { ok: false, error: 'Extension manifest must declare main' };\n }\n\n if (!/\\.(mjs|cjs|js)$/i.test(manifest.main)) {\n return {\n ok: false,\n error: `Extension main must point at built JavaScript (.js/.mjs/.cjs), got: ${manifest.main}`,\n };\n }\n\n // Validate main entry exists\n const mainFile = manifest.main;\n const mainPath = join(sourceDir, mainFile);\n if (!existsSync(mainPath)) {\n return { ok: false, error: `Main entry not found: ${mainFile}` };\n }\n\n console.log(`📋 Extension: ${manifest?.name || extensionId} (${extensionId})`);\n if (manifest?.version || packageJson?.version) {\n console.log(`🔖 Version: ${manifest?.version || packageJson?.version}`);\n }\n\n // Create target directory\n mkdirSync(targetDir, { recursive: true });\n\n // Copy files\n console.log(`📂 Copying files to ${targetDir}...`);\n cpSync(sourceDir, targetDir, { recursive: true, force: true });\n\n // Install dependencies if package.json exists and has dependencies\n if (packageJson?.dependencies && Object.keys(packageJson.dependencies).length > 0) {\n console.log(`📦 Installing dependencies...`);\n const depResult = installExtensionProdDependencies(targetDir);\n if (depResult.ok === false) {\n rmSync(targetDir, { recursive: true, force: true });\n return { ok: false, error: depResult.error };\n }\n }\n\n const origin = extensionsDir.includes('.xopc/extensions') ? 'global' : 'workspace';\n\n console.log(`✅ Extension ${extensionId} installed successfully!`);\n console.log(`\\nTo enable the extension, add to your config:`);\n console.log(` extensions:`);\n console.log(` enabled: [${extensionId}]`);\n console.log(` ${extensionId}:`);\n console.log(` # your extension options here\\n`);\n\n return { ok: true, extensionId, targetDir, origin };\n}\n\n/**\n * Remove installed extension from all tiers\n */\nexport function removeExtension(\n extensionId: string,\n workspaceDir: string,\n): { ok: boolean; removedFrom?: string; error?: string } {\n // Try workspace first\n const workspaceDir_ = join(workspaceDir, '.extensions');\n const workspaceExtension = join(workspaceDir_, extensionId);\n\n if (existsSync(workspaceExtension)) {\n try {\n rmSync(workspaceExtension, { recursive: true, force: true });\n return { ok: true, removedFrom: 'workspace' };\n } catch (error) {\n return {\n ok: false,\n error: `Failed to remove from workspace: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n // Try global\n const globalDir = resolveGlobalExtensionsDir();\n const globalExtension = join(globalDir, extensionId);\n\n if (existsSync(globalExtension)) {\n try {\n rmSync(globalExtension, { recursive: true, force: true });\n return { ok: true, removedFrom: 'global' };\n } catch (error) {\n return {\n ok: false,\n error: `Failed to remove from global: ${error instanceof Error ? error.message : String(error)}`,\n };\n }\n }\n\n return { ok: false, error: `Extension not found: ${extensionId}` };\n}\n\n/**\n * List installed extensions from all tiers\n */\nexport function listAllExtensions(workspaceDir: string): ListedExtension[] {\n const extensions: ListedExtension[] = [];\n const seen = new Set<string>();\n\n // Priority 1: Workspace (highest)\n const workspaceExtensionsDir = join(workspaceDir, '.extensions');\n if (existsSync(workspaceExtensionsDir)) {\n for (const entry of readdirSync(workspaceExtensionsDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n\n const extensionDir = join(workspaceExtensionsDir, entry.name);\n const manifest = readManifest(extensionDir);\n\n if (manifest) {\n seen.add(entry.name);\n extensions.push({\n id: entry.name,\n name: manifest.name,\n version: manifest.version,\n path: extensionDir,\n origin: 'workspace',\n });\n }\n }\n }\n\n // Priority 2: Global\n const globalDir = resolveGlobalExtensionsDir();\n if (existsSync(globalDir)) {\n for (const entry of readdirSync(globalDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (seen.has(entry.name)) continue; // Skip if already in workspace\n\n const extensionDir = join(globalDir, entry.name);\n const manifest = readManifest(extensionDir);\n\n if (manifest) {\n seen.add(entry.name);\n extensions.push({\n id: entry.name,\n name: manifest.name,\n version: manifest.version,\n path: extensionDir,\n origin: 'global',\n });\n }\n }\n }\n\n // Priority 3: Bundled (lowest)\n const bundledDir = resolveBundledExtensionsDir();\n if (bundledDir && existsSync(bundledDir)) {\n for (const entry of readdirSync(bundledDir, { withFileTypes: true })) {\n if (!entry.isDirectory()) continue;\n if (seen.has(entry.name)) continue;\n\n const extensionDir = join(bundledDir, entry.name);\n const manifest = readManifest(extensionDir);\n\n if (manifest) {\n extensions.push({\n id: entry.name,\n name: manifest.name,\n version: manifest.version,\n path: extensionDir,\n origin: 'bundled',\n });\n }\n }\n }\n\n return extensions;\n}\n\nfunction readManifest(extensionDir: string): ExtensionManifest | null {\n const manifestPath = join(extensionDir, 'xopc.extension.json');\n\n if (!existsSync(manifestPath)) {\n // Try package.json\n const packagePath = join(extensionDir, 'package.json');\n if (existsSync(packagePath)) {\n try {\n const pkg = JSON.parse(readFileSync(packagePath, 'utf-8'));\n return {\n id: pkg.name,\n name: pkg.xopc?.extension?.name || pkg.name,\n version: pkg.version,\n };\n } catch {\n return null;\n }\n }\n return null;\n }\n\n try {\n return JSON.parse(readFileSync(manifestPath, 'utf-8')) as ExtensionManifest;\n } catch {\n return null;\n }\n}\n"],"mappings":"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"}
|