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.
- package/README.md +8 -3
- package/bin/waygraph +2 -2
- package/dist/analysis/check.d.ts +38 -0
- package/dist/analysis/check.js +87 -0
- package/dist/analysis/coverage-gap.d.ts +1 -1
- package/dist/analysis/coverage-gap.js +14 -37
- package/dist/analysis/flow-source.d.ts +9 -0
- package/dist/analysis/flow-source.js +25 -0
- package/dist/analysis/graph.d.ts +13 -14
- package/dist/analysis/graph.js +48 -371
- package/dist/analysis/map-check.js +4 -39
- package/dist/analysis/practices-check.d.ts +1 -1
- package/dist/analysis/practices-check.js +24 -45
- package/dist/cli/args.d.ts +23 -0
- package/dist/cli/args.js +20 -0
- package/dist/{cli.d.ts → cli/cli.d.ts} +0 -1
- package/dist/{cli.js → cli/cli.js} +10 -9
- package/dist/{commands → cli/commands}/agent-dive-scaffold.js +35 -64
- package/dist/cli/commands/agent-dive.js +42 -0
- package/dist/{commands → cli/commands}/check.d.ts +0 -1
- package/dist/cli/commands/check.js +104 -0
- package/dist/cli/commands/codemod-checkpoints.d.ts +18 -0
- package/dist/cli/commands/codemod-checkpoints.js +186 -0
- package/dist/cli/commands/codemod-flows.d.ts +18 -0
- package/dist/cli/commands/codemod-flows.js +284 -0
- package/dist/cli/commands/codemod-stubs.d.ts +10 -0
- package/dist/cli/commands/codemod-stubs.js +187 -0
- package/dist/{commands → cli/commands}/extensions.js +5 -4
- package/dist/{commands → cli/commands}/init.js +1 -2
- package/dist/{commands → cli/commands}/list.js +9 -7
- package/dist/cli/commands/manifest.d.ts +2 -0
- package/dist/cli/commands/manifest.js +20 -0
- package/dist/cli/commands/map.js +57 -0
- package/dist/{commands → cli/commands}/run.d.ts +0 -1
- package/dist/cli/commands/run.js +64 -0
- package/dist/{commands → cli/commands}/session.js +61 -88
- package/dist/{commands → cli/commands}/test.js +11 -14
- package/dist/cli/commands/traverse.js +105 -0
- package/dist/{commands → cli/commands}/try.js +29 -25
- package/dist/{commands → cli/commands}/upgrade.js +40 -4
- package/dist/cli/flags.d.ts +193 -16
- package/dist/cli/flags.js +179 -234
- package/dist/cli/run-chain.d.ts +1 -0
- package/dist/cli/run-chain.js +42 -7
- package/dist/cli/usage.d.ts +1 -1
- package/dist/cli/usage.js +21 -53
- package/dist/cli/util.d.ts +2 -2
- package/dist/cli/util.js +2 -3
- package/dist/{highlights → demo/narration}/css.d.ts +1 -1
- package/dist/{highlights → demo/narration}/css.js +2 -3
- package/dist/{highlights → demo/narration}/demo-pace.d.ts +7 -11
- package/dist/{highlights → demo/narration}/demo-pace.js +9 -11
- package/dist/{highlights → demo/narration}/device.d.ts +4 -2
- package/dist/{highlights → demo/narration}/device.js +3 -1
- package/dist/demo/narration/merge.d.ts +8 -0
- package/dist/demo/narration/merge.js +71 -0
- package/dist/{highlights/run-phase.d.ts → demo/narration/narration.d.ts} +10 -14
- package/dist/{highlights/run-phase.js → demo/narration/narration.js} +25 -94
- package/dist/{highlights → demo/narration}/shorthand.d.ts +1 -1
- package/dist/demo/narration/stub-ctx.d.ts +8 -0
- package/dist/demo/narration/stub-ctx.js +164 -0
- package/dist/{highlights → demo/narration}/style.d.ts +1 -7
- package/dist/{highlights → demo/narration}/style.js +1 -41
- package/dist/{highlights → demo/narration}/todo-dock.d.ts +3 -3
- package/dist/{highlights → demo/narration}/todo-dock.js +13 -30
- package/dist/demo/overlay/auto-chrome.d.ts +7 -0
- package/dist/demo/overlay/auto-chrome.js +97 -0
- package/dist/{session/overlay-beacon.d.ts → demo/overlay/beacon.d.ts} +7 -0
- package/dist/{session/overlay-beacon.js → demo/overlay/beacon.js} +5 -0
- package/dist/demo/overlay/cursor.d.ts +12 -0
- package/dist/demo/overlay/cursor.js +142 -0
- package/dist/demo/overlay/device-stage.d.ts +13 -0
- package/dist/demo/overlay/device-stage.js +396 -0
- package/dist/demo/overlay/inpage/banner.d.ts +1 -0
- package/dist/demo/overlay/inpage/banner.js +160 -0
- package/dist/demo/overlay/inpage/caption.d.ts +2 -0
- package/dist/demo/overlay/inpage/caption.js +24 -0
- package/dist/demo/overlay/inpage/core.d.ts +1 -0
- package/dist/demo/overlay/inpage/core.js +345 -0
- package/dist/demo/overlay/inpage/device-chip.d.ts +1 -0
- package/dist/demo/overlay/inpage/device-chip.js +191 -0
- package/dist/demo/overlay/inpage/network.d.ts +9 -0
- package/dist/demo/overlay/inpage/network.js +200 -0
- package/dist/demo/overlay/inpage/panel-chrome.d.ts +1 -0
- package/dist/demo/overlay/inpage/panel-chrome.js +203 -0
- package/dist/demo/overlay/inpage/stamp.d.ts +1 -0
- package/dist/demo/overlay/inpage/stamp.js +46 -0
- package/dist/demo/overlay/inpage/swipe-zoom.d.ts +1 -0
- package/dist/demo/overlay/inpage/swipe-zoom.js +220 -0
- package/dist/demo/overlay/inpage/todos.d.ts +1 -0
- package/dist/demo/overlay/inpage/todos.js +294 -0
- package/dist/demo/overlay/locator-theater.d.ts +25 -0
- package/dist/demo/overlay/locator-theater.js +76 -0
- package/dist/demo/overlay/network-capture.d.ts +22 -0
- package/dist/demo/overlay/network-capture.js +127 -0
- package/dist/demo/overlay/overlay-css.d.ts +3 -0
- package/dist/demo/overlay/overlay-css.js +369 -0
- package/dist/demo/overlay/overlay-stage.d.ts +23 -0
- package/dist/demo/overlay/overlay-stage.js +106 -0
- package/dist/demo/overlay/overlay.d.ts +10 -0
- package/dist/demo/overlay/overlay.js +89 -0
- package/dist/{pilot-overlay/overlay-fixtures.d.ts → demo/overlay/phase-fixtures.d.ts} +2 -2
- package/dist/{pilot-overlay/overlay-fixtures.js → demo/overlay/phase-fixtures.js} +2 -2
- package/dist/{pilot-overlay/action-ring.js → demo/overlay/pilot/actions.js} +2 -1
- package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.d.ts +6 -5
- package/dist/{pilot-overlay → demo/overlay/pilot}/fixtures.js +19 -18
- package/dist/{pilot-overlay → demo/overlay/pilot}/shell.d.ts +2 -2
- package/dist/{pilot-overlay → demo/overlay/pilot}/shell.js +13 -22
- package/dist/demo/overlay/reattach.d.ts +7 -0
- package/dist/demo/overlay/reattach.js +23 -0
- package/dist/demo/overlay/rings.d.ts +33 -0
- package/dist/demo/overlay/rings.js +448 -0
- package/dist/{ui → demo/overlay/ui}/components/ring.js +2 -2
- package/dist/{ui → demo/overlay/ui}/overlay.css +4 -4
- package/dist/{ui → demo/overlay/ui}/shadow.d.ts +1 -1
- package/dist/{ui → demo/overlay/ui}/shadow.js +39 -2
- package/dist/demo/stepper/after.d.ts +3 -0
- package/dist/demo/stepper/after.js +113 -0
- package/dist/demo/stepper/banner-log.d.ts +37 -0
- package/dist/demo/stepper/banner-log.js +63 -0
- package/dist/demo/stepper/before.d.ts +4 -0
- package/dist/demo/stepper/before.js +110 -0
- package/dist/demo/stepper/demo-log.d.ts +31 -0
- package/dist/demo/stepper/demo-log.js +309 -0
- package/dist/demo/stepper/gate.d.ts +11 -0
- package/dist/demo/stepper/gate.js +78 -0
- package/dist/demo/stepper/interaction-patch.d.ts +3 -0
- package/dist/demo/stepper/interaction-patch.js +323 -0
- package/dist/demo/stepper/pacing.d.ts +21 -0
- package/dist/demo/stepper/pacing.js +23 -0
- package/dist/demo/stepper/slides.d.ts +11 -0
- package/dist/demo/stepper/slides.js +233 -0
- package/dist/demo/stepper/step-panels.d.ts +21 -0
- package/dist/demo/stepper/step-panels.js +589 -0
- package/dist/demo/stepper/stepper.d.ts +24 -0
- package/dist/demo/stepper/stepper.js +122 -0
- package/dist/demo/stepper/teardown.d.ts +48 -0
- package/dist/demo/stepper/teardown.js +179 -0
- package/dist/demo/stepper/todo-advance.d.ts +14 -0
- package/dist/demo/stepper/todo-advance.js +110 -0
- package/dist/demo/stepper/view.d.ts +68 -0
- package/dist/demo/stepper/view.js +31 -0
- package/dist/demo/types.d.ts +17 -0
- package/dist/demo/verbose-log.js +15 -0
- package/dist/{types.d.ts → engine/block/block.d.ts} +106 -91
- package/dist/{core → engine/block}/block.js +10 -53
- package/dist/{core → engine/block}/compose.d.ts +10 -7
- package/dist/{core → engine/block}/compose.js +1 -1
- package/dist/{core/blocks → engine/block/kinds}/api.d.ts +17 -12
- package/dist/{core/blocks → engine/block/kinds}/api.js +26 -18
- package/dist/{core/blocks → engine/block/kinds}/effect.d.ts +13 -18
- package/dist/engine/block/kinds/effect.js +17 -0
- package/dist/{core/blocks → engine/block/kinds}/method.d.ts +19 -29
- package/dist/{core/blocks → engine/block/kinds}/method.js +7 -21
- package/dist/{core/blocks → engine/block/kinds}/nav.d.ts +22 -31
- package/dist/{core/blocks → engine/block/kinds}/nav.js +6 -12
- package/dist/{core/blocks → engine/block/kinds}/page.d.ts +15 -20
- package/dist/{core/blocks → engine/block/kinds}/page.js +5 -7
- package/dist/engine/checkpoint/checkpoint.d.ts +22 -0
- package/dist/engine/checkpoint/checkpoint.js +8 -0
- package/dist/engine/checkpoint/route.d.ts +28 -0
- package/dist/engine/checkpoint/route.js +28 -0
- package/dist/{core → engine}/config.d.ts +7 -2
- package/dist/engine/config.js +6 -0
- package/dist/engine/engine.d.ts +45 -0
- package/dist/{core → engine}/engine.js +6 -10
- package/dist/engine/env.d.ts +59 -0
- package/dist/engine/env.js +83 -0
- package/dist/{errors.d.ts → engine/errors.d.ts} +23 -22
- package/dist/{errors.js → engine/errors.js} +22 -22
- package/dist/{core → engine/flow}/branch-regression.d.ts +8 -7
- package/dist/{core → engine/flow}/branch-regression.js +4 -3
- package/dist/engine/flow/flow.d.ts +162 -0
- package/dist/engine/flow/flow.js +244 -0
- package/dist/{core → engine/flow}/map-builder.d.ts +42 -40
- package/dist/{core → engine/flow}/map-builder.js +46 -48
- package/dist/{core → engine}/locate.d.ts +1 -1
- package/dist/{core → engine}/locate.js +1 -2
- package/dist/{mem-stub.d.ts → engine/mem/mem-stub.d.ts} +9 -8
- package/dist/{mem-stub.js → engine/mem/mem-stub.js} +2 -2
- package/dist/{mem-page.d.ts → engine/mem/mem.d.ts} +1 -1
- package/dist/{mem-page.js → engine/mem/mem.js} +2 -1
- package/dist/engine/page-gone.d.ts +5 -0
- package/dist/engine/page-gone.js +20 -0
- package/dist/engine/run/connect.d.ts +28 -0
- package/dist/{types.js → engine/run/connect.js} +11 -10
- package/dist/engine/run/events.d.ts +67 -0
- package/dist/engine/run/events.js +90 -0
- package/dist/engine/run/hooks.d.ts +16 -0
- package/dist/engine/run/hooks.js +8 -0
- package/dist/engine/run/launch.d.ts +13 -0
- package/dist/engine/run/launch.js +27 -0
- package/dist/{core/run-graph.d.ts → engine/run/run.d.ts} +9 -11
- package/dist/{core/run-graph.js → engine/run/run.js} +22 -11
- package/dist/engine/stub/pace.d.ts +12 -0
- package/dist/engine/stub/pace.js +2 -0
- package/dist/engine/stub/ring.d.ts +130 -0
- package/dist/engine/stub/ring.js +41 -0
- package/dist/engine/stub/stub.d.ts +268 -0
- package/dist/engine/stub/stub.js +1 -0
- package/dist/engine/stub/todos.d.ts +104 -0
- package/dist/engine/stub/todos.js +2 -0
- package/dist/engine/stub/viewport.d.ts +26 -0
- package/dist/engine/stub/viewport.js +2 -0
- package/dist/{trait.d.ts → engine/trait/trait.d.ts} +1 -1
- package/dist/index.d.ts +84 -36
- package/dist/index.js +44 -19
- package/dist/{session/auto-explore-run.d.ts → live/auto/auto.d.ts} +10 -16
- package/dist/{session/auto-explore-run.js → live/auto/auto.js} +164 -248
- package/dist/{session/auto-explore.d.ts → live/auto/explore.d.ts} +4 -14
- package/dist/{session/auto-explore.js → live/auto/explore.js} +21 -127
- package/dist/{auto-session/session.d.ts → live/auto-session/auto-session.d.ts} +1 -1
- package/dist/{auto-session/session.js → live/auto-session/auto-session.js} +27 -24
- package/dist/{auto-session → live/auto-session}/helpers.d.ts +16 -5
- package/dist/{auto-session → live/auto-session}/helpers.js +1 -1
- package/dist/{session/auto-session-ipc.d.ts → live/auto-session/ipc.d.ts} +7 -5
- package/dist/{session/auto-session-ipc.js → live/auto-session/ipc.js} +31 -16
- package/dist/{session/browser.d.ts → live/auto-session/start.d.ts} +1 -2
- package/dist/{session/browser.js → live/auto-session/start.js} +2 -3
- package/dist/{pilot-overlay → live/pilot}/panel.d.ts +1 -1
- package/dist/{pilot-overlay → live/pilot}/panel.js +23 -31
- package/dist/{session → live/pilot}/pilot.d.ts +4 -3
- package/dist/{session → live/pilot}/pilot.js +4 -4
- package/dist/{traverse → live/traverse}/coverage.d.ts +4 -0
- package/dist/{traverse → live/traverse}/coverage.js +3 -0
- package/dist/{traverse → live/traverse}/lease.d.ts +1 -0
- package/dist/{traverse → live/traverse}/lease.js +1 -0
- package/dist/{traverse/run.d.ts → live/traverse/traverse.d.ts} +4 -1
- package/dist/{traverse/run.js → live/traverse/traverse.js} +26 -43
- package/dist/manifest/manifest.d.ts +52 -0
- package/dist/manifest/manifest.js +93 -0
- package/dist/manifest/map-imports.d.ts +7 -0
- package/dist/manifest/map-imports.js +22 -0
- package/dist/manifest/maps.d.ts +33 -0
- package/dist/manifest/maps.js +62 -0
- package/dist/manifest/pack.d.ts +21 -0
- package/dist/manifest/pack.js +109 -0
- package/dist/manifest/project.d.ts +60 -0
- package/dist/manifest/project.js +101 -0
- package/dist/{session/block-inject.js → manifest/roots.js} +1 -18
- package/dist/manifest/scan.d.ts +19 -0
- package/dist/manifest/scan.js +57 -0
- package/dist/{blocks-select.d.ts → manifest/select.d.ts} +3 -0
- package/dist/{blocks-select.js → manifest/select.js} +2 -0
- package/dist/manifest/source.d.ts +23 -0
- package/dist/manifest/source.js +86 -0
- package/dist/runner/mode.d.ts +71 -0
- package/dist/runner/mode.js +1 -0
- package/dist/runner/modes/branches.d.ts +5 -0
- package/dist/runner/modes/branches.js +37 -0
- package/dist/runner/modes/demo.d.ts +3 -0
- package/dist/runner/modes/demo.js +13 -0
- package/dist/runner/modes/report.d.ts +2 -0
- package/dist/runner/modes/report.js +54 -0
- package/dist/runner/modes/run.d.ts +2 -0
- package/dist/runner/modes/run.js +3 -0
- package/dist/runner/options.d.ts +31 -0
- package/dist/runner/options.js +42 -0
- package/dist/runner/plan/find.d.ts +18 -0
- package/dist/runner/plan/find.js +65 -0
- package/dist/runner/plan/plan.d.ts +11 -0
- package/dist/runner/plan/plan.js +97 -0
- package/dist/runner/plan/seed-mem.d.ts +12 -0
- package/dist/runner/plan/seed-mem.js +98 -0
- package/dist/runner/plan/spec.d.ts +5 -0
- package/dist/runner/plan/spec.js +17 -0
- package/dist/runner/play-steps.d.ts +2 -0
- package/dist/runner/play-steps.js +59 -0
- package/dist/runner/runner.d.ts +4 -0
- package/dist/runner/runner.js +64 -0
- package/dist/runner/session.d.ts +9 -0
- package/dist/runner/session.js +87 -0
- package/dist/{browser.js → runtime/browser.js} +4 -2
- package/dist/{env-file.js → runtime/env-file.js} +7 -12
- package/dist/{extensions.d.ts → runtime/extensions.d.ts} +2 -5
- package/dist/{extensions.js → runtime/extensions.js} +3 -1
- package/dist/runtime/full-launch.d.ts +1 -0
- package/dist/runtime/full-launch.js +34 -0
- package/dist/runtime/global-flag.d.ts +5 -0
- package/dist/runtime/global-flag.js +18 -0
- package/dist/{playwright-config.d.ts → runtime/playwright-config.d.ts} +1 -1
- package/dist/{playwright.config.js → runtime/playwright.config.js} +3 -2
- package/dist/runtime/run-log.d.ts +2 -0
- package/dist/runtime/run-log.js +17 -0
- package/dist/{video-dir.js → runtime/video-dir.js} +3 -2
- package/dist/{config.d.ts → runtime/waygraph-config.d.ts} +8 -9
- package/dist/{config.js → runtime/waygraph-config.js} +21 -51
- package/dist/{webserver.js → runtime/webserver.js} +5 -30
- package/examples/routed-demo/config/waygraph.config.ts +20 -0
- package/examples/routed-demo/package.json +1 -4
- package/examples/routed-demo/scripts/fixture-server.mjs +1 -1
- package/examples/routed-demo/src/flows/routed-demo-map.flow.ts +2 -4
- package/examples/routed-demo/src/flows/routed-demo.flow.ts +2 -3
- package/examples/routed-demo/src/map/(app_base)/dashboard/_methods/click-widget.block.ts +5 -4
- package/examples/routed-demo/src/map/(app_base)/dashboard/_nav.block.ts +3 -3
- package/examples/routed-demo/src/map/(app_base)/dashboard/_page.block.ts +3 -3
- package/examples/routed-demo/src/map/(external)/docs/_nav.block.ts +3 -3
- package/examples/routed-demo/src/map/(external)/docs/_page.block.ts +3 -3
- package/examples/routed-demo/src/states/routed-demo.states.ts +5 -3
- package/examples/routed-demo/tests/routed-demo.spec.ts +4 -4
- package/examples/routed-demo/tsconfig.json +1 -1
- package/examples/saucedemo/README.md +11 -12
- package/examples/saucedemo/config/waygraph.config.ts +17 -0
- package/examples/saucedemo/docs/CONVENTION.md +5 -7
- package/examples/saucedemo/docs/HELPERS.md +12 -12
- package/examples/saucedemo/package-lock.json +10 -3
- package/examples/saucedemo/package.json +12 -29
- package/examples/saucedemo/src/blocks/SITE-MAP.md +0 -1
- package/examples/saucedemo/src/blocks/saucedemo-web/NAV.md +1 -5
- package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -52
- package/examples/saucedemo/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +21 -27
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -9
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +10 -76
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -29
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -48
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +13 -77
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
- package/examples/saucedemo/src/flows/api-demo.flow.ts +26 -18
- package/examples/saucedemo/src/flows/cart-bulk.flow.ts +19 -14
- package/examples/saucedemo/src/flows/cart-continue.flow.ts +10 -8
- package/examples/saucedemo/src/flows/cart-mem.flow.ts +7 -7
- package/examples/saucedemo/src/flows/catalog-logout.flow.ts +13 -8
- package/examples/saucedemo/src/flows/checkout-then-browse-again.flow.ts +26 -48
- package/examples/saucedemo/src/flows/checkout.flow.ts +70 -86
- package/examples/saucedemo/src/flows/device-showcase.flow.ts +24 -25
- package/examples/saucedemo/src/flows/login.flow.ts +11 -18
- package/examples/saucedemo/src/flows/mem-stub-demo.flow.ts +9 -20
- package/examples/saucedemo/src/flows/shop.flow.ts +15 -20
- package/examples/saucedemo/src/flows/smoke.flow.ts +12 -27
- package/examples/saucedemo/src/flows/stub-on-error.flow.ts +24 -43
- package/examples/saucedemo/src/flows/viewer-blocked.flow.ts +26 -34
- package/examples/saucedemo/src/states/checkout.mem-stubs.ts +11 -0
- package/examples/saucedemo/src/states/checkout.states.ts +21 -11
- package/examples/saucedemo/src/stubs/device-showcase.ts +191 -0
- package/examples/saucedemo/src/stubs/login.ts +37 -0
- package/examples/saucedemo/tests/auto-graph.spec.ts +4 -12
- package/examples/saucedemo/tests/chain-flow-episodes.spec.ts +7 -9
- package/examples/saucedemo/tests/submit-login-branch.spec.ts +18 -5
- package/package.json +12 -7
- package/templates/agents/waygraph-planner.agent.md +2 -2
- package/templates/quickstart/README.md +4 -7
- package/templates/quickstart/config/waygraph.config.ts +17 -0
- package/templates/quickstart/docs/CONVENTION.md +5 -6
- package/templates/quickstart/docs/HELPERS.md +11 -9
- package/templates/quickstart/package.json +14 -17
- package/templates/quickstart/src/blocks/SITE-MAP.md +13 -3
- package/templates/quickstart/src/blocks/saucedemo-web/NAV.md +1 -5
- package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -52
- package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-checkout-info.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-first-name.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-last-name.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/fill-postal-code.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-one/methods/submit-checkout-info.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/checkout-step-two/methods/finish-order.method.block.ts +21 -27
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -9
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-all-to-cart.method.block.ts +4 -6
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/add-to-cart.effect.block.ts +10 -76
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-all-from-cart.method.block.ts +4 -6
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/methods/remove-from-cart.effect.block.ts +4 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/nav-item-detail.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-inventory.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-back-to-products.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/inventory-item/nav-continue-shopping.block.ts +3 -3
- package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-password.method.block.ts +5 -29
- package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -48
- package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +13 -77
- package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-logout.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/nav-login.block.ts +3 -3
- package/templates/quickstart/src/flows/api-demo.flow.ts +45 -0
- package/templates/quickstart/src/flows/cart-bulk.flow.ts +19 -14
- package/templates/quickstart/src/flows/cart-continue.flow.ts +10 -8
- package/templates/quickstart/src/flows/cart-mem.flow.ts +7 -7
- package/templates/quickstart/src/flows/catalog-logout.flow.ts +13 -8
- package/templates/quickstart/src/flows/checkout-then-browse-again.flow.ts +26 -48
- package/templates/quickstart/src/flows/checkout.flow.ts +70 -63
- package/templates/quickstart/src/flows/device-showcase.flow.ts +24 -25
- package/templates/quickstart/src/flows/login.flow.ts +11 -18
- package/templates/quickstart/src/flows/mem-stub-demo.flow.ts +12 -0
- package/templates/quickstart/src/flows/shop.flow.ts +15 -20
- package/templates/quickstart/src/flows/smoke.flow.ts +12 -27
- package/templates/quickstart/src/flows/stub-on-error.flow.ts +31 -0
- package/templates/quickstart/src/flows/viewer-blocked.flow.ts +26 -34
- package/templates/quickstart/src/states/checkout.mem-stubs.ts +11 -0
- package/templates/quickstart/src/states/checkout.states.ts +21 -11
- package/templates/quickstart/src/stubs/device-showcase.ts +191 -0
- package/templates/quickstart/src/stubs/login.ts +37 -0
- package/templates/quickstart/tests/chain-flow.spec.ts +7 -10
- package/templates/scaffold/README.md +2 -1
- package/templates/scaffold/STRUCTURE.md +5 -4
- package/templates/scaffold/config/waygraph.config.ts +1 -0
- package/templates/scaffold/gitignore +1 -0
- package/templates/scaffold/src/flows/README.md +2 -2
- package/templates/scaffold/src/map/(app_base)/docs/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/docs/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_methods/add-item.effect.block.ts +4 -4
- package/templates/scaffold/src/map/(app_base)/home/_methods/assert-hello.method.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_methods/assert-item-added.method.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_methods/clear-cart.method.block.ts +5 -4
- package/templates/scaffold/src/map/(app_base)/home/_methods/remove-item.effect.block.ts +4 -4
- package/templates/scaffold/src/map/(app_base)/home/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(app_base)/home/nav-verification-link.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_keys.ts +21 -0
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-body.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-response-header.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/assert-status.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/pick-extension-interceptor.method.block.ts +5 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-body.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/read-response-headers.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/send-request.method.block.ts +5 -4
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-bearer-token.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-headers.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-json-body.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-method.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-query-params.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_methods/set-url.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/hoppscotch/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/hoppscotch/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/hoppscotch/_states.ts +6 -0
- package/templates/scaffold/src/map/(external)/hoppscotch/settings/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/mailpit/_keys.ts +13 -0
- package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-content.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/mailpit/_methods/assert-email-received.method.block.ts +4 -4
- package/templates/scaffold/src/map/(external)/mailpit/_methods/extract-email-link.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/mailpit/_methods/open-message.method.block.ts +6 -5
- package/templates/scaffold/src/map/(external)/mailpit/_nav.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/mailpit/_page.block.ts +3 -3
- package/templates/scaffold/src/map/(external)/mailpit/_states.ts +9 -0
- package/templates/scaffold/src/map/README.md +7 -0
- package/templates/scaffold/src/states/README.md +4 -1
- package/templates/scaffold/src/states/demo.mem-keys.ts +1 -29
- package/templates/scaffold/src/states/demo.states.ts +14 -20
- package/templates/scaffold/tests/hoppscotch.spec.ts +1 -11
- package/templates/scaffold/tests/mail-verify.spec.ts +2 -2
- package/templates/skills/waygraph-blind-pilot.skill.md +2 -6
- package/templates/skills/waygraph-convention.skill.md +23 -14
- package/templates/skills/waygraph-pilot.skill.md +7 -4
- package/dist/auto-session/verbose-log.js +0 -16
- package/dist/auto-session.d.ts +0 -2
- package/dist/auto-session.js +0 -3
- package/dist/cli/discover.d.ts +0 -40
- package/dist/cli/discover.js +0 -148
- package/dist/commands/agent-dive.js +0 -52
- package/dist/commands/check.js +0 -192
- package/dist/commands/map.js +0 -29
- package/dist/commands/run.js +0 -104
- package/dist/commands/traverse.js +0 -177
- package/dist/core/block.d.ts +0 -109
- package/dist/core/blocks/effect.js +0 -23
- package/dist/core/config.js +0 -17
- package/dist/core/engine.d.ts +0 -198
- package/dist/core/flow.d.ts +0 -293
- package/dist/core/flow.js +0 -432
- package/dist/core.d.ts +0 -14
- package/dist/core.js +0 -15
- package/dist/highlights/merge.d.ts +0 -8
- package/dist/highlights/merge.js +0 -173
- package/dist/highlights/stub-ctx.d.ts +0 -10
- package/dist/highlights/stub-ctx.js +0 -331
- package/dist/highlights/types.d.ts +0 -607
- package/dist/highlights.d.ts +0 -9
- package/dist/highlights.js +0 -10
- package/dist/pilot-overlay.d.ts +0 -5
- package/dist/pilot-overlay.js +0 -6
- package/dist/runner/banner-log.js +0 -63
- package/dist/runner/chain-run.js +0 -102
- package/dist/runner/cursor.js +0 -140
- package/dist/runner/demo-log.js +0 -316
- package/dist/runner/device-stage.d.ts +0 -9
- package/dist/runner/device-stage.js +0 -420
- package/dist/runner/discovery.js +0 -105
- package/dist/runner/index.js +0 -2
- package/dist/runner/inpage/banner.d.ts +0 -21
- package/dist/runner/inpage/banner.js +0 -156
- package/dist/runner/inpage/caption.d.ts +0 -3
- package/dist/runner/inpage/caption.js +0 -23
- package/dist/runner/inpage/core.d.ts +0 -4
- package/dist/runner/inpage/core.js +0 -316
- package/dist/runner/inpage/device.d.ts +0 -3
- package/dist/runner/inpage/device.js +0 -211
- package/dist/runner/inpage/network.d.ts +0 -15
- package/dist/runner/inpage/network.js +0 -217
- package/dist/runner/inpage/panel-chrome.js +0 -192
- package/dist/runner/inpage/stamp.js +0 -46
- package/dist/runner/inpage/swipe-zoom.js +0 -220
- package/dist/runner/inpage/todos.js +0 -337
- package/dist/runner/interaction-patch.js +0 -384
- package/dist/runner/main.js +0 -469
- package/dist/runner/network-capture.d.ts +0 -9
- package/dist/runner/network-capture.js +0 -126
- package/dist/runner/overlay-css.d.ts +0 -3
- package/dist/runner/overlay-css.js +0 -377
- package/dist/runner/overlay-install.js +0 -90
- package/dist/runner/overlay-stage.js +0 -110
- package/dist/runner/rings.js +0 -514
- package/dist/runner/seed-mem.js +0 -110
- package/dist/runner/slides.js +0 -278
- package/dist/runner/step-mode.js +0 -703
- package/dist/runner/step-panels.js +0 -729
- package/dist/runner/teardown.js +0 -202
- package/dist/runner/todo-dock.js +0 -142
- package/dist/session/step-overlay.d.ts +0 -37
- package/dist/session/step-overlay.js +0 -244
- package/examples/routed-demo/playwright.config.ts +0 -21
- package/examples/saucedemo/playwright.config.ts +0 -19
- package/examples/saucedemo/scripts/drive-auto-cli.mjs +0 -93
- package/examples/saucedemo/scripts/prove-add-to-cart-menu.mjs +0 -126
- package/examples/saucedemo/scripts/prove-auto-graph.mjs +0 -92
- package/examples/saucedemo/scripts/prove-wrong-login-runtime.mjs +0 -63
- package/examples/saucedemo/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
- package/templates/quickstart/playwright.config.ts +0 -14
- package/templates/quickstart/scripts/drive-auto-cli.mjs +0 -93
- package/templates/quickstart/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
- /package/dist/{commands → cli/commands}/agent-dive-scaffold.d.ts +0 -0
- /package/dist/{commands → cli/commands}/agent-dive.d.ts +0 -0
- /package/dist/{commands → cli/commands}/extensions.d.ts +0 -0
- /package/dist/{commands → cli/commands}/init.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/map.d.ts +0 -0
- /package/dist/{commands → cli/commands}/session.d.ts +0 -0
- /package/dist/{commands → cli/commands}/test.d.ts +0 -0
- /package/dist/{commands → cli/commands}/traverse.d.ts +0 -0
- /package/dist/{commands → cli/commands}/try.d.ts +0 -0
- /package/dist/{commands → cli/commands}/upgrade.d.ts +0 -0
- /package/dist/{highlights → demo/narration}/shorthand.js +0 -0
- /package/dist/{pilot-overlay/action-ring.d.ts → demo/overlay/pilot/actions.d.ts} +0 -0
- /package/dist/{ui → demo/overlay/ui}/components/ring.d.ts +0 -0
- /package/dist/{ui → demo/overlay/ui}/stylesheet.d.ts +0 -0
- /package/dist/{ui → demo/overlay/ui}/stylesheet.js +0 -0
- /package/dist/{ui → demo/overlay/ui}/tokens.d.ts +0 -0
- /package/dist/{ui → demo/overlay/ui}/tokens.js +0 -0
- /package/dist/{highlights → demo}/types.js +0 -0
- /package/dist/{auto-session → demo}/verbose-log.d.ts +0 -0
- /package/dist/{selector.d.ts → engine/trait/selector.d.ts} +0 -0
- /package/dist/{selector.js → engine/trait/selector.js} +0 -0
- /package/dist/{trait.js → engine/trait/trait.js} +0 -0
- /package/dist/{session/block-inject.d.ts → manifest/roots.d.ts} +0 -0
- /package/dist/{browser.d.ts → runtime/browser.d.ts} +0 -0
- /package/dist/{env-file.d.ts → runtime/env-file.d.ts} +0 -0
- /package/dist/{playwright-config.js → runtime/playwright-config.js} +0 -0
- /package/dist/{playwright.config.d.ts → runtime/playwright.config.d.ts} +0 -0
- /package/dist/{video-dir.d.ts → runtime/video-dir.d.ts} +0 -0
- /package/dist/{webserver.d.ts → runtime/webserver.d.ts} +0 -0
package/dist/commands/run.js
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
// Split out of the former 8,700-line cli.ts (see src/ARCHITECTURE.md). Behavior unchanged.
|
|
2
|
-
import { applyDemoDefaults, applyRunFlags, parseRunFlags, resolveBaseUrl, resolveProjectDir, resolveSpec } from "../cli/flags.js";
|
|
3
|
-
import { runChain } from "../cli/run-chain.js";
|
|
4
|
-
import { resolve } from "node:path";
|
|
5
|
-
import { existsSync } from "node:fs";
|
|
6
|
-
import { runChainAuto } from "./check.js";
|
|
7
|
-
export async function runCase(args) {
|
|
8
|
-
const flags = parseRunFlags(args.slice(1));
|
|
9
|
-
applyRunFlags(flags);
|
|
10
|
-
const spec = resolveSpec(flags);
|
|
11
|
-
if (!spec) {
|
|
12
|
-
console.error("waygraph run: missing flow/spec — e.g.\n" +
|
|
13
|
-
" waygraph run src/flows/shop.flow.ts\n" +
|
|
14
|
-
" waygraph run --blocks shopFlow\n" +
|
|
15
|
-
" waygraph list # file → export map\n" +
|
|
16
|
-
" Flags: --blocks --data --mem-stub --non-headless --video [dir] --step/--no-step");
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
const proj = flags.blocks
|
|
20
|
-
? resolveProjectDir(flags, 0)
|
|
21
|
-
: resolve(flags.positionals[1] ?? process.cwd());
|
|
22
|
-
if (!existsSync(proj)) {
|
|
23
|
-
console.error(`waygraph: no such directory: ${proj}`);
|
|
24
|
-
process.exit(1);
|
|
25
|
-
}
|
|
26
|
-
if (!process.env.WAYGRAPH_BASE_URL) {
|
|
27
|
-
const resolved = await resolveBaseUrl(proj);
|
|
28
|
-
if (resolved)
|
|
29
|
-
process.env.WAYGRAPH_BASE_URL = resolved;
|
|
30
|
-
}
|
|
31
|
-
await runChain(proj, spec);
|
|
32
|
-
return;
|
|
33
|
-
}
|
|
34
|
-
export async function chainCase(args) {
|
|
35
|
-
// Compat alias: chain auto A B -> auto --blocks A B; else -> run --blocks.
|
|
36
|
-
const flags = parseRunFlags(args.slice(1));
|
|
37
|
-
applyRunFlags(flags);
|
|
38
|
-
const first = flags.positionals[0];
|
|
39
|
-
if (first === "auto") {
|
|
40
|
-
const fromTag = flags.positionals[1];
|
|
41
|
-
const toTag = flags.positionals[2];
|
|
42
|
-
if (!fromTag || !toTag) {
|
|
43
|
-
console.error("waygraph chain auto: missing <fromCheckpoint> <toCheckpoint> [project]");
|
|
44
|
-
console.error(" prefer: waygraph auto --blocks LoggedIn OrderComplete");
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
const proj = resolve(flags.positionals[3] ?? process.cwd());
|
|
48
|
-
if (!existsSync(proj)) {
|
|
49
|
-
console.error(`waygraph: no such directory: ${proj}`);
|
|
50
|
-
process.exit(1);
|
|
51
|
-
}
|
|
52
|
-
await runChainAuto(proj, fromTag, toTag);
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const spec = flags.blocks ?? first;
|
|
56
|
-
if (!spec) {
|
|
57
|
-
console.error('waygraph chain: missing <spec> — prefer: waygraph run --blocks "a then b"\n' +
|
|
58
|
-
" or: waygraph auto --blocks <fromCheckpoint> <toCheckpoint>");
|
|
59
|
-
process.exit(1);
|
|
60
|
-
}
|
|
61
|
-
const proj = resolve(flags.blocks ? (flags.positionals[0] ?? process.cwd()) : (flags.positionals[1] ?? process.cwd()));
|
|
62
|
-
if (!process.env.WAYGRAPH_BASE_URL) {
|
|
63
|
-
const resolved = await resolveBaseUrl(proj);
|
|
64
|
-
if (resolved)
|
|
65
|
-
process.env.WAYGRAPH_BASE_URL = resolved;
|
|
66
|
-
}
|
|
67
|
-
// If caller asked for step overlay, behave like demo; else like run.
|
|
68
|
-
if (flags.step === true || process.env.WAYGRAPH_STEP === "1") {
|
|
69
|
-
await applyDemoDefaults(proj);
|
|
70
|
-
}
|
|
71
|
-
await runChain(proj, spec);
|
|
72
|
-
return;
|
|
73
|
-
}
|
|
74
|
-
export async function demoCase(args) {
|
|
75
|
-
const flags = parseRunFlags(args.slice(1));
|
|
76
|
-
applyRunFlags(flags, { allowAutoPlayVideo: true, allowDemoUi: true });
|
|
77
|
-
const spec = resolveSpec(flags);
|
|
78
|
-
if (!spec) {
|
|
79
|
-
console.error("waygraph demo: missing flow/spec — e.g.\n" +
|
|
80
|
-
" waygraph demo src/flows/shop.flow.ts\n" +
|
|
81
|
-
" waygraph demo --blocks shopFlow\n" +
|
|
82
|
-
" Flags: --blocks --data --mem-stub --auto-next --fast --full --mini --ff-expand --ff-disabled --auto-play-video --title --base-url --video");
|
|
83
|
-
process.exit(1);
|
|
84
|
-
}
|
|
85
|
-
const proj = flags.blocks
|
|
86
|
-
? resolveProjectDir(flags, 0)
|
|
87
|
-
: resolve(flags.positionals[1] ?? process.cwd());
|
|
88
|
-
if (!existsSync(proj)) {
|
|
89
|
-
console.error(`waygraph: no such directory: ${proj}`);
|
|
90
|
-
process.exit(1);
|
|
91
|
-
}
|
|
92
|
-
if (flags.step === undefined && process.env.WAYGRAPH_STEP === undefined) {
|
|
93
|
-
process.env.WAYGRAPH_STEP = "1";
|
|
94
|
-
}
|
|
95
|
-
await applyDemoDefaults(proj);
|
|
96
|
-
console.error(`waygraph demo: STEP=${process.env.WAYGRAPH_STEP === "1" ? "on" : "off"}` +
|
|
97
|
-
` AUTO_NEXT=${process.env.WAYGRAPH_AUTOPLAY === "1" ? "on" : "off"}` +
|
|
98
|
-
` HEADED=${process.env.WAYGRAPH_HEADED === "0" ? "off" : "on"}` +
|
|
99
|
-
` BASE_URL=${process.env.WAYGRAPH_BASE_URL ?? "(unset)"}` +
|
|
100
|
-
(process.env.WAYGRAPH_VIDEO ? ` VIDEO=${process.env.WAYGRAPH_VIDEO}` : "") +
|
|
101
|
-
(process.env.WAYGRAPH_TITLE ? ` TITLE=${JSON.stringify(process.env.WAYGRAPH_TITLE)}` : ""));
|
|
102
|
-
await runChain(proj, spec);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
// Split out of the former 8,700-line cli.ts (see src/ARCHITECTURE.md). Behavior unchanged.
|
|
2
|
-
import { resolve } from "node:path";
|
|
3
|
-
import { existsSync, statSync } from "node:fs";
|
|
4
|
-
import { parseBlocksSelect } from "../blocks-select.js";
|
|
5
|
-
import { parseMinEdgeCoverage } from "../traverse/coverage.js";
|
|
6
|
-
import { runTraverse } from "../traverse/run.js";
|
|
7
|
-
export async function traverseCase(args) {
|
|
8
|
-
if (args.includes("--step") || args.includes("--auto-next") || args.includes("--autoplay")) {
|
|
9
|
-
console.error("waygraph traverse: --step / --auto-next not supported (not a demo)");
|
|
10
|
-
process.exit(1);
|
|
11
|
-
}
|
|
12
|
-
const rest = args.slice(1);
|
|
13
|
-
let from;
|
|
14
|
-
let data;
|
|
15
|
-
let maxSteps;
|
|
16
|
-
let maxVisits;
|
|
17
|
-
let maxEdge;
|
|
18
|
-
let headed = false;
|
|
19
|
-
let baseUrl;
|
|
20
|
-
let blocksFilter;
|
|
21
|
-
let parallel;
|
|
22
|
-
let session;
|
|
23
|
-
let minEdgeCoverageRaw;
|
|
24
|
-
let coverageOut;
|
|
25
|
-
let noCoverageReport = false;
|
|
26
|
-
let projectDir = process.cwd();
|
|
27
|
-
for (let i = 0; i < rest.length; i++) {
|
|
28
|
-
const a = rest[i];
|
|
29
|
-
if (a === "--from" || a.startsWith("--from=")) {
|
|
30
|
-
from = a.startsWith("--from=") ? a.slice(7) : rest[++i];
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
if (a === "--data" || a.startsWith("--data=")) {
|
|
34
|
-
data = a.startsWith("--data=") ? a.slice(7) : rest[++i];
|
|
35
|
-
continue;
|
|
36
|
-
}
|
|
37
|
-
if (a === "--blocks" || a.startsWith("--blocks=")) {
|
|
38
|
-
if (a.startsWith("--blocks=")) {
|
|
39
|
-
blocksFilter = a.slice("--blocks=".length);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
const v = rest[++i];
|
|
43
|
-
if (!v || v.startsWith("-")) {
|
|
44
|
-
console.error("waygraph traverse: --blocks needs a glob, /regex/, or path substring");
|
|
45
|
-
process.exit(1);
|
|
46
|
-
}
|
|
47
|
-
blocksFilter = v;
|
|
48
|
-
}
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
if (a === "--parallel" || a.startsWith("--parallel=")) {
|
|
52
|
-
const v = a.startsWith("--parallel=") ? a.slice("--parallel=".length) : rest[++i];
|
|
53
|
-
parallel = Number(v);
|
|
54
|
-
continue;
|
|
55
|
-
}
|
|
56
|
-
if (a === "--session" || a.startsWith("--session=")) {
|
|
57
|
-
const v = a.startsWith("--session=") ? a.slice("--session=".length) : rest[++i];
|
|
58
|
-
if (v !== "clone" && v !== "inherit") {
|
|
59
|
-
console.error('waygraph traverse: --session must be "clone" or "inherit"');
|
|
60
|
-
process.exit(1);
|
|
61
|
-
}
|
|
62
|
-
session = v;
|
|
63
|
-
continue;
|
|
64
|
-
}
|
|
65
|
-
if (a === "--min-edge-coverage" || a.startsWith("--min-edge-coverage=")) {
|
|
66
|
-
minEdgeCoverageRaw = a.startsWith("--min-edge-coverage=")
|
|
67
|
-
? a.slice("--min-edge-coverage=".length)
|
|
68
|
-
: rest[++i];
|
|
69
|
-
continue;
|
|
70
|
-
}
|
|
71
|
-
if (a === "--coverage-out" || a.startsWith("--coverage-out=")) {
|
|
72
|
-
coverageOut = a.startsWith("--coverage-out=")
|
|
73
|
-
? a.slice("--coverage-out=".length)
|
|
74
|
-
: rest[++i];
|
|
75
|
-
continue;
|
|
76
|
-
}
|
|
77
|
-
if (a === "--no-coverage-report") {
|
|
78
|
-
noCoverageReport = true;
|
|
79
|
-
continue;
|
|
80
|
-
}
|
|
81
|
-
if (a === "--max-steps" || a.startsWith("--max-steps=")) {
|
|
82
|
-
const v = a.startsWith("--max-steps=") ? a.slice(12) : rest[++i];
|
|
83
|
-
maxSteps = Number(v);
|
|
84
|
-
continue;
|
|
85
|
-
}
|
|
86
|
-
if (a === "--max-visits" || a.startsWith("--max-visits=")) {
|
|
87
|
-
const v = a.startsWith("--max-visits=") ? a.slice(13) : rest[++i];
|
|
88
|
-
maxVisits = Number(v);
|
|
89
|
-
continue;
|
|
90
|
-
}
|
|
91
|
-
if (a === "--max-visits-per-edge" || a.startsWith("--max-visits-per-edge=")) {
|
|
92
|
-
const v = a.startsWith("--max-visits-per-edge=")
|
|
93
|
-
? a.slice("--max-visits-per-edge=".length)
|
|
94
|
-
: rest[++i];
|
|
95
|
-
maxEdge = Number(v);
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
if (a === "--non-headless" || a === "--headed") {
|
|
99
|
-
headed = true;
|
|
100
|
-
continue;
|
|
101
|
-
}
|
|
102
|
-
if (a === "--base-url" || a.startsWith("--base-url=")) {
|
|
103
|
-
baseUrl = a.startsWith("--base-url=") ? a.slice(11) : rest[++i];
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
if (a === "--help" || a === "-h") {
|
|
107
|
-
console.log(`waygraph traverse [project] [flags]
|
|
108
|
-
|
|
109
|
-
Graph crawl (RFC Phase B-E). Walks unused legal edges until a leaf,
|
|
110
|
-
budget kill, or first broken edge. --parallel N uses session clone + edge leases.
|
|
111
|
-
|
|
112
|
-
--blocks <glob|/regex/|substr> Phase C: filter *.block.ts discovery
|
|
113
|
-
--parallel N Phase D: N clone workers (default 1, max 4)
|
|
114
|
-
--session clone|inherit Phase D: default clone; inherit refused if parallel>1
|
|
115
|
-
--min-edge-coverage X Phase E: suite gate 0.8 | 80% | 80 (exit 2 if below)
|
|
116
|
-
--coverage-out PATH Phase E: write JSON (default .waygraph-traverse/coverage.json)
|
|
117
|
-
--no-coverage-report Phase E: print Coverage line only (no JSON file)
|
|
118
|
-
--from <Checkpoint> start checkpoint (optional)
|
|
119
|
-
--data '{...}' Mem seed JSON
|
|
120
|
-
--max-steps N default 50 (per worker)
|
|
121
|
-
--max-visits N per-node visit cap (default 2)
|
|
122
|
-
--max-visits-per-edge N default 1
|
|
123
|
-
--non-headless show browser
|
|
124
|
-
--base-url URL
|
|
125
|
-
|
|
126
|
-
Examples:
|
|
127
|
-
waygraph traverse --blocks '**/mailpit/**/*.block.ts'
|
|
128
|
-
waygraph traverse --parallel 2 --session clone --max-steps 20
|
|
129
|
-
waygraph traverse --min-edge-coverage 80% --coverage-out ./cov.json
|
|
130
|
-
|
|
131
|
-
PASS: [Reached Leaf Node[traverse-1] at=... steps=N]
|
|
132
|
-
FAIL: [Broke at edge[traverse-1] block=... from=... to=...]
|
|
133
|
-
COVER: [Coverage edges=H/T ratio=R% min=M% PASS|FAIL]
|
|
134
|
-
`);
|
|
135
|
-
process.exit(0);
|
|
136
|
-
}
|
|
137
|
-
if (!a.startsWith("-")) {
|
|
138
|
-
projectDir = resolve(a);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
if (!existsSync(projectDir) || !statSync(projectDir).isDirectory()) {
|
|
142
|
-
console.error(`waygraph traverse: no such directory: ${projectDir}`);
|
|
143
|
-
process.exit(1);
|
|
144
|
-
}
|
|
145
|
-
const blocksSelect = blocksFilter
|
|
146
|
-
? parseBlocksSelect(blocksFilter)
|
|
147
|
-
: undefined;
|
|
148
|
-
let minEdgeCoverage;
|
|
149
|
-
if (minEdgeCoverageRaw !== undefined) {
|
|
150
|
-
const parsed = parseMinEdgeCoverage(minEdgeCoverageRaw);
|
|
151
|
-
if (parsed === null) {
|
|
152
|
-
console.error(`waygraph traverse: --min-edge-coverage expects 0.8, 80%, or 80 (got ${JSON.stringify(minEdgeCoverageRaw)})`);
|
|
153
|
-
process.exit(1);
|
|
154
|
-
}
|
|
155
|
-
minEdgeCoverage = parsed;
|
|
156
|
-
}
|
|
157
|
-
const code = await runTraverse(projectDir, {
|
|
158
|
-
...(from ? { from } : {}),
|
|
159
|
-
...(data ? { data } : {}),
|
|
160
|
-
...(maxSteps !== undefined && Number.isFinite(maxSteps) ? { maxSteps } : {}),
|
|
161
|
-
...(maxVisits !== undefined && Number.isFinite(maxVisits)
|
|
162
|
-
? { maxVisitsPerNode: maxVisits }
|
|
163
|
-
: {}),
|
|
164
|
-
...(maxEdge !== undefined && Number.isFinite(maxEdge)
|
|
165
|
-
? { maxVisitsPerEdge: maxEdge }
|
|
166
|
-
: {}),
|
|
167
|
-
headed,
|
|
168
|
-
...(baseUrl ? { baseURL: baseUrl } : {}),
|
|
169
|
-
...(blocksSelect ? { blocksSelect } : {}),
|
|
170
|
-
...(parallel !== undefined && Number.isFinite(parallel) ? { parallel } : {}),
|
|
171
|
-
...(session ? { session } : {}),
|
|
172
|
-
...(minEdgeCoverage !== undefined ? { minEdgeCoverage } : {}),
|
|
173
|
-
...(coverageOut ? { coverageOut: resolve(coverageOut) } : {}),
|
|
174
|
-
...(noCoverageReport ? { noCoverageReport: true } : {}),
|
|
175
|
-
});
|
|
176
|
-
process.exit(code);
|
|
177
|
-
}
|
package/dist/core/block.d.ts
DELETED
|
@@ -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;
|
package/dist/core/config.js
DELETED
|
@@ -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
|
-
}
|
package/dist/core/engine.d.ts
DELETED
|
@@ -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 {};
|