e2e 0.15.2 → 0.17.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 +29 -9
- package/dist/agent/action-dispatcher.d.ts +0 -1
- package/dist/agent/action-dispatcher.js +4 -6
- package/dist/agent/action-names.d.ts +0 -1
- package/dist/agent/action-names.js +0 -1
- package/dist/agent/actions.d.ts +32 -24
- package/dist/agent/actions.js +38 -25
- 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 +2 -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 +5 -7
- package/dist/agent/observation-feed.js +5 -8
- package/dist/agent/observation.d.ts +40 -12
- package/dist/agent/observation.js +109 -60
- 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 +8 -9
- package/dist/agent/point-tap.js +1 -2
- 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 +19 -9
- package/dist/agent/replay.js +11 -15
- package/dist/agent/screen-update.d.ts +0 -1
- package/dist/agent/screen-update.js +0 -1
- package/dist/agent/scroll-target.d.ts +2 -4
- 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 +41 -15
- package/dist/agent/step-cache.js +147 -63
- package/dist/agent/tool-loop.d.ts +0 -1
- package/dist/agent/tool-loop.js +2 -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 +72 -24
- package/dist/cache/anchors.js +233 -61
- package/dist/cache/context.d.ts +25 -15
- package/dist/cache/context.js +50 -9
- package/dist/cache/decide.d.ts +2 -3
- package/dist/cache/decide.js +4 -7
- package/dist/cache/identity.d.ts +18 -5
- package/dist/cache/identity.js +9 -5
- package/dist/cache/recorder.d.ts +15 -2
- package/dist/cache/recorder.js +36 -24
- package/dist/cache/rekeyed.d.ts +46 -0
- package/dist/cache/rekeyed.js +89 -0
- package/dist/cache/relocate.d.ts +14 -15
- package/dist/cache/relocate.js +33 -26
- package/dist/cache/route.d.ts +32 -34
- package/dist/cache/route.js +94 -51
- package/dist/cache/store.d.ts +6 -1
- package/dist/cache/store.js +21 -2
- package/dist/cache/template.d.ts +0 -1
- package/dist/cache/template.js +0 -1
- package/dist/cache/trace.d.ts +53 -15
- package/dist/cache/trace.js +70 -29
- 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 +10 -11
- 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 +1 -4
- package/dist/cli/init/engines.js +2 -3
- package/dist/cli/init/gateways.d.ts +1 -2
- package/dist/cli/init/gateways.js +11 -2
- 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 -9
- package/dist/cli/init/versions.js +1 -11
- 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 +1 -1
- package/dist/config/resolve.js +33 -2
- 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 +3 -4
- 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 +101 -59
- 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-scope.d.ts +52 -0
- package/dist/expect/poll-scope.js +113 -0
- package/dist/expect/poll.d.ts +0 -1
- package/dist/expect/poll.js +31 -5
- 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 +11 -5
- 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/abandoned.d.ts +11 -0
- package/dist/internal/abandoned.js +23 -0
- 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 +2 -1
- package/dist/internal/brands.js +2 -1
- package/dist/internal/client-identity.d.ts +9 -0
- package/dist/internal/client-identity.js +14 -0
- 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 +7 -5
- package/dist/internal/redact.js +116 -24
- 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 +6 -1
- package/dist/internal/time.js +25 -14
- package/dist/internal/urls.d.ts +9 -6
- package/dist/internal/urls.js +19 -11
- 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 +12 -3
- package/dist/locator/engine.js +8 -4
- 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 +28 -5
- package/dist/mcp/catalog.d.ts +7 -3
- package/dist/mcp/catalog.js +8 -9
- 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 +44 -22
- 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 +3 -24
- package/dist/oauth/cli.d.ts +0 -1
- package/dist/oauth/cli.js +1 -1
- package/dist/oauth/copilot.d.ts +5 -5
- package/dist/oauth/copilot.js +80 -8
- 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 +2 -2
- 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 +2 -2
- package/dist/oauth/opencode-console.d.ts +10 -0
- package/dist/oauth/opencode-console.js +133 -0
- package/dist/oauth/pkce.d.ts +0 -1
- package/dist/oauth/pkce.js +0 -1
- package/dist/oauth/providers/github-copilot.d.ts +12 -1
- package/dist/oauth/providers/github-copilot.js +80 -19
- package/dist/oauth/providers/openai.d.ts +0 -1
- package/dist/oauth/providers/openai.js +1 -2
- package/dist/oauth/providers/opencode-console.d.ts +31 -0
- package/dist/oauth/providers/opencode-console.js +148 -0
- package/dist/oauth/providers/xai.d.ts +0 -1
- package/dist/oauth/providers/xai.js +0 -1
- package/dist/oauth/providers.d.ts +2 -7
- package/dist/oauth/providers.js +3 -8
- package/dist/oauth/responses.d.ts +9 -0
- package/dist/oauth/responses.js +23 -0
- 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 +26 -1
- package/dist/report/build.js +16 -9
- 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 +6 -2
- package/dist/report/failure-text.js +14 -5
- package/dist/report/format.d.ts +10 -6
- package/dist/report/format.js +12 -6
- 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 +11 -13
- 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 +1 -1
- package/dist/report/list.js +38 -19
- 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 +1 -2
- package/dist/report/markdown.js +37 -15
- package/dist/report/outcome.d.ts +0 -1
- package/dist/report/outcome.js +0 -1
- package/dist/report/repeats.d.ts +6 -2
- package/dist/report/repeats.js +12 -4
- 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 +18 -1
- package/dist/run/artifacts.js +68 -2
- 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 +9 -1
- package/dist/run/execute.js +55 -29
- package/dist/run/extended-fixtures.d.ts +0 -1
- package/dist/run/extended-fixtures.js +6 -3
- package/dist/run/failure-evidence.d.ts +0 -1
- package/dist/run/failure-evidence.js +4 -3
- 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 +6 -9
- package/dist/run/in-process.d.ts +2 -1
- package/dist/run/in-process.js +1 -1
- package/dist/run/last-run.d.ts +42 -9
- package/dist/run/last-run.js +121 -15
- 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 +6 -2
- package/dist/run/realm.js +21 -8
- package/dist/run/records.d.ts +16 -1
- package/dist/run/records.js +26 -1
- package/dist/run/retry.d.ts +3 -2
- package/dist/run/retry.js +4 -3
- package/dist/run/runner.d.ts +3 -2
- package/dist/run/runner.js +70 -32
- 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 +2 -1
- package/dist/run/serial.js +8 -6
- 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 -9
- package/dist/run/steps.js +7 -22
- 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 +7 -7
- package/dist/run/worker/handle.d.ts +0 -1
- package/dist/run/worker/handle.js +0 -1
- package/dist/run/worker/protocol.d.ts +2 -1
- package/dist/run/worker/protocol.js +0 -1
- package/dist/run/worker/session.d.ts +2 -1
- package/dist/run/worker/session.js +1 -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 +108 -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 +34 -26
- package/dist/types.js +0 -1
- package/docs/agents.mdx +6 -3
- package/docs/assertions.mdx +94 -0
- package/docs/authentication.mdx +3 -1
- package/docs/browser.mdx +42 -6
- package/docs/cache.mdx +64 -18
- package/docs/ci.mdx +11 -7
- package/docs/debugging.mdx +6 -3
- package/docs/executors.mdx +5 -3
- package/docs/github.mdx +12 -4
- package/docs/{writing-tests.mdx → goals.mdx} +21 -101
- package/docs/index.mdx +4 -4
- package/docs/integrations/kernel.mdx +1 -1
- package/docs/locators.mdx +64 -0
- package/docs/migrate/cypress.mdx +2 -2
- package/docs/migrate/maestro.mdx +2 -2
- package/docs/migrate/playwright.mdx +22 -16
- package/docs/migrate/selenium.mdx +2 -2
- package/docs/mobile.mdx +61 -4
- package/docs/models.mdx +53 -7
- package/docs/physical-devices.mdx +76 -0
- package/docs/quickstart.mdx +4 -3
- package/docs/reference/app.mdx +1 -1
- package/docs/reference/cli.mdx +30 -11
- package/docs/reference/config.mdx +25 -7
- package/docs/reference/engine.mdx +4 -3
- package/docs/reference/environment.mdx +8 -1
- package/docs/reference/errors.mdx +5 -5
- package/docs/reference/expect.mdx +79 -24
- package/docs/reference/mcp.mdx +3 -0
- package/docs/reference/mobile.mdx +23 -13
- package/docs/reference/reporters.mdx +8 -2
- package/docs/reference/screen.mdx +30 -7
- package/docs/reference/test.mdx +11 -4
- package/docs/reference/web.mdx +131 -23
- package/docs/security.mdx +45 -19
- package/docs/subscriptions.mdx +97 -9
- package/docs/telemetry.mdx +48 -6
- package/package.json +18 -4
- package/schema/report-v1.schema.json +14 -1
- package/skills/e2e/SKILL.md +2 -2
- package/skills/e2e/references/agent.md +22 -11
- package/skills/e2e/references/debugging.md +4 -4
- package/skills/e2e/references/mcp.md +3 -0
- package/skills/e2e/references/running.md +13 -8
- package/skills/e2e/references/setup.md +42 -15
- package/skills/e2e/references/writing-tests.md +43 -15
- 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/run/steps.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/** Attempt-scoped step timeline. */
|
|
2
2
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
3
3
|
import { isAgentError } from '../agent/error.js';
|
|
4
|
+
import { markAbandonedRejection, relocateStack } from '../internal/abandoned.js';
|
|
4
5
|
import { withAiTraceStep } from '../internal/ai-trace.js';
|
|
5
6
|
import { classifyError, serializeError, TestError, withHint } from '../internal/errors.js';
|
|
6
7
|
import { timestamp } from '../internal/ids.js';
|
|
@@ -9,16 +10,6 @@ import { sourceLocation } from '../internal/source.js';
|
|
|
9
10
|
export const STEP_KINDS = ['agent', 'locator', 'assertion', 'screen', 'app', 'session', 'resource'];
|
|
10
11
|
/** Frames kept when a step captures where it was called from; the user's line is a few frames up. */
|
|
11
12
|
const STEP_STACK_FRAMES = 20;
|
|
12
|
-
/** What abandoned steps rejected with. The promise the test holds rejects with the same value, and nobody awaits it. */
|
|
13
|
-
const ABANDONED_REJECTIONS = new WeakSet();
|
|
14
|
-
/**
|
|
15
|
-
* Whether an unhandled rejection is an abandoned step's: already recorded as
|
|
16
|
-
* `STEP_NOT_AWAITED`, reaching the process only because the promise the
|
|
17
|
-
* test did not await rejected with it. Such a rejection is not a fault.
|
|
18
|
-
*/
|
|
19
|
-
export function isAbandonedStepRejection(cause) {
|
|
20
|
-
return typeof cause === 'object' && cause !== null && ABANDONED_REJECTIONS.has(cause);
|
|
21
|
-
}
|
|
22
13
|
/**
|
|
23
14
|
* The stack at a step's start, or nothing without a project root to read it
|
|
24
15
|
* against. Every step pays the capture, since the failing one is not known
|
|
@@ -38,13 +29,6 @@ function stepStack(projectRoot) {
|
|
|
38
29
|
Error.stackTraceLimit = limit;
|
|
39
30
|
}
|
|
40
31
|
}
|
|
41
|
-
/** Points `error` at the frames of `stack`, keeping its own name and message as the first line. */
|
|
42
|
-
function relocate(error, stack) {
|
|
43
|
-
if (stack === undefined)
|
|
44
|
-
return;
|
|
45
|
-
const frames = stack.split('\n').slice(1).join('\n');
|
|
46
|
-
error.stack = `${error.name}: ${error.message}\n${frames}`;
|
|
47
|
-
}
|
|
48
32
|
/** Characters of a step label an error message quotes before clipping it. */
|
|
49
33
|
const MAX_QUOTED_LABEL_CHARS = 80;
|
|
50
34
|
function quoted(label) {
|
|
@@ -92,7 +76,10 @@ export class StepRecorder {
|
|
|
92
76
|
return this.lastVerified;
|
|
93
77
|
}
|
|
94
78
|
/** Runs one public API call as a recorded top-level step. */
|
|
95
|
-
run(kind, api,
|
|
79
|
+
run(kind, api, rawLabel, body, options = {}) {
|
|
80
|
+
// The label is published, reported, and traced as is: a secret the test
|
|
81
|
+
// spelled into an instruction or a locator stops here, once.
|
|
82
|
+
const label = this.redact?.(rawLabel) ?? rawLabel;
|
|
96
83
|
const index = this.steps.length;
|
|
97
84
|
const startedAt = timestamp();
|
|
98
85
|
const stack = stepStack(this.projectRoot);
|
|
@@ -134,8 +121,7 @@ export class StepRecorder {
|
|
|
134
121
|
}
|
|
135
122
|
catch (cause) {
|
|
136
123
|
if (this.abandoned.has(record.id)) {
|
|
137
|
-
|
|
138
|
-
ABANDONED_REJECTIONS.add(cause);
|
|
124
|
+
markAbandonedRejection(cause);
|
|
139
125
|
throw cause;
|
|
140
126
|
}
|
|
141
127
|
record.durationMs = Date.now() - startedMs;
|
|
@@ -174,7 +160,7 @@ export class StepRecorder {
|
|
|
174
160
|
for (const step of running) {
|
|
175
161
|
const more = first === undefined && running.length > 1 ? ` and ${running.length - 1} more` : '';
|
|
176
162
|
const error = new TestError('STEP_NOT_AWAITED', withHint(`the test body returned before ${step.api} ${quoted(step.label)}${more} finished`, 'put `await` in front of every step call'));
|
|
177
|
-
|
|
163
|
+
relocateStack(error, this.stacks.get(step.id));
|
|
178
164
|
first ??= error;
|
|
179
165
|
this.abandoned.add(step.id);
|
|
180
166
|
step.status = 'failed';
|
|
@@ -309,4 +295,3 @@ export class StepRecorder {
|
|
|
309
295
|
});
|
|
310
296
|
}
|
|
311
297
|
}
|
|
312
|
-
//# sourceMappingURL=steps.js.map
|
|
@@ -22,4 +22,3 @@ import type { SecretLedger } from '../internal/redact.ts';
|
|
|
22
22
|
export declare function redactTraceArchives(dir: string, paths: readonly string[], ledger: SecretLedger, options?: {
|
|
23
23
|
readonly keepFrames?: boolean;
|
|
24
24
|
}): Promise<void>;
|
|
25
|
-
//# sourceMappingURL=trace-redaction.d.ts.map
|
package/dist/run/unit-runner.js
CHANGED
package/dist/run/units.d.ts
CHANGED
|
@@ -74,4 +74,3 @@ export declare function nonRunResult(pair: TestTargetPair): ResultRecord;
|
|
|
74
74
|
export declare function unstartedResult(pair: TestTargetPair, skip: SkipInfo): ResultRecord;
|
|
75
75
|
/** Result for a test that vanished between planning and execution. */
|
|
76
76
|
export declare function disappearedResult(pair: WirePair, target: ResolvedTarget): ResultRecord;
|
|
77
|
-
//# sourceMappingURL=units.d.ts.map
|
package/dist/run/units.js
CHANGED
|
@@ -142,4 +142,3 @@ export function unstartedResult(pair, skip) {
|
|
|
142
142
|
export function disappearedResult(pair, target) {
|
|
143
143
|
return { test: pair.test, target, agent: pair.agent, repeat: pair.repeat, status: 'failed', selected: true, attempts: [] };
|
|
144
144
|
}
|
|
145
|
-
//# sourceMappingURL=units.js.map
|
package/dist/run/worker/entry.js
CHANGED
|
@@ -14,10 +14,10 @@ import { AiTraceRecorder, registerAiTraceRecorder } from '../../internal/ai-trac
|
|
|
14
14
|
import { DebugTrace } from '../../internal/debug.js';
|
|
15
15
|
import { classifyError, ConfigurationError, serializeError } from '../../internal/errors.js';
|
|
16
16
|
import { StreamRedactor } from '../../internal/redact.js';
|
|
17
|
-
import { processSecrets, registerStaticSecrets } from '../secrecy.js';
|
|
17
|
+
import { processSecrets, registerStaticSecrets, staticSecretLedger } from '../secrecy.js';
|
|
18
18
|
import { SessionStore } from '../sessions.js';
|
|
19
19
|
import { TargetWorker } from './session.js';
|
|
20
|
-
import {
|
|
20
|
+
import { isAbandonedRejection } from '../../internal/abandoned.js';
|
|
21
21
|
/**
|
|
22
22
|
* Outbound messages in flight. `process.send` is asynchronous and a
|
|
23
23
|
* `process.exit` right behind it can drop the message, so exiting waits for
|
|
@@ -131,7 +131,7 @@ async function bootstrap(message, debug, aiTrace) {
|
|
|
131
131
|
let collectCounter = 0;
|
|
132
132
|
const resolvePairs = async (unit) => {
|
|
133
133
|
collectCounter += 1;
|
|
134
|
-
const registration = await collectModule(() => importModule(unit.absolutePath, `worker-collect-${collectCounter}`), unit.absolutePath);
|
|
134
|
+
const registration = await collectModule(() => importModule(unit.absolutePath, `worker-collect-${collectCounter}`), unit.absolutePath, staticSecretLedger(config.allSecrets).redact);
|
|
135
135
|
const collected = collectFromRegistration(config.projectRoot, unit.absolutePath, registration);
|
|
136
136
|
const byId = new Map(collected.tests.map((test) => [test.id, test]));
|
|
137
137
|
const pairs = [];
|
|
@@ -152,6 +152,7 @@ async function bootstrap(message, debug, aiTrace) {
|
|
|
152
152
|
sessionStore: SessionStore.forWorker(message.runId, message.sessionsRoot, Buffer.from(message.sessionKeyBase64, 'base64')),
|
|
153
153
|
runId: message.runId,
|
|
154
154
|
artifactsRoot: message.artifactsRoot,
|
|
155
|
+
rerunDir: message.rerunDir,
|
|
155
156
|
headed: message.headed,
|
|
156
157
|
workerSlot: message.workerSlot,
|
|
157
158
|
env: process.env,
|
|
@@ -169,13 +170,13 @@ function main() {
|
|
|
169
170
|
process.on('SIGINT', () => undefined);
|
|
170
171
|
process.on('SIGTERM', () => undefined);
|
|
171
172
|
process.on('uncaughtException', (cause) => fatal(cause));
|
|
172
|
-
// A step the
|
|
173
|
-
// is cancelled; the attempt has already recorded it as STEP_NOT_AWAITED.
|
|
173
|
+
// A step or poll the test did not await rejects on a promise nobody holds
|
|
174
|
+
// once it is cancelled; the attempt has already recorded it as STEP_NOT_AWAITED.
|
|
174
175
|
// Any other rejection nobody caught is charged to the attempt in flight,
|
|
175
176
|
// or recorded against the last test that finished; only before any test
|
|
176
177
|
// has finished is it the worker's.
|
|
177
178
|
process.on('unhandledRejection', (cause) => {
|
|
178
|
-
if (
|
|
179
|
+
if (isAbandonedRejection(cause))
|
|
179
180
|
return;
|
|
180
181
|
if (worker?.strayRejection(cause) !== true)
|
|
181
182
|
fatal(cause);
|
|
@@ -229,4 +230,3 @@ function main() {
|
|
|
229
230
|
});
|
|
230
231
|
}
|
|
231
232
|
main();
|
|
232
|
-
//# sourceMappingURL=entry.js.map
|
|
@@ -8,4 +8,3 @@ export type ChildProcessSpawnOptions = Omit<WorkerBootstrap, 'targetName' | 'wor
|
|
|
8
8
|
};
|
|
9
9
|
/** Creates the spawn factory the scheduler uses for child-process execution. */
|
|
10
10
|
export declare function childProcessSpawner(options: ChildProcessSpawnOptions): SpawnUnitRunner;
|
|
11
|
-
//# sourceMappingURL=handle.d.ts.map
|
|
@@ -56,6 +56,8 @@ export interface WorkerBootstrap {
|
|
|
56
56
|
readonly workerSlot: number;
|
|
57
57
|
readonly runId: string;
|
|
58
58
|
readonly artifactsRoot: string;
|
|
59
|
+
/** See `TargetExecutorOptions.rerunDir`. */
|
|
60
|
+
readonly rerunDir: string | undefined;
|
|
59
61
|
readonly headed: boolean;
|
|
60
62
|
readonly sessionsRoot: string;
|
|
61
63
|
/** Per-run AES key; transferred only over this channel, never disk or env. */
|
|
@@ -209,4 +211,3 @@ export interface RunAbortMessage {
|
|
|
209
211
|
export type WorkerToMain = ReadyMessage | PairStartMessage | ProgressMessage | OutputMessage | NoticeMessage | ResultMessage | SerialGroupMessage | UnitDoneMessage | ShutdownDoneMessage | FatalMessage | RunAbortMessage;
|
|
210
212
|
/** Reattaches the scheduler's resolved target to a wire result. */
|
|
211
213
|
export declare function decodeResult(wire: WireResultRecord, target: ResolvedTarget): ResultRecord;
|
|
212
|
-
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -35,6 +35,8 @@ export interface TargetWorkerDeps {
|
|
|
35
35
|
readonly sessionStore: SessionStore;
|
|
36
36
|
readonly runId: string;
|
|
37
37
|
readonly artifactsRoot: string;
|
|
38
|
+
/** See `TargetExecutorOptions.rerunDir`. */
|
|
39
|
+
readonly rerunDir: string | undefined;
|
|
38
40
|
readonly headed: boolean;
|
|
39
41
|
/** See `TargetExecutorOptions.workerSlot`. */
|
|
40
42
|
readonly workerSlot: number;
|
|
@@ -114,4 +116,3 @@ export declare class TargetWorker {
|
|
|
114
116
|
private shutdown;
|
|
115
117
|
private disposeAndFinish;
|
|
116
118
|
}
|
|
117
|
-
//# sourceMappingURL=session.d.ts.map
|
|
@@ -46,6 +46,7 @@ export class TargetWorker {
|
|
|
46
46
|
target: deps.target,
|
|
47
47
|
runId: deps.runId,
|
|
48
48
|
artifactsRoot: deps.artifactsRoot,
|
|
49
|
+
rerunDir: deps.rerunDir,
|
|
49
50
|
sessionStore: deps.sessionStore,
|
|
50
51
|
headed: deps.headed,
|
|
51
52
|
workerSlot: deps.workerSlot,
|
|
@@ -206,4 +207,3 @@ export class TargetWorker {
|
|
|
206
207
|
this.host.finished();
|
|
207
208
|
}
|
|
208
209
|
}
|
|
209
|
-
//# sourceMappingURL=session.js.map
|
|
@@ -25,4 +25,3 @@ export declare class WorkerModels {
|
|
|
25
25
|
/** Adapter for one resolved model; each distinct model is built once per worker. A missing one names the agent `name`. */
|
|
26
26
|
readonly build: (model: ResolvedModel | undefined, name: string) => ModelAdapter;
|
|
27
27
|
}
|
|
28
|
-
//# sourceMappingURL=worker-models.d.ts.map
|
package/dist/secrets.d.ts
CHANGED
package/dist/secrets.js
CHANGED
|
@@ -1,15 +1,19 @@
|
|
|
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
|
*/
|
|
14
|
+
import type { ResolvedConfig } from '../config/resolve.ts';
|
|
15
|
+
import type { McpClient } from '../mcp/server.ts';
|
|
16
|
+
import type { McpSessionSummary } from '../mcp/usage.ts';
|
|
13
17
|
import type { Report1Document } from '../report/build.ts';
|
|
14
18
|
import type { JsonValue } from '../types.ts';
|
|
15
19
|
export interface TelemetryEvent {
|
|
@@ -24,6 +28,8 @@ export declare const EVENT_CLI_SESSION = "e2e_cli_session";
|
|
|
24
28
|
export declare const EVENT_RUN_COMPLETED = "e2e_run_completed";
|
|
25
29
|
/** One per `e2e init`, however it ended: what was chosen and whether anything was written. */
|
|
26
30
|
export declare const EVENT_INIT_COMPLETED = "e2e_init_completed";
|
|
31
|
+
/** One per `open_session` an `e2e mcp` server served, sent when the session closes or its open fails. */
|
|
32
|
+
export declare const EVENT_MCP_SESSION = "e2e_mcp_session";
|
|
27
33
|
/** The session's error code for a flag or argument commander rejected; no runner code exists for it. */
|
|
28
34
|
export declare const USAGE_ERROR_CODE = "CLI_USAGE";
|
|
29
35
|
/** How the invocation ended, known only once the command has returned or thrown. */
|
|
@@ -58,5 +64,15 @@ export interface InitOutcome {
|
|
|
58
64
|
export declare function cliSessionEvent(command: string, flags: readonly string[], ended?: SessionEnd): TelemetryEvent;
|
|
59
65
|
/** The init event: each choice as its option id. */
|
|
60
66
|
export declare function initCompletedEvent(outcome: InitOutcome): TelemetryEvent;
|
|
61
|
-
|
|
62
|
-
|
|
67
|
+
/** What the CLI knows of a run beyond its report. */
|
|
68
|
+
export interface RunContext {
|
|
69
|
+
/** `run` or `explore`. */
|
|
70
|
+
readonly command: string;
|
|
71
|
+
/** The flag names given, never their values. */
|
|
72
|
+
readonly flags: readonly string[];
|
|
73
|
+
/** The config the run resolved; undefined when it failed to load. */
|
|
74
|
+
readonly config: ResolvedConfig | undefined;
|
|
75
|
+
}
|
|
76
|
+
export declare function runCompletedEvent(report: Report1Document, context: RunContext): TelemetryEvent;
|
|
77
|
+
/** One MCP session: the client, the target's platform and engine, how it ended, and its calls by the runner's tool names. */
|
|
78
|
+
export declare function mcpSessionEvent(summary: McpSessionSummary, client: McpClient | undefined): TelemetryEvent;
|
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,15 +195,17 @@ 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,
|
|
154
206
|
tests_passed: run.summary.passed,
|
|
155
207
|
tests_failed: run.summary.failed,
|
|
208
|
+
tests_interrupted: run.summary.interrupted,
|
|
156
209
|
tests_flaky: run.summary.flaky,
|
|
157
210
|
tests_skipped: run.summary.skipped,
|
|
158
211
|
attempts_total: attempts.reduce((total, count) => total + count, 0),
|
|
@@ -180,7 +233,49 @@ export function runCompletedEvent(report, flags) {
|
|
|
180
233
|
primary_error_code: primary === undefined ? null : errorCodeToken(primary.code),
|
|
181
234
|
error_codes: unique(errors.map((error) => errorCodeToken(error.code))).slice(0, MAX_ERROR_CODES),
|
|
182
235
|
error_kinds: unique(errors.flatMap(failureKind)).slice(0, MAX_ERROR_CODES),
|
|
236
|
+
// A run whose config never loaded has no features to report.
|
|
237
|
+
...(context.config === undefined ? {} : configFeatures(context.config)),
|
|
238
|
+
...(run.explore === undefined ? {} : exploreProperties(run.explore)),
|
|
239
|
+
},
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* The catalog tools an MCP session serves itself, by name: the grammar and
|
|
244
|
+
* the session's own (`createSessionCatalog`). A project's tools arrive
|
|
245
|
+
* counted together; any name outside this set folds to `other`.
|
|
246
|
+
*/
|
|
247
|
+
const SESSION_TOOLS = new Set([...GRAMMAR_TOOL_NAMES, 'locate', 'start_recording', 'stop_recording']);
|
|
248
|
+
/** One MCP session: the client, the target's platform and engine, how it ended, and its calls by the runner's tool names. */
|
|
249
|
+
export function mcpSessionEvent(summary, client) {
|
|
250
|
+
const calls = new Map();
|
|
251
|
+
for (const [name, count] of summary.toolCalls) {
|
|
252
|
+
const key = SESSION_TOOLS.has(name) ? name : 'other';
|
|
253
|
+
calls.set(key, (calls.get(key) ?? 0) + count);
|
|
254
|
+
}
|
|
255
|
+
if (summary.projectToolCalls > 0)
|
|
256
|
+
calls.set('tool', summary.projectToolCalls);
|
|
257
|
+
const codes = new Map();
|
|
258
|
+
for (const [code, count] of summary.errorCodes) {
|
|
259
|
+
const key = errorCodeToken(code);
|
|
260
|
+
codes.set(key, (codes.get(key) ?? 0) + count);
|
|
261
|
+
}
|
|
262
|
+
return {
|
|
263
|
+
name: EVENT_MCP_SESSION,
|
|
264
|
+
properties: {
|
|
265
|
+
client: client === undefined ? null : plainToken(client.name),
|
|
266
|
+
client_version: client === undefined ? null : plainToken(client.version),
|
|
267
|
+
outcome: summary.outcome,
|
|
268
|
+
ended_by: summary.endedBy ?? null,
|
|
269
|
+
error_code: summary.openErrorCode === undefined ? null : errorCodeToken(summary.openErrorCode),
|
|
270
|
+
platform: summary.platform === undefined ? null : plainToken(summary.platform),
|
|
271
|
+
engine: summary.engine === undefined ? null : engineLabel(summary.engine),
|
|
272
|
+
headed: summary.headed,
|
|
273
|
+
duration_ms: Math.max(0, Math.round(summary.durationMs)),
|
|
274
|
+
sessions_open: summary.concurrent,
|
|
275
|
+
calls_total: [...calls.values()].reduce((total, count) => total + count, 0),
|
|
276
|
+
calls_failed: summary.failedCalls,
|
|
277
|
+
calls: sortedCounts(calls),
|
|
278
|
+
error_codes: sortedCounts(new Map([...codes].toSorted().slice(0, MAX_ERROR_CODES))),
|
|
183
279
|
},
|
|
184
280
|
};
|
|
185
281
|
}
|
|
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
|