e2e 0.15.1 → 0.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +51 -24
- 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 +25 -8
- 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 +16 -4
- package/dist/agent/error.js +25 -7
- 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 +24 -2
- package/dist/agent/model/tool-choice.js +27 -2
- 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 +14 -4
- package/dist/agent/step-cache.js +13 -4
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +62 -10
- 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 +19 -7
- package/dist/cache/context.js +15 -22
- 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 +1 -1
- package/dist/cli/init/scaffold.js +2 -2
- 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 +1 -2
- 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 +27 -13
- 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 +26 -24
- package/dist/types.js +0 -1
- package/docs/agent-steps.mdx +126 -0
- package/docs/agents.mdx +217 -0
- package/docs/api-testing.mdx +65 -0
- package/docs/authentication.mdx +345 -0
- package/docs/browser.mdx +440 -0
- package/docs/bug-bash.mdx +90 -0
- package/docs/cache.mdx +306 -0
- package/docs/ci.mdx +210 -0
- package/docs/coding-agents.mdx +183 -0
- package/docs/debugging.mdx +291 -0
- package/docs/executors.mdx +243 -0
- package/docs/explore.mdx +174 -0
- package/docs/github.mdx +184 -0
- package/docs/index.mdx +82 -0
- package/docs/integrations/eas.mdx +216 -0
- package/docs/integrations/index.mdx +24 -0
- package/docs/integrations/kernel.mdx +163 -0
- package/docs/migrate/cypress.mdx +124 -0
- package/docs/migrate/detox.mdx +140 -0
- package/docs/migrate/maestro.mdx +229 -0
- package/docs/migrate/playwright.mdx +430 -0
- package/docs/migrate/selenium.mdx +110 -0
- package/docs/mobile-ci.mdx +567 -0
- package/docs/mobile.mdx +595 -0
- package/docs/models.mdx +241 -0
- package/docs/quickstart.mdx +260 -0
- package/docs/reference/agent.mdx +524 -0
- package/docs/reference/app.mdx +72 -0
- package/docs/reference/cli.mdx +819 -0
- package/docs/reference/config.mdx +986 -0
- package/docs/reference/engine.mdx +1363 -0
- package/docs/reference/environment.mdx +113 -0
- package/docs/reference/errors.mdx +143 -0
- package/docs/reference/expect.mdx +546 -0
- package/docs/reference/mcp.mdx +205 -0
- package/docs/reference/mobile.mdx +522 -0
- package/docs/reference/reporters.mdx +216 -0
- package/docs/reference/screen.mdx +688 -0
- package/docs/reference/test.mdx +449 -0
- package/docs/reference/web.mdx +615 -0
- package/docs/security.mdx +308 -0
- package/docs/starting-your-app.mdx +231 -0
- package/docs/subscriptions.mdx +166 -0
- package/docs/telemetry.mdx +227 -0
- package/docs/tools.mdx +150 -0
- package/docs/viewports.mdx +146 -0
- package/docs/writing-an-engine.mdx +316 -0
- package/docs/writing-tests.mdx +256 -0
- package/package.json +5 -3
- package/skills/e2e/SKILL.md +4 -1
- package/skills/e2e/references/agent.md +3 -1
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/setup.md +19 -4
- 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)`
|
|
@@ -700,7 +703,7 @@ export interface ValueExpectation<T> {
|
|
|
700
703
|
toBeNull(): void;
|
|
701
704
|
/** Requires undefined. */
|
|
702
705
|
toBeUndefined(): void;
|
|
703
|
-
/** Requires
|
|
706
|
+
/** Requires any value but undefined; null passes. */
|
|
704
707
|
toBeDefined(): void;
|
|
705
708
|
/** Requires a `length` property equal to `expected`: a string, an array, or anything array-like. */
|
|
706
709
|
toHaveLength(expected: number): void;
|
|
@@ -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
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: How agent steps work
|
|
3
|
+
description: What the model sees, what it may do, how a step ends, and what it costs.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
An agent step is one `agent.act`, `agent.assert`, `agent.waitFor`, or
|
|
7
|
+
`agent.extract` call. The model reads the screen, asks for actions, and ends
|
|
8
|
+
the step with a verdict. The runner performs each action it allows and
|
|
9
|
+
records the result. Every step has a deadline and a model-call budget.
|
|
10
|
+
|
|
11
|
+
## Two sides of the contract
|
|
12
|
+
|
|
13
|
+
The runner handles redaction, action authorization, budgets, secrets, and
|
|
14
|
+
reporting. The executor decides which actions to request and returns a
|
|
15
|
+
verdict. The built-in agent is the executor unless an agents entry sets
|
|
16
|
+
`executor`. [Custom executors](/executors) get the same redacted observations
|
|
17
|
+
and checked action methods.
|
|
18
|
+
|
|
19
|
+
## What the model sees
|
|
20
|
+
|
|
21
|
+
For `act`, the opening prompt includes the instruction, params, completed
|
|
22
|
+
steps, and a redacted text snapshot of the screen's roles, names, text, and
|
|
23
|
+
states. It excludes raw HTML, cookies, headers, and environment values.
|
|
24
|
+
Password fields are masked. Configured secret values found on screen are
|
|
25
|
+
replaced with `<secret:name>`.
|
|
26
|
+
|
|
27
|
+
After an action, the model receives the changes to the screen. If most of
|
|
28
|
+
the screen changed, it receives a new full snapshot. Node ids remain stable
|
|
29
|
+
while their elements exist. A failed action also returns the current screen
|
|
30
|
+
so the model can choose what to do next.
|
|
31
|
+
|
|
32
|
+
Judgments from `assert`, `waitFor`, and `extract` see the instruction and
|
|
33
|
+
current screen. They do not see completed steps or the acting agent's
|
|
34
|
+
summaries. You can configure a separate [judge model](/models#a-judge-of-its-own).
|
|
35
|
+
|
|
36
|
+
Use `vision: true` to include a masked screenshot or `vision: 'only'` to
|
|
37
|
+
judge the screenshot alone; the [agent reference](/reference/agent#vision)
|
|
38
|
+
lists the modes. No screenshot reaches the model
|
|
39
|
+
[after a secret fill](/security#screenshots-after-a-secret-fill).
|
|
40
|
+
|
|
41
|
+
## What the model may do
|
|
42
|
+
|
|
43
|
+
The agent receives tools supported by the target's engine, such as `tap`,
|
|
44
|
+
`type`, `press`, `select`, `scroll`, and `navigate`. A step with declared
|
|
45
|
+
credentials can also receive `type_secret`.
|
|
46
|
+
|
|
47
|
+
Keyboard-capable engines support typing and key presses into the focused
|
|
48
|
+
control. Pixel tools let the agent request a screenshot and act at a point
|
|
49
|
+
when the text snapshot cannot describe a control. See the
|
|
50
|
+
[tool reference](/reference/agent#pixel-tools-screenshot-and-the-point-verbs).
|
|
51
|
+
|
|
52
|
+
The runner checks each built-in action and counts it against the budget.
|
|
53
|
+
A targeted action has a maximum timeout of 15 seconds. Secret fills also
|
|
54
|
+
require a declared secret and a compatible field.
|
|
55
|
+
[Project tools](/tools) add your own operations with declared budgets and
|
|
56
|
+
platform support.
|
|
57
|
+
|
|
58
|
+
The loop detects repeated calls and cycles. After three consecutive failed
|
|
59
|
+
actions, it asks the model to change approach; after five, it asks for a
|
|
60
|
+
verdict. It also requests a verdict as the budget or deadline approaches.
|
|
61
|
+
|
|
62
|
+
## How a step ends
|
|
63
|
+
|
|
64
|
+
An agent step returns one of three verdicts:
|
|
65
|
+
|
|
66
|
+
- `passed`: the screen provides evidence that the step succeeded.
|
|
67
|
+
- `failed`: the required condition is false or cannot be established.
|
|
68
|
+
Insufficient evidence produces `ASSERTION_INCONCLUSIVE`.
|
|
69
|
+
- `blocked`: a prerequisite, environment problem, or execution limit
|
|
70
|
+
prevented a product verdict. The error code determines the exit code.
|
|
71
|
+
|
|
72
|
+
An error code belongs to `failed` or `blocked` only. When the built-in
|
|
73
|
+
agent's model concludes `passed` with one, the code is dropped, the step
|
|
74
|
+
passes, and the turn's outcome notes the dropped code. A
|
|
75
|
+
[custom executor](/executors) that returns one is refused with
|
|
76
|
+
`MODEL_OUTPUT_INVALID`.
|
|
77
|
+
|
|
78
|
+
| Blocked by | Codes | Exit |
|
|
79
|
+
| --- | --- | ---: |
|
|
80
|
+
| A credential the app rejected, or one that is not configured | `AUTH_CREDENTIAL_INVALID`, `AUTH_CREDENTIAL_UNAVAILABLE` | 2 |
|
|
81
|
+
| An environment that is down | `ENVIRONMENT_UNAVAILABLE` | 3 |
|
|
82
|
+
| Seed data or a prerequisite outside the product that is not there | `SEED_DATA_MISSING`, `TEST_SETUP_FAILED` | 2 |
|
|
83
|
+
| A budget or the clock | `STEP_BUDGET_EXHAUSTED`, `STEP_TIMEOUT` | 1 |
|
|
84
|
+
| An interaction the toolset cannot perform | `AUTOMATION_UNSUPPORTED` | 1 |
|
|
85
|
+
|
|
86
|
+
The [errors reference](/reference/errors#agenterror) lists every code a
|
|
87
|
+
verdict can carry.
|
|
88
|
+
|
|
89
|
+
## Cost
|
|
90
|
+
|
|
91
|
+
Every call has a model-call budget and a default timeout, listed under
|
|
92
|
+
[budgets](/reference/agent#budgets). Exceeding a budget raises
|
|
93
|
+
`STEP_BUDGET_EXHAUSTED`; reaching the deadline raises `STEP_TIMEOUT`. What
|
|
94
|
+
drives the cost:
|
|
95
|
+
|
|
96
|
+
- `assert` and `extract` make one judgment, plus one repair call if the
|
|
97
|
+
model's answer is malformed. An `extract` whose data is not on screen
|
|
98
|
+
fails with `ASSERTION_INCONCLUSIVE` rather than returning a placeholder.
|
|
99
|
+
- `waitFor` skips model calls while the screen is unchanged.
|
|
100
|
+
- Screenshots add input tokens on every call that carries them. `act` asks
|
|
101
|
+
for one only when the text snapshot is not enough.
|
|
102
|
+
- The [replay cache](/cache) reruns passing `act` steps without model calls.
|
|
103
|
+
|
|
104
|
+
Use `expect` for exact checks and keep each `act` focused on one goal. When
|
|
105
|
+
the provider supports prompt caching, `--debug` shows the cached share of
|
|
106
|
+
input tokens per step. Under a
|
|
107
|
+
[custom executor](/executors#what-the-executor-handles), `assert` runs with
|
|
108
|
+
the `act` budgets.
|
|
109
|
+
|
|
110
|
+
## Where secrets go
|
|
111
|
+
|
|
112
|
+
For a `Secret` param, the model receives only its name and purpose. The
|
|
113
|
+
runner checks the field the model picked, then fills the value itself.
|
|
114
|
+
The value never enters prompts, transcripts, reports, or AI traces. See the
|
|
115
|
+
[security model](/security#secrets) for what else changes after a fill.
|
|
116
|
+
|
|
117
|
+
## Next
|
|
118
|
+
|
|
119
|
+
<CardGroup cols={2}>
|
|
120
|
+
<Card title="Project tools" icon="wrench" href="/tools">
|
|
121
|
+
Extend the vocabulary with your own tools.
|
|
122
|
+
</Card>
|
|
123
|
+
<Card title="Custom executors" icon="gears" href="/executors">
|
|
124
|
+
Keep the loop with your prompt, or replace it entirely.
|
|
125
|
+
</Card>
|
|
126
|
+
</CardGroup>
|