waygraph 0.15.53 → 0.16.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 (556) hide show
  1. package/README.md +8 -3
  2. package/bin/waygraph +2 -2
  3. package/dist/analysis/check.d.ts +38 -0
  4. package/dist/analysis/check.js +87 -0
  5. package/dist/analysis/coverage-gap.d.ts +1 -1
  6. package/dist/analysis/coverage-gap.js +14 -37
  7. package/dist/analysis/flow-source.d.ts +9 -0
  8. package/dist/analysis/flow-source.js +25 -0
  9. package/dist/analysis/graph.d.ts +13 -14
  10. package/dist/analysis/graph.js +48 -371
  11. package/dist/analysis/map-check.js +4 -39
  12. package/dist/analysis/practices-check.d.ts +1 -1
  13. package/dist/analysis/practices-check.js +24 -45
  14. package/dist/cli/args.d.ts +23 -0
  15. package/dist/cli/args.js +20 -0
  16. package/dist/{cli.d.ts → cli/cli.d.ts} +0 -1
  17. package/dist/{cli.js → cli/cli.js} +10 -9
  18. package/dist/{commands → cli/commands}/agent-dive-scaffold.js +35 -64
  19. package/dist/cli/commands/agent-dive.js +42 -0
  20. package/dist/{commands → cli/commands}/check.d.ts +0 -1
  21. package/dist/cli/commands/check.js +104 -0
  22. package/dist/cli/commands/codemod-checkpoints.d.ts +18 -0
  23. package/dist/cli/commands/codemod-checkpoints.js +186 -0
  24. package/dist/cli/commands/codemod-flows.d.ts +18 -0
  25. package/dist/cli/commands/codemod-flows.js +284 -0
  26. package/dist/cli/commands/codemod-stubs.d.ts +10 -0
  27. package/dist/cli/commands/codemod-stubs.js +187 -0
  28. package/dist/{commands → cli/commands}/extensions.js +5 -4
  29. package/dist/{commands → cli/commands}/init.js +1 -2
  30. package/dist/{commands → cli/commands}/list.js +9 -7
  31. package/dist/cli/commands/manifest.d.ts +2 -0
  32. package/dist/cli/commands/manifest.js +20 -0
  33. package/dist/cli/commands/map.js +57 -0
  34. package/dist/{commands → cli/commands}/run.d.ts +0 -1
  35. package/dist/cli/commands/run.js +64 -0
  36. package/dist/{commands → cli/commands}/session.js +61 -88
  37. package/dist/{commands → cli/commands}/test.js +11 -14
  38. package/dist/cli/commands/traverse.js +105 -0
  39. package/dist/{commands → cli/commands}/try.js +29 -25
  40. package/dist/{commands → cli/commands}/upgrade.js +40 -4
  41. package/dist/cli/flags.d.ts +193 -16
  42. package/dist/cli/flags.js +179 -234
  43. package/dist/cli/run-chain.d.ts +1 -0
  44. package/dist/cli/run-chain.js +42 -7
  45. package/dist/cli/usage.d.ts +1 -1
  46. package/dist/cli/usage.js +21 -53
  47. package/dist/cli/util.d.ts +2 -2
  48. package/dist/cli/util.js +2 -3
  49. package/dist/{highlights → demo/narration}/css.d.ts +1 -1
  50. package/dist/{highlights → demo/narration}/css.js +2 -3
  51. package/dist/{highlights → demo/narration}/demo-pace.d.ts +7 -11
  52. package/dist/{highlights → demo/narration}/demo-pace.js +9 -11
  53. package/dist/{highlights → demo/narration}/device.d.ts +4 -2
  54. package/dist/{highlights → demo/narration}/device.js +3 -1
  55. package/dist/demo/narration/merge.d.ts +8 -0
  56. package/dist/demo/narration/merge.js +71 -0
  57. package/dist/{highlights/run-phase.d.ts → demo/narration/narration.d.ts} +10 -14
  58. package/dist/{highlights/run-phase.js → demo/narration/narration.js} +25 -94
  59. package/dist/{highlights → demo/narration}/shorthand.d.ts +1 -1
  60. package/dist/demo/narration/stub-ctx.d.ts +8 -0
  61. package/dist/demo/narration/stub-ctx.js +164 -0
  62. package/dist/{highlights → demo/narration}/style.d.ts +1 -7
  63. package/dist/{highlights → demo/narration}/style.js +1 -41
  64. package/dist/{highlights → demo/narration}/todo-dock.d.ts +3 -3
  65. package/dist/{highlights → demo/narration}/todo-dock.js +13 -30
  66. package/dist/demo/overlay/auto-chrome.d.ts +7 -0
  67. package/dist/demo/overlay/auto-chrome.js +97 -0
  68. package/dist/{session/overlay-beacon.d.ts → demo/overlay/beacon.d.ts} +7 -0
  69. package/dist/{session/overlay-beacon.js → demo/overlay/beacon.js} +5 -0
  70. package/dist/demo/overlay/cursor.d.ts +12 -0
  71. package/dist/demo/overlay/cursor.js +142 -0
  72. package/dist/demo/overlay/device-stage.d.ts +13 -0
  73. package/dist/demo/overlay/device-stage.js +396 -0
  74. package/dist/demo/overlay/inpage/banner.d.ts +1 -0
  75. package/dist/demo/overlay/inpage/banner.js +160 -0
  76. package/dist/demo/overlay/inpage/caption.d.ts +2 -0
  77. package/dist/demo/overlay/inpage/caption.js +24 -0
  78. package/dist/demo/overlay/inpage/core.d.ts +1 -0
  79. package/dist/demo/overlay/inpage/core.js +345 -0
  80. package/dist/demo/overlay/inpage/device-chip.d.ts +1 -0
  81. package/dist/demo/overlay/inpage/device-chip.js +191 -0
  82. package/dist/demo/overlay/inpage/network.d.ts +9 -0
  83. package/dist/demo/overlay/inpage/network.js +200 -0
  84. package/dist/demo/overlay/inpage/panel-chrome.d.ts +1 -0
  85. package/dist/demo/overlay/inpage/panel-chrome.js +203 -0
  86. package/dist/demo/overlay/inpage/stamp.d.ts +1 -0
  87. package/dist/demo/overlay/inpage/stamp.js +46 -0
  88. package/dist/demo/overlay/inpage/swipe-zoom.d.ts +1 -0
  89. package/dist/demo/overlay/inpage/swipe-zoom.js +220 -0
  90. package/dist/demo/overlay/inpage/todos.d.ts +1 -0
  91. package/dist/demo/overlay/inpage/todos.js +294 -0
  92. package/dist/demo/overlay/locator-theater.d.ts +25 -0
  93. package/dist/demo/overlay/locator-theater.js +76 -0
  94. package/dist/demo/overlay/network-capture.d.ts +22 -0
  95. package/dist/demo/overlay/network-capture.js +127 -0
  96. package/dist/demo/overlay/overlay-css.d.ts +3 -0
  97. package/dist/demo/overlay/overlay-css.js +369 -0
  98. package/dist/demo/overlay/overlay-stage.d.ts +23 -0
  99. package/dist/demo/overlay/overlay-stage.js +106 -0
  100. package/dist/demo/overlay/overlay.d.ts +10 -0
  101. package/dist/demo/overlay/overlay.js +89 -0
  102. package/dist/{pilot-overlay/overlay-fixtures.d.ts → demo/overlay/phase-fixtures.d.ts} +2 -2
  103. package/dist/{pilot-overlay/overlay-fixtures.js → demo/overlay/phase-fixtures.js} +2 -2
  104. package/dist/{pilot-overlay/action-ring.js → demo/overlay/pilot/actions.js} +2 -1
  105. package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.d.ts +6 -5
  106. package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.js +19 -18
  107. package/dist/{pilot-overlay → demo/overlay/pilot}/shell.d.ts +2 -2
  108. package/dist/{pilot-overlay → demo/overlay/pilot}/shell.js +13 -22
  109. package/dist/demo/overlay/reattach.d.ts +7 -0
  110. package/dist/demo/overlay/reattach.js +23 -0
  111. package/dist/demo/overlay/rings.d.ts +33 -0
  112. package/dist/demo/overlay/rings.js +448 -0
  113. package/dist/{ui → demo/overlay/ui}/components/ring.js +2 -2
  114. package/dist/{ui → demo/overlay/ui}/overlay.css +4 -4
  115. package/dist/{ui → demo/overlay/ui}/shadow.d.ts +1 -1
  116. package/dist/{ui → demo/overlay/ui}/shadow.js +39 -2
  117. package/dist/demo/stepper/after.d.ts +3 -0
  118. package/dist/demo/stepper/after.js +113 -0
  119. package/dist/demo/stepper/banner-log.d.ts +37 -0
  120. package/dist/demo/stepper/banner-log.js +63 -0
  121. package/dist/demo/stepper/before.d.ts +4 -0
  122. package/dist/demo/stepper/before.js +110 -0
  123. package/dist/demo/stepper/demo-log.d.ts +31 -0
  124. package/dist/demo/stepper/demo-log.js +309 -0
  125. package/dist/demo/stepper/gate.d.ts +11 -0
  126. package/dist/demo/stepper/gate.js +78 -0
  127. package/dist/demo/stepper/interaction-patch.d.ts +3 -0
  128. package/dist/demo/stepper/interaction-patch.js +323 -0
  129. package/dist/demo/stepper/pacing.d.ts +21 -0
  130. package/dist/demo/stepper/pacing.js +23 -0
  131. package/dist/demo/stepper/slides.d.ts +11 -0
  132. package/dist/demo/stepper/slides.js +233 -0
  133. package/dist/demo/stepper/step-panels.d.ts +21 -0
  134. package/dist/demo/stepper/step-panels.js +589 -0
  135. package/dist/demo/stepper/stepper.d.ts +24 -0
  136. package/dist/demo/stepper/stepper.js +122 -0
  137. package/dist/demo/stepper/teardown.d.ts +48 -0
  138. package/dist/demo/stepper/teardown.js +179 -0
  139. package/dist/demo/stepper/todo-advance.d.ts +14 -0
  140. package/dist/demo/stepper/todo-advance.js +110 -0
  141. package/dist/demo/stepper/view.d.ts +68 -0
  142. package/dist/demo/stepper/view.js +31 -0
  143. package/dist/demo/types.d.ts +17 -0
  144. package/dist/demo/verbose-log.js +15 -0
  145. package/dist/{types.d.ts → engine/block/block.d.ts} +106 -91
  146. package/dist/{core → engine/block}/block.js +10 -53
  147. package/dist/{core → engine/block}/compose.d.ts +10 -7
  148. package/dist/{core → engine/block}/compose.js +1 -1
  149. package/dist/{core/blocks → engine/block/kinds}/api.d.ts +17 -12
  150. package/dist/{core/blocks → engine/block/kinds}/api.js +26 -18
  151. package/dist/{core/blocks → engine/block/kinds}/effect.d.ts +13 -18
  152. package/dist/engine/block/kinds/effect.js +17 -0
  153. package/dist/{core/blocks → engine/block/kinds}/method.d.ts +19 -29
  154. package/dist/{core/blocks → engine/block/kinds}/method.js +7 -21
  155. package/dist/{core/blocks → engine/block/kinds}/nav.d.ts +22 -31
  156. package/dist/{core/blocks → engine/block/kinds}/nav.js +6 -12
  157. package/dist/{core/blocks → engine/block/kinds}/page.d.ts +15 -20
  158. package/dist/{core/blocks → engine/block/kinds}/page.js +5 -7
  159. package/dist/engine/checkpoint/checkpoint.d.ts +22 -0
  160. package/dist/engine/checkpoint/checkpoint.js +8 -0
  161. package/dist/engine/checkpoint/route.d.ts +28 -0
  162. package/dist/engine/checkpoint/route.js +28 -0
  163. package/dist/{core → engine}/config.d.ts +7 -2
  164. package/dist/engine/config.js +6 -0
  165. package/dist/engine/engine.d.ts +45 -0
  166. package/dist/{core → engine}/engine.js +6 -10
  167. package/dist/engine/env.d.ts +59 -0
  168. package/dist/engine/env.js +83 -0
  169. package/dist/{errors.d.ts → engine/errors.d.ts} +23 -22
  170. package/dist/{errors.js → engine/errors.js} +22 -22
  171. package/dist/{core → engine/flow}/branch-regression.d.ts +8 -7
  172. package/dist/{core → engine/flow}/branch-regression.js +4 -3
  173. package/dist/engine/flow/flow.d.ts +162 -0
  174. package/dist/engine/flow/flow.js +244 -0
  175. package/dist/{core → engine/flow}/map-builder.d.ts +42 -40
  176. package/dist/{core → engine/flow}/map-builder.js +46 -48
  177. package/dist/{core → engine}/locate.d.ts +1 -1
  178. package/dist/{core → engine}/locate.js +1 -2
  179. package/dist/{mem-stub.d.ts → engine/mem/mem-stub.d.ts} +9 -8
  180. package/dist/{mem-stub.js → engine/mem/mem-stub.js} +2 -2
  181. package/dist/{mem-page.d.ts → engine/mem/mem.d.ts} +1 -1
  182. package/dist/{mem-page.js → engine/mem/mem.js} +2 -1
  183. package/dist/engine/page-gone.d.ts +5 -0
  184. package/dist/engine/page-gone.js +20 -0
  185. package/dist/engine/run/connect.d.ts +28 -0
  186. package/dist/{types.js → engine/run/connect.js} +11 -10
  187. package/dist/engine/run/events.d.ts +67 -0
  188. package/dist/engine/run/events.js +90 -0
  189. package/dist/engine/run/hooks.d.ts +16 -0
  190. package/dist/engine/run/hooks.js +8 -0
  191. package/dist/engine/run/launch.d.ts +13 -0
  192. package/dist/engine/run/launch.js +27 -0
  193. package/dist/{core/run-graph.d.ts → engine/run/run.d.ts} +9 -11
  194. package/dist/{core/run-graph.js → engine/run/run.js} +22 -11
  195. package/dist/engine/stub/pace.d.ts +12 -0
  196. package/dist/engine/stub/pace.js +2 -0
  197. package/dist/engine/stub/ring.d.ts +130 -0
  198. package/dist/engine/stub/ring.js +41 -0
  199. package/dist/engine/stub/stub.d.ts +268 -0
  200. package/dist/engine/stub/stub.js +1 -0
  201. package/dist/engine/stub/todos.d.ts +104 -0
  202. package/dist/engine/stub/todos.js +2 -0
  203. package/dist/engine/stub/viewport.d.ts +26 -0
  204. package/dist/engine/stub/viewport.js +2 -0
  205. package/dist/{trait.d.ts → engine/trait/trait.d.ts} +1 -1
  206. package/dist/index.d.ts +84 -36
  207. package/dist/index.js +44 -19
  208. package/dist/{session/auto-explore-run.d.ts → live/auto/auto.d.ts} +10 -16
  209. package/dist/{session/auto-explore-run.js → live/auto/auto.js} +164 -248
  210. package/dist/{session/auto-explore.d.ts → live/auto/explore.d.ts} +4 -14
  211. package/dist/{session/auto-explore.js → live/auto/explore.js} +21 -127
  212. package/dist/{auto-session/session.d.ts → live/auto-session/auto-session.d.ts} +1 -1
  213. package/dist/{auto-session/session.js → live/auto-session/auto-session.js} +27 -24
  214. package/dist/{auto-session → live/auto-session}/helpers.d.ts +16 -5
  215. package/dist/{auto-session → live/auto-session}/helpers.js +1 -1
  216. package/dist/{session/auto-session-ipc.d.ts → live/auto-session/ipc.d.ts} +7 -5
  217. package/dist/{session/auto-session-ipc.js → live/auto-session/ipc.js} +31 -16
  218. package/dist/{session/browser.d.ts → live/auto-session/start.d.ts} +1 -2
  219. package/dist/{session/browser.js → live/auto-session/start.js} +2 -3
  220. package/dist/{pilot-overlay → live/pilot}/panel.d.ts +1 -1
  221. package/dist/{pilot-overlay → live/pilot}/panel.js +23 -31
  222. package/dist/{session → live/pilot}/pilot.d.ts +4 -3
  223. package/dist/{session → live/pilot}/pilot.js +4 -4
  224. package/dist/{traverse → live/traverse}/coverage.d.ts +4 -0
  225. package/dist/{traverse → live/traverse}/coverage.js +3 -0
  226. package/dist/{traverse → live/traverse}/lease.d.ts +1 -0
  227. package/dist/{traverse → live/traverse}/lease.js +1 -0
  228. package/dist/{traverse/run.d.ts → live/traverse/traverse.d.ts} +4 -1
  229. package/dist/{traverse/run.js → live/traverse/traverse.js} +26 -43
  230. package/dist/manifest/manifest.d.ts +52 -0
  231. package/dist/manifest/manifest.js +93 -0
  232. package/dist/manifest/map-imports.d.ts +7 -0
  233. package/dist/manifest/map-imports.js +22 -0
  234. package/dist/manifest/maps.d.ts +33 -0
  235. package/dist/manifest/maps.js +62 -0
  236. package/dist/manifest/pack.d.ts +21 -0
  237. package/dist/manifest/pack.js +109 -0
  238. package/dist/manifest/project.d.ts +60 -0
  239. package/dist/manifest/project.js +101 -0
  240. package/dist/{session/block-inject.js → manifest/roots.js} +1 -18
  241. package/dist/manifest/scan.d.ts +19 -0
  242. package/dist/manifest/scan.js +57 -0
  243. package/dist/{blocks-select.d.ts → manifest/select.d.ts} +3 -0
  244. package/dist/{blocks-select.js → manifest/select.js} +2 -0
  245. package/dist/manifest/source.d.ts +23 -0
  246. package/dist/manifest/source.js +86 -0
  247. package/dist/runner/mode.d.ts +71 -0
  248. package/dist/runner/mode.js +1 -0
  249. package/dist/runner/modes/branches.d.ts +5 -0
  250. package/dist/runner/modes/branches.js +37 -0
  251. package/dist/runner/modes/demo.d.ts +3 -0
  252. package/dist/runner/modes/demo.js +13 -0
  253. package/dist/runner/modes/report.d.ts +2 -0
  254. package/dist/runner/modes/report.js +54 -0
  255. package/dist/runner/modes/run.d.ts +2 -0
  256. package/dist/runner/modes/run.js +3 -0
  257. package/dist/runner/options.d.ts +31 -0
  258. package/dist/runner/options.js +42 -0
  259. package/dist/runner/plan/find.d.ts +18 -0
  260. package/dist/runner/plan/find.js +65 -0
  261. package/dist/runner/plan/plan.d.ts +11 -0
  262. package/dist/runner/plan/plan.js +97 -0
  263. package/dist/runner/plan/seed-mem.d.ts +12 -0
  264. package/dist/runner/plan/seed-mem.js +98 -0
  265. package/dist/runner/plan/spec.d.ts +5 -0
  266. package/dist/runner/plan/spec.js +17 -0
  267. package/dist/runner/play-steps.d.ts +2 -0
  268. package/dist/runner/play-steps.js +59 -0
  269. package/dist/runner/runner.d.ts +4 -0
  270. package/dist/runner/runner.js +64 -0
  271. package/dist/runner/session.d.ts +9 -0
  272. package/dist/runner/session.js +87 -0
  273. package/dist/{browser.js → runtime/browser.js} +4 -2
  274. package/dist/{env-file.js → runtime/env-file.js} +7 -12
  275. package/dist/{extensions.d.ts → runtime/extensions.d.ts} +2 -5
  276. package/dist/{extensions.js → runtime/extensions.js} +3 -1
  277. package/dist/runtime/full-launch.d.ts +1 -0
  278. package/dist/runtime/full-launch.js +34 -0
  279. package/dist/runtime/global-flag.d.ts +5 -0
  280. package/dist/runtime/global-flag.js +18 -0
  281. package/dist/{playwright-config.d.ts → runtime/playwright-config.d.ts} +1 -1
  282. package/dist/{playwright.config.js → runtime/playwright.config.js} +3 -2
  283. package/dist/runtime/run-log.d.ts +2 -0
  284. package/dist/runtime/run-log.js +17 -0
  285. package/dist/{video-dir.js → runtime/video-dir.js} +3 -2
  286. package/dist/{config.d.ts → runtime/waygraph-config.d.ts} +8 -9
  287. package/dist/{config.js → runtime/waygraph-config.js} +21 -51
  288. package/dist/{webserver.js → runtime/webserver.js} +5 -30
  289. package/examples/routed-demo/config/waygraph.config.ts +20 -0
  290. package/examples/routed-demo/package.json +1 -4
  291. package/examples/routed-demo/scripts/fixture-server.mjs +1 -1
  292. package/examples/routed-demo/src/flows/routed-demo-map.flow.ts +2 -4
  293. package/examples/routed-demo/src/flows/routed-demo.flow.ts +2 -3
  294. package/examples/routed-demo/src/map/(app_base)/dashboard/_methods/click-widget.block.ts +5 -4
  295. package/examples/routed-demo/src/map/(app_base)/dashboard/_nav.block.ts +3 -3
  296. package/examples/routed-demo/src/map/(app_base)/dashboard/_page.block.ts +3 -3
  297. package/examples/routed-demo/src/map/(external)/docs/_nav.block.ts +3 -3
  298. package/examples/routed-demo/src/map/(external)/docs/_page.block.ts +3 -3
  299. package/examples/routed-demo/src/states/routed-demo.states.ts +5 -3
  300. package/examples/routed-demo/tests/routed-demo.spec.ts +4 -4
  301. package/examples/routed-demo/tsconfig.json +1 -1
  302. package/examples/saucedemo/README.md +11 -12
  303. package/examples/saucedemo/config/waygraph.config.ts +17 -0
  304. package/examples/saucedemo/docs/CONVENTION.md +5 -7
  305. package/examples/saucedemo/docs/HELPERS.md +12 -12
  306. package/examples/saucedemo/package-lock.json +10 -3
  307. package/examples/saucedemo/package.json +12 -29
  308. package/examples/saucedemo/src/blocks/SITE-MAP.md +0 -1
  309. package/examples/saucedemo/src/blocks/saucedemo-web/NAV.md +1 -5
  310. package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -52
  311. package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
  312. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
  313. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
  314. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
  315. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
  316. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +21 -27
  317. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -9
  318. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
  319. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +10 -76
  320. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
  321. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
  322. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
  323. package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
  324. package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
  325. package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
  326. package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -29
  327. package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -48
  328. package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +13 -77
  329. package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
  330. package/examples/saucedemo/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
  331. package/examples/saucedemo/src/flows/api-demo.flow.ts +26 -18
  332. package/examples/saucedemo/src/flows/cart-bulk.flow.ts +19 -14
  333. package/examples/saucedemo/src/flows/cart-continue.flow.ts +10 -8
  334. package/examples/saucedemo/src/flows/cart-mem.flow.ts +7 -7
  335. package/examples/saucedemo/src/flows/catalog-logout.flow.ts +13 -8
  336. package/examples/saucedemo/src/flows/checkout-then-browse-again.flow.ts +26 -48
  337. package/examples/saucedemo/src/flows/checkout.flow.ts +70 -86
  338. package/examples/saucedemo/src/flows/device-showcase.flow.ts +24 -25
  339. package/examples/saucedemo/src/flows/login.flow.ts +11 -18
  340. package/examples/saucedemo/src/flows/mem-stub-demo.flow.ts +9 -20
  341. package/examples/saucedemo/src/flows/shop.flow.ts +15 -20
  342. package/examples/saucedemo/src/flows/smoke.flow.ts +12 -27
  343. package/examples/saucedemo/src/flows/stub-on-error.flow.ts +24 -43
  344. package/examples/saucedemo/src/flows/viewer-blocked.flow.ts +26 -34
  345. package/examples/saucedemo/src/states/checkout.mem-stubs.ts +11 -0
  346. package/examples/saucedemo/src/states/checkout.states.ts +21 -11
  347. package/examples/saucedemo/src/stubs/device-showcase.ts +191 -0
  348. package/examples/saucedemo/src/stubs/login.ts +37 -0
  349. package/examples/saucedemo/tests/auto-graph.spec.ts +4 -12
  350. package/examples/saucedemo/tests/chain-flow-episodes.spec.ts +7 -9
  351. package/examples/saucedemo/tests/submit-login-branch.spec.ts +18 -5
  352. package/package.json +12 -7
  353. package/templates/agents/waygraph-planner.agent.md +2 -2
  354. package/templates/quickstart/README.md +4 -7
  355. package/templates/quickstart/config/waygraph.config.ts +17 -0
  356. package/templates/quickstart/docs/CONVENTION.md +5 -6
  357. package/templates/quickstart/docs/HELPERS.md +11 -9
  358. package/templates/quickstart/package.json +14 -17
  359. package/templates/quickstart/src/blocks/SITE-MAP.md +13 -3
  360. package/templates/quickstart/src/blocks/saucedemo-web/NAV.md +1 -5
  361. package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -52
  362. package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
  363. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
  364. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
  365. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
  366. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
  367. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +21 -27
  368. package/templates/quickstart/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -9
  369. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
  370. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +10 -76
  371. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
  372. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
  373. package/templates/quickstart/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
  374. package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
  375. package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
  376. package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
  377. package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -29
  378. package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -48
  379. package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +13 -77
  380. package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
  381. package/templates/quickstart/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
  382. package/templates/quickstart/src/flows/api-demo.flow.ts +45 -0
  383. package/templates/quickstart/src/flows/cart-bulk.flow.ts +19 -14
  384. package/templates/quickstart/src/flows/cart-continue.flow.ts +10 -8
  385. package/templates/quickstart/src/flows/cart-mem.flow.ts +7 -7
  386. package/templates/quickstart/src/flows/catalog-logout.flow.ts +13 -8
  387. package/templates/quickstart/src/flows/checkout-then-browse-again.flow.ts +26 -48
  388. package/templates/quickstart/src/flows/checkout.flow.ts +70 -63
  389. package/templates/quickstart/src/flows/device-showcase.flow.ts +24 -25
  390. package/templates/quickstart/src/flows/login.flow.ts +11 -18
  391. package/templates/quickstart/src/flows/mem-stub-demo.flow.ts +12 -0
  392. package/templates/quickstart/src/flows/shop.flow.ts +15 -20
  393. package/templates/quickstart/src/flows/smoke.flow.ts +12 -27
  394. package/templates/quickstart/src/flows/stub-on-error.flow.ts +31 -0
  395. package/templates/quickstart/src/flows/viewer-blocked.flow.ts +26 -34
  396. package/templates/quickstart/src/states/checkout.mem-stubs.ts +11 -0
  397. package/templates/quickstart/src/states/checkout.states.ts +21 -11
  398. package/templates/quickstart/src/stubs/device-showcase.ts +191 -0
  399. package/templates/quickstart/src/stubs/login.ts +37 -0
  400. package/templates/quickstart/tests/chain-flow.spec.ts +7 -10
  401. package/templates/scaffold/README.md +2 -1
  402. package/templates/scaffold/STRUCTURE.md +5 -4
  403. package/templates/scaffold/config/waygraph.config.ts +1 -0
  404. package/templates/scaffold/gitignore +1 -0
  405. package/templates/scaffold/src/flows/README.md +2 -2
  406. package/templates/scaffold/src/map/(app_base)/docs/_nav.block.ts +3 -3
  407. package/templates/scaffold/src/map/(app_base)/docs/_page.block.ts +3 -3
  408. package/templates/scaffold/src/map/(app_base)/home/_methods/add-item.effect.block.ts +4 -4
  409. package/templates/scaffold/src/map/(app_base)/home/_methods/assert-hello.method.block.ts +3 -3
  410. package/templates/scaffold/src/map/(app_base)/home/_methods/assert-item-added.method.block.ts +3 -3
  411. package/templates/scaffold/src/map/(app_base)/home/_methods/clear-cart.method.block.ts +5 -4
  412. package/templates/scaffold/src/map/(app_base)/home/_methods/remove-item.effect.block.ts +4 -4
  413. package/templates/scaffold/src/map/(app_base)/home/_nav.block.ts +3 -3
  414. package/templates/scaffold/src/map/(app_base)/home/_page.block.ts +3 -3
  415. package/templates/scaffold/src/map/(app_base)/home/nav-verification-link.block.ts +4 -4
  416. package/templates/scaffold/src/map/(external)/hoppscotch/_keys.ts +21 -0
  417. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-body.method.block.ts +4 -4
  418. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-header.method.block.ts +4 -4
  419. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-status.method.block.ts +4 -4
  420. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.ts +5 -4
  421. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-body.method.block.ts +6 -5
  422. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-headers.method.block.ts +6 -5
  423. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/send-request.method.block.ts +5 -4
  424. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-bearer-token.method.block.ts +6 -5
  425. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-headers.method.block.ts +6 -5
  426. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-json-body.method.block.ts +6 -5
  427. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-method.method.block.ts +6 -5
  428. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-query-params.method.block.ts +6 -5
  429. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-url.method.block.ts +6 -5
  430. package/templates/scaffold/src/map/(external)/hoppscotch/_nav.block.ts +3 -3
  431. package/templates/scaffold/src/map/(external)/hoppscotch/_page.block.ts +3 -3
  432. package/templates/scaffold/src/map/(external)/hoppscotch/_states.ts +6 -0
  433. package/templates/scaffold/src/map/(external)/hoppscotch/settings/_nav.block.ts +3 -3
  434. package/templates/scaffold/src/map/(external)/mailpit/_keys.ts +13 -0
  435. package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-content.method.block.ts +4 -4
  436. package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-received.method.block.ts +4 -4
  437. package/templates/scaffold/src/map/(external)/mailpit/_methods/extract-email-link.method.block.ts +6 -5
  438. package/templates/scaffold/src/map/(external)/mailpit/_methods/open-message.method.block.ts +6 -5
  439. package/templates/scaffold/src/map/(external)/mailpit/_nav.block.ts +3 -3
  440. package/templates/scaffold/src/map/(external)/mailpit/_page.block.ts +3 -3
  441. package/templates/scaffold/src/map/(external)/mailpit/_states.ts +9 -0
  442. package/templates/scaffold/src/map/README.md +7 -0
  443. package/templates/scaffold/src/states/README.md +4 -1
  444. package/templates/scaffold/src/states/demo.mem-keys.ts +1 -29
  445. package/templates/scaffold/src/states/demo.states.ts +14 -20
  446. package/templates/scaffold/tests/hoppscotch.spec.ts +1 -11
  447. package/templates/scaffold/tests/mail-verify.spec.ts +2 -2
  448. package/templates/skills/waygraph-blind-pilot.skill.md +2 -6
  449. package/templates/skills/waygraph-convention.skill.md +23 -14
  450. package/templates/skills/waygraph-pilot.skill.md +7 -4
  451. package/dist/auto-session/verbose-log.js +0 -16
  452. package/dist/auto-session.d.ts +0 -2
  453. package/dist/auto-session.js +0 -3
  454. package/dist/cli/discover.d.ts +0 -40
  455. package/dist/cli/discover.js +0 -148
  456. package/dist/commands/agent-dive.js +0 -52
  457. package/dist/commands/check.js +0 -192
  458. package/dist/commands/map.js +0 -29
  459. package/dist/commands/run.js +0 -104
  460. package/dist/commands/traverse.js +0 -177
  461. package/dist/core/block.d.ts +0 -109
  462. package/dist/core/blocks/effect.js +0 -23
  463. package/dist/core/config.js +0 -17
  464. package/dist/core/engine.d.ts +0 -198
  465. package/dist/core/flow.d.ts +0 -293
  466. package/dist/core/flow.js +0 -432
  467. package/dist/core.d.ts +0 -14
  468. package/dist/core.js +0 -15
  469. package/dist/highlights/merge.d.ts +0 -8
  470. package/dist/highlights/merge.js +0 -173
  471. package/dist/highlights/stub-ctx.d.ts +0 -10
  472. package/dist/highlights/stub-ctx.js +0 -331
  473. package/dist/highlights/types.d.ts +0 -607
  474. package/dist/highlights.d.ts +0 -9
  475. package/dist/highlights.js +0 -10
  476. package/dist/pilot-overlay.d.ts +0 -5
  477. package/dist/pilot-overlay.js +0 -6
  478. package/dist/runner/banner-log.js +0 -63
  479. package/dist/runner/chain-run.js +0 -102
  480. package/dist/runner/cursor.js +0 -140
  481. package/dist/runner/demo-log.js +0 -316
  482. package/dist/runner/device-stage.d.ts +0 -9
  483. package/dist/runner/device-stage.js +0 -420
  484. package/dist/runner/discovery.js +0 -105
  485. package/dist/runner/index.js +0 -2
  486. package/dist/runner/inpage/banner.d.ts +0 -21
  487. package/dist/runner/inpage/banner.js +0 -156
  488. package/dist/runner/inpage/caption.d.ts +0 -3
  489. package/dist/runner/inpage/caption.js +0 -23
  490. package/dist/runner/inpage/core.d.ts +0 -4
  491. package/dist/runner/inpage/core.js +0 -316
  492. package/dist/runner/inpage/device.d.ts +0 -3
  493. package/dist/runner/inpage/device.js +0 -211
  494. package/dist/runner/inpage/network.d.ts +0 -15
  495. package/dist/runner/inpage/network.js +0 -217
  496. package/dist/runner/inpage/panel-chrome.js +0 -192
  497. package/dist/runner/inpage/stamp.js +0 -46
  498. package/dist/runner/inpage/swipe-zoom.js +0 -220
  499. package/dist/runner/inpage/todos.js +0 -337
  500. package/dist/runner/interaction-patch.js +0 -384
  501. package/dist/runner/main.js +0 -469
  502. package/dist/runner/network-capture.d.ts +0 -9
  503. package/dist/runner/network-capture.js +0 -126
  504. package/dist/runner/overlay-css.d.ts +0 -3
  505. package/dist/runner/overlay-css.js +0 -377
  506. package/dist/runner/overlay-install.js +0 -90
  507. package/dist/runner/overlay-stage.js +0 -110
  508. package/dist/runner/rings.js +0 -514
  509. package/dist/runner/seed-mem.js +0 -110
  510. package/dist/runner/slides.js +0 -278
  511. package/dist/runner/step-mode.js +0 -703
  512. package/dist/runner/step-panels.js +0 -729
  513. package/dist/runner/teardown.js +0 -202
  514. package/dist/runner/todo-dock.js +0 -142
  515. package/dist/session/step-overlay.d.ts +0 -37
  516. package/dist/session/step-overlay.js +0 -244
  517. package/examples/routed-demo/playwright.config.ts +0 -21
  518. package/examples/saucedemo/playwright.config.ts +0 -19
  519. package/examples/saucedemo/scripts/drive-auto-cli.mjs +0 -93
  520. package/examples/saucedemo/scripts/prove-add-to-cart-menu.mjs +0 -126
  521. package/examples/saucedemo/scripts/prove-auto-graph.mjs +0 -92
  522. package/examples/saucedemo/scripts/prove-wrong-login-runtime.mjs +0 -63
  523. package/examples/saucedemo/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
  524. package/templates/quickstart/playwright.config.ts +0 -14
  525. package/templates/quickstart/scripts/drive-auto-cli.mjs +0 -93
  526. package/templates/quickstart/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
  527. /package/dist/{commands → cli/commands}/agent-dive-scaffold.d.ts +0 -0
  528. /package/dist/{commands → cli/commands}/agent-dive.d.ts +0 -0
  529. /package/dist/{commands → cli/commands}/extensions.d.ts +0 -0
  530. /package/dist/{commands → cli/commands}/init.d.ts +0 -0
  531. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  532. /package/dist/{commands → cli/commands}/map.d.ts +0 -0
  533. /package/dist/{commands → cli/commands}/session.d.ts +0 -0
  534. /package/dist/{commands → cli/commands}/test.d.ts +0 -0
  535. /package/dist/{commands → cli/commands}/traverse.d.ts +0 -0
  536. /package/dist/{commands → cli/commands}/try.d.ts +0 -0
  537. /package/dist/{commands → cli/commands}/upgrade.d.ts +0 -0
  538. /package/dist/{highlights → demo/narration}/shorthand.js +0 -0
  539. /package/dist/{pilot-overlay/action-ring.d.ts → demo/overlay/pilot/actions.d.ts} +0 -0
  540. /package/dist/{ui → demo/overlay/ui}/components/ring.d.ts +0 -0
  541. /package/dist/{ui → demo/overlay/ui}/stylesheet.d.ts +0 -0
  542. /package/dist/{ui → demo/overlay/ui}/stylesheet.js +0 -0
  543. /package/dist/{ui → demo/overlay/ui}/tokens.d.ts +0 -0
  544. /package/dist/{ui → demo/overlay/ui}/tokens.js +0 -0
  545. /package/dist/{highlights → demo}/types.js +0 -0
  546. /package/dist/{auto-session → demo}/verbose-log.d.ts +0 -0
  547. /package/dist/{selector.d.ts → engine/trait/selector.d.ts} +0 -0
  548. /package/dist/{selector.js → engine/trait/selector.js} +0 -0
  549. /package/dist/{trait.js → engine/trait/trait.js} +0 -0
  550. /package/dist/{session/block-inject.d.ts → manifest/roots.d.ts} +0 -0
  551. /package/dist/{browser.d.ts → runtime/browser.d.ts} +0 -0
  552. /package/dist/{env-file.d.ts → runtime/env-file.d.ts} +0 -0
  553. /package/dist/{playwright-config.js → runtime/playwright-config.js} +0 -0
  554. /package/dist/{playwright.config.d.ts → runtime/playwright.config.d.ts} +0 -0
  555. /package/dist/{video-dir.d.ts → runtime/video-dir.d.ts} +0 -0
  556. /package/dist/{webserver.d.ts → runtime/webserver.d.ts} +0 -0
