@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":"error-pattern-matcher.js","names":[],"sources":["../../../../src/agent/tools/error-pattern-matcher.ts"],"sourcesContent":["/**\n * Error Pattern Matcher - Identifies common error patterns and provides recovery suggestions\n * \n * Based on Agent Harness theory: \"Error recovery is primarily model-driven. \n * Failed tool executions return error messages as tool results to the model\"\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('ErrorPatternMatcher');\n\nexport interface ErrorPattern {\n name: string;\n description: string;\n regex: RegExp;\n suggestion: string;\n autoRetry: boolean;\n maxRetries: number;\n severity: 'low' | 'medium' | 'high' | 'critical';\n}\n\nexport interface ErrorMatchResult {\n matched: boolean;\n pattern?: ErrorPattern;\n originalError: string;\n suggestion: string;\n shouldRetry: boolean;\n maxRetries: number;\n}\n\nexport interface ErrorPatternMatcherConfig {\n enabled: boolean;\n patterns: ErrorPattern[];\n defaultMaxRetries: number;\n logMatches: boolean;\n}\n\n// Default error patterns based on common tool errors\nconst DEFAULT_PATTERNS: ErrorPattern[] = [\n // File system errors\n {\n name: 'file-not-found',\n description: 'File or directory does not exist',\n regex: /no such file or directory|file not found|cannot find/i,\n suggestion: 'Check if the file path is correct. Use list_dir to verify directory contents before reading.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'medium',\n },\n {\n name: 'permission-denied',\n description: 'Insufficient permissions to access file',\n regex: /permission denied|access denied|unauthorized/i,\n suggestion: 'Check file permissions. Consider using sudo if safe, or request user intervention.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'high',\n },\n {\n name: 'file-too-large',\n description: 'File exceeds size limits',\n regex: /file too large|exceeds.*size|too big to read/i,\n suggestion: 'Use truncate parameter or read specific sections. Consider using grep/search instead.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'low',\n },\n \n // Shell execution errors\n {\n name: 'command-not-found',\n description: 'Shell command does not exist',\n regex: /command not found|not recognized|no such command/i,\n suggestion: 'Verify the command is installed. Check PATH or install the required package.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'medium',\n },\n {\n name: 'timeout',\n description: 'Command execution timed out',\n regex: /timeout|timed out|execution time exceeded/i,\n suggestion: 'Command took too long. Consider optimizing the command, breaking into smaller tasks, or increasing timeout.',\n autoRetry: true,\n maxRetries: 1,\n severity: 'medium',\n },\n {\n name: 'exit-code-nonzero',\n description: 'Command exited with error code',\n regex: /exit code \\d+|returned non-zero|failed with error/i,\n suggestion: 'Check command syntax and arguments. Review stderr output for details.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'medium',\n },\n \n // Network errors\n {\n name: 'network-error',\n description: 'Network connectivity issue',\n regex: /network error|connection refused|cannot connect|dns/i,\n suggestion: 'Check network connectivity. Verify the service is running and accessible.',\n autoRetry: true,\n maxRetries: 2,\n severity: 'high',\n },\n {\n name: 'http-error',\n description: 'HTTP request failed',\n regex: /http \\d{3}|request failed|bad response/i,\n suggestion: 'Check the URL and request parameters. Review API documentation.',\n autoRetry: true,\n maxRetries: 1,\n severity: 'medium',\n },\n \n // Git errors\n {\n name: 'git-conflict',\n description: 'Git merge conflict',\n regex: /merge conflict|conflict marker|cannot merge/i,\n suggestion: 'Resolve merge conflicts manually. Check conflicted files and edit to resolve.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'high',\n },\n {\n name: 'git-not-repository',\n description: 'Not a git repository',\n regex: /not a git repository|fatal: not a git repo/i,\n suggestion: 'Initialize git repository first with `git init` or navigate to correct directory.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'low',\n },\n \n // Memory/Resource errors\n {\n name: 'out-of-memory',\n description: 'Insufficient memory',\n regex: /out of memory|memory allocation failed|cannot allocate/i,\n suggestion: 'Reduce data size or process in smaller chunks. Consider using streaming.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'critical',\n },\n {\n name: 'disk-full',\n description: 'No disk space available',\n regex: /no space left|disk full|insufficient space/i,\n suggestion: 'Free up disk space. Delete unnecessary files or expand storage.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'critical',\n },\n \n // Syntax/Parse errors\n {\n name: 'syntax-error',\n description: 'Code syntax error',\n regex: /syntax error|parse error|invalid syntax|unexpected token/i,\n suggestion: 'Review code syntax. Check for missing brackets, quotes, or semicolons.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'medium',\n },\n {\n name: 'type-error',\n description: 'Type mismatch error',\n regex: /type error|type mismatch|cannot convert/i,\n suggestion: 'Check variable types. Ensure correct type is used for the operation.',\n autoRetry: false,\n maxRetries: 0,\n severity: 'medium',\n },\n];\n\nconst DEFAULT_CONFIG: ErrorPatternMatcherConfig = {\n enabled: true,\n patterns: DEFAULT_PATTERNS,\n defaultMaxRetries: 1,\n logMatches: true,\n};\n\nexport class ErrorPatternMatcher {\n private config: ErrorPatternMatcherConfig;\n private matchHistory: Map<string, number> = new Map(); // pattern name -> count\n\n constructor(config: Partial<ErrorPatternMatcherConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Match error against known patterns\n */\n matchError(error: string): ErrorMatchResult {\n if (!this.config.enabled) {\n return {\n matched: false,\n originalError: error,\n suggestion: error,\n shouldRetry: false,\n maxRetries: 0,\n };\n }\n\n const errorLower = error.toLowerCase();\n\n for (const pattern of this.config.patterns) {\n if (pattern.regex.test(errorLower)) {\n // Record match\n const count = this.matchHistory.get(pattern.name) || 0;\n this.matchHistory.set(pattern.name, count + 1);\n\n if (this.config.logMatches) {\n log.warn(\n { pattern: pattern.name, severity: pattern.severity },\n `Matched error pattern: ${pattern.description}`\n );\n }\n\n return {\n matched: true,\n pattern,\n originalError: error,\n suggestion: `[Error: ${pattern.name}]\\n${pattern.suggestion}`,\n shouldRetry: pattern.autoRetry,\n maxRetries: pattern.maxRetries,\n };\n }\n }\n\n // No pattern matched\n return {\n matched: false,\n originalError: error,\n suggestion: error,\n shouldRetry: false,\n maxRetries: this.config.defaultMaxRetries,\n };\n }\n\n /**\n * Get recovery suggestion for an error\n */\n getRecoverySuggestion(error: string): string {\n const result = this.matchError(error);\n return result.suggestion;\n }\n\n /**\n * Check if error should be retried\n */\n shouldRetry(error: string): boolean {\n return this.matchError(error).shouldRetry;\n }\n\n /**\n * Get max retries for an error\n */\n getMaxRetries(error: string): number {\n return this.matchError(error).maxRetries;\n }\n\n /**\n * Get error statistics\n */\n getStats(): {\n totalMatches: number;\n byPattern: Map<string, number>;\n topErrors: Array<{ name: string; count: number }>;\n } {\n const totalMatches = Array.from(this.matchHistory.values()).reduce((sum, c) => sum + c, 0);\n \n const topErrors = Array.from(this.matchHistory.entries())\n .map(([name, count]) => ({ name, count }))\n .sort((a, b) => b.count - a.count)\n .slice(0, 10);\n\n return {\n totalMatches,\n byPattern: new Map(this.matchHistory),\n topErrors,\n };\n }\n\n /**\n * Get error report as text\n */\n getReportText(): string {\n const stats = this.getStats();\n \n const lines: string[] = [\n 'Error Pattern Matching Report',\n '=============================',\n `Total Matches: ${stats.totalMatches}`,\n '',\n 'Top Error Patterns:',\n ];\n\n for (const { name, count } of stats.topErrors) {\n const pattern = this.config.patterns.find(p => p.name === name);\n const severity = pattern?.severity || 'unknown';\n lines.push(` - ${name}: ${count} occurrences (severity: ${severity})`);\n }\n\n return lines.join('\\n');\n }\n\n /**\n * Reset match history\n */\n reset(): void {\n this.matchHistory.clear();\n log.info('Error pattern matcher reset');\n }\n\n /**\n * Add custom error pattern\n */\n addPattern(pattern: ErrorPattern): void {\n this.config.patterns.push(pattern);\n log.info({ name: pattern.name }, 'Added custom error pattern');\n }\n\n /**\n * Remove error pattern by name\n */\n removePattern(name: string): boolean {\n const index = this.config.patterns.findIndex(p => p.name === name);\n if (index !== -1) {\n this.config.patterns.splice(index, 1);\n log.info({ name }, 'Removed error pattern');\n return true;\n }\n return false;\n }\n\n /**\n * Get all patterns\n */\n getPatterns(): ErrorPattern[] {\n return [...this.config.patterns];\n }\n\n /**\n * Get config\n */\n getConfig(): ErrorPatternMatcherConfig {\n return { ...this.config };\n }\n\n /**\n * Update config\n */\n setConfig(config: Partial<ErrorPatternMatcherConfig>): void {\n this.config = { ...this.config, ...config };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error-tracker.js","names":[],"sources":["../../../../src/agent/tools/error-tracker.ts"],"sourcesContent":["/**\n * Tool Error Tracker - Tracks tool failures per session/turn\n * \n * Prevents agent from getting stuck in tool failure loops by:\n * - Counting failures per tool\n * - Tracking total failures\n * - Providing retry hints to agent\n */\n\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('ToolErrorTracker');\n\nexport interface ToolFailureRecord {\n toolName: string;\n failureCount: number;\n lastError?: string;\n lastErrorTime: number;\n}\n\nexport interface ToolErrorTrackerConfig {\n maxFailuresPerTool: number; // Max failures per individual tool (default: 3)\n maxTotalFailures: number; // Max total failures across all tools (default: 5)\n resetOnTurnEnd: boolean; // Reset counters at end of each turn (default: true)\n failureWindowMs: number; // Time window for counting failures (default: 5 min)\n}\n\nconst DEFAULT_CONFIG: ToolErrorTrackerConfig = {\n maxFailuresPerTool: 3,\n maxTotalFailures: 5,\n resetOnTurnEnd: true,\n failureWindowMs: 5 * 60 * 1000, // 5 minutes\n};\n\nexport class ToolErrorTracker {\n private failures: Map<string, ToolFailureRecord> = new Map();\n private totalFailures = 0;\n private config: ToolErrorTrackerConfig;\n\n constructor(config: Partial<ToolErrorTrackerConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Record a tool failure\n */\n recordFailure(toolName: string, error?: string): void {\n const now = Date.now();\n const existing = this.failures.get(toolName);\n\n if (existing) {\n existing.failureCount++;\n existing.lastError = error;\n existing.lastErrorTime = now;\n } else {\n this.failures.set(toolName, {\n toolName,\n failureCount: 1,\n lastError: error,\n lastErrorTime: now,\n });\n }\n\n this.totalFailures++;\n\n log.warn(\n { toolName, failures: this.getFailureCount(toolName), total: this.totalFailures },\n 'Tool failure recorded'\n );\n }\n\n /**\n * Get failure count for a specific tool\n */\n getFailureCount(toolName: string): number {\n return this.failures.get(toolName)?.failureCount || 0;\n }\n\n /**\n * Get remaining attempts for a tool\n */\n remainingAttempts(toolName: string): number {\n const current = this.getFailureCount(toolName);\n return Math.max(0, this.config.maxFailuresPerTool - current);\n }\n\n /**\n * Check if a specific tool has reached its failure limit\n */\n isToolLimitReached(toolName: string): boolean {\n return this.getFailureCount(toolName) >= this.config.maxFailuresPerTool;\n }\n\n /**\n * Check if total failure limit is reached\n */\n isTotalLimitReached(): boolean {\n return this.totalFailures >= this.config.maxTotalFailures;\n }\n\n /**\n * Check if any limit is reached (tool-specific or total)\n */\n isAnyLimitReached(): boolean {\n return this.isTotalLimitReached() || \n Array.from(this.failures.keys()).some(name => this.isToolLimitReached(name));\n }\n\n /**\n * Get the tool that has reached its limit (if any)\n */\n getLimitReachedTool(): string | null {\n for (const [name, record] of this.failures.entries()) {\n if (record.failureCount >= this.config.maxFailuresPerTool) {\n return name;\n }\n }\n return null;\n }\n\n /**\n * Get failure hint message for agent\n */\n getFailureHint(toolName: string): string {\n const remaining = this.remainingAttempts(toolName);\n const totalRemaining = this.config.maxTotalFailures - this.totalFailures;\n\n if (remaining === 0) {\n return `⚠️ Tool '${toolName}' has failed ${this.config.maxFailuresPerTool} times. Do not retry this tool.`;\n }\n\n if (totalRemaining === 0) {\n return `⚠️ Total failure limit (${this.config.maxTotalFailures}) reached. Stop executing tools.`;\n }\n\n return `⚠️ '${toolName}' has failed ${this.getFailureCount(toolName)} times. Remaining attempts: ${remaining}/${this.config.maxFailuresPerTool}`;\n }\n\n /**\n * Get all failure records\n */\n getFailures(): Map<string, ToolFailureRecord> {\n return new Map(this.failures);\n }\n\n /**\n * Get summary of failures\n */\n getSummary(): { total: number; byTool: Record<string, number> } {\n const byTool: Record<string, number> = {};\n for (const [name, record] of this.failures.entries()) {\n byTool[name] = record.failureCount;\n }\n return { total: this.totalFailures, byTool };\n }\n\n /**\n * Reset all counters (called at end of turn)\n */\n reset(): void {\n if (!this.config.resetOnTurnEnd) return;\n\n // Clean up old failures first (memory optimization)\n this.cleanupOldFailures();\n\n const summary = this.getSummary();\n if (summary.total > 0) {\n log.info({ summary }, 'Tool error tracker reset');\n }\n\n this.failures.clear();\n this.totalFailures = 0;\n }\n\n /**\n * Reset failures for a specific tool\n */\n resetTool(toolName: string): void {\n if (this.failures.has(toolName)) {\n const record = this.failures.get(toolName)!;\n // Protect against negative totalFailures\n this.totalFailures = Math.max(0, this.totalFailures - record.failureCount);\n this.failures.delete(toolName);\n log.debug({ toolName }, 'Tool failure counter reset');\n }\n }\n\n /**\n * Get tracker configuration\n */\n getConfig(): ToolErrorTrackerConfig {\n return { ...this.config };\n }\n\n /**\n * Clean up old failures (outside the failure window)\n */\n cleanupOldFailures(): void {\n const now = Date.now();\n let cleaned = 0;\n\n for (const [name, record] of this.failures.entries()) {\n if (now - record.lastErrorTime > this.config.failureWindowMs) {\n this.totalFailures -= record.failureCount;\n this.failures.delete(name);\n cleaned++;\n }\n }\n\n if (cleaned > 0) {\n log.debug({ cleaned }, 'Cleaned up old tool failures');\n }\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"exec-command.js","names":[],"sources":["../../../../src/agent/tools/exec-command.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type {\n AgentTool,\n AgentToolResult,\n AgentToolUpdateCallback,\n} from '@earendil-works/pi-agent-core';\nimport { spawn } from 'node:child_process';\nimport { resolve } from 'node:path';\n\nimport { evaluateExecPolicy } from '../sandbox/exec-policy.js';\nimport { formatSize, truncateTail } from './truncate.js';\nimport type { GoalEvidenceRecordInput } from './goal-evidence-recorder.js';\n\nconst MAX_COMMAND_TIMEOUT_MS = 300_000;\nconst DEFAULT_TIMEOUT_MS = 120_000;\nconst DEFAULT_MAX_OUTPUT_CHARS = 50_000;\nconst STREAM_DELTA_MAX_CHARS = 16_000;\n\nconst ExecCommandSchema = Type.Object({\n cmd: Type.String({ description: 'Shell command to execute.' }),\n cwd: Type.Optional(\n Type.String({\n description: 'Working directory. Relative paths are resolved under the agent workspace.',\n }),\n ),\n timeoutMs: Type.Optional(\n Type.Number({\n description: 'Command timeout in milliseconds. Defaults to 120000 and is capped at 300000.',\n }),\n ),\n maxOutputChars: Type.Optional(\n Type.Number({\n description: 'Maximum characters returned to the model. UI streaming still receives output deltas.',\n }),\n ),\n});\n\nexport interface ExecCommandDetails {\n command: string;\n cwd: string;\n status: 'success' | 'failed' | 'timed_out' | 'blocked';\n exitCode: number | null;\n durationMs: number;\n timedOut: boolean;\n truncated: boolean;\n truncatedBy?: 'lines' | 'bytes' | null;\n outputBytes: number;\n stdout: string;\n stderr: string;\n aggregatedOutput: string;\n failureHint?: string;\n}\n\nexport interface ExecCommandUpdateDetails {\n kind: 'command_output_delta';\n command: string;\n cwd: string;\n stream: 'stdout' | 'stderr';\n delta: string;\n}\n\nexport interface CreateExecCommandToolOptions {\n /** Env var names allowed through prepareSafeToolEnv even if they match secret heuristics. */\n getSkillPassthroughEnvVarNames?: () => string[];\n recordGoalEvidence?: (input: GoalEvidenceRecordInput) => Promise<void> | void;\n}\n\ntype ExecCommandParams = {\n cmd?: string;\n command?: string;\n cwd?: string;\n timeoutMs?: number;\n maxOutputChars?: number;\n};\n\nfunction clampTimeoutMs(raw: unknown): number {\n const n = typeof raw === 'number' && Number.isFinite(raw) ? raw : DEFAULT_TIMEOUT_MS;\n return Math.min(MAX_COMMAND_TIMEOUT_MS, Math.max(1_000, Math.floor(n)));\n}\n\nfunction clampMaxOutputChars(raw: unknown): number {\n const n = typeof raw === 'number' && Number.isFinite(raw) ? raw : DEFAULT_MAX_OUTPUT_CHARS;\n return Math.max(1_000, Math.min(500_000, Math.floor(n)));\n}\n\nfunction isLikelyTestCommand(command: string): boolean {\n return /\\b(test|vitest|jest|pytest|go test|cargo test|npm test|pnpm test|yarn test|typecheck|type-check|lint)\\b/i.test(command);\n}\n\nfunction commandStatus(exitCode: number | null, timedOut: boolean): ExecCommandDetails['status'] {\n if (timedOut) return 'timed_out';\n if (exitCode === 0) return 'success';\n return 'failed';\n}\n\nfunction commandFailureHint(details: Pick<ExecCommandDetails, 'status' | 'exitCode' | 'timedOut' | 'stderr' | 'stdout'>): string | undefined {\n if (details.status === 'success') return undefined;\n if (details.status === 'timed_out') {\n return 'The command timed out. Re-run a narrower command, increase timeoutMs if the long run is expected, or inspect partial output before retrying.';\n }\n if (details.exitCode !== 0 && details.stderr.trim()) {\n return 'The command failed. Inspect stderr first, fix the underlying issue, then re-run the narrowest relevant verification command.';\n }\n if (details.exitCode !== 0 && details.stdout.trim()) {\n return 'The command failed. Inspect stdout for the failure location, then re-run the narrowest relevant verification command.';\n }\n return 'The command failed without output. Verify the command, cwd, and required dependencies before retrying.';\n}\n\nfunction formatOutputForModel(\n details: ExecCommandDetails,\n maxOutputChars: number,\n): { text: string; truncated: boolean; truncatedBy?: 'lines' | 'bytes' | null; outputBytes: number } {\n let prefix = '';\n if (details.timedOut) {\n prefix += `Command timed out after ${Math.round(details.durationMs / 1000)}s\\n`;\n }\n if (details.exitCode !== 0 && details.exitCode != null) {\n prefix += `Command exited with code ${details.exitCode}\\n`;\n }\n\n const truncation = truncateTail(details.aggregatedOutput, {\n maxBytes: Math.min(maxOutputChars, DEFAULT_MAX_OUTPUT_CHARS),\n });\n let text = `${prefix}${truncation.content}`.trimEnd();\n if (!text) text = '(no output)';\n if (truncation.truncated) {\n text += `\\n\\n[Output truncated: ${formatSize(truncation.outputBytes)} of ${formatSize(truncation.totalBytes)}]`;\n }\n if (details.failureHint) {\n text += `\\n\\nNext action: ${details.failureHint}`;\n }\n return {\n text,\n truncated: truncation.truncated,\n truncatedBy: truncation.truncatedBy,\n outputBytes: truncation.outputBytes,\n };\n}\n\nexport function createExecCommandTool(\n workspaceCwd: string,\n options?: CreateExecCommandToolOptions,\n): AgentTool {\n return {\n name: 'exec_command',\n description: [\n 'Run shell commands for code inspection, builds, tests, type checks, and verification.',\n 'Use apply_patch for file edits; do not edit files by shell redirection unless explicitly necessary.',\n 'Relative cwd values resolve under the current agent workspace.',\n ].join(' '),\n parameters: ExecCommandSchema,\n label: 'Run Command',\n mutationScope: 'unknown',\n supportsParallel: false,\n idempotent: false,\n finalGuardRelevant: true,\n\n async execute(\n _toolCallId: string,\n params: ExecCommandParams,\n signal?: AbortSignal,\n onUpdate?: AgentToolUpdateCallback<ExecCommandUpdateDetails>,\n ): Promise<AgentToolResult<ExecCommandDetails>> {\n const command = (params.cmd ?? params.command ?? '').trim();\n if (!command) {\n return {\n content: [{ type: 'text', text: 'Error: cmd is required' }],\n details: {\n command,\n cwd: workspaceCwd,\n status: 'failed',\n exitCode: null,\n durationMs: 0,\n timedOut: false,\n truncated: false,\n outputBytes: 0,\n stdout: '',\n stderr: 'cmd is required',\n aggregatedOutput: 'cmd is required',\n failureHint: 'Provide a non-empty cmd value.',\n },\n };\n }\n\n const requestedCwd = params.cwd?.trim()\n ? resolve(workspaceCwd, params.cwd.trim())\n : workspaceCwd;\n const passthroughNames = options?.getSkillPassthroughEnvVarNames?.() ?? [];\n const policy = evaluateExecPolicy({\n command,\n cwd: requestedCwd,\n allowedEnvVars: passthroughNames,\n });\n if (!policy.allowed) {\n const text = `Sandbox blocked command: ${policy.reason}`;\n return {\n content: [{ type: 'text', text }],\n details: {\n command,\n cwd: requestedCwd,\n status: 'blocked',\n exitCode: null,\n durationMs: 0,\n timedOut: false,\n truncated: false,\n outputBytes: Buffer.byteLength(text),\n stdout: '',\n stderr: text,\n aggregatedOutput: text,\n failureHint: 'Use a narrower workspace-safe command or inspect files with read/search tools instead.',\n },\n };\n }\n\n const timeoutMs = Math.min(clampTimeoutMs(params.timeoutMs), policy.timeoutMs);\n const maxOutputChars = clampMaxOutputChars(params.maxOutputChars);\n const startTime = Date.now();\n let stdout = '';\n let stderr = '';\n let aggregatedOutput = '';\n let timedOut = false;\n let settled = false;\n\n return new Promise((resolveTool) => {\n const proc = spawn(command, [], {\n shell: true,\n cwd: policy.effectiveCwd,\n env: {\n ...policy.sanitizedEnv,\n COLUMNS: '200',\n },\n });\n\n const publishDelta = (stream: 'stdout' | 'stderr', raw: Buffer | string) => {\n const text = raw.toString();\n if (!text) return;\n if (stream === 'stdout') stdout += text;\n else stderr += text;\n aggregatedOutput += text;\n\n const delta = text.length > STREAM_DELTA_MAX_CHARS\n ? `${text.slice(0, STREAM_DELTA_MAX_CHARS)}\\n[stream delta truncated]`\n : text;\n onUpdate?.({\n content: [],\n details: {\n kind: 'command_output_delta',\n command,\n cwd: policy.effectiveCwd,\n stream,\n delta,\n },\n });\n };\n\n const finish = (\n exitCode: number | null,\n errorText?: string,\n ) => {\n if (settled) return;\n settled = true;\n clearTimeout(timeout);\n signal?.removeEventListener('abort', abort);\n if (errorText) {\n stderr += errorText;\n aggregatedOutput += errorText;\n }\n\n const durationMs = Date.now() - startTime;\n const baseDetails: ExecCommandDetails = {\n command,\n cwd: policy.effectiveCwd,\n status: commandStatus(exitCode, timedOut),\n exitCode,\n durationMs,\n timedOut,\n truncated: false,\n outputBytes: Buffer.byteLength(aggregatedOutput),\n stdout,\n stderr,\n aggregatedOutput,\n };\n baseDetails.failureHint = commandFailureHint(baseDetails);\n const formatted = formatOutputForModel(baseDetails, maxOutputChars);\n const details: ExecCommandDetails = {\n ...baseDetails,\n truncated: formatted.truncated,\n truncatedBy: formatted.truncatedBy,\n outputBytes: formatted.outputBytes,\n };\n\n const result: AgentToolResult<ExecCommandDetails> = {\n content: [{ type: 'text', text: formatted.text }],\n details,\n };\n\n void Promise.resolve(options?.recordGoalEvidence?.({\n kind: timedOut || exitCode !== 0 ? 'command' : isLikelyTestCommand(command) ? 'test' : 'command',\n title: `Command: ${command.slice(0, 120)}`,\n summary: formatted.text.slice(0, 2000),\n data: {\n command,\n cwd: policy.effectiveCwd,\n exitCode,\n durationMs,\n timedOut,\n truncated: details.truncated,\n outputBytes: details.outputBytes,\n },\n })).finally(() => resolveTool(result));\n };\n\n const abort = () => {\n timedOut = true;\n proc.kill('SIGKILL');\n };\n\n const timeout = setTimeout(() => {\n timedOut = true;\n proc.kill('SIGKILL');\n }, timeoutMs);\n\n if (signal?.aborted) {\n abort();\n } else {\n signal?.addEventListener('abort', abort, { once: true });\n }\n\n proc.stdout?.on('data', (data) => publishDelta('stdout', data));\n proc.stderr?.on('data', (data) => publishDelta('stderr', data));\n proc.on('error', (err) => finish(null, `Error: ${err.message}`));\n proc.on('close', (code) => finish(code));\n });\n },\n } as any;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"execute-code-tool.js","names":[],"sources":["../../../../src/agent/tools/execute-code-tool.ts"],"sourcesContent":["/**\n * Programmatic tool calling (PTC): run sandboxed JS that invokes a subset of agent tools.\n * vm is not a strong security boundary; only trusted models should use this tool.\n */\n\nimport { Script, createContext } from 'node:vm';\n\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\n\n/** Default script wall time when `timeout` omitted (30 minutes). */\nconst DEFAULT_TIMEOUT_SEC = 30 * 60;\n/** Hard cap for `timeout` parameter (4 hours). */\nconst MAX_TIMEOUT_SEC = 4 * 60 * 60;\n\nconst ExecuteCodeSchema = Type.Object({\n code: Type.String({\n description:\n 'JavaScript to run. Exposed as `tools` (async functions) and `console`:\\n' +\n ' await tools.web_search(query, count?)\\n' +\n ' await tools.web_fetch(url, maxChars?)\\n' +\n ' await tools.read_file(path, limit?)\\n' +\n ' await tools.write_file(path, content)\\n' +\n ' await tools.grep(pattern, { path?, glob?, ignoreCase?, literal?, context?, limit? })\\n' +\n ' await tools.find(pattern, { path?, limit? })\\n' +\n ' await tools.exec_command(cmd, cwd?)\\n\\n' +\n 'Use console.log() for output; combined stdout/stderr is returned.',\n }),\n timeout: Type.Optional(\n Type.Number({\n description: 'Execution timeout in seconds (default: 3600 = 60m, max: 14400 = 4h)',\n default: DEFAULT_TIMEOUT_SEC,\n }),\n ),\n});\n\nexport const SANDBOX_ALLOWED_TOOLS = new Set([\n 'web_search',\n 'web_fetch',\n 'read_file',\n 'write_file',\n 'grep',\n 'find',\n 'exec_command',\n 'skills_list',\n 'skill_view',\n]);\n\nconst MAX_TIMEOUT_MS = MAX_TIMEOUT_SEC * 1000;\nconst MAX_TOOL_CALLS = 50;\nconst MAX_STDOUT_CHARS = 50_000;\nconst MAX_STDERR_CHARS = 10_000;\n\nfunction stringifyArg(a: unknown): string {\n if (typeof a === 'string') {\n return a;\n }\n try {\n return JSON.stringify(a);\n } catch {\n return String(a);\n }\n}\n\nfunction extractTextFromResult(result: AgentToolResult<unknown>): string {\n return result.content\n .filter((c): c is { type: 'text'; text: string } => c.type === 'text')\n .map((c) => c.text)\n .join('');\n}\n\nexport function buildSandboxToolMap(tools: AgentTool<any, any>[]): Map<string, AgentTool<any, any>> {\n const m = new Map<string, AgentTool<any, any>>();\n for (const t of tools) {\n if (SANDBOX_ALLOWED_TOOLS.has(t.name)) {\n m.set(t.name, t);\n }\n }\n return m;\n}\n\nfunction createToolsApi(\n getMap: () => Map<string, AgentTool<any, any>>,\n signal: AbortSignal | undefined,\n): Record<string, (...args: unknown[]) => Promise<string>> {\n let seq = 0;\n let calls = 0;\n\n const bump = (): void => {\n calls += 1;\n if (calls > MAX_TOOL_CALLS) {\n throw new Error(`Exceeded max sandbox tool calls (${MAX_TOOL_CALLS})`);\n }\n };\n\n const run = async (name: string, params: Record<string, unknown>): Promise<string> => {\n if (signal?.aborted) {\n throw new Error('aborted');\n }\n bump();\n const tool = getMap().get(name);\n if (!tool) {\n throw new Error(`Tool not available in sandbox: ${name}`);\n }\n const id = `ptc-${Date.now()}-${seq++}`;\n const result = await (tool as any).execute(id, params, signal);\n return extractTextFromResult(result);\n };\n\n return {\n web_search: async (query: unknown, count?: unknown) =>\n run('web_search', {\n query: String(query ?? ''),\n ...(typeof count === 'number' && Number.isFinite(count) ? { count } : {}),\n }),\n\n web_fetch: async (url: unknown, maxChars?: unknown) =>\n run('web_fetch', {\n url: String(url ?? ''),\n ...(typeof maxChars === 'number' && Number.isFinite(maxChars) ? { maxChars } : {}),\n }),\n\n read_file: async (path: unknown, limit?: unknown) =>\n run('read_file', {\n path: String(path ?? ''),\n ...(typeof limit === 'number' && Number.isFinite(limit) ? { limit } : {}),\n }),\n\n write_file: async (path: unknown, content: unknown) =>\n run('write_file', {\n path: String(path ?? ''),\n content: String(content ?? ''),\n }),\n\n grep: async (pattern: unknown, opts?: unknown) => {\n const o = opts && typeof opts === 'object' && opts !== null ? (opts as Record<string, unknown>) : {};\n return run('grep', {\n pattern: String(pattern ?? ''),\n ...(typeof o.path === 'string' ? { path: o.path } : {}),\n ...(typeof o.glob === 'string' ? { glob: o.glob } : {}),\n ...(typeof o.ignoreCase === 'boolean' ? { ignoreCase: o.ignoreCase } : {}),\n ...(typeof o.literal === 'boolean' ? { literal: o.literal } : {}),\n ...(typeof o.context === 'number' && Number.isFinite(o.context) ? { context: o.context } : {}),\n ...(typeof o.limit === 'number' && Number.isFinite(o.limit) ? { limit: o.limit } : {}),\n });\n },\n\n find: async (pattern: unknown, opts?: unknown) => {\n const o = opts && typeof opts === 'object' && opts !== null ? (opts as Record<string, unknown>) : {};\n return run('find', {\n pattern: String(pattern ?? ''),\n ...(typeof o.path === 'string' ? { path: o.path } : {}),\n ...(typeof o.limit === 'number' && Number.isFinite(o.limit) ? { limit: o.limit } : {}),\n });\n },\n\n exec_command: async (cmd: unknown, cwd?: unknown) =>\n run('exec_command', {\n cmd: String(cmd ?? ''),\n ...(typeof cwd === 'string' && cwd.trim() ? { cwd } : {}),\n }),\n };\n}\n\nasync function runSandboxedScript(\n code: string,\n sandbox: Record<string, unknown>,\n timeoutMs: number,\n signal?: AbortSignal,\n): Promise<void> {\n const context = createContext(sandbox, { name: 'execute_code' });\n const wrapped = `(async () => {\\n${code}\\n})()`;\n const script = new Script(wrapped, { filename: 'execute_code.vm' });\n const runPromise = script.runInContext(context) as Promise<unknown>;\n\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n const timeoutPromise = new Promise<never>((_, rej) => {\n timeoutId = setTimeout(\n () => rej(new Error(`Script timed out after ${Math.round(timeoutMs / 1000)}s`)),\n timeoutMs,\n );\n });\n\n const abortPromise =\n signal &&\n new Promise<never>((_, rej) => {\n if (signal.aborted) {\n rej(new Error('aborted'));\n return;\n }\n signal.addEventListener('abort', () => rej(new Error('aborted')), { once: true });\n });\n\n const racers: Promise<unknown>[] = [runPromise, timeoutPromise];\n if (abortPromise) {\n racers.push(abortPromise);\n }\n\n try {\n await Promise.race(racers);\n } finally {\n if (timeoutId !== undefined) {\n clearTimeout(timeoutId);\n }\n }\n}\n\nexport interface ExecuteCodeToolDeps {\n getSandboxToolMap: () => Map<string, AgentTool<any, any>>;\n}\n\ntype ExecuteCodeParams = { code: string; timeout?: number };\n\nexport function createExecuteCodeTool(deps: ExecuteCodeToolDeps): AgentTool {\n return {\n name: 'execute_code',\n label: '⚡ Execute Code',\n description:\n 'Run sandboxed JavaScript that calls a subset of tools via `tools.*` (batch work in one step).\\n\\n' +\n 'Only stdout/stderr from `console` plus tool return text (as strings) are visible — not full tool JSON.\\n\\n' +\n 'WHEN TO USE: loops over files/URLs, simple branching between tool calls.\\n' +\n 'WHEN NOT TO USE: single tool calls; tasks needing full tool schemas or disallowed tools.\\n\\n' +\n 'API: `await tools.web_search(q, count?)`, `web_fetch(url, maxChars?)`, `read_file(path, limit?)`, ' +\n '`write_file(path, content)`, `grep(pattern, opts?)`, `find(glob, opts?)`, `exec_command(cmd, cwd?)`. ' +\n 'Use `console.log` for output.',\n parameters: ExecuteCodeSchema,\n\n async execute(\n _toolCallId: string,\n params: any,\n signal?: AbortSignal,\n ): Promise<AgentToolResult<{ exitCode: number }>> {\n const p = params as ExecuteCodeParams;\n const sec = p.timeout ?? DEFAULT_TIMEOUT_SEC;\n const timeoutMs = Math.min(\n Math.max(1, Number.isFinite(sec) ? sec : DEFAULT_TIMEOUT_SEC) * 1000,\n MAX_TIMEOUT_MS,\n );\n\n const stdout: string[] = [];\n const stderr: string[] = [];\n\n const toolsApi = createToolsApi(deps.getSandboxToolMap, signal);\n\n const sandbox: Record<string, unknown> = {\n tools: toolsApi,\n Promise,\n JSON,\n Math,\n Date,\n Array,\n Object,\n String,\n Number,\n Boolean,\n RegExp,\n Map,\n Set,\n Error,\n TypeError,\n RangeError,\n parseInt,\n parseFloat,\n isNaN,\n isFinite,\n console: {\n log: (...args: unknown[]) => {\n stdout.push(args.map(stringifyArg).join(' '));\n },\n error: (...args: unknown[]) => {\n stderr.push(args.map(stringifyArg).join(' '));\n },\n warn: (...args: unknown[]) => {\n stderr.push(args.map(stringifyArg).join(' '));\n },\n },\n setTimeout,\n clearTimeout,\n };\n\n try {\n await runSandboxedScript(p.code, sandbox, timeoutMs, signal);\n\n let out = stdout.join('\\n');\n if (out.length > MAX_STDOUT_CHARS) {\n out = `${out.slice(0, MAX_STDOUT_CHARS)}\\n...(truncated)`;\n }\n\n const parts: string[] = [];\n if (out.length > 0) {\n parts.push(out);\n }\n if (stderr.length > 0) {\n let err = stderr.join('\\n');\n if (err.length > MAX_STDERR_CHARS) {\n err = `${err.slice(0, MAX_STDERR_CHARS)}\\n...(truncated)`;\n }\n parts.push(`\\nSTDERR:\\n${err}`);\n }\n\n return {\n content: [{ type: 'text', text: parts.join('') || '(no output)' }],\n details: { exitCode: 0 },\n };\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n return {\n content: [{ type: 'text', text: `Execution failed: ${message}` }],\n details: { exitCode: 1 },\n };\n }\n },\n } as any;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","names":[],"sources":["../../../../src/agent/tools/executor.ts"],"sourcesContent":["/**\n * Tool Executor - Unified tool execution wrapper.\n *\n * Adds:\n * - Timeout protection (tools that hang would otherwise stall the turn).\n * - Optional retry for tools explicitly marked `idempotent`.\n *\n * Pi-agent contract (from `AgentTool.execute` docstring): \"Throw on failure\n * instead of encoding errors in `content`.\" Pi-agent turns thrown errors into\n * `tool_execution_end` events with `isError=true`, which feeds the loop guard,\n * error tracker, and error-pattern matcher. This wrapper therefore re-throws\n * instead of synthesising fake-success results.\n */\n\nimport type {\n AgentTool,\n AgentToolResult,\n AgentToolUpdateCallback,\n} from '@earendil-works/pi-agent-core';\nimport { createLogger } from '../../utils/logger.js';\nimport { executeWithTimeout, TimeoutError } from '../lifecycle/timeout-wrapper.js';\nimport { withRetry } from '../../infra/retry.js';\nimport type { XopcToolMetadata } from './metadata.js';\nimport { ToolConcurrencyController, resolveToolLockMode } from './concurrency.js';\nimport type { ToolConcurrencyController as ToolConcurrencyControllerType } from './concurrency.js';\n\nconst log = createLogger('ToolExecutor');\n\nexport interface ToolExecutorConfig {\n /** Default per-tool timeout when the tool does not declare its own `timeoutMs`. */\n defaultTimeoutMs: number;\n\n /** Max retry attempts for tools opted into retry via `idempotent: true`. */\n maxRetries: number;\n /** Initial backoff between retries (passed straight to `withRetry`). */\n retryDelayMs: number;\n\n /** Master switches; default both on so the wrapper is still effective. */\n enableTimeout: boolean;\n enableRetry: boolean;\n}\n\nconst DEFAULT_CONFIG: ToolExecutorConfig = {\n defaultTimeoutMs: 5 * 60 * 1000, // 5 minutes\n maxRetries: 2,\n retryDelayMs: 1000,\n enableTimeout: true,\n enableRetry: true,\n};\n\n/**\n * Optional xopc-side hints that any tool may attach. They are not part of the\n * pi-agent `AgentTool` contract; the wrapper reads them via structural typing.\n *\n * - `timeoutMs`: per-tool override of the default execution timeout.\n * - `idempotent`: marks a tool as safe to retry. The wrapper retries only\n * tools that opt in — write/edit-like tools must leave this `false`.\n */\nexport interface XopcToolHints extends XopcToolMetadata {\n timeoutMs?: number;\n}\n\nfunction readToolHints(tool: AgentTool<any, any>): XopcToolHints {\n const t = tool as AgentTool<any, any> & XopcToolHints;\n return {\n timeoutMs: typeof t.timeoutMs === 'number' && t.timeoutMs > 0 ? t.timeoutMs : undefined,\n idempotent: t.idempotent === true,\n };\n}\n\nfunction resolveTimeoutMs(tool: AgentTool<any, any>, config: ToolExecutorConfig): number {\n const hints = readToolHints(tool);\n return hints.timeoutMs ?? config.defaultTimeoutMs;\n}\n\n/**\n * Execute tool with timeout (always) and retry (only for idempotent tools).\n * Re-throws on failure so pi-agent records `isError=true`.\n */\nexport async function executeToolWithProtection<TDetails>(\n tool: AgentTool<any, TDetails>,\n toolCallId: string,\n params: any,\n signal?: AbortSignal,\n onUpdate?: AgentToolUpdateCallback<TDetails>,\n config: Partial<ToolExecutorConfig> = {},\n): Promise<AgentToolResult<TDetails>> {\n const fullConfig = { ...DEFAULT_CONFIG, ...config };\n const toolName = tool.name;\n const hints = readToolHints(tool);\n\n const runOnce = (): Promise<AgentToolResult<TDetails>> =>\n tool.execute(toolCallId, params, signal, onUpdate);\n\n let operation: () => Promise<AgentToolResult<TDetails>> = runOnce;\n\n if (fullConfig.enableTimeout) {\n const timeoutMs = resolveTimeoutMs(tool, fullConfig);\n const inner = operation;\n operation = () =>\n executeWithTimeout(inner, {\n toolName,\n timeoutMs,\n description: `Executing ${toolName}`,\n });\n }\n\n const shouldRetry = fullConfig.enableRetry && fullConfig.maxRetries > 0 && hints.idempotent;\n if (shouldRetry) {\n const inner = operation;\n operation = () =>\n withRetry(inner, {\n attempts: fullConfig.maxRetries + 1,\n minDelayMs: fullConfig.retryDelayMs,\n onRetry: (info) => {\n log.warn(\n { tool: toolName, attempt: info.attempt, delayMs: info.delayMs, error: info.error },\n 'Tool execution failed, retrying (idempotent)',\n );\n },\n });\n }\n\n const startTime = Date.now();\n try {\n const result = await operation();\n log.debug(\n { tool: toolName, durationMs: Date.now() - startTime, success: true },\n 'Tool execution completed',\n );\n return result;\n } catch (error) {\n const durationMs = Date.now() - startTime;\n\n if (error instanceof TimeoutError) {\n log.error(\n { tool: toolName, timeoutMs: error.timeoutMs, durationMs },\n 'Tool execution timed out',\n );\n throw new Error(`Tool '${toolName}' timed out after ${error.timeoutMs}ms`, { cause: error });\n }\n\n const errorMessage = error instanceof Error ? error.message : String(error);\n log.error(\n { tool: toolName, error: errorMessage, durationMs },\n 'Tool execution failed',\n );\n throw error instanceof Error ? error : new Error(errorMessage);\n }\n}\n\n/**\n * Wrap a single tool with the protection pipeline. Preserves the original\n * `execute` signature so streaming `signal` / `onUpdate` reach the tool.\n */\nexport function wrapToolWithProtection<TDetails>(\n tool: AgentTool<any, TDetails>,\n config?: Partial<ToolExecutorConfig>,\n concurrency?: ToolConcurrencyControllerType,\n): AgentTool<any, TDetails> {\n const lockMode = resolveToolLockMode(tool);\n return {\n ...tool,\n async execute(\n toolCallId: string,\n params: any,\n signal?: AbortSignal,\n onUpdate?: AgentToolUpdateCallback<TDetails>,\n ): Promise<AgentToolResult<TDetails>> {\n const run = () => executeToolWithProtection(tool, toolCallId, params, signal, onUpdate, config);\n return concurrency ? concurrency.run(lockMode, run) : run();\n },\n } as AgentTool<any, TDetails>;\n}\n\n/**\n * Wrap a batch of tools with protection.\n */\nexport function wrapToolsWithProtection(\n tools: AgentTool<any, any>[],\n config?: Partial<ToolExecutorConfig>,\n concurrency = new ToolConcurrencyController(),\n): AgentTool<any, any>[] {\n return tools.map((tool) => wrapToolWithProtection(tool, config, concurrency));\n}\n\n// Export configuration\nexport { DEFAULT_CONFIG as DEFAULT_TOOL_EXECUTOR_CONFIG };\n"],"mappings":";;;;;;aAmBqD;AAOrD,MAAM,MAAM,aAAa,eAAe;AAgBxC,MAAM,iBAAqC;CACzC,kBAAkB,MAAS;CAC3B,YAAY;CACZ,cAAc;CACd,eAAe;CACf,aAAa;CACd;AAcD,SAAS,cAAc,MAA0C;CAC/D,MAAM,IAAI;AACV,QAAO;EACL,WAAW,OAAO,EAAE,cAAc,YAAY,EAAE,YAAY,IAAI,EAAE,YAAY,KAAA;EAC9E,YAAY,EAAE,eAAe;EAC9B;;AAGH,SAAS,iBAAiB,MAA2B,QAAoC;AAEvF,QADc,cAAc,KAChB,CAAC,aAAa,OAAO;;;;;;AAOnC,eAAsB,0BACpB,MACA,YACA,QACA,QACA,UACA,SAAsC,EAAE,EACJ;CACpC,MAAM,aAAa;EAAE,GAAG;EAAgB,GAAG;EAAQ;CACnD,MAAM,WAAW,KAAK;CACtB,MAAM,QAAQ,cAAc,KAAK;CAEjC,MAAM,gBACJ,KAAK,QAAQ,YAAY,QAAQ,QAAQ,SAAS;CAEpD,IAAI,YAAsD;AAE1D,KAAI,WAAW,eAAe;EAC5B,MAAM,YAAY,iBAAiB,MAAM,WAAW;EACpD,MAAM,QAAQ;AACd,oBACE,mBAAmB,OAAO;GACxB;GACA;GACA,aAAa,aAAa;GAC3B,CAAC;;AAIN,KADoB,WAAW,eAAe,WAAW,aAAa,KAAK,MAAM,YAChE;EACf,MAAM,QAAQ;AACd,oBACE,UAAU,OAAO;GACf,UAAU,WAAW,aAAa;GAClC,YAAY,WAAW;GACvB,UAAU,SAAS;AACjB,QAAI,KACF;KAAE,MAAM;KAAU,SAAS,KAAK;KAAS,SAAS,KAAK;KAAS,OAAO,KAAK;KAAO,EACnF,+CACD;;GAEJ,CAAC;;CAGN,MAAM,YAAY,KAAK,KAAK;AAC5B,KAAI;EACF,MAAM,SAAS,MAAM,WAAW;AAChC,MAAI,MACF;GAAE,MAAM;GAAU,YAAY,KAAK,KAAK,GAAG;GAAW,SAAS;GAAM,EACrE,2BACD;AACD,SAAO;UACA,OAAO;EACd,MAAM,aAAa,KAAK,KAAK,GAAG;AAEhC,MAAI,iBAAiB,cAAc;AACjC,OAAI,MACF;IAAE,MAAM;IAAU,WAAW,MAAM;IAAW;IAAY,EAC1D,2BACD;AACD,SAAM,IAAI,MAAM,SAAS,SAAS,oBAAoB,MAAM,UAAU,KAAK,EAAE,OAAO,OAAO,CAAC;;EAG9F,MAAM,eAAe,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;AAC3E,MAAI,MACF;GAAE,MAAM;GAAU,OAAO;GAAc;GAAY,EACnD,wBACD;AACD,QAAM,iBAAiB,QAAQ,QAAQ,IAAI,MAAM,aAAa;;;;;;;AAQlE,SAAgB,uBACd,MACA,QACA,aAC0B;CAC1B,MAAM,WAAW,oBAAoB,KAAK;AAC1C,QAAO;EACL,GAAG;EACH,MAAM,QACJ,YACA,QACA,QACA,UACoC;GACpC,MAAM,YAAY,0BAA0B,MAAM,YAAY,QAAQ,QAAQ,UAAU,OAAO;AAC/F,UAAO,cAAc,YAAY,IAAI,UAAU,IAAI,GAAG,KAAK;;EAE9D;;;;;AAMH,SAAgB,wBACd,OACA,QACA,cAAc,IAAI,2BAA2B,EACtB;AACvB,QAAO,MAAM,KAAK,SAAS,uBAAuB,MAAM,QAAQ,YAAY,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","names":[],"sources":["../../../../src/agent/tools/factory.ts"],"sourcesContent":["/**\n * Agent Tools Factory - Creates and configures agent tools\n *\n * Centralizes tool creation logic to keep service.ts focused on orchestration.\n *\n * TTS: auto TTS is applied at the ChannelManager via maybeApplyTtsToPayload().\n * Optional \\`text_to_speech\\` tool sends explicit voice when TTS is enabled.\n */\n\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { Model, Api } from '@earendil-works/pi-ai';\nimport type { Page } from 'playwright-core';\nimport type { Config } from '../../config/schema.js';\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport {\n createReadFileTool,\n createWriteFileTool,\n createApplyPatchTool,\n createListDirTool,\n createGrepTool,\n createFindTool,\n createExecCommandTool,\n createWebSearchTool,\n createWebFetchTool,\n createWebExtractTool,\n createMessageTool,\n createComposioTools,\n createSendMediaTool,\n createReadMediaTool,\n createCreateShareTool,\n isShareToolAvailable,\n createMemorySearchTool,\n createMemoryGetTool,\n createTodoTool,\n createUpdatePlanTool,\n createSessionStatusTool,\n createDreamingTool,\n createClarifyTool,\n createToolManualTool,\n createGoalTool,\n createAutomationTool,\n createXopcUseTool,\n createDesktopPetTool,\n createSkillInstallTool,\n createCodeIntelligenceTools,\n type SkillInstallToolOptions,\n type SkillInstallToolResult,\n} from './index.js';\nimport { createCuratedMemoryTool } from './curated-memory-tool.js';\nimport { createSessionSearchTool } from './session-search-tool.js';\nimport type { MemoryManager } from '../memory/manager.js';\nimport { shouldRegisterCuratedMemoryTool } from '../memory/memory-config.js';\nimport type { SessionStore } from '../../session/store.js';\nimport type { GatewayClarifyRequestFn } from './clarify-tool.js';\nimport { createImageTool } from './image-tool.js';\nimport { createImageGenerateTool } from './image-generate-tool.js';\nimport {\n BrowserManager,\n BrowserNotReadyError,\n CdpSupervisor,\n checkBrowserReadiness,\n resolveBrowserBackendFromConfig,\n} from '../../browser/index.js';\nimport { createBrowserUseTool } from './browser/tool/browser-use-tool.js';\nimport { createDelegateTool } from './delegate-tool.js';\nimport { createWorkflowTool } from './workflow-tool.js';\nimport { createWorkflowCatalog } from '../workflow/catalog.js';\nimport { resolveDreamingRoot } from '../memory/dreaming/scope.js';\nimport { resolveDreamingConfig } from '../memory/dreaming/config.js';\nimport { buildSandboxToolMap, createExecuteCodeTool } from './execute-code-tool.js';\nimport type { AutomationService } from '../../automations/index.js';\nimport type { NotesService } from '../../notes/index.js';\nimport type { ProjectService } from '../../projects/index.js';\nimport type { WorkItemService } from '../../work-items/index.js';\nimport type { WorkflowRunServiceLike } from '../../workflows/service/workflow-run-service.types.js';\nimport { createLogger } from '../../utils/logger.js';\nimport type { SkillManager } from '../skills/skill-manager.js';\nimport { wrapToolsWithProtection, type ToolExecutorConfig } from './executor.js';\nimport { createSkillsListTool, createSkillViewTool } from './skills-tools.js';\nimport { createSkillManageTool } from './skill-manage-tool.js';\nimport { createTextToSpeechTool } from './tts-tool.js';\nimport { mergeTtsConfigFromAppConfig } from '../../voice/tts/merge-config.js';\nimport { createGoalEvidenceRecorder } from './goal-evidence-recorder.js';\nimport { getAgentCapabilityToolNames } from '../capabilities/index.js';\nimport type { CodeIntelligenceRuntimeLike } from '../code-intelligence/index.js';\n\nconst log = createLogger('AgentToolsFactory');\n\n/** Channels where `clarify` can block for a user answer (web UI, Telegram, CLI readline). */\nconst CLARIFY_SUPPORTED_CHANNELS = new Set(['webchat', 'telegram', 'cli']);\n\nexport interface ToolFactoryDeps {\n workspace: string;\n extensionRegistry?: any;\n getCurrentContext: () => { channel: string; chatId: string; sessionKey: string } | null;\n hookRunner?: import('../../extensions/index.js').ExtensionHookRunner;\n bus: MessageBus;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n /** Agent defaults (image tools, etc.); use getter so hot-reloaded config applies. */\n getConfig?: () => Config | undefined;\n /** Session / default chat model for vision tool description. */\n getPrimaryModel?: () => Model<Api>;\n /** Memory orchestration (prefetch/sync + external tools). */\n getMemoryManager?: () => MemoryManager;\n /** Session store for `session_search`. */\n getSessionStore?: () => SessionStore;\n /** When set (gateway webchat), enables the `clarify` tool. */\n gatewayClarify?: { requestClarification: GatewayClarifyRequestFn };\n /** Gateway: enables the `automation` tool. */\n getAutomationService?: () => AutomationService | undefined;\n /** Gateway: enables the `xopc_use` product-object tool. */\n getNotesService?: () => NotesService | undefined;\n getProjectService?: () => ProjectService | undefined;\n getWorkItemService?: () => WorkItemService | undefined;\n /** Gateway: starts persisted workflow runs (dedicated chat session per run). */\n getWorkflowRunService?: () => WorkflowRunServiceLike | undefined;\n /** Current session skill indexing (tool gating + allowlist); used by skills_list / skill_view. */\n getSkillIndexingContext?: () =>\n | { registeredToolNames: string[]; skillAllowlist?: string[] }\n | undefined;\n /** After skill_manage mutates disk, reload skills + refresh agent prompts (optional). */\n onSkillsFilesystemMutate?: () => void;\n /** Names registered via skill_view for command env passthrough. */\n getSkillPassthroughEnvVarNames?: () => string[];\n /** Add declared env names for the current session (no values stored). */\n registerSkillEnvPassthrough?: (names: string[]) => void;\n /** Install managed skills from explicit sources when a capability/tool enables it. */\n installSkillFromSource?: (opts: SkillInstallToolOptions) => Promise<SkillInstallToolResult>;\n /** Workspace-scoped structural code intelligence runtime. */\n getCodeIntelligenceRuntime?: (workspace: string) => CodeIntelligenceRuntimeLike;\n}\n\nexport interface CreateCoreToolsOptions {\n /** Workspace root for file/command tools (defaults to factory workspace). */\n workspace?: string;\n /** Canonical `agents/<id>/profile/`: bare SOUL.md / IDENTITY.md resolve here after the workspace. */\n profileMarkdownRoot?: string;\n /** Tool `name` values to omit (e.g. `exec_command`, `extensions` for extension tools). */\n disabledTools?: Set<string>;\n /** Optional primary model for image tool heuristics. */\n getPrimaryModel?: () => Model<Api>;\n getMemoryManager?: () => MemoryManager;\n /** Shared user memories directory used for dreaming state (`user/memories`). */\n dreamingRoot?: string;\n agentId?: string;\n /** When set, registers `skills_list` and `skill_view` bound to this workspace\\'s skills. */\n getSkillManager?: () => SkillManager;\n}\n\nexport class AgentToolsFactory {\n private browserManager: BrowserManager | null = null;\n /** One dialog/console supervisor per chat session (browser tab). */\n private readonly browserTaskSupervisors = new Map<string, CdpSupervisor>();\n /** Cached readiness probe — keyed by backend mode + extension host:port. */\n private browserReadinessCache: {\n key: string;\n expiresAt: number;\n inflight?: Promise<BrowserNotReadyError | null>;\n result?: BrowserNotReadyError | null;\n } | null = null;\n\n constructor(private deps: ToolFactoryDeps) {}\n\n private browserReadinessKey(): string {\n const cfg = this.deps.getConfig?.();\n const backend = resolveBrowserBackendFromConfig(cfg);\n const host = '127.0.0.1';\n const port = 19820;\n const cdpUrl = backend.mode === 'cdp' ? backend.config.wsEndpoint : '';\n const cloudKind = backend.mode === 'cloud' ? backend.config.type : '';\n return `${backend.mode}@${host}:${port}|${cdpUrl}|${cloudKind}`;\n }\n\n private async checkBrowserReadinessCached(): Promise<BrowserNotReadyError | null> {\n const key = this.browserReadinessKey();\n const now = Date.now();\n const cached = this.browserReadinessCache;\n if (cached && cached.key === key && cached.expiresAt > now && cached.inflight === undefined) {\n return cached.result ?? null;\n }\n if (cached && cached.key === key && cached.inflight) {\n return cached.inflight;\n }\n const inflight = checkBrowserReadiness(this.deps.getConfig?.());\n this.browserReadinessCache = { key, expiresAt: now + 30_000, inflight };\n try {\n const result = await inflight;\n this.browserReadinessCache = { key, expiresAt: Date.now() + 30_000, result };\n return result;\n } catch (e) {\n // Probe should never throw, but if it does we just bypass the cache.\n this.browserReadinessCache = null;\n log.warn({ err: e }, 'browserReadiness probe failed');\n return null;\n }\n }\n\n /** Invalidate the readiness cache (config hot-reload, settings-page save, etc.). */\n invalidateBrowserReadinessCache(): void {\n this.browserReadinessCache = null;\n }\n\n private browserSupervisorForTask(taskId: string): CdpSupervisor {\n let s = this.browserTaskSupervisors.get(taskId);\n if (!s) {\n s = new CdpSupervisor({ dialogPolicy: 'auto_dismiss', dialogTimeoutSeconds: 300 });\n this.browserTaskSupervisors.set(taskId, s);\n }\n return s;\n }\n\n private async acquireBrowserPage(): Promise<Page> {\n const taskId = this.deps.getCurrentContext()?.sessionKey ?? 'default';\n const mgr = this.ensureBrowserManager();\n await mgr.ensureConnected();\n if (mgr.getExtensionProvider()) {\n return null as unknown as Page;\n }\n const page = await mgr.getPage(taskId);\n this.browserSupervisorForTask(taskId).attach(page);\n return page;\n }\n\n private ensureBrowserManager(): BrowserManager {\n if (!this.browserManager) {\n this.browserManager = new BrowserManager({\n getHeadless: () => false,\n getBackend: () => resolveBrowserBackendFromConfig(this.deps.getConfig?.()),\n });\n }\n return this.browserManager;\n }\n\n /** Close Playwright and all pages (gateway stop, agent manager dispose, or config hot-reload). */\n async shutdownBrowser(): Promise<void> {\n this.browserReadinessCache = null;\n if (!this.browserManager) {\n return;\n }\n await this.browserManager.shutdown();\n this.browserManager = null;\n this.browserTaskSupervisors.clear();\n }\n\n /** Drop the tab for a session when its agent instance is removed. */\n async closeBrowserPageForSession(sessionKey: string): Promise<void> {\n this.browserTaskSupervisors.delete(sessionKey);\n await this.browserManager?.closePage(sessionKey);\n }\n\n createCoreTools(options?: CreateCoreToolsOptions): AgentTool<any, any>[] {\n const workspace = options?.workspace ?? this.deps.workspace;\n const { bus } = this.deps;\n const getPrimary = options?.getPrimaryModel ?? this.deps.getPrimaryModel;\n const getMemMgr = options?.getMemoryManager ?? this.deps.getMemoryManager;\n const getSkillMgr = options?.getSkillManager;\n const disabled = options?.disabledTools;\n\n const primary = getPrimary?.();\n const modelHasVision = primary?.input?.includes('image') ?? false;\n const cfg = this.deps.getConfig?.();\n const dreamingRoot = options?.dreamingRoot ?? (cfg ? resolveDreamingRoot() : workspace);\n const browserEnabled = cfg?.browser?.enabled !== false;\n const recordGoalEvidence = createGoalEvidenceRecorder({\n getSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n });\n const imageTool = createImageTool({\n config: cfg,\n workspace,\n modelHasVision,\n agentId: options?.agentId,\n });\n const imageGenerateTool = createImageGenerateTool({\n config: cfg,\n workspace,\n });\n const codeIntelligenceConfig = cfg?.codeIntelligence;\n const agentId = options?.agentId;\n const codeIntelligenceEnabled =\n codeIntelligenceConfig?.enabled === true &&\n agentId !== undefined &&\n codeIntelligenceConfig.agentIds.includes(agentId);\n const codeIntelligenceTools = codeIntelligenceEnabled && this.deps.getCodeIntelligenceRuntime\n ? createCodeIntelligenceTools({\n getRuntime: () => this.deps.getCodeIntelligenceRuntime!(workspace),\n })\n : [];\n\n const composioTools = createComposioTools({\n getConfig: () => this.deps.getConfig?.(),\n getCurrentContext: this.deps.getCurrentContext,\n agentId,\n });\n const optionalTools = [imageTool, imageGenerateTool, ...composioTools].filter((t) => t != null) as any[];\n\n const readTool = createReadFileTool(workspace, {\n profileMarkdownRoot: options?.profileMarkdownRoot,\n });\n const writeTool = createWriteFileTool(workspace, {\n profileMarkdownRoot: options?.profileMarkdownRoot,\n recordGoalEvidence,\n });\n const applyPatchTool = createApplyPatchTool(workspace, { recordGoalEvidence });\n const listDir = createListDirTool(workspace);\n const grep = createGrepTool(workspace);\n const find = createFindTool(workspace);\n\n const core: AgentTool<any, any>[] = [\n createSessionStatusTool(),\n createDreamingTool({\n getWorkspace: () => workspace,\n getDreamingRoot: () => dreamingRoot,\n getConfig: () => this.deps.getConfig?.(),\n getAgentId: () => options?.agentId,\n }),\n createToolManualTool(),\n createClarifyTool({\n resolveAskUser: () => {\n const req = this.deps.gatewayClarify?.requestClarification;\n if (!req) return null;\n const ctx = this.deps.getCurrentContext();\n if (!ctx?.sessionKey) return null;\n if (!CLARIFY_SUPPORTED_CHANNELS.has(ctx.channel)) return null;\n return (r) => req(ctx.sessionKey, r);\n },\n }),\n createTodoTool({\n getSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n }),\n createUpdatePlanTool(),\n ...(getSkillMgr\n ? [\n createSkillsListTool({\n getSkillManager: getSkillMgr,\n getSkillIndexingContext: this.deps.getSkillIndexingContext,\n }),\n createSkillViewTool({\n getSkillManager: getSkillMgr,\n getSkillIndexingContext: this.deps.getSkillIndexingContext,\n registerSkillEnvPassthrough: this.deps.registerSkillEnvPassthrough,\n }),\n createSkillManageTool({\n getSkillManager: getSkillMgr,\n getWorkspace: () => workspace,\n onSkillsFilesystemMutate: this.deps.onSkillsFilesystemMutate,\n }),\n ]\n : []),\n readTool,\n ...codeIntelligenceTools,\n writeTool,\n applyPatchTool,\n listDir,\n grep,\n find,\n createExecCommandTool(workspace, {\n getSkillPassthroughEnvVarNames: this.deps.getSkillPassthroughEnvVarNames,\n recordGoalEvidence,\n }),\n createWebSearchTool(() => this.deps.getConfig?.()),\n createWebFetchTool(() => this.deps.getConfig?.()),\n createWebExtractTool({ getConfig: () => this.deps.getConfig?.() }),\n // Note: TTS is NOT handled by send_message tool anymore\n // TTS is applied at the ChannelManager dispatch layer\n createMessageTool(bus, () => this.deps.getCurrentContext()),\n ...(mergeTtsConfigFromAppConfig(cfg?.messages?.tts).enabled\n ? [\n createTextToSpeechTool({\n bus,\n getContext: () => this.deps.getCurrentContext(),\n getConfig: () => this.deps.getConfig?.(),\n }),\n ]\n : []),\n createSendMediaTool(workspace, bus, () => this.deps.getCurrentContext()),\n createReadMediaTool(),\n ...(isShareToolAvailable(cfg)\n ? [\n createCreateShareTool({\n workspace,\n getConfig: () => this.deps.getConfig?.(),\n }),\n ]\n : []),\n ...(getMemMgr\n ? [\n createMemorySearchTool({\n workspaceDir: workspace,\n dreamingRoot,\n getMemoryManager: () => getMemMgr(),\n getScope: () => ({\n ...(options?.agentId ? { agentId: options.agentId } : {}),\n workspaceId: workspace,\n ...(this.deps.getCurrentContext?.()?.sessionKey\n ? { sessionKey: this.deps.getCurrentContext!()!.sessionKey }\n : {}),\n }),\n shouldRecordDreamingRecalls: () =>\n resolveDreamingConfig(this.deps.getConfig?.(), options?.agentId).enabled,\n }),\n createMemoryGetTool({\n workspaceDir: workspace,\n dreamingRoot,\n getMemoryManager: () => getMemMgr(),\n getScope: () => ({\n ...(options?.agentId ? { agentId: options.agentId } : {}),\n workspaceId: workspace,\n ...(this.deps.getCurrentContext?.()?.sessionKey\n ? { sessionKey: this.deps.getCurrentContext!()!.sessionKey }\n : {}),\n }),\n }),\n ]\n : []),\n ...(getMemMgr && shouldRegisterCuratedMemoryTool(this.deps.getConfig?.())\n ? [\n createCuratedMemoryTool(() => getMemMgr()),\n ]\n : []),\n ...(getMemMgr?.().getAdditionalTools() ?? []),\n ...(this.deps.getSessionStore\n ? [\n createSessionSearchTool({\n getSessionStore: this.deps.getSessionStore,\n getConfig: this.deps.getConfig,\n getCurrentSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n }),\n ]\n : []),\n ...(this.deps.getAutomationService\n ? [\n createAutomationTool({\n getAutomationService: this.deps.getAutomationService,\n }),\n ]\n : []),\n ...(this.deps.getProjectService || this.deps.getNotesService || this.deps.getWorkItemService\n ? [\n createXopcUseTool({\n getConfig: () => this.deps.getConfig?.(),\n getCurrentAgentId: () => options.agentId,\n getCurrentSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n getNotesService: this.deps.getNotesService,\n getProjectService: this.deps.getProjectService,\n getWorkItemService: this.deps.getWorkItemService,\n }),\n ]\n : []),\n createGoalTool({\n getCurrentSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n }),\n ...(browserEnabled\n ? [\n createBrowserUseTool({\n getManager: () => this.ensureBrowserManager(),\n getPageForTask: () => this.acquireBrowserPage(),\n getTaskId: () => this.deps.getCurrentContext()?.sessionKey ?? 'default',\n getConfig: () => this.deps.getConfig?.(),\n getReadiness: () => this.checkBrowserReadinessCached(),\n getSupervisor: () =>\n this.browserSupervisorForTask(this.deps.getCurrentContext()?.sessionKey ?? 'default'),\n notifyBrowserPageClosed: (taskId) => {\n this.browserTaskSupervisors.delete(taskId);\n },\n }),\n ]\n : []),\n ...(primary\n ? [\n createWorkflowTool({\n catalog: createWorkflowCatalog(),\n getCurrentSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n getConfig: () => this.deps.getConfig?.(),\n startWorkflowRun: this.deps.getWorkflowRunService\n ? (params) => this.deps.getWorkflowRunService!().startWorkflowRun(params)\n : undefined,\n }),\n ]\n : []),\n ...(false && primary\n ? [\n createDelegateTool({\n workspace,\n getSubagentModel: () => {\n const gp = options?.getPrimaryModel ?? this.deps.getPrimaryModel;\n const m = gp?.();\n if (!m) {\n throw new Error('No primary model configured for delegate_task');\n }\n return m;\n },\n bus: this.deps.bus,\n getConfig: () => this.deps.getConfig?.(),\n getCurrentContext: () => this.deps.getCurrentContext?.() ?? null,\n hookRunner: this.deps.hookRunner,\n toolExecutorConfig: this.deps.toolExecutorConfig,\n // Injected so `child-agent-factory.ts` does not need to import\n // `AgentToolsFactory` directly (which would form a cycle).\n buildChildTools: (childOpts) => {\n const childFactory = new AgentToolsFactory({\n workspace: childOpts.workspace,\n bus: childOpts.bus,\n getCurrentContext: () => null,\n getConfig: childOpts.getConfig,\n getPrimaryModel: () => childOpts.model,\n toolExecutorConfig: childOpts.toolExecutorConfig,\n });\n return childFactory.createAllTools({\n workspace: childOpts.workspace,\n getPrimaryModel: () => childOpts.model,\n agentId: options?.agentId ?? childOpts.agentId,\n dreamingRoot: options?.dreamingRoot,\n disabledTools: new Set(['extensions']),\n });\n },\n }),\n ]\n : []),\n ...optionalTools,\n ];\n\n return filterToolsByDisabledSet(core, disabled);\n }\n\n createCapabilityTools(\n capabilityNames: readonly string[],\n options?: Pick<CreateCoreToolsOptions, 'disabledTools'>,\n ): AgentTool<any, any>[] {\n const disabled = options?.disabledTools;\n const raw: AgentTool<any, any>[] = [];\n const toolNames = new Set<string>();\n for (const toolName of getAgentCapabilityToolNames(capabilityNames)) {\n if (disabled?.has(toolName) || toolNames.has(toolName)) continue;\n toolNames.add(toolName);\n if (toolName === 'create_desktop_pet') raw.push(createDesktopPetTool() as AgentTool<any, any>);\n if (toolName === 'skill_install') {\n raw.push(createSkillInstallTool({\n installSkillFromSource: this.deps.installSkillFromSource,\n getSessionKey: () => this.deps.getCurrentContext()?.sessionKey,\n }) as AgentTool<any, any>);\n }\n }\n return wrapToolsWithProtection(raw, this.deps.toolExecutorConfig);\n }\n\n getLazyCapabilityToolNames(): string[] {\n return [\n 'create_desktop_pet',\n ...(this.deps.installSkillFromSource ? ['skill_install'] : []),\n ];\n }\n\n createAllTools(coreOptions?: CreateCoreToolsOptions): AgentTool<any, any>[] {\n const coreTools = this.createCoreTools(coreOptions);\n const disableExtensions = coreOptions?.disabledTools?.has('extensions');\n\n let bundled: AgentTool<any, any>[];\n if (!this.deps.extensionRegistry || disableExtensions) {\n bundled = coreTools;\n } else {\n const extensionTools = this.deps.extensionRegistry.getAllTools();\n log.info({ count: extensionTools.length }, 'Loaded extension tools');\n bundled = [...coreTools, ...extensionTools];\n }\n\n const wrapped = wrapToolsWithProtection(bundled, this.deps.toolExecutorConfig);\n\n const executeEnabled = false && !coreOptions?.disabledTools?.has('execute_code');\n\n if (executeEnabled) {\n const sandboxMap = buildSandboxToolMap(wrapped);\n const executeTool = createExecuteCodeTool({ getSandboxToolMap: () => sandboxMap });\n const wrappedExecute = wrapToolsWithProtection([executeTool as any], this.deps.toolExecutorConfig);\n return [...wrapped, ...wrappedExecute];\n }\n\n return wrapped;\n }\n}\n\nfunction filterToolsByDisabledSet(\n tools: any[],\n disabled: Set<string> | undefined,\n): any[] {\n if (!disabled || disabled.size === 0) {\n return tools;\n }\n return tools.filter((t) => !disabled.has(t.name));\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"find.js","names":[],"sources":["../../../../src/agent/tools/find.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { existsSync } from 'fs';\nimport { globSync } from 'glob';\nimport path from 'path';\nimport { DEFAULT_MAX_BYTES, formatSize, type TruncationResult, truncateHead } from './truncate.js';\nimport { resolveToCwd } from '../../utils/helpers.js';\n\nconst findSchema = Type.Object({\n\tpattern: Type.String({\n\t\tdescription: \"Glob pattern to match files, e.g. '*.ts', '**/*.json', or 'src/**/*.spec.ts'\",\n\t}),\n\tpath: Type.Optional(Type.String({ description: 'Directory to search in (default: current directory)' })),\n\tlimit: Type.Optional(Type.Number({ description: 'Maximum number of results (default: 1000)' })),\n});\n\nexport type FindToolInput = { pattern: string; path?: string; limit?: number };\n\nconst DEFAULT_LIMIT = 1000;\n\nexport interface FindToolDetails {\n\ttruncation?: TruncationResult;\n\tresultLimitReached?: number;\n}\n\n/**\n * Find tool - Search for files by glob pattern\n */\nexport function createFindTool(cwd: string): AgentTool {\n\treturn {\n\t\tname: 'find',\n\t\tlabel: '📁 find',\n\t\tdescription: 'Find files by glob pattern (e.g., *.ts, **/*.json).',\n\t\tparameters: findSchema,\n\t\tsupportsParallel: true,\n\t\tidempotent: true,\n\t\texecute: async (\n\t\t\t_toolCallId: string,\n\t\t\tparams: any,\n\t\t\tsignal?: AbortSignal\n\t\t): Promise<AgentToolResult<FindToolDetails>> => {\n\t\t\ttry {\n\t\t\t\tconst p = params as FindToolInput;\n\t\t\t\tconst searchPath = resolveToCwd(p.path || '.', cwd);\n\t\t\t\tconst effectiveLimit = p.limit || DEFAULT_LIMIT;\n\n\t\t\t\tif (!existsSync(searchPath)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: 'text', text: `Error: Path not found: ${searchPath}` }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: 'text', text: 'Operation aborted' }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst filePaths = globSync(p.pattern, {\n\t\t\t\t\tcwd: searchPath,\n\t\t\t\t\tdot: true,\n\t\t\t\t\tignore: ['**/node_modules/**', '**/.git/**'],\n\t\t\t\t});\n\n\t\t\t\tif (filePaths.length === 0) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: 'text', text: 'No files found matching pattern' }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Relativize paths\n\t\t\t\tconst relativized = filePaths.map((p) => {\n\t\t\t\t\tif (p.startsWith(searchPath)) {\n\t\t\t\t\t\treturn p.slice(searchPath.length + 1);\n\t\t\t\t\t}\n\t\t\t\t\treturn path.relative(searchPath, p);\n\t\t\t\t});\n\n\t\t\t\t// Sort results\n\t\t\t\trelativized.sort();\n\n\t\t\t\tconst resultLimitReached = relativized.length >= effectiveLimit;\n\t\t\t\tconst outputLines = resultLimitReached ? relativized.slice(0, effectiveLimit) : relativized;\n\t\t\t\tconst rawOutput = outputLines.join('\\n');\n\t\t\t\tconst truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });\n\n\t\t\t\tlet resultOutput = truncation.content;\n\t\t\t\tconst details: FindToolDetails = {};\n\t\t\t\tconst notices: string[] = [];\n\n\t\t\t\tif (resultLimitReached) {\n\t\t\t\t\tnotices.push(`${effectiveLimit} results limit reached`);\n\t\t\t\t\tdetails.resultLimitReached = effectiveLimit;\n\t\t\t\t}\n\n\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\tnotices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);\n\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t}\n\n\t\t\t\tif (notices.length > 0) {\n\t\t\t\t\tresultOutput += `\\n\\n[${notices.join('. ')}]`;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: 'text', text: resultOutput }],\n\t\t\t\t\tdetails: Object.keys(details).length > 0 ? details : undefined,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\ttext: `Error during find: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tdetails: {},\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t} as any;\n}\n\n/** Default find tool using process.cwd() */\nexport const findTool: AgentTool = createFindTool(process.cwd());\n"],"mappings":";;;;;;;AAQA,MAAM,aAAa,KAAK,OAAO;CAC9B,SAAS,KAAK,OAAO,EACpB,aAAa,gFACb,CAAC;CACF,MAAM,KAAK,SAAS,KAAK,OAAO,EAAE,aAAa,uDAAuD,CAAC,CAAC;CACxG,OAAO,KAAK,SAAS,KAAK,OAAO,EAAE,aAAa,6CAA6C,CAAC,CAAC;CAC/F,CAAC;AAIF,MAAM,gBAAgB;;;;AAUtB,SAAgB,eAAe,KAAwB;AACtD,QAAO;EACN,MAAM;EACN,OAAO;EACP,aAAa;EACb,YAAY;EACZ,kBAAkB;EAClB,YAAY;EACZ,SAAS,OACR,aACA,QACA,WAC+C;AAC/C,OAAI;IACH,MAAM,IAAI;IACV,MAAM,aAAa,aAAa,EAAE,QAAQ,KAAK,IAAI;IACnD,MAAM,iBAAiB,EAAE,SAAS;AAElC,QAAI,CAAC,WAAW,WAAW,CAC1B,QAAO;KACN,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,0BAA0B;MAAc,CAAC;KACzE,SAAS,EAAE;KACX;AAGF,QAAI,QAAQ,QACX,QAAO;KACN,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAAqB,CAAC;KACtD,SAAS,EAAE;KACX;IAGF,MAAM,YAAY,SAAS,EAAE,SAAS;KACrC,KAAK;KACL,KAAK;KACL,QAAQ,CAAC,sBAAsB,aAAa;KAC5C,CAAC;AAEF,QAAI,UAAU,WAAW,EACxB,QAAO;KACN,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAAmC,CAAC;KACpE,SAAS,EAAE;KACX;IAIF,MAAM,cAAc,UAAU,KAAK,MAAM;AACxC,SAAI,EAAE,WAAW,WAAW,CAC3B,QAAO,EAAE,MAAM,WAAW,SAAS,EAAE;AAEtC,YAAO,KAAK,SAAS,YAAY,EAAE;MAClC;AAGF,gBAAY,MAAM;IAElB,MAAM,qBAAqB,YAAY,UAAU;IAGjD,MAAM,aAAa,cAFC,qBAAqB,YAAY,MAAM,GAAG,eAAe,GAAG,aAClD,KAAK,KACM,EAAE,EAAE,UAAU,OAAO,kBAAkB,CAAC;IAEjF,IAAI,eAAe,WAAW;IAC9B,MAAM,UAA2B,EAAE;IACnC,MAAM,UAAoB,EAAE;AAE5B,QAAI,oBAAoB;AACvB,aAAQ,KAAK,GAAG,eAAe,wBAAwB;AACvD,aAAQ,qBAAqB;;AAG9B,QAAI,WAAW,WAAW;AACzB,aAAQ,KAAK,GAAG,WAAW,kBAAkB,CAAC,gBAAgB;AAC9D,aAAQ,aAAa;;AAGtB,QAAI,QAAQ,SAAS,EACpB,iBAAgB,QAAQ,QAAQ,KAAK,KAAK,CAAC;AAG5C,WAAO;KACN,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM;MAAc,CAAC;KAC/C,SAAS,OAAO,KAAK,QAAQ,CAAC,SAAS,IAAI,UAAU,KAAA;KACrD;YACO,OAAO;AACf,WAAO;KACN,SAAS,CACR;MACC,MAAM;MACN,MAAM,sBAAsB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;MAClF,CACD;KACD,SAAS,EAAE;KACX;;;EAGH;;;AAIF,MAAa,WAAsB,eAAe,QAAQ,KAAK,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-evidence-recorder.js","names":[],"sources":["../../../../src/agent/tools/goal-evidence-recorder.ts"],"sourcesContent":["import { GoalService, type GoalEvidence } from '../../goals/index.js';\nimport { createLogger } from '../../utils/logger.js';\n\nconst log = createLogger('GoalEvidence');\n\nexport type GoalEvidenceRecordInput = Pick<GoalEvidence, 'kind' | 'title' | 'summary' | 'uri' | 'data'>;\n\nexport interface GoalEvidenceRecorderOptions {\n getSessionKey: () => string | undefined;\n}\n\nexport function createGoalEvidenceRecorder(options: GoalEvidenceRecorderOptions) {\n const goals = new GoalService();\n return async (input: GoalEvidenceRecordInput): Promise<void> => {\n const sessionKey = options.getSessionKey()?.trim();\n if (!sessionKey) return;\n const goal = goals.getActiveForSession(sessionKey);\n if (!goal || goal.status !== 'active') return;\n try {\n goals.addEvidence({\n goalId: goal.id,\n runId: goal.currentRunId,\n ...input,\n });\n } catch (err) {\n log.warn(\n { err, sessionKey, goalId: goal.id, kind: input.kind },\n `Goal evidence record failed: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n };\n}\n"],"mappings":";;;;;aACqD;AAErD,MAAM,MAAM,aAAa,eAAe;AAQxC,SAAgB,2BAA2B,SAAsC;CAC/E,MAAM,QAAQ,IAAI,aAAa;AAC/B,QAAO,OAAO,UAAkD;EAC9D,MAAM,aAAa,QAAQ,eAAe,EAAE,MAAM;AAClD,MAAI,CAAC,WAAY;EACjB,MAAM,OAAO,MAAM,oBAAoB,WAAW;AAClD,MAAI,CAAC,QAAQ,KAAK,WAAW,SAAU;AACvC,MAAI;AACF,SAAM,YAAY;IAChB,QAAQ,KAAK;IACb,OAAO,KAAK;IACZ,GAAG;IACJ,CAAC;WACK,KAAK;AACZ,OAAI,KACF;IAAE;IAAK;IAAY,QAAQ,KAAK;IAAI,MAAM,MAAM;IAAM,EACtD,gCAAgC,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI,GACjF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"goal-tool.js","names":[],"sources":["../../../../src/agent/tools/goal-tool.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\n\nimport { GoalService, type GoalPriority, type GoalStatus } from '../../goals/index.js';\nimport { getSessionMetadata } from '../../storage/sqlite/index.js';\n\nconst GoalToolSchema = Type.Object({\n action: Type.Union([\n Type.Literal('list'),\n Type.Literal('create'),\n Type.Literal('update'),\n ]),\n goalId: Type.Optional(Type.String({ description: 'Goal id for update.' })),\n title: Type.Optional(Type.String({ description: 'Goal title for create/update.' })),\n description: Type.Optional(Type.String({ description: 'Goal description.' })),\n status: Type.Optional(Type.Union([\n Type.Literal('active'),\n Type.Literal('paused'),\n Type.Literal('blocked'),\n Type.Literal('needs_input'),\n Type.Literal('done'),\n Type.Literal('archived'),\n ])),\n priority: Type.Optional(Type.Union([\n Type.Literal('low'),\n Type.Literal('normal'),\n Type.Literal('high'),\n ])),\n maxTurns: Type.Optional(Type.Number({ minimum: 1, maximum: 500 })),\n deadlineAt: Type.Optional(Type.Number({ description: 'Unix timestamp in milliseconds.' })),\n nextAction: Type.Optional(Type.String()),\n blockedReason: Type.Optional(Type.String()),\n judgeModelRef: Type.Optional(Type.String()),\n agentId: Type.Optional(Type.String()),\n sessionKey: Type.Optional(Type.String()),\n projectId: Type.Optional(Type.String()),\n limit: Type.Optional(Type.Number({ minimum: 1, maximum: 100 })),\n});\n\ntype GoalToolParams = {\n action: 'list' | 'create' | 'update';\n goalId?: string;\n title?: string;\n description?: string;\n status?: GoalStatus;\n priority?: GoalPriority;\n maxTurns?: number;\n deadlineAt?: number;\n nextAction?: string;\n blockedReason?: string;\n judgeModelRef?: string;\n agentId?: string;\n sessionKey?: string;\n projectId?: string;\n limit?: number;\n};\n\nexport interface GoalToolOptions {\n getCurrentSessionKey?: () => string | undefined;\n}\n\nfunction textResult(text: string) {\n return { content: [{ type: 'text' as const, text }], details: {} };\n}\n\nexport function createGoalTool(options: GoalToolOptions = {}): AgentTool<typeof GoalToolSchema, {}> {\n return {\n name: 'goal',\n label: 'Goal',\n description:\n 'Create, list, or update durable goals. Use this from workflows when work should become a tracked long-running goal.',\n parameters: GoalToolSchema,\n async execute(_toolCallId, params: GoalToolParams) {\n const goals = new GoalService();\n if (params.action === 'list') {\n const rows = goals.list({ limit: Math.max(1, Math.min(100, Math.floor(params.limit ?? 20))) });\n if (!rows.length) return textResult('No goals.');\n return textResult(rows.map((g) => `${g.id} [${g.status}] ${g.title}`).join('\\n'));\n }\n\n if (params.action === 'create') {\n const title = params.title?.trim();\n if (!title) return textResult('Error: title is required.');\n const sessionKey = params.sessionKey?.trim() || options.getCurrentSessionKey?.()?.trim();\n const projectId = params.projectId?.trim() || (sessionKey ? getSessionMetadata(sessionKey)?.projectId : undefined);\n const goal = goals.create({\n title,\n description: params.description,\n agentId: params.agentId,\n sessionKey,\n projectId,\n priority: params.priority,\n deadlineAt: params.deadlineAt,\n judgeModelRef: params.judgeModelRef,\n maxTurns: params.maxTurns,\n source: 'workflow',\n });\n return textResult(`Created goal ${goal.id}\\n${goal.title}`);\n }\n\n const goalId = params.goalId?.trim();\n if (!goalId) return textResult('Error: goalId is required.');\n let goal = goals.update(goalId, {\n ...(params.title !== undefined ? { title: params.title } : {}),\n ...(params.description !== undefined ? { description: params.description } : {}),\n ...(params.priority !== undefined ? { priority: params.priority } : {}),\n ...(params.deadlineAt !== undefined ? { deadlineAt: params.deadlineAt } : {}),\n ...(params.maxTurns !== undefined ? { maxTurns: params.maxTurns } : {}),\n ...(params.nextAction !== undefined ? { nextAction: params.nextAction } : {}),\n ...(params.blockedReason !== undefined ? { blockedReason: params.blockedReason } : {}),\n ...(params.judgeModelRef !== undefined ? { judgeModelRef: params.judgeModelRef } : {}),\n });\n if (!goal) return textResult(`Goal not found: ${goalId}`);\n if (params.status) {\n goal = goals.setStatus(goalId, params.status, { reason: params.blockedReason });\n }\n return textResult(`Updated goal ${goalId}\\n${goal?.title ?? ''}`);\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"grep.js","names":[],"sources":["../../../../src/agent/tools/grep.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { readFileSync, existsSync, statSync } from 'fs';\nimport { globSync } from 'glob';\nimport path from 'path';\nimport {\n\tDEFAULT_MAX_BYTES,\n\tformatSize,\n\tGREP_MAX_LINE_LENGTH,\n\ttype TruncationResult,\n\ttruncateHead,\n\ttruncateLine,\n} from './truncate.js';\nimport { resolveToCwd } from '../../utils/helpers.js';\n\nconst grepSchema = Type.Object({\n\tpattern: Type.String({ description: 'Search pattern (regex or literal string)' }),\n\tpath: Type.Optional(Type.String({ description: 'Directory or file to search (default: current directory)' })),\n\tglob: Type.Optional(Type.String({ description: \"Filter files by glob pattern, e.g. '*.ts'\" })),\n\tignoreCase: Type.Optional(Type.Boolean({ description: 'Case-insensitive search (default: false)' })),\n\tliteral: Type.Optional(Type.Boolean({ description: 'Treat pattern as literal string instead of regex (default: false)' })),\n\tcontext: Type.Optional(Type.Number({ description: 'Number of lines to show before and after each match (default: 0)' })),\n\tlimit: Type.Optional(Type.Number({ description: 'Maximum number of matches to return (default: 100)' })),\n});\n\nexport type GrepToolInput = {\n\tpattern: string;\n\tpath?: string;\n\tglob?: string;\n\tignoreCase?: boolean;\n\tliteral?: boolean;\n\tcontext?: number;\n\tlimit?: number;\n};\n\nconst DEFAULT_LIMIT = 100;\n\nexport interface GrepToolDetails {\n\ttruncation?: TruncationResult;\n\tmatchLimitReached?: number;\n\tlinesTruncated?: boolean;\n}\n\n/**\n * Simple grep implementation using Node.js regex\n */\nfunction simpleGrep(\n\tcontent: string,\n\tpattern: string,\n\toptions: { ignoreCase: boolean; literal: boolean }\n): Array<{ lineNumber: number; line: string }> {\n\tconst matches: Array<{ lineNumber: number; line: string }> = [];\n\tconst lines = content.split('\\n');\n\tconst regexPattern = options.literal\n\t\t? pattern.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\t\t: pattern;\n\tconst flags = options.ignoreCase ? 'i' : '';\n\tconst regex = new RegExp(regexPattern, flags);\n\n\tfor (let i = 0; i < lines.length; i++) {\n\t\tif (regex.test(lines[i])) {\n\t\t\tmatches.push({ lineNumber: i + 1, line: lines[i] });\n\t\t}\n\t}\n\n\treturn matches;\n}\n\n/**\n * Grep tool - Search file contents for a pattern\n */\nexport function createGrepTool(cwd: string): AgentTool {\n\treturn {\n\t\tname: 'grep',\n\t\tlabel: '🔍 grep',\n\t\tdescription: 'Search file contents for a pattern (regex or literal).',\n\t\tparameters: grepSchema,\n\t\tsupportsParallel: true,\n\t\tidempotent: true,\n\t\texecute: async (\n\t\t\t_toolCallId: string,\n\t\t\tparams: any,\n\t\t\tsignal?: AbortSignal\n\t\t): Promise<AgentToolResult<GrepToolDetails>> => {\n\t\t\ttry {\n\t\t\t\tconst p = params as GrepToolInput;\n\t\t\t\tconst searchPath = resolveToCwd(p.path || '.', cwd);\n\t\t\t\t\n\t\t\t\tif (!existsSync(searchPath)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: 'text', text: `Error: Path not found: ${searchPath}` }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\tconst isDirectory = statSync(searchPath).isDirectory();\n\t\t\t\tconst context = p.context || 0;\n\t\t\t\tconst effectiveLimit = p.limit || DEFAULT_LIMIT;\n\t\t\t\tconst files: string[] = [];\n\n\t\t\t\t// Collect files to search\n\t\t\t\tif (isDirectory) {\n\t\t\t\t\tconst globPattern = p.glob || '**/*';\n\t\t\t\t\tconst filePaths = globSync(globPattern, {\n\t\t\t\t\t\tcwd: searchPath,\n\t\t\t\t\t\tdot: true,\n\t\t\t\t\t\tignore: ['**/node_modules/**', '**/.git/**'],\n\t\t\t\t\t});\n\t\t\t\t\tfiles.push(...filePaths.map(f => path.join(searchPath, f)));\n\t\t\t\t} else {\n\t\t\t\t\tfiles.push(searchPath);\n\t\t\t\t}\n\n\t\t\t\tconst matches: Array<{ file: string; lineNumber: number; line: string }> = [];\n\t\t\t\tlet matchCount = 0;\n\t\t\t\tlet linesTruncated = false;\n\n\t\t\t\t// Search each file\n\t\t\t\tfor (const filePath of files) {\n\t\t\t\t\tif (signal?.aborted) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcontent: [{ type: 'text', text: 'Operation aborted' }],\n\t\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\ttry {\n\t\t\t\t\t\tif (!existsSync(filePath)) continue;\n\t\t\t\t\t\tconst content = readFileSync(filePath, 'utf-8');\n\t\t\t\t\t\tconst fileMatches = simpleGrep(content, p.pattern, {\n\t\t\t\t\t\t\tignoreCase: p.ignoreCase || false,\n\t\t\t\t\t\t\tliteral: p.literal || false,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tfor (const match of fileMatches) {\n\t\t\t\t\t\t\tif (matchCount >= effectiveLimit) break;\n\t\t\t\t\t\t\tmatches.push({ file: filePath, ...match });\n\t\t\t\t\t\t\tmatchCount++;\n\t\t\t\t\t\t}\n\t\t\t\t\t} catch {\n\t\t\t\t\t\t// Skip files that can't be read\n\t\t\t\t\t}\n\n\t\t\t\t\tif (matchCount >= effectiveLimit) break;\n\t\t\t\t}\n\n\t\t\t\tif (matches.length === 0) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tcontent: [{ type: 'text', text: 'No matches found' }],\n\t\t\t\t\t\tdetails: {},\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Format output\n\t\t\t\tconst outputLines: string[] = [];\n\t\t\t\tconst basePath = isDirectory ? searchPath : path.dirname(searchPath);\n\n\t\t\t\tfor (const match of matches) {\n\t\t\t\t\tconst relativePath = path.relative(basePath, match.file);\n\t\t\t\t\tconst { text: truncatedLine, wasTruncated } = truncateLine(match.line);\n\t\t\t\t\tif (wasTruncated) linesTruncated = true;\n\n\t\t\t\t\tif (context > 0) {\n\t\t\t\t\t\t// Add context lines\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tconst content = readFileSync(match.file, 'utf-8');\n\t\t\t\t\t\t\tconst allLines = content.split('\\n');\n\t\t\t\t\t\t\tconst start = Math.max(1, match.lineNumber - context);\n\t\t\t\t\t\t\tconst end = Math.min(allLines.length, match.lineNumber + context);\n\n\t\t\t\t\t\t\tfor (let i = start; i <= end; i++) {\n\t\t\t\t\t\t\t\tconst lineText = allLines[i - 1] || '';\n\t\t\t\t\t\t\t\tconst { text: truncatedContextLine } = truncateLine(lineText);\n\t\t\t\t\t\t\t\tif (i === match.lineNumber) {\n\t\t\t\t\t\t\t\t\toutputLines.push(`${relativePath}:${i}: ${truncatedContextLine}`);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\toutputLines.push(`${relativePath}-${i}- ${truncatedContextLine}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch {\n\t\t\t\t\t\t\toutputLines.push(`${relativePath}:${match.lineNumber}: ${truncatedLine}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\toutputLines.push(`${relativePath}:${match.lineNumber}: ${truncatedLine}`);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst rawOutput = outputLines.join('\\n');\n\t\t\t\tconst truncation = truncateHead(rawOutput, { maxLines: Number.MAX_SAFE_INTEGER });\n\n\t\t\t\tlet output = truncation.content;\n\t\t\t\tconst details: GrepToolDetails = {};\n\t\t\t\tconst notices: string[] = [];\n\n\t\t\t\tif (matches.length >= effectiveLimit) {\n\t\t\t\t\tnotices.push(`${effectiveLimit} matches limit reached`);\n\t\t\t\t\tdetails.matchLimitReached = effectiveLimit;\n\t\t\t\t}\n\n\t\t\t\tif (truncation.truncated) {\n\t\t\t\t\tnotices.push(`${formatSize(DEFAULT_MAX_BYTES)} limit reached`);\n\t\t\t\t\tdetails.truncation = truncation;\n\t\t\t\t}\n\n\t\t\t\tif (linesTruncated) {\n\t\t\t\t\tnotices.push(`Some lines truncated to ${GREP_MAX_LINE_LENGTH} chars`);\n\t\t\t\t\tdetails.linesTruncated = true;\n\t\t\t\t}\n\n\t\t\t\tif (notices.length > 0) {\n\t\t\t\t\toutput += `\\n\\n[${notices.join('. ')}]`;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [{ type: 'text', text: output }],\n\t\t\t\t\tdetails: Object.keys(details).length > 0 ? details : undefined,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\treturn {\n\t\t\t\t\tcontent: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: 'text',\n\t\t\t\t\t\t\ttext: `Error during grep: ${error instanceof Error ? error.message : String(error)}`,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t\tdetails: {},\n\t\t\t\t};\n\t\t\t}\n\t\t},\n\t} as any;\n}\n\n/** Default grep tool using process.cwd() */\nexport const grepTool: AgentTool = createGrepTool(process.cwd());\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-generate-tool.js","names":[],"sources":["../../../../src/agent/tools/image-generate-tool.ts"],"sourcesContent":["import { randomBytes } from 'node:crypto';\nimport { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport path from 'node:path';\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport type { Config } from '../../config/schema.js';\nimport { getAgentDefaultImageGenerationModelConfig } from '../../config/schema.js';\nimport { isFailoverError } from '../failover-error.js';\nimport {\n imageAssetFromDataUrl,\n imageFileExtensionForMimeType,\n mimeTypeFromFileName,\n parseImageDataUrl,\n sniffImageMimeType,\n} from '../image/generation/image-assets.js';\nimport {\n generateImage,\n listImageGenerationProvidersSummary,\n} from '../image/generation/runtime.js';\nimport { getImageGenerationProvider } from '../image/generation/provider-registry.js';\nimport type {\n ImageGenerationBackground,\n ImageGenerationOutputFormat,\n ImageGenerationProviderOptions,\n ImageGenerationQuality,\n ImageGenerationResolution,\n ImageGenerationSourceImage,\n} from '../image/generation/types.js';\nimport { applyImageGenerationModelConfigDefaults } from '../image/image-helpers.js';\nimport type { ToolModelConfig } from '../image/tool-model-config.js';\n\nconst DEFAULT_COUNT = 1;\nconst MAX_COUNT = 9;\nconst ALLOWED_QUALITIES: ImageGenerationQuality[] = ['low', 'medium', 'high', 'auto'];\nconst ALLOWED_OUTPUT_FORMATS: ImageGenerationOutputFormat[] = ['png', 'jpeg', 'webp'];\nconst ALLOWED_BACKGROUNDS: ImageGenerationBackground[] = ['transparent', 'opaque', 'auto'];\nconst ALLOWED_RESOLUTIONS: ImageGenerationResolution[] = ['1K', '2K', '4K'];\n\nconst ImageGenerateToolSchema = Type.Object({\n action: Type.Optional(\n Type.String({\n description: 'Optional: \"generate\" (default) or \"list\" available image-generation providers.',\n }),\n ),\n prompt: Type.Optional(Type.String({ description: 'Image generation prompt.' })),\n model: Type.Optional(\n Type.String({\n description:\n 'Optional provider/model override, e.g. openai/gpt-image-1 / dashscope/wan2.7-image-pro / minimax/image-01.',\n }),\n ),\n filename: Type.Optional(Type.String({ description: 'Optional basename hint for saved files.' })),\n size: Type.Optional(Type.String({ description: 'Optional pixel size, e.g. 1024x1024.' })),\n aspectRatio: Type.Optional(\n Type.String({ description: 'Optional aspect ratio, e.g. 16:9 / 9:16 / 1:1.' }),\n ),\n resolution: Type.Optional(\n Type.String({\n description: 'Optional resolution tier: 1K / 2K / 4K (provider-dependent).',\n }),\n ),\n count: Type.Optional(\n Type.Number({ minimum: 1, maximum: MAX_COUNT, description: `Number of images (1–${MAX_COUNT}).` }),\n ),\n quality: Type.Optional(\n Type.String({ description: 'Optional quality: low / medium / high / auto.' }),\n ),\n outputFormat: Type.Optional(\n Type.String({ description: 'Optional output format: png / jpeg / webp.' }),\n ),\n background: Type.Optional(\n Type.String({ description: 'Optional background: transparent / opaque / auto.' }),\n ),\n inputImages: Type.Optional(\n Type.Array(\n Type.Object({\n source: Type.String({\n description: 'Workspace-relative file path or `data:image/...;base64,...` URL.',\n }),\n }),\n { description: 'Reference images for edit mode (provider must support edit).' },\n ),\n ),\n providerOptions: Type.Optional(\n Type.Object({\n openai: Type.Optional(\n Type.Object({\n moderation: Type.Optional(Type.String()),\n outputCompression: Type.Optional(Type.Number()),\n user: Type.Optional(Type.String()),\n }),\n ),\n }),\n ),\n});\n\nfunction readStringParam(args: Record<string, unknown>, key: string): string | undefined {\n const v = args[key];\n return typeof v === 'string' && v.trim() ? v.trim() : undefined;\n}\n\nfunction readEnumParam<T extends string>(\n args: Record<string, unknown>,\n key: string,\n allowed: ReadonlyArray<T>,\n): T | undefined {\n const raw = readStringParam(args, key);\n if (!raw) return undefined;\n const lower = raw.toLowerCase() as T;\n return allowed.includes(lower) ? lower : undefined;\n}\n\nfunction readResolutionParam(args: Record<string, unknown>): ImageGenerationResolution | undefined {\n const raw = readStringParam(args, 'resolution');\n if (!raw) return undefined;\n const upper = raw.toUpperCase();\n return (ALLOWED_RESOLUTIONS as ReadonlyArray<string>).includes(upper)\n ? (upper as ImageGenerationResolution)\n : undefined;\n}\n\nfunction readProviderOptions(args: Record<string, unknown>): ImageGenerationProviderOptions | undefined {\n const raw = args.providerOptions;\n if (!raw || typeof raw !== 'object') return undefined;\n const out: ImageGenerationProviderOptions = {};\n const oa = (raw as Record<string, unknown>).openai;\n if (oa && typeof oa === 'object') {\n const oaRec = oa as Record<string, unknown>;\n const moderation = typeof oaRec.moderation === 'string' ? oaRec.moderation.toLowerCase() : undefined;\n const outputCompression =\n typeof oaRec.outputCompression === 'number' && Number.isFinite(oaRec.outputCompression)\n ? oaRec.outputCompression\n : undefined;\n const user = typeof oaRec.user === 'string' && oaRec.user.trim() ? oaRec.user.trim() : undefined;\n out.openai = {\n ...(moderation === 'low' || moderation === 'auto' ? { moderation: moderation as 'low' | 'auto' } : {}),\n ...(outputCompression !== undefined ? { outputCompression } : {}),\n ...(user ? { user } : {}),\n };\n if (Object.keys(out.openai).length === 0) delete out.openai;\n }\n return Object.keys(out).length > 0 ? out : undefined;\n}\n\nclass ToolInputError extends Error {}\n\nasync function loadInputImages(params: {\n workspace: string;\n sources: ReadonlyArray<{ source: string }>;\n}): Promise<ImageGenerationSourceImage[]> {\n if (!params.sources?.length) return [];\n const out: ImageGenerationSourceImage[] = [];\n const workspaceAbs = path.resolve(params.workspace);\n for (const entry of params.sources) {\n const source = entry?.source;\n if (typeof source !== 'string' || !source.trim()) {\n throw new ToolInputError('inputImages[].source is required.');\n }\n const trimmed = source.trim();\n if (/^data:image\\//i.test(trimmed)) {\n const parsed = imageAssetFromDataUrl(trimmed);\n if (!parsed) throw new ToolInputError('Invalid data URL in inputImages[].source.');\n out.push(parsed);\n continue;\n }\n if (/^https?:\\/\\//i.test(trimmed)) {\n throw new ToolInputError('Sandboxed image_generate does not allow remote URLs.');\n }\n const resolved = path.resolve(workspaceAbs, trimmed);\n if (resolved !== workspaceAbs && !resolved.startsWith(workspaceAbs + path.sep)) {\n throw new ToolInputError('inputImages[].source escapes workspace.');\n }\n let buffer: Buffer;\n try {\n buffer = await readFile(resolved);\n } catch (e) {\n const em = e instanceof Error ? e.message : String(e);\n throw new ToolInputError(`inputImages[].source not readable: ${em}`);\n }\n const mimeType = mimeTypeFromFileName(resolved) ?? sniffImageMimeType(buffer).mimeType;\n out.push({ buffer, mimeType, fileName: path.basename(resolved) });\n }\n return out;\n}\n\n// Re-exported for callers / tests; no behavioural change vs imported helper.\nexport { parseImageDataUrl };\n\nexport function resolveImageGenerationModelConfigForTool(params: { cfg?: Config }): ToolModelConfig | null {\n const explicit = params.cfg ? getAgentDefaultImageGenerationModelConfig(params.cfg) : undefined;\n if (explicit?.primary?.trim()) {\n return {\n primary: explicit.primary.trim(),\n ...(explicit.fallbacks?.length ? { fallbacks: explicit.fallbacks } : {}),\n ...(explicit.timeoutMs ? { timeoutMs: explicit.timeoutMs } : {}),\n ...(explicit.autoProviderFallback ? { autoProviderFallback: true } : {}),\n };\n }\n\n // Step 2: tool default = enumerate every provider whose isConfigured() is true,\n // ordered as registered. No more hard-coded openai/dashscope fallback.\n const providers = listImageGenerationProvidersSummary(params.cfg);\n const candidates: string[] = [];\n for (const providerSummary of providers) {\n const provider = getImageGenerationProvider(providerSummary.id, params.cfg);\n let configured = false;\n try {\n configured = provider?.isConfigured?.({ cfg: params.cfg }) ?? false;\n } catch {\n configured = false;\n }\n const modelRef = `${providerSummary.id}/${providerSummary.defaultModel ?? providerSummary.models[0] ?? ''}`;\n if (configured && /^[a-z0-9-]+\\/.+/.test(modelRef) && !candidates.includes(modelRef)) {\n candidates.push(modelRef);\n }\n }\n\n if (candidates.length === 0) {\n return null;\n }\n\n return {\n primary: candidates[0],\n ...(candidates.length > 1 ? { fallbacks: candidates.slice(1) } : {}),\n };\n}\n\nasync function saveGeneratedImages(params: {\n workspace: string;\n images: Array<{ buffer: Buffer; mimeType: string; fileName?: string }>;\n filenameHint?: string;\n}): Promise<string[]> {\n const dir = path.join(params.workspace, 'media', 'generated');\n await mkdir(dir, { recursive: true });\n const out: string[] = [];\n const random = randomBytes(4).toString('hex');\n let i = 0;\n for (const img of params.images) {\n i += 1;\n const ext = imageFileExtensionForMimeType(img.mimeType);\n const base = (params.filenameHint?.replace(/[^\\w.-]/g, '') || 'image') + `-${random}`;\n const name = `${base}-${i}.${ext}`;\n const full = path.join(dir, name);\n await writeFile(full, img.buffer);\n out.push(full);\n }\n return out;\n}\n\nexport function createImageGenerateTool(options: {\n config?: Config;\n workspace: string;\n}): AgentTool<any, Record<string, unknown>> | null {\n const imageGenerationModelConfig = resolveImageGenerationModelConfigForTool({ cfg: options.config });\n if (!imageGenerationModelConfig) {\n return null;\n }\n\n const effectiveCfg =\n applyImageGenerationModelConfigDefaults(options.config, imageGenerationModelConfig) ??\n options.config;\n\n return {\n name: 'image_generate',\n label: 'Image Generation',\n description:\n 'Generate images with the configured image-generation model (default OpenAI). Use action=\"list\" to see providers. Saves files under workspace/media/generated/.',\n parameters: ImageGenerateToolSchema,\n async execute(\n _toolCallId: string,\n args: Record<string, unknown>,\n ): Promise<AgentToolResult<Record<string, unknown>>> {\n const params = args as Record<string, unknown>;\n const action = (readStringParam(params, 'action') || 'generate').toLowerCase();\n if (action === 'list') {\n const providers = listImageGenerationProvidersSummary(effectiveCfg);\n const lines = providers.flatMap((p) => [\n `${p.id}${p.defaultModel ? ` (default ${p.defaultModel})` : ''}`,\n ` models: ${p.models.join(', ')}`,\n ]);\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n details: { providers },\n };\n }\n if (action !== 'generate') {\n return {\n content: [{ type: 'text', text: 'action must be \"generate\" or \"list\".' }],\n details: { error: 'bad_action' },\n };\n }\n\n const prompt = readStringParam(params, 'prompt');\n if (!prompt) {\n return {\n content: [{ type: 'text', text: 'prompt is required for image generation.' }],\n details: { error: 'missing_prompt' },\n };\n }\n\n const modelOverride = readStringParam(params, 'model');\n const filename = readStringParam(params, 'filename');\n const size = readStringParam(params, 'size');\n const aspectRatio = readStringParam(params, 'aspectRatio');\n const resolution = readResolutionParam(params);\n const quality = readEnumParam(params, 'quality', ALLOWED_QUALITIES);\n const outputFormat = readEnumParam(params, 'outputFormat', ALLOWED_OUTPUT_FORMATS);\n const background = readEnumParam(params, 'background', ALLOWED_BACKGROUNDS);\n const providerOptions = readProviderOptions(params);\n\n const countRaw = params.count;\n const count =\n typeof countRaw === 'number' && Number.isFinite(countRaw)\n ? Math.min(MAX_COUNT, Math.max(1, Math.floor(countRaw)))\n : DEFAULT_COUNT;\n\n let inputImages: ImageGenerationSourceImage[] = [];\n try {\n inputImages = await loadInputImages({\n workspace: options.workspace,\n sources: (params.inputImages as Array<{ source: string }>) ?? [],\n });\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n return {\n content: [{ type: 'text', text: `Image generation failed: ${msg}` }],\n details: {\n error: e instanceof ToolInputError ? 'invalid_input_images' : 'generation_failed',\n },\n };\n }\n\n try {\n const result = await generateImage({\n cfg: effectiveCfg,\n modelConfig: imageGenerationModelConfig,\n prompt,\n ...(modelOverride ? { modelOverride } : {}),\n count,\n ...(size ? { size } : {}),\n ...(aspectRatio ? { aspectRatio } : {}),\n ...(resolution ? { resolution } : {}),\n ...(quality ? { quality } : {}),\n ...(outputFormat ? { outputFormat } : {}),\n ...(background ? { background } : {}),\n ...(inputImages.length > 0 ? { inputImages } : {}),\n ...(providerOptions ? { providerOptions } : {}),\n ...(imageGenerationModelConfig.timeoutMs ? { timeoutMs: imageGenerationModelConfig.timeoutMs } : {}),\n ...(imageGenerationModelConfig.autoProviderFallback\n ? { autoProviderFallback: true }\n : {}),\n });\n\n const paths = await saveGeneratedImages({\n workspace: options.workspace,\n images: result.images,\n ...(filename ? { filenameHint: filename } : {}),\n });\n\n const workspaceRelativePaths = paths.map((p) =>\n path.relative(options.workspace, p).split(path.sep).join('/'),\n );\n\n const lines: string[] = [\n `Generated ${paths.length} image(s) with ${result.provider}/${result.model}.`,\n ...paths.map((p) => `Saved: ${p}`),\n ];\n for (const note of buildNormalizationNotes(result.normalization, result.ignoredOverrides)) {\n lines.push(note);\n }\n\n return {\n content: [{ type: 'text', text: lines.join('\\n') }],\n details: {\n provider: result.provider,\n model: result.model,\n paths,\n workspaceRelativePaths,\n attempts: result.attempts,\n ...(result.normalization ? { normalization: result.normalization } : {}),\n ...(result.ignoredOverrides.length > 0\n ? { ignoredOverrides: result.ignoredOverrides }\n : {}),\n ...(result.metadata ? { metadata: result.metadata } : {}),\n },\n };\n } catch (e) {\n const msg = e instanceof Error ? e.message : String(e);\n const failoverFields = isFailoverError(e)\n ? {\n ...(e.reason !== undefined ? { reason: e.reason } : {}),\n ...(e.status !== undefined ? { status: e.status } : {}),\n ...(e.code !== undefined ? { code: e.code } : {}),\n ...(e.provider !== undefined ? { provider: e.provider } : {}),\n ...(e.model !== undefined ? { model: e.model } : {}),\n attempts: e.attempts,\n }\n : {};\n return {\n content: [{ type: 'text', text: `Image generation failed: ${msg}` }],\n details: { error: 'generation_failed', ...failoverFields },\n };\n }\n },\n } as any;\n}\n\nfunction buildNormalizationNotes(\n normalization: import('../image/generation/types.js').ImageGenerationNormalization | undefined,\n ignoredOverrides: ReadonlyArray<import('../image/generation/types.js').ImageGenerationIgnoredOverride>,\n): string[] {\n const notes: string[] = [];\n if (normalization) {\n for (const [key, entry] of Object.entries(normalization)) {\n if (!entry) continue;\n const requested = entry.requested;\n const applied = entry.applied;\n if (requested !== undefined && applied !== undefined && requested !== applied) {\n notes.push(`Note: requested ${key}=\"${requested}\" → applied \"${applied}\".`);\n } else if (applied !== undefined && entry.derivedFrom) {\n notes.push(`Note: ${key}=\"${applied}\" derived from ${entry.derivedFrom}.`);\n }\n }\n }\n for (const ig of ignoredOverrides) {\n notes.push(`Note: ignored ${ig.key}=\"${ig.value}\" (not supported by provider).`);\n }\n return notes;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"image-tool.js","names":[],"sources":["../../../../src/agent/tools/image-tool.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport type { Config } from '../../config/schema.js';\nimport { describeImages } from '../image/understanding/runtime.js';\nimport { buildImageToolTextResult, resolvePromptAndModelOverride } from '../image/image-helpers.js';\nimport { runWithImageModelFallback } from '../image/image-model-fallback.js';\nimport { loadImageForToolInput } from '../image/load-image-media.js';\nimport { resolveImageModelConfigForTool } from '../image/tool-model-config.js';\n\nconst DEFAULT_PROMPT = 'Describe the image.';\nconst DEFAULT_MAX_IMAGES = 20;\n\nexport { resolveImageModelConfigForTool } from '../image/tool-model-config.js';\n\nfunction pickMaxBytes(cfg?: Config, maxBytesMb?: number): number {\n if (typeof maxBytesMb === 'number' && Number.isFinite(maxBytesMb) && maxBytesMb > 0) {\n return Math.floor(maxBytesMb * 1024 * 1024);\n }\n return 20 * 1024 * 1024;\n}\n\nexport function createImageTool(options: {\n config?: Config;\n workspace: string;\n /** When true, session model already receives images in the user message. */\n modelHasVision?: boolean;\n agentId?: string;\n}): AgentTool<any, Record<string, unknown>> | null {\n const imageModelConfig = resolveImageModelConfigForTool({\n cfg: options.config,\n agentId: options.agentId,\n });\n if (!imageModelConfig) {\n return null;\n }\n\n const description = options.modelHasVision\n ? 'Analyze one or more images with a vision model. Use `image` for a single path/URL, or `images` for multiple (up to 20). Only use when images were NOT already in the user message.'\n : 'Analyze one or more images using the available image model. Use `image` or `images` for paths/URLs; optional `prompt` for what to extract.';\n\n const localRoots = [options.workspace];\n\n return {\n name: 'image',\n label: 'Image',\n description,\n parameters: Type.Object({\n prompt: Type.Optional(Type.String()),\n image: Type.Optional(Type.String({ description: 'Single image path or URL.' })),\n images: Type.Optional(\n Type.Array(Type.String(), {\n description: 'Multiple image paths or URLs (up to maxImages, default 20).',\n }),\n ),\n model: Type.Optional(Type.String({ description: 'Optional provider/model override.' })),\n maxBytesMb: Type.Optional(Type.Number()),\n maxImages: Type.Optional(Type.Number()),\n }),\n async execute(\n _toolCallId: string,\n args: Record<string, unknown>,\n ): Promise<AgentToolResult<Record<string, unknown>>> {\n const record = args && typeof args === 'object' ? args : {};\n\n const imageCandidates: string[] = [];\n if (typeof record.image === 'string') {\n imageCandidates.push(record.image);\n }\n if (Array.isArray(record.images)) {\n imageCandidates.push(...record.images.filter((v): v is string => typeof v === 'string'));\n }\n\n const seenImages = new Set<string>();\n const imageInputs: string[] = [];\n for (const candidate of imageCandidates) {\n const trimmedCandidate = candidate.trim();\n const normalizedForDedupe = trimmedCandidate.startsWith('@')\n ? trimmedCandidate.slice(1).trim()\n : trimmedCandidate;\n if (!normalizedForDedupe || seenImages.has(normalizedForDedupe)) {\n continue;\n }\n seenImages.add(normalizedForDedupe);\n imageInputs.push(trimmedCandidate);\n }\n\n if (imageInputs.length === 0) {\n return {\n content: [{ type: 'text', text: 'Error: provide `image` or `images`.' }],\n details: { error: 'missing_image' },\n };\n }\n\n const maxImagesRaw = typeof record.maxImages === 'number' ? record.maxImages : undefined;\n const maxImages =\n typeof maxImagesRaw === 'number' && Number.isFinite(maxImagesRaw) && maxImagesRaw > 0\n ? Math.floor(maxImagesRaw)\n : DEFAULT_MAX_IMAGES;\n if (imageInputs.length > maxImages) {\n return {\n content: [\n {\n type: 'text',\n text: `Too many images: ${imageInputs.length} (max ${maxImages}).`,\n },\n ],\n details: { error: 'too_many_images', count: imageInputs.length, max: maxImages },\n };\n }\n\n const { prompt: promptRaw, modelOverride } = resolvePromptAndModelOverride(\n record,\n DEFAULT_PROMPT,\n );\n const maxBytesMb = typeof record.maxBytesMb === 'number' ? record.maxBytesMb : undefined;\n const maxBytes = pickMaxBytes(options.config, maxBytesMb);\n\n const loadedImages: Array<{ buffer: Buffer; mimeType: string; resolvedImage: string }> = [];\n\n for (const imageRawInput of imageInputs) {\n const trimmed = imageRawInput.trim();\n const imageRaw = trimmed.startsWith('@') ? trimmed.slice(1).trim() : trimmed;\n if (!imageRaw) {\n return {\n content: [{ type: 'text', text: 'Error: empty image entry.' }],\n details: { error: 'empty_image' },\n };\n }\n\n const looksLikeWindowsDrivePath = /^[a-zA-Z]:[\\\\/]/.test(imageRaw);\n const hasScheme = /^[a-z][a-z0-9+.-]*:/i.test(imageRaw);\n const isFileUrl = /^file:/i.test(imageRaw);\n const isHttpUrl = /^https?:\\/\\//i.test(imageRaw);\n const isDataUrl = /^data:/i.test(imageRaw);\n if (hasScheme && !looksLikeWindowsDrivePath && !isFileUrl && !isHttpUrl && !isDataUrl) {\n return {\n content: [\n {\n type: 'text',\n text: `Unsupported image reference: ${imageRawInput}. Use a path, file://, data:, or http(s) URL.`,\n },\n ],\n details: { error: 'unsupported_image_reference', image: imageRawInput },\n };\n }\n\n try {\n const media = await loadImageForToolInput(imageRaw, {\n maxBytes,\n workspace: options.workspace,\n localRoots,\n });\n loadedImages.push({\n buffer: media.buffer,\n mimeType: media.mimeType,\n resolvedImage: imageRaw,\n });\n } catch (e) {\n return {\n content: [\n {\n type: 'text',\n text: `Failed to load image (${imageRawInput}): ${e instanceof Error ? e.message : String(e)}`,\n },\n ],\n details: { error: 'load_failed', image: imageRawInput },\n };\n }\n }\n\n const runResult = await runWithImageModelFallback({\n toolConfig: imageModelConfig,\n modelOverride,\n run: async (modelRef) => {\n const { text, provider, model } = await describeImages({\n modelRef,\n prompt: promptRaw,\n images: loadedImages.map((img) => ({ buffer: img.buffer, mimeType: img.mimeType })),\n timeoutMs: 60_000,\n });\n return { text, provider, model };\n },\n });\n\n const { result: inner, attempts } = runResult;\n const result = {\n text: inner.text,\n provider: inner.provider,\n model: inner.model,\n attempts,\n };\n\n const imageDetails =\n loadedImages.length === 1\n ? { image: loadedImages[0].resolvedImage }\n : {\n images: loadedImages.map((img) => ({ image: img.resolvedImage })),\n };\n\n return buildImageToolTextResult(result, imageDetails);\n },\n } as any;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"list-dir.js","names":["p"],"sources":["../../../../src/agent/tools/list-dir.ts"],"sourcesContent":["// List Directory Tool\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { readdir } from 'fs/promises';\nimport { resolvePathUnderWorkspace } from './tool-paths.js';\n\nconst ListDirSchema = Type.Object({\n path: Type.String({ description: 'The directory path to list' }),\n});\n\ntype ListDirParams = { path: string };\n\nexport function createListDirTool(workspace: string): AgentTool {\n return {\n name: 'list_dir',\n description: 'List the contents of a directory. Relative paths are under the current agent workspace.',\n parameters: ListDirSchema,\n label: '📁 List Directory',\n supportsParallel: true,\n idempotent: true,\n\n async execute(\n _toolCallId: string,\n params: any,\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<{}>> {\n try {\n const p = params as ListDirParams;\n const target = resolvePathUnderWorkspace(p.path, workspace);\n const entries = await readdir(target, { withFileTypes: true });\n const lines = entries.map((e) => {\n const type = e.isDirectory() ? 'd' : e.isFile() ? 'f' : '?';\n return `${type} ${e.name}`;\n });\n return {\n content: [{ type: 'text', text: lines.join('\\n') || '(empty)' }],\n details: {},\n };\n } catch (error) {\n return {\n content: [\n {\n type: 'text',\n text: `Error listing directory: ${error instanceof Error ? error.message : String(error)}`,\n },\n ],\n details: {},\n };\n }\n },\n } as any;\n}\n\nexport const listDirTool: AgentTool = createListDirTool(process.cwd());\n"],"mappings":";;;;AAMA,MAAM,gBAAgB,KAAK,OAAO,EAChC,MAAM,KAAK,OAAO,EAAE,aAAa,8BAA8B,CAAC,EACjE,CAAC;AAIF,SAAgB,kBAAkB,WAA8B;AAC9D,QAAO;EACL,MAAM;EACN,aAAa;EACb,YAAY;EACZ,OAAO;EACP,kBAAkB;EAClB,YAAY;EAEZ,MAAM,QACJ,aACA,QACA,SAC8B;AAC9B,OAAI;AAQF,WAAO;KACL,SAAS,CAAC;MAAE,MAAM;MAAQ,OALd,MADQ,QADP,0BAA0BA,OAAE,MAAM,UACb,EAAE,EAAE,eAAe,MAAM,CAAC,EACxC,KAAK,MAAM;AAE/B,cAAO,GADM,EAAE,aAAa,GAAG,MAAM,EAAE,QAAQ,GAAG,MAAM,IACzC,GAAG,EAAE;QAGiB,CAAC,KAAK,KAAK,IAAI;MAAW,CAAC;KAChE,SAAS,EAAE;KACZ;YACM,OAAO;AACd,WAAO;KACL,SAAS,CACP;MACE,MAAM;MACN,MAAM,4BAA4B,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;MACzF,CACF;KACD,SAAS,EAAE;KACZ;;;EAGN;;AAGH,MAAa,cAAyB,kBAAkB,QAAQ,KAAK,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-read-tool.js","names":[],"sources":["../../../../src/agent/tools/media-read-tool.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\n\nimport { readMediaReference } from '../../media/media-reference.js';\nimport { mimeTypeFromMediaPath } from '../../media/store.js';\n\nconst DEFAULT_MAX_BYTES = 1024 * 1024;\nconst HARD_MAX_BYTES = 5 * 1024 * 1024;\n\nconst ReadMediaSchema = Type.Object({\n uri: Type.String({\n description: 'The media:// URI from an xopc-media-uri line in the user message.',\n }),\n maxBytes: Type.Optional(Type.Number({\n description: 'Maximum bytes to read, capped at 5 MiB.',\n })),\n});\n\nfunction isLikelyText(mimeType: string): boolean {\n return (\n mimeType.startsWith('text/') ||\n mimeType === 'application/json' ||\n mimeType === 'application/xml' ||\n mimeType === 'application/javascript' ||\n mimeType === 'application/typescript'\n );\n}\n\nfunction clampMaxBytes(raw: unknown): number {\n if (typeof raw !== 'number' || !Number.isFinite(raw) || raw <= 0) {\n return DEFAULT_MAX_BYTES;\n }\n return Math.min(Math.floor(raw), HARD_MAX_BYTES);\n}\n\nexport function createReadMediaTool(): AgentTool {\n return {\n name: 'read_media',\n label: 'Read Media Attachment',\n description:\n 'Read an attachment by media:// URI. Use this for xopc-media-uri attachments in user messages.',\n parameters: ReadMediaSchema,\n\n async execute(\n _toolCallId: string,\n params: { uri?: string; maxBytes?: number },\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<Record<string, unknown>>> {\n const uri = typeof params.uri === 'string' ? params.uri.trim() : '';\n if (!uri) {\n return {\n content: [{ type: 'text', text: 'Missing media URI.' }],\n details: { ok: false, error: 'missing_uri' },\n };\n }\n\n try {\n const maxBytes = clampMaxBytes(params.maxBytes);\n const { buffer, path } = await readMediaReference(uri, maxBytes);\n const mimeType = mimeTypeFromMediaPath(path);\n const metadata = {\n ok: true,\n uri,\n mimeType,\n size: buffer.byteLength,\n path,\n };\n\n if (isLikelyText(mimeType)) {\n const text = buffer.toString('utf8');\n return {\n content: [{ type: 'text', text }],\n details: { ...metadata, kind: 'text' },\n };\n }\n\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify({\n ...metadata,\n kind: 'binary',\n base64: buffer.toString('base64'),\n }, null, 2),\n },\n ],\n details: { ...metadata, kind: 'binary' },\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: 'text', text: `Media read error: ${message}` }],\n details: { ok: false, error: message },\n };\n }\n },\n } as AgentTool;\n}\n"],"mappings":";;;;AAMA,MAAM,oBAAoB,OAAO;AACjC,MAAM,iBAAiB,IAAI,OAAO;AAElC,MAAM,kBAAkB,KAAK,OAAO;CAClC,KAAK,KAAK,OAAO,EACf,aAAa,qEACd,CAAC;CACF,UAAU,KAAK,SAAS,KAAK,OAAO,EAClC,aAAa,2CACd,CAAC,CAAC;CACJ,CAAC;AAEF,SAAS,aAAa,UAA2B;AAC/C,QACE,SAAS,WAAW,QAAQ,IAC5B,aAAa,sBACb,aAAa,qBACb,aAAa,4BACb,aAAa;;AAIjB,SAAS,cAAc,KAAsB;AAC3C,KAAI,OAAO,QAAQ,YAAY,CAAC,OAAO,SAAS,IAAI,IAAI,OAAO,EAC7D,QAAO;AAET,QAAO,KAAK,IAAI,KAAK,MAAM,IAAI,EAAE,eAAe;;AAGlD,SAAgB,sBAAiC;AAC/C,QAAO;EACL,MAAM;EACN,OAAO;EACP,aACE;EACF,YAAY;EAEZ,MAAM,QACJ,aACA,QACA,SACmD;GACnD,MAAM,MAAM,OAAO,OAAO,QAAQ,WAAW,OAAO,IAAI,MAAM,GAAG;AACjE,OAAI,CAAC,IACH,QAAO;IACL,SAAS,CAAC;KAAE,MAAM;KAAQ,MAAM;KAAsB,CAAC;IACvD,SAAS;KAAE,IAAI;KAAO,OAAO;KAAe;IAC7C;AAGH,OAAI;IAEF,MAAM,EAAE,QAAQ,SAAS,MAAM,mBAAmB,KADjC,cAAc,OAAO,SACyB,CAAC;IAChE,MAAM,WAAW,sBAAsB,KAAK;IAC5C,MAAM,WAAW;KACf,IAAI;KACJ;KACA;KACA,MAAM,OAAO;KACb;KACD;AAED,QAAI,aAAa,SAAS,CAExB,QAAO;KACL,SAAS,CAAC;MAAE,MAAM;MAAQ,MAFf,OAAO,SAAS,OAEG;MAAE,CAAC;KACjC,SAAS;MAAE,GAAG;MAAU,MAAM;MAAQ;KACvC;AAGH,WAAO;KACL,SAAS,CACP;MACE,MAAM;MACN,MAAM,KAAK,UAAU;OACnB,GAAG;OACH,MAAM;OACN,QAAQ,OAAO,SAAS,SAAS;OAClC,EAAE,MAAM,EAAE;MACZ,CACF;KACD,SAAS;MAAE,GAAG;MAAU,MAAM;MAAU;KACzC;YACM,KAAK;IACZ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAChE,WAAO;KACL,SAAS,CAAC;MAAE,MAAM;MAAQ,MAAM,qBAAqB;MAAW,CAAC;KACjE,SAAS;MAAE,IAAI;MAAO,OAAO;MAAS;KACvC;;;EAGN"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"memory-tool.js","names":[],"sources":["../../../../src/agent/tools/memory-tool.ts"],"sourcesContent":["// Memory search tools for xopc agent\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { recordDreamingRecalls } from '../memory/dreaming/short-term-store.js';\nimport type { MemoryManager } from '../memory/manager.js';\nimport type { MemoryScope } from '../memory/types.js';\n\n// =============================================================================\n// Memory Search Tool\n// =============================================================================\nconst MemorySearchSchema = Type.Object({\n query: Type.String(),\n maxResults: Type.Optional(Type.Number()),\n minScore: Type.Optional(Type.Number()),\n});\n\ntype MemorySearchParams = { query: string; maxResults?: number; minScore?: number };\n\nexport interface MemoryToolOptions {\n workspaceDir: string;\n dreamingRoot: string;\n getMemoryManager: () => MemoryManager;\n getScope?: () => Partial<MemoryScope>;\n shouldRecordDreamingRecalls?: () => boolean;\n}\n\nexport function createMemorySearchTool(options: MemoryToolOptions): AgentTool {\n const { dreamingRoot, getMemoryManager } = options;\n return {\n name: 'memory_search',\n label: '🔍 Memory Search',\n description:\n 'Mandatory recall step: search indexed profile, curated, and session memory sources before answering questions about prior work, decisions, dates, people, preferences, or todos; returns top snippets with source path + lines.',\n parameters: MemorySearchSchema,\n\n async execute(\n _toolCallId: string,\n params: any,\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<{}>> {\n const { query, maxResults, minScore } = params as MemorySearchParams;\n\n try {\n const results = await getMemoryManager().search({\n query,\n maxResults,\n minScore,\n scope: options.getScope?.(),\n });\n for (const result of results) {\n getMemoryManager().recordSignal({\n source: 'search_recall',\n recordId: result.record.id,\n score: result.score,\n content: result.snippet,\n metadata: {\n providerId: result.citation.providerId,\n path: result.citation.path,\n lineStart: result.citation.lineStart,\n lineEnd: result.citation.lineEnd,\n },\n });\n }\n // Dreaming: record short-term recall evidence from memory_search.\n if (options.shouldRecordDreamingRecalls?.() !== false) {\n void recordDreamingRecalls({\n dreamingRoot,\n query,\n matches: results.map((entry) => ({\n file: entry.citation.path ?? entry.record.source.path ?? entry.record.id,\n lines: entry.snippet,\n score: entry.score,\n lineNumbers:\n entry.citation.lineStart != null\n ? [entry.citation.lineStart, entry.citation.lineEnd ?? entry.citation.lineStart]\n : [],\n })),\n }).catch(() => {});\n }\n const withCitations = results.map((entry) => ({\n id: entry.record.id,\n ownerAgentId: entry.record.provenance.sourceAgentId,\n kind: entry.record.kind,\n file: entry.citation.path ?? entry.record.source.path,\n lines: entry.snippet,\n score: entry.score,\n lineNumbers:\n entry.citation.lineStart != null\n ? [entry.citation.lineStart, entry.citation.lineEnd ?? entry.citation.lineStart]\n : [],\n citation: `${entry.citation.path ?? entry.record.id}${entry.citation.lineStart != null ? `#L${entry.citation.lineStart}${entry.citation.lineEnd && entry.citation.lineEnd !== entry.citation.lineStart ? `-L${entry.citation.lineEnd}` : ''}` : ''}`,\n snippet: `${entry.snippet.trim()}\\n\\nSource: ${entry.citation.path ?? entry.record.id}${entry.citation.lineStart != null ? `#L${entry.citation.lineStart}${entry.citation.lineEnd && entry.citation.lineEnd !== entry.citation.lineStart ? `-L${entry.citation.lineEnd}` : ''}` : ''}`,\n }));\n\n return {\n content: [{ type: 'text', text: JSON.stringify({ results: withCitations, provider: 'memory-manager' }, null, 2) }],\n details: { results: withCitations },\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: 'text', text: `Search error: ${message}` }],\n details: { error: message },\n };\n }\n },\n } as any;\n}\n\n// =============================================================================\n// Memory Get Tool\n// =============================================================================\nconst MemoryGetSchema = Type.Object({\n path: Type.String(),\n from: Type.Optional(Type.Number()),\n lines: Type.Optional(Type.Number()),\n});\n\ntype MemoryGetParams = { path: string; from?: number; lines?: number };\n\nexport function createMemoryGetTool(options: MemoryToolOptions): AgentTool {\n const { getMemoryManager } = options;\n return {\n name: 'memory_get',\n label: '📄 Memory Get',\n description: 'Safe snippet read from a source path returned by memory_search, with optional from/lines; pull only the needed lines and keep context small.',\n parameters: MemoryGetSchema,\n\n async execute(\n _toolCallId: string,\n params: any,\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<{}>> {\n const { path, from, lines } = params as MemoryGetParams;\n\n try {\n const result = await getMemoryManager().read({\n path,\n from,\n lines,\n scope: options.getScope?.(),\n });\n if (!result) {\n return {\n content: [{ type: 'text', text: `File not found: ${path}` }],\n details: { path, text: '' },\n };\n }\n return {\n content: [{ type: 'text', text: result.record.content }],\n details: { path, text: result.record.content, lineNumbers: result.lineNumbers },\n };\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return {\n content: [{ type: 'text', text: `Read error: ${message}` }],\n details: { error: message },\n };\n }\n },\n } as any;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"metadata.js","names":[],"sources":["../../../../src/agent/tools/metadata.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\n\nexport type ToolMutationScope = 'none' | 'workspace' | 'external' | 'unknown';\n\nexport type ToolVerificationKind = 'none' | 'diff-review' | 'test' | 'build' | 'lint' | 'typecheck';\n\nexport interface XopcToolMetadata {\n mutatesWorkspace?: boolean;\n mutationScope?: ToolMutationScope;\n supportsParallel?: boolean;\n idempotent?: boolean;\n verificationKind?: ToolVerificationKind;\n requiresExclusiveWorkspaceLock?: boolean;\n finalGuardRelevant?: boolean;\n}\n\nexport type AgentToolWithMetadata<TParams = any, TDetails = any> = AgentTool<TParams, TDetails> & XopcToolMetadata;\n\nexport const DEFAULT_TOOL_METADATA: Required<XopcToolMetadata> = {\n mutatesWorkspace: false,\n mutationScope: 'none',\n supportsParallel: false,\n idempotent: false,\n verificationKind: 'none',\n requiresExclusiveWorkspaceLock: false,\n finalGuardRelevant: false,\n};\n\nexport function getToolMetadata(tool: AgentTool<any, any>): Required<XopcToolMetadata> {\n const t = tool as AgentToolWithMetadata;\n return {\n mutatesWorkspace: t.mutatesWorkspace === true,\n mutationScope: t.mutationScope ?? DEFAULT_TOOL_METADATA.mutationScope,\n supportsParallel: t.supportsParallel === true,\n idempotent: t.idempotent === true,\n verificationKind: t.verificationKind ?? DEFAULT_TOOL_METADATA.verificationKind,\n requiresExclusiveWorkspaceLock: t.requiresExclusiveWorkspaceLock === true,\n finalGuardRelevant: t.finalGuardRelevant === true,\n };\n}\n"],"mappings":";AAkBA,MAAa,wBAAoD;CAC/D,kBAAkB;CAClB,eAAe;CACf,kBAAkB;CAClB,YAAY;CACZ,kBAAkB;CAClB,gCAAgC;CAChC,oBAAoB;CACrB;AAED,SAAgB,gBAAgB,MAAuD;CACrF,MAAM,IAAI;AACV,QAAO;EACL,kBAAkB,EAAE,qBAAqB;EACzC,eAAe,EAAE,iBAAiB,sBAAsB;EACxD,kBAAkB,EAAE,qBAAqB;EACzC,YAAY,EAAE,eAAe;EAC7B,kBAAkB,EAAE,oBAAoB,sBAAsB;EAC9D,gCAAgC,EAAE,mCAAmC;EACrE,oBAAoB,EAAE,uBAAuB;EAC9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read.js","names":[],"sources":["../../../../src/agent/tools/read.ts"],"sourcesContent":["// Read file tool\nimport { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport { readFile, stat } from 'fs/promises';\nimport { checkFileSafety } from '../prompt/safety.js';\nimport { truncateHead, formatSize, DEFAULT_MAX_BYTES } from './truncate.js';\nimport {\n isBareProfileMarkdownFileName,\n resolveProfileMarkdownPathIfBareName,\n resolvePathUnderWorkspace,\n} from './tool-paths.js';\n\nconst MAX_FILE_SIZE = 10 * 1024 * 1024;\nconst DEFAULT_MAX_LINES = 500;\n\nconst ReadFileSchema = Type.Object({\n path: Type.String({ description: 'File path to read' }),\n limit: Type.Optional(Type.Number({ description: 'Max lines (default: 500)' })),\n});\n\nexport interface CreateReadFileToolOptions {\n /** When set and the path is a bare profile filename (e.g. SOUL.md), try this root if not in workspace. */\n profileMarkdownRoot?: string;\n}\n\ntype ReadFileParams = {\n path: string;\n limit?: number;\n};\n\nexport function createReadFileTool(\n workspace: string,\n options?: CreateReadFileToolOptions,\n): AgentTool {\n return {\n name: 'read_file',\n description:\n 'Read file contents. Relative paths are from the current agent workspace; profile Markdown (SOUL.md, etc.) is found automatically when given by filename.',\n parameters: ReadFileSchema,\n label: '📄 Read',\n supportsParallel: true,\n idempotent: true,\n\n async execute(\n _toolCallId: string,\n params: any,\n _signal?: AbortSignal,\n ): Promise<AgentToolResult<{}>> {\n return executeReadFile(workspace, options?.profileMarkdownRoot, params as ReadFileParams);\n },\n } as any;\n}\n\nasync function executeReadFile(\n workspace: string,\n profileMarkdownRoot: string | undefined,\n params: ReadFileParams,\n): Promise<AgentToolResult<{}>> {\n try {\n const safety = checkFileSafety('read', params.path);\n if (!safety.allowed) {\n return { content: [{ type: 'text', text: `🚫 ${safety.message}` }], details: {} };\n }\n\n let normalized = resolvePathUnderWorkspace(params.path, workspace);\n let stats;\n try {\n stats = await stat(normalized);\n } catch (e) {\n const code = (e as NodeJS.ErrnoException)?.code;\n if (\n code === 'ENOENT' &&\n profileMarkdownRoot &&\n isBareProfileMarkdownFileName(params.path)\n ) {\n const alt = resolveProfileMarkdownPathIfBareName(params.path, profileMarkdownRoot);\n try {\n stats = await stat(alt);\n normalized = alt;\n } catch {\n throw e;\n }\n } else {\n throw e;\n }\n }\n\n if (stats.size > MAX_FILE_SIZE) {\n return { content: [{ type: 'text', text: `🚫 File too large: ${formatSize(stats.size)}` }], details: {} };\n }\n\n const content = await readFile(normalized, 'utf-8');\n const truncation = truncateHead(content, { maxLines: params.limit || DEFAULT_MAX_LINES, maxBytes: DEFAULT_MAX_BYTES });\n\n let outputText = truncation.content;\n if (truncation.truncated) {\n if (truncation.firstLineExceedsLimit) {\n outputText = `(Line exceeds ${formatSize(DEFAULT_MAX_BYTES)})`;\n } else {\n outputText += `\\n\\n[${truncation.outputLines}/${truncation.totalLines} lines]`;\n }\n }\n\n return { content: [{ type: 'text', text: outputText }], details: {} };\n } catch (error) {\n return { content: [{ type: 'text', text: `Error: ${error instanceof Error ? error.message : String(error)}` }], details: {} };\n }\n}\n"],"mappings":";;;;;;AAYA,MAAM,gBAAgB,KAAK,OAAO;AAClC,MAAM,oBAAoB;AAE1B,MAAM,iBAAiB,KAAK,OAAO;CACjC,MAAM,KAAK,OAAO,EAAE,aAAa,qBAAqB,CAAC;CACvD,OAAO,KAAK,SAAS,KAAK,OAAO,EAAE,aAAa,4BAA4B,CAAC,CAAC;CAC/E,CAAC;AAYF,SAAgB,mBACd,WACA,SACW;AACX,QAAO;EACL,MAAM;EACN,aACE;EACF,YAAY;EACZ,OAAO;EACP,kBAAkB;EAClB,YAAY;EAEZ,MAAM,QACJ,aACA,QACA,SAC8B;AAC9B,UAAO,gBAAgB,WAAW,SAAS,qBAAqB,OAAyB;;EAE5F;;AAGH,eAAe,gBACb,WACA,qBACA,QAC8B;AAC9B,KAAI;EACF,MAAM,SAAS,gBAAgB,QAAQ,OAAO,KAAK;AACnD,MAAI,CAAC,OAAO,QACV,QAAO;GAAE,SAAS,CAAC;IAAE,MAAM;IAAQ,MAAM,MAAM,OAAO;IAAW,CAAC;GAAE,SAAS,EAAE;GAAE;EAGnF,IAAI,aAAa,0BAA0B,OAAO,MAAM,UAAU;EAClE,IAAI;AACJ,MAAI;AACF,WAAQ,MAAM,KAAK,WAAW;WACvB,GAAG;AAEV,OADc,GAA6B,SAEhC,YACT,uBACA,8BAA8B,OAAO,KAAK,EAC1C;IACA,MAAM,MAAM,qCAAqC,OAAO,MAAM,oBAAoB;AAClF,QAAI;AACF,aAAQ,MAAM,KAAK,IAAI;AACvB,kBAAa;YACP;AACN,WAAM;;SAGR,OAAM;;AAIV,MAAI,MAAM,OAAO,cACf,QAAO;GAAE,SAAS,CAAC;IAAE,MAAM;IAAQ,MAAM,sBAAsB,WAAW,MAAM,KAAK;IAAI,CAAC;GAAE,SAAS,EAAE;GAAE;EAI3G,MAAM,aAAa,aAAa,MADV,SAAS,YAAY,QAAQ,EACV;GAAE,UAAU,OAAO,SAAS;GAAmB,UAAU;GAAmB,CAAC;EAEtH,IAAI,aAAa,WAAW;AAC5B,MAAI,WAAW,UACb,KAAI,WAAW,sBACb,cAAa,iBAAiB,WAAW,kBAAkB,CAAC;MAE5D,eAAc,QAAQ,WAAW,YAAY,GAAG,WAAW,WAAW;AAI1E,SAAO;GAAE,SAAS,CAAC;IAAE,MAAM;IAAQ,MAAM;IAAY,CAAC;GAAE,SAAS,EAAE;GAAE;UAC9D,OAAO;AACd,SAAO;GAAE,SAAS,CAAC;IAAE,MAAM;IAAQ,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAAI,CAAC;GAAE,SAAS,EAAE;GAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","names":[],"sources":["../../../../../src/agent/tools/search/http.ts"],"sourcesContent":["/** Shared fetch defaults for HTML search fallbacks (reduce naive bot blocking). */\nexport const HTML_SEARCH_USER_AGENT =\n 'Mozilla/5.0 (compatible; xopc/1.0; +https://github.com/xopcai/xopc)';\n\nexport const DEFAULT_HTML_SEARCH_TIMEOUT_MS = 25_000;\n\nexport function mergeAbortWithTimeout(signal: AbortSignal | undefined, ms: number): AbortSignal {\n const t = AbortSignal.timeout(ms);\n if (!signal) return t;\n return AbortSignal.any([signal, t]);\n}\n"],"mappings":";;AACA,MAAa,yBACX;AAEF,MAAa,iCAAiC;AAE9C,SAAgB,sBAAsB,QAAiC,IAAyB;CAC9F,MAAM,IAAI,YAAY,QAAQ,GAAG;AACjC,KAAI,CAAC,OAAQ,QAAO;AACpB,QAAO,YAAY,IAAI,CAAC,QAAQ,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bing-api.js","names":[],"sources":["../../../../../../src/agent/tools/search/providers/bing-api.ts"],"sourcesContent":["import type { SearchProvider, SearchResult } from '../types.js';\n\n/** Azure Bing Web Search API (global endpoint; works without a proxy from many regions). */\nexport class BingApiProvider implements SearchProvider {\n readonly name = 'bing-api';\n\n constructor(private readonly apiKey: string) {}\n\n isAvailable(): boolean {\n return this.apiKey.length > 0;\n }\n\n async search(query: string, count: number, signal?: AbortSignal): Promise<SearchResult[]> {\n if (!this.isAvailable()) {\n throw new Error('Bing Search API key not configured');\n }\n const url = new URL('https://api.bing.microsoft.com/v7.0/search');\n url.searchParams.set('q', query);\n url.searchParams.set('count', String(Math.min(count, 50)));\n const response = await fetch(url, {\n headers: {\n 'Ocp-Apim-Subscription-Key': this.apiKey,\n },\n signal,\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${await response.text()}`);\n }\n const data = (await response.json()) as {\n webPages?: { value?: Array<{ name?: string; url?: string; snippet?: string }> };\n };\n const raw = data.webPages?.value ?? [];\n return raw.map((r) => ({\n title: r.name ?? '',\n url: r.url ?? '',\n description: truncateDesc(r.snippet),\n source: this.name,\n }));\n }\n}\n\nfunction truncateDesc(s: string | undefined): string {\n if (!s) return '';\n if (s.length <= 400) return s;\n return `${s.slice(0, 400)}…`;\n}\n"],"mappings":";;AAGA,IAAa,kBAAb,MAAuD;CACrD,OAAgB;CAEhB,YAAY,QAAiC;AAAhB,OAAA,SAAA;;CAE7B,cAAuB;AACrB,SAAO,KAAK,OAAO,SAAS;;CAG9B,MAAM,OAAO,OAAe,OAAe,QAA+C;AACxF,MAAI,CAAC,KAAK,aAAa,CACrB,OAAM,IAAI,MAAM,qCAAqC;EAEvD,MAAM,MAAM,IAAI,IAAI,6CAA6C;AACjE,MAAI,aAAa,IAAI,KAAK,MAAM;AAChC,MAAI,aAAa,IAAI,SAAS,OAAO,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;EAC1D,MAAM,WAAW,MAAM,MAAM,KAAK;GAChC,SAAS,EACP,6BAA6B,KAAK,QACnC;GACD;GACD,CAAC;AACF,MAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,QAAQ,SAAS,OAAO,IAAI,MAAM,SAAS,MAAM,GAAG;AAMtE,WADY,MAHQ,SAAS,MAAM,EAGlB,UAAU,SAAS,EAAE,EAC3B,KAAK,OAAO;GACrB,OAAO,EAAE,QAAQ;GACjB,KAAK,EAAE,OAAO;GACd,aAAa,aAAa,EAAE,QAAQ;GACpC,QAAQ,KAAK;GACd,EAAE;;;AAIP,SAAS,aAAa,GAA+B;AACnD,KAAI,CAAC,EAAG,QAAO;AACf,KAAI,EAAE,UAAU,IAAK,QAAO;AAC5B,QAAO,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bing-html.js","names":[],"sources":["../../../../../../src/agent/tools/search/providers/bing-html.ts"],"sourcesContent":["import {\n DEFAULT_HTML_SEARCH_TIMEOUT_MS,\n HTML_SEARCH_USER_AGENT,\n mergeAbortWithTimeout,\n} from '../http.js';\nimport type { SearchProvider, SearchResult } from '../types.js';\n\nconst BING_CN_SEARCH = 'https://cn.bing.com/search';\n\n/**\n * HTML scrape of cn.bing.com — zero-config fallback for China. May break if markup changes; subject to ToS.\n */\nexport class BingHtmlProvider implements SearchProvider {\n readonly name = 'bing-html';\n\n isAvailable(): boolean {\n return true;\n }\n\n async search(query: string, count: number, signal?: AbortSignal): Promise<SearchResult[]> {\n const url = new URL(BING_CN_SEARCH);\n url.searchParams.set('q', query);\n url.searchParams.set('count', String(Math.min(count, 15)));\n\n const merged = mergeAbortWithTimeout(signal, DEFAULT_HTML_SEARCH_TIMEOUT_MS);\n\n const response = await fetch(url.toString(), {\n signal: merged,\n headers: {\n 'User-Agent': HTML_SEARCH_USER_AGENT,\n Accept: 'text/html,application/xhtml+xml',\n 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',\n },\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n const html = await response.text();\n return parseBingCnHtml(html, count);\n }\n}\n\n/** Best-effort parse of Bing CN SERP (b_algo blocks). */\nexport function parseBingCnHtml(html: string, max: number): SearchResult[] {\n const out: SearchResult[] = [];\n const liRe = /<li[^>]*class=\"[^\"]*b_algo[^\"]*\"[^>]*>([\\s\\S]*?)<\\/li>/gi;\n let m: RegExpExecArray | null;\n while ((m = liRe.exec(html)) !== null && out.length < max) {\n const block = m[1];\n const link = /<h2[^>]*>\\s*<a[^>]*href=\"([^\"]+)\"[^>]*>([\\s\\S]*?)<\\/a>/i.exec(block);\n if (!link) continue;\n const url = decodeHtmlEntities(stripTags(link[1]).trim());\n const title = decodeHtmlEntities(stripTags(link[2]).trim());\n const cap = /<div[^>]*class=\"[^\"]*b_caption[^\"]*\"[^>]*>([\\s\\S]*?)<\\/div>/i.exec(block);\n const desc = cap ? decodeHtmlEntities(stripTags(cap[1]).replace(/\\s+/g, ' ').trim()) : '';\n if (url && title) {\n out.push({ title, url, description: desc.slice(0, 500), source: 'bing-html' });\n }\n }\n return out;\n}\n\nfunction stripTags(s: string): string {\n return s.replace(/<[^>]+>/g, ' ');\n}\n\nfunction decodeHtmlEntities(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/&#(\\d+);/g, (_, n) => String.fromCharCode(Number(n)))\n .replace(/&#x([0-9a-fA-F]+);/g, (_, h) => String.fromCharCode(parseInt(h, 16)));\n}\n"],"mappings":";;AAOA,MAAM,iBAAiB;;;;AAKvB,IAAa,mBAAb,MAAwD;CACtD,OAAgB;CAEhB,cAAuB;AACrB,SAAO;;CAGT,MAAM,OAAO,OAAe,OAAe,QAA+C;EACxF,MAAM,MAAM,IAAI,IAAI,eAAe;AACnC,MAAI,aAAa,IAAI,KAAK,MAAM;AAChC,MAAI,aAAa,IAAI,SAAS,OAAO,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC;EAE1D,MAAM,SAAS,sBAAsB,QAAQ,+BAA+B;EAE5E,MAAM,WAAW,MAAM,MAAM,IAAI,UAAU,EAAE;GAC3C,QAAQ;GACR,SAAS;IACP,cAAc;IACd,QAAQ;IACR,mBAAmB;IACpB;GACF,CAAC;AACF,MAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,QAAQ,SAAS,SAAS;AAG5C,SAAO,gBAAgB,MADJ,SAAS,MAAM,EACL,MAAM;;;;AAKvC,SAAgB,gBAAgB,MAAc,KAA6B;CACzE,MAAM,MAAsB,EAAE;CAC9B,MAAM,OAAO;CACb,IAAI;AACJ,SAAQ,IAAI,KAAK,KAAK,KAAK,MAAM,QAAQ,IAAI,SAAS,KAAK;EACzD,MAAM,QAAQ,EAAE;EAChB,MAAM,OAAO,0DAA0D,KAAK,MAAM;AAClF,MAAI,CAAC,KAAM;EACX,MAAM,MAAM,mBAAmB,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC;EACzD,MAAM,QAAQ,mBAAmB,UAAU,KAAK,GAAG,CAAC,MAAM,CAAC;EAC3D,MAAM,MAAM,+DAA+D,KAAK,MAAM;EACtF,MAAM,OAAO,MAAM,mBAAmB,UAAU,IAAI,GAAG,CAAC,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,GAAG;AACvF,MAAI,OAAO,MACT,KAAI,KAAK;GAAE;GAAO;GAAK,aAAa,KAAK,MAAM,GAAG,IAAI;GAAE,QAAQ;GAAa,CAAC;;AAGlF,QAAO;;AAGT,SAAS,UAAU,GAAmB;AACpC,QAAO,EAAE,QAAQ,YAAY,IAAI;;AAGnC,SAAS,mBAAmB,GAAmB;AAC7C,QAAO,EACJ,QAAQ,UAAU,IAAI,CACtB,QAAQ,SAAS,IAAI,CACrB,QAAQ,SAAS,IAAI,CACrB,QAAQ,WAAW,KAAI,CACvB,QAAQ,cAAc,GAAG,MAAM,OAAO,aAAa,OAAO,EAAE,CAAC,CAAC,CAC9D,QAAQ,wBAAwB,GAAG,MAAM,OAAO,aAAa,SAAS,GAAG,GAAG,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"brave.js","names":[],"sources":["../../../../../../src/agent/tools/search/providers/brave.ts"],"sourcesContent":["import type { SearchProvider, SearchResult } from '../types.js';\n\nexport class BraveProvider implements SearchProvider {\n readonly name = 'brave';\n\n constructor(private readonly apiKey: string) {}\n\n isAvailable(): boolean {\n return this.apiKey.length > 0;\n }\n\n async search(query: string, count: number, signal?: AbortSignal): Promise<SearchResult[]> {\n if (!this.isAvailable()) {\n throw new Error('Brave Search API key not configured');\n }\n const url = `https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(query)}&count=${count}`;\n const response = await fetch(url, {\n headers: {\n 'X-Subscription-Token': this.apiKey,\n Accept: 'application/json',\n },\n signal,\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${await response.text()}`);\n }\n const data = (await response.json()) as { web?: { results?: Array<{ title?: string; url?: string; description?: string }> } };\n const raw = data.web?.results ?? [];\n return raw.map((r) => ({\n title: r.title ?? '',\n url: r.url ?? '',\n description: truncateDesc(r.description),\n source: this.name,\n }));\n }\n}\n\nfunction truncateDesc(s: string | undefined): string {\n if (!s) return '';\n if (s.length <= 400) return s;\n return `${s.slice(0, 400)}…`;\n}\n"],"mappings":";AAEA,IAAa,gBAAb,MAAqD;CACnD,OAAgB;CAEhB,YAAY,QAAiC;AAAhB,OAAA,SAAA;;CAE7B,cAAuB;AACrB,SAAO,KAAK,OAAO,SAAS;;CAG9B,MAAM,OAAO,OAAe,OAAe,QAA+C;AACxF,MAAI,CAAC,KAAK,aAAa,CACrB,OAAM,IAAI,MAAM,sCAAsC;EAExD,MAAM,MAAM,oDAAoD,mBAAmB,MAAM,CAAC,SAAS;EACnG,MAAM,WAAW,MAAM,MAAM,KAAK;GAChC,SAAS;IACP,wBAAwB,KAAK;IAC7B,QAAQ;IACT;GACD;GACD,CAAC;AACF,MAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,QAAQ,SAAS,OAAO,IAAI,MAAM,SAAS,MAAM,GAAG;AAItE,WADY,MADQ,SAAS,MAAM,EAClB,KAAK,WAAW,EAAE,EACxB,KAAK,OAAO;GACrB,OAAO,EAAE,SAAS;GAClB,KAAK,EAAE,OAAO;GACd,aAAa,aAAa,EAAE,YAAY;GACxC,QAAQ,KAAK;GACd,EAAE;;;AAIP,SAAS,aAAa,GAA+B;AACnD,KAAI,CAAC,EAAG,QAAO;AACf,KAAI,EAAE,UAAU,IAAK,QAAO;AAC5B,QAAO,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckduckgo-html.js","names":[],"sources":["../../../../../../src/agent/tools/search/providers/duckduckgo-html.ts"],"sourcesContent":["import {\n DEFAULT_HTML_SEARCH_TIMEOUT_MS,\n HTML_SEARCH_USER_AGENT,\n mergeAbortWithTimeout,\n} from '../http.js';\nimport type { SearchProvider, SearchResult } from '../types.js';\n\nconst DDG_HTML = 'https://html.duckduckgo.com/html/';\n\n/**\n * HTML scrape of DuckDuckGo — zero-config fallback outside China. Unofficial; may rate-limit.\n */\nexport class DuckDuckGoHtmlProvider implements SearchProvider {\n readonly name = 'duckduckgo-html';\n\n isAvailable(): boolean {\n return true;\n }\n\n async search(query: string, count: number, signal?: AbortSignal): Promise<SearchResult[]> {\n const body = new URLSearchParams();\n body.set('q', query);\n\n const merged = mergeAbortWithTimeout(signal, DEFAULT_HTML_SEARCH_TIMEOUT_MS);\n\n const response = await fetch(DDG_HTML, {\n method: 'POST',\n signal: merged,\n headers: {\n 'User-Agent': HTML_SEARCH_USER_AGENT,\n Accept: 'text/html',\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: body.toString(),\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}`);\n }\n const html = await response.text();\n return parseDdgHtml(html, count);\n }\n}\n\n/** Best-effort parse of DDG HTML SERP. */\nexport function parseDdgHtml(html: string, max: number): SearchResult[] {\n const out: SearchResult[] = [];\n const resultRe =\n /<a[^>]*class=\"[^\"]*result__a[^\"]*\"[^>]*href=\"([^\"]+)\"[^>]*>([\\s\\S]*?)<\\/a>/gi;\n let m: RegExpExecArray | null;\n while ((m = resultRe.exec(html)) !== null && out.length < max) {\n const url = decodeHtmlEntities(stripTags(m[1]).trim());\n const title = decodeHtmlEntities(stripTags(m[2]).trim());\n if (!url || !title || url.startsWith('/')) continue;\n const after = html.slice(m.index, m.index + 1200);\n const snip = /<a[^>]*class=\"[^\"]*result__snippet[^\"]*\"[^>]*>([\\s\\S]*?)<\\/a>/i.exec(after);\n const description = snip\n ? decodeHtmlEntities(stripTags(snip[1]).replace(/\\s+/g, ' ').trim())\n : '';\n out.push({ title, url, description: description.slice(0, 500), source: 'duckduckgo-html' });\n }\n return out;\n}\n\nfunction stripTags(s: string): string {\n return s.replace(/<[^>]+>/g, ' ');\n}\n\nfunction decodeHtmlEntities(s: string): string {\n return s\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/"/g, '\"')\n .replace(/&#(\\d+);/g, (_, n) => String.fromCharCode(Number(n)))\n .replace(/&#x([0-9a-fA-F]+);/g, (_, h) => String.fromCharCode(parseInt(h, 16)));\n}\n"],"mappings":";;AAOA,MAAM,WAAW;;;;AAKjB,IAAa,yBAAb,MAA8D;CAC5D,OAAgB;CAEhB,cAAuB;AACrB,SAAO;;CAGT,MAAM,OAAO,OAAe,OAAe,QAA+C;EACxF,MAAM,OAAO,IAAI,iBAAiB;AAClC,OAAK,IAAI,KAAK,MAAM;EAEpB,MAAM,SAAS,sBAAsB,QAAQ,+BAA+B;EAE5E,MAAM,WAAW,MAAM,MAAM,UAAU;GACrC,QAAQ;GACR,QAAQ;GACR,SAAS;IACP,cAAc;IACd,QAAQ;IACR,gBAAgB;IACjB;GACD,MAAM,KAAK,UAAU;GACtB,CAAC;AACF,MAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,QAAQ,SAAS,SAAS;AAG5C,SAAO,aAAa,MADD,SAAS,MAAM,EACR,MAAM;;;;AAKpC,SAAgB,aAAa,MAAc,KAA6B;CACtE,MAAM,MAAsB,EAAE;CAC9B,MAAM,WACJ;CACF,IAAI;AACJ,SAAQ,IAAI,SAAS,KAAK,KAAK,MAAM,QAAQ,IAAI,SAAS,KAAK;EAC7D,MAAM,MAAM,mBAAmB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC;EACtD,MAAM,QAAQ,mBAAmB,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC;AACxD,MAAI,CAAC,OAAO,CAAC,SAAS,IAAI,WAAW,IAAI,CAAE;EAC3C,MAAM,QAAQ,KAAK,MAAM,EAAE,OAAO,EAAE,QAAQ,KAAK;EACjD,MAAM,OAAO,iEAAiE,KAAK,MAAM;EACzF,MAAM,cAAc,OAChB,mBAAmB,UAAU,KAAK,GAAG,CAAC,QAAQ,QAAQ,IAAI,CAAC,MAAM,CAAC,GAClE;AACJ,MAAI,KAAK;GAAE;GAAO;GAAK,aAAa,YAAY,MAAM,GAAG,IAAI;GAAE,QAAQ;GAAmB,CAAC;;AAE7F,QAAO;;AAGT,SAAS,UAAU,GAAmB;AACpC,QAAO,EAAE,QAAQ,YAAY,IAAI;;AAGnC,SAAS,mBAAmB,GAAmB;AAC7C,QAAO,EACJ,QAAQ,UAAU,IAAI,CACtB,QAAQ,SAAS,IAAI,CACrB,QAAQ,SAAS,IAAI,CACrB,QAAQ,WAAW,KAAI,CACvB,QAAQ,cAAc,GAAG,MAAM,OAAO,aAAa,OAAO,EAAE,CAAC,CAAC,CAC9D,QAAQ,wBAAwB,GAAG,MAAM,OAAO,aAAa,SAAS,GAAG,GAAG,CAAC,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"searxng.js","names":[],"sources":["../../../../../../src/agent/tools/search/providers/searxng.ts"],"sourcesContent":["import type { SearchProvider, SearchResult } from '../types.js';\n\nexport class SearXNGProvider implements SearchProvider {\n readonly name = 'searxng';\n\n constructor(private readonly baseUrl: string) {}\n\n isAvailable(): boolean {\n return this.baseUrl.length > 0;\n }\n\n async search(query: string, count: number, signal?: AbortSignal): Promise<SearchResult[]> {\n if (!this.isAvailable()) {\n throw new Error('SearXNG base URL not configured');\n }\n const url = new URL('search', ensureTrailingSlashOrigin(this.baseUrl));\n url.searchParams.set('q', query);\n url.searchParams.set('format', 'json');\n url.searchParams.set('categories', 'general');\n const response = await fetch(url, { signal });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${await response.text()}`);\n }\n const data = (await response.json()) as {\n results?: Array<{ title?: string; url?: string; content?: string }>;\n };\n const raw = (data.results ?? []).slice(0, count);\n return raw.map((r) => ({\n title: r.title ?? '',\n url: r.url ?? '',\n description: truncateDesc(r.content),\n source: this.name,\n }));\n }\n}\n\nfunction ensureTrailingSlashOrigin(base: string): string {\n try {\n const u = new URL(base);\n return u.toString().replace(/\\/?$/, '/');\n } catch {\n return base.endsWith('/') ? base : `${base}/`;\n }\n}\n\nfunction truncateDesc(s: string | undefined): string {\n if (!s) return '';\n if (s.length <= 400) return s;\n return `${s.slice(0, 400)}…`;\n}\n"],"mappings":";AAEA,IAAa,kBAAb,MAAuD;CACrD,OAAgB;CAEhB,YAAY,SAAkC;AAAjB,OAAA,UAAA;;CAE7B,cAAuB;AACrB,SAAO,KAAK,QAAQ,SAAS;;CAG/B,MAAM,OAAO,OAAe,OAAe,QAA+C;AACxF,MAAI,CAAC,KAAK,aAAa,CACrB,OAAM,IAAI,MAAM,kCAAkC;EAEpD,MAAM,MAAM,IAAI,IAAI,UAAU,0BAA0B,KAAK,QAAQ,CAAC;AACtE,MAAI,aAAa,IAAI,KAAK,MAAM;AAChC,MAAI,aAAa,IAAI,UAAU,OAAO;AACtC,MAAI,aAAa,IAAI,cAAc,UAAU;EAC7C,MAAM,WAAW,MAAM,MAAM,KAAK,EAAE,QAAQ,CAAC;AAC7C,MAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,QAAQ,SAAS,OAAO,IAAI,MAAM,SAAS,MAAM,GAAG;AAMtE,WADa,MAHO,SAAS,MAAM,EAGjB,WAAW,EAAE,EAAE,MAAM,GAAG,MAChC,CAAC,KAAK,OAAO;GACrB,OAAO,EAAE,SAAS;GAClB,KAAK,EAAE,OAAO;GACd,aAAa,aAAa,EAAE,QAAQ;GACpC,QAAQ,KAAK;GACd,EAAE;;;AAIP,SAAS,0BAA0B,MAAsB;AACvD,KAAI;AAEF,SAAO,IADO,IAAI,KACV,CAAC,UAAU,CAAC,QAAQ,QAAQ,IAAI;SAClC;AACN,SAAO,KAAK,SAAS,IAAI,GAAG,OAAO,GAAG,KAAK;;;AAI/C,SAAS,aAAa,GAA+B;AACnD,KAAI,CAAC,EAAG,QAAO;AACf,KAAI,EAAE,UAAU,IAAK,QAAO;AAC5B,QAAO,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tavily.js","names":[],"sources":["../../../../../../src/agent/tools/search/providers/tavily.ts"],"sourcesContent":["import type { SearchProvider, SearchResult } from '../types.js';\n\nexport class TavilyProvider implements SearchProvider {\n readonly name = 'tavily';\n\n constructor(private readonly apiKey: string) {}\n\n isAvailable(): boolean {\n return this.apiKey.length > 0;\n }\n\n async search(query: string, count: number, signal?: AbortSignal): Promise<SearchResult[]> {\n if (!this.isAvailable()) {\n throw new Error('Tavily API key not configured');\n }\n const response = await fetch('https://api.tavily.com/search', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n api_key: this.apiKey,\n query,\n max_results: count,\n search_depth: 'basic',\n }),\n signal,\n });\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${await response.text()}`);\n }\n const data = (await response.json()) as {\n results?: Array<{ title?: string; url?: string; content?: string }>;\n };\n const raw = data.results ?? [];\n return raw.map((r) => ({\n title: r.title ?? '',\n url: r.url ?? '',\n description: truncateDesc(r.content),\n source: this.name,\n }));\n }\n}\n\nfunction truncateDesc(s: string | undefined): string {\n if (!s) return '';\n if (s.length <= 400) return s;\n return `${s.slice(0, 400)}…`;\n}\n"],"mappings":";AAEA,IAAa,iBAAb,MAAsD;CACpD,OAAgB;CAEhB,YAAY,QAAiC;AAAhB,OAAA,SAAA;;CAE7B,cAAuB;AACrB,SAAO,KAAK,OAAO,SAAS;;CAG9B,MAAM,OAAO,OAAe,OAAe,QAA+C;AACxF,MAAI,CAAC,KAAK,aAAa,CACrB,OAAM,IAAI,MAAM,gCAAgC;EAElD,MAAM,WAAW,MAAM,MAAM,iCAAiC;GAC5D,QAAQ;GACR,SAAS,EACP,gBAAgB,oBACjB;GACD,MAAM,KAAK,UAAU;IACnB,SAAS,KAAK;IACd;IACA,aAAa;IACb,cAAc;IACf,CAAC;GACF;GACD,CAAC;AACF,MAAI,CAAC,SAAS,GACZ,OAAM,IAAI,MAAM,QAAQ,SAAS,OAAO,IAAI,MAAM,SAAS,MAAM,GAAG;AAMtE,WADY,MAHQ,SAAS,MAAM,EAGlB,WAAW,EAAE,EACnB,KAAK,OAAO;GACrB,OAAO,EAAE,SAAS;GAClB,KAAK,EAAE,OAAO;GACd,aAAa,aAAa,EAAE,QAAQ;GACpC,QAAQ,KAAK;GACd,EAAE;;;AAIP,SAAS,aAAa,GAA+B;AACnD,KAAI,CAAC,EAAG,QAAO;AACf,KAAI,EAAE,UAAU,IAAK,QAAO;AAC5B,QAAO,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"region.js","names":[],"sources":["../../../../../src/agent/tools/search/region.ts"],"sourcesContent":["import type { WebToolsConfig } from '../../../config/schema.js';\n\nconst CHINA_TIMEZONES = new Set([\n 'Asia/Shanghai',\n 'Asia/Chongqing',\n 'Asia/Harbin',\n 'Asia/Urumqi',\n 'Asia/Kashgar',\n]);\n\n/**\n * Resolve region for HTML search fallback: explicit config → timezone → global.\n */\nexport function resolveWebSearchRegion(web?: WebToolsConfig): 'cn' | 'global' {\n if (web?.region === 'cn' || web?.region === 'global') {\n return web.region;\n }\n try {\n const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (timezone && CHINA_TIMEZONES.has(timezone)) {\n return 'cn';\n }\n } catch {\n // ignore\n }\n return 'global';\n}\n"],"mappings":";AAEA,MAAM,kBAAkB,IAAI,IAAI;CAC9B;CACA;CACA;CACA;CACA;CACD,CAAC;;;;AAKF,SAAgB,uBAAuB,KAAuC;AAC5E,KAAI,KAAK,WAAW,QAAQ,KAAK,WAAW,SAC1C,QAAO,IAAI;AAEb,KAAI;EACF,MAAM,WAAW,KAAK,gBAAgB,CAAC,iBAAiB,CAAC;AACzD,MAAI,YAAY,gBAAgB,IAAI,SAAS,CAC3C,QAAO;SAEH;AAGR,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","names":[],"sources":["../../../../../src/agent/tools/search/registry.ts"],"sourcesContent":["import { createLogger } from '../../../utils/logger.js';\nimport type { ResolvedWebSearchConfig, SearchProvider, SearchResult } from './types.js';\nimport { BraveProvider } from './providers/brave.js';\nimport { TavilyProvider } from './providers/tavily.js';\nimport { BingApiProvider } from './providers/bing-api.js';\nimport { BingHtmlProvider } from './providers/bing-html.js';\nimport { DuckDuckGoHtmlProvider } from './providers/duckduckgo-html.js';\nimport { SearXNGProvider } from './providers/searxng.js';\n\nconst log = createLogger('Agent:WebSearch');\n\nexport class SearchProviderRegistry {\n private readonly providers: SearchProvider[];\n private readonly fallbackProvider: SearchProvider;\n\n constructor(config: ResolvedWebSearchConfig) {\n this.providers = this.buildProviders(config);\n this.fallbackProvider =\n config.region === 'cn' ? new BingHtmlProvider() : new DuckDuckGoHtmlProvider();\n log.debug(\n { region: config.region, configuredCount: this.providers.filter((p) => p.isAvailable()).length },\n 'Web search registry ready',\n );\n }\n\n private buildProviders(config: ResolvedWebSearchConfig): SearchProvider[] {\n const list: SearchProvider[] = [];\n\n for (const p of config.providers) {\n if (p.disabled) continue;\n switch (p.type) {\n case 'brave':\n list.push(new BraveProvider(p.apiKey ?? ''));\n break;\n case 'tavily':\n list.push(new TavilyProvider(p.apiKey ?? ''));\n break;\n case 'bing':\n list.push(new BingApiProvider(p.apiKey ?? ''));\n break;\n case 'searxng':\n list.push(new SearXNGProvider(p.url ?? ''));\n break;\n default:\n break;\n }\n }\n\n return list;\n }\n\n hasConfiguredApiProvider(): boolean {\n return this.providers.some((p) => p.isAvailable());\n }\n\n async search(\n query: string,\n count: number,\n signal?: AbortSignal,\n ): Promise<{ results: SearchResult[]; provider: string }> {\n for (const provider of this.providers) {\n if (!provider.isAvailable()) continue;\n try {\n const results = await provider.search(query, count, signal);\n return { results, provider: provider.name };\n } catch (err) {\n log.debug({ provider: provider.name, err }, 'Search provider failed, trying next');\n }\n }\n\n try {\n const results = await this.fallbackProvider.search(query, count, signal);\n return { results, provider: this.fallbackProvider.name };\n } catch (err) {\n log.warn({ err }, 'HTML fallback search failed');\n return { results: [], provider: 'none' };\n }\n }\n}\n"],"mappings":";;;;;;;;;aAAwD;AASxD,MAAM,MAAM,aAAa,kBAAkB;AAE3C,IAAa,yBAAb,MAAoC;CAClC;CACA;CAEA,YAAY,QAAiC;AAC3C,OAAK,YAAY,KAAK,eAAe,OAAO;AAC5C,OAAK,mBACH,OAAO,WAAW,OAAO,IAAI,kBAAkB,GAAG,IAAI,wBAAwB;AAChF,MAAI,MACF;GAAE,QAAQ,OAAO;GAAQ,iBAAiB,KAAK,UAAU,QAAQ,MAAM,EAAE,aAAa,CAAC,CAAC;GAAQ,EAChG,4BACD;;CAGH,eAAuB,QAAmD;EACxE,MAAM,OAAyB,EAAE;AAEjC,OAAK,MAAM,KAAK,OAAO,WAAW;AAChC,OAAI,EAAE,SAAU;AAChB,WAAQ,EAAE,MAAV;IACE,KAAK;AACH,UAAK,KAAK,IAAI,cAAc,EAAE,UAAU,GAAG,CAAC;AAC5C;IACF,KAAK;AACH,UAAK,KAAK,IAAI,eAAe,EAAE,UAAU,GAAG,CAAC;AAC7C;IACF,KAAK;AACH,UAAK,KAAK,IAAI,gBAAgB,EAAE,UAAU,GAAG,CAAC;AAC9C;IACF,KAAK;AACH,UAAK,KAAK,IAAI,gBAAgB,EAAE,OAAO,GAAG,CAAC;AAC3C;IACF,QACE;;;AAIN,SAAO;;CAGT,2BAAoC;AAClC,SAAO,KAAK,UAAU,MAAM,MAAM,EAAE,aAAa,CAAC;;CAGpD,MAAM,OACJ,OACA,OACA,QACwD;AACxD,OAAK,MAAM,YAAY,KAAK,WAAW;AACrC,OAAI,CAAC,SAAS,aAAa,CAAE;AAC7B,OAAI;AAEF,WAAO;KAAE,SAAA,MADa,SAAS,OAAO,OAAO,OAAO,OAAO;KACzC,UAAU,SAAS;KAAM;YACpC,KAAK;AACZ,QAAI,MAAM;KAAE,UAAU,SAAS;KAAM;KAAK,EAAE,sCAAsC;;;AAItF,MAAI;AAEF,UAAO;IAAE,SAAA,MADa,KAAK,iBAAiB,OAAO,OAAO,OAAO,OAAO;IACtD,UAAU,KAAK,iBAAiB;IAAM;WACjD,KAAK;AACZ,OAAI,KAAK,EAAE,KAAK,EAAE,8BAA8B;AAChD,UAAO;IAAE,SAAS,EAAE;IAAE,UAAU;IAAQ"}
|