waygraph 0.15.54 → 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 (510) 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 +10 -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 +3 -11
  52. package/dist/{highlights → demo/narration}/demo-pace.js +5 -11
  53. package/dist/{highlights → demo/narration}/device.d.ts +2 -2
  54. package/dist/{highlights → demo/narration}/device.js +1 -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/demo/overlay/cursor.d.ts +12 -0
  69. package/dist/demo/overlay/cursor.js +142 -0
  70. package/dist/demo/overlay/device-stage.d.ts +13 -0
  71. package/dist/demo/overlay/device-stage.js +396 -0
  72. package/dist/demo/overlay/inpage/banner.d.ts +1 -0
  73. package/dist/demo/overlay/inpage/banner.js +160 -0
  74. package/dist/demo/overlay/inpage/caption.d.ts +2 -0
  75. package/dist/demo/overlay/inpage/caption.js +24 -0
  76. package/dist/demo/overlay/inpage/core.d.ts +1 -0
  77. package/dist/demo/overlay/inpage/core.js +345 -0
  78. package/dist/demo/overlay/inpage/device-chip.d.ts +1 -0
  79. package/dist/demo/overlay/inpage/device-chip.js +191 -0
  80. package/dist/demo/overlay/inpage/network.d.ts +9 -0
  81. package/dist/demo/overlay/inpage/network.js +200 -0
  82. package/dist/demo/overlay/inpage/panel-chrome.d.ts +1 -0
  83. package/dist/demo/overlay/inpage/panel-chrome.js +203 -0
  84. package/dist/demo/overlay/inpage/stamp.d.ts +1 -0
  85. package/dist/demo/overlay/inpage/stamp.js +46 -0
  86. package/dist/demo/overlay/inpage/swipe-zoom.d.ts +1 -0
  87. package/dist/demo/overlay/inpage/swipe-zoom.js +220 -0
  88. package/dist/demo/overlay/inpage/todos.d.ts +1 -0
  89. package/dist/demo/overlay/inpage/todos.js +294 -0
  90. package/dist/demo/overlay/locator-theater.d.ts +25 -0
  91. package/dist/demo/overlay/locator-theater.js +76 -0
  92. package/dist/demo/overlay/network-capture.d.ts +22 -0
  93. package/dist/demo/overlay/network-capture.js +127 -0
  94. package/dist/demo/overlay/overlay-css.d.ts +3 -0
  95. package/dist/demo/overlay/overlay-css.js +369 -0
  96. package/dist/demo/overlay/overlay-stage.d.ts +23 -0
  97. package/dist/demo/overlay/overlay-stage.js +106 -0
  98. package/dist/demo/overlay/overlay.d.ts +10 -0
  99. package/dist/demo/overlay/overlay.js +89 -0
  100. package/dist/{pilot-overlay/overlay-fixtures.d.ts → demo/overlay/phase-fixtures.d.ts} +2 -2
  101. package/dist/{pilot-overlay/overlay-fixtures.js → demo/overlay/phase-fixtures.js} +2 -2
  102. package/dist/{pilot-overlay/action-ring.js → demo/overlay/pilot/actions.js} +2 -1
  103. package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.d.ts +6 -5
  104. package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.js +19 -18
  105. package/dist/{pilot-overlay → demo/overlay/pilot}/shell.d.ts +2 -2
  106. package/dist/{pilot-overlay → demo/overlay/pilot}/shell.js +13 -22
  107. package/dist/demo/overlay/reattach.d.ts +7 -0
  108. package/dist/demo/overlay/reattach.js +23 -0
  109. package/dist/demo/overlay/rings.d.ts +33 -0
  110. package/dist/demo/overlay/rings.js +448 -0
  111. package/dist/{ui → demo/overlay/ui}/components/ring.js +2 -2
  112. package/dist/{ui → demo/overlay/ui}/overlay.css +4 -4
  113. package/dist/{ui → demo/overlay/ui}/shadow.d.ts +1 -1
  114. package/dist/{ui → demo/overlay/ui}/shadow.js +39 -2
  115. package/dist/demo/stepper/after.d.ts +3 -0
  116. package/dist/demo/stepper/after.js +113 -0
  117. package/dist/demo/stepper/banner-log.d.ts +37 -0
  118. package/dist/demo/stepper/banner-log.js +63 -0
  119. package/dist/demo/stepper/before.d.ts +4 -0
  120. package/dist/demo/stepper/before.js +110 -0
  121. package/dist/demo/stepper/demo-log.d.ts +31 -0
  122. package/dist/demo/stepper/demo-log.js +309 -0
  123. package/dist/demo/stepper/gate.d.ts +11 -0
  124. package/dist/demo/stepper/gate.js +78 -0
  125. package/dist/demo/stepper/interaction-patch.d.ts +3 -0
  126. package/dist/demo/stepper/interaction-patch.js +323 -0
  127. package/dist/demo/stepper/pacing.d.ts +21 -0
  128. package/dist/demo/stepper/pacing.js +23 -0
  129. package/dist/demo/stepper/slides.d.ts +11 -0
  130. package/dist/demo/stepper/slides.js +233 -0
  131. package/dist/demo/stepper/step-panels.d.ts +21 -0
  132. package/dist/demo/stepper/step-panels.js +589 -0
  133. package/dist/demo/stepper/stepper.d.ts +24 -0
  134. package/dist/demo/stepper/stepper.js +122 -0
  135. package/dist/demo/stepper/teardown.d.ts +48 -0
  136. package/dist/demo/stepper/teardown.js +179 -0
  137. package/dist/demo/stepper/todo-advance.d.ts +14 -0
  138. package/dist/demo/stepper/todo-advance.js +110 -0
  139. package/dist/demo/stepper/view.d.ts +68 -0
  140. package/dist/demo/stepper/view.js +31 -0
  141. package/dist/demo/types.d.ts +17 -0
  142. package/dist/demo/verbose-log.js +15 -0
  143. package/dist/{types.d.ts → engine/block/block.d.ts} +106 -91
  144. package/dist/{core → engine/block}/block.js +10 -53
  145. package/dist/{core → engine/block}/compose.d.ts +9 -7
  146. package/dist/{core → engine/block}/compose.js +1 -1
  147. package/dist/{core/blocks → engine/block/kinds}/api.d.ts +16 -12
  148. package/dist/{core/blocks → engine/block/kinds}/api.js +26 -18
  149. package/dist/{core/blocks → engine/block/kinds}/effect.d.ts +13 -18
  150. package/dist/engine/block/kinds/effect.js +17 -0
  151. package/dist/{core/blocks → engine/block/kinds}/method.d.ts +17 -29
  152. package/dist/{core/blocks → engine/block/kinds}/method.js +6 -21
  153. package/dist/{core/blocks → engine/block/kinds}/nav.d.ts +21 -31
  154. package/dist/{core/blocks → engine/block/kinds}/nav.js +6 -12
  155. package/dist/{core/blocks → engine/block/kinds}/page.d.ts +14 -20
  156. package/dist/{core/blocks → engine/block/kinds}/page.js +5 -7
  157. package/dist/engine/checkpoint/checkpoint.d.ts +22 -0
  158. package/dist/engine/checkpoint/checkpoint.js +8 -0
  159. package/dist/engine/checkpoint/route.d.ts +28 -0
  160. package/dist/engine/checkpoint/route.js +28 -0
  161. package/dist/{core → engine}/config.d.ts +7 -2
  162. package/dist/engine/config.js +6 -0
  163. package/dist/engine/engine.d.ts +45 -0
  164. package/dist/{core → engine}/engine.js +6 -10
  165. package/dist/engine/env.d.ts +59 -0
  166. package/dist/engine/env.js +83 -0
  167. package/dist/{errors.d.ts → engine/errors.d.ts} +22 -22
  168. package/dist/{errors.js → engine/errors.js} +22 -22
  169. package/dist/{core → engine/flow}/branch-regression.d.ts +7 -7
  170. package/dist/{core → engine/flow}/branch-regression.js +4 -3
  171. package/dist/engine/flow/flow.d.ts +162 -0
  172. package/dist/engine/flow/flow.js +244 -0
  173. package/dist/{core → engine/flow}/map-builder.d.ts +34 -39
  174. package/dist/{core → engine/flow}/map-builder.js +45 -47
  175. package/dist/{core → engine}/locate.d.ts +1 -1
  176. package/dist/{core → engine}/locate.js +1 -2
  177. package/dist/{mem-stub.d.ts → engine/mem/mem-stub.d.ts} +9 -8
  178. package/dist/{mem-stub.js → engine/mem/mem-stub.js} +2 -2
  179. package/dist/{mem-page.d.ts → engine/mem/mem.d.ts} +1 -1
  180. package/dist/{mem-page.js → engine/mem/mem.js} +2 -1
  181. package/dist/engine/page-gone.d.ts +5 -0
  182. package/dist/engine/page-gone.js +20 -0
  183. package/dist/engine/run/connect.d.ts +28 -0
  184. package/dist/{types.js → engine/run/connect.js} +11 -10
  185. package/dist/engine/run/events.d.ts +67 -0
  186. package/dist/engine/run/events.js +90 -0
  187. package/dist/engine/run/hooks.d.ts +16 -0
  188. package/dist/engine/run/hooks.js +8 -0
  189. package/dist/engine/run/launch.d.ts +13 -0
  190. package/dist/engine/run/launch.js +27 -0
  191. package/dist/{core/run-graph.d.ts → engine/run/run.d.ts} +8 -12
  192. package/dist/{core/run-graph.js → engine/run/run.js} +22 -12
  193. package/dist/engine/stub/pace.d.ts +12 -0
  194. package/dist/engine/stub/pace.js +2 -0
  195. package/dist/engine/stub/ring.d.ts +130 -0
  196. package/dist/engine/stub/ring.js +41 -0
  197. package/dist/engine/stub/stub.d.ts +268 -0
  198. package/dist/engine/stub/stub.js +1 -0
  199. package/dist/engine/stub/todos.d.ts +104 -0
  200. package/dist/engine/stub/todos.js +2 -0
  201. package/dist/engine/stub/viewport.d.ts +26 -0
  202. package/dist/engine/stub/viewport.js +2 -0
  203. package/dist/{trait.d.ts → engine/trait/trait.d.ts} +1 -1
  204. package/dist/index.d.ts +84 -36
  205. package/dist/index.js +44 -19
  206. package/dist/{session/auto-explore-run.d.ts → live/auto/auto.d.ts} +10 -16
  207. package/dist/{session/auto-explore-run.js → live/auto/auto.js} +164 -254
  208. package/dist/{session/auto-explore.d.ts → live/auto/explore.d.ts} +4 -14
  209. package/dist/{session/auto-explore.js → live/auto/explore.js} +21 -127
  210. package/dist/{auto-session/session.d.ts → live/auto-session/auto-session.d.ts} +1 -1
  211. package/dist/{auto-session/session.js → live/auto-session/auto-session.js} +27 -24
  212. package/dist/{auto-session → live/auto-session}/helpers.d.ts +6 -5
  213. package/dist/{auto-session → live/auto-session}/helpers.js +1 -1
  214. package/dist/{session/auto-session-ipc.d.ts → live/auto-session/ipc.d.ts} +7 -5
  215. package/dist/{session/auto-session-ipc.js → live/auto-session/ipc.js} +31 -16
  216. package/dist/{session/browser.d.ts → live/auto-session/start.d.ts} +1 -2
  217. package/dist/{session/browser.js → live/auto-session/start.js} +2 -3
  218. package/dist/{pilot-overlay → live/pilot}/panel.d.ts +1 -1
  219. package/dist/{pilot-overlay → live/pilot}/panel.js +23 -31
  220. package/dist/{session → live/pilot}/pilot.d.ts +3 -3
  221. package/dist/{session → live/pilot}/pilot.js +4 -4
  222. package/dist/{traverse/run.d.ts → live/traverse/traverse.d.ts} +1 -1
  223. package/dist/{traverse/run.js → live/traverse/traverse.js} +26 -43
  224. package/dist/manifest/manifest.d.ts +52 -0
  225. package/dist/manifest/manifest.js +93 -0
  226. package/dist/manifest/map-imports.d.ts +7 -0
  227. package/dist/manifest/map-imports.js +22 -0
  228. package/dist/manifest/maps.d.ts +33 -0
  229. package/dist/manifest/maps.js +62 -0
  230. package/dist/manifest/pack.d.ts +21 -0
  231. package/dist/manifest/pack.js +109 -0
  232. package/dist/manifest/project.d.ts +60 -0
  233. package/dist/manifest/project.js +101 -0
  234. package/dist/{session/block-inject.js → manifest/roots.js} +1 -18
  235. package/dist/manifest/scan.d.ts +19 -0
  236. package/dist/manifest/scan.js +57 -0
  237. package/dist/manifest/source.d.ts +23 -0
  238. package/dist/manifest/source.js +86 -0
  239. package/dist/runner/mode.d.ts +71 -0
  240. package/dist/runner/mode.js +1 -0
  241. package/dist/runner/modes/branches.d.ts +5 -0
  242. package/dist/runner/modes/branches.js +37 -0
  243. package/dist/runner/modes/demo.d.ts +3 -0
  244. package/dist/runner/modes/demo.js +13 -0
  245. package/dist/runner/modes/report.d.ts +2 -0
  246. package/dist/runner/modes/report.js +54 -0
  247. package/dist/runner/modes/run.d.ts +2 -0
  248. package/dist/runner/modes/run.js +3 -0
  249. package/dist/runner/options.d.ts +31 -0
  250. package/dist/runner/options.js +42 -0
  251. package/dist/runner/plan/find.d.ts +18 -0
  252. package/dist/runner/plan/find.js +65 -0
  253. package/dist/runner/plan/plan.d.ts +11 -0
  254. package/dist/runner/plan/plan.js +97 -0
  255. package/dist/runner/plan/seed-mem.d.ts +12 -0
  256. package/dist/runner/plan/seed-mem.js +98 -0
  257. package/dist/runner/plan/spec.d.ts +5 -0
  258. package/dist/runner/plan/spec.js +17 -0
  259. package/dist/runner/play-steps.d.ts +2 -0
  260. package/dist/runner/play-steps.js +59 -0
  261. package/dist/runner/runner.d.ts +4 -0
  262. package/dist/runner/runner.js +64 -0
  263. package/dist/runner/session.d.ts +9 -0
  264. package/dist/runner/session.js +87 -0
  265. package/dist/{browser.js → runtime/browser.js} +4 -2
  266. package/dist/{env-file.js → runtime/env-file.js} +7 -12
  267. package/dist/{extensions.d.ts → runtime/extensions.d.ts} +1 -5
  268. package/dist/{extensions.js → runtime/extensions.js} +2 -1
  269. package/dist/runtime/full-launch.d.ts +1 -0
  270. package/dist/runtime/full-launch.js +34 -0
  271. package/dist/runtime/global-flag.d.ts +5 -0
  272. package/dist/runtime/global-flag.js +18 -0
  273. package/dist/{playwright-config.d.ts → runtime/playwright-config.d.ts} +1 -1
  274. package/dist/{playwright.config.js → runtime/playwright.config.js} +3 -2
  275. package/dist/runtime/run-log.d.ts +2 -0
  276. package/dist/runtime/run-log.js +17 -0
  277. package/dist/{video-dir.js → runtime/video-dir.js} +3 -2
  278. package/dist/{config.d.ts → runtime/waygraph-config.d.ts} +6 -9
  279. package/dist/{config.js → runtime/waygraph-config.js} +21 -51
  280. package/dist/{webserver.js → runtime/webserver.js} +5 -30
  281. package/examples/routed-demo/config/waygraph.config.ts +20 -0
  282. package/examples/routed-demo/package.json +1 -4
  283. package/examples/routed-demo/scripts/fixture-server.mjs +1 -1
  284. package/examples/routed-demo/src/flows/routed-demo-map.flow.ts +2 -4
  285. package/examples/routed-demo/src/flows/routed-demo.flow.ts +1 -2
  286. package/examples/routed-demo/src/map/(app_base)/dashboard/_methods/click-widget.block.ts +5 -4
  287. package/examples/routed-demo/src/map/(app_base)/dashboard/_nav.block.ts +3 -3
  288. package/examples/routed-demo/src/map/(app_base)/dashboard/_page.block.ts +3 -3
  289. package/examples/routed-demo/src/map/(external)/docs/_nav.block.ts +3 -3
  290. package/examples/routed-demo/src/map/(external)/docs/_page.block.ts +3 -3
  291. package/examples/routed-demo/src/states/routed-demo.states.ts +5 -3
  292. package/examples/routed-demo/tests/routed-demo.spec.ts +4 -4
  293. package/examples/routed-demo/tsconfig.json +1 -1
  294. package/examples/saucedemo/docs/CONVENTION.md +4 -5
  295. package/examples/saucedemo/docs/HELPERS.md +11 -11
  296. package/examples/saucedemo/src/blocks/SITE-MAP.md +0 -1
  297. package/examples/saucedemo/src/blocks/saucedemo-web/NAV.md +1 -5
  298. package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -3
  299. package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
  300. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
  301. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
  302. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
  303. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
  304. package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +5 -8
  305. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -3
  306. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
  307. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +35 -43
  308. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
  309. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
  310. package/examples/saucedemo/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
  311. package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
  312. package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
  313. package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
  314. package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -4
  315. package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -4
  316. package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +4 -5
  317. package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
  318. package/examples/saucedemo/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
  319. package/examples/saucedemo/src/flows/api-demo.flow.ts +12 -10
  320. package/examples/saucedemo/src/states/checkout.states.ts +21 -11
  321. package/examples/saucedemo/src/stubs/device-showcase.ts +8 -10
  322. package/examples/saucedemo/tests/auto-graph.spec.ts +4 -12
  323. package/package.json +10 -6
  324. package/templates/agents/waygraph-planner.agent.md +2 -2
  325. package/templates/quickstart/docs/CONVENTION.md +4 -4
  326. package/templates/quickstart/docs/HELPERS.md +10 -8
  327. package/templates/quickstart/package.json +0 -3
  328. package/templates/quickstart/src/blocks/SITE-MAP.md +0 -1
  329. package/templates/quickstart/src/blocks/saucedemo-web/NAV.md +1 -5
  330. package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -3
  331. package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
  332. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
  333. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
  334. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
  335. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
  336. package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +5 -8
  337. package/templates/quickstart/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -3
  338. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
  339. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +35 -43
  340. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
  341. package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
  342. package/templates/quickstart/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
  343. package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
  344. package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
  345. package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
  346. package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -4
  347. package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -4
  348. package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +4 -5
  349. package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
  350. package/templates/quickstart/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
  351. package/templates/quickstart/src/flows/api-demo.flow.ts +12 -10
  352. package/templates/quickstart/src/states/checkout.states.ts +21 -11
  353. package/templates/quickstart/src/stubs/device-showcase.ts +8 -10
  354. package/templates/scaffold/README.md +2 -1
  355. package/templates/scaffold/STRUCTURE.md +5 -4
  356. package/templates/scaffold/config/waygraph.config.ts +1 -0
  357. package/templates/scaffold/gitignore +1 -0
  358. package/templates/scaffold/src/flows/README.md +2 -2
  359. package/templates/scaffold/src/map/(app_base)/docs/_nav.block.ts +3 -3
  360. package/templates/scaffold/src/map/(app_base)/docs/_page.block.ts +3 -3
  361. package/templates/scaffold/src/map/(app_base)/home/_methods/add-item.effect.block.ts +4 -4
  362. package/templates/scaffold/src/map/(app_base)/home/_methods/assert-hello.method.block.ts +3 -3
  363. package/templates/scaffold/src/map/(app_base)/home/_methods/assert-item-added.method.block.ts +3 -3
  364. package/templates/scaffold/src/map/(app_base)/home/_methods/clear-cart.method.block.ts +5 -4
  365. package/templates/scaffold/src/map/(app_base)/home/_methods/remove-item.effect.block.ts +4 -4
  366. package/templates/scaffold/src/map/(app_base)/home/_nav.block.ts +3 -3
  367. package/templates/scaffold/src/map/(app_base)/home/_page.block.ts +3 -3
  368. package/templates/scaffold/src/map/(app_base)/home/nav-verification-link.block.ts +4 -4
  369. package/templates/scaffold/src/map/(external)/hoppscotch/_keys.ts +21 -0
  370. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-body.method.block.ts +4 -4
  371. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-header.method.block.ts +4 -4
  372. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-status.method.block.ts +4 -4
  373. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.ts +5 -4
  374. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-body.method.block.ts +6 -5
  375. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-headers.method.block.ts +6 -5
  376. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/send-request.method.block.ts +5 -4
  377. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-bearer-token.method.block.ts +6 -5
  378. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-headers.method.block.ts +6 -5
  379. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-json-body.method.block.ts +6 -5
  380. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-method.method.block.ts +6 -5
  381. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-query-params.method.block.ts +6 -5
  382. package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-url.method.block.ts +6 -5
  383. package/templates/scaffold/src/map/(external)/hoppscotch/_nav.block.ts +3 -3
  384. package/templates/scaffold/src/map/(external)/hoppscotch/_page.block.ts +3 -3
  385. package/templates/scaffold/src/map/(external)/hoppscotch/_states.ts +6 -0
  386. package/templates/scaffold/src/map/(external)/hoppscotch/settings/_nav.block.ts +3 -3
  387. package/templates/scaffold/src/map/(external)/mailpit/_keys.ts +13 -0
  388. package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-content.method.block.ts +4 -4
  389. package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-received.method.block.ts +4 -4
  390. package/templates/scaffold/src/map/(external)/mailpit/_methods/extract-email-link.method.block.ts +6 -5
  391. package/templates/scaffold/src/map/(external)/mailpit/_methods/open-message.method.block.ts +6 -5
  392. package/templates/scaffold/src/map/(external)/mailpit/_nav.block.ts +3 -3
  393. package/templates/scaffold/src/map/(external)/mailpit/_page.block.ts +3 -3
  394. package/templates/scaffold/src/map/(external)/mailpit/_states.ts +9 -0
  395. package/templates/scaffold/src/map/README.md +7 -0
  396. package/templates/scaffold/src/states/README.md +4 -1
  397. package/templates/scaffold/src/states/demo.mem-keys.ts +1 -29
  398. package/templates/scaffold/src/states/demo.states.ts +14 -20
  399. package/templates/scaffold/tests/hoppscotch.spec.ts +1 -11
  400. package/templates/scaffold/tests/mail-verify.spec.ts +2 -2
  401. package/templates/skills/waygraph-blind-pilot.skill.md +2 -6
  402. package/templates/skills/waygraph-convention.skill.md +23 -14
  403. package/templates/skills/waygraph-pilot.skill.md +7 -4
  404. package/dist/auto-session/verbose-log.js +0 -16
  405. package/dist/auto-session.d.ts +0 -2
  406. package/dist/auto-session.js +0 -3
  407. package/dist/cli/discover.d.ts +0 -40
  408. package/dist/cli/discover.js +0 -148
  409. package/dist/commands/agent-dive.js +0 -52
  410. package/dist/commands/check.js +0 -192
  411. package/dist/commands/map.js +0 -29
  412. package/dist/commands/run.js +0 -104
  413. package/dist/commands/traverse.js +0 -177
  414. package/dist/core/block.d.ts +0 -109
  415. package/dist/core/blocks/effect.js +0 -23
  416. package/dist/core/config.js +0 -17
  417. package/dist/core/engine.d.ts +0 -198
  418. package/dist/core/flow.d.ts +0 -294
  419. package/dist/core/flow.js +0 -432
  420. package/dist/core.d.ts +0 -14
  421. package/dist/core.js +0 -15
  422. package/dist/highlights/merge.d.ts +0 -8
  423. package/dist/highlights/merge.js +0 -173
  424. package/dist/highlights/stub-ctx.d.ts +0 -10
  425. package/dist/highlights/stub-ctx.js +0 -331
  426. package/dist/highlights/types.d.ts +0 -613
  427. package/dist/highlights.d.ts +0 -9
  428. package/dist/highlights.js +0 -10
  429. package/dist/pilot-overlay.d.ts +0 -5
  430. package/dist/pilot-overlay.js +0 -6
  431. package/dist/runner/banner-log.js +0 -63
  432. package/dist/runner/chain-run.js +0 -102
  433. package/dist/runner/cursor.js +0 -140
  434. package/dist/runner/demo-log.js +0 -316
  435. package/dist/runner/device-stage.d.ts +0 -9
  436. package/dist/runner/device-stage.js +0 -420
  437. package/dist/runner/discovery.js +0 -105
  438. package/dist/runner/index.js +0 -2
  439. package/dist/runner/inpage/banner.d.ts +0 -21
  440. package/dist/runner/inpage/banner.js +0 -156
  441. package/dist/runner/inpage/caption.d.ts +0 -3
  442. package/dist/runner/inpage/caption.js +0 -23
  443. package/dist/runner/inpage/core.d.ts +0 -4
  444. package/dist/runner/inpage/core.js +0 -316
  445. package/dist/runner/inpage/device.d.ts +0 -3
  446. package/dist/runner/inpage/device.js +0 -211
  447. package/dist/runner/inpage/network.d.ts +0 -15
  448. package/dist/runner/inpage/network.js +0 -217
  449. package/dist/runner/inpage/panel-chrome.js +0 -192
  450. package/dist/runner/inpage/stamp.js +0 -46
  451. package/dist/runner/inpage/swipe-zoom.js +0 -220
  452. package/dist/runner/inpage/todos.js +0 -337
  453. package/dist/runner/interaction-patch.js +0 -384
  454. package/dist/runner/main.js +0 -469
  455. package/dist/runner/network-capture.d.ts +0 -9
  456. package/dist/runner/network-capture.js +0 -126
  457. package/dist/runner/overlay-css.d.ts +0 -3
  458. package/dist/runner/overlay-css.js +0 -377
  459. package/dist/runner/overlay-install.js +0 -90
  460. package/dist/runner/overlay-stage.js +0 -110
  461. package/dist/runner/rings.js +0 -514
  462. package/dist/runner/seed-mem.js +0 -110
  463. package/dist/runner/slides.js +0 -278
  464. package/dist/runner/step-mode.js +0 -703
  465. package/dist/runner/step-panels.js +0 -729
  466. package/dist/runner/teardown.js +0 -202
  467. package/dist/runner/todo-dock.js +0 -142
  468. package/dist/session/step-overlay.d.ts +0 -37
  469. package/dist/session/step-overlay.js +0 -244
  470. package/examples/routed-demo/playwright.config.ts +0 -21
  471. package/examples/saucedemo/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
  472. package/templates/quickstart/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
  473. /package/dist/{commands → cli/commands}/agent-dive-scaffold.d.ts +0 -0
  474. /package/dist/{commands → cli/commands}/agent-dive.d.ts +0 -0
  475. /package/dist/{commands → cli/commands}/extensions.d.ts +0 -0
  476. /package/dist/{commands → cli/commands}/init.d.ts +0 -0
  477. /package/dist/{commands → cli/commands}/list.d.ts +0 -0
  478. /package/dist/{commands → cli/commands}/map.d.ts +0 -0
  479. /package/dist/{commands → cli/commands}/session.d.ts +0 -0
  480. /package/dist/{commands → cli/commands}/test.d.ts +0 -0
  481. /package/dist/{commands → cli/commands}/traverse.d.ts +0 -0
  482. /package/dist/{commands → cli/commands}/try.d.ts +0 -0
  483. /package/dist/{commands → cli/commands}/upgrade.d.ts +0 -0
  484. /package/dist/{highlights → demo/narration}/shorthand.js +0 -0
  485. /package/dist/{session/overlay-beacon.d.ts → demo/overlay/beacon.d.ts} +0 -0
  486. /package/dist/{session/overlay-beacon.js → demo/overlay/beacon.js} +0 -0
  487. /package/dist/{pilot-overlay/action-ring.d.ts → demo/overlay/pilot/actions.d.ts} +0 -0
  488. /package/dist/{ui → demo/overlay/ui}/components/ring.d.ts +0 -0
  489. /package/dist/{ui → demo/overlay/ui}/stylesheet.d.ts +0 -0
  490. /package/dist/{ui → demo/overlay/ui}/stylesheet.js +0 -0
  491. /package/dist/{ui → demo/overlay/ui}/tokens.d.ts +0 -0
  492. /package/dist/{ui → demo/overlay/ui}/tokens.js +0 -0
  493. /package/dist/{highlights → demo}/types.js +0 -0
  494. /package/dist/{auto-session → demo}/verbose-log.d.ts +0 -0
  495. /package/dist/{selector.d.ts → engine/trait/selector.d.ts} +0 -0
  496. /package/dist/{selector.js → engine/trait/selector.js} +0 -0
  497. /package/dist/{trait.js → engine/trait/trait.js} +0 -0
  498. /package/dist/{traverse → live/traverse}/coverage.d.ts +0 -0
  499. /package/dist/{traverse → live/traverse}/coverage.js +0 -0
  500. /package/dist/{traverse → live/traverse}/lease.d.ts +0 -0
  501. /package/dist/{traverse → live/traverse}/lease.js +0 -0
  502. /package/dist/{session/block-inject.d.ts → manifest/roots.d.ts} +0 -0
  503. /package/dist/{blocks-select.d.ts → manifest/select.d.ts} +0 -0
  504. /package/dist/{blocks-select.js → manifest/select.js} +0 -0
  505. /package/dist/{browser.d.ts → runtime/browser.d.ts} +0 -0
  506. /package/dist/{env-file.d.ts → runtime/env-file.d.ts} +0 -0
  507. /package/dist/{playwright-config.js → runtime/playwright-config.js} +0 -0
  508. /package/dist/{playwright.config.d.ts → runtime/playwright.config.d.ts} +0 -0
  509. /package/dist/{video-dir.d.ts → runtime/video-dir.d.ts} +0 -0
  510. /package/dist/{webserver.d.ts → runtime/webserver.d.ts} +0 -0
