@xopcai/xopc 0.0.124 → 0.0.126
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 +56 -102
- package/README.zh-CN.md +51 -98
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/feishu/src/schema/config-schema.d.ts +6 -6
- package/dist/extensions/feishu/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/src/adapters/streaming-adapter.js +1 -1
- package/dist/extensions/telegram/src/config-schema.d.ts +8 -8
- package/dist/extensions/telegram/src/inbound-processor.js +1 -1
- package/dist/extensions/telegram/src/plugin.js +1 -1
- package/dist/extensions/telegram/src/routing-integration.js +2 -2
- package/dist/extensions/telegram/src/workflow-progress.js +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/extensions/weixin/src/api/api.js +1 -1
- package/dist/extensions/weixin/src/config-schema.d.ts +3 -3
- package/dist/extensions/weixin/src/plugin.js +1 -1
- package/dist/extensions/weixin/src/workflow-progress.js +1 -1
- package/dist/gateway/static/root/assets/Combination-BzaXOLd9.js +41 -0
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-B5uSVAyJ.js → agent-avatar-dicebear-C70vgt60.js} +1 -1
- package/dist/gateway/static/root/assets/agents-DRYVahI-.js +2 -0
- package/dist/gateway/static/root/assets/app-management-settings-panel-D9-HW6cy.js +1 -0
- package/dist/gateway/static/root/assets/appearance-settings-BHlahIDL.js +1 -0
- package/dist/gateway/static/root/assets/apps-page-BdJ1eQg3.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-CXUGRp2i.js → archive-plugin-B-aoIt0w.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-Cmiub3Wg.js → attachment-load-BD0G0FD5.js} +1 -1
- package/dist/gateway/static/root/assets/automation-suggestion-card-iJRVI7aZ.js +1 -0
- package/dist/gateway/static/root/assets/automations-page-D8hYQbkl.js +4 -0
- package/dist/gateway/static/root/assets/{binary-plugins-0Izz-N3p.js → binary-plugins-B0mNlVSz.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-C1Kv0IkJ.js → block-editor-CJY9Lu5G.js} +3 -3
- package/dist/gateway/static/root/assets/browser-settings-page-CiWEO-Iy.js +8 -0
- package/dist/gateway/static/root/assets/capability-presets-api-Bgc8ag55.js +1 -0
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-B1nIi0TC.js +1 -0
- package/dist/gateway/static/root/assets/{channel-recipient-api-BeA2aVor.js → channel-recipient-api-0sauApoC.js} +1 -1
- package/dist/gateway/static/root/assets/channels-settings-BddPdqVo.js +1 -0
- package/dist/gateway/static/root/assets/code-editor-gbRgS14t.js +1 -0
- package/dist/gateway/static/root/assets/connectors-page-Ba2GDhSE.js +2 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-2rjzUu57.js → directory-picker-path-field-CiEc4KmY.js} +1 -1
- package/dist/gateway/static/root/assets/dist-By6Rh2ee.js +1 -0
- package/dist/gateway/static/root/assets/dist-CkobR7mk.js +1 -0
- package/dist/gateway/static/root/assets/dist-DokQNVMQ.js +1 -0
- package/dist/gateway/static/root/assets/dreaming-settings-4bvpk5wr.js +3 -0
- package/dist/gateway/static/root/assets/extension-debug-page-BbyczVZ3.js +1 -0
- package/dist/gateway/static/root/assets/extension-page-DLN1I3DR.js +1 -0
- package/dist/gateway/static/root/assets/extension-settings-page-D9VGHmYJ.js +1 -0
- package/dist/gateway/static/root/assets/{fetch-BU5S0Sn7.js → fetch-5V96dUz3.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-api-BIPGwrl1.js → gateway-config-api-BtIzObwp.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-KFsGGDhg.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-Cd0Zz30N.js → gateway-startup-retry-DEMad2wt.js} +1 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-4PcF6Sh6.js +1 -0
- package/dist/gateway/static/root/assets/goal-detail-page-B482PSaG.js +1 -0
- package/dist/gateway/static/root/assets/{goals-config-api-B95KdGMj.js → goals-config-api-CVN7-pdM.js} +1 -1
- package/dist/gateway/static/root/assets/goals-page-CUdgJuDn.js +2 -0
- package/dist/gateway/static/root/assets/goals-settings-IYCH3-Pi.js +1 -0
- package/dist/gateway/static/root/assets/heartbeat-settings-Cf_a2Bmz.js +1 -0
- package/dist/gateway/static/root/assets/{html-workspace-editor-CQLWDiwE.js → html-workspace-editor-DV90ddkE.js} +1 -1
- package/dist/gateway/static/root/assets/index-CA2tR2vm.js +256 -0
- package/dist/gateway/static/root/assets/index-Ds3u0LOk.css +1 -0
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-lKTg6St7.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-BCporcNH.js +2 -0
- package/dist/gateway/static/root/assets/{markdown-editor-AssmZFx4.js → markdown-editor-BFOjBBla.js} +2 -2
- package/dist/gateway/static/root/assets/markdown-split-Bv4k6iGJ.js +1 -0
- package/dist/gateway/static/root/assets/{media-plugins-BhIQU5yS.js → media-plugins-Bbi8g3N8.js} +1 -1
- package/dist/gateway/static/root/assets/messages-C22hxE1N.js +3 -0
- package/dist/gateway/static/root/assets/models-hub-panel-D68Pyow7.js +2 -0
- package/dist/gateway/static/root/assets/notes-page-CuUMOiyv.js +1 -0
- package/dist/gateway/static/root/assets/notes-workbench-Dx2N5zTk.js +2 -0
- package/dist/gateway/static/root/assets/page-tabs-Cp395RYD.js +1 -0
- package/dist/gateway/static/root/assets/{preview-open-alternatives-DGzet1d7.js → preview-open-alternatives-DqV5OM4m.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-sB8AzZi3.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-LBnJqWK2.js +1 -0
- package/dist/gateway/static/root/assets/remote-access-hub-Dbj0o6SC.js +1 -0
- package/dist/gateway/static/root/assets/{save-bar-controls-Cqgb-jqa.js → save-bar-controls-BItmzAzI.js} +1 -1
- package/dist/gateway/static/root/assets/{schedule-field-DVZcI8Yt.js → schedule-field-BQ8IjjCn.js} +1 -1
- package/dist/gateway/static/root/assets/{schema-form-Bj7sOxC8.js → schema-form-BRpD6x3d.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-DhDZKspB.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BvXLMNL6.js +1 -0
- package/dist/gateway/static/root/assets/{settings-collapsible-section-BmXn-8N6.js → settings-collapsible-section-BKSPQM4R.js} +1 -1
- package/dist/gateway/static/root/assets/settings-form-section-BmyfthNQ.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-Cfm9UxAr.js +1 -0
- package/dist/gateway/static/root/assets/settings-page-layout-Bls5tfbH.js +1 -0
- package/dist/gateway/static/root/assets/setup-status-panel-kQEsTGAs.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-IB1v8i86.js → share-preview-page-DbYZNAPb.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-BtR4B0kn.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-CJNVOWoK.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-DcWDHrt3.js +2 -0
- package/dist/gateway/static/root/assets/{system-settings-panel-BxQ384RC.js → system-settings-panel-DKDAojWM.js} +1 -1
- package/dist/gateway/static/root/assets/{typed-models-lib-BkcpvFYO.js → typed-models-lib-BCCV4Kkp.js} +1 -1
- package/dist/gateway/static/root/assets/{use-channel-catalog-Cd0FaEQ4.js → use-channel-catalog-NBqg3iFY.js} +1 -1
- package/dist/gateway/static/root/assets/{user-profile-settings-panel-DQ7NnRSY.js → user-profile-settings-panel-suQ2x-LB.js} +1 -1
- package/dist/gateway/static/root/assets/{utils-YKhVf7Ka.js → utils-DPGVr3tS.js} +1 -1
- package/dist/gateway/static/root/assets/{vendor-codemirror-CNP1wPe7.js → vendor-codemirror-BvNgyE1Q.js} +1 -1
- package/dist/gateway/static/root/assets/voice-api-key-field-DaJASKFP.js +1 -0
- package/dist/gateway/static/root/assets/work-item-detail-page-BrCZpAWh.js +1 -0
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BTkRVNAh.js +3 -0
- package/dist/gateway/static/root/assets/{workflow-start-dialog-BNJVCWoS.js → workflow-start-dialog-DAImVtdO.js} +1 -1
- package/dist/gateway/static/root/assets/workflows-page-vyJ8wSXm.js +18 -0
- package/dist/gateway/static/root/index.html +8 -7
- package/dist/package.js +1 -1
- package/dist/src/activity/context.d.ts +11 -0
- package/dist/src/activity/context.js +36 -0
- package/dist/src/activity/context.js.map +1 -0
- package/dist/src/activity/emitter.d.ts +6 -0
- package/dist/src/activity/emitter.js +43 -0
- package/dist/src/activity/emitter.js.map +1 -0
- package/dist/src/activity/index.d.ts +3 -0
- package/dist/src/activity/index.js +3 -0
- package/dist/src/activity/service.d.ts +12 -0
- package/dist/src/activity/service.js +59 -0
- package/dist/src/activity/service.js.map +1 -0
- package/dist/src/activity/types.d.ts +109 -0
- package/dist/src/activity/types.js +1 -0
- package/dist/src/agent/agent-manager.d.ts +7 -0
- package/dist/src/agent/agent-manager.js +12 -5
- package/dist/src/agent/agent-manager.js.map +1 -1
- package/dist/src/agent/child-agent-factory.d.ts +2 -0
- package/dist/src/agent/child-agent-factory.js +2 -0
- package/dist/src/agent/child-agent-factory.js.map +1 -1
- package/dist/src/agent/coding/index.d.ts +1 -0
- package/dist/src/agent/coding/index.js +2 -0
- package/dist/src/agent/coding/turn-diff-tracker.d.ts +67 -0
- package/dist/src/agent/coding/turn-diff-tracker.js +233 -0
- package/dist/src/agent/coding/turn-diff-tracker.js.map +1 -0
- package/dist/src/agent/context/project-context.js +2 -2
- package/dist/src/agent/context/workspace-seed.js +2 -2
- package/dist/src/agent/embedded/run-for-session.js +1 -1
- package/dist/src/agent/goals/post-turn.js +2 -2
- package/dist/src/agent/ipc/bus.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
- package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
- package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
- package/dist/src/agent/mcp/mcp-transport.js +1 -1
- package/dist/src/agent/memory/dreaming/config.d.ts +2 -2
- package/dist/src/agent/memory/dreaming/config.js +3 -3
- package/dist/src/agent/memory/dreaming/config.js.map +1 -1
- package/dist/src/agent/memory/dreaming/constants.d.ts +1 -1
- package/dist/src/agent/memory/dreaming/constants.js +1 -1
- package/dist/src/agent/memory/dreaming/constants.js.map +1 -1
- package/dist/src/agent/memory/dreaming/deep-promotion.d.ts +1 -0
- package/dist/src/agent/memory/dreaming/deep-promotion.js +11 -20
- package/dist/src/agent/memory/dreaming/deep-promotion.js.map +1 -1
- package/dist/src/agent/memory/dreaming/events.d.ts +3 -3
- package/dist/src/agent/memory/dreaming/events.js +6 -6
- package/dist/src/agent/memory/dreaming/events.js.map +1 -1
- package/dist/src/agent/memory/dreaming/last-run.d.ts +2 -2
- package/dist/src/agent/memory/dreaming/last-run.js +1 -1
- package/dist/src/agent/memory/dreaming/last-run.js.map +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.d.ts +1 -1
- package/dist/src/agent/memory/dreaming/light-sweep.js +3 -3
- package/dist/src/agent/memory/dreaming/light-sweep.js.map +1 -1
- package/dist/src/agent/memory/dreaming/preview.d.ts +1 -0
- package/dist/src/agent/memory/dreaming/preview.js +2 -2
- package/dist/src/agent/memory/dreaming/preview.js.map +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.d.ts +1 -1
- package/dist/src/agent/memory/dreaming/rem-patterns.js +13 -13
- package/dist/src/agent/memory/dreaming/rem-patterns.js.map +1 -1
- package/dist/src/agent/memory/dreaming/scope.d.ts +14 -0
- package/dist/src/agent/memory/dreaming/scope.js +27 -0
- package/dist/src/agent/memory/dreaming/scope.js.map +1 -0
- package/dist/src/agent/memory/dreaming/short-term-store.d.ts +4 -4
- package/dist/src/agent/memory/dreaming/short-term-store.js +17 -17
- package/dist/src/agent/memory/dreaming/short-term-store.js.map +1 -1
- package/dist/src/agent/memory/plugin-discovery.js +1 -1
- package/dist/src/agent/models/manager.js +1 -1
- package/dist/src/agent/orchestration/agent-event-handler.d.ts +2 -0
- package/dist/src/agent/orchestration/agent-event-handler.js +13 -0
- package/dist/src/agent/orchestration/agent-event-handler.js.map +1 -1
- package/dist/src/agent/orchestration/agent-orchestrator.js +22 -12
- package/dist/src/agent/orchestration/agent-orchestrator.js.map +1 -1
- package/dist/src/agent/sandbox/command-validator.js +12 -0
- package/dist/src/agent/sandbox/command-validator.js.map +1 -1
- package/dist/src/agent/service.d.ts +2 -1
- package/dist/src/agent/service.js +24 -9
- package/dist/src/agent/service.js.map +1 -1
- package/dist/src/agent/service.types.d.ts +7 -0
- package/dist/src/agent/session/session-inspector.d.ts +5 -3
- package/dist/src/agent/session/session-inspector.js +17 -8
- package/dist/src/agent/session/session-inspector.js.map +1 -1
- package/dist/src/agent/skills/hub-pull.js +1 -1
- package/dist/src/agent/source-context/types.d.ts +1 -1
- package/dist/src/agent/source-context/types.js +1 -1
- package/dist/src/agent/source-context/types.js.map +1 -1
- package/dist/src/agent/tool-manuals/index.js +15 -6
- package/dist/src/agent/tool-manuals/index.js.map +1 -1
- package/dist/src/agent/tool-manuals/xopc-use.d.ts +1 -0
- package/dist/src/agent/tool-manuals/xopc-use.js +204 -0
- package/dist/src/agent/tool-manuals/xopc-use.js.map +1 -0
- package/dist/src/agent/tools/apply-patch.js +116 -62
- package/dist/src/agent/tools/apply-patch.js.map +1 -1
- package/dist/src/agent/tools/concurrency.d.ts +8 -0
- package/dist/src/agent/tools/concurrency.js +31 -0
- package/dist/src/agent/tools/concurrency.js.map +1 -0
- package/dist/src/agent/tools/dreaming-tool.d.ts +2 -0
- package/dist/src/agent/tools/dreaming-tool.js +13 -10
- package/dist/src/agent/tools/dreaming-tool.js.map +1 -1
- package/dist/src/agent/tools/exec-command.js +4 -0
- package/dist/src/agent/tools/exec-command.js.map +1 -1
- package/dist/src/agent/tools/executor.d.ts +6 -4
- package/dist/src/agent/tools/executor.js +7 -4
- package/dist/src/agent/tools/executor.js.map +1 -1
- package/dist/src/agent/tools/factory.d.ts +10 -0
- package/dist/src/agent/tools/factory.js +16 -1
- package/dist/src/agent/tools/factory.js.map +1 -1
- package/dist/src/agent/tools/find.js +2 -0
- package/dist/src/agent/tools/find.js.map +1 -1
- package/dist/src/agent/tools/goal-tool.js +2 -2
- package/dist/src/agent/tools/grep.js +2 -0
- package/dist/src/agent/tools/grep.js.map +1 -1
- package/dist/src/agent/tools/index.d.ts +3 -0
- package/dist/src/agent/tools/index.js +4 -1
- package/dist/src/agent/tools/list-dir.js +2 -0
- package/dist/src/agent/tools/list-dir.js.map +1 -1
- package/dist/src/agent/tools/memory-tool.d.ts +1 -0
- package/dist/src/agent/tools/memory-tool.js +2 -2
- package/dist/src/agent/tools/memory-tool.js.map +1 -1
- package/dist/src/agent/tools/metadata.d.ts +15 -0
- package/dist/src/agent/tools/metadata.js +26 -0
- package/dist/src/agent/tools/metadata.js.map +1 -0
- package/dist/src/agent/tools/read.js +2 -0
- package/dist/src/agent/tools/read.js.map +1 -1
- package/dist/src/agent/tools/workflow-tool.js +1 -1
- package/dist/src/agent/tools/write.js +6 -0
- package/dist/src/agent/tools/write.js.map +1 -1
- package/dist/src/agent/tools/xopc-use-tool.d.ts +34 -0
- package/dist/src/agent/tools/xopc-use-tool.js +636 -0
- package/dist/src/agent/tools/xopc-use-tool.js.map +1 -0
- package/dist/src/agent/workflow/subagent-runner.d.ts +1 -0
- package/dist/src/agent/workflow/subagent-runner.js +5 -1
- package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
- package/dist/src/agent/workflow/workflow-child-tools.js +5 -0
- package/dist/src/agent/workflow/workflow-child-tools.js.map +1 -1
- package/dist/src/agent-manifest/schema.d.ts +27 -27
- package/dist/src/automations/api/routes.js +1 -1
- package/dist/src/automations/domain/validation.d.ts +55 -55
- package/dist/src/automations/draft/automation-draft-validator.d.ts +25 -25
- package/dist/src/automations/service/action-executor.js +2 -2
- package/dist/src/browser/cdp-local-launcher.js +1 -1
- package/dist/src/browser/providers/browser-ext-install.js +3 -3
- package/dist/src/browser/providers/cloakbrowser.js +2 -2
- package/dist/src/browser/providers/playwright-doctor.js +1 -1
- package/dist/src/browser/stealth.js +1 -1
- package/dist/src/chat-commands/agent-edit.js +1 -1
- package/dist/src/chat-commands/builtins/config.js +1 -1
- package/dist/src/chat-commands/builtins/goal.js +2 -2
- package/dist/src/chat-commands/context.js +1 -1
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/doctor/checks/database-schema.js +2 -2
- package/dist/src/cli/commands/doctor/checks/session-integrity.js +1 -1
- package/dist/src/cli/commands/extension-marketplace.js +1 -1
- package/dist/src/cli/commands/extension-pack.js +1 -1
- package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
- package/dist/src/cli/commands/goal.js +3 -3
- package/dist/src/cli/commands/init.js +1 -1
- package/dist/src/cli/commands/project.js +4 -4
- package/dist/src/config/agent-profile.js +1 -1
- package/dist/src/config/gateway-bind.js +1 -1
- package/dist/src/config/index.js +1 -1
- package/dist/src/config/loader.js +1 -1
- package/dist/src/config/models-json.d.ts +14 -14
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.d.ts +60 -60
- package/dist/src/connectors/health.d.ts +2 -1
- package/dist/src/connectors/health.js +59 -1
- package/dist/src/connectors/health.js.map +1 -1
- package/dist/src/connectors/install.d.ts +1 -0
- package/dist/src/connectors/install.js +28 -1
- package/dist/src/connectors/install.js.map +1 -1
- package/dist/src/connectors/instances.js +7 -0
- package/dist/src/connectors/instances.js.map +1 -1
- package/dist/src/connectors/materialize.js +2 -1
- package/dist/src/connectors/materialize.js.map +1 -1
- package/dist/src/connectors/registries/modelscope.js +38 -13
- package/dist/src/connectors/registries/modelscope.js.map +1 -1
- package/dist/src/connectors/types.d.ts +2 -0
- package/dist/src/daemon/launchd.js +1 -1
- package/dist/src/daemon/systemd.js +1 -1
- package/dist/src/extensions/discover-extensions.js +1 -1
- package/dist/src/extensions/loader.js +2 -2
- package/dist/src/gateway/agents-admin.js +1 -1
- package/dist/src/gateway/dreaming-automation-reconciler.d.ts +1 -0
- package/dist/src/gateway/dreaming-automation-reconciler.js +62 -42
- package/dist/src/gateway/dreaming-automation-reconciler.js.map +1 -1
- package/dist/src/gateway/hono/app.js +7 -1
- package/dist/src/gateway/hono/app.js.map +1 -1
- package/dist/src/gateway/hono/lib/config-payload.d.ts +14 -14
- package/dist/src/gateway/hono/lib/static-ui.js +1 -1
- package/dist/src/gateway/hono/middleware/log-context.js +8 -1
- package/dist/src/gateway/hono/middleware/log-context.js.map +1 -1
- package/dist/src/gateway/hono/routes/activity.d.ts +14 -0
- package/dist/src/gateway/hono/routes/activity.js +72 -0
- package/dist/src/gateway/hono/routes/activity.js.map +1 -0
- package/dist/src/gateway/hono/routes/connectors.js +46 -2
- package/dist/src/gateway/hono/routes/connectors.js.map +1 -1
- package/dist/src/gateway/hono/routes/dreaming.js +111 -66
- package/dist/src/gateway/hono/routes/dreaming.js.map +1 -1
- package/dist/src/gateway/hono/routes/goals.js +1 -1
- package/dist/src/gateway/hono/routes/index.js +2 -0
- package/dist/src/gateway/hono/routes/index.js.map +1 -1
- package/dist/src/gateway/hono/routes/memory.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +903 -50
- package/dist/src/gateway/hono/routes/projects.js.map +1 -1
- package/dist/src/gateway/hono/routes/sessions.js +102 -2
- package/dist/src/gateway/hono/routes/sessions.js.map +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/ports.js +1 -1
- package/dist/src/gateway/service/sessions-api.d.ts +10 -0
- package/dist/src/gateway/service/sessions-api.js +31 -0
- package/dist/src/gateway/service/sessions-api.js.map +1 -1
- package/dist/src/gateway/service.js +28 -16
- package/dist/src/gateway/service.js.map +1 -1
- package/dist/src/goals/goal-store.js +1 -1
- package/dist/src/goals/goal-store.js.map +1 -1
- package/dist/src/goals/goal-workflow-judge.js +1 -1
- package/dist/src/infra/ports.js +1 -1
- package/dist/src/infra/ssh-tunnel.js +1 -1
- package/dist/src/infra/update-check.js +1 -1
- package/dist/src/infra/update-restart.js +1 -1
- package/dist/src/mcp/channel-bridge.js +1 -1
- package/dist/src/media/store.js +1 -1
- package/dist/src/media/store.js.map +1 -1
- package/dist/src/media/types.d.ts +1 -1
- package/dist/src/media/uri.js +2 -1
- package/dist/src/media/uri.js.map +1 -1
- package/dist/src/migrations/runner.js +1 -1
- package/dist/src/notes/service.js +65 -6
- package/dist/src/notes/service.js.map +1 -1
- package/dist/src/notes/store.js +1 -1
- package/dist/src/projects/project-service.d.ts +2 -1
- package/dist/src/projects/project-service.js +59 -2
- package/dist/src/projects/project-service.js.map +1 -1
- package/dist/src/projects/project-store.d.ts +2 -1
- package/dist/src/projects/project-store.js +43 -0
- package/dist/src/projects/project-store.js.map +1 -1
- package/dist/src/projects/types.d.ts +10 -0
- package/dist/src/projects/workspace.js +1 -1
- package/dist/src/routing/agent-session-key.js +1 -1
- package/dist/src/routing/resolve-route.js +1 -1
- package/dist/src/routing/resolve-tui-session-key.js +1 -1
- package/dist/src/session/client-history.d.ts +3 -0
- package/dist/src/session/client-history.js +24 -9
- package/dist/src/session/client-history.js.map +1 -1
- package/dist/src/session/init-session-turn.js +1 -1
- package/dist/src/session/resolve-session.js +1 -1
- package/dist/src/session/session-context-for-llm.d.ts +2 -0
- package/dist/src/session/session-context-for-llm.js +14 -1
- package/dist/src/session/session-context-for-llm.js.map +1 -1
- package/dist/src/session/session-title.js +2 -2
- package/dist/src/session/store.js +3 -3
- package/dist/src/session/store.js.map +1 -1
- package/dist/src/session/types.d.ts +4 -0
- package/dist/src/session/types.js.map +1 -1
- package/dist/src/storage/sqlite/activity-repository.d.ts +8 -0
- package/dist/src/storage/sqlite/activity-repository.js +208 -0
- package/dist/src/storage/sqlite/activity-repository.js.map +1 -0
- package/dist/src/storage/sqlite/connection.js +1 -1
- package/dist/src/storage/sqlite/index.d.ts +1 -0
- package/dist/src/storage/sqlite/index.js +2 -1
- package/dist/src/storage/sqlite/migrations/022_work_items.sql +61 -0
- package/dist/src/storage/sqlite/migrations/023_work_item_attachments.sql +15 -0
- package/dist/src/storage/sqlite/migrations/024_activity_events.sql +62 -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.js +1 -1
- package/dist/src/storage/sqlite/schema.js +1 -1
- package/dist/src/storage/sqlite/schema.sql +141 -0
- package/dist/src/storage/sqlite/session-repository.js +11 -0
- package/dist/src/storage/sqlite/session-repository.js.map +1 -1
- package/dist/src/tui/backends/embedded-backend.d.ts +13 -0
- package/dist/src/tui/backends/embedded-backend.js +76 -7
- package/dist/src/tui/backends/embedded-backend.js.map +1 -1
- package/dist/src/tui/backends/gateway-sse-backend.d.ts +13 -0
- package/dist/src/tui/backends/gateway-sse-backend.js +53 -0
- package/dist/src/tui/backends/gateway-sse-backend.js.map +1 -1
- package/dist/src/tui/chat-history.js +16 -3
- package/dist/src/tui/chat-history.js.map +1 -1
- package/dist/src/tui/clipboard-image.js +1 -1
- package/dist/src/tui/components/assistant-message.js +12 -2
- package/dist/src/tui/components/assistant-message.js.map +1 -1
- package/dist/src/tui/components/chat-log.d.ts +23 -3
- package/dist/src/tui/components/chat-log.js +68 -9
- package/dist/src/tui/components/chat-log.js.map +1 -1
- package/dist/src/tui/components/tool-execution.d.ts +8 -0
- package/dist/src/tui/components/tool-execution.js +87 -77
- package/dist/src/tui/components/tool-execution.js.map +1 -1
- package/dist/src/tui/components/tui-bottom-bar.js +9 -5
- package/dist/src/tui/components/tui-bottom-bar.js.map +1 -1
- package/dist/src/tui/components/visual-truncate.d.ts +1 -0
- package/dist/src/tui/components/visual-truncate.js +28 -1
- package/dist/src/tui/components/visual-truncate.js.map +1 -1
- package/dist/src/tui/tool-summary.d.ts +22 -0
- package/dist/src/tui/tool-summary.js +212 -0
- package/dist/src/tui/tool-summary.js.map +1 -0
- package/dist/src/tui/tui-backend.d.ts +16 -0
- package/dist/src/tui/tui-command-formatters.js +2 -2
- package/dist/src/tui/tui-commands.d.ts +9 -0
- package/dist/src/tui/tui-commands.js +95 -6
- package/dist/src/tui/tui-commands.js.map +1 -1
- package/dist/src/tui/tui-picker-overlay.d.ts +1 -0
- package/dist/src/tui/tui-picker-overlay.js +36 -1
- package/dist/src/tui/tui-picker-overlay.js.map +1 -1
- package/dist/src/tui/tui-picker-services.d.ts +13 -0
- package/dist/src/tui/tui-run-state.js +11 -0
- package/dist/src/tui/tui-run-state.js.map +1 -1
- package/dist/src/tui/tui-run-status-format.d.ts +3 -0
- package/dist/src/tui/tui-run-status-format.js +33 -0
- package/dist/src/tui/tui-run-status-format.js.map +1 -0
- package/dist/src/tui/tui-session-actions.d.ts +5 -0
- package/dist/src/tui/tui-session-actions.js +24 -0
- package/dist/src/tui/tui-session-actions.js.map +1 -1
- package/dist/src/tui/tui-timeline-picker.d.ts +19 -0
- package/dist/src/tui/tui-timeline-picker.js +81 -0
- package/dist/src/tui/tui-timeline-picker.js.map +1 -0
- package/dist/src/tui/tui-timeline.d.ts +15 -0
- package/dist/src/tui/tui-timeline.js +65 -0
- package/dist/src/tui/tui-timeline.js.map +1 -0
- package/dist/src/tui/tui-tool-diff.d.ts +15 -0
- package/dist/src/tui/tui-tool-diff.js +178 -7
- package/dist/src/tui/tui-tool-diff.js.map +1 -1
- package/dist/src/tui/tui-types.d.ts +1 -0
- package/dist/src/tui/tui-types.js +1 -0
- package/dist/src/tui/tui-types.js.map +1 -1
- package/dist/src/tui/tui.js +31 -25
- package/dist/src/tui/tui.js.map +1 -1
- package/dist/src/utils/index.js +1 -1
- package/dist/src/utils/logger/index.js +1 -1
- package/dist/src/utils/logger/stats.d.ts +3 -3
- package/dist/src/utils/logger.js +1 -1
- package/dist/src/work-items/agent-context.d.ts +7 -0
- package/dist/src/work-items/agent-context.js +75 -0
- package/dist/src/work-items/agent-context.js.map +1 -0
- package/dist/src/work-items/index.d.ts +4 -0
- package/dist/src/work-items/index.js +4 -0
- package/dist/src/work-items/types.d.ts +112 -0
- package/dist/src/work-items/types.js +1 -0
- package/dist/src/work-items/work-item-service.d.ts +35 -0
- package/dist/src/work-items/work-item-service.js +277 -0
- package/dist/src/work-items/work-item-service.js.map +1 -0
- package/dist/src/work-items/work-item-store.d.ts +21 -0
- package/dist/src/work-items/work-item-store.js +302 -0
- package/dist/src/work-items/work-item-store.js.map +1 -0
- package/dist/src/workflows/draft/workflow-draft-service.js +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +4 -3
- package/dist/src/workflows/service/workflow-run-service.js.map +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 +5 -5
- package/dist/gateway/static/root/assets/Combination-HAlzriaz.js +0 -41
- package/dist/gateway/static/root/assets/agents-BjIxt67Z.js +0 -2
- package/dist/gateway/static/root/assets/app-management-settings-panel-CYCONLIL.js +0 -1
- package/dist/gateway/static/root/assets/appearance-settings-Clw3ryKg.js +0 -1
- package/dist/gateway/static/root/assets/apps-page-QICTeGjX.js +0 -1
- package/dist/gateway/static/root/assets/automation-suggestion-card-CU0-4nQ-.js +0 -1
- package/dist/gateway/static/root/assets/automations-page-Car-jtiz.js +0 -1
- package/dist/gateway/static/root/assets/browser-settings-page-CMeBJzlS.js +0 -8
- package/dist/gateway/static/root/assets/capability-presets-api-BmQTM9Il.js +0 -1
- package/dist/gateway/static/root/assets/capability-presets-settings-panel-DZEJEoCF.js +0 -1
- package/dist/gateway/static/root/assets/channels-settings-kkW-xFau.js +0 -1
- package/dist/gateway/static/root/assets/code-editor-dZTY2dRW.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-BvaQvO5F.js +0 -2
- package/dist/gateway/static/root/assets/dist-Mys7eFJ5.js +0 -1
- package/dist/gateway/static/root/assets/dist-wO9a2_ID.js +0 -1
- package/dist/gateway/static/root/assets/dreaming-settings-DnHO686d.js +0 -1
- package/dist/gateway/static/root/assets/extension-debug-page-BGLRuWVN.js +0 -1
- package/dist/gateway/static/root/assets/extension-page-D978ePp9.js +0 -1
- package/dist/gateway/static/root/assets/extension-settings-page-B6Ih4Swx.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-CMEA3r5u.js +0 -1
- package/dist/gateway/static/root/assets/goal-create-dialog-B-KHKeXN.js +0 -1
- package/dist/gateway/static/root/assets/goal-detail-page-BxrSoWdj.js +0 -1
- package/dist/gateway/static/root/assets/goals-page-BTJzIl28.js +0 -2
- package/dist/gateway/static/root/assets/goals-settings-BJyEuLLm.js +0 -1
- package/dist/gateway/static/root/assets/heartbeat-settings-wkOjYNQT.js +0 -1
- package/dist/gateway/static/root/assets/index-BLaXr6Ev.css +0 -1
- package/dist/gateway/static/root/assets/index-c_9TVr_C.js +0 -191
- package/dist/gateway/static/root/assets/keyboard-shortcuts-settings-BT8T4DyC.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-CrxBJUgI.js +0 -2
- package/dist/gateway/static/root/assets/markdown-split-Dv66bO2b.js +0 -1
- package/dist/gateway/static/root/assets/messages-O6TAtdFC.js +0 -3
- package/dist/gateway/static/root/assets/models-hub-panel-DOOpz6y1.js +0 -2
- package/dist/gateway/static/root/assets/notes-page-Br16pK9v.js +0 -1
- package/dist/gateway/static/root/assets/notes-workbench-PSJAi0ZC.js +0 -2
- package/dist/gateway/static/root/assets/project-detail-page-CIGGgKuw.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-B2grhsBt.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CXMORxBD.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-Bi2wkBzU.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-B1L3G4IA.js +0 -1
- package/dist/gateway/static/root/assets/settings-form-section-BnqYMWHR.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-BfRSHJmO.js +0 -1
- package/dist/gateway/static/root/assets/settings-page-layout-CdWZU1hd.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-CWtPM7RK.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-ngbsBgij.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BIe442Gv.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-BfchZRVa.js +0 -2
- package/dist/gateway/static/root/assets/voice-api-key-field-C5Ov8Uk_.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-BYD9BtOq.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-BYF29ANm.js +0 -18
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xopc-use-tool.js","names":[],"sources":["../../../../src/agent/tools/xopc-use-tool.ts"],"sourcesContent":["import { Type } from '@sinclair/typebox';\nimport type { AgentTool, AgentToolResult } from '@earendil-works/pi-agent-core';\n\nimport { runWithActivityContext } from '../../activity/index.js';\nimport type { Config } from '../../config/schema.js';\nimport type { NoteKind, NotesService, NoteStatus } from '../../notes/index.js';\nimport {\n isValidProjectAgentId,\n normalizeProjectAgentId,\n type ProjectService,\n type ProjectStatus,\n} from '../../projects/index.js';\nimport type {\n WorkItemPriority,\n WorkItemService,\n WorkItemStatus,\n} from '../../work-items/index.js';\nimport { getSessionMetadata } from '../../storage/sqlite/index.js';\n\nconst XopcUseToolSchema = Type.Object({\n mode: Type.Union([\n Type.Literal('project'),\n Type.Literal('note'),\n Type.Literal('work_item'),\n ]),\n command: Type.String({\n description:\n 'Object command. Supports project list/get/create/update/resolve_workspace, note list/get/create/append/update/preview_edit, and work_item list/get/create/update.',\n }),\n args: Type.Optional(Type.Record(Type.String(), Type.Any())),\n dryRun: Type.Optional(Type.Boolean({\n description: 'Validate and preview the action without mutating xopc state.',\n })),\n});\n\nexport type XopcUseMode = 'project' | 'note' | 'work_item';\n\nexport interface XopcUseToolInput {\n mode: XopcUseMode;\n command: string;\n args?: Record<string, unknown>;\n dryRun?: boolean;\n}\n\nexport interface XopcUseToolDeps {\n getConfig?: () => Config | undefined;\n getCurrentAgentId?: () => string | undefined;\n getCurrentSessionKey?: () => string | undefined;\n getNotesService?: () => NotesService | undefined;\n getProjectService?: () => ProjectService | undefined;\n getWorkItemService?: () => WorkItemService | undefined;\n}\n\ntype XopcUseDetails = {\n mode: XopcUseMode;\n command: string;\n dryRun: boolean;\n result?: unknown;\n};\n\nconst PROJECT_STATUSES = new Set<ProjectStatus>(['active', 'paused', 'archived']);\nconst NOTE_KINDS = new Set<NoteKind>(['thought', 'todo', 'voice', 'media', 'bookmark', 'mixed', 'task']);\nconst NOTE_STATUSES = new Set<NoteStatus>(['inbox', 'processed', 'archived', 'trashed']);\nconst WORK_ITEM_STATUSES = new Set<WorkItemStatus>([\n 'backlog',\n 'todo',\n 'in_progress',\n 'blocked',\n 'needs_input',\n 'in_review',\n 'done',\n 'cancelled',\n]);\nconst WORK_ITEM_PRIORITIES = new Set<WorkItemPriority>(['urgent', 'high', 'normal', 'low']);\n\nfunction okText(details: XopcUseDetails): AgentToolResult<XopcUseDetails> {\n return {\n content: [{ type: 'text', text: JSON.stringify(details.result ?? {}, null, 2) }],\n details,\n };\n}\n\nfunction errorText(message: string, details: XopcUseDetails): AgentToolResult<XopcUseDetails> {\n return {\n content: [{ type: 'text', text: `Error: ${message}` }],\n details: { ...details, result: { ok: false, error: message } },\n };\n}\n\nfunction trimString(value: unknown): string | undefined {\n return typeof value === 'string' && value.trim() ? value.trim() : undefined;\n}\n\nfunction optionalString(value: unknown): string | null | undefined {\n if (value === null) return null;\n if (typeof value === 'string') return value;\n return undefined;\n}\n\nfunction boundedLimit(value: unknown, fallback = 20, max = 100): number {\n const raw = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : fallback;\n if (!Number.isFinite(raw)) return fallback;\n return Math.max(1, Math.min(max, Math.floor(raw)));\n}\n\nfunction offset(value: unknown): number | undefined {\n const raw = typeof value === 'number' ? value : typeof value === 'string' ? Number(value) : undefined;\n return raw !== undefined && Number.isFinite(raw) ? Math.max(0, Math.floor(raw)) : undefined;\n}\n\nfunction enumValue<T extends string>(value: unknown, allowed: Set<T>): T | undefined {\n return typeof value === 'string' && allowed.has(value as T) ? value as T : undefined;\n}\n\nfunction finiteNumber(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string' && value.trim()) {\n const parsed = Number(value);\n if (Number.isFinite(parsed)) return parsed;\n }\n return undefined;\n}\n\nfunction stringArray(value: unknown): string[] | undefined {\n if (!Array.isArray(value)) return undefined;\n return value.filter((item): item is string => typeof item === 'string');\n}\n\nfunction nullableNumber(value: unknown): number | null | undefined {\n if (value === null) return null;\n return finiteNumber(value);\n}\n\nfunction ensureArgs(input: XopcUseToolInput): Record<string, unknown> {\n return input.args && typeof input.args === 'object' && !Array.isArray(input.args) ? input.args : {};\n}\n\nfunction currentProjectId(args: Record<string, unknown>, deps: XopcUseToolDeps): string | undefined {\n const explicit = trimString(args.projectId);\n if (explicit) return explicit;\n const sessionKey = trimString(args.sessionKey) ?? deps.getCurrentSessionKey?.();\n return sessionKey ? getSessionMetadata(sessionKey)?.projectId : undefined;\n}\n\nfunction projectWorkspaceRootArg(args: Record<string, unknown>): string | undefined {\n return trimString(args.workspaceRoot) ?? trimString(args.workspacePath) ?? trimString(args.path);\n}\n\nfunction optionalProjectWorkspaceRootArg(args: Record<string, unknown>): string | null | undefined {\n if (args.workspaceRoot !== undefined) return optionalString(args.workspaceRoot);\n if (args.workspacePath !== undefined) return optionalString(args.workspacePath);\n if (args.path !== undefined) return optionalString(args.path);\n return undefined;\n}\n\nfunction validateDefaultAgentId(raw: unknown, config: Config | undefined): string | null | undefined {\n if (raw === null) return null;\n const normalized = normalizeProjectAgentId(trimString(raw));\n if (!normalized) return undefined;\n if (config && !isValidProjectAgentId(config, normalized)) {\n throw new Error(`Default agent not found: ${normalized}`);\n }\n return normalized;\n}\n\nasync function handleProject(\n command: string,\n args: Record<string, unknown>,\n deps: XopcUseToolDeps,\n dryRun: boolean,\n): Promise<unknown> {\n const projects = deps.getProjectService?.();\n if (!projects) return { ok: false, error: 'Project service is unavailable' };\n\n if (command === 'list') {\n return {\n ok: true,\n ...projects.list({\n status: enumValue(args.status, PROJECT_STATUSES),\n search: trimString(args.search),\n sortBy: enumValue(args.sortBy, new Set(['updatedAt', 'createdAt', 'name'] as const)),\n sortOrder: enumValue(args.sortOrder, new Set(['asc', 'desc'] as const)),\n limit: boundedLimit(args.limit),\n offset: offset(args.offset),\n }),\n };\n }\n\n if (command === 'get') {\n const id = trimString(args.projectId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'projectId is required' };\n const project = projects.getWithDetails(id);\n return project ? { ok: true, project } : { ok: false, error: `Project not found: ${id}` };\n }\n\n if (command === 'resolve_workspace') {\n const workspacePath = projectWorkspaceRootArg(args);\n if (!workspacePath) return { ok: false, error: 'workspacePath is required' };\n const defaultAgentId = args.defaultAgentId !== undefined\n ? validateDefaultAgentId(args.defaultAgentId, deps.getConfig?.()) ?? undefined\n : undefined;\n const input = {\n workspacePath,\n agentId: trimString(args.agentId),\n defaultAgentId,\n autoCreate: args.autoCreate === true,\n };\n if (dryRun) return { ok: true, dryRun: true, action: 'resolve_project_workspace', input };\n const match = projects.resolveOrCreateForWorkspacePath(input);\n return match ? { ok: true, match } : { ok: false, error: 'No project matched workspace path' };\n }\n\n if (command === 'create') {\n const name = trimString(args.name);\n const workspaceRoot = projectWorkspaceRootArg(args);\n if (!name && !workspaceRoot) return { ok: false, error: 'name or workspaceRoot is required' };\n const input = {\n name,\n description: trimString(args.description),\n defaultAgentId: validateDefaultAgentId(args.defaultAgentId, deps.getConfig?.()) ?? undefined,\n workspaceRoot,\n createWorkspaceRoot: args.createWorkspaceRoot === true,\n projectKind: trimString(args.projectKind),\n brief: trimString(args.brief),\n instructions: trimString(args.instructions),\n };\n if (dryRun) return { ok: true, dryRun: true, action: 'create_project', input };\n const project = projects.create(input);\n return { ok: true, project };\n }\n\n if (command === 'update') {\n const id = trimString(args.projectId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'projectId is required' };\n const workspaceRoot = optionalProjectWorkspaceRootArg(args);\n const patch = {\n ...(args.name !== undefined ? { name: trimString(args.name) ?? '' } : {}),\n ...(args.description !== undefined ? { description: optionalString(args.description) } : {}),\n ...(args.status !== undefined ? { status: enumValue(args.status, PROJECT_STATUSES) } : {}),\n ...(args.defaultAgentId !== undefined ? { defaultAgentId: validateDefaultAgentId(args.defaultAgentId, deps.getConfig?.()) } : {}),\n ...(workspaceRoot !== undefined ? { workspaceRoot } : {}),\n ...(args.createWorkspaceRoot === true ? { createWorkspaceRoot: true } : {}),\n ...(args.brief !== undefined ? { brief: optionalString(args.brief) } : {}),\n ...(args.instructions !== undefined ? { instructions: optionalString(args.instructions) } : {}),\n };\n if (args.status !== undefined && patch.status === undefined) return { ok: false, error: 'Invalid project status' };\n if (dryRun) return { ok: true, dryRun: true, action: 'update_project', projectId: id, patch };\n const project = projects.update(id, patch);\n return { ok: true, project };\n }\n\n return { ok: false, error: `Unsupported project command: ${command}` };\n}\n\nasync function handleNote(\n command: string,\n args: Record<string, unknown>,\n deps: XopcUseToolDeps,\n dryRun: boolean,\n): Promise<unknown> {\n const notes = deps.getNotesService?.();\n if (!notes) return { ok: false, error: 'Notes service is unavailable' };\n\n if (command === 'list') {\n return {\n ok: true,\n ...(await notes.listNotes({\n status: enumValue(args.status, NOTE_STATUSES),\n kind: enumValue(args.kind, NOTE_KINDS),\n tag: trimString(args.tag),\n search: trimString(args.search),\n pinned: typeof args.pinned === 'boolean' ? args.pinned : undefined,\n limit: boundedLimit(args.limit),\n offset: offset(args.offset),\n sortBy: enumValue(args.sortBy, new Set(['createdAt', 'updatedAt', 'lastOpenedAt'] as const)),\n sortOrder: enumValue(args.sortOrder, new Set(['asc', 'desc'] as const)),\n })),\n };\n }\n\n if (command === 'get') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'noteId is required' };\n const note = await notes.getNote(id);\n return note ? { ok: true, note } : { ok: false, error: `Note not found: ${id}` };\n }\n\n if (command === 'create') {\n const markdown = typeof args.markdown === 'string' ? args.markdown : trimString(args.content) ?? '';\n const input = {\n title: trimString(args.title),\n markdown,\n kind: enumValue(args.kind, NOTE_KINDS),\n tags: stringArray(args.tags),\n capturedVia: { channel: 'web' as const },\n pinned: args.pinned === true,\n };\n if (dryRun) return { ok: true, dryRun: true, action: 'create_note', input };\n const note = await notes.createNote(input);\n return { ok: true, note };\n }\n\n if (command === 'append') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n const content = trimString(args.content);\n if (!id) return { ok: false, error: 'noteId is required' };\n if (!content) return { ok: false, error: 'content is required' };\n const heading = trimString(args.heading);\n if (dryRun) return { ok: true, dryRun: true, action: 'append_note', noteId: id, heading, content };\n const note = await notes.appendTextToNote(id, content, heading);\n return note ? { ok: true, note } : { ok: false, error: `Note not found: ${id}` };\n }\n\n if (command === 'preview_edit') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n const instruction = trimString(args.instruction);\n if (!id) return { ok: false, error: 'noteId is required' };\n if (!instruction) return { ok: false, error: 'instruction is required' };\n const markdown = typeof args.markdown === 'string' ? args.markdown : undefined;\n const result = await notes.createAiEditPatch(id, instruction, markdown);\n return result ? { ok: true, ...result } : { ok: false, error: `Note not found: ${id}` };\n }\n\n if (command === 'update') {\n const id = trimString(args.noteId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'noteId is required' };\n if (args.title !== undefined && typeof args.title !== 'string') return { ok: false, error: 'Invalid note title' };\n if (args.markdown !== undefined && typeof args.markdown !== 'string') return { ok: false, error: 'Invalid note markdown' };\n if (args.tags !== undefined && !Array.isArray(args.tags)) return { ok: false, error: 'Invalid note tags' };\n const title = args.title as string | undefined;\n const markdown = args.markdown as string | undefined;\n const patch = {\n ...(args.title !== undefined ? { title } : {}),\n ...(args.markdown !== undefined ? { markdown } : {}),\n ...(args.kind !== undefined ? { kind: enumValue(args.kind, NOTE_KINDS) } : {}),\n ...(args.status !== undefined ? { status: enumValue(args.status, NOTE_STATUSES) } : {}),\n ...(args.tags !== undefined ? { tags: stringArray(args.tags) ?? [] } : {}),\n ...(typeof args.pinned === 'boolean' ? { pinned: args.pinned } : {}),\n };\n if (args.kind !== undefined && patch.kind === undefined) return { ok: false, error: 'Invalid note kind' };\n if (args.status !== undefined && patch.status === undefined) return { ok: false, error: 'Invalid note status' };\n if (dryRun) return { ok: true, dryRun: true, action: 'update_note', noteId: id, patch };\n const note = await notes.updateNote(id, patch, 'ai_edit');\n return note ? { ok: true, note } : { ok: false, error: `Note not found: ${id}` };\n }\n\n return { ok: false, error: `Unsupported note command: ${command}` };\n}\n\nasync function handleWorkItem(\n command: string,\n args: Record<string, unknown>,\n deps: XopcUseToolDeps,\n dryRun: boolean,\n): Promise<unknown> {\n const workItems = deps.getWorkItemService?.();\n if (!workItems) return { ok: false, error: 'Work item service is unavailable' };\n\n if (command === 'list') {\n const projectId = currentProjectId(args, deps);\n if (!projectId) return { ok: false, error: 'projectId is required' };\n return {\n ok: true,\n ...workItems.listProjectWorkItems(projectId, {\n status: enumValue(args.status, WORK_ITEM_STATUSES),\n priority: enumValue(args.priority, WORK_ITEM_PRIORITIES),\n includeArchived: args.includeArchived === true,\n search: trimString(args.search),\n sortBy: enumValue(args.sortBy, new Set(['updatedAt', 'createdAt', 'priority', 'status'] as const)),\n sortOrder: enumValue(args.sortOrder, new Set(['asc', 'desc'] as const)),\n limit: boundedLimit(args.limit),\n offset: offset(args.offset),\n }),\n };\n }\n\n if (command === 'get') {\n const id = trimString(args.workItemId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'workItemId is required' };\n const item = workItems.getWorkItem(id);\n return item ? { ok: true, item } : { ok: false, error: `Work item not found: ${id}` };\n }\n\n if (command === 'create') {\n const projectId = currentProjectId(args, deps);\n const title = trimString(args.title);\n if (!projectId) return { ok: false, error: 'projectId is required' };\n if (!title) return { ok: false, error: 'title is required' };\n const input = {\n title,\n description: trimString(args.description),\n status: enumValue(args.status, WORK_ITEM_STATUSES),\n priority: enumValue(args.priority, WORK_ITEM_PRIORITIES),\n ownerAgentId: trimString(args.ownerAgentId),\n nextAction: trimString(args.nextAction),\n blockedReason: trimString(args.blockedReason),\n dueAt: finiteNumber(args.dueAt),\n };\n if (args.status !== undefined && input.status === undefined) return { ok: false, error: 'Invalid work item status' };\n if (args.priority !== undefined && input.priority === undefined) return { ok: false, error: 'Invalid work item priority' };\n if (args.dueAt !== undefined && input.dueAt === undefined) return { ok: false, error: 'Invalid dueAt' };\n if (dryRun) return { ok: true, dryRun: true, action: 'create_work_item', projectId, input };\n const item = workItems.createProjectWorkItem(projectId, input);\n return { ok: true, item };\n }\n\n if (command === 'update') {\n const id = trimString(args.workItemId) ?? trimString(args.id);\n if (!id) return { ok: false, error: 'workItemId is required' };\n const dueAt = args.dueAt !== undefined ? nullableNumber(args.dueAt) : undefined;\n const archivedAt = args.archivedAt !== undefined ? nullableNumber(args.archivedAt) : undefined;\n const patch = {\n ...(args.title !== undefined ? { title: trimString(args.title) ?? '' } : {}),\n ...(args.description !== undefined ? { description: optionalString(args.description) } : {}),\n ...(args.status !== undefined ? { status: enumValue(args.status, WORK_ITEM_STATUSES) } : {}),\n ...(args.priority !== undefined ? { priority: enumValue(args.priority, WORK_ITEM_PRIORITIES) } : {}),\n ...(args.ownerAgentId !== undefined ? { ownerAgentId: optionalString(args.ownerAgentId) } : {}),\n ...(args.nextAction !== undefined ? { nextAction: optionalString(args.nextAction) } : {}),\n ...(args.blockedReason !== undefined ? { blockedReason: optionalString(args.blockedReason) } : {}),\n ...(args.dueAt !== undefined ? { dueAt } : {}),\n ...(args.archivedAt !== undefined ? { archivedAt } : {}),\n };\n if (args.status !== undefined && patch.status === undefined) return { ok: false, error: 'Invalid work item status' };\n if (args.priority !== undefined && patch.priority === undefined) return { ok: false, error: 'Invalid work item priority' };\n if (args.dueAt !== undefined && dueAt === undefined) return { ok: false, error: 'Invalid dueAt' };\n if (args.archivedAt !== undefined && archivedAt === undefined) return { ok: false, error: 'Invalid archivedAt' };\n if (dryRun) return { ok: true, dryRun: true, action: 'update_work_item', workItemId: id, patch };\n const item = workItems.updateWorkItem(id, patch);\n return item ? { ok: true, item } : { ok: false, error: `Work item not found: ${id}` };\n }\n\n return { ok: false, error: `Unsupported work_item command: ${command}` };\n}\n\nexport function createXopcUseTool(deps: XopcUseToolDeps): AgentTool<typeof XopcUseToolSchema, XopcUseDetails> {\n return {\n name: 'xopc_use',\n label: 'XOPC Use',\n description:\n 'Operate first-class xopc objects through one safe entry point. Use for projects, notes, and project work items instead of editing storage files directly. For non-trivial object changes, load the built-in manual first with tool_manual({ tool: \"xopc_use\" }).',\n parameters: XopcUseToolSchema,\n mutatesWorkspace: true,\n mutationScope: 'external',\n requiresExclusiveWorkspaceLock: true,\n finalGuardRelevant: true,\n async execute(toolCallId, input: XopcUseToolInput): Promise<AgentToolResult<XopcUseDetails>> {\n const mode = input.mode;\n const command = input.command.trim();\n const dryRun = input.dryRun === true;\n const args = ensureArgs(input);\n const details: XopcUseDetails = { mode, command, dryRun };\n if (!command) return errorText('command is required', details);\n\n try {\n const sessionKey = deps.getCurrentSessionKey?.();\n const agentId = deps.getCurrentAgentId?.();\n const result = await runWithActivityContext(\n {\n actor: { kind: 'agent', agentId, sessionKey },\n initiator: { kind: 'user', sessionKey },\n source: { kind: 'xopc_use', toolCallId },\n },\n async () =>\n mode === 'project'\n ? await handleProject(command, args, deps, dryRun)\n : mode === 'note'\n ? await handleNote(command, args, deps, dryRun)\n : mode === 'work_item'\n ? await handleWorkItem(command, args, deps, dryRun)\n : { ok: false, error: `Unsupported mode: ${String(mode)}` },\n );\n return okText({ ...details, result });\n } catch (err) {\n const message = err instanceof Error ? err.message : String(err);\n return errorText(message, details);\n }\n },\n } as AgentTool<typeof XopcUseToolSchema, XopcUseDetails>;\n}\n"],"mappings":"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"}
|
|
@@ -24,6 +24,7 @@ import type { SubagentRunOptions, SubagentRunner } from './types.js';
|
|
|
24
24
|
export interface DelegateSubagentRunnerDeps {
|
|
25
25
|
workspace: string;
|
|
26
26
|
bus: MessageBus;
|
|
27
|
+
agentId?: string;
|
|
27
28
|
/** Resolves the default subagent model (typically the parent agent's primary model). */
|
|
28
29
|
getDefaultModel: () => Model<Api>;
|
|
29
30
|
getConfig: () => Config | undefined;
|
|
@@ -52,10 +52,14 @@ var DelegateSubagentRunner = class {
|
|
|
52
52
|
maxIterations: opts.maxIterations ?? DEFAULT_MAX_ITERATIONS,
|
|
53
53
|
model,
|
|
54
54
|
bus: this.deps.bus,
|
|
55
|
+
agentId: this.deps.agentId,
|
|
55
56
|
getConfig: this.deps.getConfig,
|
|
56
57
|
toolExecutorConfig: this.deps.toolExecutorConfig,
|
|
57
58
|
buildChildTools: (childOpts) => {
|
|
58
|
-
const base = this.deps.buildChildTools(
|
|
59
|
+
const base = this.deps.buildChildTools({
|
|
60
|
+
...childOpts,
|
|
61
|
+
agentId: this.deps.agentId ?? childOpts.agentId
|
|
62
|
+
});
|
|
59
63
|
if (!wantStructured || !opts.schema) return base;
|
|
60
64
|
return [...base.filter((t) => t.name !== STRUCTURED_OUTPUT_TOOL_NAME), createStructuredOutputTool({
|
|
61
65
|
schema: opts.schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subagent-runner.js","names":[],"sources":["../../../../src/agent/workflow/subagent-runner.ts"],"sourcesContent":["/**\n * Adapter: spawns one isolated child agent per `agent()` call from a workflow.\n *\n * Wraps the existing `createDelegateChildHandle` so the workflow runtime stays\n * decoupled from the LLM stack (it sees only the `SubagentRunner` interface).\n *\n * Key behaviour:\n * - When `opts.schema` is provided, we inject `structured_output` into the child\n * tool set and unwrap the captured value on success. If the subagent finishes\n * without ever calling `structured_output`, we treat it as failure (`null`).\n * - Failures and aborts resolve to `null`. The workflow runtime continues — this\n * matches the pi-dynamic-workflows contract and keeps fan-out pipelines robust.\n * - We do NOT mutate `createDelegateChildHandle` — we just leverage its\n * `buildChildTools` injection point.\n */\n\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../../config/schema.js';\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport { emitSessionTranscriptUpdate } from '../../session/transcript-events.js';\nimport { createLogger } from '../../utils/logger.js';\n\nimport {\n type BuildChildToolsOptions,\n createDelegateChildHandle,\n type DelegateChildHandleOptions,\n} from '../child-agent-factory.js';\nimport {\n DEFAULT_DELEGATE_TOOLS,\n DELEGATE_BLOCKED_TOOLS,\n} from '../tools/delegate-tool.js';\nimport type { ToolExecutorConfig } from '../tools/executor.js';\n\nimport {\n createStructuredOutputTool,\n STRUCTURED_OUTPUT_TOOL_NAME,\n type StructuredOutputCapture,\n} from './structured-output-tool.js';\nimport type { SubagentRunOptions, SubagentRunner, SubagentProgressEvent } from './types.js';\n\nconst log = createLogger('Agent:WorkflowSubagent');\n\nconst DEFAULT_MAX_ITERATIONS = 30;\n\nexport interface DelegateSubagentRunnerDeps {\n workspace: string;\n bus: MessageBus;\n /** Resolves the default subagent model (typically the parent agent's primary model). */\n getDefaultModel: () => Model<Api>;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n sessionStore?: SessionStore;\n /**\n * Provided by the workflow tool from `AgentToolsFactory` — mirrors how\n * `delegate-tool` is wired (avoids importing `tools/factory.ts` here and\n * breaking the existing factory ↔ delegate-tool ↔ child-agent-factory\n * dependency contract).\n */\n buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];\n}\n\nexport class DelegateSubagentRunner implements SubagentRunner {\n constructor(private readonly deps: DelegateSubagentRunnerDeps) {}\n\n async run<T = string>(prompt: string, opts: SubagentRunOptions<T>): Promise<T | null> {\n if (opts.signal?.aborted) return null;\n\n const capture: StructuredOutputCapture<T> = { called: false, value: undefined };\n const wantStructured = Boolean(opts.schema);\n\n const allowed = resolveAllowedToolNames(opts.allowedToolNames, wantStructured);\n const model = opts.model ?? safeResolveDefaultModel(this.deps.getDefaultModel);\n if (!model) {\n log.warn({ label: opts.label }, 'subagent run skipped: no primary model resolved');\n return null;\n }\n\n const fullPrompt = buildPrompt(prompt, opts, wantStructured);\n const streamMode = resolveSubagentStreamMode(this.deps.getConfig);\n\n let transcriptPersistQueue: Promise<void> = Promise.resolve();\n const persistTranscriptSnapshot = opts.sessionKey && this.deps.sessionStore\n ? (messages: Parameters<SessionStore['saveMessages']>[1]) => {\n const store = this.deps.sessionStore;\n const key = opts.sessionKey;\n if (!store || !key) return;\n const snapshot = cloneAgentMessages(messages);\n transcriptPersistQueue = transcriptPersistQueue\n .then(async () => {\n await store.saveMessages(key, snapshot);\n emitSessionTranscriptUpdate({ sessionKey: key });\n })\n .catch((err) => {\n const msg = err instanceof Error ? err.message : String(err);\n log.warn(\n { err, sessionKey: key, errorMessage: msg },\n `Failed to persist workflow subagent transcript snapshot: ${msg}`,\n );\n });\n }\n : undefined;\n\n const childOptions: DelegateChildHandleOptions = {\n workspace: this.deps.workspace,\n goal: fullPrompt,\n allowedToolNames: allowed,\n maxIterations: opts.maxIterations ?? DEFAULT_MAX_ITERATIONS,\n model,\n bus: this.deps.bus,\n getConfig: this.deps.getConfig,\n toolExecutorConfig: this.deps.toolExecutorConfig,\n buildChildTools: (childOpts) => {\n const base = this.deps.buildChildTools(childOpts);\n if (!wantStructured || !opts.schema) return base;\n // Replace any existing tool with the same name so the per-run capture wins.\n const filtered = base.filter((t) => t.name !== STRUCTURED_OUTPUT_TOOL_NAME);\n return [\n ...filtered,\n createStructuredOutputTool({ schema: opts.schema, capture }) as unknown as AgentTool<any, any>,\n ];\n },\n progressHooks:\n opts.onProgress && streamMode !== 'off'\n ? {\n mode: streamMode === 'full' ? 'full' : 'steps',\n onProgress: (event) => {\n opts.onProgress?.(mapChildProgressEvent(event));\n },\n }\n : undefined,\n onTranscriptSnapshot: persistTranscriptSnapshot,\n };\n\n if (opts.sessionKey && opts.sessionMetadata && this.deps.sessionStore) {\n await this.preparePersistentSubagentSession(opts.sessionKey, opts.sessionMetadata);\n }\n\n const handle = createDelegateChildHandle(childOptions);\n const onAbort = () => handle.abort();\n opts.signal?.addEventListener('abort', onAbort, { once: true });\n\n try {\n const { summary, messages } = await handle.run();\n await transcriptPersistQueue;\n if (opts.sessionKey && this.deps.sessionStore) {\n await this.deps.sessionStore.saveMessages(opts.sessionKey, messages);\n emitSessionTranscriptUpdate({ sessionKey: opts.sessionKey });\n }\n if (opts.signal?.aborted) return null;\n\n if (wantStructured) {\n if (!capture.called) {\n log.warn({ label: opts.label }, 'subagent finished without calling structured_output');\n return null;\n }\n return capture.value as T;\n }\n return summary as unknown as T;\n } catch (e) {\n if (opts.rethrow) throw e;\n const msg = e instanceof Error ? e.message : String(e);\n log.warn({ err: e, label: opts.label, errorMessage: msg }, `subagent run failed: ${msg}`);\n return null;\n } finally {\n opts.signal?.removeEventListener('abort', onAbort);\n }\n }\n\n private async preparePersistentSubagentSession(\n sessionKey: string,\n metadata: NonNullable<SubagentRunOptions['sessionMetadata']>,\n ): Promise<void> {\n const store = this.deps.sessionStore;\n if (!store) return;\n await store.resolveTranscriptPath(sessionKey, {\n metadata: {\n sessionType: 'workflow-subagent',\n hiddenFromSessionList: true,\n parentSessionKey: metadata.parentSessionKey,\n workflowRunId: metadata.workflowRunId,\n workflowDefinitionId: metadata.workflowDefinitionId,\n workflowAgentId: metadata.workflowAgentId,\n workflowAgentLabel: metadata.workflowAgentLabel,\n sourceChannel: 'workflow',\n sourceChatId: metadata.workflowRunId,\n routing: {\n agentId: metadata.workflowAgentId || 'main',\n source: 'workflow',\n accountId: 'default',\n peerKind: 'subagent',\n peerId: metadata.workflowRunId,\n },\n },\n });\n await store.updateMetadata(sessionKey, {\n sessionType: 'workflow-subagent',\n hiddenFromSessionList: true,\n parentSessionKey: metadata.parentSessionKey,\n workflowRunId: metadata.workflowRunId,\n workflowDefinitionId: metadata.workflowDefinitionId,\n workflowAgentId: metadata.workflowAgentId,\n workflowAgentLabel: metadata.workflowAgentLabel,\n name: metadata.workflowAgentLabel,\n tags: ['workflow-subagent', metadata.workflowDefinitionId],\n });\n }\n}\n\nfunction cloneAgentMessages(messages: Parameters<SessionStore['saveMessages']>[1]): Parameters<SessionStore['saveMessages']>[1] {\n return messages.map((message) => structuredClone(message));\n}\n\nfunction resolveAllowedToolNames(\n requested: string[] | undefined,\n wantStructured: boolean,\n): string[] {\n const base = requested && requested.length > 0 ? requested : [...DEFAULT_DELEGATE_TOOLS];\n const filtered = base\n .map((s) => String(s).trim())\n .filter((s) => s.length > 0)\n .filter((s) => !DELEGATE_BLOCKED_TOOLS.has(s));\n if (wantStructured && !filtered.includes(STRUCTURED_OUTPUT_TOOL_NAME)) {\n filtered.push(STRUCTURED_OUTPUT_TOOL_NAME);\n }\n return [...new Set(filtered)];\n}\n\nfunction buildPrompt(prompt: string, opts: SubagentRunOptions<unknown>, structured: boolean): string {\n const parts: string[] = [];\n if (opts.instructions?.trim()) parts.push(opts.instructions.trim());\n if (opts.label) parts.push(`Task label: ${opts.label}`);\n if (opts.phase) parts.push(`Workflow phase: ${opts.phase}`);\n parts.push(prompt);\n if (structured) {\n parts.push(\n [\n 'Final output contract:',\n '- Your final action MUST be a structured_output tool call.',\n '- The structured_output arguments are the return value of this subagent.',\n '- Do not emit a prose final answer instead of structured_output.',\n '- If you need to inspect files or run commands first, do so, then call structured_output exactly once.',\n ].join('\\n'),\n );\n }\n return parts.join('\\n\\n');\n}\n\nfunction safeResolveDefaultModel(get: () => Model<Api>): Model<Api> | null {\n try {\n return get();\n } catch (e) {\n log.warn({ err: e }, 'failed to resolve default subagent model');\n return null;\n }\n}\n\nfunction resolveSubagentStreamMode(\n _getConfig: () => Config | undefined,\n): 'off' | 'steps' | 'full' {\n return 'steps';\n}\n\nfunction mapChildProgressEvent(event: {\n type: 'tool_start' | 'tool_end' | 'iteration' | 'text_delta' | 'thinking_delta';\n toolCallId?: string;\n toolName?: string;\n args?: Record<string, unknown>;\n isError?: boolean;\n resultPreview?: string;\n error?: string;\n count?: number;\n max?: number;\n delta?: string;\n}): SubagentProgressEvent {\n switch (event.type) {\n case 'tool_start':\n return {\n type: 'tool_start',\n toolCallId: event.toolCallId ?? '',\n toolName: event.toolName ?? 'tool',\n args: event.args ?? {},\n };\n case 'tool_end':\n return {\n type: 'tool_end',\n toolCallId: event.toolCallId ?? '',\n toolName: event.toolName ?? 'tool',\n isError: Boolean(event.isError),\n resultPreview: event.resultPreview,\n error: event.error,\n };\n case 'iteration':\n return {\n type: 'iteration',\n count: event.count ?? 0,\n max: event.max ?? 0,\n };\n case 'text_delta':\n return { type: 'text_delta', delta: event.delta ?? '' };\n case 'thinking_delta':\n return { type: 'thinking_delta', delta: event.delta ?? '' };\n default:\n return { type: 'text_delta', delta: '' };\n }\n}\n"],"mappings":";;;;;;;aAuBqD;AAoBrD,MAAM,MAAM,aAAa,yBAAyB;AAElD,MAAM,yBAAyB;AAmB/B,IAAa,yBAAb,MAA8D;CAC5D,YAAY,MAAmD;AAAlC,OAAA,OAAA;;CAE7B,MAAM,IAAgB,QAAgB,MAAgD;AACpF,MAAI,KAAK,QAAQ,QAAS,QAAO;EAEjC,MAAM,UAAsC;GAAE,QAAQ;GAAO,OAAO,KAAA;GAAW;EAC/E,MAAM,iBAAiB,QAAQ,KAAK,OAAO;EAE3C,MAAM,UAAU,wBAAwB,KAAK,kBAAkB,eAAe;EAC9E,MAAM,QAAQ,KAAK,SAAS,wBAAwB,KAAK,KAAK,gBAAgB;AAC9E,MAAI,CAAC,OAAO;AACV,OAAI,KAAK,EAAE,OAAO,KAAK,OAAO,EAAE,kDAAkD;AAClF,UAAO;;EAGT,MAAM,aAAa,YAAY,QAAQ,MAAM,eAAe;EAC5D,MAAM,aAAa,0BAA0B,KAAK,KAAK,UAAU;EAEjE,IAAI,yBAAwC,QAAQ,SAAS;EAC7D,MAAM,4BAA4B,KAAK,cAAc,KAAK,KAAK,gBAC1D,aAA0D;GACzD,MAAM,QAAQ,KAAK,KAAK;GACxB,MAAM,MAAM,KAAK;AACjB,OAAI,CAAC,SAAS,CAAC,IAAK;GACpB,MAAM,WAAW,mBAAmB,SAAS;AAC7C,4BAAyB,uBACtB,KAAK,YAAY;AAChB,UAAM,MAAM,aAAa,KAAK,SAAS;AACvC,gCAA4B,EAAE,YAAY,KAAK,CAAC;KAChD,CACD,OAAO,QAAQ;IACd,MAAM,MAAM,eAAe,QAAQ,IAAI,UAAU,OAAO,IAAI;AAC5D,QAAI,KACF;KAAE;KAAK,YAAY;KAAK,cAAc;KAAK,EAC3C,4DAA4D,MAC7D;KACD;MAEN,KAAA;EAEJ,MAAM,eAA2C;GAC/C,WAAW,KAAK,KAAK;GACrB,MAAM;GACN,kBAAkB;GAClB,eAAe,KAAK,iBAAiB;GACrC;GACA,KAAK,KAAK,KAAK;GACf,WAAW,KAAK,KAAK;GACrB,oBAAoB,KAAK,KAAK;GAC9B,kBAAkB,cAAc;IAC9B,MAAM,OAAO,KAAK,KAAK,gBAAgB,UAAU;AACjD,QAAI,CAAC,kBAAkB,CAAC,KAAK,OAAQ,QAAO;AAG5C,WAAO,CACL,GAFe,KAAK,QAAQ,MAAM,EAAE,SAAS,4BAElC,EACX,2BAA2B;KAAE,QAAQ,KAAK;KAAQ;KAAS,CAAC,CAC7D;;GAEH,eACE,KAAK,cAAc,eAAe,QAC9B;IACE,MAAM,eAAe,SAAS,SAAS;IACvC,aAAa,UAAU;AACrB,UAAK,aAAa,sBAAsB,MAAM,CAAC;;IAElD,GACD,KAAA;GACN,sBAAsB;GACvB;AAED,MAAI,KAAK,cAAc,KAAK,mBAAmB,KAAK,KAAK,aACvD,OAAM,KAAK,iCAAiC,KAAK,YAAY,KAAK,gBAAgB;EAGpF,MAAM,SAAS,0BAA0B,aAAa;EACtD,MAAM,gBAAgB,OAAO,OAAO;AACpC,OAAK,QAAQ,iBAAiB,SAAS,SAAS,EAAE,MAAM,MAAM,CAAC;AAE/D,MAAI;GACF,MAAM,EAAE,SAAS,aAAa,MAAM,OAAO,KAAK;AAChD,SAAM;AACN,OAAI,KAAK,cAAc,KAAK,KAAK,cAAc;AAC7C,UAAM,KAAK,KAAK,aAAa,aAAa,KAAK,YAAY,SAAS;AACpE,gCAA4B,EAAE,YAAY,KAAK,YAAY,CAAC;;AAE9D,OAAI,KAAK,QAAQ,QAAS,QAAO;AAEjC,OAAI,gBAAgB;AAClB,QAAI,CAAC,QAAQ,QAAQ;AACnB,SAAI,KAAK,EAAE,OAAO,KAAK,OAAO,EAAE,sDAAsD;AACtF,YAAO;;AAET,WAAO,QAAQ;;AAEjB,UAAO;WACA,GAAG;AACV,OAAI,KAAK,QAAS,OAAM;GACxB,MAAM,MAAM,aAAa,QAAQ,EAAE,UAAU,OAAO,EAAE;AACtD,OAAI,KAAK;IAAE,KAAK;IAAG,OAAO,KAAK;IAAO,cAAc;IAAK,EAAE,wBAAwB,MAAM;AACzF,UAAO;YACC;AACR,QAAK,QAAQ,oBAAoB,SAAS,QAAQ;;;CAItD,MAAc,iCACZ,YACA,UACe;EACf,MAAM,QAAQ,KAAK,KAAK;AACxB,MAAI,CAAC,MAAO;AACZ,QAAM,MAAM,sBAAsB,YAAY,EAC5C,UAAU;GACR,aAAa;GACb,uBAAuB;GACvB,kBAAkB,SAAS;GAC3B,eAAe,SAAS;GACxB,sBAAsB,SAAS;GAC/B,iBAAiB,SAAS;GAC1B,oBAAoB,SAAS;GAC7B,eAAe;GACf,cAAc,SAAS;GACvB,SAAS;IACP,SAAS,SAAS,mBAAmB;IACrC,QAAQ;IACR,WAAW;IACX,UAAU;IACV,QAAQ,SAAS;IAClB;GACF,EACF,CAAC;AACF,QAAM,MAAM,eAAe,YAAY;GACrC,aAAa;GACb,uBAAuB;GACvB,kBAAkB,SAAS;GAC3B,eAAe,SAAS;GACxB,sBAAsB,SAAS;GAC/B,iBAAiB,SAAS;GAC1B,oBAAoB,SAAS;GAC7B,MAAM,SAAS;GACf,MAAM,CAAC,qBAAqB,SAAS,qBAAqB;GAC3D,CAAC;;;AAIN,SAAS,mBAAmB,UAAoG;AAC9H,QAAO,SAAS,KAAK,YAAY,gBAAgB,QAAQ,CAAC;;AAG5D,SAAS,wBACP,WACA,gBACU;CAEV,MAAM,YADO,aAAa,UAAU,SAAS,IAAI,YAAY,CAAC,GAAG,uBAAuB,EAErF,KAAK,MAAM,OAAO,EAAE,CAAC,MAAM,CAAC,CAC5B,QAAQ,MAAM,EAAE,SAAS,EAAE,CAC3B,QAAQ,MAAM,CAAC,uBAAuB,IAAI,EAAE,CAAC;AAChD,KAAI,kBAAkB,CAAC,SAAS,SAAA,oBAAqC,CACnE,UAAS,KAAK,4BAA4B;AAE5C,QAAO,CAAC,GAAG,IAAI,IAAI,SAAS,CAAC;;AAG/B,SAAS,YAAY,QAAgB,MAAmC,YAA6B;CACnG,MAAM,QAAkB,EAAE;AAC1B,KAAI,KAAK,cAAc,MAAM,CAAE,OAAM,KAAK,KAAK,aAAa,MAAM,CAAC;AACnE,KAAI,KAAK,MAAO,OAAM,KAAK,eAAe,KAAK,QAAQ;AACvD,KAAI,KAAK,MAAO,OAAM,KAAK,mBAAmB,KAAK,QAAQ;AAC3D,OAAM,KAAK,OAAO;AAClB,KAAI,WACF,OAAM,KACJ;EACE;EACA;EACA;EACA;EACA;EACD,CAAC,KAAK,KAAK,CACb;AAEH,QAAO,MAAM,KAAK,OAAO;;AAG3B,SAAS,wBAAwB,KAA0C;AACzE,KAAI;AACF,SAAO,KAAK;UACL,GAAG;AACV,MAAI,KAAK,EAAE,KAAK,GAAG,EAAE,2CAA2C;AAChE,SAAO;;;AAIX,SAAS,0BACP,YAC0B;AAC1B,QAAO;;AAGT,SAAS,sBAAsB,OAWL;AACxB,SAAQ,MAAM,MAAd;EACE,KAAK,aACH,QAAO;GACL,MAAM;GACN,YAAY,MAAM,cAAc;GAChC,UAAU,MAAM,YAAY;GAC5B,MAAM,MAAM,QAAQ,EAAE;GACvB;EACH,KAAK,WACH,QAAO;GACL,MAAM;GACN,YAAY,MAAM,cAAc;GAChC,UAAU,MAAM,YAAY;GAC5B,SAAS,QAAQ,MAAM,QAAQ;GAC/B,eAAe,MAAM;GACrB,OAAO,MAAM;GACd;EACH,KAAK,YACH,QAAO;GACL,MAAM;GACN,OAAO,MAAM,SAAS;GACtB,KAAK,MAAM,OAAO;GACnB;EACH,KAAK,aACH,QAAO;GAAE,MAAM;GAAc,OAAO,MAAM,SAAS;GAAI;EACzD,KAAK,iBACH,QAAO;GAAE,MAAM;GAAkB,OAAO,MAAM,SAAS;GAAI;EAC7D,QACE,QAAO;GAAE,MAAM;GAAc,OAAO;GAAI"}
|
|
1
|
+
{"version":3,"file":"subagent-runner.js","names":[],"sources":["../../../../src/agent/workflow/subagent-runner.ts"],"sourcesContent":["/**\n * Adapter: spawns one isolated child agent per `agent()` call from a workflow.\n *\n * Wraps the existing `createDelegateChildHandle` so the workflow runtime stays\n * decoupled from the LLM stack (it sees only the `SubagentRunner` interface).\n *\n * Key behaviour:\n * - When `opts.schema` is provided, we inject `structured_output` into the child\n * tool set and unwrap the captured value on success. If the subagent finishes\n * without ever calling `structured_output`, we treat it as failure (`null`).\n * - Failures and aborts resolve to `null`. The workflow runtime continues — this\n * matches the pi-dynamic-workflows contract and keeps fan-out pipelines robust.\n * - We do NOT mutate `createDelegateChildHandle` — we just leverage its\n * `buildChildTools` injection point.\n */\n\nimport type { AgentTool } from '@earendil-works/pi-agent-core';\nimport type { Api, Model } from '@earendil-works/pi-ai';\n\nimport type { Config } from '../../config/schema.js';\nimport type { MessageBus } from '../../infra/bus/index.js';\nimport type { SessionStore } from '../../session/store.js';\nimport { emitSessionTranscriptUpdate } from '../../session/transcript-events.js';\nimport { createLogger } from '../../utils/logger.js';\n\nimport {\n type BuildChildToolsOptions,\n createDelegateChildHandle,\n type DelegateChildHandleOptions,\n} from '../child-agent-factory.js';\nimport {\n DEFAULT_DELEGATE_TOOLS,\n DELEGATE_BLOCKED_TOOLS,\n} from '../tools/delegate-tool.js';\nimport type { ToolExecutorConfig } from '../tools/executor.js';\n\nimport {\n createStructuredOutputTool,\n STRUCTURED_OUTPUT_TOOL_NAME,\n type StructuredOutputCapture,\n} from './structured-output-tool.js';\nimport type { SubagentRunOptions, SubagentRunner, SubagentProgressEvent } from './types.js';\n\nconst log = createLogger('Agent:WorkflowSubagent');\n\nconst DEFAULT_MAX_ITERATIONS = 30;\n\nexport interface DelegateSubagentRunnerDeps {\n workspace: string;\n bus: MessageBus;\n agentId?: string;\n /** Resolves the default subagent model (typically the parent agent's primary model). */\n getDefaultModel: () => Model<Api>;\n getConfig: () => Config | undefined;\n toolExecutorConfig?: Partial<ToolExecutorConfig>;\n sessionStore?: SessionStore;\n /**\n * Provided by the workflow tool from `AgentToolsFactory` — mirrors how\n * `delegate-tool` is wired (avoids importing `tools/factory.ts` here and\n * breaking the existing factory ↔ delegate-tool ↔ child-agent-factory\n * dependency contract).\n */\n buildChildTools: (opts: BuildChildToolsOptions) => AgentTool<any, any>[];\n}\n\nexport class DelegateSubagentRunner implements SubagentRunner {\n constructor(private readonly deps: DelegateSubagentRunnerDeps) {}\n\n async run<T = string>(prompt: string, opts: SubagentRunOptions<T>): Promise<T | null> {\n if (opts.signal?.aborted) return null;\n\n const capture: StructuredOutputCapture<T> = { called: false, value: undefined };\n const wantStructured = Boolean(opts.schema);\n\n const allowed = resolveAllowedToolNames(opts.allowedToolNames, wantStructured);\n const model = opts.model ?? safeResolveDefaultModel(this.deps.getDefaultModel);\n if (!model) {\n log.warn({ label: opts.label }, 'subagent run skipped: no primary model resolved');\n return null;\n }\n\n const fullPrompt = buildPrompt(prompt, opts, wantStructured);\n const streamMode = resolveSubagentStreamMode(this.deps.getConfig);\n\n let transcriptPersistQueue: Promise<void> = Promise.resolve();\n const persistTranscriptSnapshot = opts.sessionKey && this.deps.sessionStore\n ? (messages: Parameters<SessionStore['saveMessages']>[1]) => {\n const store = this.deps.sessionStore;\n const key = opts.sessionKey;\n if (!store || !key) return;\n const snapshot = cloneAgentMessages(messages);\n transcriptPersistQueue = transcriptPersistQueue\n .then(async () => {\n await store.saveMessages(key, snapshot);\n emitSessionTranscriptUpdate({ sessionKey: key });\n })\n .catch((err) => {\n const msg = err instanceof Error ? err.message : String(err);\n log.warn(\n { err, sessionKey: key, errorMessage: msg },\n `Failed to persist workflow subagent transcript snapshot: ${msg}`,\n );\n });\n }\n : undefined;\n\n const childOptions: DelegateChildHandleOptions = {\n workspace: this.deps.workspace,\n goal: fullPrompt,\n allowedToolNames: allowed,\n maxIterations: opts.maxIterations ?? DEFAULT_MAX_ITERATIONS,\n model,\n bus: this.deps.bus,\n agentId: this.deps.agentId,\n getConfig: this.deps.getConfig,\n toolExecutorConfig: this.deps.toolExecutorConfig,\n buildChildTools: (childOpts) => {\n const base = this.deps.buildChildTools({ ...childOpts, agentId: this.deps.agentId ?? childOpts.agentId });\n if (!wantStructured || !opts.schema) return base;\n // Replace any existing tool with the same name so the per-run capture wins.\n const filtered = base.filter((t) => t.name !== STRUCTURED_OUTPUT_TOOL_NAME);\n return [\n ...filtered,\n createStructuredOutputTool({ schema: opts.schema, capture }) as unknown as AgentTool<any, any>,\n ];\n },\n progressHooks:\n opts.onProgress && streamMode !== 'off'\n ? {\n mode: streamMode === 'full' ? 'full' : 'steps',\n onProgress: (event) => {\n opts.onProgress?.(mapChildProgressEvent(event));\n },\n }\n : undefined,\n onTranscriptSnapshot: persistTranscriptSnapshot,\n };\n\n if (opts.sessionKey && opts.sessionMetadata && this.deps.sessionStore) {\n await this.preparePersistentSubagentSession(opts.sessionKey, opts.sessionMetadata);\n }\n\n const handle = createDelegateChildHandle(childOptions);\n const onAbort = () => handle.abort();\n opts.signal?.addEventListener('abort', onAbort, { once: true });\n\n try {\n const { summary, messages } = await handle.run();\n await transcriptPersistQueue;\n if (opts.sessionKey && this.deps.sessionStore) {\n await this.deps.sessionStore.saveMessages(opts.sessionKey, messages);\n emitSessionTranscriptUpdate({ sessionKey: opts.sessionKey });\n }\n if (opts.signal?.aborted) return null;\n\n if (wantStructured) {\n if (!capture.called) {\n log.warn({ label: opts.label }, 'subagent finished without calling structured_output');\n return null;\n }\n return capture.value as T;\n }\n return summary as unknown as T;\n } catch (e) {\n if (opts.rethrow) throw e;\n const msg = e instanceof Error ? e.message : String(e);\n log.warn({ err: e, label: opts.label, errorMessage: msg }, `subagent run failed: ${msg}`);\n return null;\n } finally {\n opts.signal?.removeEventListener('abort', onAbort);\n }\n }\n\n private async preparePersistentSubagentSession(\n sessionKey: string,\n metadata: NonNullable<SubagentRunOptions['sessionMetadata']>,\n ): Promise<void> {\n const store = this.deps.sessionStore;\n if (!store) return;\n await store.resolveTranscriptPath(sessionKey, {\n metadata: {\n sessionType: 'workflow-subagent',\n hiddenFromSessionList: true,\n parentSessionKey: metadata.parentSessionKey,\n workflowRunId: metadata.workflowRunId,\n workflowDefinitionId: metadata.workflowDefinitionId,\n workflowAgentId: metadata.workflowAgentId,\n workflowAgentLabel: metadata.workflowAgentLabel,\n sourceChannel: 'workflow',\n sourceChatId: metadata.workflowRunId,\n routing: {\n agentId: metadata.workflowAgentId || 'main',\n source: 'workflow',\n accountId: 'default',\n peerKind: 'subagent',\n peerId: metadata.workflowRunId,\n },\n },\n });\n await store.updateMetadata(sessionKey, {\n sessionType: 'workflow-subagent',\n hiddenFromSessionList: true,\n parentSessionKey: metadata.parentSessionKey,\n workflowRunId: metadata.workflowRunId,\n workflowDefinitionId: metadata.workflowDefinitionId,\n workflowAgentId: metadata.workflowAgentId,\n workflowAgentLabel: metadata.workflowAgentLabel,\n name: metadata.workflowAgentLabel,\n tags: ['workflow-subagent', metadata.workflowDefinitionId],\n });\n }\n}\n\nfunction cloneAgentMessages(messages: Parameters<SessionStore['saveMessages']>[1]): Parameters<SessionStore['saveMessages']>[1] {\n return messages.map((message) => structuredClone(message));\n}\n\nfunction resolveAllowedToolNames(\n requested: string[] | undefined,\n wantStructured: boolean,\n): string[] {\n const base = requested && requested.length > 0 ? requested : [...DEFAULT_DELEGATE_TOOLS];\n const filtered = base\n .map((s) => String(s).trim())\n .filter((s) => s.length > 0)\n .filter((s) => !DELEGATE_BLOCKED_TOOLS.has(s));\n if (wantStructured && !filtered.includes(STRUCTURED_OUTPUT_TOOL_NAME)) {\n filtered.push(STRUCTURED_OUTPUT_TOOL_NAME);\n }\n return [...new Set(filtered)];\n}\n\nfunction buildPrompt(prompt: string, opts: SubagentRunOptions<unknown>, structured: boolean): string {\n const parts: string[] = [];\n if (opts.instructions?.trim()) parts.push(opts.instructions.trim());\n if (opts.label) parts.push(`Task label: ${opts.label}`);\n if (opts.phase) parts.push(`Workflow phase: ${opts.phase}`);\n parts.push(prompt);\n if (structured) {\n parts.push(\n [\n 'Final output contract:',\n '- Your final action MUST be a structured_output tool call.',\n '- The structured_output arguments are the return value of this subagent.',\n '- Do not emit a prose final answer instead of structured_output.',\n '- If you need to inspect files or run commands first, do so, then call structured_output exactly once.',\n ].join('\\n'),\n );\n }\n return parts.join('\\n\\n');\n}\n\nfunction safeResolveDefaultModel(get: () => Model<Api>): Model<Api> | null {\n try {\n return get();\n } catch (e) {\n log.warn({ err: e }, 'failed to resolve default subagent model');\n return null;\n }\n}\n\nfunction resolveSubagentStreamMode(\n _getConfig: () => Config | undefined,\n): 'off' | 'steps' | 'full' {\n return 'steps';\n}\n\nfunction mapChildProgressEvent(event: {\n type: 'tool_start' | 'tool_end' | 'iteration' | 'text_delta' | 'thinking_delta';\n toolCallId?: string;\n toolName?: string;\n args?: Record<string, unknown>;\n isError?: boolean;\n resultPreview?: string;\n error?: string;\n count?: number;\n max?: number;\n delta?: string;\n}): SubagentProgressEvent {\n switch (event.type) {\n case 'tool_start':\n return {\n type: 'tool_start',\n toolCallId: event.toolCallId ?? '',\n toolName: event.toolName ?? 'tool',\n args: event.args ?? {},\n };\n case 'tool_end':\n return {\n type: 'tool_end',\n toolCallId: event.toolCallId ?? '',\n toolName: event.toolName ?? 'tool',\n isError: Boolean(event.isError),\n resultPreview: event.resultPreview,\n error: event.error,\n };\n case 'iteration':\n return {\n type: 'iteration',\n count: event.count ?? 0,\n max: event.max ?? 0,\n };\n case 'text_delta':\n return { type: 'text_delta', delta: event.delta ?? '' };\n case 'thinking_delta':\n return { type: 'thinking_delta', delta: event.delta ?? '' };\n default:\n return { type: 'text_delta', delta: '' };\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
+
import { resolveDreamingRootForAgent } from "../memory/dreaming/scope.js";
|
|
1
2
|
import { AgentToolsFactory } from "../tools/factory.js";
|
|
2
3
|
//#region src/agent/workflow/workflow-child-tools.ts
|
|
3
4
|
/** Builds the tool set for workflow child agents (wired from gateway to avoid cycles). */
|
|
4
5
|
function buildWorkflowChildTools(childOptions) {
|
|
6
|
+
const config = childOptions.getConfig();
|
|
7
|
+
const dreamingRoot = config && childOptions.agentId ? resolveDreamingRootForAgent(config, childOptions.agentId) : void 0;
|
|
5
8
|
return new AgentToolsFactory({
|
|
6
9
|
workspace: childOptions.workspace,
|
|
7
10
|
bus: childOptions.bus,
|
|
@@ -12,6 +15,8 @@ function buildWorkflowChildTools(childOptions) {
|
|
|
12
15
|
}).createAllTools({
|
|
13
16
|
workspace: childOptions.workspace,
|
|
14
17
|
getPrimaryModel: () => childOptions.model,
|
|
18
|
+
agentId: childOptions.agentId,
|
|
19
|
+
dreamingRoot,
|
|
15
20
|
disabledTools: new Set(["extensions"])
|
|
16
21
|
});
|
|
17
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-child-tools.js","names":[],"sources":["../../../../src/agent/workflow/workflow-child-tools.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\n\nimport type { BuildChildToolsOptions } from '../child-agent-factory.js';\nimport { AgentToolsFactory } from '../tools/factory.js';\n\n/** Builds the tool set for workflow child agents (wired from gateway to avoid cycles). */\nexport function buildWorkflowChildTools(childOptions: BuildChildToolsOptions): AgentTool<any, any>[] {\n const childFactory = new AgentToolsFactory({\n workspace: childOptions.workspace,\n bus: childOptions.bus,\n getCurrentContext: () => null,\n getConfig: childOptions.getConfig,\n getPrimaryModel: () => childOptions.model,\n toolExecutorConfig: childOptions.toolExecutorConfig,\n });\n return childFactory.createAllTools({\n workspace: childOptions.workspace,\n getPrimaryModel: () => childOptions.model,\n disabledTools: new Set(['extensions']),\n });\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"workflow-child-tools.js","names":[],"sources":["../../../../src/agent/workflow/workflow-child-tools.ts"],"sourcesContent":["import type { AgentTool } from '@earendil-works/pi-agent-core';\n\nimport type { BuildChildToolsOptions } from '../child-agent-factory.js';\nimport { resolveDreamingRootForAgent } from '../memory/dreaming/scope.js';\nimport { AgentToolsFactory } from '../tools/factory.js';\n\n/** Builds the tool set for workflow child agents (wired from gateway to avoid cycles). */\nexport function buildWorkflowChildTools(childOptions: BuildChildToolsOptions): AgentTool<any, any>[] {\n const config = childOptions.getConfig();\n const dreamingRoot = config && childOptions.agentId\n ? resolveDreamingRootForAgent(config, childOptions.agentId)\n : undefined;\n const childFactory = new AgentToolsFactory({\n workspace: childOptions.workspace,\n bus: childOptions.bus,\n getCurrentContext: () => null,\n getConfig: childOptions.getConfig,\n getPrimaryModel: () => childOptions.model,\n toolExecutorConfig: childOptions.toolExecutorConfig,\n });\n return childFactory.createAllTools({\n workspace: childOptions.workspace,\n getPrimaryModel: () => childOptions.model,\n agentId: childOptions.agentId,\n dreamingRoot,\n disabledTools: new Set(['extensions']),\n });\n}\n"],"mappings":";;;;AAOA,SAAgB,wBAAwB,cAA6D;CACnG,MAAM,SAAS,aAAa,WAAW;CACvC,MAAM,eAAe,UAAU,aAAa,UACxC,4BAA4B,QAAQ,aAAa,QAAQ,GACzD,KAAA;AASJ,QAAO,IARkB,kBAAkB;EACzC,WAAW,aAAa;EACxB,KAAK,aAAa;EAClB,yBAAyB;EACzB,WAAW,aAAa;EACxB,uBAAuB,aAAa;EACpC,oBAAoB,aAAa;EAClC,CACkB,CAAC,eAAe;EACjC,WAAW,aAAa;EACxB,uBAAuB,aAAa;EACpC,SAAS,aAAa;EACtB;EACA,eAAe,IAAI,IAAI,CAAC,aAAa,CAAC;EACvC,CAAC"}
|
|
@@ -34,8 +34,8 @@ export declare const ModelPolicySchema: z.ZodObject<{
|
|
|
34
34
|
allowFallbacks: z.ZodOptional<z.ZodBoolean>;
|
|
35
35
|
maxCostTier: z.ZodOptional<z.ZodEnum<{
|
|
36
36
|
low: "low";
|
|
37
|
-
medium: "medium";
|
|
38
37
|
high: "high";
|
|
38
|
+
medium: "medium";
|
|
39
39
|
}>>;
|
|
40
40
|
}, z.core.$strict>>;
|
|
41
41
|
}, z.core.$strict>;
|
|
@@ -62,8 +62,8 @@ export declare const ModelPolicyPatchSchema: z.ZodObject<{
|
|
|
62
62
|
allowFallbacks: z.ZodOptional<z.ZodBoolean>;
|
|
63
63
|
maxCostTier: z.ZodOptional<z.ZodEnum<{
|
|
64
64
|
low: "low";
|
|
65
|
-
medium: "medium";
|
|
66
65
|
high: "high";
|
|
66
|
+
medium: "medium";
|
|
67
67
|
}>>;
|
|
68
68
|
}, z.core.$strict>>;
|
|
69
69
|
}, z.core.$strict>;
|
|
@@ -73,8 +73,8 @@ export declare const ToolModeSchema: z.ZodEnum<{
|
|
|
73
73
|
deny: "deny";
|
|
74
74
|
}>;
|
|
75
75
|
export declare const ToolScopeSchema: z.ZodEnum<{
|
|
76
|
-
readonly: "readonly";
|
|
77
76
|
workspace: "workspace";
|
|
77
|
+
readonly: "readonly";
|
|
78
78
|
unrestricted: "unrestricted";
|
|
79
79
|
}>;
|
|
80
80
|
export declare const ToolPolicySchema: z.ZodObject<{
|
|
@@ -84,8 +84,8 @@ export declare const ToolPolicySchema: z.ZodObject<{
|
|
|
84
84
|
deny: "deny";
|
|
85
85
|
}>;
|
|
86
86
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
87
|
-
readonly: "readonly";
|
|
88
87
|
workspace: "workspace";
|
|
88
|
+
readonly: "readonly";
|
|
89
89
|
unrestricted: "unrestricted";
|
|
90
90
|
}>>;
|
|
91
91
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -101,8 +101,8 @@ export declare const ToolPolicySetSchema: z.ZodDefault<z.ZodObject<{
|
|
|
101
101
|
deny: "deny";
|
|
102
102
|
}>;
|
|
103
103
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
104
|
-
readonly: "readonly";
|
|
105
104
|
workspace: "workspace";
|
|
105
|
+
readonly: "readonly";
|
|
106
106
|
unrestricted: "unrestricted";
|
|
107
107
|
}>>;
|
|
108
108
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -118,8 +118,8 @@ export declare const ToolPolicySetSchema: z.ZodDefault<z.ZodObject<{
|
|
|
118
118
|
deny: "deny";
|
|
119
119
|
}>;
|
|
120
120
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
121
|
-
readonly: "readonly";
|
|
122
121
|
workspace: "workspace";
|
|
122
|
+
readonly: "readonly";
|
|
123
123
|
unrestricted: "unrestricted";
|
|
124
124
|
}>>;
|
|
125
125
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -134,8 +134,8 @@ export declare const ToolPolicySetSchema: z.ZodDefault<z.ZodObject<{
|
|
|
134
134
|
deny: "deny";
|
|
135
135
|
}>;
|
|
136
136
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
137
|
-
readonly: "readonly";
|
|
138
137
|
workspace: "workspace";
|
|
138
|
+
readonly: "readonly";
|
|
139
139
|
unrestricted: "unrestricted";
|
|
140
140
|
}>>;
|
|
141
141
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -217,13 +217,13 @@ export declare const DreamingPolicySchema: z.ZodOptional<z.ZodObject<{
|
|
|
217
217
|
export declare const MemoryPolicySchema: z.ZodDefault<z.ZodObject<{
|
|
218
218
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
219
219
|
off: "off";
|
|
220
|
+
auto: "auto";
|
|
220
221
|
readOnly: "readOnly";
|
|
221
222
|
confirmWrite: "confirmWrite";
|
|
222
|
-
auto: "auto";
|
|
223
223
|
}>>;
|
|
224
224
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
225
|
-
workspace: "workspace";
|
|
226
225
|
session: "session";
|
|
226
|
+
workspace: "workspace";
|
|
227
227
|
userProfile: "userProfile";
|
|
228
228
|
agentProfile: "agentProfile";
|
|
229
229
|
curated: "curated";
|
|
@@ -405,8 +405,8 @@ export declare const AgentManifestSchema: z.ZodObject<{
|
|
|
405
405
|
allowFallbacks: z.ZodOptional<z.ZodBoolean>;
|
|
406
406
|
maxCostTier: z.ZodOptional<z.ZodEnum<{
|
|
407
407
|
low: "low";
|
|
408
|
-
medium: "medium";
|
|
409
408
|
high: "high";
|
|
409
|
+
medium: "medium";
|
|
410
410
|
}>>;
|
|
411
411
|
}, z.core.$strict>>;
|
|
412
412
|
}, z.core.$strict>;
|
|
@@ -418,8 +418,8 @@ export declare const AgentManifestSchema: z.ZodObject<{
|
|
|
418
418
|
deny: "deny";
|
|
419
419
|
}>;
|
|
420
420
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
421
|
-
readonly: "readonly";
|
|
422
421
|
workspace: "workspace";
|
|
422
|
+
readonly: "readonly";
|
|
423
423
|
unrestricted: "unrestricted";
|
|
424
424
|
}>>;
|
|
425
425
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -435,8 +435,8 @@ export declare const AgentManifestSchema: z.ZodObject<{
|
|
|
435
435
|
deny: "deny";
|
|
436
436
|
}>;
|
|
437
437
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
438
|
-
readonly: "readonly";
|
|
439
438
|
workspace: "workspace";
|
|
439
|
+
readonly: "readonly";
|
|
440
440
|
unrestricted: "unrestricted";
|
|
441
441
|
}>>;
|
|
442
442
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -451,8 +451,8 @@ export declare const AgentManifestSchema: z.ZodObject<{
|
|
|
451
451
|
deny: "deny";
|
|
452
452
|
}>;
|
|
453
453
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
454
|
-
readonly: "readonly";
|
|
455
454
|
workspace: "workspace";
|
|
455
|
+
readonly: "readonly";
|
|
456
456
|
unrestricted: "unrestricted";
|
|
457
457
|
}>>;
|
|
458
458
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -475,13 +475,13 @@ export declare const AgentManifestSchema: z.ZodObject<{
|
|
|
475
475
|
memory: z.ZodDefault<z.ZodObject<{
|
|
476
476
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
477
477
|
off: "off";
|
|
478
|
+
auto: "auto";
|
|
478
479
|
readOnly: "readOnly";
|
|
479
480
|
confirmWrite: "confirmWrite";
|
|
480
|
-
auto: "auto";
|
|
481
481
|
}>>;
|
|
482
482
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
483
|
-
workspace: "workspace";
|
|
484
483
|
session: "session";
|
|
484
|
+
workspace: "workspace";
|
|
485
485
|
userProfile: "userProfile";
|
|
486
486
|
agentProfile: "agentProfile";
|
|
487
487
|
curated: "curated";
|
|
@@ -633,8 +633,8 @@ export declare const AgentConfigEntrySchema: z.ZodObject<{
|
|
|
633
633
|
deny: "deny";
|
|
634
634
|
}>;
|
|
635
635
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
636
|
-
readonly: "readonly";
|
|
637
636
|
workspace: "workspace";
|
|
637
|
+
readonly: "readonly";
|
|
638
638
|
unrestricted: "unrestricted";
|
|
639
639
|
}>>;
|
|
640
640
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -650,8 +650,8 @@ export declare const AgentConfigEntrySchema: z.ZodObject<{
|
|
|
650
650
|
deny: "deny";
|
|
651
651
|
}>;
|
|
652
652
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
653
|
-
readonly: "readonly";
|
|
654
653
|
workspace: "workspace";
|
|
654
|
+
readonly: "readonly";
|
|
655
655
|
unrestricted: "unrestricted";
|
|
656
656
|
}>>;
|
|
657
657
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -666,8 +666,8 @@ export declare const AgentConfigEntrySchema: z.ZodObject<{
|
|
|
666
666
|
deny: "deny";
|
|
667
667
|
}>;
|
|
668
668
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
669
|
-
readonly: "readonly";
|
|
670
669
|
workspace: "workspace";
|
|
670
|
+
readonly: "readonly";
|
|
671
671
|
unrestricted: "unrestricted";
|
|
672
672
|
}>>;
|
|
673
673
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -690,13 +690,13 @@ export declare const AgentConfigEntrySchema: z.ZodObject<{
|
|
|
690
690
|
memory: z.ZodDefault<z.ZodObject<{
|
|
691
691
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
692
692
|
off: "off";
|
|
693
|
+
auto: "auto";
|
|
693
694
|
readOnly: "readOnly";
|
|
694
695
|
confirmWrite: "confirmWrite";
|
|
695
|
-
auto: "auto";
|
|
696
696
|
}>>;
|
|
697
697
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
698
|
-
workspace: "workspace";
|
|
699
698
|
session: "session";
|
|
699
|
+
workspace: "workspace";
|
|
700
700
|
userProfile: "userProfile";
|
|
701
701
|
agentProfile: "agentProfile";
|
|
702
702
|
curated: "curated";
|
|
@@ -842,8 +842,8 @@ export declare const AgentConfigEntrySchema: z.ZodObject<{
|
|
|
842
842
|
allowFallbacks: z.ZodOptional<z.ZodBoolean>;
|
|
843
843
|
maxCostTier: z.ZodOptional<z.ZodEnum<{
|
|
844
844
|
low: "low";
|
|
845
|
-
medium: "medium";
|
|
846
845
|
high: "high";
|
|
846
|
+
medium: "medium";
|
|
847
847
|
}>>;
|
|
848
848
|
}, z.core.$strict>>;
|
|
849
849
|
}, z.core.$strict>>;
|
|
@@ -877,8 +877,8 @@ export declare const CapabilityPresetSchema: z.ZodObject<{
|
|
|
877
877
|
allowFallbacks: z.ZodOptional<z.ZodBoolean>;
|
|
878
878
|
maxCostTier: z.ZodOptional<z.ZodEnum<{
|
|
879
879
|
low: "low";
|
|
880
|
-
medium: "medium";
|
|
881
880
|
high: "high";
|
|
881
|
+
medium: "medium";
|
|
882
882
|
}>>;
|
|
883
883
|
}, z.core.$strict>>;
|
|
884
884
|
}, z.core.$strict>>;
|
|
@@ -890,8 +890,8 @@ export declare const CapabilityPresetSchema: z.ZodObject<{
|
|
|
890
890
|
deny: "deny";
|
|
891
891
|
}>;
|
|
892
892
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
893
|
-
readonly: "readonly";
|
|
894
893
|
workspace: "workspace";
|
|
894
|
+
readonly: "readonly";
|
|
895
895
|
unrestricted: "unrestricted";
|
|
896
896
|
}>>;
|
|
897
897
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -907,8 +907,8 @@ export declare const CapabilityPresetSchema: z.ZodObject<{
|
|
|
907
907
|
deny: "deny";
|
|
908
908
|
}>;
|
|
909
909
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
910
|
-
readonly: "readonly";
|
|
911
910
|
workspace: "workspace";
|
|
911
|
+
readonly: "readonly";
|
|
912
912
|
unrestricted: "unrestricted";
|
|
913
913
|
}>>;
|
|
914
914
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -923,8 +923,8 @@ export declare const CapabilityPresetSchema: z.ZodObject<{
|
|
|
923
923
|
deny: "deny";
|
|
924
924
|
}>;
|
|
925
925
|
scope: z.ZodOptional<z.ZodEnum<{
|
|
926
|
-
readonly: "readonly";
|
|
927
926
|
workspace: "workspace";
|
|
927
|
+
readonly: "readonly";
|
|
928
928
|
unrestricted: "unrestricted";
|
|
929
929
|
}>>;
|
|
930
930
|
limits: z.ZodOptional<z.ZodObject<{
|
|
@@ -947,13 +947,13 @@ export declare const CapabilityPresetSchema: z.ZodObject<{
|
|
|
947
947
|
memory: z.ZodOptional<z.ZodDefault<z.ZodObject<{
|
|
948
948
|
mode: z.ZodDefault<z.ZodEnum<{
|
|
949
949
|
off: "off";
|
|
950
|
+
auto: "auto";
|
|
950
951
|
readOnly: "readOnly";
|
|
951
952
|
confirmWrite: "confirmWrite";
|
|
952
|
-
auto: "auto";
|
|
953
953
|
}>>;
|
|
954
954
|
sources: z.ZodDefault<z.ZodArray<z.ZodEnum<{
|
|
955
|
-
workspace: "workspace";
|
|
956
955
|
session: "session";
|
|
956
|
+
workspace: "workspace";
|
|
957
957
|
userProfile: "userProfile";
|
|
958
958
|
agentProfile: "agentProfile";
|
|
959
959
|
curated: "curated";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
|
|
2
1
|
import { createLogger } from "../../utils/logger/index.js";
|
|
3
2
|
import { init_logger } from "../../utils/logger.js";
|
|
3
|
+
import { init_agent_scope, resolveDefaultAgentId } from "../../agent/agent-scope.js";
|
|
4
4
|
import { AutomationAlreadyRunningError } from "../service/automation-service.js";
|
|
5
5
|
import { logRouteError } from "../../gateway/hono/lib/route-logger.js";
|
|
6
6
|
import { simulateAutomation } from "../draft/automation-draft-validator.js";
|