e2e 0.15.2 → 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/dist/.build.json +1 -1
- package/dist/agent/act-validation.d.ts +10 -1
- package/dist/agent/act-validation.js +48 -1
- package/dist/agent/act.d.ts +1 -2
- package/dist/agent/act.js +22 -5
- package/dist/agent/action-dispatcher.d.ts +0 -1
- package/dist/agent/action-dispatcher.js +0 -1
- package/dist/agent/action-names.d.ts +0 -1
- package/dist/agent/action-names.js +0 -1
- package/dist/agent/actions.d.ts +0 -1
- package/dist/agent/actions.js +0 -1
- package/dist/agent/agent-brand.d.ts +0 -1
- package/dist/agent/agent-brand.js +0 -1
- package/dist/agent/ai-sdk.d.ts +7 -1
- package/dist/agent/ai-sdk.js +11 -1
- package/dist/agent/call-options.d.ts +0 -1
- package/dist/agent/call-options.js +0 -1
- package/dist/agent/default-agent.d.ts +0 -1
- package/dist/agent/default-agent.js +0 -1
- package/dist/agent/derived.d.ts +0 -1
- package/dist/agent/derived.js +0 -1
- package/dist/agent/error.d.ts +0 -1
- package/dist/agent/error.js +0 -1
- package/dist/agent/executor.d.ts +0 -1
- package/dist/agent/executor.js +0 -1
- package/dist/agent/index.d.ts +0 -1
- package/dist/agent/index.js +0 -1
- package/dist/agent/interactive-step.d.ts +0 -1
- package/dist/agent/interactive-step.js +0 -1
- package/dist/agent/invocation.d.ts +0 -1
- package/dist/agent/invocation.js +10 -5
- package/dist/agent/ledger.d.ts +0 -1
- package/dist/agent/ledger.js +0 -1
- package/dist/agent/loop-guards.d.ts +0 -1
- package/dist/agent/loop-guards.js +0 -1
- package/dist/agent/model/adapter.d.ts +0 -1
- package/dist/agent/model/adapter.js +0 -1
- package/dist/agent/model/overflow.d.ts +0 -1
- package/dist/agent/model/overflow.js +0 -1
- package/dist/agent/model/provider-hints.d.ts +0 -1
- package/dist/agent/model/provider-hints.js +0 -1
- package/dist/agent/model/schema.d.ts +0 -1
- package/dist/agent/model/schema.js +0 -1
- package/dist/agent/model/sdk.d.ts +0 -1
- package/dist/agent/model/sdk.js +0 -1
- package/dist/agent/model/stall.d.ts +0 -1
- package/dist/agent/model/stall.js +0 -1
- package/dist/agent/model/tool-choice.d.ts +0 -1
- package/dist/agent/model/tool-choice.js +0 -1
- package/dist/agent/observation-budget.d.ts +0 -1
- package/dist/agent/observation-budget.js +0 -1
- package/dist/agent/observation-feed.d.ts +0 -1
- package/dist/agent/observation-feed.js +0 -1
- package/dist/agent/observation.d.ts +0 -1
- package/dist/agent/observation.js +0 -1
- package/dist/agent/operation-queue.d.ts +0 -1
- package/dist/agent/operation-queue.js +0 -1
- package/dist/agent/phases.d.ts +0 -1
- package/dist/agent/phases.js +0 -1
- package/dist/agent/pixels.d.ts +0 -1
- package/dist/agent/pixels.js +0 -1
- package/dist/agent/point-tap.d.ts +0 -1
- package/dist/agent/point-tap.js +0 -1
- package/dist/agent/primitives.d.ts +6 -1
- package/dist/agent/primitives.js +4 -2
- package/dist/agent/prompts.d.ts +0 -1
- package/dist/agent/prompts.js +0 -1
- package/dist/agent/protocol.d.ts +0 -1
- package/dist/agent/protocol.js +0 -1
- package/dist/agent/public.d.ts +0 -1
- package/dist/agent/public.js +0 -1
- package/dist/agent/reading.d.ts +0 -1
- package/dist/agent/reading.js +0 -1
- package/dist/agent/replay.d.ts +0 -1
- package/dist/agent/replay.js +0 -1
- package/dist/agent/screen-update.d.ts +0 -1
- package/dist/agent/screen-update.js +0 -1
- package/dist/agent/scroll-target.d.ts +0 -1
- package/dist/agent/scroll-target.js +0 -1
- package/dist/agent/secrets.d.ts +0 -1
- package/dist/agent/secrets.js +0 -1
- package/dist/agent/settle-policy.d.ts +0 -1
- package/dist/agent/settle-policy.js +0 -1
- package/dist/agent/step-accounting.d.ts +0 -1
- package/dist/agent/step-accounting.js +0 -1
- package/dist/agent/step-cache.d.ts +0 -1
- package/dist/agent/step-cache.js +0 -1
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +0 -1
- package/dist/agent/tool-output.d.ts +0 -1
- package/dist/agent/tool-output.js +0 -1
- package/dist/agent/tool.d.ts +0 -1
- package/dist/agent/tool.js +0 -1
- package/dist/agent/transcript-compaction.d.ts +0 -1
- package/dist/agent/transcript-compaction.js +0 -1
- package/dist/agent/upload-paths.d.ts +0 -1
- package/dist/agent/upload-paths.js +0 -1
- package/dist/agent/usage.d.ts +0 -1
- package/dist/agent/usage.js +0 -1
- package/dist/cache/anchors.d.ts +0 -1
- package/dist/cache/anchors.js +0 -1
- package/dist/cache/context.d.ts +0 -1
- package/dist/cache/context.js +0 -1
- package/dist/cache/decide.d.ts +0 -1
- package/dist/cache/decide.js +0 -1
- package/dist/cache/identity.d.ts +0 -1
- package/dist/cache/identity.js +0 -1
- package/dist/cache/recorder.d.ts +0 -1
- package/dist/cache/recorder.js +0 -1
- package/dist/cache/relocate.d.ts +0 -1
- package/dist/cache/relocate.js +0 -1
- package/dist/cache/route.d.ts +0 -1
- package/dist/cache/route.js +0 -1
- package/dist/cache/store.d.ts +0 -1
- package/dist/cache/store.js +0 -1
- package/dist/cache/template.d.ts +0 -1
- package/dist/cache/template.js +0 -1
- package/dist/cache/trace.d.ts +0 -1
- package/dist/cache/trace.js +0 -1
- package/dist/cli/bin.d.ts +0 -1
- package/dist/cli/bin.js +0 -1
- package/dist/cli/cache.d.ts +0 -1
- package/dist/cli/cache.js +0 -1
- package/dist/cli/docs-url.d.ts +0 -1
- package/dist/cli/docs-url.js +0 -1
- package/dist/cli/feedback.d.ts +0 -1
- package/dist/cli/feedback.js +0 -1
- package/dist/cli/guide.d.ts +0 -1
- package/dist/cli/guide.js +0 -1
- package/dist/cli/index.d.ts +0 -1
- package/dist/cli/index.js +2 -3
- package/dist/cli/init/agent-skill.d.ts +0 -1
- package/dist/cli/init/agent-skill.js +0 -1
- package/dist/cli/init/engines.d.ts +0 -1
- package/dist/cli/init/engines.js +0 -1
- package/dist/cli/init/gateways.d.ts +0 -1
- package/dist/cli/init/gateways.js +0 -1
- package/dist/cli/init/mcp-config.d.ts +0 -1
- package/dist/cli/init/mcp-config.js +0 -1
- package/dist/cli/init/package.d.ts +0 -1
- package/dist/cli/init/package.js +0 -1
- package/dist/cli/init/scaffold.d.ts +0 -1
- package/dist/cli/init/scaffold.js +0 -1
- package/dist/cli/init/sibling-versions.json +1 -1
- package/dist/cli/init/versions.d.ts +0 -1
- package/dist/cli/init/versions.js +0 -1
- package/dist/cli/init.d.ts +0 -1
- package/dist/cli/init.js +0 -1
- package/dist/cli/mcp.d.ts +9 -2
- package/dist/cli/mcp.js +14 -2
- package/dist/cli/signals.d.ts +0 -1
- package/dist/cli/signals.js +0 -1
- package/dist/cli/skill.d.ts +0 -1
- package/dist/cli/skill.js +0 -1
- package/dist/cli/telemetry.d.ts +0 -1
- package/dist/cli/telemetry.js +1 -2
- package/dist/cli/wordmark.d.ts +0 -1
- package/dist/cli/wordmark.js +0 -1
- package/dist/collect/collect.d.ts +0 -1
- package/dist/collect/collect.js +3 -2
- package/dist/collect/registry.d.ts +6 -3
- package/dist/collect/registry.js +31 -14
- package/dist/collect/select.d.ts +0 -1
- package/dist/collect/select.js +0 -1
- package/dist/config/agent.d.ts +0 -1
- package/dist/config/agent.js +0 -1
- package/dist/config/app.d.ts +0 -1
- package/dist/config/app.js +0 -1
- package/dist/config/command.d.ts +0 -1
- package/dist/config/command.js +0 -1
- package/dist/config/diagnose.d.ts +0 -1
- package/dist/config/diagnose.js +0 -1
- package/dist/config/esm-hooks.d.ts +0 -1
- package/dist/config/esm-hooks.js +0 -1
- package/dist/config/load.d.ts +0 -1
- package/dist/config/load.js +0 -1
- package/dist/config/resolve.d.ts +0 -1
- package/dist/config/resolve.js +0 -1
- package/dist/config/secrets.d.ts +0 -1
- package/dist/config/secrets.js +0 -1
- package/dist/config/targets.d.ts +0 -1
- package/dist/config/targets.js +0 -1
- package/dist/config/validate.d.ts +0 -1
- package/dist/config/validate.js +0 -1
- package/dist/engine/contract.d.ts +0 -1
- package/dist/engine/contract.js +0 -1
- package/dist/engine/index.d.ts +1 -2
- package/dist/engine/index.js +4 -4
- package/dist/engine/manifest.d.ts +0 -1
- package/dist/engine/manifest.js +0 -1
- package/dist/engine/recording.d.ts +0 -1
- package/dist/engine/recording.js +0 -1
- package/dist/engine/resolve.d.ts +0 -1
- package/dist/engine/resolve.js +0 -1
- package/dist/engine/session.d.ts +0 -1
- package/dist/engine/session.js +0 -1
- package/dist/engine/surface.d.ts +0 -1
- package/dist/engine/surface.js +0 -1
- package/dist/engine/timing.d.ts +0 -1
- package/dist/engine/timing.js +0 -1
- package/dist/expect/async.d.ts +0 -1
- package/dist/expect/async.js +99 -58
- package/dist/expect/attempt.d.ts +0 -1
- package/dist/expect/attempt.js +0 -1
- package/dist/expect/index.d.ts +0 -1
- package/dist/expect/index.js +0 -1
- package/dist/expect/poll.d.ts +0 -1
- package/dist/expect/poll.js +0 -1
- package/dist/expect/soft.d.ts +0 -1
- package/dist/expect/soft.js +0 -1
- package/dist/expect/values.d.ts +0 -1
- package/dist/expect/values.js +0 -1
- package/dist/explore/body.d.ts +0 -1
- package/dist/explore/body.js +0 -1
- package/dist/explore/executor.d.ts +0 -1
- package/dist/explore/executor.js +0 -1
- package/dist/explore/index.d.ts +0 -1
- package/dist/explore/index.js +16 -2
- package/dist/explore/plan.d.ts +0 -1
- package/dist/explore/plan.js +0 -1
- package/dist/explore/progress.d.ts +0 -1
- package/dist/explore/progress.js +0 -1
- package/dist/explore/state.d.ts +0 -1
- package/dist/explore/state.js +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.js +0 -1
- package/dist/internal/ai-trace.d.ts +0 -1
- package/dist/internal/ai-trace.js +0 -1
- package/dist/internal/atomic-write.d.ts +0 -1
- package/dist/internal/atomic-write.js +0 -1
- package/dist/internal/brands.d.ts +0 -1
- package/dist/internal/brands.js +0 -1
- package/dist/internal/debug.d.ts +0 -1
- package/dist/internal/debug.js +0 -1
- package/dist/internal/env.d.ts +0 -1
- package/dist/internal/env.js +0 -1
- package/dist/internal/errors.d.ts +0 -1
- package/dist/internal/errors.js +0 -1
- package/dist/internal/geometry.d.ts +0 -1
- package/dist/internal/geometry.js +0 -1
- package/dist/internal/git.d.ts +0 -1
- package/dist/internal/git.js +0 -1
- package/dist/internal/globs.d.ts +0 -1
- package/dist/internal/globs.js +0 -1
- package/dist/internal/ids.d.ts +0 -1
- package/dist/internal/ids.js +0 -1
- package/dist/internal/json-value.d.ts +0 -1
- package/dist/internal/json-value.js +0 -1
- package/dist/internal/keys.d.ts +0 -1
- package/dist/internal/keys.js +0 -1
- package/dist/internal/node-version.d.ts +0 -1
- package/dist/internal/node-version.js +0 -1
- package/dist/internal/objects.d.ts +0 -1
- package/dist/internal/objects.js +0 -1
- package/dist/internal/options.d.ts +0 -1
- package/dist/internal/options.js +0 -1
- package/dist/internal/package-manager.d.ts +0 -1
- package/dist/internal/package-manager.js +0 -1
- package/dist/internal/package-version.d.ts +0 -1
- package/dist/internal/package-version.js +0 -1
- package/dist/internal/paths.d.ts +0 -1
- package/dist/internal/paths.js +0 -1
- package/dist/internal/realm-slot.d.ts +0 -1
- package/dist/internal/realm-slot.js +0 -1
- package/dist/internal/recording-modes.d.ts +0 -1
- package/dist/internal/recording-modes.js +0 -1
- package/dist/internal/redact.d.ts +0 -1
- package/dist/internal/redact.js +0 -1
- package/dist/internal/regexp.d.ts +0 -1
- package/dist/internal/regexp.js +0 -1
- package/dist/internal/roles.d.ts +0 -1
- package/dist/internal/roles.js +0 -1
- package/dist/internal/skip.d.ts +0 -1
- package/dist/internal/skip.js +0 -1
- package/dist/internal/source.d.ts +0 -1
- package/dist/internal/source.js +0 -1
- package/dist/internal/standard-schema.d.ts +0 -1
- package/dist/internal/standard-schema.js +0 -1
- package/dist/internal/suggest.d.ts +0 -1
- package/dist/internal/suggest.js +0 -1
- package/dist/internal/text.d.ts +8 -1
- package/dist/internal/text.js +13 -2
- package/dist/internal/time.d.ts +0 -1
- package/dist/internal/time.js +0 -1
- package/dist/internal/urls.d.ts +0 -1
- package/dist/internal/urls.js +0 -1
- package/dist/internal/vcs.d.ts +0 -1
- package/dist/internal/vcs.js +0 -1
- package/dist/internal/zip.d.ts +0 -1
- package/dist/internal/zip.js +0 -1
- package/dist/locator/engine.d.ts +0 -1
- package/dist/locator/engine.js +0 -1
- package/dist/locator/expression.d.ts +0 -1
- package/dist/locator/expression.js +0 -1
- package/dist/locator/screen.d.ts +0 -1
- package/dist/locator/screen.js +0 -1
- package/dist/mcp/catalog.d.ts +4 -1
- package/dist/mcp/catalog.js +2 -3
- package/dist/mcp/config.d.ts +0 -1
- package/dist/mcp/config.js +0 -1
- package/dist/mcp/recording.d.ts +0 -1
- package/dist/mcp/recording.js +0 -1
- package/dist/mcp/server.d.ts +8 -1
- package/dist/mcp/server.js +8 -5
- package/dist/mcp/session.d.ts +4 -2
- package/dist/mcp/session.js +43 -21
- package/dist/mcp/sessions.d.ts +2 -1
- package/dist/mcp/sessions.js +5 -2
- package/dist/mcp/tools.d.ts +7 -6
- package/dist/mcp/tools.js +36 -11
- package/dist/mcp/usage.d.ts +61 -0
- package/dist/mcp/usage.js +73 -0
- package/dist/oauth/callback-server.d.ts +0 -1
- package/dist/oauth/callback-server.js +0 -1
- package/dist/oauth/chatgpt.d.ts +0 -1
- package/dist/oauth/chatgpt.js +0 -1
- package/dist/oauth/cli.d.ts +0 -1
- package/dist/oauth/cli.js +0 -1
- package/dist/oauth/copilot.d.ts +0 -1
- package/dist/oauth/copilot.js +0 -1
- package/dist/oauth/device-code.d.ts +0 -1
- package/dist/oauth/device-code.js +0 -1
- package/dist/oauth/errors.d.ts +0 -1
- package/dist/oauth/errors.js +0 -1
- package/dist/oauth/fetch.d.ts +0 -1
- package/dist/oauth/fetch.js +0 -1
- package/dist/oauth/grok.d.ts +0 -1
- package/dist/oauth/grok.js +0 -1
- package/dist/oauth/jwt.d.ts +0 -1
- package/dist/oauth/jwt.js +0 -1
- package/dist/oauth/login.d.ts +0 -1
- package/dist/oauth/login.js +0 -1
- package/dist/oauth/models.d.ts +0 -1
- package/dist/oauth/models.js +0 -1
- package/dist/oauth/pkce.d.ts +0 -1
- package/dist/oauth/pkce.js +0 -1
- package/dist/oauth/providers/github-copilot.d.ts +0 -1
- package/dist/oauth/providers/github-copilot.js +10 -3
- package/dist/oauth/providers/openai.d.ts +0 -1
- package/dist/oauth/providers/openai.js +1 -2
- package/dist/oauth/providers/xai.d.ts +0 -1
- package/dist/oauth/providers/xai.js +0 -1
- package/dist/oauth/providers.d.ts +0 -1
- package/dist/oauth/providers.js +0 -1
- package/dist/oauth/sse.d.ts +0 -1
- package/dist/oauth/sse.js +0 -1
- package/dist/oauth/store.d.ts +0 -1
- package/dist/oauth/store.js +0 -1
- package/dist/oauth/token-endpoint.d.ts +0 -1
- package/dist/oauth/token-endpoint.js +0 -1
- package/dist/oauth/types.d.ts +0 -1
- package/dist/oauth/types.js +0 -1
- package/dist/params.d.ts +0 -1
- package/dist/params.js +0 -1
- package/dist/report/build.d.ts +0 -1
- package/dist/report/build.js +0 -1
- package/dist/report/builtin.d.ts +0 -1
- package/dist/report/builtin.js +0 -1
- package/dist/report/code-frame.d.ts +0 -1
- package/dist/report/code-frame.js +0 -1
- package/dist/report/debug-steps.d.ts +0 -1
- package/dist/report/debug-steps.js +0 -1
- package/dist/report/explore-text.d.ts +0 -1
- package/dist/report/explore-text.js +0 -1
- package/dist/report/failure-text.d.ts +0 -1
- package/dist/report/failure-text.js +0 -1
- package/dist/report/format.d.ts +0 -1
- package/dist/report/format.js +0 -1
- package/dist/report/json.d.ts +0 -1
- package/dist/report/json.js +0 -1
- package/dist/report/junit.d.ts +0 -1
- package/dist/report/junit.js +0 -1
- package/dist/report/list-explore.d.ts +0 -1
- package/dist/report/list-explore.js +0 -1
- package/dist/report/list-model.d.ts +0 -1
- package/dist/report/list-model.js +0 -1
- package/dist/report/list-steps.d.ts +0 -1
- package/dist/report/list-steps.js +0 -1
- package/dist/report/list.d.ts +0 -1
- package/dist/report/list.js +0 -1
- package/dist/report/live-window.d.ts +0 -1
- package/dist/report/live-window.js +0 -1
- package/dist/report/markdown-text.d.ts +0 -1
- package/dist/report/markdown-text.js +0 -1
- package/dist/report/markdown.d.ts +0 -1
- package/dist/report/markdown.js +0 -1
- package/dist/report/outcome.d.ts +0 -1
- package/dist/report/outcome.js +0 -1
- package/dist/report/repeats.d.ts +0 -1
- package/dist/report/repeats.js +0 -1
- package/dist/report/running-tree.d.ts +0 -1
- package/dist/report/running-tree.js +0 -1
- package/dist/report/write.d.ts +0 -1
- package/dist/report/write.js +0 -1
- package/dist/run/app-ports.d.ts +0 -1
- package/dist/run/app-ports.js +0 -1
- package/dist/run/artifacts.d.ts +0 -1
- package/dist/run/artifacts.js +0 -1
- package/dist/run/budget.d.ts +0 -1
- package/dist/run/budget.js +0 -1
- package/dist/run/declared-processes.d.ts +0 -1
- package/dist/run/declared-processes.js +0 -1
- package/dist/run/events.d.ts +0 -1
- package/dist/run/events.js +0 -1
- package/dist/run/execute.d.ts +0 -1
- package/dist/run/execute.js +6 -5
- package/dist/run/extended-fixtures.d.ts +0 -1
- package/dist/run/extended-fixtures.js +0 -1
- package/dist/run/failure-evidence.d.ts +0 -1
- package/dist/run/failure-evidence.js +0 -1
- package/dist/run/fixture-recording.d.ts +0 -1
- package/dist/run/fixture-recording.js +0 -1
- package/dist/run/fixtures.d.ts +0 -1
- package/dist/run/fixtures.js +0 -1
- package/dist/run/in-process.d.ts +0 -1
- package/dist/run/in-process.js +0 -1
- package/dist/run/last-run.d.ts +0 -1
- package/dist/run/last-run.js +0 -1
- package/dist/run/managed-process.d.ts +0 -1
- package/dist/run/managed-process.js +0 -1
- package/dist/run/output.d.ts +0 -1
- package/dist/run/output.js +0 -1
- package/dist/run/process-pool.d.ts +0 -1
- package/dist/run/process-pool.js +0 -1
- package/dist/run/provision.d.ts +0 -1
- package/dist/run/provision.js +0 -1
- package/dist/run/realm.d.ts +2 -1
- package/dist/run/realm.js +1 -2
- package/dist/run/records.d.ts +0 -1
- package/dist/run/records.js +0 -1
- package/dist/run/retry.d.ts +0 -1
- package/dist/run/retry.js +0 -1
- package/dist/run/runner.d.ts +2 -1
- package/dist/run/runner.js +1 -2
- package/dist/run/scheduler.d.ts +0 -1
- package/dist/run/scheduler.js +0 -1
- package/dist/run/secrecy.d.ts +15 -1
- package/dist/run/secrecy.js +27 -2
- package/dist/run/serial.d.ts +0 -1
- package/dist/run/serial.js +0 -1
- package/dist/run/sessions.d.ts +0 -1
- package/dist/run/sessions.js +0 -1
- package/dist/run/standalone.d.ts +0 -1
- package/dist/run/standalone.js +3 -3
- package/dist/run/steps.d.ts +2 -3
- package/dist/run/steps.js +4 -2
- package/dist/run/trace-redaction.d.ts +0 -1
- package/dist/run/trace-redaction.js +0 -1
- package/dist/run/unit-runner.d.ts +0 -1
- package/dist/run/unit-runner.js +0 -1
- package/dist/run/units.d.ts +0 -1
- package/dist/run/units.js +0 -1
- package/dist/run/worker/entry.d.ts +0 -1
- package/dist/run/worker/entry.js +2 -3
- package/dist/run/worker/handle.d.ts +0 -1
- package/dist/run/worker/handle.js +0 -1
- package/dist/run/worker/protocol.d.ts +0 -1
- package/dist/run/worker/protocol.js +0 -1
- package/dist/run/worker/session.d.ts +0 -1
- package/dist/run/worker/session.js +0 -1
- package/dist/run/worker-models.d.ts +0 -1
- package/dist/run/worker-models.js +0 -1
- package/dist/secrets.d.ts +0 -1
- package/dist/secrets.js +0 -1
- package/dist/telemetry/checkout.d.ts +0 -1
- package/dist/telemetry/checkout.js +0 -1
- package/dist/telemetry/environment.d.ts +0 -1
- package/dist/telemetry/environment.js +0 -1
- package/dist/telemetry/events.d.ts +26 -10
- package/dist/telemetry/events.js +107 -13
- package/dist/telemetry/failure-kind.d.ts +0 -1
- package/dist/telemetry/failure-kind.js +0 -1
- package/dist/telemetry/posthog.d.ts +0 -1
- package/dist/telemetry/posthog.js +0 -1
- package/dist/telemetry/project.d.ts +0 -1
- package/dist/telemetry/project.js +0 -1
- package/dist/telemetry/store.d.ts +0 -1
- package/dist/telemetry/store.js +0 -1
- package/dist/telemetry/telemetry.d.ts +19 -8
- package/dist/telemetry/telemetry.js +26 -9
- package/dist/telemetry/token.d.ts +0 -1
- package/dist/telemetry/token.js +0 -1
- package/dist/types.d.ts +25 -23
- package/dist/types.js +0 -1
- package/docs/executors.mdx +1 -1
- package/docs/migrate/playwright.mdx +4 -1
- package/docs/mobile.mdx +40 -0
- package/docs/reference/cli.mdx +3 -1
- package/docs/reference/engine.mdx +1 -0
- package/docs/reference/expect.mdx +48 -15
- package/docs/reference/mcp.mdx +3 -0
- package/docs/reference/web.mdx +6 -2
- package/docs/security.mdx +19 -3
- package/docs/subscriptions.mdx +9 -0
- package/docs/telemetry.mdx +47 -5
- package/package.json +4 -3
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/setup.md +6 -0
- package/skills/e2e/references/writing-tests.md +11 -0
- package/dist/agent/act-validation.d.ts.map +0 -1
- package/dist/agent/act-validation.js.map +0 -1
- package/dist/agent/act.d.ts.map +0 -1
- package/dist/agent/act.js.map +0 -1
- package/dist/agent/action-dispatcher.d.ts.map +0 -1
- package/dist/agent/action-dispatcher.js.map +0 -1
- package/dist/agent/action-names.d.ts.map +0 -1
- package/dist/agent/action-names.js.map +0 -1
- package/dist/agent/actions.d.ts.map +0 -1
- package/dist/agent/actions.js.map +0 -1
- package/dist/agent/agent-brand.d.ts.map +0 -1
- package/dist/agent/agent-brand.js.map +0 -1
- package/dist/agent/ai-sdk.d.ts.map +0 -1
- package/dist/agent/ai-sdk.js.map +0 -1
- package/dist/agent/call-options.d.ts.map +0 -1
- package/dist/agent/call-options.js.map +0 -1
- package/dist/agent/default-agent.d.ts.map +0 -1
- package/dist/agent/default-agent.js.map +0 -1
- package/dist/agent/derived.d.ts.map +0 -1
- package/dist/agent/derived.js.map +0 -1
- package/dist/agent/error.d.ts.map +0 -1
- package/dist/agent/error.js.map +0 -1
- package/dist/agent/executor.d.ts.map +0 -1
- package/dist/agent/executor.js.map +0 -1
- package/dist/agent/index.d.ts.map +0 -1
- package/dist/agent/index.js.map +0 -1
- package/dist/agent/interactive-step.d.ts.map +0 -1
- package/dist/agent/interactive-step.js.map +0 -1
- package/dist/agent/invocation.d.ts.map +0 -1
- package/dist/agent/invocation.js.map +0 -1
- package/dist/agent/ledger.d.ts.map +0 -1
- package/dist/agent/ledger.js.map +0 -1
- package/dist/agent/loop-guards.d.ts.map +0 -1
- package/dist/agent/loop-guards.js.map +0 -1
- package/dist/agent/model/adapter.d.ts.map +0 -1
- package/dist/agent/model/adapter.js.map +0 -1
- package/dist/agent/model/overflow.d.ts.map +0 -1
- package/dist/agent/model/overflow.js.map +0 -1
- package/dist/agent/model/provider-hints.d.ts.map +0 -1
- package/dist/agent/model/provider-hints.js.map +0 -1
- package/dist/agent/model/schema.d.ts.map +0 -1
- package/dist/agent/model/schema.js.map +0 -1
- package/dist/agent/model/sdk.d.ts.map +0 -1
- package/dist/agent/model/sdk.js.map +0 -1
- package/dist/agent/model/stall.d.ts.map +0 -1
- package/dist/agent/model/stall.js.map +0 -1
- package/dist/agent/model/tool-choice.d.ts.map +0 -1
- package/dist/agent/model/tool-choice.js.map +0 -1
- package/dist/agent/observation-budget.d.ts.map +0 -1
- package/dist/agent/observation-budget.js.map +0 -1
- package/dist/agent/observation-feed.d.ts.map +0 -1
- package/dist/agent/observation-feed.js.map +0 -1
- package/dist/agent/observation.d.ts.map +0 -1
- package/dist/agent/observation.js.map +0 -1
- package/dist/agent/operation-queue.d.ts.map +0 -1
- package/dist/agent/operation-queue.js.map +0 -1
- package/dist/agent/phases.d.ts.map +0 -1
- package/dist/agent/phases.js.map +0 -1
- package/dist/agent/pixels.d.ts.map +0 -1
- package/dist/agent/pixels.js.map +0 -1
- package/dist/agent/point-tap.d.ts.map +0 -1
- package/dist/agent/point-tap.js.map +0 -1
- package/dist/agent/primitives.d.ts.map +0 -1
- package/dist/agent/primitives.js.map +0 -1
- package/dist/agent/prompts.d.ts.map +0 -1
- package/dist/agent/prompts.js.map +0 -1
- package/dist/agent/protocol.d.ts.map +0 -1
- package/dist/agent/protocol.js.map +0 -1
- package/dist/agent/public.d.ts.map +0 -1
- package/dist/agent/public.js.map +0 -1
- package/dist/agent/reading.d.ts.map +0 -1
- package/dist/agent/reading.js.map +0 -1
- package/dist/agent/replay.d.ts.map +0 -1
- package/dist/agent/replay.js.map +0 -1
- package/dist/agent/screen-update.d.ts.map +0 -1
- package/dist/agent/screen-update.js.map +0 -1
- package/dist/agent/scroll-target.d.ts.map +0 -1
- package/dist/agent/scroll-target.js.map +0 -1
- package/dist/agent/secrets.d.ts.map +0 -1
- package/dist/agent/secrets.js.map +0 -1
- package/dist/agent/settle-policy.d.ts.map +0 -1
- package/dist/agent/settle-policy.js.map +0 -1
- package/dist/agent/step-accounting.d.ts.map +0 -1
- package/dist/agent/step-accounting.js.map +0 -1
- package/dist/agent/step-cache.d.ts.map +0 -1
- package/dist/agent/step-cache.js.map +0 -1
- package/dist/agent/tool-loop.d.ts.map +0 -1
- package/dist/agent/tool-loop.js.map +0 -1
- package/dist/agent/tool-output.d.ts.map +0 -1
- package/dist/agent/tool-output.js.map +0 -1
- package/dist/agent/tool.d.ts.map +0 -1
- package/dist/agent/tool.js.map +0 -1
- package/dist/agent/transcript-compaction.d.ts.map +0 -1
- package/dist/agent/transcript-compaction.js.map +0 -1
- package/dist/agent/upload-paths.d.ts.map +0 -1
- package/dist/agent/upload-paths.js.map +0 -1
- package/dist/agent/usage.d.ts.map +0 -1
- package/dist/agent/usage.js.map +0 -1
- package/dist/cache/anchors.d.ts.map +0 -1
- package/dist/cache/anchors.js.map +0 -1
- package/dist/cache/context.d.ts.map +0 -1
- package/dist/cache/context.js.map +0 -1
- package/dist/cache/decide.d.ts.map +0 -1
- package/dist/cache/decide.js.map +0 -1
- package/dist/cache/identity.d.ts.map +0 -1
- package/dist/cache/identity.js.map +0 -1
- package/dist/cache/recorder.d.ts.map +0 -1
- package/dist/cache/recorder.js.map +0 -1
- package/dist/cache/relocate.d.ts.map +0 -1
- package/dist/cache/relocate.js.map +0 -1
- package/dist/cache/route.d.ts.map +0 -1
- package/dist/cache/route.js.map +0 -1
- package/dist/cache/store.d.ts.map +0 -1
- package/dist/cache/store.js.map +0 -1
- package/dist/cache/template.d.ts.map +0 -1
- package/dist/cache/template.js.map +0 -1
- package/dist/cache/trace.d.ts.map +0 -1
- package/dist/cache/trace.js.map +0 -1
- package/dist/cli/bin.d.ts.map +0 -1
- package/dist/cli/bin.js.map +0 -1
- package/dist/cli/cache.d.ts.map +0 -1
- package/dist/cli/cache.js.map +0 -1
- package/dist/cli/docs-url.d.ts.map +0 -1
- package/dist/cli/docs-url.js.map +0 -1
- package/dist/cli/feedback.d.ts.map +0 -1
- package/dist/cli/feedback.js.map +0 -1
- package/dist/cli/guide.d.ts.map +0 -1
- package/dist/cli/guide.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/init/agent-skill.d.ts.map +0 -1
- package/dist/cli/init/agent-skill.js.map +0 -1
- package/dist/cli/init/engines.d.ts.map +0 -1
- package/dist/cli/init/engines.js.map +0 -1
- package/dist/cli/init/gateways.d.ts.map +0 -1
- package/dist/cli/init/gateways.js.map +0 -1
- package/dist/cli/init/mcp-config.d.ts.map +0 -1
- package/dist/cli/init/mcp-config.js.map +0 -1
- package/dist/cli/init/package.d.ts.map +0 -1
- package/dist/cli/init/package.js.map +0 -1
- package/dist/cli/init/scaffold.d.ts.map +0 -1
- package/dist/cli/init/scaffold.js.map +0 -1
- package/dist/cli/init/versions.d.ts.map +0 -1
- package/dist/cli/init/versions.js.map +0 -1
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/init.js.map +0 -1
- package/dist/cli/mcp.d.ts.map +0 -1
- package/dist/cli/mcp.js.map +0 -1
- package/dist/cli/signals.d.ts.map +0 -1
- package/dist/cli/signals.js.map +0 -1
- package/dist/cli/skill.d.ts.map +0 -1
- package/dist/cli/skill.js.map +0 -1
- package/dist/cli/telemetry.d.ts.map +0 -1
- package/dist/cli/telemetry.js.map +0 -1
- package/dist/cli/wordmark.d.ts.map +0 -1
- package/dist/cli/wordmark.js.map +0 -1
- package/dist/collect/collect.d.ts.map +0 -1
- package/dist/collect/collect.js.map +0 -1
- package/dist/collect/registry.d.ts.map +0 -1
- package/dist/collect/registry.js.map +0 -1
- package/dist/collect/select.d.ts.map +0 -1
- package/dist/collect/select.js.map +0 -1
- package/dist/config/agent.d.ts.map +0 -1
- package/dist/config/agent.js.map +0 -1
- package/dist/config/app.d.ts.map +0 -1
- package/dist/config/app.js.map +0 -1
- package/dist/config/command.d.ts.map +0 -1
- package/dist/config/command.js.map +0 -1
- package/dist/config/diagnose.d.ts.map +0 -1
- package/dist/config/diagnose.js.map +0 -1
- package/dist/config/esm-hooks.d.ts.map +0 -1
- package/dist/config/esm-hooks.js.map +0 -1
- package/dist/config/load.d.ts.map +0 -1
- package/dist/config/load.js.map +0 -1
- package/dist/config/resolve.d.ts.map +0 -1
- package/dist/config/resolve.js.map +0 -1
- package/dist/config/secrets.d.ts.map +0 -1
- package/dist/config/secrets.js.map +0 -1
- package/dist/config/targets.d.ts.map +0 -1
- package/dist/config/targets.js.map +0 -1
- package/dist/config/validate.d.ts.map +0 -1
- package/dist/config/validate.js.map +0 -1
- package/dist/engine/contract.d.ts.map +0 -1
- package/dist/engine/contract.js.map +0 -1
- package/dist/engine/index.d.ts.map +0 -1
- package/dist/engine/index.js.map +0 -1
- package/dist/engine/manifest.d.ts.map +0 -1
- package/dist/engine/manifest.js.map +0 -1
- package/dist/engine/recording.d.ts.map +0 -1
- package/dist/engine/recording.js.map +0 -1
- package/dist/engine/resolve.d.ts.map +0 -1
- package/dist/engine/resolve.js.map +0 -1
- package/dist/engine/session.d.ts.map +0 -1
- package/dist/engine/session.js.map +0 -1
- package/dist/engine/surface.d.ts.map +0 -1
- package/dist/engine/surface.js.map +0 -1
- package/dist/engine/timing.d.ts.map +0 -1
- package/dist/engine/timing.js.map +0 -1
- package/dist/expect/async.d.ts.map +0 -1
- package/dist/expect/async.js.map +0 -1
- package/dist/expect/attempt.d.ts.map +0 -1
- package/dist/expect/attempt.js.map +0 -1
- package/dist/expect/index.d.ts.map +0 -1
- package/dist/expect/index.js.map +0 -1
- package/dist/expect/poll.d.ts.map +0 -1
- package/dist/expect/poll.js.map +0 -1
- package/dist/expect/soft.d.ts.map +0 -1
- package/dist/expect/soft.js.map +0 -1
- package/dist/expect/values.d.ts.map +0 -1
- package/dist/expect/values.js.map +0 -1
- package/dist/explore/body.d.ts.map +0 -1
- package/dist/explore/body.js.map +0 -1
- package/dist/explore/executor.d.ts.map +0 -1
- package/dist/explore/executor.js.map +0 -1
- package/dist/explore/index.d.ts.map +0 -1
- package/dist/explore/index.js.map +0 -1
- package/dist/explore/plan.d.ts.map +0 -1
- package/dist/explore/plan.js.map +0 -1
- package/dist/explore/progress.d.ts.map +0 -1
- package/dist/explore/progress.js.map +0 -1
- package/dist/explore/state.d.ts.map +0 -1
- package/dist/explore/state.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/internal/ai-trace.d.ts.map +0 -1
- package/dist/internal/ai-trace.js.map +0 -1
- package/dist/internal/atomic-write.d.ts.map +0 -1
- package/dist/internal/atomic-write.js.map +0 -1
- package/dist/internal/brands.d.ts.map +0 -1
- package/dist/internal/brands.js.map +0 -1
- package/dist/internal/debug.d.ts.map +0 -1
- package/dist/internal/debug.js.map +0 -1
- package/dist/internal/env.d.ts.map +0 -1
- package/dist/internal/env.js.map +0 -1
- package/dist/internal/errors.d.ts.map +0 -1
- package/dist/internal/errors.js.map +0 -1
- package/dist/internal/geometry.d.ts.map +0 -1
- package/dist/internal/geometry.js.map +0 -1
- package/dist/internal/git.d.ts.map +0 -1
- package/dist/internal/git.js.map +0 -1
- package/dist/internal/globs.d.ts.map +0 -1
- package/dist/internal/globs.js.map +0 -1
- package/dist/internal/ids.d.ts.map +0 -1
- package/dist/internal/ids.js.map +0 -1
- package/dist/internal/json-value.d.ts.map +0 -1
- package/dist/internal/json-value.js.map +0 -1
- package/dist/internal/keys.d.ts.map +0 -1
- package/dist/internal/keys.js.map +0 -1
- package/dist/internal/node-version.d.ts.map +0 -1
- package/dist/internal/node-version.js.map +0 -1
- package/dist/internal/objects.d.ts.map +0 -1
- package/dist/internal/objects.js.map +0 -1
- package/dist/internal/options.d.ts.map +0 -1
- package/dist/internal/options.js.map +0 -1
- package/dist/internal/package-manager.d.ts.map +0 -1
- package/dist/internal/package-manager.js.map +0 -1
- package/dist/internal/package-version.d.ts.map +0 -1
- package/dist/internal/package-version.js.map +0 -1
- package/dist/internal/paths.d.ts.map +0 -1
- package/dist/internal/paths.js.map +0 -1
- package/dist/internal/realm-slot.d.ts.map +0 -1
- package/dist/internal/realm-slot.js.map +0 -1
- package/dist/internal/recording-modes.d.ts.map +0 -1
- package/dist/internal/recording-modes.js.map +0 -1
- package/dist/internal/redact.d.ts.map +0 -1
- package/dist/internal/redact.js.map +0 -1
- package/dist/internal/regexp.d.ts.map +0 -1
- package/dist/internal/regexp.js.map +0 -1
- package/dist/internal/roles.d.ts.map +0 -1
- package/dist/internal/roles.js.map +0 -1
- package/dist/internal/skip.d.ts.map +0 -1
- package/dist/internal/skip.js.map +0 -1
- package/dist/internal/source.d.ts.map +0 -1
- package/dist/internal/source.js.map +0 -1
- package/dist/internal/standard-schema.d.ts.map +0 -1
- package/dist/internal/standard-schema.js.map +0 -1
- package/dist/internal/suggest.d.ts.map +0 -1
- package/dist/internal/suggest.js.map +0 -1
- package/dist/internal/text.d.ts.map +0 -1
- package/dist/internal/text.js.map +0 -1
- package/dist/internal/time.d.ts.map +0 -1
- package/dist/internal/time.js.map +0 -1
- package/dist/internal/urls.d.ts.map +0 -1
- package/dist/internal/urls.js.map +0 -1
- package/dist/internal/vcs.d.ts.map +0 -1
- package/dist/internal/vcs.js.map +0 -1
- package/dist/internal/zip.d.ts.map +0 -1
- package/dist/internal/zip.js.map +0 -1
- package/dist/locator/engine.d.ts.map +0 -1
- package/dist/locator/engine.js.map +0 -1
- package/dist/locator/expression.d.ts.map +0 -1
- package/dist/locator/expression.js.map +0 -1
- package/dist/locator/screen.d.ts.map +0 -1
- package/dist/locator/screen.js.map +0 -1
- package/dist/mcp/catalog.d.ts.map +0 -1
- package/dist/mcp/catalog.js.map +0 -1
- package/dist/mcp/config.d.ts.map +0 -1
- package/dist/mcp/config.js.map +0 -1
- package/dist/mcp/recording.d.ts.map +0 -1
- package/dist/mcp/recording.js.map +0 -1
- package/dist/mcp/server.d.ts.map +0 -1
- package/dist/mcp/server.js.map +0 -1
- package/dist/mcp/session.d.ts.map +0 -1
- package/dist/mcp/session.js.map +0 -1
- package/dist/mcp/sessions.d.ts.map +0 -1
- package/dist/mcp/sessions.js.map +0 -1
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js.map +0 -1
- package/dist/oauth/callback-server.d.ts.map +0 -1
- package/dist/oauth/callback-server.js.map +0 -1
- package/dist/oauth/chatgpt.d.ts.map +0 -1
- package/dist/oauth/chatgpt.js.map +0 -1
- package/dist/oauth/cli.d.ts.map +0 -1
- package/dist/oauth/cli.js.map +0 -1
- package/dist/oauth/copilot.d.ts.map +0 -1
- package/dist/oauth/copilot.js.map +0 -1
- package/dist/oauth/device-code.d.ts.map +0 -1
- package/dist/oauth/device-code.js.map +0 -1
- package/dist/oauth/errors.d.ts.map +0 -1
- package/dist/oauth/errors.js.map +0 -1
- package/dist/oauth/fetch.d.ts.map +0 -1
- package/dist/oauth/fetch.js.map +0 -1
- package/dist/oauth/grok.d.ts.map +0 -1
- package/dist/oauth/grok.js.map +0 -1
- package/dist/oauth/jwt.d.ts.map +0 -1
- package/dist/oauth/jwt.js.map +0 -1
- package/dist/oauth/login.d.ts.map +0 -1
- package/dist/oauth/login.js.map +0 -1
- package/dist/oauth/models.d.ts.map +0 -1
- package/dist/oauth/models.js.map +0 -1
- package/dist/oauth/pkce.d.ts.map +0 -1
- package/dist/oauth/pkce.js.map +0 -1
- package/dist/oauth/providers/github-copilot.d.ts.map +0 -1
- package/dist/oauth/providers/github-copilot.js.map +0 -1
- package/dist/oauth/providers/openai.d.ts.map +0 -1
- package/dist/oauth/providers/openai.js.map +0 -1
- package/dist/oauth/providers/xai.d.ts.map +0 -1
- package/dist/oauth/providers/xai.js.map +0 -1
- package/dist/oauth/providers.d.ts.map +0 -1
- package/dist/oauth/providers.js.map +0 -1
- package/dist/oauth/sse.d.ts.map +0 -1
- package/dist/oauth/sse.js.map +0 -1
- package/dist/oauth/store.d.ts.map +0 -1
- package/dist/oauth/store.js.map +0 -1
- package/dist/oauth/token-endpoint.d.ts.map +0 -1
- package/dist/oauth/token-endpoint.js.map +0 -1
- package/dist/oauth/types.d.ts.map +0 -1
- package/dist/oauth/types.js.map +0 -1
- package/dist/params.d.ts.map +0 -1
- package/dist/params.js.map +0 -1
- package/dist/report/build.d.ts.map +0 -1
- package/dist/report/build.js.map +0 -1
- package/dist/report/builtin.d.ts.map +0 -1
- package/dist/report/builtin.js.map +0 -1
- package/dist/report/code-frame.d.ts.map +0 -1
- package/dist/report/code-frame.js.map +0 -1
- package/dist/report/debug-steps.d.ts.map +0 -1
- package/dist/report/debug-steps.js.map +0 -1
- package/dist/report/explore-text.d.ts.map +0 -1
- package/dist/report/explore-text.js.map +0 -1
- package/dist/report/failure-text.d.ts.map +0 -1
- package/dist/report/failure-text.js.map +0 -1
- package/dist/report/format.d.ts.map +0 -1
- package/dist/report/format.js.map +0 -1
- package/dist/report/json.d.ts.map +0 -1
- package/dist/report/json.js.map +0 -1
- package/dist/report/junit.d.ts.map +0 -1
- package/dist/report/junit.js.map +0 -1
- package/dist/report/list-explore.d.ts.map +0 -1
- package/dist/report/list-explore.js.map +0 -1
- package/dist/report/list-model.d.ts.map +0 -1
- package/dist/report/list-model.js.map +0 -1
- package/dist/report/list-steps.d.ts.map +0 -1
- package/dist/report/list-steps.js.map +0 -1
- package/dist/report/list.d.ts.map +0 -1
- package/dist/report/list.js.map +0 -1
- package/dist/report/live-window.d.ts.map +0 -1
- package/dist/report/live-window.js.map +0 -1
- package/dist/report/markdown-text.d.ts.map +0 -1
- package/dist/report/markdown-text.js.map +0 -1
- package/dist/report/markdown.d.ts.map +0 -1
- package/dist/report/markdown.js.map +0 -1
- package/dist/report/outcome.d.ts.map +0 -1
- package/dist/report/outcome.js.map +0 -1
- package/dist/report/repeats.d.ts.map +0 -1
- package/dist/report/repeats.js.map +0 -1
- package/dist/report/running-tree.d.ts.map +0 -1
- package/dist/report/running-tree.js.map +0 -1
- package/dist/report/write.d.ts.map +0 -1
- package/dist/report/write.js.map +0 -1
- package/dist/run/app-ports.d.ts.map +0 -1
- package/dist/run/app-ports.js.map +0 -1
- package/dist/run/artifacts.d.ts.map +0 -1
- package/dist/run/artifacts.js.map +0 -1
- package/dist/run/budget.d.ts.map +0 -1
- package/dist/run/budget.js.map +0 -1
- package/dist/run/declared-processes.d.ts.map +0 -1
- package/dist/run/declared-processes.js.map +0 -1
- package/dist/run/events.d.ts.map +0 -1
- package/dist/run/events.js.map +0 -1
- package/dist/run/execute.d.ts.map +0 -1
- package/dist/run/execute.js.map +0 -1
- package/dist/run/extended-fixtures.d.ts.map +0 -1
- package/dist/run/extended-fixtures.js.map +0 -1
- package/dist/run/failure-evidence.d.ts.map +0 -1
- package/dist/run/failure-evidence.js.map +0 -1
- package/dist/run/fixture-recording.d.ts.map +0 -1
- package/dist/run/fixture-recording.js.map +0 -1
- package/dist/run/fixtures.d.ts.map +0 -1
- package/dist/run/fixtures.js.map +0 -1
- package/dist/run/in-process.d.ts.map +0 -1
- package/dist/run/in-process.js.map +0 -1
- package/dist/run/last-run.d.ts.map +0 -1
- package/dist/run/last-run.js.map +0 -1
- package/dist/run/managed-process.d.ts.map +0 -1
- package/dist/run/managed-process.js.map +0 -1
- package/dist/run/output.d.ts.map +0 -1
- package/dist/run/output.js.map +0 -1
- package/dist/run/process-pool.d.ts.map +0 -1
- package/dist/run/process-pool.js.map +0 -1
- package/dist/run/provision.d.ts.map +0 -1
- package/dist/run/provision.js.map +0 -1
- package/dist/run/realm.d.ts.map +0 -1
- package/dist/run/realm.js.map +0 -1
- package/dist/run/records.d.ts.map +0 -1
- package/dist/run/records.js.map +0 -1
- package/dist/run/retry.d.ts.map +0 -1
- package/dist/run/retry.js.map +0 -1
- package/dist/run/runner.d.ts.map +0 -1
- package/dist/run/runner.js.map +0 -1
- package/dist/run/scheduler.d.ts.map +0 -1
- package/dist/run/scheduler.js.map +0 -1
- package/dist/run/secrecy.d.ts.map +0 -1
- package/dist/run/secrecy.js.map +0 -1
- package/dist/run/serial.d.ts.map +0 -1
- package/dist/run/serial.js.map +0 -1
- package/dist/run/sessions.d.ts.map +0 -1
- package/dist/run/sessions.js.map +0 -1
- package/dist/run/standalone.d.ts.map +0 -1
- package/dist/run/standalone.js.map +0 -1
- package/dist/run/steps.d.ts.map +0 -1
- package/dist/run/steps.js.map +0 -1
- package/dist/run/trace-redaction.d.ts.map +0 -1
- package/dist/run/trace-redaction.js.map +0 -1
- package/dist/run/unit-runner.d.ts.map +0 -1
- package/dist/run/unit-runner.js.map +0 -1
- package/dist/run/units.d.ts.map +0 -1
- package/dist/run/units.js.map +0 -1
- package/dist/run/worker/entry.d.ts.map +0 -1
- package/dist/run/worker/entry.js.map +0 -1
- package/dist/run/worker/handle.d.ts.map +0 -1
- package/dist/run/worker/handle.js.map +0 -1
- package/dist/run/worker/protocol.d.ts.map +0 -1
- package/dist/run/worker/protocol.js.map +0 -1
- package/dist/run/worker/session.d.ts.map +0 -1
- package/dist/run/worker/session.js.map +0 -1
- package/dist/run/worker-models.d.ts.map +0 -1
- package/dist/run/worker-models.js.map +0 -1
- package/dist/secrets.d.ts.map +0 -1
- package/dist/secrets.js.map +0 -1
- package/dist/telemetry/checkout.d.ts.map +0 -1
- package/dist/telemetry/checkout.js.map +0 -1
- package/dist/telemetry/environment.d.ts.map +0 -1
- package/dist/telemetry/environment.js.map +0 -1
- package/dist/telemetry/events.d.ts.map +0 -1
- package/dist/telemetry/events.js.map +0 -1
- package/dist/telemetry/failure-kind.d.ts.map +0 -1
- package/dist/telemetry/failure-kind.js.map +0 -1
- package/dist/telemetry/posthog.d.ts.map +0 -1
- package/dist/telemetry/posthog.js.map +0 -1
- package/dist/telemetry/project.d.ts.map +0 -1
- package/dist/telemetry/project.js.map +0 -1
- package/dist/telemetry/store.d.ts.map +0 -1
- package/dist/telemetry/store.js.map +0 -1
- package/dist/telemetry/telemetry.d.ts.map +0 -1
- package/dist/telemetry/telemetry.js.map +0 -1
- package/dist/telemetry/token.d.ts.map +0 -1
- package/dist/telemetry/token.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
package/dist/telemetry/events.js
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* The events e2e sends, built from facts the CLI already holds. Every
|
|
3
3
|
* property is a count, a duration, a version, or a short token. The builders
|
|
4
|
-
* copy no title, file, URL, instruction, message, or stack out of the report
|
|
5
|
-
* the one look at a message, in
|
|
6
|
-
* closed list.
|
|
7
|
-
* The names a project declares for its engines, platforms, and model
|
|
8
|
-
*
|
|
9
|
-
* a name shaped like a path, a URL,
|
|
10
|
-
* error code that is not an upper-case
|
|
11
|
-
* code, folds to `OTHER`. The unit tests
|
|
4
|
+
* copy no title, file, URL, instruction, message, or stack out of the report,
|
|
5
|
+
* the config, or an MCP session; the one look at a message, in
|
|
6
|
+
* `failure-kind.ts`, yields a token from a closed list.
|
|
7
|
+
* The names a project declares for its engines, platforms, and model, and the
|
|
8
|
+
* name an MCP client gives itself, pass through when they are plain tokens,
|
|
9
|
+
* so a homegrown engine counts as itself; a name shaped like a path, a URL,
|
|
10
|
+
* or a sentence folds to `other`, and an error code that is not an upper-case
|
|
11
|
+
* token, the shape of every runner code, folds to `OTHER`. The unit tests
|
|
12
|
+
* hold the payload to that promise.
|
|
12
13
|
*/
|
|
13
|
-
import { GRAMMAR_ACTION_NAMES, PROJECT_TOOL_EVENT_PREFIX } from '../agent/action-names.js';
|
|
14
|
+
import { GRAMMAR_ACTION_NAMES, GRAMMAR_TOOL_NAMES, PROJECT_TOOL_EVENT_PREFIX } from '../agent/action-names.js';
|
|
15
|
+
import { modelLabel } from '../config/agent.js';
|
|
14
16
|
import { STEP_KINDS } from '../run/steps.js';
|
|
15
17
|
import { failureKind } from './failure-kind.js';
|
|
16
18
|
import { errorCodeToken, plainToken } from './token.js';
|
|
@@ -20,6 +22,8 @@ export const EVENT_CLI_SESSION = 'e2e_cli_session';
|
|
|
20
22
|
export const EVENT_RUN_COMPLETED = 'e2e_run_completed';
|
|
21
23
|
/** One per `e2e init`, however it ended: what was chosen and whether anything was written. */
|
|
22
24
|
export const EVENT_INIT_COMPLETED = 'e2e_init_completed';
|
|
25
|
+
/** One per `open_session` an `e2e mcp` server served, sent when the session closes or its open fails. */
|
|
26
|
+
export const EVENT_MCP_SESSION = 'e2e_mcp_session';
|
|
23
27
|
/** The session's error code for a flag or argument commander rejected; no runner code exists for it. */
|
|
24
28
|
export const USAGE_ERROR_CODE = 'CLI_USAGE';
|
|
25
29
|
const SEMVER = /^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z.-]+)?$/u;
|
|
@@ -80,6 +84,10 @@ function engineLabel(engine) {
|
|
|
80
84
|
function unique(values) {
|
|
81
85
|
return [...new Set(values)].toSorted();
|
|
82
86
|
}
|
|
87
|
+
/** Counts keyed in sorted order, so equal counts serialize equally. */
|
|
88
|
+
function sortedCounts(counts) {
|
|
89
|
+
return Object.fromEntries([...counts].toSorted());
|
|
90
|
+
}
|
|
83
91
|
/** Every scope the run recorded, across plain results and serial groups. */
|
|
84
92
|
function* scopes(report) {
|
|
85
93
|
for (const result of report.run.results)
|
|
@@ -117,7 +125,7 @@ function agentActions(steps) {
|
|
|
117
125
|
counts.set(name, (counts.get(name) ?? 0) + 1);
|
|
118
126
|
}
|
|
119
127
|
}
|
|
120
|
-
return
|
|
128
|
+
return sortedCounts(counts);
|
|
121
129
|
}
|
|
122
130
|
/** Whether anyone priced the model calls: a gateway that did, nobody, or no calls to price. */
|
|
123
131
|
function costSource(usage, modelCalls) {
|
|
@@ -129,7 +137,50 @@ function durationMs(startedAt, finishedAt) {
|
|
|
129
137
|
const duration = Date.parse(finishedAt) - Date.parse(startedAt);
|
|
130
138
|
return Number.isFinite(duration) ? Math.max(0, duration) : null;
|
|
131
139
|
}
|
|
132
|
-
|
|
140
|
+
/**
|
|
141
|
+
* Which config features a run used: counts, booleans, and the runner's own
|
|
142
|
+
* option ids, never a name, a path, or a value the project wrote.
|
|
143
|
+
*/
|
|
144
|
+
function configFeatures(config) {
|
|
145
|
+
const agents = [...config.agents.values()];
|
|
146
|
+
return {
|
|
147
|
+
config_workers: config.workers,
|
|
148
|
+
config_retries: config.retries,
|
|
149
|
+
config_agents: config.agents.size,
|
|
150
|
+
config_custom_executor: agents.some((agent) => agent.executor !== undefined),
|
|
151
|
+
config_separate_judge: agents.some((agent) => agent.judge !== undefined && (agent.model === undefined || modelLabel(agent.judge) !== modelLabel(agent.model))),
|
|
152
|
+
config_project_tools: new Set(agents.flatMap((agent) => Object.keys(agent.tools))).size,
|
|
153
|
+
config_credentials: config.credentials.size,
|
|
154
|
+
config_secrets: config.secrets.size,
|
|
155
|
+
config_cache_mode: config.cache.mode,
|
|
156
|
+
config_cache_store: config.cache.store === undefined ? 'file' : 'custom',
|
|
157
|
+
config_cache_strict: config.cache.strict !== false,
|
|
158
|
+
config_reporters: unique(config.reporters),
|
|
159
|
+
config_custom_reporters: config.customReporters.length,
|
|
160
|
+
config_artifact_store: config.artifactStore !== undefined,
|
|
161
|
+
config_trace_modes: unique(config.targets.map((target) => target.trace.mode)),
|
|
162
|
+
config_video_modes: unique(config.targets.map((target) => target.video.mode)),
|
|
163
|
+
config_app_commands: config.targets.filter((target) => target.app.command !== undefined).length,
|
|
164
|
+
config_environments: unique(config.targets.map((target) => target.app.environment)),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
const EXPLORE_STEP_STATUSES = ['passed', 'failed', 'blocked', 'exhausted'];
|
|
168
|
+
const SEVERITIES = [1, 2, 3, 4, 5];
|
|
169
|
+
/** What `e2e explore` was given and found, by count: never the goal, a step's charter, or a finding's words. */
|
|
170
|
+
function exploreProperties(explore) {
|
|
171
|
+
return {
|
|
172
|
+
explore_ended: explore.ended,
|
|
173
|
+
explore_max_steps: explore.budgets.maxSteps,
|
|
174
|
+
explore_timeout_ms: explore.budgets.timeoutMs,
|
|
175
|
+
explore_steps: explore.steps.length,
|
|
176
|
+
...Object.fromEntries(EXPLORE_STEP_STATUSES.map((status) => [`explore_steps_${status}`, explore.steps.filter((step) => step.status === status).length])),
|
|
177
|
+
explore_assessed: explore.summary !== undefined,
|
|
178
|
+
explore_issues: explore.findings.filter((finding) => finding.kind === 'issue').length,
|
|
179
|
+
explore_warnings: explore.findings.filter((finding) => finding.kind === 'warning').length,
|
|
180
|
+
explore_findings_by_severity: Object.fromEntries(SEVERITIES.map((severity) => [String(severity), explore.findings.filter((finding) => finding.severity === severity).length])),
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
export function runCompletedEvent(report, context) {
|
|
133
184
|
const { run } = report;
|
|
134
185
|
const recorded = [...scopes(report)];
|
|
135
186
|
const steps = recorded.flatMap((scope) => scope.steps ?? []);
|
|
@@ -144,10 +195,11 @@ export function runCompletedEvent(report, flags) {
|
|
|
144
195
|
name: EVENT_RUN_COMPLETED,
|
|
145
196
|
at: run.finishedAt,
|
|
146
197
|
properties: {
|
|
198
|
+
command: context.command,
|
|
147
199
|
status: run.status,
|
|
148
200
|
exit_code: run.exitCode,
|
|
149
201
|
duration_ms: durationMs(run.startedAt, run.finishedAt),
|
|
150
|
-
flags: [...flags],
|
|
202
|
+
flags: [...context.flags],
|
|
151
203
|
tests_discovered: run.summary.discovered,
|
|
152
204
|
tests_selected: run.summary.selected,
|
|
153
205
|
tests_executed: run.summary.executed,
|
|
@@ -180,7 +232,49 @@ export function runCompletedEvent(report, flags) {
|
|
|
180
232
|
primary_error_code: primary === undefined ? null : errorCodeToken(primary.code),
|
|
181
233
|
error_codes: unique(errors.map((error) => errorCodeToken(error.code))).slice(0, MAX_ERROR_CODES),
|
|
182
234
|
error_kinds: unique(errors.flatMap(failureKind)).slice(0, MAX_ERROR_CODES),
|
|
235
|
+
// A run whose config never loaded has no features to report.
|
|
236
|
+
...(context.config === undefined ? {} : configFeatures(context.config)),
|
|
237
|
+
...(run.explore === undefined ? {} : exploreProperties(run.explore)),
|
|
238
|
+
},
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* The catalog tools an MCP session serves itself, by name: the grammar and
|
|
243
|
+
* the session's own (`createSessionCatalog`). A project's tools arrive
|
|
244
|
+
* counted together; any name outside this set folds to `other`.
|
|
245
|
+
*/
|
|
246
|
+
const SESSION_TOOLS = new Set([...GRAMMAR_TOOL_NAMES, 'locate', 'start_recording', 'stop_recording']);
|
|
247
|
+
/** One MCP session: the client, the target's platform and engine, how it ended, and its calls by the runner's tool names. */
|
|
248
|
+
export function mcpSessionEvent(summary, client) {
|
|
249
|
+
const calls = new Map();
|
|
250
|
+
for (const [name, count] of summary.toolCalls) {
|
|
251
|
+
const key = SESSION_TOOLS.has(name) ? name : 'other';
|
|
252
|
+
calls.set(key, (calls.get(key) ?? 0) + count);
|
|
253
|
+
}
|
|
254
|
+
if (summary.projectToolCalls > 0)
|
|
255
|
+
calls.set('tool', summary.projectToolCalls);
|
|
256
|
+
const codes = new Map();
|
|
257
|
+
for (const [code, count] of summary.errorCodes) {
|
|
258
|
+
const key = errorCodeToken(code);
|
|
259
|
+
codes.set(key, (codes.get(key) ?? 0) + count);
|
|
260
|
+
}
|
|
261
|
+
return {
|
|
262
|
+
name: EVENT_MCP_SESSION,
|
|
263
|
+
properties: {
|
|
264
|
+
client: client === undefined ? null : plainToken(client.name),
|
|
265
|
+
client_version: client === undefined ? null : plainToken(client.version),
|
|
266
|
+
outcome: summary.outcome,
|
|
267
|
+
ended_by: summary.endedBy ?? null,
|
|
268
|
+
error_code: summary.openErrorCode === undefined ? null : errorCodeToken(summary.openErrorCode),
|
|
269
|
+
platform: summary.platform === undefined ? null : plainToken(summary.platform),
|
|
270
|
+
engine: summary.engine === undefined ? null : engineLabel(summary.engine),
|
|
271
|
+
headed: summary.headed,
|
|
272
|
+
duration_ms: Math.max(0, Math.round(summary.durationMs)),
|
|
273
|
+
sessions_open: summary.concurrent,
|
|
274
|
+
calls_total: [...calls.values()].reduce((total, count) => total + count, 0),
|
|
275
|
+
calls_failed: summary.failedCalls,
|
|
276
|
+
calls: sortedCounts(calls),
|
|
277
|
+
error_codes: sortedCounts(new Map([...codes].toSorted().slice(0, MAX_ERROR_CODES))),
|
|
183
278
|
},
|
|
184
279
|
};
|
|
185
280
|
}
|
|
186
|
-
//# sourceMappingURL=events.js.map
|
|
@@ -13,4 +13,3 @@
|
|
|
13
13
|
import type { ReportError } from '../report/build.ts';
|
|
14
14
|
/** `CODE:kind` for an error whose code only says where it surfaced; nothing for every other code. */
|
|
15
15
|
export declare function failureKind(error: ReportError): string[];
|
|
16
|
-
//# sourceMappingURL=failure-kind.d.ts.map
|
package/dist/telemetry/store.js
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* One instance lives for one CLI invocation. Commands hand it events; at the
|
|
5
5
|
* end of the invocation `flush` sends them in a single bounded request, so a
|
|
6
6
|
* command never waits on telemetry for more than the flush budget and never
|
|
7
|
-
* fails because of it.
|
|
8
|
-
*
|
|
7
|
+
* fails because of it. A long-lived command (`e2e mcp`) sends what it has
|
|
8
|
+
* queued as it goes with `sendQueued`, so a client that kills it loses only
|
|
9
|
+
* what was still in progress. Telemetry is a CLI concern only: the runner
|
|
10
|
+
* never constructs this class.
|
|
9
11
|
*
|
|
10
12
|
* Off means off at every step. `E2E_TELEMETRY_DISABLED`, `DO_NOT_TRACK`, a
|
|
11
13
|
* source checkout of the repository, an `e2e telemetry disable`, or a
|
|
@@ -26,7 +28,7 @@
|
|
|
26
28
|
import { type TelemetryEvent } from './events.ts';
|
|
27
29
|
import { anonymousProjectId } from './project.ts';
|
|
28
30
|
/** Bumped when what is collected changes enough that the notice must show again. */
|
|
29
|
-
export declare const NOTICE_VERSION =
|
|
31
|
+
export declare const NOTICE_VERSION = 3;
|
|
30
32
|
export type TelemetryDisabledBy = 'E2E_TELEMETRY_DISABLED' | 'DO_NOT_TRACK' | 'checkout' | 'preference' | 'store';
|
|
31
33
|
export interface TelemetryOptions {
|
|
32
34
|
/** The e2e version, sent with every event. */
|
|
@@ -66,6 +68,8 @@ export declare class Telemetry {
|
|
|
66
68
|
private command;
|
|
67
69
|
private failure;
|
|
68
70
|
private exitCode;
|
|
71
|
+
/** Sends `sendQueued` started that have not settled; the flush waits for them. */
|
|
72
|
+
private readonly sending;
|
|
69
73
|
constructor(options: TelemetryOptions);
|
|
70
74
|
/** Opened on first use, so `--version` and `--help` never touch the disk; undefined when the file cannot exist. */
|
|
71
75
|
private store;
|
|
@@ -117,11 +121,18 @@ export declare class Telemetry {
|
|
|
117
121
|
/** The session event, first in the batch; absent for an invocation that never reached a command. */
|
|
118
122
|
private sessionEvent;
|
|
119
123
|
/**
|
|
120
|
-
* Sends everything queued in one request, or prints it under debug
|
|
121
|
-
*
|
|
122
|
-
*
|
|
123
|
-
* telemetry.
|
|
124
|
+
* Sends everything queued in one request, or prints it under debug, and
|
|
125
|
+
* waits for the sends `sendQueued` started. One deadline covers the
|
|
126
|
+
* project lookup still running and the request; a lost batch is the
|
|
127
|
+
* accepted cost of a command that never waits on telemetry.
|
|
124
128
|
*/
|
|
125
129
|
flush(maxWaitMs?: number): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Sends what is queued now, without the session event, which only the
|
|
132
|
+
* flush at the end can complete. For a command that runs until its client
|
|
133
|
+
* goes away; the caller need not wait, the flush does.
|
|
134
|
+
*/
|
|
135
|
+
sendQueued(maxWaitMs?: number): Promise<void>;
|
|
136
|
+
/** Sends `events` in one bounded request, or prints them under debug; nothing when off. */
|
|
137
|
+
private send;
|
|
126
138
|
}
|
|
127
|
-
//# sourceMappingURL=telemetry.d.ts.map
|
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
* One instance lives for one CLI invocation. Commands hand it events; at the
|
|
5
5
|
* end of the invocation `flush` sends them in a single bounded request, so a
|
|
6
6
|
* command never waits on telemetry for more than the flush budget and never
|
|
7
|
-
* fails because of it.
|
|
8
|
-
*
|
|
7
|
+
* fails because of it. A long-lived command (`e2e mcp`) sends what it has
|
|
8
|
+
* queued as it goes with `sendQueued`, so a client that kills it loses only
|
|
9
|
+
* what was still in progress. Telemetry is a CLI concern only: the runner
|
|
10
|
+
* never constructs this class.
|
|
9
11
|
*
|
|
10
12
|
* Off means off at every step. `E2E_TELEMETRY_DISABLED`, `DO_NOT_TRACK`, a
|
|
11
13
|
* source checkout of the repository, an `e2e telemetry disable`, or a
|
|
@@ -34,13 +36,13 @@ import { postBatch } from './posthog.js';
|
|
|
34
36
|
import { anonymousProjectId } from './project.js';
|
|
35
37
|
import { preferencesPath, TelemetryStore, telemetryConfigDir } from './store.js';
|
|
36
38
|
/** Bumped when what is collected changes enough that the notice must show again. */
|
|
37
|
-
export const NOTICE_VERSION =
|
|
39
|
+
export const NOTICE_VERSION = 3;
|
|
38
40
|
/** The longest a flush may hold the process; the project lookup and the request share it. */
|
|
39
41
|
const DEFAULT_FLUSH_MS = 2_000;
|
|
40
42
|
/** The one-time notice: what is collected, and the two ways out. */
|
|
41
43
|
function noticeText() {
|
|
42
44
|
return [
|
|
43
|
-
`${picocolors.bold('e2e collects anonymous usage telemetry')} to improve the framework: the command, the versions, the OS, and
|
|
45
|
+
`${picocolors.bold('e2e collects anonymous usage telemetry')} to improve the framework: the command, the versions, the OS, and summaries of runs and MCP sessions. Never test names, app data, or credentials.`,
|
|
44
46
|
`Opt out with ${picocolors.cyan('e2e telemetry disable')} or ${picocolors.cyan('E2E_TELEMETRY_DISABLED=1')}. What is sent: ${picocolors.underline(`${DOCS_URL}/telemetry`)}`,
|
|
45
47
|
'',
|
|
46
48
|
'',
|
|
@@ -74,6 +76,8 @@ export class Telemetry {
|
|
|
74
76
|
command;
|
|
75
77
|
failure;
|
|
76
78
|
exitCode;
|
|
79
|
+
/** Sends `sendQueued` started that have not settled; the flush waits for them. */
|
|
80
|
+
sending = new Set();
|
|
77
81
|
constructor(options) {
|
|
78
82
|
this.version = options.version;
|
|
79
83
|
this.env = options.env ?? process.env;
|
|
@@ -200,14 +204,28 @@ export class Telemetry {
|
|
|
200
204
|
return [cliSessionEvent(this.command.name, this.command.flags, ended)];
|
|
201
205
|
}
|
|
202
206
|
/**
|
|
203
|
-
* Sends everything queued in one request, or prints it under debug
|
|
204
|
-
*
|
|
205
|
-
*
|
|
206
|
-
* telemetry.
|
|
207
|
+
* Sends everything queued in one request, or prints it under debug, and
|
|
208
|
+
* waits for the sends `sendQueued` started. One deadline covers the
|
|
209
|
+
* project lookup still running and the request; a lost batch is the
|
|
210
|
+
* accepted cost of a command that never waits on telemetry.
|
|
207
211
|
*/
|
|
208
212
|
async flush(maxWaitMs = DEFAULT_FLUSH_MS) {
|
|
209
213
|
const events = [...this.sessionEvent(), ...this.queue.splice(0)];
|
|
210
214
|
this.command = undefined;
|
|
215
|
+
await Promise.all([this.send(events, maxWaitMs), ...this.sending]);
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Sends what is queued now, without the session event, which only the
|
|
219
|
+
* flush at the end can complete. For a command that runs until its client
|
|
220
|
+
* goes away; the caller need not wait, the flush does.
|
|
221
|
+
*/
|
|
222
|
+
sendQueued(maxWaitMs = DEFAULT_FLUSH_MS) {
|
|
223
|
+
const sending = this.send(this.queue.splice(0), maxWaitMs).finally(() => this.sending.delete(sending));
|
|
224
|
+
this.sending.add(sending);
|
|
225
|
+
return sending;
|
|
226
|
+
}
|
|
227
|
+
/** Sends `events` in one bounded request, or prints them under debug; nothing when off. */
|
|
228
|
+
async send(events, maxWaitMs) {
|
|
211
229
|
if (events.length === 0)
|
|
212
230
|
return;
|
|
213
231
|
// A choice saved from another process while this command ran wins over the snapshot taken at its start.
|
|
@@ -250,4 +268,3 @@ export class Telemetry {
|
|
|
250
268
|
await postBatch(items, { signal: deadline, fetch: this.fetchImpl });
|
|
251
269
|
}
|
|
252
270
|
}
|
|
253
|
-
//# sourceMappingURL=telemetry.js.map
|
package/dist/telemetry/token.js
CHANGED
package/dist/types.d.ts
CHANGED
|
@@ -585,31 +585,39 @@ export interface TestAPI<Fixtures = TestFixtures> {
|
|
|
585
585
|
/** Registers a suite-instance teardown hook. */
|
|
586
586
|
afterAll(fn: SuiteHookFn): void;
|
|
587
587
|
}
|
|
588
|
+
/**
|
|
589
|
+
* The locator matchers. An option a matcher does not take, or a flag that is
|
|
590
|
+
* not a boolean, is `INVALID_ARGUMENT` before the first read.
|
|
591
|
+
*/
|
|
588
592
|
export interface AsyncExpectation {
|
|
589
593
|
/** Inverts the matcher. A negated matcher passes after 1000 ms of continuous truth. */
|
|
590
594
|
readonly not: AsyncExpectation;
|
|
591
|
-
/** Waits for visibility
|
|
595
|
+
/** Waits for visibility; `visible: false` waits for hidden or absent state, as `toBeHidden`. */
|
|
592
596
|
toBeVisible(options?: {
|
|
597
|
+
visible?: boolean;
|
|
593
598
|
timeout?: number;
|
|
594
599
|
}): Promise<void>;
|
|
595
600
|
/** Waits for hidden or absent state. */
|
|
596
601
|
toBeHidden(options?: {
|
|
597
602
|
timeout?: number;
|
|
598
603
|
}): Promise<void>;
|
|
599
|
-
/** Waits for one match to exist, visible or not. */
|
|
604
|
+
/** Waits for one match to exist, visible or not; `attached: false` waits for none. */
|
|
600
605
|
toBeAttached(options?: {
|
|
606
|
+
attached?: boolean;
|
|
601
607
|
timeout?: number;
|
|
602
608
|
}): Promise<void>;
|
|
603
|
-
/** Waits for enabled state. */
|
|
609
|
+
/** Waits for enabled state; `enabled: false` waits for disabled state. */
|
|
604
610
|
toBeEnabled(options?: {
|
|
611
|
+
enabled?: boolean;
|
|
605
612
|
timeout?: number;
|
|
606
613
|
}): Promise<void>;
|
|
607
614
|
/** Waits for disabled state. */
|
|
608
615
|
toBeDisabled(options?: {
|
|
609
616
|
timeout?: number;
|
|
610
617
|
}): Promise<void>;
|
|
611
|
-
/** Waits for checked state. */
|
|
618
|
+
/** Waits for checked state; `checked: false` waits for unchecked state. */
|
|
612
619
|
toBeChecked(options?: {
|
|
620
|
+
checked?: boolean;
|
|
613
621
|
timeout?: number;
|
|
614
622
|
}): Promise<void>;
|
|
615
623
|
/** Waits for selected state. */
|
|
@@ -625,19 +633,11 @@ export interface AsyncExpectation {
|
|
|
625
633
|
timeout?: number;
|
|
626
634
|
}): Promise<void>;
|
|
627
635
|
/** Waits for exact normalized text; a list waits for exactly that many matches, each with its entry's text, in order. */
|
|
628
|
-
toHaveText(expected: TextMatch, options?:
|
|
629
|
-
|
|
630
|
-
}): Promise<void>;
|
|
631
|
-
toHaveText(expected: readonly TextMatch[], options?: {
|
|
632
|
-
timeout?: number;
|
|
633
|
-
}): Promise<void>;
|
|
636
|
+
toHaveText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
637
|
+
toHaveText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
|
|
634
638
|
/** Waits for contained normalized text; a list waits for each entry to be contained by a distinct match, in order, extra matches allowed. */
|
|
635
|
-
toContainText(expected: TextMatch, options?:
|
|
636
|
-
|
|
637
|
-
}): Promise<void>;
|
|
638
|
-
toContainText(expected: readonly TextMatch[], options?: {
|
|
639
|
-
timeout?: number;
|
|
640
|
-
}): Promise<void>;
|
|
639
|
+
toContainText(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
640
|
+
toContainText(expected: readonly TextMatch[], options?: TextMatcherOptions): Promise<void>;
|
|
641
641
|
/** Waits for a form control's value, compared as it is. */
|
|
642
642
|
toHaveValue(expected: TextMatch, options?: {
|
|
643
643
|
timeout?: number;
|
|
@@ -646,17 +646,20 @@ export interface AsyncExpectation {
|
|
|
646
646
|
toHaveAttribute(name: string, options?: {
|
|
647
647
|
timeout?: number;
|
|
648
648
|
}): Promise<void>;
|
|
649
|
-
toHaveAttribute(name: string, value: TextMatch, options?:
|
|
650
|
-
timeout?: number;
|
|
651
|
-
}): Promise<void>;
|
|
649
|
+
toHaveAttribute(name: string, value: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
652
650
|
/** Waits for an exact match count. */
|
|
653
651
|
toHaveCount(expected: number, options?: {
|
|
654
652
|
timeout?: number;
|
|
655
653
|
}): Promise<void>;
|
|
656
654
|
/** Waits for an accessible name. */
|
|
657
|
-
toHaveAccessibleName(expected: TextMatch, options?:
|
|
658
|
-
|
|
659
|
-
|
|
655
|
+
toHaveAccessibleName(expected: TextMatch, options?: TextMatcherOptions): Promise<void>;
|
|
656
|
+
}
|
|
657
|
+
/** Options of a locator matcher that compares text. */
|
|
658
|
+
export interface TextMatcherOptions {
|
|
659
|
+
/** Compares a string case-insensitively; on a RegExp, `true` adds the `i` flag and `false` removes it. */
|
|
660
|
+
ignoreCase?: boolean;
|
|
661
|
+
/** Assertion budget in milliseconds. */
|
|
662
|
+
timeout?: number;
|
|
660
663
|
}
|
|
661
664
|
/**
|
|
662
665
|
* An object that carries its own expectation surface, so `expect(object)`
|
|
@@ -1313,4 +1316,3 @@ export interface E2EConfig {
|
|
|
1313
1316
|
*/
|
|
1314
1317
|
secrets?: Readonly<Record<string, SecretConfig>>;
|
|
1315
1318
|
}
|
|
1316
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.js
CHANGED
package/docs/executors.mdx
CHANGED
|
@@ -128,7 +128,7 @@ The executor receives this context:
|
|
|
128
128
|
|
|
129
129
|
| Member | What it is |
|
|
130
130
|
| --- | --- |
|
|
131
|
-
| `ctx.step` | The instruction, params, and `index` in the attempt's timeline |
|
|
131
|
+
| `ctx.step` | The instruction, params, and `index` in the attempt's timeline. A registered secret value the test spelled into the instruction or a param string reads `<secret:name>`; a `secrets.get()` handle is a placeholder you fill with `typeSecret` |
|
|
132
132
|
| `ctx.observe({ tree, pixels })` | Redacted screen text, with an optional node tree and masked screenshot |
|
|
133
133
|
| `ctx.actions` | Checked and recorded actions: `tap`, `doubleTap`, `longPress`, `secondaryTap`, `hover`, `type`, `typeSecret`, `press`, `select`, `check`, `drag`, `scrollTo`, `scrollUntil`, `upload`, `scroll`, `navigate`, `back`, and the point and keyboard verbs below |
|
|
134
134
|
| `ctx.target` | The target's `name` and `platform`, and `verbs`, the actions its engine supports. Offer only these to the model. |
|
|
@@ -171,6 +171,9 @@ what to do today.
|
|
|
171
171
|
| `toHaveText()`, `toContainText()` | compare the rendered text, as `{ useInnerText: true }` does in Playwright | by design |
|
|
172
172
|
| `toHaveValue()`, `toHaveAttribute()`, `toHaveCount()`, `toHaveAccessibleName()` | the same | same |
|
|
173
173
|
| `toHaveText(['a', 'b'])`, `toContainText([...])` on several matches | the same: `toHaveText` needs the count to match, `toContainText` an ordered subsequence | same |
|
|
174
|
+
| `toBeChecked({ checked: false })`, `toBeEnabled({ enabled })`, `toBeVisible({ visible })`, `toBeAttached({ attached })` | the same | same |
|
|
175
|
+
| `{ ignoreCase }` on `toHaveText()`, `toContainText()`, `toHaveAccessibleName()`, `toHaveAttribute(name, value)` | the same | same |
|
|
176
|
+
| `toBeChecked({ indeterminate })`, `{ useInnerText }`, `toHaveURL(url, { ignoreCase })` | not yet; `INVALID_ARGUMENT`, so the matcher never passes on its default | missing |
|
|
174
177
|
| `toHaveAttribute('aria-selected', 'true')`, `'aria-expanded'` | `toBeSelected()`, `toBeExpanded()` | renamed |
|
|
175
178
|
| a positive matcher on several matches | `LOCATOR_AMBIGUOUS` at once; narrow with `filter`, `first`, or `{ visible: true }` | by design |
|
|
176
179
|
| `toBeAttached()` | the same; passes on a hidden match too | same |
|
|
@@ -201,7 +204,7 @@ what to do today.
|
|
|
201
204
|
| `page.goBack()` | `app.back()`, or `browser.back()` | renamed |
|
|
202
205
|
| `page.goForward()`, `page.reload()` | `browser.forward()`, `browser.reload()` | web only |
|
|
203
206
|
| `page.url()`, `page.title()` | `browser.url()`, `browser.title()` | web only |
|
|
204
|
-
| `page.waitForURL()` | `browser.waitForURL()`; a string or `RegExp`, no predicate function | web only |
|
|
207
|
+
| `page.waitForURL()` | `browser.waitForURL()`; a string or `RegExp`, no predicate function, and `timeout` is its only option, so `waitUntil` is `INVALID_ARGUMENT` | web only |
|
|
205
208
|
| `page.waitForLoadState()` | not yet; `browser.goto(url, { waitUntil })` on the navigation itself | missing |
|
|
206
209
|
| `page.waitForFunction(fn)` | `expect.poll(() => browser.evaluate(fn)).toBeTruthy()` | missing |
|
|
207
210
|
| `page.waitForTimeout(ms)` | a locator assertion on the state you are waiting for: `toBeVisible()` on what appears, `toBeHidden()` on what goes away | by design |
|
package/docs/mobile.mdx
CHANGED
|
@@ -106,6 +106,46 @@ One test launches with its own through `device.openApp`:
|
|
|
106
106
|
await device.openApp('com.example.app', { relaunch: true, permissions: { camera: 'deny' } });
|
|
107
107
|
```
|
|
108
108
|
|
|
109
|
+
### Expo development builds
|
|
110
|
+
|
|
111
|
+
A development build (`expo-dev-client`) opens on the dev launcher and loads
|
|
112
|
+
its JavaScript from a dev server. On an iOS simulator, launch arguments open
|
|
113
|
+
the server directly and turn off the dev menu, its onboarding sheet, and its
|
|
114
|
+
floating action button, so nothing covers the app. `app.command` starts the
|
|
115
|
+
server for the run:
|
|
116
|
+
|
|
117
|
+
```ts title="e2e.config.ts"
|
|
118
|
+
import type { E2EConfig } from 'e2e';
|
|
119
|
+
import { mobile } from '@e2e-dev/mobile';
|
|
120
|
+
|
|
121
|
+
export default {
|
|
122
|
+
targets: [
|
|
123
|
+
{
|
|
124
|
+
engine: mobile({ platform: 'ios' }),
|
|
125
|
+
app: {
|
|
126
|
+
bundleId: 'com.example.app',
|
|
127
|
+
launchArguments: [
|
|
128
|
+
'--initialUrl', 'http://localhost:8081',
|
|
129
|
+
'-EXDevMenuShowsAtLaunch', 'NO',
|
|
130
|
+
'-EXDevMenuIsOnboardingFinished', 'YES',
|
|
131
|
+
'-EXDevMenuShowFloatingActionButton', 'NO',
|
|
132
|
+
],
|
|
133
|
+
command: { executable: 'npx', args: ['expo', 'start', '--port', '8081'] },
|
|
134
|
+
readyUrl: 'http://localhost:8081/status',
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
} satisfies E2EConfig;
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Start each test with `app.open()`: the warm-up in `prepare` passes no launch
|
|
142
|
+
arguments, so it rests on the dev launcher. The first launch waits for the dev
|
|
143
|
+
server to bundle the app; a test's first check may need a longer timeout than
|
|
144
|
+
the rest. A test that relaunches with its own `launchArguments` replaces the
|
|
145
|
+
target's, so it lists these again. expo-dev-launcher on Android does not read
|
|
146
|
+
`--initialUrl`: open the server there with `device.openLink` and the build's
|
|
147
|
+
`exp+<slug>://expo-development-client/?url=<encoded server URL>` link.
|
|
148
|
+
|
|
109
149
|
## Several devices
|
|
110
150
|
|
|
111
151
|
Add a target for each platform:
|
package/docs/reference/cli.mdx
CHANGED
|
@@ -240,7 +240,9 @@ bunx e2e models openai # one provider
|
|
|
240
240
|
|
|
241
241
|
Asks the vendor which models the stored login serves and prints one line per
|
|
242
242
|
model: the id `chatgpt()`, `copilot()`, or `grok()` takes, the vendor's name
|
|
243
|
-
for it, and its notes (reasoning levels, vision, preview, hidden
|
|
243
|
+
for it, and its notes (reasoning levels, vision, preview, hidden, and for
|
|
244
|
+
Copilot `not enabled` or `no chat completions` when `copilot()` cannot call
|
|
245
|
+
it). Without a
|
|
244
246
|
stored login, or when the named provider has none, exits 1 with the sign-in
|
|
245
247
|
command; when one of several logins fails to list, the others still print and
|
|
246
248
|
the command exits 1. An unknown provider exits 2. See
|
|
@@ -964,6 +964,7 @@ Use these helpers to keep behavior consistent across engines:
|
|
|
964
964
|
| `pollCondition({ deadline, signal, negated, evaluate, onTimeout })`, `Deadline` | Assertion polling and the negation grace window |
|
|
965
965
|
| `validateJsonValue(value, label, rules?)` | Checks a value is plain JSON: a top-level `undefined` passes; a non-finite number, a cycle, an object that is not a plain object or array, or a function, symbol, bigint, or `undefined` inside is `INVALID_ARGUMENT` naming `label`. A `Secret` is `POLICY_DENIED` unless `rules.onSecret` throws its own; `rules.maxDepth` caps the nesting |
|
|
966
966
|
| `rejectUnknownKeys(label, value, keys, code?)` | Throws `INVALID_CONFIG` for the first own key of `value` outside `keys`, naming the nearest known key when one is a plausible typo (`web() has unknown key "viewprt"; did you mean "viewport"?`) and the known keys otherwise: the check the runner runs on its own config objects, for an engine factory's options. Pass `'INVALID_ARGUMENT'` as `code` for an object a test passes to a fixture method |
|
|
967
|
+
| `rejectUnknownOptions(api, options, known, code?)` | `INVALID_ARGUMENT` (or `code`, `INVALID_LOCATOR` for a locator option) for an option key a fixture method or matcher does not take, so a JavaScript caller's unsupported option fails instead of running on the default. `options` must be a plain object or `undefined`; a class instance or array is refused, and non-enumerable own keys count as keys |
|
|
967
968
|
| `obj`, `raceAbort`, `withTimeout`, `withinCleanupBudget` | See [Contributed fixtures](#contributed-fixtures) |
|
|
968
969
|
| `isProviderRecording(value)` | Whether what a provider's `record` resolved to is a recording: a parseable `startedAt` and a `stop`. Check it before keeping one, so a malformed recording fails the start, named, instead of the stop |
|
|
969
970
|
| `stopProviderRecording(recording, { artifactsDir, provider, leaseId, signal })` | Ends a hosted service's recording and checks it into a `VideoSegment`; see [Provider recordings](#provider-recordings) |
|