@xopcai/xopc 0.0.103 → 0.0.104
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 +7 -4
- package/README.zh-CN.md +7 -4
- package/dist/_virtual/_rolldown/runtime.js +2 -3
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.d.ts +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js +1 -1
- package/dist/extensions/feishu/src/adapters/cli-login.js.map +1 -1
- package/dist/extensions/feishu/src/adapters/gateway-setup.d.ts +2 -0
- package/dist/extensions/feishu/src/adapters/gateway-setup.js +225 -0
- package/dist/extensions/feishu/src/adapters/gateway-setup.js.map +1 -0
- package/dist/extensions/feishu/src/index.d.ts +8 -1
- package/dist/extensions/feishu/src/index.js +14 -1
- package/dist/extensions/feishu/src/index.js.map +1 -0
- package/dist/extensions/feishu/src/outbound/outbound-adapter.js +1 -1
- package/dist/extensions/feishu/src/plugin.d.ts +2 -1
- package/dist/extensions/feishu/src/plugin.js +2 -0
- package/dist/extensions/feishu/src/plugin.js.map +1 -1
- package/dist/extensions/feishu/src/streaming/streaming-adapter.js +1 -1
- package/dist/extensions/feishu/src/transport/webhook/monitor.js +1 -1
- package/dist/extensions/feishu/xopc.extension.json +66 -1
- package/dist/extensions/telegram/src/adapters/gateway-setup.d.ts +2 -0
- package/dist/extensions/telegram/src/adapters/gateway-setup.js +146 -0
- package/dist/extensions/telegram/src/adapters/gateway-setup.js.map +1 -0
- package/dist/extensions/telegram/src/adapters/security-adapter.js +1 -1
- package/dist/extensions/telegram/src/command-handler.js +1 -2
- package/dist/extensions/telegram/src/command-handler.js.map +1 -1
- package/dist/extensions/telegram/src/config-schema.js +2 -2
- package/dist/extensions/telegram/src/config-schema.js.map +1 -1
- package/dist/extensions/telegram/src/doctor.d.ts +1 -0
- package/dist/extensions/telegram/src/doctor.js +68 -0
- package/dist/extensions/telegram/src/doctor.js.map +1 -1
- package/dist/extensions/telegram/src/index.d.ts +8 -1
- package/dist/extensions/telegram/src/index.js +15 -2
- package/dist/extensions/telegram/src/index.js.map +1 -0
- package/dist/extensions/telegram/src/plugin.d.ts +13 -5
- package/dist/extensions/telegram/src/plugin.js +32 -12
- package/dist/extensions/telegram/src/plugin.js.map +1 -1
- package/dist/extensions/telegram/src/proxy-fetch.js +22 -5
- package/dist/extensions/telegram/src/proxy-fetch.js.map +1 -1
- package/dist/extensions/telegram/xopc.extension.json +412 -5
- package/dist/extensions/weixin/src/adapters/onboard-cli.js +2 -2
- package/dist/extensions/weixin/src/adapters/onboard-cli.js.map +1 -1
- package/dist/extensions/weixin/src/api/api.js +1 -1
- package/dist/extensions/weixin/src/index.d.ts +8 -0
- package/dist/extensions/weixin/src/index.js +12 -1
- package/dist/extensions/weixin/src/index.js.map +1 -0
- package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
- package/dist/extensions/weixin/src/plugin.d.ts +2 -1
- package/dist/extensions/weixin/src/plugin.js +77 -2
- package/dist/extensions/weixin/src/plugin.js.map +1 -1
- package/dist/extensions/weixin/xopc.extension.json +52 -0
- package/dist/gateway/static/root/assets/agents-CvsBrBfi.js +396 -0
- package/dist/gateway/static/root/assets/{apps-page-C5RmwmTT.js → apps-page-L-IwQTe0.js} +1 -1
- package/dist/gateway/static/root/assets/browser-BLJWD7WI.js +8 -0
- package/dist/gateway/static/root/assets/channels-settings-D95KuPeP.js +1 -0
- package/dist/gateway/static/root/assets/cron-page-CfkWXDAI.js +1 -0
- package/dist/gateway/static/root/assets/{dist-CWm8hTXZ.js → dist-C6vclgEL.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-BzYgTkS9.js → extension-debug-page-D4JYAbsX.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-BmTZH6gL.js → extension-page-_T62gi6e.js} +1 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CkJbjyM-.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-CMoWY2Si.js → fetch-B5aiIguv.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-startup-retry-DqmLXhs6.js +1 -0
- package/dist/gateway/static/root/assets/heartbeat-config-api-HwJV1K_Y.js +1 -0
- package/dist/gateway/static/root/assets/index-BPYKW7FB.css +1 -0
- package/dist/gateway/static/root/assets/index-DvTb6wNR.js +4845 -0
- package/dist/gateway/static/root/assets/{logs-page-BjdQjHwk.js → logs-page-DsjtTjBy.js} +2 -2
- package/dist/gateway/static/root/assets/{note-detail-page-8Er4197b.js → note-detail-page-B2V7RhgD.js} +43 -43
- package/dist/gateway/static/root/assets/{note-time-CF3vf1jm.js → note-time-BG8GCTr4.js} +1 -1
- package/dist/gateway/static/root/assets/notes-page-xrcVBQ6Z.js +1 -0
- package/dist/gateway/static/root/assets/schema-form-S-QUvhul.js +1 -0
- package/dist/gateway/static/root/assets/sessions-page-CrQer6Au.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-DujQl9c7.js +2 -0
- package/dist/gateway/static/root/assets/{settings-form-section-C7qA7y0J.js → settings-form-section-r1V7dRV6.js} +1 -1
- package/dist/gateway/static/root/assets/settings-page-C9nrONQ2.js +3 -0
- package/dist/gateway/static/root/assets/{share-preview-page-Tvr5Mtq5.js → share-preview-page-DOFy0FNt.js} +1 -1
- package/dist/gateway/static/root/assets/skills-page-DmTsrs_a.js +2 -0
- package/dist/gateway/static/root/assets/{theme-store-HTvJlFLL.js → theme-store-Bo3j5Ovv.js} +1 -1
- package/dist/gateway/static/root/assets/url-WgQIjFZu.js +3 -0
- package/dist/gateway/static/root/assets/voice-api-key-field-AjmUAlEQ.js +1 -0
- package/dist/gateway/static/root/assets/{workflow-page.utils-CeBkAjP7.js → workflow-page.utils-DLEJ92gK.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-BnjjKrM1.js +27 -0
- package/dist/gateway/static/root/index.html +6 -5
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +18 -6
- package/dist/src/agent/agent-manager.js +60 -35
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/builtin-agent-ids.d.ts +2 -0
- package/dist/src/agent/builtin-agent-ids.js +17 -0
- package/dist/src/agent/builtin-agent-ids.js.map +1 -0
- package/dist/src/agent/child-agent-factory.d.ts +4 -0
- package/dist/src/agent/child-agent-factory.js +28 -8
- package/dist/src/agent/child-agent-factory.js.map +1 -1
- package/dist/src/agent/context/workspace-seed.js +1 -1
- package/dist/src/agent/context/workspace-templates/AGENTS.md +23 -184
- package/dist/src/agent/embedded/run-turn.js +8 -2
- package/dist/src/agent/embedded/run-turn.js.map +1 -1
- package/dist/src/agent/embedded/session-tool-result-guard.js +1 -1
- package/dist/src/agent/embedded/subscribe-session.js +33 -51
- package/dist/src/agent/embedded/subscribe-session.js.map +1 -1
- package/dist/src/agent/embedded/types.d.ts +36 -35
- package/dist/src/agent/fallback/candidates.js +1 -1
- package/dist/src/agent/fallback/candidates.js.map +1 -1
- package/dist/src/agent/inbound/inbound-loop.js +1 -1
- package/dist/src/agent/inbound/turn-dispatcher.d.ts +1 -0
- package/dist/src/agent/inbound/turn-dispatcher.js +24 -5
- package/dist/src/agent/inbound/turn-dispatcher.js.map +1 -1
- package/dist/src/agent/models/manager.d.ts +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/models/manager.js.map +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.d.ts +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js +1 -1
- package/dist/src/agent/orchestration/run-agent-turn-with-fallbacks.js.map +1 -1
- package/dist/src/agent/prompt/sections/tooling.js +4 -0
- package/dist/src/agent/prompt/sections/tooling.js.map +1 -1
- package/dist/src/agent/service/direct-turn-helpers.d.ts +1 -0
- package/dist/src/agent/service/direct-turn-helpers.js +1 -1
- package/dist/src/agent/service/direct-turn-helpers.js.map +1 -1
- package/dist/src/agent/service/process-direct-streaming.d.ts +1 -0
- package/dist/src/agent/service/process-direct-streaming.js +35 -18
- package/dist/src/agent/service/process-direct-streaming.js.map +1 -1
- package/dist/src/agent/service-inbound-utils.d.ts +0 -1
- package/dist/src/agent/service-inbound-utils.js +1 -17
- package/dist/src/agent/service-inbound-utils.js.map +1 -1
- package/dist/src/agent/service.d.ts +4 -4
- package/dist/src/agent/service.js +27 -15
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/session/session-config-service.d.ts +1 -0
- package/dist/src/agent/session/session-config-service.js +9 -1
- package/dist/src/agent/session/session-config-service.js.map +1 -1
- package/dist/src/agent/session/session-inspector.d.ts +2 -1
- package/dist/src/agent/session/session-inspector.js +4 -0
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/skills/config.js +1 -3
- package/dist/src/agent/skills/config.js.map +1 -1
- package/dist/src/agent/skills/format-skills-prompt.d.ts +1 -0
- package/dist/src/agent/skills/format-skills-prompt.js +3 -2
- package/dist/src/agent/skills/format-skills-prompt.js.map +1 -1
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/skills/index.js +20 -5
- package/dist/src/agent/skills/index.js.map +1 -1
- package/dist/src/agent/skills/installer.js +14 -27
- package/dist/src/agent/skills/installer.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js +11 -1
- package/dist/src/agent/skills/marketplace/adapters/clawhub/adapter.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +18 -4
- package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js +11 -2
- package/dist/src/agent/skills/marketplace/adapters/store/adapter.js.map +1 -1
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.d.ts +2 -2
- package/dist/src/agent/skills/marketplace/adapters/store/store-api-client.js.map +1 -1
- package/dist/src/agent/skills/skill-manager.d.ts +4 -1
- package/dist/src/agent/skills/skill-manager.js +3 -3
- package/dist/src/agent/skills/skill-manager.js.map +1 -1
- package/dist/src/agent/skills/skill-view-path.d.ts +1 -17
- package/dist/src/agent/skills/skill-view-path.js +3 -66
- package/dist/src/agent/skills/skill-view-path.js.map +1 -1
- package/dist/src/agent/skills/test-framework.js +2 -3
- package/dist/src/agent/skills/test-framework.js.map +1 -1
- package/dist/src/agent/streaming/reasoning-visibility-sse.js +1 -0
- package/dist/src/agent/streaming/reasoning-visibility-sse.js.map +1 -1
- package/dist/src/agent/tool-manuals/browser.d.ts +1 -0
- package/{skills/browser/SKILL.md → dist/src/agent/tool-manuals/browser.js} +51 -54
- package/dist/src/agent/tool-manuals/browser.js.map +1 -0
- package/dist/src/agent/tool-manuals/index.d.ts +10 -0
- package/dist/src/agent/tool-manuals/index.js +28 -0
- package/dist/src/agent/tool-manuals/index.js.map +1 -0
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js +1 -1
- package/dist/src/agent/tools/browser/tool/browser-use-tool.js.map +1 -1
- package/dist/src/agent/tools/factory.js +7 -5
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +5 -4
- package/dist/src/agent/tools/session-search-tool.js +1 -1
- package/dist/src/agent/tools/shell.js +1 -1
- package/dist/src/agent/tools/skills-tools.js +37 -8
- package/dist/src/agent/tools/skills-tools.js.map +1 -1
- package/dist/src/agent/tools/tool-manual-tool.d.ts +6 -0
- package/dist/src/agent/tools/tool-manual-tool.js +34 -0
- package/dist/src/agent/tools/tool-manual-tool.js.map +1 -0
- package/dist/src/agent/tools/web-extract.js +2 -2
- package/dist/src/agent/tools/web.js +1 -1
- package/dist/src/agent/workflow/catalog.d.ts +7 -2
- package/dist/src/agent/workflow/catalog.js +66 -25
- package/dist/src/agent/workflow/catalog.js.map +1 -1
- package/dist/src/agent/workflow/subagent-runner.d.ts +3 -0
- package/dist/src/agent/workflow/subagent-runner.js +50 -4
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent/workflow/types.d.ts +10 -0
- package/dist/src/auth/credentials.js +10 -5
- package/dist/src/auth/credentials.js.map +1 -1
- package/dist/src/browser/actions/extension-registry-bridge.js +1 -1
- package/dist/src/browser/actions/registry.js +2 -2
- package/dist/src/browser/cdp-local-launcher.js +1 -1
- package/dist/src/browser/index.js +3 -3
- package/dist/src/browser/providers/browser-ext-install.js +1 -1
- package/dist/src/browser/providers/cloakbrowser.js +1 -1
- package/dist/src/channels/catalog/channel-catalog-service.d.ts +11 -0
- package/dist/src/channels/catalog/channel-catalog-service.js +168 -0
- package/dist/src/channels/catalog/channel-catalog-service.js.map +1 -0
- package/dist/src/channels/catalog/channel-catalog-types.d.ts +22 -0
- package/dist/src/channels/catalog/channel-catalog-types.js +1 -0
- package/dist/src/channels/dock.d.ts +0 -7
- package/dist/src/channels/dock.js +1 -21
- package/dist/src/channels/index.d.ts +1 -3
- package/dist/src/channels/index.js +1 -5
- package/dist/src/channels/lifecycle-supervisor.d.ts +1 -0
- package/dist/src/channels/lifecycle-supervisor.js +11 -0
- package/dist/src/channels/lifecycle-supervisor.js.map +1 -1
- package/dist/src/channels/manager.d.ts +1 -0
- package/dist/src/channels/manager.js +3 -0
- package/dist/src/channels/manager.js.map +1 -1
- package/dist/src/channels/pairing/pairing-channel.d.ts +2 -3
- package/dist/src/channels/pairing/pairing-messages.js +1 -1
- package/dist/src/channels/pairing/pairing-messages.js.map +1 -1
- package/dist/src/channels/pairing/pairing-service.d.ts +1 -1
- package/dist/src/channels/pairing/pairing-service.js +8 -27
- package/dist/src/channels/pairing/pairing-service.js.map +1 -1
- package/dist/src/channels/plugin-types.d.ts +3 -1
- package/dist/src/channels/plugins/types.adapters.d.ts +55 -2
- package/dist/src/channels/telegram/index.js +1 -1
- package/dist/src/chat-commands/builtins/config.js +4 -4
- package/dist/src/chat-commands/builtins/config.js.map +1 -1
- package/dist/src/chat-commands/config-paths.js +1 -1
- package/dist/src/chat-commands/config-paths.js.map +1 -1
- package/dist/src/chat-commands/context.js +1 -1
- package/dist/src/chat-commands/context.js.map +1 -1
- package/dist/src/cli/bin.js +1 -1
- package/dist/src/cli/command-manifest.js +1 -1
- package/dist/src/cli/command-manifest.js.map +1 -1
- package/dist/src/cli/commands/agent.js +2 -2
- package/dist/src/cli/commands/agent.js.map +1 -1
- package/dist/src/cli/commands/agents.js +2 -4
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/auth.js +1 -1
- package/dist/src/cli/commands/browser-cli-helpers.js +1 -1
- package/dist/src/cli/commands/channels.d.ts +1 -5
- package/dist/src/cli/commands/channels.js +115 -281
- package/dist/src/cli/commands/channels.js.map +1 -1
- package/dist/src/cli/commands/config.js +2 -2
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-config.js +16 -69
- package/dist/src/cli/commands/doctor/checks/channel-config.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js +6 -4
- package/dist/src/cli/commands/doctor/checks/channel-pairing-pending.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js +2 -2
- package/dist/src/cli/commands/doctor/checks/channel-plugins.js.map +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +1 -1
- package/dist/src/cli/commands/doctor/checks/provider-auth.js +13 -9
- package/dist/src/cli/commands/doctor/checks/provider-auth.js.map +1 -1
- package/dist/src/cli/commands/extension-dev.js +2 -1
- package/dist/src/cli/commands/extension-dev.js.map +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +2 -1
- package/dist/src/cli/commands/extension-marketplace.js.map +1 -1
- package/dist/src/cli/commands/extension-pack.js +2 -1
- package/dist/src/cli/commands/extension-pack.js.map +1 -1
- package/dist/src/cli/commands/models.js +7 -4
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/index.js +1 -1
- package/dist/src/cli/commands/onboard/channels/index.js.map +1 -1
- package/dist/src/cli/commands/onboard/channels/registry.d.ts +2 -1
- package/dist/src/cli/commands/onboard/channels/registry.js +32 -8
- package/dist/src/cli/commands/onboard/channels/registry.js.map +1 -1
- package/dist/src/cli/commands/onboard/model.js +8 -5
- package/dist/src/cli/commands/onboard/model.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +4 -6
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/setup-shared/runner.d.ts +1 -1
- package/dist/src/cli/commands/setup-shared/runner.js.map +1 -1
- package/dist/src/cli/commands/setup-shared/types.d.ts +1 -1
- package/dist/src/cli/commands/setup-shared/types.js.map +1 -1
- package/dist/src/cli/commands/tui.js +13 -5
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/cli/extension-cli-register.js +1 -1
- package/dist/src/commands/agents.config.d.ts +3 -3
- package/dist/src/commands/agents.config.js +7 -7
- package/dist/src/commands/agents.config.js.map +1 -1
- package/dist/src/config/agent-profile.d.ts +1 -1
- package/dist/src/config/agent-profile.js +6 -2
- package/dist/src/config/agent-profile.js.map +1 -1
- package/dist/src/config/agent-typed-models.d.ts +2 -2
- package/dist/src/config/agent-typed-models.js +13 -2
- package/dist/src/config/agent-typed-models.js.map +1 -1
- package/dist/src/config/index.js +3 -3
- package/dist/src/config/integration.d.ts +1 -1
- package/dist/src/config/loader.d.ts +0 -1
- package/dist/src/config/loader.js +4 -9
- package/dist/src/config/loader.js.map +1 -1
- package/dist/src/config/models-json.d.ts +6 -6
- package/dist/src/config/rules.js +2 -12
- package/dist/src/config/rules.js.map +1 -1
- package/dist/src/config/schema.d.ts +74 -47
- package/dist/src/config/schema.js +28 -66
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/config/validate-channel-configs.d.ts +0 -3
- package/dist/src/config/validate-channel-configs.js +29 -10
- package/dist/src/config/validate-channel-configs.js.map +1 -1
- package/dist/src/cron/executor.js +1 -4
- package/dist/src/cron/executor.js.map +1 -1
- package/dist/src/extensions/activation-context.js +3 -1
- package/dist/src/extensions/activation-context.js.map +1 -1
- package/dist/src/extensions/activation-planner.js +12 -0
- package/dist/src/extensions/activation-planner.js.map +1 -1
- package/dist/src/extensions/api.d.ts +5 -1
- package/dist/src/extensions/api.js +12 -0
- package/dist/src/extensions/api.js.map +1 -1
- package/dist/src/extensions/discover-extensions.js +17 -13
- package/dist/src/extensions/discover-extensions.js.map +1 -1
- package/dist/src/extensions/extension-metadata-snapshot.js +11 -5
- package/dist/src/extensions/extension-metadata-snapshot.js.map +1 -1
- package/dist/src/extensions/index.js +12 -4
- package/dist/src/extensions/index.js.map +1 -0
- package/dist/src/extensions/loader.d.ts +5 -1
- package/dist/src/extensions/loader.js +12 -11
- package/dist/src/extensions/loader.js.map +1 -1
- package/dist/src/extensions/manifest-registry.js +98 -93
- package/dist/src/extensions/manifest-registry.js.map +1 -1
- package/dist/src/extensions/normalize-manifest.js +91 -15
- package/dist/src/extensions/normalize-manifest.js.map +1 -1
- package/dist/src/extensions/sdk/index.js +1 -1
- package/dist/src/extensions/sdk/testing.js +4 -0
- package/dist/src/extensions/sdk/testing.js.map +1 -1
- package/dist/src/extensions/types/core.d.ts +32 -1
- package/dist/src/extensions/types/manifest.d.ts +60 -0
- package/dist/src/extensions/types/tui.d.ts +414 -5
- package/dist/src/gateway/agent-builtin-tools.d.ts +1 -1
- package/dist/src/gateway/agent-builtin-tools.js +16 -0
- package/dist/src/gateway/agent-builtin-tools.js.map +1 -1
- package/dist/src/gateway/agent-run-relay.d.ts +2 -3
- package/dist/src/gateway/agent-run-relay.js +10 -3
- package/dist/src/gateway/agent-run-relay.js.map +1 -1
- package/dist/src/gateway/agents-admin.d.ts +32 -19
- package/dist/src/gateway/agents-admin.js +113 -93
- package/dist/src/gateway/agents-admin.js.map +1 -1
- package/dist/src/gateway/chat-stream/mapper.d.ts +34 -0
- package/dist/src/gateway/chat-stream/mapper.js +244 -0
- package/dist/src/gateway/chat-stream/mapper.js.map +1 -0
- package/dist/src/gateway/chat-stream/protocol.d.ts +100 -0
- package/dist/src/gateway/chat-stream/protocol.js +1 -0
- package/dist/src/gateway/heartbeat/service.js +1 -1
- package/dist/src/gateway/hono/lib/agent-model.d.ts +4 -4
- package/dist/src/gateway/hono/lib/agent-model.js +13 -11
- package/dist/src/gateway/hono/lib/agent-model.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +19 -7
- package/dist/src/gateway/hono/lib/config-payload.js +16 -15
- package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
- package/dist/src/gateway/hono/routes/agents.js +83 -48
- package/dist/src/gateway/hono/routes/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/channels.js +134 -214
- package/dist/src/gateway/hono/routes/channels.js.map +1 -1
- package/dist/src/gateway/hono/routes/commands-skills.js +10 -4
- package/dist/src/gateway/hono/routes/commands-skills.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/agents.js +26 -13
- package/dist/src/gateway/hono/routes/config-patch/agents.js.map +1 -1
- package/dist/src/gateway/hono/routes/config-patch/channels.d.ts +1 -11
- package/dist/src/gateway/hono/routes/config-patch/channels.js +18 -165
- package/dist/src/gateway/hono/routes/config-patch/channels.js.map +1 -1
- package/dist/src/gateway/hono/routes/config.js +5 -2
- package/dist/src/gateway/hono/routes/config.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +1 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js +13 -1
- package/dist/src/gateway/hono/routes/lazy-bundles.js.map +1 -1
- package/dist/src/gateway/hono/routes/public-gateway.js +2 -4
- package/dist/src/gateway/hono/routes/public-gateway.js.map +1 -1
- package/dist/src/gateway/hono/routes/sessions.js +179 -0
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/hono/routes/tui.d.ts +3 -0
- package/dist/src/gateway/hono/routes/tui.js +16 -0
- package/dist/src/gateway/hono/routes/tui.js.map +1 -0
- package/dist/src/gateway/hono/routes/workflows.js +25 -1
- package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
- package/dist/src/gateway/hono/sse.d.ts +5 -7
- package/dist/src/gateway/hono/sse.js +21 -38
- package/dist/src/gateway/hono/sse.js.map +1 -1
- package/dist/src/gateway/protocol.js.map +1 -1
- package/dist/src/gateway/service/agent-runner.d.ts +2 -4
- package/dist/src/gateway/service/agent-runner.js +1 -1
- package/dist/src/gateway/service/agent-runner.js.map +1 -1
- package/dist/src/gateway/service/marketplace-service.d.ts +4 -3
- package/dist/src/gateway/service/marketplace-service.js +7 -4
- package/dist/src/gateway/service/marketplace-service.js.map +1 -1
- package/dist/src/gateway/service/run-gateway-agent.d.ts +2 -6
- package/dist/src/gateway/service/run-gateway-agent.js +63 -36
- package/dist/src/gateway/service/run-gateway-agent.js.map +1 -1
- package/dist/src/gateway/service/sessions-api.d.ts +19 -0
- package/dist/src/gateway/service/sessions-api.js +12 -0
- package/dist/src/gateway/service/sessions-api.js.map +1 -1
- package/dist/src/gateway/service.d.ts +6 -0
- package/dist/src/gateway/service.js +73 -57
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/heartbeat/index.js +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/project-trust/trust-store.d.ts +30 -0
- package/dist/src/project-trust/trust-store.js +194 -0
- package/dist/src/project-trust/trust-store.js.map +1 -0
- package/dist/src/providers/index.d.ts +1 -1
- package/dist/src/providers/index.js +18 -7
- package/dist/src/providers/index.js.map +1 -1
- package/dist/src/routing/resolve-route.d.ts +0 -3
- package/dist/src/routing/resolve-route.js.map +1 -1
- package/dist/src/routing/resolve-tui-session-key.d.ts +2 -0
- package/dist/src/routing/resolve-tui-session-key.js +8 -3
- package/dist/src/routing/resolve-tui-session-key.js.map +1 -1
- package/dist/src/session/client-history.d.ts +32 -0
- package/dist/src/session/client-history.js +232 -1
- package/dist/src/session/client-history.js.map +1 -1
- package/dist/src/session/manager.d.ts +37 -4
- package/dist/src/session/manager.js +39 -15
- package/dist/src/session/manager.js.map +1 -1
- package/dist/src/session/session-context-for-llm.d.ts +93 -1
- package/dist/src/session/session-context-for-llm.js +105 -2
- package/dist/src/session/session-context-for-llm.js.map +1 -1
- package/dist/src/session/store.d.ts +37 -0
- package/dist/src/session/store.js +127 -2
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/stored-rows-to-file-entries.js +37 -1
- package/dist/src/session/stored-rows-to-file-entries.js.map +1 -1
- package/dist/src/session/types.d.ts +14 -1
- package/dist/src/session/types.js.map +1 -1
- package/dist/src/share/share-thumbnail.js +1 -1
- package/dist/src/storage/sqlite/migrations/004_add_session_type_metadata.sql +15 -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/row-mappers.d.ts +14 -1
- package/dist/src/storage/sqlite/row-mappers.js +14 -1
- package/dist/src/storage/sqlite/row-mappers.js.map +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/session-metadata.js +1 -0
- package/dist/src/storage/sqlite/session-metadata.js.map +1 -1
- package/dist/src/storage/sqlite/session-repository.js +52 -25
- package/dist/src/storage/sqlite/session-repository.js.map +1 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +53 -4
- package/dist/src/tui/backends/embedded-backend.js +227 -39
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +59 -3
- package/dist/src/tui/backends/gateway-sse-backend.js +416 -26
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/chat-history.d.ts +5 -1
- package/dist/src/tui/chat-history.js +78 -8
- package/dist/src/tui/chat-history.js.map +1 -1
- package/dist/src/tui/clipboard-text.d.ts +5 -0
- package/dist/src/tui/clipboard-text.js +46 -0
- package/dist/src/tui/clipboard-text.js.map +1 -0
- package/dist/src/tui/components/assistant-message.d.ts +19 -3
- package/dist/src/tui/components/assistant-message.js +115 -9
- package/dist/src/tui/components/assistant-message.js.map +1 -1
- package/dist/src/tui/components/bash-execution.d.ts +3 -2
- package/dist/src/tui/components/bash-execution.js +31 -3
- package/dist/src/tui/components/bash-execution.js.map +1 -1
- package/dist/src/tui/components/bash-summary.d.ts +23 -0
- package/dist/src/tui/components/bash-summary.js +87 -0
- package/dist/src/tui/components/bash-summary.js.map +1 -0
- package/dist/src/tui/components/branch-message-summary.d.ts +17 -0
- package/dist/src/tui/components/branch-message-summary.js +43 -0
- package/dist/src/tui/components/branch-message-summary.js.map +1 -0
- package/dist/src/tui/components/branch-summary.d.ts +13 -0
- package/dist/src/tui/components/branch-summary.js +51 -0
- package/dist/src/tui/components/branch-summary.js.map +1 -0
- package/dist/src/tui/components/chat-log.d.ts +46 -6
- package/dist/src/tui/components/chat-log.js +183 -21
- package/dist/src/tui/components/chat-log.js.map +1 -1
- package/dist/src/tui/components/compaction-summary.d.ts +13 -0
- package/dist/src/tui/components/compaction-summary.js +46 -0
- package/dist/src/tui/components/compaction-summary.js.map +1 -0
- package/dist/src/tui/components/custom-editor.d.ts +1 -0
- package/dist/src/tui/components/custom-editor.js +2 -0
- package/dist/src/tui/components/custom-editor.js.map +1 -1
- package/dist/src/tui/components/custom-message.d.ts +23 -0
- package/dist/src/tui/components/custom-message.js +65 -0
- package/dist/src/tui/components/custom-message.js.map +1 -0
- package/dist/src/tui/components/extension-dialog.d.ts +42 -0
- package/dist/src/tui/components/extension-dialog.js +127 -0
- package/dist/src/tui/components/extension-dialog.js.map +1 -0
- package/dist/src/tui/components/scoped-models-selector.d.ts +7 -2
- package/dist/src/tui/components/scoped-models-selector.js +89 -16
- package/dist/src/tui/components/scoped-models-selector.js.map +1 -1
- package/dist/src/tui/components/searchable-select-list.d.ts +30 -3
- package/dist/src/tui/components/searchable-select-list.js +82 -10
- package/dist/src/tui/components/searchable-select-list.js.map +1 -1
- package/dist/src/tui/components/session-selector.d.ts +18 -4
- package/dist/src/tui/components/session-selector.js +207 -40
- package/dist/src/tui/components/session-selector.js.map +1 -1
- package/dist/src/tui/components/settings-selector.d.ts +6 -2
- package/dist/src/tui/components/settings-selector.js +126 -7
- package/dist/src/tui/components/settings-selector.js.map +1 -1
- package/dist/src/tui/components/thinking-selector.d.ts +12 -0
- package/dist/src/tui/components/thinking-selector.js +48 -0
- package/dist/src/tui/components/thinking-selector.js.map +1 -0
- package/dist/src/tui/components/tool-execution.d.ts +57 -3
- package/dist/src/tui/components/tool-execution.js +378 -28
- package/dist/src/tui/components/tool-execution.js.map +1 -1
- package/dist/src/tui/components/tui-bottom-bar.d.ts +9 -1
- package/dist/src/tui/components/tui-bottom-bar.js +56 -11
- package/dist/src/tui/components/tui-bottom-bar.js.map +1 -1
- package/dist/src/tui/components/tui-header.d.ts +9 -2
- package/dist/src/tui/components/tui-header.js +25 -5
- package/dist/src/tui/components/tui-header.js.map +1 -1
- package/dist/src/tui/components/user-message.d.ts +4 -2
- package/dist/src/tui/components/user-message.js +42 -9
- package/dist/src/tui/components/user-message.js.map +1 -1
- package/dist/src/tui/components/visual-truncate.d.ts +11 -0
- package/dist/src/tui/components/visual-truncate.js +27 -0
- package/dist/src/tui/components/visual-truncate.js.map +1 -0
- package/dist/src/tui/extension-host/autocomplete.d.ts +43 -0
- package/dist/src/tui/extension-host/autocomplete.js +116 -0
- package/dist/src/tui/extension-host/autocomplete.js.map +1 -0
- package/dist/src/tui/extension-host/host.d.ts +31 -1
- package/dist/src/tui/extension-host/host.js +123 -6
- package/dist/src/tui/extension-host/host.js.map +1 -1
- package/dist/src/tui/extension-host/load-extensions.d.ts +6 -1
- package/dist/src/tui/extension-host/load-extensions.js +4 -3
- package/dist/src/tui/extension-host/load-extensions.js.map +1 -1
- package/dist/src/tui/extension-host/runtime-context.d.ts +21 -0
- package/dist/src/tui/extension-host/runtime-context.js +152 -0
- package/dist/src/tui/extension-host/runtime-context.js.map +1 -0
- package/dist/src/tui/extension-host/runtime.d.ts +52 -4
- package/dist/src/tui/extension-host/runtime.js +547 -85
- package/dist/src/tui/extension-host/runtime.js.map +1 -1
- package/dist/src/tui/extension-host/surface.d.ts +20 -0
- package/dist/src/tui/extension-host/surface.js +30 -6
- package/dist/src/tui/extension-host/surface.js.map +1 -1
- package/dist/src/tui/extension-host/tool-renderers.d.ts +6 -3
- package/dist/src/tui/extension-host/tool-renderers.js +43 -5
- package/dist/src/tui/extension-host/tool-renderers.js.map +1 -1
- package/dist/src/tui/format-tui-hotkeys.d.ts +12 -2
- package/dist/src/tui/format-tui-hotkeys.js +22 -5
- package/dist/src/tui/format-tui-hotkeys.js.map +1 -1
- package/dist/src/tui/tui-agent-events.d.ts +8 -6
- package/dist/src/tui/tui-agent-events.js +200 -59
- package/dist/src/tui/tui-agent-events.js.map +1 -1
- package/dist/src/tui/tui-backend.d.ts +169 -3
- package/dist/src/tui/tui-command-formatters.d.ts +76 -0
- package/dist/src/tui/tui-command-formatters.js +594 -0
- package/dist/src/tui/tui-command-formatters.js.map +1 -0
- package/dist/src/tui/tui-commands.d.ts +57 -7
- package/dist/src/tui/tui-commands.js +639 -43
- package/dist/src/tui/tui-commands.js.map +1 -1
- package/dist/src/tui/tui-context-usage.d.ts +1 -1
- package/dist/src/tui/tui-context-usage.js +9 -1
- package/dist/src/tui/tui-context-usage.js.map +1 -1
- package/dist/src/tui/tui-extension-user-message.d.ts +8 -0
- package/dist/src/tui/tui-extension-user-message.js +32 -0
- package/dist/src/tui/tui-extension-user-message.js.map +1 -0
- package/dist/src/tui/tui-follow-up-queue.d.ts +9 -0
- package/dist/src/tui/tui-follow-up-queue.js +18 -0
- package/dist/src/tui/tui-follow-up-queue.js.map +1 -0
- package/dist/src/tui/tui-local-shell.d.ts +11 -1
- package/dist/src/tui/tui-local-shell.js +50 -8
- package/dist/src/tui/tui-local-shell.js.map +1 -1
- package/dist/src/tui/tui-model-picker.d.ts +26 -0
- package/dist/src/tui/tui-model-picker.js +152 -0
- package/dist/src/tui/tui-model-picker.js.map +1 -0
- package/dist/src/tui/tui-oauth-login.d.ts +16 -0
- package/dist/src/tui/tui-oauth-login.js +189 -0
- package/dist/src/tui/tui-oauth-login.js.map +1 -0
- package/dist/src/tui/tui-overlays.d.ts +3 -3
- package/dist/src/tui/tui-overlays.js +6 -7
- package/dist/src/tui/tui-overlays.js.map +1 -1
- package/dist/src/tui/tui-picker-overlay.d.ts +27 -32
- package/dist/src/tui/tui-picker-overlay.js +340 -30
- package/dist/src/tui/tui-picker-overlay.js.map +1 -1
- package/dist/src/tui/tui-picker-services.d.ts +41 -0
- package/dist/src/tui/tui-picker-services.js +1 -0
- package/dist/src/tui/tui-run-state.d.ts +11 -0
- package/dist/src/tui/tui-run-state.js +114 -0
- package/dist/src/tui/tui-run-state.js.map +1 -0
- package/dist/src/tui/tui-runtime-hints.d.ts +4 -0
- package/dist/src/tui/tui-runtime-hints.js +18 -0
- package/dist/src/tui/tui-runtime-hints.js.map +1 -0
- package/dist/src/tui/tui-scoped-models.d.ts +1 -1
- package/dist/src/tui/tui-scoped-models.js +2 -2
- package/dist/src/tui/tui-scoped-models.js.map +1 -1
- package/dist/src/tui/tui-session-actions.d.ts +5 -3
- package/dist/src/tui/tui-session-actions.js +21 -9
- package/dist/src/tui/tui-session-actions.js.map +1 -1
- package/dist/src/tui/tui-session-format.d.ts +4 -1
- package/dist/src/tui/tui-session-format.js +17 -3
- package/dist/src/tui/tui-session-format.js.map +1 -1
- package/dist/src/tui/tui-session-snapshot.d.ts +82 -0
- package/dist/src/tui/tui-session-snapshot.js +184 -0
- package/dist/src/tui/tui-session-snapshot.js.map +1 -0
- package/dist/src/tui/tui-session-stats.d.ts +3 -0
- package/dist/src/tui/tui-session-stats.js +59 -0
- package/dist/src/tui/tui-session-stats.js.map +1 -0
- package/dist/src/tui/tui-settings.d.ts +21 -0
- package/dist/src/tui/tui-settings.js +28 -1
- package/dist/src/tui/tui-settings.js.map +1 -1
- package/dist/src/tui/tui-skills-autocomplete.js +1 -1
- package/dist/src/tui/tui-skills-autocomplete.js.map +1 -1
- package/dist/src/tui/tui-startup-resources.d.ts +3 -0
- package/dist/src/tui/tui-startup-resources.js +39 -0
- package/dist/src/tui/tui-startup-resources.js.map +1 -0
- package/dist/src/tui/tui-startup-text.d.ts +10 -0
- package/dist/src/tui/tui-startup-text.js +58 -0
- package/dist/src/tui/tui-startup-text.js.map +1 -0
- package/dist/src/tui/tui-stdio-filter.d.ts +1 -0
- package/dist/src/tui/tui-stdio-filter.js +11 -7
- package/dist/src/tui/tui-stdio-filter.js.map +1 -1
- package/dist/src/tui/tui-submit.d.ts +2 -0
- package/dist/src/tui/tui-submit.js +2 -1
- package/dist/src/tui/tui-submit.js.map +1 -1
- package/dist/src/tui/tui-tool-diff.js +61 -7
- package/dist/src/tui/tui-tool-diff.js.map +1 -1
- package/dist/src/tui/tui-tool-result.d.ts +17 -0
- package/dist/src/tui/tui-tool-result.js +74 -0
- package/dist/src/tui/tui-tool-result.js.map +1 -0
- package/dist/src/tui/tui-transcript-tree-picker.d.ts +57 -0
- package/dist/src/tui/tui-transcript-tree-picker.js +604 -0
- package/dist/src/tui/tui-transcript-tree-picker.js.map +1 -0
- package/dist/src/tui/tui-transcript-tree.d.ts +7 -0
- package/dist/src/tui/tui-transcript-tree.js +316 -0
- package/dist/src/tui/tui-transcript-tree.js.map +1 -0
- package/dist/src/tui/tui-types.d.ts +25 -34
- package/dist/src/tui/tui-types.js +12 -0
- package/dist/src/tui/tui-types.js.map +1 -1
- package/dist/src/tui/tui.js +1288 -112
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/tui/xopc-tui-keybindings.d.ts +127 -2
- package/dist/src/tui/xopc-tui-keybindings.js +127 -2
- package/dist/src/tui/xopc-tui-keybindings.js.map +1 -1
- package/dist/src/workflows/domain/definition-utils.d.ts +2 -1
- package/dist/src/workflows/domain/definition-utils.js +18 -8
- package/dist/src/workflows/domain/definition-utils.js.map +1 -1
- package/dist/src/workflows/domain/definition.d.ts +25 -0
- package/dist/src/workflows/domain/event.d.ts +1 -0
- package/dist/src/workflows/domain/result.d.ts +15 -0
- package/dist/src/workflows/domain/run.d.ts +2 -0
- package/dist/src/workflows/domain/run.js.map +1 -1
- package/dist/src/workflows/engine/projector.js +4 -0
- package/dist/src/workflows/engine/projector.js.map +1 -1
- package/dist/src/workflows/engine/workflow-engine.d.ts +37 -1
- package/dist/src/workflows/engine/workflow-engine.js +75 -11
- package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
- package/dist/src/workflows/index.d.ts +1 -0
- package/dist/src/workflows/index.js +4 -1
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.d.ts +9 -0
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js +40 -0
- package/dist/src/workflows/registry/catalog-workflow-definition-registry.js.map +1 -0
- package/dist/src/workflows/registry/index.d.ts +2 -0
- package/dist/src/workflows/registry/index.js +2 -0
- package/dist/src/workflows/registry/workflow-definition-registry.d.ts +15 -0
- package/dist/src/workflows/registry/workflow-definition-registry.js +1 -0
- package/dist/src/workflows/runtime/index.d.ts +2 -0
- package/dist/src/workflows/runtime/index.js +2 -1
- package/dist/src/workflows/runtime/script-workflow-runtime.d.ts +5 -0
- package/dist/src/workflows/runtime/script-workflow-runtime.js +15 -0
- package/dist/src/workflows/runtime/script-workflow-runtime.js.map +1 -0
- package/dist/src/workflows/runtime/workflow-runtime-port.d.ts +16 -0
- package/dist/src/workflows/runtime/workflow-runtime-port.js +1 -0
- package/dist/src/workflows/service/run-view-to-snapshot.js +3 -0
- package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -1
- package/dist/src/workflows/service/workflow-run-service.d.ts +3 -0
- package/dist/src/workflows/service/workflow-run-service.js +10 -15
- package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.d.ts +1 -1
- package/dist/src/workflows/service/workflow-session-bridge.js +4 -1
- package/dist/src/workflows/service/workflow-session-bridge.js.map +1 -1
- package/package.json +21 -15
- package/skills/creative/frontend-design/SKILL.md +1 -1
- package/skills/creative/theme-factory/SKILL.md +1 -1
- package/skills/documents/xlsx/SKILL.md +1 -1
- package/skills/engineering/diagnose/SKILL.md +2 -2
- package/skills/engineering/tdd/SKILL.md +1 -1
- package/skills/tools/github/SKILL.md +6 -1
- package/skills/tools/webapp-testing/SKILL.md +4 -1
- package/dist/extensions/telegram/src/adapters/config-surface.d.ts +0 -2
- package/dist/extensions/telegram/src/adapters/config-surface.js +0 -26
- package/dist/extensions/telegram/src/adapters/config-surface.js.map +0 -1
- package/dist/extensions/weixin/src/__tests__/workflow-progress.test.js +0 -158
- package/dist/extensions/weixin/src/__tests__/workflow-progress.test.js.map +0 -1
- package/dist/gateway/static/root/assets/agents-BwXkia_W.js +0 -222
- package/dist/gateway/static/root/assets/channels-settings-tlOTdaXw.js +0 -1
- package/dist/gateway/static/root/assets/channels-status-swr-D4XjqwqC.js +0 -8
- package/dist/gateway/static/root/assets/cron-api-DcmfGuj0.js +0 -1
- package/dist/gateway/static/root/assets/cron-page-CijJ4G6F.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-CyJk_G64.js +0 -1
- package/dist/gateway/static/root/assets/field-primitives-C4GpxsDo.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-config-api-CLD0Gpi3.js +0 -1
- package/dist/gateway/static/root/assets/index-0HmunJW9.js +0 -4845
- package/dist/gateway/static/root/assets/index-Bk75Phrd.css +0 -1
- package/dist/gateway/static/root/assets/notes-page-BBnTh0uI.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-B0riYK7j.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-DiP_WHu_.js +0 -2
- package/dist/gateway/static/root/assets/settings-page-1ZPhcCZ9.js +0 -3
- package/dist/gateway/static/root/assets/skills-page-BQ1hllKD.js +0 -2
- package/dist/gateway/static/root/assets/url-F3_D_6zZ.js +0 -3
- package/dist/gateway/static/root/assets/utils-CPr3FBh2.js +0 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-BkbDl6dH.js +0 -1
- package/dist/gateway/static/root/assets/workflows-page-D059ysoF.js +0 -27
- package/dist/src/agent/embedded/map-stream-events.d.ts +0 -9
- package/dist/src/agent/embedded/map-stream-events.js +0 -63
- package/dist/src/agent/embedded/map-stream-events.js.map +0 -1
- package/dist/src/channels/dock.js.map +0 -1
- package/dist/src/channels/plugins/bundled.d.ts +0 -11
- package/dist/src/channels/plugins/bundled.js +0 -10
- package/dist/src/channels/plugins/bundled.js.map +0 -1
- package/dist/src/channels/registry.d.ts +0 -25
- package/dist/src/channels/registry.js +0 -82
- package/dist/src/channels/registry.js.map +0 -1
- package/dist/src/config/localized-text.d.ts +0 -6
- package/dist/src/config/localized-text.js +0 -42
- package/dist/src/config/localized-text.js.map +0 -1
- package/dist/src/generated/bundled-channel-plugins.d.ts +0 -10
- package/dist/src/generated/bundled-channel-plugins.js +0 -16
- package/dist/src/generated/bundled-channel-plugins.js.map +0 -1
- package/dist/src/tui/stream-assembler.d.ts +0 -22
- package/dist/src/tui/stream-assembler.js +0 -63
- package/dist/src/tui/stream-assembler.js.map +0 -1
- package/skills/browser/SKILL-zh.md +0 -188
- package/skills/business/company-values/SKILL-zh.md +0 -80
- package/skills/business/company-values/SKILL.md +0 -80
- package/skills/business/find-community/SKILL-zh.md +0 -50
- package/skills/business/find-community/SKILL.md +0 -50
- package/skills/business/first-customers/SKILL-zh.md +0 -76
- package/skills/business/first-customers/SKILL.md +0 -76
- package/skills/business/grow-sustainably/SKILL-zh.md +0 -92
- package/skills/business/grow-sustainably/SKILL.md +0 -92
- package/skills/business/marketing-plan/SKILL-zh.md +0 -100
- package/skills/business/marketing-plan/SKILL.md +0 -100
- package/skills/business/minimalist-review/SKILL-zh.md +0 -82
- package/skills/business/minimalist-review/SKILL.md +0 -82
- package/skills/business/mvp/SKILL-zh.md +0 -81
- package/skills/business/mvp/SKILL.md +0 -81
- package/skills/business/pricing/SKILL-zh.md +0 -64
- package/skills/business/pricing/SKILL.md +0 -64
- package/skills/business/processize/SKILL-zh.md +0 -91
- package/skills/business/processize/SKILL.md +0 -91
- package/skills/business/validate-idea/SKILL-zh.md +0 -68
- package/skills/business/validate-idea/SKILL.md +0 -68
- package/skills/creative/algorithmic-art/LICENSE.txt +0 -202
- package/skills/creative/algorithmic-art/SKILL-zh.md +0 -405
- package/skills/creative/algorithmic-art/SKILL.md +0 -405
- package/skills/creative/algorithmic-art/templates/generator_template.js +0 -223
- package/skills/creative/algorithmic-art/templates/viewer.html +0 -599
- package/skills/creative/frontend-design/SKILL-zh.md +0 -42
- package/skills/creative/theme-factory/SKILL-zh.md +0 -59
- package/skills/creative/web-artifacts-builder/LICENSE.txt +0 -202
- package/skills/creative/web-artifacts-builder/SKILL-zh.md +0 -74
- package/skills/creative/web-artifacts-builder/SKILL.md +0 -74
- package/skills/creative/web-artifacts-builder/scripts/bundle-artifact.sh +0 -54
- package/skills/creative/web-artifacts-builder/scripts/init-artifact.sh +0 -322
- package/skills/creative/web-artifacts-builder/scripts/shadcn-components.tar.gz +0 -0
- package/skills/documents/doc-coauthoring/SKILL-zh.md +0 -375
- package/skills/documents/doc-coauthoring/SKILL.md +0 -375
- package/skills/documents/docx/LICENSE.txt +0 -30
- package/skills/documents/docx/SKILL-zh.md +0 -590
- package/skills/documents/docx/SKILL.md +0 -590
- package/skills/documents/docx/scripts/__init__.py +0 -1
- package/skills/documents/docx/scripts/accept_changes.py +0 -135
- package/skills/documents/docx/scripts/comment.py +0 -318
- package/skills/documents/docx/scripts/office/helpers/__init__.py +0 -0
- package/skills/documents/docx/scripts/office/helpers/merge_runs.py +0 -199
- package/skills/documents/docx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/skills/documents/docx/scripts/office/pack.py +0 -159
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/documents/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/documents/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/documents/docx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/documents/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/documents/docx/scripts/office/soffice.py +0 -183
- package/skills/documents/docx/scripts/office/unpack.py +0 -132
- package/skills/documents/docx/scripts/office/validate.py +0 -111
- package/skills/documents/docx/scripts/office/validators/__init__.py +0 -15
- package/skills/documents/docx/scripts/office/validators/base.py +0 -847
- package/skills/documents/docx/scripts/office/validators/docx.py +0 -446
- package/skills/documents/docx/scripts/office/validators/pptx.py +0 -275
- package/skills/documents/docx/scripts/office/validators/redlining.py +0 -247
- package/skills/documents/docx/scripts/templates/comments.xml +0 -3
- package/skills/documents/docx/scripts/templates/commentsExtended.xml +0 -3
- package/skills/documents/docx/scripts/templates/commentsExtensible.xml +0 -3
- package/skills/documents/docx/scripts/templates/commentsIds.xml +0 -3
- package/skills/documents/docx/scripts/templates/people.xml +0 -3
- package/skills/documents/pdf/LICENSE.txt +0 -30
- package/skills/documents/pdf/SKILL-zh.md +0 -314
- package/skills/documents/pdf/SKILL.md +0 -314
- package/skills/documents/pdf/forms.md +0 -294
- package/skills/documents/pdf/reference.md +0 -612
- package/skills/documents/pdf/scripts/check_bounding_boxes.py +0 -65
- package/skills/documents/pdf/scripts/check_fillable_fields.py +0 -11
- package/skills/documents/pdf/scripts/convert_pdf_to_images.py +0 -33
- package/skills/documents/pdf/scripts/create_validation_image.py +0 -37
- package/skills/documents/pdf/scripts/extract_form_field_info.py +0 -122
- package/skills/documents/pdf/scripts/extract_form_structure.py +0 -115
- package/skills/documents/pdf/scripts/fill_fillable_fields.py +0 -98
- package/skills/documents/pdf/scripts/fill_pdf_form_with_annotations.py +0 -107
- package/skills/documents/pptx/LICENSE.txt +0 -30
- package/skills/documents/pptx/SKILL-zh.md +0 -232
- package/skills/documents/pptx/SKILL.md +0 -232
- package/skills/documents/pptx/editing.md +0 -205
- package/skills/documents/pptx/pptxgenjs.md +0 -420
- package/skills/documents/pptx/scripts/__init__.py +0 -0
- package/skills/documents/pptx/scripts/add_slide.py +0 -195
- package/skills/documents/pptx/scripts/clean.py +0 -286
- package/skills/documents/pptx/scripts/office/helpers/__init__.py +0 -0
- package/skills/documents/pptx/scripts/office/helpers/merge_runs.py +0 -199
- package/skills/documents/pptx/scripts/office/helpers/simplify_redlines.py +0 -197
- package/skills/documents/pptx/scripts/office/pack.py +0 -159
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +0 -1499
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +0 -146
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +0 -1085
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +0 -11
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +0 -3081
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +0 -23
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +0 -185
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +0 -287
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +0 -1676
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +0 -28
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +0 -144
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +0 -174
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +0 -25
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +0 -18
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +0 -59
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +0 -56
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +0 -195
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +0 -582
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +0 -25
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +0 -4439
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +0 -570
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +0 -509
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +0 -12
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +0 -108
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +0 -96
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +0 -3646
- package/skills/documents/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +0 -116
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +0 -42
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +0 -50
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +0 -49
- package/skills/documents/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +0 -33
- package/skills/documents/pptx/scripts/office/schemas/mce/mc.xsd +0 -75
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +0 -560
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +0 -67
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +0 -14
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +0 -20
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +0 -13
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +0 -4
- package/skills/documents/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +0 -8
- package/skills/documents/pptx/scripts/office/soffice.py +0 -183
- package/skills/documents/pptx/scripts/office/unpack.py +0 -132
- package/skills/documents/pptx/scripts/office/validate.py +0 -111
- package/skills/documents/pptx/scripts/office/validators/__init__.py +0 -15
- package/skills/documents/pptx/scripts/office/validators/base.py +0 -847
- package/skills/documents/pptx/scripts/office/validators/docx.py +0 -446
- package/skills/documents/pptx/scripts/office/validators/pptx.py +0 -275
- package/skills/documents/pptx/scripts/office/validators/redlining.py +0 -247
- package/skills/documents/pptx/scripts/thumbnail.py +0 -289
- package/skills/documents/xlsx/SKILL-zh.md +0 -292
- package/skills/engineering/diagnose/SKILL-zh.md +0 -117
- package/skills/engineering/grill-with-docs/ADR-FORMAT.md +0 -47
- package/skills/engineering/grill-with-docs/CONTEXT-FORMAT.md +0 -77
- package/skills/engineering/grill-with-docs/SKILL-zh.md +0 -88
- package/skills/engineering/grill-with-docs/SKILL.md +0 -88
- package/skills/engineering/improve-codebase-architecture/DEEPENING.md +0 -37
- package/skills/engineering/improve-codebase-architecture/INTERFACE-DESIGN.md +0 -44
- package/skills/engineering/improve-codebase-architecture/LANGUAGE.md +0 -53
- package/skills/engineering/improve-codebase-architecture/SKILL-zh.md +0 -71
- package/skills/engineering/improve-codebase-architecture/SKILL.md +0 -71
- package/skills/engineering/tdd/SKILL-zh.md +0 -109
- package/skills/engineering/to-issues/SKILL-zh.md +0 -81
- package/skills/engineering/to-issues/SKILL.md +0 -81
- package/skills/engineering/to-prd/SKILL-zh.md +0 -76
- package/skills/engineering/to-prd/SKILL.md +0 -74
- package/skills/engineering/zoom-out/SKILL-zh.md +0 -7
- package/skills/engineering/zoom-out/SKILL.md +0 -7
- package/skills/tools/find-skills/SKILL-zh.md +0 -440
- package/skills/tools/github/SKILL-zh.md +0 -48
- package/skills/tools/internal-comms/LICENSE.txt +0 -202
- package/skills/tools/internal-comms/SKILL-zh.md +0 -32
- package/skills/tools/internal-comms/SKILL.md +0 -32
- package/skills/tools/internal-comms/examples/3p-updates.md +0 -47
- package/skills/tools/internal-comms/examples/company-newsletter.md +0 -65
- package/skills/tools/internal-comms/examples/faq-answers.md +0 -30
- package/skills/tools/internal-comms/examples/general-comms.md +0 -16
- package/skills/tools/skill-creator/LICENSE.txt +0 -202
- package/skills/tools/skill-creator/SKILL-zh.md +0 -483
- package/skills/tools/skill-creator/SKILL.md +0 -485
- package/skills/tools/skill-creator/agents/analyzer.md +0 -274
- package/skills/tools/skill-creator/agents/comparator.md +0 -202
- package/skills/tools/skill-creator/agents/grader.md +0 -223
- package/skills/tools/skill-creator/assets/eval_review.html +0 -146
- package/skills/tools/skill-creator/eval-viewer/generate_review.py +0 -471
- package/skills/tools/skill-creator/eval-viewer/viewer.html +0 -1325
- package/skills/tools/skill-creator/references/schemas.md +0 -430
- package/skills/tools/skill-creator/scripts/__init__.py +0 -0
- package/skills/tools/skill-creator/scripts/aggregate_benchmark.py +0 -401
- package/skills/tools/skill-creator/scripts/generate_report.py +0 -326
- package/skills/tools/skill-creator/scripts/improve_description.py +0 -247
- package/skills/tools/skill-creator/scripts/package_skill.py +0 -136
- package/skills/tools/skill-creator/scripts/quick_validate.py +0 -103
- package/skills/tools/skill-creator/scripts/run_eval.py +0 -310
- package/skills/tools/skill-creator/scripts/run_loop.py +0 -328
- package/skills/tools/skill-creator/scripts/utils.py +0 -47
- package/skills/tools/summarize/SKILL-zh.md +0 -47
- package/skills/tools/weather/SKILL-zh.md +0 -46
- package/skills/tools/weather/SKILL.md +0 -46
- package/skills/tools/webapp-testing/SKILL-zh.md +0 -96
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { workflowStepLabel } from "../../agent/workflow/step-labels.js";
|
|
2
|
-
import {
|
|
3
|
-
import "../runtime/script-runtime.js";
|
|
2
|
+
import { createScriptWorkflowRuntime } from "../runtime/script-workflow-runtime.js";
|
|
4
3
|
import { randomUUID } from "node:crypto";
|
|
5
4
|
//#region src/workflows/engine/workflow-engine.ts
|
|
6
5
|
var WorkflowEngine = class {
|
|
@@ -14,6 +13,7 @@ var WorkflowEngine = class {
|
|
|
14
13
|
let currentPhaseId;
|
|
15
14
|
let eventQueue = Promise.resolve();
|
|
16
15
|
const progressRecorders = /* @__PURE__ */ new Map();
|
|
16
|
+
const subagentSessionKeys = /* @__PURE__ */ new Map();
|
|
17
17
|
const run = {
|
|
18
18
|
id: runId,
|
|
19
19
|
definitionId: definition.id,
|
|
@@ -47,9 +47,13 @@ var WorkflowEngine = class {
|
|
|
47
47
|
return eventQueue;
|
|
48
48
|
};
|
|
49
49
|
await appendEvent("run_queued", { run }, createdAtMs);
|
|
50
|
+
await this.callHooks((hook) => hook.beforeRun?.({
|
|
51
|
+
definition,
|
|
52
|
+
run
|
|
53
|
+
}));
|
|
50
54
|
await appendEvent("run_started", { startedAtMs: Date.now() });
|
|
51
55
|
try {
|
|
52
|
-
const runtimeResult = await
|
|
56
|
+
const runtimeResult = await (this.options.runtime ?? createScriptWorkflowRuntime()).run(definition.runtime.source, {
|
|
53
57
|
runner: this.options.runner,
|
|
54
58
|
resolveModelId: this.options.resolveModelId
|
|
55
59
|
}, {
|
|
@@ -72,27 +76,48 @@ var WorkflowEngine = class {
|
|
|
72
76
|
appendEvent("log_appended", { message });
|
|
73
77
|
},
|
|
74
78
|
onAgentQueued: (event) => {
|
|
79
|
+
const agentId = formatRuntimeAgentId(event.id);
|
|
80
|
+
const subagentSessionKey = this.options.subagentSessionKeyFactory?.({
|
|
81
|
+
runId,
|
|
82
|
+
agentId
|
|
83
|
+
}) ?? defaultSubagentSessionKey(runId, agentId);
|
|
84
|
+
subagentSessionKeys.set(event.id, subagentSessionKey);
|
|
75
85
|
const phaseId = event.phase ? phaseTitleToId.get(event.phase) ?? normalizePhaseId(event.phase) : currentPhaseId;
|
|
76
|
-
|
|
77
|
-
|
|
86
|
+
this.callHooks((hook) => hook.beforeAgent?.({
|
|
87
|
+
runId,
|
|
88
|
+
agentId,
|
|
78
89
|
label: event.label,
|
|
79
90
|
phaseId,
|
|
80
91
|
prompt: event.prompt
|
|
92
|
+
}));
|
|
93
|
+
appendEvent("agent_queued", {
|
|
94
|
+
agentId,
|
|
95
|
+
label: event.label,
|
|
96
|
+
phaseId,
|
|
97
|
+
prompt: event.prompt,
|
|
98
|
+
sessionKey: subagentSessionKey
|
|
81
99
|
});
|
|
82
100
|
},
|
|
83
101
|
onAgentStart: (event) => {
|
|
84
102
|
appendEvent("agent_started", { agentId: formatRuntimeAgentId(event.id) });
|
|
85
103
|
},
|
|
86
104
|
onAgentEnd: (event) => {
|
|
105
|
+
const agentId = formatRuntimeAgentId(event.id);
|
|
87
106
|
const completedStatus = normalizeCompletedAgentStatus(event.status);
|
|
107
|
+
const resultPreview = previewWorkflowValue(event.result);
|
|
88
108
|
progressRecorders.get(event.id)?.completeOpenSteps(completedStatus === "done" ? "done" : "error");
|
|
89
109
|
progressRecorders.delete(event.id);
|
|
90
110
|
appendEvent("agent_completed", {
|
|
91
|
-
agentId
|
|
111
|
+
agentId,
|
|
92
112
|
status: completedStatus,
|
|
93
|
-
resultPreview
|
|
113
|
+
resultPreview,
|
|
94
114
|
error: completedStatus === "error" ? "Subagent failed" : void 0
|
|
95
|
-
})
|
|
115
|
+
}).then(() => this.callHooks((hook) => hook.afterAgent?.({
|
|
116
|
+
runId,
|
|
117
|
+
agentId,
|
|
118
|
+
status: completedStatus,
|
|
119
|
+
resultPreview
|
|
120
|
+
})).catch(() => void 0));
|
|
96
121
|
},
|
|
97
122
|
enhanceSubagentRun: (ctx) => {
|
|
98
123
|
const recorder = new AgentProgressRecorder({
|
|
@@ -100,22 +125,58 @@ var WorkflowEngine = class {
|
|
|
100
125
|
appendEvent
|
|
101
126
|
});
|
|
102
127
|
progressRecorders.set(ctx.id, recorder);
|
|
103
|
-
|
|
128
|
+
const agentId = formatRuntimeAgentId(ctx.id);
|
|
129
|
+
const sessionKey = subagentSessionKeys.get(ctx.id) ?? this.options.subagentSessionKeyFactory?.({
|
|
130
|
+
runId,
|
|
131
|
+
agentId
|
|
132
|
+
}) ?? defaultSubagentSessionKey(runId, agentId);
|
|
133
|
+
subagentSessionKeys.set(ctx.id, sessionKey);
|
|
134
|
+
return {
|
|
135
|
+
sessionKey,
|
|
136
|
+
sessionMetadata: {
|
|
137
|
+
parentSessionKey: this.options.parentSessionKey,
|
|
138
|
+
workflowRunId: runId,
|
|
139
|
+
workflowDefinitionId: definition.id,
|
|
140
|
+
workflowAgentId: agentId,
|
|
141
|
+
workflowAgentLabel: ctx.label
|
|
142
|
+
},
|
|
143
|
+
onProgress: (event) => recorder.onProgress(event)
|
|
144
|
+
};
|
|
104
145
|
}
|
|
105
146
|
});
|
|
106
147
|
await eventQueue;
|
|
107
148
|
if (currentPhaseId) await appendEvent("phase_completed", { phaseId: currentPhaseId });
|
|
108
149
|
await appendEvent("run_completed", { result: toWorkflowResultEnvelope(runtimeResult.result) });
|
|
150
|
+
await this.callHooks((hook) => hook.afterRun?.({
|
|
151
|
+
runId,
|
|
152
|
+
status: "succeeded"
|
|
153
|
+
}));
|
|
109
154
|
} catch (err) {
|
|
110
155
|
await eventQueue;
|
|
111
156
|
const error = toWorkflowRunError(err, options.signal?.aborted === true);
|
|
112
|
-
if (error.code === "cancelled")
|
|
113
|
-
|
|
157
|
+
if (error.code === "cancelled") {
|
|
158
|
+
await appendEvent("run_cancelled", { reason: error.message });
|
|
159
|
+
await this.callHooks((hook) => hook.afterRun?.({
|
|
160
|
+
runId,
|
|
161
|
+
status: "cancelled"
|
|
162
|
+
}));
|
|
163
|
+
} else {
|
|
164
|
+
await appendEvent("run_failed", { error });
|
|
165
|
+
await this.callHooks((hook) => hook.afterRun?.({
|
|
166
|
+
runId,
|
|
167
|
+
status: "failed"
|
|
168
|
+
}));
|
|
169
|
+
}
|
|
114
170
|
}
|
|
115
171
|
const view = await this.options.runStore.readRunView(runId);
|
|
116
172
|
if (!view) throw new Error(`workflow run view was not created for ${runId}`);
|
|
117
173
|
return view;
|
|
118
174
|
}
|
|
175
|
+
async callHooks(call) {
|
|
176
|
+
for (const hook of this.options.hooks ?? []) try {
|
|
177
|
+
await call(hook);
|
|
178
|
+
} catch {}
|
|
179
|
+
}
|
|
119
180
|
};
|
|
120
181
|
var AgentProgressRecorder = class {
|
|
121
182
|
activeToolStepIds = /* @__PURE__ */ new Map();
|
|
@@ -243,6 +304,9 @@ function normalizePhaseId(title) {
|
|
|
243
304
|
function formatRuntimeAgentId(id) {
|
|
244
305
|
return `agent-${id}`;
|
|
245
306
|
}
|
|
307
|
+
function defaultSubagentSessionKey(runId, agentId) {
|
|
308
|
+
return `workflow:${runId}:subagent:${agentId}`;
|
|
309
|
+
}
|
|
246
310
|
function normalizeCompletedAgentStatus(status) {
|
|
247
311
|
if (status === "done" || status === "error" || status === "skipped") return status;
|
|
248
312
|
return "error";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-engine.js","names":["runWorkflowScript"],"sources":["../../../../src/workflows/engine/workflow-engine.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { WorkflowDefinition } from '../domain/definition.js';\nimport type { WorkflowEventEnvelope, WorkflowEventPayload, WorkflowEventType } from '../domain/event.js';\nimport type { WorkflowRun, WorkflowRunError, WorkflowRunMetadata, WorkflowRunSource, WorkflowRunView } from '../domain/run.js';\nimport type { WorkflowResultEnvelope } from '../domain/result.js';\nimport { WorkflowEventStore } from '../store/event-store.js';\nimport { WorkflowRunStore } from '../store/run-store.js';\nimport { runWorkflowScript } from '../runtime/script-runtime.js';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport { workflowStepLabel } from '../../agent/workflow/step-labels.js';\nimport type { SubagentProgressEvent } from '../../agent/workflow/types.js';\nimport type { WorkflowScriptSubagentRunner } from '../runtime/script-runtime.js';\n\nexport interface WorkflowEngineOptions {\n cwd: string;\n eventStore: WorkflowEventStore;\n runStore: WorkflowRunStore;\n runner: WorkflowScriptSubagentRunner;\n onEventAppended?: (event: WorkflowEventEnvelope) => void;\n onRunViewUpdated?: (view: WorkflowRunView) => void;\n resolveModelId?: (modelId: string) => Model<Api>;\n}\n\nexport interface StartWorkflowRunOptions {\n input?: unknown;\n source: WorkflowRunSource;\n metadata?: WorkflowRunMetadata;\n goal?: string;\n runId?: string;\n signal?: AbortSignal;\n concurrency?: number;\n maxSubagents?: number;\n tokenBudget?: number | null;\n}\n\nexport class WorkflowEngine {\n constructor(private readonly options: WorkflowEngineOptions) {}\n\n async startRun(definition: WorkflowDefinition, options: StartWorkflowRunOptions): Promise<WorkflowRunView> {\n const runId = options.runId ?? randomUUID();\n const createdAtMs = Date.now();\n const phaseTitleToId = buildPhaseTitleToId(definition);\n let currentPhaseId: string | undefined;\n let eventQueue = Promise.resolve();\n const progressRecorders = new Map<number, AgentProgressRecorder>();\n\n const run: WorkflowRun = {\n id: runId,\n definitionId: definition.id,\n definitionVersion: definition.version,\n title: definition.title,\n goal: options.goal ?? definition.description,\n input: options.input ?? {},\n status: 'queued',\n source: options.source,\n metadata: options.metadata,\n metrics: {\n agentCount: 0,\n doneAgentCount: 0,\n errorAgentCount: 0,\n skippedAgentCount: 0,\n artifactCount: 0,\n },\n createdAtMs,\n };\n\n const appendEvent = (type: WorkflowEventType, payload: WorkflowEventPayload, createdAtMsOverride?: number) => {\n eventQueue = eventQueue\n .then(() =>\n this.options.eventStore.append({\n runId,\n type,\n payload,\n createdAtMs: createdAtMsOverride,\n }),\n )\n .then(async (event) => {\n this.options.onEventAppended?.(event);\n const view = await this.options.runStore.rebuildRunView(runId);\n if (view) {\n this.options.onRunViewUpdated?.(view);\n }\n });\n return eventQueue;\n };\n\n await appendEvent('run_queued', { run }, createdAtMs);\n await appendEvent('run_started', { startedAtMs: Date.now() });\n\n try {\n const runtimeResult = await runWorkflowScript<unknown>(\n definition.runtime.source,\n {\n runner: this.options.runner,\n resolveModelId: this.options.resolveModelId,\n },\n {\n cwd: this.options.cwd,\n args: options.input,\n signal: options.signal,\n concurrency: options.concurrency ?? definition.defaults.concurrency,\n maxSubagents: options.maxSubagents ?? definition.defaults.maxSubagents,\n tokenBudget: options.tokenBudget,\n onPhase: (title) => {\n const nextPhaseId = phaseTitleToId.get(title) ?? normalizePhaseId(title);\n if (currentPhaseId && currentPhaseId !== nextPhaseId) {\n void appendEvent('phase_completed', { phaseId: currentPhaseId });\n }\n currentPhaseId = nextPhaseId;\n void appendEvent('phase_started', { phaseId: nextPhaseId, title });\n },\n onLog: (message) => {\n void appendEvent('log_appended', { message });\n },\n onAgentQueued: (event) => {\n const phaseId = event.phase ? (phaseTitleToId.get(event.phase) ?? normalizePhaseId(event.phase)) : currentPhaseId;\n void appendEvent('agent_queued', {\n agentId: formatRuntimeAgentId(event.id),\n label: event.label,\n phaseId,\n prompt: event.prompt,\n });\n },\n onAgentStart: (event) => {\n void appendEvent('agent_started', { agentId: formatRuntimeAgentId(event.id) });\n },\n onAgentEnd: (event) => {\n const completedStatus = normalizeCompletedAgentStatus(event.status);\n progressRecorders.get(event.id)?.completeOpenSteps(completedStatus === 'done' ? 'done' : 'error');\n progressRecorders.delete(event.id);\n void appendEvent('agent_completed', {\n agentId: formatRuntimeAgentId(event.id),\n status: completedStatus,\n resultPreview: previewWorkflowValue(event.result),\n error: completedStatus === 'error' ? 'Subagent failed' : undefined,\n });\n },\n enhanceSubagentRun: (ctx) => {\n const recorder = new AgentProgressRecorder({\n agentId: formatRuntimeAgentId(ctx.id),\n appendEvent,\n });\n progressRecorders.set(ctx.id, recorder);\n return { onProgress: (event) => recorder.onProgress(event) };\n },\n },\n );\n\n await eventQueue;\n if (currentPhaseId) {\n await appendEvent('phase_completed', { phaseId: currentPhaseId });\n }\n await appendEvent('run_completed', { result: toWorkflowResultEnvelope(runtimeResult.result) });\n } catch (err) {\n await eventQueue;\n const error = toWorkflowRunError(err, options.signal?.aborted === true);\n if (error.code === 'cancelled') {\n await appendEvent('run_cancelled', { reason: error.message });\n } else {\n await appendEvent('run_failed', { error });\n }\n }\n\n const view = await this.options.runStore.readRunView(runId);\n if (!view) {\n throw new Error(`workflow run view was not created for ${runId}`);\n }\n return view;\n }\n}\n\ntype AppendWorkflowEvent = (\n type: WorkflowEventType,\n payload: WorkflowEventPayload,\n createdAtMsOverride?: number,\n) => Promise<void>;\n\nclass AgentProgressRecorder {\n private readonly activeToolStepIds = new Map<string, string>();\n private activeIterationStepId: string | null = null;\n private activeThinkingStepId: string | null = null;\n private activeLlmStepId: string | null = null;\n private sequence = 0;\n\n constructor(\n private readonly options: {\n agentId: string;\n appendEvent: AppendWorkflowEvent;\n },\n ) {}\n\n onProgress(event: SubagentProgressEvent): void {\n switch (event.type) {\n case 'tool_start':\n this.startToolStep(event);\n return;\n case 'tool_end':\n this.completeToolStep(event);\n return;\n case 'iteration':\n this.replaceSingletonStep('iteration', this.buildIterationLabel(event.count, event.max), 'llm');\n return;\n case 'thinking_delta':\n this.ensureSingletonStep('thinking', 'Thinking', 'thinking');\n return;\n case 'text_delta':\n this.ensureSingletonStep('llm', 'Writing response', 'llm');\n return;\n default:\n return;\n }\n }\n\n completeOpenSteps(status: 'done' | 'error'): void {\n for (const stepId of this.activeToolStepIds.values()) {\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status,\n });\n }\n this.activeToolStepIds.clear();\n this.completeSingletonStep('iteration', status);\n this.completeSingletonStep('thinking', status);\n this.completeSingletonStep('llm', status);\n }\n\n private startToolStep(event: Extract<SubagentProgressEvent, { type: 'tool_start' }>): void {\n const stepId = this.nextStepId('tool');\n const { label, detail } = workflowStepLabel(event.toolName, event.args);\n this.activeToolStepIds.set(event.toolCallId, stepId);\n void this.options.appendEvent('agent_step_started', {\n agentId: this.options.agentId,\n stepId,\n label,\n kind: 'tool',\n toolName: event.toolName,\n detail: detail ?? previewWorkflowValue(event.args),\n });\n }\n\n private completeToolStep(event: Extract<SubagentProgressEvent, { type: 'tool_end' }>): void {\n const stepId = this.activeToolStepIds.get(event.toolCallId);\n if (!stepId) return;\n this.activeToolStepIds.delete(event.toolCallId);\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status: event.isError ? 'error' : 'done',\n resultPreview: event.resultPreview,\n error: event.error,\n });\n }\n\n private replaceSingletonStep(\n slot: 'iteration' | 'thinking' | 'llm',\n label: string,\n kind: 'tool' | 'llm' | 'thinking',\n ): void {\n this.completeSingletonStep(slot, 'done');\n this.ensureSingletonStep(slot, label, kind);\n }\n\n private ensureSingletonStep(\n slot: 'iteration' | 'thinking' | 'llm',\n label: string,\n kind: 'tool' | 'llm' | 'thinking',\n ): void {\n if (this.getSingletonStepId(slot)) return;\n const stepId = this.nextStepId(slot);\n this.setSingletonStepId(slot, stepId);\n void this.options.appendEvent('agent_step_started', {\n agentId: this.options.agentId,\n stepId,\n label,\n kind,\n });\n }\n\n private completeSingletonStep(slot: 'iteration' | 'thinking' | 'llm', status: 'done' | 'error'): void {\n const stepId = this.getSingletonStepId(slot);\n if (!stepId) return;\n this.setSingletonStepId(slot, null);\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status,\n });\n }\n\n private getSingletonStepId(slot: 'iteration' | 'thinking' | 'llm'): string | null {\n if (slot === 'iteration') return this.activeIterationStepId;\n if (slot === 'thinking') return this.activeThinkingStepId;\n return this.activeLlmStepId;\n }\n\n private setSingletonStepId(slot: 'iteration' | 'thinking' | 'llm', stepId: string | null): void {\n if (slot === 'iteration') {\n this.activeIterationStepId = stepId;\n return;\n }\n if (slot === 'thinking') {\n this.activeThinkingStepId = stepId;\n return;\n }\n this.activeLlmStepId = stepId;\n }\n\n private buildIterationLabel(count: number, max: number): string {\n if (max > 0) return `Iteration ${count}/${max}`;\n return `Iteration ${count}`;\n }\n\n private nextStepId(kind: string): string {\n this.sequence += 1;\n return `${this.options.agentId}-${kind}-${this.sequence}`;\n }\n}\n\nfunction buildPhaseTitleToId(definition: WorkflowDefinition): Map<string, string> {\n const phaseTitleToId = new Map<string, string>();\n for (const phase of definition.phases) {\n phaseTitleToId.set(phase.title, phase.id);\n }\n return phaseTitleToId;\n}\n\nfunction normalizePhaseId(title: string): string {\n const normalized = title\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return normalized || 'phase';\n}\n\nfunction formatRuntimeAgentId(id: number): string {\n return `agent-${id}`;\n}\n\nfunction normalizeCompletedAgentStatus(status: string): 'done' | 'error' | 'skipped' {\n if (status === 'done' || status === 'error' || status === 'skipped') {\n return status;\n }\n return 'error';\n}\n\nfunction previewWorkflowValue(value: unknown): string | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === 'string') {\n return truncate(value, 300);\n }\n try {\n return truncate(JSON.stringify(value), 300);\n } catch {\n return truncate(String(value), 300);\n }\n}\n\nfunction truncate(value: string, maxLength: number): string {\n const trimmed = value.trim();\n if (trimmed.length <= maxLength) {\n return trimmed;\n }\n return `${trimmed.slice(0, maxLength - 1)}…`;\n}\n\nfunction toWorkflowResultEnvelope(value: unknown): WorkflowResultEnvelope {\n if (isWorkflowResultEnvelope(value)) {\n return value;\n }\n if (typeof value === 'string') {\n return {\n summary: truncate(value, 800),\n sections: [{ kind: 'text', title: 'Result', content: value }],\n raw: value,\n };\n }\n return {\n summary: 'Workflow completed.',\n sections: [{ kind: 'json', title: 'Result', value }],\n raw: value,\n };\n}\n\nfunction isWorkflowResultEnvelope(value: unknown): value is WorkflowResultEnvelope {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const record = value as Partial<WorkflowResultEnvelope>;\n return typeof record.summary === 'string' && Array.isArray(record.sections);\n}\n\nfunction toWorkflowRunError(err: unknown, wasAborted: boolean): WorkflowRunError {\n const message = err instanceof Error ? err.message : String(err);\n if (wasAborted || /aborted|cancelled/i.test(message)) {\n return {\n code: 'cancelled',\n message: message || 'Workflow run cancelled',\n recoverable: true,\n };\n }\n if (/timeout/i.test(message)) {\n return {\n code: 'timeout',\n message,\n recoverable: true,\n };\n }\n if (/quota/i.test(message)) {\n return {\n code: 'agent_quota_exceeded',\n message,\n recoverable: true,\n };\n }\n return {\n code: 'runtime_error',\n message,\n recoverable: false,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"workflow-engine.js","names":[],"sources":["../../../../src/workflows/engine/workflow-engine.ts"],"sourcesContent":["import { randomUUID } from 'node:crypto';\n\nimport type { WorkflowDefinition } from '../domain/definition.js';\nimport type { WorkflowEventEnvelope, WorkflowEventPayload, WorkflowEventType } from '../domain/event.js';\nimport type { WorkflowRun, WorkflowRunError, WorkflowRunMetadata, WorkflowRunSource, WorkflowRunView } from '../domain/run.js';\nimport type { WorkflowResultEnvelope } from '../domain/result.js';\nimport { WorkflowEventStore } from '../store/event-store.js';\nimport { WorkflowRunStore } from '../store/run-store.js';\nimport { createScriptWorkflowRuntime } from '../runtime/script-workflow-runtime.js';\nimport type { WorkflowRuntime } from '../runtime/workflow-runtime-port.js';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport { workflowStepLabel } from '../../agent/workflow/step-labels.js';\nimport type { SubagentProgressEvent } from '../../agent/workflow/types.js';\nimport type { WorkflowScriptSubagentRunner } from '../runtime/script-runtime.js';\n\nexport interface WorkflowEngineOptions {\n cwd: string;\n eventStore: WorkflowEventStore;\n runStore: WorkflowRunStore;\n runner: WorkflowScriptSubagentRunner;\n runtime?: WorkflowRuntime;\n hooks?: WorkflowEngineHook[];\n subagentSessionKeyFactory?: (ctx: { runId: string; agentId: string }) => string;\n parentSessionKey?: string;\n onEventAppended?: (event: WorkflowEventEnvelope) => void;\n onRunViewUpdated?: (view: WorkflowRunView) => void;\n resolveModelId?: (modelId: string) => Model<Api>;\n}\n\nexport interface WorkflowEngineHook {\n beforeRun?(ctx: WorkflowRunHookContext): Promise<void> | void;\n beforeAgent?(ctx: WorkflowAgentHookContext): Promise<void> | void;\n afterAgent?(ctx: WorkflowAgentCompletedHookContext): Promise<void> | void;\n afterRun?(ctx: WorkflowRunCompletedHookContext): Promise<void> | void;\n}\n\nexport interface WorkflowRunHookContext {\n definition: WorkflowDefinition;\n run: WorkflowRun;\n}\n\nexport interface WorkflowAgentHookContext {\n runId: string;\n agentId: string;\n label: string;\n phaseId?: string;\n prompt: string;\n}\n\nexport interface WorkflowAgentCompletedHookContext {\n runId: string;\n agentId: string;\n status: 'done' | 'error' | 'skipped';\n resultPreview?: string;\n}\n\nexport interface WorkflowRunCompletedHookContext {\n runId: string;\n status: 'succeeded' | 'failed' | 'cancelled';\n}\n\nexport interface StartWorkflowRunOptions {\n input?: unknown;\n source: WorkflowRunSource;\n metadata?: WorkflowRunMetadata;\n goal?: string;\n runId?: string;\n signal?: AbortSignal;\n concurrency?: number;\n maxSubagents?: number;\n tokenBudget?: number | null;\n}\n\nexport class WorkflowEngine {\n constructor(private readonly options: WorkflowEngineOptions) {}\n\n async startRun(definition: WorkflowDefinition, options: StartWorkflowRunOptions): Promise<WorkflowRunView> {\n const runId = options.runId ?? randomUUID();\n const createdAtMs = Date.now();\n const phaseTitleToId = buildPhaseTitleToId(definition);\n let currentPhaseId: string | undefined;\n let eventQueue = Promise.resolve();\n const progressRecorders = new Map<number, AgentProgressRecorder>();\n const subagentSessionKeys = new Map<number, string>();\n\n const run: WorkflowRun = {\n id: runId,\n definitionId: definition.id,\n definitionVersion: definition.version,\n title: definition.title,\n goal: options.goal ?? definition.description,\n input: options.input ?? {},\n status: 'queued',\n source: options.source,\n metadata: options.metadata,\n metrics: {\n agentCount: 0,\n doneAgentCount: 0,\n errorAgentCount: 0,\n skippedAgentCount: 0,\n artifactCount: 0,\n },\n createdAtMs,\n };\n\n const appendEvent = (type: WorkflowEventType, payload: WorkflowEventPayload, createdAtMsOverride?: number) => {\n eventQueue = eventQueue\n .then(() =>\n this.options.eventStore.append({\n runId,\n type,\n payload,\n createdAtMs: createdAtMsOverride,\n }),\n )\n .then(async (event) => {\n this.options.onEventAppended?.(event);\n const view = await this.options.runStore.rebuildRunView(runId);\n if (view) {\n this.options.onRunViewUpdated?.(view);\n }\n });\n return eventQueue;\n };\n\n await appendEvent('run_queued', { run }, createdAtMs);\n await this.callHooks((hook) => hook.beforeRun?.({ definition, run }));\n await appendEvent('run_started', { startedAtMs: Date.now() });\n\n try {\n const runtime = this.options.runtime ?? createScriptWorkflowRuntime();\n const runtimeResult = await runtime.run<unknown>(\n definition.runtime.source,\n {\n runner: this.options.runner,\n resolveModelId: this.options.resolveModelId,\n },\n {\n cwd: this.options.cwd,\n args: options.input,\n signal: options.signal,\n concurrency: options.concurrency ?? definition.defaults.concurrency,\n maxSubagents: options.maxSubagents ?? definition.defaults.maxSubagents,\n tokenBudget: options.tokenBudget,\n onPhase: (title) => {\n const nextPhaseId = phaseTitleToId.get(title) ?? normalizePhaseId(title);\n if (currentPhaseId && currentPhaseId !== nextPhaseId) {\n void appendEvent('phase_completed', { phaseId: currentPhaseId });\n }\n currentPhaseId = nextPhaseId;\n void appendEvent('phase_started', { phaseId: nextPhaseId, title });\n },\n onLog: (message) => {\n void appendEvent('log_appended', { message });\n },\n onAgentQueued: (event) => {\n const agentId = formatRuntimeAgentId(event.id);\n const subagentSessionKey = this.options.subagentSessionKeyFactory?.({ runId, agentId }) ?? defaultSubagentSessionKey(runId, agentId);\n subagentSessionKeys.set(event.id, subagentSessionKey);\n const phaseId = event.phase ? (phaseTitleToId.get(event.phase) ?? normalizePhaseId(event.phase)) : currentPhaseId;\n void this.callHooks((hook) => hook.beforeAgent?.({\n runId,\n agentId,\n label: event.label,\n phaseId,\n prompt: event.prompt,\n }));\n void appendEvent('agent_queued', {\n agentId,\n label: event.label,\n phaseId,\n prompt: event.prompt,\n sessionKey: subagentSessionKey,\n });\n },\n onAgentStart: (event) => {\n void appendEvent('agent_started', { agentId: formatRuntimeAgentId(event.id) });\n },\n onAgentEnd: (event) => {\n const agentId = formatRuntimeAgentId(event.id);\n const completedStatus = normalizeCompletedAgentStatus(event.status);\n const resultPreview = previewWorkflowValue(event.result);\n progressRecorders.get(event.id)?.completeOpenSteps(completedStatus === 'done' ? 'done' : 'error');\n progressRecorders.delete(event.id);\n void appendEvent('agent_completed', {\n agentId,\n status: completedStatus,\n resultPreview,\n error: completedStatus === 'error' ? 'Subagent failed' : undefined,\n }).then(() => this.callHooks((hook) => hook.afterAgent?.({\n runId,\n agentId,\n status: completedStatus,\n resultPreview,\n })).catch(() => undefined));\n },\n enhanceSubagentRun: (ctx) => {\n const recorder = new AgentProgressRecorder({\n agentId: formatRuntimeAgentId(ctx.id),\n appendEvent,\n });\n progressRecorders.set(ctx.id, recorder);\n const agentId = formatRuntimeAgentId(ctx.id);\n const sessionKey = subagentSessionKeys.get(ctx.id)\n ?? this.options.subagentSessionKeyFactory?.({ runId, agentId })\n ?? defaultSubagentSessionKey(runId, agentId);\n subagentSessionKeys.set(ctx.id, sessionKey);\n return {\n sessionKey,\n sessionMetadata: {\n parentSessionKey: this.options.parentSessionKey,\n workflowRunId: runId,\n workflowDefinitionId: definition.id,\n workflowAgentId: agentId,\n workflowAgentLabel: ctx.label,\n },\n onProgress: (event) => recorder.onProgress(event),\n };\n },\n },\n );\n\n await eventQueue;\n if (currentPhaseId) {\n await appendEvent('phase_completed', { phaseId: currentPhaseId });\n }\n await appendEvent('run_completed', { result: toWorkflowResultEnvelope(runtimeResult.result) });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'succeeded' }));\n } catch (err) {\n await eventQueue;\n const error = toWorkflowRunError(err, options.signal?.aborted === true);\n if (error.code === 'cancelled') {\n await appendEvent('run_cancelled', { reason: error.message });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'cancelled' }));\n } else {\n await appendEvent('run_failed', { error });\n await this.callHooks((hook) => hook.afterRun?.({ runId, status: 'failed' }));\n }\n }\n\n const view = await this.options.runStore.readRunView(runId);\n if (!view) {\n throw new Error(`workflow run view was not created for ${runId}`);\n }\n return view;\n }\n\n private async callHooks(call: (hook: WorkflowEngineHook) => Promise<void> | void | undefined): Promise<void> {\n for (const hook of this.options.hooks ?? []) {\n try {\n await call(hook);\n } catch {\n // Hooks are extension points; workflow execution remains authoritative.\n }\n }\n }\n}\n\ntype AppendWorkflowEvent = (\n type: WorkflowEventType,\n payload: WorkflowEventPayload,\n createdAtMsOverride?: number,\n) => Promise<void>;\n\nclass AgentProgressRecorder {\n private readonly activeToolStepIds = new Map<string, string>();\n private activeIterationStepId: string | null = null;\n private activeThinkingStepId: string | null = null;\n private activeLlmStepId: string | null = null;\n private sequence = 0;\n\n constructor(\n private readonly options: {\n agentId: string;\n appendEvent: AppendWorkflowEvent;\n },\n ) {}\n\n onProgress(event: SubagentProgressEvent): void {\n switch (event.type) {\n case 'tool_start':\n this.startToolStep(event);\n return;\n case 'tool_end':\n this.completeToolStep(event);\n return;\n case 'iteration':\n this.replaceSingletonStep('iteration', this.buildIterationLabel(event.count, event.max), 'llm');\n return;\n case 'thinking_delta':\n this.ensureSingletonStep('thinking', 'Thinking', 'thinking');\n return;\n case 'text_delta':\n this.ensureSingletonStep('llm', 'Writing response', 'llm');\n return;\n default:\n return;\n }\n }\n\n completeOpenSteps(status: 'done' | 'error'): void {\n for (const stepId of this.activeToolStepIds.values()) {\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status,\n });\n }\n this.activeToolStepIds.clear();\n this.completeSingletonStep('iteration', status);\n this.completeSingletonStep('thinking', status);\n this.completeSingletonStep('llm', status);\n }\n\n private startToolStep(event: Extract<SubagentProgressEvent, { type: 'tool_start' }>): void {\n const stepId = this.nextStepId('tool');\n const { label, detail } = workflowStepLabel(event.toolName, event.args);\n this.activeToolStepIds.set(event.toolCallId, stepId);\n void this.options.appendEvent('agent_step_started', {\n agentId: this.options.agentId,\n stepId,\n label,\n kind: 'tool',\n toolName: event.toolName,\n detail: detail ?? previewWorkflowValue(event.args),\n });\n }\n\n private completeToolStep(event: Extract<SubagentProgressEvent, { type: 'tool_end' }>): void {\n const stepId = this.activeToolStepIds.get(event.toolCallId);\n if (!stepId) return;\n this.activeToolStepIds.delete(event.toolCallId);\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status: event.isError ? 'error' : 'done',\n resultPreview: event.resultPreview,\n error: event.error,\n });\n }\n\n private replaceSingletonStep(\n slot: 'iteration' | 'thinking' | 'llm',\n label: string,\n kind: 'tool' | 'llm' | 'thinking',\n ): void {\n this.completeSingletonStep(slot, 'done');\n this.ensureSingletonStep(slot, label, kind);\n }\n\n private ensureSingletonStep(\n slot: 'iteration' | 'thinking' | 'llm',\n label: string,\n kind: 'tool' | 'llm' | 'thinking',\n ): void {\n if (this.getSingletonStepId(slot)) return;\n const stepId = this.nextStepId(slot);\n this.setSingletonStepId(slot, stepId);\n void this.options.appendEvent('agent_step_started', {\n agentId: this.options.agentId,\n stepId,\n label,\n kind,\n });\n }\n\n private completeSingletonStep(slot: 'iteration' | 'thinking' | 'llm', status: 'done' | 'error'): void {\n const stepId = this.getSingletonStepId(slot);\n if (!stepId) return;\n this.setSingletonStepId(slot, null);\n void this.options.appendEvent('agent_step_completed', {\n agentId: this.options.agentId,\n stepId,\n status,\n });\n }\n\n private getSingletonStepId(slot: 'iteration' | 'thinking' | 'llm'): string | null {\n if (slot === 'iteration') return this.activeIterationStepId;\n if (slot === 'thinking') return this.activeThinkingStepId;\n return this.activeLlmStepId;\n }\n\n private setSingletonStepId(slot: 'iteration' | 'thinking' | 'llm', stepId: string | null): void {\n if (slot === 'iteration') {\n this.activeIterationStepId = stepId;\n return;\n }\n if (slot === 'thinking') {\n this.activeThinkingStepId = stepId;\n return;\n }\n this.activeLlmStepId = stepId;\n }\n\n private buildIterationLabel(count: number, max: number): string {\n if (max > 0) return `Iteration ${count}/${max}`;\n return `Iteration ${count}`;\n }\n\n private nextStepId(kind: string): string {\n this.sequence += 1;\n return `${this.options.agentId}-${kind}-${this.sequence}`;\n }\n}\n\nfunction buildPhaseTitleToId(definition: WorkflowDefinition): Map<string, string> {\n const phaseTitleToId = new Map<string, string>();\n for (const phase of definition.phases) {\n phaseTitleToId.set(phase.title, phase.id);\n }\n return phaseTitleToId;\n}\n\nfunction normalizePhaseId(title: string): string {\n const normalized = title\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n return normalized || 'phase';\n}\n\nfunction formatRuntimeAgentId(id: number): string {\n return `agent-${id}`;\n}\n\nfunction defaultSubagentSessionKey(runId: string, agentId: string): string {\n return `workflow:${runId}:subagent:${agentId}`;\n}\n\nfunction normalizeCompletedAgentStatus(status: string): 'done' | 'error' | 'skipped' {\n if (status === 'done' || status === 'error' || status === 'skipped') {\n return status;\n }\n return 'error';\n}\n\nfunction previewWorkflowValue(value: unknown): string | undefined {\n if (value === null || value === undefined) {\n return undefined;\n }\n if (typeof value === 'string') {\n return truncate(value, 300);\n }\n try {\n return truncate(JSON.stringify(value), 300);\n } catch {\n return truncate(String(value), 300);\n }\n}\n\nfunction truncate(value: string, maxLength: number): string {\n const trimmed = value.trim();\n if (trimmed.length <= maxLength) {\n return trimmed;\n }\n return `${trimmed.slice(0, maxLength - 1)}…`;\n}\n\nfunction toWorkflowResultEnvelope(value: unknown): WorkflowResultEnvelope {\n if (isWorkflowResultEnvelope(value)) {\n return value;\n }\n if (typeof value === 'string') {\n return {\n summary: truncate(value, 800),\n sections: [{ kind: 'text', title: 'Result', content: value }],\n raw: value,\n };\n }\n return {\n summary: 'Workflow completed.',\n sections: [{ kind: 'json', title: 'Result', value }],\n raw: value,\n };\n}\n\nfunction isWorkflowResultEnvelope(value: unknown): value is WorkflowResultEnvelope {\n if (!value || typeof value !== 'object' || Array.isArray(value)) {\n return false;\n }\n const record = value as Partial<WorkflowResultEnvelope>;\n return typeof record.summary === 'string' && Array.isArray(record.sections);\n}\n\nfunction toWorkflowRunError(err: unknown, wasAborted: boolean): WorkflowRunError {\n const message = err instanceof Error ? err.message : String(err);\n if (wasAborted || /aborted|cancelled/i.test(message)) {\n return {\n code: 'cancelled',\n message: message || 'Workflow run cancelled',\n recoverable: true,\n };\n }\n if (/timeout/i.test(message)) {\n return {\n code: 'timeout',\n message,\n recoverable: true,\n };\n }\n if (/quota/i.test(message)) {\n return {\n code: 'agent_quota_exceeded',\n message,\n recoverable: true,\n };\n }\n return {\n code: 'runtime_error',\n message,\n recoverable: false,\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export * from './domain/index.js';
|
|
2
2
|
export * from './engine/index.js';
|
|
3
3
|
export * from './runtime/index.js';
|
|
4
|
+
export * from './registry/index.js';
|
|
4
5
|
export * from './service/workflow-run-service.js';
|
|
5
6
|
export * from './service/workflow-session-bridge.js';
|
|
6
7
|
export * from './service/workflow-session-key.js';
|
|
@@ -5,7 +5,9 @@ import { isTerminalWorkflowRunStatus } from "./domain/run.js";
|
|
|
5
5
|
import { validateWorkflowDefinitionInput } from "./domain/validation.js";
|
|
6
6
|
import "./domain/index.js";
|
|
7
7
|
import { runViewToSnapshot } from "./service/run-view-to-snapshot.js";
|
|
8
|
+
import { CatalogWorkflowDefinitionRegistry } from "./registry/catalog-workflow-definition-registry.js";
|
|
8
9
|
import { projectWorkflowRunView } from "./engine/projector.js";
|
|
10
|
+
import { ScriptWorkflowRuntime, createScriptWorkflowRuntime } from "./runtime/script-workflow-runtime.js";
|
|
9
11
|
import { WorkflowEngine } from "./engine/workflow-engine.js";
|
|
10
12
|
import "./engine/index.js";
|
|
11
13
|
import { resolveWorkflowRootDir, resolveWorkflowRunArtifactsDir, resolveWorkflowRunDir, resolveWorkflowRunEventsPath, resolveWorkflowRunViewPath, resolveWorkflowRunsDir } from "./store/paths.js";
|
|
@@ -15,4 +17,5 @@ import { WorkflowRunService, buildWorkflowRunDefinitionSnapshot, buildWorkflowRu
|
|
|
15
17
|
import { buildWorkflowRunSessionKey, readWorkflowRunIdFromSessionCustomData } from "./service/workflow-session-key.js";
|
|
16
18
|
import { WORKFLOW_RUN_LINK_CONTEXT_KIND, WORKFLOW_SESSION_TYPE, WorkflowSessionBridge, formatParentRunLinkText } from "./service/workflow-session-bridge.js";
|
|
17
19
|
import "./runtime/index.js";
|
|
18
|
-
|
|
20
|
+
import "./registry/index.js";
|
|
21
|
+
export { CatalogWorkflowDefinitionRegistry, DEFAULT_WORKFLOW_CONCURRENCY, DEFAULT_WORKFLOW_MAX_SUBAGENTS, DEFAULT_WORKFLOW_TIMEOUT_SEC, ScriptWorkflowRuntime, WORKFLOW_RUN_LINK_CONTEXT_KIND, WORKFLOW_SESSION_TYPE, WorkflowEngine, WorkflowEventStore, WorkflowRunService, WorkflowRunStore, WorkflowSessionBridge, buildWorkflowDefinition, buildWorkflowRunDefinitionSnapshot, buildWorkflowRunInputEnvelope, buildWorkflowRunMetadata, buildWorkflowRunSessionKey, createScriptWorkflowRuntime, createWorkflowEventStore, createWorkflowRunStore, extractWorkflowRunSessionKey, formatParentRunLinkText, isTerminalWorkflowRunStatus, normalizeWorkflowDefinitionId, parseWorkflowScript, projectWorkflowRunView, readWorkflowRunIdFromSessionCustomData, resolveWorkflowRootDir, resolveWorkflowRunArtifactsDir, resolveWorkflowRunDir, resolveWorkflowRunEventsPath, resolveWorkflowRunViewPath, resolveWorkflowRunsDir, runViewToSnapshot, runWorkflow as runWorkflowScript, toWorkflowDefinitionTitle, validateWorkflowDefinitionInput };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type WorkflowCatalog } from '../../agent/workflow/catalog.js';
|
|
2
|
+
import type { WorkflowDefinition } from '../domain/definition.js';
|
|
3
|
+
import type { WorkflowDefinitionRegistry, WorkflowDefinitionSummary } from './workflow-definition-registry.js';
|
|
4
|
+
export declare class CatalogWorkflowDefinitionRegistry implements WorkflowDefinitionRegistry {
|
|
5
|
+
private readonly catalog;
|
|
6
|
+
constructor(catalog?: WorkflowCatalog);
|
|
7
|
+
list(): Promise<WorkflowDefinitionSummary[]>;
|
|
8
|
+
get(id: string): Promise<WorkflowDefinition | null>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { createWorkflowCatalog } from "../../agent/workflow/catalog.js";
|
|
2
|
+
import { buildWorkflowDefinition } from "../domain/definition-utils.js";
|
|
3
|
+
//#region src/workflows/registry/catalog-workflow-definition-registry.ts
|
|
4
|
+
var CatalogWorkflowDefinitionRegistry = class {
|
|
5
|
+
constructor(catalog = createWorkflowCatalog()) {
|
|
6
|
+
this.catalog = catalog;
|
|
7
|
+
}
|
|
8
|
+
async list() {
|
|
9
|
+
return this.catalog.list().map((entry) => ({
|
|
10
|
+
id: entry.name,
|
|
11
|
+
name: entry.name,
|
|
12
|
+
title: entry.title ?? toTitle(entry.name),
|
|
13
|
+
description: entry.description,
|
|
14
|
+
source: entry.source,
|
|
15
|
+
tags: entry.tags,
|
|
16
|
+
whenToUse: entry.whenToUse
|
|
17
|
+
}));
|
|
18
|
+
}
|
|
19
|
+
async get(id) {
|
|
20
|
+
try {
|
|
21
|
+
const loaded = this.catalog.load(id);
|
|
22
|
+
return buildWorkflowDefinition({
|
|
23
|
+
name: loaded.name,
|
|
24
|
+
source: loaded.source,
|
|
25
|
+
script: loaded.script,
|
|
26
|
+
meta: loaded.meta,
|
|
27
|
+
manifest: loaded.manifest
|
|
28
|
+
});
|
|
29
|
+
} catch {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
function toTitle(value) {
|
|
35
|
+
return value.split(/[_-]+/g).filter(Boolean).map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`).join(" ");
|
|
36
|
+
}
|
|
37
|
+
//#endregion
|
|
38
|
+
export { CatalogWorkflowDefinitionRegistry };
|
|
39
|
+
|
|
40
|
+
//# sourceMappingURL=catalog-workflow-definition-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-workflow-definition-registry.js","names":[],"sources":["../../../../src/workflows/registry/catalog-workflow-definition-registry.ts"],"sourcesContent":["import { createWorkflowCatalog, type WorkflowCatalog } from '../../agent/workflow/catalog.js';\nimport { buildWorkflowDefinition } from '../domain/definition-utils.js';\nimport type { WorkflowDefinition } from '../domain/definition.js';\nimport type { WorkflowDefinitionRegistry, WorkflowDefinitionSummary } from './workflow-definition-registry.js';\n\nexport class CatalogWorkflowDefinitionRegistry implements WorkflowDefinitionRegistry {\n constructor(private readonly catalog: WorkflowCatalog = createWorkflowCatalog()) {}\n\n async list(): Promise<WorkflowDefinitionSummary[]> {\n return this.catalog.list().map((entry) => ({\n id: entry.name,\n name: entry.name,\n title: entry.title ?? toTitle(entry.name),\n description: entry.description,\n source: entry.source,\n tags: entry.tags,\n whenToUse: entry.whenToUse,\n }));\n }\n\n async get(id: string): Promise<WorkflowDefinition | null> {\n try {\n const loaded = this.catalog.load(id);\n return buildWorkflowDefinition({\n name: loaded.name,\n source: loaded.source,\n script: loaded.script,\n meta: loaded.meta,\n manifest: loaded.manifest,\n });\n } catch {\n return null;\n }\n }\n}\n\nfunction toTitle(value: string): string {\n return value\n .split(/[_-]+/g)\n .filter(Boolean)\n .map((part) => `${part.slice(0, 1).toUpperCase()}${part.slice(1)}`)\n .join(' ');\n}\n"],"mappings":";;;AAKA,IAAa,oCAAb,MAAqF;CACnF,YAAY,UAA4C,uBAAuB,EAAE;AAApD,OAAA,UAAA;;CAE7B,MAAM,OAA6C;AACjD,SAAO,KAAK,QAAQ,MAAM,CAAC,KAAK,WAAW;GACzC,IAAI,MAAM;GACV,MAAM,MAAM;GACZ,OAAO,MAAM,SAAS,QAAQ,MAAM,KAAK;GACzC,aAAa,MAAM;GACnB,QAAQ,MAAM;GACd,MAAM,MAAM;GACZ,WAAW,MAAM;GAClB,EAAE;;CAGL,MAAM,IAAI,IAAgD;AACxD,MAAI;GACF,MAAM,SAAS,KAAK,QAAQ,KAAK,GAAG;AACpC,UAAO,wBAAwB;IAC7B,MAAM,OAAO;IACb,QAAQ,OAAO;IACf,QAAQ,OAAO;IACf,MAAM,OAAO;IACb,UAAU,OAAO;IAClB,CAAC;UACI;AACN,UAAO;;;;AAKb,SAAS,QAAQ,OAAuB;AACtC,QAAO,MACJ,MAAM,SAAS,CACf,OAAO,QAAQ,CACf,KAAK,SAAS,GAAG,KAAK,MAAM,GAAG,EAAE,CAAC,aAAa,GAAG,KAAK,MAAM,EAAE,GAAG,CAClE,KAAK,IAAI"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { WorkflowDefinition } from '../domain/definition.js';
|
|
2
|
+
export interface WorkflowDefinitionSummary {
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
title: string;
|
|
6
|
+
description: string;
|
|
7
|
+
source: 'builtin' | 'user';
|
|
8
|
+
tags?: string[];
|
|
9
|
+
whenToUse?: string;
|
|
10
|
+
}
|
|
11
|
+
/** Definition source port: filesystem, built-ins, remote packages, extensions. */
|
|
12
|
+
export interface WorkflowDefinitionRegistry {
|
|
13
|
+
list(): Promise<WorkflowDefinitionSummary[]>;
|
|
14
|
+
get(id: string): Promise<WorkflowDefinition | null>;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { parseWorkflowScript } from "../../agent/workflow/parser.js";
|
|
2
2
|
import { runWorkflow } from "../../agent/workflow/runtime.js";
|
|
3
3
|
import "./script-runtime.js";
|
|
4
|
-
|
|
4
|
+
import { ScriptWorkflowRuntime, createScriptWorkflowRuntime } from "./script-workflow-runtime.js";
|
|
5
|
+
export { ScriptWorkflowRuntime, createScriptWorkflowRuntime, parseWorkflowScript, runWorkflow as runWorkflowScript };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { WorkflowRuntime, WorkflowRuntimeDeps, WorkflowRuntimeRunOptions, WorkflowRuntimeRunResult } from './workflow-runtime-port.js';
|
|
2
|
+
export declare class ScriptWorkflowRuntime implements WorkflowRuntime {
|
|
3
|
+
run<T = unknown>(script: string, deps: WorkflowRuntimeDeps, options: WorkflowRuntimeRunOptions): Promise<WorkflowRuntimeRunResult<T>>;
|
|
4
|
+
}
|
|
5
|
+
export declare function createScriptWorkflowRuntime(): WorkflowRuntime;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { runWorkflow } from "../../agent/workflow/runtime.js";
|
|
2
|
+
import "./script-runtime.js";
|
|
3
|
+
//#region src/workflows/runtime/script-workflow-runtime.ts
|
|
4
|
+
var ScriptWorkflowRuntime = class {
|
|
5
|
+
run(script, deps, options) {
|
|
6
|
+
return runWorkflow(script, deps, options);
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
function createScriptWorkflowRuntime() {
|
|
10
|
+
return new ScriptWorkflowRuntime();
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { ScriptWorkflowRuntime, createScriptWorkflowRuntime };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=script-workflow-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-workflow-runtime.js","names":["runWorkflowScript"],"sources":["../../../../src/workflows/runtime/script-workflow-runtime.ts"],"sourcesContent":["import { runWorkflowScript } from './script-runtime.js';\nimport type {\n WorkflowRuntime,\n WorkflowRuntimeDeps,\n WorkflowRuntimeRunOptions,\n WorkflowRuntimeRunResult,\n} from './workflow-runtime-port.js';\n\nexport class ScriptWorkflowRuntime implements WorkflowRuntime {\n run<T = unknown>(\n script: string,\n deps: WorkflowRuntimeDeps,\n options: WorkflowRuntimeRunOptions,\n ): Promise<WorkflowRuntimeRunResult<T>> {\n return runWorkflowScript<T>(script, deps, options);\n }\n}\n\nexport function createScriptWorkflowRuntime(): WorkflowRuntime {\n return new ScriptWorkflowRuntime();\n}\n"],"mappings":";;;AAQA,IAAa,wBAAb,MAA8D;CAC5D,IACE,QACA,MACA,SACsC;AACtC,SAAOA,YAAqB,QAAQ,MAAM,QAAQ;;;AAItD,SAAgB,8BAA+C;AAC7D,QAAO,IAAI,uBAAuB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { Api, Model } from '@earendil-works/pi-ai';
|
|
2
|
+
import type { SubagentRunner, WorkflowRunOptions as ScriptWorkflowRunOptions, WorkflowRunResult as ScriptWorkflowRunResult } from '../../agent/workflow/types.js';
|
|
3
|
+
export type WorkflowRuntimeSubagentRunner = SubagentRunner;
|
|
4
|
+
export type WorkflowRuntimeRunOptions = ScriptWorkflowRunOptions;
|
|
5
|
+
export type WorkflowRuntimeRunResult<T = unknown> = ScriptWorkflowRunResult<T>;
|
|
6
|
+
export interface WorkflowRuntimeDeps {
|
|
7
|
+
runner: WorkflowRuntimeSubagentRunner;
|
|
8
|
+
resolveModelId?: (modelId: string) => Model<Api>;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Stable workflow execution port. Product services depend on this interface,
|
|
12
|
+
* not on a concrete script/vm implementation.
|
|
13
|
+
*/
|
|
14
|
+
export interface WorkflowRuntime {
|
|
15
|
+
run<T = unknown>(script: string, deps: WorkflowRuntimeDeps, options: WorkflowRuntimeRunOptions): Promise<WorkflowRuntimeRunResult<T>>;
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -21,6 +21,8 @@ function runViewToSnapshot(view) {
|
|
|
21
21
|
label: agent.label,
|
|
22
22
|
phase: agent.phaseId ? phaseTitleById.get(agent.phaseId) : void 0,
|
|
23
23
|
prompt: agent.prompt ?? "",
|
|
24
|
+
sessionKey: agent.sessionKey,
|
|
25
|
+
transcriptMessageCount: agent.transcriptMessageCount,
|
|
24
26
|
status: agent.status,
|
|
25
27
|
resultPreview: agent.resultPreview,
|
|
26
28
|
error: agent.error,
|
|
@@ -42,6 +44,7 @@ function runViewToSnapshot(view) {
|
|
|
42
44
|
}));
|
|
43
45
|
const { metrics } = view.run;
|
|
44
46
|
return {
|
|
47
|
+
runId: view.run.id,
|
|
45
48
|
name: view.run.definitionId,
|
|
46
49
|
description: view.run.goal || view.run.title,
|
|
47
50
|
phases: view.phases.map((phase) => phase.title),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run-view-to-snapshot.js","names":[],"sources":["../../../../src/workflows/service/run-view-to-snapshot.ts"],"sourcesContent":["import type { WorkflowSnapshot } from '../../agent/workflow/types.js';\nimport type { WorkflowRunView } from '../domain/index.js';\n\nfunction agentNumericId(id: string, index: number): number {\n const parsed = Number.parseInt(id, 10);\n if (Number.isFinite(parsed)) return parsed;\n return index + 1;\n}\n\nfunction resolveResultPayload(result: WorkflowRunView['run']['result']): unknown {\n if (result == null) return undefined;\n if (typeof result === 'object' && result !== null && 'raw' in result) {\n const raw = (result as { raw?: unknown }).raw;\n return raw !== undefined ? raw : result;\n }\n return result;\n}\n\n/** Map persisted {@link WorkflowRunView} into chat {@link WorkflowSnapshot}. */\nexport function runViewToSnapshot(view: WorkflowRunView): WorkflowSnapshot {\n const phaseTitleById = new Map(view.phases.map((phase) => [phase.id, phase.title]));\n const runningPhase = view.phases.find((phase) => phase.status === 'running');\n\n const agents = view.agents.map((agent, index) => ({\n id: agentNumericId(agent.id, index),\n label: agent.label,\n phase: agent.phaseId ? phaseTitleById.get(agent.phaseId) : undefined,\n prompt: agent.prompt ?? '',\n status: agent.status,\n resultPreview: agent.resultPreview,\n error: agent.error,\n startedAtMs: agent.startedAtMs,\n durationMs:\n agent.startedAtMs != null && agent.completedAtMs != null\n ? agent.completedAtMs - agent.startedAtMs\n : undefined,\n currentStep: agent.currentStep,\n steps: agent.steps?.map((step) => ({\n id: step.id,\n kind: step.kind,\n toolName: step.toolName,\n label: step.label,\n detail: step.detail,\n status: step.status,\n resultPreview: step.resultPreview,\n error: step.error,\n startedAtMs: step.startedAtMs,\n durationMs:\n step.startedAtMs != null && step.completedAtMs != null\n ? step.completedAtMs - step.startedAtMs\n : undefined,\n })),\n }));\n\n const { metrics } = view.run;\n return {\n name: view.run.definitionId,\n description: view.run.goal || view.run.title,\n phases: view.phases.map((phase) => phase.title),\n currentPhase: runningPhase?.title,\n logs: view.logs.map((entry) => entry.message),\n agents,\n agentCount: metrics.agentCount,\n runningCount: Math.max(\n 0,\n metrics.agentCount - metrics.doneAgentCount - metrics.errorAgentCount - metrics.skippedAgentCount,\n ),\n doneCount: metrics.doneAgentCount,\n errorCount: metrics.errorAgentCount,\n skippedCount: metrics.skippedAgentCount,\n durationMs: metrics.durationMs,\n result: resolveResultPayload(view.run.result),\n };\n}\n"],"mappings":";AAGA,SAAS,eAAe,IAAY,OAAuB;CACzD,MAAM,SAAS,OAAO,SAAS,IAAI,GAAG;AACtC,KAAI,OAAO,SAAS,OAAO,CAAE,QAAO;AACpC,QAAO,QAAQ;;AAGjB,SAAS,qBAAqB,QAAmD;AAC/E,KAAI,UAAU,KAAM,QAAO,KAAA;AAC3B,KAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,SAAS,QAAQ;EACpE,MAAM,MAAO,OAA6B;AAC1C,SAAO,QAAQ,KAAA,IAAY,MAAM;;AAEnC,QAAO;;;AAIT,SAAgB,kBAAkB,MAAyC;CACzE,MAAM,iBAAiB,IAAI,IAAI,KAAK,OAAO,KAAK,UAAU,CAAC,MAAM,IAAI,MAAM,MAAM,CAAC,CAAC;CACnF,MAAM,eAAe,KAAK,OAAO,MAAM,UAAU,MAAM,WAAW,UAAU;CAE5E,MAAM,SAAS,KAAK,OAAO,KAAK,OAAO,WAAW;EAChD,IAAI,eAAe,MAAM,IAAI,MAAM;EACnC,OAAO,MAAM;EACb,OAAO,MAAM,UAAU,eAAe,IAAI,MAAM,QAAQ,GAAG,KAAA;EAC3D,QAAQ,MAAM,UAAU;EACxB,QAAQ,MAAM;EACd,eAAe,MAAM;EACrB,OAAO,MAAM;EACb,aAAa,MAAM;EACnB,YACE,MAAM,eAAe,QAAQ,MAAM,iBAAiB,OAChD,MAAM,gBAAgB,MAAM,cAC5B,KAAA;EACN,aAAa,MAAM;EACnB,OAAO,MAAM,OAAO,KAAK,UAAU;GACjC,IAAI,KAAK;GACT,MAAM,KAAK;GACX,UAAU,KAAK;GACf,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,QAAQ,KAAK;GACb,eAAe,KAAK;GACpB,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,YACE,KAAK,eAAe,QAAQ,KAAK,iBAAiB,OAC9C,KAAK,gBAAgB,KAAK,cAC1B,KAAA;GACP,EAAE;EACJ,EAAE;CAEH,MAAM,EAAE,YAAY,KAAK;AACzB,QAAO;EACL,MAAM,KAAK,IAAI;EACf,aAAa,KAAK,IAAI,QAAQ,KAAK,IAAI;EACvC,QAAQ,KAAK,OAAO,KAAK,UAAU,MAAM,MAAM;EAC/C,cAAc,cAAc;EAC5B,MAAM,KAAK,KAAK,KAAK,UAAU,MAAM,QAAQ;EAC7C;EACA,YAAY,QAAQ;EACpB,cAAc,KAAK,IACjB,GACA,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,kBAAkB,QAAQ,kBACjF;EACD,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB,cAAc,QAAQ;EACtB,YAAY,QAAQ;EACpB,QAAQ,qBAAqB,KAAK,IAAI,OAAO;EAC9C"}
|
|
1
|
+
{"version":3,"file":"run-view-to-snapshot.js","names":[],"sources":["../../../../src/workflows/service/run-view-to-snapshot.ts"],"sourcesContent":["import type { WorkflowSnapshot } from '../../agent/workflow/types.js';\nimport type { WorkflowRunView } from '../domain/index.js';\n\nfunction agentNumericId(id: string, index: number): number {\n const parsed = Number.parseInt(id, 10);\n if (Number.isFinite(parsed)) return parsed;\n return index + 1;\n}\n\nfunction resolveResultPayload(result: WorkflowRunView['run']['result']): unknown {\n if (result == null) return undefined;\n if (typeof result === 'object' && result !== null && 'raw' in result) {\n const raw = (result as { raw?: unknown }).raw;\n return raw !== undefined ? raw : result;\n }\n return result;\n}\n\n/** Map persisted {@link WorkflowRunView} into chat {@link WorkflowSnapshot}. */\nexport function runViewToSnapshot(view: WorkflowRunView): WorkflowSnapshot {\n const phaseTitleById = new Map(view.phases.map((phase) => [phase.id, phase.title]));\n const runningPhase = view.phases.find((phase) => phase.status === 'running');\n\n const agents = view.agents.map((agent, index) => ({\n id: agentNumericId(agent.id, index),\n label: agent.label,\n phase: agent.phaseId ? phaseTitleById.get(agent.phaseId) : undefined,\n prompt: agent.prompt ?? '',\n sessionKey: agent.sessionKey,\n transcriptMessageCount: agent.transcriptMessageCount,\n status: agent.status,\n resultPreview: agent.resultPreview,\n error: agent.error,\n startedAtMs: agent.startedAtMs,\n durationMs:\n agent.startedAtMs != null && agent.completedAtMs != null\n ? agent.completedAtMs - agent.startedAtMs\n : undefined,\n currentStep: agent.currentStep,\n steps: agent.steps?.map((step) => ({\n id: step.id,\n kind: step.kind,\n toolName: step.toolName,\n label: step.label,\n detail: step.detail,\n status: step.status,\n resultPreview: step.resultPreview,\n error: step.error,\n startedAtMs: step.startedAtMs,\n durationMs:\n step.startedAtMs != null && step.completedAtMs != null\n ? step.completedAtMs - step.startedAtMs\n : undefined,\n })),\n }));\n\n const { metrics } = view.run;\n return {\n runId: view.run.id,\n name: view.run.definitionId,\n description: view.run.goal || view.run.title,\n phases: view.phases.map((phase) => phase.title),\n currentPhase: runningPhase?.title,\n logs: view.logs.map((entry) => entry.message),\n agents,\n agentCount: metrics.agentCount,\n runningCount: Math.max(\n 0,\n metrics.agentCount - metrics.doneAgentCount - metrics.errorAgentCount - metrics.skippedAgentCount,\n ),\n doneCount: metrics.doneAgentCount,\n errorCount: metrics.errorAgentCount,\n skippedCount: metrics.skippedAgentCount,\n durationMs: metrics.durationMs,\n result: resolveResultPayload(view.run.result),\n };\n}\n"],"mappings":";AAGA,SAAS,eAAe,IAAY,OAAuB;CACzD,MAAM,SAAS,OAAO,SAAS,IAAI,GAAG;AACtC,KAAI,OAAO,SAAS,OAAO,CAAE,QAAO;AACpC,QAAO,QAAQ;;AAGjB,SAAS,qBAAqB,QAAmD;AAC/E,KAAI,UAAU,KAAM,QAAO,KAAA;AAC3B,KAAI,OAAO,WAAW,YAAY,WAAW,QAAQ,SAAS,QAAQ;EACpE,MAAM,MAAO,OAA6B;AAC1C,SAAO,QAAQ,KAAA,IAAY,MAAM;;AAEnC,QAAO;;;AAIT,SAAgB,kBAAkB,MAAyC;CACzE,MAAM,iBAAiB,IAAI,IAAI,KAAK,OAAO,KAAK,UAAU,CAAC,MAAM,IAAI,MAAM,MAAM,CAAC,CAAC;CACnF,MAAM,eAAe,KAAK,OAAO,MAAM,UAAU,MAAM,WAAW,UAAU;CAE5E,MAAM,SAAS,KAAK,OAAO,KAAK,OAAO,WAAW;EAChD,IAAI,eAAe,MAAM,IAAI,MAAM;EACnC,OAAO,MAAM;EACb,OAAO,MAAM,UAAU,eAAe,IAAI,MAAM,QAAQ,GAAG,KAAA;EAC3D,QAAQ,MAAM,UAAU;EACxB,YAAY,MAAM;EAClB,wBAAwB,MAAM;EAC9B,QAAQ,MAAM;EACd,eAAe,MAAM;EACrB,OAAO,MAAM;EACb,aAAa,MAAM;EACnB,YACE,MAAM,eAAe,QAAQ,MAAM,iBAAiB,OAChD,MAAM,gBAAgB,MAAM,cAC5B,KAAA;EACN,aAAa,MAAM;EACnB,OAAO,MAAM,OAAO,KAAK,UAAU;GACjC,IAAI,KAAK;GACT,MAAM,KAAK;GACX,UAAU,KAAK;GACf,OAAO,KAAK;GACZ,QAAQ,KAAK;GACb,QAAQ,KAAK;GACb,eAAe,KAAK;GACpB,OAAO,KAAK;GACZ,aAAa,KAAK;GAClB,YACE,KAAK,eAAe,QAAQ,KAAK,iBAAiB,OAC9C,KAAK,gBAAgB,KAAK,cAC1B,KAAA;GACP,EAAE;EACJ,EAAE;CAEH,MAAM,EAAE,YAAY,KAAK;AACzB,QAAO;EACL,OAAO,KAAK,IAAI;EAChB,MAAM,KAAK,IAAI;EACf,aAAa,KAAK,IAAI,QAAQ,KAAK,IAAI;EACvC,QAAQ,KAAK,OAAO,KAAK,UAAU,MAAM,MAAM;EAC/C,cAAc,cAAc;EAC5B,MAAM,KAAK,KAAK,KAAK,UAAU,MAAM,QAAQ;EAC7C;EACA,YAAY,QAAQ;EACpB,cAAc,KAAK,IACjB,GACA,QAAQ,aAAa,QAAQ,iBAAiB,QAAQ,kBAAkB,QAAQ,kBACjF;EACD,WAAW,QAAQ;EACnB,YAAY,QAAQ;EACpB,cAAc,QAAQ;EACtB,YAAY,QAAQ;EACpB,QAAQ,qBAAqB,KAAK,IAAI,OAAO;EAC9C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { AgentTool } from '@earendil-works/pi-agent-core';
|
|
2
2
|
import type { BuildChildToolsOptions } from '../../agent/child-agent-factory.js';
|
|
3
3
|
import type { GatewayWorkflowHost } from '../../gateway/gateway-workflow-host.types.js';
|
|
4
|
+
import type { WorkflowDefinitionRegistry } from '../registry/workflow-definition-registry.js';
|
|
4
5
|
import type { WorkflowDefinition, WorkflowRunDefinitionSnapshot, WorkflowRunInputEnvelope, WorkflowRunMetadata, WorkflowRunSource } from '../domain/index.js';
|
|
5
6
|
import { WorkflowRunStore } from '../store/run-store.js';
|
|
6
7
|
import type { WorkflowSessionBridge } from './workflow-session-bridge.js';
|
|
@@ -10,10 +11,12 @@ export interface WorkflowRunServiceOptions {
|
|
|
10
11
|
service: GatewayWorkflowHost;
|
|
11
12
|
sessionBridge: WorkflowSessionBridge;
|
|
12
13
|
buildChildTools: (childOptions: BuildChildToolsOptions) => AgentTool<any, any>[];
|
|
14
|
+
definitionRegistry?: WorkflowDefinitionRegistry;
|
|
13
15
|
}
|
|
14
16
|
export declare class WorkflowRunService {
|
|
15
17
|
private readonly options;
|
|
16
18
|
private readonly activeRuns;
|
|
19
|
+
private readonly definitionRegistry;
|
|
17
20
|
constructor(options: WorkflowRunServiceOptions);
|
|
18
21
|
startWorkflowRun(params: StartWorkflowRunServiceParams): Promise<WorkflowRunServiceResult>;
|
|
19
22
|
retryWorkflowRun(params: RetryWorkflowRunServiceParams): Promise<WorkflowRunServiceResult>;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { extractProfileAgentId } from "../../config/agent-profile.js";
|
|
2
2
|
import { init_providers, resolveModel } from "../../providers/index.js";
|
|
3
|
-
import { createWorkflowCatalog } from "../../agent/workflow/catalog.js";
|
|
4
3
|
import { DelegateSubagentRunner } from "../../agent/workflow/subagent-runner.js";
|
|
5
|
-
import { buildWorkflowDefinition } from "../domain/definition-utils.js";
|
|
6
4
|
import { isTerminalWorkflowRunStatus } from "../domain/run.js";
|
|
7
5
|
import "../domain/index.js";
|
|
8
6
|
import { resolveModelRef } from "../../config/agent-typed-models.js";
|
|
7
|
+
import { CatalogWorkflowDefinitionRegistry } from "../registry/catalog-workflow-definition-registry.js";
|
|
9
8
|
import { WorkflowEngine } from "../engine/workflow-engine.js";
|
|
10
9
|
import "../engine/index.js";
|
|
11
10
|
import { WorkflowEventStore } from "../store/event-store.js";
|
|
@@ -15,11 +14,13 @@ import { randomUUID } from "node:crypto";
|
|
|
15
14
|
init_providers();
|
|
16
15
|
var WorkflowRunService = class {
|
|
17
16
|
activeRuns = /* @__PURE__ */ new Map();
|
|
17
|
+
definitionRegistry;
|
|
18
18
|
constructor(options) {
|
|
19
19
|
this.options = options;
|
|
20
|
+
this.definitionRegistry = options.definitionRegistry ?? new CatalogWorkflowDefinitionRegistry();
|
|
20
21
|
}
|
|
21
22
|
async startWorkflowRun(params) {
|
|
22
|
-
const definition = this.loadDefinition(params.definitionId);
|
|
23
|
+
const definition = await this.loadDefinition(params.definitionId);
|
|
23
24
|
if (!definition) return {
|
|
24
25
|
ok: false,
|
|
25
26
|
code: "definition_not_found",
|
|
@@ -147,18 +148,7 @@ var WorkflowRunService = class {
|
|
|
147
148
|
return this.createRunStore(agentId).readRunView(runId);
|
|
148
149
|
}
|
|
149
150
|
loadDefinition(definitionId) {
|
|
150
|
-
|
|
151
|
-
try {
|
|
152
|
-
const loaded = catalog.load(definitionId);
|
|
153
|
-
return buildWorkflowDefinition({
|
|
154
|
-
name: loaded.name,
|
|
155
|
-
source: loaded.source,
|
|
156
|
-
script: loaded.script,
|
|
157
|
-
meta: loaded.meta
|
|
158
|
-
});
|
|
159
|
-
} catch {
|
|
160
|
-
return null;
|
|
161
|
-
}
|
|
151
|
+
return this.definitionRegistry.get(definitionId);
|
|
162
152
|
}
|
|
163
153
|
createWorkflowEngine(params) {
|
|
164
154
|
const gatewayService = this.options.service;
|
|
@@ -167,6 +157,7 @@ var WorkflowRunService = class {
|
|
|
167
157
|
bus: gatewayService.messageBusInstance,
|
|
168
158
|
getDefaultModel: () => resolveModel(gatewayService.agentService.getModelForSession(params.sessionKey)),
|
|
169
159
|
getConfig: () => gatewayService.currentConfig,
|
|
160
|
+
sessionStore: gatewayService.sessionIndexInstance.getStore(),
|
|
170
161
|
buildChildTools: (childOptions) => this.options.buildChildTools(childOptions)
|
|
171
162
|
});
|
|
172
163
|
return new WorkflowEngine({
|
|
@@ -178,6 +169,10 @@ var WorkflowRunService = class {
|
|
|
178
169
|
const agentId = extractProfileAgentId(params.sessionKey, gatewayService.currentConfig);
|
|
179
170
|
return resolveModel(resolveModelRef(gatewayService.currentConfig, agentId, modelId));
|
|
180
171
|
},
|
|
172
|
+
parentSessionKey: params.sessionKey,
|
|
173
|
+
subagentSessionKeyFactory: ({ runId, agentId }) => {
|
|
174
|
+
return `agent:${extractProfileAgentId(params.sessionKey, gatewayService.currentConfig)}:workflow:${runId}:subagent:${agentId}`;
|
|
175
|
+
},
|
|
181
176
|
onEventAppended: (event) => {
|
|
182
177
|
gatewayService.emit("workflow.event.appended", {
|
|
183
178
|
runId: event.runId,
|