minimal-agent 0.12.0 → 0.14.0
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 +6 -5
- package/package.json +62 -5
- package/plugins/computer_use/.claude-plugin/plugin.json +1 -1
- package/plugins/cron-runner/src/commands.js +4 -4
- package/plugins/cron-runner/src/commands.ts +4 -4
- package/plugins/workflow-runner/.claude-plugin/plugin.json +2 -2
- package/plugins/workflow-runner/commands/workflow.md +57 -90
- package/plugins/workflow-runner/commands/workflows.md +4 -4
- package/plugins/workflow-runner/plugin.js +24 -13
- package/plugins/workflow-runner/plugin.ts +28 -13
- package/plugins/workflow-runner/src/discovery.js +160 -0
- package/plugins/workflow-runner/src/discovery.ts +194 -0
- package/plugins/workflow-runner/src/goalAnchor.js +53 -0
- package/plugins/workflow-runner/src/goalAnchor.ts +59 -0
- package/plugins/workflow-runner/src/index.js +204 -185
- package/plugins/workflow-runner/src/index.ts +249 -224
- package/plugins/workflow-runner/src/inputCoercion.js +40 -0
- package/plugins/workflow-runner/src/inputCoercion.ts +43 -0
- package/plugins/workflow-runner/src/journal.js +224 -0
- package/plugins/workflow-runner/src/journal.ts +274 -0
- package/plugins/workflow-runner/src/jsonSchema.js +132 -0
- package/plugins/workflow-runner/src/jsonSchema.ts +162 -0
- package/plugins/workflow-runner/src/moduleResolution.js +64 -0
- package/plugins/workflow-runner/src/moduleResolution.ts +71 -0
- package/plugins/workflow-runner/src/resourceInputs.js +220 -0
- package/plugins/workflow-runner/src/resourceInputs.ts +300 -0
- package/plugins/workflow-runner/src/runner.js +404 -467
- package/plugins/workflow-runner/src/runner.ts +491 -535
- package/plugins/workflow-runner/src/runtime/config.js +46 -0
- package/plugins/workflow-runner/src/runtime/config.ts +69 -0
- package/plugins/workflow-runner/src/runtime/context.js +1304 -0
- package/plugins/workflow-runner/src/runtime/context.ts +1786 -0
- package/plugins/workflow-runner/src/runtime/exec.js +34 -0
- package/plugins/workflow-runner/src/runtime/exec.ts +53 -0
- package/plugins/workflow-runner/src/runtime/flow.js +8 -0
- package/plugins/workflow-runner/src/runtime/flow.ts +12 -0
- package/plugins/workflow-runner/src/runtime/fs.js +27 -0
- package/plugins/workflow-runner/src/runtime/fs.ts +41 -0
- package/plugins/workflow-runner/src/runtime/model.js +6 -0
- package/plugins/workflow-runner/src/runtime/model.ts +8 -0
- package/plugins/workflow-runner/src/runtime/output.js +7 -0
- package/plugins/workflow-runner/src/runtime/output.ts +21 -0
- package/plugins/workflow-runner/src/runtime/scheduler.js +141 -0
- package/plugins/workflow-runner/src/runtime/scheduler.ts +166 -0
- package/plugins/workflow-runner/src/runtime/state.js +16 -0
- package/plugins/workflow-runner/src/runtime/state.ts +19 -0
- package/plugins/workflow-runner/src/runtime/tools.js +3 -0
- package/plugins/workflow-runner/src/runtime/tools.ts +6 -0
- package/plugins/workflow-runner/src/sandbox.js +141 -0
- package/plugins/workflow-runner/src/sandbox.ts +182 -0
- package/plugins/workflow-runner/src/scriptGuard.d.mts +38 -0
- package/plugins/workflow-runner/src/scriptGuard.mjs +449 -0
- package/plugins/workflow-runner/src/taskIdentity.js +172 -152
- package/plugins/workflow-runner/src/taskIdentity.ts +233 -200
- package/plugins/workflow-runner/src/toolRuntime.js +29 -8
- package/plugins/workflow-runner/src/toolRuntime.ts +36 -11
- package/plugins/workflow-runner/src/types.js +7 -105
- package/plugins/workflow-runner/src/types.ts +155 -520
- package/plugins/workflow-runner/src/util.js +47 -0
- package/plugins/workflow-runner/src/util.ts +51 -0
- package/plugins/workflow-runner/src/workflowContext.js +20 -0
- package/plugins/workflow-runner/src/workflowContext.ts +58 -0
- package/plugins/workflow-runner/src/workflowDependencies.js +36 -0
- package/plugins/workflow-runner/src/workflowDependencies.ts +59 -0
- package/plugins/workflow-runner/src/workflowFingerprint.js +118 -0
- package/plugins/workflow-runner/src/workflowFingerprint.ts +122 -0
- package/plugins/workflow-runner/src/workflowState.js +542 -469
- package/plugins/workflow-runner/src/workflowState.ts +639 -589
- package/plugins/workflow-runner/test/api.test.ts +223 -0
- package/plugins/workflow-runner/test/apiCapabilities.test.ts +614 -0
- package/plugins/workflow-runner/test/apiConcurrencyGate.test.ts +104 -0
- package/plugins/workflow-runner/test/apiEcho.test.ts +210 -0
- package/plugins/workflow-runner/test/apiReadText.test.ts +178 -0
- package/plugins/workflow-runner/test/apiResourceLedger.test.ts +184 -0
- package/plugins/workflow-runner/test/childWorkflow.test.ts +304 -0
- package/plugins/workflow-runner/test/discovery.test.ts +234 -0
- package/plugins/workflow-runner/test/goalAnchor.test.ts +106 -0
- package/plugins/workflow-runner/test/goalController.test.ts +317 -0
- package/plugins/workflow-runner/test/journalLanes.test.ts +198 -0
- package/plugins/workflow-runner/test/listResources.test.ts +106 -0
- package/plugins/workflow-runner/test/resourceInputs.test.ts +294 -0
- package/plugins/workflow-runner/test/sandbox.test.ts +126 -0
- package/plugins/workflow-runner/test/scheduler.test.ts +70 -0
- package/plugins/workflow-runner/test/scriptGuard.test.ts +276 -0
- package/plugins/workflow-runner/test/skillDocSync.test.ts +78 -0
- package/plugins/workflow-runner/test/taskIdentity.test.ts +288 -179
- package/plugins/workflow-runner/test/workflowFingerprint.test.ts +106 -0
- package/plugins/workflow-runner/test/workflowState.test.ts +429 -0
- package/skills/pptx/examples/assets/cover-bg.svg +23 -0
- package/skills/pptx/examples/assets/icon-spark.svg +5 -0
- package/skills/skill-creator/scripts/run_eval.py +3 -2
- package/skills/ui-design/SKILL.md +5 -2
- package/skills/ui-design/references/layout-composition.md +1 -1
- package/skills/workflow-creator/SKILL.md +344 -0
- package/skills/workflow-creator/assets/template/workflow.mjs +48 -0
- package/skills/workflow-creator/references/api.md +216 -0
- package/skills/workflow-creator/references/migration.md +103 -0
- package/skills/workflow-creator/references/patterns.md +779 -0
- package/skills/workflow-creator/scripts/list-resources.mjs +205 -0
- package/skills/workflow-creator/scripts/scaffold.mjs +148 -0
- package/skills/workflow-creator/scripts/validate.mjs +275 -0
- package/skills/workflow-creator/scripts/workflow-creator.test.mjs +82 -0
- package/src/advisor/advisorCoordinator.js +503 -0
- package/src/advisor/advisorCoordinator.ts +657 -0
- package/src/cli/configMenu.tsx +0 -1
- package/src/cli/print.js +44 -6
- package/src/cli/print.ts +73 -4
- package/src/cli/streamJson.js +5 -6
- package/src/cli/streamJson.ts +8 -4
- package/src/cli/wizards/advisorWizard.js +4 -2
- package/src/cli/wizards/advisorWizard.tsx +8 -2
- package/src/cli/wizards/contextAdvisorWizard.js +5 -4
- package/src/cli/wizards/contextAdvisorWizard.tsx +7 -6
- package/src/collaboration/taskFlow.js +115 -0
- package/src/collaboration/taskFlow.ts +169 -0
- package/src/config/configDefaults.js +41 -1
- package/src/config/configDefaults.ts +43 -1
- package/src/config/configDiagnostics.ts +2 -2
- package/src/config/configFile.js +40 -9
- package/src/config/configFile.ts +60 -11
- package/src/config/configService.js +443 -74
- package/src/config/configService.ts +723 -142
- package/src/config/numericLimits.js +22 -0
- package/src/config/numericLimits.ts +24 -0
- package/src/config.js +1 -0
- package/src/config.ts +3 -2
- package/src/context/budgetPlan.js +1 -1
- package/src/context/budgetPlan.ts +1 -1
- package/src/context/compact.js +7 -2
- package/src/context/compact.ts +9 -2
- package/src/context/microCompactLite.js +212 -13
- package/src/context/microCompactLite.ts +261 -12
- package/src/context/sessionRegistry.js +8 -1
- package/src/context/sessionRegistry.ts +18 -5
- package/src/context/toolResultArchive.js +72 -0
- package/src/context/toolResultArchive.ts +95 -0
- package/src/goal/errors.js +8 -0
- package/src/goal/errors.ts +18 -0
- package/src/goal/goalRuntime.js +344 -0
- package/src/goal/goalRuntime.ts +466 -0
- package/src/goal/goalStore.js +200 -0
- package/src/goal/goalStore.ts +219 -0
- package/src/goal/index.js +4 -0
- package/src/goal/index.ts +4 -0
- package/src/goal/statusMapping.js +71 -0
- package/src/goal/statusMapping.ts +95 -0
- package/src/goal/types.js +7 -0
- package/src/goal/types.ts +179 -0
- package/src/goal/workflowController.js +306 -0
- package/src/goal/workflowController.ts +360 -0
- package/src/harness/evidenceLedger.js +2 -0
- package/src/harness/evidenceLedger.ts +1 -0
- package/src/harness/stallGuard.js +9 -3
- package/src/harness/stallGuard.ts +7 -3
- package/src/images/imageResolver.js +161 -0
- package/src/images/imageResolver.ts +189 -0
- package/src/infra/verification.js +56 -20
- package/src/infra/verification.ts +87 -20
- package/src/llm/client.js +79 -21
- package/src/llm/client.ts +182 -35
- package/src/llm/gatewayClient.js +201 -0
- package/src/llm/gatewayClient.ts +299 -0
- package/src/llm/messageProvenance.js +46 -0
- package/src/llm/messageProvenance.ts +58 -0
- package/src/llm/modelProvider.js +1 -0
- package/src/llm/modelProvider.ts +22 -0
- package/src/llm/providers/anthropicFormat.js +108 -1
- package/src/llm/providers/anthropicFormat.ts +115 -4
- package/src/llm/providers/openaiFormat.js +9 -0
- package/src/llm/providers/openaiFormat.ts +12 -3
- package/src/loop.js +319 -54
- package/src/loop.ts +373 -57
- package/src/main.js +4 -1
- package/src/main.tsx +4 -1
- package/src/managedExecution/index.js +2 -0
- package/src/managedExecution/index.ts +2 -0
- package/src/managedExecution/registry.js +15 -0
- package/src/managedExecution/registry.ts +20 -0
- package/src/managedExecution/types.js +1 -0
- package/src/managedExecution/types.ts +86 -0
- package/src/modelRef.js +9 -0
- package/src/modelRef.ts +31 -0
- package/src/multimodal.js +14 -28
- package/src/multimodal.ts +17 -33
- package/src/net/lanDiscovery.js +65 -0
- package/src/net/lanDiscovery.ts +82 -0
- package/src/plugin-sdk.js +28 -3
- package/src/plugin-sdk.ts +39 -6
- package/src/plugins/pluginApi.ts +16 -1
- package/src/plugins/pluginLoader.js +4 -0
- package/src/plugins/pluginLoader.ts +6 -0
- package/src/plugins/pluginRunner.js +152 -9
- package/src/plugins/pluginRunner.ts +186 -8
- package/src/plugins/slashFallback.js +113 -0
- package/src/plugins/slashFallback.ts +137 -0
- package/src/prompts/policyRegistry.js +15 -8
- package/src/prompts/policyRegistry.ts +18 -8
- package/src/prompts/promptAssembly.js +103 -12
- package/src/prompts/promptAssembly.ts +114 -12
- package/src/prompts/skillList.js +21 -3
- package/src/prompts/skillList.ts +27 -2
- package/src/prompts/stableSystemPrompt.js +18 -0
- package/src/prompts/stableSystemPrompt.ts +33 -0
- package/src/runtime/agentRuntimeContext.js +8 -2
- package/src/runtime/agentRuntimeContext.ts +17 -4
- package/src/session/runAgentTurn.js +78 -12
- package/src/session/runAgentTurn.ts +105 -23
- package/src/session/runTurn.js +10 -9
- package/src/session/runTurn.ts +17 -8
- package/src/session/sessionState.ts +2 -0
- package/src/team/auth.js +186 -0
- package/src/team/auth.ts +298 -0
- package/src/team/cli.js +105 -0
- package/src/team/cli.ts +122 -0
- package/src/team/onlineToolContract.js +64 -0
- package/src/team/onlineToolContract.ts +109 -0
- package/src/team/toolPolicy.js +36 -0
- package/src/team/toolPolicy.ts +75 -0
- package/src/tools/advisor/advisor.js +148 -37
- package/src/tools/advisor/advisor.ts +161 -38
- package/src/tools/advisor/advisorDecision.js +71 -0
- package/src/tools/advisor/advisorDecision.ts +85 -0
- package/src/tools/agent/agent.js +18 -5
- package/src/tools/agent/agent.ts +21 -7
- package/src/tools/agent/agentControl.js +246 -0
- package/src/tools/agent/agentControl.ts +284 -0
- package/src/tools/agent/agentTaskService.js +40 -1
- package/src/tools/agent/agentTaskService.ts +44 -1
- package/src/tools/agent/agentTypes.js +14 -2
- package/src/tools/agent/agentTypes.ts +15 -2
- package/src/tools/applypatch/applyPatch.js +362 -0
- package/src/tools/applypatch/applyPatch.ts +428 -0
- package/src/tools/bash/bash.js +70 -18
- package/src/tools/bash/bash.ts +75 -20
- package/src/tools/capabilities.js +10 -5
- package/src/tools/capabilities.ts +10 -5
- package/src/tools/computeruse/computerIntent.js +32 -0
- package/src/tools/computeruse/computerIntent.ts +46 -0
- package/src/tools/computeruse/telemetryLog.js +12 -0
- package/src/tools/computeruse/telemetryLog.ts +16 -0
- package/src/tools/computeruse/vision/telemetry.js +1 -0
- package/src/tools/computeruse/vision/telemetry.ts +1 -0
- package/src/tools/effectiveToolSet.js +4 -0
- package/src/tools/effectiveToolSet.ts +4 -0
- package/src/tools/index.js +21 -2
- package/src/tools/index.ts +33 -2
- package/src/tools/powershell/powershell.js +18 -1
- package/src/tools/powershell/powershell.ts +18 -2
- package/src/tools/presentresult/presentresult.js +6 -15
- package/src/tools/presentresult/presentresult.ts +6 -15
- package/src/tools/read/read.js +69 -11
- package/src/tools/read/read.ts +70 -11
- package/src/tools/shared/fileUtils.js +1 -2
- package/src/tools/shared/fileUtils.ts +1 -2
- package/src/tools/shared/permanentDeleteGuard.js +34 -3
- package/src/tools/shared/permanentDeleteGuard.ts +43 -6
- package/src/tools/shared/toolOutputStore.js +23 -1
- package/src/tools/shared/toolOutputStore.ts +22 -1
- package/src/tools/skill/skill.js +9 -3
- package/src/tools/skill/skill.ts +8 -4
- package/src/tools/toolPromptGuides.js +117 -0
- package/src/tools/toolPromptGuides.ts +137 -0
- package/src/tools/webbrowser/agentBrowserPath.js +19 -9
- package/src/tools/webbrowser/agentBrowserPath.ts +70 -28
- package/src/tools/webbrowser/browser.js +27 -11
- package/src/tools/webbrowser/browser.ts +68 -24
- package/src/tools/webbrowser/browserAutomation.js +329 -0
- package/src/tools/webbrowser/browserAutomation.ts +467 -0
- package/src/tools/webbrowser/browserAxState.js +97 -0
- package/src/tools/webbrowser/browserAxState.ts +142 -0
- package/src/tools/webbrowser/browserBatch.js +1578 -0
- package/src/tools/webbrowser/browserBatch.ts +2382 -0
- package/src/tools/webbrowser/browserCdp.js +208 -0
- package/src/tools/webbrowser/browserCdp.ts +255 -0
- package/src/tools/webbrowser/browserConditions.js +24 -0
- package/src/tools/webbrowser/browserConditions.ts +45 -0
- package/src/tools/webbrowser/browserContent.js +281 -0
- package/src/tools/webbrowser/browserContent.ts +438 -0
- package/src/tools/webbrowser/browserControl.js +131 -30
- package/src/tools/webbrowser/browserControl.ts +210 -50
- package/src/tools/webbrowser/browserDaemon.js +22 -14
- package/src/tools/webbrowser/browserDaemon.ts +54 -21
- package/src/tools/webbrowser/browserFrames.js +47 -0
- package/src/tools/webbrowser/browserFrames.ts +54 -0
- package/src/tools/webbrowser/browserInteractionResolver.js +17 -0
- package/src/tools/webbrowser/browserInteractionResolver.ts +40 -0
- package/src/tools/webbrowser/browserLocator.js +140 -0
- package/src/tools/webbrowser/browserLocator.ts +194 -0
- package/src/tools/webbrowser/browserOutcome.js +10 -17
- package/src/tools/webbrowser/browserOutcome.ts +48 -31
- package/src/tools/webbrowser/browserRecovery.js +58 -0
- package/src/tools/webbrowser/browserRecovery.ts +83 -0
- package/src/tools/webbrowser/browserRunRegistry.js +35 -3
- package/src/tools/webbrowser/browserRunRegistry.ts +91 -15
- package/src/tools/webbrowser/browserService.js +28 -2
- package/src/tools/webbrowser/browserService.ts +49 -9
- package/src/tools/webbrowser/browserStream.js +132 -33
- package/src/tools/webbrowser/browserStream.ts +224 -50
- package/src/tools/webbrowser/browserTabs.js +48 -15
- package/src/tools/webbrowser/browserTabs.ts +178 -96
- package/src/tools/webbrowser/webbrowser.js +683 -144
- package/src/tools/webbrowser/webbrowser.ts +979 -236
- package/src/tools/webfetch/preapproved.js +0 -2
- package/src/tools/webfetch/preapproved.ts +0 -2
- package/src/tools/websearch/websearch.js +129 -8
- package/src/tools/websearch/websearch.ts +138 -6
- package/src/types.ts +450 -42
- package/src/ui/App.js +377 -58
- package/src/ui/App.tsx +576 -111
- package/src/ui/LiveArea.js +14 -8
- package/src/ui/LiveArea.tsx +14 -10
- package/src/ui/MessageList.js +63 -20
- package/src/ui/MessageList.tsx +101 -16
- package/src/ui/ModelPicker.js +7 -4
- package/src/ui/ModelPicker.tsx +55 -8
- package/src/ui/hooks/useChat.js +152 -163
- package/src/ui/hooks/useChat.ts +396 -334
- package/src/ui/loginCommand.js +56 -0
- package/src/ui/loginCommand.ts +63 -0
- package/src/ui/toolProgress.js +41 -0
- package/src/ui/toolProgress.ts +44 -0
- package/src/web/browserBridge.js +20 -2
- package/src/web/browserBridge.ts +20 -2
- package/src/web/protocol.ts +1897 -194
- package/workflows/adaptive-research/workflow.mjs +86 -0
- package/workflows/e2e-capabilities/workflow.mjs +102 -0
- package/workflows/e2e-llm/workflow.mjs +52 -0
- package/workflows/e2e-smoke/workflow.mjs +59 -0
- package/workflows/e2e-vision-schema/README.md +48 -0
- package/workflows/e2e-vision-schema/workflow.mjs +149 -0
- package/workflows/e2e-write-greet/workflow.mjs +37 -0
- package/workflows/file-census/README.md +14 -0
- package/workflows/file-census/scripts/.gitkeep +2 -0
- package/workflows/file-census/workflow.mjs +110 -0
- package/workflows/goal/README.md +166 -0
- package/workflows/goal/prompts/audit.md +57 -0
- package/workflows/goal/prompts/contract.md +56 -0
- package/workflows/goal/prompts/iterate.md +37 -0
- package/workflows/goal/workflow.mjs +501 -0
- package/workflows/illustrate/README.md +90 -0
- package/workflows/illustrate/assets/engines.json +20 -0
- package/workflows/illustrate/assets/extract-baidu.js +21 -0
- package/workflows/illustrate/assets/extract-bing.js +33 -0
- package/workflows/illustrate/assets/extract-google.js +31 -0
- package/workflows/illustrate/workflow.mjs +301 -0
- package/workflows/plan/workflow.mjs +389 -0
- package/workflows/question-crops/README.md +35 -0
- package/workflows/question-crops/prompts/inventory.md +23 -0
- package/workflows/question-crops/scripts/image-ops.mjs +305 -0
- package/workflows/question-crops/scripts/image-ops.test.mjs +95 -0
- package/workflows/question-crops/workflow.mjs +172 -0
- package/workflows/ralph-loop/workflow.mjs +162 -0
- package/workflows/research/DESIGN.md +449 -0
- package/workflows/research/README.md +74 -0
- package/workflows/research/prompts/s0-goal.md +43 -0
- package/workflows/research/prompts/s1-early-exit.md +22 -0
- package/workflows/research/prompts/s1-map.md +58 -0
- package/workflows/research/prompts/s2-options.md +53 -0
- package/workflows/research/prompts/s3-deep-dive.md +56 -0
- package/workflows/research/prompts/s4-verify.md +74 -0
- package/workflows/research/prompts/s5-synthesis.md +81 -0
- package/workflows/research/prompts/s5b-fill-gaps.md +32 -0
- package/workflows/research/prompts/s6-package.md +32 -0
- package/workflows/research/scripts/build-report.mjs +98 -0
- package/workflows/research/workflow.mjs +288 -0
- package/workflows/wechat-reading-shots/prompts/collect-params.md +16 -0
- package/workflows/wechat-reading-shots/prompts/evaluate.md +20 -0
- package/workflows/wechat-reading-shots/prompts/open-book.md +28 -0
- package/workflows/wechat-reading-shots/prompts/read-page.md +13 -0
- package/workflows/wechat-reading-shots/prompts/turn-batch.md +24 -0
- package/workflows/wechat-reading-shots/test/control-flow.test.ts +329 -0
- package/workflows/wechat-reading-shots/workflow.mjs +266 -0
- package/workflows/wrong-question-docx/README.md +55 -0
- package/workflows/wrong-question-docx/prompts/figure-qa.md +8 -0
- package/workflows/wrong-question-docx/prompts/transcribe.md +25 -0
- package/workflows/wrong-question-docx/scripts/workbook.mjs +857 -0
- package/workflows/wrong-question-docx/test/control-flow.test.ts +165 -0
- package/workflows/wrong-question-docx/test/workbook.test.mjs +303 -0
- package/workflows/wrong-question-docx/workflow.mjs +485 -0
- package/plugins/workflow-runner/src/agentCommon.js +0 -354
- package/plugins/workflow-runner/src/agentCommon.ts +0 -435
- package/plugins/workflow-runner/src/controlFlow/branch.js +0 -40
- package/plugins/workflow-runner/src/controlFlow/branch.ts +0 -46
- package/plugins/workflow-runner/src/controlFlow/loop.js +0 -211
- package/plugins/workflow-runner/src/controlFlow/loop.ts +0 -248
- package/plugins/workflow-runner/src/controlFlow/pause.js +0 -129
- package/plugins/workflow-runner/src/controlFlow/pause.ts +0 -141
- package/plugins/workflow-runner/src/controlFlow/signal.js +0 -21
- package/plugins/workflow-runner/src/controlFlow/signal.ts +0 -29
- package/plugins/workflow-runner/src/controlFlow/types.js +0 -18
- package/plugins/workflow-runner/src/controlFlow/types.ts +0 -63
- package/plugins/workflow-runner/src/dslManifest.js +0 -72
- package/plugins/workflow-runner/src/dslManifest.ts +0 -127
- package/plugins/workflow-runner/src/expressions.js +0 -618
- package/plugins/workflow-runner/src/expressions.ts +0 -622
- package/plugins/workflow-runner/src/loader.js +0 -573
- package/plugins/workflow-runner/src/loader.ts +0 -721
- package/plugins/workflow-runner/src/multimodal.js +0 -38
- package/plugins/workflow-runner/src/multimodal.ts +0 -64
- package/plugins/workflow-runner/src/recovery.js +0 -119
- package/plugins/workflow-runner/src/recovery.ts +0 -149
- package/plugins/workflow-runner/src/stepExecutors/agent.js +0 -173
- package/plugins/workflow-runner/src/stepExecutors/agent.ts +0 -234
- package/plugins/workflow-runner/src/stepExecutors/assert.js +0 -41
- package/plugins/workflow-runner/src/stepExecutors/assert.ts +0 -50
- package/plugins/workflow-runner/src/stepExecutors/echo.js +0 -31
- package/plugins/workflow-runner/src/stepExecutors/echo.ts +0 -38
- package/plugins/workflow-runner/src/stepExecutors/llm.js +0 -99
- package/plugins/workflow-runner/src/stepExecutors/llm.ts +0 -133
- package/plugins/workflow-runner/src/stepExecutors/set.js +0 -49
- package/plugins/workflow-runner/src/stepExecutors/set.ts +0 -56
- package/plugins/workflow-runner/src/stepExecutors/skill.js +0 -111
- package/plugins/workflow-runner/src/stepExecutors/skill.ts +0 -140
- package/plugins/workflow-runner/src/stepExecutors/tool.js +0 -208
- package/plugins/workflow-runner/src/stepExecutors/tool.ts +0 -256
- package/plugins/workflow-runner/src/stepExecutors/verify.js +0 -58
- package/plugins/workflow-runner/src/stepExecutors/verify.ts +0 -68
- package/plugins/workflow-runner/src/stepPipeline.js +0 -277
- package/plugins/workflow-runner/src/stepPipeline.ts +0 -366
- package/plugins/workflow-runner/test/agent.test.ts +0 -587
- package/plugins/workflow-runner/test/agentLlmError.test.ts +0 -373
- package/plugins/workflow-runner/test/bashBlacklist.sweep.test.ts +0 -65
- package/plugins/workflow-runner/test/captureMisbind.test.ts +0 -99
- package/plugins/workflow-runner/test/cli.e2e.test.ts +0 -147
- package/plugins/workflow-runner/test/context-files.test.ts +0 -320
- package/plugins/workflow-runner/test/e2e.test.ts +0 -370
- package/plugins/workflow-runner/test/engineRobustness.test.ts +0 -226
- package/plugins/workflow-runner/test/expressions.test.ts +0 -397
- package/plugins/workflow-runner/test/foundation.test.ts +0 -126
- package/plugins/workflow-runner/test/graceful.test.ts +0 -139
- package/plugins/workflow-runner/test/greedyInputs.load.test.ts +0 -47
- package/plugins/workflow-runner/test/hostCapability.test.ts +0 -108
- package/plugins/workflow-runner/test/illustrate.load.test.ts +0 -183
- package/plugins/workflow-runner/test/jsonPayload.test.ts +0 -83
- package/plugins/workflow-runner/test/loader.test.ts +0 -617
- package/plugins/workflow-runner/test/maxTurnsRetryDelay.test.ts +0 -33
- package/plugins/workflow-runner/test/multimodal.test.ts +0 -342
- package/plugins/workflow-runner/test/output-schema.test.ts +0 -213
- package/plugins/workflow-runner/test/parseWorkflowArgs.test.ts +0 -87
- package/plugins/workflow-runner/test/pluginRunner.isolation.test.ts +0 -269
- package/plugins/workflow-runner/test/ppt.load.test.ts +0 -1220
- package/plugins/workflow-runner/test/ralphLoop.e2e.test.ts +0 -220
- package/plugins/workflow-runner/test/recovery.test.ts +0 -265
- package/plugins/workflow-runner/test/runner.test.ts +0 -911
- package/plugins/workflow-runner/test/runnerPreflight.test.ts +0 -379
- package/plugins/workflow-runner/test/skillTurnDone.test.ts +0 -71
- package/plugins/workflow-runner/test/stateLifecycle.test.ts +0 -150
- package/plugins/workflow-runner/test/stepPipeline.test.ts +0 -114
- package/plugins/workflow-runner/test/taskArbitration.test.ts +0 -338
- package/plugins/workflow-runner/test/taskLifecycle.test.ts +0 -270
- package/plugins/workflow-runner/test/toolArtifactOverwrite.test.ts +0 -221
- package/plugins/workflow-runner/test/toolCapabilityBoundary.test.ts +0 -29
- package/plugins/workflow-runner/test/toolRuntimeIntegration.test.ts +0 -168
- package/plugins/workflow-runner/test/webppt.load.test.ts +0 -250
- package/plugins/workflow-runner/test/word.load.test.ts +0 -208
- package/plugins/workflow-runner/test/workflows.smoke.test.ts +0 -76
- package/plugins/workflow-runner/test/yamlGuardConditions.test.ts +0 -207
- package/src/advisorState.js +0 -22
- package/src/cli/configWizard.js +0 -293
- package/src/tools/toolProgressBridge.js +0 -48
- package/workflows/adaptive-research.yaml +0 -50
- package/workflows/book-review-short.yaml +0 -125
- package/workflows/e2e-write-greet.yaml +0 -31
- package/workflows/illustrate.yaml +0 -227
- package/workflows/plan.yaml +0 -470
- package/workflows/ppt.yaml +0 -1670
- package/workflows/ralph-loop.yaml +0 -199
- package/workflows/schema.json +0 -176
- package/workflows/webppt.yaml +0 -496
- package/workflows/wechat-reading-shots.yaml +0 -315
- package/workflows/word.yaml +0 -720
- package/workflows/youtube-shorts.yaml +0 -202
package/workflows/plan.yaml
DELETED
|
@@ -1,470 +0,0 @@
|
|
|
1
|
-
# workflows/plan.yaml —— Plan 模式工作流(v4:审批通过后绝不回规划,执行-验收内层闭环)
|
|
2
|
-
#
|
|
3
|
-
# 架构参考: Claude Code Plan Mode(澄清→理解→收集计划→对抗→定稿审批→执行→验收)
|
|
4
|
-
#
|
|
5
|
-
# 两条铁律(真实事故换来的用户裁决,改此文件前必读):
|
|
6
|
-
# 1. 已批准 = 只许向前:验收不合格时带阻塞原因在 exec_loop 内重新执行(计划与审批保留),
|
|
7
|
-
# 穷尽轮数诚实 halt——绝不回规划阶段、绝不重新审批、绝不静默重启。
|
|
8
|
-
# 2. 打回 plan_loop 重新规划只剩一条路:审批闸门上用户给出方向性(fundamental)意见。
|
|
9
|
-
#
|
|
10
|
-
# 复用引擎能力(yaml 无需重写):目标锚定 + goalSupplements 贯穿、技能罗列进 system prompt、
|
|
11
|
-
# fresh_context 每轮重置 history(set 变量跨轮存活)、plan_loop 循环级断点 resume。
|
|
12
|
-
# 模型可移植:纯产文本步用 llm;落盘用 tool:Write;需工具的步用 agent + onError 降级。
|
|
13
|
-
|
|
14
|
-
name: plan
|
|
15
|
-
description: >
|
|
16
|
-
Plan 模式:澄清目标 → 探索 → 起草计划 → 审查修订 → 审批(反馈分类:小改就地修订/
|
|
17
|
-
方向变化打回重规划)→ 执行 → 验收。审批通过后只许向前:验收不合格带原因重新执行
|
|
18
|
-
(计划保留、不再重审批),穷尽轮数诚实停止报告卡点。
|
|
19
|
-
|
|
20
|
-
inputs:
|
|
21
|
-
- name: goal
|
|
22
|
-
type: string
|
|
23
|
-
required: true
|
|
24
|
-
greedy: true
|
|
25
|
-
description: 用户想要实现的目标(可直接一句话自然语言;命令行 workflow 名后整句进 goal,不被空格拆碎)
|
|
26
|
-
|
|
27
|
-
self_heal:
|
|
28
|
-
max_retries: 3 # 单步 in-run 瞬态失败(LLM 超时/网络抖动)重试上限
|
|
29
|
-
retry_delay_ms: 20000 # 重试线性退避基数(20s/40s/60s)——minimax 端点拥塞波是分钟级,
|
|
30
|
-
# 3s 级重试必撞同一个故障窗口(2026-06-12 实跑:两次重试全死在拥塞波里)
|
|
31
|
-
|
|
32
|
-
artifacts:
|
|
33
|
-
- PLAN.md # 核心产出:实现计划文档(仅在 stage4 定稿时落盘一次)
|
|
34
|
-
|
|
35
|
-
steps:
|
|
36
|
-
# ================================================================
|
|
37
|
-
# 初始化(loop 外,确定性 set;setGlobal 跨轮存活——教训/裁决的权威载体)
|
|
38
|
-
# ================================================================
|
|
39
|
-
- id: init_state
|
|
40
|
-
title: 阶段0·初始化
|
|
41
|
-
type: set
|
|
42
|
-
set:
|
|
43
|
-
learnings_text: "" # 跨轮累积的「用户方向性反馈」教训(仅审批打回路径写入)
|
|
44
|
-
final_qualified: false # 最近一轮验收裁决(出循环后判要不要 honest halt)
|
|
45
|
-
final_blocking: "" # 最近一轮的阻塞原因
|
|
46
|
-
final_summary: "" # 验收员产出的完成报告(echo 输出用)
|
|
47
|
-
plan_approved: false # 审批循环内:只有明确选择继续执行才置 true
|
|
48
|
-
approval_notes: "" # 审批闸门捕获的用户反馈
|
|
49
|
-
feedback_category: "" # 反馈分类(minor / fundamental)
|
|
50
|
-
exec_feedback: "" # 执行闭环内累积的「上轮验收为何不合格」(喂回重执行轮)
|
|
51
|
-
|
|
52
|
-
# ================================================================
|
|
53
|
-
# 阶段 0:目标澄清(不闷头执行;只在开头问一次,之后全程自主)
|
|
54
|
-
# 提问克制三原则在 system prompt 已有;这里再约束「合并一次问完」。
|
|
55
|
-
# 澄清结论经 goal_supplement 并入贯穿锚定,后续每步(含打回重来轮)都看到。
|
|
56
|
-
# ================================================================
|
|
57
|
-
- id: stage0_clarify
|
|
58
|
-
title: 阶段0·目标澄清(必要时向你提问)
|
|
59
|
-
agent: |
|
|
60
|
-
开始规划前,先判断用户目标是否包含「能制定可执行计划」的关键必要条件
|
|
61
|
-
(如:产出物形态/格式、目标范围、关键技术约束、验收口径)。
|
|
62
|
-
|
|
63
|
-
规则(严格遵守):
|
|
64
|
-
1. 先用 Read/Grep/Glob 快速看一眼工作目录,能从代码/文件/常识推断的一律自己定,不问。
|
|
65
|
-
2. 仅当存在「缺了它计划方向会完全不同、且推断不出」的关键条件时,
|
|
66
|
-
用 AskUserQuestion **一次性合并提问**(最多 4 题,选项式优先、每题给推荐项;
|
|
67
|
-
用户也可自由输入)。整个阶段最多提问一次,不许追问第二轮。
|
|
68
|
-
3. 目标已足够明确时不提问,直接进入输出。
|
|
69
|
-
|
|
70
|
-
输出(简洁,供后续阶段引用):
|
|
71
|
-
- 澄清结论:用户的回答要点(没提问则写「目标已明确,无需澄清」)
|
|
72
|
-
- 默认假设清单:你自行拍板的关键假设(逐条,后续阶段照此执行)
|
|
73
|
-
capture: clarifications
|
|
74
|
-
allowed_tools: [Read, Grep, Glob, AskUserQuestion]
|
|
75
|
-
maxTurns: 8
|
|
76
|
-
goal_supplement: true # 澄清结论作为用户补充要求,随锚定贯穿所有后续步骤
|
|
77
|
-
onError: continue # 澄清失败降级:按原始目标 + 常识假设继续
|
|
78
|
-
max_retries: 1
|
|
79
|
-
|
|
80
|
-
# ================================================================
|
|
81
|
-
# 规划闭环:唯一的重来路径 = 审批闸门上用户给出方向性(fundamental)意见
|
|
82
|
-
# (continue target:plan_loop)。验收不合格**不再**打回这里——审批通过后
|
|
83
|
-
# 只许向前(见 exec_loop)。max_iterations:3 = 首跑 + 最多 2 次用户主动打回;
|
|
84
|
-
# fresh_context 每轮清 history(stage0 澄清在循环外,入口快照里仍有它)。
|
|
85
|
-
# ================================================================
|
|
86
|
-
- type: loop
|
|
87
|
-
id: plan_loop
|
|
88
|
-
title: 阶段1-6·规划执行闭环
|
|
89
|
-
max_iterations: 3
|
|
90
|
-
fresh_context: true
|
|
91
|
-
as: _iter
|
|
92
|
-
do:
|
|
93
|
-
# 每轮迭代重置审批状态(防上一轮的 plan_approved=true 残留,
|
|
94
|
-
# 让打回轮的 ensure_approved 误放行)
|
|
95
|
-
- id: iter_reset
|
|
96
|
-
title: 阶段1/6·轮次准备
|
|
97
|
-
type: set
|
|
98
|
-
set:
|
|
99
|
-
plan_approved: false
|
|
100
|
-
approval_notes: ""
|
|
101
|
-
feedback_category: ""
|
|
102
|
-
exec_feedback: ""
|
|
103
|
-
|
|
104
|
-
# ----------------------------------------------------------------
|
|
105
|
-
# 阶段 1:收集信息
|
|
106
|
-
# ----------------------------------------------------------------
|
|
107
|
-
- id: stage1_research
|
|
108
|
-
title: 阶段1/6·理解目标·收集信息
|
|
109
|
-
agent: |
|
|
110
|
-
你是资深工程师。围绕用户目标做必要探索,只收集会影响计划的事实。
|
|
111
|
-
|
|
112
|
-
${learnings_text != '' ? '这是打回重做。此前的教训:\n' + learnings_text : ''}
|
|
113
|
-
|
|
114
|
-
用 Read/Grep/Glob/Bash 探索(只读):
|
|
115
|
-
- 相关源文件(路径 + 关键行号)
|
|
116
|
-
- 可复用模式/函数
|
|
117
|
-
- 技术风险、依赖、验证命令
|
|
118
|
-
|
|
119
|
-
⚙️ 效率要求(轮数有限,别浪费):
|
|
120
|
-
- 优先 Glob/Grep 定位,再精准 Read 命中文件,不要逐个目录漫游。
|
|
121
|
-
- 能在一轮里批量调用多个只读工具就批量调,减少往返轮数。
|
|
122
|
-
- 收集够「能写出计划」的事实就停手,产出精简探索报告,不要长篇背景复述。
|
|
123
|
-
capture: research_report
|
|
124
|
-
allowed_tools: [Read, Grep, Glob, Bash] # 收敛弱模型注意力到只读探索
|
|
125
|
-
maxTurns: 30 # 探索吃轮数:显式给足预算(默认 25 对真实代码库探索偏紧)
|
|
126
|
-
onError: continue # 探索失败降级:带空报告继续,下游有目标锚定兜底
|
|
127
|
-
max_retries: 1
|
|
128
|
-
|
|
129
|
-
- id: stage2_draft_plan
|
|
130
|
-
title: 阶段2/6·起草实现计划
|
|
131
|
-
llm: |
|
|
132
|
-
你负责把目标和探索结果写成**可直接执行的实现计划正文**(将原样写入 ./PLAN.md)。
|
|
133
|
-
|
|
134
|
-
${learnings_text != '' ? '这是用户方向性打回后的重做。用户审批反馈(必须遵从):\n' + learnings_text : ''}
|
|
135
|
-
|
|
136
|
-
## 目标澄清结论(阶段 0 与用户确认的回答与假设,必须遵守)
|
|
137
|
-
${clarifications}
|
|
138
|
-
|
|
139
|
-
## 代码探索报告(若上游降级可能为空,按目标和常识自行推断)
|
|
140
|
-
${research_report}
|
|
141
|
-
|
|
142
|
-
直接输出计划正文(不要调用工具、不要输出额外说明、不要思考过程标签),含:
|
|
143
|
-
|
|
144
|
-
# 实现计划:{目标简短摘要}
|
|
145
|
-
## 假设
|
|
146
|
-
## 成功标准
|
|
147
|
-
(3-6 条可客观核验标准;pptx/docx/pdf/xlsx 等文档必须包含"目标程序能干净打开、内容完整")
|
|
148
|
-
## 实现步骤
|
|
149
|
-
### Step N: {标题}
|
|
150
|
-
- **文件**: path — **操作**(new/edit/delete) — 改什么(精确到函数/行级)— 理由
|
|
151
|
-
## 验证命令
|
|
152
|
-
(编译/测试/手动核验项;产物若是 pptx/docx/pdf/xlsx,验证必须是
|
|
153
|
-
"目标程序能干净打开"级别的忠实校验,不能只是"某库能 import")
|
|
154
|
-
## 产出物清单
|
|
155
|
-
- [ ] 文件 A
|
|
156
|
-
capture:
|
|
157
|
-
text: plan_text
|
|
158
|
-
max_retries: 2
|
|
159
|
-
|
|
160
|
-
# ----------------------------------------------------------------
|
|
161
|
-
# 阶段 3:对抗分析、反问逼迫自证(adversarial-review 技能)
|
|
162
|
-
# ----------------------------------------------------------------
|
|
163
|
-
- id: stage3_adversarial
|
|
164
|
-
title: 阶段3/6·对抗性审查
|
|
165
|
-
skill: adversarial-review
|
|
166
|
-
maxTurns: 8 # 评审是有界任务,定界轮数
|
|
167
|
-
input: |
|
|
168
|
-
待审查的实现计划:
|
|
169
|
-
${plan_text}
|
|
170
|
-
|
|
171
|
-
按以下三节输出结论(下游 stage4 据此修订):
|
|
172
|
-
### 🔴 真问题(拿得出反例/实证)
|
|
173
|
-
### ⚪ 误报(其实成立,附证据)
|
|
174
|
-
### 🟡 待澄清(未充分举证)
|
|
175
|
-
capture: review_notes
|
|
176
|
-
onError: continue # 审稿失败降级:带占位意见继续,stage4 仍可定稿
|
|
177
|
-
max_retries: 1
|
|
178
|
-
|
|
179
|
-
# ----------------------------------------------------------------
|
|
180
|
-
# 阶段 4:方案重构确定 + 人工审批闸门(反馈分类路由)
|
|
181
|
-
# revise 产终版正文 → Write 落盘 ./PLAN.md → 审批小循环:
|
|
182
|
-
# 空反馈(选继续)→ 批准放行
|
|
183
|
-
# minor 反馈 → 就地修订 PLAN.md → 下一轮再确认
|
|
184
|
-
# fundamental 反馈 → 记入教训 + continue 打回 plan_loop 重新规划
|
|
185
|
-
# ----------------------------------------------------------------
|
|
186
|
-
- id: stage4_revise
|
|
187
|
-
title: 阶段4/6·修订定稿
|
|
188
|
-
llm: |
|
|
189
|
-
实现计划刚经过对抗性审查。审稿意见:
|
|
190
|
-
${review_notes}
|
|
191
|
-
|
|
192
|
-
原计划正文:
|
|
193
|
-
${plan_text}
|
|
194
|
-
|
|
195
|
-
请据审稿意见修订,输出**最终版完整计划正文**(不是 patch):
|
|
196
|
-
- 对每个真问题给出具体修复
|
|
197
|
-
- 对误报说明为何不改
|
|
198
|
-
- 保持「实现计划」的结构(假设/成功标准/实现步骤/验证命令/产出物清单)
|
|
199
|
-
- 直接输出正文,不要调用工具、不要额外说明
|
|
200
|
-
capture:
|
|
201
|
-
text: final_plan_text
|
|
202
|
-
max_retries: 2
|
|
203
|
-
|
|
204
|
-
- id: stage4_write_plan
|
|
205
|
-
title: 阶段4/6·写入 PLAN.md
|
|
206
|
-
tool: Write
|
|
207
|
-
args:
|
|
208
|
-
file_path: ./PLAN.md
|
|
209
|
-
content: "${final_plan_text}"
|
|
210
|
-
artifacts:
|
|
211
|
-
- PLAN.md
|
|
212
|
-
max_retries: 1
|
|
213
|
-
|
|
214
|
-
- id: stage4_approval
|
|
215
|
-
title: 阶段4/6·人工审批
|
|
216
|
-
type: loop
|
|
217
|
-
max_iterations: 5
|
|
218
|
-
as: _approval_round
|
|
219
|
-
do:
|
|
220
|
-
- id: approval_gate
|
|
221
|
-
title: 阶段4/6·等待你审批计划
|
|
222
|
-
type: pause
|
|
223
|
-
free_text: approve # 自由输入不 halt:捕获后由分类步决定走向
|
|
224
|
-
prompt: |
|
|
225
|
-
📋 计划已定稿:./PLAN.md —— 请 review 后选择。
|
|
226
|
-
选「继续执行」进入执行阶段;选「停止」保留现场(同目标重跑可断点续跑);
|
|
227
|
-
选「其他」输入修改意见:小调整会就地改 PLAN.md 再请你确认,
|
|
228
|
-
方向性变化会带着你的意见回到规划阶段重来。
|
|
229
|
-
capture:
|
|
230
|
-
free_text: approval_notes
|
|
231
|
-
|
|
232
|
-
- id: approval_mark
|
|
233
|
-
title: 阶段4/6·记录批准
|
|
234
|
-
type: set
|
|
235
|
-
when: "approval_notes == ''"
|
|
236
|
-
set:
|
|
237
|
-
plan_approved: true
|
|
238
|
-
- id: approval_pass
|
|
239
|
-
title: 阶段4/6·审批通过
|
|
240
|
-
type: break
|
|
241
|
-
when: "approval_notes == ''"
|
|
242
|
-
|
|
243
|
-
# 有反馈 → 分类(弱模型可跑的单轮 llm;失败降级走 minor=就地修订,最小破坏)
|
|
244
|
-
- id: classify_feedback
|
|
245
|
-
title: 阶段4/6·反馈分类
|
|
246
|
-
llm: |
|
|
247
|
-
用户在审批实现计划时给了修改意见,请判断它的性质:
|
|
248
|
-
- minor: 局部调整(改措辞/增删一步/换文件名/调参数/补充细节),就地修订计划即可
|
|
249
|
-
- fundamental: 方向性变化(换方案/换技术路线/目标变了/推翻核心假设),需要回到研究规划阶段重来
|
|
250
|
-
|
|
251
|
-
用户意见:
|
|
252
|
-
${approval_notes}
|
|
253
|
-
|
|
254
|
-
只输出 JSON 对象本身(不要 markdown 代码块、不要解释)。
|
|
255
|
-
output_schema:
|
|
256
|
-
type: object
|
|
257
|
-
properties:
|
|
258
|
-
category:
|
|
259
|
-
type: string
|
|
260
|
-
enum: [minor, fundamental]
|
|
261
|
-
required: [category]
|
|
262
|
-
capture:
|
|
263
|
-
category: feedback_category
|
|
264
|
-
onError: continue
|
|
265
|
-
max_retries: 2
|
|
266
|
-
|
|
267
|
-
- id: route_feedback
|
|
268
|
-
title: 阶段4/6·按反馈路由
|
|
269
|
-
type: branch
|
|
270
|
-
condition: "feedback_category == 'fundamental'"
|
|
271
|
-
then:
|
|
272
|
-
# 方向性变化:意见记入教训(下一轮 stage1/2 直接看到),打回外层 plan_loop。
|
|
273
|
-
# 引擎已同时把这条反馈并入贯穿锚定(goalSupplements),每步都不会忘。
|
|
274
|
-
- id: feedback_to_learnings
|
|
275
|
-
title: 阶段4/6·记录方向性反馈
|
|
276
|
-
type: set
|
|
277
|
-
set:
|
|
278
|
-
learnings_text: "${learnings_text}- 用户审批反馈(方向性,必须遵从):${approval_notes}\n"
|
|
279
|
-
- id: back_to_planning
|
|
280
|
-
title: 阶段4/6·打回重新规划
|
|
281
|
-
type: continue
|
|
282
|
-
target: plan_loop
|
|
283
|
-
else:
|
|
284
|
-
# 局部调整:就地修订 PLAN.md,审批小循环自然进入下一轮再请确认
|
|
285
|
-
- id: revise_with_feedback
|
|
286
|
-
title: 阶段4/6·按反馈修订计划
|
|
287
|
-
llm: |
|
|
288
|
-
用户审批计划时给了修改意见。请把意见合入计划,输出**更新后的完整 PLAN.md 正文**。
|
|
289
|
-
|
|
290
|
-
## 用户修改意见
|
|
291
|
-
${approval_notes}
|
|
292
|
-
|
|
293
|
-
## 当前计划
|
|
294
|
-
${final_plan_text}
|
|
295
|
-
|
|
296
|
-
要求:
|
|
297
|
-
- 必须实质采纳用户意见;如果用户要求使用某 skill、工具、格式或实现方式,计划步骤和验证命令里必须体现。
|
|
298
|
-
- 保持「假设 / 成功标准 / 实现步骤 / 验证命令 / 产出物清单」结构。
|
|
299
|
-
- 只输出更新后的计划正文,不要解释。
|
|
300
|
-
capture:
|
|
301
|
-
text: final_plan_text
|
|
302
|
-
max_retries: 2
|
|
303
|
-
- id: write_revised_plan
|
|
304
|
-
title: 阶段4/6·回写 PLAN.md
|
|
305
|
-
tool: Write
|
|
306
|
-
args:
|
|
307
|
-
file_path: ./PLAN.md
|
|
308
|
-
content: "${final_plan_text}"
|
|
309
|
-
artifacts:
|
|
310
|
-
- PLAN.md
|
|
311
|
-
max_retries: 1
|
|
312
|
-
|
|
313
|
-
# 审批小循环 5 轮仍无明确同意 → 诚实停(现场保留可续跑)
|
|
314
|
-
- id: ensure_approved
|
|
315
|
-
title: 阶段4/6·审批确认
|
|
316
|
-
type: assert
|
|
317
|
-
condition: "plan_approved == true"
|
|
318
|
-
onFail: "审批多轮未获明确同意,工作流停止(现场已保留,重跑同目标可从断点续跑)。"
|
|
319
|
-
|
|
320
|
-
# ----------------------------------------------------------------
|
|
321
|
-
# 阶段 5-6:执行-验收内层闭环(审批通过后只许向前,绝不回规划阶段)
|
|
322
|
-
# 验收不合格 → 累积阻塞原因 → 带原因直接重新执行(计划/审批保留);
|
|
323
|
-
# 验收通过 → break target:plan_loop 直达收尾报告;
|
|
324
|
-
# 穷尽 3 轮 → 出循环后 ensure_executed 诚实 halt(现场保留可续跑)。
|
|
325
|
-
# ----------------------------------------------------------------
|
|
326
|
-
- type: loop
|
|
327
|
-
id: exec_loop
|
|
328
|
-
title: 阶段5-6·执行验收闭环
|
|
329
|
-
max_iterations: 3
|
|
330
|
-
as: _exec_round
|
|
331
|
-
do:
|
|
332
|
-
- id: stage5_execute
|
|
333
|
-
title: 阶段5/6·执行计划
|
|
334
|
-
agent: |
|
|
335
|
-
你是资深工程师,执行一份已通过审批的实现计划。先 Read ./PLAN.md 了解全部步骤。
|
|
336
|
-
|
|
337
|
-
${exec_feedback != '' ? '## ⚠️ 上轮执行验收未通过(本轮必须重点补完,产物已部分存在时增量补齐,不要从零重做)\n' + exec_feedback : ''}
|
|
338
|
-
|
|
339
|
-
执行要求:
|
|
340
|
-
1. 计划若提到用某 skill(pptx/docx/pdf/xlsx 等),**先 Read 对应 SKILL.md 按其指引做**。
|
|
341
|
-
2. 每完成一个主要步骤简要汇报进度。
|
|
342
|
-
3. 遇到计划未预见的情况,自行判断合理方案继续推进(不中断等待)。
|
|
343
|
-
4. 产物若是结构化/二进制文档(pptx/docx/pdf/xlsx):
|
|
344
|
-
- 用 JS 生成器(PptxGenJS 等)时**必须用 Node 跑(node / npx tsx),不要用 bun run**
|
|
345
|
-
——Bun 下打包器会产出 OPC 非合规包(含 ZIP 目录条目、Content_Types 不在首位),
|
|
346
|
-
Office 打开会提示"修复"并丢内容;
|
|
347
|
-
- 生成后必须做**忠实校验**(按 skill 的 OPC 合规检查脚本),
|
|
348
|
-
「某库能重新打开」不等于「目标程序能干净打开」,后者才算数。
|
|
349
|
-
5. 计划确实不可行(极端缺陷/前置不存在)时,诚实说明卡点——
|
|
350
|
-
不要伪造「已完成」,也不要输出任何 GIVEUP/__AGENT__ 之类内部标记
|
|
351
|
-
(即便要写也必须打碎写,完整写出会命中引擎的放弃检测)。
|
|
352
|
-
6. ⚠️ 每条消息要么包含工具调用、要么是最终完成报告;宣告「接下来我将…」
|
|
353
|
-
后停下会被当作完成并被独立验收打回,浪费一整轮。
|
|
354
|
-
maxTurns: 100
|
|
355
|
-
capture:
|
|
356
|
-
text: execution_report
|
|
357
|
-
onError: recover
|
|
358
|
-
max_retries: 2
|
|
359
|
-
|
|
360
|
-
# ------------------------------------------------------------
|
|
361
|
-
# 阶段 6:执行结果、产出与用户目标比对(独立验收,亲自核验)
|
|
362
|
-
# 验收 + 完成报告一体:summary 字段由验收员基于本轮真实命令输出撰写,
|
|
363
|
-
# 末尾 final_report 直接 echo(不再单跑一个无工具的 summary llm 步)。
|
|
364
|
-
# ------------------------------------------------------------
|
|
365
|
-
- id: stage6_assess
|
|
366
|
-
title: 阶段6/6·独立验收
|
|
367
|
-
llm: |
|
|
368
|
-
你是独立验收员。不要轻信执行 agent 的自述,也不要把"写了一部分"当完成。
|
|
369
|
-
对照"成功标准"和当前文件系统,判断用户目标是否**真实达成**。
|
|
370
|
-
|
|
371
|
-
请严格执行:
|
|
372
|
-
1. 先 Read ./PLAN.md,按其中的成功标准和产出物清单核验。
|
|
373
|
-
2. 用 Bash/Read/Glob 亲自核实核心产物是否真实存在、是否满足每条成功标准。
|
|
374
|
-
3. 产物是 pptx/docx/pdf/xlsx 等 OOXML 时,**必须用忠实的 OPC 合规校验**
|
|
375
|
-
(检查无 ZIP 目录条目、[Content_Types].xml 在首位、关系都解析、无 0 字节媒体),
|
|
376
|
-
而不是只用 python-pptx 之类宽容库"能打开就算过"——那正是上次损坏溜过验收的漏洞。
|
|
377
|
-
4. 任一成功标准未满足、产物缺失、校验失败、或还需用户确认,则 qualified=false 并写明 blocking_reason。
|
|
378
|
-
5. 只有全部成功标准都经你亲自核验通过,才 qualified=true。
|
|
379
|
-
6. summary 字段写最终完成报告(qualified=false 时写当前进展与卡点):
|
|
380
|
-
- 产出物位置和内容(文件路径 + 一句话)
|
|
381
|
-
- 验证结果(必须基于你本轮真实运行的命令输出,不得转述执行 agent 的自述)
|
|
382
|
-
- 遗留问题(如有)
|
|
383
|
-
|
|
384
|
-
只输出 JSON 对象本身(不要 markdown、不要解释正文)。
|
|
385
|
-
context_files:
|
|
386
|
-
- path: ./PLAN.md
|
|
387
|
-
hint: 实现计划与产出物清单
|
|
388
|
-
allowed_tools: [Read, Bash, Glob]
|
|
389
|
-
output_schema:
|
|
390
|
-
type: object
|
|
391
|
-
properties:
|
|
392
|
-
qualified:
|
|
393
|
-
type: boolean
|
|
394
|
-
blocking_reason:
|
|
395
|
-
type: string
|
|
396
|
-
summary:
|
|
397
|
-
type: string
|
|
398
|
-
required: [qualified, blocking_reason, summary]
|
|
399
|
-
capture:
|
|
400
|
-
qualified: qualified
|
|
401
|
-
blocking_reason: blocking_reason
|
|
402
|
-
summary: assess_summary
|
|
403
|
-
maxTurns: 8
|
|
404
|
-
max_retries: 1
|
|
405
|
-
|
|
406
|
-
# 记录本轮裁决(setGlobal,出循环后仍可读,供 final assert / echo 用)
|
|
407
|
-
- id: stage6_record
|
|
408
|
-
title: 阶段6/6·记录裁决
|
|
409
|
-
type: set
|
|
410
|
-
set:
|
|
411
|
-
final_qualified: "${qualified}"
|
|
412
|
-
final_blocking: "${blocking_reason}"
|
|
413
|
-
final_summary: "${assess_summary}"
|
|
414
|
-
|
|
415
|
-
# 质量门:合格 → break 穿透直达 plan_loop(收尾报告);
|
|
416
|
-
# 不合格 → echo 持久可见 + 累积阻塞原因 → exec_loop 下一轮带原因重执行。
|
|
417
|
-
# ⚠️ 绝不打回规划阶段——用户已批准的计划只许向前。
|
|
418
|
-
- id: exec_gate
|
|
419
|
-
title: 阶段6/6·质量门
|
|
420
|
-
type: branch
|
|
421
|
-
condition: "qualified == true"
|
|
422
|
-
then:
|
|
423
|
-
- id: pass_break
|
|
424
|
-
title: 阶段6/6·验收通过
|
|
425
|
-
type: break
|
|
426
|
-
target: plan_loop
|
|
427
|
-
else:
|
|
428
|
-
- id: rework_notice
|
|
429
|
-
title: 阶段6/6·验收不合格(重新执行)
|
|
430
|
-
type: echo
|
|
431
|
-
message: |
|
|
432
|
-
⚠️ 第 ${_exec_round + 1}/3 轮执行验收不合格:${blocking_reason}
|
|
433
|
-
已批准的计划保持不变,带着上述原因重新执行(不会回到规划阶段、不需重新审批)。
|
|
434
|
-
- id: accumulate_exec_feedback
|
|
435
|
-
title: 阶段6/6·累积阻塞原因
|
|
436
|
-
type: set
|
|
437
|
-
set:
|
|
438
|
-
exec_feedback: "${exec_feedback}- 第 ${_exec_round + 1} 轮验收不合格:${blocking_reason}\n"
|
|
439
|
-
|
|
440
|
-
# exec_loop 穷尽 3 轮仍不合格(合格时 break 直达 plan_loop,到不了这里)
|
|
441
|
-
# → 诚实 halt:绝不静默打回 stage1 重新规划(用户裁决:已批准只许向前)。
|
|
442
|
-
- id: ensure_executed
|
|
443
|
-
title: 阶段5-6·执行兜底检查
|
|
444
|
-
type: assert
|
|
445
|
-
condition: "qualified == true"
|
|
446
|
-
onFail: "已批准的计划执行 3 轮仍未通过验收,工作流诚实停止(现场与 PLAN.md 保留,重跑同目标可从断点续跑;也可调整目标后重来)。最后阻塞原因:${blocking_reason}"
|
|
447
|
-
|
|
448
|
-
# ================================================================
|
|
449
|
-
# 出循环后:唯一正常到达路径 = exec_gate 验收通过 break 穿透至此。
|
|
450
|
-
# plan_loop 穷尽(用户连续方向性打回 3 次)时 final_qualified 仍 false → 诚实 halt。
|
|
451
|
-
# ================================================================
|
|
452
|
-
- id: ensure_qualified
|
|
453
|
-
title: 收尾·验收兜底检查
|
|
454
|
-
type: assert
|
|
455
|
-
# stage6_record 的 final_qualified: "${qualified}" 经 set 单表达式类型保留(引擎特性)
|
|
456
|
-
# 仍是布尔,不再需要 == 'true' 字符串防御
|
|
457
|
-
condition: "final_qualified == true"
|
|
458
|
-
onFail: "规划闭环结束但未有通过验收的执行轮(多为连续方向性打回耗尽轮次)。现场保留,调整后可重跑。最后阻塞原因:${final_blocking}"
|
|
459
|
-
|
|
460
|
-
# ================================================================
|
|
461
|
-
# 完成报告:确定性输出验收员的总结(echo 不烧 LLM、零幻觉——
|
|
462
|
-
# 内容来自 stage6 验收员本轮真实命令核验的产物)
|
|
463
|
-
# ================================================================
|
|
464
|
-
- id: final_report
|
|
465
|
-
title: 完成·输出报告
|
|
466
|
-
type: echo
|
|
467
|
-
message: |
|
|
468
|
-
✅ 工作流完成(验收通过)。
|
|
469
|
-
|
|
470
|
-
${final_summary}
|