@@ -1,104 +0,0 @@
1
- // Split out of the former 8,700-line cli.ts (see src/ARCHITECTURE.md). Behavior unchanged.
2
- import { applyDemoDefaults, applyRunFlags, parseRunFlags, resolveBaseUrl, resolveProjectDir, resolveSpec } from "../cli/flags.js";
3
- import { runChain } from "../cli/run-chain.js";
4
- import { resolve } from "node:path";
5
- import { existsSync } from "node:fs";
6
- import { runChainAuto } from "./check.js";
7
- export async function runCase(args) {
8
- const flags = parseRunFlags(args.slice(1));
9
- applyRunFlags(flags);
10
- const spec = resolveSpec(flags);
11
- if (!spec) {
12
- console.error("waygraph run: missing flow/spec — e.g.\n" +
13
- " waygraph run src/flows/shop.flow.ts\n" +
14
- " waygraph run --blocks shopFlow\n" +
15
- " waygraph list # file → export map\n" +
16
- " Flags: --blocks --data --mem-stub --non-headless --video [dir] --step/--no-step");
17
- process.exit(1);
18
- }
19
- const proj = flags.blocks
20
- ? resolveProjectDir(flags, 0)
21
- : resolve(flags.positionals[1] ?? process.cwd());
22
- if (!existsSync(proj)) {
23
- console.error(`waygraph: no such directory: ${proj}`);
24
- process.exit(1);
25
- }
26
- if (!process.env.WAYGRAPH_BASE_URL) {
27
- const resolved = await resolveBaseUrl(proj);
28
- if (resolved)
29
- process.env.WAYGRAPH_BASE_URL = resolved;
30
- }
31
- await runChain(proj, spec);
32
- return;
33
- }
34
- export async function chainCase(args) {
35
- // Compat alias: chain auto A B -> auto --blocks A B; else -> run --blocks.
36
- const flags = parseRunFlags(args.slice(1));
37
- applyRunFlags(flags);
38
- const first = flags.positionals[0];
39
- if (first === "auto") {
40
- const fromTag = flags.positionals[1];
41
- const toTag = flags.positionals[2];
42
- if (!fromTag || !toTag) {
43
- console.error("waygraph chain auto: missing <fromCheckpoint> <toCheckpoint> [project]");
44
- console.error(" prefer: waygraph auto --blocks LoggedIn OrderComplete");
45
- process.exit(1);
46
- }
47
- const proj = resolve(flags.positionals[3] ?? process.cwd());
48
- if (!existsSync(proj)) {
49
- console.error(`waygraph: no such directory: ${proj}`);
50
- process.exit(1);
51
- }
52
- await runChainAuto(proj, fromTag, toTag);
53
- return;
54
- }
55
- const spec = flags.blocks ?? first;
56
- if (!spec) {
57
- console.error('waygraph chain: missing <spec> — prefer: waygraph run --blocks "a then b"\n' +
58
- " or: waygraph auto --blocks <fromCheckpoint> <toCheckpoint>");
59
- process.exit(1);
60
- }
61
- const proj = resolve(flags.blocks ? (flags.positionals[0] ?? process.cwd()) : (flags.positionals[1] ?? process.cwd()));
62
- if (!process.env.WAYGRAPH_BASE_URL) {
63
- const resolved = await resolveBaseUrl(proj);
64
- if (resolved)
65
- process.env.WAYGRAPH_BASE_URL = resolved;
66
- }
67
- // If caller asked for step overlay, behave like demo; else like run.
68
- if (flags.step === true || process.env.WAYGRAPH_STEP === "1") {
69
- await applyDemoDefaults(proj);
70
- }
71
- await runChain(proj, spec);
72
- return;
73
- }
74
- export async function demoCase(args) {
75
- const flags = parseRunFlags(args.slice(1));
76
- applyRunFlags(flags, { allowAutoPlayVideo: true, allowDemoUi: true });
77
- const spec = resolveSpec(flags);
78
- if (!spec) {
79
- console.error("waygraph demo: missing flow/spec — e.g.\n" +
80
- " waygraph demo src/flows/shop.flow.ts\n" +
81
- " waygraph demo --blocks shopFlow\n" +
82
- " Flags: --blocks --data --mem-stub --auto-next --fast --full --mini --ff-expand --ff-disabled --auto-play-video --title --base-url --video");
83
- process.exit(1);
84
- }
85
- const proj = flags.blocks
86
- ? resolveProjectDir(flags, 0)
87
- : resolve(flags.positionals[1] ?? process.cwd());
88
- if (!existsSync(proj)) {
89
- console.error(`waygraph: no such directory: ${proj}`);
90
- process.exit(1);
91
- }
92
- if (flags.step === undefined && process.env.WAYGRAPH_STEP === undefined) {
93
- process.env.WAYGRAPH_STEP = "1";
94
- }
95
- await applyDemoDefaults(proj);
96
- console.error(`waygraph demo: STEP=${process.env.WAYGRAPH_STEP === "1" ? "on" : "off"}` +
97
- ` AUTO_NEXT=${process.env.WAYGRAPH_AUTOPLAY === "1" ? "on" : "off"}` +
98
- ` HEADED=${process.env.WAYGRAPH_HEADED === "0" ? "off" : "on"}` +
99
- ` BASE_URL=${process.env.WAYGRAPH_BASE_URL ?? "(unset)"}` +
100
- (process.env.WAYGRAPH_VIDEO ? ` VIDEO=${process.env.WAYGRAPH_VIDEO}` : "") +
101
- (process.env.WAYGRAPH_TITLE ? ` TITLE=${JSON.stringify(process.env.WAYGRAPH_TITLE)}` : ""));
102
- await runChain(proj, spec);
103
- return;
104
- }
@@ -1,177 +0,0 @@
1
- // Split out of the former 8,700-line cli.ts (see src/ARCHITECTURE.md). Behavior unchanged.
2
- import { resolve } from "node:path";
3
- import { existsSync, statSync } from "node:fs";
4
- import { parseBlocksSelect } from "../blocks-select.js";
5
- import { parseMinEdgeCoverage } from "../traverse/coverage.js";
6
- import { runTraverse } from "../traverse/run.js";
7
- export async function traverseCase(args) {
8
- if (args.includes("--step") || args.includes("--auto-next") || args.includes("--autoplay")) {
9
- console.error("waygraph traverse: --step / --auto-next not supported (not a demo)");
10
- process.exit(1);
11
- }
12
- const rest = args.slice(1);
13
- let from;
14
- let data;
15
- let maxSteps;
16
- let maxVisits;
17
- let maxEdge;
18
- let headed = false;
19
- let baseUrl;
20
- let blocksFilter;
21
- let parallel;
22
- let session;
23
- let minEdgeCoverageRaw;
24
- let coverageOut;
25
- let noCoverageReport = false;
26
- let projectDir = process.cwd();
27
- for (let i = 0; i < rest.length; i++) {
28
- const a = rest[i];
29
- if (a === "--from" || a.startsWith("--from=")) {
30
- from = a.startsWith("--from=") ? a.slice(7) : rest[++i];
31
- continue;
32
- }
33
- if (a === "--data" || a.startsWith("--data=")) {
34
- data = a.startsWith("--data=") ? a.slice(7) : rest[++i];
35
- continue;
36
- }
37
- if (a === "--blocks" || a.startsWith("--blocks=")) {
38
- if (a.startsWith("--blocks=")) {
39
- blocksFilter = a.slice("--blocks=".length);
40
- }
41
- else {
42
- const v = rest[++i];
43
- if (!v || v.startsWith("-")) {
44
- console.error("waygraph traverse: --blocks needs a glob, /regex/, or path substring");
45
- process.exit(1);
46
- }
47
- blocksFilter = v;
48
- }
49
- continue;
50
- }
51
- if (a === "--parallel" || a.startsWith("--parallel=")) {
52
- const v = a.startsWith("--parallel=") ? a.slice("--parallel=".length) : rest[++i];
53
- parallel = Number(v);
54
- continue;
55
- }
56
- if (a === "--session" || a.startsWith("--session=")) {
57
- const v = a.startsWith("--session=") ? a.slice("--session=".length) : rest[++i];
58
- if (v !== "clone" && v !== "inherit") {
59
- console.error('waygraph traverse: --session must be "clone" or "inherit"');
60
- process.exit(1);
61
- }
62
- session = v;
63
- continue;
64
- }
65
- if (a === "--min-edge-coverage" || a.startsWith("--min-edge-coverage=")) {
66
- minEdgeCoverageRaw = a.startsWith("--min-edge-coverage=")
67
- ? a.slice("--min-edge-coverage=".length)
68
- : rest[++i];
69
- continue;
70
- }
71
- if (a === "--coverage-out" || a.startsWith("--coverage-out=")) {
72
- coverageOut = a.startsWith("--coverage-out=")
73
- ? a.slice("--coverage-out=".length)
74
- : rest[++i];
75
- continue;
76
- }
77
- if (a === "--no-coverage-report") {
78
- noCoverageReport = true;
79
- continue;
80
- }
81
- if (a === "--max-steps" || a.startsWith("--max-steps=")) {
82
- const v = a.startsWith("--max-steps=") ? a.slice(12) : rest[++i];
83
- maxSteps = Number(v);
84
- continue;
85
- }
86
- if (a === "--max-visits" || a.startsWith("--max-visits=")) {
87
- const v = a.startsWith("--max-visits=") ? a.slice(13) : rest[++i];
88
- maxVisits = Number(v);
89
- continue;
90
- }
91
- if (a === "--max-visits-per-edge" || a.startsWith("--max-visits-per-edge=")) {
92
- const v = a.startsWith("--max-visits-per-edge=")
93
- ? a.slice("--max-visits-per-edge=".length)
94
- : rest[++i];
95
- maxEdge = Number(v);
96
- continue;
97
- }
98
- if (a === "--non-headless" || a === "--headed") {
99
- headed = true;
100
- continue;
101
- }
102
- if (a === "--base-url" || a.startsWith("--base-url=")) {
103
- baseUrl = a.startsWith("--base-url=") ? a.slice(11) : rest[++i];
104
- continue;
105
- }
106
- if (a === "--help" || a === "-h") {
107
- console.log(`waygraph traverse [project] [flags]
108
-
109
- Graph crawl (RFC Phase B-E). Walks unused legal edges until a leaf,
110
- budget kill, or first broken edge. --parallel N uses session clone + edge leases.
111
-
112
- --blocks <glob|/regex/|substr> Phase C: filter *.block.ts discovery
113
- --parallel N Phase D: N clone workers (default 1, max 4)
114
- --session clone|inherit Phase D: default clone; inherit refused if parallel>1
115
- --min-edge-coverage X Phase E: suite gate 0.8 | 80% | 80 (exit 2 if below)
116
- --coverage-out PATH Phase E: write JSON (default .waygraph-traverse/coverage.json)
117
- --no-coverage-report Phase E: print Coverage line only (no JSON file)
118
- --from <Checkpoint> start checkpoint (optional)
119
- --data '{...}' Mem seed JSON
120
- --max-steps N default 50 (per worker)
121
- --max-visits N per-node visit cap (default 2)
122
- --max-visits-per-edge N default 1
123
- --non-headless show browser
124
- --base-url URL
125
-
126
- Examples:
127
- waygraph traverse --blocks '**/mailpit/**/*.block.ts'
128
- waygraph traverse --parallel 2 --session clone --max-steps 20
129
- waygraph traverse --min-edge-coverage 80% --coverage-out ./cov.json
130
-
131
- PASS: [Reached Leaf Node[traverse-1] at=... steps=N]
132
- FAIL: [Broke at edge[traverse-1] block=... from=... to=...]
133
- COVER: [Coverage edges=H/T ratio=R% min=M% PASS|FAIL]
134
- `);
135
- process.exit(0);
136
- }
137
- if (!a.startsWith("-")) {
138
- projectDir = resolve(a);
139
- }
140
- }
141
- if (!existsSync(projectDir) || !statSync(projectDir).isDirectory()) {
142
- console.error(`waygraph traverse: no such directory: ${projectDir}`);
143
- process.exit(1);
144
- }
145
- const blocksSelect = blocksFilter
146
- ? parseBlocksSelect(blocksFilter)
147
- : undefined;
148
- let minEdgeCoverage;
149
- if (minEdgeCoverageRaw !== undefined) {
150
- const parsed = parseMinEdgeCoverage(minEdgeCoverageRaw);
151
- if (parsed === null) {
152
- console.error(`waygraph traverse: --min-edge-coverage expects 0.8, 80%, or 80 (got ${JSON.stringify(minEdgeCoverageRaw)})`);
153
- process.exit(1);
154
- }
155
- minEdgeCoverage = parsed;
156
- }
157
- const code = await runTraverse(projectDir, {
158
- ...(from ? { from } : {}),
159
- ...(data ? { data } : {}),
160
- ...(maxSteps !== undefined && Number.isFinite(maxSteps) ? { maxSteps } : {}),
161
- ...(maxVisits !== undefined && Number.isFinite(maxVisits)
162
- ? { maxVisitsPerNode: maxVisits }
163
- : {}),
164
- ...(maxEdge !== undefined && Number.isFinite(maxEdge)
165
- ? { maxVisitsPerEdge: maxEdge }
166
- : {}),
167
- headed,
168
- ...(baseUrl ? { baseURL: baseUrl } : {}),
169
- ...(blocksSelect ? { blocksSelect } : {}),
170
- ...(parallel !== undefined && Number.isFinite(parallel) ? { parallel } : {}),
171
- ...(session ? { session } : {}),
172
- ...(minEdgeCoverage !== undefined ? { minEdgeCoverage } : {}),
173
- ...(coverageOut ? { coverageOut: resolve(coverageOut) } : {}),
174
- ...(noCoverageReport ? { noCoverageReport: true } : {}),
175
- });
176
- process.exit(code);
177
- }
@@ -1,109 +0,0 @@
1
- import type { ActionPage, Block, Checkpoint, DefinedBlock, Instruction } from "../types.js";
2
- import { MemPage } from "../mem-page.js";
3
- import type { MemKey } from "../mem-page.js";
4
- import type { Trait } from "../trait.js";
5
- export declare function findBlockIndex(middle: readonly Block<any, any>[], block: Block<any, any> | string | number): number;
6
- /**
7
- * Attaches routing to `block` without touching its act/observe/resolve/verify -
8
- * `routes` must cover every tag of `block`'s output (a missing route is a compile
9
- * error), and the returned Block runs exactly as `block` always did, just followed
10
- * by whichever next Block the resolved tag routes to. `null` for a tag means that
11
- * tag is terminal - the run stops there, same as a Block with no routing at all.
12
- * A route pointing back at `block` itself is a self-loop; see `runGraph`'s
13
- * `maxSteps` for its safety net. The return type is deliberately `Block<In, any>` -
14
- * a route can lead anywhere, including back through itself, so there is no fixed
15
- * Out type to express; state the expected outcomes to `runGraph` via `terminals`
16
- * instead.
17
- */
18
- export declare function branch<In extends Checkpoint<string>, Out extends Checkpoint<string>>(block: Block<In, Out>, routes: {
19
- [K in Out["__state"]]: Block<Extract<Out, Checkpoint<K>>, any> | null;
20
- }): DefinedBlock<In, any>;
21
- /** Copy non-enumerable waygraph markers so decorate/withVerify keep map() kind checks. */
22
- export declare function copyWaygraphRuntime(from: object, to: object): void;
23
- /**
24
- * Builds a Block with `withVerify`/`modVerify`/`modVerifyAll` attached as
25
- * methods - `LoginBlock.withVerify([...])`, discoverable by typing
26
- * `LoginBlock.` in an editor, not just callable as `withVerify(LoginBlock, ...)`
27
- * if you already know it exists. A raw object literal is still a perfectly
28
- * valid Block (every test fixture in this codebase is one) - it just won't have
29
- * these attached. The methods are thin: they delegate to the identically-named
30
- * free functions, which remain the one place this logic actually lives.
31
- */
32
- export declare function defineBlock<In extends Checkpoint<string>, Out extends Checkpoint<string>>(base: {
33
- name: string;
34
- description?: Block<In, Out>["description"];
35
- instruction: Omit<Instruction<In, Out, any>, "act"> & {
36
- act(page: ActionPage, input: In, mem: MemPage): Promise<void>;
37
- };
38
- next?: Block<In, Out>["next"];
39
- requires?: Block<In, Out>["requires"];
40
- routes?: Block<In, Out>["routes"];
41
- instanceOptions?: Block<In, Out>["instanceOptions"];
42
- }): DefinedBlock<In, Out>;
43
- /**
44
- * Returns a new Block that runs exactly like `block` - same act/observe/resolve,
45
- * same routing - but with `verify` replaced. For giving one flow stricter (or
46
- * looser, or just different) confirmation on a Block it didn't author, without
47
- * that Block needing to have been written as a parameterized factory in
48
- * anticipation. Same move as `branch()`: decorate an existing Block, don't ask
49
- * every Block to pre-build its own override mechanism.
50
- *
51
- * Wrap the one Block you want to change, in place, wherever it already sits in
52
- * a `defineFlow([...])` array - every other Block stays untouched:
53
- * `defineFlow([start, LoginBlock, withVerify(AddToCartBlock, [...]), end])`.
54
- * There is no separate positional array to keep in sync and no `null`
55
- * placeholder for "skip this one" - `defineFlow` has no per-slot verify
56
- * argument at all, only whatever `verify` each Block's own `instruction` (or
57
- * a `withVerify(...)` wrapping it) carries with it.
58
- */
59
- export declare function withVerify<B extends Block<any, any>>(block: B, verify: Trait[] | ((out: any) => Trait[])): B;
60
- type StubPhaseFn<Out extends Checkpoint<string>> = import("../highlights.js").HighlightStubPhaseOrFn<Out>;
61
- /**
62
- * Attach / chain a stubBefore lifecycle on a Block. Prefer
63
- * `(ctx) => { ctx.ring(...); const x = ctx.mem?.get(Key); }`.
64
- * @example FillUsernameBlock.stubBefore((ctx) => { ctx.ring("username", { ... }) })
65
- * @deprecated Use the chained method: `Block.stubBefore((ctx) => …)`.
66
- */
67
- export declare function withStubBefore<B extends Block<any, any>>(block: B, stub: StubPhaseFn<any>): B;
68
- /** @see {@link withStubBefore} * @deprecated Use the chained method: `Block.stubAfter((ctx) => …)`.
69
- */
70
- export declare function withStubAfter<B extends Block<any, any>>(block: B, stub: StubPhaseFn<any>): B;
71
- /** @see {@link withStubBefore} * @deprecated Use the chained method: `Block.stubOnError((ctx) => …)`.
72
- */
73
- export declare function withStubOnError<B extends Block<any, any>>(block: B, stub: StubPhaseFn<any>): B;
74
- /**
75
- * Answers the browser's own dialog (`confirm`, `alert`, `prompt`, `beforeunload`) that this Block's action
76
- * triggers. A dialog freezes the page until it is answered, so the answer has to be armed before the click -
77
- * this does that without folding it into the Block's own `act`. The dialog's text can be kept in mem.
78
- * @example withDialog(CancelBlock, { accept: true, into: LeaveWarning })
79
- */
80
- export declare function withDialog<B extends Block<any, any>>(block: B, options?: {
81
- accept?: boolean;
82
- into?: MemKey<string>;
83
- promptText?: string;
84
- }): B;
85
- /**
86
- * Replaces one Trait inside `block`'s verify list, leaving every other check
87
- * untouched - the v1/v2/legacy-variant case, where one check needs a different
88
- * selector or URL pattern but the rest of the Block is identical. Addressed by
89
- * the Trait's own `name` (recommended - inserting or reordering other checks
90
- * can't silently retarget it) or, if you genuinely know the position and don't
91
- * need that safety, a numeric index. Either way a bad address fails loud
92
- * immediately instead of quietly doing nothing. `newCheck` can be a bare
93
- * `check` function (keeps the existing name) or a full `Trait` (to rename too).
94
- * Only works on a flat `verify` array - a function-form `verify` (from
95
- * `verify: (out) => Trait[]`) has no fixed list to address into, so this
96
- * throws rather than guess; use `withVerify` to replace it wholesale instead.
97
- */
98
- export declare function modVerify<In extends Checkpoint<string>, Out extends Checkpoint<string>>(block: Block<In, Out>, nameOrIndex: string | number, newCheck: Trait["check"] | Trait): DefinedBlock<In, Out>;
99
- /**
100
- * `modVerify`, but for several named checks in one call - a v2 variant that
101
- * differs in five ways from v1 shouldn't need five nested `modVerify(modVerify(
102
- * modVerify(...)))` calls to track by eye. `patches` keys are plain strings (a
103
- * Trait's `name`, not a `MemKey` instance), so an ordinary object literal is
104
- * fine here - unlike `MemPage`, there's no identity-collision reason to need
105
- * `[name, check]` pairs. Applies each patch in turn via `modVerify`, so the
106
- * same fail-loud-on-unknown-name behavior holds for every entry.
107
- */
108
- export declare function modVerifyAll<In extends Checkpoint<string>, Out extends Checkpoint<string>>(block: Block<In, Out>, patches: Record<string, Trait["check"] | Trait>): DefinedBlock<In, Out>;
109
- export {};
@@ -1,23 +0,0 @@
1
- import { defineBlock } from "../block.js";
2
- /**
3
- * {@link defineBlock} constrained for effect-style instance menus: `requires` +
4
- * `instanceOptions` are mandatory. Prefer this when the Block adds / removes /
5
- * toggles a live instance rather than navigating. Runtime result is an ordinary
6
- * Block - the helper is TypeScript salt only.
7
- */
8
- export function defineEffectBlock(base) {
9
- const built = defineBlock(base);
10
- Object.defineProperty(built, "__waygraphMemKind", {
11
- value: "effect",
12
- enumerable: false,
13
- configurable: false,
14
- });
15
- Object.defineProperty(built, "__waygraphSalt", {
16
- value: "effect",
17
- enumerable: false,
18
- configurable: false,
19
- });
20
- return built;
21
- }
22
- /** @deprecated Prefer {@link defineEffectBlock} - identical helper. */
23
- export const defineMemEffectBlock = defineEffectBlock;
@@ -1,17 +0,0 @@
1
- // Split out of the former 2,900-line engine.ts (see src/ARCHITECTURE.md). Behavior unchanged.
2
- import { chromium, firefox, webkit } from "@playwright/test";
3
- const LAUNCHERS = { chromium, firefox, webkit };
4
- /**
5
- * Resolves which `BrowserType` actually launches for a `mem`-only run (no
6
- * caller-supplied context) - `config.browsers[browserName]` if given,
7
- * otherwise the real `@playwright/test` export. Waygraph is deliberately
8
- * "just an opinionated Playwright" - it doesn't own browser automation
9
- * itself, so it shouldn't force every consumer onto the vanilla launcher.
10
- * A stealth-patched or otherwise customized launcher (e.g. `playwright-extra`
11
- * plus a stealth plugin) is a drop-in replacement for `chromium`/`firefox`/
12
- * `webkit` - same `.launch()` shape - so accepting one here costs nothing for
13
- * a consumer who never sets it.
14
- */
15
- export function resolveLauncher(browserName, config) {
16
- return config?.browsers?.[browserName] ?? LAUNCHERS[browserName];
17
- }
@@ -1,198 +0,0 @@
1
- import type { Block, Checkpoint } from "../types.js";
2
- import type { EngineConfig } from "./config.js";
3
- import type { EndMarker, StartMarker } from "./run-graph.js";
4
- import type { Flow, FlowOptions } from "./flow.js";
5
- import { MapBuilder } from "./map-builder.js";
6
- import type { MapBuilderOptions } from "./map-builder.js";
7
- type S = Checkpoint<"__start__">;
8
- /**
9
- * Holds engine-level configuration shared across every flow defined from it -
10
- * for now, just how to launch a browser when a Flow owns its own
11
- * (`headless`/`browserName`/`slowMo`); traits/interstitials/watchers land here
12
- * in a later change.
13
- * @example const engine = new Engine({ headless: false, slowMo: 250 });
14
- */
15
- export declare class Engine {
16
- private readonly config;
17
- constructor(config?: EngineConfig);
18
- /**
19
- * @deprecated Build flows with `engine.map()`, which checks each step's Block kind and nests flows with `.flow()`.
20
- *
21
- * Builds a runnable {@link Flow} from `[start, ...Blocks, end]`, typechecked
22
- * so each Block's `In` must match the previous Block's `Out` - the same
23
- * check `connect()` does, just declared as a flat array instead of hand-nested
24
- * calls. Overloaded for 2-9 array slots (1-8 real Blocks between `start`/`end`)
25
- * rather than one fully-generic recursive tuple type, so each arity is as
26
- * reliably checked as `connect<A,B,C>` itself.
27
- * Options go in the second argument instead of wrapping the result in `withTitle(withMemStub(...))`.
28
- * @example engine.defineFlow([start, LoginBlock, AddToCartBlock, end], { title: "Login", memStub: true })
29
- */
30
- defineFlow<B extends Checkpoint<string>>(blocks: readonly [StartMarker, Block<S, B>, EndMarker], options?: FlowOptions): Flow<B>;
31
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>>(blocks: readonly [StartMarker, Block<S, B>, Block<B, C>, EndMarker], options?: FlowOptions): Flow<C>;
32
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>>(blocks: readonly [StartMarker, Block<S, B>, Block<B, C>, Block<C, D>, EndMarker], options?: FlowOptions): Flow<D>;
33
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>>(blocks: readonly [StartMarker, Block<S, B>, Block<B, C>, Block<C, D>, Block<D, E>, EndMarker], options?: FlowOptions): Flow<E>;
34
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>>(blocks: readonly [
35
- StartMarker,
36
- Block<S, B>,
37
- Block<B, C>,
38
- Block<C, D>,
39
- Block<D, E>,
40
- Block<E, F>,
41
- EndMarker
42
- ], options?: FlowOptions): Flow<F>;
43
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>>(blocks: readonly [
44
- StartMarker,
45
- Block<S, B>,
46
- Block<B, C>,
47
- Block<C, D>,
48
- Block<D, E>,
49
- Block<E, F>,
50
- Block<F, G>,
51
- EndMarker
52
- ], options?: FlowOptions): Flow<G>;
53
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>>(blocks: readonly [
54
- StartMarker,
55
- Block<S, B>,
56
- Block<B, C>,
57
- Block<C, D>,
58
- Block<D, E>,
59
- Block<E, F>,
60
- Block<F, G>,
61
- Block<G, H>,
62
- EndMarker
63
- ], options?: FlowOptions): Flow<H>;
64
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>>(blocks: readonly [
65
- StartMarker,
66
- Block<S, B>,
67
- Block<B, C>,
68
- Block<C, D>,
69
- Block<D, E>,
70
- Block<E, F>,
71
- Block<F, G>,
72
- Block<G, H>,
73
- Block<H, I>,
74
- EndMarker
75
- ], options?: FlowOptions): Flow<I>;
76
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>, J extends Checkpoint<string>>(blocks: readonly [
77
- StartMarker,
78
- Block<S, B>,
79
- Block<B, C>,
80
- Block<C, D>,
81
- Block<D, E>,
82
- Block<E, F>,
83
- Block<F, G>,
84
- Block<G, H>,
85
- Block<H, I>,
86
- Block<I, J>,
87
- EndMarker
88
- ], options?: FlowOptions): Flow<J>;
89
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>, J extends Checkpoint<string>, K extends Checkpoint<string>>(blocks: readonly [
90
- StartMarker,
91
- Block<S, B>,
92
- Block<B, C>,
93
- Block<C, D>,
94
- Block<D, E>,
95
- Block<E, F>,
96
- Block<F, G>,
97
- Block<G, H>,
98
- Block<H, I>,
99
- Block<I, J>,
100
- Block<J, K>,
101
- EndMarker
102
- ], options?: FlowOptions): Flow<K>;
103
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>, J extends Checkpoint<string>, K extends Checkpoint<string>, L extends Checkpoint<string>>(blocks: readonly [
104
- StartMarker,
105
- Block<S, B>,
106
- Block<B, C>,
107
- Block<C, D>,
108
- Block<D, E>,
109
- Block<E, F>,
110
- Block<F, G>,
111
- Block<G, H>,
112
- Block<H, I>,
113
- Block<I, J>,
114
- Block<J, K>,
115
- Block<K, L>,
116
- EndMarker
117
- ], options?: FlowOptions): Flow<L>;
118
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>, J extends Checkpoint<string>, K extends Checkpoint<string>, L extends Checkpoint<string>, M extends Checkpoint<string>>(blocks: readonly [
119
- StartMarker,
120
- Block<S, B>,
121
- Block<B, C>,
122
- Block<C, D>,
123
- Block<D, E>,
124
- Block<E, F>,
125
- Block<F, G>,
126
- Block<G, H>,
127
- Block<H, I>,
128
- Block<I, J>,
129
- Block<J, K>,
130
- Block<K, L>,
131
- Block<L, M>,
132
- EndMarker
133
- ], options?: FlowOptions): Flow<M>;
134
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>, J extends Checkpoint<string>, K extends Checkpoint<string>, L extends Checkpoint<string>, M extends Checkpoint<string>, N extends Checkpoint<string>>(blocks: readonly [
135
- StartMarker,
136
- Block<S, B>,
137
- Block<B, C>,
138
- Block<C, D>,
139
- Block<D, E>,
140
- Block<E, F>,
141
- Block<F, G>,
142
- Block<G, H>,
143
- Block<H, I>,
144
- Block<I, J>,
145
- Block<J, K>,
146
- Block<K, L>,
147
- Block<L, M>,
148
- Block<M, N>,
149
- EndMarker
150
- ], options?: FlowOptions): Flow<N>;
151
- defineFlow<B extends Checkpoint<string>, C extends Checkpoint<string>, D extends Checkpoint<string>, E extends Checkpoint<string>, F extends Checkpoint<string>, G extends Checkpoint<string>, H extends Checkpoint<string>, I extends Checkpoint<string>, J extends Checkpoint<string>, K extends Checkpoint<string>, L extends Checkpoint<string>, M extends Checkpoint<string>, N extends Checkpoint<string>, O extends Checkpoint<string>>(blocks: readonly [
152
- StartMarker,
153
- Block<S, B>,
154
- Block<B, C>,
155
- Block<C, D>,
156
- Block<D, E>,
157
- Block<E, F>,
158
- Block<F, G>,
159
- Block<G, H>,
160
- Block<H, I>,
161
- Block<I, J>,
162
- Block<J, K>,
163
- Block<K, L>,
164
- Block<L, M>,
165
- Block<M, N>,
166
- Block<N, O>,
167
- EndMarker
168
- ], options?: FlowOptions): Flow<O>;
169
- /**
170
- * Fluent, kind-checked alternative to `defineFlow([start, ...blocks, end])` -
171
- * see {@link MapBuilder}. Real, direct request this responds to: pia/zsign's
172
- * own agents kept hand-editing/hand-composing Blocks into ad hoc shapes
173
- * ("locks" convention tried, still got broken) - `map()` forces every step
174
- * through this Engine's own `define*Block` factories (checked by the same
175
- * `__waygraphKind`/`__waygraphSalt` runtime markers `graph.ts`/`map-check.ts`
176
- * already trust), so a hand-rolled plain-object Block can never silently
177
- * pass as a real navigation/assertion/method step. `homeOrigin`, if given,
178
- * also gates `.gotoPage()`/`.gotoExternal()` against each Nav/Page Block's
179
- * own static `url` (skipped, honestly, for click-based/dynamic nav - not
180
- * statically checkable, same limitation `map-check.ts` already documents).
181
- * @example
182
- * const flow = engine.map({ homeOrigin: "https://app.example.com" })
183
- * .start()
184
- * .gotoPage(NavHomeBlock)
185
- * .assert(AssertHelloBlock)
186
- * .gotoExternal(NavMailpitBlock)
187
- * .end();
188
- */
189
- map(options?: MapBuilderOptions): MapBuilder<S>;
190
- }
191
- /**
192
- * Standalone convenience for `new Engine(config).map(options)` - use this
193
- * when a call site doesn't otherwise need its own `Engine` instance (no
194
- * shared `headless`/`slowMo`/`layouts` across several flows).
195
- * @example const flow = map({ homeOrigin: "https://app.example.com" }).gotoPage(NavHomeBlock).end();
196
- */
197
- export declare function map(options?: MapBuilderOptions & EngineConfig): MapBuilder<S>;
198
- export {};