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.
Files changed (472) hide show
  1. package/README.md +6 -5
  2. package/package.json +62 -5
  3. package/plugins/computer_use/.claude-plugin/plugin.json +1 -1
  4. package/plugins/cron-runner/src/commands.js +4 -4
  5. package/plugins/cron-runner/src/commands.ts +4 -4
  6. package/plugins/workflow-runner/.claude-plugin/plugin.json +2 -2
  7. package/plugins/workflow-runner/commands/workflow.md +57 -90
  8. package/plugins/workflow-runner/commands/workflows.md +4 -4
  9. package/plugins/workflow-runner/plugin.js +24 -13
  10. package/plugins/workflow-runner/plugin.ts +28 -13
  11. package/plugins/workflow-runner/src/discovery.js +160 -0
  12. package/plugins/workflow-runner/src/discovery.ts +194 -0
  13. package/plugins/workflow-runner/src/goalAnchor.js +53 -0
  14. package/plugins/workflow-runner/src/goalAnchor.ts +59 -0
  15. package/plugins/workflow-runner/src/index.js +204 -185
  16. package/plugins/workflow-runner/src/index.ts +249 -224
  17. package/plugins/workflow-runner/src/inputCoercion.js +40 -0
  18. package/plugins/workflow-runner/src/inputCoercion.ts +43 -0
  19. package/plugins/workflow-runner/src/journal.js +224 -0
  20. package/plugins/workflow-runner/src/journal.ts +274 -0
  21. package/plugins/workflow-runner/src/jsonSchema.js +132 -0
  22. package/plugins/workflow-runner/src/jsonSchema.ts +162 -0
  23. package/plugins/workflow-runner/src/moduleResolution.js +64 -0
  24. package/plugins/workflow-runner/src/moduleResolution.ts +71 -0
  25. package/plugins/workflow-runner/src/resourceInputs.js +220 -0
  26. package/plugins/workflow-runner/src/resourceInputs.ts +300 -0
  27. package/plugins/workflow-runner/src/runner.js +404 -467
  28. package/plugins/workflow-runner/src/runner.ts +491 -535
  29. package/plugins/workflow-runner/src/runtime/config.js +46 -0
  30. package/plugins/workflow-runner/src/runtime/config.ts +69 -0
  31. package/plugins/workflow-runner/src/runtime/context.js +1304 -0
  32. package/plugins/workflow-runner/src/runtime/context.ts +1786 -0
  33. package/plugins/workflow-runner/src/runtime/exec.js +34 -0
  34. package/plugins/workflow-runner/src/runtime/exec.ts +53 -0
  35. package/plugins/workflow-runner/src/runtime/flow.js +8 -0
  36. package/plugins/workflow-runner/src/runtime/flow.ts +12 -0
  37. package/plugins/workflow-runner/src/runtime/fs.js +27 -0
  38. package/plugins/workflow-runner/src/runtime/fs.ts +41 -0
  39. package/plugins/workflow-runner/src/runtime/model.js +6 -0
  40. package/plugins/workflow-runner/src/runtime/model.ts +8 -0
  41. package/plugins/workflow-runner/src/runtime/output.js +7 -0
  42. package/plugins/workflow-runner/src/runtime/output.ts +21 -0
  43. package/plugins/workflow-runner/src/runtime/scheduler.js +141 -0
  44. package/plugins/workflow-runner/src/runtime/scheduler.ts +166 -0
  45. package/plugins/workflow-runner/src/runtime/state.js +16 -0
  46. package/plugins/workflow-runner/src/runtime/state.ts +19 -0
  47. package/plugins/workflow-runner/src/runtime/tools.js +3 -0
  48. package/plugins/workflow-runner/src/runtime/tools.ts +6 -0
  49. package/plugins/workflow-runner/src/sandbox.js +141 -0
  50. package/plugins/workflow-runner/src/sandbox.ts +182 -0
  51. package/plugins/workflow-runner/src/scriptGuard.d.mts +38 -0
  52. package/plugins/workflow-runner/src/scriptGuard.mjs +449 -0
  53. package/plugins/workflow-runner/src/taskIdentity.js +172 -152
  54. package/plugins/workflow-runner/src/taskIdentity.ts +233 -200
  55. package/plugins/workflow-runner/src/toolRuntime.js +29 -8
  56. package/plugins/workflow-runner/src/toolRuntime.ts +36 -11
  57. package/plugins/workflow-runner/src/types.js +7 -105
  58. package/plugins/workflow-runner/src/types.ts +155 -520
  59. package/plugins/workflow-runner/src/util.js +47 -0
  60. package/plugins/workflow-runner/src/util.ts +51 -0
  61. package/plugins/workflow-runner/src/workflowContext.js +20 -0
  62. package/plugins/workflow-runner/src/workflowContext.ts +58 -0
  63. package/plugins/workflow-runner/src/workflowDependencies.js +36 -0
  64. package/plugins/workflow-runner/src/workflowDependencies.ts +59 -0
  65. package/plugins/workflow-runner/src/workflowFingerprint.js +118 -0
  66. package/plugins/workflow-runner/src/workflowFingerprint.ts +122 -0
  67. package/plugins/workflow-runner/src/workflowState.js +542 -469
  68. package/plugins/workflow-runner/src/workflowState.ts +639 -589
  69. package/plugins/workflow-runner/test/api.test.ts +223 -0
  70. package/plugins/workflow-runner/test/apiCapabilities.test.ts +614 -0
  71. package/plugins/workflow-runner/test/apiConcurrencyGate.test.ts +104 -0
  72. package/plugins/workflow-runner/test/apiEcho.test.ts +210 -0
  73. package/plugins/workflow-runner/test/apiReadText.test.ts +178 -0
  74. package/plugins/workflow-runner/test/apiResourceLedger.test.ts +184 -0
  75. package/plugins/workflow-runner/test/childWorkflow.test.ts +304 -0
  76. package/plugins/workflow-runner/test/discovery.test.ts +234 -0
  77. package/plugins/workflow-runner/test/goalAnchor.test.ts +106 -0
  78. package/plugins/workflow-runner/test/goalController.test.ts +317 -0
  79. package/plugins/workflow-runner/test/journalLanes.test.ts +198 -0
  80. package/plugins/workflow-runner/test/listResources.test.ts +106 -0
  81. package/plugins/workflow-runner/test/resourceInputs.test.ts +294 -0
  82. package/plugins/workflow-runner/test/sandbox.test.ts +126 -0
  83. package/plugins/workflow-runner/test/scheduler.test.ts +70 -0
  84. package/plugins/workflow-runner/test/scriptGuard.test.ts +276 -0
  85. package/plugins/workflow-runner/test/skillDocSync.test.ts +78 -0
  86. package/plugins/workflow-runner/test/taskIdentity.test.ts +288 -179
  87. package/plugins/workflow-runner/test/workflowFingerprint.test.ts +106 -0
  88. package/plugins/workflow-runner/test/workflowState.test.ts +429 -0
  89. package/skills/pptx/examples/assets/cover-bg.svg +23 -0
  90. package/skills/pptx/examples/assets/icon-spark.svg +5 -0
  91. package/skills/skill-creator/scripts/run_eval.py +3 -2
  92. package/skills/ui-design/SKILL.md +5 -2
  93. package/skills/ui-design/references/layout-composition.md +1 -1
  94. package/skills/workflow-creator/SKILL.md +344 -0
  95. package/skills/workflow-creator/assets/template/workflow.mjs +48 -0
  96. package/skills/workflow-creator/references/api.md +216 -0
  97. package/skills/workflow-creator/references/migration.md +103 -0
  98. package/skills/workflow-creator/references/patterns.md +779 -0
  99. package/skills/workflow-creator/scripts/list-resources.mjs +205 -0
  100. package/skills/workflow-creator/scripts/scaffold.mjs +148 -0
  101. package/skills/workflow-creator/scripts/validate.mjs +275 -0
  102. package/skills/workflow-creator/scripts/workflow-creator.test.mjs +82 -0
  103. package/src/advisor/advisorCoordinator.js +503 -0
  104. package/src/advisor/advisorCoordinator.ts +657 -0
  105. package/src/cli/configMenu.tsx +0 -1
  106. package/src/cli/print.js +44 -6
  107. package/src/cli/print.ts +73 -4
  108. package/src/cli/streamJson.js +5 -6
  109. package/src/cli/streamJson.ts +8 -4
  110. package/src/cli/wizards/advisorWizard.js +4 -2
  111. package/src/cli/wizards/advisorWizard.tsx +8 -2
  112. package/src/cli/wizards/contextAdvisorWizard.js +5 -4
  113. package/src/cli/wizards/contextAdvisorWizard.tsx +7 -6
  114. package/src/collaboration/taskFlow.js +115 -0
  115. package/src/collaboration/taskFlow.ts +169 -0
  116. package/src/config/configDefaults.js +41 -1
  117. package/src/config/configDefaults.ts +43 -1
  118. package/src/config/configDiagnostics.ts +2 -2
  119. package/src/config/configFile.js +40 -9
  120. package/src/config/configFile.ts +60 -11
  121. package/src/config/configService.js +443 -74
  122. package/src/config/configService.ts +723 -142
  123. package/src/config/numericLimits.js +22 -0
  124. package/src/config/numericLimits.ts +24 -0
  125. package/src/config.js +1 -0
  126. package/src/config.ts +3 -2
  127. package/src/context/budgetPlan.js +1 -1
  128. package/src/context/budgetPlan.ts +1 -1
  129. package/src/context/compact.js +7 -2
  130. package/src/context/compact.ts +9 -2
  131. package/src/context/microCompactLite.js +212 -13
  132. package/src/context/microCompactLite.ts +261 -12
  133. package/src/context/sessionRegistry.js +8 -1
  134. package/src/context/sessionRegistry.ts +18 -5
  135. package/src/context/toolResultArchive.js +72 -0
  136. package/src/context/toolResultArchive.ts +95 -0
  137. package/src/goal/errors.js +8 -0
  138. package/src/goal/errors.ts +18 -0
  139. package/src/goal/goalRuntime.js +344 -0
  140. package/src/goal/goalRuntime.ts +466 -0
  141. package/src/goal/goalStore.js +200 -0
  142. package/src/goal/goalStore.ts +219 -0
  143. package/src/goal/index.js +4 -0
  144. package/src/goal/index.ts +4 -0
  145. package/src/goal/statusMapping.js +71 -0
  146. package/src/goal/statusMapping.ts +95 -0
  147. package/src/goal/types.js +7 -0
  148. package/src/goal/types.ts +179 -0
  149. package/src/goal/workflowController.js +306 -0
  150. package/src/goal/workflowController.ts +360 -0
  151. package/src/harness/evidenceLedger.js +2 -0
  152. package/src/harness/evidenceLedger.ts +1 -0
  153. package/src/harness/stallGuard.js +9 -3
  154. package/src/harness/stallGuard.ts +7 -3
  155. package/src/images/imageResolver.js +161 -0
  156. package/src/images/imageResolver.ts +189 -0
  157. package/src/infra/verification.js +56 -20
  158. package/src/infra/verification.ts +87 -20
  159. package/src/llm/client.js +79 -21
  160. package/src/llm/client.ts +182 -35
  161. package/src/llm/gatewayClient.js +201 -0
  162. package/src/llm/gatewayClient.ts +299 -0
  163. package/src/llm/messageProvenance.js +46 -0
  164. package/src/llm/messageProvenance.ts +58 -0
  165. package/src/llm/modelProvider.js +1 -0
  166. package/src/llm/modelProvider.ts +22 -0
  167. package/src/llm/providers/anthropicFormat.js +108 -1
  168. package/src/llm/providers/anthropicFormat.ts +115 -4
  169. package/src/llm/providers/openaiFormat.js +9 -0
  170. package/src/llm/providers/openaiFormat.ts +12 -3
  171. package/src/loop.js +319 -54
  172. package/src/loop.ts +373 -57
  173. package/src/main.js +4 -1
  174. package/src/main.tsx +4 -1
  175. package/src/managedExecution/index.js +2 -0
  176. package/src/managedExecution/index.ts +2 -0
  177. package/src/managedExecution/registry.js +15 -0
  178. package/src/managedExecution/registry.ts +20 -0
  179. package/src/managedExecution/types.js +1 -0
  180. package/src/managedExecution/types.ts +86 -0
  181. package/src/modelRef.js +9 -0
  182. package/src/modelRef.ts +31 -0
  183. package/src/multimodal.js +14 -28
  184. package/src/multimodal.ts +17 -33
  185. package/src/net/lanDiscovery.js +65 -0
  186. package/src/net/lanDiscovery.ts +82 -0
  187. package/src/plugin-sdk.js +28 -3
  188. package/src/plugin-sdk.ts +39 -6
  189. package/src/plugins/pluginApi.ts +16 -1
  190. package/src/plugins/pluginLoader.js +4 -0
  191. package/src/plugins/pluginLoader.ts +6 -0
  192. package/src/plugins/pluginRunner.js +152 -9
  193. package/src/plugins/pluginRunner.ts +186 -8
  194. package/src/plugins/slashFallback.js +113 -0
  195. package/src/plugins/slashFallback.ts +137 -0
  196. package/src/prompts/policyRegistry.js +15 -8
  197. package/src/prompts/policyRegistry.ts +18 -8
  198. package/src/prompts/promptAssembly.js +103 -12
  199. package/src/prompts/promptAssembly.ts +114 -12
  200. package/src/prompts/skillList.js +21 -3
  201. package/src/prompts/skillList.ts +27 -2
  202. package/src/prompts/stableSystemPrompt.js +18 -0
  203. package/src/prompts/stableSystemPrompt.ts +33 -0
  204. package/src/runtime/agentRuntimeContext.js +8 -2
  205. package/src/runtime/agentRuntimeContext.ts +17 -4
  206. package/src/session/runAgentTurn.js +78 -12
  207. package/src/session/runAgentTurn.ts +105 -23
  208. package/src/session/runTurn.js +10 -9
  209. package/src/session/runTurn.ts +17 -8
  210. package/src/session/sessionState.ts +2 -0
  211. package/src/team/auth.js +186 -0
  212. package/src/team/auth.ts +298 -0
  213. package/src/team/cli.js +105 -0
  214. package/src/team/cli.ts +122 -0
  215. package/src/team/onlineToolContract.js +64 -0
  216. package/src/team/onlineToolContract.ts +109 -0
  217. package/src/team/toolPolicy.js +36 -0
  218. package/src/team/toolPolicy.ts +75 -0
  219. package/src/tools/advisor/advisor.js +148 -37
  220. package/src/tools/advisor/advisor.ts +161 -38
  221. package/src/tools/advisor/advisorDecision.js +71 -0
  222. package/src/tools/advisor/advisorDecision.ts +85 -0
  223. package/src/tools/agent/agent.js +18 -5
  224. package/src/tools/agent/agent.ts +21 -7
  225. package/src/tools/agent/agentControl.js +246 -0
  226. package/src/tools/agent/agentControl.ts +284 -0
  227. package/src/tools/agent/agentTaskService.js +40 -1
  228. package/src/tools/agent/agentTaskService.ts +44 -1
  229. package/src/tools/agent/agentTypes.js +14 -2
  230. package/src/tools/agent/agentTypes.ts +15 -2
  231. package/src/tools/applypatch/applyPatch.js +362 -0
  232. package/src/tools/applypatch/applyPatch.ts +428 -0
  233. package/src/tools/bash/bash.js +70 -18
  234. package/src/tools/bash/bash.ts +75 -20
  235. package/src/tools/capabilities.js +10 -5
  236. package/src/tools/capabilities.ts +10 -5
  237. package/src/tools/computeruse/computerIntent.js +32 -0
  238. package/src/tools/computeruse/computerIntent.ts +46 -0
  239. package/src/tools/computeruse/telemetryLog.js +12 -0
  240. package/src/tools/computeruse/telemetryLog.ts +16 -0
  241. package/src/tools/computeruse/vision/telemetry.js +1 -0
  242. package/src/tools/computeruse/vision/telemetry.ts +1 -0
  243. package/src/tools/effectiveToolSet.js +4 -0
  244. package/src/tools/effectiveToolSet.ts +4 -0
  245. package/src/tools/index.js +21 -2
  246. package/src/tools/index.ts +33 -2
  247. package/src/tools/powershell/powershell.js +18 -1
  248. package/src/tools/powershell/powershell.ts +18 -2
  249. package/src/tools/presentresult/presentresult.js +6 -15
  250. package/src/tools/presentresult/presentresult.ts +6 -15
  251. package/src/tools/read/read.js +69 -11
  252. package/src/tools/read/read.ts +70 -11
  253. package/src/tools/shared/fileUtils.js +1 -2
  254. package/src/tools/shared/fileUtils.ts +1 -2
  255. package/src/tools/shared/permanentDeleteGuard.js +34 -3
  256. package/src/tools/shared/permanentDeleteGuard.ts +43 -6
  257. package/src/tools/shared/toolOutputStore.js +23 -1
  258. package/src/tools/shared/toolOutputStore.ts +22 -1
  259. package/src/tools/skill/skill.js +9 -3
  260. package/src/tools/skill/skill.ts +8 -4
  261. package/src/tools/toolPromptGuides.js +117 -0
  262. package/src/tools/toolPromptGuides.ts +137 -0
  263. package/src/tools/webbrowser/agentBrowserPath.js +19 -9
  264. package/src/tools/webbrowser/agentBrowserPath.ts +70 -28
  265. package/src/tools/webbrowser/browser.js +27 -11
  266. package/src/tools/webbrowser/browser.ts +68 -24
  267. package/src/tools/webbrowser/browserAutomation.js +329 -0
  268. package/src/tools/webbrowser/browserAutomation.ts +467 -0
  269. package/src/tools/webbrowser/browserAxState.js +97 -0
  270. package/src/tools/webbrowser/browserAxState.ts +142 -0
  271. package/src/tools/webbrowser/browserBatch.js +1578 -0
  272. package/src/tools/webbrowser/browserBatch.ts +2382 -0
  273. package/src/tools/webbrowser/browserCdp.js +208 -0
  274. package/src/tools/webbrowser/browserCdp.ts +255 -0
  275. package/src/tools/webbrowser/browserConditions.js +24 -0
  276. package/src/tools/webbrowser/browserConditions.ts +45 -0
  277. package/src/tools/webbrowser/browserContent.js +281 -0
  278. package/src/tools/webbrowser/browserContent.ts +438 -0
  279. package/src/tools/webbrowser/browserControl.js +131 -30
  280. package/src/tools/webbrowser/browserControl.ts +210 -50
  281. package/src/tools/webbrowser/browserDaemon.js +22 -14
  282. package/src/tools/webbrowser/browserDaemon.ts +54 -21
  283. package/src/tools/webbrowser/browserFrames.js +47 -0
  284. package/src/tools/webbrowser/browserFrames.ts +54 -0
  285. package/src/tools/webbrowser/browserInteractionResolver.js +17 -0
  286. package/src/tools/webbrowser/browserInteractionResolver.ts +40 -0
  287. package/src/tools/webbrowser/browserLocator.js +140 -0
  288. package/src/tools/webbrowser/browserLocator.ts +194 -0
  289. package/src/tools/webbrowser/browserOutcome.js +10 -17
  290. package/src/tools/webbrowser/browserOutcome.ts +48 -31
  291. package/src/tools/webbrowser/browserRecovery.js +58 -0
  292. package/src/tools/webbrowser/browserRecovery.ts +83 -0
  293. package/src/tools/webbrowser/browserRunRegistry.js +35 -3
  294. package/src/tools/webbrowser/browserRunRegistry.ts +91 -15
  295. package/src/tools/webbrowser/browserService.js +28 -2
  296. package/src/tools/webbrowser/browserService.ts +49 -9
  297. package/src/tools/webbrowser/browserStream.js +132 -33
  298. package/src/tools/webbrowser/browserStream.ts +224 -50
  299. package/src/tools/webbrowser/browserTabs.js +48 -15
  300. package/src/tools/webbrowser/browserTabs.ts +178 -96
  301. package/src/tools/webbrowser/webbrowser.js +683 -144
  302. package/src/tools/webbrowser/webbrowser.ts +979 -236
  303. package/src/tools/webfetch/preapproved.js +0 -2
  304. package/src/tools/webfetch/preapproved.ts +0 -2
  305. package/src/tools/websearch/websearch.js +129 -8
  306. package/src/tools/websearch/websearch.ts +138 -6
  307. package/src/types.ts +450 -42
  308. package/src/ui/App.js +377 -58
  309. package/src/ui/App.tsx +576 -111
  310. package/src/ui/LiveArea.js +14 -8
  311. package/src/ui/LiveArea.tsx +14 -10
  312. package/src/ui/MessageList.js +63 -20
  313. package/src/ui/MessageList.tsx +101 -16
  314. package/src/ui/ModelPicker.js +7 -4
  315. package/src/ui/ModelPicker.tsx +55 -8
  316. package/src/ui/hooks/useChat.js +152 -163
  317. package/src/ui/hooks/useChat.ts +396 -334
  318. package/src/ui/loginCommand.js +56 -0
  319. package/src/ui/loginCommand.ts +63 -0
  320. package/src/ui/toolProgress.js +41 -0
  321. package/src/ui/toolProgress.ts +44 -0
  322. package/src/web/browserBridge.js +20 -2
  323. package/src/web/browserBridge.ts +20 -2
  324. package/src/web/protocol.ts +1897 -194
  325. package/workflows/adaptive-research/workflow.mjs +86 -0
  326. package/workflows/e2e-capabilities/workflow.mjs +102 -0
  327. package/workflows/e2e-llm/workflow.mjs +52 -0
  328. package/workflows/e2e-smoke/workflow.mjs +59 -0
  329. package/workflows/e2e-vision-schema/README.md +48 -0
  330. package/workflows/e2e-vision-schema/workflow.mjs +149 -0
  331. package/workflows/e2e-write-greet/workflow.mjs +37 -0
  332. package/workflows/file-census/README.md +14 -0
  333. package/workflows/file-census/scripts/.gitkeep +2 -0
  334. package/workflows/file-census/workflow.mjs +110 -0
  335. package/workflows/goal/README.md +166 -0
  336. package/workflows/goal/prompts/audit.md +57 -0
  337. package/workflows/goal/prompts/contract.md +56 -0
  338. package/workflows/goal/prompts/iterate.md +37 -0
  339. package/workflows/goal/workflow.mjs +501 -0
  340. package/workflows/illustrate/README.md +90 -0
  341. package/workflows/illustrate/assets/engines.json +20 -0
  342. package/workflows/illustrate/assets/extract-baidu.js +21 -0
  343. package/workflows/illustrate/assets/extract-bing.js +33 -0
  344. package/workflows/illustrate/assets/extract-google.js +31 -0
  345. package/workflows/illustrate/workflow.mjs +301 -0
  346. package/workflows/plan/workflow.mjs +389 -0
  347. package/workflows/question-crops/README.md +35 -0
  348. package/workflows/question-crops/prompts/inventory.md +23 -0
  349. package/workflows/question-crops/scripts/image-ops.mjs +305 -0
  350. package/workflows/question-crops/scripts/image-ops.test.mjs +95 -0
  351. package/workflows/question-crops/workflow.mjs +172 -0
  352. package/workflows/ralph-loop/workflow.mjs +162 -0
  353. package/workflows/research/DESIGN.md +449 -0
  354. package/workflows/research/README.md +74 -0
  355. package/workflows/research/prompts/s0-goal.md +43 -0
  356. package/workflows/research/prompts/s1-early-exit.md +22 -0
  357. package/workflows/research/prompts/s1-map.md +58 -0
  358. package/workflows/research/prompts/s2-options.md +53 -0
  359. package/workflows/research/prompts/s3-deep-dive.md +56 -0
  360. package/workflows/research/prompts/s4-verify.md +74 -0
  361. package/workflows/research/prompts/s5-synthesis.md +81 -0
  362. package/workflows/research/prompts/s5b-fill-gaps.md +32 -0
  363. package/workflows/research/prompts/s6-package.md +32 -0
  364. package/workflows/research/scripts/build-report.mjs +98 -0
  365. package/workflows/research/workflow.mjs +288 -0
  366. package/workflows/wechat-reading-shots/prompts/collect-params.md +16 -0
  367. package/workflows/wechat-reading-shots/prompts/evaluate.md +20 -0
  368. package/workflows/wechat-reading-shots/prompts/open-book.md +28 -0
  369. package/workflows/wechat-reading-shots/prompts/read-page.md +13 -0
  370. package/workflows/wechat-reading-shots/prompts/turn-batch.md +24 -0
  371. package/workflows/wechat-reading-shots/test/control-flow.test.ts +329 -0
  372. package/workflows/wechat-reading-shots/workflow.mjs +266 -0
  373. package/workflows/wrong-question-docx/README.md +55 -0
  374. package/workflows/wrong-question-docx/prompts/figure-qa.md +8 -0
  375. package/workflows/wrong-question-docx/prompts/transcribe.md +25 -0
  376. package/workflows/wrong-question-docx/scripts/workbook.mjs +857 -0
  377. package/workflows/wrong-question-docx/test/control-flow.test.ts +165 -0
  378. package/workflows/wrong-question-docx/test/workbook.test.mjs +303 -0
  379. package/workflows/wrong-question-docx/workflow.mjs +485 -0
  380. package/plugins/workflow-runner/src/agentCommon.js +0 -354
  381. package/plugins/workflow-runner/src/agentCommon.ts +0 -435
  382. package/plugins/workflow-runner/src/controlFlow/branch.js +0 -40
  383. package/plugins/workflow-runner/src/controlFlow/branch.ts +0 -46
  384. package/plugins/workflow-runner/src/controlFlow/loop.js +0 -211
  385. package/plugins/workflow-runner/src/controlFlow/loop.ts +0 -248
  386. package/plugins/workflow-runner/src/controlFlow/pause.js +0 -129
  387. package/plugins/workflow-runner/src/controlFlow/pause.ts +0 -141
  388. package/plugins/workflow-runner/src/controlFlow/signal.js +0 -21
  389. package/plugins/workflow-runner/src/controlFlow/signal.ts +0 -29
  390. package/plugins/workflow-runner/src/controlFlow/types.js +0 -18
  391. package/plugins/workflow-runner/src/controlFlow/types.ts +0 -63
  392. package/plugins/workflow-runner/src/dslManifest.js +0 -72
  393. package/plugins/workflow-runner/src/dslManifest.ts +0 -127
  394. package/plugins/workflow-runner/src/expressions.js +0 -618
  395. package/plugins/workflow-runner/src/expressions.ts +0 -622
  396. package/plugins/workflow-runner/src/loader.js +0 -573
  397. package/plugins/workflow-runner/src/loader.ts +0 -721
  398. package/plugins/workflow-runner/src/multimodal.js +0 -38
  399. package/plugins/workflow-runner/src/multimodal.ts +0 -64
  400. package/plugins/workflow-runner/src/recovery.js +0 -119
  401. package/plugins/workflow-runner/src/recovery.ts +0 -149
  402. package/plugins/workflow-runner/src/stepExecutors/agent.js +0 -173
  403. package/plugins/workflow-runner/src/stepExecutors/agent.ts +0 -234
  404. package/plugins/workflow-runner/src/stepExecutors/assert.js +0 -41
  405. package/plugins/workflow-runner/src/stepExecutors/assert.ts +0 -50
  406. package/plugins/workflow-runner/src/stepExecutors/echo.js +0 -31
  407. package/plugins/workflow-runner/src/stepExecutors/echo.ts +0 -38
  408. package/plugins/workflow-runner/src/stepExecutors/llm.js +0 -99
  409. package/plugins/workflow-runner/src/stepExecutors/llm.ts +0 -133
  410. package/plugins/workflow-runner/src/stepExecutors/set.js +0 -49
  411. package/plugins/workflow-runner/src/stepExecutors/set.ts +0 -56
  412. package/plugins/workflow-runner/src/stepExecutors/skill.js +0 -111
  413. package/plugins/workflow-runner/src/stepExecutors/skill.ts +0 -140
  414. package/plugins/workflow-runner/src/stepExecutors/tool.js +0 -208
  415. package/plugins/workflow-runner/src/stepExecutors/tool.ts +0 -256
  416. package/plugins/workflow-runner/src/stepExecutors/verify.js +0 -58
  417. package/plugins/workflow-runner/src/stepExecutors/verify.ts +0 -68
  418. package/plugins/workflow-runner/src/stepPipeline.js +0 -277
  419. package/plugins/workflow-runner/src/stepPipeline.ts +0 -366
  420. package/plugins/workflow-runner/test/agent.test.ts +0 -587
  421. package/plugins/workflow-runner/test/agentLlmError.test.ts +0 -373
  422. package/plugins/workflow-runner/test/bashBlacklist.sweep.test.ts +0 -65
  423. package/plugins/workflow-runner/test/captureMisbind.test.ts +0 -99
  424. package/plugins/workflow-runner/test/cli.e2e.test.ts +0 -147
  425. package/plugins/workflow-runner/test/context-files.test.ts +0 -320
  426. package/plugins/workflow-runner/test/e2e.test.ts +0 -370
  427. package/plugins/workflow-runner/test/engineRobustness.test.ts +0 -226
  428. package/plugins/workflow-runner/test/expressions.test.ts +0 -397
  429. package/plugins/workflow-runner/test/foundation.test.ts +0 -126
  430. package/plugins/workflow-runner/test/graceful.test.ts +0 -139
  431. package/plugins/workflow-runner/test/greedyInputs.load.test.ts +0 -47
  432. package/plugins/workflow-runner/test/hostCapability.test.ts +0 -108
  433. package/plugins/workflow-runner/test/illustrate.load.test.ts +0 -183
  434. package/plugins/workflow-runner/test/jsonPayload.test.ts +0 -83
  435. package/plugins/workflow-runner/test/loader.test.ts +0 -617
  436. package/plugins/workflow-runner/test/maxTurnsRetryDelay.test.ts +0 -33
  437. package/plugins/workflow-runner/test/multimodal.test.ts +0 -342
  438. package/plugins/workflow-runner/test/output-schema.test.ts +0 -213
  439. package/plugins/workflow-runner/test/parseWorkflowArgs.test.ts +0 -87
  440. package/plugins/workflow-runner/test/pluginRunner.isolation.test.ts +0 -269
  441. package/plugins/workflow-runner/test/ppt.load.test.ts +0 -1220
  442. package/plugins/workflow-runner/test/ralphLoop.e2e.test.ts +0 -220
  443. package/plugins/workflow-runner/test/recovery.test.ts +0 -265
  444. package/plugins/workflow-runner/test/runner.test.ts +0 -911
  445. package/plugins/workflow-runner/test/runnerPreflight.test.ts +0 -379
  446. package/plugins/workflow-runner/test/skillTurnDone.test.ts +0 -71
  447. package/plugins/workflow-runner/test/stateLifecycle.test.ts +0 -150
  448. package/plugins/workflow-runner/test/stepPipeline.test.ts +0 -114
  449. package/plugins/workflow-runner/test/taskArbitration.test.ts +0 -338
  450. package/plugins/workflow-runner/test/taskLifecycle.test.ts +0 -270
  451. package/plugins/workflow-runner/test/toolArtifactOverwrite.test.ts +0 -221
  452. package/plugins/workflow-runner/test/toolCapabilityBoundary.test.ts +0 -29
  453. package/plugins/workflow-runner/test/toolRuntimeIntegration.test.ts +0 -168
  454. package/plugins/workflow-runner/test/webppt.load.test.ts +0 -250
  455. package/plugins/workflow-runner/test/word.load.test.ts +0 -208
  456. package/plugins/workflow-runner/test/workflows.smoke.test.ts +0 -76
  457. package/plugins/workflow-runner/test/yamlGuardConditions.test.ts +0 -207
  458. package/src/advisorState.js +0 -22
  459. package/src/cli/configWizard.js +0 -293
  460. package/src/tools/toolProgressBridge.js +0 -48
  461. package/workflows/adaptive-research.yaml +0 -50
  462. package/workflows/book-review-short.yaml +0 -125
  463. package/workflows/e2e-write-greet.yaml +0 -31
  464. package/workflows/illustrate.yaml +0 -227
  465. package/workflows/plan.yaml +0 -470
  466. package/workflows/ppt.yaml +0 -1670
  467. package/workflows/ralph-loop.yaml +0 -199
  468. package/workflows/schema.json +0 -176
  469. package/workflows/webppt.yaml +0 -496
  470. package/workflows/wechat-reading-shots.yaml +0 -315
  471. package/workflows/word.yaml +0 -720
  472. package/workflows/youtube-shorts.yaml +0 -202
