@xopcai/xopc 0.0.149 → 0.0.151
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -0
- package/README.zh-CN.md +10 -0
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/dashscope/src/image-generation-provider.js +0 -2
- package/dist/extensions/demo-memory/src/index.js +0 -2
- package/dist/extensions/fal/src/image-generation-provider.js +0 -2
- package/dist/extensions/feishu/src/actions/message-action-handler.js +0 -2
- package/dist/extensions/feishu/src/adapters/cli-login.js +0 -2
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +0 -2
- package/dist/extensions/feishu/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/feishu/src/auth/app-registration.js +0 -2
- package/dist/extensions/feishu/src/auth/pairing.js +0 -2
- package/dist/extensions/feishu/src/auth/paths.js +0 -2
- package/dist/extensions/feishu/src/directory/directory-adapter.js +0 -2
- package/dist/extensions/feishu/src/format.js +0 -2
- package/dist/extensions/feishu/src/index.js +0 -2
- package/dist/extensions/feishu/src/outbound/actions.js +0 -2
- package/dist/extensions/feishu/src/outbound/media-load.js +0 -2
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js +0 -2
- package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js +0 -2
- package/dist/extensions/feishu/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/feishu/src/plugin.js +0 -2
- package/dist/extensions/feishu/src/schema/config-schema.js +0 -2
- package/dist/extensions/feishu/src/state/accounts.js +0 -2
- package/dist/extensions/feishu/src/state/message-bindings.js +0 -2
- package/dist/extensions/feishu/src/state/thread-bindings.js +0 -2
- package/dist/extensions/feishu/src/status/doctor.js +0 -2
- package/dist/extensions/feishu/src/status/status-adapter.js +0 -2
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js +0 -2
- package/dist/extensions/feishu/src/subagent-hooks.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.d.ts +6 -3386
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.js +0 -2
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.d.ts +16 -16927
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js +0 -2
- package/dist/extensions/feishu/src/tools/tools.js +0 -2
- package/dist/extensions/feishu/src/transport/client/client.js +2 -4
- package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js +0 -2
- package/dist/extensions/feishu/src/transport/client/lark-sdk.d.ts +3 -0
- package/dist/extensions/feishu/src/transport/client/lark-sdk.js +14 -0
- package/dist/extensions/feishu/src/transport/reliability/dedupe.js +0 -2
- package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js +0 -2
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js +0 -2
- package/dist/extensions/feishu/src/transport/socket-mode/retry.js +0 -2
- package/dist/extensions/feishu/src/transport/text/mentions.js +0 -2
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +3 -5
- package/dist/extensions/feishu/src/ui/config-surface.js +0 -2
- package/dist/extensions/feishu/src/workflow-progress.js +0 -2
- package/dist/extensions/google/src/image-generation-provider.js +0 -2
- package/dist/extensions/minimax/src/image-generation-provider.js +0 -2
- package/dist/extensions/openai/src/image-generation-provider.js +0 -2
- package/dist/extensions/telegram/src/access-control.js +0 -2
- package/dist/extensions/telegram/src/account-manager.js +0 -2
- package/dist/extensions/telegram/src/actions/message-actions.js +0 -2
- package/dist/extensions/telegram/src/adapters/command-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/config-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/debounce-keys.js +0 -2
- package/dist/extensions/telegram/src/adapters/gateway-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/gateway-setup.js +0 -2
- package/dist/extensions/telegram/src/adapters/inbound-access.js +0 -2
- package/dist/extensions/telegram/src/adapters/index.js +0 -2
- package/dist/extensions/telegram/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/telegram/src/adapters/outbound-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/security-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/setup-wizard.js +0 -2
- package/dist/extensions/telegram/src/adapters/status-adapter.js +0 -2
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +0 -2
- package/dist/extensions/telegram/src/api-root.js +0 -2
- package/dist/extensions/telegram/src/approval-delivery.js +0 -2
- package/dist/extensions/telegram/src/approval-store.js +0 -2
- package/dist/extensions/telegram/src/caption.js +0 -2
- package/dist/extensions/telegram/src/command-handler.js +0 -2
- package/dist/extensions/telegram/src/config-schema.js +0 -2
- package/dist/extensions/telegram/src/conversation-id.js +0 -2
- package/dist/extensions/telegram/src/dedupe.js +0 -2
- package/dist/extensions/telegram/src/delivery-chat-id.js +0 -2
- package/dist/extensions/telegram/src/doctor.js +0 -2
- package/dist/extensions/telegram/src/draft-stream-lifecycle.js +0 -2
- package/dist/extensions/telegram/src/draft-stream-loop.js +0 -2
- package/dist/extensions/telegram/src/draft-stream.js +0 -2
- package/dist/extensions/telegram/src/errors.js +0 -2
- package/dist/extensions/telegram/src/exec-approval-handler.js +0 -2
- package/dist/extensions/telegram/src/exec-approvals.js +0 -2
- package/dist/extensions/telegram/src/focus-handler.js +0 -2
- package/dist/extensions/telegram/src/format.js +0 -2
- package/dist/extensions/telegram/src/group-config-resolver.js +0 -2
- package/dist/extensions/telegram/src/inbound-coalescer.js +0 -2
- package/dist/extensions/telegram/src/inbound-processor.js +0 -2
- package/dist/extensions/telegram/src/index.js +0 -2
- package/dist/extensions/telegram/src/inline-keyboards.js +0 -2
- package/dist/extensions/telegram/src/network-errors.js +0 -2
- package/dist/extensions/telegram/src/outbound-sender.js +0 -2
- package/dist/extensions/telegram/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/telegram/src/plugin-defaults.js +0 -2
- package/dist/extensions/telegram/src/plugin.js +0 -2
- package/dist/extensions/telegram/src/polling-session.js +0 -2
- package/dist/extensions/telegram/src/proxy-fetch.js +0 -2
- package/dist/extensions/telegram/src/reactions.js +0 -2
- package/dist/extensions/telegram/src/reply-params.js +0 -2
- package/dist/extensions/telegram/src/routing-integration.js +0 -2
- package/dist/extensions/telegram/src/send-options.js +0 -2
- package/dist/extensions/telegram/src/sent-cache.js +0 -2
- package/dist/extensions/telegram/src/startup-errors.js +0 -2
- package/dist/extensions/telegram/src/telegram-actions.js +0 -2
- package/dist/extensions/telegram/src/telegram-draft-errors.js +0 -2
- package/dist/extensions/telegram/src/thread-bindings.js +0 -2
- package/dist/extensions/telegram/src/timeout-abort.js +0 -2
- package/dist/extensions/telegram/src/token-resolver.js +0 -2
- package/dist/extensions/telegram/src/update-offset-store.js +0 -2
- package/dist/extensions/telegram/src/workflow-progress.js +0 -2
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/adapters/onboard-cli.js +0 -2
- package/dist/extensions/weixin/src/api/api.js +0 -2
- package/dist/extensions/weixin/src/api/config-cache.js +0 -2
- package/dist/extensions/weixin/src/api/session-guard.js +0 -2
- package/dist/extensions/weixin/src/api/types.js +0 -2
- package/dist/extensions/weixin/src/auth/accounts.js +0 -2
- package/dist/extensions/weixin/src/auth/login-qr.js +0 -2
- package/dist/extensions/weixin/src/auth/pairing.js +0 -2
- package/dist/extensions/weixin/src/auth/weixin-account-id.js +0 -2
- package/dist/extensions/weixin/src/cdn/aes-ecb.js +0 -2
- package/dist/extensions/weixin/src/cdn/cdn-upload.js +0 -2
- package/dist/extensions/weixin/src/cdn/cdn-url.js +0 -2
- package/dist/extensions/weixin/src/cdn/pic-decrypt.js +0 -2
- package/dist/extensions/weixin/src/cdn/upload.js +0 -2
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js +0 -2
- package/dist/extensions/weixin/src/cli/qr-login.js +0 -2
- package/dist/extensions/weixin/src/config-schema.js +0 -2
- package/dist/extensions/weixin/src/config-surface.js +0 -2
- package/dist/extensions/weixin/src/delivery-to.js +0 -2
- package/dist/extensions/weixin/src/index.js +0 -2
- package/dist/extensions/weixin/src/media/data-url.js +0 -2
- package/dist/extensions/weixin/src/media/media-download.js +0 -2
- package/dist/extensions/weixin/src/media/mime.js +0 -2
- package/dist/extensions/weixin/src/media/silk-transcode.js +0 -2
- package/dist/extensions/weixin/src/messaging/context-token-init.js +0 -2
- package/dist/extensions/weixin/src/messaging/debug-mode.js +0 -2
- package/dist/extensions/weixin/src/messaging/error-notice.js +0 -2
- package/dist/extensions/weixin/src/messaging/inbound.js +0 -2
- package/dist/extensions/weixin/src/messaging/markdown-filter.js +0 -2
- package/dist/extensions/weixin/src/messaging/process-message.js +0 -2
- package/dist/extensions/weixin/src/messaging/send-media.js +0 -2
- package/dist/extensions/weixin/src/messaging/send.js +0 -2
- package/dist/extensions/weixin/src/messaging/slash-commands.js +0 -2
- package/dist/extensions/weixin/src/messaging/typing-ticket-store.js +0 -2
- package/dist/extensions/weixin/src/monitor/monitor.js +0 -2
- package/dist/extensions/weixin/src/outbound-send.js +0 -2
- package/dist/extensions/weixin/src/pairing-config-resolver.js +0 -2
- package/dist/extensions/weixin/src/plugin.js +0 -2
- package/dist/extensions/weixin/src/routing-integration.js +0 -2
- package/dist/extensions/weixin/src/storage/state-dir.js +0 -2
- package/dist/extensions/weixin/src/storage/sync-buf.js +0 -2
- package/dist/extensions/weixin/src/util/logger.js +0 -2
- package/dist/extensions/weixin/src/util/random.js +0 -2
- package/dist/extensions/weixin/src/util/redact.js +0 -2
- package/dist/extensions/weixin/src/workflow-progress.js +0 -2
- package/dist/gateway/static/root/assets/{activity-store-B4s0ipx2.js → activity-store-uu1xu9Pl.js} +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BSccACje.js → agent-avatar-dicebear-BuO-OVfD.js} +1 -1
- package/dist/gateway/static/root/assets/agents-Bpv3h31T.js +2 -0
- package/dist/gateway/static/root/assets/{api-BMdUsNCV.js → api-CwL38LEV.js} +1 -1
- package/dist/gateway/static/root/assets/{app-management-settings-panel-DrLGhYkI.js → app-management-settings-panel-B6OU3Eol.js} +1 -1
- package/dist/gateway/static/root/assets/appearance-settings-BaP4GFvN.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-DZKNIMRg.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-BQ17IK9x.js → archive-plugin-CJX3zIh_.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-HXvgWHXu.js → attachment-load-CI1ejk_l.js} +1 -1
- package/dist/gateway/static/root/assets/{automation-suggestion-card-CjIWpsch.js → automation-suggestion-card-CjmhICbv.js} +1 -1
- package/dist/gateway/static/root/assets/automations-page-BtZl3B8m.js +6 -0
- package/dist/gateway/static/root/assets/{binary-plugins-DifWJzNZ.js → binary-plugins-CZ8nOXqK.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-DtRzIkPU.js → block-editor-BoSfyS_j.js} +46 -46
- package/dist/gateway/static/root/assets/browser-settings-page-CL1UiPcb.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-DazKjWW1.js → capability-presets-api-XzDKxPZ8.js} +1 -1
- package/dist/gateway/static/root/assets/{capability-presets-settings-panel-Cvrw4fD1.js → capability-presets-settings-panel-Dc_uHYgl.js} +2 -2
- package/dist/gateway/static/root/assets/{channel-recipient-api-Bea6if_6.js → channel-recipient-api-DYLBAhFF.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-mALvXpJj.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-CZuEsO5b.js +1 -0
- package/dist/gateway/static/root/assets/{connector-logo-BjbYbJjQ.js → connector-logo-BSjlInHT.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-Cm_E3mmI.js +2 -0
- package/dist/gateway/static/root/assets/desktop-pet-DcJc91-C.js +1 -0
- package/dist/gateway/static/root/assets/desktop-pet-settings-CdeqTa3Q.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-C8zZNUzC.js → directory-picker-path-field-Cp3fpm0k.js} +1 -1
- package/dist/gateway/static/root/assets/{dreaming-settings-gJSw7Adk.js → dreaming-settings-Bwj1O3zr.js} +3 -3
- package/dist/gateway/static/root/assets/{extension-debug-page-DFE5ADJ0.js → extension-debug-page-D_1xpKbZ.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-CfR-aW8G.js → extension-page-CqZNCj96.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-CFIEbs2L.js → extension-settings-page-5MWbtQaQ.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-B6M_ra8U.js → gateway-config-api-Co_IaS34.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-kmeWm2Pt.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DNA3OOzV.js → gateway-startup-retry-BM_xvzl0.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-FoO-R4_U.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-CkJq7N5g.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-D88opgcs.js → goals-config-api-DrtsYjXz.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-DRAN-R64.js +2 -0
- package/dist/gateway/static/root/assets/{goals-settings-D07UL8Jo.js → goals-settings-wq9TKhIZ.js} +1 -1
- package/dist/gateway/static/root/assets/{heartbeat-settings-YCSNOcXC.js → heartbeat-settings-B5zDoHbo.js} +1 -1
- package/dist/gateway/static/root/assets/index-DIlxvrlG.css +1 -0
- package/dist/gateway/static/root/assets/index-apLU0Hun.js +196 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-3tC9iD21.js +1 -0
- package/dist/gateway/static/root/assets/local-app-workbench-page-CT-vDTLK.js +2 -0
- package/dist/gateway/static/root/assets/{local-apps-page-CKvtLzsF.js → local-apps-page-B9ruF9GV.js} +1 -1
- package/dist/gateway/static/root/assets/locale-store-GfSwnwIZ.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-Ca1X8X2P.js +7 -0
- package/dist/gateway/static/root/assets/{markdown-split-BVSFG99p.js → markdown-split-CzuhSQAB.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DdOjIVk3.js → media-plugins-a3R4y-EL.js} +1 -1
- package/dist/gateway/static/root/assets/messages-B0B40tpO.js +5 -0
- package/dist/gateway/static/root/assets/models-hub-panel-CbTlz9Of.js +2 -0
- package/dist/gateway/static/root/assets/{notes-page-ZbLR3awn.js → notes-page-BCxDy2dV.js} +1 -1
- package/dist/gateway/static/root/assets/notes-workbench-z6sBX9B2.js +4 -0
- package/dist/gateway/static/root/assets/{page-tabs-DMlQERNg.js → page-tabs-CJfk6M78.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-CbiJRPxK.js → preview-open-alternatives-MFopTSgF.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-DU29deIr.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-Ck3DLTlZ.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-gLsLyAyi.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-BZTj3hxl.js → save-bar-controls-D0uhU3Z8.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-CxYDObjT.js → schedule-field-NGOH-7wV.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-CBbXgpKQ.js → schema-form-BJz5LoqG.js} +1 -1
- package/dist/gateway/static/root/assets/schemas-DgQq6Z5S.js +64 -0
- package/dist/gateway/static/root/assets/sessions-page-TmNoWpa_.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-CtPhh2m9.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BySKZ8rp.js → settings-collapsible-section-oDnUHnX_.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-CjINay6t.js → settings-form-section-DND90dDt.js} +1 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-CEJtaoQp.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-BNrVwuL7.js → settings-page-B1LJlRi9.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-layout-HdlQOOqp.js → settings-page-layout-CsrLuDsW.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BPCJPHHY.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-DC-eQONB.js → share-preview-page-C1PwLh-p.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DCuqr7js.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-kn1Vypcy.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-k6VIqTkK.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-CVa90q2f.js → system-settings-panel-BEsrEkSx.js} +1 -1
- package/dist/gateway/static/root/assets/{theme-store-D1cOpgsy.js → theme-store-Bi6hMBDb.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-DIKF9vpz.js → typed-models-lib-dOypdlMf.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-DnvpI0Ys.js → use-channel-catalog-f8A-PVuq.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-B9Y_Ciav.js +1 -0
- package/dist/gateway/static/root/assets/{user-profile-fields-editor-y8gTmkPX.js → user-profile-fields-editor-DGC38Lx7.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-C3pvqe28.js → user-profile-settings-panel-DFkZ-tan.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-BK2vwu_3.js → utils-CEIYZihF.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-DK6gaQsA.js +1 -0
- package/dist/gateway/static/root/assets/work-discovery-page-DSJb9Kq7.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-DVavwV3D.js +1 -0
- package/dist/gateway/static/root/assets/work-page-foJDp0nz.js +1 -0
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYqZpFCC.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-DgO0WAzs.js +11 -0
- package/dist/gateway/static/root/favicon.svg +1 -187
- package/dist/gateway/static/root/index.html +8 -7
- package/dist/gateway/static/root/logo-dark.svg +1 -185
- package/dist/gateway/static/root/logo.svg +1 -185
- package/dist/package.js +1 -3
- package/dist/src/activity/context.js +0 -2
- package/dist/src/activity/emitter.js +0 -2
- package/dist/src/activity/service.js +0 -2
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +1 -2
- package/dist/src/agent/agent-scope.js +0 -2
- package/dist/src/agent/background-review/coordinator.js +0 -2
- package/dist/src/agent/background-review/prompts.js +0 -2
- package/dist/src/agent/background-review/run-background-review.js +0 -2
- package/dist/src/agent/background-review/settings.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-cache.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-context.js +0 -2
- package/dist/src/agent/bootstrap/bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/load-bootstrap-files.js +0 -2
- package/dist/src/agent/bootstrap/project-agents-context.js +0 -2
- package/dist/src/agent/capabilities/definitions.js +0 -2
- package/dist/src/agent/capabilities/registry.js +0 -2
- package/dist/src/agent/child-agent-factory.js +0 -2
- package/dist/src/agent/client-error-format.js +0 -2
- package/dist/src/agent/code-intelligence/binary.js +0 -2
- package/dist/src/agent/code-intelligence/runtime.js +0 -2
- package/dist/src/agent/code-intelligence/tools.js +0 -2
- package/dist/src/agent/coding/turn-diff-tracker.js +0 -2
- package/dist/src/agent/context/expand-at-file-mentions.js +0 -2
- package/dist/src/agent/context/project-context.js +0 -2
- package/dist/src/agent/context/workspace-seed.js +0 -2
- package/dist/src/agent/context/workspace-state.js +0 -2
- package/dist/src/agent/context/workspace.js +0 -2
- package/dist/src/agent/embedded/run-for-session.js +0 -2
- package/dist/src/agent/embedded/run-turn.js +0 -2
- package/dist/src/agent/embedded/runs.js +0 -2
- package/dist/src/agent/embedded/session-manager-init.js +0 -2
- package/dist/src/agent/embedded/session-runner.js +0 -2
- package/dist/src/agent/embedded/session-tool-result-guard.js +0 -2
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js +0 -2
- package/dist/src/agent/embedded/subscribe-session.js +0 -2
- package/dist/src/agent/embedded/system-prompt-override.js +0 -2
- package/dist/src/agent/embedded/tool-result-context-guard.js +0 -2
- package/dist/src/agent/embedded/tool-result-truncation.js +0 -2
- package/dist/src/agent/embedded/xopc-auth-storage.js +0 -2
- package/dist/src/agent/embedded/xopc-stream-bridge.js +0 -2
- package/dist/src/agent/embedded/xopc-tools-bridge.js +0 -2
- package/dist/src/agent/failover-error.js +0 -2
- package/dist/src/agent/fallback/candidates.js +0 -2
- package/dist/src/agent/fallback/reason.js +0 -2
- package/dist/src/agent/feedback/feedback-coordinator.js +0 -2
- package/dist/src/agent/goals/checklist-judge.js +0 -2
- package/dist/src/agent/goals/checklist-types.js +0 -2
- package/dist/src/agent/goals/evaluate-turn.js +0 -2
- package/dist/src/agent/goals/goal-locale.js +0 -2
- package/dist/src/agent/goals/judge.js +0 -2
- package/dist/src/agent/goals/persistent-goal-service.js +0 -2
- package/dist/src/agent/goals/post-turn.js +0 -2
- package/dist/src/agent/goals/state.js +0 -2
- package/dist/src/agent/image/generation/bundled-registry.js +0 -2
- package/dist/src/agent/image/generation/bundled.js +0 -2
- package/dist/src/agent/image/generation/image-assets.js +0 -2
- package/dist/src/agent/image/generation/model-ref.js +0 -2
- package/dist/src/agent/image/generation/normalization.js +0 -2
- package/dist/src/agent/image/generation/openai-compatible-image-provider.js +0 -2
- package/dist/src/agent/image/generation/provider-registry.js +0 -2
- package/dist/src/agent/image/generation/runtime.js +0 -2
- package/dist/src/agent/image/image-helpers.js +0 -2
- package/dist/src/agent/image/image-model-fallback.js +0 -2
- package/dist/src/agent/image/inbound-image-handling.js +0 -2
- package/dist/src/agent/image/load-image-media.js +0 -2
- package/dist/src/agent/image/tool-model-config.js +0 -2
- package/dist/src/agent/image/understanding/pi-ai-provider.js +0 -2
- package/dist/src/agent/image/understanding/provider-registry.js +0 -2
- package/dist/src/agent/image/understanding/runtime.js +0 -2
- package/dist/src/agent/image/vision-detection.js +0 -2
- package/dist/src/agent/inbound/attachment-pipeline.js +0 -2
- package/dist/src/agent/inbound/inbound-loop.js +0 -2
- package/dist/src/agent/inbound/turn-dispatcher.js +0 -2
- package/dist/src/agent/ipc/bus.js +0 -2
- package/dist/src/agent/ipc/inbox.js +0 -2
- package/dist/src/agent/ipc/socket.js +0 -2
- package/dist/src/agent/ipc/types.js +0 -2
- package/dist/src/agent/lifecycle/handlers/compaction.js +0 -2
- package/dist/src/agent/lifecycle/hook-handler.js +0 -2
- package/dist/src/agent/lifecycle/manager.js +0 -2
- package/dist/src/agent/lifecycle/progress.js +0 -2
- package/dist/src/agent/lifecycle/timeout-wrapper.js +0 -2
- package/dist/src/agent/lifecycle/typing.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-config.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-names.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-policy.js +0 -2
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +0 -2
- package/dist/src/agent/mcp/embedded-mcp.js +0 -2
- package/dist/src/agent/mcp/mcp-config-shared.js +0 -2
- package/dist/src/agent/mcp/mcp-http.js +0 -2
- package/dist/src/agent/mcp/mcp-stdio-transport.js +0 -2
- package/dist/src/agent/mcp/mcp-stdio.js +0 -2
- package/dist/src/agent/mcp/mcp-tool-meta.js +0 -2
- package/dist/src/agent/mcp/mcp-transport-config.js +0 -2
- package/dist/src/agent/mcp/mcp-transport.js +0 -2
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js +0 -2
- package/dist/src/agent/media-generation/model-ref.js +0 -2
- package/dist/src/agent/media-generation/normalization.types.js +0 -2
- package/dist/src/agent/media-generation/runtime-shared.js +0 -2
- package/dist/src/agent/memory/agent-message-access.js +0 -2
- package/dist/src/agent/memory/builtin-memory-store.js +0 -2
- package/dist/src/agent/memory/builtin-provider.js +0 -2
- package/dist/src/agent/memory/compaction.js +0 -2
- package/dist/src/agent/memory/context/planner.js +0 -2
- package/dist/src/agent/memory/context-fence.js +0 -2
- package/dist/src/agent/memory/create-memory-manager.js +0 -2
- package/dist/src/agent/memory/dreaming/config.js +0 -2
- package/dist/src/agent/memory/dreaming/constants.js +0 -2
- package/dist/src/agent/memory/dreaming/deep-promotion.js +0 -2
- package/dist/src/agent/memory/dreaming/events.js +0 -2
- package/dist/src/agent/memory/dreaming/last-run.js +0 -2
- package/dist/src/agent/memory/dreaming/light-sweep.js +0 -2
- package/dist/src/agent/memory/dreaming/preview.js +0 -2
- package/dist/src/agent/memory/dreaming/promotion-lifecycle.js +0 -2
- package/dist/src/agent/memory/dreaming/rem-patterns.js +0 -2
- package/dist/src/agent/memory/dreaming/scope.js +0 -2
- package/dist/src/agent/memory/dreaming/short-term-store.js +0 -2
- package/dist/src/agent/memory/dreaming/utils.js +0 -2
- package/dist/src/agent/memory/lifecycle.js +0 -2
- package/dist/src/agent/memory/manager.js +0 -2
- package/dist/src/agent/memory/memory-config.js +0 -2
- package/dist/src/agent/memory/message-sanitizer.js +0 -2
- package/dist/src/agent/memory/plugin-discovery.js +0 -2
- package/dist/src/agent/memory/sensitivity.js +0 -2
- package/dist/src/agent/memory/source-origin.js +0 -2
- package/dist/src/agent/memory/stub-memory-provider.js +0 -2
- package/dist/src/agent/memory/summary-generator.js +0 -2
- package/dist/src/agent/memory/understanding/correction.js +0 -2
- package/dist/src/agent/memory/understanding/quality.js +0 -2
- package/dist/src/agent/memory/understanding/service.js +0 -2
- package/dist/src/agent/memory/user-context-coordinator.js +0 -2
- package/dist/src/agent/memory/user-message-text.js +0 -2
- package/dist/src/agent/memory/window.js +0 -2
- package/dist/src/agent/messaging/command-handler.js +0 -2
- package/dist/src/agent/messaging/message-router.js +0 -2
- package/dist/src/agent/messaging/outbound-coordinator.js +0 -2
- package/dist/src/agent/messaging/stream-manager.js +0 -2
- package/dist/src/agent/middleware/context.js +0 -2
- package/dist/src/agent/middleware/self-verify.js +0 -2
- package/dist/src/agent/models/manager.js +0 -2
- package/dist/src/agent/models/request-limiter.js +0 -2
- package/dist/src/agent/models/selection.js +0 -2
- package/dist/src/agent/orchestration/agent-event-handler.js +0 -2
- package/dist/src/agent/orchestration/agent-orchestrator.js +0 -2
- package/dist/src/agent/orchestration/llm-turn-retry.js +0 -2
- package/dist/src/agent/orchestration/loop-guard.js +0 -2
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js +0 -2
- package/dist/src/agent/prompt/cache-boundary.js +0 -2
- package/dist/src/agent/prompt/memory/index.js +0 -2
- package/dist/src/agent/prompt/safety.js +0 -2
- package/dist/src/agent/prompt/sanitize-for-prompt.js +0 -2
- package/dist/src/agent/prompt/sections/behavior.js +0 -2
- package/dist/src/agent/prompt/sections/memory-skills.js +0 -2
- package/dist/src/agent/prompt/sections/messaging-runtime.js +0 -2
- package/dist/src/agent/prompt/sections/project-context.js +0 -2
- package/dist/src/agent/prompt/sections/tooling.js +0 -2
- package/dist/src/agent/prompt/sections/workspace-runtime.js +0 -2
- package/dist/src/agent/prompt/service-prompt-builder.js +0 -2
- package/dist/src/agent/prompt/subagent-context.js +0 -2
- package/dist/src/agent/prompt/system-prompt-params.js +0 -2
- package/dist/src/agent/prompt/system-prompt.js +0 -2
- package/dist/src/agent/prompt/system-reminder.js +0 -2
- package/dist/src/agent/reply/apply-turn-user-enrichment.js +0 -2
- package/dist/src/agent/reply/post-compaction-context.js +0 -2
- package/dist/src/agent/reply/startup-context.js +0 -2
- package/dist/src/agent/reply/workspace-boundary-read.js +0 -2
- package/dist/src/agent/sandbox/command-validator.js +0 -2
- package/dist/src/agent/sandbox/exec-policy.js +0 -2
- package/dist/src/agent/sandbox/path-policy.js +0 -2
- package/dist/src/agent/sandbox/sanitize-env-vars.js +0 -2
- package/dist/src/agent/sandbox/types.js +0 -2
- package/dist/src/agent/service/async-queue.js +0 -2
- package/dist/src/agent/service/btw-query.js +0 -2
- package/dist/src/agent/service/build-direct-message-content.js +0 -2
- package/dist/src/agent/service/direct-turn-helpers.js +0 -2
- package/dist/src/agent/service/parse-outbound-session-key.js +0 -2
- package/dist/src/agent/service/process-direct-one-shot.js +0 -2
- package/dist/src/agent/service/process-direct-streaming.js +0 -2
- package/dist/src/agent/service/session-context-report.js +0 -2
- package/dist/src/agent/service/webchat-tts.js +0 -2
- package/dist/src/agent/service-inbound-utils.js +0 -2
- package/dist/src/agent/service.js +1 -2
- package/dist/src/agent/service.types.d.ts +2 -0
- package/dist/src/agent/session/session-config-service.js +0 -2
- package/dist/src/agent/session/session-context.js +0 -2
- package/dist/src/agent/session/session-hydrator.js +0 -2
- package/dist/src/agent/session/session-inspector.js +0 -2
- package/dist/src/agent/session/session-lifecycle.js +0 -2
- package/dist/src/agent/session/session-state-bag.js +0 -2
- package/dist/src/agent/session/tracker.js +0 -2
- package/dist/src/agent/skills/config.js +0 -2
- package/dist/src/agent/skills/filesystem-watcher.js +0 -2
- package/dist/src/agent/skills/format-skills-prompt.js +0 -2
- package/dist/src/agent/skills/hub-hash.js +0 -2
- package/dist/src/agent/skills/hub-lock.js +0 -2
- package/dist/src/agent/skills/hub-pull.js +0 -2
- package/dist/src/agent/skills/index.js +0 -2
- package/dist/src/agent/skills/install-target.js +0 -2
- package/dist/src/agent/skills/installer.js +0 -2
- package/dist/src/agent/skills/managed-store.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +0 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js +0 -2
- package/dist/src/agent/skills/marketplace/marketplace-category-order.js +0 -2
- package/dist/src/agent/skills/marketplace/registry.js +0 -2
- package/dist/src/agent/skills/marketplace/resolve-adapter.js +0 -2
- package/dist/src/agent/skills/parse-skill-metadata.js +0 -2
- package/dist/src/agent/skills/required-env-vars.js +0 -2
- package/dist/src/agent/skills/scanner.js +0 -2
- package/dist/src/agent/skills/skill-manage-ops.js +0 -2
- package/dist/src/agent/skills/skill-manager.js +0 -2
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js +0 -2
- package/dist/src/agent/skills/skill-tool-gating.js +0 -2
- package/dist/src/agent/skills/skill-view-path.js +0 -2
- package/dist/src/agent/skills/skills-marketplace.js +0 -2
- package/dist/src/agent/skills/test-framework.js +0 -2
- package/dist/src/agent/skills/watcher.js +0 -2
- package/dist/src/agent/skills/workspace-skills-dir.js +0 -2
- package/dist/src/agent/source-context/injector.js +0 -2
- package/dist/src/agent/source-context/types.js +0 -2
- package/dist/src/agent/starter-agents.js +0 -2
- package/dist/src/agent/streaming/reasoning-visibility-sse.js +0 -2
- package/dist/src/agent/tool-manuals/browser.js +0 -2
- package/dist/src/agent/tool-manuals/index.js +0 -2
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js +41 -4
- package/dist/src/agent/tools/apply-patch.js +0 -2
- package/dist/src/agent/tools/automation-tool.js +45 -8
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +0 -2
- package/dist/src/agent/tools/browser/tool/schemas.js +0 -2
- package/dist/src/agent/tools/chain-tracker.js +0 -2
- package/dist/src/agent/tools/clarify-tool.js +0 -2
- package/dist/src/agent/tools/cli-clarify.js +0 -2
- package/dist/src/agent/tools/communication.js +0 -2
- package/dist/src/agent/tools/composio-tool.js +0 -2
- package/dist/src/agent/tools/concurrency.js +0 -2
- package/dist/src/agent/tools/create-share-tool.js +0 -2
- package/dist/src/agent/tools/curated-memory-tool.js +0 -2
- package/dist/src/agent/tools/delegate-tool.js +0 -2
- package/dist/src/agent/tools/desktop-pet-tool.d.ts +12 -0
- package/dist/src/agent/tools/desktop-pet-tool.js +28 -2
- package/dist/src/agent/tools/dreaming-tool.js +0 -2
- package/dist/src/agent/tools/edit-diff.js +0 -2
- package/dist/src/agent/tools/error-pattern-matcher.js +0 -2
- package/dist/src/agent/tools/error-tracker.js +0 -2
- package/dist/src/agent/tools/exec-command.js +0 -2
- package/dist/src/agent/tools/execute-code-tool.js +0 -2
- package/dist/src/agent/tools/executor.js +0 -2
- package/dist/src/agent/tools/factory.d.ts +2 -0
- package/dist/src/agent/tools/factory.js +3 -4
- package/dist/src/agent/tools/find.js +0 -2
- package/dist/src/agent/tools/goal-evidence-recorder.js +0 -2
- package/dist/src/agent/tools/goal-tool.d.ts +7 -1
- package/dist/src/agent/tools/goal-tool.js +34 -7
- package/dist/src/agent/tools/grep.js +0 -2
- package/dist/src/agent/tools/image-generate-tool.js +0 -2
- package/dist/src/agent/tools/image-tool.js +0 -2
- package/dist/src/agent/tools/list-dir.js +0 -2
- package/dist/src/agent/tools/media-read-tool.js +0 -2
- package/dist/src/agent/tools/memory-tool.js +0 -2
- package/dist/src/agent/tools/metadata.js +0 -2
- package/dist/src/agent/tools/read.js +0 -2
- package/dist/src/agent/tools/search/http.js +0 -2
- package/dist/src/agent/tools/search/providers/bing-api.js +0 -2
- package/dist/src/agent/tools/search/providers/bing-html.js +0 -2
- package/dist/src/agent/tools/search/providers/brave.js +0 -2
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js +0 -2
- package/dist/src/agent/tools/search/providers/searxng.js +0 -2
- package/dist/src/agent/tools/search/providers/tavily.js +0 -2
- package/dist/src/agent/tools/search/region.js +0 -2
- package/dist/src/agent/tools/search/registry.js +0 -2
- package/dist/src/agent/tools/search/resolve-config.js +0 -2
- package/dist/src/agent/tools/send-media.js +0 -2
- package/dist/src/agent/tools/session-search-tool.js +0 -2
- package/dist/src/agent/tools/session-status-tool.js +0 -2
- package/dist/src/agent/tools/skill-install-tool.js +0 -2
- package/dist/src/agent/tools/skill-manage-tool.js +0 -2
- package/dist/src/agent/tools/skills-tools.js +0 -2
- package/dist/src/agent/tools/structured-output.js +0 -2
- package/dist/src/agent/tools/todo-tool.js +0 -2
- package/dist/src/agent/tools/tool-manual-tool.js +0 -2
- package/dist/src/agent/tools/tool-paths.js +0 -2
- package/dist/src/agent/tools/truncate.js +0 -2
- package/dist/src/agent/tools/tts-tool.js +0 -2
- package/dist/src/agent/tools/update-plan-tool.js +0 -2
- package/dist/src/agent/tools/url-safety.js +0 -2
- package/dist/src/agent/tools/usage-analyzer.js +0 -2
- package/dist/src/agent/tools/web-extract.js +0 -2
- package/dist/src/agent/tools/web.js +4 -4
- package/dist/src/agent/tools/workflow-tool.js +32 -4
- package/dist/src/agent/tools/write.js +23 -5
- package/dist/src/agent/tools/xopc-use-tool.d.ts +6 -2
- package/dist/src/agent/tools/xopc-use-tool.js +216 -8
- package/dist/src/agent/transcript/google-api.js +0 -2
- package/dist/src/agent/transcript/model-selection.js +0 -2
- package/dist/src/agent/transcript/provider-capabilities.js +0 -2
- package/dist/src/agent/transcript/session-transcript-repair.js +0 -2
- package/dist/src/agent/transcript/strip-tool-messages.js +0 -2
- package/dist/src/agent/transcript/thinking-types.js +0 -2
- package/dist/src/agent/transcript/thinking.js +0 -2
- package/dist/src/agent/transcript/tool-call-id.js +0 -2
- package/dist/src/agent/transcript/transcript-hygiene.js +0 -2
- package/dist/src/agent/transcript/transcript-policy.js +0 -2
- package/dist/src/agent/workflow/agent-progress.js +0 -2
- package/dist/src/agent/workflow/builtins/index.js +0 -2
- package/dist/src/agent/workflow/catalog.js +0 -2
- package/dist/src/agent/workflow/progress-broker.js +0 -2
- package/dist/src/agent/workflow/snapshot-empty.js +0 -2
- package/dist/src/agent/workflow/snapshot.js +0 -2
- package/dist/src/agent/workflow/step-labels.js +0 -2
- package/dist/src/agent/workflow/structured-output-tool.js +0 -2
- package/dist/src/agent/workflow/subagent-runner.js +0 -2
- package/dist/src/agent/workflow/workflow-child-tools.js +0 -2
- package/dist/src/agent/workspace-runtime/registry.js +0 -2
- package/dist/src/agent-manifest/index.js +0 -2
- package/dist/src/agent-manifest/preset-chain.js +0 -2
- package/dist/src/agent-manifest/prompt.js +0 -2
- package/dist/src/agent-manifest/resolver.js +0 -2
- package/dist/src/agent-manifest/schema.js +0 -2
- package/dist/src/agent-manifest/validator.js +0 -2
- package/dist/src/agent-runtime/boundary-guard.js +0 -2
- package/dist/src/agent-runtime/memory-runtime.js +0 -2
- package/dist/src/agent-runtime/model-router.js +0 -2
- package/dist/src/agent-runtime/run-trace.js +0 -2
- package/dist/src/agent-runtime/runtime-profile.js +0 -2
- package/dist/src/agent-runtime/tool-registry.js +0 -2
- package/dist/src/agent-runtime/workflow-runtime.js +0 -2
- package/dist/src/ai-assist/text-assist.js +0 -2
- package/dist/src/auth/credentials.js +0 -2
- package/dist/src/auth/index.js +0 -2
- package/dist/src/auth/oauth/anthropic.js +0 -2
- package/dist/src/auth/oauth/github-copilot.js +0 -2
- package/dist/src/auth/oauth/google-oauth/google-antigravity.js +0 -2
- package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js +0 -2
- package/dist/src/auth/oauth/google-oauth/oauth-page.js +0 -2
- package/dist/src/auth/oauth/google-oauth/pkce.js +0 -2
- package/dist/src/auth/oauth/kimi-coding.js +0 -2
- package/dist/src/auth/oauth/minimax-cn.js +0 -2
- package/dist/src/auth/oauth/minimax.js +0 -2
- package/dist/src/auth/oauth/openai-codex.js +0 -2
- package/dist/src/auth/oauth/pkce.js +0 -2
- package/dist/src/auth/profiles/oauth.js +0 -2
- package/dist/src/auth/profiles/order.js +0 -2
- package/dist/src/auth/profiles/profiles.js +0 -2
- package/dist/src/auth/profiles/store.js +0 -2
- package/dist/src/auth/sync-provider-auth.js +0 -2
- package/dist/src/automations/api/routes.js +0 -2
- package/dist/src/automations/domain/schedule.js +0 -2
- package/dist/src/automations/domain/validation.js +0 -2
- package/dist/src/automations/draft/automation-draft-prompt.js +0 -2
- package/dist/src/automations/draft/automation-draft-service.js +0 -2
- package/dist/src/automations/draft/automation-draft-validator.js +0 -2
- package/dist/src/automations/product-events.js +0 -2
- package/dist/src/automations/service/action-executor.js +0 -2
- package/dist/src/automations/service/automation-service.js +0 -2
- package/dist/src/automations/storage/automation-repository.js +0 -2
- package/dist/src/automations/storage/automation-run-repository.js +0 -2
- package/dist/src/browser/actions/extension-registry-bridge.js +0 -2
- package/dist/src/browser/actions/registry.js +0 -2
- package/dist/src/browser/backend-from-config.js +0 -2
- package/dist/src/browser/browser-command-timeout.js +0 -2
- package/dist/src/browser/cache-dir-policy.js +0 -2
- package/dist/src/browser/cdp-local-launcher.js +0 -2
- package/dist/src/browser/cdp-supervisor.js +0 -2
- package/dist/src/browser/free-port.js +0 -2
- package/dist/src/browser/humanize.js +0 -2
- package/dist/src/browser/install-lock.js +0 -2
- package/dist/src/browser/manager.js +0 -2
- package/dist/src/browser/pipeline/output.js +0 -2
- package/dist/src/browser/pipeline/runner.js +0 -2
- package/dist/src/browser/pipeline/schema.js +0 -2
- package/dist/src/browser/pipeline/source.js +0 -2
- package/dist/src/browser/pipeline/template.js +0 -2
- package/dist/src/browser/providers/browser-ext-install.js +0 -2
- package/dist/src/browser/providers/browser-use.js +0 -2
- package/dist/src/browser/providers/browserbase.js +0 -2
- package/dist/src/browser/providers/cloakbrowser.js +0 -2
- package/dist/src/browser/providers/extension-ws-acquire.js +0 -2
- package/dist/src/browser/providers/extension.js +0 -2
- package/dist/src/browser/providers/playwright-doctor.js +13 -4
- package/dist/src/browser/providers/playwright-install.js +0 -2
- package/dist/src/browser/readiness.js +0 -2
- package/dist/src/browser/schemas.js +0 -2
- package/dist/src/browser/session-lifecycle.js +0 -2
- package/dist/src/browser/snapshot-helpers.js +0 -2
- package/dist/src/browser/stealth.js +0 -2
- package/dist/src/browser/url-policy.js +0 -2
- package/dist/src/capabilities/store-connector.js +0 -2
- package/dist/src/channels/attachments/attachment-classifiers.js +0 -2
- package/dist/src/channels/attachments/inbound-persist.js +0 -2
- package/dist/src/channels/attachments/inbound-types.js +0 -2
- package/dist/src/channels/attachments/outbound-tts-persist.js +0 -2
- package/dist/src/channels/attachments/voice-stt-webchat.js +0 -2
- package/dist/src/channels/catalog/channel-catalog-service.js +0 -2
- package/dist/src/channels/config-helpers.js +0 -2
- package/dist/src/channels/envelope-timestamp.js +0 -2
- package/dist/src/channels/exec-approval-runtime.js +0 -2
- package/dist/src/channels/health-monitor.js +0 -2
- package/dist/src/channels/heartbeat-scheduler.js +0 -2
- package/dist/src/channels/internal-outbound.js +0 -2
- package/dist/src/channels/lifecycle-supervisor.js +0 -2
- package/dist/src/channels/manager.js +0 -2
- package/dist/src/channels/media.js +0 -2
- package/dist/src/channels/outbound/deliver.js +0 -2
- package/dist/src/channels/outbound/normalize.js +0 -2
- package/dist/src/channels/outbound/persist-store.js +0 -2
- package/dist/src/channels/outbound/queue.js +0 -2
- package/dist/src/channels/outbound-sender.js +0 -2
- package/dist/src/channels/pairing/allow-from-file.js +0 -2
- package/dist/src/channels/pairing/approve-cli.js +0 -2
- package/dist/src/channels/pairing/pairing-challenge.js +0 -2
- package/dist/src/channels/pairing/pairing-constants.js +0 -2
- package/dist/src/channels/pairing/pairing-events.js +0 -2
- package/dist/src/channels/pairing/pairing-messages.js +0 -2
- package/dist/src/channels/pairing/pairing-service.js +0 -2
- package/dist/src/channels/pairing/pairing-store-adapter.js +0 -2
- package/dist/src/channels/pairing/pairing-store.js +0 -2
- package/dist/src/channels/pairing/paths.js +0 -2
- package/dist/src/channels/pairing/preseed-allow-from.js +0 -2
- package/dist/src/channels/pipeline.js +0 -2
- package/dist/src/channels/plugin-registry.js +0 -2
- package/dist/src/channels/plugins/registry.js +0 -2
- package/dist/src/channels/restart-policy.js +0 -2
- package/dist/src/channels/security-helpers.js +0 -2
- package/dist/src/channels/security.js +0 -2
- package/dist/src/channels/setup-wizard-discovery.js +0 -2
- package/dist/src/chat-commands/agent-edit.js +0 -2
- package/dist/src/chat-commands/builtins/config.js +0 -2
- package/dist/src/chat-commands/builtins/context.js +0 -2
- package/dist/src/chat-commands/builtins/goal.js +0 -2
- package/dist/src/chat-commands/builtins/model.js +0 -2
- package/dist/src/chat-commands/builtins/review.js +0 -2
- package/dist/src/chat-commands/builtins/session.js +0 -2
- package/dist/src/chat-commands/builtins/skill.js +0 -2
- package/dist/src/chat-commands/builtins/subgoal.js +0 -2
- package/dist/src/chat-commands/builtins/system.js +0 -2
- package/dist/src/chat-commands/builtins/thinking.js +0 -2
- package/dist/src/chat-commands/builtins/tts.js +0 -2
- package/dist/src/chat-commands/builtins/workflow.js +0 -2
- package/dist/src/chat-commands/command-parse.js +0 -2
- package/dist/src/chat-commands/config-paths.js +0 -2
- package/dist/src/chat-commands/config-value.js +0 -2
- package/dist/src/chat-commands/context.js +0 -2
- package/dist/src/chat-commands/format-output.js +0 -2
- package/dist/src/chat-commands/index.js +0 -2
- package/dist/src/chat-commands/processor.js +0 -2
- package/dist/src/chat-commands/registry.js +0 -2
- package/dist/src/chat-commands/session-key.js +0 -2
- package/dist/src/cli/argv-invocation.js +0 -2
- package/dist/src/cli/argv.js +0 -2
- package/dist/src/cli/bin.js +0 -2
- package/dist/src/cli/cli-log-level-preset.js +0 -2
- package/dist/src/cli/command-catalog.js +0 -2
- package/dist/src/cli/command-loaders.js +0 -2
- package/dist/src/cli/command-manifest.js +0 -2
- package/dist/src/cli/command-path-matches.js +0 -2
- package/dist/src/cli/command-path-policy.js +0 -2
- package/dist/src/cli/command-startup-policy.js +0 -2
- package/dist/src/cli/commands/agent/interactive.js +0 -2
- package/dist/src/cli/commands/agent/sessions.js +0 -2
- package/dist/src/cli/commands/agent/stream-renderer.js +0 -2
- package/dist/src/cli/commands/agent.js +0 -2
- package/dist/src/cli/commands/agents.js +0 -2
- package/dist/src/cli/commands/auth.js +0 -2
- package/dist/src/cli/commands/browser-cli-helpers.js +0 -2
- package/dist/src/cli/commands/browser.js +0 -2
- package/dist/src/cli/commands/channels.js +0 -2
- package/dist/src/cli/commands/config.js +0 -2
- package/dist/src/cli/commands/connectors.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-config.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +0 -2
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +0 -2
- package/dist/src/cli/commands/doctor/checks/config-health.js +0 -2
- package/dist/src/cli/commands/doctor/checks/database-schema.js +0 -2
- package/dist/src/cli/commands/doctor/checks/gateway-health.js +0 -2
- package/dist/src/cli/commands/doctor/checks/gateway-service.js +0 -2
- package/dist/src/cli/commands/doctor/checks/migrations.js +0 -2
- package/dist/src/cli/commands/doctor/checks/node-version.js +0 -2
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +0 -2
- package/dist/src/cli/commands/doctor/checks/security-audit.js +0 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +0 -2
- package/dist/src/cli/commands/doctor/checks/state-integrity.js +0 -2
- package/dist/src/cli/commands/doctor/checks/version-check.js +0 -2
- package/dist/src/cli/commands/doctor/checks/workspace-status.js +0 -2
- package/dist/src/cli/commands/doctor/flow.js +0 -2
- package/dist/src/cli/commands/doctor/format.js +0 -2
- package/dist/src/cli/commands/doctor/index.js +0 -2
- package/dist/src/cli/commands/extension-create.js +0 -2
- package/dist/src/cli/commands/extension-dev.js +0 -2
- package/dist/src/cli/commands/extension-marketplace.js +0 -2
- package/dist/src/cli/commands/extension-pack.js +0 -2
- package/dist/src/cli/commands/extension.js +0 -2
- package/dist/src/cli/commands/gateway/call.js +0 -2
- package/dist/src/cli/commands/gateway/health.js +0 -2
- package/dist/src/cli/commands/gateway/lifecycle-core.js +0 -2
- package/dist/src/cli/commands/gateway/lifecycle.js +0 -2
- package/dist/src/cli/commands/gateway/logs.js +0 -2
- package/dist/src/cli/commands/gateway/probe.js +0 -2
- package/dist/src/cli/commands/gateway/restart-health.js +0 -2
- package/dist/src/cli/commands/gateway/restart.js +0 -2
- package/dist/src/cli/commands/gateway/run-foreground.js +0 -2
- package/dist/src/cli/commands/gateway/service.js +0 -2
- package/dist/src/cli/commands/gateway/shared.js +0 -2
- package/dist/src/cli/commands/gateway/status.js +0 -2
- package/dist/src/cli/commands/gateway/stop.js +0 -2
- package/dist/src/cli/commands/gateway/subcommands.js +0 -2
- package/dist/src/cli/commands/gateway/token.js +0 -2
- package/dist/src/cli/commands/gateway-ssh-tunnel.js +0 -2
- package/dist/src/cli/commands/gateway.js +0 -2
- package/dist/src/cli/commands/goal.js +0 -2
- package/dist/src/cli/commands/image.js +0 -2
- package/dist/src/cli/commands/init.js +0 -2
- package/dist/src/cli/commands/logs.js +0 -2
- package/dist/src/cli/commands/models.js +0 -2
- package/dist/src/cli/commands/onboard/channels/index.js +0 -2
- package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js +0 -2
- package/dist/src/cli/commands/onboard/channels/registry.js +0 -2
- package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js +0 -2
- package/dist/src/cli/commands/onboard/gateway.js +0 -2
- package/dist/src/cli/commands/onboard/model.js +0 -2
- package/dist/src/cli/commands/onboard.js +0 -2
- package/dist/src/cli/commands/profile.js +0 -2
- package/dist/src/cli/commands/project.js +0 -2
- package/dist/src/cli/commands/providers.js +0 -2
- package/dist/src/cli/commands/resume.js +0 -2
- package/dist/src/cli/commands/search.js +0 -2
- package/dist/src/cli/commands/session/actions.js +0 -2
- package/dist/src/cli/commands/session/utils.js +0 -2
- package/dist/src/cli/commands/session.js +0 -2
- package/dist/src/cli/commands/setup-shared/output.js +0 -2
- package/dist/src/cli/commands/setup-shared/prompts.js +0 -2
- package/dist/src/cli/commands/setup-shared/runner.js +0 -2
- package/dist/src/cli/commands/setup-shared/types.js +0 -2
- package/dist/src/cli/commands/setup.js +0 -2
- package/dist/src/cli/commands/skills-test.js +0 -2
- package/dist/src/cli/commands/skills.js +0 -2
- package/dist/src/cli/commands/tailscale.js +0 -2
- package/dist/src/cli/commands/tui-runner.js +0 -2
- package/dist/src/cli/commands/tui.js +0 -2
- package/dist/src/cli/commands/tunnel.js +0 -2
- package/dist/src/cli/commands/update.js +0 -2
- package/dist/src/cli/commands/voice.js +0 -2
- package/dist/src/cli/context.js +0 -2
- package/dist/src/cli/extension-cli-register.js +0 -2
- package/dist/src/cli/gateway-run-argv.js +0 -2
- package/dist/src/cli/gateway-run-fast-path.js +0 -2
- package/dist/src/cli/index.js +0 -2
- package/dist/src/cli/registry.js +0 -2
- package/dist/src/cli/templates.js +0 -2
- package/dist/src/cli/utils/colors.js +0 -2
- package/dist/src/cli/utils/gateway-client-options.js +0 -2
- package/dist/src/cli/utils/gateway-client.js +0 -2
- package/dist/src/cli/utils/init-workspace-core.js +0 -2
- package/dist/src/cli/utils/init-workspace.js +0 -2
- package/dist/src/cli/utils/oauth-login.js +0 -2
- package/dist/src/cli/utils/oauth-providers.js +0 -2
- package/dist/src/cli/utils/session.js +0 -2
- package/dist/src/commands/agents.config.js +0 -2
- package/dist/src/config/agent-profile.js +0 -2
- package/dist/src/config/agent-typed-models.js +0 -2
- package/dist/src/config/commands.flags.js +0 -2
- package/dist/src/config/default-model.js +0 -2
- package/dist/src/config/diff.js +0 -2
- package/dist/src/config/gateway-bind.js +0 -2
- package/dist/src/config/index.js +0 -2
- package/dist/src/config/loader.js +0 -2
- package/dist/src/config/mcp-config-normalize.js +0 -2
- package/dist/src/config/model-input.js +0 -2
- package/dist/src/config/models-json.js +0 -2
- package/dist/src/config/paths-state.js +0 -2
- package/dist/src/config/paths.js +0 -2
- package/dist/src/config/profile.js +0 -2
- package/dist/src/config/public-url.js +0 -2
- package/dist/src/config/reload.js +0 -2
- package/dist/src/config/resolve-config-value.js +0 -2
- package/dist/src/config/rules.js +0 -2
- package/dist/src/config/runtime-overrides.js +0 -2
- package/dist/src/config/schema.js +0 -2
- package/dist/src/config/validate-channel-configs.js +0 -2
- package/dist/src/config/voice.js +0 -2
- package/dist/src/config/web-patch.js +0 -2
- package/dist/src/config/workspace-defaults.js +0 -2
- package/dist/src/config/workspace-dirs.js +0 -2
- package/dist/src/config/workspace-path-helpers.js +0 -2
- package/dist/src/config/workspace-path.js +0 -2
- package/dist/src/connectors/approval.js +0 -2
- package/dist/src/connectors/auth-provider-registry.js +0 -2
- package/dist/src/connectors/builtin-catalog.js +0 -2
- package/dist/src/connectors/catalog.js +0 -2
- package/dist/src/connectors/composio-catalog.js +0 -2
- package/dist/src/connectors/composio-logo.js +0 -2
- package/dist/src/connectors/composio-sessions.js +9 -5
- package/dist/src/connectors/composio-triggers.js +0 -2
- package/dist/src/connectors/composio.js +0 -2
- package/dist/src/connectors/connector-memory-sync.js +0 -2
- package/dist/src/connectors/health.js +0 -2
- package/dist/src/connectors/install.js +0 -2
- package/dist/src/connectors/instances.js +0 -2
- package/dist/src/connectors/integration-strategy.js +0 -2
- package/dist/src/connectors/lifecycle.js +0 -2
- package/dist/src/connectors/materialize.js +0 -2
- package/dist/src/connectors/policy.js +0 -2
- package/dist/src/connectors/providers.js +0 -2
- package/dist/src/connectors/registries/modelscope.js +0 -2
- package/dist/src/connectors/registries/official-mcp.js +0 -2
- package/dist/src/connectors/registries/search.js +0 -2
- package/dist/src/connectors/registries/smithery.js +0 -2
- package/dist/src/connectors/runtime-adapter-registry.js +0 -2
- package/dist/src/connectors/secret-store.js +0 -2
- package/dist/src/connectors/setup-secrets.js +0 -2
- package/dist/src/connectors/supervisor.js +0 -2
- package/dist/src/connectors/usage.js +0 -2
- package/dist/src/connectors/workflow-preflight.js +0 -2
- package/dist/src/daemon/constants.js +0 -2
- package/dist/src/daemon/install-plan.js +0 -2
- package/dist/src/daemon/launchd.js +0 -2
- package/dist/src/daemon/schtasks.js +0 -2
- package/dist/src/daemon/service-audit.js +0 -2
- package/dist/src/daemon/service.js +0 -2
- package/dist/src/daemon/systemd.js +0 -2
- package/dist/src/document-understanding/extract.js +0 -2
- package/dist/src/errors/index.js +0 -2
- package/dist/src/extensions/activation-context.js +0 -2
- package/dist/src/extensions/activation-planner.js +0 -2
- package/dist/src/extensions/api.js +0 -2
- package/dist/src/extensions/bundle-mcp.js +0 -2
- package/dist/src/extensions/bundled-extension-activation.js +0 -2
- package/dist/src/extensions/diagnostics.js +0 -2
- package/dist/src/extensions/discover-extensions.js +0 -2
- package/dist/src/extensions/engine-check.js +0 -2
- package/dist/src/extensions/extension-metadata-snapshot.js +0 -2
- package/dist/src/extensions/extension-registry-impl.js +0 -2
- package/dist/src/extensions/health.js +0 -2
- package/dist/src/extensions/hooks.js +0 -2
- package/dist/src/extensions/index.js +0 -2
- package/dist/src/extensions/install-transaction.js +0 -2
- package/dist/src/extensions/install.js +0 -2
- package/dist/src/extensions/loader.js +0 -2
- package/dist/src/extensions/lockfile.js +0 -2
- package/dist/src/extensions/manifest-registry.js +0 -2
- package/dist/src/extensions/marketplace.js +0 -2
- package/dist/src/extensions/media-provider-contracts.js +0 -2
- package/dist/src/extensions/normalize-manifest.js +0 -2
- package/dist/src/extensions/onboard-helpers.js +0 -2
- package/dist/src/extensions/package-contract.js +0 -2
- package/dist/src/extensions/sdk/channel-entry.js +0 -2
- package/dist/src/extensions/sdk/channel-helpers.js +0 -2
- package/dist/src/extensions/sdk/index.js +0 -2
- package/dist/src/extensions/sdk/lazy.js +0 -2
- package/dist/src/extensions/sdk/testing.js +0 -2
- package/dist/src/extensions/security.js +0 -2
- package/dist/src/extensions/slots.js +0 -2
- package/dist/src/extensions/speech-provider-contracts.js +0 -2
- package/dist/src/extensions/store-zip-limits.js +0 -2
- package/dist/src/extensions/typed-event-bus.js +0 -2
- package/dist/src/extensions/types/hooks.js +0 -2
- package/dist/src/extensions/types/providers.js +0 -2
- package/dist/src/extensions/update.js +0 -2
- package/dist/src/extensions/when-context.js +0 -2
- package/dist/src/extensions/when-expression.js +0 -2
- package/dist/src/gateway/agent-builtin-tools.js +0 -2
- package/dist/src/gateway/agent-run-relay.js +0 -2
- package/dist/src/gateway/agents-admin.js +0 -2
- package/dist/src/gateway/auth.js +0 -2
- package/dist/src/gateway/capability-presets-admin.js +0 -2
- package/dist/src/gateway/chat-limits.js +0 -2
- package/dist/src/gateway/chat-stream/mapper.js +28 -14
- package/dist/src/gateway/chat-stream/pet-feedback.d.ts +13 -0
- package/dist/src/gateway/chat-stream/pet-feedback.js +45 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +26 -0
- package/dist/src/gateway/clarify-bridge.js +3 -3
- package/dist/src/gateway/clarify-runtime.js +0 -2
- package/dist/src/gateway/client-ip.js +0 -2
- package/dist/src/gateway/config-tools-web.js +0 -2
- package/dist/src/gateway/credential.js +0 -2
- package/dist/src/gateway/discovery/mdns.js +0 -2
- package/dist/src/gateway/dreaming-automation-reconciler.js +0 -2
- package/dist/src/gateway/ensure-network-cors.js +0 -2
- package/dist/src/gateway/file-path-classifier.js +0 -2
- package/dist/src/gateway/file-reference-registry.js +0 -2
- package/dist/src/gateway/global-defaults-admin.js +0 -2
- package/dist/src/gateway/heartbeat/service.js +0 -2
- package/dist/src/gateway/hono/app.js +0 -2
- package/dist/src/gateway/hono/lib/agent-model.js +0 -2
- package/dist/src/gateway/hono/lib/config-payload.js +0 -2
- package/dist/src/gateway/hono/lib/extension-assets.js +0 -2
- package/dist/src/gateway/hono/lib/extension-store.js +0 -2
- package/dist/src/gateway/hono/lib/mask-secret-length.js +0 -2
- package/dist/src/gateway/hono/lib/route-logger.js +0 -2
- package/dist/src/gateway/hono/lib/safe-providers-config.js +0 -2
- package/dist/src/gateway/hono/lib/safe-voice-config.js +0 -2
- package/dist/src/gateway/hono/lib/startup-unavailable.js +0 -2
- package/dist/src/gateway/hono/lib/static-ui.js +0 -2
- package/dist/src/gateway/hono/middleware/auth.js +0 -2
- package/dist/src/gateway/hono/middleware/log-context.js +0 -2
- package/dist/src/gateway/hono/middleware/logger.js +0 -2
- package/dist/src/gateway/hono/middleware/route-errors.js +0 -2
- package/dist/src/gateway/hono/middleware/scopes.js +0 -2
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js +0 -2
- package/dist/src/gateway/hono/oauth-async.js +0 -2
- package/dist/src/gateway/hono/oauth.js +0 -2
- package/dist/src/gateway/hono/routes/activity.js +0 -2
- package/dist/src/gateway/hono/routes/agent-stream.js +0 -2
- package/dist/src/gateway/hono/routes/agents.js +0 -2
- package/dist/src/gateway/hono/routes/ai-assist.js +0 -2
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +0 -2
- package/dist/src/gateway/hono/routes/browser-install.js +0 -2
- package/dist/src/gateway/hono/routes/browser.js +0 -2
- package/dist/src/gateway/hono/routes/capabilities.js +0 -2
- package/dist/src/gateway/hono/routes/capability-presets.js +0 -2
- package/dist/src/gateway/hono/routes/channels.js +0 -2
- package/dist/src/gateway/hono/routes/commands-skills.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/agents.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/channels.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/gateway.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/misc.js +0 -2
- package/dist/src/gateway/hono/routes/config-patch/result.js +0 -2
- package/dist/src/gateway/hono/routes/config.js +0 -2
- package/dist/src/gateway/hono/routes/connectors.js +0 -2
- package/dist/src/gateway/hono/routes/doctor.js +0 -2
- package/dist/src/gateway/hono/routes/dreaming.js +0 -2
- package/dist/src/gateway/hono/routes/exposure.js +0 -2
- package/dist/src/gateway/hono/routes/extension-gateway.js +0 -2
- package/dist/src/gateway/hono/routes/global-defaults.js +0 -2
- package/dist/src/gateway/hono/routes/goals.js +0 -2
- package/dist/src/gateway/hono/routes/home.js +0 -2
- package/dist/src/gateway/hono/routes/host-fs.js +0 -2
- package/dist/src/gateway/hono/routes/index.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-bundles.js +0 -2
- package/dist/src/gateway/hono/routes/lazy-fallback.js +0 -2
- package/dist/src/gateway/hono/routes/local-apps.js +0 -2
- package/dist/src/gateway/hono/routes/logs.js +0 -2
- package/dist/src/gateway/hono/routes/mcp.js +0 -2
- package/dist/src/gateway/hono/routes/media.js +0 -2
- package/dist/src/gateway/hono/routes/memory.js +0 -2
- package/dist/src/gateway/hono/routes/migrations.js +0 -2
- package/dist/src/gateway/hono/routes/mobile.js +0 -2
- package/dist/src/gateway/hono/routes/models.js +0 -2
- package/dist/src/gateway/hono/routes/notes.js +3 -3
- package/dist/src/gateway/hono/routes/projects.js +0 -2
- package/dist/src/gateway/hono/routes/public-gateway.js +0 -2
- package/dist/src/gateway/hono/routes/search.js +0 -2
- package/dist/src/gateway/hono/routes/sessions.js +0 -2
- package/dist/src/gateway/hono/routes/shares.js +0 -2
- package/dist/src/gateway/hono/routes/site-shares.js +0 -2
- package/dist/src/gateway/hono/routes/status.js +0 -2
- package/dist/src/gateway/hono/routes/tui.js +0 -2
- package/dist/src/gateway/hono/routes/tunnel.js +0 -2
- package/dist/src/gateway/hono/routes/update.js +0 -2
- package/dist/src/gateway/hono/routes/voice.js +0 -2
- package/dist/src/gateway/hono/routes/work-discovery.js +0 -2
- package/dist/src/gateway/hono/routes/workflows.js +0 -2
- package/dist/src/gateway/hono/routes/workspace.js +0 -2
- package/dist/src/gateway/hono/routes/you.js +0 -2
- package/dist/src/gateway/hono/sse-json.js +0 -2
- package/dist/src/gateway/hono/sse.js +0 -2
- package/dist/src/gateway/host.js +0 -2
- package/dist/src/gateway/image-capabilities.js +0 -2
- package/dist/src/gateway/listen.js +0 -2
- package/dist/src/gateway/lock.js +0 -2
- package/dist/src/gateway/ports.js +0 -2
- package/dist/src/gateway/protocol.js +0 -2
- package/dist/src/gateway/public-url.js +0 -2
- package/dist/src/gateway/rate-limit/auth-policy.js +0 -2
- package/dist/src/gateway/rate-limit/buckets.js +0 -2
- package/dist/src/gateway/rate-limit/env-flags.js +0 -2
- package/dist/src/gateway/resolve-channel-connect-defer.js +0 -2
- package/dist/src/gateway/resolve-webchat-session-key.js +0 -2
- package/dist/src/gateway/respawn.js +0 -2
- package/dist/src/gateway/run-loop.js +0 -2
- package/dist/src/gateway/runtime-config.js +0 -2
- package/dist/src/gateway/security/audit.js +0 -2
- package/dist/src/gateway/security/csp.js +0 -2
- package/dist/src/gateway/security/dangerous-tools.js +0 -2
- package/dist/src/gateway/security/external-content.js +0 -2
- package/dist/src/gateway/security/known-weak-secrets.js +0 -2
- package/dist/src/gateway/security/loopback.js +0 -2
- package/dist/src/gateway/security/operator-scopes.js +0 -2
- package/dist/src/gateway/security/origin-check.js +0 -2
- package/dist/src/gateway/security/preauth-connection-budget.js +0 -2
- package/dist/src/gateway/security/secret-equal.js +0 -2
- package/dist/src/gateway/server-tailscale.js +0 -2
- package/dist/src/gateway/server.js +0 -2
- package/dist/src/gateway/service/agent-runner.js +0 -2
- package/dist/src/gateway/service/config-coordinator.js +0 -2
- package/dist/src/gateway/service/marketplace-service.js +0 -2
- package/dist/src/gateway/service/run-gateway-agent.js +0 -2
- package/dist/src/gateway/service/session-chat-ids.js +0 -2
- package/dist/src/gateway/service/sessions-api.js +0 -2
- package/dist/src/gateway/service/sse-hub.js +0 -2
- package/dist/src/gateway/service.js +1 -2
- package/dist/src/gateway/session-reset-service.js +0 -2
- package/dist/src/gateway/startup-readiness.js +0 -2
- package/dist/src/gateway/startup-trace.js +0 -2
- package/dist/src/gateway/tailscale-auth.js +0 -2
- package/dist/src/gateway/tailscale-lifecycle.js +0 -2
- package/dist/src/gateway/tls-server.js +0 -2
- package/dist/src/gateway/trusted-proxy.js +0 -2
- package/dist/src/gateway/user-turn-input.js +0 -2
- package/dist/src/gateway/workspace-editor-path.js +0 -2
- package/dist/src/gateway/workspace-file-search.js +0 -2
- package/dist/src/gateway/workspace-fs-file-list.js +0 -2
- package/dist/src/gateway/workspace-heartbeat-path.js +0 -2
- package/dist/src/gateway/workspace-ripgrep.js +0 -2
- package/dist/src/gateway/ws-security.js +0 -2
- package/dist/src/generated/bundled-image-generation-providers.js +0 -2
- package/dist/src/goals/goal-contract-draft.js +0 -2
- package/dist/src/goals/goal-evidence-review.js +0 -2
- package/dist/src/goals/goal-notifications.js +0 -2
- package/dist/src/goals/goal-queue-store.js +0 -2
- package/dist/src/goals/goal-runner.js +0 -2
- package/dist/src/goals/goal-service.js +0 -2
- package/dist/src/goals/goal-store.js +0 -2
- package/dist/src/goals/goal-workflow-judge.js +0 -2
- package/dist/src/heartbeat/active-hours.js +0 -2
- package/dist/src/heartbeat/content-check.js +0 -2
- package/dist/src/heartbeat/event-prompt.js +0 -2
- package/dist/src/heartbeat/tokens.js +0 -2
- package/dist/src/heartbeat/wake.js +0 -2
- package/dist/src/i18n/format.js +0 -2
- package/dist/src/i18n/goals-bundle.js +0 -2
- package/dist/src/i18n/locale.js +0 -2
- package/dist/src/i18n/locales/goals.en.js +0 -2
- package/dist/src/i18n/locales/goals.zh.js +0 -2
- package/dist/src/i18n/locales/share-tool.en.js +0 -2
- package/dist/src/i18n/locales/share-tool.zh.js +0 -2
- package/dist/src/i18n/share-tool-bundle.js +0 -2
- package/dist/src/index.js +0 -2
- package/dist/src/infra/brew.js +0 -2
- package/dist/src/infra/bus/queue.js +0 -2
- package/dist/src/infra/debounce.js +0 -2
- package/dist/src/infra/exec.js +0 -2
- package/dist/src/infra/gateway-process-argv.js +0 -2
- package/dist/src/infra/gateway-processes.js +0 -2
- package/dist/src/infra/host-env-security-policy.js +0 -2
- package/dist/src/infra/host-env-security.js +0 -2
- package/dist/src/infra/http-proxy-env.js +0 -2
- package/dist/src/infra/is-main.js +0 -2
- package/dist/src/infra/json-utf8-bytes.js +0 -2
- package/dist/src/infra/node-sqlite.js +0 -2
- package/dist/src/infra/package-json.js +0 -2
- package/dist/src/infra/package-update-steps.js +0 -2
- package/dist/src/infra/path-env.js +0 -2
- package/dist/src/infra/path-prepend.js +0 -2
- package/dist/src/infra/ports.js +0 -2
- package/dist/src/infra/rate-limit/failure-limiter.js +0 -2
- package/dist/src/infra/rate-limit/keyed-store.js +0 -2
- package/dist/src/infra/rate-limit/rate-limiter.js +0 -2
- package/dist/src/infra/restart.js +0 -2
- package/dist/src/infra/retry.js +0 -2
- package/dist/src/infra/run-command.js +0 -2
- package/dist/src/infra/sqlite-errors.js +0 -2
- package/dist/src/infra/ssh-tunnel.js +0 -2
- package/dist/src/infra/stable-node-path.js +0 -2
- package/dist/src/infra/tailscale.js +0 -2
- package/dist/src/infra/undici-fetch.js +0 -2
- package/dist/src/infra/unhandled-rejections.js +0 -2
- package/dist/src/infra/update-channels.js +0 -2
- package/dist/src/infra/update-check.js +0 -2
- package/dist/src/infra/update-global.js +0 -2
- package/dist/src/infra/update-lock.js +0 -2
- package/dist/src/infra/update-log.js +0 -2
- package/dist/src/infra/update-restart.js +0 -2
- package/dist/src/infra/update-runner.js +0 -2
- package/dist/src/infra/update-startup.js +0 -2
- package/dist/src/infra/warning-filter.js +0 -2
- package/dist/src/infra/write-file-atomic.js +0 -2
- package/dist/src/knowledge/connected-knowledge-pipeline.js +0 -2
- package/dist/src/knowledge/coordinator.js +0 -2
- package/dist/src/knowledge/ingestion-service.js +0 -2
- package/dist/src/local-apps/acceptance.js +0 -2
- package/dist/src/local-apps/preview-runtime-bridge.js +0 -2
- package/dist/src/local-apps/runtime-entry.js +0 -2
- package/dist/src/local-apps/scaffold.js +0 -2
- package/dist/src/local-apps/service.js +0 -2
- package/dist/src/local-apps/store.js +0 -2
- package/dist/src/markdown/chunk.js +0 -2
- package/dist/src/markdown/code-spans.js +0 -2
- package/dist/src/markdown/fences.js +0 -2
- package/dist/src/markdown/frontmatter.js +0 -2
- package/dist/src/markdown/ir.js +0 -2
- package/dist/src/markdown/render.js +0 -2
- package/dist/src/markdown/tables.js +0 -2
- package/dist/src/mcp/channel-bridge.js +0 -2
- package/dist/src/mcp/channel-server.js +0 -2
- package/dist/src/mcp/channel-shared.js +0 -2
- package/dist/src/mcp/channel-tools.js +0 -2
- package/dist/src/mcp/gateway-http-client.js +0 -2
- package/dist/src/media/media-reference.js +0 -2
- package/dist/src/media/paths.js +0 -2
- package/dist/src/media/session-references.js +0 -2
- package/dist/src/media/store.js +0 -2
- package/dist/src/media/uri.js +0 -2
- package/dist/src/media-shared/http/api-key-rotation.js +0 -2
- package/dist/src/media-shared/http/deadline.js +0 -2
- package/dist/src/media-shared/http/private-network.js +0 -2
- package/dist/src/media-shared/http/provider-http-errors.js +0 -2
- package/dist/src/media-shared/http/provider-http.js +0 -2
- package/dist/src/media-shared/http/resolve-provider-http-request-config.js +0 -2
- package/dist/src/media-shared/http/ssrf-guard.js +0 -2
- package/dist/src/media-shared/http/test-helpers/mock-server.js +0 -2
- package/dist/src/media-understanding/audio-transcription-runner.js +0 -2
- package/dist/src/media-understanding/openai-compatible-audio.js +0 -2
- package/dist/src/media-understanding/registry.js +0 -2
- package/dist/src/media-understanding/resolve-entries.js +0 -2
- package/dist/src/media-understanding/runner.js +0 -2
- package/dist/src/migrations/config/default-capability-preset.js +0 -2
- package/dist/src/migrations/registry.js +0 -2
- package/dist/src/migrations/runner.js +0 -2
- package/dist/src/mobile/notification-service.js +0 -2
- package/dist/src/mobile/notification-store.js +0 -2
- package/dist/src/mobile/notification-types.js +0 -2
- package/dist/src/notes/agent-context.js +0 -2
- package/dist/src/notes/attachment-ref.js +0 -2
- package/dist/src/notes/note-attachment-sync.js +0 -2
- package/dist/src/notes/note-index-meta.js +0 -2
- package/dist/src/notes/note-markdown.js +0 -2
- package/dist/src/notes/paths.js +0 -2
- package/dist/src/notes/service.d.ts +3 -1
- package/dist/src/notes/service.js +19 -5
- package/dist/src/notes/store.js +0 -2
- package/dist/src/package-version.js +0 -2
- package/dist/src/pets/factory.d.ts +13 -0
- package/dist/src/pets/factory.js +23 -2
- package/dist/src/pets/manifest.js +0 -2
- package/dist/src/pets/validator.js +0 -2
- package/dist/src/process/kill-tree.js +0 -2
- package/dist/src/project-trust/trust-store.js +0 -2
- package/dist/src/projects/automation-bind.js +0 -2
- package/dist/src/projects/goal-bind.js +0 -2
- package/dist/src/projects/memory-bind.js +0 -2
- package/dist/src/projects/project-agent-suggestion.js +0 -2
- package/dist/src/projects/project-agent.js +0 -2
- package/dist/src/projects/project-kind.js +0 -2
- package/dist/src/projects/project-loop.js +0 -2
- package/dist/src/projects/project-service.js +0 -2
- package/dist/src/projects/project-store.js +0 -2
- package/dist/src/projects/session-bind.js +0 -2
- package/dist/src/projects/workflow-bind.js +0 -2
- package/dist/src/projects/workspace-project.js +0 -2
- package/dist/src/projects/workspace.js +0 -2
- package/dist/src/providers/auth-runtime/auth-profile-store.js +0 -2
- package/dist/src/providers/auth-runtime/is-configured.js +0 -2
- package/dist/src/providers/auth-runtime/oauth.js +0 -2
- package/dist/src/providers/auth-runtime/resolve-api-key.js +0 -2
- package/dist/src/providers/auth-runtime/resolve-auth.js +0 -2
- package/dist/src/providers/constants.js +0 -2
- package/dist/src/providers/domestic-presets.js +0 -2
- package/dist/src/providers/env-keys.js +0 -2
- package/dist/src/providers/extension-stream-bridge.js +0 -2
- package/dist/src/providers/index.js +0 -2
- package/dist/src/providers/model-call.js +0 -2
- package/dist/src/providers/model-discovery.js +0 -2
- package/dist/src/providers/model-registry.js +0 -2
- package/dist/src/providers/model-supplements.js +0 -2
- package/dist/src/providers/plugin-registry.js +0 -2
- package/dist/src/providers/presentation.js +0 -2
- package/dist/src/remote-access/exposure-guards.js +0 -2
- package/dist/src/remote-access/exposure-manager.js +0 -2
- package/dist/src/review/review-git.js +0 -2
- package/dist/src/review/review-types.js +0 -2
- package/dist/src/routing/account-id.js +0 -2
- package/dist/src/routing/agent-session-key.js +0 -2
- package/dist/src/routing/bindings.js +0 -2
- package/dist/src/routing/index.js +0 -2
- package/dist/src/routing/resolve-route.js +0 -2
- package/dist/src/routing/resolve-tui-session-key.js +0 -2
- package/dist/src/routing/session-key-utils.js +0 -2
- package/dist/src/routing/session-key.js +0 -2
- package/dist/src/session/abort-cutoff.js +0 -2
- package/dist/src/session/chat-export.js +0 -2
- package/dist/src/session/client-history.js +0 -2
- package/dist/src/session/compaction-checkpoints.js +0 -2
- package/dist/src/session/config-store.js +0 -2
- package/dist/src/session/init-session-turn.js +0 -2
- package/dist/src/session/lifecycle-timestamps.js +0 -2
- package/dist/src/session/load-jsonl-entries.js +0 -2
- package/dist/src/session/manager.js +0 -2
- package/dist/src/session/patch-metadata.js +0 -2
- package/dist/src/session/reset-policy.js +0 -2
- package/dist/src/session/reset-triggers.js +0 -2
- package/dist/src/session/reset-type.js +0 -2
- package/dist/src/session/resolve-session.js +0 -2
- package/dist/src/session/session-context-for-llm.js +0 -2
- package/dist/src/session/session-id.js +0 -2
- package/dist/src/session/session-title.js +0 -2
- package/dist/src/session/session-workspace.js +0 -2
- package/dist/src/session/store.js +0 -2
- package/dist/src/session/stored-rows-to-file-entries.js +0 -2
- package/dist/src/session/thinking-resolve.js +0 -2
- package/dist/src/session/transcript-events.js +0 -2
- package/dist/src/session/transcript-format.js +0 -2
- package/dist/src/session/transcript-outline.js +0 -2
- package/dist/src/session/transcript-stats.js +0 -2
- package/dist/src/session/types.js +0 -2
- package/dist/src/session/user-round-delete.js +0 -2
- package/dist/src/share/share-audit.js +0 -2
- package/dist/src/share/share-auto.js +0 -2
- package/dist/src/share/share-config.js +0 -2
- package/dist/src/share/share-landing.js +0 -2
- package/dist/src/share/share-rate-limit.js +0 -2
- package/dist/src/share/share-store.js +0 -2
- package/dist/src/share/share-thumbnail.js +0 -2
- package/dist/src/share/share-types.js +0 -2
- package/dist/src/share/share-url.js +0 -2
- package/dist/src/share/share-zip.js +0 -2
- package/dist/src/share/site-proxy.js +0 -2
- package/dist/src/share/site-share-config.js +0 -2
- package/dist/src/share/site-share-router.js +0 -2
- package/dist/src/share/site-share-store.js +0 -2
- package/dist/src/share/site-share-types.js +0 -2
- package/dist/src/share/site-static-serve.js +0 -2
- package/dist/src/storage/sqlite/activity-repository.js +0 -2
- package/dist/src/storage/sqlite/config-repository.js +0 -2
- package/dist/src/storage/sqlite/connection.js +0 -2
- package/dist/src/storage/sqlite/connector-repository.js +0 -2
- package/dist/src/storage/sqlite/fts.js +0 -2
- package/dist/src/storage/sqlite/knowledge-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-index-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-records-repository.js +0 -2
- package/dist/src/storage/sqlite/memory-reference-consent-repository.js +0 -2
- package/dist/src/storage/sqlite/migrations/discover.js +0 -2
- package/dist/src/storage/sqlite/migrations/errors.js +0 -2
- package/dist/src/storage/sqlite/migrations/runner.js +0 -2
- package/dist/src/storage/sqlite/note-agent-context-repository.js +0 -2
- package/dist/src/storage/sqlite/notes-repository.js +0 -2
- package/dist/src/storage/sqlite/paths.js +0 -2
- package/dist/src/storage/sqlite/row-mappers.js +0 -2
- package/dist/src/storage/sqlite/schema-version.js +0 -2
- package/dist/src/storage/sqlite/schema.js +0 -2
- package/dist/src/storage/sqlite/session-metadata.js +0 -2
- package/dist/src/storage/sqlite/session-repository.js +0 -2
- package/dist/src/storage/sqlite/transaction.js +0 -2
- package/dist/src/storage/sqlite/transcript-repository.js +0 -2
- package/dist/src/storage/sqlite/user-profile-setup-repository.js +0 -2
- package/dist/src/storage/sqlite/user-trust-repository.js +0 -2
- package/dist/src/tui/backends/embedded-backend.js +0 -2
- package/dist/src/tui/backends/gateway-sse-backend.js +0 -2
- package/dist/src/tui/chat-history.js +0 -2
- package/dist/src/tui/clipboard-image.js +0 -2
- package/dist/src/tui/clipboard-text.js +0 -2
- package/dist/src/tui/components/assistant-message.js +0 -2
- package/dist/src/tui/components/bash-execution.js +0 -2
- package/dist/src/tui/components/bash-summary.js +0 -2
- package/dist/src/tui/components/branch-message-summary.js +0 -2
- package/dist/src/tui/components/branch-summary.js +0 -2
- package/dist/src/tui/components/chat-log.js +0 -2
- package/dist/src/tui/components/compaction-summary.js +0 -2
- package/dist/src/tui/components/custom-editor.js +0 -2
- package/dist/src/tui/components/custom-message.js +0 -2
- package/dist/src/tui/components/dynamic-border.js +0 -2
- package/dist/src/tui/components/extension-dialog.js +0 -2
- package/dist/src/tui/components/fuzzy-filter.js +0 -2
- package/dist/src/tui/components/scoped-models-selector.js +0 -2
- package/dist/src/tui/components/searchable-select-list.js +0 -2
- package/dist/src/tui/components/session-selector.js +0 -2
- package/dist/src/tui/components/settings-selector.js +0 -2
- package/dist/src/tui/components/thinking-selector.js +0 -2
- package/dist/src/tui/components/tool-execution.js +0 -2
- package/dist/src/tui/components/tui-bottom-bar.js +0 -2
- package/dist/src/tui/components/tui-header.js +0 -2
- package/dist/src/tui/components/user-message.js +0 -2
- package/dist/src/tui/components/visual-truncate.js +0 -2
- package/dist/src/tui/extension-host/autocomplete.js +0 -2
- package/dist/src/tui/extension-host/host.js +0 -2
- package/dist/src/tui/extension-host/load-extensions.js +0 -2
- package/dist/src/tui/extension-host/runtime-context.js +0 -2
- package/dist/src/tui/extension-host/runtime.js +0 -2
- package/dist/src/tui/extension-host/surface.js +0 -2
- package/dist/src/tui/extension-host/tool-renderers.js +0 -2
- package/dist/src/tui/format-tui-hotkeys.js +0 -2
- package/dist/src/tui/sse-consumer.js +0 -2
- package/dist/src/tui/theme/dark.js +0 -2
- package/dist/src/tui/theme/light.js +0 -2
- package/dist/src/tui/theme-manager.js +0 -2
- package/dist/src/tui/theme.js +0 -2
- package/dist/src/tui/tool-summary.js +0 -2
- package/dist/src/tui/tui-agent-events.js +0 -2
- package/dist/src/tui/tui-command-formatters.js +0 -2
- package/dist/src/tui/tui-commands.js +0 -2
- package/dist/src/tui/tui-context-usage.js +0 -2
- package/dist/src/tui/tui-extension-user-message.js +0 -2
- package/dist/src/tui/tui-fd-path.js +0 -2
- package/dist/src/tui/tui-file-autocomplete.js +0 -2
- package/dist/src/tui/tui-follow-up-queue.js +0 -2
- package/dist/src/tui/tui-git-branch.js +0 -2
- package/dist/src/tui/tui-keybindings-file.js +0 -2
- package/dist/src/tui/tui-lifecycle.js +0 -2
- package/dist/src/tui/tui-local-shell.js +0 -2
- package/dist/src/tui/tui-model-picker.js +0 -2
- package/dist/src/tui/tui-oauth-login.js +0 -2
- package/dist/src/tui/tui-overlays.js +0 -2
- package/dist/src/tui/tui-picker-overlay.js +0 -2
- package/dist/src/tui/tui-run-state.js +0 -2
- package/dist/src/tui/tui-run-status-format.js +0 -2
- package/dist/src/tui/tui-runtime-hints.js +0 -2
- package/dist/src/tui/tui-scoped-models.js +0 -2
- package/dist/src/tui/tui-session-actions.js +0 -2
- package/dist/src/tui/tui-session-format.js +0 -2
- package/dist/src/tui/tui-session-snapshot.js +0 -2
- package/dist/src/tui/tui-session-stats.js +0 -2
- package/dist/src/tui/tui-settings.js +0 -2
- package/dist/src/tui/tui-skills-autocomplete.js +0 -2
- package/dist/src/tui/tui-startup-resources.js +0 -2
- package/dist/src/tui/tui-startup-text.js +0 -2
- package/dist/src/tui/tui-stdio-filter.js +0 -2
- package/dist/src/tui/tui-submit.js +0 -2
- package/dist/src/tui/tui-suspend.js +0 -2
- package/dist/src/tui/tui-timeline-picker.js +0 -2
- package/dist/src/tui/tui-timeline.js +0 -2
- package/dist/src/tui/tui-tool-diff.js +0 -2
- package/dist/src/tui/tui-tool-result.js +0 -2
- package/dist/src/tui/tui-transcript-tree-picker.js +0 -2
- package/dist/src/tui/tui-transcript-tree.js +0 -2
- package/dist/src/tui/tui-types.js +0 -2
- package/dist/src/tui/tui-workflow-slash.js +0 -2
- package/dist/src/tui/tui.js +0 -2
- package/dist/src/tui/xopc-tui-keybindings.js +0 -2
- package/dist/src/tunnel/broker-client.js +0 -2
- package/dist/src/tunnel/consent.js +0 -2
- package/dist/src/tunnel/enable-lan-pairing.js +0 -2
- package/dist/src/tunnel/env.js +0 -2
- package/dist/src/tunnel/frp-subdomain-host.js +0 -2
- package/dist/src/tunnel/frpc-binary.js +0 -2
- package/dist/src/tunnel/frpc-config.js +0 -2
- package/dist/src/tunnel/frpc-extract.js +0 -2
- package/dist/src/tunnel/frpc-process.js +0 -2
- package/dist/src/tunnel/gateway-lifecycle.js +0 -2
- package/dist/src/tunnel/pair-context.js +0 -2
- package/dist/src/tunnel/pair-url.js +0 -2
- package/dist/src/tunnel/pairing-rate-limit.js +0 -2
- package/dist/src/tunnel/pairing.js +0 -2
- package/dist/src/tunnel/tunnel-audit.js +0 -2
- package/dist/src/tunnel/tunnel-config.js +0 -2
- package/dist/src/tunnel/tunnel-persist.js +0 -2
- package/dist/src/tunnel/tunnel-qr.js +0 -2
- package/dist/src/tunnel/tunnel-rate-limit.js +0 -2
- package/dist/src/tunnel/tunnel-service.js +0 -2
- package/dist/src/tunnel/tunnel-state.js +0 -2
- package/dist/src/tunnel/well-known.js +0 -2
- package/dist/src/user-context/config.js +0 -2
- package/dist/src/user-context/import.js +0 -2
- package/dist/src/user-context/owner.js +0 -2
- package/dist/src/user-context/profile.js +0 -2
- package/dist/src/user-context/projection.js +0 -2
- package/dist/src/user-context/runtime.js +0 -2
- package/dist/src/user-context/source-recommendations.js +0 -2
- package/dist/src/user-context/trust-policy.js +0 -2
- package/dist/src/utils/global-singleton.js +0 -2
- package/dist/src/utils/helpers.js +0 -2
- package/dist/src/utils/index.js +0 -2
- package/dist/src/utils/is-record.js +0 -2
- package/dist/src/utils/logger/audit.js +0 -2
- package/dist/src/utils/logger/config.js +0 -2
- package/dist/src/utils/logger/context.js +0 -2
- package/dist/src/utils/logger/exporters.js +0 -2
- package/dist/src/utils/logger/index.js +0 -2
- package/dist/src/utils/logger/log-store.js +0 -2
- package/dist/src/utils/logger/log-stream.js +0 -2
- package/dist/src/utils/logger/pino-record.js +0 -2
- package/dist/src/utils/logger/redact.js +0 -2
- package/dist/src/utils/logger/rotation.js +0 -2
- package/dist/src/utils/logger/shutdown.js +0 -2
- package/dist/src/utils/logger/stats.js +0 -2
- package/dist/src/utils/logger/streams.js +0 -2
- package/dist/src/utils/logger/types.js +0 -2
- package/dist/src/utils/logger.js +0 -2
- package/dist/src/utils/redact-sensitive-url.js +0 -2
- package/dist/src/utils/sanitize-log.js +0 -2
- package/dist/src/utils/string-coerce.js +0 -2
- package/dist/src/voice/language-profile.js +0 -2
- package/dist/src/voice/local/model-files.js +0 -2
- package/dist/src/voice/local/model-manager.js +0 -2
- package/dist/src/voice/local/models.js +0 -2
- package/dist/src/voice/local/runtime-client.js +0 -2
- package/dist/src/voice/local/runtime-dispatcher.js +0 -2
- package/dist/src/voice/local/runtime-worker.js +12 -4
- package/dist/src/voice/local/wav.js +0 -2
- package/dist/src/voice/metadata/builtin.js +0 -2
- package/dist/src/voice/metadata/registry.js +0 -2
- package/dist/src/voice/stt/availability.js +0 -2
- package/dist/src/voice/stt/config-slice.js +0 -2
- package/dist/src/voice/stt/factory.js +0 -2
- package/dist/src/voice/stt/index.js +0 -2
- package/dist/src/voice/stt/list-providers.js +0 -2
- package/dist/src/voice/stt/mention.js +0 -2
- package/dist/src/voice/stt/preflight.js +0 -2
- package/dist/src/voice/stt/providers/alibaba-transcription.js +0 -2
- package/dist/src/voice/stt/providers/local-transcription.js +0 -2
- package/dist/src/voice/stt/providers/openai-transcription.js +0 -2
- package/dist/src/voice/stt/transcribe-core.js +0 -2
- package/dist/src/voice/stt/types.js +0 -2
- package/dist/src/voice/tts/audio.js +0 -2
- package/dist/src/voice/tts/config-slice.js +0 -2
- package/dist/src/voice/tts/directives.js +0 -2
- package/dist/src/voice/tts/factory.js +0 -2
- package/dist/src/voice/tts/list-providers.js +0 -2
- package/dist/src/voice/tts/merge-config.js +0 -2
- package/dist/src/voice/tts/openai-compatible-speech.js +0 -2
- package/dist/src/voice/tts/payload.js +0 -2
- package/dist/src/voice/tts/preprocess.js +0 -2
- package/dist/src/voice/tts/providers/alibaba-speech.js +0 -2
- package/dist/src/voice/tts/providers/edge-speech.js +0 -2
- package/dist/src/voice/tts/providers/minimax-speech.js +0 -2
- package/dist/src/voice/tts/providers/openai-speech.js +0 -2
- package/dist/src/voice/tts/sentence-boundary.js +0 -2
- package/dist/src/voice/tts/service.js +0 -2
- package/dist/src/voice/tts/speak-core.js +0 -2
- package/dist/src/voice/tts/speech-registry.js +0 -2
- package/dist/src/voice/tts/status-tracker.js +0 -2
- package/dist/src/voice/tts/summarize.js +0 -2
- package/dist/src/voice/tts/types.js +0 -2
- package/dist/src/work-discovery/analyzer.js +0 -2
- package/dist/src/work-discovery/probe.js +0 -2
- package/dist/src/work-discovery/repository.js +0 -2
- package/dist/src/work-discovery/service.js +0 -2
- package/dist/src/work-items/agent-context.js +0 -2
- package/dist/src/work-items/work-item-service.js +0 -2
- package/dist/src/work-items/work-item-store.js +0 -2
- package/dist/src/work-items/work-item-workflow-judge.js +0 -2
- package/dist/src/workflows/authoring/workflow-draft-store.js +0 -2
- package/dist/src/workflows/domain/definition-utils.js +0 -2
- package/dist/src/workflows/domain/run.js +0 -2
- package/dist/src/workflows/domain/schema-validation.js +0 -2
- package/dist/src/workflows/domain/validation.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-service.js +0 -2
- package/dist/src/workflows/draft/workflow-draft-validator.js +0 -2
- package/dist/src/workflows/engine/projector.js +0 -2
- package/dist/src/workflows/engine/workflow-engine.js +0 -2
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +0 -2
- package/dist/src/workflows/runtime/graph-workflow-runtime.js +0 -2
- package/dist/src/workflows/service/run-view-to-snapshot.js +0 -2
- package/dist/src/workflows/service/workflow-run-service.js +1 -3
- package/dist/src/workflows/service/workflow-session-bridge.js +0 -2
- package/dist/src/workflows/service/workflow-session-key.js +0 -2
- package/dist/src/workflows/store/event-store.js +0 -2
- package/dist/src/workflows/store/paths.js +0 -2
- package/dist/src/workflows/store/run-index-store.js +0 -2
- package/dist/src/workflows/store/run-store.js +0 -2
- package/package.json +43 -12
- package/skills/creative/hatch-pet/SKILL.md +1 -0
- package/dist/extensions/dashscope/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/demo-memory/src/index.js.map +0 -1
- package/dist/extensions/fal/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/feishu/src/actions/message-action-handler.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +0 -1
- package/dist/extensions/feishu/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/feishu/src/auth/app-registration.js.map +0 -1
- package/dist/extensions/feishu/src/auth/pairing.js.map +0 -1
- package/dist/extensions/feishu/src/auth/paths.js.map +0 -1
- package/dist/extensions/feishu/src/directory/directory-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/format.js.map +0 -1
- package/dist/extensions/feishu/src/index.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/actions.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/media-load.js.map +0 -1
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/pairing/feishu-pairing-prompt.js.map +0 -1
- package/dist/extensions/feishu/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/feishu/src/plugin.js.map +0 -1
- package/dist/extensions/feishu/src/schema/config-schema.js.map +0 -1
- package/dist/extensions/feishu/src/state/accounts.js.map +0 -1
- package/dist/extensions/feishu/src/state/message-bindings.js.map +0 -1
- package/dist/extensions/feishu/src/state/thread-bindings.js.map +0 -1
- package/dist/extensions/feishu/src/status/doctor.js.map +0 -1
- package/dist/extensions/feishu/src/status/status-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js.map +0 -1
- package/dist/extensions/feishu/src/subagent-hooks.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-batch-insert.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-color-text.js.map +0 -1
- package/dist/extensions/feishu/src/tools/docx/docx-table-ops.js.map +0 -1
- package/dist/extensions/feishu/src/tools/tools.js.map +0 -1
- package/dist/extensions/feishu/src/transport/client/client.js.map +0 -1
- package/dist/extensions/feishu/src/transport/client/lark-sdk-logger.js.map +0 -1
- package/dist/extensions/feishu/src/transport/reliability/dedupe.js.map +0 -1
- package/dist/extensions/feishu/src/transport/reliability/inbound-pipeline.js.map +0 -1
- package/dist/extensions/feishu/src/transport/socket-mode/monitor.js.map +0 -1
- package/dist/extensions/feishu/src/transport/socket-mode/retry.js.map +0 -1
- package/dist/extensions/feishu/src/transport/text/mentions.js.map +0 -1
- package/dist/extensions/feishu/src/transport/webhook/monitor.js.map +0 -1
- package/dist/extensions/feishu/src/ui/config-surface.js.map +0 -1
- package/dist/extensions/feishu/src/workflow-progress.js.map +0 -1
- package/dist/extensions/google/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/minimax/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/openai/src/image-generation-provider.js.map +0 -1
- package/dist/extensions/telegram/src/access-control.js.map +0 -1
- package/dist/extensions/telegram/src/account-manager.js.map +0 -1
- package/dist/extensions/telegram/src/actions/message-actions.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/command-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/config-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/debounce-keys.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/gateway-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/inbound-access.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/index.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/outbound-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/security-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/setup-wizard.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/status-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js.map +0 -1
- package/dist/extensions/telegram/src/api-root.js.map +0 -1
- package/dist/extensions/telegram/src/approval-delivery.js.map +0 -1
- package/dist/extensions/telegram/src/approval-store.js.map +0 -1
- package/dist/extensions/telegram/src/caption.js.map +0 -1
- package/dist/extensions/telegram/src/command-handler.js.map +0 -1
- package/dist/extensions/telegram/src/config-schema.js.map +0 -1
- package/dist/extensions/telegram/src/conversation-id.js.map +0 -1
- package/dist/extensions/telegram/src/dedupe.js.map +0 -1
- package/dist/extensions/telegram/src/delivery-chat-id.js.map +0 -1
- package/dist/extensions/telegram/src/doctor.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream-lifecycle.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream-loop.js.map +0 -1
- package/dist/extensions/telegram/src/draft-stream.js.map +0 -1
- package/dist/extensions/telegram/src/errors.js.map +0 -1
- package/dist/extensions/telegram/src/exec-approval-handler.js.map +0 -1
- package/dist/extensions/telegram/src/exec-approvals.js.map +0 -1
- package/dist/extensions/telegram/src/focus-handler.js.map +0 -1
- package/dist/extensions/telegram/src/format.js.map +0 -1
- package/dist/extensions/telegram/src/group-config-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/inbound-coalescer.js.map +0 -1
- package/dist/extensions/telegram/src/inbound-processor.js.map +0 -1
- package/dist/extensions/telegram/src/index.js.map +0 -1
- package/dist/extensions/telegram/src/inline-keyboards.js.map +0 -1
- package/dist/extensions/telegram/src/network-errors.js.map +0 -1
- package/dist/extensions/telegram/src/outbound-sender.js.map +0 -1
- package/dist/extensions/telegram/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/plugin-defaults.js.map +0 -1
- package/dist/extensions/telegram/src/plugin.js.map +0 -1
- package/dist/extensions/telegram/src/polling-session.js.map +0 -1
- package/dist/extensions/telegram/src/proxy-fetch.js.map +0 -1
- package/dist/extensions/telegram/src/reactions.js.map +0 -1
- package/dist/extensions/telegram/src/reply-params.js.map +0 -1
- package/dist/extensions/telegram/src/routing-integration.js.map +0 -1
- package/dist/extensions/telegram/src/send-options.js.map +0 -1
- package/dist/extensions/telegram/src/sent-cache.js.map +0 -1
- package/dist/extensions/telegram/src/startup-errors.js.map +0 -1
- package/dist/extensions/telegram/src/telegram-actions.js.map +0 -1
- package/dist/extensions/telegram/src/telegram-draft-errors.js.map +0 -1
- package/dist/extensions/telegram/src/thread-bindings.js.map +0 -1
- package/dist/extensions/telegram/src/timeout-abort.js.map +0 -1
- package/dist/extensions/telegram/src/token-resolver.js.map +0 -1
- package/dist/extensions/telegram/src/update-offset-store.js.map +0 -1
- package/dist/extensions/telegram/src/workflow-progress.js.map +0 -1
- package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +0 -1
- package/dist/extensions/weixin/src/api/api.js.map +0 -1
- package/dist/extensions/weixin/src/api/config-cache.js.map +0 -1
- package/dist/extensions/weixin/src/api/session-guard.js.map +0 -1
- package/dist/extensions/weixin/src/api/types.js.map +0 -1
- package/dist/extensions/weixin/src/auth/accounts.js.map +0 -1
- package/dist/extensions/weixin/src/auth/login-qr.js.map +0 -1
- package/dist/extensions/weixin/src/auth/pairing.js.map +0 -1
- package/dist/extensions/weixin/src/auth/weixin-account-id.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/aes-ecb.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/cdn-upload.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/cdn-url.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/pic-decrypt.js.map +0 -1
- package/dist/extensions/weixin/src/cdn/upload.js.map +0 -1
- package/dist/extensions/weixin/src/cli/gateway-qr-login.js.map +0 -1
- package/dist/extensions/weixin/src/cli/qr-login.js.map +0 -1
- package/dist/extensions/weixin/src/config-schema.js.map +0 -1
- package/dist/extensions/weixin/src/config-surface.js.map +0 -1
- package/dist/extensions/weixin/src/delivery-to.js.map +0 -1
- package/dist/extensions/weixin/src/index.js.map +0 -1
- package/dist/extensions/weixin/src/media/data-url.js.map +0 -1
- package/dist/extensions/weixin/src/media/media-download.js.map +0 -1
- package/dist/extensions/weixin/src/media/mime.js.map +0 -1
- package/dist/extensions/weixin/src/media/silk-transcode.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/context-token-init.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/debug-mode.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/error-notice.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/inbound.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/markdown-filter.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/process-message.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/send-media.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/send.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/slash-commands.js.map +0 -1
- package/dist/extensions/weixin/src/messaging/typing-ticket-store.js.map +0 -1
- package/dist/extensions/weixin/src/monitor/monitor.js.map +0 -1
- package/dist/extensions/weixin/src/outbound-send.js.map +0 -1
- package/dist/extensions/weixin/src/pairing-config-resolver.js.map +0 -1
- package/dist/extensions/weixin/src/plugin.js.map +0 -1
- package/dist/extensions/weixin/src/routing-integration.js.map +0 -1
- package/dist/extensions/weixin/src/storage/state-dir.js.map +0 -1
- package/dist/extensions/weixin/src/storage/sync-buf.js.map +0 -1
- package/dist/extensions/weixin/src/util/logger.js.map +0 -1
- package/dist/extensions/weixin/src/util/random.js.map +0 -1
- package/dist/extensions/weixin/src/util/redact.js.map +0 -1
- package/dist/extensions/weixin/src/workflow-progress.js.map +0 -1
- package/dist/gateway/static/root/assets/agents-DZDOcgz5.js +0 -2
- package/dist/gateway/static/root/assets/appearance-settings-BNasnY9D.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-Cmr-Hvm9.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-TWgUAI8t.js +0 -6
- package/dist/gateway/static/root/assets/browser-settings-page-DBsFItW_.js +0 -8
- package/dist/gateway/static/root/assets/channels-settings-BBkzrBYy.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-CuU6ez3y.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-DLsZCAw7.js +0 -2
- package/dist/gateway/static/root/assets/desktop-pet-C6V-PHwi.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-5Fcz47XQ.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BrxzyVW2.js +0 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-DRVRLc5Z.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-8F7NElzP.js +0 -4
- package/dist/gateway/static/root/assets/goals-page-BaoLiV8G.js +0 -2
- package/dist/gateway/static/root/assets/index-CH7XN6KY.js +0 -259
- package/dist/gateway/static/root/assets/index-Dfnl9tp_.css +0 -1
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BHnh5OoY.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Boe8n4zH.js +0 -2
- package/dist/gateway/static/root/assets/locale-store-BneNAR8R.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-Cb4Uptct.js +0 -7
- package/dist/gateway/static/root/assets/messages-t1yPaVCt.js +0 -5
- package/dist/gateway/static/root/assets/models-hub-panel-CNiUKZUV.js +0 -2
- package/dist/gateway/static/root/assets/notes-workbench-C9__VkD6.js +0 -4
- package/dist/gateway/static/root/assets/project-detail-page-CZhuB5kO.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-BOq4WVdR.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-BxGq0ebQ.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B6gSU_Au.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DwuBL834.js +0 -1
- package/dist/gateway/static/root/assets/settings-loading-skeleton-vitElc-n.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BJeA4mmk.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-DB2KYA2_.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-DQtZiejw.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-Pm0fNe_p.js +0 -2
- package/dist/gateway/static/root/assets/user-context-page-DnLqQyRG.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BiFIIWC4.js +0 -1
- package/dist/gateway/static/root/assets/work-discovery-page-D2-_bC0J.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-B0FPG4eJ.js +0 -1
- package/dist/gateway/static/root/assets/work-page-BDeVxts_.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BPzS67fU.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-xPhmrRLs.js +0 -11
- package/dist/gateway/static/root/favicon-icon.svg +0 -187
- package/dist/package.js.map +0 -1
- package/dist/src/activity/context.js.map +0 -1
- package/dist/src/activity/emitter.js.map +0 -1
- package/dist/src/activity/service.js.map +0 -1
- package/dist/src/agent/agent-manager.js.map +0 -1
- package/dist/src/agent/agent-scope.js.map +0 -1
- package/dist/src/agent/background-review/coordinator.js.map +0 -1
- package/dist/src/agent/background-review/prompts.js.map +0 -1
- package/dist/src/agent/background-review/run-background-review.js.map +0 -1
- package/dist/src/agent/background-review/settings.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-cache.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-context.js.map +0 -1
- package/dist/src/agent/bootstrap/bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/load-bootstrap-files.js.map +0 -1
- package/dist/src/agent/bootstrap/project-agents-context.js.map +0 -1
- package/dist/src/agent/capabilities/definitions.js.map +0 -1
- package/dist/src/agent/capabilities/registry.js.map +0 -1
- package/dist/src/agent/child-agent-factory.js.map +0 -1
- package/dist/src/agent/client-error-format.js.map +0 -1
- package/dist/src/agent/code-intelligence/binary.js.map +0 -1
- package/dist/src/agent/code-intelligence/runtime.js.map +0 -1
- package/dist/src/agent/code-intelligence/tools.js.map +0 -1
- package/dist/src/agent/coding/turn-diff-tracker.js.map +0 -1
- package/dist/src/agent/context/expand-at-file-mentions.js.map +0 -1
- package/dist/src/agent/context/project-context.js.map +0 -1
- package/dist/src/agent/context/workspace-seed.js.map +0 -1
- package/dist/src/agent/context/workspace-state.js.map +0 -1
- package/dist/src/agent/context/workspace.js.map +0 -1
- package/dist/src/agent/embedded/run-for-session.js.map +0 -1
- package/dist/src/agent/embedded/run-turn.js.map +0 -1
- package/dist/src/agent/embedded/runs.js.map +0 -1
- package/dist/src/agent/embedded/session-manager-init.js.map +0 -1
- package/dist/src/agent/embedded/session-runner.js.map +0 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js.map +0 -1
- package/dist/src/agent/embedded/sqlite-hydrating-session-manager.js.map +0 -1
- package/dist/src/agent/embedded/subscribe-session.js.map +0 -1
- package/dist/src/agent/embedded/system-prompt-override.js.map +0 -1
- package/dist/src/agent/embedded/tool-result-context-guard.js.map +0 -1
- package/dist/src/agent/embedded/tool-result-truncation.js.map +0 -1
- package/dist/src/agent/embedded/xopc-auth-storage.js.map +0 -1
- package/dist/src/agent/embedded/xopc-stream-bridge.js.map +0 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.js.map +0 -1
- package/dist/src/agent/failover-error.js.map +0 -1
- package/dist/src/agent/fallback/candidates.js.map +0 -1
- package/dist/src/agent/fallback/reason.js.map +0 -1
- package/dist/src/agent/feedback/feedback-coordinator.js.map +0 -1
- package/dist/src/agent/goals/checklist-judge.js.map +0 -1
- package/dist/src/agent/goals/checklist-types.js.map +0 -1
- package/dist/src/agent/goals/evaluate-turn.js.map +0 -1
- package/dist/src/agent/goals/goal-locale.js.map +0 -1
- package/dist/src/agent/goals/judge.js.map +0 -1
- package/dist/src/agent/goals/persistent-goal-service.js.map +0 -1
- package/dist/src/agent/goals/post-turn.js.map +0 -1
- package/dist/src/agent/goals/state.js.map +0 -1
- package/dist/src/agent/image/generation/bundled-registry.js.map +0 -1
- package/dist/src/agent/image/generation/bundled.js.map +0 -1
- package/dist/src/agent/image/generation/image-assets.js.map +0 -1
- package/dist/src/agent/image/generation/model-ref.js.map +0 -1
- package/dist/src/agent/image/generation/normalization.js.map +0 -1
- package/dist/src/agent/image/generation/openai-compatible-image-provider.js.map +0 -1
- package/dist/src/agent/image/generation/provider-registry.js.map +0 -1
- package/dist/src/agent/image/generation/runtime.js.map +0 -1
- package/dist/src/agent/image/image-helpers.js.map +0 -1
- package/dist/src/agent/image/image-model-fallback.js.map +0 -1
- package/dist/src/agent/image/inbound-image-handling.js.map +0 -1
- package/dist/src/agent/image/load-image-media.js.map +0 -1
- package/dist/src/agent/image/tool-model-config.js.map +0 -1
- package/dist/src/agent/image/understanding/pi-ai-provider.js.map +0 -1
- package/dist/src/agent/image/understanding/provider-registry.js.map +0 -1
- package/dist/src/agent/image/understanding/runtime.js.map +0 -1
- package/dist/src/agent/image/vision-detection.js.map +0 -1
- package/dist/src/agent/inbound/attachment-pipeline.js.map +0 -1
- package/dist/src/agent/inbound/inbound-loop.js.map +0 -1
- package/dist/src/agent/inbound/turn-dispatcher.js.map +0 -1
- package/dist/src/agent/ipc/bus.js.map +0 -1
- package/dist/src/agent/ipc/inbox.js.map +0 -1
- package/dist/src/agent/ipc/socket.js.map +0 -1
- package/dist/src/agent/ipc/types.js.map +0 -1
- package/dist/src/agent/lifecycle/handlers/compaction.js.map +0 -1
- package/dist/src/agent/lifecycle/hook-handler.js.map +0 -1
- package/dist/src/agent/lifecycle/manager.js.map +0 -1
- package/dist/src/agent/lifecycle/progress.js.map +0 -1
- package/dist/src/agent/lifecycle/timeout-wrapper.js.map +0 -1
- package/dist/src/agent/lifecycle/typing.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-config.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-names.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-policy.js.map +0 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js.map +0 -1
- package/dist/src/agent/mcp/embedded-mcp.js.map +0 -1
- package/dist/src/agent/mcp/mcp-config-shared.js.map +0 -1
- package/dist/src/agent/mcp/mcp-http.js.map +0 -1
- package/dist/src/agent/mcp/mcp-stdio-transport.js.map +0 -1
- package/dist/src/agent/mcp/mcp-stdio.js.map +0 -1
- package/dist/src/agent/mcp/mcp-tool-meta.js.map +0 -1
- package/dist/src/agent/mcp/mcp-transport-config.js.map +0 -1
- package/dist/src/agent/mcp/mcp-transport.js.map +0 -1
- package/dist/src/agent/mcp/resolve-embedded-mcp-tools.js.map +0 -1
- package/dist/src/agent/media-generation/model-ref.js.map +0 -1
- package/dist/src/agent/media-generation/normalization.types.js.map +0 -1
- package/dist/src/agent/media-generation/runtime-shared.js.map +0 -1
- package/dist/src/agent/memory/agent-message-access.js.map +0 -1
- package/dist/src/agent/memory/builtin-memory-store.js.map +0 -1
- package/dist/src/agent/memory/builtin-provider.js.map +0 -1
- package/dist/src/agent/memory/compaction.js.map +0 -1
- package/dist/src/agent/memory/context/planner.js.map +0 -1
- package/dist/src/agent/memory/context-fence.js.map +0 -1
- package/dist/src/agent/memory/create-memory-manager.js.map +0 -1
- package/dist/src/agent/memory/dreaming/config.js.map +0 -1
- package/dist/src/agent/memory/dreaming/constants.js.map +0 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +0 -1
- package/dist/src/agent/memory/dreaming/events.js.map +0 -1
- package/dist/src/agent/memory/dreaming/last-run.js.map +0 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +0 -1
- package/dist/src/agent/memory/dreaming/preview.js.map +0 -1
- package/dist/src/agent/memory/dreaming/promotion-lifecycle.js.map +0 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +0 -1
- package/dist/src/agent/memory/dreaming/scope.js.map +0 -1
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +0 -1
- package/dist/src/agent/memory/dreaming/utils.js.map +0 -1
- package/dist/src/agent/memory/lifecycle.js.map +0 -1
- package/dist/src/agent/memory/manager.js.map +0 -1
- package/dist/src/agent/memory/memory-config.js.map +0 -1
- package/dist/src/agent/memory/message-sanitizer.js.map +0 -1
- package/dist/src/agent/memory/plugin-discovery.js.map +0 -1
- package/dist/src/agent/memory/sensitivity.js.map +0 -1
- package/dist/src/agent/memory/source-origin.js.map +0 -1
- package/dist/src/agent/memory/stub-memory-provider.js.map +0 -1
- package/dist/src/agent/memory/summary-generator.js.map +0 -1
- package/dist/src/agent/memory/understanding/correction.js.map +0 -1
- package/dist/src/agent/memory/understanding/quality.js.map +0 -1
- package/dist/src/agent/memory/understanding/service.js.map +0 -1
- package/dist/src/agent/memory/user-context-coordinator.js.map +0 -1
- package/dist/src/agent/memory/user-message-text.js.map +0 -1
- package/dist/src/agent/memory/window.js.map +0 -1
- package/dist/src/agent/messaging/command-handler.js.map +0 -1
- package/dist/src/agent/messaging/message-router.js.map +0 -1
- package/dist/src/agent/messaging/outbound-coordinator.js.map +0 -1
- package/dist/src/agent/messaging/stream-manager.js.map +0 -1
- package/dist/src/agent/middleware/context.js.map +0 -1
- package/dist/src/agent/middleware/self-verify.js.map +0 -1
- package/dist/src/agent/models/manager.js.map +0 -1
- package/dist/src/agent/models/request-limiter.js.map +0 -1
- package/dist/src/agent/models/selection.js.map +0 -1
- package/dist/src/agent/orchestration/agent-event-handler.js.map +0 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +0 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js.map +0 -1
- package/dist/src/agent/orchestration/loop-guard.js.map +0 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-timeout.js.map +0 -1
- package/dist/src/agent/prompt/cache-boundary.js.map +0 -1
- package/dist/src/agent/prompt/memory/index.js.map +0 -1
- package/dist/src/agent/prompt/safety.js.map +0 -1
- package/dist/src/agent/prompt/sanitize-for-prompt.js.map +0 -1
- package/dist/src/agent/prompt/sections/behavior.js.map +0 -1
- package/dist/src/agent/prompt/sections/memory-skills.js.map +0 -1
- package/dist/src/agent/prompt/sections/messaging-runtime.js.map +0 -1
- package/dist/src/agent/prompt/sections/project-context.js.map +0 -1
- package/dist/src/agent/prompt/sections/tooling.js.map +0 -1
- package/dist/src/agent/prompt/sections/workspace-runtime.js.map +0 -1
- package/dist/src/agent/prompt/service-prompt-builder.js.map +0 -1
- package/dist/src/agent/prompt/subagent-context.js.map +0 -1
- package/dist/src/agent/prompt/system-prompt-params.js.map +0 -1
- package/dist/src/agent/prompt/system-prompt.js.map +0 -1
- package/dist/src/agent/prompt/system-reminder.js.map +0 -1
- package/dist/src/agent/reply/apply-turn-user-enrichment.js.map +0 -1
- package/dist/src/agent/reply/post-compaction-context.js.map +0 -1
- package/dist/src/agent/reply/startup-context.js.map +0 -1
- package/dist/src/agent/reply/workspace-boundary-read.js.map +0 -1
- package/dist/src/agent/sandbox/command-validator.js.map +0 -1
- package/dist/src/agent/sandbox/exec-policy.js.map +0 -1
- package/dist/src/agent/sandbox/path-policy.js.map +0 -1
- package/dist/src/agent/sandbox/sanitize-env-vars.js.map +0 -1
- package/dist/src/agent/sandbox/types.js.map +0 -1
- package/dist/src/agent/service/async-queue.js.map +0 -1
- package/dist/src/agent/service/btw-query.js.map +0 -1
- package/dist/src/agent/service/build-direct-message-content.js.map +0 -1
- package/dist/src/agent/service/direct-turn-helpers.js.map +0 -1
- package/dist/src/agent/service/parse-outbound-session-key.js.map +0 -1
- package/dist/src/agent/service/process-direct-one-shot.js.map +0 -1
- package/dist/src/agent/service/process-direct-streaming.js.map +0 -1
- package/dist/src/agent/service/session-context-report.js.map +0 -1
- package/dist/src/agent/service/webchat-tts.js.map +0 -1
- package/dist/src/agent/service-inbound-utils.js.map +0 -1
- package/dist/src/agent/service.js.map +0 -1
- package/dist/src/agent/session/session-config-service.js.map +0 -1
- package/dist/src/agent/session/session-context.js.map +0 -1
- package/dist/src/agent/session/session-hydrator.js.map +0 -1
- package/dist/src/agent/session/session-inspector.js.map +0 -1
- package/dist/src/agent/session/session-lifecycle.js.map +0 -1
- package/dist/src/agent/session/session-state-bag.js.map +0 -1
- package/dist/src/agent/session/tracker.js.map +0 -1
- package/dist/src/agent/skills/config.js.map +0 -1
- package/dist/src/agent/skills/filesystem-watcher.js.map +0 -1
- package/dist/src/agent/skills/format-skills-prompt.js.map +0 -1
- package/dist/src/agent/skills/hub-hash.js.map +0 -1
- package/dist/src/agent/skills/hub-lock.js.map +0 -1
- package/dist/src/agent/skills/hub-pull.js.map +0 -1
- package/dist/src/agent/skills/index.js.map +0 -1
- package/dist/src/agent/skills/install-target.js.map +0 -1
- package/dist/src/agent/skills/installer.js.map +0 -1
- package/dist/src/agent/skills/managed-store.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +0 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +0 -1
- package/dist/src/agent/skills/marketplace/marketplace-category-order.js.map +0 -1
- package/dist/src/agent/skills/marketplace/registry.js.map +0 -1
- package/dist/src/agent/skills/marketplace/resolve-adapter.js.map +0 -1
- package/dist/src/agent/skills/parse-skill-metadata.js.map +0 -1
- package/dist/src/agent/skills/required-env-vars.js.map +0 -1
- package/dist/src/agent/skills/scanner.js.map +0 -1
- package/dist/src/agent/skills/skill-manage-ops.js.map +0 -1
- package/dist/src/agent/skills/skill-manager.js.map +0 -1
- package/dist/src/agent/skills/skill-markdown-preview-from-raw.js.map +0 -1
- package/dist/src/agent/skills/skill-tool-gating.js.map +0 -1
- package/dist/src/agent/skills/skill-view-path.js.map +0 -1
- package/dist/src/agent/skills/skills-marketplace.js.map +0 -1
- package/dist/src/agent/skills/test-framework.js.map +0 -1
- package/dist/src/agent/skills/watcher.js.map +0 -1
- package/dist/src/agent/skills/workspace-skills-dir.js.map +0 -1
- package/dist/src/agent/source-context/injector.js.map +0 -1
- package/dist/src/agent/source-context/types.js.map +0 -1
- package/dist/src/agent/starter-agents.js.map +0 -1
- package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +0 -1
- package/dist/src/agent/tool-manuals/browser.js.map +0 -1
- package/dist/src/agent/tool-manuals/index.js.map +0 -1
- package/dist/src/agent/tool-manuals/xopc-use.js.map +0 -1
- package/dist/src/agent/tools/apply-patch.js.map +0 -1
- package/dist/src/agent/tools/automation-tool.js.map +0 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +0 -1
- package/dist/src/agent/tools/browser/tool/schemas.js.map +0 -1
- package/dist/src/agent/tools/chain-tracker.js.map +0 -1
- package/dist/src/agent/tools/clarify-tool.js.map +0 -1
- package/dist/src/agent/tools/cli-clarify.js.map +0 -1
- package/dist/src/agent/tools/communication.js.map +0 -1
- package/dist/src/agent/tools/composio-tool.js.map +0 -1
- package/dist/src/agent/tools/concurrency.js.map +0 -1
- package/dist/src/agent/tools/create-share-tool.js.map +0 -1
- package/dist/src/agent/tools/curated-memory-tool.js.map +0 -1
- package/dist/src/agent/tools/delegate-tool.js.map +0 -1
- package/dist/src/agent/tools/desktop-pet-tool.js.map +0 -1
- package/dist/src/agent/tools/dreaming-tool.js.map +0 -1
- package/dist/src/agent/tools/edit-diff.js.map +0 -1
- package/dist/src/agent/tools/error-pattern-matcher.js.map +0 -1
- package/dist/src/agent/tools/error-tracker.js.map +0 -1
- package/dist/src/agent/tools/exec-command.js.map +0 -1
- package/dist/src/agent/tools/execute-code-tool.js.map +0 -1
- package/dist/src/agent/tools/executor.js.map +0 -1
- package/dist/src/agent/tools/factory.js.map +0 -1
- package/dist/src/agent/tools/find.js.map +0 -1
- package/dist/src/agent/tools/goal-evidence-recorder.js.map +0 -1
- package/dist/src/agent/tools/goal-tool.js.map +0 -1
- package/dist/src/agent/tools/grep.js.map +0 -1
- package/dist/src/agent/tools/image-generate-tool.js.map +0 -1
- package/dist/src/agent/tools/image-tool.js.map +0 -1
- package/dist/src/agent/tools/list-dir.js.map +0 -1
- package/dist/src/agent/tools/media-read-tool.js.map +0 -1
- package/dist/src/agent/tools/memory-tool.js.map +0 -1
- package/dist/src/agent/tools/metadata.js.map +0 -1
- package/dist/src/agent/tools/read.js.map +0 -1
- package/dist/src/agent/tools/search/http.js.map +0 -1
- package/dist/src/agent/tools/search/providers/bing-api.js.map +0 -1
- package/dist/src/agent/tools/search/providers/bing-html.js.map +0 -1
- package/dist/src/agent/tools/search/providers/brave.js.map +0 -1
- package/dist/src/agent/tools/search/providers/duckduckgo-html.js.map +0 -1
- package/dist/src/agent/tools/search/providers/searxng.js.map +0 -1
- package/dist/src/agent/tools/search/providers/tavily.js.map +0 -1
- package/dist/src/agent/tools/search/region.js.map +0 -1
- package/dist/src/agent/tools/search/registry.js.map +0 -1
- package/dist/src/agent/tools/search/resolve-config.js.map +0 -1
- package/dist/src/agent/tools/send-media.js.map +0 -1
- package/dist/src/agent/tools/session-search-tool.js.map +0 -1
- package/dist/src/agent/tools/session-status-tool.js.map +0 -1
- package/dist/src/agent/tools/skill-install-tool.js.map +0 -1
- package/dist/src/agent/tools/skill-manage-tool.js.map +0 -1
- package/dist/src/agent/tools/skills-tools.js.map +0 -1
- package/dist/src/agent/tools/structured-output.js.map +0 -1
- package/dist/src/agent/tools/todo-tool.js.map +0 -1
- package/dist/src/agent/tools/tool-manual-tool.js.map +0 -1
- package/dist/src/agent/tools/tool-paths.js.map +0 -1
- package/dist/src/agent/tools/truncate.js.map +0 -1
- package/dist/src/agent/tools/tts-tool.js.map +0 -1
- package/dist/src/agent/tools/update-plan-tool.js.map +0 -1
- package/dist/src/agent/tools/url-safety.js.map +0 -1
- package/dist/src/agent/tools/usage-analyzer.js.map +0 -1
- package/dist/src/agent/tools/web-extract.js.map +0 -1
- package/dist/src/agent/tools/web.js.map +0 -1
- package/dist/src/agent/tools/workflow-tool.js.map +0 -1
- package/dist/src/agent/tools/write.js.map +0 -1
- package/dist/src/agent/tools/xopc-use-tool.js.map +0 -1
- package/dist/src/agent/transcript/google-api.js.map +0 -1
- package/dist/src/agent/transcript/model-selection.js.map +0 -1
- package/dist/src/agent/transcript/provider-capabilities.js.map +0 -1
- package/dist/src/agent/transcript/session-transcript-repair.js.map +0 -1
- package/dist/src/agent/transcript/strip-tool-messages.js.map +0 -1
- package/dist/src/agent/transcript/thinking-types.js.map +0 -1
- package/dist/src/agent/transcript/thinking.js.map +0 -1
- package/dist/src/agent/transcript/tool-call-id.js.map +0 -1
- package/dist/src/agent/transcript/transcript-hygiene.js.map +0 -1
- package/dist/src/agent/transcript/transcript-policy.js.map +0 -1
- package/dist/src/agent/workflow/agent-progress.js.map +0 -1
- package/dist/src/agent/workflow/builtins/index.js.map +0 -1
- package/dist/src/agent/workflow/catalog.js.map +0 -1
- package/dist/src/agent/workflow/progress-broker.js.map +0 -1
- package/dist/src/agent/workflow/snapshot-empty.js.map +0 -1
- package/dist/src/agent/workflow/snapshot.js.map +0 -1
- package/dist/src/agent/workflow/step-labels.js.map +0 -1
- package/dist/src/agent/workflow/structured-output-tool.js.map +0 -1
- package/dist/src/agent/workflow/subagent-runner.js.map +0 -1
- package/dist/src/agent/workflow/workflow-child-tools.js.map +0 -1
- package/dist/src/agent/workspace-runtime/registry.js.map +0 -1
- package/dist/src/agent-manifest/index.js.map +0 -1
- package/dist/src/agent-manifest/preset-chain.js.map +0 -1
- package/dist/src/agent-manifest/prompt.js.map +0 -1
- package/dist/src/agent-manifest/resolver.js.map +0 -1
- package/dist/src/agent-manifest/schema.js.map +0 -1
- package/dist/src/agent-manifest/validator.js.map +0 -1
- package/dist/src/agent-runtime/boundary-guard.js.map +0 -1
- package/dist/src/agent-runtime/memory-runtime.js.map +0 -1
- package/dist/src/agent-runtime/model-router.js.map +0 -1
- package/dist/src/agent-runtime/run-trace.js.map +0 -1
- package/dist/src/agent-runtime/runtime-profile.js.map +0 -1
- package/dist/src/agent-runtime/tool-registry.js.map +0 -1
- package/dist/src/agent-runtime/workflow-runtime.js.map +0 -1
- package/dist/src/ai-assist/text-assist.js.map +0 -1
- package/dist/src/auth/credentials.js.map +0 -1
- package/dist/src/auth/index.js.map +0 -1
- package/dist/src/auth/oauth/anthropic.js.map +0 -1
- package/dist/src/auth/oauth/github-copilot.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/google-antigravity.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/google-gemini-cli.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/oauth-page.js.map +0 -1
- package/dist/src/auth/oauth/google-oauth/pkce.js.map +0 -1
- package/dist/src/auth/oauth/kimi-coding.js.map +0 -1
- package/dist/src/auth/oauth/minimax-cn.js.map +0 -1
- package/dist/src/auth/oauth/minimax.js.map +0 -1
- package/dist/src/auth/oauth/openai-codex.js.map +0 -1
- package/dist/src/auth/oauth/pkce.js.map +0 -1
- package/dist/src/auth/profiles/oauth.js.map +0 -1
- package/dist/src/auth/profiles/order.js.map +0 -1
- package/dist/src/auth/profiles/profiles.js.map +0 -1
- package/dist/src/auth/profiles/store.js.map +0 -1
- package/dist/src/auth/sync-provider-auth.js.map +0 -1
- package/dist/src/automations/api/routes.js.map +0 -1
- package/dist/src/automations/domain/schedule.js.map +0 -1
- package/dist/src/automations/domain/validation.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-prompt.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-service.js.map +0 -1
- package/dist/src/automations/draft/automation-draft-validator.js.map +0 -1
- package/dist/src/automations/product-events.js.map +0 -1
- package/dist/src/automations/service/action-executor.js.map +0 -1
- package/dist/src/automations/service/automation-service.js.map +0 -1
- package/dist/src/automations/storage/automation-repository.js.map +0 -1
- package/dist/src/automations/storage/automation-run-repository.js.map +0 -1
- package/dist/src/browser/actions/extension-registry-bridge.js.map +0 -1
- package/dist/src/browser/actions/registry.js.map +0 -1
- package/dist/src/browser/backend-from-config.js.map +0 -1
- package/dist/src/browser/browser-command-timeout.js.map +0 -1
- package/dist/src/browser/cache-dir-policy.js.map +0 -1
- package/dist/src/browser/cdp-local-launcher.js.map +0 -1
- package/dist/src/browser/cdp-supervisor.js.map +0 -1
- package/dist/src/browser/free-port.js.map +0 -1
- package/dist/src/browser/humanize.js.map +0 -1
- package/dist/src/browser/install-lock.js.map +0 -1
- package/dist/src/browser/manager.js.map +0 -1
- package/dist/src/browser/pipeline/output.js.map +0 -1
- package/dist/src/browser/pipeline/runner.js.map +0 -1
- package/dist/src/browser/pipeline/schema.js.map +0 -1
- package/dist/src/browser/pipeline/source.js.map +0 -1
- package/dist/src/browser/pipeline/template.js.map +0 -1
- package/dist/src/browser/providers/browser-ext-install.js.map +0 -1
- package/dist/src/browser/providers/browser-use.js.map +0 -1
- package/dist/src/browser/providers/browserbase.js.map +0 -1
- package/dist/src/browser/providers/cloakbrowser.js.map +0 -1
- package/dist/src/browser/providers/extension-ws-acquire.js.map +0 -1
- package/dist/src/browser/providers/extension.js.map +0 -1
- package/dist/src/browser/providers/playwright-doctor.js.map +0 -1
- package/dist/src/browser/providers/playwright-install.js.map +0 -1
- package/dist/src/browser/readiness.js.map +0 -1
- package/dist/src/browser/schemas.js.map +0 -1
- package/dist/src/browser/session-lifecycle.js.map +0 -1
- package/dist/src/browser/snapshot-helpers.js.map +0 -1
- package/dist/src/browser/stealth.js.map +0 -1
- package/dist/src/browser/url-policy.js.map +0 -1
- package/dist/src/capabilities/store-connector.js.map +0 -1
- package/dist/src/channels/attachments/attachment-classifiers.js.map +0 -1
- package/dist/src/channels/attachments/inbound-persist.js.map +0 -1
- package/dist/src/channels/attachments/inbound-types.js.map +0 -1
- package/dist/src/channels/attachments/outbound-tts-persist.js.map +0 -1
- package/dist/src/channels/attachments/voice-stt-webchat.js.map +0 -1
- package/dist/src/channels/catalog/channel-catalog-service.js.map +0 -1
- package/dist/src/channels/config-helpers.js.map +0 -1
- package/dist/src/channels/envelope-timestamp.js.map +0 -1
- package/dist/src/channels/exec-approval-runtime.js.map +0 -1
- package/dist/src/channels/health-monitor.js.map +0 -1
- package/dist/src/channels/heartbeat-scheduler.js.map +0 -1
- package/dist/src/channels/internal-outbound.js.map +0 -1
- package/dist/src/channels/lifecycle-supervisor.js.map +0 -1
- package/dist/src/channels/manager.js.map +0 -1
- package/dist/src/channels/media.js.map +0 -1
- package/dist/src/channels/outbound/deliver.js.map +0 -1
- package/dist/src/channels/outbound/normalize.js.map +0 -1
- package/dist/src/channels/outbound/persist-store.js.map +0 -1
- package/dist/src/channels/outbound/queue.js.map +0 -1
- package/dist/src/channels/outbound-sender.js.map +0 -1
- package/dist/src/channels/pairing/allow-from-file.js.map +0 -1
- package/dist/src/channels/pairing/approve-cli.js.map +0 -1
- package/dist/src/channels/pairing/pairing-challenge.js.map +0 -1
- package/dist/src/channels/pairing/pairing-constants.js.map +0 -1
- package/dist/src/channels/pairing/pairing-events.js.map +0 -1
- package/dist/src/channels/pairing/pairing-messages.js.map +0 -1
- package/dist/src/channels/pairing/pairing-service.js.map +0 -1
- package/dist/src/channels/pairing/pairing-store-adapter.js.map +0 -1
- package/dist/src/channels/pairing/pairing-store.js.map +0 -1
- package/dist/src/channels/pairing/paths.js.map +0 -1
- package/dist/src/channels/pairing/preseed-allow-from.js.map +0 -1
- package/dist/src/channels/pipeline.js.map +0 -1
- package/dist/src/channels/plugin-registry.js.map +0 -1
- package/dist/src/channels/plugins/registry.js.map +0 -1
- package/dist/src/channels/restart-policy.js.map +0 -1
- package/dist/src/channels/security-helpers.js.map +0 -1
- package/dist/src/channels/security.js.map +0 -1
- package/dist/src/channels/setup-wizard-discovery.js.map +0 -1
- package/dist/src/chat-commands/agent-edit.js.map +0 -1
- package/dist/src/chat-commands/builtins/config.js.map +0 -1
- package/dist/src/chat-commands/builtins/context.js.map +0 -1
- package/dist/src/chat-commands/builtins/goal.js.map +0 -1
- package/dist/src/chat-commands/builtins/model.js.map +0 -1
- package/dist/src/chat-commands/builtins/review.js.map +0 -1
- package/dist/src/chat-commands/builtins/session.js.map +0 -1
- package/dist/src/chat-commands/builtins/skill.js.map +0 -1
- package/dist/src/chat-commands/builtins/subgoal.js.map +0 -1
- package/dist/src/chat-commands/builtins/system.js.map +0 -1
- package/dist/src/chat-commands/builtins/thinking.js.map +0 -1
- package/dist/src/chat-commands/builtins/tts.js.map +0 -1
- package/dist/src/chat-commands/builtins/workflow.js.map +0 -1
- package/dist/src/chat-commands/command-parse.js.map +0 -1
- package/dist/src/chat-commands/config-paths.js.map +0 -1
- package/dist/src/chat-commands/config-value.js.map +0 -1
- package/dist/src/chat-commands/context.js.map +0 -1
- package/dist/src/chat-commands/format-output.js.map +0 -1
- package/dist/src/chat-commands/index.js.map +0 -1
- package/dist/src/chat-commands/processor.js.map +0 -1
- package/dist/src/chat-commands/registry.js.map +0 -1
- package/dist/src/chat-commands/session-key.js.map +0 -1
- package/dist/src/cli/argv-invocation.js.map +0 -1
- package/dist/src/cli/argv.js.map +0 -1
- package/dist/src/cli/bin.js.map +0 -1
- package/dist/src/cli/cli-log-level-preset.js.map +0 -1
- package/dist/src/cli/command-catalog.js.map +0 -1
- package/dist/src/cli/command-loaders.js.map +0 -1
- package/dist/src/cli/command-manifest.js.map +0 -1
- package/dist/src/cli/command-path-matches.js.map +0 -1
- package/dist/src/cli/command-path-policy.js.map +0 -1
- package/dist/src/cli/command-startup-policy.js.map +0 -1
- package/dist/src/cli/commands/agent/interactive.js.map +0 -1
- package/dist/src/cli/commands/agent/sessions.js.map +0 -1
- package/dist/src/cli/commands/agent/stream-renderer.js.map +0 -1
- package/dist/src/cli/commands/agent.js.map +0 -1
- package/dist/src/cli/commands/agents.js.map +0 -1
- package/dist/src/cli/commands/auth.js.map +0 -1
- package/dist/src/cli/commands/browser-cli-helpers.js.map +0 -1
- package/dist/src/cli/commands/browser.js.map +0 -1
- package/dist/src/cli/commands/channels.js.map +0 -1
- package/dist/src/cli/commands/config.js.map +0 -1
- package/dist/src/cli/commands/connectors.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/config-health.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/gateway-health.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/gateway-service.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/migrations.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/node-version.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/security-audit.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/state-integrity.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/version-check.js.map +0 -1
- package/dist/src/cli/commands/doctor/checks/workspace-status.js.map +0 -1
- package/dist/src/cli/commands/doctor/flow.js.map +0 -1
- package/dist/src/cli/commands/doctor/format.js.map +0 -1
- package/dist/src/cli/commands/doctor/index.js.map +0 -1
- package/dist/src/cli/commands/extension-create.js.map +0 -1
- package/dist/src/cli/commands/extension-dev.js.map +0 -1
- package/dist/src/cli/commands/extension-marketplace.js.map +0 -1
- package/dist/src/cli/commands/extension-pack.js.map +0 -1
- package/dist/src/cli/commands/extension.js.map +0 -1
- package/dist/src/cli/commands/gateway/call.js.map +0 -1
- package/dist/src/cli/commands/gateway/health.js.map +0 -1
- package/dist/src/cli/commands/gateway/lifecycle-core.js.map +0 -1
- package/dist/src/cli/commands/gateway/lifecycle.js.map +0 -1
- package/dist/src/cli/commands/gateway/logs.js.map +0 -1
- package/dist/src/cli/commands/gateway/probe.js.map +0 -1
- package/dist/src/cli/commands/gateway/restart-health.js.map +0 -1
- package/dist/src/cli/commands/gateway/restart.js.map +0 -1
- package/dist/src/cli/commands/gateway/run-foreground.js.map +0 -1
- package/dist/src/cli/commands/gateway/service.js.map +0 -1
- package/dist/src/cli/commands/gateway/shared.js.map +0 -1
- package/dist/src/cli/commands/gateway/status.js.map +0 -1
- package/dist/src/cli/commands/gateway/stop.js.map +0 -1
- package/dist/src/cli/commands/gateway/subcommands.js.map +0 -1
- package/dist/src/cli/commands/gateway/token.js.map +0 -1
- package/dist/src/cli/commands/gateway-ssh-tunnel.js.map +0 -1
- package/dist/src/cli/commands/gateway.js.map +0 -1
- package/dist/src/cli/commands/goal.js.map +0 -1
- package/dist/src/cli/commands/image.js.map +0 -1
- package/dist/src/cli/commands/init.js.map +0 -1
- package/dist/src/cli/commands/logs.js.map +0 -1
- package/dist/src/cli/commands/models.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/index.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/onboard-to-configurator.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/registry.js.map +0 -1
- package/dist/src/cli/commands/onboard/channels/wizard-to-configurator.js.map +0 -1
- package/dist/src/cli/commands/onboard/gateway.js.map +0 -1
- package/dist/src/cli/commands/onboard/model.js.map +0 -1
- package/dist/src/cli/commands/onboard.js.map +0 -1
- package/dist/src/cli/commands/profile.js.map +0 -1
- package/dist/src/cli/commands/project.js.map +0 -1
- package/dist/src/cli/commands/providers.js.map +0 -1
- package/dist/src/cli/commands/resume.js.map +0 -1
- package/dist/src/cli/commands/search.js.map +0 -1
- package/dist/src/cli/commands/session/actions.js.map +0 -1
- package/dist/src/cli/commands/session/utils.js.map +0 -1
- package/dist/src/cli/commands/session.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/output.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/prompts.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/runner.js.map +0 -1
- package/dist/src/cli/commands/setup-shared/types.js.map +0 -1
- package/dist/src/cli/commands/setup.js.map +0 -1
- package/dist/src/cli/commands/skills-test.js.map +0 -1
- package/dist/src/cli/commands/skills.js.map +0 -1
- package/dist/src/cli/commands/tailscale.js.map +0 -1
- package/dist/src/cli/commands/tui-runner.js.map +0 -1
- package/dist/src/cli/commands/tui.js.map +0 -1
- package/dist/src/cli/commands/tunnel.js.map +0 -1
- package/dist/src/cli/commands/update.js.map +0 -1
- package/dist/src/cli/commands/voice.js.map +0 -1
- package/dist/src/cli/context.js.map +0 -1
- package/dist/src/cli/extension-cli-register.js.map +0 -1
- package/dist/src/cli/gateway-run-argv.js.map +0 -1
- package/dist/src/cli/gateway-run-fast-path.js.map +0 -1
- package/dist/src/cli/index.js.map +0 -1
- package/dist/src/cli/registry.js.map +0 -1
- package/dist/src/cli/templates.js.map +0 -1
- package/dist/src/cli/utils/colors.js.map +0 -1
- package/dist/src/cli/utils/gateway-client-options.js.map +0 -1
- package/dist/src/cli/utils/gateway-client.js.map +0 -1
- package/dist/src/cli/utils/init-workspace-core.js.map +0 -1
- package/dist/src/cli/utils/init-workspace.js.map +0 -1
- package/dist/src/cli/utils/oauth-login.js.map +0 -1
- package/dist/src/cli/utils/oauth-providers.js.map +0 -1
- package/dist/src/cli/utils/session.js.map +0 -1
- package/dist/src/commands/agents.config.js.map +0 -1
- package/dist/src/config/agent-profile.js.map +0 -1
- package/dist/src/config/agent-typed-models.js.map +0 -1
- package/dist/src/config/commands.flags.js.map +0 -1
- package/dist/src/config/default-model.js.map +0 -1
- package/dist/src/config/diff.js.map +0 -1
- package/dist/src/config/gateway-bind.js.map +0 -1
- package/dist/src/config/index.js.map +0 -1
- package/dist/src/config/loader.js.map +0 -1
- package/dist/src/config/mcp-config-normalize.js.map +0 -1
- package/dist/src/config/model-input.js.map +0 -1
- package/dist/src/config/models-json.js.map +0 -1
- package/dist/src/config/paths-state.js.map +0 -1
- package/dist/src/config/paths.js.map +0 -1
- package/dist/src/config/profile.js.map +0 -1
- package/dist/src/config/public-url.js.map +0 -1
- package/dist/src/config/reload.js.map +0 -1
- package/dist/src/config/resolve-config-value.js.map +0 -1
- package/dist/src/config/rules.js.map +0 -1
- package/dist/src/config/runtime-overrides.js.map +0 -1
- package/dist/src/config/schema.js.map +0 -1
- package/dist/src/config/validate-channel-configs.js.map +0 -1
- package/dist/src/config/voice.js.map +0 -1
- package/dist/src/config/web-patch.js.map +0 -1
- package/dist/src/config/workspace-defaults.js.map +0 -1
- package/dist/src/config/workspace-dirs.js.map +0 -1
- package/dist/src/config/workspace-path-helpers.js.map +0 -1
- package/dist/src/config/workspace-path.js.map +0 -1
- package/dist/src/connectors/approval.js.map +0 -1
- package/dist/src/connectors/auth-provider-registry.js.map +0 -1
- package/dist/src/connectors/builtin-catalog.js.map +0 -1
- package/dist/src/connectors/catalog.js.map +0 -1
- package/dist/src/connectors/composio-catalog.js.map +0 -1
- package/dist/src/connectors/composio-logo.js.map +0 -1
- package/dist/src/connectors/composio-sessions.js.map +0 -1
- package/dist/src/connectors/composio-triggers.js.map +0 -1
- package/dist/src/connectors/composio.js.map +0 -1
- package/dist/src/connectors/connector-memory-sync.js.map +0 -1
- package/dist/src/connectors/health.js.map +0 -1
- package/dist/src/connectors/install.js.map +0 -1
- package/dist/src/connectors/instances.js.map +0 -1
- package/dist/src/connectors/integration-strategy.js.map +0 -1
- package/dist/src/connectors/lifecycle.js.map +0 -1
- package/dist/src/connectors/materialize.js.map +0 -1
- package/dist/src/connectors/policy.js.map +0 -1
- package/dist/src/connectors/providers.js.map +0 -1
- package/dist/src/connectors/registries/modelscope.js.map +0 -1
- package/dist/src/connectors/registries/official-mcp.js.map +0 -1
- package/dist/src/connectors/registries/search.js.map +0 -1
- package/dist/src/connectors/registries/smithery.js.map +0 -1
- package/dist/src/connectors/runtime-adapter-registry.js.map +0 -1
- package/dist/src/connectors/secret-store.js.map +0 -1
- package/dist/src/connectors/setup-secrets.js.map +0 -1
- package/dist/src/connectors/supervisor.js.map +0 -1
- package/dist/src/connectors/usage.js.map +0 -1
- package/dist/src/connectors/workflow-preflight.js.map +0 -1
- package/dist/src/daemon/constants.js.map +0 -1
- package/dist/src/daemon/install-plan.js.map +0 -1
- package/dist/src/daemon/launchd.js.map +0 -1
- package/dist/src/daemon/schtasks.js.map +0 -1
- package/dist/src/daemon/service-audit.js.map +0 -1
- package/dist/src/daemon/service.js.map +0 -1
- package/dist/src/daemon/systemd.js.map +0 -1
- package/dist/src/document-understanding/extract.js.map +0 -1
- package/dist/src/errors/index.js.map +0 -1
- package/dist/src/extensions/activation-context.js.map +0 -1
- package/dist/src/extensions/activation-planner.js.map +0 -1
- package/dist/src/extensions/api.js.map +0 -1
- package/dist/src/extensions/bundle-mcp.js.map +0 -1
- package/dist/src/extensions/bundled-extension-activation.js.map +0 -1
- package/dist/src/extensions/diagnostics.js.map +0 -1
- package/dist/src/extensions/discover-extensions.js.map +0 -1
- package/dist/src/extensions/engine-check.js.map +0 -1
- package/dist/src/extensions/extension-metadata-snapshot.js.map +0 -1
- package/dist/src/extensions/extension-registry-impl.js.map +0 -1
- package/dist/src/extensions/health.js.map +0 -1
- package/dist/src/extensions/hooks.js.map +0 -1
- package/dist/src/extensions/index.js.map +0 -1
- package/dist/src/extensions/install-transaction.js.map +0 -1
- package/dist/src/extensions/install.js.map +0 -1
- package/dist/src/extensions/loader.js.map +0 -1
- package/dist/src/extensions/lockfile.js.map +0 -1
- package/dist/src/extensions/manifest-registry.js.map +0 -1
- package/dist/src/extensions/marketplace.js.map +0 -1
- package/dist/src/extensions/media-provider-contracts.js.map +0 -1
- package/dist/src/extensions/normalize-manifest.js.map +0 -1
- package/dist/src/extensions/onboard-helpers.js.map +0 -1
- package/dist/src/extensions/package-contract.js.map +0 -1
- package/dist/src/extensions/sdk/channel-entry.js.map +0 -1
- package/dist/src/extensions/sdk/channel-helpers.js.map +0 -1
- package/dist/src/extensions/sdk/index.js.map +0 -1
- package/dist/src/extensions/sdk/lazy.js.map +0 -1
- package/dist/src/extensions/sdk/testing.js.map +0 -1
- package/dist/src/extensions/security.js.map +0 -1
- package/dist/src/extensions/slots.js.map +0 -1
- package/dist/src/extensions/speech-provider-contracts.js.map +0 -1
- package/dist/src/extensions/store-zip-limits.js.map +0 -1
- package/dist/src/extensions/typed-event-bus.js.map +0 -1
- package/dist/src/extensions/types/hooks.js.map +0 -1
- package/dist/src/extensions/types/providers.js.map +0 -1
- package/dist/src/extensions/update.js.map +0 -1
- package/dist/src/extensions/when-context.js.map +0 -1
- package/dist/src/extensions/when-expression.js.map +0 -1
- package/dist/src/gateway/agent-builtin-tools.js.map +0 -1
- package/dist/src/gateway/agent-run-relay.js.map +0 -1
- package/dist/src/gateway/agents-admin.js.map +0 -1
- package/dist/src/gateway/auth.js.map +0 -1
- package/dist/src/gateway/capability-presets-admin.js.map +0 -1
- package/dist/src/gateway/chat-limits.js.map +0 -1
- package/dist/src/gateway/chat-stream/mapper.js.map +0 -1
- package/dist/src/gateway/clarify-bridge.js.map +0 -1
- package/dist/src/gateway/clarify-runtime.js.map +0 -1
- package/dist/src/gateway/client-ip.js.map +0 -1
- package/dist/src/gateway/config-tools-web.js.map +0 -1
- package/dist/src/gateway/credential.js.map +0 -1
- package/dist/src/gateway/discovery/mdns.js.map +0 -1
- package/dist/src/gateway/dreaming-automation-reconciler.js.map +0 -1
- package/dist/src/gateway/ensure-network-cors.js.map +0 -1
- package/dist/src/gateway/file-path-classifier.js.map +0 -1
- package/dist/src/gateway/file-reference-registry.js.map +0 -1
- package/dist/src/gateway/global-defaults-admin.js.map +0 -1
- package/dist/src/gateway/heartbeat/service.js.map +0 -1
- package/dist/src/gateway/hono/app.js.map +0 -1
- package/dist/src/gateway/hono/lib/agent-model.js.map +0 -1
- package/dist/src/gateway/hono/lib/config-payload.js.map +0 -1
- package/dist/src/gateway/hono/lib/extension-assets.js.map +0 -1
- package/dist/src/gateway/hono/lib/extension-store.js.map +0 -1
- package/dist/src/gateway/hono/lib/mask-secret-length.js.map +0 -1
- package/dist/src/gateway/hono/lib/route-logger.js.map +0 -1
- package/dist/src/gateway/hono/lib/safe-providers-config.js.map +0 -1
- package/dist/src/gateway/hono/lib/safe-voice-config.js.map +0 -1
- package/dist/src/gateway/hono/lib/startup-unavailable.js.map +0 -1
- package/dist/src/gateway/hono/lib/static-ui.js.map +0 -1
- package/dist/src/gateway/hono/middleware/auth.js.map +0 -1
- package/dist/src/gateway/hono/middleware/log-context.js.map +0 -1
- package/dist/src/gateway/hono/middleware/logger.js.map +0 -1
- package/dist/src/gateway/hono/middleware/route-errors.js.map +0 -1
- package/dist/src/gateway/hono/middleware/scopes.js.map +0 -1
- package/dist/src/gateway/hono/middleware/strict-rate-limit.js.map +0 -1
- package/dist/src/gateway/hono/oauth-async.js.map +0 -1
- package/dist/src/gateway/hono/oauth.js.map +0 -1
- package/dist/src/gateway/hono/routes/activity.js.map +0 -1
- package/dist/src/gateway/hono/routes/agent-stream.js.map +0 -1
- package/dist/src/gateway/hono/routes/agents.js.map +0 -1
- package/dist/src/gateway/hono/routes/ai-assist.js.map +0 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js.map +0 -1
- package/dist/src/gateway/hono/routes/browser-install.js.map +0 -1
- package/dist/src/gateway/hono/routes/browser.js.map +0 -1
- package/dist/src/gateway/hono/routes/capabilities.js.map +0 -1
- package/dist/src/gateway/hono/routes/capability-presets.js.map +0 -1
- package/dist/src/gateway/hono/routes/channels.js.map +0 -1
- package/dist/src/gateway/hono/routes/commands-skills.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/channels.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/misc.js.map +0 -1
- package/dist/src/gateway/hono/routes/config-patch/result.js.map +0 -1
- package/dist/src/gateway/hono/routes/config.js.map +0 -1
- package/dist/src/gateway/hono/routes/connectors.js.map +0 -1
- package/dist/src/gateway/hono/routes/doctor.js.map +0 -1
- package/dist/src/gateway/hono/routes/dreaming.js.map +0 -1
- package/dist/src/gateway/hono/routes/exposure.js.map +0 -1
- package/dist/src/gateway/hono/routes/extension-gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/global-defaults.js.map +0 -1
- package/dist/src/gateway/hono/routes/goals.js.map +0 -1
- package/dist/src/gateway/hono/routes/home.js.map +0 -1
- package/dist/src/gateway/hono/routes/host-fs.js.map +0 -1
- package/dist/src/gateway/hono/routes/index.js.map +0 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +0 -1
- package/dist/src/gateway/hono/routes/lazy-fallback.js.map +0 -1
- package/dist/src/gateway/hono/routes/local-apps.js.map +0 -1
- package/dist/src/gateway/hono/routes/logs.js.map +0 -1
- package/dist/src/gateway/hono/routes/mcp.js.map +0 -1
- package/dist/src/gateway/hono/routes/media.js.map +0 -1
- package/dist/src/gateway/hono/routes/memory.js.map +0 -1
- package/dist/src/gateway/hono/routes/migrations.js.map +0 -1
- package/dist/src/gateway/hono/routes/mobile.js.map +0 -1
- package/dist/src/gateway/hono/routes/models.js.map +0 -1
- package/dist/src/gateway/hono/routes/notes.js.map +0 -1
- package/dist/src/gateway/hono/routes/projects.js.map +0 -1
- package/dist/src/gateway/hono/routes/public-gateway.js.map +0 -1
- package/dist/src/gateway/hono/routes/search.js.map +0 -1
- package/dist/src/gateway/hono/routes/sessions.js.map +0 -1
- package/dist/src/gateway/hono/routes/shares.js.map +0 -1
- package/dist/src/gateway/hono/routes/site-shares.js.map +0 -1
- package/dist/src/gateway/hono/routes/status.js.map +0 -1
- package/dist/src/gateway/hono/routes/tui.js.map +0 -1
- package/dist/src/gateway/hono/routes/tunnel.js.map +0 -1
- package/dist/src/gateway/hono/routes/update.js.map +0 -1
- package/dist/src/gateway/hono/routes/voice.js.map +0 -1
- package/dist/src/gateway/hono/routes/work-discovery.js.map +0 -1
- package/dist/src/gateway/hono/routes/workflows.js.map +0 -1
- package/dist/src/gateway/hono/routes/workspace.js.map +0 -1
- package/dist/src/gateway/hono/routes/you.js.map +0 -1
- package/dist/src/gateway/hono/sse-json.js.map +0 -1
- package/dist/src/gateway/hono/sse.js.map +0 -1
- package/dist/src/gateway/host.js.map +0 -1
- package/dist/src/gateway/image-capabilities.js.map +0 -1
- package/dist/src/gateway/listen.js.map +0 -1
- package/dist/src/gateway/lock.js.map +0 -1
- package/dist/src/gateway/ports.js.map +0 -1
- package/dist/src/gateway/protocol.js.map +0 -1
- package/dist/src/gateway/public-url.js.map +0 -1
- package/dist/src/gateway/rate-limit/auth-policy.js.map +0 -1
- package/dist/src/gateway/rate-limit/buckets.js.map +0 -1
- package/dist/src/gateway/rate-limit/env-flags.js.map +0 -1
- package/dist/src/gateway/resolve-channel-connect-defer.js.map +0 -1
- package/dist/src/gateway/resolve-webchat-session-key.js.map +0 -1
- package/dist/src/gateway/respawn.js.map +0 -1
- package/dist/src/gateway/run-loop.js.map +0 -1
- package/dist/src/gateway/runtime-config.js.map +0 -1
- package/dist/src/gateway/security/audit.js.map +0 -1
- package/dist/src/gateway/security/csp.js.map +0 -1
- package/dist/src/gateway/security/dangerous-tools.js.map +0 -1
- package/dist/src/gateway/security/external-content.js.map +0 -1
- package/dist/src/gateway/security/known-weak-secrets.js.map +0 -1
- package/dist/src/gateway/security/loopback.js.map +0 -1
- package/dist/src/gateway/security/operator-scopes.js.map +0 -1
- package/dist/src/gateway/security/origin-check.js.map +0 -1
- package/dist/src/gateway/security/preauth-connection-budget.js.map +0 -1
- package/dist/src/gateway/security/secret-equal.js.map +0 -1
- package/dist/src/gateway/server-tailscale.js.map +0 -1
- package/dist/src/gateway/server.js.map +0 -1
- package/dist/src/gateway/service/agent-runner.js.map +0 -1
- package/dist/src/gateway/service/config-coordinator.js.map +0 -1
- package/dist/src/gateway/service/marketplace-service.js.map +0 -1
- package/dist/src/gateway/service/run-gateway-agent.js.map +0 -1
- package/dist/src/gateway/service/session-chat-ids.js.map +0 -1
- package/dist/src/gateway/service/sessions-api.js.map +0 -1
- package/dist/src/gateway/service/sse-hub.js.map +0 -1
- package/dist/src/gateway/service.js.map +0 -1
- package/dist/src/gateway/session-reset-service.js.map +0 -1
- package/dist/src/gateway/startup-readiness.js.map +0 -1
- package/dist/src/gateway/startup-trace.js.map +0 -1
- package/dist/src/gateway/tailscale-auth.js.map +0 -1
- package/dist/src/gateway/tailscale-lifecycle.js.map +0 -1
- package/dist/src/gateway/tls-server.js.map +0 -1
- package/dist/src/gateway/trusted-proxy.js.map +0 -1
- package/dist/src/gateway/user-turn-input.js.map +0 -1
- package/dist/src/gateway/workspace-editor-path.js.map +0 -1
- package/dist/src/gateway/workspace-file-search.js.map +0 -1
- package/dist/src/gateway/workspace-fs-file-list.js.map +0 -1
- package/dist/src/gateway/workspace-heartbeat-path.js.map +0 -1
- package/dist/src/gateway/workspace-ripgrep.js.map +0 -1
- package/dist/src/gateway/ws-security.js.map +0 -1
- package/dist/src/generated/bundled-image-generation-providers.js.map +0 -1
- package/dist/src/goals/goal-contract-draft.js.map +0 -1
- package/dist/src/goals/goal-evidence-review.js.map +0 -1
- package/dist/src/goals/goal-notifications.js.map +0 -1
- package/dist/src/goals/goal-queue-store.js.map +0 -1
- package/dist/src/goals/goal-runner.js.map +0 -1
- package/dist/src/goals/goal-service.js.map +0 -1
- package/dist/src/goals/goal-store.js.map +0 -1
- package/dist/src/goals/goal-workflow-judge.js.map +0 -1
- package/dist/src/heartbeat/active-hours.js.map +0 -1
- package/dist/src/heartbeat/content-check.js.map +0 -1
- package/dist/src/heartbeat/event-prompt.js.map +0 -1
- package/dist/src/heartbeat/tokens.js.map +0 -1
- package/dist/src/heartbeat/wake.js.map +0 -1
- package/dist/src/i18n/format.js.map +0 -1
- package/dist/src/i18n/goals-bundle.js.map +0 -1
- package/dist/src/i18n/locale.js.map +0 -1
- package/dist/src/i18n/locales/goals.en.js.map +0 -1
- package/dist/src/i18n/locales/goals.zh.js.map +0 -1
- package/dist/src/i18n/locales/share-tool.en.js.map +0 -1
- package/dist/src/i18n/locales/share-tool.zh.js.map +0 -1
- package/dist/src/i18n/share-tool-bundle.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/infra/brew.js.map +0 -1
- package/dist/src/infra/bus/queue.js.map +0 -1
- package/dist/src/infra/debounce.js.map +0 -1
- package/dist/src/infra/exec.js.map +0 -1
- package/dist/src/infra/gateway-process-argv.js.map +0 -1
- package/dist/src/infra/gateway-processes.js.map +0 -1
- package/dist/src/infra/host-env-security-policy.js.map +0 -1
- package/dist/src/infra/host-env-security.js.map +0 -1
- package/dist/src/infra/http-proxy-env.js.map +0 -1
- package/dist/src/infra/is-main.js.map +0 -1
- package/dist/src/infra/json-utf8-bytes.js.map +0 -1
- package/dist/src/infra/node-sqlite.js.map +0 -1
- package/dist/src/infra/package-json.js.map +0 -1
- package/dist/src/infra/package-update-steps.js.map +0 -1
- package/dist/src/infra/path-env.js.map +0 -1
- package/dist/src/infra/path-prepend.js.map +0 -1
- package/dist/src/infra/ports.js.map +0 -1
- package/dist/src/infra/rate-limit/failure-limiter.js.map +0 -1
- package/dist/src/infra/rate-limit/keyed-store.js.map +0 -1
- package/dist/src/infra/rate-limit/rate-limiter.js.map +0 -1
- package/dist/src/infra/restart.js.map +0 -1
- package/dist/src/infra/retry.js.map +0 -1
- package/dist/src/infra/run-command.js.map +0 -1
- package/dist/src/infra/sqlite-errors.js.map +0 -1
- package/dist/src/infra/ssh-tunnel.js.map +0 -1
- package/dist/src/infra/stable-node-path.js.map +0 -1
- package/dist/src/infra/tailscale.js.map +0 -1
- package/dist/src/infra/undici-fetch.js.map +0 -1
- package/dist/src/infra/unhandled-rejections.js.map +0 -1
- package/dist/src/infra/update-channels.js.map +0 -1
- package/dist/src/infra/update-check.js.map +0 -1
- package/dist/src/infra/update-global.js.map +0 -1
- package/dist/src/infra/update-lock.js.map +0 -1
- package/dist/src/infra/update-log.js.map +0 -1
- package/dist/src/infra/update-restart.js.map +0 -1
- package/dist/src/infra/update-runner.js.map +0 -1
- package/dist/src/infra/update-startup.js.map +0 -1
- package/dist/src/infra/warning-filter.js.map +0 -1
- package/dist/src/infra/write-file-atomic.js.map +0 -1
- package/dist/src/knowledge/connected-knowledge-pipeline.js.map +0 -1
- package/dist/src/knowledge/coordinator.js.map +0 -1
- package/dist/src/knowledge/ingestion-service.js.map +0 -1
- package/dist/src/local-apps/acceptance.js.map +0 -1
- package/dist/src/local-apps/preview-runtime-bridge.js.map +0 -1
- package/dist/src/local-apps/runtime-entry.js.map +0 -1
- package/dist/src/local-apps/scaffold.js.map +0 -1
- package/dist/src/local-apps/service.js.map +0 -1
- package/dist/src/local-apps/store.js.map +0 -1
- package/dist/src/markdown/chunk.js.map +0 -1
- package/dist/src/markdown/code-spans.js.map +0 -1
- package/dist/src/markdown/fences.js.map +0 -1
- package/dist/src/markdown/frontmatter.js.map +0 -1
- package/dist/src/markdown/ir.js.map +0 -1
- package/dist/src/markdown/render.js.map +0 -1
- package/dist/src/markdown/tables.js.map +0 -1
- package/dist/src/mcp/channel-bridge.js.map +0 -1
- package/dist/src/mcp/channel-server.js.map +0 -1
- package/dist/src/mcp/channel-shared.js.map +0 -1
- package/dist/src/mcp/channel-tools.js.map +0 -1
- package/dist/src/mcp/gateway-http-client.js.map +0 -1
- package/dist/src/media/media-reference.js.map +0 -1
- package/dist/src/media/paths.js.map +0 -1
- package/dist/src/media/session-references.js.map +0 -1
- package/dist/src/media/store.js.map +0 -1
- package/dist/src/media/uri.js.map +0 -1
- package/dist/src/media-shared/http/api-key-rotation.js.map +0 -1
- package/dist/src/media-shared/http/deadline.js.map +0 -1
- package/dist/src/media-shared/http/private-network.js.map +0 -1
- package/dist/src/media-shared/http/provider-http-errors.js.map +0 -1
- package/dist/src/media-shared/http/provider-http.js.map +0 -1
- package/dist/src/media-shared/http/resolve-provider-http-request-config.js.map +0 -1
- package/dist/src/media-shared/http/ssrf-guard.js.map +0 -1
- package/dist/src/media-shared/http/test-helpers/mock-server.js.map +0 -1
- package/dist/src/media-understanding/audio-transcription-runner.js.map +0 -1
- package/dist/src/media-understanding/openai-compatible-audio.js.map +0 -1
- package/dist/src/media-understanding/registry.js.map +0 -1
- package/dist/src/media-understanding/resolve-entries.js.map +0 -1
- package/dist/src/media-understanding/runner.js.map +0 -1
- package/dist/src/migrations/config/default-capability-preset.js.map +0 -1
- package/dist/src/migrations/registry.js.map +0 -1
- package/dist/src/migrations/runner.js.map +0 -1
- package/dist/src/mobile/notification-service.js.map +0 -1
- package/dist/src/mobile/notification-store.js.map +0 -1
- package/dist/src/mobile/notification-types.js.map +0 -1
- package/dist/src/notes/agent-context.js.map +0 -1
- package/dist/src/notes/attachment-ref.js.map +0 -1
- package/dist/src/notes/note-attachment-sync.js.map +0 -1
- package/dist/src/notes/note-index-meta.js.map +0 -1
- package/dist/src/notes/note-markdown.js.map +0 -1
- package/dist/src/notes/paths.js.map +0 -1
- package/dist/src/notes/service.js.map +0 -1
- package/dist/src/notes/store.js.map +0 -1
- package/dist/src/package-version.js.map +0 -1
- package/dist/src/pets/factory.js.map +0 -1
- package/dist/src/pets/manifest.js.map +0 -1
- package/dist/src/pets/validator.js.map +0 -1
- package/dist/src/process/kill-tree.js.map +0 -1
- package/dist/src/project-trust/trust-store.js.map +0 -1
- package/dist/src/projects/automation-bind.js.map +0 -1
- package/dist/src/projects/goal-bind.js.map +0 -1
- package/dist/src/projects/memory-bind.js.map +0 -1
- package/dist/src/projects/project-agent-suggestion.js.map +0 -1
- package/dist/src/projects/project-agent.js.map +0 -1
- package/dist/src/projects/project-kind.js.map +0 -1
- package/dist/src/projects/project-loop.js.map +0 -1
- package/dist/src/projects/project-service.js.map +0 -1
- package/dist/src/projects/project-store.js.map +0 -1
- package/dist/src/projects/session-bind.js.map +0 -1
- package/dist/src/projects/workflow-bind.js.map +0 -1
- package/dist/src/projects/workspace-project.js.map +0 -1
- package/dist/src/projects/workspace.js.map +0 -1
- package/dist/src/providers/auth-runtime/auth-profile-store.js.map +0 -1
- package/dist/src/providers/auth-runtime/is-configured.js.map +0 -1
- package/dist/src/providers/auth-runtime/oauth.js.map +0 -1
- package/dist/src/providers/auth-runtime/resolve-api-key.js.map +0 -1
- package/dist/src/providers/auth-runtime/resolve-auth.js.map +0 -1
- package/dist/src/providers/constants.js.map +0 -1
- package/dist/src/providers/domestic-presets.js.map +0 -1
- package/dist/src/providers/env-keys.js.map +0 -1
- package/dist/src/providers/extension-stream-bridge.js.map +0 -1
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/providers/model-call.js.map +0 -1
- package/dist/src/providers/model-discovery.js.map +0 -1
- package/dist/src/providers/model-registry.js.map +0 -1
- package/dist/src/providers/model-supplements.js.map +0 -1
- package/dist/src/providers/plugin-registry.js.map +0 -1
- package/dist/src/providers/presentation.js.map +0 -1
- package/dist/src/remote-access/exposure-guards.js.map +0 -1
- package/dist/src/remote-access/exposure-manager.js.map +0 -1
- package/dist/src/review/review-git.js.map +0 -1
- package/dist/src/review/review-types.js.map +0 -1
- package/dist/src/routing/account-id.js.map +0 -1
- package/dist/src/routing/agent-session-key.js.map +0 -1
- package/dist/src/routing/bindings.js.map +0 -1
- package/dist/src/routing/index.js.map +0 -1
- package/dist/src/routing/resolve-route.js.map +0 -1
- package/dist/src/routing/resolve-tui-session-key.js.map +0 -1
- package/dist/src/routing/session-key-utils.js.map +0 -1
- package/dist/src/routing/session-key.js.map +0 -1
- package/dist/src/session/abort-cutoff.js.map +0 -1
- package/dist/src/session/chat-export.js.map +0 -1
- package/dist/src/session/client-history.js.map +0 -1
- package/dist/src/session/compaction-checkpoints.js.map +0 -1
- package/dist/src/session/config-store.js.map +0 -1
- package/dist/src/session/init-session-turn.js.map +0 -1
- package/dist/src/session/lifecycle-timestamps.js.map +0 -1
- package/dist/src/session/load-jsonl-entries.js.map +0 -1
- package/dist/src/session/manager.js.map +0 -1
- package/dist/src/session/patch-metadata.js.map +0 -1
- package/dist/src/session/reset-policy.js.map +0 -1
- package/dist/src/session/reset-triggers.js.map +0 -1
- package/dist/src/session/reset-type.js.map +0 -1
- package/dist/src/session/resolve-session.js.map +0 -1
- package/dist/src/session/session-context-for-llm.js.map +0 -1
- package/dist/src/session/session-id.js.map +0 -1
- package/dist/src/session/session-title.js.map +0 -1
- package/dist/src/session/session-workspace.js.map +0 -1
- package/dist/src/session/store.js.map +0 -1
- package/dist/src/session/stored-rows-to-file-entries.js.map +0 -1
- package/dist/src/session/thinking-resolve.js.map +0 -1
- package/dist/src/session/transcript-events.js.map +0 -1
- package/dist/src/session/transcript-format.js.map +0 -1
- package/dist/src/session/transcript-outline.js.map +0 -1
- package/dist/src/session/transcript-stats.js.map +0 -1
- package/dist/src/session/types.js.map +0 -1
- package/dist/src/session/user-round-delete.js.map +0 -1
- package/dist/src/share/share-audit.js.map +0 -1
- package/dist/src/share/share-auto.js.map +0 -1
- package/dist/src/share/share-config.js.map +0 -1
- package/dist/src/share/share-landing.js.map +0 -1
- package/dist/src/share/share-rate-limit.js.map +0 -1
- package/dist/src/share/share-store.js.map +0 -1
- package/dist/src/share/share-thumbnail.js.map +0 -1
- package/dist/src/share/share-types.js.map +0 -1
- package/dist/src/share/share-url.js.map +0 -1
- package/dist/src/share/share-zip.js.map +0 -1
- package/dist/src/share/site-proxy.js.map +0 -1
- package/dist/src/share/site-share-config.js.map +0 -1
- package/dist/src/share/site-share-router.js.map +0 -1
- package/dist/src/share/site-share-store.js.map +0 -1
- package/dist/src/share/site-share-types.js.map +0 -1
- package/dist/src/share/site-static-serve.js.map +0 -1
- package/dist/src/storage/sqlite/activity-repository.js.map +0 -1
- package/dist/src/storage/sqlite/config-repository.js.map +0 -1
- package/dist/src/storage/sqlite/connection.js.map +0 -1
- package/dist/src/storage/sqlite/connector-repository.js.map +0 -1
- package/dist/src/storage/sqlite/fts.js.map +0 -1
- package/dist/src/storage/sqlite/knowledge-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-index-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-records-repository.js.map +0 -1
- package/dist/src/storage/sqlite/memory-reference-consent-repository.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/discover.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/errors.js.map +0 -1
- package/dist/src/storage/sqlite/migrations/runner.js.map +0 -1
- package/dist/src/storage/sqlite/note-agent-context-repository.js.map +0 -1
- package/dist/src/storage/sqlite/notes-repository.js.map +0 -1
- package/dist/src/storage/sqlite/paths.js.map +0 -1
- package/dist/src/storage/sqlite/row-mappers.js.map +0 -1
- package/dist/src/storage/sqlite/schema-version.js.map +0 -1
- package/dist/src/storage/sqlite/schema.js.map +0 -1
- package/dist/src/storage/sqlite/session-metadata.js.map +0 -1
- package/dist/src/storage/sqlite/session-repository.js.map +0 -1
- package/dist/src/storage/sqlite/transaction.js.map +0 -1
- package/dist/src/storage/sqlite/transcript-repository.js.map +0 -1
- package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +0 -1
- package/dist/src/storage/sqlite/user-trust-repository.js.map +0 -1
- package/dist/src/tui/backends/embedded-backend.js.map +0 -1
- package/dist/src/tui/backends/gateway-sse-backend.js.map +0 -1
- package/dist/src/tui/chat-history.js.map +0 -1
- package/dist/src/tui/clipboard-image.js.map +0 -1
- package/dist/src/tui/clipboard-text.js.map +0 -1
- package/dist/src/tui/components/assistant-message.js.map +0 -1
- package/dist/src/tui/components/bash-execution.js.map +0 -1
- package/dist/src/tui/components/bash-summary.js.map +0 -1
- package/dist/src/tui/components/branch-message-summary.js.map +0 -1
- package/dist/src/tui/components/branch-summary.js.map +0 -1
- package/dist/src/tui/components/chat-log.js.map +0 -1
- package/dist/src/tui/components/compaction-summary.js.map +0 -1
- package/dist/src/tui/components/custom-editor.js.map +0 -1
- package/dist/src/tui/components/custom-message.js.map +0 -1
- package/dist/src/tui/components/dynamic-border.js.map +0 -1
- package/dist/src/tui/components/extension-dialog.js.map +0 -1
- package/dist/src/tui/components/fuzzy-filter.js.map +0 -1
- package/dist/src/tui/components/scoped-models-selector.js.map +0 -1
- package/dist/src/tui/components/searchable-select-list.js.map +0 -1
- package/dist/src/tui/components/session-selector.js.map +0 -1
- package/dist/src/tui/components/settings-selector.js.map +0 -1
- package/dist/src/tui/components/thinking-selector.js.map +0 -1
- package/dist/src/tui/components/tool-execution.js.map +0 -1
- package/dist/src/tui/components/tui-bottom-bar.js.map +0 -1
- package/dist/src/tui/components/tui-header.js.map +0 -1
- package/dist/src/tui/components/user-message.js.map +0 -1
- package/dist/src/tui/components/visual-truncate.js.map +0 -1
- package/dist/src/tui/extension-host/autocomplete.js.map +0 -1
- package/dist/src/tui/extension-host/host.js.map +0 -1
- package/dist/src/tui/extension-host/load-extensions.js.map +0 -1
- package/dist/src/tui/extension-host/runtime-context.js.map +0 -1
- package/dist/src/tui/extension-host/runtime.js.map +0 -1
- package/dist/src/tui/extension-host/surface.js.map +0 -1
- package/dist/src/tui/extension-host/tool-renderers.js.map +0 -1
- package/dist/src/tui/format-tui-hotkeys.js.map +0 -1
- package/dist/src/tui/sse-consumer.js.map +0 -1
- package/dist/src/tui/theme/dark.js.map +0 -1
- package/dist/src/tui/theme/light.js.map +0 -1
- package/dist/src/tui/theme-manager.js.map +0 -1
- package/dist/src/tui/theme.js.map +0 -1
- package/dist/src/tui/tool-summary.js.map +0 -1
- package/dist/src/tui/tui-agent-events.js.map +0 -1
- package/dist/src/tui/tui-command-formatters.js.map +0 -1
- package/dist/src/tui/tui-commands.js.map +0 -1
- package/dist/src/tui/tui-context-usage.js.map +0 -1
- package/dist/src/tui/tui-extension-user-message.js.map +0 -1
- package/dist/src/tui/tui-fd-path.js.map +0 -1
- package/dist/src/tui/tui-file-autocomplete.js.map +0 -1
- package/dist/src/tui/tui-follow-up-queue.js.map +0 -1
- package/dist/src/tui/tui-git-branch.js.map +0 -1
- package/dist/src/tui/tui-keybindings-file.js.map +0 -1
- package/dist/src/tui/tui-lifecycle.js.map +0 -1
- package/dist/src/tui/tui-local-shell.js.map +0 -1
- package/dist/src/tui/tui-model-picker.js.map +0 -1
- package/dist/src/tui/tui-oauth-login.js.map +0 -1
- package/dist/src/tui/tui-overlays.js.map +0 -1
- package/dist/src/tui/tui-picker-overlay.js.map +0 -1
- package/dist/src/tui/tui-run-state.js.map +0 -1
- package/dist/src/tui/tui-run-status-format.js.map +0 -1
- package/dist/src/tui/tui-runtime-hints.js.map +0 -1
- package/dist/src/tui/tui-scoped-models.js.map +0 -1
- package/dist/src/tui/tui-session-actions.js.map +0 -1
- package/dist/src/tui/tui-session-format.js.map +0 -1
- package/dist/src/tui/tui-session-snapshot.js.map +0 -1
- package/dist/src/tui/tui-session-stats.js.map +0 -1
- package/dist/src/tui/tui-settings.js.map +0 -1
- package/dist/src/tui/tui-skills-autocomplete.js.map +0 -1
- package/dist/src/tui/tui-startup-resources.js.map +0 -1
- package/dist/src/tui/tui-startup-text.js.map +0 -1
- package/dist/src/tui/tui-stdio-filter.js.map +0 -1
- package/dist/src/tui/tui-submit.js.map +0 -1
- package/dist/src/tui/tui-suspend.js.map +0 -1
- package/dist/src/tui/tui-timeline-picker.js.map +0 -1
- package/dist/src/tui/tui-timeline.js.map +0 -1
- package/dist/src/tui/tui-tool-diff.js.map +0 -1
- package/dist/src/tui/tui-tool-result.js.map +0 -1
- package/dist/src/tui/tui-transcript-tree-picker.js.map +0 -1
- package/dist/src/tui/tui-transcript-tree.js.map +0 -1
- package/dist/src/tui/tui-types.js.map +0 -1
- package/dist/src/tui/tui-workflow-slash.js.map +0 -1
- package/dist/src/tui/tui.js.map +0 -1
- package/dist/src/tui/xopc-tui-keybindings.js.map +0 -1
- package/dist/src/tunnel/broker-client.js.map +0 -1
- package/dist/src/tunnel/consent.js.map +0 -1
- package/dist/src/tunnel/enable-lan-pairing.js.map +0 -1
- package/dist/src/tunnel/env.js.map +0 -1
- package/dist/src/tunnel/frp-subdomain-host.js.map +0 -1
- package/dist/src/tunnel/frpc-binary.js.map +0 -1
- package/dist/src/tunnel/frpc-config.js.map +0 -1
- package/dist/src/tunnel/frpc-extract.js.map +0 -1
- package/dist/src/tunnel/frpc-process.js.map +0 -1
- package/dist/src/tunnel/gateway-lifecycle.js.map +0 -1
- package/dist/src/tunnel/pair-context.js.map +0 -1
- package/dist/src/tunnel/pair-url.js.map +0 -1
- package/dist/src/tunnel/pairing-rate-limit.js.map +0 -1
- package/dist/src/tunnel/pairing.js.map +0 -1
- package/dist/src/tunnel/tunnel-audit.js.map +0 -1
- package/dist/src/tunnel/tunnel-config.js.map +0 -1
- package/dist/src/tunnel/tunnel-persist.js.map +0 -1
- package/dist/src/tunnel/tunnel-qr.js.map +0 -1
- package/dist/src/tunnel/tunnel-rate-limit.js.map +0 -1
- package/dist/src/tunnel/tunnel-service.js.map +0 -1
- package/dist/src/tunnel/tunnel-state.js.map +0 -1
- package/dist/src/tunnel/well-known.js.map +0 -1
- package/dist/src/user-context/config.js.map +0 -1
- package/dist/src/user-context/import.js.map +0 -1
- package/dist/src/user-context/owner.js.map +0 -1
- package/dist/src/user-context/profile.js.map +0 -1
- package/dist/src/user-context/projection.js.map +0 -1
- package/dist/src/user-context/runtime.js.map +0 -1
- package/dist/src/user-context/source-recommendations.js.map +0 -1
- package/dist/src/user-context/trust-policy.js.map +0 -1
- package/dist/src/utils/global-singleton.js.map +0 -1
- package/dist/src/utils/helpers.js.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/is-record.js.map +0 -1
- package/dist/src/utils/logger/audit.js.map +0 -1
- package/dist/src/utils/logger/config.js.map +0 -1
- package/dist/src/utils/logger/context.js.map +0 -1
- package/dist/src/utils/logger/exporters.js.map +0 -1
- package/dist/src/utils/logger/index.js.map +0 -1
- package/dist/src/utils/logger/log-store.js.map +0 -1
- package/dist/src/utils/logger/log-stream.js.map +0 -1
- package/dist/src/utils/logger/pino-record.js.map +0 -1
- package/dist/src/utils/logger/redact.js.map +0 -1
- package/dist/src/utils/logger/rotation.js.map +0 -1
- package/dist/src/utils/logger/shutdown.js.map +0 -1
- package/dist/src/utils/logger/stats.js.map +0 -1
- package/dist/src/utils/logger/streams.js.map +0 -1
- package/dist/src/utils/logger/types.js.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/redact-sensitive-url.js.map +0 -1
- package/dist/src/utils/sanitize-log.js.map +0 -1
- package/dist/src/utils/string-coerce.js.map +0 -1
- package/dist/src/voice/language-profile.js.map +0 -1
- package/dist/src/voice/local/model-files.js.map +0 -1
- package/dist/src/voice/local/model-manager.js.map +0 -1
- package/dist/src/voice/local/models.js.map +0 -1
- package/dist/src/voice/local/runtime-client.js.map +0 -1
- package/dist/src/voice/local/runtime-dispatcher.js.map +0 -1
- package/dist/src/voice/local/runtime-worker.js.map +0 -1
- package/dist/src/voice/local/wav.js.map +0 -1
- package/dist/src/voice/metadata/builtin.js.map +0 -1
- package/dist/src/voice/metadata/registry.js.map +0 -1
- package/dist/src/voice/stt/availability.js.map +0 -1
- package/dist/src/voice/stt/config-slice.js.map +0 -1
- package/dist/src/voice/stt/factory.js.map +0 -1
- package/dist/src/voice/stt/index.js.map +0 -1
- package/dist/src/voice/stt/list-providers.js.map +0 -1
- package/dist/src/voice/stt/mention.js.map +0 -1
- package/dist/src/voice/stt/preflight.js.map +0 -1
- package/dist/src/voice/stt/providers/alibaba-transcription.js.map +0 -1
- package/dist/src/voice/stt/providers/local-transcription.js.map +0 -1
- package/dist/src/voice/stt/providers/openai-transcription.js.map +0 -1
- package/dist/src/voice/stt/transcribe-core.js.map +0 -1
- package/dist/src/voice/stt/types.js.map +0 -1
- package/dist/src/voice/tts/audio.js.map +0 -1
- package/dist/src/voice/tts/config-slice.js.map +0 -1
- package/dist/src/voice/tts/directives.js.map +0 -1
- package/dist/src/voice/tts/factory.js.map +0 -1
- package/dist/src/voice/tts/list-providers.js.map +0 -1
- package/dist/src/voice/tts/merge-config.js.map +0 -1
- package/dist/src/voice/tts/openai-compatible-speech.js.map +0 -1
- package/dist/src/voice/tts/payload.js.map +0 -1
- package/dist/src/voice/tts/preprocess.js.map +0 -1
- package/dist/src/voice/tts/providers/alibaba-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/edge-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/minimax-speech.js.map +0 -1
- package/dist/src/voice/tts/providers/openai-speech.js.map +0 -1
- package/dist/src/voice/tts/sentence-boundary.js.map +0 -1
- package/dist/src/voice/tts/service.js.map +0 -1
- package/dist/src/voice/tts/speak-core.js.map +0 -1
- package/dist/src/voice/tts/speech-registry.js.map +0 -1
- package/dist/src/voice/tts/status-tracker.js.map +0 -1
- package/dist/src/voice/tts/summarize.js.map +0 -1
- package/dist/src/voice/tts/types.js.map +0 -1
- package/dist/src/work-discovery/analyzer.js.map +0 -1
- package/dist/src/work-discovery/probe.js.map +0 -1
- package/dist/src/work-discovery/repository.js.map +0 -1
- package/dist/src/work-discovery/service.js.map +0 -1
- package/dist/src/work-items/agent-context.js.map +0 -1
- package/dist/src/work-items/work-item-service.js.map +0 -1
- package/dist/src/work-items/work-item-store.js.map +0 -1
- package/dist/src/work-items/work-item-workflow-judge.js.map +0 -1
- package/dist/src/workflows/authoring/workflow-draft-store.js.map +0 -1
- package/dist/src/workflows/domain/definition-utils.js.map +0 -1
- package/dist/src/workflows/domain/run.js.map +0 -1
- package/dist/src/workflows/domain/schema-validation.js.map +0 -1
- package/dist/src/workflows/domain/validation.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-prompt.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-service.js.map +0 -1
- package/dist/src/workflows/draft/workflow-draft-validator.js.map +0 -1
- package/dist/src/workflows/engine/projector.js.map +0 -1
- package/dist/src/workflows/engine/workflow-engine.js.map +0 -1
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +0 -1
- package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +0 -1
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +0 -1
- package/dist/src/workflows/service/workflow-run-service.js.map +0 -1
- package/dist/src/workflows/service/workflow-session-bridge.js.map +0 -1
- package/dist/src/workflows/service/workflow-session-key.js.map +0 -1
- package/dist/src/workflows/store/event-store.js.map +0 -1
- package/dist/src/workflows/store/paths.js.map +0 -1
- package/dist/src/workflows/store/run-index-store.js.map +0 -1
- package/dist/src/workflows/store/run-store.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","names":[],"sources":["../../../src/work-discovery/service.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { Config } from '../config/schema.js';\nimport { getAgentDefaultModelRef } from '../config/schema.js';\nimport { ActivityService } from '../activity/service.js';\nimport type { ProjectService } from '../projects/project-service.js';\nimport { buildSessionKey } from '../routing/session-key.js';\nimport { getDefaultAgentId } from '../routing/resolve-route.js';\nimport type { SessionIndex } from '../session/manager.js';\nimport type { SessionMetadataSeed } from '../storage/sqlite/index.js';\nimport { createLogger } from '../utils/logger.js';\n\nimport { analyzeWorkContext, workDiscoveryResultMarkdown } from './analyzer.js';\nimport {\n createWorkDiscoveryRun,\n getWorkDiscoveryOnboardingState,\n getWorkDiscoveryRun,\n getWorkDiscoveryRunByIdempotencyKey,\n setWorkDiscoveryFeedback,\n setWorkDiscoveryOnboardingState,\n updateWorkDiscoveryRun,\n} from './repository.js';\nimport {\n probeWorkDiscoveryRoot,\n previewWorkDiscoveryRoot,\n summarizeWorkContextSnapshot,\n WORK_DISCOVERY_SCAN_POLICY_VERSION,\n} from './probe.js';\nimport type {\n WorkDiscoveryErrorCode,\n WorkDiscoveryOnboardingState,\n WorkDiscoveryRecognitionDecision,\n WorkDiscoveryRun,\n WorkDiscoverySource,\n} from './types.js';\n\nconst log = createLogger('WorkDiscovery');\n\nexport interface WorkDiscoveryServiceOptions {\n projects: ProjectService;\n sessions: SessionIndex;\n getConfig: () => Config;\n emit: (type: string, payload: unknown) => void;\n}\n\nfunction sessionMetadata(agentId: string, peerId: string): SessionMetadataSeed {\n return {\n sourceChannel: 'webchat',\n sourceChatId: ['default', 'direct', peerId].join(':'),\n sessionType: 'chat',\n hiddenFromSessionList: true,\n routing: {\n agentId,\n source: 'webchat',\n accountId: 'default',\n peerKind: 'direct',\n peerId,\n },\n customData: {\n workDiscovery: true,\n genericNewChatShell: false,\n },\n };\n}\n\nfunction errorCode(error: unknown): WorkDiscoveryErrorCode {\n if (error instanceof DOMException && error.name === 'AbortError') return 'canceled';\n const message = error instanceof Error ? error.message.toLowerCase() : String(error).toLowerCase();\n if (message.includes('api key') || message.includes('model') || message.includes('provider')) return 'model_unavailable';\n if (message.includes('directory') || message.includes('folder') || message.includes('enoent')) return 'folder_unavailable';\n if (message.includes('permission') || message.includes('eacces')) return 'folder_not_readable';\n if (message.includes('json') || message.includes('analysis result')) return 'analysis_invalid';\n if (message.includes('timeout')) return 'analysis_timeout';\n return 'internal_error';\n}\n\nexport class WorkDiscoveryService {\n private readonly abortControllers = new Map<string, AbortController>();\n private readonly activity = new ActivityService();\n\n constructor(private readonly options: WorkDiscoveryServiceOptions) {}\n\n isEnabled(): boolean {\n return this.options.getConfig().experimental?.workDiscoveryOnboarding === true;\n }\n\n getOnboardingState(): WorkDiscoveryOnboardingState {\n return getWorkDiscoveryOnboardingState();\n }\n\n dismissOnboarding(): WorkDiscoveryOnboardingState {\n return setWorkDiscoveryOnboardingState({ status: 'dismissed', activeRunId: null });\n }\n\n getRun(id: string): WorkDiscoveryRun | null {\n return getWorkDiscoveryRun(id);\n }\n\n async startRun(input: {\n rootPath: string;\n source: WorkDiscoverySource;\n idempotencyKey: string;\n }): Promise<WorkDiscoveryRun> {\n const existing = getWorkDiscoveryRunByIdempotencyKey(input.idempotencyKey);\n if (existing) return existing;\n const config = this.options.getConfig();\n const modelRef = getAgentDefaultModelRef(config);\n if (!modelRef) throw new Error('No default model configured');\n\n const preview = await previewWorkDiscoveryRoot(input.rootPath);\n const rootPath = preview.canonicalRootPath;\n const agentId = getDefaultAgentId(config);\n const match = this.options.projects.resolveOrCreateForWorkspacePath({\n workspacePath: rootPath,\n defaultAgentId: agentId,\n autoCreate: true,\n });\n if (!match) throw new Error('Selected folder cannot be used as a project workspace');\n const projectAgentId = match.project.defaultAgentId || agentId;\n const peerId = `work-discovery-${randomUUID()}`;\n const sessionKey = buildSessionKey({\n agentId: projectAgentId,\n source: 'webchat',\n accountId: 'default',\n peerKind: 'direct',\n peerId,\n });\n await this.options.sessions.saveMessages(sessionKey, [], {\n metadata: sessionMetadata(projectAgentId, peerId),\n });\n this.options.projects.attachSession(sessionKey, match.project.id);\n const now = Date.now();\n const run = createWorkDiscoveryRun({\n id: randomUUID(),\n idempotencyKey: input.idempotencyKey,\n source: input.source,\n status: 'queued',\n rootPath,\n projectId: match.project.id,\n sessionKey,\n agentId: projectAgentId,\n modelRef,\n scanPolicyVersion: WORK_DISCOVERY_SCAN_POLICY_VERSION,\n createdAt: now,\n });\n await this.options.sessions.appendTranscriptContextEntry(sessionKey, {\n text: 'Work discovery was explicitly requested for the selected folder.',\n data: {\n type: 'work_discovery',\n runId: run.id,\n rootPath,\n scanPolicyVersion: WORK_DISCOVERY_SCAN_POLICY_VERSION,\n source: input.source,\n },\n });\n if (input.source === 'onboarding_selected_directory') {\n setWorkDiscoveryOnboardingState({ status: 'in_progress', activeRunId: run.id });\n }\n this.activity.record({\n type: 'work_discovery.started',\n primaryObject: { kind: 'project', id: match.project.id, title: match.project.name },\n actor: { kind: 'system' },\n initiator: { kind: 'user', sessionKey },\n source: { kind: 'gateway_api', runId: run.id },\n visibility: 'audit',\n payload: { policyVersion: WORK_DISCOVERY_SCAN_POLICY_VERSION, source: input.source },\n scopes: [\n { scopeKind: 'project', scopeId: match.project.id, reason: 'object_owner' },\n { scopeKind: 'session', scopeId: sessionKey, reason: 'runtime_context' },\n ],\n });\n const controller = new AbortController();\n this.abortControllers.set(run.id, controller);\n void this.execute(run, controller.signal);\n return run;\n }\n\n private publish(run: WorkDiscoveryRun): void {\n const suffix = run.status === 'completed'\n ? 'completed'\n : run.status === 'failed'\n ? 'failed'\n : run.status === 'canceled'\n ? 'canceled'\n : 'progress';\n this.options.emit(`work-discovery.${suffix}`, {\n runId: run.id,\n projectId: run.projectId,\n sessionKey: run.sessionKey,\n status: run.status,\n stage: run.stage,\n ...(run.status === 'completed' ? { result: run.result } : {}),\n });\n }\n\n private async execute(run: WorkDiscoveryRun, signal: AbortSignal): Promise<void> {\n const startedAt = Date.now();\n try {\n let current = updateWorkDiscoveryRun(run.id, {\n status: 'probing',\n stage: 'folder_structure',\n startedAt,\n })!;\n this.publish(current);\n const snapshot = await probeWorkDiscoveryRoot(run.rootPath, signal);\n if (signal.aborted) throw new DOMException('Work discovery canceled', 'AbortError');\n current = updateWorkDiscoveryRun(run.id, {\n status: 'analyzing',\n stage: 'recent_progress',\n snapshot: summarizeWorkContextSnapshot(snapshot),\n })!;\n this.publish(current);\n const analysis = await analyzeWorkContext({ config: this.options.getConfig(), snapshot, signal });\n current = updateWorkDiscoveryRun(run.id, { status: 'analyzing', stage: 'next_steps' })!;\n this.publish(current);\n await this.options.sessions.appendTranscriptCustomMessageEntry(run.sessionKey, {\n customType: 'work-discovery-result',\n content: workDiscoveryResultMarkdown(analysis.result),\n display: true,\n details: { runId: run.id, result: analysis.result },\n });\n const project = this.options.projects.get(run.projectId);\n await this.options.sessions.updateSessionMetadata(run.sessionKey, {\n name: project ? `Continue work on ${project.name}` : 'Continue recent work',\n hiddenFromSessionList: false,\n });\n current = updateWorkDiscoveryRun(run.id, {\n status: 'completed',\n stage: 'next_steps',\n result: analysis.result,\n completedAt: Date.now(),\n })!;\n this.activity.record({\n type: 'work_discovery.completed',\n primaryObject: { kind: 'project', id: run.projectId, title: project?.name },\n actor: { kind: 'agent', agentId: run.agentId, sessionKey: run.sessionKey },\n initiator: { kind: 'user', sessionKey: run.sessionKey },\n source: { kind: 'system', runId: run.id },\n payload: {\n policyVersion: run.scanPolicyVersion,\n suggestionCount: analysis.result.suggestions.length,\n lowConfidence: analysis.result.lowConfidence === true,\n },\n scopes: [\n { scopeKind: 'project', scopeId: run.projectId, reason: 'object_owner' },\n { scopeKind: 'session', scopeId: run.sessionKey, reason: 'runtime_context' },\n ],\n });\n this.publish(current);\n this.options.emit('session.transcript_updated', { key: run.sessionKey });\n log.info({ runId: run.id, projectId: run.projectId, sessionKey: run.sessionKey, durationMs: Date.now() - startedAt }, 'Work discovery completed');\n } catch (error) {\n const canceled = signal.aborted || (error instanceof DOMException && error.name === 'AbortError');\n const code = canceled ? 'canceled' : errorCode(error);\n const message = canceled ? 'Analysis canceled' : error instanceof Error ? error.message : String(error);\n const current = updateWorkDiscoveryRun(run.id, {\n status: canceled ? 'canceled' : 'failed',\n errorCode: code,\n errorMessage: message,\n ...(canceled ? { canceledAt: Date.now() } : { completedAt: Date.now() }),\n });\n if (current) this.publish(current);\n this.activity.record({\n type: canceled ? 'work_discovery.canceled' : 'work_discovery.failed',\n primaryObject: { kind: 'project', id: run.projectId },\n actor: { kind: 'system' },\n initiator: { kind: 'user', sessionKey: run.sessionKey },\n source: { kind: 'system', runId: run.id },\n visibility: 'audit',\n payload: { errorCode: code },\n scopes: [\n { scopeKind: 'project', scopeId: run.projectId, reason: 'object_owner' },\n { scopeKind: 'session', scopeId: run.sessionKey, reason: 'runtime_context' },\n ],\n });\n log.warn({ err: error, runId: run.id, projectId: run.projectId, phase: 'analysis', errorCode: code }, `Work discovery failed: ${message}`);\n } finally {\n this.abortControllers.delete(run.id);\n }\n }\n\n cancelRun(id: string): WorkDiscoveryRun | null {\n const run = getWorkDiscoveryRun(id);\n if (!run) return null;\n if (run.status === 'completed' || run.status === 'failed' || run.status === 'canceled') return run;\n this.abortControllers.get(id)?.abort();\n return updateWorkDiscoveryRun(id, {\n status: 'canceled',\n errorCode: 'canceled',\n errorMessage: 'Analysis canceled',\n canceledAt: Date.now(),\n });\n }\n\n retryRun(id: string): WorkDiscoveryRun | null {\n const run = getWorkDiscoveryRun(id);\n if (!run) return null;\n if (run.status !== 'failed' && run.status !== 'canceled') return run;\n const queued = updateWorkDiscoveryRun(id, {\n status: 'queued',\n stage: 'folder_structure',\n errorCode: undefined,\n errorMessage: undefined,\n completedAt: undefined,\n canceledAt: undefined,\n });\n if (!queued) return null;\n const controller = new AbortController();\n this.abortControllers.set(id, controller);\n if (run.source === 'onboarding_selected_directory') {\n setWorkDiscoveryOnboardingState({ status: 'in_progress', activeRunId: id });\n }\n this.publish(queued);\n void this.execute(queued, controller.signal);\n return queued;\n }\n\n async submitRecognitionFeedback(input: {\n runId: string;\n decision: WorkDiscoveryRecognitionDecision;\n correctedIntent?: string;\n }): Promise<WorkDiscoveryRun | null> {\n const run = getWorkDiscoveryRun(input.runId);\n if (!run || run.status !== 'completed' || !run.result) return null;\n const correctedIntent = input.correctedIntent?.trim().slice(0, 2_000);\n if ((input.decision === 'corrected' || input.decision === 'different_goal') && !correctedIntent) {\n throw new Error('A corrected intent is required for this decision');\n }\n const feedback = setWorkDiscoveryFeedback({\n runId: run.id,\n recognitionDecision: input.decision,\n ...(correctedIntent ? { correctedIntent } : {}),\n });\n if (run.source === 'onboarding_selected_directory') {\n setWorkDiscoveryOnboardingState({\n status: input.decision === 'dismissed' ? 'dismissed' : 'completed',\n activeRunId: input.decision === 'dismissed' ? null : run.id,\n });\n }\n const feedbackText = correctedIntent\n ? `The user corrected the work discovery understanding: ${correctedIntent}`\n : input.decision === 'confirmed'\n ? 'The user confirmed the work discovery understanding.'\n : 'The user left work discovery without confirming the suggested understanding.';\n await this.options.sessions.appendTranscriptContextEntry(run.sessionKey, {\n text: feedbackText,\n data: {\n type: 'work_discovery_recognition_feedback',\n runId: run.id,\n decision: input.decision,\n ...(correctedIntent ? { correctedIntent } : {}),\n },\n });\n this.activity.record({\n type: `work_discovery.recognition_${input.decision}`,\n primaryObject: { kind: 'project', id: run.projectId },\n actor: { kind: 'user', sessionKey: run.sessionKey },\n source: { kind: 'gateway_api', runId: run.id },\n payload: {\n decision: input.decision,\n corrected: Boolean(correctedIntent),\n },\n scopes: [\n { scopeKind: 'project', scopeId: run.projectId, reason: 'object_owner' },\n { scopeKind: 'session', scopeId: run.sessionKey, reason: 'runtime_context' },\n ],\n });\n this.options.emit('work-discovery.recognition-feedback', {\n runId: run.id,\n projectId: run.projectId,\n sessionKey: run.sessionKey,\n decision: input.decision,\n });\n return { ...run, feedback };\n }\n\n selectSuggestion(runId: string, suggestionId: string): WorkDiscoveryRun | null {\n const run = getWorkDiscoveryRun(runId);\n const suggestion = run?.result?.suggestions.find((item) => item.id === suggestionId);\n if (!run || !suggestion) return null;\n this.activity.record({\n type: 'work_discovery.suggestion_selected',\n primaryObject: { kind: 'project', id: run.projectId },\n actor: { kind: 'user', sessionKey: run.sessionKey },\n source: { kind: 'gateway_api', runId },\n payload: { suggestionId, title: suggestion.title },\n scopes: [\n { scopeKind: 'project', scopeId: run.projectId, reason: 'object_owner' },\n { scopeKind: 'session', scopeId: run.sessionKey, reason: 'runtime_context' },\n ],\n });\n return run;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-context.js","names":[],"sources":["../../../src/work-items/agent-context.ts"],"sourcesContent":["import type { ImageContent } from '@earendil-works/pi-ai';\n\nimport type { AgentSourceContext } from '../agent/source-context/types.js';\nimport { readMediaReferenceBase64 } from '../media/media-reference.js';\nimport type { MediaRef } from '../media/types.js';\n\nimport type { WorkItem } from './types.js';\n\nconst MAX_NATIVE_VISION_IMAGES = 6;\nconst MAX_NATIVE_VISION_IMAGE_BYTES = 2 * 1024 * 1024;\n\nfunction contextLine(label: string, value: string | number | undefined | null): string | null {\n if (value === undefined || value === null) return null;\n const text = String(value).trim();\n return text ? `${label}: ${text}` : null;\n}\n\nasync function loadWorkItemNativeVisionImages(item: WorkItem): Promise<ImageContent[]> {\n const images: ImageContent[] = [];\n for (const attachment of item.attachments ?? []) {\n if (attachment.type !== 'image') continue;\n if (!attachment.mimeType.toLowerCase().startsWith('image/')) continue;\n if (attachment.size > MAX_NATIVE_VISION_IMAGE_BYTES) continue;\n try {\n const loaded = await readMediaReferenceBase64(attachment.mediaUri, MAX_NATIVE_VISION_IMAGE_BYTES);\n images.push({ type: 'image', data: loaded.data, mimeType: attachment.mimeType || loaded.mimeType });\n if (images.length >= MAX_NATIVE_VISION_IMAGES) break;\n } catch {\n continue;\n }\n }\n return images;\n}\n\nfunction renderAttachmentLines(item: WorkItem, refs?: readonly MediaRef[]): string {\n if (!item.attachments?.length) return '';\n return item.attachments\n .slice(0, 12)\n .map((attachment, index) => {\n const ref = refs?.[index];\n return [\n `- ${ref?.name ?? attachment.fileName} (${ref?.mimeType ?? attachment.mimeType}, ${ref?.size ?? attachment.size} bytes)`,\n ` xopc-media-uri:${ref?.uri ?? attachment.mediaUri}`,\n ' Use the read_media tool with the xopc-media-uri value when you need to inspect this attachment.',\n ].join('\\n');\n })\n .join('\\n');\n}\n\nexport async function buildWorkItemAgentContext(\n item: WorkItem,\n opts: { attachments?: readonly MediaRef[]; includeImages?: boolean } = {},\n): Promise<AgentSourceContext> {\n const links = item.links?.length\n ? item.links\n .slice(0, 12)\n .map((link) => `- ${link.kind}: ${link.title || link.targetId}${link.statusSnapshot ? ` (${link.statusSnapshot})` : ''}`)\n .join('\\n')\n : '';\n const attachments = renderAttachmentLines(item, opts.attachments);\n const images = opts.includeImages === false ? [] : await loadWorkItemNativeVisionImages(item);\n const text = [\n 'You are working inside a project work item. Treat this as the active task context, not as a new user message.',\n '',\n contextLine('Work item id', item.id),\n contextLine('Project id', item.projectId),\n contextLine('Title', item.title),\n contextLine('Status', item.status),\n contextLine('Priority', item.priority),\n contextLine('Owner agent', item.ownerAgentId),\n contextLine('Description', item.description),\n contextLine('Next action', item.nextAction),\n contextLine('Blocked reason', item.blockedReason),\n item.dueAt ? contextLine('Due at', new Date(item.dueAt).toISOString()) : null,\n links ? `Linked executions:\\n${links}` : null,\n attachments ? `Attachments:\\n${attachments}` : null,\n '',\n 'When you answer, keep the work item moving. If the discussion changes scope, call out the suggested work item update explicitly.',\n ].filter(Boolean).join('\\n');\n\n return {\n kind: 'work_item',\n sourceId: item.id,\n version: String(item.updatedAt),\n title: item.title,\n text,\n ...(images.length ? { images } : {}),\n };\n}\n"],"mappings":";;AAQA,MAAM,2BAA2B;AACjC,MAAM,gCAAgC,IAAI,OAAO;AAEjD,SAAS,YAAY,OAAe,OAA0D;AAC5F,KAAI,UAAU,KAAA,KAAa,UAAU,KAAM,QAAO;CAClD,MAAM,OAAO,OAAO,MAAM,CAAC,MAAM;AACjC,QAAO,OAAO,GAAG,MAAM,IAAI,SAAS;;AAGtC,eAAe,+BAA+B,MAAyC;CACrF,MAAM,SAAyB,EAAE;AACjC,MAAK,MAAM,cAAc,KAAK,eAAe,EAAE,EAAE;AAC/C,MAAI,WAAW,SAAS,QAAS;AACjC,MAAI,CAAC,WAAW,SAAS,aAAa,CAAC,WAAW,SAAS,CAAE;AAC7D,MAAI,WAAW,OAAO,8BAA+B;AACrD,MAAI;GACF,MAAM,SAAS,MAAM,yBAAyB,WAAW,UAAU,8BAA8B;AACjG,UAAO,KAAK;IAAE,MAAM;IAAS,MAAM,OAAO;IAAM,UAAU,WAAW,YAAY,OAAO;IAAU,CAAC;AACnG,OAAI,OAAO,UAAU,yBAA0B;UACzC;AACN;;;AAGJ,QAAO;;AAGT,SAAS,sBAAsB,MAAgB,MAAoC;AACjF,KAAI,CAAC,KAAK,aAAa,OAAQ,QAAO;AACtC,QAAO,KAAK,YACT,MAAM,GAAG,GAAG,CACZ,KAAK,YAAY,UAAU;EAC1B,MAAM,MAAM,OAAO;AACnB,SAAO;GACL,KAAK,KAAK,QAAQ,WAAW,SAAS,IAAI,KAAK,YAAY,WAAW,SAAS,IAAI,KAAK,QAAQ,WAAW,KAAK;GAChH,oBAAoB,KAAK,OAAO,WAAW;GAC3C;GACD,CAAC,KAAK,KAAK;GACZ,CACD,KAAK,KAAK;;AAGf,eAAsB,0BACpB,MACA,OAAuE,EAAE,EAC5C;CAC7B,MAAM,QAAQ,KAAK,OAAO,SACtB,KAAK,MACJ,MAAM,GAAG,GAAG,CACZ,KAAK,SAAS,KAAK,KAAK,KAAK,IAAI,KAAK,SAAS,KAAK,WAAW,KAAK,iBAAiB,KAAK,KAAK,eAAe,KAAK,KAAK,CACxH,KAAK,KAAK,GACX;CACJ,MAAM,cAAc,sBAAsB,MAAM,KAAK,YAAY;CACjE,MAAM,SAAS,KAAK,kBAAkB,QAAQ,EAAE,GAAG,MAAM,+BAA+B,KAAK;CAC7F,MAAM,OAAO;EACX;EACA;EACA,YAAY,gBAAgB,KAAK,GAAG;EACpC,YAAY,cAAc,KAAK,UAAU;EACzC,YAAY,SAAS,KAAK,MAAM;EAChC,YAAY,UAAU,KAAK,OAAO;EAClC,YAAY,YAAY,KAAK,SAAS;EACtC,YAAY,eAAe,KAAK,aAAa;EAC7C,YAAY,eAAe,KAAK,YAAY;EAC5C,YAAY,eAAe,KAAK,WAAW;EAC3C,YAAY,kBAAkB,KAAK,cAAc;EACjD,KAAK,QAAQ,YAAY,UAAU,IAAI,KAAK,KAAK,MAAM,CAAC,aAAa,CAAC,GAAG;EACzE,QAAQ,uBAAuB,UAAU;EACzC,cAAc,iBAAiB,gBAAgB;EAC/C;EACA;EACD,CAAC,OAAO,QAAQ,CAAC,KAAK,KAAK;AAE5B,QAAO;EACL,MAAM;EACN,UAAU,KAAK;EACf,SAAS,OAAO,KAAK,UAAU;EAC/B,OAAO,KAAK;EACZ;EACA,GAAI,OAAO,SAAS,EAAE,QAAQ,GAAG,EAAE;EACpC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"work-item-service.js","names":[],"sources":["../../../src/work-items/work-item-service.ts"],"sourcesContent":["import { changedFieldsFromPatch, emitActivity, systemActivityActor, systemActivitySource } from '../activity/emitter.js';\nimport { deleteMediaBuffer, mimeTypeFromMediaPath, saveMediaBuffer } from '../media/store.js';\nimport { readMediaReference } from '../media/media-reference.js';\nimport type { MediaRef } from '../media/types.js';\nimport { WorkItemStore } from './work-item-store.js';\nimport type {\n CreateWorkItemUpdateSuggestionInput,\n CreateWorkItemInput,\n UpdateWorkItemInput,\n WorkItem,\n WorkItemAttachment,\n WorkItemEvent,\n WorkItemLink,\n WorkItemListQuery,\n WorkItemListResult,\n WorkItemUpdateSuggestion,\n WorkItemUpdateSuggestionStatus,\n} from './types.js';\n\nexport const WORK_ITEM_ATTACHMENT_MAX_BYTES = 25 * 1024 * 1024;\nexport const WORK_ITEM_ATTACHMENT_MAX_COUNT = 10;\nexport const WORK_ITEM_ATTACHMENT_UPLOAD_BODY_MAX_BYTES =\n WORK_ITEM_ATTACHMENT_MAX_BYTES * WORK_ITEM_ATTACHMENT_MAX_COUNT + 1024 * 1024;\n\nfunction inferAttachmentType(mimeType: string): WorkItemAttachment['type'] {\n if (mimeType.startsWith('image/')) return 'image';\n if (mimeType.startsWith('audio/')) return 'audio';\n if (mimeType.startsWith('video/')) return 'video';\n return 'file';\n}\n\nfunction attachmentTypeForMediaRef(attachment: WorkItemAttachment): string {\n return attachment.type === 'file' ? 'document' : attachment.type;\n}\n\nexport class WorkItemService {\n constructor(private readonly store = new WorkItemStore()) {}\n\n listProjectWorkItems(projectId: string, query: WorkItemListQuery = {}): WorkItemListResult {\n return this.store.list(projectId, query);\n }\n\n listWorkItems(query: WorkItemListQuery = {}): WorkItemListResult {\n return this.store.listAll(query);\n }\n\n createProjectWorkItem(projectId: string, input: CreateWorkItemInput): WorkItem {\n const item = this.store.create(projectId, input);\n this.store.addEvent(item.id, 'created', { title: item.title, status: item.status, priority: item.priority });\n emitActivity({\n type: 'work_item.created',\n primaryObject: { kind: 'work_item', id: item.id, title: item.title },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: { title: item.title, status: item.status, priority: item.priority },\n scopes: [{ scopeKind: 'project', scopeId: projectId, reason: 'object_owner' }],\n nowMs: item.createdAt,\n });\n return { ...item, links: [] };\n }\n\n getWorkItem(id: string): WorkItem | null {\n return this.store.get(id);\n }\n\n updateWorkItem(id: string, patch: UpdateWorkItemInput): WorkItem | null {\n const before = this.store.get(id);\n if (!before) return null;\n const after = this.store.update(id, patch);\n if (!after) return null;\n if (before.status !== after.status) {\n this.store.addEvent(id, 'status_changed', { from: before.status, to: after.status });\n } else {\n this.store.addEvent(id, 'updated', patch);\n }\n if (!before.archivedAt && after.archivedAt) {\n this.store.addEvent(id, 'archived', { archivedAt: after.archivedAt });\n }\n const type = !before.archivedAt && after.archivedAt\n ? 'work_item.archived'\n : before.status !== after.status\n ? 'work_item.status_changed'\n : 'work_item.updated';\n emitActivity({\n type,\n primaryObject: { kind: 'work_item', id: after.id, title: after.title },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: {\n changes: changedFieldsFromPatch(patch as Record<string, unknown>),\n ...(type === 'work_item.status_changed' ? { from: before.status, to: after.status } : {}),\n ...(type === 'work_item.archived' ? { archivedAt: after.archivedAt } : {}),\n },\n scopes: [{ scopeKind: 'project', scopeId: after.projectId, reason: 'object_owner' }],\n nowMs: after.updatedAt,\n });\n return after;\n }\n\n addLink(workItemId: string, input: Omit<WorkItemLink, 'id' | 'workItemId' | 'createdAt'>, eventType: Parameters<WorkItemStore['addEvent']>[1] = 'link_added'): WorkItemLink | null {\n if (!this.store.get(workItemId)) return null;\n const link = this.store.addLink({ ...input, workItemId });\n this.store.addEvent(workItemId, eventType, { kind: link.kind, targetId: link.targetId, title: link.title, statusSnapshot: link.statusSnapshot });\n const item = this.store.get(workItemId);\n if (item) {\n emitActivity({\n type: 'work_item.link_added',\n primaryObject: { kind: 'work_item', id: item.id, title: item.title },\n actor: systemActivityActor(),\n source: systemActivitySource(),\n payload: { target: { kind: link.kind, id: link.targetId, title: link.title } },\n scopes: [{ scopeKind: 'project', scopeId: item.projectId, reason: 'object_owner' }],\n nowMs: link.createdAt,\n });\n }\n return link;\n }\n\n listEvents(workItemId: string): WorkItemEvent[] {\n return this.store.listEvents(workItemId);\n }\n\n listAttachments(workItemId: string): WorkItemAttachment[] | null {\n if (!this.store.get(workItemId)) return null;\n return this.store.listAttachments(workItemId);\n }\n\n async addAttachment(\n workItemId: string,\n file: { name: string; buffer: Buffer; mimeType: string },\n ): Promise<WorkItemAttachment | null> {\n if (!this.store.get(workItemId)) return null;\n const saved = await saveMediaBuffer(file.buffer, {\n bucket: 'work-item',\n contentType: file.mimeType,\n maxBytes: WORK_ITEM_ATTACHMENT_MAX_BYTES,\n originalFilename: file.name,\n });\n const mimeType = saved.contentType || file.mimeType || mimeTypeFromMediaPath(saved.path);\n const attachment = this.store.addAttachment({\n workItemId,\n mediaUri: saved.uri,\n mediaId: saved.id,\n bucket: saved.bucket,\n type: inferAttachmentType(mimeType),\n mimeType,\n fileName: file.name.trim() || saved.id,\n size: saved.size,\n });\n this.store.addEvent(workItemId, 'attachment_added', {\n attachmentId: attachment.id,\n fileName: attachment.fileName,\n mimeType: attachment.mimeType,\n size: attachment.size,\n });\n return attachment;\n }\n\n async readAttachment(\n workItemId: string,\n attachmentId: string,\n ): Promise<{ attachment: WorkItemAttachment; buffer: Buffer } | null> {\n const attachment = this.store.getAttachment(workItemId, attachmentId);\n if (!attachment) return null;\n const { buffer } = await readMediaReference(attachment.mediaUri, WORK_ITEM_ATTACHMENT_MAX_BYTES);\n return { attachment, buffer };\n }\n\n async removeAttachment(workItemId: string, attachmentId: string): Promise<WorkItemAttachment | null> {\n const attachment = this.store.removeAttachment(workItemId, attachmentId);\n if (!attachment) return null;\n await deleteMediaBuffer(attachment.mediaId, 'work-item');\n this.store.addEvent(workItemId, 'attachment_removed', {\n attachmentId: attachment.id,\n fileName: attachment.fileName,\n mimeType: attachment.mimeType,\n size: attachment.size,\n });\n return attachment;\n }\n\n async snapshotAttachmentsForGoal(workItemId: string): Promise<MediaRef[] | null> {\n const item = this.store.get(workItemId);\n if (!item) return null;\n const refs: MediaRef[] = [];\n for (const attachment of item.attachments ?? []) {\n const { buffer } = await readMediaReference(attachment.mediaUri, WORK_ITEM_ATTACHMENT_MAX_BYTES);\n const saved = await saveMediaBuffer(buffer, {\n bucket: 'inbound',\n contentType: attachment.mimeType,\n maxBytes: WORK_ITEM_ATTACHMENT_MAX_BYTES,\n originalFilename: attachment.fileName,\n });\n refs.push({\n id: saved.id,\n bucket: saved.bucket,\n type: attachmentTypeForMediaRef(attachment),\n mimeType: saved.contentType || attachment.mimeType,\n name: attachment.fileName,\n size: saved.size,\n uri: saved.uri,\n path: saved.path,\n });\n }\n return refs;\n }\n\n createUpdateSuggestion(workItemId: string, input: CreateWorkItemUpdateSuggestionInput): WorkItemUpdateSuggestion | null {\n const suggestion = this.store.createUpdateSuggestion(workItemId, input);\n if (!suggestion) return null;\n this.store.addEvent(workItemId, 'update_suggestion_created', {\n suggestionId: suggestion.id,\n sourceKind: suggestion.sourceKind,\n sourceId: suggestion.sourceId,\n patch: suggestion.patch,\n hasProgressNote: Boolean(suggestion.progressNote),\n });\n return suggestion;\n }\n\n listUpdateSuggestions(workItemId: string, status?: WorkItemUpdateSuggestionStatus): WorkItemUpdateSuggestion[] {\n return this.store.listUpdateSuggestions(workItemId, status);\n }\n\n applyUpdateSuggestion(id: string): { item: WorkItem; suggestion: WorkItemUpdateSuggestion } | null {\n const suggestion = this.store.getUpdateSuggestion(id);\n if (!suggestion || suggestion.status !== 'pending') return null;\n const before = this.store.get(suggestion.workItemId);\n if (!before) return null;\n const patch: UpdateWorkItemInput = {};\n if (suggestion.patch.status !== undefined) patch.status = suggestion.patch.status;\n if (suggestion.patch.nextAction !== undefined) patch.nextAction = suggestion.patch.nextAction;\n if (suggestion.patch.blockedReason !== undefined) patch.blockedReason = suggestion.patch.blockedReason;\n const item = Object.keys(patch).length > 0\n ? this.updateWorkItem(suggestion.workItemId, patch)\n : before;\n if (!item) return null;\n if (suggestion.progressNote) {\n this.store.addEvent(suggestion.workItemId, 'progress_note_added', {\n sourceKind: suggestion.sourceKind,\n sourceId: suggestion.sourceId,\n suggestionId: suggestion.id,\n text: suggestion.progressNote,\n });\n }\n const marked = this.store.markUpdateSuggestion(id, 'applied');\n if (!marked) return null;\n this.store.addEvent(suggestion.workItemId, 'update_suggestion_applied', {\n suggestionId: suggestion.id,\n sourceKind: suggestion.sourceKind,\n sourceId: suggestion.sourceId,\n patch,\n previousStatus: before.status,\n nextStatus: item.status,\n });\n return { item, suggestion: marked };\n }\n\n dismissUpdateSuggestion(id: string): WorkItemUpdateSuggestion | null {\n const suggestion = this.store.getUpdateSuggestion(id);\n if (!suggestion || suggestion.status !== 'pending') return null;\n const marked = this.store.markUpdateSuggestion(id, 'dismissed');\n if (marked) {\n this.store.addEvent(marked.workItemId, 'update_suggestion_dismissed', {\n suggestionId: marked.id,\n sourceKind: marked.sourceKind,\n sourceId: marked.sourceId,\n });\n }\n return marked;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"work-item-store.js","names":[],"sources":["../../../src/work-items/work-item-store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport { getSqliteDatabase } from '../storage/sqlite/index.js';\nimport type {\n CreateWorkItemUpdateSuggestionInput,\n CreateWorkItemInput,\n UpdateWorkItemInput,\n WorkItem,\n WorkItemAttachment,\n WorkItemEvent,\n WorkItemEventType,\n WorkItemLink,\n WorkItemLinkKind,\n WorkItemListQuery,\n WorkItemListResult,\n WorkItemPriority,\n WorkItemStatus,\n WorkItemUpdateSuggestion,\n WorkItemUpdateSuggestionSourceKind,\n WorkItemUpdateSuggestionStatus,\n} from './types.js';\n\ntype WorkItemRow = {\n id: string;\n project_id: string;\n title: string;\n description: string | null;\n status: string;\n priority: string;\n owner_agent_id: string | null;\n next_action: string | null;\n blocked_reason: string | null;\n due_at: number | null;\n completed_at: number | null;\n archived_at: number | null;\n created_at: number;\n updated_at: number;\n};\n\ntype WorkItemLinkRow = {\n id: string;\n work_item_id: string;\n kind: string;\n target_id: string;\n title: string | null;\n status_snapshot: string | null;\n created_at: number;\n};\n\ntype WorkItemAttachmentRow = {\n id: string;\n work_item_id: string;\n media_uri: string;\n media_id: string;\n bucket: string;\n type: string;\n mime_type: string;\n file_name: string;\n size: number;\n created_at: number;\n};\n\ntype WorkItemEventRow = {\n id: string;\n work_item_id: string;\n type: string;\n payload_json: string | null;\n created_at: number;\n};\n\ntype WorkItemUpdateSuggestionRow = {\n id: string;\n work_item_id: string;\n source_kind: string;\n source_id: string;\n status: string;\n patch_json: string;\n progress_note: string | null;\n rationale: string | null;\n confidence: number | null;\n created_at: number;\n applied_at: number | null;\n dismissed_at: number | null;\n};\n\nfunction nowMs(): number {\n return Date.now();\n}\n\nfunction toArray<T>(value: T | T[] | undefined): T[] | undefined {\n if (value === undefined) return undefined;\n return Array.isArray(value) ? value : [value];\n}\n\nfunction clampLimit(value: number | undefined): number {\n if (!Number.isFinite(value)) return 50;\n return Math.max(1, Math.min(500, Math.floor(value ?? 50)));\n}\n\nfunction normalizeTitle(title: string): string {\n const value = title.trim();\n if (!value) throw new Error('Work item title is required');\n return value;\n}\n\nfunction rowToItem(row: WorkItemRow): WorkItem {\n return {\n id: row.id,\n projectId: row.project_id,\n title: row.title,\n description: row.description ?? undefined,\n status: row.status as WorkItemStatus,\n priority: row.priority as WorkItemPriority,\n ownerAgentId: row.owner_agent_id ?? undefined,\n nextAction: row.next_action ?? undefined,\n blockedReason: row.blocked_reason ?? undefined,\n dueAt: row.due_at ?? undefined,\n completedAt: row.completed_at ?? undefined,\n archivedAt: row.archived_at ?? undefined,\n createdAt: row.created_at,\n updatedAt: row.updated_at,\n };\n}\n\nfunction rowToLink(row: WorkItemLinkRow): WorkItemLink {\n return {\n id: row.id,\n workItemId: row.work_item_id,\n kind: row.kind as WorkItemLinkKind,\n targetId: row.target_id,\n title: row.title ?? undefined,\n statusSnapshot: row.status_snapshot ?? undefined,\n createdAt: row.created_at,\n };\n}\n\nfunction rowToAttachment(row: WorkItemAttachmentRow): WorkItemAttachment {\n return {\n id: row.id,\n workItemId: row.work_item_id,\n mediaUri: row.media_uri,\n mediaId: row.media_id,\n bucket: row.bucket,\n type: row.type as WorkItemAttachment['type'],\n mimeType: row.mime_type,\n fileName: row.file_name,\n size: row.size,\n createdAt: row.created_at,\n };\n}\n\nfunction rowToEvent(row: WorkItemEventRow): WorkItemEvent {\n return {\n id: row.id,\n workItemId: row.work_item_id,\n type: row.type as WorkItemEventType,\n payload: row.payload_json ? JSON.parse(row.payload_json) : undefined,\n createdAt: row.created_at,\n };\n}\n\nfunction rowToSuggestion(row: WorkItemUpdateSuggestionRow): WorkItemUpdateSuggestion {\n return {\n id: row.id,\n workItemId: row.work_item_id,\n sourceKind: row.source_kind as WorkItemUpdateSuggestionSourceKind,\n sourceId: row.source_id,\n status: row.status as WorkItemUpdateSuggestionStatus,\n patch: JSON.parse(row.patch_json || '{}'),\n progressNote: row.progress_note ?? undefined,\n rationale: row.rationale ?? undefined,\n confidence: row.confidence ?? undefined,\n createdAt: row.created_at,\n appliedAt: row.applied_at ?? undefined,\n dismissedAt: row.dismissed_at ?? undefined,\n };\n}\n\nfunction comparePriority(left: WorkItemPriority, right: WorkItemPriority): number {\n const rank: Record<WorkItemPriority, number> = { urgent: 4, high: 3, normal: 2, low: 1 };\n return rank[left] - rank[right];\n}\n\nfunction applyQuery(items: WorkItem[], query: WorkItemListQuery = {}): WorkItemListResult {\n const statuses = toArray(query.status);\n const priorities = toArray(query.priority);\n const search = query.search?.trim().toLowerCase();\n let filtered = items.filter((item) => {\n if (!query.includeArchived && item.archivedAt) return false;\n if (statuses?.length && !statuses.includes(item.status)) return false;\n if (priorities?.length && !priorities.includes(item.priority)) return false;\n if (search) {\n const text = [item.title, item.description, item.nextAction, item.blockedReason].filter(Boolean).join('\\n').toLowerCase();\n if (!text.includes(search)) return false;\n }\n return true;\n });\n\n const sortBy = query.sortBy ?? 'updatedAt';\n const direction = query.sortOrder === 'asc' ? 1 : -1;\n filtered = [...filtered].sort((left, right) => {\n if (sortBy === 'priority') return direction * comparePriority(left.priority, right.priority);\n if (sortBy === 'status') return direction * left.status.localeCompare(right.status);\n if (sortBy === 'createdAt') return direction * (left.createdAt - right.createdAt);\n return direction * (left.updatedAt - right.updatedAt);\n });\n\n const total = filtered.length;\n const limit = clampLimit(query.limit);\n const offset = Math.max(0, Math.floor(query.offset ?? 0));\n const page = filtered.slice(offset, offset + limit);\n return { items: page, total, limit, offset, hasMore: offset + page.length < total };\n}\n\nexport class WorkItemStore {\n create(projectId: string, input: CreateWorkItemInput): WorkItem {\n const timestamp = nowMs();\n const item: WorkItem = {\n id: randomUUID(),\n projectId,\n title: normalizeTitle(input.title),\n description: input.description?.trim() || undefined,\n status: input.status ?? 'todo',\n priority: input.priority ?? 'normal',\n ownerAgentId: input.ownerAgentId?.trim() || undefined,\n nextAction: input.nextAction?.trim() || undefined,\n blockedReason: input.blockedReason?.trim() || undefined,\n dueAt: input.dueAt,\n createdAt: timestamp,\n updatedAt: timestamp,\n };\n getSqliteDatabase()\n .prepare(\n `INSERT INTO work_items\n (id, project_id, title, description, status, priority, owner_agent_id, next_action, blocked_reason, due_at, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n )\n .run(\n item.id,\n item.projectId,\n item.title,\n item.description ?? null,\n item.status,\n item.priority,\n item.ownerAgentId ?? null,\n item.nextAction ?? null,\n item.blockedReason ?? null,\n item.dueAt ?? null,\n item.createdAt,\n item.updatedAt,\n );\n return item;\n }\n\n get(id: string): WorkItem | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM work_items WHERE id = ?`)\n .get(id) as WorkItemRow | undefined;\n return row ? { ...rowToItem(row), links: this.listLinks(id), attachments: this.listAttachments(id) } : null;\n }\n\n list(projectId: string, query: WorkItemListQuery = {}): WorkItemListResult {\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_items WHERE project_id = ?`)\n .all(projectId) as WorkItemRow[];\n const result = applyQuery(rows.map(rowToItem), query);\n const linksByItem = this.listLinksForItems(result.items.map((item) => item.id));\n const attachmentsByItem = this.listAttachmentsForItems(result.items.map((item) => item.id));\n return {\n ...result,\n items: result.items.map((item) => ({\n ...item,\n links: linksByItem.get(item.id) ?? [],\n attachments: attachmentsByItem.get(item.id) ?? [],\n })),\n };\n }\n\n listAll(query: WorkItemListQuery = {}): WorkItemListResult {\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_items`)\n .all() as WorkItemRow[];\n const result = applyQuery(rows.map(rowToItem), query);\n const linksByItem = this.listLinksForItems(result.items.map((item) => item.id));\n const attachmentsByItem = this.listAttachmentsForItems(result.items.map((item) => item.id));\n return {\n ...result,\n items: result.items.map((item) => ({\n ...item,\n links: linksByItem.get(item.id) ?? [],\n attachments: attachmentsByItem.get(item.id) ?? [],\n })),\n };\n }\n\n update(id: string, patch: UpdateWorkItemInput): WorkItem | null {\n const current = this.get(id);\n if (!current) return null;\n const timestamp = nowMs();\n const nextStatus = patch.status ?? current.status;\n const completedAt = nextStatus === 'done'\n ? (current.completedAt ?? timestamp)\n : (nextStatus === current.status ? (current.completedAt ?? null) : null);\n getSqliteDatabase()\n .prepare(\n `UPDATE work_items\n SET title = ?, description = ?, status = ?, priority = ?, owner_agent_id = ?,\n next_action = ?, blocked_reason = ?, due_at = ?, completed_at = ?, archived_at = ?, updated_at = ?\n WHERE id = ?`,\n )\n .run(\n patch.title !== undefined ? normalizeTitle(patch.title) : current.title,\n patch.description !== undefined ? (patch.description?.trim() || null) : (current.description ?? null),\n nextStatus,\n patch.priority ?? current.priority,\n patch.ownerAgentId !== undefined ? (patch.ownerAgentId?.trim() || null) : (current.ownerAgentId ?? null),\n patch.nextAction !== undefined ? (patch.nextAction?.trim() || null) : (current.nextAction ?? null),\n patch.blockedReason !== undefined ? (patch.blockedReason?.trim() || null) : (current.blockedReason ?? null),\n patch.dueAt !== undefined ? patch.dueAt : (current.dueAt ?? null),\n completedAt,\n patch.archivedAt !== undefined ? patch.archivedAt : (current.archivedAt ?? null),\n timestamp,\n id,\n );\n return this.get(id);\n }\n\n addLink(input: Omit<WorkItemLink, 'id' | 'createdAt'>): WorkItemLink {\n const link: WorkItemLink = { ...input, id: randomUUID(), createdAt: nowMs() };\n getSqliteDatabase()\n .prepare(\n `INSERT INTO work_item_links (id, work_item_id, kind, target_id, title, status_snapshot, created_at)\n VALUES (?, ?, ?, ?, ?, ?, ?)`,\n )\n .run(link.id, link.workItemId, link.kind, link.targetId, link.title ?? null, link.statusSnapshot ?? null, link.createdAt);\n return link;\n }\n\n listLinks(workItemId: string): WorkItemLink[] {\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_links WHERE work_item_id = ? ORDER BY created_at DESC`)\n .all(workItemId) as WorkItemLinkRow[];\n return rows.map(rowToLink);\n }\n\n listLinksForItems(workItemIds: string[]): Map<string, WorkItemLink[]> {\n const unique = [...new Set(workItemIds)];\n if (!unique.length) return new Map();\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_links WHERE work_item_id IN (${unique.map(() => '?').join(', ')}) ORDER BY created_at DESC`)\n .all(...unique) as WorkItemLinkRow[];\n const map = new Map<string, WorkItemLink[]>();\n for (const row of rows) {\n const list = map.get(row.work_item_id) ?? [];\n list.push(rowToLink(row));\n map.set(row.work_item_id, list);\n }\n return map;\n }\n\n addAttachment(input: Omit<WorkItemAttachment, 'id' | 'createdAt'>): WorkItemAttachment {\n const attachment: WorkItemAttachment = { ...input, id: randomUUID(), createdAt: nowMs() };\n getSqliteDatabase()\n .prepare(\n `INSERT INTO work_item_attachments\n (id, work_item_id, media_uri, media_id, bucket, type, mime_type, file_name, size, created_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n )\n .run(\n attachment.id,\n attachment.workItemId,\n attachment.mediaUri,\n attachment.mediaId,\n attachment.bucket,\n attachment.type,\n attachment.mimeType,\n attachment.fileName,\n attachment.size,\n attachment.createdAt,\n );\n return attachment;\n }\n\n getAttachment(workItemId: string, attachmentId: string): WorkItemAttachment | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_attachments WHERE work_item_id = ? AND id = ?`)\n .get(workItemId, attachmentId) as WorkItemAttachmentRow | undefined;\n return row ? rowToAttachment(row) : null;\n }\n\n listAttachments(workItemId: string): WorkItemAttachment[] {\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_attachments WHERE work_item_id = ? ORDER BY created_at DESC`)\n .all(workItemId) as WorkItemAttachmentRow[];\n return rows.map(rowToAttachment);\n }\n\n listAttachmentsForItems(workItemIds: string[]): Map<string, WorkItemAttachment[]> {\n const unique = [...new Set(workItemIds)];\n if (!unique.length) return new Map();\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_attachments WHERE work_item_id IN (${unique.map(() => '?').join(', ')}) ORDER BY created_at DESC`)\n .all(...unique) as WorkItemAttachmentRow[];\n const map = new Map<string, WorkItemAttachment[]>();\n for (const row of rows) {\n const list = map.get(row.work_item_id) ?? [];\n list.push(rowToAttachment(row));\n map.set(row.work_item_id, list);\n }\n return map;\n }\n\n removeAttachment(workItemId: string, attachmentId: string): WorkItemAttachment | null {\n const attachment = this.getAttachment(workItemId, attachmentId);\n if (!attachment) return null;\n getSqliteDatabase()\n .prepare(`DELETE FROM work_item_attachments WHERE work_item_id = ? AND id = ?`)\n .run(workItemId, attachmentId);\n return attachment;\n }\n\n addEvent(workItemId: string, type: WorkItemEventType, payload?: unknown): WorkItemEvent {\n const event: WorkItemEvent = { id: randomUUID(), workItemId, type, payload, createdAt: nowMs() };\n getSqliteDatabase()\n .prepare(`INSERT INTO work_item_events (id, work_item_id, type, payload_json, created_at) VALUES (?, ?, ?, ?, ?)`)\n .run(event.id, workItemId, type, payload === undefined ? null : JSON.stringify(payload), event.createdAt);\n return event;\n }\n\n listEvents(workItemId: string): WorkItemEvent[] {\n const rows = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_events WHERE work_item_id = ? ORDER BY created_at DESC`)\n .all(workItemId) as WorkItemEventRow[];\n return rows.map(rowToEvent);\n }\n\n createUpdateSuggestion(workItemId: string, input: CreateWorkItemUpdateSuggestionInput): WorkItemUpdateSuggestion | null {\n if (!this.get(workItemId)) return null;\n const suggestion: WorkItemUpdateSuggestion = {\n id: randomUUID(),\n workItemId,\n sourceKind: input.sourceKind,\n sourceId: input.sourceId,\n status: 'pending',\n patch: input.patch ?? {},\n progressNote: input.progressNote?.trim() || undefined,\n rationale: input.rationale?.trim() || undefined,\n confidence: input.confidence,\n createdAt: nowMs(),\n };\n getSqliteDatabase()\n .prepare(\n `INSERT INTO work_item_update_suggestions\n (id, work_item_id, source_kind, source_id, status, patch_json, progress_note, rationale, confidence, created_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,\n )\n .run(\n suggestion.id,\n suggestion.workItemId,\n suggestion.sourceKind,\n suggestion.sourceId,\n suggestion.status,\n JSON.stringify(suggestion.patch),\n suggestion.progressNote ?? null,\n suggestion.rationale ?? null,\n suggestion.confidence ?? null,\n suggestion.createdAt,\n );\n return suggestion;\n }\n\n getUpdateSuggestion(id: string): WorkItemUpdateSuggestion | null {\n const row = getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_update_suggestions WHERE id = ?`)\n .get(id) as WorkItemUpdateSuggestionRow | undefined;\n return row ? rowToSuggestion(row) : null;\n }\n\n listUpdateSuggestions(workItemId: string, status?: WorkItemUpdateSuggestionStatus): WorkItemUpdateSuggestion[] {\n const rows = status\n ? getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_update_suggestions WHERE work_item_id = ? AND status = ? ORDER BY created_at DESC`)\n .all(workItemId, status) as WorkItemUpdateSuggestionRow[]\n : getSqliteDatabase()\n .prepare(`SELECT * FROM work_item_update_suggestions WHERE work_item_id = ? ORDER BY created_at DESC`)\n .all(workItemId) as WorkItemUpdateSuggestionRow[];\n return rows.map(rowToSuggestion);\n }\n\n markUpdateSuggestion(id: string, status: Extract<WorkItemUpdateSuggestionStatus, 'applied' | 'dismissed'>): WorkItemUpdateSuggestion | null {\n const timestamp = nowMs();\n const column = status === 'applied' ? 'applied_at' : 'dismissed_at';\n getSqliteDatabase()\n .prepare(`UPDATE work_item_update_suggestions SET status = ?, ${column} = ? WHERE id = ? AND status = 'pending'`)\n .run(status, timestamp, id);\n return this.getUpdateSuggestion(id);\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"work-item-workflow-judge.js","names":[],"sources":["../../../src/work-items/work-item-workflow-judge.ts"],"sourcesContent":["import { renderWorkflowText } from '../agent/workflow/snapshot.js';\nimport type { WorkflowRunStatus, WorkflowRunView } from '../workflows/domain/index.js';\nimport { runViewToSnapshot } from '../workflows/service/run-view-to-snapshot.js';\n\nimport { WorkItemService } from './work-item-service.js';\nimport type { UpdateWorkItemInput } from './types.js';\n\nexport interface WorkItemWorkflowJudgeInput {\n view: WorkflowRunView;\n}\n\nexport class WorkItemWorkflowJudge {\n private readonly workItems = new WorkItemService();\n\n handleTerminalWorkflowRun(input: WorkItemWorkflowJudgeInput): void {\n const workItemId = input.view.run.metadata?.workItemId?.trim();\n if (!workItemId) return;\n\n const item = this.workItems.getWorkItem(workItemId);\n if (!item) return;\n\n const run = input.view.run;\n if (!item.links?.some((link) => link.kind === 'workflow_run' && link.targetId === run.id)) {\n this.workItems.addLink(workItemId, {\n kind: 'workflow_run',\n targetId: run.id,\n title: run.goal || run.title,\n statusSnapshot: run.status,\n });\n }\n\n const existingSuggestion = this.workItems\n .listUpdateSuggestions(workItemId)\n .some((suggestion) => suggestion.sourceKind === 'workflow_run' && suggestion.sourceId === run.id);\n if (existingSuggestion) return;\n\n this.workItems.createUpdateSuggestion(workItemId, {\n sourceKind: 'workflow_run',\n sourceId: run.id,\n patch: buildWorkItemPatch(run.status, run.result?.followUps?.[0]?.prompt),\n progressNote: compactWorkflowText(input.view),\n rationale: `Workflow ${run.definitionId} finished with status ${run.status}.`,\n confidence: run.status === 'succeeded' ? 0.72 : 0.86,\n });\n }\n}\n\nfunction buildWorkItemPatch(status: WorkflowRunStatus, nextPrompt?: string): Pick<UpdateWorkItemInput, 'status' | 'nextAction' | 'blockedReason'> {\n if (status === 'succeeded') {\n return {\n status: 'in_review',\n blockedReason: null,\n ...(nextPrompt?.trim() ? { nextAction: nextPrompt.trim() } : {}),\n };\n }\n return {\n status: status === 'cancelled' ? 'needs_input' : 'blocked',\n blockedReason: `Workflow run ended with status ${status}.`,\n nextAction: 'Review the workflow run and decide the next action.',\n };\n}\n\nfunction compactWorkflowText(view: WorkflowRunView): string {\n const text = renderWorkflowText(\n runViewToSnapshot(view),\n view.run.status === 'succeeded',\n { showResultPreviews: true },\n ).trim();\n if (text.length <= 1800) return text;\n return `${text.slice(0, 1797)}...`;\n}\n"],"mappings":";;;;AAWA,IAAa,wBAAb,MAAmC;CACjC,YAA6B,IAAI,iBAAiB;CAElD,0BAA0B,OAAyC;EACjE,MAAM,aAAa,MAAM,KAAK,IAAI,UAAU,YAAY,MAAM;AAC9D,MAAI,CAAC,WAAY;EAEjB,MAAM,OAAO,KAAK,UAAU,YAAY,WAAW;AACnD,MAAI,CAAC,KAAM;EAEX,MAAM,MAAM,MAAM,KAAK;AACvB,MAAI,CAAC,KAAK,OAAO,MAAM,SAAS,KAAK,SAAS,kBAAkB,KAAK,aAAa,IAAI,GAAG,CACvF,MAAK,UAAU,QAAQ,YAAY;GACjC,MAAM;GACN,UAAU,IAAI;GACd,OAAO,IAAI,QAAQ,IAAI;GACvB,gBAAgB,IAAI;GACrB,CAAC;AAMJ,MAH2B,KAAK,UAC7B,sBAAsB,WAAW,CACjC,MAAM,eAAe,WAAW,eAAe,kBAAkB,WAAW,aAAa,IAAI,GAC1E,CAAE;AAExB,OAAK,UAAU,uBAAuB,YAAY;GAChD,YAAY;GACZ,UAAU,IAAI;GACd,OAAO,mBAAmB,IAAI,QAAQ,IAAI,QAAQ,YAAY,IAAI,OAAO;GACzE,cAAc,oBAAoB,MAAM,KAAK;GAC7C,WAAW,YAAY,IAAI,aAAa,wBAAwB,IAAI,OAAO;GAC3E,YAAY,IAAI,WAAW,cAAc,MAAO;GACjD,CAAC;;;AAIN,SAAS,mBAAmB,QAA2B,YAA2F;AAChJ,KAAI,WAAW,YACb,QAAO;EACL,QAAQ;EACR,eAAe;EACf,GAAI,YAAY,MAAM,GAAG,EAAE,YAAY,WAAW,MAAM,EAAE,GAAG,EAAE;EAChE;AAEH,QAAO;EACL,QAAQ,WAAW,cAAc,gBAAgB;EACjD,eAAe,kCAAkC,OAAO;EACxD,YAAY;EACb;;AAGH,SAAS,oBAAoB,MAA+B;CAC1D,MAAM,OAAO,mBACX,kBAAkB,KAAK,EACvB,KAAK,IAAI,WAAW,aACpB,EAAE,oBAAoB,MAAM,CAC7B,CAAC,MAAM;AACR,KAAI,KAAK,UAAU,KAAM,QAAO;AAChC,QAAO,GAAG,KAAK,MAAM,GAAG,KAAK,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-draft-store.js","names":[],"sources":["../../../../src/workflows/authoring/workflow-draft-store.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\nimport { existsSync, mkdirSync, readdirSync, readFileSync, renameSync, unlinkSync, writeFileSync } from 'node:fs';\nimport { join } from 'node:path';\n\nimport { defaultUserDir } from '../../agent/workflow/catalog.js';\nimport type { WorkflowDefinitionManifest, WorkflowGraph } from '../domain/definition.js';\n\nexport interface WorkflowAuthoringDraft {\n id: string;\n workflowName: string;\n graph: WorkflowGraph;\n manifest: WorkflowDefinitionManifest;\n baseRevision: number;\n createdAtMs: number;\n updatedAtMs: number;\n}\n\nexport interface SaveWorkflowAuthoringDraftInput {\n id?: string;\n workflowName: string;\n graph: WorkflowGraph;\n manifest?: WorkflowDefinitionManifest;\n baseRevision?: number;\n expectedUpdatedAtMs?: number;\n}\n\nexport class WorkflowDraftStore {\n private readonly draftsDir: string;\n\n constructor(options: { userDir?: string } = {}) {\n this.draftsDir = join(options.userDir ?? defaultUserDir(), '.drafts');\n }\n\n list(workflowName?: string): WorkflowAuthoringDraft[] {\n if (!existsSync(this.draftsDir)) return [];\n return readdirSync(this.draftsDir)\n .filter((file) => file.endsWith('.json'))\n .map((file) => this.readFile(join(this.draftsDir, file)))\n .filter((draft): draft is WorkflowAuthoringDraft => Boolean(draft) && (!workflowName || draft.workflowName === workflowName))\n .sort((left, right) => right.updatedAtMs - left.updatedAtMs);\n }\n\n get(id: string): WorkflowAuthoringDraft | null {\n requireDraftId(id);\n return this.readFile(join(this.draftsDir, `${id}.json`));\n }\n\n save(input: SaveWorkflowAuthoringDraftInput): WorkflowAuthoringDraft {\n if (!input.graph || input.graph.schemaVersion !== 1 || !Array.isArray(input.graph.nodes) || !Array.isArray(input.graph.edges)) {\n throw new Error('workflow draft graph is invalid');\n }\n const id = input.id ?? randomUUID();\n requireDraftId(id);\n const existing = this.get(id);\n if (input.expectedUpdatedAtMs !== undefined && input.expectedUpdatedAtMs !== existing?.updatedAtMs) {\n throw new WorkflowDraftConflictError(existing?.updatedAtMs);\n }\n const now = Math.max(Date.now(), (existing?.updatedAtMs ?? 0) + 1);\n const draft: WorkflowAuthoringDraft = {\n id,\n workflowName: input.workflowName.trim(),\n graph: structuredClone(input.graph),\n manifest: structuredClone(input.manifest ?? {}),\n baseRevision: input.baseRevision ?? existing?.baseRevision ?? 0,\n createdAtMs: existing?.createdAtMs ?? now,\n updatedAtMs: now,\n };\n if (!draft.workflowName) throw new Error('workflowName is required');\n mkdirSync(this.draftsDir, { recursive: true });\n writeJsonAtomic(join(this.draftsDir, `${id}.json`), draft);\n return draft;\n }\n\n remove(id: string): boolean {\n requireDraftId(id);\n const path = join(this.draftsDir, `${id}.json`);\n if (!existsSync(path)) return false;\n unlinkSync(path);\n return true;\n }\n\n private readFile(path: string): WorkflowAuthoringDraft | null {\n try {\n const value = JSON.parse(readFileSync(path, 'utf-8')) as WorkflowAuthoringDraft;\n return value && typeof value.id === 'string' && value.graph?.schemaVersion === 1 ? value : null;\n } catch {\n return null;\n }\n }\n}\n\nexport class WorkflowDraftConflictError extends Error {\n constructor(readonly currentUpdatedAtMs?: number) {\n super('workflow draft was changed by another editor');\n this.name = 'WorkflowDraftConflictError';\n }\n}\n\nfunction requireDraftId(id: string): void {\n if (!/^[a-zA-Z0-9_-]+$/.test(id)) throw new Error('invalid workflow draft id');\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"],"mappings":";;;;;AA0BA,IAAa,qBAAb,MAAgC;CAC9B;CAEA,YAAY,UAAgC,EAAE,EAAE;AAC9C,OAAK,YAAY,KAAK,QAAQ,WAAW,gBAAgB,EAAE,UAAU;;CAGvE,KAAK,cAAiD;AACpD,MAAI,CAAC,WAAW,KAAK,UAAU,CAAE,QAAO,EAAE;AAC1C,SAAO,YAAY,KAAK,UAAU,CAC/B,QAAQ,SAAS,KAAK,SAAS,QAAQ,CAAC,CACxC,KAAK,SAAS,KAAK,SAAS,KAAK,KAAK,WAAW,KAAK,CAAC,CAAC,CACxD,QAAQ,UAA2C,QAAQ,MAAM,KAAK,CAAC,gBAAgB,MAAM,iBAAiB,cAAc,CAC5H,MAAM,MAAM,UAAU,MAAM,cAAc,KAAK,YAAY;;CAGhE,IAAI,IAA2C;AAC7C,iBAAe,GAAG;AAClB,SAAO,KAAK,SAAS,KAAK,KAAK,WAAW,GAAG,GAAG,OAAO,CAAC;;CAG1D,KAAK,OAAgE;AACnE,MAAI,CAAC,MAAM,SAAS,MAAM,MAAM,kBAAkB,KAAK,CAAC,MAAM,QAAQ,MAAM,MAAM,MAAM,IAAI,CAAC,MAAM,QAAQ,MAAM,MAAM,MAAM,CAC3H,OAAM,IAAI,MAAM,kCAAkC;EAEpD,MAAM,KAAK,MAAM,MAAM,YAAY;AACnC,iBAAe,GAAG;EAClB,MAAM,WAAW,KAAK,IAAI,GAAG;AAC7B,MAAI,MAAM,wBAAwB,KAAA,KAAa,MAAM,wBAAwB,UAAU,YACrF,OAAM,IAAI,2BAA2B,UAAU,YAAY;EAE7D,MAAM,MAAM,KAAK,IAAI,KAAK,KAAK,GAAG,UAAU,eAAe,KAAK,EAAE;EAClE,MAAM,QAAgC;GACpC;GACA,cAAc,MAAM,aAAa,MAAM;GACvC,OAAO,gBAAgB,MAAM,MAAM;GACnC,UAAU,gBAAgB,MAAM,YAAY,EAAE,CAAC;GAC/C,cAAc,MAAM,gBAAgB,UAAU,gBAAgB;GAC9D,aAAa,UAAU,eAAe;GACtC,aAAa;GACd;AACD,MAAI,CAAC,MAAM,aAAc,OAAM,IAAI,MAAM,2BAA2B;AACpE,YAAU,KAAK,WAAW,EAAE,WAAW,MAAM,CAAC;AAC9C,kBAAgB,KAAK,KAAK,WAAW,GAAG,GAAG,OAAO,EAAE,MAAM;AAC1D,SAAO;;CAGT,OAAO,IAAqB;AAC1B,iBAAe,GAAG;EAClB,MAAM,OAAO,KAAK,KAAK,WAAW,GAAG,GAAG,OAAO;AAC/C,MAAI,CAAC,WAAW,KAAK,CAAE,QAAO;AAC9B,aAAW,KAAK;AAChB,SAAO;;CAGT,SAAiB,MAA6C;AAC5D,MAAI;GACF,MAAM,QAAQ,KAAK,MAAM,aAAa,MAAM,QAAQ,CAAC;AACrD,UAAO,SAAS,OAAO,MAAM,OAAO,YAAY,MAAM,OAAO,kBAAkB,IAAI,QAAQ;UACrF;AACN,UAAO;;;;AAKb,IAAa,6BAAb,cAAgD,MAAM;CACpD,YAAY,oBAAsC;AAChD,QAAM,+CAA+C;AADlC,OAAA,qBAAA;AAEnB,OAAK,OAAO;;;AAIhB,SAAS,eAAe,IAAkB;AACxC,KAAI,CAAC,mBAAmB,KAAK,GAAG,CAAE,OAAM,IAAI,MAAM,4BAA4B;;AAGhF,SAAS,gBAAgB,MAAc,OAAsB;CAC3D,MAAM,gBAAgB,GAAG,KAAK,GAAG,YAAY,CAAC;AAC9C,eAAc,eAAe,GAAG,KAAK,UAAU,OAAO,MAAM,EAAE,CAAC,KAAK,QAAQ;AAC5E,YAAW,eAAe,KAAK"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"definition-utils.js","names":[],"sources":["../../../../src/workflows/domain/definition-utils.ts"],"sourcesContent":["import { createHash } from 'node:crypto';\n\nimport type {\n WorkflowDefinition,\n WorkflowDefinitionManifest,\n WorkflowGraph,\n WorkflowPhaseDefinition,\n} from './definition.js';\n\nexport const DEFAULT_WORKFLOW_CONCURRENCY = 4;\nexport const DEFAULT_WORKFLOW_TIMEOUT_SEC = 30 * 60;\nexport const DEFAULT_WORKFLOW_MAX_SUBAGENTS = 100;\n\nexport interface WorkflowDefinitionBuildInput {\n name: string;\n source: 'builtin' | 'user';\n graph: WorkflowGraph;\n manifest?: WorkflowDefinitionManifest;\n phases?: WorkflowPhaseDefinition[];\n revision?: number;\n createdAtMs?: number;\n}\n\nexport function buildWorkflowDefinition(input: WorkflowDefinitionBuildInput): WorkflowDefinition {\n const nowMs = Date.now();\n const manifest = input.manifest;\n const manifestDefaults = manifest?.defaults ?? {};\n const phases = input.phases ?? deriveWorkflowPhases(input.graph);\n const graphHash = hashWorkflowStableValue(input.graph);\n const base = {\n id: input.name,\n name: input.name,\n title: manifest?.title ?? toWorkflowDefinitionTitle(input.name),\n description: manifest?.description ?? '',\n version: manifest?.version ?? '1.0.0',\n revision: input.revision ?? 1,\n inputSchema: manifest?.inputSchema,\n outputSchema: manifest?.outputSchema,\n phases,\n graph: structuredClone(input.graph),\n defaults: {\n concurrency: normalizePositiveInt(manifestDefaults.concurrency, DEFAULT_WORKFLOW_CONCURRENCY),\n timeoutSec: normalizePositiveInt(manifestDefaults.timeoutSec, DEFAULT_WORKFLOW_TIMEOUT_SEC),\n maxSubagents: normalizePositiveInt(manifestDefaults.maxSubagents, DEFAULT_WORKFLOW_MAX_SUBAGENTS),\n },\n permissions: manifest?.permissions,\n resources: manifest?.resources,\n connectors: manifest?.connectors,\n metadata: {\n tags: manifest?.tags ?? [],\n builtIn: input.source === 'builtin',\n source: input.source,\n whenToUse: manifest?.whenToUse,\n estimatedAgents: manifest?.estimatedAgents,\n examplePrompts: manifest?.examplePrompts,\n i18n: manifest?.i18n,\n createdAtMs: input.createdAtMs ?? nowMs,\n updatedAtMs: nowMs,\n },\n } satisfies Omit<WorkflowDefinition, 'contentHash'>;\n\n return {\n ...base,\n contentHash: hashWorkflowStableValue({\n name: base.name,\n title: base.title,\n description: base.description,\n version: base.version,\n revision: base.revision,\n graphHash,\n defaults: base.defaults,\n permissions: base.permissions,\n resources: base.resources,\n connectors: base.connectors,\n }),\n };\n}\n\nexport function deriveWorkflowPhases(graph: WorkflowGraph): WorkflowPhaseDefinition[] {\n const phases = new Map<string, WorkflowPhaseDefinition>();\n for (const node of graph.nodes) {\n if (!node.phaseId || phases.has(node.phaseId)) continue;\n phases.set(node.phaseId, {\n id: node.phaseId,\n title: toWorkflowDefinitionTitle(node.phaseId),\n });\n }\n return [...phases.values()];\n}\n\nexport function hashWorkflowStableValue(value: unknown): string {\n return createHash('sha256').update(stableStringify(value)).digest('hex');\n}\n\nfunction stableStringify(value: unknown): string {\n if (value === null || typeof value !== 'object') return JSON.stringify(value);\n if (Array.isArray(value)) return `[${value.map((item) => stableStringify(item)).join(',')}]`;\n const record = value as Record<string, unknown>;\n return `{${Object.keys(record)\n .filter((key) => record[key] !== undefined)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableStringify(record[key])}`)\n .join(',')}}`;\n}\n\nfunction normalizePositiveInt(value: number | undefined, fallback: number): number {\n if (typeof value !== 'number' || !Number.isFinite(value) || value < 1) return fallback;\n return Math.floor(value);\n}\n\nexport function normalizeWorkflowDefinitionId(value: string): string {\n return value.trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');\n}\n\nexport function toWorkflowDefinitionTitle(value: string): string {\n return value\n .split(/[_-]+/g)\n .filter(Boolean)\n .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n .join(' ');\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","names":[],"sources":["../../../../src/workflows/domain/run.ts"],"sourcesContent":["import type { WorkflowDefinitionDefaults, WorkflowDefinitionEstimatedAgents, WorkflowGraph, WorkflowPermissionPolicy, WorkflowResourceRefs } from './definition.js';\nimport type { WorkflowArtifactRef, WorkflowResultEnvelope } from './result.js';\n\nexport type WorkflowRunStatus =\n | 'queued'\n | 'running'\n | 'succeeded'\n | 'failed'\n | 'cancelled'\n | 'timeout';\n\nconst TERMINAL_WORKFLOW_RUN_STATUSES = new Set<WorkflowRunStatus>([\n 'succeeded',\n 'failed',\n 'cancelled',\n 'timeout',\n]);\n\nexport function isTerminalWorkflowRunStatus(status: WorkflowRunStatus): boolean {\n return TERMINAL_WORKFLOW_RUN_STATUSES.has(status);\n}\n\nexport interface WorkflowRun {\n id: string;\n definitionId: string;\n definitionVersion: string;\n title: string;\n goal: string;\n input: unknown;\n status: WorkflowRunStatus;\n source: WorkflowRunSource;\n metadata?: WorkflowRunMetadata;\n result?: WorkflowResultEnvelope;\n error?: WorkflowRunError;\n metrics: WorkflowRunMetrics;\n createdAtMs: number;\n startedAtMs?: number;\n completedAtMs?: number;\n}\n\nexport interface WorkflowRunMetadata {\n sessionKey: string;\n triggerSource: WorkflowRunSource['kind'];\n agentId?: string;\n projectId?: string;\n workItemId?: string;\n contextRefs?: WorkflowRunContextRef[];\n writebackPolicy?: WorkflowRunWritebackPolicy;\n retryOfRunId?: string;\n replay?: WorkflowRunReplayMetadata;\n definition: WorkflowRunDefinitionSnapshot;\n input?: WorkflowRunInputEnvelope;\n correlation?: WorkflowRunCorrelation;\n origin?: WorkflowRunOrigin;\n schedule?: WorkflowRunScheduleMetadata;\n goalId?: string;\n}\n\nexport type WorkflowRunReplayScope = 'failed_agents' | 'failed_phases';\n\nexport interface WorkflowRunContextRef {\n kind: 'project' | 'goal' | 'work_item' | 'session' | 'attachment' | 'memory';\n id: string;\n role?: string;\n title?: string;\n}\n\nexport interface WorkflowRunWritebackPolicy {\n targets: WorkflowRunWritebackTarget[];\n}\n\nexport interface WorkflowRunWritebackTarget {\n kind: 'project' | 'goal' | 'work_item';\n id: string;\n mode: 'record' | 'suggest' | 'evaluate';\n}\n\nexport interface WorkflowRunReplayMetadata {\n sourceRunId: string;\n scope: WorkflowRunReplayScope;\n phaseIds?: string[];\n agentIds: string[];\n targetCount: number;\n createdAtMs: number;\n}\n\nexport interface WorkflowRunInputEnvelope {\n payload: unknown;\n goal?: string;\n variables?: Record<string, unknown>;\n context?: Record<string, unknown>;\n}\n\nexport interface WorkflowRunCorrelation {\n idempotencyKey?: string;\n requestId?: string;\n traceId?: string;\n parentRunId?: string;\n}\n\nexport interface WorkflowRunOrigin {\n channel: string;\n sessionKey?: string;\n chatId?: string;\n messageId?: string;\n automationId?: string;\n runId?: string;\n requestId?: string;\n}\n\nexport interface WorkflowRunScheduleMetadata {\n automationId: string;\n runId?: string;\n scheduledAtMs?: number;\n}\n\nexport interface WorkflowRunDefinitionSnapshot {\n id: string;\n name: string;\n title: string;\n version: string;\n contentHash?: string;\n revision: number;\n graph: WorkflowGraph;\n source: 'builtin' | 'user';\n tags: string[];\n phaseCount: number;\n defaults?: WorkflowDefinitionDefaults;\n permissions?: WorkflowPermissionPolicy;\n resources?: WorkflowResourceRefs;\n estimatedAgents?: WorkflowDefinitionEstimatedAgents;\n}\n\nexport type WorkflowRunSource =\n | { kind: 'chat'; sessionKey: string; messageId?: string }\n | { kind: 'webui'; sessionKey?: string; requestId?: string }\n | { kind: 'automation'; automationId: string; runId?: string; scheduledAtMs?: number }\n | { kind: 'api'; requestId?: string; idempotencyKey?: string }\n | { kind: 'im'; channel: string; chatId: string; messageId?: string; userId?: string };\n\nexport interface WorkflowRunMetrics {\n agentCount: number;\n doneAgentCount: number;\n errorAgentCount: number;\n skippedAgentCount: number;\n artifactCount: number;\n durationMs?: number;\n}\n\nexport interface WorkflowRunError {\n code: WorkflowRunErrorCode;\n message: string;\n detail?: string;\n recoverable: boolean;\n}\n\nexport type WorkflowRunErrorCode =\n | 'definition_not_found'\n | 'invalid_input'\n | 'runtime_error'\n | 'timeout'\n | 'cancelled'\n | 'result_validation_failed'\n | 'agent_quota_exceeded';\n\nexport interface WorkflowRunControls {\n canCancel: boolean;\n canRetry: boolean;\n canArchive: boolean;\n}\n\nexport interface WorkflowRunSummary {\n id: string;\n definitionId: string;\n title: string;\n status: WorkflowRunStatus;\n source: WorkflowRunSource;\n metadata?: WorkflowRunMetadata;\n createdAtMs: number;\n startedAtMs?: number;\n completedAtMs?: number;\n metrics: WorkflowRunMetrics;\n}\n\nexport interface WorkflowRunView {\n run: WorkflowRun;\n phases: WorkflowPhaseView[];\n agents: WorkflowAgentView[];\n nodes: WorkflowNodeView[];\n logs: WorkflowLogEntry[];\n artifacts: WorkflowArtifactRef[];\n timeline: WorkflowTimelineItem[];\n controls: WorkflowRunControls;\n}\n\nexport interface WorkflowNodeView {\n id: string;\n kind: string;\n title: string;\n status: 'pending' | 'running' | 'done' | 'error' | 'skipped';\n resultPreview?: string;\n error?: string;\n startedAtMs?: number;\n completedAtMs?: number;\n}\n\nexport type WorkflowPhaseStatus = 'pending' | 'running' | 'completed' | 'failed';\n\nexport interface WorkflowPhaseView {\n id: string;\n title: string;\n status: WorkflowPhaseStatus;\n startedAtMs?: number;\n completedAtMs?: number;\n agentIds: string[];\n}\n\nexport type WorkflowAgentStatus = 'queued' | 'running' | 'done' | 'error' | 'skipped';\n\nexport interface WorkflowAgentView {\n id: string;\n nodeId?: string;\n label: string;\n phaseId?: string;\n status: WorkflowAgentStatus;\n prompt?: string;\n invocation?: WorkflowAgentInvocationSnapshot;\n sessionKey: string;\n transcriptMessageCount: number;\n currentStep?: string;\n resultPreview?: string;\n error?: string;\n startedAtMs?: number;\n completedAtMs?: number;\n steps: WorkflowAgentStepView[];\n}\n\nexport interface WorkflowAgentInvocationSnapshot {\n nodeId?: string;\n prompt: string;\n label: string;\n phase?: string;\n modelRef?: string;\n resolvedModelRef?: string;\n schema?: unknown;\n toolset?: string[];\n maxIterations?: number;\n}\n\nexport type WorkflowAgentStepStatus = 'running' | 'done' | 'error';\n\nexport interface WorkflowAgentStepView {\n id: string;\n label: string;\n kind: 'tool' | 'llm' | 'thinking';\n toolName?: string;\n detail?: string;\n status: WorkflowAgentStepStatus;\n resultPreview?: string;\n error?: string;\n startedAtMs?: number;\n completedAtMs?: number;\n}\n\nexport interface WorkflowLogEntry {\n sequence: number;\n message: string;\n createdAtMs: number;\n}\n\nexport interface WorkflowTimelineItem {\n sequence: number;\n type: string;\n title: string;\n createdAtMs: number;\n}\n"],"mappings":";AAWA,MAAM,iCAAiC,IAAI,IAAuB;CAChE;CACA;CACA;CACA;CACD,CAAC;AAEF,SAAgB,4BAA4B,QAAoC;AAC9E,QAAO,+BAA+B,IAAI,OAAO"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema-validation.js","names":[],"sources":["../../../../src/workflows/domain/schema-validation.ts"],"sourcesContent":["import Ajv, { type ErrorObject } from 'ajv';\n\nimport type { JsonSchema } from './definition.js';\n\nconst ajv = new Ajv({ allErrors: true, strict: false });\n\nexport interface WorkflowSchemaValidationResult {\n ok: boolean;\n message?: string;\n errors?: ErrorObject[];\n}\n\nexport function validateWorkflowJsonSchema(\n schema: JsonSchema | undefined,\n value: unknown,\n): WorkflowSchemaValidationResult {\n if (!schema) {\n return { ok: true };\n }\n\n let validate: ReturnType<typeof ajv.compile>;\n try {\n validate = ajv.compile(schema);\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return { ok: false, message: `Invalid workflow schema: ${message}` };\n }\n\n if (validate(value)) {\n return { ok: true };\n }\n\n return {\n ok: false,\n message: ajv.errorsText(validate.errors, { separator: '; ' }),\n errors: validate.errors ?? undefined,\n };\n}\n"],"mappings":";;AAIA,MAAM,MAAM,IAAI,IAAI;CAAE,WAAW;CAAM,QAAQ;CAAO,CAAC;AAQvD,SAAgB,2BACd,QACA,OACgC;AAChC,KAAI,CAAC,OACH,QAAO,EAAE,IAAI,MAAM;CAGrB,IAAI;AACJ,KAAI;AACF,aAAW,IAAI,QAAQ,OAAO;UACvB,KAAK;AAEZ,SAAO;GAAE,IAAI;GAAO,SAAS,4BADb,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;GACI;;AAGtE,KAAI,SAAS,MAAM,CACjB,QAAO,EAAE,IAAI,MAAM;AAGrB,QAAO;EACL,IAAI;EACJ,SAAS,IAAI,WAAW,SAAS,QAAQ,EAAE,WAAW,MAAM,CAAC;EAC7D,QAAQ,SAAS,UAAU,KAAA;EAC5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","names":[],"sources":["../../../../src/workflows/domain/validation.ts"],"sourcesContent":["import type { WorkflowDefinition, WorkflowGraph, WorkflowGraphNode } from './definition.js';\nimport { buildWorkflowDefinition } from './definition-utils.js';\n\nexport type WorkflowDefinitionValidationIssueCode =\n | 'name_required'\n | 'invalid_name'\n | 'graph_required'\n | 'invalid_schema_version'\n | 'duplicate_node'\n | 'missing_input'\n | 'multiple_inputs'\n | 'missing_output'\n | 'multiple_outputs'\n | 'unknown_edge_node'\n | 'duplicate_edge'\n | 'self_edge'\n | 'cycle_detected'\n | 'unreachable_node'\n | 'dead_end_node'\n | 'missing_prompt'\n | 'invalid_node_config';\n\nexport interface WorkflowDefinitionValidationIssue {\n code: WorkflowDefinitionValidationIssueCode;\n message: string;\n nodeId?: string;\n edgeId?: string;\n field?: string;\n}\n\nexport interface WorkflowDefinitionValidationResult {\n valid: boolean;\n errors: WorkflowDefinitionValidationIssue[];\n warnings: WorkflowDefinitionValidationIssue[];\n definition?: WorkflowDefinition;\n}\n\nexport interface ValidateWorkflowDefinitionInput {\n name?: string;\n graph?: WorkflowGraph;\n title?: string;\n description?: string;\n}\n\nconst NAME_RE = /^[a-z][a-z0-9_-]*$/;\n\nexport function validateWorkflowDefinitionInput(\n input: ValidateWorkflowDefinitionInput,\n): WorkflowDefinitionValidationResult {\n const name = input.name?.trim() ?? '';\n const errors: WorkflowDefinitionValidationIssue[] = [];\n const warnings: WorkflowDefinitionValidationIssue[] = [];\n\n if (!name) {\n errors.push({ code: 'name_required', message: 'Workflow name is required.', field: 'name' });\n } else if (!NAME_RE.test(name)) {\n errors.push({\n code: 'invalid_name',\n message: `Invalid workflow name \"${name}\". Use lowercase snake_case.`,\n field: 'name',\n });\n }\n\n if (!input.graph) {\n errors.push({ code: 'graph_required', message: 'Workflow graph is required.', field: 'graph' });\n } else {\n validateWorkflowGraph(input.graph, errors, warnings);\n }\n\n if (errors.length > 0 || !input.graph) return { valid: false, errors, warnings };\n\n return {\n valid: true,\n errors,\n warnings,\n definition: buildWorkflowDefinition({\n name,\n source: 'user',\n graph: input.graph,\n manifest: {\n title: input.title,\n description: input.description,\n },\n }),\n };\n}\n\nexport function validateWorkflowGraph(\n graph: WorkflowGraph,\n errors: WorkflowDefinitionValidationIssue[] = [],\n warnings: WorkflowDefinitionValidationIssue[] = [],\n): WorkflowDefinitionValidationResult {\n if (graph.schemaVersion !== 1) {\n errors.push({\n code: 'invalid_schema_version',\n message: 'Workflow graph schemaVersion must be 1.',\n field: 'schemaVersion',\n });\n }\n\n const nodes = new Map<string, WorkflowGraphNode>();\n for (const node of graph.nodes) {\n if (nodes.has(node.id)) {\n errors.push({ code: 'duplicate_node', message: `Duplicate node id \"${node.id}\".`, nodeId: node.id });\n continue;\n }\n nodes.set(node.id, node);\n validateNode(node, errors);\n }\n\n const inputs = graph.nodes.filter((node) => node.kind === 'input');\n const outputs = graph.nodes.filter((node) => node.kind === 'output');\n if (inputs.length === 0) errors.push({ code: 'missing_input', message: 'Workflow needs one input node.' });\n if (inputs.length > 1) errors.push({ code: 'multiple_inputs', message: 'Workflow can only have one input node.' });\n if (outputs.length === 0) errors.push({ code: 'missing_output', message: 'Workflow needs one output node.' });\n if (outputs.length > 1) errors.push({ code: 'multiple_outputs', message: 'Workflow can only have one output node.' });\n\n const edgeKeys = new Set<string>();\n const outgoing = new Map<string, string[]>();\n const incoming = new Map<string, string[]>();\n const indegree = new Map<string, number>(graph.nodes.map((node) => [node.id, 0]));\n for (const edge of graph.edges) {\n const key = `${edge.source}:${edge.target}:${edge.sourcePort ?? 'default'}`;\n if (edgeKeys.has(key)) {\n errors.push({ code: 'duplicate_edge', message: `Duplicate edge ${edge.source} → ${edge.target}.`, edgeId: edge.id });\n }\n edgeKeys.add(key);\n if (!nodes.has(edge.source) || !nodes.has(edge.target)) {\n errors.push({\n code: 'unknown_edge_node',\n message: `Edge \"${edge.id}\" references a missing node.`,\n edgeId: edge.id,\n });\n continue;\n }\n if (edge.source === edge.target) {\n errors.push({ code: 'self_edge', message: `Node \"${edge.source}\" cannot connect to itself.`, edgeId: edge.id });\n continue;\n }\n outgoing.set(edge.source, [...(outgoing.get(edge.source) ?? []), edge.target]);\n incoming.set(edge.target, [...(incoming.get(edge.target) ?? []), edge.source]);\n indegree.set(edge.target, (indegree.get(edge.target) ?? 0) + 1);\n\n const sourceNode = nodes.get(edge.source)!;\n if (sourceNode.kind === 'decision' && edge.sourcePort !== 'true' && edge.sourcePort !== 'false') {\n errors.push({ code: 'invalid_node_config', message: `Decision edge \"${edge.id}\" must use a true or false branch.`, edgeId: edge.id });\n }\n if (sourceNode.kind !== 'decision' && edge.sourcePort && edge.sourcePort !== 'default') {\n errors.push({ code: 'invalid_node_config', message: `Only decision nodes can use branch edges.`, edgeId: edge.id });\n }\n }\n\n if (nodes.size > 0 && !isAcyclic(indegree, outgoing)) {\n errors.push({ code: 'cycle_detected', message: 'Workflow graph must not contain a cycle.' });\n }\n\n if (inputs.length === 1) {\n const reachable = collectReachable(inputs[0].id, outgoing);\n for (const node of graph.nodes) {\n if (!reachable.has(node.id)) {\n errors.push({\n code: 'unreachable_node',\n message: `Node \"${node.title}\" is not connected to the workflow input.`,\n nodeId: node.id,\n });\n }\n }\n }\n\n if (outputs.length === 1) {\n const reachesOutput = collectReachable(outputs[0].id, incoming);\n for (const node of graph.nodes) {\n if (!reachesOutput.has(node.id)) {\n errors.push({ code: 'dead_end_node', message: `Node \"${node.title}\" does not lead to the workflow output.`, nodeId: node.id });\n }\n }\n }\n\n for (const node of graph.nodes) {\n if (node.kind !== 'decision') continue;\n const ports = graph.edges.filter((edge) => edge.source === node.id).map((edge) => edge.sourcePort);\n if (!ports.includes('true') || !ports.includes('false')) {\n errors.push({ code: 'invalid_node_config', message: `Decision node \"${node.title}\" needs both true and false branches.`, nodeId: node.id });\n }\n }\n\n return { valid: errors.length === 0, errors, warnings };\n}\n\nfunction validateNode(node: WorkflowGraphNode, errors: WorkflowDefinitionValidationIssue[]): void {\n if (!node.id.trim() || !node.title.trim()) {\n errors.push({\n code: 'invalid_node_config',\n message: 'Every node needs a stable id and title.',\n nodeId: node.id,\n });\n }\n if (node.kind === 'agent' && !node.config.prompt.trim()) {\n errors.push({\n code: 'missing_prompt',\n message: `Agent node \"${node.title}\" needs an instruction.`,\n nodeId: node.id,\n field: 'config.prompt',\n });\n }\n if (node.kind === 'agent' && node.config.maxIterations !== undefined) {\n if (!Number.isFinite(node.config.maxIterations) || node.config.maxIterations < 1) {\n errors.push({\n code: 'invalid_node_config',\n message: `Agent node \"${node.title}\" has an invalid iteration limit.`,\n nodeId: node.id,\n field: 'config.maxIterations',\n });\n }\n }\n}\n\nfunction isAcyclic(indegreeInput: Map<string, number>, outgoing: Map<string, string[]>): boolean {\n const indegree = new Map(indegreeInput);\n const queue = [...indegree.entries()].filter(([, count]) => count === 0).map(([id]) => id);\n let visited = 0;\n while (queue.length > 0) {\n const id = queue.shift()!;\n visited += 1;\n for (const target of outgoing.get(id) ?? []) {\n const next = (indegree.get(target) ?? 0) - 1;\n indegree.set(target, next);\n if (next === 0) queue.push(target);\n }\n }\n return visited === indegree.size;\n}\n\nfunction collectReachable(start: string, outgoing: Map<string, string[]>): Set<string> {\n const seen = new Set<string>();\n const queue = [start];\n while (queue.length > 0) {\n const id = queue.shift()!;\n if (seen.has(id)) continue;\n seen.add(id);\n queue.push(...(outgoing.get(id) ?? []));\n }\n return seen;\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-draft-prompt.js","names":[],"sources":["../../../../src/workflows/draft/workflow-draft-prompt.ts"],"sourcesContent":["import type { WorkflowGraph } from '../domain/definition.js';\nimport type { WorkflowDraftConstraints, WorkflowDraftMode } from './workflow-draft.types.js';\n\nexport interface WorkflowDraftRepairIssue {\n source: 'parse' | 'validation' | 'lint';\n severity: 'error' | 'warning';\n code: string;\n message: string;\n}\n\nexport function buildWorkflowDraftPrompt(params: {\n prompt: string;\n language?: 'en' | 'zh';\n mode: WorkflowDraftMode;\n existingGraph?: WorkflowGraph;\n constraints?: WorkflowDraftConstraints;\n}): string {\n return `${GRAPH_DESIGN_PROMPT}\n\nMode: ${params.mode}\nLanguage for user-facing copy: ${params.language ?? 'en'}\nConstraints:\n${JSON.stringify(params.constraints ?? {}, null, 2)}\n\n${params.existingGraph ? `Existing graph to improve:\\n${JSON.stringify(params.existingGraph, null, 2).slice(0, 16000)}\\n` : ''}\nUser request:\n${params.prompt.slice(0, 8000)}`;\n}\n\nexport function buildWorkflowDraftRepairPrompt(params: {\n prompt: string;\n language?: 'en' | 'zh';\n constraints?: WorkflowDraftConstraints;\n previousOutput: string;\n issues: WorkflowDraftRepairIssue[];\n}): string {\n return `${GRAPH_DESIGN_PROMPT}\n\nRepair the previous graph while preserving the user's intent. Fix every listed issue.\nLanguage for user-facing copy: ${params.language ?? 'en'}\nConstraints:\n${JSON.stringify(params.constraints ?? {}, null, 2)}\nIssues:\n${JSON.stringify(params.issues, null, 2)}\nUser request:\n${params.prompt.slice(0, 8000)}\nPrevious output:\n${params.previousOutput.slice(0, 16000)}`;\n}\n\nconst GRAPH_DESIGN_PROMPT = `You design xopc visual workflows for non-technical users. Return ONLY one JSON object, no markdown.\n\nShape:\n{\n \"name\": \"lowercase_snake_case\",\n \"graph\": { \"schemaVersion\": 1, \"nodes\": [], \"edges\": [] },\n \"manifest\": {\n \"title\": \"Human title\", \"description\": \"Outcome in plain language\", \"version\": \"1.0.0\",\n \"inputSchema\": { \"type\": \"object\", \"properties\": {}, \"required\": [] },\n \"defaults\": { \"concurrency\": 3, \"timeoutSec\": 1800, \"maxSubagents\": 8 },\n \"permissions\": { \"network\": false, \"fileSystem\": \"read\", \"approvalRequired\": false },\n \"tags\": [\"custom\"], \"whenToUse\": \"A concrete user situation\"\n },\n \"explanation\": \"Short explanation\", \"assumptions\": [], \"risks\": []\n}\n\nGraph rules:\n- Exactly one input node and one output node. Every node must be reachable from input and lead toward output.\n- Node kinds are input, agent, decision, merge, output.\n- Every node has id, kind, title, position {x,y}, config, and optional phaseId/description.\n- input config: {schema?}; agent config: {prompt, model?, toolset?, maxIterations?, outputSchema?}; decision config: {rule:{path,operator,value?}}; merge config: {mode:\"array\"|\"object\"}; output config: {summary?,title?}.\n- Edge shape: {id,source,target,sourcePort?}. Decision branch ports are true and false.\n- Agent prompts may reference {{goal}}, {{input}}, {{input.field}}, {{nodes.nodeId}}, and {{predecessors.nodeId}}.\n- Prefer a small, understandable graph: 3-8 nodes, short titles, clear descriptions. Parallel independent work should fan out and then merge.\n- Do not create code or script fields. Do not request permissions the user did not need.`;\n"],"mappings":";AAUA,SAAgB,yBAAyB,QAM9B;AACT,QAAO,GAAG,oBAAoB;;QAExB,OAAO,KAAK;iCACa,OAAO,YAAY,KAAK;;EAEvD,KAAK,UAAU,OAAO,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC;;EAElD,OAAO,gBAAgB,+BAA+B,KAAK,UAAU,OAAO,eAAe,MAAM,EAAE,CAAC,MAAM,GAAG,KAAM,CAAC,MAAM,GAAG;;EAE7H,OAAO,OAAO,MAAM,GAAG,IAAK;;AAG9B,SAAgB,+BAA+B,QAMpC;AACT,QAAO,GAAG,oBAAoB;;;iCAGC,OAAO,YAAY,KAAK;;EAEvD,KAAK,UAAU,OAAO,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC;;EAElD,KAAK,UAAU,OAAO,QAAQ,MAAM,EAAE,CAAC;;EAEvC,OAAO,OAAO,MAAM,GAAG,IAAK,CAAC;;EAE7B,OAAO,eAAe,MAAM,GAAG,KAAM;;AAGvC,MAAM,sBAAsB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-draft-service.js","names":[],"sources":["../../../../src/workflows/draft/workflow-draft-service.ts"],"sourcesContent":["import { type UserMessage } from '@earendil-works/pi-ai/compat';\n\nimport { resolveModelRef } from '../../config/agent-typed-models.js';\nimport { getAgentDefaultModelRef } from '../../config/schema.js';\nimport type { Config } from '../../config/schema.js';\nimport { getDefaultModelSync, resolveModel } from '../../providers/index.js';\nimport { completeWithResolvedCredentials } from '../../providers/model-call.js';\nimport { createLogger } from '../../utils/logger.js';\n\nimport {\n buildWorkflowDraftPrompt,\n buildWorkflowDraftRepairPrompt,\n type WorkflowDraftRepairIssue,\n} from './workflow-draft-prompt.js';\nimport type { CreateWorkflowDraftRequest, WorkflowDraftResponse } from './workflow-draft.types.js';\nimport { buildWorkflowDraftResponse, parseGeneratedWorkflowDraft } from './workflow-draft-validator.js';\n\nconst log = createLogger('WorkflowDraft');\nconst DEFAULT_MAX_REPAIR_ATTEMPTS = 2;\n\nexport interface WorkflowDraftServiceOptions {\n config: Config;\n maxRepairAttempts?: number;\n}\n\nexport class WorkflowDraftService {\n constructor(private readonly options: WorkflowDraftServiceOptions) {}\n\n async createDraft(request: CreateWorkflowDraftRequest, signal?: AbortSignal): Promise<WorkflowDraftResponse> {\n const prompt = request.prompt.trim();\n if (!prompt) throw new Error('prompt is required');\n const modelRef = resolveDraftModelRef(this.options.config, request.agentId);\n const model = resolveModel(modelRef);\n const maxRepairAttempts = this.options.maxRepairAttempts ?? DEFAULT_MAX_REPAIR_ATTEMPTS;\n let messageContent = buildWorkflowDraftPrompt({\n prompt,\n language: request.language,\n mode: request.mode ?? (request.existingGraph ? 'improve' : 'create'),\n existingGraph: request.existingGraph,\n constraints: request.constraints,\n });\n let lastIssues: WorkflowDraftRepairIssue[] = [];\n let lastText = '';\n\n for (let attempt = 0; attempt <= maxRepairAttempts; attempt += 1) {\n const userMsg: UserMessage = {\n role: 'user',\n content: messageContent,\n timestamp: Date.now(),\n };\n const result = await completeWithResolvedCredentials(\n model,\n { messages: [userMsg] },\n { maxTokens: 4096, temperature: attempt === 0 ? 0.25 : 0.1, signal: signal as AbortSignal },\n );\n lastText = extractText(result);\n try {\n const draft = parseGeneratedWorkflowDraft(lastText);\n const response = buildWorkflowDraftResponse(draft, request.constraints);\n const blockingIssues = getBlockingDraftIssues(response);\n if (blockingIssues.length === 0) {\n return { ...response, repairAttempts: attempt };\n }\n lastIssues = blockingIssues;\n } catch (err) {\n lastIssues = [{\n source: 'parse',\n severity: 'error',\n code: 'invalid_model_output',\n message: err instanceof Error ? err.message : String(err),\n }];\n }\n\n if (attempt >= maxRepairAttempts) break;\n log.warn(\n { modelRef, attempt: attempt + 1, issueCount: lastIssues.length, preview: lastText.slice(0, 500) },\n 'Workflow draft validation failed; asking model to repair',\n );\n messageContent = buildWorkflowDraftRepairPrompt({\n prompt,\n language: request.language,\n constraints: request.constraints,\n previousOutput: lastText,\n issues: lastIssues,\n });\n }\n\n const message = `Unable to generate a valid workflow draft after ${maxRepairAttempts + 1} attempts: ${formatRepairIssues(lastIssues)}`;\n log.warn({ modelRef, issues: lastIssues, preview: lastText.slice(0, 500) }, message);\n throw new Error(message);\n }\n}\n\nexport function resolveDraftModelRef(config: Config, agentId: string): string {\n try {\n return resolveModelRef(config, agentId, 'large');\n } catch {\n return getAgentDefaultModelRef(config) ?? getDefaultModelSync(config);\n }\n}\n\nfunction extractText(result: unknown): string {\n const content = (result as { content?: unknown }).content;\n if (typeof content === 'string') return content;\n if (Array.isArray(content)) {\n return content.map((item) => {\n if (item && typeof item === 'object' && (item as { type?: string }).type === 'text') {\n return String((item as { text?: string }).text ?? '');\n }\n return '';\n }).join('');\n }\n return '';\n}\n\nfunction getBlockingDraftIssues(response: WorkflowDraftResponse): WorkflowDraftRepairIssue[] {\n const validationIssues: WorkflowDraftRepairIssue[] = [\n ...response.validation.errors.map((issue) => ({\n source: 'validation' as const,\n severity: 'error' as const,\n code: issue.code,\n message: issue.message,\n })),\n ...response.validation.warnings.map((issue) => ({\n source: 'validation' as const,\n severity: 'warning' as const,\n code: issue.code,\n message: issue.message,\n })),\n ];\n const lintIssues = response.lint\n .filter((issue) => issue.severity === 'error')\n .map((issue) => ({\n source: 'lint' as const,\n severity: issue.severity,\n code: issue.code,\n message: issue.message,\n }));\n return [...validationIssues, ...lintIssues];\n}\n\nfunction formatRepairIssues(issues: WorkflowDraftRepairIssue[]): string {\n if (issues.length === 0) return 'unknown validation failure';\n return issues.slice(0, 5).map((issue) => `${issue.source}:${issue.code}: ${issue.message}`).join('; ');\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-draft-validator.js","names":[],"sources":["../../../../src/workflows/draft/workflow-draft-validator.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { WorkflowDefinitionManifest, WorkflowGraph } from '../domain/definition.js';\nimport { validateWorkflowDefinitionInput } from '../domain/validation.js';\n\nimport type { GeneratedWorkflowDraft, WorkflowDraftConstraints, WorkflowDraftLintIssue, WorkflowDraftResponse } from './workflow-draft.types.js';\n\nexport function parseGeneratedWorkflowDraft(raw: string): GeneratedWorkflowDraft {\n const parsed = JSON.parse(extractJsonObject(raw)) as Partial<GeneratedWorkflowDraft>;\n return {\n name: normalizeWorkflowName(String(parsed.name ?? 'custom_workflow')),\n graph: normalizeGraph(parsed.graph),\n manifest: normalizeManifest(parsed.manifest),\n explanation: String(parsed.explanation ?? ''),\n assumptions: stringArray(parsed.assumptions),\n risks: stringArray(parsed.risks),\n };\n}\n\nexport function buildWorkflowDraftResponse(draft: GeneratedWorkflowDraft, constraints?: WorkflowDraftConstraints): WorkflowDraftResponse {\n const validation = validateWorkflowDefinitionInput({ name: draft.name, graph: draft.graph });\n return {\n draftId: randomUUID(),\n repairAttempts: 0,\n ...draft,\n permissionsSummary: summarizePermissions(draft.manifest),\n validation,\n lint: lintWorkflowDraft(draft, constraints),\n suggestedInputs: suggestedInputsFromManifest(draft.manifest),\n };\n}\n\nexport function lintWorkflowDraft(draft: GeneratedWorkflowDraft, constraints?: WorkflowDraftConstraints): WorkflowDraftLintIssue[] {\n const issues: WorkflowDraftLintIssue[] = [];\n const { manifest, graph } = draft;\n if (!manifest.inputSchema) issues.push({ severity: 'warning', code: 'missing_input_schema', message: 'Draft does not define an input schema.' });\n if (!manifest.outputSchema) issues.push({ severity: 'warning', code: 'missing_output_schema', message: 'Draft does not define an output schema.' });\n if (manifest.permissions?.network && constraints?.allowNetwork === false) issues.push({ severity: 'error', code: 'unsafe_permission', message: 'Draft requests network access, but network is disabled.' });\n if (manifest.permissions?.fileSystem === 'write' && constraints?.fileSystem !== 'write') issues.push({ severity: 'warning', code: 'unsafe_permission', message: 'Draft requests filesystem write access.' });\n const phases = new Set(graph.nodes.map((node) => node.phaseId).filter(Boolean));\n if (constraints?.maxPhases && phases.size > constraints.maxPhases) issues.push({ severity: 'warning', code: 'too_many_agents', message: `Draft has ${phases.size} phases, above the requested maximum.` });\n const agents = graph.nodes.filter((node) => node.kind === 'agent');\n if (constraints?.maxSubagents && agents.length > constraints.maxSubagents) issues.push({ severity: 'warning', code: 'too_many_agents', message: `Draft has ${agents.length} agents, above the requested maximum.` });\n if (constraints?.allowedTools?.length) {\n const unknown = agents.flatMap((node) => node.config.toolset ?? []).filter((tool) => !constraints.allowedTools!.includes(tool));\n for (const tool of [...new Set(unknown)]) issues.push({ severity: 'warning', code: 'unknown_tool', message: `Tool '${tool}' is outside the requested allowlist.` });\n }\n return issues;\n}\n\nfunction extractJsonObject(raw: string): string {\n const trimmed = raw.trim();\n if (trimmed.startsWith('{') && trimmed.endsWith('}')) return trimmed;\n const fenced = trimmed.match(/```(?:json)?\\s*([\\s\\S]*?)```/i)?.[1]?.trim();\n if (fenced?.startsWith('{')) return fenced;\n const start = trimmed.indexOf('{');\n const end = trimmed.lastIndexOf('}');\n if (start >= 0 && end > start) return trimmed.slice(start, end + 1);\n throw new Error('Model did not return a JSON object.');\n}\n\nfunction normalizeGraph(value: unknown): WorkflowGraph {\n if (!value || typeof value !== 'object' || Array.isArray(value)) return { schemaVersion: 1, nodes: [], edges: [] };\n return value as WorkflowGraph;\n}\n\nfunction normalizeManifest(value: unknown): WorkflowDefinitionManifest {\n return value && typeof value === 'object' && !Array.isArray(value) ? value as WorkflowDefinitionManifest : {};\n}\n\nfunction stringArray(value: unknown): string[] {\n return Array.isArray(value) ? value.map(String).filter(Boolean) : [];\n}\n\nfunction normalizeWorkflowName(value: string): string {\n const normalized = value.trim().toLowerCase().replace(/[^a-z0-9]+/g, '_').replace(/^_+|_+$/g, '');\n return /^[a-z]/.test(normalized) ? normalized : `workflow_${normalized || 'draft'}`;\n}\n\nfunction summarizePermissions(manifest: WorkflowDefinitionManifest): string[] {\n const permissions = manifest.permissions;\n if (!permissions) return ['No explicit permissions requested.'];\n const values: string[] = [];\n if (permissions.tools?.length) values.push(`Tools: ${permissions.tools.join(', ')}`);\n if (permissions.network != null) values.push(`Network: ${permissions.network ? 'enabled' : 'disabled'}`);\n if (permissions.fileSystem) values.push(`Filesystem: ${permissions.fileSystem}`);\n if (permissions.approvalRequired) values.push('Approval required');\n return values.length ? values : ['No explicit permissions requested.'];\n}\n\nfunction suggestedInputsFromManifest(manifest: WorkflowDefinitionManifest): WorkflowDraftResponse['suggestedInputs'] {\n const properties = manifest.inputSchema?.properties;\n if (!properties) return undefined;\n return Object.entries(properties).slice(0, 8).map(([key, schema]) => ({ key, label: typeof schema.title === 'string' ? schema.title : key, example: typeof schema.default === 'string' ? schema.default : schema.description ?? '' }));\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"projector.js","names":[],"sources":["../../../../src/workflows/engine/projector.ts"],"sourcesContent":["import type { WorkflowEventEnvelope } from '../domain/event.js';\nimport type {\n WorkflowAgentStatus,\n WorkflowAgentView,\n WorkflowLogEntry,\n WorkflowNodeView,\n WorkflowPhaseStatus,\n WorkflowPhaseView,\n WorkflowRun,\n WorkflowRunView,\n WorkflowTimelineItem,\n} from '../domain/run.js';\nimport { isTerminalWorkflowRunStatus } from '../domain/run.js';\nimport type { WorkflowArtifactRef } from '../domain/result.js';\n\nfunction terminalRunStatus(status: WorkflowRun['status']): boolean {\n return isTerminalWorkflowRunStatus(status);\n}\n\nfunction phaseStatusAfterAgentStatus(agentStatuses: WorkflowAgentStatus[]): WorkflowPhaseStatus {\n if (agentStatuses.some((status) => status === 'running')) {\n return 'running';\n }\n if (agentStatuses.some((status) => status === 'error')) {\n return 'failed';\n }\n if (agentStatuses.length > 0 && agentStatuses.every((status) => status === 'done' || status === 'skipped')) {\n return 'completed';\n }\n return 'pending';\n}\n\nfunction buildTimelineItem(event: WorkflowEventEnvelope): WorkflowTimelineItem {\n return {\n sequence: event.sequence,\n type: event.type,\n title: event.type.replaceAll('_', ' '),\n createdAtMs: event.createdAtMs,\n };\n}\n\nfunction isAgentMutationEvent(type: WorkflowEventEnvelope['type']): boolean {\n return type === 'node_started'\n || type === 'node_completed'\n || type === 'agent_queued'\n || type === 'agent_started'\n || type === 'agent_step_started'\n || type === 'agent_step_completed'\n || type === 'agent_completed';\n}\n\nfunction markOpenNodesTerminal(nodes: Map<string, WorkflowNodeView>, status: 'error' | 'skipped', completedAtMs: number, error?: string): void {\n for (const [nodeId, node] of nodes) {\n if (node.status !== 'running') continue;\n nodes.set(nodeId, { ...node, status, completedAtMs, error: status === 'error' ? error : node.error });\n }\n}\n\nfunction markOpenAgentsTerminal(\n agentIdToAgent: Map<string, WorkflowAgentView>,\n status: Extract<WorkflowAgentStatus, 'error' | 'skipped'>,\n completedAtMs: number,\n error?: string,\n): void {\n for (const [agentId, agent] of agentIdToAgent) {\n if (agent.status !== 'queued' && agent.status !== 'running') {\n continue;\n }\n agentIdToAgent.set(agentId, {\n ...agent,\n status,\n currentStep: undefined,\n error: status === 'error' ? error : agent.error,\n completedAtMs,\n steps: agent.steps.map((step) =>\n step.status === 'running'\n ? { ...step, status: 'error', completedAtMs }\n : step,\n ),\n });\n }\n}\n\nexport function projectWorkflowRunView(events: WorkflowEventEnvelope[]): WorkflowRunView | null {\n if (events.length === 0) {\n return null;\n }\n\n const orderedEvents = [...events].sort((left, right) => left.sequence - right.sequence);\n const firstEvent = orderedEvents[0];\n if (firstEvent.type !== 'run_queued') {\n return null;\n }\n\n const firstPayload = firstEvent.payload as { run?: WorkflowRun };\n if (!firstPayload.run) {\n return null;\n }\n\n const run: WorkflowRun = {\n ...firstPayload.run,\n metrics: { ...firstPayload.run.metrics },\n };\n const phaseIdToPhase = new Map<string, WorkflowPhaseView>();\n const agentIdToAgent = new Map<string, WorkflowAgentView>();\n const nodeIdToNode = new Map<string, WorkflowNodeView>();\n const logs: WorkflowLogEntry[] = [];\n const artifacts: WorkflowArtifactRef[] = [];\n const timeline: WorkflowTimelineItem[] = [];\n\n for (const event of orderedEvents) {\n timeline.push(buildTimelineItem(event));\n\n if (terminalRunStatus(run.status) && isAgentMutationEvent(event.type)) {\n continue;\n }\n\n switch (event.type) {\n case 'run_started': {\n const payload = event.payload as { startedAtMs: number };\n run.status = 'running';\n run.startedAtMs = payload.startedAtMs;\n break;\n }\n case 'phase_started': {\n const payload = event.payload as { phaseId: string; title: string };\n phaseIdToPhase.set(payload.phaseId, {\n id: payload.phaseId,\n title: payload.title,\n status: 'running',\n startedAtMs: event.createdAtMs,\n agentIds: phaseIdToPhase.get(payload.phaseId)?.agentIds ?? [],\n });\n break;\n }\n case 'phase_completed': {\n const payload = event.payload as { phaseId: string };\n const existing = phaseIdToPhase.get(payload.phaseId);\n if (existing) {\n phaseIdToPhase.set(payload.phaseId, {\n ...existing,\n status: 'completed',\n completedAtMs: event.createdAtMs,\n });\n }\n break;\n }\n case 'node_started': {\n const payload = event.payload as { nodeId: string; kind: string; title: string };\n nodeIdToNode.set(payload.nodeId, { id: payload.nodeId, kind: payload.kind, title: payload.title, status: 'running', startedAtMs: event.createdAtMs });\n break;\n }\n case 'node_completed': {\n const payload = event.payload as { nodeId: string; kind: string; title: string; status: 'done' | 'error' | 'skipped'; resultPreview?: string; error?: string };\n const existing = nodeIdToNode.get(payload.nodeId);\n nodeIdToNode.set(payload.nodeId, {\n id: payload.nodeId,\n kind: payload.kind,\n title: payload.title,\n status: payload.status,\n startedAtMs: existing?.startedAtMs,\n completedAtMs: event.createdAtMs,\n resultPreview: payload.resultPreview,\n error: payload.error,\n });\n break;\n }\n case 'agent_queued': {\n const payload = event.payload as {\n agentId: string;\n nodeId: string;\n label: string;\n phaseId?: string;\n prompt?: string;\n sessionKey: string;\n invocation?: WorkflowAgentView['invocation'];\n };\n agentIdToAgent.set(payload.agentId, {\n id: payload.agentId,\n nodeId: payload.nodeId,\n label: payload.label,\n phaseId: payload.phaseId,\n status: 'queued',\n prompt: payload.prompt,\n invocation: payload.invocation,\n sessionKey: payload.sessionKey,\n transcriptMessageCount: 0,\n steps: [],\n });\n if (payload.phaseId) {\n const existingPhase = phaseIdToPhase.get(payload.phaseId);\n if (existingPhase && !existingPhase.agentIds.includes(payload.agentId)) {\n phaseIdToPhase.set(payload.phaseId, {\n ...existingPhase,\n agentIds: [...existingPhase.agentIds, payload.agentId],\n });\n }\n }\n break;\n }\n case 'agent_started': {\n const payload = event.payload as { agentId: string };\n const existing = agentIdToAgent.get(payload.agentId);\n if (existing) {\n agentIdToAgent.set(payload.agentId, {\n ...existing,\n status: 'running',\n startedAtMs: event.createdAtMs,\n });\n }\n break;\n }\n case 'agent_step_started': {\n const payload = event.payload as {\n agentId: string;\n stepId: string;\n label: string;\n kind: 'tool' | 'llm' | 'thinking';\n toolName?: string;\n detail?: string;\n };\n const existing = agentIdToAgent.get(payload.agentId);\n if (existing) {\n agentIdToAgent.set(payload.agentId, {\n ...existing,\n currentStep: payload.label,\n transcriptMessageCount: existing.transcriptMessageCount + 1,\n steps: [\n ...existing.steps,\n {\n id: payload.stepId,\n label: payload.label,\n kind: payload.kind,\n toolName: payload.toolName,\n detail: payload.detail,\n status: 'running',\n startedAtMs: event.createdAtMs,\n },\n ],\n });\n }\n break;\n }\n case 'agent_step_completed': {\n const payload = event.payload as {\n agentId: string;\n stepId: string;\n status: 'done' | 'error';\n resultPreview?: string;\n error?: string;\n };\n const existing = agentIdToAgent.get(payload.agentId);\n if (existing) {\n agentIdToAgent.set(payload.agentId, {\n ...existing,\n steps: existing.steps.map((step) =>\n step.id === payload.stepId\n ? {\n ...step,\n status: payload.status,\n resultPreview: payload.resultPreview,\n error: payload.error,\n completedAtMs: event.createdAtMs,\n }\n : step,\n ),\n });\n }\n break;\n }\n case 'agent_completed': {\n const payload = event.payload as {\n agentId: string;\n status: WorkflowAgentStatus;\n resultPreview?: string;\n error?: string;\n };\n const existing = agentIdToAgent.get(payload.agentId);\n if (existing) {\n agentIdToAgent.set(payload.agentId, {\n ...existing,\n status: payload.status,\n currentStep: undefined,\n resultPreview: payload.resultPreview,\n error: payload.error,\n transcriptMessageCount: existing.transcriptMessageCount + 1,\n completedAtMs: event.createdAtMs,\n });\n }\n break;\n }\n case 'log_appended': {\n const payload = event.payload as { message: string };\n logs.push({ sequence: event.sequence, message: payload.message, createdAtMs: event.createdAtMs });\n break;\n }\n case 'artifact_created': {\n const payload = event.payload as { artifact: WorkflowArtifactRef };\n artifacts.push(payload.artifact);\n run.metrics.artifactCount = artifacts.length;\n break;\n }\n case 'run_completed': {\n const payload = event.payload as { result: WorkflowRun['result'] };\n run.status = 'succeeded';\n run.result = payload.result;\n run.completedAtMs = event.createdAtMs;\n break;\n }\n case 'run_failed': {\n const payload = event.payload as { error: WorkflowRun['error'] };\n run.status = payload.error?.code === 'timeout' ? 'timeout' : 'failed';\n run.error = payload.error;\n run.completedAtMs = event.createdAtMs;\n markOpenAgentsTerminal(\n agentIdToAgent,\n payload.error?.code === 'timeout' ? 'skipped' : 'error',\n event.createdAtMs,\n payload.error?.message,\n );\n markOpenNodesTerminal(nodeIdToNode, payload.error?.code === 'timeout' ? 'skipped' : 'error', event.createdAtMs, payload.error?.message);\n break;\n }\n case 'run_cancelled': {\n run.status = 'cancelled';\n run.completedAtMs = event.createdAtMs;\n markOpenAgentsTerminal(agentIdToAgent, 'skipped', event.createdAtMs);\n markOpenNodesTerminal(nodeIdToNode, 'skipped', event.createdAtMs);\n break;\n }\n case 'run_queued':\n default:\n break;\n }\n }\n\n const agents = [...agentIdToAgent.values()];\n run.metrics.agentCount = agents.length;\n run.metrics.doneAgentCount = agents.filter((agent) => agent.status === 'done').length;\n run.metrics.errorAgentCount = agents.filter((agent) => agent.status === 'error').length;\n run.metrics.skippedAgentCount = agents.filter((agent) => agent.status === 'skipped').length;\n run.metrics.artifactCount = artifacts.length;\n if (run.startedAtMs && run.completedAtMs) {\n run.metrics.durationMs = run.completedAtMs - run.startedAtMs;\n }\n\n const phases = [...phaseIdToPhase.values()].map((phase) => {\n if (phase.status === 'completed' || phase.status === 'failed') {\n return phase;\n }\n const phaseAgents = phase.agentIds\n .map((agentId) => agentIdToAgent.get(agentId)?.status)\n .filter((status): status is WorkflowAgentStatus => Boolean(status));\n return { ...phase, status: phaseStatusAfterAgentStatus(phaseAgents) };\n });\n\n return {\n run,\n phases,\n agents,\n nodes: [...nodeIdToNode.values()],\n logs,\n artifacts,\n timeline,\n controls: {\n canCancel: !terminalRunStatus(run.status),\n canRetry: terminalRunStatus(run.status),\n canArchive: terminalRunStatus(run.status),\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.js","names":[],"sources":["../../../../src/workflows/engine/workflow-engine.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { WorkflowDefinition } from '../domain/definition.js';\nimport type { WorkflowEventEnvelope, WorkflowEventPayload, WorkflowEventType } from '../domain/event.js';\nimport type { WorkflowAgentStatus, WorkflowRun, WorkflowRunError, WorkflowRunMetadata, WorkflowRunSource, WorkflowRunView } from '../domain/run.js';\nimport type { WorkflowResultEnvelope } from '../domain/result.js';\nimport { validateWorkflowJsonSchema } from '../domain/schema-validation.js';\nimport { WorkflowEventStore } from '../store/event-store.js';\nimport { WorkflowRunStore } from '../store/run-store.js';\nimport { createGraphWorkflowRuntime } from '../runtime/graph-workflow-runtime.js';\nimport type { WorkflowRuntime, WorkflowRuntimeSubagentRunner } from '../runtime/workflow-runtime-port.js';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport { workflowStepLabel } from '../../agent/workflow/step-labels.js';\nimport type { SubagentProgressEvent } from '../../agent/workflow/types.js';\nimport type { WorkflowAgentInvocationSnapshot } from '../domain/index.js';\n\nexport interface WorkflowEngineOptions {\n cwd: string;\n eventStore: WorkflowEventStore;\n runStore: WorkflowRunStore;\n runner: WorkflowRuntimeSubagentRunner;\n runtime?: WorkflowRuntime;\n hooks?: WorkflowEngineHook[];\n subagentSessionKeyFactory?: (ctx: { runId: string; agentId: string }) => string;\n parentSessionKey?: string;\n onEventAppended?: (event: WorkflowEventEnvelope) => void;\n onRunViewUpdated?: (view: WorkflowRunView) => void;\n resolveModelId?: (modelId: string) => Model<Api>;\n}\n\nexport interface WorkflowEngineHook {\n beforeRun?(ctx: WorkflowRunHookContext): Promise<void> | void;\n beforeAgent?(ctx: WorkflowAgentHookContext): Promise<void> | void;\n afterAgent?(ctx: WorkflowAgentCompletedHookContext): Promise<void> | void;\n afterRun?(ctx: WorkflowRunCompletedHookContext): Promise<void> | void;\n}\n\nexport interface WorkflowRunHookContext {\n definition: WorkflowDefinition;\n run: WorkflowRun;\n}\n\nexport interface WorkflowAgentHookContext {\n runId: string;\n agentId: string;\n label: string;\n phaseId?: string;\n prompt: string;\n}\n\nexport interface WorkflowAgentCompletedHookContext {\n runId: string;\n agentId: string;\n status: 'done' | 'error' | 'skipped';\n resultPreview?: string;\n}\n\nexport interface WorkflowRunCompletedHookContext {\n runId: string;\n status: 'succeeded' | 'failed' | 'cancelled';\n}\n\nexport interface StartWorkflowRunOptions {\n input?: unknown;\n source: WorkflowRunSource;\n metadata?: WorkflowRunMetadata;\n goal?: string;\n runId?: string;\n signal?: AbortSignal;\n concurrency?: number;\n maxSubagents?: number;\n tokenBudget?: number | null;\n timeoutSec?: number;\n}\n\nexport interface WorkflowReplayAgentTarget {\n agentId: string;\n label: string;\n phaseId?: string;\n phaseTitle?: string;\n prompt: string;\n invocation?: WorkflowAgentInvocationSnapshot;\n}\n\nexport interface StartWorkflowReplayRunOptions extends StartWorkflowRunOptions {\n sourceRunId: string;\n replayScope: 'failed_agents' | 'failed_phases';\n targets: WorkflowReplayAgentTarget[];\n}\n\nexport class WorkflowEngine {\n constructor(private readonly options: WorkflowEngineOptions) {}\n\n async startRun(definition: WorkflowDefinition, options: StartWorkflowRunOptions): Promise<WorkflowRunView> {\n const runId = options.runId ?? randomUUID();\n const createdAtMs = Date.now();\n const phaseTitleToId = buildPhaseTitleToId(definition);\n let currentPhaseId: string | undefined;\n let eventQueue = Promise.resolve();\n const progressRecorders = new Map<number, AgentProgressRecorder>();\n const runtimeAgentStatuses = new Map<number, WorkflowAgentStatus | 'queued'>();\n const subagentSessionKeys = new Map<number, string>();\n\n const run: WorkflowRun = {\n id: runId,\n definitionId: definition.id,\n definitionVersion: definition.version,\n title: definition.title,\n goal: options.goal ?? definition.description,\n input: options.input ?? {},\n status: 'queued',\n source: options.source,\n metadata: options.metadata,\n metrics: {\n agentCount: 0,\n doneAgentCount: 0,\n errorAgentCount: 0,\n skippedAgentCount: 0,\n artifactCount: 0,\n },\n createdAtMs,\n };\n\n const appendEvent = (type: WorkflowEventType, payload: WorkflowEventPayload, createdAtMsOverride?: number) => {\n eventQueue = eventQueue\n .then(() =>\n this.options.eventStore.append({\n runId,\n type,\n payload,\n createdAtMs: createdAtMsOverride,\n }),\n )\n .then(async (event) => {\n this.options.onEventAppended?.(event);\n const view = await this.options.runStore.rebuildRunView(runId);\n if (view) {\n this.options.onRunViewUpdated?.(view);\n }\n });\n return eventQueue;\n };\n\n await appendEvent('run_queued', { run }, createdAtMs);\n await this.callHooks((hook) => hook.beforeRun?.({ definition, run }));\n await appendEvent('run_started', { startedAtMs: Date.now() });\n\n try {\n const runtime = this.options.runtime ?? createGraphWorkflowRuntime();\n const runtimeResult = await withWorkflowTimeout(\n runtime.run<unknown>(\n definition.graph,\n {\n runner: this.options.runner,\n resolveModelId: this.options.resolveModelId,\n },\n {\n cwd: this.options.cwd,\n args: options.input,\n goal: options.goal ?? definition.description,\n signal: options.signal,\n concurrency: options.concurrency ?? definition.defaults.concurrency,\n maxSubagents: options.maxSubagents ?? definition.defaults.maxSubagents,\n tokenBudget: options.tokenBudget,\n onPhase: (title) => {\n const nextPhaseId = phaseTitleToId.get(title) ?? normalizePhaseId(title);\n if (currentPhaseId && currentPhaseId !== nextPhaseId) {\n void appendEvent('phase_completed', { phaseId: currentPhaseId });\n }\n currentPhaseId = nextPhaseId;\n void appendEvent('phase_started', { phaseId: nextPhaseId, title });\n },\n onLog: (message) => {\n void appendEvent('log_appended', { message });\n },\n onNodeStart: (event) => {\n void appendEvent('node_started', event);\n },\n onNodeEnd: (event) => {\n void appendEvent('node_completed', {\n nodeId: event.nodeId,\n kind: event.kind,\n title: event.title,\n status: event.status,\n resultPreview: previewWorkflowValue(event.result),\n error: event.error,\n });\n },\n onAgentQueued: (event) => {\n const agentId = formatRuntimeAgentId(event.id);\n const subagentSessionKey = this.options.subagentSessionKeyFactory?.({ runId, agentId }) ?? defaultSubagentSessionKey(runId, agentId);\n subagentSessionKeys.set(event.id, subagentSessionKey);\n runtimeAgentStatuses.set(event.id, 'queued');\n const phaseId = event.phase ? (phaseTitleToId.get(event.phase) ?? normalizePhaseId(event.phase)) : currentPhaseId;\n void this.callHooks((hook) => hook.beforeAgent?.({\n runId,\n agentId,\n label: event.label,\n phaseId,\n prompt: event.prompt,\n }));\n void appendEvent('agent_queued', {\n agentId,\n nodeId: event.nodeId,\n label: event.label,\n phaseId,\n prompt: event.prompt,\n sessionKey: subagentSessionKey,\n invocation: event.invocation,\n });\n },\n onAgentStart: (event) => {\n const currentStatus = runtimeAgentStatuses.get(event.id);\n if (currentStatus && currentStatus !== 'queued' && currentStatus !== 'running') {\n return;\n }\n runtimeAgentStatuses.set(event.id, 'running');\n void appendEvent('agent_started', { agentId: formatRuntimeAgentId(event.id), nodeId: event.nodeId });\n },\n onAgentEnd: (event) => {\n const currentStatus = runtimeAgentStatuses.get(event.id);\n if (currentStatus && currentStatus !== 'queued' && currentStatus !== 'running') {\n return;\n }\n const agentId = formatRuntimeAgentId(event.id);\n const completedStatus = normalizeCompletedAgentStatus(event.status);\n runtimeAgentStatuses.set(event.id, completedStatus);\n const resultPreview = previewWorkflowValue(event.result);\n progressRecorders.get(event.id)?.completeOpenSteps(completedStatus === 'done' ? 'done' : 'error');\n progressRecorders.delete(event.id);\n void appendEvent('agent_completed', {\n agentId,\n nodeId: event.nodeId,\n status: completedStatus,\n resultPreview,\n error: completedStatus === 'error' ? 'Subagent failed' : undefined,\n }).then(() => this.callHooks((hook) => hook.afterAgent?.({\n runId,\n agentId,\n status: completedStatus,\n resultPreview,\n })).catch(() => undefined));\n },\n enhanceSubagentRun: (ctx) => {\n const recorder = new AgentProgressRecorder({\n agentId: formatRuntimeAgentId(ctx.id),\n appendEvent,\n });\n progressRecorders.set(ctx.id, recorder);\n const agentId = formatRuntimeAgentId(ctx.id);\n const sessionKey = subagentSessionKeys.get(ctx.id)\n ?? this.options.subagentSessionKeyFactory?.({ runId, agentId })\n ?? defaultSubagentSessionKey(runId, agentId);\n subagentSessionKeys.set(ctx.id, sessionKey);\n return {\n sessionKey,\n sessionMetadata: {\n parentSessionKey: this.options.parentSessionKey,\n workflowRunId: runId,\n workflowDefinitionId: definition.id,\n workflowAgentId: agentId,\n workflowNodeId: ctx.nodeId,\n workflowAgentLabel: ctx.label,\n },\n onProgress: (event) => recorder.onProgress(event),\n };\n },\n },\n ),\n options.timeoutSec ?? definition.defaults.timeoutSec,\n );\n\n await eventQueue;\n if (currentPhaseId) {\n await appendEvent('phase_completed', { phaseId: currentPhaseId });\n }\n const result = requireWorkflowResultEnvelope(runtimeResult.result);\n assertWorkflowOutput(definition, result);\n await appendEvent('run_completed', { result });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'succeeded' }));\n } catch (err) {\n await eventQueue;\n const error = toWorkflowRunError(err, options.signal?.aborted === true, options.signal?.reason);\n const terminalAgentStatus: WorkflowAgentStatus = error.code === 'cancelled' || error.code === 'timeout' ? 'skipped' : 'error';\n await this.completeOutstandingRuntimeAgents({\n runId,\n statuses: runtimeAgentStatuses,\n progressRecorders,\n appendEvent,\n status: terminalAgentStatus,\n error: terminalAgentStatus === 'error' ? error.message : undefined,\n });\n if (error.code === 'cancelled') {\n await appendEvent('run_cancelled', { reason: error.message });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'cancelled' }));\n } else {\n await appendEvent('run_failed', { error });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'failed' }));\n }\n }\n\n const view = await this.options.runStore.readRunView(runId);\n if (!view) {\n throw new Error(`workflow run view was not created for ${runId}`);\n }\n return view;\n }\n\n async startReplayRun(definition: WorkflowDefinition, options: StartWorkflowReplayRunOptions): Promise<WorkflowRunView> {\n const runId = options.runId ?? randomUUID();\n const createdAtMs = Date.now();\n let eventQueue = Promise.resolve();\n const progressRecorders = new Map<string, AgentProgressRecorder>();\n\n const run: WorkflowRun = {\n id: runId,\n definitionId: definition.id,\n definitionVersion: definition.version,\n title: `${definition.title} replay`,\n goal: options.goal ?? definition.description,\n input: options.input ?? {},\n status: 'queued',\n source: options.source,\n metadata: options.metadata,\n metrics: {\n agentCount: 0,\n doneAgentCount: 0,\n errorAgentCount: 0,\n skippedAgentCount: 0,\n artifactCount: 0,\n },\n createdAtMs,\n };\n\n const appendEvent = (type: WorkflowEventType, payload: WorkflowEventPayload, createdAtMsOverride?: number) => {\n eventQueue = eventQueue\n .then(() =>\n this.options.eventStore.append({\n runId,\n type,\n payload,\n createdAtMs: createdAtMsOverride,\n }),\n )\n .then(async (event) => {\n this.options.onEventAppended?.(event);\n const view = await this.options.runStore.rebuildRunView(runId);\n if (view) {\n this.options.onRunViewUpdated?.(view);\n }\n });\n return eventQueue;\n };\n\n await appendEvent('run_queued', { run }, createdAtMs);\n await this.callHooks((hook) => hook.beforeRun?.({ definition, run }));\n await appendEvent('run_started', { startedAtMs: Date.now() });\n\n try {\n const result = await withWorkflowTimeout(\n this.runReplayTargets({\n definition,\n runId,\n targets: options.targets,\n signal: options.signal,\n appendEvent,\n progressRecorders,\n }),\n options.timeoutSec ?? definition.defaults.timeoutSec,\n );\n\n await eventQueue;\n if (result.errors.length > 0) {\n await appendEvent('run_failed', {\n error: {\n code: 'runtime_error',\n message: `Replay completed with ${result.errors.length} failed target${result.errors.length === 1 ? '' : 's'}.`,\n detail: result.errors.join('\\n'),\n recoverable: true,\n },\n });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'failed' }));\n } else {\n await appendEvent('run_completed', { result: buildReplayResultEnvelope(options, result.results) });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'succeeded' }));\n }\n } catch (err) {\n await eventQueue;\n const error = toWorkflowRunError(err, options.signal?.aborted === true, options.signal?.reason);\n if (error.code === 'cancelled') {\n await appendEvent('run_cancelled', { reason: error.message });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'cancelled' }));\n } else {\n await appendEvent('run_failed', { error });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'failed' }));\n }\n }\n\n const view = await this.options.runStore.readRunView(runId);\n if (!view) {\n throw new Error(`workflow replay run view was not created for ${runId}`);\n }\n return view;\n }\n\n private async runReplayTargets(params: {\n definition: WorkflowDefinition;\n runId: string;\n targets: WorkflowReplayAgentTarget[];\n signal?: AbortSignal;\n appendEvent: AppendWorkflowEvent;\n progressRecorders: Map<string, AgentProgressRecorder>;\n }): Promise<{ results: WorkflowReplayTargetResult[]; errors: string[] }> {\n const results: WorkflowReplayTargetResult[] = [];\n const errors: string[] = [];\n const targetsByPhase = groupReplayTargetsByPhase(params.targets);\n\n for (const group of targetsByPhase) {\n throwIfSignalAborted(params.signal);\n if (group.phaseId && group.phaseTitle) {\n await params.appendEvent('phase_started', { phaseId: group.phaseId, title: group.phaseTitle });\n }\n\n const phaseResults = await Promise.all(\n group.targets.map((target) => this.runReplayTarget({ ...params, target })),\n );\n results.push(...phaseResults);\n errors.push(...phaseResults.filter((item) => item.status === 'error').map((item) => `${item.label}: ${item.error ?? 'failed'}`));\n\n if (group.phaseId && phaseResults.every((item) => item.status === 'done')) {\n await params.appendEvent('phase_completed', { phaseId: group.phaseId });\n }\n }\n\n return { results, errors };\n }\n\n private async runReplayTarget(params: {\n definition: WorkflowDefinition;\n runId: string;\n target: WorkflowReplayAgentTarget;\n signal?: AbortSignal;\n appendEvent: AppendWorkflowEvent;\n progressRecorders: Map<string, AgentProgressRecorder>;\n }): Promise<WorkflowReplayTargetResult> {\n const { target } = params;\n const invocation = normalizeReplayInvocation(target);\n const sessionKey = this.options.subagentSessionKeyFactory?.({ runId: params.runId, agentId: target.agentId })\n ?? defaultSubagentSessionKey(params.runId, target.agentId);\n await this.callHooks((hook) => hook.beforeAgent?.({\n runId: params.runId,\n agentId: target.agentId,\n label: invocation.label,\n phaseId: target.phaseId,\n prompt: invocation.prompt,\n }));\n await params.appendEvent('agent_queued', {\n agentId: target.agentId,\n label: invocation.label,\n phaseId: target.phaseId,\n prompt: invocation.prompt,\n sessionKey,\n invocation,\n });\n await params.appendEvent('agent_started', { agentId: target.agentId });\n\n const recorder = new AgentProgressRecorder({\n agentId: target.agentId,\n appendEvent: params.appendEvent,\n });\n params.progressRecorders.set(target.agentId, recorder);\n\n try {\n throwIfSignalAborted(params.signal);\n const model = resolveReplayModel(invocation, this.options.resolveModelId);\n const result = await this.options.runner.run<unknown>(invocation.prompt, {\n label: invocation.label,\n schema: invocation.schema as never,\n allowedToolNames: invocation.toolset,\n maxIterations: invocation.maxIterations,\n phase: invocation.phase ?? target.phaseTitle,\n signal: params.signal,\n model,\n sessionKey,\n sessionMetadata: {\n parentSessionKey: this.options.parentSessionKey,\n workflowRunId: params.runId,\n workflowDefinitionId: params.definition.id,\n workflowAgentId: target.agentId,\n workflowAgentLabel: invocation.label,\n },\n onProgress: (event) => recorder.onProgress(event),\n });\n throwIfSignalAborted(params.signal);\n const status = result === null ? 'error' : 'done';\n const resultPreview = previewWorkflowValue(result);\n recorder.completeOpenSteps(status === 'done' ? 'done' : 'error');\n await params.appendEvent('agent_completed', {\n agentId: target.agentId,\n status,\n resultPreview,\n error: status === 'error' ? 'Replay target failed' : undefined,\n });\n await this.callHooks((hook) => hook.afterAgent?.({\n runId: params.runId,\n agentId: target.agentId,\n status,\n resultPreview,\n }));\n return { agentId: target.agentId, label: invocation.label, phaseId: target.phaseId, status, resultPreview };\n } catch (err) {\n if (params.signal?.aborted) throw err;\n const message = err instanceof Error ? err.message : String(err);\n recorder.completeOpenSteps('error');\n await params.appendEvent('agent_completed', {\n agentId: target.agentId,\n status: 'error',\n error: message,\n });\n await this.callHooks((hook) => hook.afterAgent?.({\n runId: params.runId,\n agentId: target.agentId,\n status: 'error',\n }));\n return { agentId: target.agentId, label: invocation.label, phaseId: target.phaseId, status: 'error', error: message };\n } finally {\n params.progressRecorders.delete(target.agentId);\n }\n }\n\n private async completeOutstandingRuntimeAgents(params: {\n runId: string;\n statuses: Map<number, WorkflowAgentStatus | 'queued'>;\n progressRecorders: Map<number, AgentProgressRecorder>;\n appendEvent: AppendWorkflowEvent;\n status: Extract<WorkflowAgentStatus, 'done' | 'error' | 'skipped'>;\n error?: string;\n }): Promise<void> {\n for (const [id, currentStatus] of params.statuses) {\n if (currentStatus !== 'queued' && currentStatus !== 'running') {\n continue;\n }\n params.statuses.set(id, params.status);\n const recorder = params.progressRecorders.get(id);\n recorder?.completeOpenSteps(params.status === 'done' ? 'done' : 'error');\n params.progressRecorders.delete(id);\n const agentId = formatRuntimeAgentId(id);\n await params.appendEvent('agent_completed', {\n agentId,\n status: params.status,\n error: params.error,\n });\n await this.callHooks((hook) => hook.afterAgent?.({\n runId: params.runId,\n agentId,\n status: params.status,\n }));\n }\n }\n\n private async callHooks(call: (hook: WorkflowEngineHook) => Promise<void> | void | undefined): Promise<void> {\n for (const hook of this.options.hooks ?? []) {\n try {\n await call(hook);\n } catch {\n // Hooks are extension points; workflow execution remains authoritative.\n }\n }\n }\n}\n\ninterface WorkflowReplayTargetResult {\n agentId: string;\n label: string;\n phaseId?: string;\n status: 'done' | 'error';\n resultPreview?: string;\n error?: string;\n}\n\nclass WorkflowEngineRunError extends Error {\n constructor(\n readonly code: WorkflowRunError['code'],\n message: string,\n readonly recoverable: boolean,\n readonly detail?: string,\n ) {\n super(message);\n this.name = 'WorkflowEngineRunError';\n }\n}\n\ntype AppendWorkflowEvent = (\n type: WorkflowEventType,\n payload: WorkflowEventPayload,\n createdAtMsOverride?: number,\n) => Promise<void>;\n\nclass AgentProgressRecorder {\n private readonly activeToolStepIds = new Map<string, string>();\n private activeIterationStepId: string | null = null;\n private activeThinkingStepId: string | null = null;\n private activeLlmStepId: string | null = null;\n private sequence = 0;\n\n constructor(\n private readonly options: {\n agentId: string;\n appendEvent: AppendWorkflowEvent;\n },\n ) {}\n\n onProgress(event: SubagentProgressEvent): void {\n switch (event.type) {\n case 'tool_start':\n this.startToolStep(event);\n return;\n case 'tool_end':\n this.completeToolStep(event);\n return;\n case 'iteration':\n this.replaceSingletonStep('iteration', this.buildIterationLabel(event.count, event.max), 'llm');\n return;\n case 'thinking_delta':\n this.ensureSingletonStep('thinking', 'Thinking', 'thinking');\n return;\n case 'text_delta':\n this.ensureSingletonStep('llm', 'Writing response', 'llm');\n return;\n default:\n return;\n }\n }\n\n completeOpenSteps(status: 'done' | 'error'): void {\n for (const stepId of this.activeToolStepIds.values()) {\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status,\n });\n }\n this.activeToolStepIds.clear();\n this.completeSingletonStep('iteration', status);\n this.completeSingletonStep('thinking', status);\n this.completeSingletonStep('llm', status);\n }\n\n private startToolStep(event: Extract<SubagentProgressEvent, { type: 'tool_start' }>): void {\n const stepId = this.nextStepId('tool');\n const { label, detail } = workflowStepLabel(event.toolName, event.args);\n this.activeToolStepIds.set(event.toolCallId, stepId);\n void this.options.appendEvent('agent_step_started', {\n agentId: this.options.agentId,\n stepId,\n label,\n kind: 'tool',\n toolName: event.toolName,\n detail: detail ?? previewWorkflowValue(event.args),\n });\n }\n\n private completeToolStep(event: Extract<SubagentProgressEvent, { type: 'tool_end' }>): void {\n const stepId = this.activeToolStepIds.get(event.toolCallId);\n if (!stepId) return;\n this.activeToolStepIds.delete(event.toolCallId);\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status: event.isError ? 'error' : 'done',\n resultPreview: event.resultPreview,\n error: event.error,\n });\n }\n\n private replaceSingletonStep(\n slot: 'iteration' | 'thinking' | 'llm',\n label: string,\n kind: 'tool' | 'llm' | 'thinking',\n ): void {\n this.completeSingletonStep(slot, 'done');\n this.ensureSingletonStep(slot, label, kind);\n }\n\n private ensureSingletonStep(\n slot: 'iteration' | 'thinking' | 'llm',\n label: string,\n kind: 'tool' | 'llm' | 'thinking',\n ): void {\n if (this.getSingletonStepId(slot)) return;\n const stepId = this.nextStepId(slot);\n this.setSingletonStepId(slot, stepId);\n void this.options.appendEvent('agent_step_started', {\n agentId: this.options.agentId,\n stepId,\n label,\n kind,\n });\n }\n\n private completeSingletonStep(slot: 'iteration' | 'thinking' | 'llm', status: 'done' | 'error'): void {\n const stepId = this.getSingletonStepId(slot);\n if (!stepId) return;\n this.setSingletonStepId(slot, null);\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status,\n });\n }\n\n private getSingletonStepId(slot: 'iteration' | 'thinking' | 'llm'): string | null {\n if (slot === 'iteration') return this.activeIterationStepId;\n if (slot === 'thinking') return this.activeThinkingStepId;\n return this.activeLlmStepId;\n }\n\n private setSingletonStepId(slot: 'iteration' | 'thinking' | 'llm', stepId: string | null): void {\n if (slot === 'iteration') {\n this.activeIterationStepId = stepId;\n return;\n }\n if (slot === 'thinking') {\n this.activeThinkingStepId = stepId;\n return;\n }\n this.activeLlmStepId = stepId;\n }\n\n private buildIterationLabel(count: number, max: number): string {\n if (max > 0) return `Iteration ${count}/${max}`;\n return `Iteration ${count}`;\n }\n\n private nextStepId(kind: string): string {\n this.sequence += 1;\n return `${this.options.agentId}-${kind}-${this.sequence}`;\n }\n}\n\nfunction buildPhaseTitleToId(definition: WorkflowDefinition): Map<string, string> {\n const phaseTitleToId = new Map<string, string>();\n for (const phase of definition.phases) {\n phaseTitleToId.set(phase.title, phase.id);\n }\n return phaseTitleToId;\n}\n\nfunction normalizePhaseId(title: string): string {\n const normalized = title\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return normalized || 'phase';\n}\n\nfunction withWorkflowTimeout<T>(promise: Promise<T>, timeoutSec: number | undefined): Promise<T> {\n if (typeof timeoutSec !== 'number' || !Number.isFinite(timeoutSec) || timeoutSec <= 0) {\n return promise;\n }\n\n let timeout: ReturnType<typeof setTimeout> | undefined;\n const timeoutPromise = new Promise<never>((_resolve, reject) => {\n timeout = setTimeout(() => {\n reject(new Error(`workflow timed out after ${timeoutSec}s`));\n }, timeoutSec * 1000);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(() => {\n if (timeout) clearTimeout(timeout);\n });\n}\n\nfunction throwIfSignalAborted(signal: AbortSignal | undefined): void {\n if (!signal?.aborted) return;\n const reason = signal.reason;\n if (reason instanceof Error) throw reason;\n if (reason) throw new Error(String(reason));\n throw new Error('workflow aborted');\n}\n\nfunction groupReplayTargetsByPhase(targets: WorkflowReplayAgentTarget[]): Array<{\n phaseId?: string;\n phaseTitle?: string;\n targets: WorkflowReplayAgentTarget[];\n}> {\n const groups: Array<{\n key: string;\n phaseId?: string;\n phaseTitle?: string;\n targets: WorkflowReplayAgentTarget[];\n }> = [];\n\n for (const target of targets) {\n const key = target.phaseId ?? '';\n let group = groups.find((item) => item.key === key);\n if (!group) {\n group = {\n key,\n phaseId: target.phaseId,\n phaseTitle: target.phaseTitle,\n targets: [],\n };\n groups.push(group);\n }\n group.targets.push(target);\n }\n\n return groups.map(({ key: _key, ...group }) => group);\n}\n\nfunction buildReplayResultEnvelope(\n options: StartWorkflowReplayRunOptions,\n results: WorkflowReplayTargetResult[],\n): WorkflowResultEnvelope {\n const done = results.filter((item) => item.status === 'done').length;\n return {\n summary: `Replay completed for ${done}/${results.length} target${results.length === 1 ? '' : 's'}.`,\n sections: [\n {\n kind: 'json',\n title: 'Replay targets',\n value: {\n sourceRunId: options.sourceRunId,\n scope: options.replayScope,\n targets: results,\n },\n },\n ],\n structuredOutput: {\n replay: {\n sourceRunId: options.sourceRunId,\n scope: options.replayScope,\n targets: results,\n },\n },\n };\n}\n\nfunction normalizeReplayInvocation(target: WorkflowReplayAgentTarget): WorkflowAgentInvocationSnapshot {\n return {\n prompt: target.invocation?.prompt ?? target.prompt,\n label: target.invocation?.label ?? target.label,\n phase: target.invocation?.phase ?? target.phaseTitle,\n modelRef: target.invocation?.modelRef,\n resolvedModelRef: target.invocation?.resolvedModelRef,\n schema: target.invocation?.schema,\n toolset: target.invocation?.toolset ? [...target.invocation.toolset] : undefined,\n maxIterations: target.invocation?.maxIterations,\n };\n}\n\nfunction resolveReplayModel(\n invocation: WorkflowAgentInvocationSnapshot,\n resolveModelId: ((modelId: string) => Model<Api>) | undefined,\n): Model<Api> | undefined {\n const modelRef = invocation.resolvedModelRef ?? invocation.modelRef;\n if (!modelRef) return undefined;\n if (!resolveModelId) {\n throw new Error(`workflow replay missing resolveModelId; cannot resolve model '${modelRef}'`);\n }\n return resolveModelId(modelRef);\n}\n\nfunction formatRuntimeAgentId(id: number): string {\n return `agent-${id}`;\n}\n\nfunction defaultSubagentSessionKey(runId: string, agentId: string): string {\n return `workflow:${runId}:subagent:${agentId}`;\n}\n\nfunction normalizeCompletedAgentStatus(status: string): 'done' | 'error' | 'skipped' {\n if (status === 'done' || status === 'error' || status === 'skipped') {\n return status;\n }\n return 'error';\n}\n\nfunction previewWorkflowValue(value: unknown): string | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === 'string') {\n return truncate(value, 300);\n }\n try {\n return truncate(JSON.stringify(value), 300);\n } catch {\n return truncate(String(value), 300);\n }\n}\n\nfunction truncate(value: string, maxLength: number): string {\n const trimmed = value.trim();\n if (trimmed.length <= maxLength) {\n return trimmed;\n }\n return `${trimmed.slice(0, maxLength - 1)}…`;\n}\n\nfunction assertWorkflowOutput(definition: WorkflowDefinition, value: unknown): void {\n const validation = validateWorkflowJsonSchema(definition.outputSchema, value);\n if (validation.ok) return;\n throw new WorkflowEngineRunError(\n 'result_validation_failed',\n validation.message ?? 'Workflow result did not match output schema',\n false,\n JSON.stringify(validation.errors ?? []),\n );\n}\n\nfunction isWorkflowResultEnvelope(value: unknown): value is WorkflowResultEnvelope {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const record = value as Partial<WorkflowResultEnvelope>;\n return typeof record.summary === 'string' && Array.isArray(record.sections);\n}\n\nfunction requireWorkflowResultEnvelope(value: unknown): WorkflowResultEnvelope {\n if (isWorkflowResultEnvelope(value)) {\n return value;\n }\n throw new WorkflowEngineRunError(\n 'result_validation_failed',\n 'Workflow output node must return a result envelope with summary and sections.',\n false,\n );\n}\n\nfunction toWorkflowRunError(err: unknown, wasAborted: boolean, abortReason?: unknown): WorkflowRunError {\n if (err instanceof WorkflowEngineRunError) {\n return {\n code: err.code,\n message: err.message,\n detail: err.detail,\n recoverable: err.recoverable,\n };\n }\n const abortMessage = abortReason instanceof Error ? abortReason.message : abortReason ? String(abortReason) : '';\n const message = abortMessage || (err instanceof Error ? err.message : String(err));\n if (/timeout|timed out/i.test(message)) {\n return {\n code: 'timeout',\n message,\n recoverable: true,\n };\n }\n if (wasAborted || /aborted|cancelled/i.test(message)) {\n return {\n code: 'cancelled',\n message: message || 'Workflow run cancelled',\n recoverable: true,\n };\n }\n if (/quota/i.test(message)) {\n return {\n code: 'agent_quota_exceeded',\n message,\n recoverable: true,\n };\n }\n return {\n code: 'runtime_error',\n message,\n recoverable: false,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"catalog-workflow-definition-registry.js","names":[],"sources":["../../../../src/workflows/registry/catalog-workflow-definition-registry.ts"],"sourcesContent":["import { createWorkflowCatalog, type WorkflowCatalog } from '../../agent/workflow/catalog.js';\nimport type { WorkflowDefinition } from '../domain/definition.js';\nimport type { WorkflowDefinitionRegistry, WorkflowDefinitionSummary } from './workflow-definition-registry.js';\n\nexport class CatalogWorkflowDefinitionRegistry implements WorkflowDefinitionRegistry {\n constructor(private readonly catalog: WorkflowCatalog = createWorkflowCatalog()) {}\n\n async list(): Promise<WorkflowDefinitionSummary[]> {\n return this.catalog.list().map((entry) => ({\n id: entry.name,\n name: entry.name,\n title: entry.title ?? toTitle(entry.name),\n description: entry.description,\n source: entry.source,\n tags: entry.tags,\n whenToUse: entry.whenToUse,\n }));\n }\n\n async get(id: string): Promise<WorkflowDefinition | null> {\n try {\n return this.catalog.load(id);\n } catch {\n return null;\n }\n }\n}\n\nfunction toTitle(value: string): string {\n return value\n .split(/[_-]+/g)\n .filter(Boolean)\n .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n .join(' ');\n}\n"],"mappings":";;AAIA,IAAa,oCAAb,MAAqF;CACnF,YAAY,UAA4C,uBAAuB,EAAE;AAApD,OAAA,UAAA;;CAE7B,MAAM,OAA6C;AACjD,SAAO,KAAK,QAAQ,MAAM,CAAC,KAAK,WAAW;GACzC,IAAI,MAAM;GACV,MAAM,MAAM;GACZ,OAAO,MAAM,SAAS,QAAQ,MAAM,KAAK;GACzC,aAAa,MAAM;GACnB,QAAQ,MAAM;GACd,MAAM,MAAM;GACZ,WAAW,MAAM;GAClB,EAAE;;CAGL,MAAM,IAAI,IAAgD;AACxD,MAAI;AACF,UAAO,KAAK,QAAQ,KAAK,GAAG;UACtB;AACN,UAAO;;;;AAKb,SAAS,QAAQ,OAAuB;AACtC,QAAO,MACJ,MAAM,SAAS,CACf,OAAO,QAAQ,CACf,KAAK,SAAS,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,GAAG,CAClE,KAAK,IAAI"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"graph-workflow-runtime.js","names":[],"sources":["../../../../src/workflows/runtime/graph-workflow-runtime.ts"],"sourcesContent":["import { availableParallelism } from 'node:os';\n\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport type {\n WorkflowAgentNode,\n WorkflowDecisionNode,\n WorkflowGraph,\n WorkflowGraphEdge,\n WorkflowGraphNode,\n} from '../domain/definition.js';\nimport { validateWorkflowGraph } from '../domain/validation.js';\n\nimport type { WorkflowAgentInvocationSnapshot, WorkflowAgentStatus } from '../../agent/workflow/types.js';\nimport type {\n WorkflowRuntime,\n WorkflowRuntimeDeps,\n WorkflowRuntimeRunOptions,\n WorkflowRuntimeRunResult,\n} from './workflow-runtime-port.js';\n\nconst MAX_CONCURRENCY = 16;\n\nexport class GraphWorkflowRuntime implements WorkflowRuntime {\n async run<T = unknown>(\n graph: WorkflowGraph,\n deps: WorkflowRuntimeDeps,\n options: WorkflowRuntimeRunOptions,\n ): Promise<WorkflowRuntimeRunResult<T>> {\n const startedAtMs = Date.now();\n const validation = validateWorkflowGraph(graph);\n if (!validation.valid) throw new Error(validation.errors.map((issue) => issue.message).join(' '));\n\n const nodes = new Map(graph.nodes.map((node) => [node.id, node]));\n const incoming = indexEdges(graph.edges, 'target');\n const pending = new Set(graph.nodes.map((node) => node.id));\n const completed = new Set<string>();\n const skipped = new Set<string>();\n const outputs = new Map<string, unknown>();\n const decisions = new Map<string, boolean>();\n const logs: string[] = [];\n const phases: string[] = [];\n let currentPhase: string | undefined;\n let agentCount = 0;\n const maxSubagents = Math.max(1, options.maxSubagents ?? 100);\n const limiter = createLimiter(resolveConcurrency(options.concurrency));\n\n const throwIfAborted = () => {\n if (!options.signal?.aborted) return;\n const reason = options.signal.reason;\n throw reason instanceof Error ? reason : new Error(reason ? String(reason) : 'workflow aborted');\n };\n\n while (pending.size > 0) {\n throwIfAborted();\n let progressed = false;\n\n for (const nodeId of [...pending]) {\n const edges = incoming.get(nodeId) ?? [];\n if (edges.length === 0 || !edges.every((edge) => completed.has(edge.source) || skipped.has(edge.source))) continue;\n if (edges.some((edge) => !skipped.has(edge.source) && isActiveEdge(edge, nodes, decisions))) continue;\n pending.delete(nodeId);\n skipped.add(nodeId);\n const skippedNode = nodes.get(nodeId)!;\n options.onNodeEnd?.({ nodeId, kind: skippedNode.kind, title: skippedNode.title, status: 'skipped' });\n progressed = true;\n }\n\n const ready = [...pending]\n .map((id) => nodes.get(id)!)\n .filter((node) => {\n const edges = incoming.get(node.id) ?? [];\n if (edges.length === 0) return node.kind === 'input';\n const active = edges.filter((edge) => !skipped.has(edge.source) && isActiveEdge(edge, nodes, decisions));\n return active.length > 0 && active.every((edge) => completed.has(edge.source));\n });\n\n if (ready.length === 0) {\n if (progressed) continue;\n throw new Error('workflow graph stalled before all nodes could run');\n }\n\n await Promise.all(ready.map((node) => limiter(async () => {\n throwIfAborted();\n options.onNodeStart?.({ nodeId: node.id, kind: node.kind, title: node.title });\n try {\n if (node.phaseId && node.phaseId !== currentPhase) {\n currentPhase = node.phaseId;\n if (!phases.includes(node.phaseId)) phases.push(node.phaseId);\n options.onPhase?.(node.phaseId);\n }\n\n const predecessors = (incoming.get(node.id) ?? [])\n .filter((edge) => !skipped.has(edge.source) && isActiveEdge(edge, nodes, decisions))\n .map((edge) => ({ id: edge.source, value: outputs.get(edge.source) }));\n let value: unknown;\n if (node.kind === 'input') {\n value = options.args ?? {};\n } else if (node.kind === 'agent') {\n if (agentCount >= maxSubagents) throw new Error(`workflow agent quota exhausted (max ${maxSubagents})`);\n agentCount += 1;\n value = await runAgentNode({\n id: agentCount,\n node,\n deps,\n options,\n outputs,\n predecessors,\n goal: options.goal,\n signal: options.signal,\n });\n } else if (node.kind === 'decision') {\n const candidate = predecessors.at(-1)?.value;\n const result = evaluateDecision(node, candidate);\n decisions.set(node.id, result);\n value = { result, input: candidate };\n } else if (node.kind === 'merge') {\n value = node.config.mode === 'array'\n ? predecessors.map((entry) => entry.value)\n : Object.fromEntries(predecessors.map((entry) => [entry.id, entry.value]));\n } else {\n const structuredOutput = predecessors.length === 1\n ? predecessors[0].value\n : Object.fromEntries(predecessors.map((entry) => [entry.id, entry.value]));\n const summary = node.config.summary\n ? renderTemplate(node.config.summary, options.args, outputs, predecessors, options.goal)\n : summarizeValue(structuredOutput);\n value = {\n summary,\n sections: [{ kind: 'json', title: node.config.title ?? 'Workflow result', value: structuredOutput }],\n structuredOutput,\n };\n }\n outputs.set(node.id, value);\n pending.delete(node.id);\n completed.add(node.id);\n options.onNodeEnd?.({ nodeId: node.id, kind: node.kind, title: node.title, status: 'done', result: value });\n } catch (error) {\n options.onNodeEnd?.({\n nodeId: node.id,\n kind: node.kind,\n title: node.title,\n status: options.signal?.aborted ? 'skipped' : 'error',\n error: error instanceof Error ? error.message : String(error),\n });\n throw error;\n }\n })));\n }\n\n const outputNode = graph.nodes.find((node) => node.kind === 'output');\n return {\n result: outputs.get(outputNode!.id) as T,\n logs,\n phases,\n agentCount,\n durationMs: Date.now() - startedAtMs,\n };\n }\n}\n\nexport function createGraphWorkflowRuntime(): WorkflowRuntime {\n return new GraphWorkflowRuntime();\n}\n\nasync function runAgentNode(params: {\n id: number;\n node: WorkflowAgentNode;\n deps: WorkflowRuntimeDeps;\n options: WorkflowRuntimeRunOptions;\n outputs: Map<string, unknown>;\n predecessors: Array<{ id: string; value: unknown }>;\n goal?: string;\n signal?: AbortSignal;\n}): Promise<unknown> {\n const { node } = params;\n const prompt = renderTemplate(node.config.prompt, params.options.args, params.outputs, params.predecessors, params.goal);\n const model = resolveModel(node.config.model, params.deps.resolveModelId);\n const invocation: WorkflowAgentInvocationSnapshot = {\n nodeId: node.id,\n prompt,\n label: node.title,\n phase: node.phaseId,\n modelRef: node.config.model,\n resolvedModelRef: model ? `${model.provider}/${model.id}` : undefined,\n schema: node.config.outputSchema,\n toolset: node.config.toolset,\n maxIterations: node.config.maxIterations,\n };\n params.options.onAgentQueued?.({ id: params.id, nodeId: node.id, label: node.title, phase: node.phaseId, prompt, invocation });\n params.options.onAgentStart?.({ id: params.id, nodeId: node.id, label: node.title, phase: node.phaseId, prompt });\n try {\n const enhanced = params.options.enhanceSubagentRun?.({ id: params.id, nodeId: node.id, label: node.title, phase: node.phaseId, prompt });\n const result = await params.deps.runner.run(prompt, {\n label: node.title,\n schema: node.config.outputSchema,\n allowedToolNames: node.config.toolset,\n maxIterations: node.config.maxIterations,\n model,\n phase: node.phaseId,\n signal: params.signal,\n ...enhanced,\n });\n if (result === null) throw new Error(`workflow node '${node.title}' did not return a result`);\n const status: WorkflowAgentStatus = 'done';\n params.options.onAgentEnd?.({ id: params.id, nodeId: node.id, label: node.title, phase: node.phaseId, result, status });\n return result;\n } catch (error) {\n const status: WorkflowAgentStatus = params.signal?.aborted ? 'skipped' : 'error';\n params.options.onAgentEnd?.({ id: params.id, nodeId: node.id, label: node.title, phase: node.phaseId, result: null, status });\n throw error;\n }\n}\n\nfunction resolveModel(modelRef: string | undefined, resolver: WorkflowRuntimeDeps['resolveModelId']): Model<Api> | undefined {\n if (!modelRef) return undefined;\n if (!resolver) throw new Error('workflow runtime cannot resolve the selected model');\n return resolver(modelRef);\n}\n\nexport function renderWorkflowTemplate(\n template: string,\n input: unknown,\n outputs: Map<string, unknown>,\n predecessors: Array<{ id: string; value: unknown }>,\n goal?: string,\n): string {\n return renderTemplate(template, input, outputs, predecessors, goal);\n}\n\nfunction renderTemplate(template: string, input: unknown, outputs: Map<string, unknown>, predecessors: Array<{ id: string; value: unknown }>, goal?: string): string {\n const context = { input, goal, nodes: Object.fromEntries(outputs), predecessors: Object.fromEntries(predecessors.map((entry) => [entry.id, entry.value])) };\n return template.replace(/\\{\\{\\s*([^}]+?)\\s*\\}\\}/g, (_match, path: string) => stringifyTemplateValue(readPath(context, path)));\n}\n\nfunction readPath(value: unknown, path: string): unknown {\n return path.split('.').reduce<unknown>((current, key) => {\n if (current === null || typeof current !== 'object') return undefined;\n return (current as Record<string, unknown>)[key];\n }, value);\n}\n\nfunction stringifyTemplateValue(value: unknown): string {\n if (value === undefined || value === null) return '';\n if (typeof value === 'string') return value;\n return JSON.stringify(value, null, 2);\n}\n\nfunction evaluateDecision(node: WorkflowDecisionNode, value: unknown): boolean {\n const candidate = node.config.rule.path ? readPath(value, node.config.rule.path) : value;\n if (node.config.rule.operator === 'exists') return candidate !== undefined && candidate !== null;\n if (node.config.rule.operator === 'equals') return Object.is(candidate, node.config.rule.value);\n if (node.config.rule.operator === 'not_equals') return !Object.is(candidate, node.config.rule.value);\n return Array.isArray(candidate) ? candidate.includes(node.config.rule.value) : String(candidate ?? '').includes(String(node.config.rule.value ?? ''));\n}\n\nfunction isActiveEdge(edge: WorkflowGraphEdge, nodes: Map<string, WorkflowGraphNode>, decisions: Map<string, boolean>): boolean {\n if (nodes.get(edge.source)?.kind !== 'decision') return true;\n if (!decisions.has(edge.source)) return false;\n if (!edge.sourcePort || edge.sourcePort === 'default') return true;\n return edge.sourcePort === (decisions.get(edge.source) ? 'true' : 'false');\n}\n\nfunction indexEdges(edges: WorkflowGraphEdge[], field: 'source' | 'target'): Map<string, WorkflowGraphEdge[]> {\n const result = new Map<string, WorkflowGraphEdge[]>();\n for (const edge of edges) result.set(edge[field], [...(result.get(edge[field]) ?? []), edge]);\n return result;\n}\n\nfunction resolveConcurrency(requested?: number): number {\n if (requested && Number.isFinite(requested)) return Math.max(1, Math.min(MAX_CONCURRENCY, Math.floor(requested)));\n return Math.max(1, Math.min(MAX_CONCURRENCY, availableParallelism() - 2));\n}\n\nfunction createLimiter(limit: number) {\n let active = 0;\n const queue: Array<() => void> = [];\n return async <T>(work: () => Promise<T>): Promise<T> => {\n if (active >= limit) await new Promise<void>((resolve) => queue.push(resolve));\n active += 1;\n try { return await work(); } finally { active -= 1; queue.shift()?.(); }\n };\n}\n\nfunction summarizeValue(value: unknown): string {\n if (typeof value === 'string') return value.slice(0, 500);\n if (value && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n for (const key of ['summary', 'executiveSummary', 'result', 'answer']) {\n if (typeof record[key] === 'string') return record[key].slice(0, 500);\n }\n }\n return 'Workflow completed.';\n}\n"],"mappings":"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"}
|