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.
- 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 +10 -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/cli/commands/browser.d.ts +2 -0
- package/dist/cli/commands/browser.js +109 -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/cli/commands/pilot.d.ts +2 -0
- package/dist/cli/commands/pilot.js +102 -0
- package/dist/{commands → cli/commands}/run.d.ts +0 -1
- package/dist/cli/commands/run.js +64 -0
- package/dist/cli/commands/session-ops.d.ts +3 -0
- package/dist/cli/commands/session-ops.js +257 -0
- package/dist/cli/commands/session.js +132 -0
- 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 +4 -12
- package/dist/{highlights → demo/narration}/demo-pace.js +5 -11
- package/dist/{highlights → demo/narration}/device.d.ts +4 -4
- package/dist/{highlights → demo/narration}/device.js +1 -1
- package/dist/demo/narration/merge.d.ts +10 -0
- package/dist/demo/narration/merge.js +67 -0
- package/dist/demo/narration/narration.d.ts +39 -0
- 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 +8 -8
- 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/demo/overlay/cursor.d.ts +19 -0
- package/dist/demo/overlay/cursor.js +142 -0
- package/dist/demo/overlay/device-stage.d.ts +26 -0
- package/dist/demo/overlay/device-stage.js +396 -0
- package/dist/demo/overlay/inpage/banner.d.ts +2 -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 +2 -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 +10 -0
- package/dist/demo/overlay/inpage/network.js +189 -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 +2 -0
- package/dist/demo/overlay/inpage/todos.js +293 -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 +31 -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 +61 -0
- package/dist/demo/overlay/rings.js +422 -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 +103 -0
- package/dist/demo/stepper/banner-log.d.ts +35 -0
- package/dist/demo/stepper/banner-log.js +65 -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 +48 -0
- package/dist/demo/stepper/demo-log.js +292 -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 +4 -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/panel-after.d.ts +17 -0
- package/dist/demo/stepper/panel-after.js +166 -0
- package/dist/demo/stepper/panel-before.d.ts +12 -0
- package/dist/demo/stepper/panel-before.js +241 -0
- package/dist/demo/stepper/slides.d.ts +23 -0
- package/dist/demo/stepper/slides.js +233 -0
- package/dist/demo/stepper/step-panels.d.ts +69 -0
- package/dist/demo/stepper/step-panels.js +172 -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 +47 -0
- package/dist/demo/stepper/teardown.js +178 -0
- package/dist/demo/stepper/todo-advance.d.ts +15 -0
- package/dist/demo/stepper/todo-advance.js +110 -0
- package/dist/demo/stepper/view.d.ts +58 -0
- package/dist/demo/stepper/view.js +31 -0
- package/dist/demo/types.d.ts +85 -0
- package/dist/demo/verbose-log.js +15 -0
- package/dist/engine/block/action-page.d.ts +53 -0
- package/dist/engine/block/action-page.js +1 -0
- package/dist/{types.d.ts → engine/block/block.d.ts} +102 -142
- package/dist/{core → engine/block}/block.js +12 -130
- package/dist/engine/block/branch.d.ts +17 -0
- package/dist/engine/block/branch.js +40 -0
- package/dist/{core → engine/block}/compose.d.ts +9 -7
- package/dist/{core → engine/block}/compose.js +1 -1
- package/dist/engine/block/dialog.d.ts +13 -0
- package/dist/engine/block/dialog.js +37 -0
- package/dist/{core/blocks → engine/block/kinds}/api.d.ts +16 -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 +17 -29
- package/dist/{core/blocks → engine/block/kinds}/method.js +6 -21
- package/dist/{core/blocks → engine/block/kinds}/nav.d.ts +21 -31
- package/dist/{core/blocks → engine/block/kinds}/nav.js +6 -12
- package/dist/{core/blocks → engine/block/kinds}/page.d.ts +14 -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} +22 -22
- package/dist/{errors.js → engine/errors.js} +22 -22
- package/dist/{core → engine/flow}/branch-regression.d.ts +7 -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/engine/flow/map-branch.d.ts +9 -0
- package/dist/engine/flow/map-branch.js +57 -0
- package/dist/{core → engine/flow}/map-builder.d.ts +34 -54
- package/dist/engine/flow/map-builder.js +242 -0
- package/dist/engine/flow/map-steps.d.ts +30 -0
- package/dist/engine/flow/map-steps.js +87 -0
- 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} +8 -12
- package/dist/{core/run-graph.js → engine/run/run.js} +22 -12
- 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/{trait.js → engine/trait/trait.js} +1 -1
- package/dist/index.d.ts +88 -36
- package/dist/index.js +46 -19
- package/dist/live/auto/auto.d.ts +22 -0
- package/dist/live/auto/auto.js +207 -0
- 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/live/auto/mem.d.ts +11 -0
- package/dist/live/auto/mem.js +85 -0
- package/dist/live/auto/menu.d.ts +30 -0
- package/dist/live/auto/menu.js +335 -0
- package/dist/live/auto-session/auto-session.d.ts +113 -0
- package/dist/live/auto-session/auto-session.js +452 -0
- package/dist/live/auto-session/console.d.ts +4 -0
- package/dist/live/auto-session/console.js +41 -0
- package/dist/live/auto-session/files.d.ts +44 -0
- package/dist/live/auto-session/files.js +145 -0
- package/dist/{auto-session → live/auto-session}/helpers.d.ts +9 -5
- package/dist/{auto-session → live/auto-session}/helpers.js +18 -1
- package/dist/live/auto-session/inspect.d.ts +4 -0
- package/dist/live/auto-session/inspect.js +75 -0
- package/dist/{session/auto-session-ipc.d.ts → live/auto-session/ipc.d.ts} +8 -25
- package/dist/{session/auto-session-ipc.js → live/auto-session/ipc.js} +36 -161
- package/dist/live/auto-session/open-browser.d.ts +6 -0
- package/dist/live/auto-session/open-browser.js +47 -0
- 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 +3 -3
- package/dist/{session → live/pilot}/pilot.js +5 -4
- package/dist/{traverse/run.d.ts → live/traverse/traverse.d.ts} +1 -1
- package/dist/live/traverse/traverse.js +212 -0
- package/dist/live/traverse/worker.d.ts +37 -0
- package/dist/live/traverse/worker.js +200 -0
- 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/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} +1 -5
- package/dist/{extensions.js → runtime/extensions.js} +2 -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} +6 -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 +1 -2
- 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/docs/CONVENTION.md +4 -5
- package/examples/saucedemo/docs/HELPERS.md +11 -11
- 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 -3
- 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 +5 -8
- package/examples/saucedemo/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -3
- 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 +35 -43
- 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 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -4
- package/examples/saucedemo/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +4 -5
- 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 +12 -10
- package/examples/saucedemo/src/states/checkout.states.ts +21 -11
- package/examples/saucedemo/src/stubs/device-showcase.ts +8 -10
- package/examples/saucedemo/tests/auto-graph.spec.ts +4 -12
- package/package.json +14 -6
- package/templates/agents/waygraph-planner.agent.md +2 -2
- package/templates/quickstart/docs/CONVENTION.md +4 -4
- package/templates/quickstart/docs/HELPERS.md +10 -8
- package/templates/quickstart/package.json +0 -3
- package/templates/quickstart/src/blocks/SITE-MAP.md +0 -1
- package/templates/quickstart/src/blocks/saucedemo-web/NAV.md +1 -5
- package/templates/quickstart/src/blocks/saucedemo-web/cart/nav-cart.block.ts +3 -3
- 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 +5 -8
- package/templates/quickstart/src/blocks/saucedemo-web/inventory/inventory.page.block.ts +3 -3
- 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 +35 -43
- 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 -4
- package/templates/quickstart/src/blocks/saucedemo-web/methods/fill-username.method.block.ts +5 -4
- package/templates/quickstart/src/blocks/saucedemo-web/methods/submit-login.method.block.ts +4 -5
- 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 +12 -10
- package/templates/quickstart/src/states/checkout.states.ts +21 -11
- package/templates/quickstart/src/stubs/device-showcase.ts +8 -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/session.d.ts +0 -193
- package/dist/auto-session/session.js +0 -719
- 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/session.js +0 -600
- 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 -294
- package/dist/core/flow.js +0 -432
- package/dist/core/map-builder.js +0 -383
- 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/run-phase.d.ts +0 -43
- package/dist/highlights/stub-ctx.d.ts +0 -10
- package/dist/highlights/stub-ctx.js +0 -331
- package/dist/highlights/types.d.ts +0 -613
- 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/auto-explore-run.d.ts +0 -40
- package/dist/session/auto-explore-run.js +0 -707
- package/dist/session/step-overlay.d.ts +0 -37
- package/dist/session/step-overlay.js +0 -244
- package/dist/traverse/run.js +0 -423
- package/examples/routed-demo/playwright.config.ts +0 -21
- package/examples/saucedemo/src/blocks/saucedemo-web/ff-owner-auth.block.ts +0 -22
- 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/{session/overlay-beacon.d.ts → demo/overlay/beacon.d.ts} +0 -0
- /package/dist/{session/overlay-beacon.js → demo/overlay/beacon.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/{traverse → live/traverse}/coverage.d.ts +0 -0
- /package/dist/{traverse → live/traverse}/coverage.js +0 -0
- /package/dist/{traverse → live/traverse}/lease.d.ts +0 -0
- /package/dist/{traverse → live/traverse}/lease.js +0 -0
- /package/dist/{session/block-inject.d.ts → manifest/roots.d.ts} +0 -0
- /package/dist/{blocks-select.d.ts → manifest/select.d.ts} +0 -0
- /package/dist/{blocks-select.js → manifest/select.js} +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
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ensureInstalled } from "./shell.js";
|
|
2
|
+
import { ignorePageGone } from "../../../engine/page-gone.js";
|
|
2
3
|
/** Paint the gray "auto" ring (Playwright is about to act here) at a viewport rectangle. */
|
|
3
4
|
async function showPilotRect(page, box, label, tone = "auto") {
|
|
4
5
|
await ensureInstalled(page);
|
|
@@ -30,7 +31,7 @@ async function showPilotRect(page, box, label, tone = "auto") {
|
|
|
30
31
|
tag.style.opacity = "0";
|
|
31
32
|
}, 4_000);
|
|
32
33
|
}, { box, label, tone })
|
|
33
|
-
.catch(
|
|
34
|
+
.catch(ignorePageGone);
|
|
34
35
|
}
|
|
35
36
|
const LOCATOR_ACTIONS = ["click", "dblclick", "hover", "tap", "fill", "check", "uncheck", "selectOption", "press", "pressSequentially", "setInputFiles"];
|
|
36
37
|
const patched = new WeakSet();
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
-
import type { BannerPos, BannerUiOpts
|
|
1
|
+
import type { BannerPos, BannerUiOpts } from "../../../engine/stub/stub.js";
|
|
2
|
+
import type { DevicePreset, DeviceState } from "../../../engine/stub/viewport.js";
|
|
3
|
+
import type { HighlightTone } from "../../../engine/stub/ring.js";
|
|
4
|
+
import type { TodoDockUiOpts, TodoListStyle, WaygraphTodoGroupInput } from "../../../engine/stub/todos.js";
|
|
2
5
|
import type { Page } from "@playwright/test";
|
|
3
6
|
/** One ring the Pilot agent wants painted (same fields as demo stub rings). */
|
|
4
7
|
export type PilotFixtureRing = {
|
|
@@ -26,7 +29,7 @@ export type PilotFixtureRing = {
|
|
|
26
29
|
};
|
|
27
30
|
/**
|
|
28
31
|
* Agent-sent highlight fixtures for a live Pilot / auto session.
|
|
29
|
-
* Painted by
|
|
32
|
+
* Painted by `showPilotFixtures`; driven via IPC `op: "highlight"`.
|
|
30
33
|
* Mirrors demo stub surface: rings, todos, zoom, focus, device.
|
|
31
34
|
*/
|
|
32
35
|
export type PilotHighlightFixtures = {
|
|
@@ -40,7 +43,7 @@ export type PilotHighlightFixtures = {
|
|
|
40
43
|
todoTitle?: string;
|
|
41
44
|
/** Todo dock side. Default `right`. */
|
|
42
45
|
todoPos?: "left" | "right";
|
|
43
|
-
/** Presentation: `sequential` (default, arrow walkthrough) | `checklist` | `bullets`. Same as ctx.
|
|
46
|
+
/** Presentation: `sequential` (default, arrow walkthrough) | `checklist` | `bullets`. Same as ctx.todos(id, items, { style }). */
|
|
44
47
|
todoStyle?: TodoListStyle;
|
|
45
48
|
/** Multiple titled lists (FR/Scenarios/ACs, same as ctx.todoGroups) - replaces {@link todos} when set. */
|
|
46
49
|
todoGroups?: readonly WaygraphTodoGroupInput[];
|
|
@@ -78,8 +81,6 @@ export type PilotHighlightFixtures = {
|
|
|
78
81
|
titlePos?: BannerPos;
|
|
79
82
|
/** Banner UX: collision / hidden (same as `ctx.bannerUi`). */
|
|
80
83
|
bannerUi?: BannerUiOpts;
|
|
81
|
-
/** Alias of {@link todoUi} - the name `ctx.todoDockUi` uses. */
|
|
82
|
-
todoDockUi?: TodoDockUiOpts;
|
|
83
84
|
};
|
|
84
85
|
/**
|
|
85
86
|
* Paint (or clear) agent-authored highlight fixtures on the live page.
|
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
1
|
+
import { buildTodoDock, resolveTodoDockUi } from "../../narration/todo-dock.js";
|
|
2
|
+
import { formatHighlightCaption } from "../../narration/style.js";
|
|
3
|
+
import { normalizeHighlightSize, normalizeHighlightTone, normalizeHighlightWeight } from "../../../engine/stub/ring.js";
|
|
4
|
+
import { resolveDeviceState } from "../../narration/device.js";
|
|
3
5
|
import { ensureInstalled } from "./shell.js";
|
|
4
|
-
import { verboseLog } from "
|
|
6
|
+
import { verboseLog } from "../../verbose-log.js";
|
|
7
|
+
import { ignorePageGone } from "../../../engine/page-gone.js";
|
|
5
8
|
/**
|
|
6
9
|
* Paint (or clear) agent-authored highlight fixtures on the live page.
|
|
7
10
|
* Multi-ring + optional todo strip + zoom/focus/device - the Pilot equivalent
|
|
@@ -44,7 +47,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
44
47
|
const todoPos = fixtures.todoPos === "left" ? "left" : "right";
|
|
45
48
|
const todoUi = resolveTodoDockUi(fixtures.todoUi ?? null);
|
|
46
49
|
// Real TodoDockState (groups/style), same builder the demo runner uses - not a flat string[]
|
|
47
|
-
// re-implementation, so a Block/agent that authors ctx.todoGroups()
|
|
50
|
+
// re-implementation, so a Block/agent that authors ctx.todoGroups() or a todos style looks the
|
|
48
51
|
// same on Pilot as it does in `waygraph demo`.
|
|
49
52
|
const todoDock = fixtures.clear
|
|
50
53
|
? undefined
|
|
@@ -84,31 +87,31 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
84
87
|
if (hit?.zoomOut !== undefined)
|
|
85
88
|
zoomOut = hit.zoomOut !== false;
|
|
86
89
|
}
|
|
87
|
-
// Device viewport - same
|
|
90
|
+
// Device viewport - same demo/overlay/device-stage.ts + inpage/device.ts every other surface uses
|
|
88
91
|
// (toast + persistent chip + touch mode), not a separate, simpler Pilot-only chip.
|
|
89
92
|
if (fixtures.clear === true) {
|
|
90
|
-
const { applyDeviceToPage } = await import("../
|
|
91
|
-
await applyDeviceToPage(page, undefined, "clear").catch(
|
|
93
|
+
const { applyDeviceToPage } = await import("../device-stage.js");
|
|
94
|
+
await applyDeviceToPage(page, undefined, "clear").catch(ignorePageGone);
|
|
92
95
|
}
|
|
93
96
|
else if (fixtures.device !== undefined) {
|
|
94
97
|
const d = resolveDeviceState(fixtures.device);
|
|
95
98
|
if (d) {
|
|
96
99
|
const [{ applyDeviceToPage }, { installDevice }] = await Promise.all([
|
|
97
|
-
import("../
|
|
98
|
-
import("../
|
|
100
|
+
import("../device-stage.js"),
|
|
101
|
+
import("../inpage/device-chip.js"),
|
|
99
102
|
]);
|
|
100
|
-
await page.evaluate(installDevice, {}).catch(
|
|
101
|
-
await applyDeviceToPage(page, d, "set").catch(
|
|
103
|
+
await page.evaluate(installDevice, {}).catch(ignorePageGone);
|
|
104
|
+
await applyDeviceToPage(page, d, "set").catch(ignorePageGone);
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
const bannerTitle = fixtures.clear ? undefined : fixtures.title;
|
|
105
108
|
const bannerPos = fixtures.clear ? undefined : fixtures.titlePos;
|
|
106
109
|
const bannerHidden = !!fixtures.clear || !!fixtures.bannerUi?.hidden;
|
|
107
110
|
const bannerCollision = fixtures.bannerUi?.collision !== false;
|
|
108
|
-
// Same #wg-banner installer the demo runner uses (
|
|
111
|
+
// Same #wg-banner installer the demo runner uses (demo/overlay/inpage/banner.ts) - not a separate
|
|
109
112
|
// re-implementation. `tag: "waygraph pilot"` is the only Pilot-specific bit.
|
|
110
113
|
if (bannerTitle !== undefined || bannerHidden) {
|
|
111
|
-
const { installBanner } = await import("../
|
|
114
|
+
const { installBanner } = await import("../inpage/banner.js");
|
|
112
115
|
await page
|
|
113
116
|
.evaluate(installBanner, {
|
|
114
117
|
title: bannerTitle,
|
|
@@ -116,7 +119,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
116
119
|
bannerUi: { hidden: bannerHidden, collision: bannerCollision, ...(bannerPos ? { pos: bannerPos } : {}) },
|
|
117
120
|
tag: "waygraph pilot",
|
|
118
121
|
})
|
|
119
|
-
.catch(
|
|
122
|
+
.catch(ignorePageGone);
|
|
120
123
|
}
|
|
121
124
|
// Resolve every ring's box (and the zoom target, if any) through Playwright's own locator, not a
|
|
122
125
|
// selector string handed to the page for a raw DOM querySelector to fail silently on - >>
|
|
@@ -185,9 +188,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
185
188
|
}
|
|
186
189
|
const zoomed = level > 1.001 || level < 0.999;
|
|
187
190
|
badge.dataset.zoomed = zoomed ? "1" : "0";
|
|
188
|
-
badge.
|
|
189
|
-
'<span class="wg-pilot-fx-zoom-ico"><svg viewBox="0 0 24 24" fill="none" stroke="#fde68a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg></span>' +
|
|
190
|
-
`<span class="wg-pilot-fx-zoom-val">${level.toFixed(2)}\u00d7</span>`;
|
|
191
|
+
__wgSet(badge, __wgEl("span", { class: "wg-pilot-fx-zoom-ico" }, __wgSvg('<svg viewBox="0 0 24 24" fill="none" stroke="#fde68a" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="11" cy="11" r="7"/><path d="M20 20l-3.5-3.5"/></svg>')), __wgEl("span", { class: "wg-pilot-fx-zoom-val" }, level.toFixed(2) + "\u00d7"));
|
|
191
192
|
};
|
|
192
193
|
const clearZoom = () => {
|
|
193
194
|
// Undo any leftover CSS-scale from older Pilot zoom path.
|
|
@@ -217,7 +218,7 @@ export async function showPilotFixtures(page, fixtures) {
|
|
|
217
218
|
let painted = 0;
|
|
218
219
|
let focusBox = null;
|
|
219
220
|
// Paint through the SAME shared ring primitive the demo/auto singleton ring uses
|
|
220
|
-
// (window.__wgPaintRingAt, installed by
|
|
221
|
+
// (window.__wgPaintRingAt, installed by demo/overlay/inpage/core.ts's installCore - see
|
|
221
222
|
// ensureInstalled) - one ring implementation, not a separate DOM-building copy here.
|
|
222
223
|
rings.forEach((ring, i) => {
|
|
223
224
|
const box = ringBoxes[i];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { HighlightTone } from "
|
|
1
|
+
import type { HighlightTone } from "../../../engine/stub/ring.js";
|
|
2
2
|
import type { BrowserContext, Page } from "@playwright/test";
|
|
3
3
|
/**
|
|
4
4
|
* Re-install the overlay shell on every navigation (about:blank, goto, etc.)
|
|
@@ -26,7 +26,7 @@ export declare function showPilotActivity(page: Page, text: string): Promise<voi
|
|
|
26
26
|
* JSON blob in a terminal. Real, direct user request.
|
|
27
27
|
*
|
|
28
28
|
* Reuses the real `#wg-ring`/`#wg-ring-label` elements + `WAYGRAPH_RING_CSS`
|
|
29
|
-
* (see `
|
|
29
|
+
* (see `demo/narration/index.ts`) - the exact same visual language `cli.ts`'s own demo
|
|
30
30
|
* stepper paints rings with, not a separate look-alike. Still a purpose-built
|
|
31
31
|
* renderer here (position/show/hide only, via plain `getBoundingClientRect` -
|
|
32
32
|
* no camera zoom/spotlight/todo-dock/pacing), since that whole engine still
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
// Split out of the former 950-line pilot-overlay.ts (see src/ARCHITECTURE.md). Behavior unchanged.
|
|
2
1
|
import { SURFACE } from "../ui/tokens.js";
|
|
3
2
|
import { ensureShadowRoot, installShadowRoot } from "../ui/shadow.js";
|
|
4
|
-
import { verboseLog } from "
|
|
3
|
+
import { verboseLog } from "../../verbose-log.js";
|
|
4
|
+
import { ignorePageGone } from "../../../engine/page-gone.js";
|
|
5
5
|
// Real, direct user request: this overlay's own colors were an improvised
|
|
6
6
|
// purple/white scheme (#a78bfa / #1a1033) that didn't match anything else -
|
|
7
7
|
// "our design here seems like barely shares with the ui on the stepper
|
|
@@ -64,7 +64,7 @@ const OVERLAY_CSS = `
|
|
|
64
64
|
}
|
|
65
65
|
#wg-pilot-activity.wg-pilot-toast-show { opacity: 1; transform: translateY(0); }
|
|
66
66
|
/* Agent fixture rings (painted via the shared .wg-ring-el primitive, see ui/css/ring.css and
|
|
67
|
-
|
|
67
|
+
demo/overlay/inpage/core.ts's __wgPaintRingAt), #wg-pilot-fx-todos, #wg-ring/#wg-ring-label and
|
|
68
68
|
#wg-banner all come from the ONE shared bundle ensureShadowRoot installs (ui/css/*.css) - not
|
|
69
69
|
redefined here. */
|
|
70
70
|
/* Spotlight (demo focus:true) - dim page, cutout around target. */
|
|
@@ -96,16 +96,7 @@ function installPilotOverlayShell(css) {
|
|
|
96
96
|
if (__wgById("wg-pilot-overlay"))
|
|
97
97
|
return;
|
|
98
98
|
__wgCss(css, "wg-pilot-overlay-css");
|
|
99
|
-
const root =
|
|
100
|
-
root.id = "wg-pilot-overlay";
|
|
101
|
-
root.innerHTML =
|
|
102
|
-
'<div id="wg-pilot-badge">Waygraph Pilot</div>' +
|
|
103
|
-
'<div id="wg-pilot-panel">' +
|
|
104
|
-
'<div id="wg-pilot-panel-toggle"><button id="wg-pilot-view-current" class="wg-pilot-tab-active">Here</button>' +
|
|
105
|
-
'<button id="wg-pilot-view-graph">All nodes</button></div>' +
|
|
106
|
-
'<div id="wg-pilot-panel-current"></div>' +
|
|
107
|
-
'<div id="wg-pilot-panel-graph" style="display:none"></div>' +
|
|
108
|
-
"</div>";
|
|
99
|
+
const root = __wgEl("div", { id: "wg-pilot-overlay" }, __wgEl("div", { id: "wg-pilot-badge" }, "Waygraph Pilot"), __wgEl("div", { id: "wg-pilot-panel" }, __wgEl("div", { id: "wg-pilot-panel-toggle" }, __wgEl("button", { id: "wg-pilot-view-current", class: "wg-pilot-tab-active" }, "Here"), __wgEl("button", { id: "wg-pilot-view-graph" }, "All nodes")), __wgEl("div", { id: "wg-pilot-panel-current" }), __wgEl("div", { id: "wg-pilot-panel-graph", style: "display:none" })));
|
|
109
100
|
__wgAdd(root);
|
|
110
101
|
__wgById("wg-pilot-badge").addEventListener("click", () => {
|
|
111
102
|
__wgById("wg-pilot-panel").classList.toggle("wg-pilot-open");
|
|
@@ -150,16 +141,16 @@ export async function installPersistentPilotOverlay(context) {
|
|
|
150
141
|
/** Idempotent - safe to call before every update, matching narrate mode's own precedent. */
|
|
151
142
|
export async function ensureInstalled(page) {
|
|
152
143
|
await ensureShadowRoot(page);
|
|
153
|
-
await page.evaluate(installPilotOverlayShell, OVERLAY_CSS).catch(
|
|
144
|
+
await page.evaluate(installPilotOverlayShell, OVERLAY_CSS).catch(ignorePageGone);
|
|
154
145
|
// The shared ring primitive (__wgEnsureRingEl/__wgPaintRingAt) - so Pilot's fixture rings paint
|
|
155
146
|
// through the SAME implementation the demo/auto singleton ring uses (see ui/css/ring.css / this
|
|
156
147
|
// file's own header comment on redundancy), not a separate DOM-building copy.
|
|
157
|
-
const { installCore } = await import("../
|
|
158
|
-
await page.evaluate(installCore, {}).catch(
|
|
159
|
-
// Device toast/chip CSS (
|
|
148
|
+
const { installCore } = await import("../inpage/core.js");
|
|
149
|
+
await page.evaluate(installCore, {}).catch(ignorePageGone);
|
|
150
|
+
// Device toast/chip CSS (demo/overlay/overlay-css.ts's RUNNER_EXTRA_CSS) - same rules the demo runner
|
|
160
151
|
// uses, reused here (not re-authored) so a device fixture looks identical on Pilot.
|
|
161
|
-
const { RUNNER_EXTRA_CSS } = await import("../
|
|
162
|
-
await page.evaluate(([css, key]) => __wgCss(css, key), [RUNNER_EXTRA_CSS, "wg-runner-css"]).catch(
|
|
152
|
+
const { RUNNER_EXTRA_CSS } = await import("../overlay-css.js");
|
|
153
|
+
await page.evaluate(([css, key]) => __wgCss(css, key), [RUNNER_EXTRA_CSS, "wg-runner-css"]).catch(ignorePageGone);
|
|
163
154
|
}
|
|
164
155
|
/**
|
|
165
156
|
* Bottom-left transient toast, separate from the persistent bottom-right
|
|
@@ -187,7 +178,7 @@ export async function showPilotActivity(page, text) {
|
|
|
187
178
|
toast.classList.remove("wg-pilot-toast-show");
|
|
188
179
|
}, 2500);
|
|
189
180
|
}, text)
|
|
190
|
-
.catch(
|
|
181
|
+
.catch(ignorePageGone);
|
|
191
182
|
}
|
|
192
183
|
/**
|
|
193
184
|
* "browser-use"-style vision box: a ring drawn around the exact element
|
|
@@ -196,7 +187,7 @@ export async function showPilotActivity(page, text) {
|
|
|
196
187
|
* JSON blob in a terminal. Real, direct user request.
|
|
197
188
|
*
|
|
198
189
|
* Reuses the real `#wg-ring`/`#wg-ring-label` elements + `WAYGRAPH_RING_CSS`
|
|
199
|
-
* (see `
|
|
190
|
+
* (see `demo/narration/index.ts`) - the exact same visual language `cli.ts`'s own demo
|
|
200
191
|
* stepper paints rings with, not a separate look-alike. Still a purpose-built
|
|
201
192
|
* renderer here (position/show/hide only, via plain `getBoundingClientRect` -
|
|
202
193
|
* no camera zoom/spotlight/todo-dock/pacing), since that whole engine still
|
|
@@ -276,5 +267,5 @@ export async function showPilotVision(page, selector, label, tone = "auto") {
|
|
|
276
267
|
tag.style.opacity = "0";
|
|
277
268
|
}, 4_000);
|
|
278
269
|
}, { box, label, tone })
|
|
279
|
-
.catch(
|
|
270
|
+
.catch(ignorePageGone);
|
|
280
271
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Page } from "@playwright/test";
|
|
2
|
+
type Repaint = () => Promise<unknown>;
|
|
3
|
+
/** Repaints the page's overlay now, after any repaint already running (two never interleave). */
|
|
4
|
+
export declare function repaintOverlay(page: Page): Promise<void>;
|
|
5
|
+
/** Registers (or replaces) how this page's overlay repaints itself after a navigation. */
|
|
6
|
+
export declare function keepOverlayOnNavigation(page: Page, repaint: Repaint): void;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ignorePageGone } from "../../engine/page-gone.js";
|
|
2
|
+
const repaints = new WeakMap();
|
|
3
|
+
const running = new WeakMap();
|
|
4
|
+
/** Repaints the page's overlay now, after any repaint already running (two never interleave). */
|
|
5
|
+
export function repaintOverlay(page) {
|
|
6
|
+
const next = (running.get(page) ?? Promise.resolve()).then(async () => {
|
|
7
|
+
await repaints.get(page)?.();
|
|
8
|
+
}).catch(ignorePageGone);
|
|
9
|
+
running.set(page, next);
|
|
10
|
+
return next;
|
|
11
|
+
}
|
|
12
|
+
/** Registers (or replaces) how this page's overlay repaints itself after a navigation. */
|
|
13
|
+
export function keepOverlayOnNavigation(page, repaint) {
|
|
14
|
+
const listening = repaints.has(page);
|
|
15
|
+
repaints.set(page, repaint);
|
|
16
|
+
if (listening)
|
|
17
|
+
return;
|
|
18
|
+
let settle;
|
|
19
|
+
page.on("load", () => {
|
|
20
|
+
clearTimeout(settle);
|
|
21
|
+
settle = setTimeout(() => void repaintOverlay(page), 80);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { WgBox, WgPage } from "../types.js";
|
|
2
|
+
import type { Locator } from "@playwright/test";
|
|
3
|
+
import type { ResolvedHighlight } from "../../engine/stub/ring.js";
|
|
4
|
+
import type { DemoPace } from "../../engine/stub/pace.js";
|
|
5
|
+
import type { TodoDockState, WaygraphTodoItem } from "../../engine/stub/todos.js";
|
|
6
|
+
import type { Pacing } from "../stepper/pacing.js";
|
|
7
|
+
/**
|
|
8
|
+
* Scroll a locator into view for demo theater.
|
|
9
|
+
* Prefer CSS smooth scroll + scrollend wait. Do NOT call Playwright's
|
|
10
|
+
* scrollIntoViewIfNeeded first - that jumps instantly and makes the
|
|
11
|
+
* following smooth scroll a no-op (looks like a teleport), especially
|
|
12
|
+
* noticeable under --fast when dwell is shorter.
|
|
13
|
+
* Pass opts.instant=true only for skipTheater / blitz.
|
|
14
|
+
*/
|
|
15
|
+
export declare function ensureLocatorInView(locator: Locator, opts?: {
|
|
16
|
+
instant?: boolean;
|
|
17
|
+
}): Promise<void>;
|
|
18
|
+
export declare function ensureSelectorInView(page: WgPage, selector: string, opts?: {
|
|
19
|
+
instant?: boolean;
|
|
20
|
+
}): Promise<void>;
|
|
21
|
+
export declare function applyHighlightZoom(page: WgPage, selector: string | undefined, zoom: number | undefined, zoomOut: boolean | undefined): Promise<void>;
|
|
22
|
+
/** How `cycleHighlightRings` plays a step's rings: hold times, pace, and the todo dock it moves along. */
|
|
23
|
+
export interface CycleRingsOptions {
|
|
24
|
+
/** Hold for each ring when it sets none (the failure path holds longer). */
|
|
25
|
+
defaultHoldMs?: number;
|
|
26
|
+
pace?: DemoPace | undefined;
|
|
27
|
+
todoDock?: TodoDockState | undefined;
|
|
28
|
+
todos?: readonly WaygraphTodoItem[] | undefined;
|
|
29
|
+
todoSync?: "set" | "clear" | "keep" | undefined;
|
|
30
|
+
todoDockRef?: {
|
|
31
|
+
current: TodoDockState | undefined;
|
|
32
|
+
} | undefined;
|
|
33
|
+
/** False when the stub already set the dock's progress. */
|
|
34
|
+
advanceTodos?: boolean;
|
|
35
|
+
stepLabel?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function cycleHighlightRings(page: WgPage, highlights: readonly ResolvedHighlight[] | undefined, gatesFast: boolean, opts?: CycleRingsOptions): Promise<void>;
|
|
38
|
+
export declare function showRing(page: WgPage, box: WgBox, label: string, tone: string | undefined, style?: {
|
|
39
|
+
size?: string | undefined;
|
|
40
|
+
weight?: string | undefined;
|
|
41
|
+
selector?: string | undefined;
|
|
42
|
+
focus?: boolean;
|
|
43
|
+
}): Promise<void>;
|
|
44
|
+
/** The stubBefore ring a locator is, by overlapping bounding boxes: its index, or -1. For a Method's todo advance. */
|
|
45
|
+
export declare function matchStubIndexForLocator(page: WgPage, locator: Locator, stubs: readonly ResolvedHighlight[] | undefined): Promise<number>;
|
|
46
|
+
export declare function captionForLocator(page: WgPage, locator: Locator, stubs: readonly ResolvedHighlight[] | undefined, fallback: string): Promise<{
|
|
47
|
+
label: string;
|
|
48
|
+
tone: string;
|
|
49
|
+
size: string;
|
|
50
|
+
weight: string;
|
|
51
|
+
}>;
|
|
52
|
+
export declare function dwellMatchedStub(page: WgPage, locator: Locator, stubs: readonly ResolvedHighlight[] | undefined, pacing: Pick<Pacing, "gatesFast" | "demoPace"> | undefined): Promise<void>;
|
|
53
|
+
export declare function hideRing(page: WgPage): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* True if the engine's own narrate() (waygraph's public export, for a Block
|
|
56
|
+
* author explicitly captioning one action) JUST positioned the ring for
|
|
57
|
+
* THIS action, moments ago - the automatic per-fill/per-click narration
|
|
58
|
+
* below should not immediately overwrite an author's own explicit caption
|
|
59
|
+
* with its generic guess.
|
|
60
|
+
*/
|
|
61
|
+
export declare function wasJustNarrated(page: WgPage): Promise<boolean>;
|