waygraph 0.15.54 → 0.16.1

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