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/agent/invocation.js
CHANGED
|
@@ -53,7 +53,7 @@ export class Invocation {
|
|
|
53
53
|
this.agent = runtime.select(options.agent);
|
|
54
54
|
this.deadline = runtime.engine.deadline(options.timeoutMs);
|
|
55
55
|
this.pixelTier = options.vision === true || options.vision === 'only';
|
|
56
|
-
this.system = buildSystem(options.task, this.agent.agentContext);
|
|
56
|
+
this.system = runtime.redact(buildSystem(options.task, this.agent.agentContext));
|
|
57
57
|
this.systemBytes = tokenUpperBound(this.system);
|
|
58
58
|
}
|
|
59
59
|
get session() {
|
|
@@ -179,11 +179,17 @@ export class Invocation {
|
|
|
179
179
|
for (;;) {
|
|
180
180
|
this.checkDeadline();
|
|
181
181
|
this.consumeModelCall();
|
|
182
|
-
|
|
182
|
+
// The observation is redacted already; the instruction is the test's
|
|
183
|
+
// own text, which may spell out a registered value. The repair's raw
|
|
184
|
+
// text is redacted before the prompt cuts it, so the cut never splits a
|
|
185
|
+
// value into a fragment whole-value matching would miss.
|
|
186
|
+
const prompt = this.runtime.redact(buildPrompt({
|
|
183
187
|
...request.prompt,
|
|
184
188
|
...(this.treeWithheld ? { withholdTree: true } : {}),
|
|
185
|
-
...(repair === undefined
|
|
186
|
-
|
|
189
|
+
...(repair === undefined
|
|
190
|
+
? {}
|
|
191
|
+
: { repair: { ...repair, rawText: repair.rawText === undefined ? undefined : this.runtime.redact(repair.rawText) } }),
|
|
192
|
+
}));
|
|
187
193
|
// Pixels travel with the observation they were captured for, so the
|
|
188
194
|
// image and the tree in one request always describe one revision.
|
|
189
195
|
const images = imagesFor(request.prompt.observation);
|
|
@@ -322,4 +328,3 @@ function imagesFor(observation) {
|
|
|
322
328
|
},
|
|
323
329
|
];
|
|
324
330
|
}
|
|
325
|
-
//# sourceMappingURL=invocation.js.map
|
package/dist/agent/ledger.d.ts
CHANGED
package/dist/agent/ledger.js
CHANGED
|
@@ -84,4 +84,3 @@ export declare function isFailedResult(toolName: string, text: string): boolean;
|
|
|
84
84
|
* that the last id was. Warns first, then forces the conclusion.
|
|
85
85
|
*/
|
|
86
86
|
export declare function checkFailureStreak(results: readonly GuardToolResult[], thresholds?: LoopGuardThresholds): LoopGuardVerdict;
|
|
87
|
-
//# sourceMappingURL=loop-guards.d.ts.map
|
|
@@ -43,4 +43,3 @@ export interface ProviderHints {
|
|
|
43
43
|
export declare function providerHints(model: ProviderModelRef | undefined): ProviderHints;
|
|
44
44
|
/** A stable key for one system prompt, so every call sharing the prefix routes alike. */
|
|
45
45
|
export declare function promptCacheKey(system: string): string;
|
|
46
|
-
//# sourceMappingURL=provider-hints.d.ts.map
|
|
@@ -17,4 +17,3 @@ import type { JSONSchema7 } from 'ai';
|
|
|
17
17
|
import type { StandardSchemaV1 } from '../../types.ts';
|
|
18
18
|
/** The caller schema's shape as JSON Schema, or undefined when it has no usable projection. */
|
|
19
19
|
export declare function deriveJsonSchema(schema: StandardSchemaV1): Promise<JSONSchema7 | undefined>;
|
|
20
|
-
//# sourceMappingURL=schema.d.ts.map
|
package/dist/agent/model/sdk.js
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
import { withHint } from '../../internal/errors.js';
|
|
10
10
|
import { missingModelError } from '../../config/agent.js';
|
|
11
11
|
import { aiSdk, asSdkLanguageModel, loadAiSdk } from '../ai-sdk.js';
|
|
12
|
+
import { MODEL_REQUEST_HEADERS } from '../../internal/client-identity.js';
|
|
12
13
|
import { packageVersion } from '../../internal/package-version.js';
|
|
13
14
|
import { AgentError } from '../error.js';
|
|
14
15
|
import { isContextOverflow } from './overflow.js';
|
|
@@ -75,6 +76,7 @@ export function createModelAdapter(model, agentName = 'default') {
|
|
|
75
76
|
maxOutputTokens: call.maxOutputTokens,
|
|
76
77
|
...(providerOptions === undefined ? {} : { providerOptions: providerOptions }),
|
|
77
78
|
maxRetries: TRANSPORT_RETRIES,
|
|
79
|
+
headers: MODEL_REQUEST_HEADERS,
|
|
78
80
|
abortSignal: call.signal,
|
|
79
81
|
timeout: call.timeoutMs,
|
|
80
82
|
};
|
|
@@ -303,4 +305,3 @@ export function isAbort(cause) {
|
|
|
303
305
|
return true;
|
|
304
306
|
return cause instanceof Error && (cause.name === 'AbortError' || cause.name === 'TimeoutError');
|
|
305
307
|
}
|
|
306
|
-
//# sourceMappingURL=sdk.js.map
|
|
@@ -8,4 +8,3 @@ import type { AiSdk, SdkLanguageModel } from '../ai-sdk.ts';
|
|
|
8
8
|
* The caller's cancellation is not a stall and passes through as it was.
|
|
9
9
|
*/
|
|
10
10
|
export declare function withStallGuard(ai: AiSdk, model: SdkLanguageModel, onStall?: (stallMs: number) => void, stallMs?: number): SdkLanguageModel;
|
|
11
|
-
//# sourceMappingURL=stall.d.ts.map
|
|
@@ -24,4 +24,3 @@ export interface ObservationBudgetRequest {
|
|
|
24
24
|
* than fail the adapter's pre-flight check.
|
|
25
25
|
*/
|
|
26
26
|
export declare function observationByteBudget(limits: ObservationBudgetLimits, request: ObservationBudgetRequest): number;
|
|
27
|
-
//# sourceMappingURL=observation-budget.d.ts.map
|
|
@@ -40,4 +40,3 @@ export function observationByteBudget(limits, request) {
|
|
|
40
40
|
const withinTokenCeiling = Math.max(MIN_OBSERVATION_BYTES, limits.maxInputTokens - overhead);
|
|
41
41
|
return Math.min(limits.maxObservationBytes, withinTokenCeiling);
|
|
42
42
|
}
|
|
43
|
-
//# sourceMappingURL=observation-budget.js.map
|
|
@@ -7,24 +7,23 @@
|
|
|
7
7
|
* executor's redacted view of a capture. Nothing else in the step observes
|
|
8
8
|
* the engine; the dispatcher and the pixel tier ask the feed.
|
|
9
9
|
*/
|
|
10
|
-
import type { SemanticNode } from '../engine/surface.ts';
|
|
11
10
|
import type { StepAgentDetails } from '../run/steps.ts';
|
|
12
11
|
import { AgentError } from './error.ts';
|
|
13
12
|
import type { ExecutorObservation, ExecutorObserveOptions, ExecutorTarget } from './executor.ts';
|
|
14
13
|
import type { AgentContext } from './invocation.ts';
|
|
15
|
-
import { type AgentObservation, type SemanticAgentObservation } from './observation.ts';
|
|
14
|
+
import { type AgentObservation, type RedactedNode, type SemanticAgentObservation } from './observation.ts';
|
|
16
15
|
import type { OperationQueue } from './operation-queue.ts';
|
|
17
16
|
import { type SettleMode } from './settle-policy.ts';
|
|
18
17
|
import type { StepAccounting } from './step-accounting.ts';
|
|
19
18
|
/** A target resolved to a node of the observation it was found in. */
|
|
20
19
|
export interface Resolved {
|
|
21
|
-
readonly node:
|
|
20
|
+
readonly node: RedactedNode;
|
|
22
21
|
readonly observation: SemanticAgentObservation;
|
|
23
22
|
}
|
|
24
23
|
/** What a target names on the newest screen: the id as the screen lists it, the node or nothing, and the screen looked at. */
|
|
25
24
|
export interface Lookup {
|
|
26
25
|
readonly id: string;
|
|
27
|
-
readonly node:
|
|
26
|
+
readonly node: RedactedNode | undefined;
|
|
28
27
|
readonly observation: SemanticAgentObservation;
|
|
29
28
|
}
|
|
30
29
|
export interface ObservationFeedOptions {
|
|
@@ -116,8 +115,8 @@ export declare class ObservationFeed {
|
|
|
116
115
|
* through the queued observe: this runs inside a queued action body, and a
|
|
117
116
|
* queued observation would wait on its own caller.
|
|
118
117
|
*/
|
|
119
|
-
relocate(stale:
|
|
120
|
-
node:
|
|
118
|
+
relocate(stale: RedactedNode): Promise<{
|
|
119
|
+
node: RedactedNode;
|
|
121
120
|
observation: SemanticAgentObservation;
|
|
122
121
|
} | undefined>;
|
|
123
122
|
/**
|
|
@@ -170,4 +169,3 @@ export declare class ObservationFeed {
|
|
|
170
169
|
}
|
|
171
170
|
/** The error for a target id the newest screen no longer lists. */
|
|
172
171
|
export declare function nodeGone(id: string, latest: SemanticAgentObservation): AgentError;
|
|
173
|
-
//# sourceMappingURL=observation-feed.d.ts.map
|
|
@@ -132,7 +132,7 @@ export class ObservationFeed {
|
|
|
132
132
|
...metadata,
|
|
133
133
|
text: observation.text,
|
|
134
134
|
truncated: observation.truncated,
|
|
135
|
-
...(options.tree === true ? { tree: projectTree(observation.tree, this.runtime.
|
|
135
|
+
...(options.tree === true ? { tree: projectTree(observation.tree, this.runtime.app.base?.origin) } : {}),
|
|
136
136
|
...pixels,
|
|
137
137
|
};
|
|
138
138
|
}
|
|
@@ -197,8 +197,7 @@ export class ObservationFeed {
|
|
|
197
197
|
* queued observation would wait on its own caller.
|
|
198
198
|
*/
|
|
199
199
|
async relocate(stale) {
|
|
200
|
-
const
|
|
201
|
-
const descriptor = describeTarget(stale, options.redact);
|
|
200
|
+
const descriptor = describeTarget(stale);
|
|
202
201
|
if (descriptor === undefined)
|
|
203
202
|
return undefined;
|
|
204
203
|
this.accounting.checkpoint();
|
|
@@ -206,7 +205,7 @@ export class ObservationFeed {
|
|
|
206
205
|
this.publish(observation);
|
|
207
206
|
if (observation.kind === 'pixels')
|
|
208
207
|
return undefined;
|
|
209
|
-
const relocated = relocateDescriptor(descriptor, observation.nodes
|
|
208
|
+
const relocated = relocateDescriptor(descriptor, observation.nodes);
|
|
210
209
|
if (relocated.kind !== 'found')
|
|
211
210
|
return undefined;
|
|
212
211
|
const node = observation.nodes.get(relocated.id);
|
|
@@ -376,11 +375,10 @@ export class ObservationFeed {
|
|
|
376
375
|
const earlier = this.lastSeen(id)?.node;
|
|
377
376
|
if (earlier === undefined)
|
|
378
377
|
return undefined;
|
|
379
|
-
const
|
|
380
|
-
const descriptor = describeTarget(earlier, options.redact);
|
|
378
|
+
const descriptor = describeTarget(earlier);
|
|
381
379
|
if (descriptor === undefined)
|
|
382
380
|
return undefined;
|
|
383
|
-
const relocated = relocateDescriptor(descriptor, latest.nodes
|
|
381
|
+
const relocated = relocateDescriptor(descriptor, latest.nodes);
|
|
384
382
|
return relocated.kind === 'found' ? latest.nodes.get(relocated.id) : undefined;
|
|
385
383
|
}
|
|
386
384
|
}
|
|
@@ -392,4 +390,3 @@ function echoesInput(node) {
|
|
|
392
390
|
export function nodeGone(id, latest) {
|
|
393
391
|
return new AgentError('LOCATOR_NOT_FOUND', `node #${id} is not on the current screen (observation ${latest.revision}); it was removed or never existed`);
|
|
394
392
|
}
|
|
395
|
-
//# sourceMappingURL=observation-feed.js.map
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
/** Observation capture, redaction, and model serialization. */
|
|
2
2
|
import type { Observation, SemanticNode, ViewportSize } from '../engine/surface.ts';
|
|
3
|
+
import type { SecretLedger } from '../internal/redact.ts';
|
|
3
4
|
import type { VisionDegradation } from '../run/steps.ts';
|
|
4
5
|
import type { ExecutorNode, ExecutorObservation, ExecutorPixels } from './executor.ts';
|
|
5
6
|
/** Why pixels the caller asked for are not part of this observation. */
|
|
6
7
|
type PixelsWithheld = 'MASKING_UNPROVEN';
|
|
7
8
|
export type AgentObservation = AgentObservationMetadata & ({
|
|
8
9
|
readonly kind: 'semantic';
|
|
9
|
-
readonly nodes: ReadonlyMap<string,
|
|
10
|
+
readonly nodes: ReadonlyMap<string, RedactedNode>;
|
|
10
11
|
readonly parents: ReadonlyMap<string, string>;
|
|
11
|
-
readonly tree:
|
|
12
|
+
readonly tree: RedactedNode;
|
|
12
13
|
readonly truncated: boolean;
|
|
13
14
|
readonly pixels?: ExecutorPixels | undefined;
|
|
14
15
|
readonly pixelsWithheld?: PixelsWithheld | undefined;
|
|
@@ -37,10 +38,11 @@ interface AgentObservationMetadata {
|
|
|
37
38
|
*
|
|
38
39
|
* Pixels whose masking the engine cannot prove (fewer masked regions than
|
|
39
40
|
* secure nodes) are withheld before they reach a model or disk; the semantic
|
|
40
|
-
* tree never carries secure values.
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
41
|
+
* tree never carries secure values. Every string of every node is redacted
|
|
42
|
+
* once, here (`redactNode`): registered secret values are replaced by their
|
|
43
|
+
* stable secret name, and so is the leading part of one a field the engine
|
|
44
|
+
* cut at its limit ends with. A field holding one keeps no selection, as a
|
|
45
|
+
* secure field keeps none.
|
|
44
46
|
*/
|
|
45
47
|
export declare function prepareObservation(observation: Observation, options: {
|
|
46
48
|
redact: (text: string) => string;
|
|
@@ -52,6 +54,34 @@ export declare function prepareObservation(observation: Observation, options: {
|
|
|
52
54
|
/** The app base URL's origin: link targets on it render as paths, which navigation resolves against it. */
|
|
53
55
|
appOrigin?: string | undefined;
|
|
54
56
|
}): AgentObservation;
|
|
57
|
+
/** What redacts a node: whole values, and the leading part of one a cut field ends with. */
|
|
58
|
+
export type NodeRedaction = Pick<SecretLedger, 'redact' | 'redactCut'>;
|
|
59
|
+
declare const REDACTED: unique symbol;
|
|
60
|
+
/**
|
|
61
|
+
* A semantic node every string of which has passed the attempt's secret
|
|
62
|
+
* ledger (`redactNode`). Model-facing text and executor trees render only
|
|
63
|
+
* from this shape, so a node no redaction touched cannot reach them.
|
|
64
|
+
*/
|
|
65
|
+
export interface RedactedNode extends Omit<SemanticNode, 'children'> {
|
|
66
|
+
readonly [REDACTED]: true;
|
|
67
|
+
readonly children?: readonly RedactedNode[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The node and its subtree with every secret taken out of every field
|
|
71
|
+
* (`NODE_FIELDS`), before any consumer reads it: the model's text, the
|
|
72
|
+
* executor's tree, cache descriptors and anchors, failure evidence.
|
|
73
|
+
*/
|
|
74
|
+
export declare function redactNode(node: SemanticNode, redaction: NodeRedaction): RedactedNode;
|
|
75
|
+
/**
|
|
76
|
+
* An earlier capture's nodes redacted again through the ledger as it is now,
|
|
77
|
+
* each on its own fields, then linked to its redacted-again children, so the
|
|
78
|
+
* tree keeps its shape (which nodes are leaves) without a subtree redacted
|
|
79
|
+
* once per ancestor. A secret a provider resolved after the capture masks
|
|
80
|
+
* text the capture still shows, so the two captures read alike wherever the
|
|
81
|
+
* screen did not change. Redacting redacted text changes nothing else: a
|
|
82
|
+
* marker is never read again.
|
|
83
|
+
*/
|
|
84
|
+
export declare function redactNodesAgain(nodes: ReadonlyMap<string, RedactedNode>, redaction: NodeRedaction): ReadonlyMap<string, RedactedNode>;
|
|
55
85
|
/** Phase metrics describe a node count only when the capture actually read nodes. */
|
|
56
86
|
export declare function observationDetail(observation: AgentObservation): {
|
|
57
87
|
count?: number;
|
|
@@ -82,21 +112,20 @@ export declare const INTERACTIVE_ROLES: ReadonlySet<string>;
|
|
|
82
112
|
*/
|
|
83
113
|
export declare function interactiveNodeCount(observation: Pick<ExecutorObservation, 'text'>): number;
|
|
84
114
|
/**
|
|
85
|
-
* Projects
|
|
86
|
-
*
|
|
87
|
-
* selection at all for a secure node, and a link target bounded as a line
|
|
115
|
+
* Projects a redacted tree onto the executor-facing node shape, the fields
|
|
116
|
+
* the text serialization renders, with a link target bounded as a line
|
|
88
117
|
* bounds it: a target on `appOrigin` keeps that origin and loses no more of
|
|
89
118
|
* its path than the line does. Selectors stay behind — they are relocation
|
|
90
119
|
* material for the trace cache, not something a brain reasons about.
|
|
91
120
|
*/
|
|
92
|
-
export declare function projectTree(node:
|
|
121
|
+
export declare function projectTree(node: RedactedNode, appOrigin?: string): ExecutorNode;
|
|
93
122
|
/**
|
|
94
123
|
* Renders one node as `#id role "name" text="..." value="..." selection="..." [states]`. Role-less text
|
|
95
124
|
* holders omit the role token entirely: on a large screen they are half the
|
|
96
125
|
* lines, and the model needs their text, not a filler word. A link target on
|
|
97
126
|
* `appOrigin`, the app base URL's, renders as its path.
|
|
98
127
|
*/
|
|
99
|
-
export declare function formatNode(node:
|
|
128
|
+
export declare function formatNode(node: RedactedNode, depth: number, appOrigin?: string): string;
|
|
100
129
|
/**
|
|
101
130
|
* What the screen looks like, independent of which observation looked at it.
|
|
102
131
|
*
|
|
@@ -190,4 +219,3 @@ export declare function settleObservation<T>(capture: () => Promise<T>, shapeOf:
|
|
|
190
219
|
*/
|
|
191
220
|
export declare function isTransitionalObservation(observation: AgentObservation): boolean;
|
|
192
221
|
export {};
|
|
193
|
-
//# sourceMappingURL=observation.d.ts.map
|
|
@@ -15,10 +15,11 @@ const UNAVAILABLE_TREE_MARKER = '[semantic capture unavailable: no nodes were re
|
|
|
15
15
|
*
|
|
16
16
|
* Pixels whose masking the engine cannot prove (fewer masked regions than
|
|
17
17
|
* secure nodes) are withheld before they reach a model or disk; the semantic
|
|
18
|
-
* tree never carries secure values.
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
18
|
+
* tree never carries secure values. Every string of every node is redacted
|
|
19
|
+
* once, here (`redactNode`): registered secret values are replaced by their
|
|
20
|
+
* stable secret name, and so is the leading part of one a field the engine
|
|
21
|
+
* cut at its limit ends with. A field holding one keeps no selection, as a
|
|
22
|
+
* secure field keeps none.
|
|
22
23
|
*/
|
|
23
24
|
export function prepareObservation(observation, options) {
|
|
24
25
|
const location = observation.location === undefined ? undefined : options.redact(observation.location);
|
|
@@ -42,11 +43,10 @@ export function prepareObservation(observation, options) {
|
|
|
42
43
|
pixels: pixels.cleared,
|
|
43
44
|
};
|
|
44
45
|
}
|
|
45
|
-
const tree =
|
|
46
|
+
const tree = redactNode(observation.tree, options);
|
|
46
47
|
const nodes = new Map();
|
|
47
48
|
const parents = new Map();
|
|
48
49
|
indexNodes(tree, nodes, parents);
|
|
49
|
-
const redact = options.redact;
|
|
50
50
|
const lines = [];
|
|
51
51
|
const encoder = new TextEncoder();
|
|
52
52
|
// The marker is reserved up front so a truncated observation still fits the
|
|
@@ -63,7 +63,7 @@ export function prepareObservation(observation, options) {
|
|
|
63
63
|
const emit = (node, depth) => {
|
|
64
64
|
if (cutByBudget)
|
|
65
65
|
return;
|
|
66
|
-
const line = formatNode(node, depth,
|
|
66
|
+
const line = formatNode(node, depth, options.appOrigin);
|
|
67
67
|
const size = encoder.encode(`${line}\n`).byteLength;
|
|
68
68
|
if (lines.length > 0 && bytes + size > budget) {
|
|
69
69
|
cutByBudget = true;
|
|
@@ -97,40 +97,94 @@ export function prepareObservation(observation, options) {
|
|
|
97
97
|
...(pixels.withheld === undefined ? {} : { pixelsWithheld: pixels.withheld }),
|
|
98
98
|
};
|
|
99
99
|
}
|
|
100
|
-
/**
|
|
101
|
-
const
|
|
102
|
-
['name', OBSERVED_NAME_LIMIT],
|
|
103
|
-
['text', OBSERVED_TEXT_LIMIT],
|
|
104
|
-
['value', OBSERVED_TEXT_LIMIT],
|
|
105
|
-
['selection', OBSERVED_TEXT_LIMIT],
|
|
106
|
-
];
|
|
100
|
+
/** Leaves a field the engine fills from a closed set (an enum, booleans, numbers) or mints itself as it is. */
|
|
101
|
+
const keep = (value) => value;
|
|
107
102
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
* with nothing changed is returned as it is.
|
|
103
|
+
* How each field of a node is redacted, one entry per field of
|
|
104
|
+
* `SemanticNode`: a field added to the contract does not compile until it
|
|
105
|
+
* says how its text is redacted, and a key an engine sends that the
|
|
106
|
+
* contract does not name is dropped. Every string passes through
|
|
107
|
+
* `redactText`. A secure node keeps no value or selection, and a selection
|
|
108
|
+
* that may show part of a secret is dropped, as a secure field's is. The ref
|
|
109
|
+
* is the engine's own handle, sent back to it to act, never page text.
|
|
116
110
|
*/
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
111
|
+
const NODE_FIELDS = {
|
|
112
|
+
ref: keep,
|
|
113
|
+
role: (role, _node, redaction) => redactText(role, redaction),
|
|
114
|
+
name: (name, _node, redaction) => redactText(name, redaction, OBSERVED_NAME_LIMIT),
|
|
115
|
+
text: (text, _node, redaction) => redactText(text, redaction, OBSERVED_TEXT_LIMIT),
|
|
116
|
+
value: (value, node, redaction) => (node.states?.secure === true ? undefined : redactText(value, redaction, OBSERVED_TEXT_LIMIT)),
|
|
117
|
+
selection: (selection, node, redaction) => node.states?.secure === true || selectionMayHoldSecret(node, selection, redaction)
|
|
118
|
+
? undefined
|
|
119
|
+
: redactText(selection, redaction, OBSERVED_TEXT_LIMIT),
|
|
120
|
+
testId: (testId, _node, redaction) => redactText(testId, redaction),
|
|
121
|
+
inputPurpose: keep,
|
|
122
|
+
states: keep,
|
|
123
|
+
level: keep,
|
|
124
|
+
attributes: (attributes, _node, redaction) => Object.fromEntries(Object.entries(attributes).map(([key, value]) => [redactText(key, redaction), redactText(value, redaction)])),
|
|
125
|
+
rect: keep,
|
|
126
|
+
selector: (selector, _node, redaction) => redactText(selector, redaction),
|
|
127
|
+
framePath: (framePath, _node, redaction) => framePath.map((selector) => redactText(selector, redaction)),
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* The node and its subtree with every secret taken out of every field
|
|
131
|
+
* (`NODE_FIELDS`), before any consumer reads it: the model's text, the
|
|
132
|
+
* executor's tree, cache descriptors and anchors, failure evidence.
|
|
133
|
+
*/
|
|
134
|
+
export function redactNode(node, redaction) {
|
|
135
|
+
const redacted = {};
|
|
136
|
+
for (const [field, value] of Object.entries(node)) {
|
|
137
|
+
if (field === 'children' || value === undefined || !Object.hasOwn(NODE_FIELDS, field))
|
|
123
138
|
continue;
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
139
|
+
const redactValue = NODE_FIELDS[field];
|
|
140
|
+
const result = redactValue(value, node, redaction);
|
|
141
|
+
if (result !== undefined)
|
|
142
|
+
redacted[field] = result;
|
|
127
143
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
144
|
+
if (node.children !== undefined)
|
|
145
|
+
redacted['children'] = node.children.map((child) => redactNode(child, redaction));
|
|
146
|
+
return redacted;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* An earlier capture's nodes redacted again through the ledger as it is now,
|
|
150
|
+
* each on its own fields, then linked to its redacted-again children, so the
|
|
151
|
+
* tree keeps its shape (which nodes are leaves) without a subtree redacted
|
|
152
|
+
* once per ancestor. A secret a provider resolved after the capture masks
|
|
153
|
+
* text the capture still shows, so the two captures read alike wherever the
|
|
154
|
+
* screen did not change. Redacting redacted text changes nothing else: a
|
|
155
|
+
* marker is never read again.
|
|
156
|
+
*/
|
|
157
|
+
export function redactNodesAgain(nodes, redaction) {
|
|
158
|
+
const again = new Map();
|
|
159
|
+
for (const [id, { children: _children, ...fields }] of nodes)
|
|
160
|
+
again.set(id, redactNode(fields, redaction));
|
|
161
|
+
for (const [id, { children }] of nodes) {
|
|
162
|
+
const node = again.get(id);
|
|
163
|
+
if (node === undefined || children === undefined)
|
|
164
|
+
continue;
|
|
165
|
+
node.children = children.map((child) => again.get(child.ref.id)).filter((child) => child !== undefined);
|
|
166
|
+
}
|
|
167
|
+
return again;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* One observed string with every secret taken out, in the form it is written
|
|
171
|
+
* and in the one-line form a line, a descriptor, or an anchor shows it
|
|
172
|
+
* (`collapseText`). A field exactly as long as `limit`, and so possibly cut
|
|
173
|
+
* there, passes through `redactCut`: a secret the cut stopped partway through
|
|
174
|
+
* leaves a leading part at the end that no whole value matches. A shorter
|
|
175
|
+
* field is whole, and so is a longer one (a native input's value, which no
|
|
176
|
+
* engine cuts); both pass through `redact`. A field whose collapsed form
|
|
177
|
+
* still holds a secret (the whitespace inside a value widened) is kept
|
|
178
|
+
* collapsed and redacted, so no later collapse brings the value back.
|
|
179
|
+
*/
|
|
180
|
+
function redactText(text, redaction, limit) {
|
|
181
|
+
const pass = text.length === limit ? redaction.redactCut : redaction.redact;
|
|
182
|
+
const redacted = pass(text);
|
|
183
|
+
const collapsed = collapseText(redacted);
|
|
184
|
+
if (collapsed === redacted)
|
|
185
|
+
return redacted;
|
|
186
|
+
const read = pass(collapsed);
|
|
187
|
+
return read === collapsed ? redacted : read;
|
|
134
188
|
}
|
|
135
189
|
/**
|
|
136
190
|
* Whether a node's selection may show part of a secret, which no whole-value
|
|
@@ -142,7 +196,7 @@ function protectSecrets(node, redaction) {
|
|
|
142
196
|
function selectionMayHoldSecret(node, selection, redaction) {
|
|
143
197
|
const fields = [node.value, node.text].filter((text) => text !== undefined);
|
|
144
198
|
const cut = (text) => text.length === OBSERVED_TEXT_LIMIT;
|
|
145
|
-
if (fields.some((text) => (
|
|
199
|
+
if (fields.some((text) => redactText(text, redaction, OBSERVED_TEXT_LIMIT) !== text))
|
|
146
200
|
return true;
|
|
147
201
|
return fields.some(cut) && !fields.some((text) => text.includes(selection));
|
|
148
202
|
}
|
|
@@ -234,33 +288,29 @@ export function interactiveNodeCount(observation) {
|
|
|
234
288
|
return count;
|
|
235
289
|
}
|
|
236
290
|
/**
|
|
237
|
-
* Projects
|
|
238
|
-
*
|
|
239
|
-
* selection at all for a secure node, and a link target bounded as a line
|
|
291
|
+
* Projects a redacted tree onto the executor-facing node shape, the fields
|
|
292
|
+
* the text serialization renders, with a link target bounded as a line
|
|
240
293
|
* bounds it: a target on `appOrigin` keeps that origin and loses no more of
|
|
241
294
|
* its path than the line does. Selectors stay behind — they are relocation
|
|
242
295
|
* material for the trace cache, not something a brain reasons about.
|
|
243
296
|
*/
|
|
244
|
-
export function projectTree(node,
|
|
245
|
-
const secure = node.states?.secure === true;
|
|
297
|
+
export function projectTree(node, appOrigin) {
|
|
246
298
|
const attributes = node.attributes === undefined
|
|
247
299
|
? undefined
|
|
248
|
-
: Object.fromEntries(Object.entries(node.attributes).map(([key, value]) => [key, key === 'href' ? treeHref(
|
|
300
|
+
: Object.fromEntries(Object.entries(node.attributes).map(([key, value]) => [key, key === 'href' ? treeHref(value, appOrigin) : value]));
|
|
249
301
|
return {
|
|
250
302
|
id: node.ref.id,
|
|
251
303
|
...(node.role === undefined ? {} : { role: node.role }),
|
|
252
|
-
...(node.name === undefined ? {} : { name:
|
|
253
|
-
...(node.text === undefined ? {} : { text:
|
|
254
|
-
...(node.value === undefined
|
|
255
|
-
...(node.selection === undefined
|
|
304
|
+
...(node.name === undefined ? {} : { name: node.name }),
|
|
305
|
+
...(node.text === undefined ? {} : { text: node.text }),
|
|
306
|
+
...(node.value === undefined ? {} : { value: node.value }),
|
|
307
|
+
...(node.selection === undefined ? {} : { selection: node.selection }),
|
|
256
308
|
...(node.inputPurpose === undefined ? {} : { inputPurpose: node.inputPurpose }),
|
|
257
309
|
...(node.states === undefined ? {} : { states: node.states }),
|
|
258
310
|
...(attributes === undefined ? {} : { attributes }),
|
|
259
311
|
...(node.rect === undefined ? {} : { rect: node.rect }),
|
|
260
312
|
...(node.framePath === undefined ? {} : { framePath: node.framePath }),
|
|
261
|
-
...(node.children === undefined
|
|
262
|
-
? {}
|
|
263
|
-
: { children: node.children.map((child) => projectTree(child, redact, appOrigin)) }),
|
|
313
|
+
...(node.children === undefined ? {} : { children: node.children.map((child) => projectTree(child, appOrigin)) }),
|
|
264
314
|
};
|
|
265
315
|
}
|
|
266
316
|
/** Depth beyond this renders flat; deep chrome must not buy tokens with spaces. */
|
|
@@ -273,37 +323,37 @@ const MAX_HREF_LENGTH = 256;
|
|
|
273
323
|
* lines, and the model needs their text, not a filler word. A link target on
|
|
274
324
|
* `appOrigin`, the app base URL's, renders as its path.
|
|
275
325
|
*/
|
|
276
|
-
export function formatNode(node, depth,
|
|
326
|
+
export function formatNode(node, depth, appOrigin) {
|
|
277
327
|
const parts = [`#${node.ref.id}`];
|
|
278
328
|
if (node.role !== undefined && node.role !== '')
|
|
279
329
|
parts.push(node.role);
|
|
280
330
|
if (node.name !== undefined && node.name !== '')
|
|
281
|
-
parts.push(JSON.stringify(
|
|
331
|
+
parts.push(JSON.stringify(node.name));
|
|
282
332
|
const text = node.text === undefined ? '' : collapseText(node.text);
|
|
283
333
|
if (text !== '' && text !== node.name)
|
|
284
|
-
parts.push(`text=${JSON.stringify(
|
|
334
|
+
parts.push(`text=${JSON.stringify(text)}`);
|
|
285
335
|
// Disambiguators the model needs when role and name repeat. The engine has
|
|
286
336
|
// already reduced href to origin and path.
|
|
287
337
|
if (node.testId !== undefined && node.testId !== '')
|
|
288
338
|
parts.push(`testid=${JSON.stringify(node.testId)}`);
|
|
289
339
|
const href = node.attributes?.['href'];
|
|
290
340
|
if (href !== undefined && href !== '')
|
|
291
|
-
parts.push(`href=${JSON.stringify(renderHref(
|
|
341
|
+
parts.push(`href=${JSON.stringify(renderHref(href, appOrigin))}`);
|
|
292
342
|
const placeholder = node.attributes?.['placeholder'];
|
|
293
343
|
if (placeholder !== undefined && placeholder !== '' && (node.name ?? '') === '') {
|
|
294
|
-
parts.push(`placeholder=${JSON.stringify(
|
|
344
|
+
parts.push(`placeholder=${JSON.stringify(placeholder)}`);
|
|
295
345
|
}
|
|
296
346
|
if (node.states?.secure === true) {
|
|
297
347
|
parts.push('value=<secure>');
|
|
298
348
|
}
|
|
299
349
|
else if (node.value !== undefined && node.value !== '') {
|
|
300
|
-
parts.push(`value=${JSON.stringify(
|
|
350
|
+
parts.push(`value=${JSON.stringify(node.value)}`);
|
|
301
351
|
}
|
|
302
352
|
// What a Shift+Arrow press selected: without it the model extends a
|
|
303
353
|
// selection blind and cannot tell one word from its neighbour. Rendered
|
|
304
354
|
// verbatim (escaped), since a selected space or newline is a selection too.
|
|
305
|
-
if (node.selection !== undefined && node.selection !== ''
|
|
306
|
-
parts.push(`selection=${JSON.stringify(
|
|
355
|
+
if (node.selection !== undefined && node.selection !== '') {
|
|
356
|
+
parts.push(`selection=${JSON.stringify(node.selection)}`);
|
|
307
357
|
}
|
|
308
358
|
if (node.inputPurpose !== undefined && node.inputPurpose !== 'none') {
|
|
309
359
|
parts.push(`purpose=${node.inputPurpose}`);
|
|
@@ -474,4 +524,3 @@ function indexNodes(node, into, parents) {
|
|
|
474
524
|
indexNodes(child, into, parents);
|
|
475
525
|
}
|
|
476
526
|
}
|
|
477
|
-
//# sourceMappingURL=observation.js.map
|