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
@@ -0,0 +1,268 @@
1
+ import type { Checkpoint } from "../checkpoint/checkpoint.js";
2
+ import type { MemPage } from "../mem/mem.js";
3
+ import type { TodoDockState, TodoDockUiOpts, TodoListStyle, WaygraphTodoGroupInput, WaygraphTodoInput, WaygraphTodoItem, WaygraphTodosOpts } from "./todos.js";
4
+ import type { DeviceOrientation, DevicePreset, DeviceState, DeviceViewport } from "./viewport.js";
5
+ import type { HighlightStubPhase, ResolvedHighlight, WaygraphHighlightStub } from "./ring.js";
6
+ /** Where the top banner sits. */
7
+ export type BannerPos = "left" | "center" | "right";
8
+ /** Banner UX, mirrors {@link TodoDockUiOpts}: pass `false` fields to opt out for this phase. */
9
+ export interface BannerUiOpts {
10
+ /** Move to a free spot while a highlight ring would overlap it (default true). */
11
+ collision?: boolean;
12
+ /** Hide the banner entirely for this phase. */
13
+ hidden?: boolean;
14
+ /**
15
+ * Fade duration (ms) when the banner's title text changes, so a change reads as a deliberate
16
+ * beat instead of an instant flicker. Default 220; 0 disables the fade (instant swap).
17
+ */
18
+ captionFadeMs?: number;
19
+ }
20
+ /** Episode-level fixtures authored inside stubBefore/After/OnError(ctx). */
21
+ export type StubPhaseFixtures = {
22
+ todos?: readonly WaygraphTodoInput[];
23
+ /** Which todo is current (0-based). Rows before = done, after = pending. */
24
+ todoIndex?: number;
25
+ /** Heading above a single {@link StubCtx.todos} list. */
26
+ todoTitle?: string;
27
+ /**
28
+ * Stable dock id (`data-wg-todo-id`) for external redirect asserts
29
+ * (e.g. Mailhog -> back to app and still find the checklist).
30
+ */
31
+ todoId?: string;
32
+ /** `sequential` (default), `checklist`, or `bullets`. */
33
+ todoStyle?: TodoListStyle;
34
+ /** Multiple titled lists (FR / Scenarios / ACs). Wins over bare todos when set. */
35
+ todoGroups?: readonly WaygraphTodoGroupInput[];
36
+ /**
37
+ * Camera zoom (Screen Studio style) - scales the page toward the target /
38
+ * cursor. Not element CSS zoom. Typical `1.25` .. `2`.
39
+ */
40
+ zoom?: number;
41
+ /** Default zoomOut for rings (false = keep camera between rings). */
42
+ zoomOut?: boolean;
43
+ /** Top demo banner title (the purple "waygraph demo" card). */
44
+ title?: string;
45
+ /** Banner side/position (`left` | `center` | `right`). Authored control, like the todo dock's `pos`. */
46
+ titlePos?: BannerPos;
47
+ /** Banner UX: collision (move away from a ring it overlaps), hidden. See {@link BannerUiOpts}. */
48
+ bannerUi?: BannerUiOpts;
49
+ /**
50
+ * Bottom narration caption - a white rounded card (black text, shadow), bottom-centered above
51
+ * the step pill, distinct from the banner (top, card-shaped). Omit/clear to hide it; set again
52
+ * to change the text, fading out/in.
53
+ */
54
+ caption?: string;
55
+ /**
56
+ * Network-tab overlay visibility - capture always happens in the background regardless; this
57
+ * only controls whether the panel itself is shown. Intentionally hidden by default (`undefined`
58
+ * on the very first phase); omit to leave whatever the previous step set alone.
59
+ */
60
+ networkTabVisible?: boolean;
61
+ /**
62
+ * Floating checklist dock side. `left` | `right`.
63
+ * Authored control (also click / WAYGRAPH_TODO_POS / --todo-left|right).
64
+ */
65
+ todoPos?: "left" | "right";
66
+ /**
67
+ * Todo-dock UX (compact / collision / behind-ring). Merged onto env defaults.
68
+ * See {@link TodoDockUiOpts}.
69
+ */
70
+ todoDockUi?: TodoDockUiOpts;
71
+ /**
72
+ * Viewport preset: `mobile` | `tablet` | `desktop` (default / clear).
73
+ * Omit on later blocks = **keep** (same persist pattern as todos).
74
+ */
75
+ device?: DevicePreset | DeviceState;
76
+ /** Explicit pixel viewport (wins over preset width/height when both set). */
77
+ viewport?: DeviceViewport;
78
+ /** Touch theater + Playwright touchscreen when true. */
79
+ touch?: boolean;
80
+ /** Portrait / landscape (swaps preset width/height). */
81
+ orientation?: DeviceOrientation;
82
+ };
83
+ /**
84
+ * What a stub is given: chained where a flow uses a Block, it paints rings, todos, the device and the banner.
85
+ *
86
+ * @example
87
+ * LoginBlock.stubBefore((ctx) => {
88
+ * ctx.todos("sign-in", ["Enter email", "Enter password", "Click Sign in"], { index: 0 });
89
+ * ctx.zoom(1.35);
90
+ * ctx.highlights({
91
+ * email: { selector: "#email", label: "Email" },
92
+ * submit: { selector: "#login-button", label: "Sign in" },
93
+ * });
94
+ * })
95
+ * // Sequential plan: bump todoIndex in a later phase / a later Block's stubBefore
96
+ * .stubAfter((ctx) => {
97
+ * ctx.todoIndex(2);
98
+ * ctx.ring("inventory", { selector: ".inventory_list", label: "Landed" });
99
+ * });
100
+ */
101
+ export type StubCtx<Out extends Checkpoint<string> = Checkpoint<string>> = {
102
+ /**
103
+ * Live Mem for this run - same store `act`/`observe` read. Prefer this over
104
+ * closing over outer scope or inventing parallel fixture bags.
105
+ * Undefined only if the caller ran a stub phase without passing mem (tests).
106
+ */
107
+ readonly mem: MemPage | undefined;
108
+ /** Present after resolve (stubAfter). Undefined for stubBefore. */
109
+ readonly out: Out | undefined;
110
+ /** Present on stubOnError when the step threw. */
111
+ readonly error: unknown | undefined;
112
+ /** Replace named highlight rings for this phase. */
113
+ highlights(slots: HighlightStubPhase): void;
114
+ /** Set / overwrite one named ring. */
115
+ ring(id: string, stub: WaygraphHighlightStub): void;
116
+ /**
117
+ * Floating checklist: `ctx.todos("login", ["Enter email", "Enter password"], { title: "Sign in", index: 0 })`.
118
+ * The id is the dock's `data-wg-todo-id` (stable through redirects). One dock at a time (setting todos replaces it);
119
+ * pass `{ parallel: true }` to keep docks with other ids. An empty list hides the dock.
120
+ */
121
+ todos(id: string, items: readonly WaygraphTodoInput[], opts?: WaygraphTodosOpts): void;
122
+ /** Moves the current dock's current item (sequential plans: a later step bumps it). */
123
+ todoIndex(n: number): void;
124
+ /** Several titled lists in one dock (e.g. Functional Requirements / Scenarios / ACs), with the same id and options as {@link StubCtx.todos}. */
125
+ todoGroups(id: string, groups: readonly WaygraphTodoGroupInput[], opts?: Omit<WaygraphTodosOpts, "index">): void;
126
+ /**
127
+ * Hide the floating todo dock. Omit todos on a later block = **keep** the
128
+ * previous dock (carry forward). Only hideTodos or an empty todos list clears it.
129
+ */
130
+ hideTodos(): void;
131
+ /**
132
+ * Viewport / device fixture (0.13+). `mobile` | `tablet` | `desktop`.
133
+ * Omit on later blocks = **keep** (same persist as todos). Use
134
+ * {@link StubCtx.hideDevice} or `device("desktop")` to return to desktop.
135
+ */
136
+ device(preset: DevicePreset | DeviceState): void;
137
+ /** Explicit CSS-pixel viewport (implies mobile-ish unless desktop-sized). */
138
+ viewport(box: DeviceViewport): void;
139
+ /** Enable / disable touch theater + touchscreen gestures. */
140
+ touch(on?: boolean): void;
141
+ /**
142
+ * Rotate viewport to portrait or landscape (0.13.3+).
143
+ * Keeps current preset; swaps width/height. Toast + lerp like device().
144
+ */
145
+ orientation(o: DeviceOrientation): void;
146
+ /**
147
+ * Reset to desktop viewport and clear touch mode. Omit device on a later
148
+ * block = **keep**; only hideDevice / device("desktop") clears.
149
+ */
150
+ hideDevice(): void;
151
+ /** Default camera zoom for rings without their own zoom. */
152
+ zoom(n: number): void;
153
+ /**
154
+ * Default zoomOut for rings in this phase. `false` = keep camera between rings.
155
+ */
156
+ zoomOut(keep: boolean): void;
157
+ /** Top banner title (waygraph demo card). `opts.pos` also places it (left | center | right). */
158
+ title(text: string, opts?: {
159
+ pos?: BannerPos;
160
+ }): void;
161
+ /** Place the banner: `left` | `center` | `right` (authored; click / env are fallbacks). */
162
+ titlePos(side: BannerPos): void;
163
+ /**
164
+ * Banner UX: `{ collision: false }` keeps it put even over a ring; `{ hidden: true }` hides it.
165
+ * @example ctx.bannerUi({ collision: false });
166
+ */
167
+ bannerUi(opts: BannerUiOpts): void;
168
+ /**
169
+ * Bottom narration caption - a white rounded card (black text, shadow), bottom-centered above
170
+ * the step pill; distinct from {@link StubCtx.title}, which is the top banner card. Fades in/out
171
+ * on change. Pass `""` (or call {@link StubCtx.hideCaption}) to clear.
172
+ * @example ctx.caption("Click Add to cart to continue");
173
+ */
174
+ caption(text: string): void;
175
+ /** Clears the caption (fades it out). */
176
+ hideCaption(): void;
177
+ /** Shorthand for `bannerUi({ hidden: true })`. */
178
+ hideBanner(): void;
179
+ /**
180
+ * Shows the network-tab overlay (Postman-style inspector of real page traffic + defineApiBlock
181
+ * calls) - capture always runs in the background; this just reveals the panel. Hidden by default.
182
+ * @example ctx.showNetworkTab();
183
+ */
184
+ showNetworkTab(): void;
185
+ /** Hides the network-tab overlay (capture keeps running - only the panel disappears). */
186
+ hideNetworkTab(): void;
187
+ /**
188
+ * Todo-dock UX: compact fold, collision flip, dim-behind-ring.
189
+ * Defaults are smart-on; pass false fields to opt out for this phase.
190
+ * @example
191
+ * ctx.todoDockUi({ compact: false }); // always show the full list
192
+ */
193
+ todoDockUi(opts: TodoDockUiOpts): void;
194
+ };
195
+ /** A stub callback: receives the stub `ctx` and paints rings, titles and todos. */
196
+ export type StubLifecycleFn<Out extends Checkpoint<string>> = (ctx: StubCtx<Out>) => void | Promise<void>;
197
+ /** Result of running a stub phase (rings + episode fixtures). */
198
+ export type StubPhaseResult = {
199
+ highlights: ResolvedHighlight[];
200
+ /** Flattened first-group items (compat). Prefer {@link todoDock}. */
201
+ todos: WaygraphTodoItem[];
202
+ todoIndex?: number;
203
+ todoDock?: TodoDockState;
204
+ /**
205
+ * Todo dock intent for this phase:
206
+ * - `set` - replace dock with {@link todoDock}
207
+ * - `clear` - hide dock (author called hideTodos / empty todos())
208
+ * - `keep` - author omitted todos; demo must leave previous dock alone
209
+ */
210
+ todoSync?: "set" | "clear" | "keep";
211
+ /** Todo-dock UX for this phase (when author called {@link StubCtx.todoDockUi}). */
212
+ todoDockUi?: TodoDockUiOpts;
213
+ /** Resolved device after this phase (undefined when keep with no prior). */
214
+ device?: DeviceState;
215
+ /**
216
+ * Device intent (mirror todoSync):
217
+ * - `set` - apply {@link device}
218
+ * - `clear` - reset to desktop (hideDevice / device desktop)
219
+ * - `keep` - author omitted device; demo must leave previous alone
220
+ */
221
+ deviceSync?: "set" | "clear" | "keep";
222
+ zoom?: number;
223
+ zoomOut?: boolean;
224
+ title?: string;
225
+ titlePos?: BannerPos;
226
+ bannerUi?: BannerUiOpts;
227
+ caption?: string;
228
+ networkTabVisible?: boolean;
229
+ todoPos?: "left" | "right";
230
+ /** When true, keep other docks (multi-todo). Default false = replace. */
231
+ todoParallel?: boolean;
232
+ };
233
+ /** Demo stub phase names. */
234
+ export type HighlightStubPhaseName = "stubBefore" | "stubAfter" | "stubOnError";
235
+ export type StubBagState = {
236
+ highlights: HighlightStubPhase;
237
+ todos?: readonly WaygraphTodoInput[] | undefined;
238
+ todoIndex?: number | undefined;
239
+ todoTitle?: string | undefined;
240
+ todoId?: string | undefined;
241
+ todoStyle?: TodoListStyle | undefined;
242
+ todoGroups?: readonly WaygraphTodoGroupInput[] | undefined;
243
+ /** Author touched the todo dock this phase (set or clear). */
244
+ todoTouched?: boolean | undefined;
245
+ /** Author asked to hide the dock. */
246
+ hideTodos?: boolean | undefined;
247
+ /** Author touched device this phase (set or clear). */
248
+ deviceTouched?: boolean | undefined;
249
+ /** Author asked to reset to desktop. */
250
+ hideDevice?: boolean | undefined;
251
+ device?: DeviceState | undefined;
252
+ /** Touch override when set via ctx.touch() alone or with device. */
253
+ touchOverride?: boolean | undefined;
254
+ /** Orientation override when set via ctx.orientation / landscape / portrait. */
255
+ orientationOverride?: DeviceOrientation | undefined;
256
+ zoom?: number | undefined;
257
+ zoomOut?: boolean | undefined;
258
+ title?: string | undefined;
259
+ titlePos?: BannerPos | undefined;
260
+ bannerUi?: BannerUiOpts | undefined;
261
+ caption?: string | undefined;
262
+ networkTabVisible?: boolean | undefined;
263
+ todoPos?: "left" | "right" | undefined;
264
+ /** Author patched todo-dock UX this phase. */
265
+ todoDockUi?: TodoDockUiOpts | undefined;
266
+ /** Keep sibling docks (compact todos opts.parallel). */
267
+ todoParallel?: boolean | undefined;
268
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,104 @@
1
+ /**
2
+ * One checklist row for episode planning (demo panel).
3
+ * Set via {@link StubCtx.todos} / {@link StubCtx.todoIndex} inside the lifecycle.
4
+ */
5
+ export type WaygraphTodoItem = {
6
+ text: string;
7
+ /**
8
+ * Stable id for external asserts / redirects (Mailhog, deep links).
9
+ * Stamped as `data-wg-todo-item` on the row.
10
+ */
11
+ id?: string;
12
+ /** Explicit done. If omitted, derived from todoIndex (index < todoIndex). */
13
+ done?: boolean;
14
+ /** Explicit current. If omitted, derived from todoIndex (index === todoIndex). */
15
+ current?: boolean;
16
+ };
17
+ /** One todo item as authored: a string or `{ id, text, done }`. */
18
+ export type WaygraphTodoInput = string | WaygraphTodoItem;
19
+ /**
20
+ * Dock list presentation:
21
+ * - `sequential` - arrow on current, strike done (demo walkthrough)
22
+ * - `checklist` - checkbox done/pending only (no current arrow; independent checks)
23
+ * - `bullets` - flat bullet list (no arrow/checkbox; open notes / trimmed dock)
24
+ */
25
+ export type TodoListStyle = "sequential" | "checklist" | "bullets";
26
+ /** One titled group in the floating todo dock (FR / Scenarios / ACs, etc.). */
27
+ export type WaygraphTodoGroupInput = {
28
+ /** Stable group id -> `data-wg-todo-group`. */
29
+ id?: string;
30
+ /** Group heading shown above the items. */
31
+ title?: string;
32
+ /** Per-group style; falls back to dock default ({@link WaygraphTodosOpts.style}). */
33
+ style?: TodoListStyle;
34
+ items: readonly WaygraphTodoInput[];
35
+ /** Sequential only: which item is current (0-based). */
36
+ todoIndex?: number;
37
+ };
38
+ /** A titled checklist in the demo todo dock. */
39
+ export type WaygraphTodoGroup = {
40
+ id?: string;
41
+ title?: string;
42
+ style: TodoListStyle;
43
+ items: WaygraphTodoItem[];
44
+ };
45
+ /** Full floating dock payload passed to the browser. */
46
+ export type TodoDockState = {
47
+ /**
48
+ * Stable dock id for external targeting after redirects
49
+ * (`#wg-todo-dock[data-wg-todo-id="…"]`).
50
+ */
51
+ id?: string;
52
+ /** Default style for groups that omit their own. */
53
+ style: TodoListStyle;
54
+ /** Single-list title when using {@link StubCtx.todos} with `title`. */
55
+ title?: string;
56
+ groups: WaygraphTodoGroup[];
57
+ pos?: "left" | "right";
58
+ };
59
+ /** Options for compact {@link StubCtx.todos}(`id`, items, opts). */
60
+ export type WaygraphTodosOpts = {
61
+ /** Dock heading. */
62
+ title?: string;
63
+ /** Current item index (0-based). */
64
+ index?: number;
65
+ /** `sequential` | `checklist` | `bullets`. */
66
+ style?: TodoListStyle;
67
+ /** Dock side. */
68
+ pos?: "left" | "right";
69
+ /**
70
+ * Keep other docks with different ids (multi-todo). Default false —
71
+ * one checklist at a time (setting todos replaces the previous dock).
72
+ */
73
+ parallel?: boolean;
74
+ };
75
+ /**
76
+ * Floating todo-dock UX knobs (0.15.8+). Defaults are **smart on** so long
77
+ * FR/AC checklists do not bury highlight rings. Opt out per phase or globally.
78
+ *
79
+ * Defaults: `compact`, `collision`, `behindRing` = true; `cap` = 5; `expandCap` = 14.
80
+ *
81
+ * Global: `WAYGRAPH_TODO_UI=full` / `waygraph demo --todo-full` turns smart off.
82
+ * Per-knob env: `WAYGRAPH_TODO_COMPACT=0`, `WAYGRAPH_TODO_COLLISION=0`,
83
+ * `WAYGRAPH_TODO_BEHIND=0`, `WAYGRAPH_TODO_CAP`, `WAYGRAPH_TODO_EXPAND_CAP`.
84
+ */
85
+ export type TodoDockUiOpts = {
86
+ /** Fold long lists around the current row (+N more / hover). Default true. */
87
+ compact?: boolean;
88
+ /** Visible rows when compact. Default 5. */
89
+ cap?: number;
90
+ /** Visible rows on hover / pinned expand. Default 14. */
91
+ expandCap?: number;
92
+ /** Flip dock L/R when an active ring overlaps it. Default true. */
93
+ collision?: boolean;
94
+ /** Dim + lower z-index while a highlight ring is up. Default true. */
95
+ behindRing?: boolean;
96
+ };
97
+ /** Resolved todo-dock UX (all fields present). */
98
+ export type TodoDockUiResolved = {
99
+ compact: boolean;
100
+ cap: number;
101
+ expandCap: number;
102
+ collision: boolean;
103
+ behindRing: boolean;
104
+ };
@@ -0,0 +1,2 @@
1
+ // The floating todo dock: its items, groups, and how it folds.
2
+ export {};
@@ -0,0 +1,26 @@
1
+ /** Named viewport presets (0.13+). */
2
+ export type DevicePreset = "mobile" | "tablet" | "desktop";
3
+ /** Explicit viewport box. */
4
+ export type DeviceViewport = {
5
+ width: number;
6
+ height: number;
7
+ deviceScaleFactor?: number;
8
+ };
9
+ /**
10
+ * Carried device fixture (todo-dock shaped persist).
11
+ * Omit on a later step = keep; hideDevice / desktop = clear to desktop.
12
+ */
13
+ export type DeviceState = {
14
+ preset: DevicePreset;
15
+ viewport: DeviceViewport;
16
+ /** Playwright-ish: treat as mobile layout. */
17
+ isMobile: boolean;
18
+ /** Context needs hasTouch for touchscreen.tap (demo launches with hasTouch). */
19
+ hasTouch: boolean;
20
+ /** Demo gesture theater: finger cursor, tap/hold timing, prefer touchscreen. */
21
+ touchMode: boolean;
22
+ /** Viewport orientation (0.13.3+). Default derived from width/height. */
23
+ orientation?: DeviceOrientation;
24
+ };
25
+ /** Portrait (tall) or landscape (wide). */
26
+ export type DeviceOrientation = "portrait" | "landscape";
@@ -0,0 +1,2 @@
1
+ // The device a stub puts the page in: preset, size, touch and orientation.
2
+ export {};
@@ -1,5 +1,5 @@
1
1
  import type { Page } from "@playwright/test";
2
- import type { MemPage } from "./mem-page.js";
2
+ import type { MemPage } from "../mem/mem.js";
3
3
  import "urlpattern-polyfill";
4
4
  /**
5
5
  * A named, independently-reportable check. `check` never runs before `resolve` has
package/dist/index.d.ts CHANGED
@@ -1,38 +1,86 @@
1
- export type { Checkpoint, Instruction, Block, DefinedBlock, Start, WaygraphInstanceOption } from "./types.js";
2
- export { connect, checkpoint } from "./types.js";
3
- export { MemKey, MemPage, key, keyGroup } from "./mem-page.js";
4
- export { registerMemStub, seedMemStub, getMemStub } from "./mem-stub.js";
5
- export { css, byText, byRole } from "./selector.js";
6
- export { WaygraphError, WAYGRAPH_ERRORS } from "./errors.js";
7
- export type { WaygraphErrorCode } from "./errors.js";
8
- export { Trait, urlMatches, textEquals, visible, disabled, enabled, frameVisible, frameTextEquals, frameContainsText, } from "./trait.js";
9
- export { runGraph, spawnTab, narrate, Engine, start, end, branch, withVerify, modVerify, modVerifyAll, defineBlock, defineNavBlock, defineNavClickBlock, defineMethodBlock, defineActionBlock, defineAssertBlock, definePageBlock, defineEffectBlock, defineMemEffectBlock, defineMemNavBlock, defineApiBlock, locate, composeBlock, fastForwardComposeBlock, isFastForwardBlock, preflight, withSessionReset, withTitle, withMemStub, withDemoPace, withBlockPace, withHighlightStyle, withExpectedFailure, withHighlightFixtures, withStubBefore, withStubAfter, withStubOnError, withDialog, chainFlow, defineLayout, map, MapBuilder, branchRoutes, collectBranchFlows, runBranchRegression, } from "./core.js";
10
- export type { BranchEntry, BranchRunResult, RunBranchRegressionOptions } from "./core/branch-regression.js";
11
- export type { ApiBlockOptions, ApiCallResult } from "./core/blocks/api.js";
12
- export type { MapStepOpts, MapFlowOpts } from "./core/map-builder.js";
13
- export { resolveHighlightSlots, resolveSlides, runStubPhase, resolveFixtureDwellMs, resolveSlideDwellMs, formatHighlightCaption, hasAuthoredStubAfter, hasAuthoredStubOnError, normalizeHighlightTone, normalizeDemoPace, normalizeHighlightSize, normalizeHighlightWeight, applyHighlightStyleDefaults, toneIconPrefix, resolveStepDemoPace, demoPaceScale, demoPaceIsBlitz, demoPaceIsFast, demoPaceIsSlow, demoPaceGateMs, formatDemoPaceBadge, formatDemoPaceLabel, normalizeTodos, normalizeTodoPos, normalizeTodoStyle, buildTodoDock, applyTodoPhase, advanceTodoDock, completeSequentialTodoDock, applyDevicePhase, resolveDeviceState, normalizeDevicePreset, normalizeDeviceOrientation, applyOrientation, orientationFromViewport, DEVICE_PRESETS, resolveTodoDockUi, FIXTURE_DURATION_MS_DEFAULT, FIXTURE_DURATION_FAST_MS_DEFAULT, FIXTURE_DURATION_SLOW_MS_DEFAULT, SLIDE_DURATION_MS_DEFAULT, SLIDE_DURATION_FAST_MS_DEFAULT, WAYGRAPH_RING_CSS, } from "./highlights.js";
14
- export type { WaygraphHighlightStub, WaygraphHighlightFixture, WaygraphSlide, WaygraphTodoItem, WaygraphTodoInput, WaygraphTodoGroup, WaygraphTodoGroupInput, WaygraphTodosOpts, TodoDockUiOpts, BannerPos, BannerUiOpts, TodoDockUiResolved, TodoDockState, TodoListStyle, FixtureDurationFields, HighlightStubPhase, HighlightStubPhaseName, HighlightFixtureMap, ResolvedHighlight, WaygraphHighlight, HighlightTone, HighlightSize, HighlightWeight, HighlightStyleDefaults, DemoPace, DemoPaceName, StubCtx, StubLifecycleFn, StubPhaseResult, StubPhaseFixtures, DevicePreset, DeviceViewport, DeviceState, DeviceOrientation, } from "./highlights.js";
15
- export type { Flow, FlowOptions, EngineConfig, ComposedBlock, FastForwardComposedBlock, RunGraphOptions, BlockInfo, NavBlock, NavBlockOptions, NavClickBlock, NavClickBlockOptions, MethodBlock, ActionBlock, AssertBlock, AssertBlockOptions, PageBlock, PageBlockOptions, PageMethodEntry, EffectBlock, MemEffectBlock, MemNavBlock, Layout, LayoutOptions, MapBuilderOptions, } from "./core.js";
16
- export type { ActionPage } from "./types.js";
1
+ import "./runtime/full-launch.js";
2
+ import "./runtime/run-log.js";
3
+ export type { Checkpoint, Start } from "./engine/checkpoint/checkpoint.js";
4
+ export type { Instruction, Block, DefinedBlock, SomeBlock, SomeDefinedBlock, WaygraphInstanceOption } from "./engine/block/block.js";
5
+ export { connect } from "./engine/run/connect.js";
6
+ export { checkpoint } from "./engine/checkpoint/checkpoint.js";
7
+ export { MemKey, MemPage, key, keyGroup } from "./engine/mem/mem.js";
8
+ export { registerMemStub, seedMemStub, getMemStub } from "./engine/mem/mem-stub.js";
9
+ export { css, byText, byRole } from "./engine/trait/selector.js";
10
+ export { WaygraphError, WAYGRAPH_ERRORS } from "./engine/errors.js";
11
+ export type { WaygraphErrorCode } from "./engine/errors.js";
12
+ export { Trait, urlMatches, textEquals, visible, disabled, enabled, frameVisible, frameTextEquals, frameContainsText, } from "./engine/trait/trait.js";
13
+ export { runGraph, spawnTab, narrate, preflight, defineLayout } from "./engine/run/run.js";
14
+ export { Engine, map } from "./engine/engine.js";
15
+ export { branch, withVerify, modVerify, modVerifyAll, defineBlock, withDialog } from "./engine/block/block.js";
16
+ export { defineNavBlock, defineNavClickBlock, defineMemNavBlock } from "./engine/block/kinds/nav.js";
17
+ export { defineMethodBlock, defineAssertBlock } from "./engine/block/kinds/method.js";
18
+ export { definePageBlock } from "./engine/block/kinds/page.js";
19
+ export { defineEffectBlock } from "./engine/block/kinds/effect.js";
20
+ export { defineApiBlock } from "./engine/block/kinds/api.js";
21
+ export { locate } from "./engine/locate.js";
22
+ export { composeBlock, fastForwardComposeBlock, isFastForwardBlock } from "./engine/block/compose.js";
23
+ export { MapBuilder } from "./engine/flow/map-builder.js";
24
+ export { branchRoutes, collectBranchFlows, runBranchRegression } from "./engine/flow/branch-regression.js";
25
+ export type { BranchEntry, BranchRunResult, RunBranchRegressionOptions } from "./engine/flow/branch-regression.js";
26
+ export type { ApiBlockOptions, ApiCallResult } from "./engine/block/kinds/api.js";
27
+ export type { MapStepOpts, MapFlowOpts } from "./engine/flow/map-builder.js";
28
+ export { resolveHighlightSlots, resolveSlides, runStubPhase, hasAuthoredStubAfter, hasAuthoredStubOnError } from "./demo/narration/narration.js";
29
+ export { resolveFixtureDwellMs, normalizeDemoPace, resolveStepDemoPace, demoPaceScale, demoPaceIsBlitz, demoPaceIsFast, demoPaceIsSlow, demoPaceGateMs, formatDemoPaceBadge, formatDemoPaceLabel, FIXTURE_DURATION_MS_DEFAULT, FIXTURE_DURATION_FAST_MS_DEFAULT, FIXTURE_DURATION_SLOW_MS_DEFAULT } from "./demo/narration/demo-pace.js";
30
+ export { formatHighlightCaption, applyHighlightStyleDefaults, toneIconPrefix } from "./demo/narration/style.js";
31
+ export { normalizeHighlightTone, normalizeHighlightSize, normalizeHighlightWeight } from "./engine/stub/ring.js";
32
+ export { normalizeTodos, normalizeTodoPos, normalizeTodoStyle, buildTodoDock, applyTodoPhase, advanceTodoDock, completeSequentialTodoDock, resolveTodoDockUi } from "./demo/narration/todo-dock.js";
33
+ export { applyDevicePhase, resolveDeviceState, normalizeDevicePreset, normalizeDeviceOrientation, applyOrientation, orientationFromViewport, DEVICE_PRESETS } from "./demo/narration/device.js";
34
+ export { WAYGRAPH_RING_CSS } from "./demo/narration/css.js";
35
+ export type { WaygraphHighlightStub, WaygraphSlide, FixtureDurationFields, HighlightStubPhase, ResolvedHighlight, HighlightTone, HighlightSize, HighlightWeight, HighlightStyleDefaults } from "./engine/stub/ring.js";
36
+ export type { WaygraphTodoItem, WaygraphTodoInput, WaygraphTodoGroup, WaygraphTodoGroupInput, WaygraphTodosOpts, TodoDockUiOpts, TodoDockUiResolved, TodoDockState, TodoListStyle } from "./engine/stub/todos.js";
37
+ export type { BannerPos, BannerUiOpts, HighlightStubPhaseName, StubCtx, StubLifecycleFn, StubPhaseResult, StubPhaseFixtures } from "./engine/stub/stub.js";
38
+ export type { DemoPace, DemoPaceName } from "./engine/stub/pace.js";
39
+ export type { DevicePreset, DeviceViewport, DeviceState, DeviceOrientation } from "./engine/stub/viewport.js";
40
+ export type { Flow, BlockInfo } from "./engine/flow/flow.js";
41
+ export type { EngineConfig } from "./engine/config.js";
42
+ export type { ComposedBlock, FastForwardComposedBlock } from "./engine/block/compose.js";
43
+ export type { RunGraphOptions, Layout, LayoutOptions } from "./engine/run/run.js";
44
+ export type { NavBlock, NavBlockOptions, NavClickBlock, NavClickBlockOptions, MemNavBlock } from "./engine/block/kinds/nav.js";
45
+ export type { MethodBlock, AssertBlock, AssertBlockOptions } from "./engine/block/kinds/method.js";
46
+ export type { PageBlock, PageBlockOptions, PageMethodEntry } from "./engine/block/kinds/page.js";
47
+ export type { EffectBlock } from "./engine/block/kinds/effect.js";
48
+ export type { MapBuilderOptions } from "./engine/flow/map-builder.js";
49
+ export type { ActionPage } from "./engine/block/block.js";
17
50
  export { discoverGraph, toMermaid, findOrphanBlocks, findBlockPath } from "./analysis/graph.js";
51
+ export { buildManifest } from "./manifest/manifest.js";
52
+ export { onRunEvent } from "./engine/run/events.js";
53
+ export type { RunEvent } from "./engine/run/events.js";
54
+ export type { Manifest, ManifestBlock, ManifestFlow } from "./manifest/manifest.js";
18
55
  export type { WaygraphGraph, WaygraphNode, WaygraphEdge, SkippedBlock, OrphanBlock } from "./analysis/graph.js";
19
- export { isFileSelectToken, parseBlocksSelect, matchBlocksSelect, globToRegExp, } from "./blocks-select.js";
20
- export type { BlocksSelect, BlocksSelectKind } from "./blocks-select.js";
21
- export { EdgeLeaseCoordinator } from "./traverse/lease.js";
22
- export { runTraverse } from "./traverse/run.js";
23
- export type { TraverseOptions, TraverseSessionMode, TraverseWorkerResult, } from "./traverse/run.js";
24
- export { buildCoverageReport, collectGraphEdgeKeys, defaultCoverageOutPath, formatCoverageLine, normalizeHitKey, parseMinEdgeCoverage, writeCoverageReport, } from "./traverse/coverage.js";
25
- export type { TraverseCoverageReport } from "./traverse/coverage.js";
26
- export { WG_UI_SEL, WG_READY_PANEL_SEL, WG_READY_AUTO_SEL, WG_READY_BANNER_SEL, readWgOverlayBeacon, readWgOverlayBeaconInPage, assertWgOverlayReady, } from "./session/overlay-beacon.js";
27
- export type { WgModalKind, WgBeaconRow } from "./session/overlay-beacon.js";
28
- export { AutoSession, stubFilePath } from "./auto-session.js";
29
- export type { AutoSessionInit, SessionSnapshot, SessionSnapshotEdge, SessionSnapshotSection, ApplyPickResult, ApplyPathResult, TraceStep, ConsoleLogEntry, StorageSnapshot, ServiceWorkerRegistrationInfo, CookieInfo, StubFileKind, } from "./auto-session.js";
30
- export { pilotStart } from "./session/pilot.js";
31
- export type { PilotStartResult } from "./session/pilot.js";
32
- export { defineConfig, resolveBaseUrl } from "./config.js";
33
- export type { WaygraphConfig, ConfigContext, VideoSettings, RunSettings, DemoSettings } from "./config.js";
34
- export { withWebServer } from "./webserver.js";
35
- export { chromiumExecutablePath } from "./browser.js";
36
- export { resolveExtension, KNOWN_EXTENSIONS } from "./extensions.js";
37
- export type { ExtensionSpec } from "./extensions.js";
38
- export type { WebServerConfig } from "./webserver.js";
56
+ export { isFileSelectToken, parseBlocksSelect, matchBlocksSelect, globToRegExp, } from "./manifest/select.js";
57
+ export type { BlocksSelect, BlocksSelectKind } from "./manifest/select.js";
58
+ export { EdgeLeaseCoordinator } from "./live/traverse/lease.js";
59
+ export { runTraverse } from "./live/traverse/traverse.js";
60
+ export type { TraverseOptions, TraverseSessionMode, TraverseWorkerResult, } from "./live/traverse/traverse.js";
61
+ export { buildCoverageReport, collectGraphEdgeKeys, defaultCoverageOutPath, formatCoverageLine, normalizeHitKey, parseMinEdgeCoverage, writeCoverageReport, } from "./live/traverse/coverage.js";
62
+ export type { TraverseCoverageReport } from "./live/traverse/coverage.js";
63
+ export { WG_UI_SEL, WG_READY_PANEL_SEL, WG_READY_AUTO_SEL, WG_READY_BANNER_SEL, readWgOverlayBeacon, readWgOverlayBeaconInPage, assertWgOverlayReady, } from "./demo/overlay/beacon.js";
64
+ export type { WgModalKind, WgBeaconRow } from "./demo/overlay/beacon.js";
65
+ export { AutoSession } from "./live/auto-session/auto-session.js";
66
+ export { stubFilePath } from "./live/auto-session/helpers.js";
67
+ export type { AutoSessionInit, SessionSnapshot, SessionSnapshotEdge, SessionSnapshotSection, ApplyPickResult, ApplyPathResult, TraceStep, ConsoleLogEntry, StorageSnapshot, ServiceWorkerRegistrationInfo, CookieInfo, StubFileKind } from "./live/auto-session/helpers.js";
68
+ export { pilotStart } from "./live/pilot/pilot.js";
69
+ export type { PilotStartResult } from "./live/pilot/pilot.js";
70
+ export { defineConfig, resolveBaseUrl } from "./runtime/waygraph-config.js";
71
+ export type { WaygraphConfig, ConfigContext, VideoSettings, RunSettings, DemoSettings } from "./runtime/waygraph-config.js";
72
+ export { withWebServer } from "./runtime/webserver.js";
73
+ export { chromiumExecutablePath } from "./runtime/browser.js";
74
+ export { resolveExtension, KNOWN_EXTENSIONS } from "./runtime/extensions.js";
75
+ export type { ExtensionSpec } from "./engine/config.js";
76
+ export type { WebServerConfig } from "./runtime/webserver.js";
77
+ export type { MapStart } from "./engine/engine.js";
78
+ export type { WaygraphSlidesOrFn } from "./engine/stub/ring.js";
79
+ export type { ConnectLayout } from "./engine/run/connect.js";
80
+ export type { EffectExtras } from "./engine/block/kinds/effect.js";
81
+ export type { BlockBase, RoutedBlockBase } from "./engine/checkpoint/route.js";
82
+ export type { RunEventListener } from "./engine/run/events.js";
83
+ export type { BlockKind, ScanOptions } from "./manifest/project.js";
84
+ export type { DomSnapshot, InspectDomOptions, InspectDomResult } from "./live/auto-session/helpers.js";
85
+ export type { BrowserStartInit } from "./live/auto-session/start.js";
86
+ export type { PilotFixtureRing, PilotHighlightFixtures } from "./demo/overlay/pilot/fixtures.js";
package/dist/index.js CHANGED
@@ -1,20 +1,45 @@
1
- export { connect, checkpoint } from "./types.js";
2
- export { MemKey, MemPage, key, keyGroup } from "./mem-page.js";
3
- export { registerMemStub, seedMemStub, getMemStub } from "./mem-stub.js";
4
- export { css, byText, byRole } from "./selector.js";
5
- export { WaygraphError, WAYGRAPH_ERRORS } from "./errors.js";
6
- export { Trait, urlMatches, textEquals, visible, disabled, enabled, frameVisible, frameTextEquals, frameContainsText, } from "./trait.js";
7
- export { runGraph, spawnTab, narrate, Engine, start, end, branch, withVerify, modVerify, modVerifyAll, defineBlock, defineNavBlock, defineNavClickBlock, defineMethodBlock, defineActionBlock, defineAssertBlock, definePageBlock, defineEffectBlock, defineMemEffectBlock, defineMemNavBlock, defineApiBlock, locate, composeBlock, fastForwardComposeBlock, isFastForwardBlock, preflight, withSessionReset, withTitle, withMemStub, withDemoPace, withBlockPace, withHighlightStyle, withExpectedFailure, withHighlightFixtures, withStubBefore, withStubAfter, withStubOnError, withDialog, chainFlow, defineLayout, map, MapBuilder, branchRoutes, collectBranchFlows, runBranchRegression, } from "./core.js";
8
- export { resolveHighlightSlots, resolveSlides, runStubPhase, resolveFixtureDwellMs, resolveSlideDwellMs, formatHighlightCaption, hasAuthoredStubAfter, hasAuthoredStubOnError, normalizeHighlightTone, normalizeDemoPace, normalizeHighlightSize, normalizeHighlightWeight, applyHighlightStyleDefaults, toneIconPrefix, resolveStepDemoPace, demoPaceScale, demoPaceIsBlitz, demoPaceIsFast, demoPaceIsSlow, demoPaceGateMs, formatDemoPaceBadge, formatDemoPaceLabel, normalizeTodos, normalizeTodoPos, normalizeTodoStyle, buildTodoDock, applyTodoPhase, advanceTodoDock, completeSequentialTodoDock, applyDevicePhase, resolveDeviceState, normalizeDevicePreset, normalizeDeviceOrientation, applyOrientation, orientationFromViewport, DEVICE_PRESETS, resolveTodoDockUi, FIXTURE_DURATION_MS_DEFAULT, FIXTURE_DURATION_FAST_MS_DEFAULT, FIXTURE_DURATION_SLOW_MS_DEFAULT, SLIDE_DURATION_MS_DEFAULT, SLIDE_DURATION_FAST_MS_DEFAULT, WAYGRAPH_RING_CSS, } from "./highlights.js";
1
+ // The runtime layer supplies how an Engine launches its own browser (config, Chromium path, extensions).
2
+ import "./runtime/full-launch.js";
3
+ // Run events are written to the project's run log (.waygraph/runs) when the CLI turns it on.
4
+ import "./runtime/run-log.js";
5
+ export { connect } from "./engine/run/connect.js";
6
+ export { checkpoint } from "./engine/checkpoint/checkpoint.js";
7
+ export { MemKey, MemPage, key, keyGroup } from "./engine/mem/mem.js";
8
+ export { registerMemStub, seedMemStub, getMemStub } from "./engine/mem/mem-stub.js";
9
+ export { css, byText, byRole } from "./engine/trait/selector.js";
10
+ export { WaygraphError, WAYGRAPH_ERRORS } from "./engine/errors.js";
11
+ export { Trait, urlMatches, textEquals, visible, disabled, enabled, frameVisible, frameTextEquals, frameContainsText, } from "./engine/trait/trait.js";
12
+ export { runGraph, spawnTab, narrate, preflight, defineLayout } from "./engine/run/run.js";
13
+ export { Engine, map } from "./engine/engine.js";
14
+ export { branch, withVerify, modVerify, modVerifyAll, defineBlock, withDialog } from "./engine/block/block.js";
15
+ export { defineNavBlock, defineNavClickBlock, defineMemNavBlock } from "./engine/block/kinds/nav.js";
16
+ export { defineMethodBlock, defineAssertBlock } from "./engine/block/kinds/method.js";
17
+ export { definePageBlock } from "./engine/block/kinds/page.js";
18
+ export { defineEffectBlock } from "./engine/block/kinds/effect.js";
19
+ export { defineApiBlock } from "./engine/block/kinds/api.js";
20
+ export { locate } from "./engine/locate.js";
21
+ export { composeBlock, fastForwardComposeBlock, isFastForwardBlock } from "./engine/block/compose.js";
22
+ export { MapBuilder } from "./engine/flow/map-builder.js";
23
+ export { branchRoutes, collectBranchFlows, runBranchRegression } from "./engine/flow/branch-regression.js";
24
+ export { resolveHighlightSlots, resolveSlides, runStubPhase, hasAuthoredStubAfter, hasAuthoredStubOnError } from "./demo/narration/narration.js";
25
+ export { resolveFixtureDwellMs, normalizeDemoPace, resolveStepDemoPace, demoPaceScale, demoPaceIsBlitz, demoPaceIsFast, demoPaceIsSlow, demoPaceGateMs, formatDemoPaceBadge, formatDemoPaceLabel, FIXTURE_DURATION_MS_DEFAULT, FIXTURE_DURATION_FAST_MS_DEFAULT, FIXTURE_DURATION_SLOW_MS_DEFAULT } from "./demo/narration/demo-pace.js";
26
+ export { formatHighlightCaption, applyHighlightStyleDefaults, toneIconPrefix } from "./demo/narration/style.js";
27
+ export { normalizeHighlightTone, normalizeHighlightSize, normalizeHighlightWeight } from "./engine/stub/ring.js";
28
+ export { normalizeTodos, normalizeTodoPos, normalizeTodoStyle, buildTodoDock, applyTodoPhase, advanceTodoDock, completeSequentialTodoDock, resolveTodoDockUi } from "./demo/narration/todo-dock.js";
29
+ export { applyDevicePhase, resolveDeviceState, normalizeDevicePreset, normalizeDeviceOrientation, applyOrientation, orientationFromViewport, DEVICE_PRESETS } from "./demo/narration/device.js";
30
+ export { WAYGRAPH_RING_CSS } from "./demo/narration/css.js";
9
31
  export { discoverGraph, toMermaid, findOrphanBlocks, findBlockPath } from "./analysis/graph.js";
10
- export { isFileSelectToken, parseBlocksSelect, matchBlocksSelect, globToRegExp, } from "./blocks-select.js";
11
- export { EdgeLeaseCoordinator } from "./traverse/lease.js";
12
- export { runTraverse } from "./traverse/run.js";
13
- export { buildCoverageReport, collectGraphEdgeKeys, defaultCoverageOutPath, formatCoverageLine, normalizeHitKey, parseMinEdgeCoverage, writeCoverageReport, } from "./traverse/coverage.js";
14
- export { WG_UI_SEL, WG_READY_PANEL_SEL, WG_READY_AUTO_SEL, WG_READY_BANNER_SEL, readWgOverlayBeacon, readWgOverlayBeaconInPage, assertWgOverlayReady, } from "./session/overlay-beacon.js";
15
- export { AutoSession, stubFilePath } from "./auto-session.js";
16
- export { pilotStart } from "./session/pilot.js";
17
- export { defineConfig, resolveBaseUrl } from "./config.js";
18
- export { withWebServer } from "./webserver.js";
19
- export { chromiumExecutablePath } from "./browser.js";
20
- export { resolveExtension, KNOWN_EXTENSIONS } from "./extensions.js";
32
+ export { buildManifest } from "./manifest/manifest.js";
33
+ export { onRunEvent } from "./engine/run/events.js";
34
+ export { isFileSelectToken, parseBlocksSelect, matchBlocksSelect, globToRegExp, } from "./manifest/select.js";
35
+ export { EdgeLeaseCoordinator } from "./live/traverse/lease.js";
36
+ export { runTraverse } from "./live/traverse/traverse.js";
37
+ export { buildCoverageReport, collectGraphEdgeKeys, defaultCoverageOutPath, formatCoverageLine, normalizeHitKey, parseMinEdgeCoverage, writeCoverageReport, } from "./live/traverse/coverage.js";
38
+ export { WG_UI_SEL, WG_READY_PANEL_SEL, WG_READY_AUTO_SEL, WG_READY_BANNER_SEL, readWgOverlayBeacon, readWgOverlayBeaconInPage, assertWgOverlayReady, } from "./demo/overlay/beacon.js";
39
+ export { AutoSession } from "./live/auto-session/auto-session.js";
40
+ export { stubFilePath } from "./live/auto-session/helpers.js";
41
+ export { pilotStart } from "./live/pilot/pilot.js";
42
+ export { defineConfig, resolveBaseUrl } from "./runtime/waygraph-config.js";
43
+ export { withWebServer } from "./runtime/webserver.js";
44
+ export { chromiumExecutablePath } from "./runtime/browser.js";
45
+ export { resolveExtension, KNOWN_EXTENSIONS } from "./runtime/extensions.js";