@testdriverai/agent 7.8.0-test.38
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/.claude/settings.local.json +7 -0
- package/.env.example +4 -0
- package/.prettierignore +4 -0
- package/.prettierrc +1 -0
- package/CHANGELOG.md +953 -0
- package/README.md +81 -0
- package/agent/events.js +135 -0
- package/agent/index.js +2450 -0
- package/agent/interface.js +35 -0
- package/agent/lib/analytics.js +22 -0
- package/agent/lib/censorship.js +75 -0
- package/agent/lib/commander.js +246 -0
- package/agent/lib/commands.js +1684 -0
- package/agent/lib/config.js +60 -0
- package/agent/lib/generator.js +91 -0
- package/agent/lib/http.js +144 -0
- package/agent/lib/logger.js +56 -0
- package/agent/lib/outputs.js +29 -0
- package/agent/lib/parser.js +209 -0
- package/agent/lib/redraw.js +386 -0
- package/agent/lib/resources/cursor-2.png +0 -0
- package/agent/lib/sandbox.js +1104 -0
- package/agent/lib/sdk.js +633 -0
- package/agent/lib/session.js +25 -0
- package/agent/lib/source-mapper.js +342 -0
- package/agent/lib/subimage/index.js +77 -0
- package/agent/lib/subimage/opencv.js +69 -0
- package/agent/lib/system.js +204 -0
- package/agent/lib/theme.js +14 -0
- package/agent/lib/valid-version.js +21 -0
- package/agent/lib/validation.js +169 -0
- package/ai/.claude-plugin/plugin.json +9 -0
- package/ai/agents/testdriver.md +638 -0
- package/ai/skills/testdriver-ai/SKILL.md +204 -0
- package/ai/skills/testdriver-assert/SKILL.md +315 -0
- package/ai/skills/testdriver-aws-setup/SKILL.md +448 -0
- package/ai/skills/testdriver-cache/SKILL.md +221 -0
- package/ai/skills/testdriver-caching/SKILL.md +124 -0
- package/ai/skills/testdriver-captcha/SKILL.md +158 -0
- package/ai/skills/testdriver-ci-cd/SKILL.md +602 -0
- package/ai/skills/testdriver-click/SKILL.md +286 -0
- package/ai/skills/testdriver-client/SKILL.md +477 -0
- package/ai/skills/testdriver-cloud/SKILL.md +119 -0
- package/ai/skills/testdriver-customizing-devices/SKILL.md +319 -0
- package/ai/skills/testdriver-dashcam/SKILL.md +418 -0
- package/ai/skills/testdriver-debugging-with-screenshots/SKILL.md +401 -0
- package/ai/skills/testdriver-device-config/SKILL.md +317 -0
- package/ai/skills/testdriver-double-click/SKILL.md +102 -0
- package/ai/skills/testdriver-elements/SKILL.md +605 -0
- package/ai/skills/testdriver-enterprise/SKILL.md +114 -0
- package/ai/skills/testdriver-errors/SKILL.md +246 -0
- package/ai/skills/testdriver-events/SKILL.md +356 -0
- package/ai/skills/testdriver-examples/SKILL.md +7 -0
- package/ai/skills/testdriver-exec/SKILL.md +317 -0
- package/ai/skills/testdriver-find/SKILL.md +829 -0
- package/ai/skills/testdriver-focus-application/SKILL.md +293 -0
- package/ai/skills/testdriver-generating-tests/SKILL.md +36 -0
- package/ai/skills/testdriver-hover/SKILL.md +278 -0
- package/ai/skills/testdriver-locating-elements/SKILL.md +71 -0
- package/ai/skills/testdriver-making-assertions/SKILL.md +32 -0
- package/ai/skills/testdriver-mcp/SKILL.md +7 -0
- package/ai/skills/testdriver-mcp-workflow/SKILL.md +410 -0
- package/ai/skills/testdriver-mouse-down/SKILL.md +161 -0
- package/ai/skills/testdriver-mouse-up/SKILL.md +164 -0
- package/ai/skills/testdriver-parse/SKILL.md +236 -0
- package/ai/skills/testdriver-performing-actions/SKILL.md +54 -0
- package/ai/skills/testdriver-press-keys/SKILL.md +348 -0
- package/ai/skills/testdriver-provision/SKILL.md +331 -0
- package/ai/skills/testdriver-quickstart/SKILL.md +144 -0
- package/ai/skills/testdriver-redraw/SKILL.md +214 -0
- package/ai/skills/testdriver-reusable-code/SKILL.md +249 -0
- package/ai/skills/testdriver-right-click/SKILL.md +123 -0
- package/ai/skills/testdriver-running-tests/SKILL.md +185 -0
- package/ai/skills/testdriver-screenshot/SKILL.md +248 -0
- package/ai/skills/testdriver-screenshots/SKILL.md +184 -0
- package/ai/skills/testdriver-scroll/SKILL.md +335 -0
- package/ai/skills/testdriver-secrets/SKILL.md +115 -0
- package/ai/skills/testdriver-self-hosted/SKILL.md +65 -0
- package/ai/skills/testdriver-test-writer/SKILL.md +448 -0
- package/ai/skills/testdriver-testdriver/SKILL.md +628 -0
- package/ai/skills/testdriver-testdriver-mechanic/SKILL.md +165 -0
- package/ai/skills/testdriver-type/SKILL.md +357 -0
- package/ai/skills/testdriver-variables/SKILL.md +111 -0
- package/ai/skills/testdriver-wait/SKILL.md +50 -0
- package/ai/skills/testdriver-waiting-for-elements/SKILL.md +90 -0
- package/ai/skills/testdriver-what-is-testdriver/SKILL.md +54 -0
- package/bin/testdriverai.js +22 -0
- package/debugger/bg.png +0 -0
- package/debugger/icon.png +0 -0
- package/debugger/index.html +469 -0
- package/debugger/td.png +0 -0
- package/debugger/tray-buffered.png +0 -0
- package/debugger/tray.png +0 -0
- package/docs/GITHUB_COMMENTS.md +330 -0
- package/docs/GITHUB_COMMENTS_ANNOUNCEMENT.md +167 -0
- package/docs/QUICK-START-GITHUB-COMMENTS.md +84 -0
- package/docs/TEST-GITHUB-COMMENTS.md +129 -0
- package/docs/_data/examples-manifest.json +177 -0
- package/docs/_data/examples-manifest.schema.json +41 -0
- package/docs/_scripts/extract-example-urls.js +165 -0
- package/docs/_scripts/generate-examples.js +560 -0
- package/docs/_scripts/generate-skills.js +154 -0
- package/docs/_scripts/link-replacer.js +164 -0
- package/docs/_scripts/upload-docs-to-openai.js +284 -0
- package/docs/changelog.mdx +161 -0
- package/docs/claude-mcp-plugin.mdx +160 -0
- package/docs/docs.json +442 -0
- package/docs/github-integration-setup.md +266 -0
- package/docs/guide/best-practices-polling.mdx +174 -0
- package/docs/images/content/account/newprojectsettings.png +0 -0
- package/docs/images/content/account/projectpage.png +0 -0
- package/docs/images/content/account/projectreplays.png +0 -0
- package/docs/images/content/account/team-manage.png +0 -0
- package/docs/images/content/account/teampage.png +0 -0
- package/docs/images/content/extension/cursor.svg +1 -0
- package/docs/images/content/extension/vscode.svg +57 -0
- package/docs/images/content/extension/windsurf.svg +3 -0
- package/docs/images/content/parse/output.png +0 -0
- package/docs/images/content/self-hosted/launchtemplateid.png +0 -0
- package/docs/images/content/side-by-side.png +0 -0
- package/docs/images/content/vscode/ide-full.png +0 -0
- package/docs/images/content/vscode/running.png +0 -0
- package/docs/images/content/vscode/v7-chat.png +0 -0
- package/docs/images/content/vscode/v7-choose-agent.png +0 -0
- package/docs/images/content/vscode/v7-full.png +0 -0
- package/docs/images/content/vscode/v7-onboarding.png +0 -0
- package/docs/images/content/vscode/vscode-2-assert.png +0 -0
- package/docs/images/content/vscode/vscode-agent-preview.png +0 -0
- package/docs/images/content/vscode/vscode-copilot-ask.png +0 -0
- package/docs/images/content/vscode/vscode-file-creation.png +0 -0
- package/docs/images/content/vscode/vscode-install.png +0 -0
- package/docs/images/content/vscode/vscode-overview.png +0 -0
- package/docs/images/content/vscode/vscode-setup-walkthrough.png +0 -0
- package/docs/images/content/vscode/vscode-stopchat.png +0 -0
- package/docs/images/content/vscode/vscode-stoptest.png +0 -0
- package/docs/images/content/vscode/vscode-tdservice.png +0 -0
- package/docs/images/content/vscode/vscode-test-output.png +0 -0
- package/docs/images/content/vscode/vscode-testhistory.png +0 -0
- package/docs/images/content/vscode/vscode-testpane-runtests.png +0 -0
- package/docs/images/content/vscode/vscode-testpane.png +0 -0
- package/docs/images/template/dark.png +0 -0
- package/docs/images/template/icon.png +0 -0
- package/docs/images/template/light.png +0 -0
- package/docs/snippets/calendar-link.mdx +4 -0
- package/docs/snippets/gitignore-warning.mdx +7 -0
- package/docs/snippets/lifecycle-warning.mdx +6 -0
- package/docs/snippets/test-prereqs.mdx +12 -0
- package/docs/snippets/tests/assert-replay.mdx +7 -0
- package/docs/snippets/tests/assert-yaml.mdx +8 -0
- package/docs/snippets/tests/exec-js-replay.mdx +7 -0
- package/docs/snippets/tests/exec-js-yaml.mdx +32 -0
- package/docs/snippets/tests/exec-shell-replay.mdx +7 -0
- package/docs/snippets/tests/exec-shell-yaml.mdx +15 -0
- package/docs/snippets/tests/hover-image-replay.mdx +7 -0
- package/docs/snippets/tests/hover-image-yaml.mdx +17 -0
- package/docs/snippets/tests/hover-text-replay.mdx +7 -0
- package/docs/snippets/tests/hover-text-with-description-replay.mdx +7 -0
- package/docs/snippets/tests/hover-text-with-description-yaml.mdx +24 -0
- package/docs/snippets/tests/hover-text-yaml.mdx +14 -0
- package/docs/snippets/tests/match-image-replay.mdx +7 -0
- package/docs/snippets/tests/match-image-yaml.mdx +17 -0
- package/docs/snippets/tests/press-keys-replay.mdx +7 -0
- package/docs/snippets/tests/press-keys-yaml.mdx +36 -0
- package/docs/snippets/tests/remember-replay.mdx +7 -0
- package/docs/snippets/tests/remember-yaml.mdx +28 -0
- package/docs/snippets/tests/scroll-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-image-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-image-yaml.mdx +14 -0
- package/docs/snippets/tests/scroll-until-text-replay.mdx +7 -0
- package/docs/snippets/tests/scroll-until-text-yaml.mdx +17 -0
- package/docs/snippets/tests/scroll-yaml.mdx +30 -0
- package/docs/snippets/tests/type-repeated-replay.mdx +7 -0
- package/docs/snippets/tests/type-repeated-yaml.mdx +22 -0
- package/docs/snippets/tests/type-replay.mdx +7 -0
- package/docs/snippets/tests/type-yaml.mdx +28 -0
- package/docs/snippets/tests/wait-for-image-replay.mdx +7 -0
- package/docs/snippets/tests/wait-for-image-yaml.mdx +18 -0
- package/docs/snippets/tests/wait-for-text-replay.mdx +7 -0
- package/docs/snippets/tests/wait-for-text-yaml.mdx +18 -0
- package/docs/snippets/tests/wait-replay.mdx +7 -0
- package/docs/snippets/tests/wait-yaml.mdx +13 -0
- package/docs/styles.css +65 -0
- package/docs/v6/account/dashboard.mdx +16 -0
- package/docs/v6/account/enterprise.mdx +110 -0
- package/docs/v6/account/pricing.mdx +33 -0
- package/docs/v6/account/projects.mdx +33 -0
- package/docs/v6/account/team.mdx +35 -0
- package/docs/v6/action/ami.mdx +109 -0
- package/docs/v6/action/performance.mdx +105 -0
- package/docs/v6/action/secrets.mdx +93 -0
- package/docs/v6/apps/chrome-extensions.mdx +48 -0
- package/docs/v6/apps/desktop-apps.mdx +93 -0
- package/docs/v6/apps/mobile-apps.mdx +26 -0
- package/docs/v6/apps/static-websites.mdx +54 -0
- package/docs/v6/apps/tauri-apps.mdx +361 -0
- package/docs/v6/bugs/jira.mdx +232 -0
- package/docs/v6/cli/overview.mdx +66 -0
- package/docs/v6/commands/assert.mdx +45 -0
- package/docs/v6/commands/exec.mdx +276 -0
- package/docs/v6/commands/focus-application.mdx +44 -0
- package/docs/v6/commands/hover-image.mdx +69 -0
- package/docs/v6/commands/hover-text.mdx +47 -0
- package/docs/v6/commands/if.mdx +53 -0
- package/docs/v6/commands/match-image.mdx +67 -0
- package/docs/v6/commands/press-keys.mdx +87 -0
- package/docs/v6/commands/remember.mdx +49 -0
- package/docs/v6/commands/run.mdx +44 -0
- package/docs/v6/commands/scroll-until-image.mdx +66 -0
- package/docs/v6/commands/scroll-until-text.mdx +60 -0
- package/docs/v6/commands/scroll.mdx +69 -0
- package/docs/v6/commands/type.mdx +45 -0
- package/docs/v6/commands/wait-for-image.mdx +54 -0
- package/docs/v6/commands/wait-for-text.mdx +48 -0
- package/docs/v6/commands/wait.mdx +45 -0
- package/docs/v6/exporting/junit.mdx +218 -0
- package/docs/v6/exporting/playwright.mdx +197 -0
- package/docs/v6/features/auto-healing.mdx +144 -0
- package/docs/v6/features/generation.mdx +116 -0
- package/docs/v6/features/parallel-testing.mdx +151 -0
- package/docs/v6/features/reusable-snippets.mdx +131 -0
- package/docs/v6/features/selectorless.mdx +80 -0
- package/docs/v6/features/visual-assertions.mdx +139 -0
- package/docs/v6/getting-started/ci.mdx +146 -0
- package/docs/v6/getting-started/cli.mdx +91 -0
- package/docs/v6/getting-started/editing.mdx +100 -0
- package/docs/v6/getting-started/playwright.mdx +342 -0
- package/docs/v6/getting-started/running.mdx +48 -0
- package/docs/v6/getting-started/self-hosting.mdx +408 -0
- package/docs/v6/getting-started/vscode.mdx +88 -0
- package/docs/v6/guide/assertions.mdx +189 -0
- package/docs/v6/guide/authentication.mdx +136 -0
- package/docs/v6/guide/code.mdx +65 -0
- package/docs/v6/guide/dashcam.mdx +118 -0
- package/docs/v6/guide/environment-variables.mdx +26 -0
- package/docs/v6/guide/lifecycle.mdx +242 -0
- package/docs/v6/guide/locating.mdx +141 -0
- package/docs/v6/guide/protips.mdx +43 -0
- package/docs/v6/guide/variables.mdx +143 -0
- package/docs/v6/guide/waiting.mdx +130 -0
- package/docs/v6/importing/csv.mdx +196 -0
- package/docs/v6/importing/gherkin.mdx +143 -0
- package/docs/v6/importing/jira.mdx +164 -0
- package/docs/v6/importing/testrail.mdx +162 -0
- package/docs/v6/integrations/electron.mdx +146 -0
- package/docs/v6/integrations/netlify.mdx +100 -0
- package/docs/v6/integrations/vercel.mdx +125 -0
- package/docs/v6/interactive/explore.mdx +99 -0
- package/docs/v6/interactive/run.mdx +52 -0
- package/docs/v6/interactive/save.mdx +63 -0
- package/docs/v6/overview/comparison.mdx +101 -0
- package/docs/v6/overview/faq.mdx +162 -0
- package/docs/v6/overview/performance.mdx +52 -0
- package/docs/v6/overview/quickstart.mdx +137 -0
- package/docs/v6/overview/what-is-testdriver.mdx +85 -0
- package/docs/v6/scenarios/ai-chatbot.mdx +28 -0
- package/docs/v6/scenarios/cookie-banner.mdx +32 -0
- package/docs/v6/scenarios/file-upload.mdx +33 -0
- package/docs/v6/scenarios/form-filling.mdx +32 -0
- package/docs/v6/scenarios/log-in.mdx +75 -0
- package/docs/v6/scenarios/pdf-generation.mdx +25 -0
- package/docs/v6/scenarios/spell-check.mdx +22 -0
- package/docs/v6/security/action.mdx +84 -0
- package/docs/v6/security/agent.mdx +73 -0
- package/docs/v6/security/platform.mdx +77 -0
- package/docs/v6/tutorials/advanced-test.mdx +81 -0
- package/docs/v6/tutorials/basic-test.mdx +45 -0
- package/docs/v7/_drafts/agents.mdx +843 -0
- package/docs/v7/_drafts/architecture.mdx +399 -0
- package/docs/v7/_drafts/auto-cache-key.mdx +167 -0
- package/docs/v7/_drafts/awesome-logs-quick-ref.mdx +100 -0
- package/docs/v7/_drafts/best-practices.mdx +486 -0
- package/docs/v7/_drafts/caching-ai.mdx +215 -0
- package/docs/v7/_drafts/caching-selectors.mdx +424 -0
- package/docs/v7/_drafts/caching.mdx +366 -0
- package/docs/v7/_drafts/cli-to-sdk-migration.mdx +425 -0
- package/docs/v7/_drafts/commands/assert.mdx +45 -0
- package/docs/v7/_drafts/commands/exec.mdx +276 -0
- package/docs/v7/_drafts/commands/focus-application.mdx +44 -0
- package/docs/v7/_drafts/commands/hover-image.mdx +69 -0
- package/docs/v7/_drafts/commands/hover-text.mdx +47 -0
- package/docs/v7/_drafts/commands/if.mdx +53 -0
- package/docs/v7/_drafts/commands/match-image.mdx +67 -0
- package/docs/v7/_drafts/commands/press-keys.mdx +87 -0
- package/docs/v7/_drafts/commands/remember.mdx +49 -0
- package/docs/v7/_drafts/commands/run.mdx +44 -0
- package/docs/v7/_drafts/commands/scroll-until-image.mdx +66 -0
- package/docs/v7/_drafts/commands/scroll-until-text.mdx +60 -0
- package/docs/v7/_drafts/commands/scroll.mdx +69 -0
- package/docs/v7/_drafts/commands/type.mdx +45 -0
- package/docs/v7/_drafts/commands/wait-for-image.mdx +54 -0
- package/docs/v7/_drafts/commands/wait-for-text.mdx +48 -0
- package/docs/v7/_drafts/commands/wait.mdx +45 -0
- package/docs/v7/_drafts/configuration.mdx +378 -0
- package/docs/v7/_drafts/contributing.mdx +174 -0
- package/docs/v7/_drafts/core.mdx +458 -0
- package/docs/v7/_drafts/dashcam-title-feature.mdx +89 -0
- package/docs/v7/_drafts/debugging.mdx +349 -0
- package/docs/v7/_drafts/error-handling.mdx +501 -0
- package/docs/v7/_drafts/faq.mdx +393 -0
- package/docs/v7/_drafts/hooks.mdx +360 -0
- package/docs/v7/_drafts/init-command.mdx +95 -0
- package/docs/v7/_drafts/installation.mdx +420 -0
- package/docs/v7/_drafts/migration.mdx +562 -0
- package/docs/v7/_drafts/observable.mdx +604 -0
- package/docs/v7/_drafts/playwright.mdx +342 -0
- package/docs/v7/_drafts/plugin-migration.mdx +220 -0
- package/docs/v7/_drafts/powerful.mdx +419 -0
- package/docs/v7/_drafts/presets.mdx +210 -0
- package/docs/v7/_drafts/progressive-disclosure.mdx +230 -0
- package/docs/v7/_drafts/prompt-cache.mdx +200 -0
- package/docs/v7/_drafts/provision.mdx +390 -0
- package/docs/v7/_drafts/quick-start-test-recording.mdx +214 -0
- package/docs/v7/_drafts/readme.mdx +135 -0
- package/docs/v7/_drafts/reports.mdx +414 -0
- package/docs/v7/_drafts/scalable.mdx +763 -0
- package/docs/v7/_drafts/screenshot.mdx +155 -0
- package/docs/v7/_drafts/sdk-awesome-logs.mdx +468 -0
- package/docs/v7/_drafts/sdk-browser-rendering.mdx +167 -0
- package/docs/v7/_drafts/sdk-migration.mdx +474 -0
- package/docs/v7/_drafts/sdk-v7-complete.mdx +345 -0
- package/docs/v7/_drafts/self-hosting.mdx +369 -0
- package/docs/v7/_drafts/test-recording.mdx +382 -0
- package/docs/v7/_drafts/troubleshooting.mdx +526 -0
- package/docs/v7/_drafts/vitest-plugin.mdx +477 -0
- package/docs/v7/_drafts/vitest.mdx +535 -0
- package/docs/v7/_drafts/writing-tests.mdx +25 -0
- package/docs/v7/ai.mdx +205 -0
- package/docs/v7/assert.mdx +316 -0
- package/docs/v7/aws-setup.mdx +449 -0
- package/docs/v7/cache.mdx +223 -0
- package/docs/v7/caching.mdx +128 -0
- package/docs/v7/captcha.mdx +159 -0
- package/docs/v7/ci-cd.mdx +603 -0
- package/docs/v7/click.mdx +287 -0
- package/docs/v7/client.mdx +478 -0
- package/docs/v7/copilot/auto-healing.mdx +265 -0
- package/docs/v7/copilot/creating-tests.mdx +156 -0
- package/docs/v7/copilot/github.mdx +143 -0
- package/docs/v7/copilot/running-tests.mdx +149 -0
- package/docs/v7/copilot/setup.mdx +143 -0
- package/docs/v7/customizing-devices.mdx +319 -0
- package/docs/v7/dashcam.mdx +419 -0
- package/docs/v7/debugging-with-screenshots.mdx +402 -0
- package/docs/v7/device-config.mdx +317 -0
- package/docs/v7/double-click.mdx +102 -0
- package/docs/v7/elements.mdx +606 -0
- package/docs/v7/enterprise.mdx +9 -0
- package/docs/v7/errors.mdx +248 -0
- package/docs/v7/events.mdx +358 -0
- package/docs/v7/examples/ai.mdx +72 -0
- package/docs/v7/examples/assert.mdx +72 -0
- package/docs/v7/examples/captcha-api.mdx +92 -0
- package/docs/v7/examples/chrome-extension.mdx +132 -0
- package/docs/v7/examples/drag-and-drop.mdx +100 -0
- package/docs/v7/examples/element-not-found.mdx +67 -0
- package/docs/v7/examples/exec-output.mdx +85 -0
- package/docs/v7/examples/exec-pwsh.mdx +83 -0
- package/docs/v7/examples/focus-window.mdx +62 -0
- package/docs/v7/examples/hover-image.mdx +94 -0
- package/docs/v7/examples/hover-text.mdx +69 -0
- package/docs/v7/examples/installer.mdx +91 -0
- package/docs/v7/examples/launch-vscode-linux.mdx +101 -0
- package/docs/v7/examples/match-image.mdx +96 -0
- package/docs/v7/examples/press-keys.mdx +92 -0
- package/docs/v7/examples/scroll-keyboard.mdx +79 -0
- package/docs/v7/examples/scroll-until-image.mdx +81 -0
- package/docs/v7/examples/scroll-until-text.mdx +109 -0
- package/docs/v7/examples/scroll.mdx +81 -0
- package/docs/v7/examples/type.mdx +92 -0
- package/docs/v7/examples/windows-installer.mdx +89 -0
- package/docs/v7/exec.mdx +318 -0
- package/docs/v7/find.mdx +830 -0
- package/docs/v7/focus-application.mdx +294 -0
- package/docs/v7/generating-tests.mdx +36 -0
- package/docs/v7/hosted.mdx +158 -0
- package/docs/v7/hover.mdx +279 -0
- package/docs/v7/locating-elements.mdx +71 -0
- package/docs/v7/making-assertions.mdx +32 -0
- package/docs/v7/mcp.mdx +9 -0
- package/docs/v7/mouse-down.mdx +161 -0
- package/docs/v7/mouse-up.mdx +164 -0
- package/docs/v7/parse.mdx +237 -0
- package/docs/v7/performing-actions.mdx +54 -0
- package/docs/v7/press-keys.mdx +349 -0
- package/docs/v7/provision.mdx +333 -0
- package/docs/v7/quickstart.mdx +173 -0
- package/docs/v7/redraw.mdx +216 -0
- package/docs/v7/reusable-code.mdx +249 -0
- package/docs/v7/right-click.mdx +123 -0
- package/docs/v7/running-tests.mdx +185 -0
- package/docs/v7/screenshot.mdx +249 -0
- package/docs/v7/screenshots.mdx +186 -0
- package/docs/v7/scroll.mdx +336 -0
- package/docs/v7/secrets.mdx +115 -0
- package/docs/v7/self-hosted.mdx +149 -0
- package/docs/v7/type.mdx +358 -0
- package/docs/v7/variables.mdx +111 -0
- package/docs/v7/wait.mdx +52 -0
- package/docs/v7/waiting-for-elements.mdx +90 -0
- package/docs/v7/what-is-testdriver.mdx +54 -0
- package/eslint.config.js +67 -0
- package/examples/ai.test.mjs +31 -0
- package/examples/assert.test.mjs +47 -0
- package/examples/chrome-extension.test.mjs +97 -0
- package/examples/config.mjs +5 -0
- package/examples/element-not-found.test.mjs +27 -0
- package/examples/exec-output.test.mjs +60 -0
- package/examples/exec-pwsh.test.mjs +58 -0
- package/examples/findall-coffee-icons.test.mjs +42 -0
- package/examples/focus-window.test.mjs +37 -0
- package/examples/formatted-logging.test.mjs +27 -0
- package/examples/hover-image.test.mjs +53 -0
- package/examples/hover-text-with-description.test.mjs +57 -0
- package/examples/hover-text.test.mjs +28 -0
- package/examples/installer.test.mjs +50 -0
- package/examples/launch-vscode-linux.test.mjs +55 -0
- package/examples/match-image.test.mjs +55 -0
- package/examples/parse.test.mjs +19 -0
- package/examples/press-keys.test.mjs +44 -0
- package/examples/prompt.test.mjs +34 -0
- package/examples/scroll-keyboard.test.mjs +38 -0
- package/examples/scroll-until-image.test.mjs +40 -0
- package/examples/scroll.test.mjs +42 -0
- package/examples/type.test.mjs +46 -0
- package/examples/windows-installer.test.mjs +54 -0
- package/index.js +2 -0
- package/interfaces/cli/commands/init.js +438 -0
- package/interfaces/cli/commands/setup.js +382 -0
- package/interfaces/cli/lib/base.js +285 -0
- package/interfaces/cli.js +20 -0
- package/interfaces/junit-reporter.js +290 -0
- package/interfaces/logger.js +388 -0
- package/interfaces/readline.js +234 -0
- package/interfaces/shared-test-state.mjs +64 -0
- package/interfaces/vitest-plugin.d.ts +115 -0
- package/interfaces/vitest-plugin.mjs +1698 -0
- package/lib/captcha/solver.js +358 -0
- package/lib/core/Dashcam.js +533 -0
- package/lib/core/index.d.ts +172 -0
- package/lib/core/index.js +12 -0
- package/lib/environments.json +18 -0
- package/lib/github-comment-formatter.js +263 -0
- package/lib/github-comment.mjs +452 -0
- package/lib/init-project.js +575 -0
- package/lib/presets/index.mjs +331 -0
- package/lib/resolve-channel.js +46 -0
- package/lib/sentry.js +417 -0
- package/lib/vitest/hooks.d.ts +57 -0
- package/lib/vitest/hooks.mjs +674 -0
- package/lib/vitest/setup-aws.mjs +247 -0
- package/lib/vitest/setup-self-hosted.mjs +151 -0
- package/lib/vitest/setup.mjs +46 -0
- package/manual/captcha-api.test.mjs +51 -0
- package/manual/drag-and-drop.test.mjs +59 -0
- package/manual/flake-diffthreshold-001.test.mjs +9 -0
- package/manual/flake-diffthreshold-01.test.mjs +9 -0
- package/manual/flake-diffthreshold-05.test.mjs +9 -0
- package/manual/flake-noredraw-cache.test.mjs +9 -0
- package/manual/flake-noredraw-nocache.test.mjs +9 -0
- package/manual/flake-redraw-cache.test.mjs +9 -0
- package/manual/flake-redraw-nocache.test.mjs +9 -0
- package/manual/flake-rocket-match.test.mjs +30 -0
- package/manual/flake-shared.mjs +51 -0
- package/manual/no-provision.test.mjs +31 -0
- package/manual/packer-hover-image.test.mjs +176 -0
- package/manual/scroll-until-text.test.mjs +68 -0
- package/manual/test-init-command.js +223 -0
- package/mcp-server/README.md +322 -0
- package/mcp-server/dist/codegen.d.ts +9 -0
- package/mcp-server/dist/codegen.js +165 -0
- package/mcp-server/dist/mcp-app.html +114 -0
- package/mcp-server/dist/package.json +1 -0
- package/mcp-server/dist/provision-types.d.ts +290 -0
- package/mcp-server/dist/provision-types.js +174 -0
- package/mcp-server/dist/server.d.ts +6 -0
- package/mcp-server/dist/server.mjs +1925 -0
- package/mcp-server/dist/session.d.ts +85 -0
- package/mcp-server/dist/session.js +152 -0
- package/mcp-server/mcp-app.html +28 -0
- package/mcp-server/mcp-config.example.json +19 -0
- package/mcp-server/package-lock.json +4027 -0
- package/mcp-server/package.json +31 -0
- package/mcp-server/src/codegen.ts +189 -0
- package/mcp-server/src/mcp-app.css +360 -0
- package/mcp-server/src/mcp-app.ts +547 -0
- package/mcp-server/src/provision-types.ts +209 -0
- package/mcp-server/src/server.ts +2391 -0
- package/mcp-server/src/session.ts +194 -0
- package/mcp-server/tsconfig.json +16 -0
- package/mcp-server/vite.config.ts +23 -0
- package/package.json +158 -0
- package/schema.json +1046 -0
- package/scripts/generate-skills.js +94 -0
- package/sdk-log-formatter.js +1157 -0
- package/sdk.d.ts +1486 -0
- package/sdk.js +4336 -0
- package/setup/aws/cloudformation.yaml +463 -0
- package/setup/aws/disable-defender.sh +42 -0
- package/setup/aws/install-dev-runner.sh +79 -0
- package/setup/aws/spawn-runner.sh +289 -0
- package/test/captcha-solver.test.mjs +152 -0
- package/test/chrome-remote-debugging.test.mjs +66 -0
- package/test/duckduckgo/experiment.test.mjs +28 -0
- package/test/duckduckgo/setup.test.mjs +29 -0
- package/test/manual/debug-locate-response.js +82 -0
- package/test/manual/reconnect-provision.test.mjs +49 -0
- package/test/manual/test-console-logs.test.mjs +42 -0
- package/test/manual/test-find-api.js +73 -0
- package/test/manual/test-init.sh +54 -0
- package/test/manual/test-prompt-cache.js +97 -0
- package/test/manual/test-provision-auth.mjs +22 -0
- package/test/manual/test-sandbox-render.js +29 -0
- package/test/manual/test-sdk-methods.js +15 -0
- package/test/manual/test-sdk-refactor.js +53 -0
- package/test/manual/test-stack-trace.mjs +57 -0
- package/test/manual/verify-element-api.js +89 -0
- package/test/manual/verify-types.js +0 -0
- package/test/manual-unawaited-promise.test.mjs +31 -0
- package/vitest.config.mjs +58 -0
- package/vitest.runner.config.mjs +33 -0
- package/vscode-extension/.vscodeignore +12 -0
- package/vscode-extension/README.md +94 -0
- package/vscode-extension/media/icon.png +0 -0
- package/vscode-extension/package-lock.json +4126 -0
- package/vscode-extension/package.json +86 -0
- package/vscode-extension/src/extension.ts +829 -0
- package/vscode-extension/testdriverai-0.1.0.vsix +0 -0
- package/vscode-extension/tsconfig.json +16 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"type":"module"}
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared provision types for MCP Server
|
|
3
|
+
* These types mirror the SDK's ProvisionAPI interface
|
|
4
|
+
*
|
|
5
|
+
* When adding new provision types to the SDK, add them here as well.
|
|
6
|
+
* Reference: sdk.d.ts ProvisionAPI interface
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
/**
|
|
10
|
+
* All available provision types
|
|
11
|
+
* Must match the SDK's ProvisionAPI methods
|
|
12
|
+
*/
|
|
13
|
+
export declare const ProvisionTypes: readonly ["chrome", "chromeExtension", "vscode", "installer", "electron"];
|
|
14
|
+
export type ProvisionType = typeof ProvisionTypes[number];
|
|
15
|
+
/**
|
|
16
|
+
* Options for provision.chrome
|
|
17
|
+
* Matches SDK: ProvisionChromeOptions
|
|
18
|
+
*/
|
|
19
|
+
export declare const ProvisionChromeOptionsSchema: z.ZodObject<{
|
|
20
|
+
/** URL to navigate to (default: 'https://example.com') */
|
|
21
|
+
url: z.ZodOptional<z.ZodString>;
|
|
22
|
+
/** Start maximized (default: true) */
|
|
23
|
+
maximized: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
/** Use guest mode (default: false) */
|
|
25
|
+
guest: z.ZodOptional<z.ZodBoolean>;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
url?: string | undefined;
|
|
28
|
+
maximized?: boolean | undefined;
|
|
29
|
+
guest?: boolean | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
url?: string | undefined;
|
|
32
|
+
maximized?: boolean | undefined;
|
|
33
|
+
guest?: boolean | undefined;
|
|
34
|
+
}>;
|
|
35
|
+
export type ProvisionChromeOptions = z.infer<typeof ProvisionChromeOptionsSchema>;
|
|
36
|
+
/**
|
|
37
|
+
* Options for provision.chromeExtension
|
|
38
|
+
* Matches SDK: ProvisionChromeExtensionOptions
|
|
39
|
+
*/
|
|
40
|
+
export declare const ProvisionChromeExtensionOptionsSchema: z.ZodObject<{
|
|
41
|
+
/** Local filesystem path to the unpacked extension directory */
|
|
42
|
+
extensionPath: z.ZodOptional<z.ZodString>;
|
|
43
|
+
/** Chrome Web Store extension ID */
|
|
44
|
+
extensionId: z.ZodOptional<z.ZodString>;
|
|
45
|
+
/** Start maximized (default: true) */
|
|
46
|
+
maximized: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
}, "strip", z.ZodTypeAny, {
|
|
48
|
+
maximized?: boolean | undefined;
|
|
49
|
+
extensionPath?: string | undefined;
|
|
50
|
+
extensionId?: string | undefined;
|
|
51
|
+
}, {
|
|
52
|
+
maximized?: boolean | undefined;
|
|
53
|
+
extensionPath?: string | undefined;
|
|
54
|
+
extensionId?: string | undefined;
|
|
55
|
+
}>;
|
|
56
|
+
export type ProvisionChromeExtensionOptions = z.infer<typeof ProvisionChromeExtensionOptionsSchema>;
|
|
57
|
+
/**
|
|
58
|
+
* Options for provision.vscode
|
|
59
|
+
* Matches SDK: ProvisionVSCodeOptions
|
|
60
|
+
*/
|
|
61
|
+
export declare const ProvisionVSCodeOptionsSchema: z.ZodObject<{
|
|
62
|
+
/** Path to workspace or folder to open */
|
|
63
|
+
workspace: z.ZodOptional<z.ZodString>;
|
|
64
|
+
/** Array of extension IDs to install */
|
|
65
|
+
extensions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
66
|
+
}, "strip", z.ZodTypeAny, {
|
|
67
|
+
workspace?: string | undefined;
|
|
68
|
+
extensions?: string[] | undefined;
|
|
69
|
+
}, {
|
|
70
|
+
workspace?: string | undefined;
|
|
71
|
+
extensions?: string[] | undefined;
|
|
72
|
+
}>;
|
|
73
|
+
export type ProvisionVSCodeOptions = z.infer<typeof ProvisionVSCodeOptionsSchema>;
|
|
74
|
+
/**
|
|
75
|
+
* Options for provision.installer
|
|
76
|
+
* Matches SDK: ProvisionInstallerOptions
|
|
77
|
+
*/
|
|
78
|
+
export declare const ProvisionInstallerOptionsSchema: z.ZodObject<{
|
|
79
|
+
/** URL to download the installer from (required) */
|
|
80
|
+
url: z.ZodString;
|
|
81
|
+
/** Filename to save as (auto-detected from URL if not provided) */
|
|
82
|
+
filename: z.ZodOptional<z.ZodString>;
|
|
83
|
+
/** Application name to focus after install */
|
|
84
|
+
appName: z.ZodOptional<z.ZodString>;
|
|
85
|
+
/** Whether to launch the app after installation (default: true) */
|
|
86
|
+
launch: z.ZodOptional<z.ZodBoolean>;
|
|
87
|
+
}, "strip", z.ZodTypeAny, {
|
|
88
|
+
url: string;
|
|
89
|
+
filename?: string | undefined;
|
|
90
|
+
appName?: string | undefined;
|
|
91
|
+
launch?: boolean | undefined;
|
|
92
|
+
}, {
|
|
93
|
+
url: string;
|
|
94
|
+
filename?: string | undefined;
|
|
95
|
+
appName?: string | undefined;
|
|
96
|
+
launch?: boolean | undefined;
|
|
97
|
+
}>;
|
|
98
|
+
export type ProvisionInstallerOptions = z.infer<typeof ProvisionInstallerOptionsSchema>;
|
|
99
|
+
/**
|
|
100
|
+
* Options for provision.electron
|
|
101
|
+
* Matches SDK: ProvisionElectronOptions
|
|
102
|
+
*/
|
|
103
|
+
export declare const ProvisionElectronOptionsSchema: z.ZodObject<{
|
|
104
|
+
/** Path to Electron app (required) */
|
|
105
|
+
appPath: z.ZodString;
|
|
106
|
+
/** Additional electron args */
|
|
107
|
+
args: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
108
|
+
}, "strip", z.ZodTypeAny, {
|
|
109
|
+
appPath: string;
|
|
110
|
+
args?: string[] | undefined;
|
|
111
|
+
}, {
|
|
112
|
+
appPath: string;
|
|
113
|
+
args?: string[] | undefined;
|
|
114
|
+
}>;
|
|
115
|
+
export type ProvisionElectronOptions = z.infer<typeof ProvisionElectronOptionsSchema>;
|
|
116
|
+
/**
|
|
117
|
+
* Complete session_start input schema
|
|
118
|
+
* Supports all provision types with their respective options
|
|
119
|
+
*/
|
|
120
|
+
export declare const SessionStartInputSchema: z.ZodObject<{
|
|
121
|
+
/** Provision type - determines which application to launch */
|
|
122
|
+
type: z.ZodDefault<z.ZodEnum<["chrome", "chromeExtension", "vscode", "installer", "electron"]>>;
|
|
123
|
+
/** URL to navigate to (for chrome/chromeExtension) */
|
|
124
|
+
url: z.ZodOptional<z.ZodString>;
|
|
125
|
+
/** Start maximized (for chrome/chromeExtension) */
|
|
126
|
+
maximized: z.ZodOptional<z.ZodBoolean>;
|
|
127
|
+
/** Use guest mode (for chrome) */
|
|
128
|
+
guest: z.ZodOptional<z.ZodBoolean>;
|
|
129
|
+
/** Local path to unpacked extension (for chromeExtension) */
|
|
130
|
+
extensionPath: z.ZodOptional<z.ZodString>;
|
|
131
|
+
/** Chrome Web Store extension ID (for chromeExtension) */
|
|
132
|
+
extensionId: z.ZodOptional<z.ZodString>;
|
|
133
|
+
/** Workspace path (for vscode) */
|
|
134
|
+
workspace: z.ZodOptional<z.ZodString>;
|
|
135
|
+
/** Extension IDs to install (for vscode) */
|
|
136
|
+
extensions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
137
|
+
/** URL to download installer from (for installer, required when type='installer') */
|
|
138
|
+
installerUrl: z.ZodOptional<z.ZodString>;
|
|
139
|
+
/** Filename for installer (for installer) */
|
|
140
|
+
installerFilename: z.ZodOptional<z.ZodString>;
|
|
141
|
+
/** App name to focus after install (for installer) */
|
|
142
|
+
appName: z.ZodOptional<z.ZodString>;
|
|
143
|
+
/** Launch app after install (for installer) */
|
|
144
|
+
launch: z.ZodOptional<z.ZodBoolean>;
|
|
145
|
+
/** Path to Electron app (for electron, required when type='electron') */
|
|
146
|
+
appPath: z.ZodOptional<z.ZodString>;
|
|
147
|
+
/** Electron args (for electron) */
|
|
148
|
+
electronArgs: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
149
|
+
/** Operating system for the sandbox */
|
|
150
|
+
os: z.ZodDefault<z.ZodEnum<["linux", "windows"]>>;
|
|
151
|
+
/** Keep sandbox alive duration in ms (default: 5 minutes) */
|
|
152
|
+
keepAlive: z.ZodDefault<z.ZodNumber>;
|
|
153
|
+
/** Path to test file - when provided, you MUST append generated code to this file after each action */
|
|
154
|
+
testFile: z.ZodOptional<z.ZodString>;
|
|
155
|
+
/** Reconnect to last sandbox */
|
|
156
|
+
reconnect: z.ZodDefault<z.ZodBoolean>;
|
|
157
|
+
/** API endpoint URL */
|
|
158
|
+
apiRoot: z.ZodOptional<z.ZodString>;
|
|
159
|
+
/** Direct IP address of self-hosted instance (bypasses cloud provisioning) */
|
|
160
|
+
ip: z.ZodOptional<z.ZodString>;
|
|
161
|
+
/** Sandbox ID to connect to (for debug-on-failure mode). When provided, connects to an existing sandbox instead of creating a new one. Skip provisioning. */
|
|
162
|
+
sandboxId: z.ZodOptional<z.ZodString>;
|
|
163
|
+
}, "strip", z.ZodTypeAny, {
|
|
164
|
+
type: "chrome" | "chromeExtension" | "vscode" | "installer" | "electron";
|
|
165
|
+
os: "linux" | "windows";
|
|
166
|
+
keepAlive: number;
|
|
167
|
+
reconnect: boolean;
|
|
168
|
+
url?: string | undefined;
|
|
169
|
+
maximized?: boolean | undefined;
|
|
170
|
+
guest?: boolean | undefined;
|
|
171
|
+
extensionPath?: string | undefined;
|
|
172
|
+
extensionId?: string | undefined;
|
|
173
|
+
workspace?: string | undefined;
|
|
174
|
+
extensions?: string[] | undefined;
|
|
175
|
+
appName?: string | undefined;
|
|
176
|
+
launch?: boolean | undefined;
|
|
177
|
+
appPath?: string | undefined;
|
|
178
|
+
installerUrl?: string | undefined;
|
|
179
|
+
installerFilename?: string | undefined;
|
|
180
|
+
electronArgs?: string[] | undefined;
|
|
181
|
+
testFile?: string | undefined;
|
|
182
|
+
apiRoot?: string | undefined;
|
|
183
|
+
ip?: string | undefined;
|
|
184
|
+
sandboxId?: string | undefined;
|
|
185
|
+
}, {
|
|
186
|
+
url?: string | undefined;
|
|
187
|
+
maximized?: boolean | undefined;
|
|
188
|
+
guest?: boolean | undefined;
|
|
189
|
+
extensionPath?: string | undefined;
|
|
190
|
+
extensionId?: string | undefined;
|
|
191
|
+
workspace?: string | undefined;
|
|
192
|
+
extensions?: string[] | undefined;
|
|
193
|
+
appName?: string | undefined;
|
|
194
|
+
launch?: boolean | undefined;
|
|
195
|
+
appPath?: string | undefined;
|
|
196
|
+
type?: "chrome" | "chromeExtension" | "vscode" | "installer" | "electron" | undefined;
|
|
197
|
+
installerUrl?: string | undefined;
|
|
198
|
+
installerFilename?: string | undefined;
|
|
199
|
+
electronArgs?: string[] | undefined;
|
|
200
|
+
os?: "linux" | "windows" | undefined;
|
|
201
|
+
keepAlive?: number | undefined;
|
|
202
|
+
testFile?: string | undefined;
|
|
203
|
+
reconnect?: boolean | undefined;
|
|
204
|
+
apiRoot?: string | undefined;
|
|
205
|
+
ip?: string | undefined;
|
|
206
|
+
sandboxId?: string | undefined;
|
|
207
|
+
}>;
|
|
208
|
+
export type SessionStartInput = z.infer<typeof SessionStartInputSchema>;
|
|
209
|
+
/**
|
|
210
|
+
* Helper to extract provision-specific options from session start input
|
|
211
|
+
*/
|
|
212
|
+
export declare function getProvisionOptions(params: SessionStartInput): {
|
|
213
|
+
url: string;
|
|
214
|
+
maximized: boolean | undefined;
|
|
215
|
+
guest: boolean | undefined;
|
|
216
|
+
extensionPath?: undefined;
|
|
217
|
+
extensionId?: undefined;
|
|
218
|
+
workspace?: undefined;
|
|
219
|
+
extensions?: undefined;
|
|
220
|
+
filename?: undefined;
|
|
221
|
+
appName?: undefined;
|
|
222
|
+
launch?: undefined;
|
|
223
|
+
appPath?: undefined;
|
|
224
|
+
args?: undefined;
|
|
225
|
+
} | {
|
|
226
|
+
extensionPath: string | undefined;
|
|
227
|
+
extensionId: string | undefined;
|
|
228
|
+
maximized: boolean | undefined;
|
|
229
|
+
url?: undefined;
|
|
230
|
+
guest?: undefined;
|
|
231
|
+
workspace?: undefined;
|
|
232
|
+
extensions?: undefined;
|
|
233
|
+
filename?: undefined;
|
|
234
|
+
appName?: undefined;
|
|
235
|
+
launch?: undefined;
|
|
236
|
+
appPath?: undefined;
|
|
237
|
+
args?: undefined;
|
|
238
|
+
} | {
|
|
239
|
+
workspace: string | undefined;
|
|
240
|
+
extensions: string[] | undefined;
|
|
241
|
+
url?: undefined;
|
|
242
|
+
maximized?: undefined;
|
|
243
|
+
guest?: undefined;
|
|
244
|
+
extensionPath?: undefined;
|
|
245
|
+
extensionId?: undefined;
|
|
246
|
+
filename?: undefined;
|
|
247
|
+
appName?: undefined;
|
|
248
|
+
launch?: undefined;
|
|
249
|
+
appPath?: undefined;
|
|
250
|
+
args?: undefined;
|
|
251
|
+
} | {
|
|
252
|
+
url: string;
|
|
253
|
+
filename: string | undefined;
|
|
254
|
+
appName: string | undefined;
|
|
255
|
+
launch: boolean | undefined;
|
|
256
|
+
maximized?: undefined;
|
|
257
|
+
guest?: undefined;
|
|
258
|
+
extensionPath?: undefined;
|
|
259
|
+
extensionId?: undefined;
|
|
260
|
+
workspace?: undefined;
|
|
261
|
+
extensions?: undefined;
|
|
262
|
+
appPath?: undefined;
|
|
263
|
+
args?: undefined;
|
|
264
|
+
} | {
|
|
265
|
+
appPath: string;
|
|
266
|
+
args: string[] | undefined;
|
|
267
|
+
url?: undefined;
|
|
268
|
+
maximized?: undefined;
|
|
269
|
+
guest?: undefined;
|
|
270
|
+
extensionPath?: undefined;
|
|
271
|
+
extensionId?: undefined;
|
|
272
|
+
workspace?: undefined;
|
|
273
|
+
extensions?: undefined;
|
|
274
|
+
filename?: undefined;
|
|
275
|
+
appName?: undefined;
|
|
276
|
+
launch?: undefined;
|
|
277
|
+
} | {
|
|
278
|
+
url?: undefined;
|
|
279
|
+
maximized?: undefined;
|
|
280
|
+
guest?: undefined;
|
|
281
|
+
extensionPath?: undefined;
|
|
282
|
+
extensionId?: undefined;
|
|
283
|
+
workspace?: undefined;
|
|
284
|
+
extensions?: undefined;
|
|
285
|
+
filename?: undefined;
|
|
286
|
+
appName?: undefined;
|
|
287
|
+
launch?: undefined;
|
|
288
|
+
appPath?: undefined;
|
|
289
|
+
args?: undefined;
|
|
290
|
+
};
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared provision types for MCP Server
|
|
3
|
+
* These types mirror the SDK's ProvisionAPI interface
|
|
4
|
+
*
|
|
5
|
+
* When adding new provision types to the SDK, add them here as well.
|
|
6
|
+
* Reference: sdk.d.ts ProvisionAPI interface
|
|
7
|
+
*/
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
// ====================================
|
|
10
|
+
// Provision Type Definitions
|
|
11
|
+
// ====================================
|
|
12
|
+
/**
|
|
13
|
+
* All available provision types
|
|
14
|
+
* Must match the SDK's ProvisionAPI methods
|
|
15
|
+
*/
|
|
16
|
+
export const ProvisionTypes = ["chrome", "chromeExtension", "vscode", "installer", "electron"];
|
|
17
|
+
// ====================================
|
|
18
|
+
// Provision Options Schemas
|
|
19
|
+
// ====================================
|
|
20
|
+
/**
|
|
21
|
+
* Options for provision.chrome
|
|
22
|
+
* Matches SDK: ProvisionChromeOptions
|
|
23
|
+
*/
|
|
24
|
+
export const ProvisionChromeOptionsSchema = z.object({
|
|
25
|
+
/** URL to navigate to (default: 'https://example.com') */
|
|
26
|
+
url: z.string().optional().describe("URL to navigate to"),
|
|
27
|
+
/** Start maximized (default: true) */
|
|
28
|
+
maximized: z.boolean().optional().describe("Start maximized"),
|
|
29
|
+
/** Use guest mode (default: false) */
|
|
30
|
+
guest: z.boolean().optional().describe("Use guest mode"),
|
|
31
|
+
});
|
|
32
|
+
/**
|
|
33
|
+
* Options for provision.chromeExtension
|
|
34
|
+
* Matches SDK: ProvisionChromeExtensionOptions
|
|
35
|
+
*/
|
|
36
|
+
export const ProvisionChromeExtensionOptionsSchema = z.object({
|
|
37
|
+
/** Local filesystem path to the unpacked extension directory */
|
|
38
|
+
extensionPath: z.string().optional().describe("Path to unpacked extension directory"),
|
|
39
|
+
/** Chrome Web Store extension ID */
|
|
40
|
+
extensionId: z.string().optional().describe("Chrome Web Store extension ID"),
|
|
41
|
+
/** Start maximized (default: true) */
|
|
42
|
+
maximized: z.boolean().optional().describe("Start maximized"),
|
|
43
|
+
});
|
|
44
|
+
/**
|
|
45
|
+
* Options for provision.vscode
|
|
46
|
+
* Matches SDK: ProvisionVSCodeOptions
|
|
47
|
+
*/
|
|
48
|
+
export const ProvisionVSCodeOptionsSchema = z.object({
|
|
49
|
+
/** Path to workspace or folder to open */
|
|
50
|
+
workspace: z.string().optional().describe("Path to workspace or folder to open"),
|
|
51
|
+
/** Array of extension IDs to install */
|
|
52
|
+
extensions: z.array(z.string()).optional().describe("Extension IDs to install"),
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* Options for provision.installer
|
|
56
|
+
* Matches SDK: ProvisionInstallerOptions
|
|
57
|
+
*/
|
|
58
|
+
export const ProvisionInstallerOptionsSchema = z.object({
|
|
59
|
+
/** URL to download the installer from (required) */
|
|
60
|
+
url: z.string().describe("URL to download the installer from"),
|
|
61
|
+
/** Filename to save as (auto-detected from URL if not provided) */
|
|
62
|
+
filename: z.string().optional().describe("Filename to save as"),
|
|
63
|
+
/** Application name to focus after install */
|
|
64
|
+
appName: z.string().optional().describe("Application name to focus after install"),
|
|
65
|
+
/** Whether to launch the app after installation (default: true) */
|
|
66
|
+
launch: z.boolean().optional().describe("Launch app after installation"),
|
|
67
|
+
});
|
|
68
|
+
/**
|
|
69
|
+
* Options for provision.electron
|
|
70
|
+
* Matches SDK: ProvisionElectronOptions
|
|
71
|
+
*/
|
|
72
|
+
export const ProvisionElectronOptionsSchema = z.object({
|
|
73
|
+
/** Path to Electron app (required) */
|
|
74
|
+
appPath: z.string().describe("Path to Electron app"),
|
|
75
|
+
/** Additional electron args */
|
|
76
|
+
args: z.array(z.string()).optional().describe("Additional Electron arguments"),
|
|
77
|
+
});
|
|
78
|
+
// ====================================
|
|
79
|
+
// Session Start Input Schema
|
|
80
|
+
// ====================================
|
|
81
|
+
/**
|
|
82
|
+
* Complete session_start input schema
|
|
83
|
+
* Supports all provision types with their respective options
|
|
84
|
+
*/
|
|
85
|
+
export const SessionStartInputSchema = z.object({
|
|
86
|
+
/** Provision type - determines which application to launch */
|
|
87
|
+
type: z.enum(ProvisionTypes).default("chrome").describe("Provision type: 'chrome' (browser), 'chromeExtension' (browser with extension), 'vscode' (VS Code), 'installer' (download and install app), 'electron' (Electron app)"),
|
|
88
|
+
// Chrome options
|
|
89
|
+
/** URL to navigate to (for chrome/chromeExtension) */
|
|
90
|
+
url: z.string().optional().describe("URL to navigate to (for chrome)"),
|
|
91
|
+
/** Start maximized (for chrome/chromeExtension) */
|
|
92
|
+
maximized: z.boolean().optional().describe("Start browser maximized"),
|
|
93
|
+
/** Use guest mode (for chrome) */
|
|
94
|
+
guest: z.boolean().optional().describe("Use Chrome guest mode"),
|
|
95
|
+
// Chrome extension options
|
|
96
|
+
/** Local path to unpacked extension (for chromeExtension) */
|
|
97
|
+
extensionPath: z.string().optional().describe("Path to unpacked extension directory"),
|
|
98
|
+
/** Chrome Web Store extension ID (for chromeExtension) */
|
|
99
|
+
extensionId: z.string().optional().describe("Chrome Web Store extension ID"),
|
|
100
|
+
// VSCode options
|
|
101
|
+
/** Workspace path (for vscode) */
|
|
102
|
+
workspace: z.string().optional().describe("Path to workspace or folder (for vscode)"),
|
|
103
|
+
/** Extension IDs to install (for vscode) */
|
|
104
|
+
extensions: z.array(z.string()).optional().describe("VSCode extension IDs to install"),
|
|
105
|
+
// Installer options
|
|
106
|
+
/** URL to download installer from (for installer, required when type='installer') */
|
|
107
|
+
installerUrl: z.string().optional().describe("URL to download installer from"),
|
|
108
|
+
/** Filename for installer (for installer) */
|
|
109
|
+
installerFilename: z.string().optional().describe("Filename for downloaded installer"),
|
|
110
|
+
/** App name to focus after install (for installer) */
|
|
111
|
+
appName: z.string().optional().describe("App name to focus after installation"),
|
|
112
|
+
/** Launch app after install (for installer) */
|
|
113
|
+
launch: z.boolean().optional().describe("Launch app after installation"),
|
|
114
|
+
// Electron options
|
|
115
|
+
/** Path to Electron app (for electron, required when type='electron') */
|
|
116
|
+
appPath: z.string().optional().describe("Path to Electron app"),
|
|
117
|
+
/** Electron args (for electron) */
|
|
118
|
+
electronArgs: z.array(z.string()).optional().describe("Additional Electron arguments"),
|
|
119
|
+
// Common session options
|
|
120
|
+
/** Operating system for the sandbox */
|
|
121
|
+
os: z.enum(["linux", "windows"]).default("linux").describe("Sandbox OS"),
|
|
122
|
+
/** Keep sandbox alive duration in ms (default: 5 minutes) */
|
|
123
|
+
keepAlive: z.number().default(300000).describe("Keep sandbox alive for this many ms"),
|
|
124
|
+
/** Path to test file - when provided, you MUST append generated code to this file after each action */
|
|
125
|
+
testFile: z.string().optional().describe("Path to test file. When provided, append generated code from each action to this file immediately."),
|
|
126
|
+
/** Reconnect to last sandbox */
|
|
127
|
+
reconnect: z.boolean().default(false).describe("Reconnect to last sandbox"),
|
|
128
|
+
/** API endpoint URL */
|
|
129
|
+
apiRoot: z.string().optional().describe("API endpoint URL"),
|
|
130
|
+
// Self-hosted connection options
|
|
131
|
+
/** Direct IP address of self-hosted instance (bypasses cloud provisioning) */
|
|
132
|
+
ip: z.string().optional().describe("Direct IP address of self-hosted Windows instance (e.g., from AWS). When provided, connects directly to this IP instead of using cloud provisioning."),
|
|
133
|
+
// Debug mode - connect to existing sandbox
|
|
134
|
+
/** Sandbox ID to connect to (for debug-on-failure mode). When provided, connects to an existing sandbox instead of creating a new one. Skip provisioning. */
|
|
135
|
+
sandboxId: z.string().optional().describe("Existing sandbox ID to connect to (from debug-on-failure mode). Skips provisioning."),
|
|
136
|
+
});
|
|
137
|
+
/**
|
|
138
|
+
* Helper to extract provision-specific options from session start input
|
|
139
|
+
*/
|
|
140
|
+
export function getProvisionOptions(params) {
|
|
141
|
+
switch (params.type) {
|
|
142
|
+
case "chrome":
|
|
143
|
+
return {
|
|
144
|
+
url: params.url || "https://example.com",
|
|
145
|
+
maximized: params.maximized,
|
|
146
|
+
guest: params.guest,
|
|
147
|
+
};
|
|
148
|
+
case "chromeExtension":
|
|
149
|
+
return {
|
|
150
|
+
extensionPath: params.extensionPath,
|
|
151
|
+
extensionId: params.extensionId,
|
|
152
|
+
maximized: params.maximized,
|
|
153
|
+
};
|
|
154
|
+
case "vscode":
|
|
155
|
+
return {
|
|
156
|
+
workspace: params.workspace,
|
|
157
|
+
extensions: params.extensions,
|
|
158
|
+
};
|
|
159
|
+
case "installer":
|
|
160
|
+
return {
|
|
161
|
+
url: params.installerUrl || "",
|
|
162
|
+
filename: params.installerFilename,
|
|
163
|
+
appName: params.appName,
|
|
164
|
+
launch: params.launch,
|
|
165
|
+
};
|
|
166
|
+
case "electron":
|
|
167
|
+
return {
|
|
168
|
+
appPath: params.appPath || "",
|
|
169
|
+
args: params.electronArgs,
|
|
170
|
+
};
|
|
171
|
+
default:
|
|
172
|
+
return {};
|
|
173
|
+
}
|
|
174
|
+
}
|