@xopcai/xopc 0.0.149 → 0.0.150
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-B3YP7y9d.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BaP05tRU.js} +1 -1
- package/dist/gateway/static/root/assets/{agents-DZDOcgz5.js → agents-QArUBYV7.js} +1 -1
- package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-BirUfJgj.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-D5Cg_a6I.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-BNasnY9D.js → appearance-settings-BBsAkJ56.js} +1 -1
- package/dist/gateway/static/root/assets/{apps-page-Cmr-Hvm9.js → apps-page-D1uAUndU.js} +1 -1
- package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-D3OmrvFx.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-Cgkm_5mb.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CHvxSz-t.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-TWgUAI8t.js → automations-page-BWQk03Vu.js} +1 -1
- package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-dJR5UuzL.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-v4_7o92L.js} +2 -2
- package/dist/gateway/static/root/assets/{browser-settings-page-DBsFItW_.js → browser-settings-page-SruFGuBP.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-BcTjPLiD.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-CddBf58y.js} +1 -1
- package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-BbDlMRm5.js} +1 -1
- package/dist/gateway/static/root/assets/{channels-settings-BBkzrBYy.js → channels-settings-WI5tQ5tn.js} +1 -1
- package/dist/gateway/static/root/assets/channels-status-swr-Dt2EROlf.js +1 -0
- package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BNthqff-.js} +1 -1
- package/dist/gateway/static/root/assets/{connectors-page-DLsZCAw7.js → connectors-page-DavHJ6rR.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-CVajXkdj.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-settings-SHI66eIi.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-BdWd7m-p.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-CXDhu3Me.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-CLJTGozU.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-ClxpGfzA.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-CDA3ZJ8k.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-DpXL78pS.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-settings-BrxzyVW2.js → gateway-settings-Co-mXFP_.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-D0SU7dte.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-create-dialog-DRVRLc5Z.js → goal-create-dialog-BO6G--Ec.js} +1 -1
- package/dist/gateway/static/root/assets/{goal-detail-page-8F7NElzP.js → goal-detail-page-DK8eog4h.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-r71aDqix.js} +1 -1
- package/dist/gateway/static/root/assets/{goals-page-BaoLiV8G.js → goals-page-AcROW97U.js} +2 -2
- package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-CZOLhkTH.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-F9S1gIFo.js} +1 -1
- package/dist/gateway/static/root/assets/index-C46C7Xee.css +1 -0
- package/dist/gateway/static/root/assets/{index-CH7XN6KY.js → index-IPmCli0N.js} +41 -41
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-BHnh5OoY.js → keyboard-shortcuts-settings-B3CUVfZ8.js} +1 -1
- package/dist/gateway/static/root/assets/{local-app-workbench-page-Boe8n4zH.js → local-app-workbench-page-HVq6NUvQ.js} +1 -1
- package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-n7YJfRkU.js} +1 -1
- package/dist/gateway/static/root/assets/{locale-store-BneNAR8R.js → locale-store-BvcHGPHU.js} +1 -1
- package/dist/gateway/static/root/assets/{logs-page-Cb4Uptct.js → logs-page-Dgko6r04.js} +1 -1
- package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-1mnXr-JA.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-D2bcxXrT.js} +1 -1
- package/dist/gateway/static/root/assets/{messages-t1yPaVCt.js → messages-BH7paqYt.js} +2 -2
- package/dist/gateway/static/root/assets/{models-hub-panel-CNiUKZUV.js → models-hub-panel-DD0cEfmR.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-Wjc2utlj.js} +1 -1
- package/dist/gateway/static/root/assets/{notes-workbench-C9__VkD6.js → notes-workbench-BkA2yg9K.js} +2 -2
- package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-vdljrKuG.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-BHki0l-E.js} +1 -1
- package/dist/gateway/static/root/assets/{project-detail-page-CZhuB5kO.js → project-detail-page-CXwVNLgg.js} +1 -1
- package/dist/gateway/static/root/assets/{projects-page-BOq4WVdR.js → projects-page-DlfvNcLh.js} +1 -1
- package/dist/gateway/static/root/assets/{remote-access-hub-BxGq0ebQ.js → remote-access-hub-BQyEX2Ui.js} +1 -1
- package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-Vy4EmvEh.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-CVcwC7k_.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-DhMA1vkR.js} +1 -1
- package/dist/gateway/static/root/assets/{sessions-page-B6gSU_Au.js → sessions-page-CqQEW8oT.js} +1 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-M8fleFSc.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-C0xcL0vB.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-Cgj4iVpx.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-vitElc-n.js → settings-loading-skeleton-CC_NmD69.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B7_JZ2rM.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CKuQT4SG.js} +1 -1
- package/dist/gateway/static/root/assets/{setup-status-panel-BJeA4mmk.js → setup-status-panel-DvR8Y5YN.js} +1 -1
- package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-BmVw-6SJ.js} +1 -1
- package/dist/gateway/static/root/assets/{shares-settings-DB2KYA2_.js → shares-settings-C0JYYhGx.js} +1 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DBFBczqN.js +1 -0
- package/dist/gateway/static/root/assets/{skills-page-Pm0fNe_p.js → skills-page-KAI9qBDD.js} +1 -1
- package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-D6d8VAk8.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-EbMQ3TYi.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-D63hJX-S.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-D-I-qki9.js} +1 -1
- package/dist/gateway/static/root/assets/{user-context-page-DnLqQyRG.js → user-context-page-Cuft-EbR.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-CPaoS8Zl.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-Bs13qcx1.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-3mnkFvPw.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-api-key-field-BiFIIWC4.js → voice-api-key-field-C716UEi9.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-page-D2-_bC0J.js → work-discovery-page-CFSkHa0v.js} +1 -1
- package/dist/gateway/static/root/assets/{work-item-detail-page-B0FPG4eJ.js → work-item-detail-page-DaapBdoZ.js} +1 -1
- package/dist/gateway/static/root/assets/{work-page-BDeVxts_.js → work-page-DMtX92vs.js} +1 -1
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-BPzS67fU.js → workflow-run-setup-panel-B9FnZNWZ.js} +1 -1
- package/dist/gateway/static/root/assets/{workflows-page-xPhmrRLs.js → workflows-page-BgvE0_Iv.js} +1 -1
- package/dist/gateway/static/root/favicon.svg +1 -187
- package/dist/gateway/static/root/index.html +7 -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.js +0 -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 +0 -2
- 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.js +0 -2
- package/dist/src/agent/tools/apply-patch.js +0 -2
- package/dist/src/agent/tools/automation-tool.js +0 -2
- 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.js +0 -2
- 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.js +0 -2
- 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 +0 -2
- package/dist/src/agent/tools/write.js +0 -2
- package/dist/src/agent/tools/xopc-use-tool.js +0 -2
- 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 +0 -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 +41 -11
- 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/channels-status-swr-CuU6ez3y.js +0 -1
- 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/index-Dfnl9tp_.css +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
- 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":"xopc-use-tool.js","names":[],"sources":["../../../../src/agent/tools/xopc-use-tool.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\n\nimport { runWithActivityContext } from '../../activity/index.js';\nimport type { Config } from '../../config/schema.js';\nimport type { NoteKind, NotesService, NoteStatus } from '../../notes/index.js';\nimport {\n isValidProjectAgentId,\n normalizeProjectAgentId,\n type ProjectService,\n type ProjectStatus,\n} from '../../projects/index.js';\nimport type {\n WorkItemPriority,\n WorkItemService,\n WorkItemStatus,\n} from '../../work-items/index.js';\nimport { getSessionMetadata } from '../../storage/sqlite/index.js';\n\nconst XopcUseToolSchema = Type.Object({\n mode: Type.Union([\n Type.Literal('project'),\n Type.Literal('note'),\n Type.Literal('work_item'),\n ]),\n command: Type.String({\n description:\n 'Object command. Supports project list/get/create/update/resolve_workspace, note list/get/create/append/update/preview_edit, and work_item list/get/create/update.',\n }),\n args: Type.Optional(Type.Record(Type.String(), Type.Any())),\n dryRun: Type.Optional(Type.Boolean({\n description: 'Validate and preview the action without mutating xopc state.',\n })),\n});\n\nexport type XopcUseMode = 'project' | 'note' | 'work_item';\n\nexport interface XopcUseToolInput {\n mode: XopcUseMode;\n command: string;\n args?: Record<string, unknown>;\n dryRun?: boolean;\n}\n\nexport interface XopcUseToolDeps {\n getConfig?: () => Config | undefined;\n getCurrentAgentId?: () => string | undefined;\n getCurrentSessionKey?: () => string | undefined;\n getNotesService?: () => NotesService | undefined;\n getProjectService?: () => ProjectService | undefined;\n getWorkItemService?: () => WorkItemService | undefined;\n}\n\ntype XopcUseDetails = {\n mode: XopcUseMode;\n command: string;\n dryRun: boolean;\n result?: unknown;\n};\n\nconst PROJECT_STATUSES = new Set<ProjectStatus>(['active', 'paused', 'archived']);\nconst NOTE_KINDS = new Set<NoteKind>(['thought', 'todo', 'voice', 'media', 'bookmark', 'mixed', 'task']);\nconst NOTE_STATUSES = new Set<NoteStatus>(['inbox', 'processed', 'archived', 'trashed']);\nconst WORK_ITEM_STATUSES = new Set<WorkItemStatus>([\n 'backlog',\n 'todo',\n 'in_progress',\n 'blocked',\n 'needs_input',\n 'in_review',\n 'done',\n 'cancelled',\n]);\nconst WORK_ITEM_PRIORITIES = new Set<WorkItemPriority>(['urgent', 'high', 'normal', 'low']);\n\nfunction okText(details: XopcUseDetails): AgentToolResult<XopcUseDetails> {\n return {\n content: [{ type: 'text', text: JSON.stringify(details.result ?? {}, null, 2) }],\n details,\n };\n}\n\nfunction errorText(message: string, details: XopcUseDetails): AgentToolResult<XopcUseDetails> {\n return {\n content: [{ type: 'text', text: `Error: ${message}` }],\n details: { ...details, result: { ok: false, error: message } },\n };\n}\n\nfunction trimString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n\nfunction optionalString(value: unknown): string | null | undefined {\n if (value === null) return null;\n if (typeof value === 'string') return value;\n return undefined;\n}\n\nfunction boundedLimit(value: unknown, fallback = 20, max = 100): number {\n const raw = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : fallback;\n if (!Number.isFinite(raw)) return fallback;\n return Math.max(1, Math.min(max, Math.floor(raw)));\n}\n\nfunction offset(value: unknown): number | undefined {\n const raw = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : undefined;\n return raw !== undefined && Number.isFinite(raw) ? Math.max(0, Math.floor(raw)) : undefined;\n}\n\nfunction enumValue<T extends string>(value: unknown, allowed: Set<T>): T | undefined {\n return typeof value === 'string' && allowed.has(value as T) ? value as T : undefined;\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string' && value.trim()) {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) return parsed;\n }\n return undefined;\n}\n\nfunction stringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === 'string');\n}\n\nfunction nullableNumber(value: unknown): number | null | undefined {\n if (value === null) return null;\n return finiteNumber(value);\n}\n\nfunction ensureArgs(input: XopcUseToolInput): Record<string, unknown> {\n return input.args && typeof input.args === 'object' && !Array.isArray(input.args) ? input.args : {};\n}\n\nfunction currentProjectId(args: Record<string, unknown>, deps: XopcUseToolDeps): string | undefined {\n const explicit = trimString(args.projectId);\n if (explicit) return explicit;\n const sessionKey = trimString(args.sessionKey) ?? deps.getCurrentSessionKey?.();\n return sessionKey ? getSessionMetadata(sessionKey)?.projectId : undefined;\n}\n\nfunction projectWorkspaceRootArg(args: Record<string, unknown>): string | undefined {\n return trimString(args.workspaceRoot) ?? trimString(args.workspacePath) ?? trimString(args.path);\n}\n\nfunction optionalProjectWorkspaceRootArg(args: Record<string, unknown>): string | null | undefined {\n if (args.workspaceRoot !== undefined) return optionalString(args.workspaceRoot);\n if (args.workspacePath !== undefined) return optionalString(args.workspacePath);\n if (args.path !== undefined) return optionalString(args.path);\n return undefined;\n}\n\nfunction validateDefaultAgentId(raw: unknown, config: Config | undefined): string | null | undefined {\n if (raw === null) return null;\n const normalized = normalizeProjectAgentId(trimString(raw));\n if (!normalized) return undefined;\n if (config && !isValidProjectAgentId(config, normalized)) {\n throw new Error(`Default agent not found: ${normalized}`);\n }\n return normalized;\n}\n\nasync function handleProject(\n command: string,\n args: Record<string, unknown>,\n deps: XopcUseToolDeps,\n dryRun: boolean,\n): Promise<unknown> {\n const projects = deps.getProjectService?.();\n if (!projects) return { ok: false, error: 'Project service is unavailable' };\n\n if (command === 'list') {\n return {\n ok: true,\n ...projects.list({\n status: enumValue(args.status, PROJECT_STATUSES),\n search: trimString(args.search),\n sortBy: enumValue(args.sortBy, new Set(['updatedAt', 'createdAt', 'name'] as const)),\n sortOrder: enumValue(args.sortOrder, new Set(['asc', 'desc'] as const)),\n limit: boundedLimit(args.limit),\n offset: offset(args.offset),\n }),\n };\n }\n\n if (command === 'get') {\n const id = trimString(args.projectId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'projectId is required' };\n const project = projects.getWithDetails(id);\n return project ? { ok: true, project } : { ok: false, error: `Project not found: ${id}` };\n }\n\n if (command === 'resolve_workspace') {\n const workspacePath = projectWorkspaceRootArg(args);\n if (!workspacePath) return { ok: false, error: 'workspacePath is required' };\n const defaultAgentId = args.defaultAgentId !== undefined\n ? validateDefaultAgentId(args.defaultAgentId, deps.getConfig?.()) ?? undefined\n : undefined;\n const input = {\n workspacePath,\n agentId: trimString(args.agentId),\n defaultAgentId,\n autoCreate: args.autoCreate === true,\n };\n if (dryRun) return { ok: true, dryRun: true, action: 'resolve_project_workspace', input };\n const match = projects.resolveOrCreateForWorkspacePath(input);\n return match ? { ok: true, match } : { ok: false, error: 'No project matched workspace path' };\n }\n\n if (command === 'create') {\n const name = trimString(args.name);\n const workspaceRoot = projectWorkspaceRootArg(args);\n if (!name && !workspaceRoot) return { ok: false, error: 'name or workspaceRoot is required' };\n const input = {\n name,\n description: trimString(args.description),\n defaultAgentId: validateDefaultAgentId(args.defaultAgentId, deps.getConfig?.()) ?? undefined,\n workspaceRoot,\n createWorkspaceRoot: args.createWorkspaceRoot === true,\n projectKind: trimString(args.projectKind),\n brief: trimString(args.brief),\n instructions: trimString(args.instructions),\n };\n if (dryRun) return { ok: true, dryRun: true, action: 'create_project', input };\n const project = projects.create(input);\n return { ok: true, project };\n }\n\n if (command === 'update') {\n const id = trimString(args.projectId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'projectId is required' };\n const workspaceRoot = optionalProjectWorkspaceRootArg(args);\n const patch = {\n ...(args.name !== undefined ? { name: trimString(args.name) ?? '' } : {}),\n ...(args.description !== undefined ? { description: optionalString(args.description) } : {}),\n ...(args.status !== undefined ? { status: enumValue(args.status, PROJECT_STATUSES) } : {}),\n ...(args.defaultAgentId !== undefined ? { defaultAgentId: validateDefaultAgentId(args.defaultAgentId, deps.getConfig?.()) } : {}),\n ...(workspaceRoot !== undefined ? { workspaceRoot } : {}),\n ...(args.createWorkspaceRoot === true ? { createWorkspaceRoot: true } : {}),\n ...(args.brief !== undefined ? { brief: optionalString(args.brief) } : {}),\n ...(args.instructions !== undefined ? { instructions: optionalString(args.instructions) } : {}),\n };\n if (args.status !== undefined && patch.status === undefined) return { ok: false, error: 'Invalid project status' };\n if (dryRun) return { ok: true, dryRun: true, action: 'update_project', projectId: id, patch };\n const project = projects.update(id, patch);\n return { ok: true, project };\n }\n\n return { ok: false, error: `Unsupported project command: ${command}` };\n}\n\nasync function handleNote(\n command: string,\n args: Record<string, unknown>,\n deps: XopcUseToolDeps,\n dryRun: boolean,\n): Promise<unknown> {\n const notes = deps.getNotesService?.();\n if (!notes) return { ok: false, error: 'Notes service is unavailable' };\n\n if (command === 'list') {\n return {\n ok: true,\n ...(await notes.listNotes({\n status: enumValue(args.status, NOTE_STATUSES),\n kind: enumValue(args.kind, NOTE_KINDS),\n tag: trimString(args.tag),\n search: trimString(args.search),\n pinned: typeof args.pinned === 'boolean' ? args.pinned : undefined,\n limit: boundedLimit(args.limit),\n offset: offset(args.offset),\n sortBy: enumValue(args.sortBy, new Set(['createdAt', 'updatedAt', 'lastOpenedAt'] as const)),\n sortOrder: enumValue(args.sortOrder, new Set(['asc', 'desc'] as const)),\n })),\n };\n }\n\n if (command === 'get') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'noteId is required' };\n const note = await notes.getNote(id);\n return note ? { ok: true, note } : { ok: false, error: `Note not found: ${id}` };\n }\n\n if (command === 'create') {\n const markdown = typeof args.markdown === 'string' ? args.markdown : trimString(args.content) ?? '';\n const input = {\n title: trimString(args.title),\n markdown,\n kind: enumValue(args.kind, NOTE_KINDS),\n tags: stringArray(args.tags),\n capturedVia: { channel: 'web' as const },\n pinned: args.pinned === true,\n };\n if (dryRun) return { ok: true, dryRun: true, action: 'create_note', input };\n const note = await notes.createNote(input);\n return { ok: true, note };\n }\n\n if (command === 'append') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n const content = trimString(args.content);\n if (!id) return { ok: false, error: 'noteId is required' };\n if (!content) return { ok: false, error: 'content is required' };\n const heading = trimString(args.heading);\n if (dryRun) return { ok: true, dryRun: true, action: 'append_note', noteId: id, heading, content };\n const note = await notes.appendTextToNote(id, content, heading);\n return note ? { ok: true, note } : { ok: false, error: `Note not found: ${id}` };\n }\n\n if (command === 'preview_edit') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n const instruction = trimString(args.instruction);\n if (!id) return { ok: false, error: 'noteId is required' };\n if (!instruction) return { ok: false, error: 'instruction is required' };\n const markdown = typeof args.markdown === 'string' ? args.markdown : undefined;\n const result = await notes.createAiEditPatch(id, instruction, markdown);\n return result ? { ok: true, ...result } : { ok: false, error: `Note not found: ${id}` };\n }\n\n if (command === 'update') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'noteId is required' };\n if (args.title !== undefined && typeof args.title !== 'string') return { ok: false, error: 'Invalid note title' };\n if (args.markdown !== undefined && typeof args.markdown !== 'string') return { ok: false, error: 'Invalid note markdown' };\n if (args.tags !== undefined && !Array.isArray(args.tags)) return { ok: false, error: 'Invalid note tags' };\n const title = args.title as string | undefined;\n const markdown = args.markdown as string | undefined;\n const patch = {\n ...(args.title !== undefined ? { title } : {}),\n ...(args.markdown !== undefined ? { markdown } : {}),\n ...(args.kind !== undefined ? { kind: enumValue(args.kind, NOTE_KINDS) } : {}),\n ...(args.status !== undefined ? { status: enumValue(args.status, NOTE_STATUSES) } : {}),\n ...(args.tags !== undefined ? { tags: stringArray(args.tags) ?? [] } : {}),\n ...(typeof args.pinned === 'boolean' ? { pinned: args.pinned } : {}),\n };\n if (args.kind !== undefined && patch.kind === undefined) return { ok: false, error: 'Invalid note kind' };\n if (args.status !== undefined && patch.status === undefined) return { ok: false, error: 'Invalid note status' };\n if (dryRun) return { ok: true, dryRun: true, action: 'update_note', noteId: id, patch };\n const note = await notes.updateNote(id, patch, 'ai_edit');\n return note ? { ok: true, note } : { ok: false, error: `Note not found: ${id}` };\n }\n\n return { ok: false, error: `Unsupported note command: ${command}` };\n}\n\nasync function handleWorkItem(\n command: string,\n args: Record<string, unknown>,\n deps: XopcUseToolDeps,\n dryRun: boolean,\n): Promise<unknown> {\n const workItems = deps.getWorkItemService?.();\n if (!workItems) return { ok: false, error: 'Work item service is unavailable' };\n\n if (command === 'list') {\n const projectId = currentProjectId(args, deps);\n if (!projectId) return { ok: false, error: 'projectId is required' };\n return {\n ok: true,\n ...workItems.listProjectWorkItems(projectId, {\n status: enumValue(args.status, WORK_ITEM_STATUSES),\n priority: enumValue(args.priority, WORK_ITEM_PRIORITIES),\n includeArchived: args.includeArchived === true,\n search: trimString(args.search),\n sortBy: enumValue(args.sortBy, new Set(['updatedAt', 'createdAt', 'priority', 'status'] as const)),\n sortOrder: enumValue(args.sortOrder, new Set(['asc', 'desc'] as const)),\n limit: boundedLimit(args.limit),\n offset: offset(args.offset),\n }),\n };\n }\n\n if (command === 'get') {\n const id = trimString(args.workItemId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'workItemId is required' };\n const item = workItems.getWorkItem(id);\n return item ? { ok: true, item } : { ok: false, error: `Work item not found: ${id}` };\n }\n\n if (command === 'create') {\n const projectId = currentProjectId(args, deps);\n const title = trimString(args.title);\n if (!projectId) return { ok: false, error: 'projectId is required' };\n if (!title) return { ok: false, error: 'title is required' };\n const input = {\n title,\n description: trimString(args.description),\n status: enumValue(args.status, WORK_ITEM_STATUSES),\n priority: enumValue(args.priority, WORK_ITEM_PRIORITIES),\n ownerAgentId: trimString(args.ownerAgentId),\n nextAction: trimString(args.nextAction),\n blockedReason: trimString(args.blockedReason),\n dueAt: finiteNumber(args.dueAt),\n };\n if (args.status !== undefined && input.status === undefined) return { ok: false, error: 'Invalid work item status' };\n if (args.priority !== undefined && input.priority === undefined) return { ok: false, error: 'Invalid work item priority' };\n if (args.dueAt !== undefined && input.dueAt === undefined) return { ok: false, error: 'Invalid dueAt' };\n if (dryRun) return { ok: true, dryRun: true, action: 'create_work_item', projectId, input };\n const item = workItems.createProjectWorkItem(projectId, input);\n return { ok: true, item };\n }\n\n if (command === 'update') {\n const id = trimString(args.workItemId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'workItemId is required' };\n const dueAt = args.dueAt !== undefined ? nullableNumber(args.dueAt) : undefined;\n const archivedAt = args.archivedAt !== undefined ? nullableNumber(args.archivedAt) : undefined;\n const patch = {\n ...(args.title !== undefined ? { title: trimString(args.title) ?? '' } : {}),\n ...(args.description !== undefined ? { description: optionalString(args.description) } : {}),\n ...(args.status !== undefined ? { status: enumValue(args.status, WORK_ITEM_STATUSES) } : {}),\n ...(args.priority !== undefined ? { priority: enumValue(args.priority, WORK_ITEM_PRIORITIES) } : {}),\n ...(args.ownerAgentId !== undefined ? { ownerAgentId: optionalString(args.ownerAgentId) } : {}),\n ...(args.nextAction !== undefined ? { nextAction: optionalString(args.nextAction) } : {}),\n ...(args.blockedReason !== undefined ? { blockedReason: optionalString(args.blockedReason) } : {}),\n ...(args.dueAt !== undefined ? { dueAt } : {}),\n ...(args.archivedAt !== undefined ? { archivedAt } : {}),\n };\n if (args.status !== undefined && patch.status === undefined) return { ok: false, error: 'Invalid work item status' };\n if (args.priority !== undefined && patch.priority === undefined) return { ok: false, error: 'Invalid work item priority' };\n if (args.dueAt !== undefined && dueAt === undefined) return { ok: false, error: 'Invalid dueAt' };\n if (args.archivedAt !== undefined && archivedAt === undefined) return { ok: false, error: 'Invalid archivedAt' };\n if (dryRun) return { ok: true, dryRun: true, action: 'update_work_item', workItemId: id, patch };\n const item = workItems.updateWorkItem(id, patch);\n return item ? { ok: true, item } : { ok: false, error: `Work item not found: ${id}` };\n }\n\n return { ok: false, error: `Unsupported work_item command: ${command}` };\n}\n\nexport function createXopcUseTool(deps: XopcUseToolDeps): AgentTool<typeof XopcUseToolSchema, XopcUseDetails> {\n return {\n name: 'xopc_use',\n label: 'XOPC Use',\n description:\n 'Operate first-class xopc objects through one safe entry point. Use for projects, notes, and project work items instead of editing storage files directly. For non-trivial object changes, load the built-in manual first with tool_manual({ tool: \"xopc_use\" }).',\n parameters: XopcUseToolSchema,\n mutatesWorkspace: true,\n mutationScope: 'external',\n requiresExclusiveWorkspaceLock: true,\n finalGuardRelevant: true,\n async execute(toolCallId, input: XopcUseToolInput): Promise<AgentToolResult<XopcUseDetails>> {\n const mode = input.mode;\n const command = input.command.trim();\n const dryRun = input.dryRun === true;\n const args = ensureArgs(input);\n const details: XopcUseDetails = { mode, command, dryRun };\n if (!command) return errorText('command is required', details);\n\n try {\n const sessionKey = deps.getCurrentSessionKey?.();\n const agentId = deps.getCurrentAgentId?.();\n const result = await runWithActivityContext(\n {\n actor: { kind: 'agent', agentId, sessionKey },\n initiator: { kind: 'user', sessionKey },\n source: { kind: 'xopc_use', toolCallId },\n },\n async () =>\n mode === 'project'\n ? await handleProject(command, args, deps, dryRun)\n : mode === 'note'\n ? await handleNote(command, args, deps, dryRun)\n : mode === 'work_item'\n ? await handleWorkItem(command, args, deps, dryRun)\n : { ok: false, error: `Unsupported mode: ${String(mode)}` },\n );\n return okText({ ...details, result });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return errorText(message, details);\n }\n },\n } as AgentTool<typeof XopcUseToolSchema, XopcUseDetails>;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"google-api.js","names":[],"sources":["../../../../src/agent/transcript/google-api.ts"],"sourcesContent":["/**\n * Google API detection (MIT-licensed upstream pattern).\n */\n\nexport function isGoogleModelApi(api?: string | null): boolean {\n return (\n api === \"google-gemini-cli\" ||\n api === \"google-generative-ai\" ||\n api === \"google-vertex\"\n );\n}\n"],"mappings":";;;;AAIA,SAAgB,iBAAiB,KAA8B;AAC7D,QACE,QAAQ,uBACR,QAAQ,0BACR,QAAQ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"model-selection.js","names":[],"sources":["../../../../src/agent/transcript/model-selection.ts"],"sourcesContent":["/**\n * Provider ID normalization (MIT-licensed upstream pattern).\n */\n\nexport function normalizeProviderId(provider: string): string {\n const normalized = provider.trim().toLowerCase();\n if (normalized === \"z.ai\" || normalized === \"z-ai\") {\n return \"zai\";\n }\n if (normalized === \"opencode-zen\") {\n return \"opencode\";\n }\n if (normalized === \"kimi-code\") {\n return \"kimi-coding\";\n }\n if (normalized === \"bedrock\" || normalized === \"aws-bedrock\") {\n return \"amazon-bedrock\";\n }\n if (normalized === \"bytedance\" || normalized === \"doubao\") {\n return \"volcengine\";\n }\n return normalized;\n}\n"],"mappings":";;;;AAIA,SAAgB,oBAAoB,UAA0B;CAC5D,MAAM,aAAa,SAAS,MAAM,CAAC,aAAa;AAChD,KAAI,eAAe,UAAU,eAAe,OAC1C,QAAO;AAET,KAAI,eAAe,eACjB,QAAO;AAET,KAAI,eAAe,YACjB,QAAO;AAET,KAAI,eAAe,aAAa,eAAe,cAC7C,QAAO;AAET,KAAI,eAAe,eAAe,eAAe,SAC/C,QAAO;AAET,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"provider-capabilities.js","names":[],"sources":["../../../../src/agent/transcript/provider-capabilities.ts"],"sourcesContent":["import { normalizeProviderId } from \"./model-selection.js\";\n\nexport type ProviderCapabilities = {\n anthropicToolSchemaMode: \"native\" | \"openai-functions\";\n anthropicToolChoiceMode: \"native\" | \"openai-string-modes\";\n providerFamily: \"default\" | \"openai\" | \"anthropic\";\n preserveAnthropicThinkingSignatures: boolean;\n openAiCompatTurnValidation: boolean;\n geminiThoughtSignatureSanitization: boolean;\n transcriptToolCallIdMode: \"default\" | \"strict9\";\n transcriptToolCallIdModelHints: string[];\n geminiThoughtSignatureModelHints: string[];\n dropThinkingBlockModelHints: string[];\n};\n\nconst DEFAULT_PROVIDER_CAPABILITIES: ProviderCapabilities = {\n anthropicToolSchemaMode: \"native\",\n anthropicToolChoiceMode: \"native\",\n providerFamily: \"default\",\n preserveAnthropicThinkingSignatures: true,\n openAiCompatTurnValidation: true,\n geminiThoughtSignatureSanitization: false,\n transcriptToolCallIdMode: \"default\",\n transcriptToolCallIdModelHints: [],\n geminiThoughtSignatureModelHints: [],\n dropThinkingBlockModelHints: [],\n};\n\nconst PROVIDER_CAPABILITIES: Record<string, Partial<ProviderCapabilities>> = {\n anthropic: {\n providerFamily: \"anthropic\",\n },\n \"amazon-bedrock\": {\n providerFamily: \"anthropic\",\n },\n // kimi-coding natively supports Anthropic tool framing (input_schema);\n // converting to OpenAI format causes XML text fallback instead of tool_use blocks.\n \"kimi-coding\": {\n preserveAnthropicThinkingSignatures: false,\n },\n mistral: {\n transcriptToolCallIdMode: \"strict9\",\n transcriptToolCallIdModelHints: [\n \"mistral\",\n \"mixtral\",\n \"codestral\",\n \"pixtral\",\n \"devstral\",\n \"ministral\",\n \"mistralai\",\n ],\n },\n openai: {\n providerFamily: \"openai\",\n },\n \"openai-codex\": {\n providerFamily: \"openai\",\n },\n openrouter: {\n openAiCompatTurnValidation: false,\n geminiThoughtSignatureSanitization: true,\n geminiThoughtSignatureModelHints: [\"gemini\"],\n },\n opencode: {\n openAiCompatTurnValidation: false,\n geminiThoughtSignatureSanitization: true,\n geminiThoughtSignatureModelHints: [\"gemini\"],\n },\n kilocode: {\n geminiThoughtSignatureSanitization: true,\n geminiThoughtSignatureModelHints: [\"gemini\"],\n },\n \"github-copilot\": {\n dropThinkingBlockModelHints: [\"claude\"],\n },\n};\n\nexport function resolveProviderCapabilities(provider?: string | null): ProviderCapabilities {\n const normalized = normalizeProviderId(provider ?? \"\");\n return {\n ...DEFAULT_PROVIDER_CAPABILITIES,\n ...PROVIDER_CAPABILITIES[normalized],\n };\n}\n\nexport function preservesAnthropicThinkingSignatures(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).preserveAnthropicThinkingSignatures;\n}\n\nexport function requiresOpenAiCompatibleAnthropicToolPayload(provider?: string | null): boolean {\n const capabilities = resolveProviderCapabilities(provider);\n return (\n capabilities.anthropicToolSchemaMode !== \"native\" ||\n capabilities.anthropicToolChoiceMode !== \"native\"\n );\n}\n\nexport function usesOpenAiFunctionAnthropicToolSchema(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).anthropicToolSchemaMode === \"openai-functions\";\n}\n\nexport function usesOpenAiStringModeAnthropicToolChoice(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).anthropicToolChoiceMode === \"openai-string-modes\";\n}\n\nexport function supportsOpenAiCompatTurnValidation(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).openAiCompatTurnValidation;\n}\n\nexport function sanitizesGeminiThoughtSignatures(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).geminiThoughtSignatureSanitization;\n}\n\nfunction modelIncludesAnyHint(modelId: string | null | undefined, hints: string[]): boolean {\n const normalized = (modelId ?? \"\").toLowerCase();\n return Boolean(normalized) && hints.some((hint) => normalized.includes(hint));\n}\n\nexport function isOpenAiProviderFamily(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).providerFamily === \"openai\";\n}\n\nexport function isAnthropicProviderFamily(provider?: string | null): boolean {\n return resolveProviderCapabilities(provider).providerFamily === \"anthropic\";\n}\n\nexport function shouldDropThinkingBlocksForModel(params: {\n provider?: string | null;\n modelId?: string | null;\n}): boolean {\n return modelIncludesAnyHint(\n params.modelId,\n resolveProviderCapabilities(params.provider).dropThinkingBlockModelHints,\n );\n}\n\nexport function shouldSanitizeGeminiThoughtSignaturesForModel(params: {\n provider?: string | null;\n modelId?: string | null;\n}): boolean {\n const capabilities = resolveProviderCapabilities(params.provider);\n return (\n capabilities.geminiThoughtSignatureSanitization &&\n modelIncludesAnyHint(params.modelId, capabilities.geminiThoughtSignatureModelHints)\n );\n}\n\nexport function resolveTranscriptToolCallIdMode(\n provider?: string | null,\n modelId?: string | null,\n): \"strict9\" | undefined {\n const capabilities = resolveProviderCapabilities(provider);\n const mode = capabilities.transcriptToolCallIdMode;\n if (mode === \"strict9\") {\n return mode;\n }\n if (modelIncludesAnyHint(modelId, capabilities.transcriptToolCallIdModelHints)) {\n return \"strict9\";\n }\n return undefined;\n}\n"],"mappings":";;AAeA,MAAM,gCAAsD;CAC1D,yBAAyB;CACzB,yBAAyB;CACzB,gBAAgB;CAChB,qCAAqC;CACrC,4BAA4B;CAC5B,oCAAoC;CACpC,0BAA0B;CAC1B,gCAAgC,EAAE;CAClC,kCAAkC,EAAE;CACpC,6BAA6B,EAAE;CAChC;AAED,MAAM,wBAAuE;CAC3E,WAAW,EACT,gBAAgB,aACjB;CACD,kBAAkB,EAChB,gBAAgB,aACjB;CAGD,eAAe,EACb,qCAAqC,OACtC;CACD,SAAS;EACP,0BAA0B;EAC1B,gCAAgC;GAC9B;GACA;GACA;GACA;GACA;GACA;GACA;GACD;EACF;CACD,QAAQ,EACN,gBAAgB,UACjB;CACD,gBAAgB,EACd,gBAAgB,UACjB;CACD,YAAY;EACV,4BAA4B;EAC5B,oCAAoC;EACpC,kCAAkC,CAAC,SAAS;EAC7C;CACD,UAAU;EACR,4BAA4B;EAC5B,oCAAoC;EACpC,kCAAkC,CAAC,SAAS;EAC7C;CACD,UAAU;EACR,oCAAoC;EACpC,kCAAkC,CAAC,SAAS;EAC7C;CACD,kBAAkB,EAChB,6BAA6B,CAAC,SAAS,EACxC;CACF;AAED,SAAgB,4BAA4B,UAAgD;CAC1F,MAAM,aAAa,oBAAoB,YAAY,GAAG;AACtD,QAAO;EACL,GAAG;EACH,GAAG,sBAAsB;EAC1B;;AAGH,SAAgB,qCAAqC,UAAmC;AACtF,QAAO,4BAA4B,SAAS,CAAC;;AAG/C,SAAgB,6CAA6C,UAAmC;CAC9F,MAAM,eAAe,4BAA4B,SAAS;AAC1D,QACE,aAAa,4BAA4B,YACzC,aAAa,4BAA4B;;AAI7C,SAAgB,sCAAsC,UAAmC;AACvF,QAAO,4BAA4B,SAAS,CAAC,4BAA4B;;AAG3E,SAAgB,wCAAwC,UAAmC;AACzF,QAAO,4BAA4B,SAAS,CAAC,4BAA4B;;AAG3E,SAAgB,mCAAmC,UAAmC;AACpF,QAAO,4BAA4B,SAAS,CAAC;;AAG/C,SAAgB,iCAAiC,UAAmC;AAClF,QAAO,4BAA4B,SAAS,CAAC;;AAG/C,SAAS,qBAAqB,SAAoC,OAA0B;CAC1F,MAAM,cAAc,WAAW,IAAI,aAAa;AAChD,QAAO,QAAQ,WAAW,IAAI,MAAM,MAAM,SAAS,WAAW,SAAS,KAAK,CAAC;;AAG/E,SAAgB,uBAAuB,UAAmC;AACxE,QAAO,4BAA4B,SAAS,CAAC,mBAAmB;;AAGlE,SAAgB,0BAA0B,UAAmC;AAC3E,QAAO,4BAA4B,SAAS,CAAC,mBAAmB;;AAGlE,SAAgB,iCAAiC,QAGrC;AACV,QAAO,qBACL,OAAO,SACP,4BAA4B,OAAO,SAAS,CAAC,4BAC9C;;AAGH,SAAgB,8CAA8C,QAGlD;CACV,MAAM,eAAe,4BAA4B,OAAO,SAAS;AACjE,QACE,aAAa,sCACb,qBAAqB,OAAO,SAAS,aAAa,iCAAiC;;AAIvF,SAAgB,gCACd,UACA,SACuB;CACvB,MAAM,eAAe,4BAA4B,SAAS;CAC1D,MAAM,OAAO,aAAa;AAC1B,KAAI,SAAS,UACX,QAAO;AAET,KAAI,qBAAqB,SAAS,aAAa,+BAA+B,CAC5E,QAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"session-transcript-repair.js","names":[],"sources":["../../../../src/agent/transcript/session-transcript-repair.ts"],"sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\nimport { extractToolCallsFromAssistant, extractToolResultId } from \"./tool-call-id.js\";\n\nconst TOOL_CALL_NAME_MAX_CHARS = 64;\nconst TOOL_CALL_NAME_RE = /^[A-Za-z0-9_-]+$/;\n\ntype RawToolCallBlock = {\n type?: unknown;\n id?: unknown;\n name?: unknown;\n input?: unknown;\n arguments?: unknown;\n};\n\nfunction isRawToolCallBlock(block: unknown): block is RawToolCallBlock {\n if (!block || typeof block !== \"object\") {\n return false;\n }\n const type = (block as { type?: unknown }).type;\n return (\n typeof type === \"string\" &&\n (type === \"toolCall\" || type === \"toolUse\" || type === \"functionCall\")\n );\n}\n\nfunction hasToolCallInput(block: RawToolCallBlock): boolean {\n const hasInput = \"input\" in block ? block.input !== undefined && block.input !== null : false;\n const hasArguments =\n \"arguments\" in block ? block.arguments !== undefined && block.arguments !== null : false;\n return hasInput || hasArguments;\n}\n\nfunction hasNonEmptyStringField(value: unknown): boolean {\n return typeof value === \"string\" && value.trim().length > 0;\n}\n\nfunction hasToolCallId(block: RawToolCallBlock): boolean {\n return hasNonEmptyStringField(block.id);\n}\n\nfunction normalizeAllowedToolNames(allowedToolNames?: Iterable<string>): Set<string> | null {\n if (!allowedToolNames) {\n return null;\n }\n const normalized = new Set<string>();\n for (const name of allowedToolNames) {\n if (typeof name !== \"string\") {\n continue;\n }\n const trimmed = name.trim();\n if (trimmed) {\n normalized.add(trimmed.toLowerCase());\n }\n }\n return normalized.size > 0 ? normalized : null;\n}\n\nfunction hasToolCallName(block: RawToolCallBlock, allowedToolNames: Set<string> | null): boolean {\n if (typeof block.name !== \"string\") {\n return false;\n }\n const trimmed = block.name.trim();\n if (!trimmed) {\n return false;\n }\n if (trimmed.length > TOOL_CALL_NAME_MAX_CHARS || !TOOL_CALL_NAME_RE.test(trimmed)) {\n return false;\n }\n if (!allowedToolNames) {\n return true;\n }\n return allowedToolNames.has(trimmed.toLowerCase());\n}\n\nfunction redactSessionsSpawnAttachmentsArgs(value: unknown): unknown {\n if (!value || typeof value !== \"object\") {\n return value;\n }\n const rec = value as Record<string, unknown>;\n const raw = rec.attachments;\n if (!Array.isArray(raw)) {\n return value;\n }\n const next = raw.map((item) => {\n if (!item || typeof item !== \"object\") {\n return item;\n }\n const a = item as Record<string, unknown>;\n if (!Object.hasOwn(a, \"content\")) {\n return item;\n }\n const { content: _content, ...rest } = a;\n return { ...rest, content: \"__REDACTED__\" };\n });\n return { ...rec, attachments: next };\n}\n\nfunction sanitizeToolCallBlock(block: RawToolCallBlock): RawToolCallBlock {\n const rawName = typeof block.name === \"string\" ? block.name : undefined;\n const trimmedName = rawName?.trim();\n const hasTrimmedName = typeof trimmedName === \"string\" && trimmedName.length > 0;\n const normalizedName = hasTrimmedName ? trimmedName : undefined;\n const nameChanged = hasTrimmedName && rawName !== trimmedName;\n\n const isSessionsSpawn = normalizedName?.toLowerCase() === \"sessions_spawn\";\n\n if (!isSessionsSpawn) {\n if (!nameChanged) {\n return block;\n }\n return { ...(block as Record<string, unknown>), name: normalizedName } as RawToolCallBlock;\n }\n\n // Redact large/sensitive inline attachment content from persisted transcripts.\n // Apply redaction to both `.arguments` and `.input` properties since block structures can vary\n const nextArgs = redactSessionsSpawnAttachmentsArgs(block.arguments);\n const nextInput = redactSessionsSpawnAttachmentsArgs(block.input);\n if (nextArgs === block.arguments && nextInput === block.input && !nameChanged) {\n return block;\n }\n\n const next = { ...(block as Record<string, unknown>) };\n if (nameChanged && normalizedName) {\n next.name = normalizedName;\n }\n if (nextArgs !== block.arguments || Object.hasOwn(block, \"arguments\")) {\n next.arguments = nextArgs;\n }\n if (nextInput !== block.input || Object.hasOwn(block, \"input\")) {\n next.input = nextInput;\n }\n return next as RawToolCallBlock;\n}\n\nfunction makeMissingToolResult(params: {\n toolCallId: string;\n toolName?: string;\n text?: string;\n}): Extract<AgentMessage, { role: \"toolResult\" }> {\n return {\n role: \"toolResult\",\n toolCallId: params.toolCallId,\n toolName: params.toolName ?? \"unknown\",\n content: [\n {\n type: \"text\",\n text:\n params.text ??\n \"[xopc] missing tool result in session history; inserted synthetic error result for transcript repair.\",\n },\n ],\n isError: true,\n timestamp: Date.now(),\n } as Extract<AgentMessage, { role: \"toolResult\" }>;\n}\n\nfunction trimNonEmptyString(value: unknown): string | undefined {\n if (typeof value !== \"string\") {\n return undefined;\n }\n const trimmed = value.trim();\n return trimmed || undefined;\n}\n\nfunction normalizeToolResultName(\n message: Extract<AgentMessage, { role: \"toolResult\" }>,\n fallbackName?: string,\n): Extract<AgentMessage, { role: \"toolResult\" }> {\n const rawToolName = (message as { toolName?: unknown }).toolName;\n const normalizedToolName = trimNonEmptyString(rawToolName);\n if (normalizedToolName) {\n if (rawToolName === normalizedToolName) {\n return message;\n }\n return { ...message, toolName: normalizedToolName };\n }\n\n const normalizedFallback = trimNonEmptyString(fallbackName);\n if (normalizedFallback) {\n return { ...message, toolName: normalizedFallback };\n }\n\n if (typeof rawToolName === \"string\") {\n return { ...message, toolName: \"unknown\" };\n }\n return message;\n}\n\nexport { makeMissingToolResult };\n\nexport type ToolCallInputRepairReport = {\n messages: AgentMessage[];\n droppedToolCalls: number;\n droppedAssistantMessages: number;\n};\n\nexport type ToolCallInputRepairOptions = {\n allowedToolNames?: Iterable<string>;\n};\n\nexport function stripToolResultDetails(messages: AgentMessage[]): AgentMessage[] {\n let touched = false;\n const out: AgentMessage[] = [];\n for (const msg of messages) {\n if (!msg || typeof msg !== \"object\" || (msg as { role?: unknown }).role !== \"toolResult\") {\n out.push(msg);\n continue;\n }\n if (!(\"details\" in msg)) {\n out.push(msg);\n continue;\n }\n const sanitized = { ...(msg as object) } as { details?: unknown };\n delete sanitized.details;\n touched = true;\n out.push(sanitized as unknown as AgentMessage);\n }\n return touched ? out : messages;\n}\n\nexport function repairToolCallInputs(\n messages: AgentMessage[],\n options?: ToolCallInputRepairOptions,\n): ToolCallInputRepairReport {\n let droppedToolCalls = 0;\n let droppedAssistantMessages = 0;\n let changed = false;\n const out: AgentMessage[] = [];\n const allowedToolNames = normalizeAllowedToolNames(options?.allowedToolNames);\n\n for (const msg of messages) {\n if (!msg || typeof msg !== \"object\") {\n out.push(msg);\n continue;\n }\n\n if (msg.role !== \"assistant\" || !Array.isArray(msg.content)) {\n out.push(msg);\n continue;\n }\n\n const nextContent: typeof msg.content = [];\n let droppedInMessage = 0;\n let messageChanged = false;\n\n for (const block of msg.content) {\n if (\n isRawToolCallBlock(block) &&\n (!hasToolCallInput(block) ||\n !hasToolCallId(block) ||\n !hasToolCallName(block, allowedToolNames))\n ) {\n droppedToolCalls += 1;\n droppedInMessage += 1;\n changed = true;\n messageChanged = true;\n continue;\n }\n if (isRawToolCallBlock(block)) {\n if (\n (block as { type?: unknown }).type === \"toolCall\" ||\n (block as { type?: unknown }).type === \"toolUse\" ||\n (block as { type?: unknown }).type === \"functionCall\"\n ) {\n // Only sanitize (redact) sessions_spawn blocks; all others are passed through\n // unchanged to preserve provider-specific shapes (e.g. toolUse.input for Anthropic).\n const blockName =\n typeof (block as { name?: unknown }).name === \"string\"\n ? (block as { name: string }).name.trim()\n : undefined;\n if (blockName?.toLowerCase() === \"sessions_spawn\") {\n const sanitized = sanitizeToolCallBlock(block);\n if (sanitized !== block) {\n changed = true;\n messageChanged = true;\n }\n nextContent.push(sanitized as typeof block);\n } else {\n if (typeof (block as { name?: unknown }).name === \"string\") {\n const rawName = (block as { name: string }).name;\n const trimmedName = rawName.trim();\n if (rawName !== trimmedName && trimmedName) {\n const renamed = { ...(block as object), name: trimmedName } as typeof block;\n nextContent.push(renamed);\n changed = true;\n messageChanged = true;\n } else {\n nextContent.push(block);\n }\n } else {\n nextContent.push(block);\n }\n }\n continue;\n }\n } else {\n nextContent.push(block);\n }\n }\n\n if (droppedInMessage > 0) {\n if (nextContent.length === 0) {\n droppedAssistantMessages += 1;\n changed = true;\n continue;\n }\n out.push({ ...msg, content: nextContent });\n continue;\n }\n\n if (messageChanged) {\n out.push({ ...msg, content: nextContent });\n continue;\n }\n\n out.push(msg);\n }\n\n return {\n messages: changed ? out : messages,\n droppedToolCalls,\n droppedAssistantMessages,\n };\n}\n\nexport function sanitizeToolCallInputs(\n messages: AgentMessage[],\n options?: ToolCallInputRepairOptions,\n): AgentMessage[] {\n return repairToolCallInputs(messages, options).messages;\n}\n\nexport function sanitizeToolUseResultPairing(messages: AgentMessage[]): AgentMessage[] {\n return repairToolUseResultPairing(messages).messages;\n}\n\nexport type ToolUseRepairReport = {\n messages: AgentMessage[];\n added: Array<Extract<AgentMessage, { role: \"toolResult\" }>>;\n droppedDuplicateCount: number;\n droppedOrphanCount: number;\n moved: boolean;\n};\n\nexport function repairToolUseResultPairing(messages: AgentMessage[]): ToolUseRepairReport {\n // Anthropic (and Cloud Code Assist) reject transcripts where assistant tool calls are not\n // immediately followed by matching tool results. Session files can end up with results\n // displaced (e.g. after user turns) or duplicated. Repair by:\n // - moving matching toolResult messages directly after their assistant toolCall turn\n // - inserting synthetic error toolResults for missing ids\n // - dropping duplicate toolResults for the same id (anywhere in the transcript)\n const out: AgentMessage[] = [];\n const added: Array<Extract<AgentMessage, { role: \"toolResult\" }>> = [];\n const seenToolResultIds = new Set<string>();\n let droppedDuplicateCount = 0;\n let droppedOrphanCount = 0;\n let moved = false;\n let changed = false;\n\n const pushToolResult = (msg: Extract<AgentMessage, { role: \"toolResult\" }>) => {\n const id = extractToolResultId(msg);\n if (id && seenToolResultIds.has(id)) {\n droppedDuplicateCount += 1;\n changed = true;\n return;\n }\n if (id) {\n seenToolResultIds.add(id);\n }\n out.push(msg);\n };\n\n for (let i = 0; i < messages.length; i += 1) {\n const msg = messages[i];\n if (!msg || typeof msg !== \"object\") {\n out.push(msg);\n continue;\n }\n\n const role = (msg as { role?: unknown }).role;\n if (role !== \"assistant\") {\n // Tool results must only appear directly after the matching assistant tool call turn.\n // Any \"free-floating\" toolResult entries in session history can make strict providers\n // (Anthropic-compatible APIs, MiniMax, Cloud Code Assist) reject the entire request.\n if (role !== \"toolResult\") {\n out.push(msg);\n } else {\n droppedOrphanCount += 1;\n changed = true;\n }\n continue;\n }\n\n const assistant = msg as Extract<AgentMessage, { role: \"assistant\" }>;\n\n // Skip tool call extraction for aborted or errored assistant messages.\n // When stopReason is \"error\" or \"aborted\", the tool_use blocks may be incomplete\n // (e.g., partialJson: true) and should not have synthetic tool_results created.\n // Creating synthetic results for incomplete tool calls causes API 400 errors:\n // \"unexpected tool_use_id found in tool_result blocks\"\n const stopReason = (assistant as { stopReason?: string }).stopReason;\n if (stopReason === \"error\" || stopReason === \"aborted\") {\n out.push(msg);\n continue;\n }\n\n const toolCalls = extractToolCallsFromAssistant(assistant);\n if (toolCalls.length === 0) {\n out.push(msg);\n continue;\n }\n\n const toolCallIds = new Set(toolCalls.map((t) => t.id));\n const toolCallNamesById = new Map(toolCalls.map((t) => [t.id, t.name] as const));\n\n const spanResultsById = new Map<string, Extract<AgentMessage, { role: \"toolResult\" }>>();\n const remainder: AgentMessage[] = [];\n\n let j = i + 1;\n for (; j < messages.length; j += 1) {\n const next = messages[j];\n if (!next || typeof next !== \"object\") {\n remainder.push(next);\n continue;\n }\n\n const nextRole = (next as { role?: unknown }).role;\n if (nextRole === \"assistant\") {\n break;\n }\n\n if (nextRole === \"toolResult\") {\n const toolResult = next as Extract<AgentMessage, { role: \"toolResult\" }>;\n const id = extractToolResultId(toolResult);\n if (id && toolCallIds.has(id)) {\n if (seenToolResultIds.has(id)) {\n droppedDuplicateCount += 1;\n changed = true;\n continue;\n }\n const normalizedToolResult = normalizeToolResultName(\n toolResult,\n toolCallNamesById.get(id),\n );\n if (normalizedToolResult !== toolResult) {\n changed = true;\n }\n if (!spanResultsById.has(id)) {\n spanResultsById.set(id, normalizedToolResult);\n }\n continue;\n }\n }\n\n // Drop tool results that don't match the current assistant tool calls.\n if (nextRole !== \"toolResult\") {\n remainder.push(next);\n } else {\n droppedOrphanCount += 1;\n changed = true;\n }\n }\n\n out.push(msg);\n\n if (spanResultsById.size > 0 && remainder.length > 0) {\n moved = true;\n changed = true;\n }\n\n for (const call of toolCalls) {\n const existing = spanResultsById.get(call.id);\n if (existing) {\n pushToolResult(existing);\n } else {\n const missing = makeMissingToolResult({\n toolCallId: call.id,\n toolName: call.name,\n });\n added.push(missing);\n changed = true;\n pushToolResult(missing);\n }\n }\n\n for (const rem of remainder) {\n if (!rem || typeof rem !== \"object\") {\n out.push(rem);\n continue;\n }\n out.push(rem);\n }\n i = j - 1;\n }\n\n const changedOrMoved = changed || moved;\n return {\n messages: changedOrMoved ? out : messages,\n added,\n droppedDuplicateCount,\n droppedOrphanCount,\n moved: changedOrMoved,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"strip-tool-messages.js","names":[],"sources":["../../../../src/agent/transcript/strip-tool-messages.ts"],"sourcesContent":["/**\n * Strip tool / toolResult rows from wire-format history.\n * Use for display, summaries, or tools that need \"last assistant text\" without tool spans.\n */\n\nexport function stripToolMessages(messages: unknown[]): unknown[] {\n return messages.filter((msg) => {\n if (!msg || typeof msg !== 'object') {\n return true;\n }\n const role = (msg as { role?: unknown }).role;\n return role !== 'toolResult' && role !== 'tool';\n });\n}\n"],"mappings":";;;;;AAKA,SAAgB,kBAAkB,UAAgC;AAChE,QAAO,SAAS,QAAQ,QAAQ;AAC9B,MAAI,CAAC,OAAO,OAAO,QAAQ,SACzB,QAAO;EAET,MAAM,OAAQ,IAA2B;AACzC,SAAO,SAAS,gBAAgB,SAAS;GACzC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thinking-types.js","names":[],"sources":["../../../../src/agent/transcript/thinking-types.ts"],"sourcesContent":["/**\n * Thinking Types\n *\n * Defines types for thinking ability management across the application.\n * Thinking-level labels for transcript hygiene.\n */\n\n// ============================================\n// Thinking Levels\n// ============================================\n\n/**\n * Thinking level for models that support extended thinking.\n * - off: No thinking\n * - minimal: Minimal thinking effort\n * - low: Low thinking effort\n * - medium: Medium thinking effort\n * - high: High thinking effort\n * - xhigh: Extra high thinking (for supported models only)\n * - adaptive: Automatically adjust based on task complexity\n */\nexport type ThinkLevel = 'off' | 'minimal' | 'low' | 'medium' | 'high' | 'xhigh' | 'adaptive';\n\n/**\n * Reasoning visibility level.\n * Controls whether the model's reasoning/thinking is shown to the user.\n * - off: Hide reasoning\n * - on: Show reasoning after completion\n * - stream: Stream reasoning in real-time\n */\nexport type ReasoningLevel = 'off' | 'on' | 'stream';\n\n/**\n * Verbose level for agent output.\n * - off: Minimal output\n * - on: Normal verbose output\n * - full: Full verbose output with all details\n */\nexport type VerboseLevel = 'off' | 'on' | 'full';\n\n/**\n * Elevated mode for bash execution permissions.\n * - off: No elevated permissions\n * - ask: Ask for confirmation before elevated commands\n * - full: Allow all elevated commands without confirmation\n */\nexport type ElevatedMode = 'off' | 'ask' | 'full';\n\n// ============================================\n// Session-Level Configuration\n// ============================================\n\n/**\n * Session-level configuration for agent behavior.\n * These settings can be overridden per-session.\n */\nexport interface SessionAgentConfig {\n /** Thinking level for this session */\n thinkingLevel?: ThinkLevel;\n /** Reasoning visibility for this session */\n reasoningLevel?: ReasoningLevel;\n /** Verbose level for this session */\n verboseLevel?: VerboseLevel;\n /** Elevated mode for this session */\n elevatedMode?: ElevatedMode;\n /** Model override for this session */\n modelOverride?: string;\n /** Provider override for this session */\n providerOverride?: string;\n /** Per-session markdown workspace root override (immutable once set) */\n workingDirectoryOverride?: string;\n}\n\n// ============================================\n// Helper Functions\n// ============================================\n\n/**\n * Normalize a raw string to ThinkLevel.\n * Handles various aliases and formats.\n */\nexport function normalizeThinkLevel(raw?: string | null): ThinkLevel | undefined {\n if (!raw) {\n return undefined;\n }\n const key = raw.trim().toLowerCase();\n const collapsed = key.replace(/[\\s_-]+/g, '');\n\n if (collapsed === 'adaptive' || collapsed === 'auto') {\n return 'adaptive';\n }\n if (collapsed === 'xhigh' || collapsed === 'extrahigh') {\n return 'xhigh';\n }\n if (['off', 'disable', 'disabled'].includes(key)) {\n return 'off';\n }\n if (['on', 'enable', 'enabled'].includes(key)) {\n return 'low';\n }\n if (['min', 'minimal'].includes(key)) {\n return 'minimal';\n }\n if (['low', 'thinkhard', 'think-hard', 'think_hard'].includes(key)) {\n return 'low';\n }\n if (['mid', 'med', 'medium', 'thinkharder', 'think-harder', 'harder'].includes(key)) {\n return 'medium';\n }\n if (['high', 'ultra', 'ultrathink', 'think-hard', 'thinkhardest', 'highest', 'max'].includes(key)) {\n return 'high';\n }\n if (['think'].includes(key)) {\n return 'minimal';\n }\n return undefined;\n}\n\n/**\n * Normalize a raw string to ReasoningLevel.\n */\nexport function normalizeReasoningLevel(raw?: string | null): ReasoningLevel | undefined {\n if (!raw) {\n return undefined;\n }\n const key = raw.toLowerCase();\n if (['off', 'false', 'no', '0', 'hide', 'hidden', 'disable', 'disabled'].includes(key)) {\n return 'off';\n }\n if (['on', 'true', 'yes', '1', 'show', 'visible', 'enable', 'enabled'].includes(key)) {\n return 'on';\n }\n if (['stream', 'streaming', 'draft', 'live'].includes(key)) {\n return 'stream';\n }\n return undefined;\n}\n\n/**\n * Normalize a raw string to VerboseLevel.\n */\nexport function normalizeVerboseLevel(raw?: string | null): VerboseLevel | undefined {\n if (!raw) {\n return undefined;\n }\n const key = raw.toLowerCase();\n if (['off', 'false', 'no', '0'].includes(key)) {\n return 'off';\n }\n if (['full', 'all', 'everything'].includes(key)) {\n return 'full';\n }\n if (['on', 'true', 'yes', '1', 'enable', 'enabled'].includes(key)) {\n return 'on';\n }\n return undefined;\n}\n\n/**\n * Normalize a raw string to ElevatedMode.\n */\nexport function normalizeElevatedMode(raw?: string | null): ElevatedMode | undefined {\n if (!raw) {\n return undefined;\n }\n const key = raw.toLowerCase();\n if (['off', 'false', 'no', '0'].includes(key)) {\n return 'off';\n }\n if (['full', 'auto', 'auto-approve', 'autoapprove'].includes(key)) {\n return 'full';\n }\n if (['ask', 'prompt', 'approval', 'approve'].includes(key)) {\n return 'ask';\n }\n return undefined;\n}\n\n/**\n * Get available thinking levels for a provider/model.\n * Returns ['off', 'on'] for binary providers like z.ai.\n */\nexport function listThinkingLevels(provider?: string | null, model?: string | null): (ThinkLevel | 'on')[] {\n // Binary thinking providers (like z.ai)\n const normalizedProvider = provider?.trim().toLowerCase();\n if (normalizedProvider === 'z.ai' || normalizedProvider === 'zai') {\n return ['off', 'on'];\n }\n\n const levels: (ThinkLevel | 'on')[] = ['off', 'minimal', 'low', 'medium', 'high'];\n\n // xhigh is only supported for specific models\n const normalizedModel = model?.trim().toLowerCase();\n if (normalizedModel && ['gpt-5.6', 'gpt-5.5', 'gpt-5.4', 'gpt-5.4-pro', 'gpt-5.2'].some((m) => normalizedModel.includes(m))) {\n levels.push('xhigh');\n }\n\n levels.push('adaptive');\n return levels;\n}\n\n/**\n * Format thinking levels as a comma-separated string for display.\n */\nexport function formatThinkingLevels(provider?: string | null, model?: string | null): string {\n return listThinkingLevels(provider, model).join(', ');\n}\n\n/**\n * Convert ThinkLevel to a numeric value for comparison.\n * Higher value = more thinking.\n */\nexport function thinkLevelToNumber(level: ThinkLevel): number {\n const map: Record<ThinkLevel, number> = {\n off: 0,\n minimal: 1,\n low: 2,\n medium: 3,\n high: 4,\n xhigh: 5,\n adaptive: 3, // adaptive defaults to medium\n };\n return map[level];\n}\n"],"mappings":";;;;;AAiFA,SAAgB,oBAAoB,KAA6C;AAC/E,KAAI,CAAC,IACH;CAEF,MAAM,MAAM,IAAI,MAAM,CAAC,aAAa;CACpC,MAAM,YAAY,IAAI,QAAQ,YAAY,GAAG;AAE7C,KAAI,cAAc,cAAc,cAAc,OAC5C,QAAO;AAET,KAAI,cAAc,WAAW,cAAc,YACzC,QAAO;AAET,KAAI;EAAC;EAAO;EAAW;EAAW,CAAC,SAAS,IAAI,CAC9C,QAAO;AAET,KAAI;EAAC;EAAM;EAAU;EAAU,CAAC,SAAS,IAAI,CAC3C,QAAO;AAET,KAAI,CAAC,OAAO,UAAU,CAAC,SAAS,IAAI,CAClC,QAAO;AAET,KAAI;EAAC;EAAO;EAAa;EAAc;EAAa,CAAC,SAAS,IAAI,CAChE,QAAO;AAET,KAAI;EAAC;EAAO;EAAO;EAAU;EAAe;EAAgB;EAAS,CAAC,SAAS,IAAI,CACjF,QAAO;AAET,KAAI;EAAC;EAAQ;EAAS;EAAc;EAAc;EAAgB;EAAW;EAAM,CAAC,SAAS,IAAI,CAC/F,QAAO;AAET,KAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,CACzB,QAAO;;;;;AAQX,SAAgB,wBAAwB,KAAiD;AACvF,KAAI,CAAC,IACH;CAEF,MAAM,MAAM,IAAI,aAAa;AAC7B,KAAI;EAAC;EAAO;EAAS;EAAM;EAAK;EAAQ;EAAU;EAAW;EAAW,CAAC,SAAS,IAAI,CACpF,QAAO;AAET,KAAI;EAAC;EAAM;EAAQ;EAAO;EAAK;EAAQ;EAAW;EAAU;EAAU,CAAC,SAAS,IAAI,CAClF,QAAO;AAET,KAAI;EAAC;EAAU;EAAa;EAAS;EAAO,CAAC,SAAS,IAAI,CACxD,QAAO;;;;;AAQX,SAAgB,sBAAsB,KAA+C;AACnF,KAAI,CAAC,IACH;CAEF,MAAM,MAAM,IAAI,aAAa;AAC7B,KAAI;EAAC;EAAO;EAAS;EAAM;EAAI,CAAC,SAAS,IAAI,CAC3C,QAAO;AAET,KAAI;EAAC;EAAQ;EAAO;EAAa,CAAC,SAAS,IAAI,CAC7C,QAAO;AAET,KAAI;EAAC;EAAM;EAAQ;EAAO;EAAK;EAAU;EAAU,CAAC,SAAS,IAAI,CAC/D,QAAO;;;;;AAQX,SAAgB,sBAAsB,KAA+C;AACnF,KAAI,CAAC,IACH;CAEF,MAAM,MAAM,IAAI,aAAa;AAC7B,KAAI;EAAC;EAAO;EAAS;EAAM;EAAI,CAAC,SAAS,IAAI,CAC3C,QAAO;AAET,KAAI;EAAC;EAAQ;EAAQ;EAAgB;EAAc,CAAC,SAAS,IAAI,CAC/D,QAAO;AAET,KAAI;EAAC;EAAO;EAAU;EAAY;EAAU,CAAC,SAAS,IAAI,CACxD,QAAO;;;;;;AASX,SAAgB,mBAAmB,UAA0B,OAA8C;CAEzG,MAAM,qBAAqB,UAAU,MAAM,CAAC,aAAa;AACzD,KAAI,uBAAuB,UAAU,uBAAuB,MAC1D,QAAO,CAAC,OAAO,KAAK;CAGtB,MAAM,SAAgC;EAAC;EAAO;EAAW;EAAO;EAAU;EAAO;CAGjF,MAAM,kBAAkB,OAAO,MAAM,CAAC,aAAa;AACnD,KAAI,mBAAmB;EAAC;EAAW;EAAW;EAAW;EAAe;EAAU,CAAC,MAAM,MAAM,gBAAgB,SAAS,EAAE,CAAC,CACzH,QAAO,KAAK,QAAQ;AAGtB,QAAO,KAAK,WAAW;AACvB,QAAO;;;;;AAMT,SAAgB,qBAAqB,UAA0B,OAA+B;AAC5F,QAAO,mBAAmB,UAAU,MAAM,CAAC,KAAK,KAAK;;;;;;AAOvD,SAAgB,mBAAmB,OAA2B;AAU5D,QAAO;EARL,KAAK;EACL,SAAS;EACT,KAAK;EACL,QAAQ;EACR,MAAM;EACN,OAAO;EACP,UAAU;EAEF,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"thinking.js","names":[],"sources":["../../../../src/agent/transcript/thinking.ts"],"sourcesContent":["import type { AgentMessage } from \"@earendil-works/pi-agent-core\";\n\ntype AssistantContentBlock = Extract<AgentMessage, { role: \"assistant\" }>[\"content\"][number];\ntype AssistantMessage = Extract<AgentMessage, { role: \"assistant\" }>;\n\nexport function isAssistantMessageWithContent(message: AgentMessage): message is AssistantMessage {\n return (\n !!message &&\n typeof message === \"object\" &&\n message.role === \"assistant\" &&\n Array.isArray(message.content)\n );\n}\n\n/**\n * Strip all `type: \"thinking\"` content blocks from assistant messages.\n *\n * If an assistant message becomes empty after stripping, it is replaced with\n * a synthetic `{ type: \"text\", text: \"\" }` block to preserve turn structure\n * (some providers require strict user/assistant alternation).\n *\n * Returns the original array reference when nothing was changed (callers can\n * use reference equality to skip downstream work).\n */\nexport function dropThinkingBlocks(messages: AgentMessage[]): AgentMessage[] {\n let touched = false;\n const out: AgentMessage[] = [];\n for (const msg of messages) {\n if (!isAssistantMessageWithContent(msg)) {\n out.push(msg);\n continue;\n }\n const nextContent: AssistantContentBlock[] = [];\n let changed = false;\n for (const block of msg.content) {\n if (block && typeof block === \"object\" && (block as { type?: unknown }).type === \"thinking\") {\n touched = true;\n changed = true;\n continue;\n }\n nextContent.push(block);\n }\n if (!changed) {\n out.push(msg);\n continue;\n }\n // Preserve the assistant turn even if all blocks were thinking-only.\n const content =\n nextContent.length > 0 ? nextContent : [{ type: \"text\", text: \"\" } as AssistantContentBlock];\n out.push({ ...msg, content });\n }\n return touched ? out : messages;\n}\n"],"mappings":";AAKA,SAAgB,8BAA8B,SAAoD;AAChG,QACE,CAAC,CAAC,WACF,OAAO,YAAY,YACnB,QAAQ,SAAS,eACjB,MAAM,QAAQ,QAAQ,QAAQ;;;;;;;;;;;;AAclC,SAAgB,mBAAmB,UAA0C;CAC3E,IAAI,UAAU;CACd,MAAM,MAAsB,EAAE;AAC9B,MAAK,MAAM,OAAO,UAAU;AAC1B,MAAI,CAAC,8BAA8B,IAAI,EAAE;AACvC,OAAI,KAAK,IAAI;AACb;;EAEF,MAAM,cAAuC,EAAE;EAC/C,IAAI,UAAU;AACd,OAAK,MAAM,SAAS,IAAI,SAAS;AAC/B,OAAI,SAAS,OAAO,UAAU,YAAa,MAA6B,SAAS,YAAY;AAC3F,cAAU;AACV,cAAU;AACV;;AAEF,eAAY,KAAK,MAAM;;AAEzB,MAAI,CAAC,SAAS;AACZ,OAAI,KAAK,IAAI;AACb;;EAGF,MAAM,UACJ,YAAY,SAAS,IAAI,cAAc,CAAC;GAAE,MAAM;GAAQ,MAAM;GAAI,CAA0B;AAC9F,MAAI,KAAK;GAAE,GAAG;GAAK;GAAS,CAAC;;AAE/B,QAAO,UAAU,MAAM"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call-id.js","names":[],"sources":["../../../../src/agent/transcript/tool-call-id.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\nimport type { AgentMessage } from \"@earendil-works/pi-agent-core\";\n\nexport type ToolCallIdMode = \"strict\" | \"strict9\";\n\nconst STRICT9_LEN = 9;\nconst TOOL_CALL_TYPES = new Set([\"toolCall\", \"toolUse\", \"functionCall\"]);\n\nexport type ToolCallLike = {\n id: string;\n name?: string;\n};\n\n/**\n * Sanitize a tool call ID to be compatible with various providers.\n *\n * - \"strict\" mode: only [a-zA-Z0-9]\n * - \"strict9\" mode: only [a-zA-Z0-9], length 9 (Mistral tool call requirement)\n */\nexport function sanitizeToolCallId(id: string, mode: ToolCallIdMode = \"strict\"): string {\n if (!id || typeof id !== \"string\") {\n if (mode === \"strict9\") {\n return \"defaultid\";\n }\n return \"defaulttoolid\";\n }\n\n if (mode === \"strict9\") {\n const alphanumericOnly = id.replace(/[^a-zA-Z0-9]/g, \"\");\n if (alphanumericOnly.length >= STRICT9_LEN) {\n return alphanumericOnly.slice(0, STRICT9_LEN);\n }\n if (alphanumericOnly.length > 0) {\n return shortHash(alphanumericOnly, STRICT9_LEN);\n }\n return shortHash(\"sanitized\", STRICT9_LEN);\n }\n\n // Some providers require strictly alphanumeric tool call IDs.\n const alphanumericOnly = id.replace(/[^a-zA-Z0-9]/g, \"\");\n return alphanumericOnly.length > 0 ? alphanumericOnly : \"sanitizedtoolid\";\n}\n\nexport function extractToolCallsFromAssistant(\n msg: Extract<AgentMessage, { role: \"assistant\" }>,\n): ToolCallLike[] {\n const content = msg.content;\n if (!Array.isArray(content)) {\n return [];\n }\n\n const toolCalls: ToolCallLike[] = [];\n for (const block of content) {\n if (!block || typeof block !== \"object\") {\n continue;\n }\n const rec = block as { type?: unknown; id?: unknown; name?: unknown };\n if (typeof rec.id !== \"string\" || !rec.id) {\n continue;\n }\n if (typeof rec.type === \"string\" && TOOL_CALL_TYPES.has(rec.type)) {\n toolCalls.push({\n id: rec.id,\n name: typeof rec.name === \"string\" ? rec.name : undefined,\n });\n }\n }\n return toolCalls;\n}\n\nexport function extractToolResultId(\n msg: Extract<AgentMessage, { role: \"toolResult\" }>,\n): string | null {\n const toolCallId = (msg as { toolCallId?: unknown }).toolCallId;\n if (typeof toolCallId === \"string\" && toolCallId) {\n return toolCallId;\n }\n const toolUseId = (msg as { toolUseId?: unknown }).toolUseId;\n if (typeof toolUseId === \"string\" && toolUseId) {\n return toolUseId;\n }\n return null;\n}\n\nexport function isValidCloudCodeAssistToolId(id: string, mode: ToolCallIdMode = \"strict\"): boolean {\n if (!id || typeof id !== \"string\") {\n return false;\n }\n if (mode === \"strict9\") {\n return /^[a-zA-Z0-9]{9}$/.test(id);\n }\n // Strictly alphanumeric for providers with tighter tool ID constraints\n return /^[a-zA-Z0-9]+$/.test(id);\n}\n\nfunction shortHash(text: string, length = 8): string {\n return createHash(\"sha256\").update(text).digest(\"hex\").slice(0, length);\n}\n\nfunction makeUniqueToolId(params: { id: string; used: Set<string>; mode: ToolCallIdMode }): string {\n if (params.mode === \"strict9\") {\n const base = sanitizeToolCallId(params.id, params.mode);\n const candidate = base.length >= STRICT9_LEN ? base.slice(0, STRICT9_LEN) : \"\";\n if (candidate && !params.used.has(candidate)) {\n return candidate;\n }\n\n for (let i = 0; i < 1000; i += 1) {\n const hashed = shortHash(`${params.id}:${i}`, STRICT9_LEN);\n if (!params.used.has(hashed)) {\n return hashed;\n }\n }\n\n return shortHash(`${params.id}:${Date.now()}`, STRICT9_LEN);\n }\n\n const MAX_LEN = 40;\n\n const base = sanitizeToolCallId(params.id, params.mode).slice(0, MAX_LEN);\n if (!params.used.has(base)) {\n return base;\n }\n\n const hash = shortHash(params.id);\n // Use separator based on mode: none for strict, underscore for non-strict variants\n const separator = params.mode === \"strict\" ? \"\" : \"_\";\n const maxBaseLen = MAX_LEN - separator.length - hash.length;\n const clippedBase = base.length > maxBaseLen ? base.slice(0, maxBaseLen) : base;\n const candidate = `${clippedBase}${separator}${hash}`;\n if (!params.used.has(candidate)) {\n return candidate;\n }\n\n for (let i = 2; i < 1000; i += 1) {\n const suffix = params.mode === \"strict\" ? `x${i}` : `_${i}`;\n const next = `${candidate.slice(0, MAX_LEN - suffix.length)}${suffix}`;\n if (!params.used.has(next)) {\n return next;\n }\n }\n\n const ts = params.mode === \"strict\" ? `t${Date.now()}` : `_${Date.now()}`;\n return `${candidate.slice(0, MAX_LEN - ts.length)}${ts}`;\n}\n\nfunction rewriteAssistantToolCallIds(params: {\n message: Extract<AgentMessage, { role: \"assistant\" }>;\n resolve: (id: string) => string;\n}): Extract<AgentMessage, { role: \"assistant\" }> {\n const content = params.message.content;\n if (!Array.isArray(content)) {\n return params.message;\n }\n\n let changed = false;\n const next = content.map((block) => {\n if (!block || typeof block !== \"object\") {\n return block;\n }\n const rec = block as { type?: unknown; id?: unknown };\n const type = rec.type;\n const id = rec.id;\n if (\n (type !== \"functionCall\" && type !== \"toolUse\" && type !== \"toolCall\") ||\n typeof id !== \"string\" ||\n !id\n ) {\n return block;\n }\n const nextId = params.resolve(id);\n if (nextId === id) {\n return block;\n }\n changed = true;\n return { ...(block as unknown as Record<string, unknown>), id: nextId };\n });\n\n if (!changed) {\n return params.message;\n }\n return { ...params.message, content: next as typeof params.message.content };\n}\n\nfunction rewriteToolResultIds(params: {\n message: Extract<AgentMessage, { role: \"toolResult\" }>;\n resolve: (id: string) => string;\n}): Extract<AgentMessage, { role: \"toolResult\" }> {\n const toolCallId =\n typeof params.message.toolCallId === \"string\" && params.message.toolCallId\n ? params.message.toolCallId\n : undefined;\n const toolUseId = (params.message as { toolUseId?: unknown }).toolUseId;\n const toolUseIdStr = typeof toolUseId === \"string\" && toolUseId ? toolUseId : undefined;\n\n const nextToolCallId = toolCallId ? params.resolve(toolCallId) : undefined;\n const nextToolUseId = toolUseIdStr ? params.resolve(toolUseIdStr) : undefined;\n\n if (nextToolCallId === toolCallId && nextToolUseId === toolUseIdStr) {\n return params.message;\n }\n\n return {\n ...params.message,\n ...(nextToolCallId && { toolCallId: nextToolCallId }),\n ...(nextToolUseId && { toolUseId: nextToolUseId }),\n } as Extract<AgentMessage, { role: \"toolResult\" }>;\n}\n\n/**\n * Sanitize tool call IDs for provider compatibility.\n *\n * @param messages - The messages to sanitize\n * @param mode - \"strict\" (alphanumeric only) or \"strict9\" (alphanumeric length 9)\n */\nexport function sanitizeToolCallIdsForCloudCodeAssist(\n messages: AgentMessage[],\n mode: ToolCallIdMode = \"strict\",\n): AgentMessage[] {\n // Strict mode: only [a-zA-Z0-9]\n // Strict9 mode: only [a-zA-Z0-9], length 9 (Mistral tool call requirement)\n // Sanitization can introduce collisions (e.g. `a|b` and `a:b` -> `ab`).\n // Fix by applying a stable, transcript-wide mapping and de-duping via suffix.\n const map = new Map<string, string>();\n const used = new Set<string>();\n\n const resolve = (id: string) => {\n const existing = map.get(id);\n if (existing) {\n return existing;\n }\n const next = makeUniqueToolId({ id, used, mode });\n map.set(id, next);\n used.add(next);\n return next;\n };\n\n let changed = false;\n const out = messages.map((msg) => {\n if (!msg || typeof msg !== \"object\") {\n return msg;\n }\n const role = (msg as { role?: unknown }).role;\n if (role === \"assistant\") {\n const next = rewriteAssistantToolCallIds({\n message: msg as Extract<AgentMessage, { role: \"assistant\" }>,\n resolve,\n });\n if (next !== msg) {\n changed = true;\n }\n return next;\n }\n if (role === \"toolResult\") {\n const next = rewriteToolResultIds({\n message: msg as Extract<AgentMessage, { role: \"toolResult\" }>,\n resolve,\n });\n if (next !== msg) {\n changed = true;\n }\n return next;\n }\n return msg;\n });\n\n return changed ? out : messages;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-hygiene.js","names":[],"sources":["../../../../src/agent/transcript/transcript-hygiene.ts"],"sourcesContent":["/**\n * Session transcript hygiene before LLM calls and after persistence.\n * Subset: no image/async paths here.\n */\n\nimport type { AgentMessage } from '@earendil-works/pi-agent-core';\nimport type { Api, Model } from '@earendil-works/pi-ai';\nimport { createLogger } from '../../utils/logger.js';\nimport { resolveTranscriptPolicy, type TranscriptPolicy } from './transcript-policy.js';\nimport { dropThinkingBlocks } from './thinking.js';\nimport {\n sanitizeToolCallInputs,\n sanitizeToolUseResultPairing,\n stripToolResultDetails,\n} from './session-transcript-repair.js';\nimport { sanitizeToolCallIdsForCloudCodeAssist, type ToolCallIdMode } from './tool-call-id.js';\n\nconst log = createLogger('transcript-hygiene');\n\nexport type TranscriptHygieneParams = {\n modelApi?: string | null;\n provider?: string | null;\n modelId?: string | null;\n};\n\nexport function resolvePolicyForModel(model: Model<Api>): TranscriptPolicy {\n return resolveTranscriptPolicy({\n modelApi: model.api,\n provider: model.provider,\n modelId: model.id,\n });\n}\n\n/**\n * Apply provider-aware transcript fixes: thinking drop, tool input cleanup,\n * tool_use/tool_result pairing repair, strip non-LLM details, optional tool-call ID sanitize.\n */\nexport function applySessionTranscriptHygiene(\n messages: AgentMessage[],\n model: Model<Api>,\n): AgentMessage[] {\n const policy = resolvePolicyForModel(model);\n return applySessionTranscriptHygieneWithPolicy(messages, policy);\n}\n\nexport function applySessionTranscriptHygieneWithPolicy(\n messages: AgentMessage[],\n policy: TranscriptPolicy,\n): AgentMessage[] {\n let out = messages;\n\n if (policy.dropThinkingBlocks) {\n out = dropThinkingBlocks(out);\n }\n\n out = sanitizeToolCallInputs(out);\n\n if (policy.repairToolUseResultPairing) {\n out = sanitizeToolUseResultPairing(out);\n }\n\n out = stripToolResultDetails(out);\n\n if (policy.sanitizeToolCallIds && policy.toolCallIdMode) {\n const mode: ToolCallIdMode = policy.toolCallIdMode;\n out = sanitizeToolCallIdsForCloudCodeAssist(out, mode);\n }\n\n return out;\n}\n\nexport function tryApplySessionTranscriptHygiene(\n messages: AgentMessage[],\n model: Model<Api>,\n): AgentMessage[] {\n try {\n return applySessionTranscriptHygiene(messages, model);\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n log.warn(\n { err, errorMessage: em, provider: model.provider, modelId: model.id, modelApi: model.api, messageCount: messages.length },\n `Transcript hygiene failed for ${model.provider}/${model.id}: ${em} (using raw messages)`,\n );\n return messages;\n }\n}\n\n/**\n * Hygiene for **writing session files** (gateway UI, history replay).\n *\n * Does **not** strip `thinking` blocks — those must remain on disk so web chat can show\n * reasoning after refresh. `dropThinkingBlocks` exists for **LLM** safety when loading\n * into the agent (`tryApplySessionTranscriptHygiene` in {@link prepareLoadedSessionMessages}).\n */\nexport function applySessionTranscriptHygieneForPersistence(\n messages: AgentMessage[],\n model: Model<Api>,\n): AgentMessage[] {\n const policy = resolvePolicyForModel(model);\n return applySessionTranscriptHygieneWithPolicy(messages, {\n ...policy,\n dropThinkingBlocks: false,\n });\n}\n\nexport function tryApplySessionTranscriptHygieneForPersistence(\n messages: AgentMessage[],\n model: Model<Api>,\n): AgentMessage[] {\n try {\n return applySessionTranscriptHygieneForPersistence(messages, model);\n } catch (err) {\n const em = err instanceof Error ? err.message : String(err);\n log.warn(\n { err, errorMessage: em, provider: model.provider, modelId: model.id, messageCount: messages.length },\n `Persistence transcript hygiene failed for ${model.provider}/${model.id}: ${em} (using raw messages)`,\n );\n return messages;\n }\n}\n"],"mappings":";;;;;;;aAOqD;AAUrD,MAAM,MAAM,aAAa,qBAAqB;AAQ9C,SAAgB,sBAAsB,OAAqC;AACzE,QAAO,wBAAwB;EAC7B,UAAU,MAAM;EAChB,UAAU,MAAM;EAChB,SAAS,MAAM;EAChB,CAAC;;;;;;AAOJ,SAAgB,8BACd,UACA,OACgB;AAEhB,QAAO,wCAAwC,UADhC,sBAAsB,MAC0B,CAAC;;AAGlE,SAAgB,wCACd,UACA,QACgB;CAChB,IAAI,MAAM;AAEV,KAAI,OAAO,mBACT,OAAM,mBAAmB,IAAI;AAG/B,OAAM,uBAAuB,IAAI;AAEjC,KAAI,OAAO,2BACT,OAAM,6BAA6B,IAAI;AAGzC,OAAM,uBAAuB,IAAI;AAEjC,KAAI,OAAO,uBAAuB,OAAO,gBAAgB;EACvD,MAAM,OAAuB,OAAO;AACpC,QAAM,sCAAsC,KAAK,KAAK;;AAGxD,QAAO;;AAGT,SAAgB,iCACd,UACA,OACgB;AAChB,KAAI;AACF,SAAO,8BAA8B,UAAU,MAAM;UAC9C,KAAK;EACZ,MAAM,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC3D,MAAI,KACF;GAAE;GAAK,cAAc;GAAI,UAAU,MAAM;GAAU,SAAS,MAAM;GAAI,UAAU,MAAM;GAAK,cAAc,SAAS;GAAQ,EAC1H,iCAAiC,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,uBACpE;AACD,SAAO;;;;;;;;;;AAWX,SAAgB,4CACd,UACA,OACgB;AAEhB,QAAO,wCAAwC,UAAU;EACvD,GAFa,sBAAsB,MAE1B;EACT,oBAAoB;EACrB,CAAC;;AAGJ,SAAgB,+CACd,UACA,OACgB;AAChB,KAAI;AACF,SAAO,4CAA4C,UAAU,MAAM;UAC5D,KAAK;EACZ,MAAM,KAAK,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC3D,MAAI,KACF;GAAE;GAAK,cAAc;GAAI,UAAU,MAAM;GAAU,SAAS,MAAM;GAAI,cAAc,SAAS;GAAQ,EACrG,6CAA6C,MAAM,SAAS,GAAG,MAAM,GAAG,IAAI,GAAG,uBAChF;AACD,SAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-policy.js","names":[],"sources":["../../../../src/agent/transcript/transcript-policy.ts"],"sourcesContent":["import { normalizeProviderId } from \"./model-selection.js\";\nimport { isGoogleModelApi } from \"./google-api.js\";\nimport {\n isAnthropicProviderFamily,\n isOpenAiProviderFamily,\n preservesAnthropicThinkingSignatures,\n resolveTranscriptToolCallIdMode,\n shouldDropThinkingBlocksForModel,\n shouldSanitizeGeminiThoughtSignaturesForModel,\n supportsOpenAiCompatTurnValidation,\n} from \"./provider-capabilities.js\";\nimport type { ToolCallIdMode } from \"./tool-call-id.js\";\n\nexport type TranscriptSanitizeMode = \"full\" | \"images-only\";\n\nexport type TranscriptPolicy = {\n sanitizeMode: TranscriptSanitizeMode;\n sanitizeToolCallIds: boolean;\n toolCallIdMode?: ToolCallIdMode;\n repairToolUseResultPairing: boolean;\n preserveSignatures: boolean;\n sanitizeThoughtSignatures?: {\n allowBase64Only?: boolean;\n includeCamelCase?: boolean;\n };\n sanitizeThinkingSignatures: boolean;\n dropThinkingBlocks: boolean;\n applyGoogleTurnOrdering: boolean;\n validateGeminiTurns: boolean;\n validateAnthropicTurns: boolean;\n allowSyntheticToolResults: boolean;\n};\n\nconst OPENAI_MODEL_APIS = new Set([\n \"openai\",\n \"openai-completions\",\n \"openai-responses\",\n \"openai-codex-responses\",\n]);\n\nfunction isOpenAiApi(modelApi?: string | null): boolean {\n if (!modelApi) {\n return false;\n }\n return OPENAI_MODEL_APIS.has(modelApi);\n}\n\nfunction isOpenAiProvider(provider?: string | null): boolean {\n return isOpenAiProviderFamily(provider);\n}\n\nfunction isAnthropicApi(modelApi?: string | null, provider?: string | null): boolean {\n if (modelApi === \"anthropic-messages\" || modelApi === \"bedrock-converse-stream\") {\n return true;\n }\n // MiniMax now uses openai-completions API, not anthropic-messages\n return isAnthropicProviderFamily(provider);\n}\n\nfunction resolveToolCallIdMode(\n providerToolCallIdMode: ToolCallIdMode | undefined,\n sanitizeToolCallIds: boolean,\n isMistral: boolean,\n): ToolCallIdMode | undefined {\n if (providerToolCallIdMode) return providerToolCallIdMode;\n if (isMistral) return \"strict9\";\n if (sanitizeToolCallIds) return \"strict\";\n return undefined;\n}\n\nexport function resolveTranscriptPolicy(params: {\n modelApi?: string | null;\n provider?: string | null;\n modelId?: string | null;\n}): TranscriptPolicy {\n const provider = normalizeProviderId(params.provider ?? \"\");\n const modelId = params.modelId ?? \"\";\n const isGoogle = isGoogleModelApi(params.modelApi);\n const isAnthropic = isAnthropicApi(params.modelApi, provider);\n const isOpenAi = isOpenAiProvider(provider) || (!provider && isOpenAiApi(params.modelApi));\n const isStrictOpenAiCompatible =\n params.modelApi === \"openai-completions\" &&\n !isOpenAi &&\n supportsOpenAiCompatTurnValidation(provider);\n const providerToolCallIdMode = resolveTranscriptToolCallIdMode(provider, modelId);\n const isMistral = providerToolCallIdMode === \"strict9\";\n const shouldSanitizeGeminiThoughtSignaturesForProvider =\n shouldSanitizeGeminiThoughtSignaturesForModel({\n provider,\n modelId,\n });\n const requiresOpenAiCompatibleToolIdSanitization = params.modelApi === \"openai-completions\";\n\n // GitHub Copilot's Claude endpoints can reject persisted `thinking` blocks with\n // non-binary/non-base64 signatures (e.g. thinkingSignature: \"reasoning_text\").\n // Drop these blocks at send-time to keep sessions usable.\n const dropThinkingBlocks = shouldDropThinkingBlocksForModel({ provider, modelId });\n\n const needsNonImageSanitize =\n isGoogle || isAnthropic || isMistral || shouldSanitizeGeminiThoughtSignaturesForProvider;\n\n const sanitizeToolCallIds =\n isGoogle || isMistral || isAnthropic || requiresOpenAiCompatibleToolIdSanitization;\n const toolCallIdMode = resolveToolCallIdMode(\n providerToolCallIdMode,\n sanitizeToolCallIds,\n isMistral,\n );\n // All providers need orphaned tool_result repair after history truncation.\n // OpenAI rejects function_call_output items whose call_id has no matching\n // function_call in the conversation, so the repair must run universally.\n const repairToolUseResultPairing = true;\n const sanitizeThoughtSignatures =\n shouldSanitizeGeminiThoughtSignaturesForProvider || isGoogle\n ? { allowBase64Only: true, includeCamelCase: true }\n : undefined;\n\n return {\n sanitizeMode: isOpenAi ? \"images-only\" : needsNonImageSanitize ? \"full\" : \"images-only\",\n sanitizeToolCallIds:\n (!isOpenAi && sanitizeToolCallIds) || requiresOpenAiCompatibleToolIdSanitization,\n toolCallIdMode,\n repairToolUseResultPairing,\n preserveSignatures: isAnthropic && preservesAnthropicThinkingSignatures(provider),\n sanitizeThoughtSignatures: isOpenAi ? undefined : sanitizeThoughtSignatures,\n sanitizeThinkingSignatures: false,\n dropThinkingBlocks,\n applyGoogleTurnOrdering: !isOpenAi && (isGoogle || isStrictOpenAiCompatible),\n validateGeminiTurns: !isOpenAi && (isGoogle || isStrictOpenAiCompatible),\n validateAnthropicTurns: !isOpenAi && (isAnthropic || isStrictOpenAiCompatible),\n allowSyntheticToolResults: !isOpenAi && (isGoogle || isAnthropic),\n };\n}\n"],"mappings":";;;;AAiCA,MAAM,oBAAoB,IAAI,IAAI;CAChC;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAS,YAAY,UAAmC;AACtD,KAAI,CAAC,SACH,QAAO;AAET,QAAO,kBAAkB,IAAI,SAAS;;AAGxC,SAAS,iBAAiB,UAAmC;AAC3D,QAAO,uBAAuB,SAAS;;AAGzC,SAAS,eAAe,UAA0B,UAAmC;AACnF,KAAI,aAAa,wBAAwB,aAAa,0BACpD,QAAO;AAGT,QAAO,0BAA0B,SAAS;;AAG5C,SAAS,sBACP,wBACA,qBACA,WAC4B;AAC5B,KAAI,uBAAwB,QAAO;AACnC,KAAI,UAAW,QAAO;AACtB,KAAI,oBAAqB,QAAO;;AAIlC,SAAgB,wBAAwB,QAInB;CACnB,MAAM,WAAW,oBAAoB,OAAO,YAAY,GAAG;CAC3D,MAAM,UAAU,OAAO,WAAW;CAClC,MAAM,WAAW,iBAAiB,OAAO,SAAS;CAClD,MAAM,cAAc,eAAe,OAAO,UAAU,SAAS;CAC7D,MAAM,WAAW,iBAAiB,SAAS,IAAK,CAAC,YAAY,YAAY,OAAO,SAAS;CACzF,MAAM,2BACJ,OAAO,aAAa,wBACpB,CAAC,YACD,mCAAmC,SAAS;CAC9C,MAAM,yBAAyB,gCAAgC,UAAU,QAAQ;CACjF,MAAM,YAAY,2BAA2B;CAC7C,MAAM,mDACJ,8CAA8C;EAC5C;EACA;EACD,CAAC;CACJ,MAAM,6CAA6C,OAAO,aAAa;CAKvE,MAAM,qBAAqB,iCAAiC;EAAE;EAAU;EAAS,CAAC;CAElF,MAAM,wBACJ,YAAY,eAAe,aAAa;CAE1C,MAAM,sBACJ,YAAY,aAAa,eAAe;CAC1C,MAAM,iBAAiB,sBACrB,wBACA,qBACA,UACD;CAID,MAAM,6BAA6B;CACnC,MAAM,4BACJ,oDAAoD,WAChD;EAAE,iBAAiB;EAAM,kBAAkB;EAAM,GACjD,KAAA;AAEN,QAAO;EACL,cAAc,WAAW,gBAAgB,wBAAwB,SAAS;EAC1E,qBACG,CAAC,YAAY,uBAAwB;EACxC;EACA;EACA,oBAAoB,eAAe,qCAAqC,SAAS;EACjF,2BAA2B,WAAW,KAAA,IAAY;EAClD,4BAA4B;EAC5B;EACA,yBAAyB,CAAC,aAAa,YAAY;EACnD,qBAAqB,CAAC,aAAa,YAAY;EAC/C,wBAAwB,CAAC,aAAa,eAAe;EACrD,2BAA2B,CAAC,aAAa,YAAY;EACtD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-progress.js","names":[],"sources":["../../../../src/agent/workflow/agent-progress.ts"],"sourcesContent":["/**\n * Apply live subagent progress events onto a {@link WorkflowAgentSnapshot}.\n */\n\nimport type {\n SubagentProgressEvent,\n WorkflowAgentSnapshot,\n WorkflowAgentStep,\n} from './types.js';\nimport { workflowStepLabel } from './step-labels.js';\n\nconst MAX_STEPS = 50;\nconst MAX_STREAM_TEXT = 32_000;\n\nexport function applySubagentProgress(\n agent: WorkflowAgentSnapshot,\n event: SubagentProgressEvent,\n): boolean {\n switch (event.type) {\n case 'tool_start': {\n if (!agent.steps) agent.steps = [];\n const { label, detail } = workflowStepLabel(event.toolName, event.args);\n const step: WorkflowAgentStep = {\n id: event.toolCallId,\n kind: 'tool',\n toolName: event.toolName,\n label,\n detail,\n status: 'running',\n startedAtMs: Date.now(),\n };\n agent.steps.push(step);\n trimSteps(agent);\n agent.currentStep = formatCurrentStep(step);\n return true;\n }\n case 'tool_end': {\n const step = findStep(agent, event.toolCallId);\n if (!step) return false;\n step.status = event.isError ? 'error' : 'done';\n step.resultPreview = event.resultPreview;\n step.error = event.error;\n if (step.startedAtMs != null) step.durationMs = Date.now() - step.startedAtMs;\n if (agent.currentStep === formatCurrentStep(step)) {\n agent.currentStep = undefined;\n }\n return true;\n }\n case 'iteration': {\n agent.iteration = event.count;\n agent.maxIterations = event.max;\n return true;\n }\n case 'text_delta': {\n if (!event.delta) return false;\n agent.streamText = appendStreamText(agent.streamText, event.delta);\n return true;\n }\n case 'thinking_delta': {\n if (!event.delta) return false;\n agent.streamText = appendStreamText(agent.streamText, event.delta);\n return true;\n }\n default:\n return false;\n }\n}\n\nfunction findStep(agent: WorkflowAgentSnapshot, id: string): WorkflowAgentStep | undefined {\n return agent.steps?.find((s) => s.id === id);\n}\n\nfunction formatCurrentStep(step: WorkflowAgentStep): string {\n return step.detail ? `${step.label}: ${step.detail}` : step.label;\n}\n\nfunction trimSteps(agent: WorkflowAgentSnapshot): void {\n if (!agent.steps || agent.steps.length <= MAX_STEPS) return;\n agent.steps = agent.steps.slice(-MAX_STEPS);\n}\n\nfunction appendStreamText(existing: string | undefined, delta: string): string {\n const next = (existing ?? '') + delta;\n if (next.length <= MAX_STREAM_TEXT) return next;\n return next.slice(-MAX_STREAM_TEXT);\n}\n"],"mappings":";;AAWA,MAAM,YAAY;AAClB,MAAM,kBAAkB;AAExB,SAAgB,sBACd,OACA,OACS;AACT,SAAQ,MAAM,MAAd;EACE,KAAK,cAAc;AACjB,OAAI,CAAC,MAAM,MAAO,OAAM,QAAQ,EAAE;GAClC,MAAM,EAAE,OAAO,WAAW,kBAAkB,MAAM,UAAU,MAAM,KAAK;GACvE,MAAM,OAA0B;IAC9B,IAAI,MAAM;IACV,MAAM;IACN,UAAU,MAAM;IAChB;IACA;IACA,QAAQ;IACR,aAAa,KAAK,KAAK;IACxB;AACD,SAAM,MAAM,KAAK,KAAK;AACtB,aAAU,MAAM;AAChB,SAAM,cAAc,kBAAkB,KAAK;AAC3C,UAAO;;EAET,KAAK,YAAY;GACf,MAAM,OAAO,SAAS,OAAO,MAAM,WAAW;AAC9C,OAAI,CAAC,KAAM,QAAO;AAClB,QAAK,SAAS,MAAM,UAAU,UAAU;AACxC,QAAK,gBAAgB,MAAM;AAC3B,QAAK,QAAQ,MAAM;AACnB,OAAI,KAAK,eAAe,KAAM,MAAK,aAAa,KAAK,KAAK,GAAG,KAAK;AAClE,OAAI,MAAM,gBAAgB,kBAAkB,KAAK,CAC/C,OAAM,cAAc,KAAA;AAEtB,UAAO;;EAET,KAAK;AACH,SAAM,YAAY,MAAM;AACxB,SAAM,gBAAgB,MAAM;AAC5B,UAAO;EAET,KAAK;AACH,OAAI,CAAC,MAAM,MAAO,QAAO;AACzB,SAAM,aAAa,iBAAiB,MAAM,YAAY,MAAM,MAAM;AAClE,UAAO;EAET,KAAK;AACH,OAAI,CAAC,MAAM,MAAO,QAAO;AACzB,SAAM,aAAa,iBAAiB,MAAM,YAAY,MAAM,MAAM;AAClE,UAAO;EAET,QACE,QAAO;;;AAIb,SAAS,SAAS,OAA8B,IAA2C;AACzF,QAAO,MAAM,OAAO,MAAM,MAAM,EAAE,OAAO,GAAG;;AAG9C,SAAS,kBAAkB,MAAiC;AAC1D,QAAO,KAAK,SAAS,GAAG,KAAK,MAAM,IAAI,KAAK,WAAW,KAAK;;AAG9D,SAAS,UAAU,OAAoC;AACrD,KAAI,CAAC,MAAM,SAAS,MAAM,MAAM,UAAU,UAAW;AACrD,OAAM,QAAQ,MAAM,MAAM,MAAM,CAAC,UAAU;;AAG7C,SAAS,iBAAiB,UAA8B,OAAuB;CAC7E,MAAM,QAAQ,YAAY,MAAM;AAChC,KAAI,KAAK,UAAU,gBAAiB,QAAO;AAC3C,QAAO,KAAK,MAAM,CAAC,gBAAgB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../../src/agent/workflow/builtins/index.ts"],"sourcesContent":["import type { WorkflowDefinition, WorkflowDefinitionEstimatedAgents, WorkflowGraph } from '../../../workflows/domain/definition.js';\nimport { buildWorkflowDefinition } from '../../../workflows/domain/definition-utils.js';\n\ninterface BuiltinWorkflowSpec {\n name: string;\n description: string;\n whenToUse: string;\n tags: string[];\n perspectives: Array<{ title: string; focus: string }>;\n}\n\nconst BUILTIN_SPECS: BuiltinWorkflowSpec[] = [\n { name: 'audit_repo', description: 'Audit a repository across architecture, quality, security, and operations, then produce a prioritized report.', whenToUse: 'Use for a thorough review of a repository or major subsystem.', tags: ['code-review', 'audit'], perspectives: perspectives('Architecture and boundaries', 'Correctness and maintainability', 'Security and operations') },\n { name: 'client_proposal', description: 'Turn a client brief into a clear proposal covering scope, delivery, pricing logic, and risks.', whenToUse: 'Use when preparing a client-ready proposal or statement of work.', tags: ['writing', 'content', 'document'], perspectives: perspectives('Client goals and value', 'Scope and delivery plan', 'Commercial terms and risks') },\n { name: 'competitor_scan', description: 'Compare competitors and identify positioning, pricing, and differentiation opportunities.', whenToUse: 'Use before positioning, pricing, or go-to-market decisions.', tags: ['research', 'investigation'], perspectives: perspectives('Product and audience', 'Pricing and distribution', 'Differentiation and gaps') },\n { name: 'content_draft', description: 'Draft polished content from multiple audience and tone perspectives, then select the strongest version.', whenToUse: 'Use for emails, posts, announcements, documentation, or other non-code writing.', tags: ['writing', 'content', 'communication'], perspectives: perspectives('Audience clarity', 'Narrative and tone', 'Conversion and call to action') },\n { name: 'content_repurpose', description: 'Turn one source into channel-specific content without losing the core message.', whenToUse: 'Use when adapting existing material for multiple platforms.', tags: ['writing', 'content'], perspectives: perspectives('Short social format', 'Professional long-form format', 'Video or newsletter format') },\n { name: 'debug_incident', description: 'Triage an incident using independent hypotheses and produce ranked causes and verification steps.', whenToUse: 'Use for bugs, crashes, error messages, and unexpected behavior.', tags: ['debug', 'incident', 'troubleshooting'], perspectives: perspectives('Application behavior', 'Data and dependencies', 'Infrastructure and observability') },\n { name: 'decision_compare', description: 'Compare options through independent criteria and recommend with explicit trade-offs.', whenToUse: 'Use for decisions with multiple viable choices.', tags: ['decision-making', 'comparison', 'productivity'], perspectives: perspectives('Benefits and upside', 'Risks and hidden cost', 'Fit with constraints') },\n { name: 'implementation_plan', description: 'Convert a feature, refactor, or bugfix request into an actionable implementation plan.', whenToUse: 'Use before multi-file or unfamiliar code changes.', tags: ['planning', 'implementation', 'architecture'], perspectives: perspectives('Existing architecture', 'Implementation sequence', 'Testing and rollout risks') },\n { name: 'inbox_triage', description: 'Sort messy inbox input into do, delegate, defer, and drop with clear priorities.', whenToUse: 'Use to plan a day from mixed messages and tasks.', tags: ['productivity', 'brainstorm'], perspectives: perspectives('Urgency and impact', 'Delegation and automation', 'Scheduling and elimination') },\n { name: 'meeting_prep', description: 'Build meeting context, a focused agenda, and prioritized talking points.', whenToUse: 'Use before an important meeting.', tags: ['meeting', 'productivity'], perspectives: perspectives('Context and stakeholders', 'Agenda and decisions', 'Questions and key messages') },\n { name: 'multi_perspective_review', description: 'Stress-test a target from user, operator, and maintainer perspectives.', whenToUse: 'Use before committing to a design, plan, pull request, or proposal.', tags: ['review', 'planning', 'decision'], perspectives: perspectives('User experience and accessibility', 'Operational failure modes', 'Maintainability and hidden assumptions') },\n { name: 'offer_design', description: 'Package expertise into sellable offers with tiers, pricing, boundaries, and positioning.', whenToUse: 'Use when productizing a service or subscription.', tags: ['planning', 'architecture'], perspectives: perspectives('Customer problem and outcome', 'Packaging and delivery boundaries', 'Pricing and positioning') },\n { name: 'pr_review', description: 'Review a change set with focused reviewers and produce a ship or block verdict.', whenToUse: 'Use for a pull request, diff, or commit range.', tags: ['code-review', 'pr'], perspectives: perspectives('Correctness and regressions', 'Security and performance', 'Tests and maintainability') },\n { name: 'release_check', description: 'Assess release readiness through parallel risk checks and a go or no-go verdict.', whenToUse: 'Use before shipping a completed change.', tags: ['release', 'quality', 'validation'], perspectives: perspectives('Product behavior', 'Quality and regression risk', 'Operations and rollback') },\n { name: 'research', description: 'Research a question from multiple angles and produce a source-conscious synthesis.', whenToUse: 'Use for non-trivial questions that benefit from independent investigation.', tags: ['research', 'investigation'], perspectives: perspectives('Primary evidence and facts', 'Alternative explanations', 'Practical implications') },\n { name: 'weekly_review', description: 'Review the week and produce a short, prioritized action plan for next week.', whenToUse: 'Use for a weekly retrospective and planning session.', tags: ['productivity', 'brainstorm'], perspectives: perspectives('Outcomes and progress', 'Friction and unfinished work', 'Priorities and capacity') },\n];\n\nexport const BUILTIN_WORKFLOWS: readonly WorkflowDefinition[] = Object.freeze(\n BUILTIN_SPECS.map((spec) => createBuiltinWorkflow(spec)),\n);\n\nfunction createBuiltinWorkflow(spec: BuiltinWorkflowSpec): WorkflowDefinition {\n const graph = createParallelGraph(spec);\n const estimatedAgents: WorkflowDefinitionEstimatedAgents = {\n min: spec.perspectives.length + 1,\n max: spec.perspectives.length + 1,\n };\n return buildWorkflowDefinition({\n name: spec.name,\n source: 'builtin',\n graph,\n manifest: {\n description: spec.description,\n whenToUse: spec.whenToUse,\n tags: spec.tags,\n estimatedAgents,\n inputSchema: { type: 'object', additionalProperties: true },\n },\n phases: [\n { id: 'explore', title: 'Explore' },\n { id: 'synthesize', title: 'Synthesize' },\n ],\n });\n}\n\nfunction createParallelGraph(spec: BuiltinWorkflowSpec): WorkflowGraph {\n const analystNodes = spec.perspectives.map((perspective, index) => ({\n id: `perspective-${index + 1}`,\n kind: 'agent' as const,\n title: perspective.title,\n description: perspective.focus,\n phaseId: 'explore',\n position: { x: 360, y: 80 + index * 180 },\n config: {\n prompt: `Goal: {{goal}}\\nInput: {{input}}\\n\\nAnalyze this from the following perspective: ${perspective.focus}\\nReturn concrete findings, evidence, risks, and recommended actions.`,\n maxIterations: 12,\n },\n }));\n return {\n schemaVersion: 1,\n nodes: [\n { id: 'input', kind: 'input', title: 'User input', position: { x: 40, y: 260 }, config: {} },\n ...analystNodes,\n { id: 'merge', kind: 'merge', title: 'Combine findings', phaseId: 'synthesize', position: { x: 700, y: 260 }, config: { mode: 'object' } },\n {\n id: 'synthesis',\n kind: 'agent',\n title: 'Create final answer',\n phaseId: 'synthesize',\n position: { x: 980, y: 260 },\n config: {\n prompt: `Goal: {{goal}}\\n\\nIndependent findings:\\n{{predecessors.merge}}\\n\\nSynthesize a decision-ready answer. Resolve conflicts, prioritize the most important points, and end with specific next actions.`,\n maxIterations: 12,\n },\n },\n { id: 'output', kind: 'output', title: 'Result', position: { x: 1280, y: 260 }, config: { title: 'Final result' } },\n ],\n edges: [\n ...analystNodes.map((node, index) => ({ id: `input-${index + 1}`, source: 'input', target: node.id })),\n ...analystNodes.map((node, index) => ({ id: `perspective-${index + 1}-merge`, source: node.id, target: 'merge' })),\n { id: 'merge-synthesis', source: 'merge', target: 'synthesis' },\n { id: 'synthesis-output', source: 'synthesis', target: 'output' },\n ],\n };\n}\n\nfunction perspectives(first: string, second: string, third: string): Array<{ title: string; focus: string }> {\n return [first, second, third].map((title) => ({ title, focus: title }));\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.js","names":[],"sources":["../../../../src/agent/workflow/catalog.ts"],"sourcesContent":["import { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, rmSync, statSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { randomUUID } from 'node:crypto';\nimport { join } from 'node:path';\n\nimport type { WorkflowDefinition, WorkflowDefinitionManifest, WorkflowGraph } from '../../workflows/domain/definition.js';\nimport { buildWorkflowDefinition } from '../../workflows/domain/definition-utils.js';\nimport { validateWorkflowGraph } from '../../workflows/domain/validation.js';\nimport { resolveStateDir } from '../../config/paths-state.js';\n\nimport { BUILTIN_WORKFLOWS } from './builtins/index.js';\n\nexport type WorkflowSource = 'user' | 'builtin';\n\nexport interface CatalogEntry {\n name: string;\n source: WorkflowSource;\n path: string | null;\n description: string;\n title: string;\n version: string;\n revision: number;\n whenToUse?: string;\n tags?: string[];\n estimatedAgents?: { min: number; max: number };\n}\n\nexport interface SaveWorkflowInput {\n name: string;\n graph: WorkflowGraph;\n manifest?: WorkflowDefinitionManifest;\n expectedRevision?: number;\n intent?: 'create' | 'update';\n}\n\nexport interface WorkflowRevisionSummary {\n revision: number;\n title: string;\n contentHash?: string;\n createdAtMs: number;\n}\n\nexport interface WorkflowCatalog {\n list(): CatalogEntry[];\n load(name: string): WorkflowDefinition;\n save(input: SaveWorkflowInput): { path: string; definition: WorkflowDefinition };\n listRevisions(name: string): WorkflowRevisionSummary[];\n loadRevision(name: string, revision: number): WorkflowDefinition;\n restore(name: string, revision: number, expectedRevision: number): { path: string; definition: WorkflowDefinition };\n remove(name: string): boolean;\n userDir: string;\n}\n\nconst NAME_RE = /^[a-z][a-z0-9_-]*$/;\n\nexport function createWorkflowCatalog(opts: { userDir?: string } = {}): WorkflowCatalog {\n const userDir = opts.userDir ?? defaultUserDir();\n\n const loadUser = (name: string): WorkflowDefinition | null => {\n const path = join(userDir, `${name}.json`);\n if (!existsSync(path)) return null;\n const parsed = JSON.parse(readFileSync(path, 'utf-8')) as WorkflowDefinition;\n assertStoredDefinition(parsed, name, path);\n return parsed;\n };\n\n const list = (): CatalogEntry[] => {\n const definitions = new Map<string, { definition: WorkflowDefinition; path: string | null }>();\n for (const definition of BUILTIN_WORKFLOWS) definitions.set(definition.name, { definition, path: null });\n for (const name of listUserNames(userDir)) {\n try {\n const definition = loadUser(name);\n if (definition) definitions.set(name, { definition, path: join(userDir, `${name}.json`) });\n } catch {\n // Invalid files are not addressable workflows.\n }\n }\n return [...definitions.values()]\n .map(({ definition, path }) => toCatalogEntry(definition, path))\n .sort((left, right) => left.name.localeCompare(right.name));\n };\n\n const load = (name: string): WorkflowDefinition => {\n requireValidName(name);\n const user = loadUser(name);\n if (user) return structuredClone(user);\n const builtin = BUILTIN_WORKFLOWS.find((definition) => definition.name === name);\n if (builtin) return structuredClone(builtin);\n throw new Error(`workflow not found: ${name}`);\n };\n\n const save = (input: SaveWorkflowInput): { path: string; definition: WorkflowDefinition } => {\n const name = input.name.trim();\n requireValidName(name);\n const validation = validateWorkflowGraph(input.graph);\n if (!validation.valid) throw new Error(validation.errors.map((issue) => issue.message).join(' '));\n const existing = loadUser(name);\n const builtin = BUILTIN_WORKFLOWS.find((definition) => definition.name === name);\n if (input.intent === 'create' && (existing || builtin)) {\n throw new WorkflowNameConflictError(name, existing?.revision ?? builtin?.revision ?? 0);\n }\n if (input.expectedRevision !== undefined && input.expectedRevision !== (existing?.revision ?? 0)) {\n throw new WorkflowRevisionConflictError(existing?.revision ?? 0);\n }\n const definition = buildWorkflowDefinition({\n name,\n source: 'user',\n graph: input.graph,\n manifest: input.manifest,\n revision: (existing?.revision ?? 0) + 1,\n createdAtMs: existing?.metadata.createdAtMs,\n });\n if (!existsSync(userDir)) mkdirSync(userDir, { recursive: true });\n const path = join(userDir, `${name}.json`);\n const revisionsDir = join(userDir, '.revisions', name);\n mkdirSync(revisionsDir, { recursive: true });\n writeJsonAtomic(join(revisionsDir, `${definition.revision}.json`), definition);\n writeJsonAtomic(path, definition);\n return { path, definition };\n };\n\n const listRevisions = (name: string): WorkflowRevisionSummary[] => {\n requireValidName(name);\n const dir = join(userDir, '.revisions', name);\n if (!existsSync(dir)) return [];\n return readdirSync(dir)\n .filter((file) => /^\\d+\\.json$/.test(file))\n .map((file): WorkflowRevisionSummary | null => {\n try {\n const definition = JSON.parse(readFileSync(join(dir, file), 'utf-8')) as WorkflowDefinition;\n assertStoredDefinition(definition, name, join(dir, file));\n return { revision: definition.revision, title: definition.title, contentHash: definition.contentHash, createdAtMs: definition.metadata.updatedAtMs };\n } catch {\n return null;\n }\n })\n .filter((item): item is WorkflowRevisionSummary => item !== null)\n .sort((left, right) => right.revision - left.revision);\n };\n\n const loadRevision = (name: string, revision: number): WorkflowDefinition => {\n requireValidName(name);\n if (!Number.isSafeInteger(revision) || revision < 1) throw new Error('invalid workflow revision');\n const path = join(userDir, '.revisions', name, `${revision}.json`);\n if (!existsSync(path)) throw new Error(`workflow revision not found: ${name}@${revision}`);\n const definition = JSON.parse(readFileSync(path, 'utf-8')) as WorkflowDefinition;\n assertStoredDefinition(definition, name, path);\n return structuredClone(definition);\n };\n\n const restore = (name: string, revision: number, expectedRevision: number) => {\n const selected = loadRevision(name, revision);\n return save({ name, graph: selected.graph, manifest: definitionToManifest(selected), expectedRevision });\n };\n\n const remove = (name: string): boolean => {\n requireValidName(name);\n const path = join(userDir, `${name}.json`);\n if (!existsSync(path)) return false;\n unlinkSync(path);\n const revisionsDir = join(userDir, '.revisions', name);\n if (existsSync(revisionsDir)) rmSync(revisionsDir, { recursive: true, force: true });\n return true;\n };\n\n return { list, load, save, listRevisions, loadRevision, restore, remove, userDir };\n}\n\nexport class WorkflowRevisionConflictError extends Error {\n constructor(readonly currentRevision: number) {\n super(`workflow revision conflict; current revision is ${currentRevision}`);\n this.name = 'WorkflowRevisionConflictError';\n }\n}\n\nexport class WorkflowNameConflictError extends Error {\n constructor(readonly workflowName: string, readonly currentRevision: number) {\n super(`workflow name already exists: ${workflowName}`);\n this.name = 'WorkflowNameConflictError';\n }\n}\n\nexport function defaultUserDir(): string {\n return join(resolveStateDir(), 'workflows');\n}\n\nfunction listUserNames(dir: string): string[] {\n try {\n if (!existsSync(dir) || !statSync(dir).isDirectory()) return [];\n return readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .map((file) => file.slice(0, -5))\n .filter((name) => NAME_RE.test(name));\n } catch {\n return [];\n }\n}\n\nfunction assertStoredDefinition(value: WorkflowDefinition, name: string, path: string): void {\n if (!value || typeof value !== 'object' || value.name !== name || value.metadata?.source !== 'user') {\n throw new Error(`invalid workflow definition: ${path}`);\n }\n const validation = validateWorkflowGraph(value.graph);\n if (!validation.valid) throw new Error(`invalid workflow graph: ${path}`);\n}\n\nfunction toCatalogEntry(definition: WorkflowDefinition, path: string | null): CatalogEntry {\n return {\n name: definition.name,\n source: definition.metadata.source,\n path,\n description: definition.description,\n title: definition.title,\n version: definition.version,\n revision: definition.revision,\n whenToUse: definition.metadata.whenToUse,\n tags: definition.metadata.tags,\n estimatedAgents: definition.metadata.estimatedAgents,\n };\n}\n\nfunction requireValidName(name: string): void {\n if (!NAME_RE.test(name)) throw new Error(`invalid workflow name \"${name}\"; use lowercase letters, numbers, underscores, or hyphens`);\n}\n\nfunction writeJsonAtomic(path: string, value: unknown): void {\n const temporaryPath = `${path}.${randomUUID()}.tmp`;\n writeFileSync(temporaryPath, `${JSON.stringify(value, null, 2)}\\n`, 'utf-8');\n renameSync(temporaryPath, path);\n}\n\nfunction definitionToManifest(definition: WorkflowDefinition): WorkflowDefinitionManifest {\n return {\n title: definition.title,\n description: definition.description,\n version: definition.version,\n inputSchema: definition.inputSchema,\n outputSchema: definition.outputSchema,\n defaults: definition.defaults,\n tags: definition.metadata.tags,\n whenToUse: definition.metadata.whenToUse,\n estimatedAgents: definition.metadata.estimatedAgents,\n examplePrompts: definition.metadata.examplePrompts,\n i18n: definition.metadata.i18n,\n permissions: definition.permissions,\n resources: definition.resources,\n connectors: definition.connectors,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"progress-broker.js","names":[],"sources":["../../../../src/agent/workflow/progress-broker.ts"],"sourcesContent":["/**\n * WorkflowProgressBroker — the single seam that turns mid-run `workflow`\n * snapshots into IM messages (Telegram today, more channels later).\n *\n * Architecture:\n *\n * pi-agent ──tool_execution_update──▶ AgentEventHandler / SessionEventBus\n * │\n * attachTo(handler) │\n * ▼\n * WorkflowProgressBroker\n * │\n * per-(sessionKey, toolCallId) state\n * │\n * ┌───────────────────┼───────────────────┐\n * ▼ ▼ ▼\n * Telegram cap Feishu cap WeChat cap\n *\n * Why broker + capability instead of \"each channel subscribes the bus\"?\n * - DRY snapshot aggregation and key-event detection.\n * - Per-channel throttling is enforced by the broker, so a slow / rate-limited\n * channel can't block a fast one.\n * - Adding a new channel = one capability + one register call. Broker code\n * never grows.\n */\n\nimport type { AgentEvent } from '@earendil-works/pi-agent-core';\n\nimport { createLogger } from '../../utils/logger.js';\nimport type { Config } from '../../config/schema.js';\n\nimport type {\n ChannelProgressCapability,\n WorkflowProgressMode,\n} from './channel-capability.js';\nimport { renderWorkflowText } from './snapshot.js';\nimport type { WorkflowAgentSnapshot, WorkflowSnapshot } from './types.js';\n\nconst log = createLogger('Agent:WorkflowProgress');\n\nconst WORKFLOW_TOOL_NAME = 'workflow';\nconst RENDER_MAX_AGENTS_PER_PHASE = 4;\nconst RENDER_MAX_LOGS = 2;\n\n/** Per-channel resolved settings after applying config overrides on capability defaults. */\ninterface ChannelResolvedSettings {\n enabled: boolean;\n throttleMs: number;\n mode: WorkflowProgressMode;\n}\n\n/** Per-(sessionKey, toolCallId) progress state. */\ninterface RunState {\n /** Latest snapshot seen for this run. Always overwritten on update. */\n snapshot: WorkflowSnapshot;\n /** Previous snapshot used to detect \"key events\" (phase change, new errors). */\n prevSnapshot?: WorkflowSnapshot;\n /** Per-channel last-send bookkeeping. */\n perChannel: Map<string, ChannelRunState>;\n}\n\ninterface ChannelRunState {\n /** Server timestamp of the last successful postProgress. */\n lastSentAt: number;\n /** Returned messageId of the last successful postProgress — drives edit mode. */\n lastMessageId?: string;\n /** Pending timer id (Node `setTimeout`) when a throttled flush is scheduled. */\n pendingTimer?: ReturnType<typeof setTimeout>;\n /** Inflight `postProgress` promise; we serialise per-(state, channel) to avoid race. */\n inflight?: Promise<void>;\n}\n\nexport interface BrokerListenerHandle {\n /** Detach broker from the session bus and clear all in-flight state. */\n dispose(): void;\n}\n\n/**\n * Tiny façade onto the AgentEventHandler. We don't import the concrete class to\n * keep this module test-friendly — a stub listener pump is fine for unit tests.\n */\nexport interface SessionBusLike {\n registerListener(\n type: AgentEvent['type'] | 'all',\n listener: (event: AgentEvent, context: { sessionKey: string }) => void,\n ): () => void;\n}\n\nexport class WorkflowProgressBroker {\n private subscribers: ChannelProgressCapability[] = [];\n private states = new Map<string, RunState>();\n /** Now() factory — overridable in tests for deterministic time. */\n private readonly now: () => number;\n /** Cached resolved settings per (channelId), invalidated on registration. */\n private resolved = new Map<string, ChannelResolvedSettings>();\n\n constructor(\n private readonly opts: {\n getConfig?: () => Config | undefined;\n now?: () => number;\n } = {},\n ) {\n this.now = opts.now ?? (() => Date.now());\n }\n\n // ── Registration ────────────────────────────────────────────────────────────\n\n registerChannel(cap: ChannelProgressCapability): () => void {\n if (this.subscribers.some((s) => s.channelId === cap.channelId)) {\n log.warn({ channelId: cap.channelId }, 'channel capability already registered; replacing');\n this.subscribers = this.subscribers.filter((s) => s.channelId !== cap.channelId);\n }\n this.subscribers.push(cap);\n this.resolved.delete(cap.channelId);\n return () => {\n this.subscribers = this.subscribers.filter((s) => s !== cap);\n this.resolved.delete(cap.channelId);\n };\n }\n\n attachTo(bus: SessionBusLike): BrokerListenerHandle {\n const offUpdate = bus.registerListener('tool_execution_update', (event, ctx) => {\n const e = event as Extract<AgentEvent, { type: 'tool_execution_update' }>;\n if (e.toolName !== WORKFLOW_TOOL_NAME) return;\n const snap = extractWorkflowSnapshot(e.partialResult);\n if (!snap) return;\n this.onUpdate(ctx.sessionKey, e.toolCallId, snap);\n });\n\n const offEnd = bus.registerListener('tool_execution_end', (event, ctx) => {\n const e = event as Extract<AgentEvent, { type: 'tool_execution_end' }>;\n if (e.toolName !== WORKFLOW_TOOL_NAME) return;\n // tool_end ships the final envelope in `result`; reach in for the\n // authoritative snapshot (durationMs / result / final counts).\n const snap = extractWorkflowSnapshot(e.result, { fromResultEnvelope: true });\n this.onEnd(ctx.sessionKey, e.toolCallId, snap);\n });\n\n return {\n dispose: () => {\n offUpdate();\n offEnd();\n this.disposeAllPending();\n },\n };\n }\n\n // ── Core state machine ──────────────────────────────────────────────────────\n\n /** Visible for tests — direct entry path bypassing the SessionBus glue. */\n onUpdate(sessionKey: string, toolCallId: string, snapshot: WorkflowSnapshot): void {\n const key = stateKey(sessionKey, toolCallId);\n const state = this.getOrCreateState(key, snapshot);\n state.prevSnapshot = state.snapshot;\n state.snapshot = snapshot;\n\n const isKey = isKeyEvent(state.prevSnapshot, snapshot);\n for (const cap of this.subscribers) {\n this.dispatchToChannel(state, sessionKey, cap, { isFinal: false, isKey });\n }\n }\n\n /** Visible for tests — direct entry path bypassing the SessionBus glue. */\n onEnd(sessionKey: string, toolCallId: string, snapshot: WorkflowSnapshot | null): void {\n const key = stateKey(sessionKey, toolCallId);\n const state = this.states.get(key);\n if (!state) return;\n if (snapshot) state.snapshot = snapshot;\n\n for (const cap of this.subscribers) {\n // Always flush the final message — bypass throttle and any pending timer.\n this.cancelPending(state, cap.channelId);\n this.dispatchToChannel(state, sessionKey, cap, { isFinal: true, isKey: true });\n }\n // State is GC'd lazily after a small grace period so any straggler\n // `update` event arriving after `end` is silently dropped (instead of\n // resurrecting the run).\n setTimeout(() => this.states.delete(key), 2_000);\n }\n\n // ── Dispatch + throttle ─────────────────────────────────────────────────────\n\n private dispatchToChannel(\n state: RunState,\n sessionKey: string,\n cap: ChannelProgressCapability,\n flags: { isFinal: boolean; isKey: boolean },\n ): void {\n const cfg = this.resolveChannelSettings(cap);\n if (!cfg.enabled) return;\n if (cfg.mode === 'final-only' && !flags.isFinal) return;\n\n const chState = this.getOrCreateChannelState(state, cap.channelId);\n\n // Key events and the final message bypass throttle.\n if (flags.isFinal || flags.isKey) {\n this.cancelPending(state, cap.channelId);\n void this.sendNow(state, sessionKey, cap, cfg, flags.isFinal);\n return;\n }\n\n const elapsed = this.now() - chState.lastSentAt;\n const wait = Math.max(0, cfg.throttleMs - elapsed);\n if (wait === 0) {\n void this.sendNow(state, sessionKey, cap, cfg, false);\n return;\n }\n if (chState.pendingTimer) return; // already scheduled; latest snapshot will be picked up\n chState.pendingTimer = setTimeout(() => {\n chState.pendingTimer = undefined;\n void this.sendNow(state, sessionKey, cap, cfg, false);\n }, wait);\n }\n\n private async sendNow(\n state: RunState,\n sessionKey: string,\n cap: ChannelProgressCapability,\n cfg: ChannelResolvedSettings,\n isFinal: boolean,\n ): Promise<void> {\n const chState = this.getOrCreateChannelState(state, cap.channelId);\n // Serialise per-channel sends so a slow editMessage call doesn't get\n // overtaken by a faster one and leave the bubble out of order.\n if (chState.inflight) await chState.inflight.catch(() => undefined);\n\n const text = renderWorkflowText(state.snapshot, isFinal, {\n maxAgentsPerPhase: RENDER_MAX_AGENTS_PER_PHASE,\n maxLogs: RENDER_MAX_LOGS,\n showResultPreviews: isFinal,\n });\n\n const previousMessageId = cfg.mode === 'edit' ? chState.lastMessageId : undefined;\n const task = cap\n .postProgress({ sessionKey, text, previousMessageId, isFinal, mode: cfg.mode })\n .then((r) => {\n chState.lastMessageId = r.messageId;\n chState.lastSentAt = this.now();\n })\n .catch((err) => {\n const msg = err instanceof Error ? err.message : String(err);\n log.warn(\n { err, errorMessage: msg, channelId: cap.channelId, sessionKey },\n `workflow progress postProgress failed: ${msg}`,\n );\n })\n .finally(() => {\n chState.inflight = undefined;\n });\n\n chState.inflight = task;\n await task;\n }\n\n private cancelPending(state: RunState, channelId: string): void {\n const chState = state.perChannel.get(channelId);\n if (chState?.pendingTimer) {\n clearTimeout(chState.pendingTimer);\n chState.pendingTimer = undefined;\n }\n }\n\n private disposeAllPending(): void {\n for (const state of this.states.values()) {\n for (const ch of state.perChannel.values()) {\n if (ch.pendingTimer) clearTimeout(ch.pendingTimer);\n }\n }\n this.states.clear();\n }\n\n // ── State helpers ───────────────────────────────────────────────────────────\n\n private getOrCreateState(key: string, snapshot: WorkflowSnapshot): RunState {\n let state = this.states.get(key);\n if (!state) {\n state = { snapshot, perChannel: new Map() };\n this.states.set(key, state);\n }\n return state;\n }\n\n private getOrCreateChannelState(state: RunState, channelId: string): ChannelRunState {\n let ch = state.perChannel.get(channelId);\n if (!ch) {\n ch = { lastSentAt: 0 };\n state.perChannel.set(channelId, ch);\n }\n return ch;\n }\n\n /** Resolved (enabled / throttleMs / mode) for a channel, with config overrides. */\n private resolveChannelSettings(cap: ChannelProgressCapability): ChannelResolvedSettings {\n const cached = this.resolved.get(cap.channelId);\n if (cached) return cached;\n const override = readChannelConfig(this.opts.getConfig?.(), cap.channelId);\n const resolved: ChannelResolvedSettings = {\n enabled: override?.enabled ?? true,\n throttleMs: override?.throttleMs ?? cap.defaultThrottleMs,\n mode: override?.mode ?? cap.defaultMode,\n };\n this.resolved.set(cap.channelId, resolved);\n return resolved;\n }\n\n /** Drop any cached config so the next dispatch re-reads. Call after config reload. */\n invalidateConfigCache(): void {\n this.resolved.clear();\n }\n\n // ── Test introspection ──────────────────────────────────────────────────────\n\n /** @internal — for tests only. */\n _stateCount(): number {\n return this.states.size;\n }\n}\n\n// ── Singleton ───────────────────────────────────────────────────────────────\n\nlet singleton: WorkflowProgressBroker | null = null;\n\n/**\n * Process-wide broker singleton. Channels register against this one; the\n * service wires it to the session bus during startup.\n */\nexport function getWorkflowProgressBroker(): WorkflowProgressBroker {\n if (!singleton) singleton = new WorkflowProgressBroker();\n return singleton;\n}\n\n/** Test-only — reset the singleton between cases. */\nexport function _resetWorkflowProgressBrokerForTests(): void {\n singleton = null;\n}\n\n// ── Pure helpers ────────────────────────────────────────────────────────────\n\nfunction stateKey(sessionKey: string, toolCallId: string | undefined): string {\n return `${sessionKey}\u0001${toolCallId ?? ''}`;\n}\n\n/**\n * Compare two snapshots and decide whether the new one is \"key\" — i.e. worth\n * bypassing the per-channel throttle. Anything visible to the user as a\n * progress milestone qualifies; counts ticking by alone do not.\n */\nfunction isKeyEvent(prev: WorkflowSnapshot | undefined, next: WorkflowSnapshot): boolean {\n if (!prev) return true; // first update of the run\n if (prev.currentPhase !== next.currentPhase) return true;\n if (next.errorCount > prev.errorCount) return true;\n if (next.skippedCount > prev.skippedCount) return true;\n // New phase row in the rollup (declared via `phase(...)` mid-run)\n if (prev.phases.length !== next.phases.length) return true;\n if (hasNewFailedAgent(prev.agents, next.agents)) return true;\n return false;\n}\n\nfunction hasNewFailedAgent(\n prev: WorkflowAgentSnapshot[],\n next: WorkflowAgentSnapshot[],\n): boolean {\n const prevBad = new Set(\n prev.filter((a) => a.status === 'error' || a.status === 'skipped').map((a) => a.id),\n );\n for (const a of next) {\n if ((a.status === 'error' || a.status === 'skipped') && !prevBad.has(a.id)) return true;\n }\n return false;\n}\n\n/**\n * Pull a {@link WorkflowSnapshot} out of an AgentToolResult-shaped value.\n * Returns null when the payload is not snapshot-shaped (text-only updates,\n * non-workflow tools, etc.).\n *\n * `fromResultEnvelope = true` (used for `tool_end.result`) tolerates the\n * `{ content, details }` wrapper.\n */\nfunction extractWorkflowSnapshot(\n payload: unknown,\n opts: { fromResultEnvelope?: boolean } = {},\n): WorkflowSnapshot | null {\n if (!payload || typeof payload !== 'object') return null;\n const rec = payload as Record<string, unknown>;\n if (opts.fromResultEnvelope) {\n const details = rec.details;\n if (details && typeof details === 'object') return coerce(details);\n return null;\n }\n if ('details' in rec) {\n const details = rec.details;\n if (details && typeof details === 'object') return coerce(details);\n return null;\n }\n return coerce(rec);\n}\n\nfunction coerce(value: unknown): WorkflowSnapshot | null {\n if (!value || typeof value !== 'object') return null;\n const rec = value as Record<string, unknown>;\n if (typeof rec.name !== 'string') return null;\n if (!Array.isArray(rec.agents)) return null;\n return value as WorkflowSnapshot;\n}\n\nfunction readChannelConfig(\n config: Config | undefined,\n channelId: string,\n): { enabled?: boolean; throttleMs?: number; mode?: WorkflowProgressMode } | undefined {\n const channels = config?.channels as Record<string, unknown> | undefined;\n if (!channels) return undefined;\n const cfg = channels[channelId];\n if (!cfg || typeof cfg !== 'object') return undefined;\n const wf = (cfg as { workflowProgress?: unknown }).workflowProgress;\n if (!wf || typeof wf !== 'object') return undefined;\n return wf as { enabled?: boolean; throttleMs?: number; mode?: WorkflowProgressMode };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot-empty.js","names":[],"sources":["../../../../src/agent/workflow/snapshot-empty.ts"],"sourcesContent":["import type { WorkflowSnapshot } from './types.js';\n\nexport function emptySnapshotFor(\n name: string,\n description?: string,\n phaseTitles?: string[],\n): WorkflowSnapshot {\n return {\n name,\n description,\n phases: phaseTitles ? [...phaseTitles] : [],\n logs: [],\n agents: [],\n agentCount: 0,\n runningCount: 0,\n doneCount: 0,\n errorCount: 0,\n skippedCount: 0,\n };\n}\n"],"mappings":";AAEA,SAAgB,iBACd,MACA,aACA,aACkB;AAClB,QAAO;EACL;EACA;EACA,QAAQ,cAAc,CAAC,GAAG,YAAY,GAAG,EAAE;EAC3C,MAAM,EAAE;EACR,QAAQ,EAAE;EACV,YAAY;EACZ,cAAc;EACd,WAAW;EACX,YAAY;EACZ,cAAc;EACf"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"snapshot.js","names":[],"sources":["../../../../src/agent/workflow/snapshot.ts"],"sourcesContent":["/**\n * Workflow progress snapshot model + text renderers.\n *\n * The runtime emits per-event callbacks (`onPhase`, `onAgentStart`, `onAgentEnd`,\n * `onLog`). The workflow tool wraps those callbacks to mutate a snapshot and push\n * a text rendering through `onUpdate` — keeping TUI / Gateway / IM consumers in\n * lock-step from a single source of truth.\n */\n\nimport type {\n WorkflowAgentSnapshot,\n WorkflowAgentStatus,\n WorkflowSnapshotDefinition,\n WorkflowSnapshot,\n} from './types.js';\nimport { emptySnapshotFor } from './snapshot-empty.js';\n\nexport function createWorkflowSnapshot(definition: WorkflowSnapshotDefinition): WorkflowSnapshot {\n return emptySnapshotFor(\n definition.name,\n definition.description,\n definition.phases?.map((phase) => phase.title),\n );\n}\n\nexport function recomputeCounts(snapshot: WorkflowSnapshot): void {\n let running = 0;\n let done = 0;\n let error = 0;\n let skipped = 0;\n for (const agent of snapshot.agents) {\n switch (agent.status) {\n case 'running':\n running++;\n break;\n case 'done':\n done++;\n break;\n case 'error':\n error++;\n break;\n case 'skipped':\n skipped++;\n break;\n }\n }\n snapshot.agentCount = snapshot.agents.length;\n snapshot.runningCount = running;\n snapshot.doneCount = done;\n snapshot.errorCount = error;\n snapshot.skippedCount = skipped;\n}\n\nexport interface RenderOptions {\n maxAgentsPerPhase?: number;\n maxLogs?: number;\n showResultPreviews?: boolean;\n}\n\nexport type WorkflowPanelStatus =\n | 'queued'\n | 'running'\n | 'succeeded'\n | 'failed'\n | 'cancelled'\n | 'timeout'\n | string;\n\nexport interface WorkflowPanelOptions {\n status?: WorkflowPanelStatus;\n maxActiveAgents?: number;\n maxRecentAgents?: number;\n maxErrors?: number;\n nowMs?: number;\n}\n\nexport function renderWorkflowText(\n snapshot: WorkflowSnapshot,\n completed = false,\n options: RenderOptions = {},\n): string {\n const maxAgentsPerPhase = options.maxAgentsPerPhase ?? 6;\n const maxLogs = options.maxLogs ?? 2;\n const showPreviews = options.showResultPreviews ?? false;\n\n const state = stateSuffix(snapshot);\n const header = completed\n ? `◆ workflow ✓ ${snapshot.name} (${snapshot.doneCount}/${snapshot.agentCount} done${state})`\n : `◆ workflow: ${snapshot.name} (${snapshot.doneCount}/${snapshot.agentCount} done${state})`;\n const lines = [header];\n\n const phaseNames = uniqueOrdered([\n ...snapshot.phases,\n ...(snapshot.currentPhase ? [snapshot.currentPhase] : []),\n ...snapshot.agents.map((a) => a.phase).filter((p): p is string => Boolean(p)),\n ]);\n const rendered = new Set<WorkflowAgentSnapshot>();\n\n for (const phase of phaseNames) {\n const agents = snapshot.agents.filter((a) => a.phase === phase);\n if (agents.length === 0 && snapshot.currentPhase !== phase) continue;\n for (const a of agents) rendered.add(a);\n\n const counts = countAgents(agents);\n const completeHere = agents.length > 0 && counts.done + counts.error + counts.skipped === agents.length;\n const marker =\n counts.running > 0 || (!completeHere && snapshot.currentPhase === phase)\n ? '▶'\n : completeHere\n ? '✓'\n : ' ';\n\n const tail =\n (counts.running ? ` · ${counts.running} running` : '') +\n (counts.error ? ` · ${counts.error} errors` : '') +\n (counts.skipped ? ` · ${counts.skipped} skipped` : '');\n lines.push(` ${marker} ${phase} ${counts.done}/${agents.length}${tail}`);\n\n const visible = agents.slice(-maxAgentsPerPhase);\n for (const agent of visible) {\n const previewText = showPreviews && agent.resultPreview ? ` — ${agent.resultPreview}` : '';\n lines.push(\n ` #${agent.id} ${statusIcon(agent.status)} ${shorten(agent.label, 56)}${previewText}`,\n );\n }\n if (agents.length > visible.length) {\n lines.push(` … ${agents.length - visible.length} earlier agents`);\n }\n }\n\n const unphased = snapshot.agents.filter((a) => !rendered.has(a));\n if (unphased.length > 0) {\n lines.push(' unphased');\n for (const agent of unphased.slice(-maxAgentsPerPhase)) {\n const previewText = showPreviews && agent.resultPreview ? ` — ${agent.resultPreview}` : '';\n lines.push(\n ` #${agent.id} ${statusIcon(agent.status)} ${shorten(agent.label, 56)}${previewText}`,\n );\n }\n }\n\n const visibleLogs = snapshot.logs.slice(-maxLogs);\n if (visibleLogs.length > 0) {\n lines.push('');\n for (const log of visibleLogs) {\n lines.push(` log: ${shorten(log, 80)}`);\n }\n }\n return lines.join('\\n');\n}\n\nexport function previewValue(value: unknown, max = 80): string {\n if (value === null || value === undefined) return '';\n const text = typeof value === 'string' ? value : safeStringify(value);\n if (!text) return '';\n return text.length > max ? `${text.slice(0, max - 1)}…` : text;\n}\n\nexport function renderWorkflowPanel(\n snapshot: WorkflowSnapshot,\n options: WorkflowPanelOptions = {},\n): string {\n const status = options.status ?? inferPanelStatus(snapshot);\n const activeAgents = snapshot.agents.filter((agent) => agent.status === 'running');\n const queuedAgents = snapshot.agents.filter((agent) => agent.status === 'queued');\n const activeLimit = options.maxActiveAgents ?? 4;\n const recentLimit = options.maxRecentAgents ?? 4;\n const durationText = formatDuration(resolveElapsedMs(snapshot, options.nowMs));\n const counts = formatRunCounts(snapshot);\n\n const lines = [\n `◆ ${snapshot.name} ${statusText(status)} ${counts}${durationText ? ` ${durationText}` : ''}`,\n ];\n\n const phaseLines = renderPanelPhaseLines(snapshot);\n if (phaseLines.length > 0) {\n lines.push('', 'Phase', ...phaseLines);\n }\n\n const visibleActive = activeAgents.length > 0 ? activeAgents : queuedAgents;\n if (visibleActive.length > 0) {\n lines.push('', activeAgents.length > 0 ? 'Active' : 'Queued');\n for (const agent of visibleActive.slice(0, activeLimit)) {\n lines.push(...renderActiveAgentLines(agent));\n }\n if (visibleActive.length > activeLimit) {\n lines.push(` … ${visibleActive.length - activeLimit} more`);\n }\n }\n\n const recent = recentCompletedAgents(snapshot).slice(0, recentLimit);\n if (recent.length > 0) {\n lines.push('', 'Recent');\n for (const agent of recent) {\n lines.push(renderRecentAgentLine(agent));\n }\n }\n\n const errors = snapshot.agents.filter((agent) => agent.status === 'error' || agent.error);\n if (errors.length > 0) {\n lines.push('', 'Errors');\n for (const agent of errors.slice(0, options.maxErrors ?? 3)) {\n lines.push(\n ` ✗ #${agent.id} ${shorten(agent.label, 28)}${\n agent.error ? `: ${shorten(agent.error, 96)}` : ''\n }`,\n );\n }\n if (errors.length > (options.maxErrors ?? 3)) {\n lines.push(` … ${errors.length - (options.maxErrors ?? 3)} more`);\n }\n }\n\n return lines.join('\\n');\n}\n\nexport function renderWorkflowFinalSummary(\n snapshot: WorkflowSnapshot,\n options: WorkflowPanelOptions = {},\n): string {\n const status = options.status ?? inferPanelStatus(snapshot);\n const durationText = formatDuration(resolveElapsedMs(snapshot, options.nowMs));\n const lines = [\n `◆ ${snapshot.name} ${statusText(status)} ${formatRunCounts(snapshot)}${durationText ? ` ${durationText}` : ''}`,\n ];\n\n const result = previewValue(snapshot.result, 280);\n if (result) {\n lines.push('', 'Result', ` ${result}`);\n } else {\n const fallback = recentCompletedAgents(snapshot)\n .map((agent) => agent.resultPreview)\n .find((value): value is string => Boolean(value));\n if (fallback) {\n lines.push('', 'Result', ` ${shorten(fallback, 280)}`);\n }\n }\n\n const errors = snapshot.agents.filter((agent) => agent.status === 'error' || agent.error);\n if (errors.length > 0) {\n lines.push('', 'Errors');\n for (const agent of errors.slice(0, options.maxErrors ?? 5)) {\n lines.push(\n ` ✗ #${agent.id} ${shorten(agent.label, 32)}${\n agent.error ? `: ${shorten(agent.error, 120)}` : ''\n }`,\n );\n }\n }\n\n const recent = recentCompletedAgents(snapshot).slice(0, options.maxRecentAgents ?? 5);\n if (recent.length > 0) {\n lines.push('', 'Completed');\n for (const agent of recent) {\n lines.push(renderRecentAgentLine(agent));\n }\n }\n\n return lines.join('\\n');\n}\n\n// ---------------------------------------------------------------------------\n\nfunction countAgents(agents: WorkflowAgentSnapshot[]) {\n let done = 0;\n let running = 0;\n let error = 0;\n let skipped = 0;\n for (const a of agents) {\n if (a.status === 'done') done++;\n else if (a.status === 'running') running++;\n else if (a.status === 'error') error++;\n else if (a.status === 'skipped') skipped++;\n }\n return { done, running, error, skipped };\n}\n\nfunction statusIcon(status: WorkflowAgentStatus): string {\n switch (status) {\n case 'queued':\n return '○';\n case 'running':\n return '●';\n case 'done':\n return '✓';\n case 'error':\n return '✗';\n case 'skipped':\n return '-';\n }\n}\n\nfunction statusText(status: WorkflowPanelStatus): string {\n switch (status) {\n case 'queued':\n return 'queued';\n case 'running':\n return 'running';\n case 'succeeded':\n return '✓ completed';\n case 'failed':\n return '✗ failed';\n case 'cancelled':\n return 'cancelled';\n case 'timeout':\n return 'timeout';\n default:\n return String(status || 'running');\n }\n}\n\nfunction inferPanelStatus(snapshot: WorkflowSnapshot): WorkflowPanelStatus {\n if (snapshot.errorCount > 0) return 'failed';\n if (snapshot.runningCount > 0) return 'running';\n if (snapshot.doneCount + snapshot.skippedCount >= snapshot.agentCount && snapshot.agentCount > 0) {\n return 'succeeded';\n }\n return 'queued';\n}\n\nfunction formatRunCounts(snapshot: WorkflowSnapshot): string {\n const parts = [`${snapshot.doneCount}/${snapshot.agentCount} done`];\n if (snapshot.runningCount > 0) parts.push(`${snapshot.runningCount} running`);\n if (snapshot.errorCount > 0) parts.push(`${snapshot.errorCount} errors`);\n if (snapshot.skippedCount > 0) parts.push(`${snapshot.skippedCount} skipped`);\n return parts.join(' · ');\n}\n\nfunction resolveElapsedMs(snapshot: WorkflowSnapshot, nowMs = Date.now()): number | undefined {\n if (snapshot.durationMs != null) return snapshot.durationMs;\n const starts = snapshot.agents\n .map((agent) => agent.startedAtMs)\n .filter((value): value is number => typeof value === 'number' && Number.isFinite(value));\n if (starts.length === 0) return undefined;\n return Math.max(0, nowMs - Math.min(...starts));\n}\n\nfunction formatDuration(ms: number | undefined): string {\n if (ms == null || !Number.isFinite(ms)) return '';\n const totalSeconds = Math.max(0, Math.floor(ms / 1000));\n const minutes = Math.floor(totalSeconds / 60);\n const seconds = totalSeconds % 60;\n if (minutes < 60) return `${minutes}:${String(seconds).padStart(2, '0')}`;\n const hours = Math.floor(minutes / 60);\n const restMinutes = minutes % 60;\n return `${hours}:${String(restMinutes).padStart(2, '0')}:${String(seconds).padStart(2, '0')}`;\n}\n\nfunction renderPanelPhaseLines(snapshot: WorkflowSnapshot): string[] {\n const phaseNames = uniqueOrdered([\n ...snapshot.phases,\n ...(snapshot.currentPhase ? [snapshot.currentPhase] : []),\n ...snapshot.agents.map((a) => a.phase).filter((p): p is string => Boolean(p)),\n ]);\n const out: string[] = [];\n for (const phase of phaseNames) {\n const agents = snapshot.agents.filter((agent) => agent.phase === phase);\n const counts = countAgents(agents);\n const complete = agents.length > 0 && counts.done + counts.error + counts.skipped === agents.length;\n const marker =\n counts.running > 0 || (!complete && snapshot.currentPhase === phase)\n ? '▶'\n : complete\n ? '✓'\n : '○';\n const tail = [\n counts.running > 0 ? `${counts.running} running` : '',\n counts.error > 0 ? `${counts.error} errors` : '',\n counts.skipped > 0 ? `${counts.skipped} skipped` : '',\n ].filter(Boolean).join(' · ');\n out.push(` ${marker} ${phase} ${counts.done}/${agents.length}${tail ? ` · ${tail}` : ''}`);\n }\n return out;\n}\n\nfunction renderActiveAgentLines(agent: WorkflowAgentSnapshot): string[] {\n const step = agent.currentStep || latestStepSummary(agent);\n const iteration =\n agent.iteration != null && agent.maxIterations != null\n ? ` [${agent.iteration}/${agent.maxIterations}]`\n : '';\n const head = ` ${agent.status === 'running' ? '●' : '○'} #${agent.id} ${shorten(agent.label, 32)}${iteration}`;\n return step ? [head, ` ${shorten(step, 96)}`] : [head];\n}\n\nfunction renderRecentAgentLine(agent: WorkflowAgentSnapshot): string {\n const preview = agent.error || agent.resultPreview || latestStepResult(agent);\n return ` ${statusIcon(agent.status)} #${agent.id} ${shorten(agent.label, 32)}${\n preview ? ` — ${shorten(preview, 96)}` : ''\n }`;\n}\n\nfunction recentCompletedAgents(snapshot: WorkflowSnapshot): WorkflowAgentSnapshot[] {\n return [...snapshot.agents]\n .filter((agent) => agent.status === 'done' || agent.status === 'error' || agent.status === 'skipped')\n .reverse();\n}\n\nfunction latestStepSummary(agent: WorkflowAgentSnapshot): string {\n const step =\n [...(agent.steps ?? [])].reverse().find((entry) => entry.status === 'running') ??\n agent.steps?.[agent.steps.length - 1];\n if (!step) return '';\n return step.detail ? `${step.label}: ${step.detail}` : step.label;\n}\n\nfunction latestStepResult(agent: WorkflowAgentSnapshot): string {\n const step = [...(agent.steps ?? [])].reverse().find((entry) => entry.resultPreview || entry.error);\n return step?.error || step?.resultPreview || '';\n}\n\nfunction stateSuffix(snapshot: WorkflowSnapshot): string {\n if (snapshot.errorCount > 0) return `, ${snapshot.errorCount} errors`;\n if (snapshot.skippedCount > 0) return `, ${snapshot.skippedCount} skipped`;\n if (snapshot.runningCount > 0) return `, ${snapshot.runningCount} running`;\n return '';\n}\n\nfunction uniqueOrdered(values: string[]): string[] {\n const seen = new Set<string>();\n const out: string[] = [];\n for (const v of values) {\n if (!seen.has(v)) {\n seen.add(v);\n out.push(v);\n }\n }\n return out;\n}\n\nfunction shorten(value: string, max: number): string {\n const text = value.replace(/\\s+/g, ' ').trim();\n return text.length > max ? `${text.slice(0, max - 1)}…` : text;\n}\n\nfunction safeStringify(value: unknown): string {\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"step-labels.js","names":[],"sources":["../../../../src/agent/workflow/step-labels.ts"],"sourcesContent":["/**\n * Human-readable labels for workflow subagent tool steps (server-side snapshot).\n * Mirrors the web `tool-friendly-title` rules so IM/TUI and gateway stay aligned.\n */\n\nconst MAX_DETAIL_LEN = 120;\n\nexport function workflowStepLabel(\n toolName: string,\n args: Record<string, unknown>,\n): { label: string; detail?: string } {\n const n = toolName.toLowerCase().replace(/-/g, '_').trim();\n let label = toolName.trim() || 'tool';\n if (n === 'exec_command') label = 'Run command';\n else if (n === 'update_plan') label = 'Update plan';\n else if (n === 'list_dir' || n === 'ls') label = 'List directory';\n else if (n === 'write_file') label = 'Write file';\n else if (n === 'apply_patch') label = 'Edit file';\n else if (n === 'web_fetch') label = 'Fetch URL';\n else if (n === 'open_url') label = 'Open URL';\n else if (n === 'grep' || n === 'rg' || n === 'file_grep') label = 'Search files';\n else if (n === 'web_search' || n === 'brave_search' || n.includes('search')) label = 'Search web';\n else if (n === 'read_file' || n.includes('read_file') || n.includes('file_read')) label = 'Read file';\n else if (n === 'delegate_task' || n === 'workflow') label = toolName;\n\n const detail = extractStepDetail(n, args);\n return detail ? { label, detail } : { label };\n}\n\nfunction extractStepDetail(toolKey: string, args: Record<string, unknown>): string | undefined {\n const pathKeys = ['path', 'file_path', 'filePath', 'target_file', 'targetFile'];\n for (const key of pathKeys) {\n const v = args[key];\n if (typeof v === 'string' && v.trim()) return truncate(v.trim());\n }\n if (toolKey === 'exec_command') {\n const command = typeof args.cmd === 'string' ? args.cmd : typeof args.command === 'string' ? args.command : '';\n if (command.trim()) return truncate(command.trim());\n }\n if (\n (toolKey.includes('search') || toolKey === 'grep' || toolKey === 'rg' || toolKey === 'file_grep') &&\n typeof args.query === 'string' &&\n args.query.trim()\n ) {\n return truncate(args.query.trim());\n }\n if (typeof args.url === 'string' && args.url.trim()) return truncate(args.url.trim());\n return undefined;\n}\n\nfunction truncate(text: string): string {\n if (text.length <= MAX_DETAIL_LEN) return text;\n return `${text.slice(0, MAX_DETAIL_LEN - 1)}…`;\n}\n"],"mappings":";;;;;AAKA,MAAM,iBAAiB;AAEvB,SAAgB,kBACd,UACA,MACoC;CACpC,MAAM,IAAI,SAAS,aAAa,CAAC,QAAQ,MAAM,IAAI,CAAC,MAAM;CAC1D,IAAI,QAAQ,SAAS,MAAM,IAAI;AAC/B,KAAI,MAAM,eAAgB,SAAQ;UACzB,MAAM,cAAe,SAAQ;UAC7B,MAAM,cAAc,MAAM,KAAM,SAAQ;UACxC,MAAM,aAAc,SAAQ;UAC5B,MAAM,cAAe,SAAQ;UAC7B,MAAM,YAAa,SAAQ;UAC3B,MAAM,WAAY,SAAQ;UAC1B,MAAM,UAAU,MAAM,QAAQ,MAAM,YAAa,SAAQ;UACzD,MAAM,gBAAgB,MAAM,kBAAkB,EAAE,SAAS,SAAS,CAAE,SAAQ;UAC5E,MAAM,eAAe,EAAE,SAAS,YAAY,IAAI,EAAE,SAAS,YAAY,CAAE,SAAQ;UACjF,MAAM,mBAAmB,MAAM,WAAY,SAAQ;CAE5D,MAAM,SAAS,kBAAkB,GAAG,KAAK;AACzC,QAAO,SAAS;EAAE;EAAO;EAAQ,GAAG,EAAE,OAAO;;AAG/C,SAAS,kBAAkB,SAAiB,MAAmD;AAE7F,MAAK,MAAM,OAAO;EADA;EAAQ;EAAa;EAAY;EAAe;EACxC,EAAE;EAC1B,MAAM,IAAI,KAAK;AACf,MAAI,OAAO,MAAM,YAAY,EAAE,MAAM,CAAE,QAAO,SAAS,EAAE,MAAM,CAAC;;AAElE,KAAI,YAAY,gBAAgB;EAC9B,MAAM,UAAU,OAAO,KAAK,QAAQ,WAAW,KAAK,MAAM,OAAO,KAAK,YAAY,WAAW,KAAK,UAAU;AAC5G,MAAI,QAAQ,MAAM,CAAE,QAAO,SAAS,QAAQ,MAAM,CAAC;;AAErD,MACG,QAAQ,SAAS,SAAS,IAAI,YAAY,UAAU,YAAY,QAAQ,YAAY,gBACrF,OAAO,KAAK,UAAU,YACtB,KAAK,MAAM,MAAM,CAEjB,QAAO,SAAS,KAAK,MAAM,MAAM,CAAC;AAEpC,KAAI,OAAO,KAAK,QAAQ,YAAY,KAAK,IAAI,MAAM,CAAE,QAAO,SAAS,KAAK,IAAI,MAAM,CAAC;;AAIvF,SAAS,SAAS,MAAsB;AACtC,KAAI,KAAK,UAAU,eAAgB,QAAO;AAC1C,QAAO,GAAG,KAAK,MAAM,GAAG,iBAAiB,EAAE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"structured-output-tool.js","names":[],"sources":["../../../../src/agent/workflow/structured-output-tool.ts"],"sourcesContent":["/**\n * `structured_output` — terminating tool used to capture a subagent's final result.\n *\n * Injected into a workflow agent node only when its output schema requires\n * structured data. The subagent is instructed\n * to invoke this tool exactly once with its final result; the tool sets\n * `terminate: true` so the agent loop stops without paying for an extra\n * assistant turn.\n *\n * Validation is done with ajv (already a xopc dep). pi-agent-core also validates\n * arguments against `parameters` before calling `execute`, but we re-check here\n * to (1) surface a clear error message back to the model when the schema is\n * non-trivial, and (2) avoid trusting the upstream layer's validator strictness.\n *\n * Note: the file is named `structured-output-tool.ts` to avoid clashing with the\n * existing `src/agent/tools/structured-output.ts` (an XML Element builder — a\n * completely unrelated utility).\n */\n\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport type { TSchema } from '@sinclair/typebox';\n\nimport type { JsonSchema } from './types.js';\n\nexport const STRUCTURED_OUTPUT_TOOL_NAME = 'structured_output';\n\nexport interface StructuredOutputCapture<T = unknown> {\n called: boolean;\n value?: T;\n}\n\nexport interface CreateStructuredOutputToolOptions<T = unknown> {\n schema: JsonSchema;\n capture: StructuredOutputCapture<T>;\n /** Override the tool name (rarely needed; default `structured_output`). */\n name?: string;\n}\n\n// One Ajv instance per schema is fine — Ajv caches compiled validators internally.\n// We re-use a singleton to avoid the per-call construction cost.\nconst ajv = new Ajv({ allErrors: true, strict: false });\n\nexport function createStructuredOutputTool<T = unknown>(\n options: CreateStructuredOutputToolOptions<T>,\n): AgentTool<TSchema, T> {\n const name = options.name ?? STRUCTURED_OUTPUT_TOOL_NAME;\n const validator: ValidateFunction = ajv.compile(options.schema);\n\n return {\n name,\n label: 'Structured Output',\n description:\n 'Return the final machine-readable result for this subagent task. ' +\n 'Call this tool exactly once when finished. Do not emit a prose final answer afterwards.',\n parameters: options.schema as unknown as TSchema,\n async execute(\n _toolCallId: string,\n params: unknown,\n ): Promise<AgentToolResult<T>> {\n const valid = validator(params);\n if (!valid) {\n const reason = ajv.errorsText(validator.errors, { separator: '; ' });\n // Do NOT terminate on invalid input — let the model retry within the same run.\n return {\n content: [\n {\n type: 'text',\n text: `structured_output: invalid arguments — ${reason}. Adjust and call structured_output again.`,\n },\n ],\n details: params as T,\n };\n }\n options.capture.called = true;\n options.capture.value = params as T;\n return {\n content: [{ type: 'text', text: 'Structured output received.' }],\n details: params as T,\n terminate: true,\n };\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,8BAA8B;AAgB3C,MAAM,MAAM,IAAI,IAAI;CAAE,WAAW;CAAM,QAAQ;CAAO,CAAC;AAEvD,SAAgB,2BACd,SACuB;CACvB,MAAM,OAAO,QAAQ,QAAA;CACrB,MAAM,YAA8B,IAAI,QAAQ,QAAQ,OAAO;AAE/D,QAAO;EACL;EACA,OAAO;EACP,aACE;EAEF,YAAY,QAAQ;EACpB,MAAM,QACJ,aACA,QAC6B;AAE7B,OAAI,CADU,UAAU,OACd,CAGR,QAAO;IACL,SAAS,CACP;KACE,MAAM;KACN,MAAM,0CANG,IAAI,WAAW,UAAU,QAAQ,EAAE,WAAW,MAAM,CAMP,CAAC;KACxD,CACF;IACD,SAAS;IACV;AAEH,WAAQ,QAAQ,SAAS;AACzB,WAAQ,QAAQ,QAAQ;AACxB,UAAO;IACL,SAAS,CAAC;KAAE,MAAM;KAAQ,MAAM;KAA+B,CAAC;IAChE,SAAS;IACT,WAAW;IACZ;;EAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-runner.js","names":[],"sources":["../../../../src/agent/workflow/subagent-runner.ts"],"sourcesContent":["/**\n * Adapter: spawns one isolated child agent per `agent()` call from a workflow.\n *\n * Wraps the existing `createDelegateChildHandle` so the workflow runtime stays\n * decoupled from the LLM stack (it sees only the `SubagentRunner` interface).\n *\n * Key behaviour:\n * - When `opts.schema` is provided, we inject `structured_output` into the child\n * tool set and unwrap the captured value on success. If the subagent finishes\n * without ever calling `structured_output`, we treat it as failure (`null`).\n * - Failures and aborts resolve to `null`. The workflow runtime continues — this\n * matches the pi-dynamic-workflows contract and keeps fan-out pipelines robust.\n * - We do NOT mutate `createDelegateChildHandle` — we just leverage its\n * `buildChildTools` injection point.\n */\n\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../../config/schema.js';\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport { emitSessionTranscriptUpdate } from '../../session/transcript-events.js';\nimport { createLogger } from '../../utils/logger.js';\n\nimport {\n type BuildChildToolsOptions,\n createDelegateChildHandle,\n type DelegateChildHandleOptions,\n} from '../child-agent-factory.js';\nimport {\n DEFAULT_DELEGATE_TOOLS,\n DELEGATE_BLOCKED_TOOLS,\n} from '../tools/delegate-tool.js';\nimport type { ToolExecutorConfig } from '../tools/executor.js';\n\nimport {\n createStructuredOutputTool,\n STRUCTURED_OUTPUT_TOOL_NAME,\n type StructuredOutputCapture,\n} from './structured-output-tool.js';\nimport type { SubagentRunOptions, SubagentRunner, SubagentProgressEvent } from './types.js';\n\nconst log = createLogger('Agent:WorkflowSubagent');\n\nconst DEFAULT_MAX_ITERATIONS = 30;\n\nexport interface DelegateSubagentRunnerDeps {\n workspace: string;\n bus: MessageBus;\n agentId?: string;\n /** Resolves the default subagent model (typically the parent agent's primary model). */\n getDefaultModel: () => Model<Api>;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n sessionStore?: SessionStore;\n /**\n * Provided by the workflow tool from `AgentToolsFactory` — mirrors how\n * `delegate-tool` is wired (avoids importing `tools/factory.ts` here and\n * breaking the existing factory ↔ delegate-tool ↔ child-agent-factory\n * dependency contract).\n */\n buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];\n}\n\nexport class DelegateSubagentRunner implements SubagentRunner {\n constructor(private readonly deps: DelegateSubagentRunnerDeps) {}\n\n async run<T = string>(prompt: string, opts: SubagentRunOptions<T>): Promise<T | null> {\n if (opts.signal?.aborted) return null;\n\n const capture: StructuredOutputCapture<T> = { called: false, value: undefined };\n const wantStructured = Boolean(opts.schema);\n\n const allowed = resolveAllowedToolNames(opts.allowedToolNames, wantStructured);\n const model = opts.model ?? safeResolveDefaultModel(this.deps.getDefaultModel);\n if (!model) {\n log.warn({ label: opts.label }, 'subagent run skipped: no primary model resolved');\n return null;\n }\n\n const fullPrompt = buildPrompt(prompt, opts, wantStructured);\n const streamMode = resolveSubagentStreamMode(this.deps.getConfig);\n\n let transcriptPersistQueue: Promise<void> = Promise.resolve();\n const persistTranscriptSnapshot = opts.sessionKey && this.deps.sessionStore\n ? (messages: Parameters<SessionStore['saveMessages']>[1]) => {\n const store = this.deps.sessionStore;\n const key = opts.sessionKey;\n if (!store || !key) return;\n const snapshot = cloneAgentMessages(messages);\n transcriptPersistQueue = transcriptPersistQueue\n .then(async () => {\n await store.saveMessages(key, snapshot);\n emitSessionTranscriptUpdate({ sessionKey: key });\n })\n .catch((err) => {\n const msg = err instanceof Error ? err.message : String(err);\n log.warn(\n { err, sessionKey: key, errorMessage: msg },\n `Failed to persist workflow subagent transcript snapshot: ${msg}`,\n );\n });\n }\n : undefined;\n\n const childOptions: DelegateChildHandleOptions = {\n workspace: this.deps.workspace,\n goal: fullPrompt,\n allowedToolNames: allowed,\n maxIterations: opts.maxIterations ?? DEFAULT_MAX_ITERATIONS,\n model,\n bus: this.deps.bus,\n agentId: this.deps.agentId,\n getConfig: this.deps.getConfig,\n toolExecutorConfig: this.deps.toolExecutorConfig,\n buildChildTools: (childOpts) => {\n const base = this.deps.buildChildTools({ ...childOpts, agentId: this.deps.agentId ?? childOpts.agentId });\n if (!wantStructured || !opts.schema) return base;\n // Replace any existing tool with the same name so the per-run capture wins.\n const filtered = base.filter((t) => t.name !== STRUCTURED_OUTPUT_TOOL_NAME);\n return [\n ...filtered,\n createStructuredOutputTool({ schema: opts.schema, capture }) as unknown as AgentTool<any, any>,\n ];\n },\n progressHooks:\n opts.onProgress && streamMode !== 'off'\n ? {\n mode: streamMode === 'full' ? 'full' : 'steps',\n onProgress: (event) => {\n opts.onProgress?.(mapChildProgressEvent(event));\n },\n }\n : undefined,\n onTranscriptSnapshot: persistTranscriptSnapshot,\n };\n\n if (opts.sessionKey && opts.sessionMetadata && this.deps.sessionStore) {\n await this.preparePersistentSubagentSession(opts.sessionKey, opts.sessionMetadata);\n }\n\n const handle = createDelegateChildHandle(childOptions);\n const onAbort = () => handle.abort();\n opts.signal?.addEventListener('abort', onAbort, { once: true });\n\n try {\n const { summary, messages } = await handle.run();\n await transcriptPersistQueue;\n if (opts.sessionKey && this.deps.sessionStore) {\n await this.deps.sessionStore.saveMessages(opts.sessionKey, messages);\n emitSessionTranscriptUpdate({ sessionKey: opts.sessionKey });\n }\n if (opts.signal?.aborted) return null;\n\n if (wantStructured) {\n if (!capture.called) {\n log.warn({ label: opts.label }, 'subagent finished without calling structured_output');\n return null;\n }\n return capture.value as T;\n }\n return summary as unknown as T;\n } catch (e) {\n if (opts.rethrow) throw e;\n const msg = e instanceof Error ? e.message : String(e);\n log.warn({ err: e, label: opts.label, errorMessage: msg }, `subagent run failed: ${msg}`);\n return null;\n } finally {\n opts.signal?.removeEventListener('abort', onAbort);\n }\n }\n\n private async preparePersistentSubagentSession(\n sessionKey: string,\n metadata: NonNullable<SubagentRunOptions['sessionMetadata']>,\n ): Promise<void> {\n const store = this.deps.sessionStore;\n if (!store) return;\n await store.resolveTranscriptPath(sessionKey, {\n metadata: {\n sessionType: 'workflow-subagent',\n hiddenFromSessionList: true,\n parentSessionKey: metadata.parentSessionKey,\n workflowRunId: metadata.workflowRunId,\n workflowDefinitionId: metadata.workflowDefinitionId,\n workflowAgentId: metadata.workflowAgentId,\n workflowAgentLabel: metadata.workflowAgentLabel,\n sourceChannel: 'workflow',\n sourceChatId: metadata.workflowRunId,\n routing: {\n agentId: metadata.workflowAgentId || 'main',\n source: 'workflow',\n accountId: 'default',\n peerKind: 'subagent',\n peerId: metadata.workflowRunId,\n },\n },\n });\n await store.updateMetadata(sessionKey, {\n sessionType: 'workflow-subagent',\n hiddenFromSessionList: true,\n parentSessionKey: metadata.parentSessionKey,\n workflowRunId: metadata.workflowRunId,\n workflowDefinitionId: metadata.workflowDefinitionId,\n workflowAgentId: metadata.workflowAgentId,\n workflowAgentLabel: metadata.workflowAgentLabel,\n name: metadata.workflowAgentLabel,\n tags: ['workflow-subagent', metadata.workflowDefinitionId],\n });\n }\n}\n\nfunction cloneAgentMessages(messages: Parameters<SessionStore['saveMessages']>[1]): Parameters<SessionStore['saveMessages']>[1] {\n return messages.map((message) => structuredClone(message));\n}\n\nfunction resolveAllowedToolNames(\n requested: string[] | undefined,\n wantStructured: boolean,\n): string[] {\n const base = requested && requested.length > 0 ? requested : [...DEFAULT_DELEGATE_TOOLS];\n const filtered = base\n .map((s) => String(s).trim())\n .filter((s) => s.length > 0)\n .filter((s) => !DELEGATE_BLOCKED_TOOLS.has(s));\n if (wantStructured && !filtered.includes(STRUCTURED_OUTPUT_TOOL_NAME)) {\n filtered.push(STRUCTURED_OUTPUT_TOOL_NAME);\n }\n return [...new Set(filtered)];\n}\n\nfunction buildPrompt(prompt: string, opts: SubagentRunOptions<unknown>, structured: boolean): string {\n const parts: string[] = [];\n if (opts.instructions?.trim()) parts.push(opts.instructions.trim());\n if (opts.label) parts.push(`Task label: ${opts.label}`);\n if (opts.phase) parts.push(`Workflow phase: ${opts.phase}`);\n parts.push(prompt);\n if (structured) {\n parts.push(\n [\n 'Final output contract:',\n '- Your final action MUST be a structured_output tool call.',\n '- The structured_output arguments are the return value of this subagent.',\n '- Do not emit a prose final answer instead of structured_output.',\n '- If you need to inspect files or run commands first, do so, then call structured_output exactly once.',\n ].join('\\n'),\n );\n }\n return parts.join('\\n\\n');\n}\n\nfunction safeResolveDefaultModel(get: () => Model<Api>): Model<Api> | null {\n try {\n return get();\n } catch (e) {\n log.warn({ err: e }, 'failed to resolve default subagent model');\n return null;\n }\n}\n\nfunction resolveSubagentStreamMode(\n _getConfig: () => Config | undefined,\n): 'off' | 'steps' | 'full' {\n return 'steps';\n}\n\nfunction mapChildProgressEvent(event: {\n type: 'tool_start' | 'tool_end' | 'iteration' | 'text_delta' | 'thinking_delta';\n toolCallId?: string;\n toolName?: string;\n args?: Record<string, unknown>;\n isError?: boolean;\n resultPreview?: string;\n error?: string;\n count?: number;\n max?: number;\n delta?: string;\n}): SubagentProgressEvent {\n switch (event.type) {\n case 'tool_start':\n return {\n type: 'tool_start',\n toolCallId: event.toolCallId ?? '',\n toolName: event.toolName ?? 'tool',\n args: event.args ?? {},\n };\n case 'tool_end':\n return {\n type: 'tool_end',\n toolCallId: event.toolCallId ?? '',\n toolName: event.toolName ?? 'tool',\n isError: Boolean(event.isError),\n resultPreview: event.resultPreview,\n error: event.error,\n };\n case 'iteration':\n return {\n type: 'iteration',\n count: event.count ?? 0,\n max: event.max ?? 0,\n };\n case 'text_delta':\n return { type: 'text_delta', delta: event.delta ?? '' };\n case 'thinking_delta':\n return { type: 'thinking_delta', delta: event.delta ?? '' };\n default:\n return { type: 'text_delta', delta: '' };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-child-tools.js","names":[],"sources":["../../../../src/agent/workflow/workflow-child-tools.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\n\nimport type { BuildChildToolsOptions } from '../child-agent-factory.js';\nimport { resolveDreamingRoot } from '../memory/dreaming/scope.js';\nimport { AgentToolsFactory } from '../tools/factory.js';\n\n/** Builds the tool set for workflow child agents (wired from gateway to avoid cycles). */\nexport function buildWorkflowChildTools(childOptions: BuildChildToolsOptions): AgentTool<any, any>[] {\n const config = childOptions.getConfig();\n const dreamingRoot = config\n ? resolveDreamingRoot()\n : undefined;\n const childFactory = new AgentToolsFactory({\n workspace: childOptions.workspace,\n bus: childOptions.bus,\n getCurrentContext: () => null,\n getConfig: childOptions.getConfig,\n getPrimaryModel: () => childOptions.model,\n toolExecutorConfig: childOptions.toolExecutorConfig,\n });\n return childFactory.createAllTools({\n workspace: childOptions.workspace,\n getPrimaryModel: () => childOptions.model,\n agentId: childOptions.agentId,\n dreamingRoot,\n disabledTools: new Set(['extensions']),\n });\n}\n"],"mappings":";;;;AAOA,SAAgB,wBAAwB,cAA6D;CAEnG,MAAM,eADS,aAAa,WACD,GACvB,qBAAqB,GACrB,KAAA;AASJ,QAAO,IARkB,kBAAkB;EACzC,WAAW,aAAa;EACxB,KAAK,aAAa;EAClB,yBAAyB;EACzB,WAAW,aAAa;EACxB,uBAAuB,aAAa;EACpC,oBAAoB,aAAa;EAClC,CACkB,CAAC,eAAe;EACjC,WAAW,aAAa;EACxB,uBAAuB,aAAa;EACpC,SAAS,aAAa;EACtB;EACA,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC;EACvC,CAAC"}
|