@@ -0,0 +1,288 @@
1
+ export const meta = {
2
+ apiVersion: 2,
3
+ description:
4
+ '六阶段技术深度调研:定义问题→测绘领域地图→候选方案对比→分支深度调研→动手验证→综合升华。产出含知识地图、对比矩阵、验证记录与最终建议的报告',
5
+ inputs: [
6
+ {
7
+ name: 'topic',
8
+ required: true,
9
+ greedy: true,
10
+ description: '要调研的技术主题/问题/领域(自然语言一句话,越具体越好)',
11
+ },
12
+ {
13
+ name: 'depth',
14
+ type: 'enum',
15
+ values: ['light', 'standard', 'deep'],
16
+ default: 'standard',
17
+ description: '调研深度(light=快速扫盲;standard=可用结论;deep=学术级深度)',
18
+ },
19
+ {
20
+ name: 'max_iterations',
21
+ type: 'number',
22
+ default: 2,
23
+ description: '综合阶段自检-补洞最大轮数(防无限递归)',
24
+ },
25
+ ],
26
+ artifacts: [],
27
+ }
28
+
29
+ export default async function run(wf) {
30
+ const { values: args } = wf.input
31
+ const { sessionId: session, taskId: task, workflowDir } = wf.runtime
32
+ const { agent } = wf.model
33
+ const { shell: sh, file: execFile } = wf.exec
34
+ const { readText, readJson, exists } = wf.fs
35
+ const { ask } = wf.flow
36
+ const { budget, resetModelContext: resetContext, addGoalSupplement } = wf.state
37
+ const echo = wf.output.message
38
+ const declareArtifact = wf.output.artifact
39
+ const log = (message) => wf.output.progress({ phase: 'workflow', status: 'update', message: String(message) })
40
+
41
+ // ============================================================
42
+ // 自 research.yaml 迁移。本文件是**流程的目录** —— 细节下沉到:
43
+ // prompts/*.md 九段长 prompt(改措辞不用动代码,diff 干净)
44
+ // scripts/build-report.mjs 报告拼装(原 bash 用 sed/basename,Windows 上不可靠)
45
+ //
46
+ // 六阶段 + 两个可选分支:
47
+ // 阶段0 定义问题 →(用户确认闸门)
48
+ // 阶段1 测绘地图 →【提前退出判定】→ 是:简化报告直奔阶段6
49
+ // 阶段2 方案对比 → 阶段3 逐分支深挖 → 阶段4 动手验证 → 阶段5 综合
50
+ // 阶段5b 自检补洞循环(缺口清空即退出)
51
+ // 阶段6 确定性拼装报告 + 精选脚本交付
52
+ // ============================================================
53
+
54
+ const DIR = `out/research/${session}/${task}`
55
+ const REPORT = `${DIR}/deliverable/report.md`
56
+ const PROMPTS = typeof workflowDir === 'string' && workflowDir ? `${workflowDir}/prompts` : 'workflows/research/prompts'
57
+
58
+ /** 读 prompt 文件并填占位符。用 readText 而不是 tool('Read'):后者返回的是
59
+ * 给模型看的格式(每行带「行号+TAB」前缀),整段行号会跟着进 prompt。 */
60
+ async function prompt(name, vars = {}) {
61
+ const raw = await readText(`${PROMPTS}/${name}.md`)
62
+ if (raw === null) throw new Error(`读不到 prompt 文件:${PROMPTS}/${name}.md`)
63
+ let text = raw
64
+ for (const [k, v] of Object.entries({ topic: args.topic, depth: args.depth, dir: DIR, ...vars })) {
65
+ text = text.split(`{{${k}}}`).join(String(v ?? ''))
66
+ }
67
+ return text
68
+ }
69
+
70
+ /**
71
+ * 跑一个阶段并核实它该产出的文件;没产出就有界 nudge。
72
+ * 这是脊梁规则的统一实现 —— 每个写文件的阶段都必须经它,不许直接 agent()。
73
+ */
74
+ async function stage(label, promptText, outputs, opts = {}) {
75
+ let out = await agent(promptText, { label, maxTurns: opts.maxTurns ?? 25, ...opts })
76
+ for (let i = 1; i <= 2; i++) {
77
+ const missing = []
78
+ for (const f of outputs) if (!(await exists(f))) missing.push(f)
79
+ if (missing.length === 0) break
80
+ log(`${label}:还缺 ${missing.length} 个文件,第 ${i} 次提醒`)
81
+ out = await agent(
82
+ `以下文件还没有生成:\n${missing.map((m) => `- ${m}`).join('\n')}\n\n` +
83
+ '请**现在就调用 Write 工具**把它们写出来,不要只描述你打算做什么。内容要求见上一条消息。',
84
+ { label: `${label}·nudge-${i}`, allowedTools: opts.allowedTools, maxTurns: 12 },
85
+ )
86
+ }
87
+ const still = []
88
+ for (const f of outputs) if (!(await exists(f))) still.push(f)
89
+ if (still.length > 0) {
90
+ throw new Error(`${label} 未能产出:${still.join('、')}`)
91
+ }
92
+ for (const f of outputs) declareArtifact(f)
93
+ return out
94
+ }
95
+
96
+ const RESEARCH_TOOLS = ['WebSearch', 'WebFetch', 'Read', 'Write', 'Bash', 'Glob']
97
+
98
+ // ── 初始化:只 mkdir,不删任何文件 ──────────────────────────────────
99
+ // 产物路径唯一且命名固定,子 agent 用 Write 覆盖本身就幂等;用 rm 反而会
100
+ // 静默删掉用户预先放在这里的东西,也会撞上 Bash 的永久删除守卫。
101
+ await sh(`mkdir -p ${DIR}/verify ${DIR}/deliverable/scripts`)
102
+
103
+ // ── 阶段 0:定义问题 ────────────────────────────────────────────────
104
+ await stage('阶段0/6·定义问题', await prompt('s0-goal'), [`${DIR}/01-goal.md`], {
105
+ allowedTools: ['Read', 'Write'],
106
+ maxTurns: 12,
107
+ })
108
+ // 澄清结论并入贯穿目标,后续每一步(含打回重来轮)都看得到
109
+ await addGoalSupplement(`调研目标定义见 ${DIR}/01-goal.md`)
110
+
111
+ // ── 用户确认闸门(非交互宿主自动选推荐项,不挂起)────────────────────
112
+ const approval = await ask(
113
+ `已完成问题定义,请阅读 ${DIR}/01-goal.md。\n` +
114
+ '确认核心问题、范围边界、验收标准是否符合预期;要调整范围或补充要求就选「其他」输入,' +
115
+ '工作流会把它作为补充要求贯穿全程。',
116
+ [
117
+ { label: '继续执行 (推荐)', description: '按当前问题定义继续调研' },
118
+ { label: '停止', description: '中止本次运行;现场保留可续跑' },
119
+ ],
120
+ )
121
+ if (approval.includes('停止')) {
122
+ throw new Error('用户在问题定义确认闸门选择停止(现场已保留,重跑同目标可续跑)')
123
+ }
124
+ if (!approval.includes('继续执行') && approval.trim()) {
125
+ await addGoalSupplement(approval)
126
+ log('已把你的补充要求并入贯穿目标')
127
+ }
128
+
129
+ // ── 阶段 1:测绘领域地图 + 提前退出判定 ─────────────────────────────
130
+ await stage(
131
+ '阶段1/6·测绘领域地图',
132
+ await prompt('s1-map'),
133
+ [`${DIR}/02-map.md`, `${DIR}/early-exit.json`],
134
+ { allowedTools: RESEARCH_TOOLS, maxTurns: 25 },
135
+ )
136
+
137
+ const exitJson = await readJson(`${DIR}/early-exit.json`)
138
+ const earlyExit = exitJson?.early === true
139
+ if (earlyExit) {
140
+ log(`提前退出:${exitJson?.reason ?? '(未给理由)'}`)
141
+ }
142
+
143
+ if (earlyExit) {
144
+ // ── 简化路径:一次补齐全套文件,让阶段6 的拼装无需分叉 ──────────────
145
+ await stage(
146
+ '简化路径·补齐全套文件',
147
+ await prompt('s1-early-exit'),
148
+ [
149
+ `${DIR}/03-options.md`,
150
+ `${DIR}/branches.json`,
151
+ `${DIR}/05-verification.md`,
152
+ `${DIR}/06-synthesis.md`,
153
+ `${DIR}/07-learning-debt.md`,
154
+ `${DIR}/gaps.json`,
155
+ ],
156
+ { allowedTools: ['Read', 'Write'], maxTurns: 12 },
157
+ )
158
+ } else {
159
+ // ── 阶段 2:候选方案对比 ──────────────────────────────────────────
160
+ await stage(
161
+ '阶段2/6·候选方案对比',
162
+ await prompt('s2-options'),
163
+ [`${DIR}/03-options.md`, `${DIR}/branches.json`],
164
+ { allowedTools: RESEARCH_TOOLS, maxTurns: 25 },
165
+ )
166
+
167
+ const branches = await readJson(`${DIR}/branches.json`)
168
+ if (!Array.isArray(branches) || branches.length === 0) {
169
+ throw new Error(
170
+ `未能从 ${DIR}/branches.json 读到任何深度调研分支(JSON 格式错误或数组为空)`,
171
+ )
172
+ }
173
+
174
+ // ── 阶段 3:逐分支深挖。每轮重置上下文,分支之间互不干扰 ────────────
175
+ for (const [i, branch] of branches.entries()) {
176
+ resetContext()
177
+ const safe = String(branch.safe_name ?? `branch-${i + 1}`).replace(/[^\w.-]/g, '-')
178
+ await stage(
179
+ `阶段3/6·深挖「${branch.name ?? safe}」`,
180
+ await prompt('s3-deep-dive', {
181
+ branchName: branch.name ?? safe,
182
+ branchDesc: branch.description ?? '(未给描述,按分支名自行判断)',
183
+ safeName: safe,
184
+ }),
185
+ [`${DIR}/04-deep-dive-${safe}.md`],
186
+ { allowedTools: RESEARCH_TOOLS, maxTurns: 30 },
187
+ )
188
+ }
189
+
190
+ // ── 阶段 4:动手验证 ─────────────────────────────────────────────
191
+ resetContext()
192
+ await stage('阶段4/6·动手验证', await prompt('s4-verify'), [`${DIR}/05-verification.md`], {
193
+ allowedTools: ['Bash', 'Read', 'Write', 'Glob', 'WebSearch', 'WebFetch'],
194
+ maxTurns: 25,
195
+ })
196
+
197
+ // ── 阶段 5:综合升华 ─────────────────────────────────────────────
198
+ resetContext()
199
+ await stage(
200
+ '阶段5/6·综合结论',
201
+ await prompt('s5-synthesis'),
202
+ [`${DIR}/06-synthesis.md`, `${DIR}/07-learning-debt.md`, `${DIR}/gaps.json`],
203
+ { allowedTools: ['Read', 'Write', 'Glob', 'WebSearch', 'WebFetch'], maxTurns: 20 },
204
+ )
205
+
206
+ // ── 阶段 5b:自检补洞循环,缺口清空即退出 ──────────────────────────
207
+ const maxRounds = Number(args.max_iterations ?? 2)
208
+ for (let round = 1; round <= maxRounds; round++) {
209
+ // 预算闸只在开新一轮之前判 —— 补洞循环是本工作流里唯一「不断开新一轮」的地方,
210
+ // 前面那些 for 都是按数据项遍历(有界,不会失控),不需要也不该加。
211
+ const money = await budget()
212
+ if (money.exhausted) {
213
+ echo(`\n💰 token 预算已用尽(已花 ${money.used} / 上限 ${money.limit}),补洞循环停在第 ${round - 1} 轮。`)
214
+ echo('已产出的部分完好;加大预算后重跑可从断点继续。')
215
+ break
216
+ }
217
+ const gaps = await readJson(`${DIR}/gaps.json`)
218
+ if (!Array.isArray(gaps) || gaps.length === 0) {
219
+ echo('✅ 自检无缺口,补洞循环结束。')
220
+ break
221
+ }
222
+ resetContext()
223
+ log(`补洞第 ${round}/${maxRounds} 轮,待补 ${gaps.length} 条`)
224
+ await agent(
225
+ await prompt('s5b-fill-gaps', {
226
+ round: String(round),
227
+ gaps: gaps.map((g) => `- ${g}`).join('\n'),
228
+ }),
229
+ {
230
+ label: `阶段5b·补洞第 ${round}/${maxRounds} 轮`,
231
+ allowedTools: RESEARCH_TOOLS,
232
+ maxTurns: 20,
233
+ },
234
+ )
235
+ }
236
+ }
237
+
238
+ // ── 综合报告形式校验:确定性,不依赖 agent 自觉 ─────────────────────
239
+ // 「核心结论」兼容两种表述:prompt 要求的字面 + agent 改写时常见的
240
+ // 「核心问题的一句话答案」(实战中补洞轮曾改写标题导致误判 halt)。
241
+ const synth = await sh(
242
+ `grep -E '^#+ .*(核心结论|核心问题的一句话答案|推荐方案)' ${DIR}/06-synthesis.md || true`,
243
+ )
244
+ const hasConclusion = /核心结论|一句话答案/.test(synth.stdout)
245
+ const hasRecommend = synth.stdout.includes('推荐方案')
246
+ if (!hasConclusion || !hasRecommend) {
247
+ throw new Error(
248
+ `${DIR}/06-synthesis.md 缺少「核心结论」或「推荐方案」章节 —— ` +
249
+ '综合报告没有直接回答核心问题,不允许进入拼装。',
250
+ )
251
+ }
252
+
253
+ // ── 阶段 6:确定性拼装最终报告 ──────────────────────────────────────
254
+ const built = await execFile('./scripts/build-report.mjs', [DIR, String(args.depth ?? 'standard')])
255
+ if (built.exitCode !== 0) {
256
+ throw new Error(`报告拼装失败:${built.stderr || built.stdout}`)
257
+ }
258
+ if (!(await exists(REPORT))) {
259
+ throw new Error(`报告拼装脚本报告成功,但 ${REPORT} 不存在`)
260
+ }
261
+ declareArtifact(REPORT)
262
+
263
+ // ── 阶段 6:精选验证脚本交付(失败不阻断,报告已经在手)──────────────
264
+ try {
265
+ await stage(
266
+ '阶段6/6·精选脚本交付',
267
+ await prompt('s6-package'),
268
+ [`${DIR}/deliverable/scripts/README.md`],
269
+ { allowedTools: ['Read', 'Write', 'Bash', 'Glob'], maxTurns: 12 },
270
+ )
271
+ } catch (e) {
272
+ log(`精选交付降级(不阻断,报告已生成):${e.message}`)
273
+ }
274
+
275
+ // ── 收尾 ───────────────────────────────────────────────────────────
276
+ const remaining = await readJson(`${DIR}/gaps.json`)
277
+ const gapCount = Array.isArray(remaining) ? remaining.length : 0
278
+
279
+ echo(`✅ 技术调研完成\n\n主题:${args.topic}\n深度:${args.depth ?? 'standard'}`)
280
+ echo(
281
+ gapCount > 0
282
+ ? `⚠️ 补洞循环达上限退出,仍有 ${gapCount} 条缺口未补全(见 ${DIR}/gaps.json 与 06-synthesis.md 的「调研局限」),结论使用时注意置信度。`
283
+ : '✅ 调研缺口已全部收敛。',
284
+ )
285
+ echo(`★ 请直接阅读汇总报告:${REPORT}\n 过程产物在 ${DIR}/,精选脚本在 ${DIR}/deliverable/scripts/`)
286
+
287
+ return { report: REPORT, dir: DIR, remainingGaps: gapCount, earlyExit }
288
+ }
@@ -0,0 +1,16 @@
1
+ 本次任务需要三个参数。**已经给了的直接用,只问缺的那些**:
2
+
3
+ 书名 book = 「{{book}}」 (空字符串 = 未提供)
4
+ 起始页 start_page = {{startPage}} (0 = 未提供)
5
+ 截图张数 shots = {{shots}} (0 = 未提供)
6
+
7
+ 有缺失就用 **AskUserQuestion 一次性问清所有缺的项**(不要一项一项分多轮问)。
8
+ 给选项的同时也允许自由输入:起始页给 1 / 12 / 50 之类,张数给 5 / 10 / 20 之类。
9
+
10
+ 三项都齐了就**不要问任何问题**,直接输出结果。
11
+
12
+ 最后**只回复一行 JSON**,不要任何解释、不要代码块围栏:
13
+
14
+ ```
15
+ {"book":"书名","page":起始页数字,"shots":张数数字}
16
+ ```
@@ -0,0 +1,20 @@
1
+ 评估**这次自动化跑得成不成功**(不是评估书的内容)。
2
+
3
+ 本次流程:打开《{{book}}》正文 → 翻到第 {{targetPage}} 页(落点 {{landing}})→
4
+ 循环 {{shots}} 次「截图 + 翻页」,实际拍了 {{actualShots}} 张。
5
+
6
+ observe 一次(用说明书的 `read_page_number` 流程读清当前页码),结合过程中看到的
7
+ 截图,如实回答:
8
+
9
+ 1. 打开的确实是《{{book}}》吗?依据是什么?
10
+ 2. 截图是否都是**不同**的页面?依据是每次翻页回执里的变化率(0.0% = 没翻动)。
11
+ 3. 过程中有没有误触?(弹出菜单、放大插图、跳转别的界面、触发购买/分享)
12
+ 4. 当前停在第几页?用放大镜读出来的真实数字,不要猜。
13
+
14
+ 要求:
15
+
16
+ - 每条结论都要说清依据,不要笼统说"成功"
17
+ - 拿不准就明说拿不准
18
+ - **不要凭记忆报按键次数或截图张数** —— 那两个数字上面已经给你了,
19
+ 它们由引擎的循环结构保证,比你的记忆可靠
20
+ - 最后一句总评:成功 / 部分成功 / 失败,以及卡在哪一步
@@ -0,0 +1,28 @@
1
+ 把微信读书弄到《{{book}}》的**正文页**。
2
+
3
+ 判据只有一条:**能读出页码**(形如「N / 总数」)。读得到就算完成。
4
+ 读页码的方法、界面各处的位置、遇到奇怪界面怎么退回去 —— 说明书里都有,
5
+ 它的摘要就在你每次 observe 的回执里,照着做。
6
+
7
+ ⛔ **这一步只负责「打开到正文页」,到此为止。**
8
+ **不要**去翻到第几页 —— 说明书里那条 seek_to_page 流程不归你执行,
9
+ 下一步由引擎驱动,它会先读页码再决定翻多少。你在这里翻页只会把落点搞乱。
10
+ **一旦读到页码,立刻回 OPEN=ok 结束本步**,一个多余动作都不要做。
11
+ (实测教训:这一步曾自作主张把书翻到目标页,干了 4 分钟、还忘了给结论行,
12
+ 整条工作流因为「没有产出任何结果」而 halt。)
13
+
14
+ 纪律:
15
+
16
+ - 第一个动作必须是 observe,先看清在哪再决定做什么
17
+ - 只读任务:不点购买 / 订阅 / 分享 / 赠一得一 / 加入书架
18
+ - **搜索结果里出现多本书名高度相似的书时(这在本应用里非常常见),
19
+ 不要自己挑 —— 用 AskUserQuestion 把候选的完整书名 + 作者列给用户确认。**
20
+ 点错书的代价是后面全部十几张截图都白拍。
21
+ - 操作飞到了不认识的界面:按说明书的 back_to_home 流程复位。
22
+ **别在原地反复试**,也别用鼠标去正文里乱点。
23
+ - 其它卡住、拿不准的地方一样用 AskUserQuestion 问,不要瞎试
24
+
25
+ ⚠️ 无论过程如何,**最后一行必须是下面两者之一**,缺了这行整步算失败:
26
+
27
+ - 已停在能读到页码的正文页 → `OPEN=ok`
28
+ - 试过各种办法仍进不去 → `OPEN=fail`
@@ -0,0 +1,13 @@
1
+ 只做一件事:**读出当前页码**。不要翻页,不要点任何东西。
2
+
3
+ 方法见说明书的 `read_page_number` 流程(摘要就在你每次 observe 的回执里)。
4
+
5
+ **只回复一行**,格式严格如下,不要任何解释:
6
+
7
+ ```
8
+ PAGE=<左页码> <右页码>
9
+ ```
10
+
11
+ 例:`PAGE=84 85`;单页显示时两个写一样:`PAGE=12 12`。
12
+
13
+ 实在读不出来就回复:`PAGE=0 0`
@@ -0,0 +1,24 @@
1
+ 当前页码:{{curPage}} 目标页:{{targetPage}}
2
+
3
+ 照这三步做,**不要自由发挥**:
4
+
5
+ ① 取当前左页码 L —— 就是 `{{curPage}}` 里的第一个数字
6
+
7
+ ② 方向 = L > {{targetPage}} 时用 `left`,否则用 `right`
8
+ N(还要按几次)= 向上取整( |L − {{targetPage}}| ÷ 2 )
9
+ (每次按键翻几页由说明书 `seek_to_page` 给出,别自己假设)
10
+
11
+ ③ 按 N 发**一次**工具调用,然后立刻结束本步:
12
+ - N ≥ 5 → `{action:"key", key:"<方向>", repeat:<min(N,8)>, repeatFrames:"last"}`
13
+ - N ≤ 4 → `{action:"key", key:"<方向>"}`
14
+
15
+ ⛔ **N ≥ 5 时必须用 repeat 一次发满,不许一下一下按。**
16
+ 一下一下按,每按一次都要多花一个完整的 LLM 往返(约 30 秒),
17
+ 而 repeat 一轮就干完(约 1 秒)—— 实测 N=6 时一次一按比批量多花了 5 分钟。
18
+ `repeatFrames:"last"` 也必须带上:不带的话 `repeat:8` 会回 8 张全屏图
19
+ (约 1 万 token),而中间那些页你根本不看。
20
+
21
+ ⛔ 发完就结束本步。不要自己循环、不要自己再 observe 确认 ——
22
+ 外层引擎下一轮会先重新读页码,那才是权威值。
23
+
24
+ ⛔ 全程零鼠标。