@@ -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 {};
@@ -1,294 +0,0 @@
1
- import type { Block, Checkpoint } from "../types.js";
2
- import type { RunGraphOptions } from "./run-graph.js";
3
- import type { EngineConfig } from "./config.js";
4
- import type { BrowserContext, Page } from "@playwright/test";
5
- import { MemPage } from "../mem-page.js";
6
- import type { Trait } from "../trait.js";
7
- import type { DemoPace, HighlightStyleDefaults } from "../highlights.js";
8
- /**
9
- * A composed, runnable flow. Always begins from Checkpoint<"__start__">, same as
10
- * runGraph's `entry`. `run(context, mem)` uses a context you already have (the
11
- * usual case inside a `@playwright/test` file, via its `context` fixture) -
12
- * there's no browser for this Flow to launch, so no config to pass. `run(mem,
13
- * config?)` - no context - has the Engine launch and own its own browser for
14
- * this one run instead, and closes it in `finally`; use this outside a
15
- * Playwright test file, or when a flow genuinely needs its own browser instance
16
- * rather than sharing the test's. `config` here overrides, per key, whatever
17
- * `new Engine(...)` was constructed with - so one flow (module-level, imported
18
- * by many specs) can still have every run choose its own `headless`/`slowMo`
19
- * rather than being stuck with whatever the flow's own file happened to set.
20
- *
21
- * `withBlockVerify`/`modBlockVerify` do what {@link withVerify}/{@link modVerify}
22
- * do for a single Block, one level up - a spec that only imports the finished
23
- * Flow (not necessarily the individual Blocks it was built from) can still
24
- * patch one Block's verify for just that call, without editing the flow's own
25
- * file or hand-rebuilding its Block list. Addressed the same three ways
26
- * `modVerify` already addresses a Trait - the Block reference itself
27
- * (`LoginBlock`, imported like any other Block; typo-proof, refactor-safe,
28
- * jump-to-definition works), a plain string name, or a numeric index into this
29
- * Flow's Block list (position between `start`/`end`, 0-based) for a spec that
30
- * genuinely doesn't have the Block imported and doesn't want to spell its
31
- * name. A reference or string resolves by `.name` under the hood (a Block's
32
- * own stable identity in this codebase, same as every error message elsewhere
33
- * in this file already uses) rather than object identity - it stays
34
- * resolvable even after an earlier patch already swapped that slot for a new
35
- * object, since the name survives every `withVerify`/`modVerify` in the
36
- * chain; an index is checked fresh against this Flow's current Block list
37
- * each call, so it's still correct after a patch too. Returns a new Flow -
38
- * the original is untouched, same as every other decorator in this module.
39
- */
40
- /**
41
- * One Block's identity as exposed by graph introspection - {@link Flow.blocks},
42
- * {@link ComposedBlock.steps} - without needing to execute anything. Does not
43
- * include the Block's literal Checkpoint `In`/`Out` tags: those are TypeScript
44
- * literal types, erased at runtime, and can only be recovered by a build-time
45
- * static-analysis tool reading the source's own type annotations - see the
46
- * `graph-visualization` openspec change for that piece.
47
- */
48
- export interface BlockInfo {
49
- name: string;
50
- /** `branch()`'s routing table, if this Block has one - see {@link Block.routes}. */
51
- routes?: Readonly<Record<string, string | null>>;
52
- /**
53
- * True when {@link chainFlow} inserted a session-reset boundary
54
- * immediately before this Block - i.e. this is the first Block of a
55
- * sub-flow that was wrapped in {@link withSessionReset}, and it isn't
56
- * the very first sub-flow in the chain. Absent (not just false) from
57
- * `Flow.blocks()` on an ordinary, non-chained Flow.
58
- */
59
- resetSessionBefore?: boolean;
60
- /**
61
- * The actual Block, re-runnable on its own via
62
- * `engine.defineFlow([start, info.block, end])` - e.g. step-through
63
- * tooling that runs a Flow's Blocks one at a time. Introspection that only
64
- * wants to read the shape (a visualizer) can ignore this and use `name`/
65
- * `routes` alone.
66
- */
67
- block: Block<any, any>;
68
- }
69
- /** A runnable chain of Blocks built by `engine.map()`. `run(mem)` launches its own browser; `run(context, mem)` reuses one. */
70
- export interface Flow<Out extends Checkpoint<string>> {
71
- /**
72
- * True once this Flow has been wrapped in {@link withSessionReset} - a
73
- * hint for `chainFlow`, not something `run()` itself checks: it marks
74
- * this Flow as one that expects to start from a genuinely fresh,
75
- * unauthenticated browser state (e.g. a login flow meant to be
76
- * re-entered later in a longer chain). `chainFlow` clears cookies and
77
- * storage right before this Flow's first Block runs, but only when this
78
- * Flow isn't the very first thing in the chain (nothing to reset yet).
79
- */
80
- readonly resetSession: boolean;
81
- /**
82
- * Set once this Flow has been wrapped in {@link withTitle} - a display
83
- * hint for a step-through overlay/showcase (e.g. "Ticket #123"), not
84
- * something `run()` itself uses.
85
- */
86
- readonly title?: string;
87
- /**
88
- * Set once this Flow has been wrapped in {@link withExpectedFailure} - a
89
- * display hint for a step-through overlay: this Flow is DESIGNED to throw
90
- * (e.g. a blocked user's login attempt genuinely failing), not a bug in
91
- * the demo itself. `run()` never reads this - the Flow still throws
92
- * exactly as it would otherwise; only the overlay's error panel reads it,
93
- * to show an informational "this is the point" panel instead of an
94
- * alarming one indistinguishable from a real break.
95
- */
96
- readonly expectedFailureReason?: string;
97
- /**
98
- * Set once this Flow has been wrapped in {@link withHighlightFixtures} -
99
- * demo narration overrides (unlimited purposes on `.flow.ts`) keyed by
100
- * block.name. `run()` never reads this; step/`demo` merges onto block stubs.
101
- */
102
- readonly highlightFixtures?: import("../highlights.js").HighlightFixtureMap;
103
- /**
104
- * Demo pacing for this Flow's episode (`withDemoPace`).
105
- * `run()` ignores; step/demo applies per Block in the episode.
106
- */
107
- readonly demoPace?: import("../highlights.js").DemoPace;
108
- /**
109
- * Default highlight size/weight/tone for this Flow's episode (`withHighlightStyle`).
110
- * Per-slot stub/fixture values win. `run()` ignores.
111
- */
112
- readonly highlightStyle?: import("../highlights.js").HighlightStyleDefaults;
113
- /**
114
- * Set once this Flow has been wrapped in {@link withMemStub} - opts into
115
- * auto-filling `requires` keys with registered fake values
116
- * (`registerMemStub`, `src/mem-stub.ts`) instead of failing preflight when
117
- * the caller didn't supply them. `run()` never reads this - the CLI's own
118
- * `--data`/`--mem-stub` seeding, or a bare-library caller's own explicit
119
- * `seedMemStub(mem, flow)` call, is what actually fills mem before `run()`.
120
- */
121
- readonly memStub?: boolean;
122
- /**
123
- * This Flow's constituent Blocks, in order between `start`/`end`, as plain
124
- * data - for introspection/visualization tools, without running anything.
125
- * @example loginFlow.blocks() // [{ name: "login" }, { name: "add-to-cart", routes: {...} }]
126
- */
127
- blocks(): readonly BlockInfo[];
128
- run(context: BrowserContext, mem: MemPage): Promise<Out>;
129
- /**
130
- * `options.closeOnFinish: false` hands the driven page back instead of
131
- * closing it - use this overload (a literal `false`, not a `boolean`) to
132
- * get the `{ result, page }` shape typed correctly.
133
- * @example const { result, page } = await loginFlow.run(context, mem, { closeOnFinish: false });
134
- */
135
- run(context: BrowserContext, mem: MemPage, options: RunGraphOptions & {
136
- closeOnFinish: false;
137
- }): Promise<{
138
- result: Out;
139
- page: Page;
140
- }>;
141
- /**
142
- * `options.page` drives that already-open page instead of opening a new
143
- * one - see {@link RunGraphOptions}.
144
- * @example await loginFlow.run(context, mem, { page: existingPage });
145
- */
146
- run(context: BrowserContext, mem: MemPage, options?: RunGraphOptions): Promise<Out>;
147
- run(mem: MemPage, config?: EngineConfig): Promise<Out>;
148
- /**
149
- * Replaces the given Block's whole verify list, wherever it sits in this
150
- * Flow - same rules as {@link withVerify}. Throws if no Block in this Flow
151
- * matches.
152
- * @example checkoutFlow.withBlockVerify(LoginBlock, [])
153
- * @example checkoutFlow.withBlockVerify("login", [])
154
- * @example checkoutFlow.withBlockVerify(0, [])
155
- */
156
- withBlockVerify(block: Block<any, any> | string | number, verify: Trait[] | ((out: any) => Trait[])): Flow<Out>;
157
- /**
158
- * Replaces one Trait inside the given Block's verify list - same rules as
159
- * {@link modVerify}. Throws if no Block in this Flow matches, or if that
160
- * Block has no verify trait at the given name/index.
161
- * @example checkoutFlow.modBlockVerify(LoginBlock, "url-matches", Trait.url({ pathname: "/inventory.html" }))
162
- */
163
- modBlockVerify(block: Block<any, any> | string | number, nameOrIndex: string | number, newCheck: Trait["check"] | Trait): Flow<Out>;
164
- }
165
- export declare function buildFlow<Out extends Checkpoint<string>>(middle: readonly Block<any, any>[], engineConfig: EngineConfig): Flow<Out>;
166
- /**
167
- * Marks a Flow as expecting to start from a genuinely fresh, unauthenticated
168
- * browser state - e.g. a login flow meant to be re-entered later in a longer
169
- * showcase. Non-destructive, same pattern as {@link withVerify}: returns a
170
- * new Flow: the original is untouched, and the flag survives any further
171
- * `withBlockVerify`/`modBlockVerify` patch applied to the result.
172
- *
173
- * By itself this does nothing - `Flow.run()` never reads `resetSession`.
174
- * It's a hint {@link chainFlow} looks for: right before this Flow's first
175
- * Block runs (skipped if it's the very first thing in the chain - nothing
176
- * to reset yet), chainFlow clears cookies and storage so this Flow starts
177
- * exactly as if a human had opened the app fresh, not wherever the
178
- * previous Flow in the chain happened to leave the page.
179
- * @example const loginFlow = withSessionReset(engine.defineFlow([start, LoginBlock, end]));
180
- * @deprecated Use `map().flow(sub, { reset: true })`; the reset belongs to where flows are joined.
181
- */
182
- export declare function withSessionReset<Out extends Checkpoint<string>>(flow: Flow<Out>): Flow<Out>;
183
- /**
184
- * Names a Flow for display - a step-through overlay/showcase (waygraph's
185
- * `chain --step`) shows this as the running banner while this Flow's own
186
- * Blocks are executing, instead of one fixed title for the whole run.
187
- * Non-destructive, same pattern as {@link withSessionReset}.
188
- * @example const ticket123 = withTitle(loginFlow, "Ticket #123 - Sales rep signs in");
189
- * @deprecated Name a flow with `ctx.title(...)` in a stub on its first step.
190
- */
191
- export declare function withTitle<Out extends Checkpoint<string>>(flow: Flow<Out>, title: string): Flow<Out>;
192
- /**
193
- * Opts this Flow into memStub: `requires` keys the caller didn't supply get
194
- * filled from `registerMemStub`'s registry (`src/mem-stub.ts`) instead of
195
- * failing preflight, for any key that has a registered fake generator - a
196
- * required key with no registration still fails exactly as before.
197
- * Non-destructive, same pattern as {@link withTitle}. `run()` never reads
198
- * this itself - the CLI's `--data`/`--mem-stub` seeding, or a bare-library
199
- * caller's own explicit `seedMemStub(mem, flow)` call, does the filling.
200
- * @example const demoLogin = withMemStub(loginFlow);
201
- * @deprecated Use `engine.map({ memStub: true })`.
202
- */
203
- export declare function withMemStub<Out extends Checkpoint<string>>(flow: Flow<Out>): Flow<Out>;
204
- /**
205
- * Demo pacing for a whole Flow episode (fast review vs slow gap/wrong walkthrough).
206
- * Non-destructive. `fastForwardComposeBlock` is always blitz for its own step;
207
- * use this when an entire episode should be fast or slow.
208
- * @example withDemoPace(withTitle(gapFlow, "Episode 2 - gaps"), "slow")
209
- * @example withDemoPace(happyFlow, 0.5) // 2x faster than normal
210
- * @example withDemoPace(gapFlow, 2.5) // 2.5x slower
211
- * @example withDemoPace(gapFlow, 4500) // absolute ~4.5s gates/dwells
212
- * @deprecated Use `engine.map({ demoPace })`, a step `{ pace }`, or `demo.pace` in the config.
213
- */
214
- export declare function withDemoPace<Out extends Checkpoint<string>>(flow: Flow<Out>, pace: DemoPace): Flow<Out>;
215
- /**
216
- * Default highlight look for a Flow episode (size / weight / optional tone).
217
- * Per-slot stub or {@link withHighlightFixtures} values win when set.
218
- * @example withHighlightStyle(withDemoPace(gapFlow, "slow"), { size: "lg", weight: "bold" })
219
- * @deprecated Use `engine.map({ highlightStyle })`.
220
- */
221
- export declare function withHighlightStyle<Out extends Checkpoint<string>>(flow: Flow<Out>, style: HighlightStyleDefaults): Flow<Out>;
222
- /**
223
- * Demo pacing for one Block or compose unit (not FF - use fastForwardComposeBlock for blitz).
224
- * @example withBlockPace(composeBlock("gap-review", [...]), "slow")
225
- * @deprecated Use a step option: `.method(Block, { pace })`.
226
- */
227
- export declare function withBlockPace<In extends Checkpoint<string>, Out extends Checkpoint<string>>(block: Block<In, Out>, pace: DemoPace): Block<In, Out>;
228
- /**
229
- * Marks a Flow as one that's SUPPOSED to throw - e.g. a locked-out user's
230
- * login attempt genuinely failing, demonstrating the app's own real
231
- * behavior rather than a bug in the demo. Non-destructive, same pattern as
232
- * {@link withTitle}.
233
- *
234
- * By itself this changes nothing about how the Flow runs - it still throws
235
- * Marks a Flow whose last step is an intentional product failure (demo overlay).
236
- * Step mode shows stubOnError rings + an amber "expected outcome" panel when:
237
- * - the last block **throws**, or
238
- * - the last block **succeeds** on the fail branch (e.g. LoginPage + error banner
239
- * after submit-login branched instead of throwing).
240
- * Headless `run()` is unchanged - branching success returns the checkpoint.
241
- * @example const viewerBlockedFlow = withExpectedFailure(
242
- * engine.defineFlow([start, NavLoginBlock, SubmitLoginActionBlock, end]),
243
- * "locked_out_user stays on LoginPage with the error banner - working as intended.",
244
- * );
245
- * @deprecated Use `engine.map({ expectedFailure: reason })`.
246
- */
247
- export declare function withExpectedFailure<Out extends Checkpoint<string>>(flow: Flow<Out>, reason: string): Flow<Out>;
248
- /**
249
- * Attaches demo highlight fixtures to a Flow - unlimited purposes on `.flow.ts`
250
- * (AC copy, BUG/GATE tags, detail) merged onto each block's stubBefore/stubAfter/
251
- * stubOnError slots. Non-destructive, same pattern as {@link withTitle}.
252
- * Demo/`chain --step` reads `flow.highlightFixtures`; `run()` ignores it.
253
- * @example withHighlightFixtures(issueFlow, { "submit-login": { stubBefore: { email: { label: "AC-1" } } } })
254
- * @deprecated Chain ctx stubs on the Block: `Block.stubAfter((ctx) => …)`.
255
- */
256
- export declare function withHighlightFixtures<Out extends Checkpoint<string>>(flow: Flow<Out>, fixtures: import("../highlights.js").HighlightFixtureMap): Flow<Out>;
257
- /** Everything a `with*` wrapper can set, given up front: `engine.defineFlow([...], { title, memStub, ... })`. */
258
- export interface FlowOptions {
259
- /** Shown as the banner while the Flow runs (`withTitle`). */
260
- title?: string;
261
- /** Fill missing `requires` keys from `registerMemStub` (`withMemStub`). */
262
- memStub?: boolean;
263
- /** Clear cookies and storage before this Flow's first Block when chained after another (`withSessionReset`). */
264
- sessionReset?: boolean;
265
- /** `withDemoPace`. */
266
- demoPace?: DemoPace;
267
- /** `withHighlightStyle`. */
268
- highlightStyle?: HighlightStyleDefaults;
269
- /** Marks a Flow that is supposed to throw, with the reason (`withExpectedFailure`). */
270
- expectedFailure?: string;
271
- }
272
- /** Applies each set option through its `with*` wrapper, so both spellings produce the same Flow. */
273
- export declare function applyFlowOptions<Out extends Checkpoint<string>>(flow: Flow<Out>, options: FlowOptions | undefined): Flow<Out>;
274
- export declare function clearSessionState(context: BrowserContext, page: Page): Promise<void>;
275
- /**
276
- * Runs several complete, independent Flows one after another, reusing the
277
- * same page/context/mem in order - each remains its own validated
278
- * start-to-end unit (a Flow's own `[start, ...blocks, end]` contract is
279
- * untouched), this only sequences whole Flows. Deliberately NOT the same
280
- * thing as {@link composeBlock}: composeBlock nests several Blocks into
281
- * one Block that can drop back into another `defineFlow([...])` - a
282
- * chainFlow result is a Flow, but not meant to be nested inside another
283
- * Flow's own Block list. Recursive nesting stays composeBlock's job alone;
284
- * chainFlow is a flat, one-level sequencing of complete showcases (e.g.
285
- * "ticket #123 end to end, then ticket #456 end to end").
286
- *
287
- * A sub-flow wrapped in {@link withSessionReset} gets its cookies/storage
288
- * cleared right before it runs (skipped for the very first flow in the
289
- * chain - nothing to reset yet). The combined result is whatever the LAST
290
- * flow resolved to.
291
- * @example chainFlow(ticket123Flow, ticket456Flow).run(context, mem)
292
- * @deprecated Nest flows with `map().flow(a).flow(b, { reset: true })`.
293
- */
294
- export declare function chainFlow(...flows: readonly Flow<any>[]): Flow<any>;