@xopcai/xopc 0.0.142 → 0.0.143
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 +1 -1
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/activity-center-store-jITiX2vJ.js +1 -0
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-BawPxiu5.js → agent-avatar-dicebear-DiME9u_P.js} +1 -1
- package/dist/gateway/static/root/assets/agents-DzBXhZXO.js +2 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-81xd1p9R.js → app-management-settings-panel-Cuo7SbUP.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-DYeQsYU8.js → appearance-settings-DUfdNQqk.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-CKuKK5AU.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-D_oa7oti.js → archive-plugin-B-Qk6cGr.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-Cd-bwI2N.js → attachment-load-Di6EEbQX.js} +1 -1
- package/dist/gateway/static/root/assets/automation-suggestion-card-DGxvRxtO.js +1 -0
- package/dist/gateway/static/root/assets/automations-page-D-FF_WKV.js +4 -0
- package/dist/gateway/static/root/assets/{binary-plugins-O8svLKWw.js → binary-plugins-ZaOZDH2I.js} +1 -1
- package/dist/gateway/static/root/assets/block-editor-BTFhjWfg.js +184 -0
- package/dist/gateway/static/root/assets/browser-settings-page-BvKLdEQt.js +8 -0
- package/dist/gateway/static/root/assets/{capability-presets-api-dJy1Eqgx.js → capability-presets-api-BU-pVZiZ.js} +1 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-DgyeEwzh.js +2 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-Bfuhp2ty.js → channel-recipient-api-DuulnhIj.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BbVsdD_I.js +1 -0
- package/dist/gateway/static/root/assets/channels-status-swr-B5lVrUsN.js +1 -0
- package/dist/gateway/static/root/assets/check-BODqo66o.js +1 -0
- package/dist/gateway/static/root/assets/chunk-QUQL4437-DXsxWP7r.js +4 -0
- package/dist/gateway/static/root/assets/circle-alert-RzVebuX2.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-B8QqVy3I.js +2 -0
- package/dist/gateway/static/root/assets/{desktop-pet-DFMfIb5F.js → desktop-pet---yzVxVR.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-Dc3gqBJE.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BrYt1gAr.js → directory-picker-path-field-DCmOGLtK.js} +1 -1
- package/dist/gateway/static/root/assets/dreaming-settings-BgT5KZVe.js +3 -0
- package/dist/gateway/static/root/assets/{extension-debug-page-Bh630pLD.js → extension-debug-page-ByaKTTq4.js} +1 -1
- package/dist/gateway/static/root/assets/extension-page-BmRzHAZr.js +1 -0
- package/dist/gateway/static/root/assets/extension-settings-page-JUtwIhbF.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-B1WtuprY.js → fetch-8QNN25Sh.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-De2N821l.js → gateway-config-api-CxicF50_.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-Bz2I_EO5.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-nEujFSDj.js → gateway-startup-retry-5YBnS9Fj.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-VcoyuZGN.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-Cilkap2G.js +4 -0
- package/dist/gateway/static/root/assets/{goals-config-api-DUy3eEse.js → goals-config-api-CwcHRdC0.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-C6eoni4z.js +2 -0
- package/dist/gateway/static/root/assets/goals-settings-o4i-qAOS.js +1 -0
- package/dist/gateway/static/root/assets/heartbeat-settings-DQQkETX8.js +1 -0
- package/dist/gateway/static/root/assets/index-BKRqeRHm.js +257 -0
- package/dist/gateway/static/root/assets/index-CphxClbs.css +1 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CVIwwM15.js → keyboard-shortcuts-settings-LT6qB-ua.js} +1 -1
- package/dist/gateway/static/root/assets/logs-page-Dli2e3fS.js +7 -0
- package/dist/gateway/static/root/assets/{markdown-split-B_6us9j7.js → markdown-split-Dw-yE2-y.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-D_fryIyj.js → media-plugins-D9NNNUgE.js} +1 -1
- package/dist/gateway/static/root/assets/messages-CzKxM6I4.js +5 -0
- package/dist/gateway/static/root/assets/models-hub-panel-DVn2Q1Ik.js +2 -0
- package/dist/gateway/static/root/assets/notes-page-CRgbJGgk.js +1 -0
- package/dist/gateway/static/root/assets/notes-workbench-BxZRHLWx.js +2 -0
- package/dist/gateway/static/root/assets/{page-tabs-D_8jGlqx.js → page-tabs-D4hkWVt_.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-BBLMK8Mp.js → preview-open-alternatives-CIckv0uy.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-Doz53xLn.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-DoMtcRLg.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-BeHVEgrm.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-DVS3FR5r.js → save-bar-controls-B0b42kB2.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-D6vKd6-T.js → schedule-field-BtjEkczK.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-BPy4lbIh.js → schema-form-Bf0bk3i6.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-Bk4bQsBe.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DdFyaRMm.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-WzdikxPt.js → settings-collapsible-section-BTKTdTNX.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-form-section-CvfzhBV-.js → settings-form-section-DL4P0sAj.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-loading-skeleton-BxR-Ulhi.js → settings-loading-skeleton-BV6KFNj4.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-B_4DsX5W.js +1 -0
- package/dist/gateway/static/root/assets/{settings-page-layout-CKefvbYi.js → settings-page-layout-CyGlrInB.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-DJ1_MLgX.js +1 -0
- package/dist/gateway/static/root/assets/share-preview-page-BQBV7YrV.js +2 -0
- package/dist/gateway/static/root/assets/shares-settings-0VuFLBeU.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-DO87Ckeo.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-D3VdtxAn.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-BokgAgf7.js → system-settings-panel-D85fBBuI.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-BwHlNL3L.js → typed-models-lib-CwEuYrHX.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-DR11ap3A.js → use-channel-catalog-COXIfXcl.js} +1 -1
- package/dist/gateway/static/root/assets/user-context-page-m9JVQ73F.js +1 -0
- package/dist/gateway/static/root/assets/user-profile-fields-editor-DtQiuY7E.js +1 -0
- package/dist/gateway/static/root/assets/user-profile-settings-panel-CWM0fEpb.js +1 -0
- package/dist/gateway/static/root/assets/{utils-BKUWB-TT.js → utils--BO6xT3u.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-LoT3wgZ9.js +1 -0
- package/dist/gateway/static/root/assets/with-selector-aYPsXwdl.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-DSTMz_mO.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-run-setup-panel-CL_rnAUB.js → workflow-run-setup-panel-B35lJzvm.js} +2 -2
- package/dist/gateway/static/root/assets/workflows-page-BfSm9oR8.js +11 -0
- package/dist/gateway/static/root/assets/workflows-page-DLioOiRN.css +1 -0
- package/dist/gateway/static/root/connector-icons/README.md +11 -0
- package/dist/gateway/static/root/connector-icons/airtable.svg +13 -0
- package/dist/gateway/static/root/connector-icons/asana.svg +15 -0
- package/dist/gateway/static/root/connector-icons/brave-search.svg +1 -0
- package/dist/gateway/static/root/connector-icons/clickup.svg +19 -0
- package/dist/gateway/static/root/connector-icons/composio.svg +266 -0
- package/dist/gateway/static/root/connector-icons/discord.svg +15 -0
- package/dist/gateway/static/root/connector-icons/dropbox.svg +152 -0
- package/dist/gateway/static/root/connector-icons/excel.svg +56 -0
- package/dist/gateway/static/root/connector-icons/fetch.svg +6 -0
- package/dist/gateway/static/root/connector-icons/figma.svg +178 -0
- package/dist/gateway/static/root/connector-icons/filesystem.svg +6 -0
- package/dist/gateway/static/root/connector-icons/github.svg +10 -0
- package/dist/gateway/static/root/connector-icons/gmail.svg +3 -0
- package/dist/gateway/static/root/connector-icons/google-calendar.svg +3 -0
- package/dist/gateway/static/root/connector-icons/google-docs.svg +25 -0
- package/dist/gateway/static/root/connector-icons/google-drive.svg +25 -0
- package/dist/gateway/static/root/connector-icons/google-sheets.svg +1 -0
- package/dist/gateway/static/root/connector-icons/hubspot.svg +142 -0
- package/dist/gateway/static/root/connector-icons/jira.svg +15 -0
- package/dist/gateway/static/root/connector-icons/linear.svg +5 -0
- package/dist/gateway/static/root/connector-icons/memory.svg +5 -0
- package/dist/gateway/static/root/connector-icons/microsoft-teams.svg +33 -0
- package/dist/gateway/static/root/connector-icons/notion.svg +5 -0
- package/dist/gateway/static/root/connector-icons/one-drive.svg +13 -0
- package/dist/gateway/static/root/connector-icons/outlook.svg +76 -0
- package/dist/gateway/static/root/connector-icons/playwright.svg +9 -0
- package/dist/gateway/static/root/connector-icons/salesforce.svg +17 -0
- package/dist/gateway/static/root/connector-icons/sequential-thinking.svg +8 -0
- package/dist/gateway/static/root/connector-icons/shopify.svg +5 -0
- package/dist/gateway/static/root/connector-icons/slack.svg +9 -0
- package/dist/gateway/static/root/connector-icons/spotify.svg +43 -0
- package/dist/gateway/static/root/connector-icons/stripe.svg +11 -0
- package/dist/gateway/static/root/connector-icons/telegram.svg +130 -0
- package/dist/gateway/static/root/connector-icons/time.svg +6 -0
- package/dist/gateway/static/root/connector-icons/todoist.svg +277 -0
- package/dist/gateway/static/root/connector-icons/trello.svg +19 -0
- package/dist/gateway/static/root/connector-icons/twitter.svg +128 -0
- package/dist/gateway/static/root/connector-icons/whatsapp.svg +61 -0
- package/dist/gateway/static/root/connector-icons/youtube.svg +11 -0
- package/dist/gateway/static/root/index.html +9 -6
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +2 -0
- package/dist/src/agent/agent-manager.js +8 -0
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/background-review/prompts.d.ts +1 -1
- package/dist/src/agent/background-review/prompts.js +3 -2
- package/dist/src/agent/background-review/prompts.js.map +1 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
- package/dist/src/agent/embedded/xopc-tools-bridge.d.ts +9 -0
- package/dist/src/agent/embedded/xopc-tools-bridge.js +71 -3
- package/dist/src/agent/embedded/xopc-tools-bridge.js.map +1 -1
- package/dist/src/agent/goals/post-turn.js +5 -4
- package/dist/src/agent/goals/post-turn.js.map +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +4 -1
- package/dist/src/agent/mcp/mcp-transport.js.map +1 -1
- package/dist/src/agent/memory/context/planner.d.ts +1 -0
- package/dist/src/agent/memory/context/planner.js +60 -14
- package/dist/src/agent/memory/context/planner.js.map +1 -1
- package/dist/src/agent/memory/context/types.d.ts +3 -1
- package/dist/src/agent/memory/lifecycle.d.ts +11 -0
- package/dist/src/agent/memory/lifecycle.js +50 -0
- package/dist/src/agent/memory/lifecycle.js.map +1 -0
- package/dist/src/agent/memory/source-origin.d.ts +3 -0
- package/dist/src/agent/memory/source-origin.js +19 -0
- package/dist/src/agent/memory/source-origin.js.map +1 -0
- package/dist/src/agent/memory/understanding/service.js +5 -0
- package/dist/src/agent/memory/understanding/service.js.map +1 -1
- package/dist/src/agent/memory/user-context-coordinator.js +7 -2
- package/dist/src/agent/memory/user-context-coordinator.js.map +1 -1
- package/dist/src/agent/prompt/sections/behavior.d.ts +2 -0
- package/dist/src/agent/prompt/sections/behavior.js +30 -1
- package/dist/src/agent/prompt/sections/behavior.js.map +1 -1
- package/dist/src/agent/prompt/sections/tooling.js +1 -1
- package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
- package/dist/src/agent/prompt/service-prompt-builder.js +8 -1
- package/dist/src/agent/prompt/service-prompt-builder.js.map +1 -1
- package/dist/src/agent/prompt/system-prompt.d.ts +2 -0
- package/dist/src/agent/prompt/system-prompt.js +6 -3
- package/dist/src/agent/prompt/system-prompt.js.map +1 -1
- package/dist/src/agent/service/process-direct-streaming.js +22 -0
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service.d.ts +2 -0
- package/dist/src/agent/service.js +9 -3
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/starter-agents.js +1 -1
- package/dist/src/agent/starter-agents.js.map +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.js.map +1 -1
- package/dist/src/agent/tools/composio-tool.d.ts +18 -5
- package/dist/src/agent/tools/composio-tool.js +252 -35
- package/dist/src/agent/tools/composio-tool.js.map +1 -1
- package/dist/src/agent/tools/factory.js +7 -3
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -1
- package/dist/src/agent/tools/index.js +2 -2
- package/dist/src/agent/tools/workflow-tool.d.ts +0 -1
- package/dist/src/agent/tools/workflow-tool.js +3 -16
- package/dist/src/agent/tools/workflow-tool.js.map +1 -1
- package/dist/src/agent/workflow/builtins/index.d.ts +2 -28
- package/dist/src/agent/workflow/builtins/index.js +226 -41
- package/dist/src/agent/workflow/builtins/index.js.map +1 -1
- package/dist/src/agent/workflow/catalog.d.ts +32 -34
- package/dist/src/agent/workflow/catalog.js +158 -154
- package/dist/src/agent/workflow/catalog.js.map +1 -1
- package/dist/src/agent/workflow/index.d.ts +4 -6
- package/dist/src/agent/workflow/index.js +2 -5
- package/dist/src/agent/workflow/snapshot.d.ts +2 -2
- package/dist/src/agent/workflow/snapshot.js +2 -2
- package/dist/src/agent/workflow/snapshot.js.map +1 -1
- package/dist/src/agent/workflow/structured-output-tool.d.ts +2 -2
- package/dist/src/agent/workflow/structured-output-tool.js +2 -2
- package/dist/src/agent/workflow/structured-output-tool.js.map +1 -1
- package/dist/src/agent/workflow/subagent-runner.js +1 -1
- package/dist/src/agent/workflow/types.d.ts +31 -26
- package/dist/src/agent-manifest/index.d.ts +1 -0
- package/dist/src/agent-manifest/index.js +3 -1
- package/dist/src/agent-manifest/index.js.map +1 -1
- package/dist/src/agent-manifest/preset-chain.d.ts +10 -0
- package/dist/src/agent-manifest/preset-chain.js +32 -0
- package/dist/src/agent-manifest/preset-chain.js.map +1 -0
- package/dist/src/agent-manifest/resolver.js +3 -10
- package/dist/src/agent-manifest/resolver.js.map +1 -1
- package/dist/src/agent-manifest/schema.d.ts +4 -4
- package/dist/src/automations/api/routes.js +13 -1
- package/dist/src/automations/api/routes.js.map +1 -1
- package/dist/src/automations/domain/validation.d.ts +14 -14
- package/dist/src/automations/draft/automation-draft-validator.d.ts +3 -3
- package/dist/src/browser/providers/browser-ext-install.d.ts +11 -1
- package/dist/src/browser/providers/browser-ext-install.js +39 -14
- package/dist/src/browser/providers/browser-ext-install.js.map +1 -1
- package/dist/src/capabilities/store-connector.d.ts +0 -1
- package/dist/src/capabilities/store-connector.js +3 -5
- package/dist/src/capabilities/store-connector.js.map +1 -1
- package/dist/src/chat-commands/builtins/review.js +72 -73
- package/dist/src/chat-commands/builtins/review.js.map +1 -1
- package/dist/src/chat-commands/builtins/workflow.js +9 -54
- package/dist/src/chat-commands/builtins/workflow.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/extension-create.js +2 -2
- package/dist/src/cli/commands/extension-create.js.map +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +42 -36
- package/dist/src/cli/commands/extension-marketplace.js.map +1 -1
- package/dist/src/cli/commands/extension-pack.d.ts +6 -0
- package/dist/src/cli/commands/extension-pack.js +3 -2
- package/dist/src/cli/commands/extension-pack.js.map +1 -1
- package/dist/src/commands/agents.config.d.ts +1 -0
- package/dist/src/commands/agents.config.js +1 -0
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/schema.d.ts +6 -6
- package/dist/src/config/schema.js +6 -22
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/web-patch.d.ts +1 -1
- package/dist/src/connectors/approval.d.ts +2 -0
- package/dist/src/connectors/approval.js +33 -0
- package/dist/src/connectors/approval.js.map +1 -0
- package/dist/src/connectors/auth-provider-registry.d.ts +9 -0
- package/dist/src/connectors/auth-provider-registry.js +17 -0
- package/dist/src/connectors/auth-provider-registry.js.map +1 -0
- package/dist/src/connectors/builtin-catalog.js +55 -116
- package/dist/src/connectors/builtin-catalog.js.map +1 -1
- package/dist/src/connectors/catalog.js +7 -2
- package/dist/src/connectors/catalog.js.map +1 -1
- package/dist/src/connectors/composio-catalog.d.ts +19 -0
- package/dist/src/connectors/composio-catalog.js +237 -0
- package/dist/src/connectors/composio-catalog.js.map +1 -0
- package/dist/src/connectors/composio-logo.d.ts +1 -0
- package/dist/src/connectors/composio-logo.js +51 -0
- package/dist/src/connectors/composio-logo.js.map +1 -0
- package/dist/src/connectors/composio-sessions.d.ts +116 -0
- package/dist/src/connectors/composio-sessions.js +296 -0
- package/dist/src/connectors/composio-sessions.js.map +1 -0
- package/dist/src/connectors/composio-triggers.d.ts +17 -0
- package/dist/src/connectors/composio-triggers.js +48 -5
- package/dist/src/connectors/composio-triggers.js.map +1 -1
- package/dist/src/connectors/composio.d.ts +31 -2
- package/dist/src/connectors/composio.js +374 -151
- package/dist/src/connectors/composio.js.map +1 -1
- package/dist/src/connectors/connector-memory-sync.d.ts +15 -0
- package/dist/src/connectors/connector-memory-sync.js +90 -0
- package/dist/src/connectors/connector-memory-sync.js.map +1 -0
- package/dist/src/connectors/install.js +35 -92
- package/dist/src/connectors/install.js.map +1 -1
- package/dist/src/connectors/instances.js +6 -2
- package/dist/src/connectors/instances.js.map +1 -1
- package/dist/src/connectors/integration-strategy.d.ts +3 -0
- package/dist/src/connectors/integration-strategy.js +29 -0
- package/dist/src/connectors/integration-strategy.js.map +1 -0
- package/dist/src/connectors/policy.d.ts +13 -0
- package/dist/src/connectors/policy.js +48 -0
- package/dist/src/connectors/policy.js.map +1 -0
- package/dist/src/connectors/providers.js +1 -1
- package/dist/src/connectors/runtime-adapter-registry.d.ts +25 -0
- package/dist/src/connectors/runtime-adapter-registry.js +154 -0
- package/dist/src/connectors/runtime-adapter-registry.js.map +1 -0
- package/dist/src/connectors/types.d.ts +113 -4
- package/dist/src/connectors/workflow-preflight.d.ts +20 -0
- package/dist/src/connectors/workflow-preflight.js +70 -0
- package/dist/src/connectors/workflow-preflight.js.map +1 -0
- package/dist/src/extensions/install-transaction.d.ts +16 -0
- package/dist/src/extensions/install-transaction.js +76 -0
- package/dist/src/extensions/install-transaction.js.map +1 -0
- package/dist/src/extensions/install.d.ts +2 -0
- package/dist/src/extensions/install.js +23 -1
- package/dist/src/extensions/install.js.map +1 -1
- package/dist/src/gateway/agents-admin.d.ts +2 -0
- package/dist/src/gateway/agents-admin.js +7 -0
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/capability-presets-admin.d.ts +11 -0
- package/dist/src/gateway/capability-presets-admin.js +11 -4
- package/dist/src/gateway/capability-presets-admin.js.map +1 -1
- package/dist/src/gateway/chat-stream/mapper.js +17 -0
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -1
- package/dist/src/gateway/chat-stream/protocol.d.ts +18 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +3 -3
- package/dist/src/gateway/hono/routes/agents.js +3 -0
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/capability-presets.js +19 -1
- package/dist/src/gateway/hono/routes/capability-presets.js.map +1 -1
- package/dist/src/gateway/hono/routes/connectors.js +188 -25
- package/dist/src/gateway/hono/routes/connectors.js.map +1 -1
- package/dist/src/gateway/hono/routes/goals.js +22 -3
- package/dist/src/gateway/hono/routes/goals.js.map +1 -1
- package/dist/src/gateway/hono/routes/home.d.ts +60 -1
- package/dist/src/gateway/hono/routes/home.js +244 -18
- package/dist/src/gateway/hono/routes/home.js.map +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +8 -0
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/memory.js +14 -1
- package/dist/src/gateway/hono/routes/memory.js.map +1 -1
- package/dist/src/gateway/hono/routes/projects.js +103 -2
- package/dist/src/gateway/hono/routes/projects.js.map +1 -1
- package/dist/src/gateway/hono/routes/public-gateway.js +93 -0
- package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +137 -22
- package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
- package/dist/src/gateway/hono/routes/you.d.ts +23 -0
- package/dist/src/gateway/hono/routes/you.js +538 -0
- package/dist/src/gateway/hono/routes/you.js.map +1 -0
- package/dist/src/gateway/hono/sse.d.ts +2 -1
- package/dist/src/gateway/hono/sse.js +2 -1
- package/dist/src/gateway/hono/sse.js.map +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +13 -1
- package/dist/src/gateway/service/marketplace-service.js +96 -40
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service.d.ts +2 -0
- package/dist/src/gateway/service.js +7 -1
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/goals/goal-service.d.ts +7 -5
- package/dist/src/goals/goal-service.js +25 -13
- package/dist/src/goals/goal-service.js.map +1 -1
- package/dist/src/goals/goal-store.js +46 -7
- package/dist/src/goals/goal-store.js.map +1 -1
- package/dist/src/goals/types.d.ts +24 -0
- package/dist/src/storage/sqlite/connector-repository.d.ts +49 -0
- package/dist/src/storage/sqlite/connector-repository.js +385 -0
- package/dist/src/storage/sqlite/connector-repository.js.map +1 -0
- package/dist/src/storage/sqlite/index.d.ts +3 -0
- package/dist/src/storage/sqlite/index.js +4 -1
- package/dist/src/storage/sqlite/migrations/030_connectors.sql +94 -0
- package/dist/src/storage/sqlite/migrations/031_connector_approvals.sql +24 -0
- package/dist/src/storage/sqlite/migrations/032_connector_webhook_deliveries.sql +15 -0
- package/dist/src/storage/sqlite/migrations/033_user_trust_policies.sql +6 -0
- package/dist/src/storage/sqlite/migrations/034_allow_global_auto_trust.sql +14 -0
- package/dist/src/storage/sqlite/migrations/035_user_profile_prompt_state.sql +7 -0
- package/dist/src/storage/sqlite/migrations/036_goal_outcome_metric.sql +12 -0
- package/dist/src/storage/sqlite/migrations/runner.d.ts +1 -1
- package/dist/src/storage/sqlite/migrations/runner.js +3 -3
- package/dist/src/storage/sqlite/migrations/runner.js.map +1 -1
- package/dist/src/storage/sqlite/migrations/runner.ts +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/user-profile-setup-repository.d.ts +3 -0
- package/dist/src/storage/sqlite/user-profile-setup-repository.js +34 -0
- package/dist/src/storage/sqlite/user-profile-setup-repository.js.map +1 -0
- package/dist/src/storage/sqlite/user-trust-repository.d.ts +3 -0
- package/dist/src/storage/sqlite/user-trust-repository.js +34 -0
- package/dist/src/storage/sqlite/user-trust-repository.js.map +1 -0
- package/dist/src/tui/components/assistant-message.js +15 -0
- package/dist/src/tui/components/assistant-message.js.map +1 -1
- package/dist/src/tui/tui-agent-events.js +85 -1
- package/dist/src/tui/tui-agent-events.js.map +1 -1
- package/dist/src/tui/tui-command-formatters.js +7 -7
- package/dist/src/tui/tui-command-formatters.js.map +1 -1
- package/dist/src/tui/tui-commands.js +1 -1
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/user-context/import.d.ts +12 -0
- package/dist/src/user-context/import.js +48 -0
- package/dist/src/user-context/import.js.map +1 -0
- package/dist/src/user-context/profile.d.ts +37 -0
- package/dist/src/user-context/profile.js +165 -0
- package/dist/src/user-context/profile.js.map +1 -0
- package/dist/src/user-context/projection.d.ts +54 -0
- package/dist/src/user-context/projection.js +121 -0
- package/dist/src/user-context/projection.js.map +1 -0
- package/dist/src/user-context/source-recommendations.d.ts +13 -0
- package/dist/src/user-context/source-recommendations.js +86 -0
- package/dist/src/user-context/source-recommendations.js.map +1 -0
- package/dist/src/user-context/trust-policy.d.ts +11 -0
- package/dist/src/user-context/trust-policy.js +31 -0
- package/dist/src/user-context/trust-policy.js.map +1 -0
- package/dist/src/workflows/authoring/index.d.ts +1 -0
- package/dist/src/workflows/authoring/index.js +2 -0
- package/dist/src/workflows/authoring/workflow-draft-store.d.ts +33 -0
- package/dist/src/workflows/authoring/workflow-draft-store.js +74 -0
- package/dist/src/workflows/authoring/workflow-draft-store.js.map +1 -0
- package/dist/src/workflows/domain/definition-utils.d.ts +6 -4
- package/dist/src/workflows/domain/definition-utils.js +28 -26
- package/dist/src/workflows/domain/definition-utils.js.map +1 -1
- package/dist/src/workflows/domain/definition.d.ts +79 -6
- package/dist/src/workflows/domain/event.d.ts +18 -2
- package/dist/src/workflows/domain/index.js +3 -3
- package/dist/src/workflows/domain/run.d.ts +16 -2
- package/dist/src/workflows/domain/run.js.map +1 -1
- package/dist/src/workflows/domain/validation.d.ts +9 -5
- package/dist/src/workflows/domain/validation.js +183 -40
- package/dist/src/workflows/domain/validation.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft-prompt.d.ts +2 -3
- package/dist/src/workflows/draft/workflow-draft-prompt.js +31 -73
- package/dist/src/workflows/draft/workflow-draft-prompt.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft-service.js +4 -8
- package/dist/src/workflows/draft/workflow-draft-service.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft-validator.js +29 -37
- package/dist/src/workflows/draft/workflow-draft-validator.js.map +1 -1
- package/dist/src/workflows/draft/workflow-draft.types.d.ts +4 -4
- package/dist/src/workflows/engine/projector.js +43 -1
- package/dist/src/workflows/engine/projector.js.map +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +2 -3
- package/dist/src/workflows/engine/workflow-engine.js +24 -4
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
- package/dist/src/workflows/index.js +4 -7
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +1 -9
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +1 -1
- package/dist/src/workflows/runtime/graph-workflow-runtime.d.ts +10 -0
- package/dist/src/workflows/runtime/graph-workflow-runtime.js +295 -0
- package/dist/src/workflows/runtime/graph-workflow-runtime.js.map +1 -0
- package/dist/src/workflows/runtime/index.d.ts +1 -2
- package/dist/src/workflows/runtime/index.js +2 -5
- package/dist/src/workflows/runtime/workflow-runtime-port.d.ts +5 -8
- package/dist/src/workflows/service/workflow-run-service.js +15 -1
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-run-service.types.d.ts +2 -1
- package/package.json +4 -3
- package/dist/gateway/static/root/assets/agents-CyvCIHnB.js +0 -2
- package/dist/gateway/static/root/assets/apps-page-DK_Vx6nl.js +0 -1
- package/dist/gateway/static/root/assets/automation-suggestion-card-B1LV3YYv.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-fzrovqhv.js +0 -4
- package/dist/gateway/static/root/assets/block-editor-Dhj5f4Bx.js +0 -184
- package/dist/gateway/static/root/assets/browser-settings-page-BDn-n-UB.js +0 -8
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-Co5ipo_Q.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-BWlpaxg9.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-D_jkIZLV.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BcekbW4q.js +0 -2
- package/dist/gateway/static/root/assets/desktop-pet-settings-BJCUuL8Y.js +0 -1
- package/dist/gateway/static/root/assets/dreaming-settings-BN1Z2mIo.js +0 -3
- package/dist/gateway/static/root/assets/extension-page-B-1KxvVy.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-BF9NACI3.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-DN9sNREz.js +0 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-BpoQW8cD.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-CBRSPd0b.js +0 -4
- package/dist/gateway/static/root/assets/goals-page-BCcBi407.js +0 -2
- package/dist/gateway/static/root/assets/goals-settings-pkTXzXkh.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-ezsufgLQ.js +0 -1
- package/dist/gateway/static/root/assets/index-B8s8Pq5U.css +0 -1
- package/dist/gateway/static/root/assets/index-DcUaXYeb.js +0 -262
- package/dist/gateway/static/root/assets/logs-page-DQtTRXtj.js +0 -7
- package/dist/gateway/static/root/assets/messages-BXNELNBa.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-BP2M9n6Q.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-CspveYaO.js +0 -1
- package/dist/gateway/static/root/assets/notes-workbench-BHwzJ0OC.js +0 -2
- package/dist/gateway/static/root/assets/project-detail-page-Dy3rsobs.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-CWKpPE0L.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CqNRyXEo.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-MEME7ivF.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-JVd0qaSF.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-DYEbB1EV.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-dWN8BJ3z.js +0 -1
- package/dist/gateway/static/root/assets/share-preview-page-D8foINzP.js +0 -2
- package/dist/gateway/static/root/assets/shares-settings-Tgbv1s7G.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-D_YK0b_Z.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-DGytfoZK.js +0 -2
- package/dist/gateway/static/root/assets/toast-z0toXu32.js +0 -1
- package/dist/gateway/static/root/assets/user-profile-settings-panel-8YtygcJp.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BVH71EFf.js +0 -1
- package/dist/gateway/static/root/assets/work-item-detail-page-JeTE7XNM.js +0 -1
- package/dist/gateway/static/root/assets/workflow-start-dialog-_u8Uc1ze.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-ixgk_y1l.js +0 -18
- package/dist/src/agent/workflow/builtins/audit-repo.d.ts +0 -13
- package/dist/src/agent/workflow/builtins/audit-repo.js +0 -183
- package/dist/src/agent/workflow/builtins/audit-repo.js.map +0 -1
- package/dist/src/agent/workflow/builtins/client-proposal.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/client-proposal.js +0 -164
- package/dist/src/agent/workflow/builtins/client-proposal.js.map +0 -1
- package/dist/src/agent/workflow/builtins/competitor-scan.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/competitor-scan.js +0 -164
- package/dist/src/agent/workflow/builtins/competitor-scan.js.map +0 -1
- package/dist/src/agent/workflow/builtins/content-draft.d.ts +0 -13
- package/dist/src/agent/workflow/builtins/content-draft.js +0 -159
- package/dist/src/agent/workflow/builtins/content-draft.js.map +0 -1
- package/dist/src/agent/workflow/builtins/content-repurpose.d.ts +0 -11
- package/dist/src/agent/workflow/builtins/content-repurpose.js +0 -146
- package/dist/src/agent/workflow/builtins/content-repurpose.js.map +0 -1
- package/dist/src/agent/workflow/builtins/debug-incident.d.ts +0 -13
- package/dist/src/agent/workflow/builtins/debug-incident.js +0 -177
- package/dist/src/agent/workflow/builtins/debug-incident.js.map +0 -1
- package/dist/src/agent/workflow/builtins/decision-compare.d.ts +0 -13
- package/dist/src/agent/workflow/builtins/decision-compare.js +0 -187
- package/dist/src/agent/workflow/builtins/decision-compare.js.map +0 -1
- package/dist/src/agent/workflow/builtins/implementation-plan.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/implementation-plan.js +0 -185
- package/dist/src/agent/workflow/builtins/implementation-plan.js.map +0 -1
- package/dist/src/agent/workflow/builtins/inbox-triage.d.ts +0 -11
- package/dist/src/agent/workflow/builtins/inbox-triage.js +0 -158
- package/dist/src/agent/workflow/builtins/inbox-triage.js.map +0 -1
- package/dist/src/agent/workflow/builtins/meeting-prep.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/meeting-prep.js +0 -152
- package/dist/src/agent/workflow/builtins/meeting-prep.js.map +0 -1
- package/dist/src/agent/workflow/builtins/multi-perspective-review.d.ts +0 -14
- package/dist/src/agent/workflow/builtins/multi-perspective-review.js +0 -171
- package/dist/src/agent/workflow/builtins/multi-perspective-review.js.map +0 -1
- package/dist/src/agent/workflow/builtins/offer-design.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/offer-design.js +0 -170
- package/dist/src/agent/workflow/builtins/offer-design.js.map +0 -1
- package/dist/src/agent/workflow/builtins/pr-review.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/pr-review.js +0 -178
- package/dist/src/agent/workflow/builtins/pr-review.js.map +0 -1
- package/dist/src/agent/workflow/builtins/release-check.d.ts +0 -11
- package/dist/src/agent/workflow/builtins/release-check.js +0 -174
- package/dist/src/agent/workflow/builtins/release-check.js.map +0 -1
- package/dist/src/agent/workflow/builtins/research.d.ts +0 -13
- package/dist/src/agent/workflow/builtins/research.js +0 -188
- package/dist/src/agent/workflow/builtins/research.js.map +0 -1
- package/dist/src/agent/workflow/builtins/weekly-review.d.ts +0 -12
- package/dist/src/agent/workflow/builtins/weekly-review.js +0 -139
- package/dist/src/agent/workflow/builtins/weekly-review.js.map +0 -1
- package/dist/src/agent/workflow/last-run-memory.d.ts +0 -42
- package/dist/src/agent/workflow/last-run-memory.js +0 -60
- package/dist/src/agent/workflow/last-run-memory.js.map +0 -1
- package/dist/src/agent/workflow/lint.d.ts +0 -38
- package/dist/src/agent/workflow/lint.js +0 -74
- package/dist/src/agent/workflow/lint.js.map +0 -1
- package/dist/src/agent/workflow/meta-locale.d.ts +0 -12
- package/dist/src/agent/workflow/meta-locale.js +0 -62
- package/dist/src/agent/workflow/meta-locale.js.map +0 -1
- package/dist/src/agent/workflow/parser.d.ts +0 -20
- package/dist/src/agent/workflow/parser.js +0 -152
- package/dist/src/agent/workflow/parser.js.map +0 -1
- package/dist/src/agent/workflow/runtime.d.ts +0 -34
- package/dist/src/agent/workflow/runtime.js +0 -402
- package/dist/src/agent/workflow/runtime.js.map +0 -1
- package/dist/src/connectors/oauth.d.ts +0 -22
- package/dist/src/connectors/oauth.js +0 -99
- package/dist/src/connectors/oauth.js.map +0 -1
- package/dist/src/workflows/runtime/script-runtime.d.ts +0 -3
- package/dist/src/workflows/runtime/script-runtime.js +0 -3
- package/dist/src/workflows/runtime/script-workflow-runtime.d.ts +0 -5
- package/dist/src/workflows/runtime/script-workflow-runtime.js +0 -15
- package/dist/src/workflows/runtime/script-workflow-runtime.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-output-tool.js","names":[],"sources":["../../../../src/agent/workflow/structured-output-tool.ts"],"sourcesContent":["/**\n * `structured_output` — terminating tool used to capture a subagent's final result.\n *\n * Injected into a
|
|
1
|
+
{"version":3,"file":"structured-output-tool.js","names":[],"sources":["../../../../src/agent/workflow/structured-output-tool.ts"],"sourcesContent":["/**\n * `structured_output` — terminating tool used to capture a subagent's final result.\n *\n * Injected into a workflow agent node only when its output schema requires\n * structured data. The subagent is instructed\n * to invoke this tool exactly once with its final result; the tool sets\n * `terminate: true` so the agent loop stops without paying for an extra\n * assistant turn.\n *\n * Validation is done with ajv (already a xopc dep). pi-agent-core also validates\n * arguments against `parameters` before calling `execute`, but we re-check here\n * to (1) surface a clear error message back to the model when the schema is\n * non-trivial, and (2) avoid trusting the upstream layer's validator strictness.\n *\n * Note: the file is named `structured-output-tool.ts` to avoid clashing with the\n * existing `src/agent/tools/structured-output.ts` (an XML Element builder — a\n * completely unrelated utility).\n */\n\nimport Ajv, { type ValidateFunction } from 'ajv';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\nimport type { TSchema } from '@sinclair/typebox';\n\nimport type { JsonSchema } from './types.js';\n\nexport const STRUCTURED_OUTPUT_TOOL_NAME = 'structured_output';\n\nexport interface StructuredOutputCapture<T = unknown> {\n called: boolean;\n value?: T;\n}\n\nexport interface CreateStructuredOutputToolOptions<T = unknown> {\n schema: JsonSchema;\n capture: StructuredOutputCapture<T>;\n /** Override the tool name (rarely needed; default `structured_output`). */\n name?: string;\n}\n\n// One Ajv instance per schema is fine — Ajv caches compiled validators internally.\n// We re-use a singleton to avoid the per-call construction cost.\nconst ajv = new Ajv({ allErrors: true, strict: false });\n\nexport function createStructuredOutputTool<T = unknown>(\n options: CreateStructuredOutputToolOptions<T>,\n): AgentTool<TSchema, T> {\n const name = options.name ?? STRUCTURED_OUTPUT_TOOL_NAME;\n const validator: ValidateFunction = ajv.compile(options.schema);\n\n return {\n name,\n label: 'Structured Output',\n description:\n 'Return the final machine-readable result for this subagent task. ' +\n 'Call this tool exactly once when finished. Do not emit a prose final answer afterwards.',\n parameters: options.schema as unknown as TSchema,\n async execute(\n _toolCallId: string,\n params: unknown,\n ): Promise<AgentToolResult<T>> {\n const valid = validator(params);\n if (!valid) {\n const reason = ajv.errorsText(validator.errors, { separator: '; ' });\n // Do NOT terminate on invalid input — let the model retry within the same run.\n return {\n content: [\n {\n type: 'text',\n text: `structured_output: invalid arguments — ${reason}. Adjust and call structured_output again.`,\n },\n ],\n details: params as T,\n };\n }\n options.capture.called = true;\n options.capture.value = params as T;\n return {\n content: [{ type: 'text', text: 'Structured output received.' }],\n details: params as T,\n terminate: true,\n };\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAyBA,MAAa,8BAA8B;AAgB3C,MAAM,MAAM,IAAI,IAAI;CAAE,WAAW;CAAM,QAAQ;CAAO,CAAC;AAEvD,SAAgB,2BACd,SACuB;CACvB,MAAM,OAAO,QAAQ,QAAA;CACrB,MAAM,YAA8B,IAAI,QAAQ,QAAQ,OAAO;AAE/D,QAAO;EACL;EACA,OAAO;EACP,aACE;EAEF,YAAY,QAAQ;EACpB,MAAM,QACJ,aACA,QAC6B;AAE7B,OAAI,CADU,UAAU,OACd,CAGR,QAAO;IACL,SAAS,CACP;KACE,MAAM;KACN,MAAM,0CANG,IAAI,WAAW,UAAU,QAAQ,EAAE,WAAW,MAAM,CAMP,CAAC;KACxD,CACF;IACD,SAAS;IACV;AAEH,WAAQ,QAAQ,SAAS;AACzB,WAAQ,QAAQ,QAAQ;AACxB,UAAO;IACL,SAAS,CAAC;KAAE,MAAM;KAAQ,MAAM;KAA+B,CAAC;IAChE,SAAS;IACT,WAAW;IACZ;;EAEJ"}
|
|
@@ -2,8 +2,8 @@ import { createLogger } from "../../utils/logger/index.js";
|
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
3
|
import { createDelegateChildHandle } from "../child-agent-factory.js";
|
|
4
4
|
import { DEFAULT_DELEGATE_TOOLS, DELEGATE_BLOCKED_TOOLS } from "../tools/delegate-tool.js";
|
|
5
|
-
import { STRUCTURED_OUTPUT_TOOL_NAME, createStructuredOutputTool } from "./structured-output-tool.js";
|
|
6
5
|
import { emitSessionTranscriptUpdate } from "../../session/transcript-events.js";
|
|
6
|
+
import { STRUCTURED_OUTPUT_TOOL_NAME, createStructuredOutputTool } from "./structured-output-tool.js";
|
|
7
7
|
//#region src/agent/workflow/subagent-runner.ts
|
|
8
8
|
init_logger();
|
|
9
9
|
const log = createLogger("Agent:WorkflowSubagent");
|
|
@@ -19,40 +19,40 @@ export interface JsonSchema {
|
|
|
19
19
|
description?: string;
|
|
20
20
|
[key: string]: unknown;
|
|
21
21
|
}
|
|
22
|
-
export interface
|
|
22
|
+
export interface WorkflowSnapshotPhase {
|
|
23
23
|
title: string;
|
|
24
24
|
detail?: string;
|
|
25
25
|
/** Default model for this phase: `provider/model` or configured typed id. */
|
|
26
26
|
model?: string;
|
|
27
27
|
}
|
|
28
|
-
export interface
|
|
28
|
+
export interface WorkflowEstimatedAgents {
|
|
29
29
|
min: number;
|
|
30
30
|
max: number;
|
|
31
31
|
}
|
|
32
32
|
/** One-click starter text in the gateway start dialog; `field` is `goal` or an `args` key. */
|
|
33
|
-
export interface
|
|
33
|
+
export interface WorkflowExamplePrompt {
|
|
34
34
|
field: string;
|
|
35
35
|
text: string;
|
|
36
36
|
}
|
|
37
37
|
/** Locale-specific copy overrides; top-level `description` / `whenToUse` / `examplePrompts` are English defaults. */
|
|
38
|
-
export interface
|
|
38
|
+
export interface WorkflowLocaleCopy {
|
|
39
39
|
description?: string;
|
|
40
40
|
whenToUse?: string;
|
|
41
|
-
examplePrompts?:
|
|
41
|
+
examplePrompts?: WorkflowExamplePrompt[];
|
|
42
42
|
}
|
|
43
|
-
export interface
|
|
43
|
+
export interface WorkflowSnapshotDefinition {
|
|
44
44
|
name: string;
|
|
45
45
|
description: string;
|
|
46
46
|
whenToUse?: string;
|
|
47
|
-
phases?:
|
|
47
|
+
phases?: WorkflowSnapshotPhase[];
|
|
48
48
|
/** Discovery tags, e.g. `['code-review', 'planning']`. */
|
|
49
49
|
tags?: string[];
|
|
50
50
|
/** Rough subagent count range for UX / cost hints. */
|
|
51
|
-
estimatedAgents?:
|
|
51
|
+
estimatedAgents?: WorkflowEstimatedAgents;
|
|
52
52
|
/** English-default example prompts for the gateway start dialog. */
|
|
53
|
-
examplePrompts?:
|
|
53
|
+
examplePrompts?: WorkflowExamplePrompt[];
|
|
54
54
|
/** Non-English locale bundles keyed by BCP-47 language tag (e.g. `zh`). */
|
|
55
|
-
i18n?: Record<string,
|
|
55
|
+
i18n?: Record<string, WorkflowLocaleCopy>;
|
|
56
56
|
}
|
|
57
57
|
export type WorkflowAgentStatus = 'queued' | 'running' | 'done' | 'error' | 'skipped';
|
|
58
58
|
export type WorkflowAgentStepStatus = 'running' | 'done' | 'error';
|
|
@@ -88,6 +88,7 @@ export interface WorkflowAgentSnapshot {
|
|
|
88
88
|
streamText?: string;
|
|
89
89
|
}
|
|
90
90
|
export interface WorkflowAgentInvocationSnapshot {
|
|
91
|
+
nodeId?: string;
|
|
91
92
|
prompt: string;
|
|
92
93
|
label: string;
|
|
93
94
|
phase?: string;
|
|
@@ -136,6 +137,7 @@ export interface SubagentRunOptions<T = unknown> {
|
|
|
136
137
|
workflowRunId: string;
|
|
137
138
|
workflowDefinitionId: string;
|
|
138
139
|
workflowAgentId: string;
|
|
140
|
+
workflowNodeId?: string;
|
|
139
141
|
workflowAgentLabel: string;
|
|
140
142
|
};
|
|
141
143
|
/** Live progress from the child agent loop (workflow tool binds per agent id). */
|
|
@@ -181,34 +183,35 @@ export type SubagentProgressEvent = {
|
|
|
181
183
|
export interface SubagentRunner {
|
|
182
184
|
run<T = string>(prompt: string, opts: SubagentRunOptions<T>): Promise<T | null>;
|
|
183
185
|
}
|
|
184
|
-
/** Options accepted by `agent()` inside a workflow script. */
|
|
185
|
-
export interface AgentScriptOptions {
|
|
186
|
-
label?: string;
|
|
187
|
-
phase?: string;
|
|
188
|
-
schema?: JsonSchema;
|
|
189
|
-
/**
|
|
190
|
-
* Model ref: `provider/model` or a configured typed id (e.g. `small`, `@large`).
|
|
191
|
-
*/
|
|
192
|
-
model?: string;
|
|
193
|
-
/** Subagent tool allowlist override (forwarded to the runner). */
|
|
194
|
-
toolset?: string[];
|
|
195
|
-
/** Max tool iterations inside the subagent. */
|
|
196
|
-
maxIterations?: number;
|
|
197
|
-
}
|
|
198
186
|
export interface WorkflowRunOptions {
|
|
199
187
|
args?: unknown;
|
|
188
|
+
goal?: string;
|
|
200
189
|
cwd: string;
|
|
201
190
|
signal?: AbortSignal;
|
|
202
191
|
/** Hard upper bound on concurrent subagents (default min(16, cpu-2)). */
|
|
203
192
|
concurrency?: number;
|
|
204
|
-
/**
|
|
193
|
+
/** Optional total token budget for the run. `null` means unlimited. */
|
|
205
194
|
tokenBudget?: number | null;
|
|
206
195
|
/** Hard cap on total subagent count for one workflow run (default 1000). */
|
|
207
196
|
maxSubagents?: number;
|
|
208
197
|
onLog?: (message: string) => void;
|
|
209
198
|
onPhase?: (title: string) => void;
|
|
199
|
+
onNodeStart?: (event: {
|
|
200
|
+
nodeId: string;
|
|
201
|
+
kind: string;
|
|
202
|
+
title: string;
|
|
203
|
+
}) => void;
|
|
204
|
+
onNodeEnd?: (event: {
|
|
205
|
+
nodeId: string;
|
|
206
|
+
kind: string;
|
|
207
|
+
title: string;
|
|
208
|
+
status: 'done' | 'error' | 'skipped';
|
|
209
|
+
result?: unknown;
|
|
210
|
+
error?: string;
|
|
211
|
+
}) => void;
|
|
210
212
|
onAgentQueued?: (event: {
|
|
211
213
|
id: number;
|
|
214
|
+
nodeId: string;
|
|
212
215
|
label: string;
|
|
213
216
|
phase?: string;
|
|
214
217
|
prompt: string;
|
|
@@ -216,12 +219,14 @@ export interface WorkflowRunOptions {
|
|
|
216
219
|
}) => void;
|
|
217
220
|
onAgentStart?: (event: {
|
|
218
221
|
id: number;
|
|
222
|
+
nodeId: string;
|
|
219
223
|
label: string;
|
|
220
224
|
phase?: string;
|
|
221
225
|
prompt: string;
|
|
222
226
|
}) => void;
|
|
223
227
|
onAgentEnd?: (event: {
|
|
224
228
|
id: number;
|
|
229
|
+
nodeId: string;
|
|
225
230
|
label: string;
|
|
226
231
|
phase?: string;
|
|
227
232
|
result: unknown;
|
|
@@ -230,13 +235,13 @@ export interface WorkflowRunOptions {
|
|
|
230
235
|
/** Merge extra subagent run options (e.g. progress callbacks) per agent id. */
|
|
231
236
|
enhanceSubagentRun?: (ctx: {
|
|
232
237
|
id: number;
|
|
238
|
+
nodeId: string;
|
|
233
239
|
label: string;
|
|
234
240
|
phase?: string;
|
|
235
241
|
prompt: string;
|
|
236
242
|
}) => Partial<SubagentRunOptions<unknown>>;
|
|
237
243
|
}
|
|
238
244
|
export interface WorkflowRunResult<T = unknown> {
|
|
239
|
-
meta: WorkflowMeta;
|
|
240
245
|
result: T;
|
|
241
246
|
logs: string[];
|
|
242
247
|
phases: string[];
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { AgentConfigEntrySchema, AgentIdentitySchema, AgentManifestSchema, AgentResponsibilitiesSchema, AgentToolModelSchema, BoundaryPolicySchema, CapabilityPresetSchema, DEFAULT_CAPABILITY_PRESET_ID, DreamingDeepPolicySchema, DreamingLightPolicySchema, DreamingPhasePolicySchema, DreamingPolicySchema, DreamingRemPolicySchema, ManifestModelRoleSchema, MemoryPolicySchema, ModelPolicyPatchSchema, ModelPolicySchema, PromptPolicySchema, RuntimePolicySchema, SkillPolicySchema, ToolModeSchema, ToolPolicySchema, ToolPolicySetSchema, ToolScopeSchema, UserUnderstandingPolicySchema, WorkflowPolicySchema, WorkspacePolicySchema, init_schema } from "./schema.js";
|
|
2
|
+
import { init_preset_chain, linearizePresetIds } from "./preset-chain.js";
|
|
2
3
|
import { getManifestSource, resolveEffectiveAgentManifest } from "./resolver.js";
|
|
3
4
|
import { validateAgentManifest } from "./validator.js";
|
|
4
5
|
import { buildAgentManifestPromptSection } from "./prompt.js";
|
|
5
6
|
//#region src/agent-manifest/index.ts
|
|
6
7
|
init_schema();
|
|
8
|
+
init_preset_chain();
|
|
7
9
|
//#endregion
|
|
8
|
-
export { AgentConfigEntrySchema, AgentIdentitySchema, AgentManifestSchema, AgentResponsibilitiesSchema, AgentToolModelSchema, BoundaryPolicySchema, CapabilityPresetSchema, DEFAULT_CAPABILITY_PRESET_ID, DreamingDeepPolicySchema, DreamingLightPolicySchema, DreamingPhasePolicySchema, DreamingPolicySchema, DreamingRemPolicySchema, ManifestModelRoleSchema, MemoryPolicySchema, ModelPolicyPatchSchema, ModelPolicySchema, PromptPolicySchema, RuntimePolicySchema, SkillPolicySchema, ToolModeSchema, ToolPolicySchema, ToolPolicySetSchema, ToolScopeSchema, UserUnderstandingPolicySchema, WorkflowPolicySchema, WorkspacePolicySchema, buildAgentManifestPromptSection, getManifestSource, resolveEffectiveAgentManifest, validateAgentManifest };
|
|
10
|
+
export { AgentConfigEntrySchema, AgentIdentitySchema, AgentManifestSchema, AgentResponsibilitiesSchema, AgentToolModelSchema, BoundaryPolicySchema, CapabilityPresetSchema, DEFAULT_CAPABILITY_PRESET_ID, DreamingDeepPolicySchema, DreamingLightPolicySchema, DreamingPhasePolicySchema, DreamingPolicySchema, DreamingRemPolicySchema, ManifestModelRoleSchema, MemoryPolicySchema, ModelPolicyPatchSchema, ModelPolicySchema, PromptPolicySchema, RuntimePolicySchema, SkillPolicySchema, ToolModeSchema, ToolPolicySchema, ToolPolicySetSchema, ToolScopeSchema, UserUnderstandingPolicySchema, WorkflowPolicySchema, WorkspacePolicySchema, buildAgentManifestPromptSection, getManifestSource, linearizePresetIds, resolveEffectiveAgentManifest, validateAgentManifest };
|
|
9
11
|
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../src/agent-manifest/index.ts"],"sourcesContent":["export * from './schema.js';\nexport * from './resolver.js';\nexport * from './validator.js';\nexport * from './prompt.js';\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../../src/agent-manifest/index.ts"],"sourcesContent":["export * from './schema.js';\nexport * from './preset-chain.js';\nexport * from './resolver.js';\nexport * from './validator.js';\nexport * from './prompt.js';\n"],"mappings":""}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type PresetWithParents = {
|
|
2
|
+
extends?: readonly string[];
|
|
3
|
+
};
|
|
4
|
+
/**
|
|
5
|
+
* Linearize preset inheritance once, in parent-before-child order.
|
|
6
|
+
*
|
|
7
|
+
* A shared parent is emitted only on its first visit. This gives diamond
|
|
8
|
+
* inheritance one deterministic meaning across every runtime consumer.
|
|
9
|
+
*/
|
|
10
|
+
export declare function linearizePresetIds<T extends PresetWithParents>(rootIds: readonly string[], presets: Readonly<Record<string, T>>): string[];
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { __esmMin } from "../../_virtual/_rolldown/runtime.js";
|
|
2
|
+
//#region src/agent-manifest/preset-chain.ts
|
|
3
|
+
/**
|
|
4
|
+
* Linearize preset inheritance once, in parent-before-child order.
|
|
5
|
+
*
|
|
6
|
+
* A shared parent is emitted only on its first visit. This gives diamond
|
|
7
|
+
* inheritance one deterministic meaning across every runtime consumer.
|
|
8
|
+
*/
|
|
9
|
+
function linearizePresetIds(rootIds, presets) {
|
|
10
|
+
const visiting = /* @__PURE__ */ new Set();
|
|
11
|
+
const visited = /* @__PURE__ */ new Set();
|
|
12
|
+
const out = [];
|
|
13
|
+
const visit = (id, stack) => {
|
|
14
|
+
if (visiting.has(id)) throw new Error(`Capability preset cycle detected: ${[...stack, id].join(" -> ")}`);
|
|
15
|
+
if (visited.has(id)) return;
|
|
16
|
+
const preset = presets[id];
|
|
17
|
+
if (!preset) throw new Error(`Capability preset "${id}" was not found`);
|
|
18
|
+
visiting.add(id);
|
|
19
|
+
for (const parent of preset.extends ?? []) visit(parent, [...stack, id]);
|
|
20
|
+
visiting.delete(id);
|
|
21
|
+
visited.add(id);
|
|
22
|
+
out.push(id);
|
|
23
|
+
};
|
|
24
|
+
for (const id of rootIds) visit(id, []);
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
var init_preset_chain = __esmMin((() => {}));
|
|
28
|
+
//#endregion
|
|
29
|
+
init_preset_chain();
|
|
30
|
+
export { init_preset_chain, linearizePresetIds };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=preset-chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preset-chain.js","names":[],"sources":["../../../src/agent-manifest/preset-chain.ts"],"sourcesContent":["export type PresetWithParents = {\n extends?: readonly string[];\n};\n\n/**\n * Linearize preset inheritance once, in parent-before-child order.\n *\n * A shared parent is emitted only on its first visit. This gives diamond\n * inheritance one deterministic meaning across every runtime consumer.\n */\nexport function linearizePresetIds<T extends PresetWithParents>(\n rootIds: readonly string[],\n presets: Readonly<Record<string, T>>,\n): string[] {\n const visiting = new Set<string>();\n const visited = new Set<string>();\n const out: string[] = [];\n\n const visit = (id: string, stack: readonly string[]): void => {\n if (visiting.has(id)) {\n throw new Error(`Capability preset cycle detected: ${[...stack, id].join(' -> ')}`);\n }\n if (visited.has(id)) return;\n const preset = presets[id];\n if (!preset) {\n throw new Error(`Capability preset \"${id}\" was not found`);\n }\n visiting.add(id);\n for (const parent of preset.extends ?? []) {\n visit(parent, [...stack, id]);\n }\n visiting.delete(id);\n visited.add(id);\n out.push(id);\n };\n\n for (const id of rootIds) visit(id, []);\n return out;\n}\n"],"mappings":";;;;;;;;AAUA,SAAgB,mBACd,SACA,SACU;CACV,MAAM,2BAAW,IAAI,KAAa;CAClC,MAAM,0BAAU,IAAI,KAAa;CACjC,MAAM,MAAgB,EAAE;CAExB,MAAM,SAAS,IAAY,UAAmC;AAC5D,MAAI,SAAS,IAAI,GAAG,CAClB,OAAM,IAAI,MAAM,qCAAqC,CAAC,GAAG,OAAO,GAAG,CAAC,KAAK,OAAO,GAAG;AAErF,MAAI,QAAQ,IAAI,GAAG,CAAE;EACrB,MAAM,SAAS,QAAQ;AACvB,MAAI,CAAC,OACH,OAAM,IAAI,MAAM,sBAAsB,GAAG,iBAAiB;AAE5D,WAAS,IAAI,GAAG;AAChB,OAAK,MAAM,UAAU,OAAO,WAAW,EAAE,CACvC,OAAM,QAAQ,CAAC,GAAG,OAAO,GAAG,CAAC;AAE/B,WAAS,OAAO,GAAG;AACnB,UAAQ,IAAI,GAAG;AACf,MAAI,KAAK,GAAG;;AAGd,MAAK,MAAM,MAAM,QAAS,OAAM,IAAI,EAAE,CAAC;AACvC,QAAO"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { AgentConfigEntrySchema, AgentManifestSchema, CapabilityPresetSchema, init_schema } from "./schema.js";
|
|
2
|
+
import { init_preset_chain, linearizePresetIds } from "./preset-chain.js";
|
|
2
3
|
//#region src/agent-manifest/resolver.ts
|
|
3
4
|
init_schema();
|
|
5
|
+
init_preset_chain();
|
|
4
6
|
function isObject(value) {
|
|
5
7
|
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
6
8
|
}
|
|
@@ -40,13 +42,6 @@ function mergeInto(target, patch, params) {
|
|
|
40
42
|
}
|
|
41
43
|
}
|
|
42
44
|
}
|
|
43
|
-
function resolvePresetChain(presetId, presets, stack, out) {
|
|
44
|
-
if (stack.includes(presetId)) throw new Error(`Capability preset cycle detected: ${[...stack, presetId].join(" -> ")}`);
|
|
45
|
-
const preset = presets[presetId];
|
|
46
|
-
if (!preset) throw new Error(`Capability preset "${presetId}" was not found`);
|
|
47
|
-
for (const parent of preset.extends ?? []) resolvePresetChain(parent, presets, [...stack, presetId], out);
|
|
48
|
-
out.push(preset);
|
|
49
|
-
}
|
|
50
45
|
function presetPatch(preset) {
|
|
51
46
|
const { id: _id, name: _name, description: _description, version: _version, extends: _extends, locks: _locks, ...patch } = preset;
|
|
52
47
|
return patch;
|
|
@@ -55,9 +50,7 @@ function resolveEffectiveAgentManifest(params) {
|
|
|
55
50
|
const agent = AgentConfigEntrySchema.parse(params.agent);
|
|
56
51
|
const presets = Object.fromEntries(Object.entries(params.presets ?? {}).map(([id, preset]) => [id, CapabilityPresetSchema.parse(preset)]));
|
|
57
52
|
const defaultPresetId = params.defaultPresetId ?? "default";
|
|
58
|
-
const
|
|
59
|
-
const chain = [];
|
|
60
|
-
for (const presetId of presetIds) resolvePresetChain(presetId, presets, [], chain);
|
|
53
|
+
const chain = linearizePresetIds([...presets[defaultPresetId] ? [defaultPresetId] : [], ...(agent.extends ?? []).filter((id) => id !== defaultPresetId)], presets).map((presetId) => presets[presetId]);
|
|
61
54
|
const merged = {};
|
|
62
55
|
const sources = {};
|
|
63
56
|
const locks = /* @__PURE__ */ new Set();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","names":[],"sources":["../../../src/agent-manifest/resolver.ts"],"sourcesContent":["import {\n AgentConfigEntrySchema,\n AgentManifestSchema,\n CapabilityPresetSchema,\n DEFAULT_CAPABILITY_PRESET_ID,\n type AgentConfigEntry,\n type CapabilityPreset,\n type EffectiveAgentManifest,\n} from './schema.js';\n\nexport interface ResolveManifestResult {\n manifest: EffectiveAgentManifest;\n presetChain: string[];\n sources: Record<string, string>;\n}\n\nexport interface ResolveManifestParams {\n agent: AgentConfigEntry;\n presets?: Record<string, CapabilityPreset>;\n defaultPresetId?: string;\n}\n\ntype JsonObject = Record<string, unknown>;\n\nfunction isObject(value: unknown): value is JsonObject {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction clone<T>(value: T): T {\n return value === undefined ? value : structuredClone(value);\n}\n\nfunction pathJoin(base: string, key: string): string {\n return base ? `${base}.${key}` : key;\n}\n\nfunction collectLeafSources(value: unknown, source: string, path: string, out: Record<string, string>): void {\n if (Array.isArray(value)) {\n out[path] = source;\n return;\n }\n if (isObject(value)) {\n for (const [key, child] of Object.entries(value)) {\n collectLeafSources(child, source, pathJoin(path, key), out);\n }\n return;\n }\n if (path) {\n out[path] = source;\n }\n}\n\nfunction mergeInto(\n target: JsonObject,\n patch: JsonObject,\n params: {\n source: string;\n sources: Record<string, string>;\n locks: Set<string>;\n patchLocks?: readonly string[];\n basePath?: string;\n },\n): void {\n for (const [key, patchValue] of Object.entries(patch)) {\n const path = pathJoin(params.basePath ?? '', key);\n if (params.locks.has(path) || [...params.locks].some((lock) => path.startsWith(`${lock}.`))) {\n continue;\n }\n if (isObject(patchValue) && isObject(target[key])) {\n mergeInto(target[key] as JsonObject, patchValue, { ...params, basePath: path });\n continue;\n }\n target[key] = clone(patchValue);\n collectLeafSources(patchValue, params.source, path, params.sources);\n for (const lock of params.patchLocks ?? []) {\n const lockPath = pathJoin(path, lock);\n params.locks.add(lockPath);\n }\n }\n}\n\nfunction
|
|
1
|
+
{"version":3,"file":"resolver.js","names":[],"sources":["../../../src/agent-manifest/resolver.ts"],"sourcesContent":["import {\n AgentConfigEntrySchema,\n AgentManifestSchema,\n CapabilityPresetSchema,\n DEFAULT_CAPABILITY_PRESET_ID,\n type AgentConfigEntry,\n type CapabilityPreset,\n type EffectiveAgentManifest,\n} from './schema.js';\nimport { linearizePresetIds } from './preset-chain.js';\n\nexport interface ResolveManifestResult {\n manifest: EffectiveAgentManifest;\n presetChain: string[];\n sources: Record<string, string>;\n}\n\nexport interface ResolveManifestParams {\n agent: AgentConfigEntry;\n presets?: Record<string, CapabilityPreset>;\n defaultPresetId?: string;\n}\n\ntype JsonObject = Record<string, unknown>;\n\nfunction isObject(value: unknown): value is JsonObject {\n return Boolean(value && typeof value === 'object' && !Array.isArray(value));\n}\n\nfunction clone<T>(value: T): T {\n return value === undefined ? value : structuredClone(value);\n}\n\nfunction pathJoin(base: string, key: string): string {\n return base ? `${base}.${key}` : key;\n}\n\nfunction collectLeafSources(value: unknown, source: string, path: string, out: Record<string, string>): void {\n if (Array.isArray(value)) {\n out[path] = source;\n return;\n }\n if (isObject(value)) {\n for (const [key, child] of Object.entries(value)) {\n collectLeafSources(child, source, pathJoin(path, key), out);\n }\n return;\n }\n if (path) {\n out[path] = source;\n }\n}\n\nfunction mergeInto(\n target: JsonObject,\n patch: JsonObject,\n params: {\n source: string;\n sources: Record<string, string>;\n locks: Set<string>;\n patchLocks?: readonly string[];\n basePath?: string;\n },\n): void {\n for (const [key, patchValue] of Object.entries(patch)) {\n const path = pathJoin(params.basePath ?? '', key);\n if (params.locks.has(path) || [...params.locks].some((lock) => path.startsWith(`${lock}.`))) {\n continue;\n }\n if (isObject(patchValue) && isObject(target[key])) {\n mergeInto(target[key] as JsonObject, patchValue, { ...params, basePath: path });\n continue;\n }\n target[key] = clone(patchValue);\n collectLeafSources(patchValue, params.source, path, params.sources);\n for (const lock of params.patchLocks ?? []) {\n const lockPath = pathJoin(path, lock);\n params.locks.add(lockPath);\n }\n }\n}\n\nfunction presetPatch(preset: CapabilityPreset): JsonObject {\n const {\n id: _id,\n name: _name,\n description: _description,\n version: _version,\n extends: _extends,\n locks: _locks,\n ...patch\n } = preset;\n return patch as JsonObject;\n}\n\nexport function resolveEffectiveAgentManifest(params: ResolveManifestParams): ResolveManifestResult {\n const agent = AgentConfigEntrySchema.parse(params.agent);\n const presets = Object.fromEntries(\n Object.entries(params.presets ?? {}).map(([id, preset]) => [id, CapabilityPresetSchema.parse(preset)]),\n );\n const defaultPresetId = params.defaultPresetId ?? DEFAULT_CAPABILITY_PRESET_ID;\n const presetIds = [\n ...(presets[defaultPresetId] ? [defaultPresetId] : []),\n ...(agent.extends ?? []).filter((id) => id !== defaultPresetId),\n ];\n const chain = linearizePresetIds(presetIds, presets).map((presetId) => presets[presetId]!);\n\n const merged: JsonObject = {};\n const sources: Record<string, string> = {};\n const locks = new Set<string>();\n for (const preset of chain) {\n mergeInto(merged, presetPatch(preset), {\n source: `preset:${preset.id}@${preset.version}`,\n sources,\n locks,\n patchLocks: preset.locks,\n });\n for (const lock of preset.locks ?? []) {\n locks.add(lock);\n }\n }\n\n const { extends: _extends, ...agentPatch } = agent;\n mergeInto(merged, agentPatch as JsonObject, {\n source: `agent:${agent.id}`,\n sources,\n locks,\n });\n\n return {\n manifest: AgentManifestSchema.parse({ ...merged, id: agent.id, enabled: agent.enabled, extends: agent.extends }),\n presetChain: chain.map((preset) => preset.id),\n sources,\n };\n}\n\nexport function getManifestSource(result: ResolveManifestResult, path: string): string | undefined {\n return result.sources[path];\n}\n"],"mappings":"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"}
|
|
@@ -231,9 +231,9 @@ export declare const MemoryPolicySchema: z.ZodDefault<z.ZodObject<{
|
|
|
231
231
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
232
232
|
session: "session";
|
|
233
233
|
workspace: "workspace";
|
|
234
|
+
curated: "curated";
|
|
234
235
|
userProfile: "userProfile";
|
|
235
236
|
agentProfile: "agentProfile";
|
|
236
|
-
curated: "curated";
|
|
237
237
|
connectedSources: "connectedSources";
|
|
238
238
|
}>>>;
|
|
239
239
|
writePolicy: z.ZodOptional<z.ZodObject<{
|
|
@@ -511,9 +511,9 @@ export declare const AgentManifestSchema: z.ZodObject<{
|
|
|
511
511
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
512
512
|
session: "session";
|
|
513
513
|
workspace: "workspace";
|
|
514
|
+
curated: "curated";
|
|
514
515
|
userProfile: "userProfile";
|
|
515
516
|
agentProfile: "agentProfile";
|
|
516
|
-
curated: "curated";
|
|
517
517
|
connectedSources: "connectedSources";
|
|
518
518
|
}>>>;
|
|
519
519
|
writePolicy: z.ZodOptional<z.ZodObject<{
|
|
@@ -748,9 +748,9 @@ export declare const AgentConfigEntrySchema: z.ZodObject<{
|
|
|
748
748
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
749
749
|
session: "session";
|
|
750
750
|
workspace: "workspace";
|
|
751
|
+
curated: "curated";
|
|
751
752
|
userProfile: "userProfile";
|
|
752
753
|
agentProfile: "agentProfile";
|
|
753
|
-
curated: "curated";
|
|
754
754
|
connectedSources: "connectedSources";
|
|
755
755
|
}>>>;
|
|
756
756
|
writePolicy: z.ZodOptional<z.ZodObject<{
|
|
@@ -1027,9 +1027,9 @@ export declare const CapabilityPresetSchema: z.ZodObject<{
|
|
|
1027
1027
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
1028
1028
|
session: "session";
|
|
1029
1029
|
workspace: "workspace";
|
|
1030
|
+
curated: "curated";
|
|
1030
1031
|
userProfile: "userProfile";
|
|
1031
1032
|
agentProfile: "agentProfile";
|
|
1032
|
-
curated: "curated";
|
|
1033
1033
|
connectedSources: "connectedSources";
|
|
1034
1034
|
}>>>;
|
|
1035
1035
|
writePolicy: z.ZodOptional<z.ZodObject<{
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
2
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { resolveAutomationSafetyForTrust } from "../../user-context/trust-policy.js";
|
|
4
|
+
import { getUserTrustPolicy } from "../../storage/sqlite/user-trust-repository.js";
|
|
5
|
+
import "../../storage/sqlite/index.js";
|
|
3
6
|
import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
|
|
4
7
|
import { AutomationAlreadyRunningError } from "../service/automation-service.js";
|
|
5
8
|
import { logRouteError } from "../../gateway/hono/lib/route-logger.js";
|
|
@@ -52,7 +55,16 @@ function registerAutomationRoutes(authenticated, deps) {
|
|
|
52
55
|
agentId,
|
|
53
56
|
language: body?.language === "zh" ? "zh" : "en"
|
|
54
57
|
}, c.req.raw.signal);
|
|
55
|
-
|
|
58
|
+
const safetyMode = resolveAutomationSafetyForTrust(getUserTrustPolicy().defaultActionLevel, draft.automation.safety?.mode);
|
|
59
|
+
const trustedDraft = {
|
|
60
|
+
...draft,
|
|
61
|
+
automation: {
|
|
62
|
+
...draft.automation,
|
|
63
|
+
safety: { mode: safetyMode }
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
trustedDraft.simulation = simulateAutomation(trustedDraft.automation);
|
|
67
|
+
return c.json({ draft: trustedDraft }, 201);
|
|
56
68
|
} catch (err) {
|
|
57
69
|
logRouteError(log, c, err, "gateway.route.automations", { operation: "draft" });
|
|
58
70
|
return c.json({ error: err instanceof Error ? err.message : "Failed to create automation draft" }, 400);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routes.js","names":[],"sources":["../../../../src/automations/api/routes.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport { resolveDefaultAgentId } from '../../agent/agent-scope.js';\nimport type { AuthenticatedRouteDeps } from '../../gateway/hono/routes/deps.js';\nimport { logRouteError } from '../../gateway/hono/lib/route-logger.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { AutomationDraftService, simulateAutomation } from '../draft/index.js';\nimport type { CreateAutomationInput } from '../domain/validation.js';\nimport { AutomationAlreadyRunningError } from '../service/automation-service.js';\n\nconst log = createLogger('Gateway:Automations');\n\nfunction parseLimit(raw: string | undefined, fallback: number): number {\n const parsed = raw ? Number.parseInt(raw, 10) : fallback;\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction parseProjectId(raw: string | undefined): string | undefined {\n const trimmed = raw?.trim();\n return trimmed || undefined;\n}\n\nexport function registerAutomationRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n\n authenticated.get('/api/automations', async (c) => {\n const projectId = parseProjectId(c.req.query('projectId'));\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const automations = await service.automationServiceInstance.list({ projectId });\n return c.json({ automations });\n });\n\n authenticated.post('/api/automations', async (c) => {\n try {\n const body = await c.req.json() as CreateAutomationInput;\n if (body.projectId && !service.projects.get(body.projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const automation = await service.automationServiceInstance.create(body);\n return c.json({ automation }, 201);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'create' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create automation' }, 400);\n }\n });\n\n authenticated.get('/api/automations/metrics', async (c) => {\n const metrics = await service.automationServiceInstance.getMetrics();\n return c.json(metrics);\n });\n\n authenticated.post('/api/automations/draft', async (c) => {\n const body = await c.req.json().catch(() => null) as {\n prompt?: unknown;\n agentId?: unknown;\n language?: unknown;\n } | null;\n const prompt = typeof body?.prompt === 'string' ? body.prompt.trim() : '';\n if (!prompt) return c.json({ error: 'prompt is required' }, 400);\n const agentId = typeof body?.agentId === 'string' && body.agentId.trim()\n ? body.agentId.trim()\n : resolveDefaultAgentId(service.currentConfig);\n const draftService = new AutomationDraftService({ config: service.currentConfig });\n try {\n const draft = await draftService.createDraft({\n prompt,\n agentId,\n language: body?.language === 'zh' ? 'zh' : 'en',\n }, c.req.raw.signal);\n return c.json({ draft }, 201);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'draft' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create automation draft' }, 400);\n }\n });\n\n authenticated.post('/api/automations/simulate', async (c) => {\n try {\n const body = await c.req.json() as CreateAutomationInput;\n return c.json({ simulation: simulateAutomation(body) });\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'simulate' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to simulate automation' }, 400);\n }\n });\n\n authenticated.get('/api/automation-runs', async (c) => {\n const automationId = c.req.query('automationId')?.trim();\n const projectId = parseProjectId(c.req.query('projectId'));\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const runs = await service.automationServiceInstance.listRuns({\n automationId: automationId || undefined,\n projectId: automationId ? undefined : projectId,\n limit: parseLimit(c.req.query('limit'), 50),\n });\n return c.json({ runs });\n });\n\n authenticated.get('/api/automation-runs/product-events', async (c) => {\n const eventType = c.req.query('eventType')?.trim();\n if (!eventType) return c.json({ error: 'eventType is required' }, 400);\n const payloadKey = c.req.query('payloadKey')?.trim();\n const payloadValue = c.req.query('payloadValue')?.trim();\n const items = await service.automationServiceInstance.listRunsForProductEvent({\n eventType,\n source: c.req.query('source')?.trim() || undefined,\n payloadKey: payloadKey || undefined,\n payloadValue: payloadValue || undefined,\n limit: parseLimit(c.req.query('limit'), 10),\n });\n return c.json({ items });\n });\n\n authenticated.get('/api/automation-runs/:runId', async (c) => {\n const run = await service.automationServiceInstance.getRun(c.req.param('runId'));\n if (!run) return c.json({ error: 'Run not found' }, 404);\n return c.json({ run });\n });\n\n authenticated.get('/api/automation-runs/:runId/events', async (c) => {\n const runId = c.req.param('runId');\n const run = await service.automationServiceInstance.getRun(runId);\n if (!run) return c.json({ error: 'Run not found' }, 404);\n const events = await service.automationServiceInstance.listRunEvents(runId);\n return c.json({ events });\n });\n\n authenticated.post('/api/automation-runs/:runId/rerun', async (c) => {\n try {\n const run = await service.automationServiceInstance.rerunFromRun(c.req.param('runId'));\n return c.json({ run }, 201);\n } catch (err) {\n if (err instanceof AutomationAlreadyRunningError) {\n return c.json({\n error: err.message,\n code: 'automation_already_running',\n automationId: err.automationId,\n runningRunId: err.runningRunId,\n }, 409);\n }\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'rerun' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to rerun automation' }, 400);\n }\n });\n\n authenticated.post('/api/automation-runs/:runId/repair-draft', async (c) => {\n const runId = c.req.param('runId');\n const run = await service.automationServiceInstance.getRun(runId);\n if (!run) return c.json({ error: 'Run not found' }, 404);\n if (!['failed', 'timeout', 'cancelled'].includes(run.status)) {\n return c.json({ error: 'Repair draft is only available for failed, timed out, or cancelled runs' }, 400);\n }\n const automation = await service.automationServiceInstance.get(run.automationId);\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n const body = await c.req.json().catch(() => null) as { agentId?: unknown; language?: unknown } | null;\n const agentId = typeof body?.agentId === 'string' && body.agentId.trim()\n ? body.agentId.trim()\n : resolveDefaultAgentId(service.currentConfig);\n const events = await service.automationServiceInstance.listRunEvents(runId);\n const draftService = new AutomationDraftService({ config: service.currentConfig });\n try {\n const repair = await draftService.createRepairDraft({\n agentId,\n automation,\n run,\n events,\n language: body?.language === 'zh' ? 'zh' : 'en',\n }, c.req.raw.signal);\n return c.json({ repair }, 201);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'repairDraft' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create automation repair draft' }, 400);\n }\n });\n\n authenticated.post('/api/automation-runs/:runId/cancel', async (c) => {\n const cancelled = await service.automationServiceInstance.cancelRun(c.req.param('runId'));\n return c.json({ cancelled });\n });\n\n authenticated.get('/api/automations/:id', async (c) => {\n const automation = await service.automationServiceInstance.get(c.req.param('id'));\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n });\n\n authenticated.patch('/api/automations/:id', async (c) => {\n try {\n const patch = await c.req.json() as Partial<CreateAutomationInput> & { enabled?: boolean };\n if (patch.projectId && !service.projects.get(patch.projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const automation = await service.automationServiceInstance.update(c.req.param('id'), patch);\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'update' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to update automation' }, 400);\n }\n });\n\n authenticated.delete('/api/automations/:id', async (c) => {\n const removed = await service.automationServiceInstance.remove(c.req.param('id'));\n return c.json({ removed });\n });\n\n authenticated.post('/api/automations/:id/run', async (c) => {\n try {\n const run = await service.automationServiceInstance.runNow(c.req.param('id'));\n return c.json({ run });\n } catch (err) {\n if (err instanceof AutomationAlreadyRunningError) {\n return c.json({\n error: err.message,\n code: 'automation_already_running',\n automationId: err.automationId,\n runningRunId: err.runningRunId,\n }, 409);\n }\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'run' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to run automation' }, 400);\n }\n });\n\n authenticated.post('/api/automations/:id/pause', async (c) => {\n const automation = await service.automationServiceInstance.pause(c.req.param('id'));\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n });\n\n authenticated.post('/api/automations/:id/resume', async (c) => {\n const automation = await service.automationServiceInstance.resume(c.req.param('id'));\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n });\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"routes.js","names":[],"sources":["../../../../src/automations/api/routes.ts"],"sourcesContent":["import type { Hono } from 'hono';\n\nimport { resolveDefaultAgentId } from '../../agent/agent-scope.js';\nimport type { AuthenticatedRouteDeps } from '../../gateway/hono/routes/deps.js';\nimport { logRouteError } from '../../gateway/hono/lib/route-logger.js';\nimport { getUserTrustPolicy } from '../../storage/sqlite/index.js';\nimport { resolveAutomationSafetyForTrust } from '../../user-context/trust-policy.js';\nimport { createLogger } from '../../utils/logger.js';\nimport { AutomationDraftService, simulateAutomation } from '../draft/index.js';\nimport type { CreateAutomationInput } from '../domain/validation.js';\nimport { AutomationAlreadyRunningError } from '../service/automation-service.js';\n\nconst log = createLogger('Gateway:Automations');\n\nfunction parseLimit(raw: string | undefined, fallback: number): number {\n const parsed = raw ? Number.parseInt(raw, 10) : fallback;\n return Number.isFinite(parsed) ? parsed : fallback;\n}\n\nfunction parseProjectId(raw: string | undefined): string | undefined {\n const trimmed = raw?.trim();\n return trimmed || undefined;\n}\n\nexport function registerAutomationRoutes(authenticated: Hono, deps: AuthenticatedRouteDeps): void {\n const { service } = deps;\n\n authenticated.get('/api/automations', async (c) => {\n const projectId = parseProjectId(c.req.query('projectId'));\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const automations = await service.automationServiceInstance.list({ projectId });\n return c.json({ automations });\n });\n\n authenticated.post('/api/automations', async (c) => {\n try {\n const body = await c.req.json() as CreateAutomationInput;\n if (body.projectId && !service.projects.get(body.projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const automation = await service.automationServiceInstance.create(body);\n return c.json({ automation }, 201);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'create' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create automation' }, 400);\n }\n });\n\n authenticated.get('/api/automations/metrics', async (c) => {\n const metrics = await service.automationServiceInstance.getMetrics();\n return c.json(metrics);\n });\n\n authenticated.post('/api/automations/draft', async (c) => {\n const body = await c.req.json().catch(() => null) as {\n prompt?: unknown;\n agentId?: unknown;\n language?: unknown;\n } | null;\n const prompt = typeof body?.prompt === 'string' ? body.prompt.trim() : '';\n if (!prompt) return c.json({ error: 'prompt is required' }, 400);\n const agentId = typeof body?.agentId === 'string' && body.agentId.trim()\n ? body.agentId.trim()\n : resolveDefaultAgentId(service.currentConfig);\n const draftService = new AutomationDraftService({ config: service.currentConfig });\n try {\n const draft = await draftService.createDraft({\n prompt,\n agentId,\n language: body?.language === 'zh' ? 'zh' : 'en',\n }, c.req.raw.signal);\n const safetyMode = resolveAutomationSafetyForTrust(\n getUserTrustPolicy().defaultActionLevel,\n draft.automation.safety?.mode,\n );\n const trustedDraft = {\n ...draft,\n automation: { ...draft.automation, safety: { mode: safetyMode } },\n };\n trustedDraft.simulation = simulateAutomation(trustedDraft.automation);\n return c.json({ draft: trustedDraft }, 201);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'draft' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create automation draft' }, 400);\n }\n });\n\n authenticated.post('/api/automations/simulate', async (c) => {\n try {\n const body = await c.req.json() as CreateAutomationInput;\n return c.json({ simulation: simulateAutomation(body) });\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'simulate' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to simulate automation' }, 400);\n }\n });\n\n authenticated.get('/api/automation-runs', async (c) => {\n const automationId = c.req.query('automationId')?.trim();\n const projectId = parseProjectId(c.req.query('projectId'));\n if (projectId && !service.projects.get(projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const runs = await service.automationServiceInstance.listRuns({\n automationId: automationId || undefined,\n projectId: automationId ? undefined : projectId,\n limit: parseLimit(c.req.query('limit'), 50),\n });\n return c.json({ runs });\n });\n\n authenticated.get('/api/automation-runs/product-events', async (c) => {\n const eventType = c.req.query('eventType')?.trim();\n if (!eventType) return c.json({ error: 'eventType is required' }, 400);\n const payloadKey = c.req.query('payloadKey')?.trim();\n const payloadValue = c.req.query('payloadValue')?.trim();\n const items = await service.automationServiceInstance.listRunsForProductEvent({\n eventType,\n source: c.req.query('source')?.trim() || undefined,\n payloadKey: payloadKey || undefined,\n payloadValue: payloadValue || undefined,\n limit: parseLimit(c.req.query('limit'), 10),\n });\n return c.json({ items });\n });\n\n authenticated.get('/api/automation-runs/:runId', async (c) => {\n const run = await service.automationServiceInstance.getRun(c.req.param('runId'));\n if (!run) return c.json({ error: 'Run not found' }, 404);\n return c.json({ run });\n });\n\n authenticated.get('/api/automation-runs/:runId/events', async (c) => {\n const runId = c.req.param('runId');\n const run = await service.automationServiceInstance.getRun(runId);\n if (!run) return c.json({ error: 'Run not found' }, 404);\n const events = await service.automationServiceInstance.listRunEvents(runId);\n return c.json({ events });\n });\n\n authenticated.post('/api/automation-runs/:runId/rerun', async (c) => {\n try {\n const run = await service.automationServiceInstance.rerunFromRun(c.req.param('runId'));\n return c.json({ run }, 201);\n } catch (err) {\n if (err instanceof AutomationAlreadyRunningError) {\n return c.json({\n error: err.message,\n code: 'automation_already_running',\n automationId: err.automationId,\n runningRunId: err.runningRunId,\n }, 409);\n }\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'rerun' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to rerun automation' }, 400);\n }\n });\n\n authenticated.post('/api/automation-runs/:runId/repair-draft', async (c) => {\n const runId = c.req.param('runId');\n const run = await service.automationServiceInstance.getRun(runId);\n if (!run) return c.json({ error: 'Run not found' }, 404);\n if (!['failed', 'timeout', 'cancelled'].includes(run.status)) {\n return c.json({ error: 'Repair draft is only available for failed, timed out, or cancelled runs' }, 400);\n }\n const automation = await service.automationServiceInstance.get(run.automationId);\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n const body = await c.req.json().catch(() => null) as { agentId?: unknown; language?: unknown } | null;\n const agentId = typeof body?.agentId === 'string' && body.agentId.trim()\n ? body.agentId.trim()\n : resolveDefaultAgentId(service.currentConfig);\n const events = await service.automationServiceInstance.listRunEvents(runId);\n const draftService = new AutomationDraftService({ config: service.currentConfig });\n try {\n const repair = await draftService.createRepairDraft({\n agentId,\n automation,\n run,\n events,\n language: body?.language === 'zh' ? 'zh' : 'en',\n }, c.req.raw.signal);\n return c.json({ repair }, 201);\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'repairDraft' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to create automation repair draft' }, 400);\n }\n });\n\n authenticated.post('/api/automation-runs/:runId/cancel', async (c) => {\n const cancelled = await service.automationServiceInstance.cancelRun(c.req.param('runId'));\n return c.json({ cancelled });\n });\n\n authenticated.get('/api/automations/:id', async (c) => {\n const automation = await service.automationServiceInstance.get(c.req.param('id'));\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n });\n\n authenticated.patch('/api/automations/:id', async (c) => {\n try {\n const patch = await c.req.json() as Partial<CreateAutomationInput> & { enabled?: boolean };\n if (patch.projectId && !service.projects.get(patch.projectId)) {\n return c.json({ error: 'Project not found' }, 404);\n }\n const automation = await service.automationServiceInstance.update(c.req.param('id'), patch);\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n } catch (err) {\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'update' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to update automation' }, 400);\n }\n });\n\n authenticated.delete('/api/automations/:id', async (c) => {\n const removed = await service.automationServiceInstance.remove(c.req.param('id'));\n return c.json({ removed });\n });\n\n authenticated.post('/api/automations/:id/run', async (c) => {\n try {\n const run = await service.automationServiceInstance.runNow(c.req.param('id'));\n return c.json({ run });\n } catch (err) {\n if (err instanceof AutomationAlreadyRunningError) {\n return c.json({\n error: err.message,\n code: 'automation_already_running',\n automationId: err.automationId,\n runningRunId: err.runningRunId,\n }, 409);\n }\n logRouteError(log, c, err, 'gateway.route.automations', { operation: 'run' });\n return c.json({ error: err instanceof Error ? err.message : 'Failed to run automation' }, 400);\n }\n });\n\n authenticated.post('/api/automations/:id/pause', async (c) => {\n const automation = await service.automationServiceInstance.pause(c.req.param('id'));\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n });\n\n authenticated.post('/api/automations/:id/resume', async (c) => {\n const automation = await service.automationServiceInstance.resume(c.req.param('id'));\n if (!automation) return c.json({ error: 'Automation not found' }, 404);\n return c.json({ automation });\n });\n}\n"],"mappings":"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"}
|
|
@@ -214,13 +214,6 @@ export declare const CreateAutomationSchema: z.ZodObject<{
|
|
|
214
214
|
maxSubagents: z.ZodOptional<z.ZodNumber>;
|
|
215
215
|
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
216
216
|
}, z.core.$strict>], "kind">;
|
|
217
|
-
safety: z.ZodOptional<z.ZodObject<{
|
|
218
|
-
mode: z.ZodEnum<{
|
|
219
|
-
suggest_only: "suggest_only";
|
|
220
|
-
ask_before_apply: "ask_before_apply";
|
|
221
|
-
auto_apply: "auto_apply";
|
|
222
|
-
}>;
|
|
223
|
-
}, z.core.$strict>>;
|
|
224
217
|
description: z.ZodOptional<z.ZodString>;
|
|
225
218
|
trigger: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
226
219
|
kind: z.ZodLiteral<"manual">;
|
|
@@ -247,6 +240,13 @@ export declare const CreateAutomationSchema: z.ZodObject<{
|
|
|
247
240
|
source: z.ZodPreprocess<z.ZodOptional<z.ZodString>>;
|
|
248
241
|
payloadMatch: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
|
|
249
242
|
}, z.core.$strict>], "kind">;
|
|
243
|
+
safety: z.ZodOptional<z.ZodObject<{
|
|
244
|
+
mode: z.ZodEnum<{
|
|
245
|
+
suggest_only: "suggest_only";
|
|
246
|
+
ask_before_apply: "ask_before_apply";
|
|
247
|
+
auto_apply: "auto_apply";
|
|
248
|
+
}>;
|
|
249
|
+
}, z.core.$strict>>;
|
|
250
250
|
afterRun: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
251
251
|
kind: z.ZodLiteral<"none">;
|
|
252
252
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -306,13 +306,6 @@ export declare const UpdateAutomationSchema: z.ZodObject<{
|
|
|
306
306
|
maxSubagents: z.ZodOptional<z.ZodNumber>;
|
|
307
307
|
timeoutSeconds: z.ZodOptional<z.ZodNumber>;
|
|
308
308
|
}, z.core.$strict>], "kind">>;
|
|
309
|
-
safety: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
310
|
-
mode: z.ZodEnum<{
|
|
311
|
-
suggest_only: "suggest_only";
|
|
312
|
-
ask_before_apply: "ask_before_apply";
|
|
313
|
-
auto_apply: "auto_apply";
|
|
314
|
-
}>;
|
|
315
|
-
}, z.core.$strict>>>;
|
|
316
309
|
description: z.ZodOptional<z.ZodOptional<z.ZodString>>;
|
|
317
310
|
trigger: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
318
311
|
kind: z.ZodLiteral<"manual">;
|
|
@@ -354,6 +347,13 @@ export declare const UpdateAutomationSchema: z.ZodObject<{
|
|
|
354
347
|
lastError: z.ZodOptional<z.ZodString>;
|
|
355
348
|
consecutiveFailures: z.ZodOptional<z.ZodNumber>;
|
|
356
349
|
}, z.core.$strict>>>;
|
|
350
|
+
safety: z.ZodOptional<z.ZodOptional<z.ZodObject<{
|
|
351
|
+
mode: z.ZodEnum<{
|
|
352
|
+
suggest_only: "suggest_only";
|
|
353
|
+
ask_before_apply: "ask_before_apply";
|
|
354
|
+
auto_apply: "auto_apply";
|
|
355
|
+
}>;
|
|
356
|
+
}, z.core.$strict>>>;
|
|
357
357
|
afterRun: z.ZodOptional<z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
358
358
|
kind: z.ZodLiteral<"none">;
|
|
359
359
|
}, z.core.$strict>, z.ZodObject<{
|
|
@@ -35,9 +35,6 @@ export declare function buildAutomationDraftResponse(draft: GeneratedAutomationD
|
|
|
35
35
|
maxSubagents?: number;
|
|
36
36
|
timeoutSeconds?: number;
|
|
37
37
|
};
|
|
38
|
-
safety?: {
|
|
39
|
-
mode: "suggest_only" | "ask_before_apply" | "auto_apply";
|
|
40
|
-
};
|
|
41
38
|
description?: string;
|
|
42
39
|
trigger?: {
|
|
43
40
|
kind: "manual";
|
|
@@ -64,6 +61,9 @@ export declare function buildAutomationDraftResponse(draft: GeneratedAutomationD
|
|
|
64
61
|
source?: string;
|
|
65
62
|
payloadMatch?: Record<string, string | number | boolean>;
|
|
66
63
|
};
|
|
64
|
+
safety?: {
|
|
65
|
+
mode: "suggest_only" | "ask_before_apply" | "auto_apply";
|
|
66
|
+
};
|
|
67
67
|
afterRun?: {
|
|
68
68
|
kind: "none";
|
|
69
69
|
} | {
|
|
@@ -59,12 +59,22 @@ export declare function ensureBrowserExtensionArtifacts(opts?: {
|
|
|
59
59
|
export declare function ensureBrowserExtensionOnStartup(_config: unknown): Promise<void>;
|
|
60
60
|
export declare function readInstalledExtensionDir(cacheDir?: string): Promise<string | null>;
|
|
61
61
|
export type BrowserExtensionOpenAction = 'chrome' | 'folder' | 'both';
|
|
62
|
+
type ExtensionManagerBrowser = 'chrome' | 'edge';
|
|
63
|
+
interface ExtensionManagerTarget {
|
|
64
|
+
browser: ExtensionManagerBrowser;
|
|
65
|
+
executablePath: string;
|
|
66
|
+
url: string;
|
|
67
|
+
}
|
|
68
|
+
export declare function resolveWindowsExtensionManager(env?: NodeJS.ProcessEnv): ExtensionManagerTarget | null;
|
|
62
69
|
/**
|
|
63
|
-
* Open
|
|
70
|
+
* Open the compatible browser's extension manager and/or reveal the installed extension folder
|
|
71
|
+
* on the gateway host.
|
|
64
72
|
*/
|
|
65
73
|
export declare function openBrowserExtensionInstallUi(opts: {
|
|
66
74
|
action: BrowserExtensionOpenAction;
|
|
67
75
|
cacheDir?: string;
|
|
68
76
|
}): Promise<{
|
|
69
77
|
extensionDir: string;
|
|
78
|
+
browser?: ExtensionManagerBrowser;
|
|
70
79
|
}>;
|
|
80
|
+
export {};
|