@xopcai/xopc 0.0.329 → 0.0.330
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/dist/browser-ext/manifest.json +1 -1
- package/dist/extensions/telegram/xopc.extension.json +1 -1
- package/dist/gateway/static/root/assets/{agent-avatar-dicebear-Bs1qnnhD.js → agent-avatar-dicebear-BDG0hI-J.js} +1 -1
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-ArM6Sm9S.js +1 -0
- package/dist/gateway/static/root/assets/agent-plugin-dialog-BX_Bhre1.js +1 -0
- package/dist/gateway/static/root/assets/agents-BiQqpMw0.js +70 -0
- package/dist/gateway/static/root/assets/{app-management-settings-panel-BrIji9B5.js → app-management-settings-panel-DgttzUCG.js} +1 -1
- package/dist/gateway/static/root/assets/{appearance-settings-Uts-MQ7K.js → appearance-settings-CHpyWV8Z.js} +1 -1
- package/dist/gateway/static/root/assets/apps-page-BhfYQcm8.js +1 -0
- package/dist/gateway/static/root/assets/{archive-plugin-_EzRfBuI.js → archive-plugin-B7Q7Oeo7.js} +1 -1
- package/dist/gateway/static/root/assets/{attachment-load-CHg7_XFl.js → attachment-load-BYwqQ8qN.js} +1 -1
- package/dist/gateway/static/root/assets/{automations-page-CGMErk_w.js → automations-page-CsvAtTNd.js} +1 -1
- package/dist/gateway/static/root/assets/automations-workspace-DMH_1Ped.js +7 -0
- package/dist/gateway/static/root/assets/{binary-plugins-D3WB-tVn.js → binary-plugins-DdgWCI-M.js} +1 -1
- package/dist/gateway/static/root/assets/{block-editor-Cm1W-14I.js → block-editor-DyOagNnn.js} +53 -53
- package/dist/gateway/static/root/assets/{browser-automation-inputs-VnvK-GQP.js → browser-automation-inputs-CwF8OQFN.js} +1 -1
- package/dist/gateway/static/root/assets/browser-automations-page-D_EQjiiu.js +3 -0
- package/dist/gateway/static/root/assets/browser-settings-page-BE6691Jz.js +3 -0
- package/dist/gateway/static/root/assets/capabilities-page-MweWNrC1.js +2 -0
- package/dist/gateway/static/root/assets/capabilities-settings-panel-CdSWkh89.js +8 -0
- package/dist/gateway/static/root/assets/{capability-header-actions-C3chJDQu.js → capability-header-actions-C5F2GNE9.js} +1 -1
- package/dist/gateway/static/root/assets/channels-NGfwR3He.js +1 -0
- package/dist/gateway/static/root/assets/{chat-terminal-dock-ClbmjCL2.js → chat-terminal-dock-C6tl9Rfw.js} +2 -2
- package/dist/gateway/static/root/assets/{computer-settings-page-BfZaf516.js → computer-settings-page-C0MsVw4l.js} +1 -1
- package/dist/gateway/static/root/assets/{connector-service-page-F-fYNIx8.js → connector-service-page-DsF60pPs.js} +1 -1
- package/dist/gateway/static/root/assets/connectors-page-BE8NdQcR.js +2 -0
- package/dist/gateway/static/root/assets/date-picker-CELKKqYN.js +1 -0
- package/dist/gateway/static/root/assets/{dependency-picker-B_z3zihW.js → dependency-picker-BcEwCnI5.js} +1 -1
- package/dist/gateway/static/root/assets/{desktop-pet-C1TZzKS3.js → desktop-pet-Ww7Gm8-x.js} +1 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-D-dbAxGu.js +1 -0
- package/dist/gateway/static/root/assets/device-pairing-wizard-DsYY6szg.js +1 -0
- package/dist/gateway/static/root/assets/{directory-picker-path-field-BfxaNwMB.js → directory-picker-path-field-CVmuCRyO.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-debug-page-Bs8_FYCm.js → extension-debug-page-UUHNJj-d.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-page-DH5vFbBw.js → extension-page-BvL452mX.js} +1 -1
- package/dist/gateway/static/root/assets/{extension-settings-page-hGKovxxC.js → extension-settings-page-CrNnUSOs.js} +1 -1
- package/dist/gateway/static/root/assets/{gateway-config-swr-BYMrbKZE.js → gateway-config-swr-DMm1vU51.js} +1 -1
- package/dist/gateway/static/root/assets/gateway-settings-DrHhtZqv.js +1 -0
- package/dist/gateway/static/root/assets/{gateway-startup-retry-DMqYXHAn.js → gateway-startup-retry-Ck6tj6yE.js} +1 -1
- package/dist/gateway/static/root/assets/home-page-YgI6jfGA.js +1 -0
- package/dist/gateway/static/root/assets/{image-generation-api-D1sQGaJz.js → image-generation-api-BOh6j0BF.js} +1 -1
- package/dist/gateway/static/root/assets/imports-page-BuqdzA7h.js +1 -0
- package/dist/gateway/static/root/assets/index-DJmO2VAY.css +1 -0
- package/dist/gateway/static/root/assets/index-vCIBfJp7.js +121 -0
- package/dist/gateway/static/root/assets/{keyboard-shortcuts-settings-CMitbles.js → keyboard-shortcuts-settings-D9L7IdUg.js} +1 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-DO8uUtos.js +1 -0
- package/dist/gateway/static/root/assets/local-apps-page-BEvyufm7.js +1 -0
- package/dist/gateway/static/root/assets/locale-store-DAOwT3Zp.js +1 -0
- package/dist/gateway/static/root/assets/logs-page-Jev1m9sS.js +2 -0
- package/dist/gateway/static/root/assets/management-settings-41i7B1RO.js +1 -0
- package/dist/gateway/static/root/assets/{markdown-view-DXubGEic.js → markdown-view-nL4xzvI8.js} +1 -1
- package/dist/gateway/static/root/assets/{media-plugins-DLJrmU9J.js → media-plugins-dHbcqMan.js} +1 -1
- package/dist/gateway/static/root/assets/{messages-D0G_sZvA.js → messages-BZbt9x1y.js} +3 -3
- package/dist/gateway/static/root/assets/note-detail-panel-DonP0E6Q.js +5 -0
- package/dist/gateway/static/root/assets/notes-page-CYHMeVKo.js +8 -0
- package/dist/gateway/static/root/assets/{page-context-capture-button-C3JiQEKD.js → page-context-capture-button-BKsMcPOy.js} +1 -1
- package/dist/gateway/static/root/assets/{preview-open-alternatives-buk_gdip.js → preview-open-alternatives-Du18QgWc.js} +1 -1
- package/dist/gateway/static/root/assets/{product-open-page-DwEEO0Ak.js → product-open-page-IY1QL6s0.js} +1 -1
- package/dist/gateway/static/root/assets/project-detail-page-Bpw9mxfV.js +1 -0
- package/dist/gateway/static/root/assets/projects-page-BdYbDNUn.js +1 -0
- package/dist/gateway/static/root/assets/{registry-api-tx8XCHOs.js → registry-api-DCFXWBOt.js} +1 -1
- package/dist/gateway/static/root/assets/remote-access-hub-CLhbz3TF.js +1 -0
- package/dist/gateway/static/root/assets/{runtime-tools-settings-panel-De7HmmBu.js → runtime-tools-settings-panel-CuTFmXyj.js} +2 -2
- package/dist/gateway/static/root/assets/scenes-page-XwK2IEmr.js +2 -0
- package/dist/gateway/static/root/assets/{schema-form-DPMEuj5D.js → schema-form-qWQii8IU.js} +1 -1
- package/dist/gateway/static/root/assets/sessions-page-4-QoiDES.js +1 -0
- package/dist/gateway/static/root/assets/settings-advanced-gate-BggQVM1y.js +1 -0
- package/dist/gateway/static/root/assets/{settings-form-section-DM0D-BQ_.js → settings-form-section-B0ZBr0L9.js} +1 -1
- package/dist/gateway/static/root/assets/{settings-page-CWS9yOH3.js → settings-page-DpII4NO3.js} +1 -1
- package/dist/gateway/static/root/assets/setup-status-panel-HPpC7EE0.js +1 -0
- package/dist/gateway/static/root/assets/{share-preview-page-CcRi2yGy.js → share-preview-page-B2CGYZHc.js} +1 -1
- package/dist/gateway/static/root/assets/shares-settings-DhVCRYGP.js +1 -0
- package/dist/gateway/static/root/assets/skill-api-_ddww47C.js +1 -0
- package/dist/gateway/static/root/assets/skill-reload-api-XPZkWJJe.js +1 -0
- package/dist/gateway/static/root/assets/skills-page-uF7DkJMC.js +2 -0
- package/dist/gateway/static/root/assets/system-settings-panel-25ABVt7H.js +1 -0
- package/dist/gateway/static/root/assets/task-detail-page-gepxhO4j.js +1 -0
- package/dist/gateway/static/root/assets/tunnel-api-CwQGBI_4.js +1 -0
- package/dist/gateway/static/root/assets/{use-autosave-ZTHe1zCM.js → use-autosave-CL3wytbs.js} +1 -1
- package/dist/gateway/static/root/assets/user-model-page-DldQW9Wh.js +2 -0
- package/dist/gateway/static/root/assets/{voice-api-key-field-C8Kpkct-.js → voice-api-key-field-zjAzQrx4.js} +1 -1
- package/dist/gateway/static/root/assets/{voice-config-api-BvzxINUk.js → voice-config-api-DvzQ-128.js} +1 -1
- package/dist/gateway/static/root/assets/{work-discovery-overlay-ClB6T-dm.js → work-discovery-overlay-MaPPjWwl.js} +1 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-C3dQN1fE.js +3 -0
- package/dist/gateway/static/root/assets/workflows-page-B9lnTU3U.js +6 -0
- package/dist/gateway/static/root/index.html +8 -14
- package/dist/package.js +1 -1
- package/dist/src/agent/agent-manager.d.ts +1 -0
- package/dist/src/agent/agent-manager.js +19 -4
- package/dist/src/agent/background-review/run-background-review.js +1 -1
- package/dist/src/agent/bootstrap/filter-bootstrap-files.js +1 -1
- package/dist/src/agent/capabilities/definitions.d.ts +3 -2
- package/dist/src/agent/capabilities/definitions.js +3 -2
- package/dist/src/agent/external-tools/endpoint-provider.js +2 -2
- package/dist/src/agent/image/tool-model-config.js +1 -1
- package/dist/src/agent/orchestration/llm-turn-retry.js +2 -15
- package/dist/src/agent/service.d.ts +1 -0
- package/dist/src/agent/service.js +5 -2
- package/dist/src/agent/tasks/task-judge-service.js +1 -1
- package/dist/src/agent/tools/factory.js +3 -2
- package/dist/src/agent/tools/index.d.ts +1 -0
- package/dist/src/agent/tools/index.js +2 -1
- package/dist/src/agent/tools/workflow-manage-tool.d.ts +2 -0
- package/dist/src/agent/tools/workflow-manage-tool.js +225 -0
- package/dist/src/agent/tools/xopc-use-tool.js +1 -1
- package/dist/src/agent-catalog/capabilities.js +2 -2
- package/dist/src/auth/credentials.js +1 -1
- package/dist/src/auth/oauth-provider-lock.js +1 -1
- package/dist/src/auth/sync-provider-auth.js +1 -1
- package/dist/src/automations/capabilities/drafts.js +1 -1
- package/dist/src/automations/draft/automation-draft-service.js +13 -4
- package/dist/src/bootstrap/application-state.js +1 -1
- package/dist/src/capabilities/runtime/dispatcher.js +1 -1
- package/dist/src/capabilities/runtime/product.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-previews/service.js +1 -2
- package/dist/src/cli/commands/agent.js +1 -1
- package/dist/src/cli/commands/agents.js +1 -1
- package/dist/src/cli/commands/models.js +1 -1
- package/dist/src/cli/commands/onboard/model.js +2 -2
- package/dist/src/cli/utils/init-workspace-core.js +1 -1
- package/dist/src/config/index.js +4 -4
- package/dist/src/config/loader.js +2 -2
- package/dist/src/config/models-json.js +1 -1
- package/dist/src/config/schema.js +1 -1
- package/dist/src/extensions/agent-plugins/validation.js +1 -1
- package/dist/src/extensions/bundled-extension-activation.d.ts +3 -1
- package/dist/src/extensions/bundled-extension-activation.js +5 -8
- package/dist/src/gateway/agents-admin.js +2 -2
- package/dist/src/gateway/file-path-classifier.js +1 -1
- package/dist/src/gateway/gateway-workflow-host.types.d.ts +1 -0
- package/dist/src/gateway/hono/lib/config-payload.js +1 -1
- package/dist/src/gateway/hono/routes/auth-registry-extensions.js +27 -5
- package/dist/src/gateway/hono/routes/config-patch/misc.js +2 -2
- package/dist/src/gateway/hono/routes/notes.js +2 -2
- package/dist/src/gateway/hono/routes/projects.js +2 -2
- package/dist/src/gateway/hono/routes/session-input-handler.js +1 -1
- package/dist/src/gateway/hono/routes/tasks.js +1 -1
- package/dist/src/gateway/hono/routes/workflows.js +1 -23
- package/dist/src/gateway/image-generation-setup.js +2 -2
- package/dist/src/gateway/lock.js +1 -1
- package/dist/src/gateway/service/config-coordinator.d.ts +4 -4
- package/dist/src/gateway/service/config-coordinator.js +6 -6
- package/dist/src/gateway/service/marketplace-service.js +8 -6
- package/dist/src/gateway/service.d.ts +1 -1
- package/dist/src/gateway/service.js +14 -14
- package/dist/src/gateway/xopc-cloud-capability-setup.js +1 -1
- package/dist/src/home-intelligence/generator.js +7 -6
- package/dist/src/home-intelligence/host.js +1 -1
- package/dist/src/local-apps/service.js +1 -1
- package/dist/src/providers/model-catalog-persistence.js +1 -1
- package/dist/src/providers/model-response.d.ts +2 -0
- package/dist/src/providers/model-response.js +24 -1
- package/dist/src/tasks/capabilities/read.js +2 -2
- package/dist/src/tui/backends/embedded-backend.js +6 -3
- package/dist/src/tui/tui-commands.js +2 -2
- package/dist/src/tui/tui-startup-resources.js +1 -1
- package/dist/src/tui/tui.js +3 -3
- package/dist/src/voice/platform-streams.js +15 -7
- package/dist/src/voice/realtime/agentEngine.js +19 -3
- package/dist/src/voice/realtime/pcmFrameBuffer.js +2 -1
- package/dist/src/voice/realtime/persona-context.js +1 -1
- package/dist/src/voice/realtime/playback-echo.js +16 -1
- package/dist/src/workflows/authoring/index.d.ts +1 -0
- package/dist/src/workflows/authoring/index.js +2 -1
- package/dist/src/workflows/authoring/workflow-draft-defaults.d.ts +3 -0
- package/dist/src/workflows/authoring/workflow-draft-defaults.js +63 -0
- package/dist/src/workflows/domain/index.js +1 -1
- package/dist/src/workflows/engine/workflow-engine.js +1 -1
- package/dist/src/workflows/index.js +2 -2
- package/dist/src/workflows/service/workflow-run-service.d.ts +1 -1
- package/dist/src/workflows/service/workflow-run-service.js +34 -11
- package/dist/src/workflows/service/workflow-session-bridge.js +2 -2
- package/package.json +4 -4
- package/skills/engineering/workflow-authoring/SKILL.md +32 -0
- package/dist/gateway/static/root/assets/agent-defaults-settings-panel-DHJyAT7t.js +0 -1
- package/dist/gateway/static/root/assets/agent-plugin-dialog-DLKj_iIh.js +0 -1
- package/dist/gateway/static/root/assets/agents-SXZ5O0g4.js +0 -70
- package/dist/gateway/static/root/assets/apps-page-DcclVdxW.js +0 -1
- package/dist/gateway/static/root/assets/automations-workspace-Cc4yqiF6.js +0 -7
- package/dist/gateway/static/root/assets/box-DvYoGszj.js +0 -1
- package/dist/gateway/static/root/assets/braces-Cfmtagno.js +0 -1
- package/dist/gateway/static/root/assets/browser-automations-page-CZYCvSSU.js +0 -3
- package/dist/gateway/static/root/assets/browser-settings-page-DDz9PE6m.js +0 -3
- package/dist/gateway/static/root/assets/calendar-clock-D-quYVPe.js +0 -1
- package/dist/gateway/static/root/assets/capabilities-page-DH3aDk53.js +0 -2
- package/dist/gateway/static/root/assets/capabilities-settings-panel-C8jMZAJl.js +0 -8
- package/dist/gateway/static/root/assets/capability-discover-page-CgGvsf3t.js +0 -1
- package/dist/gateway/static/root/assets/channels-CuVS_KsY.js +0 -1
- package/dist/gateway/static/root/assets/chevron-left-DqFhpbvK.js +0 -1
- package/dist/gateway/static/root/assets/clock-3-DnrAnuyZ.js +0 -1
- package/dist/gateway/static/root/assets/connectors-page-B4SLpvSL.js +0 -2
- package/dist/gateway/static/root/assets/date-picker-DXQTsUJn.js +0 -1
- package/dist/gateway/static/root/assets/desktop-pet-settings-B5JGIfqn.js +0 -1
- package/dist/gateway/static/root/assets/device-pairing-wizard-DFYK_Ywf.js +0 -1
- package/dist/gateway/static/root/assets/extension-marketplace-api-DqV4YRYs.js +0 -1
- package/dist/gateway/static/root/assets/gateway-settings-BIsiP-JI.js +0 -1
- package/dist/gateway/static/root/assets/gauge-C78eD2BA.js +0 -1
- package/dist/gateway/static/root/assets/git-branch-Dh9uxTot.js +0 -1
- package/dist/gateway/static/root/assets/home-page-CoBivEvx.js +0 -1
- package/dist/gateway/static/root/assets/image-Cwyalflz.js +0 -1
- package/dist/gateway/static/root/assets/imports-page-rssb4rjP.js +0 -1
- package/dist/gateway/static/root/assets/inbox-DNoSz682.js +0 -1
- package/dist/gateway/static/root/assets/index-C4QN4gCi.css +0 -1
- package/dist/gateway/static/root/assets/index-Cr4SINLG.js +0 -121
- package/dist/gateway/static/root/assets/is-masked-secret-DOkL5b_X.js +0 -1
- package/dist/gateway/static/root/assets/layout-grid-CEVZdVFU.js +0 -1
- package/dist/gateway/static/root/assets/list-BBGUdmkF.js +0 -1
- package/dist/gateway/static/root/assets/local-app-workbench-page-Di82Oacm.js +0 -1
- package/dist/gateway/static/root/assets/local-apps-page-CCvA9d9L.js +0 -1
- package/dist/gateway/static/root/assets/locale-store-BSkKhYkc.js +0 -1
- package/dist/gateway/static/root/assets/lock-keyhole-DEK5kH0u.js +0 -1
- package/dist/gateway/static/root/assets/logs-page-BK8ol1q0.js +0 -2
- package/dist/gateway/static/root/assets/management-settings-CebXkEtB.js +0 -1
- package/dist/gateway/static/root/assets/message-circle-Badhj-4D.js +0 -1
- package/dist/gateway/static/root/assets/message-square-fVE7Ghj1.js +0 -1
- package/dist/gateway/static/root/assets/models-hub-cache-B0EUPwTv.js +0 -1
- package/dist/gateway/static/root/assets/network-BUQLY1BV.js +0 -1
- package/dist/gateway/static/root/assets/note-detail-panel-xsKDIJdK.js +0 -5
- package/dist/gateway/static/root/assets/notes-page-BFm7XnWH.js +0 -8
- package/dist/gateway/static/root/assets/paperclip-f1HujQY1.js +0 -1
- package/dist/gateway/static/root/assets/power-ZI-pBczI.js +0 -1
- package/dist/gateway/static/root/assets/project-detail-page-CRQGCRSU.js +0 -1
- package/dist/gateway/static/root/assets/projects-page-DcqylysA.js +0 -1
- package/dist/gateway/static/root/assets/remote-access-hub-Cq5MaiRW.js +0 -1
- package/dist/gateway/static/root/assets/scenes-page-GXJ-b3dO.js +0 -2
- package/dist/gateway/static/root/assets/server-BlHCBjiE.js +0 -1
- package/dist/gateway/static/root/assets/sessions-page-C6FwYIRA.js +0 -1
- package/dist/gateway/static/root/assets/settings-advanced-gate-BEyQiZs0.js +0 -1
- package/dist/gateway/static/root/assets/setup-status-panel-BhGKiTPf.js +0 -1
- package/dist/gateway/static/root/assets/shares-settings-DNmcCBfX.js +0 -1
- package/dist/gateway/static/root/assets/skill-api-BCAV_F1P.js +0 -1
- package/dist/gateway/static/root/assets/skill-card-icon-BrrpZ3Mw.js +0 -1
- package/dist/gateway/static/root/assets/skill-reload-api-BEV2WXGk.js +0 -1
- package/dist/gateway/static/root/assets/skills-page-C8zOGpKw.js +0 -2
- package/dist/gateway/static/root/assets/star-BUWJqJ5c.js +0 -1
- package/dist/gateway/static/root/assets/stethoscope-DRqTAtjD.js +0 -1
- package/dist/gateway/static/root/assets/store-SzD1Jvgm.js +0 -1
- package/dist/gateway/static/root/assets/system-settings-panel-C_lajq9u.js +0 -1
- package/dist/gateway/static/root/assets/task-detail-page-Dk8Bmlhw.js +0 -1
- package/dist/gateway/static/root/assets/tunnel-api-CYvKiE_f.js +0 -1
- package/dist/gateway/static/root/assets/upload-rrb46c3c.js +0 -1
- package/dist/gateway/static/root/assets/user-model-page-C_SPNZbP.js +0 -2
- package/dist/gateway/static/root/assets/user-round-C9jxPhMR.js +0 -1
- package/dist/gateway/static/root/assets/wand-sparkles-DWuJz5ya.js +0 -1
- package/dist/gateway/static/root/assets/workflow-run-setup-panel-X0Cyh2AR.js +0 -3
- package/dist/gateway/static/root/assets/workflows-page-BrL6dzf0.js +0 -6
- package/dist/src/workflows/draft/index.d.ts +0 -3
- package/dist/src/workflows/draft/index.js +0 -3
- package/dist/src/workflows/draft/workflow-draft-prompt.d.ts +0 -22
- package/dist/src/workflows/draft/workflow-draft-prompt.js +0 -54
- package/dist/src/workflows/draft/workflow-draft-service.d.ts +0 -12
- package/dist/src/workflows/draft/workflow-draft-service.js +0 -125
- package/dist/src/workflows/draft/workflow-draft-validator.d.ts +0 -4
- package/dist/src/workflows/draft/workflow-draft-validator.js +0 -123
- package/dist/src/workflows/draft/workflow-draft.types.d.ts +0 -44
- package/dist/src/workflows/draft/workflow-draft.types.js +0 -1
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
import { createLogger } from "../../utils/logger/index.js";
|
|
2
|
-
import { init_logger } from "../../utils/logger.js";
|
|
3
|
-
import { getAgentDefaultModelRef, init_schema } from "../../config/schema.js";
|
|
4
|
-
import { getDefaultModelSync, init_providers, resolveModel } from "../../providers/index.js";
|
|
5
|
-
import { completeWithResolvedCredentials } from "../../providers/model-call.js";
|
|
6
|
-
import { resolveModelSelector } from "../../config/agent-model-intents.js";
|
|
7
|
-
import { buildWorkflowDraftPrompt, buildWorkflowDraftRepairPrompt } from "./workflow-draft-prompt.js";
|
|
8
|
-
import { buildWorkflowDraftResponse, parseGeneratedWorkflowDraft } from "./workflow-draft-validator.js";
|
|
9
|
-
//#region src/workflows/draft/workflow-draft-service.ts
|
|
10
|
-
init_schema();
|
|
11
|
-
init_providers();
|
|
12
|
-
init_logger();
|
|
13
|
-
const log = createLogger("WorkflowDraft");
|
|
14
|
-
const DEFAULT_MAX_REPAIR_ATTEMPTS = 2;
|
|
15
|
-
var WorkflowDraftService = class {
|
|
16
|
-
constructor(options) {
|
|
17
|
-
this.options = options;
|
|
18
|
-
}
|
|
19
|
-
async createDraft(request, signal) {
|
|
20
|
-
const prompt = request.prompt.trim();
|
|
21
|
-
if (!prompt) throw new Error("prompt is required");
|
|
22
|
-
const modelRef = resolveDraftModelRef(this.options.config, request.agentId);
|
|
23
|
-
const model = resolveModel(modelRef);
|
|
24
|
-
const maxRepairAttempts = this.options.maxRepairAttempts ?? DEFAULT_MAX_REPAIR_ATTEMPTS;
|
|
25
|
-
let messageContent = buildWorkflowDraftPrompt({
|
|
26
|
-
prompt,
|
|
27
|
-
language: request.language,
|
|
28
|
-
mode: request.mode ?? (request.existingGraph ? "improve" : "create"),
|
|
29
|
-
existingGraph: request.existingGraph,
|
|
30
|
-
constraints: request.constraints
|
|
31
|
-
});
|
|
32
|
-
let lastIssues = [];
|
|
33
|
-
let lastText = "";
|
|
34
|
-
for (let attempt = 0; attempt <= maxRepairAttempts; attempt += 1) {
|
|
35
|
-
lastText = extractText(await completeWithResolvedCredentials(model, { messages: [{
|
|
36
|
-
role: "user",
|
|
37
|
-
content: messageContent,
|
|
38
|
-
timestamp: Date.now()
|
|
39
|
-
}] }, {
|
|
40
|
-
maxTokens: 4096,
|
|
41
|
-
temperature: attempt === 0 ? .25 : .1,
|
|
42
|
-
signal
|
|
43
|
-
}));
|
|
44
|
-
try {
|
|
45
|
-
const response = buildWorkflowDraftResponse(parseGeneratedWorkflowDraft(lastText), request.constraints);
|
|
46
|
-
const blockingIssues = getBlockingDraftIssues(response);
|
|
47
|
-
if (blockingIssues.length === 0) return {
|
|
48
|
-
...response,
|
|
49
|
-
repairAttempts: attempt
|
|
50
|
-
};
|
|
51
|
-
lastIssues = blockingIssues;
|
|
52
|
-
} catch (err) {
|
|
53
|
-
lastIssues = [{
|
|
54
|
-
source: "parse",
|
|
55
|
-
severity: "error",
|
|
56
|
-
code: "invalid_model_output",
|
|
57
|
-
message: err instanceof Error ? err.message : String(err)
|
|
58
|
-
}];
|
|
59
|
-
}
|
|
60
|
-
if (attempt >= maxRepairAttempts) break;
|
|
61
|
-
log.warn({
|
|
62
|
-
modelRef,
|
|
63
|
-
attempt: attempt + 1,
|
|
64
|
-
issueCount: lastIssues.length,
|
|
65
|
-
preview: lastText.slice(0, 500)
|
|
66
|
-
}, "Workflow draft validation failed; asking model to repair");
|
|
67
|
-
messageContent = buildWorkflowDraftRepairPrompt({
|
|
68
|
-
prompt,
|
|
69
|
-
language: request.language,
|
|
70
|
-
constraints: request.constraints,
|
|
71
|
-
previousOutput: lastText,
|
|
72
|
-
issues: lastIssues
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
const message = `Unable to generate a valid workflow draft after ${maxRepairAttempts + 1} attempts: ${formatRepairIssues(lastIssues)}`;
|
|
76
|
-
log.warn({
|
|
77
|
-
modelRef,
|
|
78
|
-
issues: lastIssues,
|
|
79
|
-
preview: lastText.slice(0, 500)
|
|
80
|
-
}, message);
|
|
81
|
-
throw new Error(message);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
function resolveDraftModelRef(config, agentId) {
|
|
85
|
-
try {
|
|
86
|
-
return resolveModelSelector(config, agentId, "reasoning");
|
|
87
|
-
} catch {
|
|
88
|
-
return getAgentDefaultModelRef() ?? getDefaultModelSync(config);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
function extractText(result) {
|
|
92
|
-
const content = result.content;
|
|
93
|
-
if (typeof content === "string") return content;
|
|
94
|
-
if (Array.isArray(content)) return content.map((item) => {
|
|
95
|
-
if (item && typeof item === "object" && item.type === "text") return String(item.text ?? "");
|
|
96
|
-
return "";
|
|
97
|
-
}).join("");
|
|
98
|
-
return "";
|
|
99
|
-
}
|
|
100
|
-
function getBlockingDraftIssues(response) {
|
|
101
|
-
const validationIssues = [...response.validation.errors.map((issue) => ({
|
|
102
|
-
source: "validation",
|
|
103
|
-
severity: "error",
|
|
104
|
-
code: issue.code,
|
|
105
|
-
message: issue.message
|
|
106
|
-
})), ...response.validation.warnings.map((issue) => ({
|
|
107
|
-
source: "validation",
|
|
108
|
-
severity: "warning",
|
|
109
|
-
code: issue.code,
|
|
110
|
-
message: issue.message
|
|
111
|
-
}))];
|
|
112
|
-
const lintIssues = response.lint.filter((issue) => issue.severity === "error").map((issue) => ({
|
|
113
|
-
source: "lint",
|
|
114
|
-
severity: issue.severity,
|
|
115
|
-
code: issue.code,
|
|
116
|
-
message: issue.message
|
|
117
|
-
}));
|
|
118
|
-
return [...validationIssues, ...lintIssues];
|
|
119
|
-
}
|
|
120
|
-
function formatRepairIssues(issues) {
|
|
121
|
-
if (issues.length === 0) return "unknown validation failure";
|
|
122
|
-
return issues.slice(0, 5).map((issue) => `${issue.source}:${issue.code}: ${issue.message}`).join("; ");
|
|
123
|
-
}
|
|
124
|
-
//#endregion
|
|
125
|
-
export { WorkflowDraftService, resolveDraftModelRef };
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { GeneratedWorkflowDraft, WorkflowDraftConstraints, WorkflowDraftLintIssue, WorkflowDraftResponse } from './workflow-draft.types.js';
|
|
2
|
-
export declare function parseGeneratedWorkflowDraft(raw: string): GeneratedWorkflowDraft;
|
|
3
|
-
export declare function buildWorkflowDraftResponse(draft: GeneratedWorkflowDraft, constraints?: WorkflowDraftConstraints): WorkflowDraftResponse;
|
|
4
|
-
export declare function lintWorkflowDraft(draft: GeneratedWorkflowDraft, constraints?: WorkflowDraftConstraints): WorkflowDraftLintIssue[];
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { validateWorkflowDefinitionInput } from "../domain/validation.js";
|
|
2
|
-
import { randomUUID } from "node:crypto";
|
|
3
|
-
//#region src/workflows/draft/workflow-draft-validator.ts
|
|
4
|
-
function parseGeneratedWorkflowDraft(raw) {
|
|
5
|
-
const parsed = JSON.parse(extractJsonObject(raw));
|
|
6
|
-
return {
|
|
7
|
-
name: normalizeWorkflowName(String(parsed.name ?? "custom_workflow")),
|
|
8
|
-
graph: normalizeGraph(parsed.graph),
|
|
9
|
-
manifest: normalizeManifest(parsed.manifest),
|
|
10
|
-
explanation: String(parsed.explanation ?? ""),
|
|
11
|
-
assumptions: stringArray(parsed.assumptions),
|
|
12
|
-
risks: stringArray(parsed.risks)
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
function buildWorkflowDraftResponse(draft, constraints) {
|
|
16
|
-
const validation = validateWorkflowDefinitionInput({
|
|
17
|
-
name: draft.name,
|
|
18
|
-
graph: draft.graph
|
|
19
|
-
});
|
|
20
|
-
return {
|
|
21
|
-
draftId: randomUUID(),
|
|
22
|
-
repairAttempts: 0,
|
|
23
|
-
...draft,
|
|
24
|
-
permissionsSummary: summarizePermissions(draft.manifest),
|
|
25
|
-
validation,
|
|
26
|
-
lint: lintWorkflowDraft(draft, constraints),
|
|
27
|
-
suggestedInputs: suggestedInputsFromManifest(draft.manifest)
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
function lintWorkflowDraft(draft, constraints) {
|
|
31
|
-
const issues = [];
|
|
32
|
-
const { manifest, graph } = draft;
|
|
33
|
-
if (!manifest.inputSchema) issues.push({
|
|
34
|
-
severity: "warning",
|
|
35
|
-
code: "missing_input_schema",
|
|
36
|
-
message: "Draft does not define an input schema."
|
|
37
|
-
});
|
|
38
|
-
if (!manifest.outputSchema) issues.push({
|
|
39
|
-
severity: "warning",
|
|
40
|
-
code: "missing_output_schema",
|
|
41
|
-
message: "Draft does not define an output schema."
|
|
42
|
-
});
|
|
43
|
-
if (manifest.permissions?.network && constraints?.allowNetwork === false) issues.push({
|
|
44
|
-
severity: "error",
|
|
45
|
-
code: "unsafe_permission",
|
|
46
|
-
message: "Draft requests network access, but network is disabled."
|
|
47
|
-
});
|
|
48
|
-
if (manifest.permissions?.fileSystem === "write" && constraints?.fileSystem !== "write") issues.push({
|
|
49
|
-
severity: "warning",
|
|
50
|
-
code: "unsafe_permission",
|
|
51
|
-
message: "Draft requests filesystem write access."
|
|
52
|
-
});
|
|
53
|
-
const phases = new Set(graph.nodes.map((node) => node.phaseId).filter(Boolean));
|
|
54
|
-
if (constraints?.maxPhases && phases.size > constraints.maxPhases) issues.push({
|
|
55
|
-
severity: "warning",
|
|
56
|
-
code: "too_many_agents",
|
|
57
|
-
message: `Draft has ${phases.size} phases, above the requested maximum.`
|
|
58
|
-
});
|
|
59
|
-
const agents = graph.nodes.filter((node) => node.kind === "agent");
|
|
60
|
-
if (constraints?.maxSubagents && agents.length > constraints.maxSubagents) issues.push({
|
|
61
|
-
severity: "warning",
|
|
62
|
-
code: "too_many_agents",
|
|
63
|
-
message: `Draft has ${agents.length} agents, above the requested maximum.`
|
|
64
|
-
});
|
|
65
|
-
if (constraints?.allowedTools?.length) {
|
|
66
|
-
const unknown = agents.flatMap((node) => node.config.toolset ?? []).filter((tool) => !constraints.allowedTools.includes(tool));
|
|
67
|
-
for (const tool of [...new Set(unknown)]) issues.push({
|
|
68
|
-
severity: "warning",
|
|
69
|
-
code: "unknown_tool",
|
|
70
|
-
message: `Tool '${tool}' is outside the requested allowlist.`
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
return issues;
|
|
74
|
-
}
|
|
75
|
-
function extractJsonObject(raw) {
|
|
76
|
-
const trimmed = raw.trim();
|
|
77
|
-
if (trimmed.startsWith("{") && trimmed.endsWith("}")) return trimmed;
|
|
78
|
-
const fenced = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i)?.[1]?.trim();
|
|
79
|
-
if (fenced?.startsWith("{")) return fenced;
|
|
80
|
-
const start = trimmed.indexOf("{");
|
|
81
|
-
const end = trimmed.lastIndexOf("}");
|
|
82
|
-
if (start >= 0 && end > start) return trimmed.slice(start, end + 1);
|
|
83
|
-
throw new Error("Model did not return a JSON object.");
|
|
84
|
-
}
|
|
85
|
-
function normalizeGraph(value) {
|
|
86
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) return {
|
|
87
|
-
schemaVersion: 1,
|
|
88
|
-
nodes: [],
|
|
89
|
-
edges: []
|
|
90
|
-
};
|
|
91
|
-
return value;
|
|
92
|
-
}
|
|
93
|
-
function normalizeManifest(value) {
|
|
94
|
-
return value && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
95
|
-
}
|
|
96
|
-
function stringArray(value) {
|
|
97
|
-
return Array.isArray(value) ? value.map(String).filter(Boolean) : [];
|
|
98
|
-
}
|
|
99
|
-
function normalizeWorkflowName(value) {
|
|
100
|
-
const normalized = value.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
|
|
101
|
-
return /^[a-z]/.test(normalized) ? normalized : `workflow_${normalized || "draft"}`;
|
|
102
|
-
}
|
|
103
|
-
function summarizePermissions(manifest) {
|
|
104
|
-
const permissions = manifest.permissions;
|
|
105
|
-
if (!permissions) return ["No explicit permissions requested."];
|
|
106
|
-
const values = [];
|
|
107
|
-
if (permissions.tools?.length) values.push(`Tools: ${permissions.tools.join(", ")}`);
|
|
108
|
-
if (permissions.network != null) values.push(`Network: ${permissions.network ? "enabled" : "disabled"}`);
|
|
109
|
-
if (permissions.fileSystem) values.push(`Filesystem: ${permissions.fileSystem}`);
|
|
110
|
-
if (permissions.approvalRequired) values.push("Approval required");
|
|
111
|
-
return values.length ? values : ["No explicit permissions requested."];
|
|
112
|
-
}
|
|
113
|
-
function suggestedInputsFromManifest(manifest) {
|
|
114
|
-
const properties = manifest.inputSchema?.properties;
|
|
115
|
-
if (!properties) return void 0;
|
|
116
|
-
return Object.entries(properties).slice(0, 8).map(([key, schema]) => ({
|
|
117
|
-
key,
|
|
118
|
-
label: typeof schema.title === "string" ? schema.title : key,
|
|
119
|
-
example: typeof schema.default === "string" ? schema.default : schema.description ?? ""
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
//#endregion
|
|
123
|
-
export { buildWorkflowDraftResponse, lintWorkflowDraft, parseGeneratedWorkflowDraft };
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import type { WorkflowDefinitionManifest, WorkflowGraph } from '../domain/definition.js';
|
|
2
|
-
import type { WorkflowDefinitionValidationResult } from '../domain/validation.js';
|
|
3
|
-
export type WorkflowDraftMode = 'create' | 'improve';
|
|
4
|
-
export interface WorkflowDraftConstraints {
|
|
5
|
-
allowedTools?: string[];
|
|
6
|
-
allowNetwork?: boolean;
|
|
7
|
-
fileSystem?: 'none' | 'read' | 'write';
|
|
8
|
-
maxPhases?: number;
|
|
9
|
-
maxSubagents?: number;
|
|
10
|
-
outputFormat?: 'report' | 'json' | 'actions';
|
|
11
|
-
}
|
|
12
|
-
export interface CreateWorkflowDraftRequest {
|
|
13
|
-
prompt: string;
|
|
14
|
-
agentId: string;
|
|
15
|
-
language?: 'en' | 'zh';
|
|
16
|
-
mode?: WorkflowDraftMode;
|
|
17
|
-
existingGraph?: WorkflowGraph;
|
|
18
|
-
constraints?: WorkflowDraftConstraints;
|
|
19
|
-
}
|
|
20
|
-
export interface WorkflowDraftLintIssue {
|
|
21
|
-
severity: 'error' | 'warning';
|
|
22
|
-
code: 'missing_input_schema' | 'missing_output_schema' | 'unsafe_permission' | 'too_many_agents' | 'unknown_tool' | 'weak_phase_names';
|
|
23
|
-
message: string;
|
|
24
|
-
}
|
|
25
|
-
export interface GeneratedWorkflowDraft {
|
|
26
|
-
name: string;
|
|
27
|
-
graph: WorkflowGraph;
|
|
28
|
-
manifest: WorkflowDefinitionManifest;
|
|
29
|
-
explanation: string;
|
|
30
|
-
assumptions: string[];
|
|
31
|
-
risks: string[];
|
|
32
|
-
}
|
|
33
|
-
export interface WorkflowDraftResponse extends GeneratedWorkflowDraft {
|
|
34
|
-
draftId: string;
|
|
35
|
-
repairAttempts: number;
|
|
36
|
-
permissionsSummary: string[];
|
|
37
|
-
validation: WorkflowDefinitionValidationResult;
|
|
38
|
-
lint: WorkflowDraftLintIssue[];
|
|
39
|
-
suggestedInputs?: Array<{
|
|
40
|
-
key: string;
|
|
41
|
-
label: string;
|
|
42
|
-
example: string;
|
|
43
|
-
}>;
|
|
44
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|