@metamask/client-mcp-core 0.1.0 → 0.1.1

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.
Files changed (45) hide show
  1. package/CHANGELOG.md +8 -1
  2. package/README.md +27 -2
  3. package/dist/capabilities/types.cjs.map +1 -1
  4. package/dist/capabilities/types.d.cts +1 -1
  5. package/dist/capabilities/types.d.cts.map +1 -1
  6. package/dist/capabilities/types.d.mts +1 -1
  7. package/dist/capabilities/types.d.mts.map +1 -1
  8. package/dist/capabilities/types.mjs.map +1 -1
  9. package/dist/launcher/extension-readiness.cjs +4 -17
  10. package/dist/launcher/extension-readiness.cjs.map +1 -1
  11. package/dist/launcher/extension-readiness.d.cts +1 -5
  12. package/dist/launcher/extension-readiness.d.cts.map +1 -1
  13. package/dist/launcher/extension-readiness.d.mts +1 -5
  14. package/dist/launcher/extension-readiness.d.mts.map +1 -1
  15. package/dist/launcher/extension-readiness.mjs +4 -16
  16. package/dist/launcher/extension-readiness.mjs.map +1 -1
  17. package/dist/mcp-server/schemas.cjs +4 -0
  18. package/dist/mcp-server/schemas.cjs.map +1 -1
  19. package/dist/mcp-server/schemas.d.cts +6 -4
  20. package/dist/mcp-server/schemas.d.cts.map +1 -1
  21. package/dist/mcp-server/schemas.d.mts +6 -4
  22. package/dist/mcp-server/schemas.d.mts.map +1 -1
  23. package/dist/mcp-server/schemas.mjs +4 -0
  24. package/dist/mcp-server/schemas.mjs.map +1 -1
  25. package/dist/mcp-server/session-manager.cjs.map +1 -1
  26. package/dist/mcp-server/session-manager.d.cts +4 -1
  27. package/dist/mcp-server/session-manager.d.cts.map +1 -1
  28. package/dist/mcp-server/session-manager.d.mts +4 -1
  29. package/dist/mcp-server/session-manager.d.mts.map +1 -1
  30. package/dist/mcp-server/session-manager.mjs.map +1 -1
  31. package/dist/mcp-server/tools/context.cjs +1 -1
  32. package/dist/mcp-server/tools/context.cjs.map +1 -1
  33. package/dist/mcp-server/tools/context.d.cts +1 -0
  34. package/dist/mcp-server/tools/context.d.cts.map +1 -1
  35. package/dist/mcp-server/tools/context.d.mts +1 -0
  36. package/dist/mcp-server/tools/context.d.mts.map +1 -1
  37. package/dist/mcp-server/tools/context.mjs +1 -1
  38. package/dist/mcp-server/tools/context.mjs.map +1 -1
  39. package/dist/mcp-server/types/knowledge.cjs.map +1 -1
  40. package/dist/mcp-server/types/knowledge.d.cts +1 -2
  41. package/dist/mcp-server/types/knowledge.d.cts.map +1 -1
  42. package/dist/mcp-server/types/knowledge.d.mts +1 -2
  43. package/dist/mcp-server/types/knowledge.d.mts.map +1 -1
  44. package/dist/mcp-server/types/knowledge.mjs.map +1 -1
  45. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -7,11 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.1.1]
11
+
12
+ ### Uncategorized
13
+
14
+ - chore: extension decoupling ([#11](https://github.com/MetaMask/client-mcp-core/pull/11))
15
+
10
16
  ## [0.1.0]
11
17
 
12
18
  ### Added
13
19
 
14
20
  - feat: initial release
15
21
 
16
- [Unreleased]: https://github.com/MetaMask/client-mcp-core/compare/v0.1.0...HEAD
22
+ [Unreleased]: https://github.com/MetaMask/client-mcp-core/compare/v0.1.1...HEAD
23
+ [0.1.1]: https://github.com/MetaMask/client-mcp-core/compare/v0.1.0...v0.1.1
17
24
  [0.1.0]: https://github.com/MetaMask/client-mcp-core/releases/tag/v0.1.0
package/README.md CHANGED
@@ -543,11 +543,12 @@ class MetaMaskSessionManager implements ISessionManager {
543
543
  }
544
544
 
545
545
  // Context Management
546
- setContext(context: 'e2e' | 'prod'): void {
546
+ setContext(context: 'e2e' | 'prod', options?: Record<string, unknown>): void {
547
547
  if (this.hasActiveSession()) {
548
548
  throw new Error('Cannot switch context while session is active');
549
549
  }
550
- // Switch environment context
550
+ // Switch environment context and apply optional context-specific config
551
+ void options;
551
552
  }
552
553
 
553
554
  getContextInfo() {
@@ -611,6 +612,30 @@ const prodConfig: ProdEnvironmentConfig = {
611
612
  };
612
613
  ```
613
614
 
615
+ ### Context Switching Options
616
+
617
+ `mm_set_context` supports an optional `options` payload that is forwarded to the session manager's `setContext(context, options)` implementation.
618
+
619
+ ```typescript
620
+ type SetContextInput = {
621
+ context: 'e2e' | 'prod';
622
+ options?: Record<string, unknown>;
623
+ };
624
+
625
+ // Example: switch to e2e and pass context-specific overrides
626
+ await handleSetContext({
627
+ context: 'e2e',
628
+ options: {
629
+ mockServer: {
630
+ enabled: true,
631
+ port: 18000,
632
+ },
633
+ },
634
+ });
635
+ ```
636
+
637
+ Use `options` only for context-specific configuration your `ISessionManager` implementation understands.
638
+
614
639
  ### Custom Tool Definitions
615
640
 
616
641
  The package provides a fixed set of tools prefixed with `mm_`. Custom tool injection is currently not supported. You can inspect the available tool definitions using `getToolDefinitions()`:
@@ -1 +1 @@
1
- {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Page, BrowserContext } from '@playwright/test';\n\nexport type StateMode = 'default' | 'onboarding' | 'custom';\n\nexport type NetworkMode = 'localhost' | 'fork' | 'custom';\n\nexport type NetworkConfig = {\n mode?: NetworkMode;\n chainId?: number;\n rpcUrl?: string;\n forkBlockNumber?: number;\n chainName?: string;\n nativeCurrency?: {\n symbol: string;\n decimals: number;\n };\n};\n\nexport type FixtureData = {\n data: Record<string, unknown>;\n meta?: {\n version: number;\n };\n};\n\nexport type PortsConfig = {\n anvil?: number;\n fixtureServer?: number;\n};\n\nexport type ScreenshotOptions = {\n name: string;\n fullPage?: boolean;\n selector?: string;\n timestamp?: boolean;\n page?: Page;\n};\n\nexport type ScreenshotResult = {\n path: string;\n base64: string;\n width: number;\n height: number;\n};\n\nexport type ScreenName =\n | 'unlock'\n | 'home'\n | 'onboarding-welcome'\n | 'onboarding-import'\n | 'onboarding-create'\n | 'onboarding-srp'\n | 'onboarding-password'\n | 'onboarding-complete'\n | 'onboarding-metametrics'\n | 'settings'\n | 'send'\n | 'swap'\n | 'bridge'\n | 'confirm-transaction'\n | 'confirm-signature'\n | 'notification'\n | 'unknown';\n\nexport type ExtensionState = {\n isLoaded: boolean;\n currentUrl: string;\n extensionId: string;\n isUnlocked: boolean;\n currentScreen: ScreenName;\n accountAddress: string | null;\n networkName: string | null;\n chainId: number | null;\n balance: string | null;\n};\n\nexport type LaunchOptions = {\n extensionPath?: string;\n viewportWidth?: number;\n viewportHeight?: number;\n slowMo?: number;\n autoBuild?: boolean;\n stateMode?: StateMode;\n fixture?: FixtureData;\n ports?: PortsConfig;\n seedContracts?: string[];\n};\n\nexport type BrowserSession = {\n context: BrowserContext;\n extensionPage: Page;\n extensionId: string;\n};\n\nexport type BuildOptions = {\n buildType?: string;\n force?: boolean;\n};\n\nexport type BuildResult = {\n success: boolean;\n extensionPath: string;\n durationMs: number;\n error?: string;\n};\n\nexport type WalletState = FixtureData;\n\nexport type DeployOptions = {\n hardfork?: string;\n deployerOptions?: {\n fromAddress?: string;\n fromPrivateKey?: string;\n };\n};\n\nexport type ContractDeployment = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type ContractInfo = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type StateSnapshot = ExtensionState;\n\nexport type StateOptions = {\n extensionId?: string;\n chainId?: number;\n};\n\nexport type OnboardOptions = {\n seedPhrase?: string;\n password?: string;\n};\n\nexport type Observation = {\n state: ExtensionState;\n testIds: string[];\n a11yNodes: unknown[];\n};\n\nexport type BuildCapability = {\n build(options?: BuildOptions): Promise<BuildResult>;\n getExtensionPath(): string;\n isBuilt(): Promise<boolean>;\n};\n\nexport type FixtureCapability = {\n start(state: WalletState): Promise<void>;\n stop(): Promise<void>;\n getDefaultState(): WalletState;\n getOnboardingState(): WalletState;\n resolvePreset(presetName: string): WalletState;\n};\n\nexport type ChainCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n setPort(port: number): void;\n};\n\nexport type ContractSeedingCapability = {\n deployContract(\n name: string,\n options?: DeployOptions,\n ): Promise<ContractDeployment>;\n deployContracts(\n names: string[],\n options?: DeployOptions,\n ): Promise<{\n deployed: ContractDeployment[];\n failed: {\n name: string;\n error: string;\n }[];\n }>;\n getContractAddress(name: string): string | null;\n listDeployedContracts(): ContractInfo[];\n getAvailableContracts(): string[];\n clearRegistry(): void;\n initialize(): void;\n};\n\nexport type StateSnapshotCapability = {\n getState(page: Page, options: StateOptions): Promise<StateSnapshot>;\n detectCurrentScreen(page: Page): Promise<string>;\n};\n\nexport type MockServerCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n getServer(): unknown;\n getPort(): number;\n};\n"]}
1
+ {"version":3,"file":"types.cjs","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Page, BrowserContext } from '@playwright/test';\n\nexport type StateMode = 'default' | 'onboarding' | 'custom';\n\nexport type NetworkMode = 'localhost' | 'fork' | 'custom';\n\nexport type NetworkConfig = {\n mode?: NetworkMode;\n chainId?: number;\n rpcUrl?: string;\n forkBlockNumber?: number;\n chainName?: string;\n nativeCurrency?: {\n symbol: string;\n decimals: number;\n };\n};\n\nexport type FixtureData = {\n data: Record<string, unknown>;\n meta?: {\n version: number;\n };\n};\n\nexport type PortsConfig = {\n anvil?: number;\n fixtureServer?: number;\n};\n\nexport type ScreenshotOptions = {\n name: string;\n fullPage?: boolean;\n selector?: string;\n timestamp?: boolean;\n page?: Page;\n};\n\nexport type ScreenshotResult = {\n path: string;\n base64: string;\n width: number;\n height: number;\n};\n\nexport type ScreenName = string;\n\nexport type ExtensionState = {\n isLoaded: boolean;\n currentUrl: string;\n extensionId: string;\n isUnlocked: boolean;\n currentScreen: ScreenName;\n accountAddress: string | null;\n networkName: string | null;\n chainId: number | null;\n balance: string | null;\n};\n\nexport type LaunchOptions = {\n extensionPath?: string;\n viewportWidth?: number;\n viewportHeight?: number;\n slowMo?: number;\n autoBuild?: boolean;\n stateMode?: StateMode;\n fixture?: FixtureData;\n ports?: PortsConfig;\n seedContracts?: string[];\n};\n\nexport type BrowserSession = {\n context: BrowserContext;\n extensionPage: Page;\n extensionId: string;\n};\n\nexport type BuildOptions = {\n buildType?: string;\n force?: boolean;\n};\n\nexport type BuildResult = {\n success: boolean;\n extensionPath: string;\n durationMs: number;\n error?: string;\n};\n\nexport type WalletState = FixtureData;\n\nexport type DeployOptions = {\n hardfork?: string;\n deployerOptions?: {\n fromAddress?: string;\n fromPrivateKey?: string;\n };\n};\n\nexport type ContractDeployment = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type ContractInfo = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type StateSnapshot = ExtensionState;\n\nexport type StateOptions = {\n extensionId?: string;\n chainId?: number;\n};\n\nexport type OnboardOptions = {\n seedPhrase?: string;\n password?: string;\n};\n\nexport type Observation = {\n state: ExtensionState;\n testIds: string[];\n a11yNodes: unknown[];\n};\n\nexport type BuildCapability = {\n build(options?: BuildOptions): Promise<BuildResult>;\n getExtensionPath(): string;\n isBuilt(): Promise<boolean>;\n};\n\nexport type FixtureCapability = {\n start(state: WalletState): Promise<void>;\n stop(): Promise<void>;\n getDefaultState(): WalletState;\n getOnboardingState(): WalletState;\n resolvePreset(presetName: string): WalletState;\n};\n\nexport type ChainCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n setPort(port: number): void;\n};\n\nexport type ContractSeedingCapability = {\n deployContract(\n name: string,\n options?: DeployOptions,\n ): Promise<ContractDeployment>;\n deployContracts(\n names: string[],\n options?: DeployOptions,\n ): Promise<{\n deployed: ContractDeployment[];\n failed: {\n name: string;\n error: string;\n }[];\n }>;\n getContractAddress(name: string): string | null;\n listDeployedContracts(): ContractInfo[];\n getAvailableContracts(): string[];\n clearRegistry(): void;\n initialize(): void;\n};\n\nexport type StateSnapshotCapability = {\n getState(page: Page, options: StateOptions): Promise<StateSnapshot>;\n detectCurrentScreen(page: Page): Promise<string>;\n};\n\nexport type MockServerCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n getServer(): unknown;\n getPort(): number;\n};\n"]}
@@ -35,7 +35,7 @@ export type ScreenshotResult = {
35
35
  width: number;
36
36
  height: number;
37
37
  };
38
- export type ScreenName = 'unlock' | 'home' | 'onboarding-welcome' | 'onboarding-import' | 'onboarding-create' | 'onboarding-srp' | 'onboarding-password' | 'onboarding-complete' | 'onboarding-metametrics' | 'settings' | 'send' | 'swap' | 'bridge' | 'confirm-transaction' | 'confirm-signature' | 'notification' | 'unknown';
38
+ export type ScreenName = string;
39
39
  export type ExtensionState = {
40
40
  isLoaded: boolean;
41
41
  currentUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export type ScreenshotResult = {
35
35
  width: number;
36
36
  height: number;
37
37
  };
38
- export type ScreenName = 'unlock' | 'home' | 'onboarding-welcome' | 'onboarding-import' | 'onboarding-create' | 'onboarding-srp' | 'onboarding-password' | 'onboarding-complete' | 'onboarding-metametrics' | 'settings' | 'send' | 'swap' | 'bridge' | 'confirm-transaction' | 'confirm-signature' | 'notification' | 'unknown';
38
+ export type ScreenName = string;
39
39
  export type ExtensionState = {
40
40
  isLoaded: boolean;
41
41
  currentUrl: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Page, BrowserContext } from '@playwright/test';\n\nexport type StateMode = 'default' | 'onboarding' | 'custom';\n\nexport type NetworkMode = 'localhost' | 'fork' | 'custom';\n\nexport type NetworkConfig = {\n mode?: NetworkMode;\n chainId?: number;\n rpcUrl?: string;\n forkBlockNumber?: number;\n chainName?: string;\n nativeCurrency?: {\n symbol: string;\n decimals: number;\n };\n};\n\nexport type FixtureData = {\n data: Record<string, unknown>;\n meta?: {\n version: number;\n };\n};\n\nexport type PortsConfig = {\n anvil?: number;\n fixtureServer?: number;\n};\n\nexport type ScreenshotOptions = {\n name: string;\n fullPage?: boolean;\n selector?: string;\n timestamp?: boolean;\n page?: Page;\n};\n\nexport type ScreenshotResult = {\n path: string;\n base64: string;\n width: number;\n height: number;\n};\n\nexport type ScreenName =\n | 'unlock'\n | 'home'\n | 'onboarding-welcome'\n | 'onboarding-import'\n | 'onboarding-create'\n | 'onboarding-srp'\n | 'onboarding-password'\n | 'onboarding-complete'\n | 'onboarding-metametrics'\n | 'settings'\n | 'send'\n | 'swap'\n | 'bridge'\n | 'confirm-transaction'\n | 'confirm-signature'\n | 'notification'\n | 'unknown';\n\nexport type ExtensionState = {\n isLoaded: boolean;\n currentUrl: string;\n extensionId: string;\n isUnlocked: boolean;\n currentScreen: ScreenName;\n accountAddress: string | null;\n networkName: string | null;\n chainId: number | null;\n balance: string | null;\n};\n\nexport type LaunchOptions = {\n extensionPath?: string;\n viewportWidth?: number;\n viewportHeight?: number;\n slowMo?: number;\n autoBuild?: boolean;\n stateMode?: StateMode;\n fixture?: FixtureData;\n ports?: PortsConfig;\n seedContracts?: string[];\n};\n\nexport type BrowserSession = {\n context: BrowserContext;\n extensionPage: Page;\n extensionId: string;\n};\n\nexport type BuildOptions = {\n buildType?: string;\n force?: boolean;\n};\n\nexport type BuildResult = {\n success: boolean;\n extensionPath: string;\n durationMs: number;\n error?: string;\n};\n\nexport type WalletState = FixtureData;\n\nexport type DeployOptions = {\n hardfork?: string;\n deployerOptions?: {\n fromAddress?: string;\n fromPrivateKey?: string;\n };\n};\n\nexport type ContractDeployment = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type ContractInfo = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type StateSnapshot = ExtensionState;\n\nexport type StateOptions = {\n extensionId?: string;\n chainId?: number;\n};\n\nexport type OnboardOptions = {\n seedPhrase?: string;\n password?: string;\n};\n\nexport type Observation = {\n state: ExtensionState;\n testIds: string[];\n a11yNodes: unknown[];\n};\n\nexport type BuildCapability = {\n build(options?: BuildOptions): Promise<BuildResult>;\n getExtensionPath(): string;\n isBuilt(): Promise<boolean>;\n};\n\nexport type FixtureCapability = {\n start(state: WalletState): Promise<void>;\n stop(): Promise<void>;\n getDefaultState(): WalletState;\n getOnboardingState(): WalletState;\n resolvePreset(presetName: string): WalletState;\n};\n\nexport type ChainCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n setPort(port: number): void;\n};\n\nexport type ContractSeedingCapability = {\n deployContract(\n name: string,\n options?: DeployOptions,\n ): Promise<ContractDeployment>;\n deployContracts(\n names: string[],\n options?: DeployOptions,\n ): Promise<{\n deployed: ContractDeployment[];\n failed: {\n name: string;\n error: string;\n }[];\n }>;\n getContractAddress(name: string): string | null;\n listDeployedContracts(): ContractInfo[];\n getAvailableContracts(): string[];\n clearRegistry(): void;\n initialize(): void;\n};\n\nexport type StateSnapshotCapability = {\n getState(page: Page, options: StateOptions): Promise<StateSnapshot>;\n detectCurrentScreen(page: Page): Promise<string>;\n};\n\nexport type MockServerCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n getServer(): unknown;\n getPort(): number;\n};\n"]}
1
+ {"version":3,"file":"types.mjs","sourceRoot":"","sources":["../../src/capabilities/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Page, BrowserContext } from '@playwright/test';\n\nexport type StateMode = 'default' | 'onboarding' | 'custom';\n\nexport type NetworkMode = 'localhost' | 'fork' | 'custom';\n\nexport type NetworkConfig = {\n mode?: NetworkMode;\n chainId?: number;\n rpcUrl?: string;\n forkBlockNumber?: number;\n chainName?: string;\n nativeCurrency?: {\n symbol: string;\n decimals: number;\n };\n};\n\nexport type FixtureData = {\n data: Record<string, unknown>;\n meta?: {\n version: number;\n };\n};\n\nexport type PortsConfig = {\n anvil?: number;\n fixtureServer?: number;\n};\n\nexport type ScreenshotOptions = {\n name: string;\n fullPage?: boolean;\n selector?: string;\n timestamp?: boolean;\n page?: Page;\n};\n\nexport type ScreenshotResult = {\n path: string;\n base64: string;\n width: number;\n height: number;\n};\n\nexport type ScreenName = string;\n\nexport type ExtensionState = {\n isLoaded: boolean;\n currentUrl: string;\n extensionId: string;\n isUnlocked: boolean;\n currentScreen: ScreenName;\n accountAddress: string | null;\n networkName: string | null;\n chainId: number | null;\n balance: string | null;\n};\n\nexport type LaunchOptions = {\n extensionPath?: string;\n viewportWidth?: number;\n viewportHeight?: number;\n slowMo?: number;\n autoBuild?: boolean;\n stateMode?: StateMode;\n fixture?: FixtureData;\n ports?: PortsConfig;\n seedContracts?: string[];\n};\n\nexport type BrowserSession = {\n context: BrowserContext;\n extensionPage: Page;\n extensionId: string;\n};\n\nexport type BuildOptions = {\n buildType?: string;\n force?: boolean;\n};\n\nexport type BuildResult = {\n success: boolean;\n extensionPath: string;\n durationMs: number;\n error?: string;\n};\n\nexport type WalletState = FixtureData;\n\nexport type DeployOptions = {\n hardfork?: string;\n deployerOptions?: {\n fromAddress?: string;\n fromPrivateKey?: string;\n };\n};\n\nexport type ContractDeployment = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type ContractInfo = {\n name: string;\n address: string;\n deployedAt: string;\n};\n\nexport type StateSnapshot = ExtensionState;\n\nexport type StateOptions = {\n extensionId?: string;\n chainId?: number;\n};\n\nexport type OnboardOptions = {\n seedPhrase?: string;\n password?: string;\n};\n\nexport type Observation = {\n state: ExtensionState;\n testIds: string[];\n a11yNodes: unknown[];\n};\n\nexport type BuildCapability = {\n build(options?: BuildOptions): Promise<BuildResult>;\n getExtensionPath(): string;\n isBuilt(): Promise<boolean>;\n};\n\nexport type FixtureCapability = {\n start(state: WalletState): Promise<void>;\n stop(): Promise<void>;\n getDefaultState(): WalletState;\n getOnboardingState(): WalletState;\n resolvePreset(presetName: string): WalletState;\n};\n\nexport type ChainCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n setPort(port: number): void;\n};\n\nexport type ContractSeedingCapability = {\n deployContract(\n name: string,\n options?: DeployOptions,\n ): Promise<ContractDeployment>;\n deployContracts(\n names: string[],\n options?: DeployOptions,\n ): Promise<{\n deployed: ContractDeployment[];\n failed: {\n name: string;\n error: string;\n }[];\n }>;\n getContractAddress(name: string): string | null;\n listDeployedContracts(): ContractInfo[];\n getAvailableContracts(): string[];\n clearRegistry(): void;\n initialize(): void;\n};\n\nexport type StateSnapshotCapability = {\n getState(page: Page, options: StateOptions): Promise<StateSnapshot>;\n detectCurrentScreen(page: Page): Promise<string>;\n};\n\nexport type MockServerCapability = {\n start(): Promise<void>;\n stop(): Promise<void>;\n isRunning(): boolean;\n getServer(): unknown;\n getPort(): number;\n};\n"]}
@@ -3,24 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DEFAULT_EXTENSION_READINESS_CONFIG = void 0;
7
6
  exports.waitForExtensionUiReady = waitForExtensionUiReady;
8
7
  const path_1 = __importDefault(require("path"));
9
- /**
10
- * Default MetaMask extension readiness configuration.
11
- */
12
- exports.DEFAULT_EXTENSION_READINESS_CONFIG = {
13
- readySelectors: [
14
- '[data-testid="unlock-password"]',
15
- '[data-testid="onboarding-create-wallet"]',
16
- '[data-testid="onboarding-import-wallet"]',
17
- '[data-testid="account-menu-icon"]',
18
- '[data-testid="get-started"]',
19
- '[data-testid="onboarding-terms-checkbox"]',
20
- '[data-testid="onboarding-privacy-policy"]',
21
- ],
22
- expectedStatesDescription: 'unlock page, onboarding page, or home page',
23
- };
24
8
  /**
25
9
  * Wait for the extension UI to be ready by checking for expected selectors.
26
10
  *
@@ -28,9 +12,12 @@ exports.DEFAULT_EXTENSION_READINESS_CONFIG = {
28
12
  * @param config - Configuration with ready selectors to wait for
29
13
  * @param timeout - Maximum time to wait in milliseconds (default: 30000)
30
14
  */
31
- async function waitForExtensionUiReady(deps, config = exports.DEFAULT_EXTENSION_READINESS_CONFIG, timeout = 30000) {
15
+ async function waitForExtensionUiReady(deps, config, timeout = 30000) {
32
16
  const { page, screenshotDir, log } = deps;
33
17
  const { readySelectors, expectedStatesDescription } = config;
18
+ if (readySelectors.length === 0) {
19
+ throw new Error('Extension readiness config must include at least one ready selector.');
20
+ }
34
21
  try {
35
22
  await Promise.race(readySelectors.map(async (selector) => page.waitForSelector(selector, { timeout })));
36
23
  log.info('Extension UI is ready');
@@ -1 +1 @@
1
- {"version":3,"file":"extension-readiness.cjs","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":";;;;;;AAmDA,0DAkCC;AApFD,gDAAwB;AA2BxB;;GAEG;AACU,QAAA,kCAAkC,GAA6B;IAC1E,cAAc,EAAE;QACd,iCAAiC;QACjC,0CAA0C;QAC1C,0CAA0C;QAC1C,mCAAmC;QACnC,6BAA6B;QAC7B,2CAA2C;QAC3C,2CAA2C;KAC5C;IACD,yBAAyB,EAAE,4CAA4C;CACxE,CAAC;AAEF;;;;;;GAMG;AACI,KAAK,UAAU,uBAAuB,CAC3C,IAA4B,EAC5B,SAAmC,0CAAkC,EACrE,OAAO,GAAG,KAAK;IAEf,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,cAAc,EAAE,yBAAyB,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACpC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAC5C,CACF,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAC9B,aAAa,EACb,oBAAoB,IAAI,CAAC,GAAG,EAAE,MAAM,CACrC,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;QAEvD,MAAM,cAAc,GAClB,yBAAyB,IAAI,kCAAkC,CAAC;QAElE,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,MAAM;YAC/D,gBAAgB,UAAU,IAAI;YAC9B,aAAa,cAAc,IAAI;YAC/B,8BAA8B,cAAc,EAAE,CACjD,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { Page } from '@playwright/test';\nimport path from 'path';\n\nexport type ExtensionReadinessDeps = {\n page: Page;\n screenshotDir: string;\n log: {\n info: (message: string) => void;\n error: (message: string) => void;\n };\n};\n\n/**\n * Configuration for extension readiness detection.\n * Allows different extensions to specify their own UI ready selectors.\n */\nexport type ExtensionReadinessConfig = {\n /**\n * CSS selectors that indicate the extension UI is ready.\n * The function waits for ANY of these selectors to appear.\n */\n readySelectors: string[];\n /**\n * Human-readable description of expected states for error messages.\n */\n expectedStatesDescription?: string;\n};\n\n/**\n * Default MetaMask extension readiness configuration.\n */\nexport const DEFAULT_EXTENSION_READINESS_CONFIG: ExtensionReadinessConfig = {\n readySelectors: [\n '[data-testid=\"unlock-password\"]',\n '[data-testid=\"onboarding-create-wallet\"]',\n '[data-testid=\"onboarding-import-wallet\"]',\n '[data-testid=\"account-menu-icon\"]',\n '[data-testid=\"get-started\"]',\n '[data-testid=\"onboarding-terms-checkbox\"]',\n '[data-testid=\"onboarding-privacy-policy\"]',\n ],\n expectedStatesDescription: 'unlock page, onboarding page, or home page',\n};\n\n/**\n * Wait for the extension UI to be ready by checking for expected selectors.\n *\n * @param deps - Dependencies including page, screenshot directory, and logger\n * @param config - Configuration with ready selectors to wait for\n * @param timeout - Maximum time to wait in milliseconds (default: 30000)\n */\nexport async function waitForExtensionUiReady(\n deps: ExtensionReadinessDeps,\n config: ExtensionReadinessConfig = DEFAULT_EXTENSION_READINESS_CONFIG,\n timeout = 30000,\n): Promise<void> {\n const { page, screenshotDir, log } = deps;\n const { readySelectors, expectedStatesDescription } = config;\n\n try {\n await Promise.race(\n readySelectors.map(async (selector) =>\n page.waitForSelector(selector, { timeout }),\n ),\n );\n log.info('Extension UI is ready');\n } catch {\n const currentUrl = page.url();\n const screenshotPath = path.join(\n screenshotDir,\n `ui-ready-failure-${Date.now()}.png`,\n );\n await page.screenshot({ path: screenshotPath, fullPage: true });\n log.error(`Debug screenshot saved: ${screenshotPath}`);\n\n const expectedStates =\n expectedStatesDescription ?? 'one of the expected ready states';\n\n throw new Error(\n `Extension UI did not reach expected state within ${timeout}ms. ` +\n `Current URL: ${currentUrl}. ` +\n `Expected: ${expectedStates}. ` +\n `Debug screenshot saved to: ${screenshotPath}`,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"extension-readiness.cjs","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":";;;;;AAmCA,0DAwCC;AA1ED,gDAAwB;AA2BxB;;;;;;GAMG;AACI,KAAK,UAAU,uBAAuB,CAC3C,IAA4B,EAC5B,MAAgC,EAChC,OAAO,GAAG,KAAK;IAEf,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,cAAc,EAAE,yBAAyB,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACpC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAC5C,CACF,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAC9B,aAAa,EACb,oBAAoB,IAAI,CAAC,GAAG,EAAE,MAAM,CACrC,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;QAEvD,MAAM,cAAc,GAClB,yBAAyB,IAAI,kCAAkC,CAAC;QAElE,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,MAAM;YAC/D,gBAAgB,UAAU,IAAI;YAC9B,aAAa,cAAc,IAAI;YAC/B,8BAA8B,cAAc,EAAE,CACjD,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { Page } from '@playwright/test';\nimport path from 'path';\n\nexport type ExtensionReadinessDeps = {\n page: Page;\n screenshotDir: string;\n log: {\n info: (message: string) => void;\n error: (message: string) => void;\n };\n};\n\n/**\n * Configuration for extension readiness detection.\n * Allows different extensions to specify their own UI ready selectors.\n */\nexport type ExtensionReadinessConfig = {\n /**\n * CSS selectors that indicate the extension UI is ready.\n * The function waits for ANY of these selectors to appear.\n */\n readySelectors: string[];\n /**\n * Human-readable description of expected states for error messages.\n */\n expectedStatesDescription?: string;\n};\n\n/**\n * Wait for the extension UI to be ready by checking for expected selectors.\n *\n * @param deps - Dependencies including page, screenshot directory, and logger\n * @param config - Configuration with ready selectors to wait for\n * @param timeout - Maximum time to wait in milliseconds (default: 30000)\n */\nexport async function waitForExtensionUiReady(\n deps: ExtensionReadinessDeps,\n config: ExtensionReadinessConfig,\n timeout = 30000,\n): Promise<void> {\n const { page, screenshotDir, log } = deps;\n const { readySelectors, expectedStatesDescription } = config;\n\n if (readySelectors.length === 0) {\n throw new Error(\n 'Extension readiness config must include at least one ready selector.',\n );\n }\n\n try {\n await Promise.race(\n readySelectors.map(async (selector) =>\n page.waitForSelector(selector, { timeout }),\n ),\n );\n log.info('Extension UI is ready');\n } catch {\n const currentUrl = page.url();\n const screenshotPath = path.join(\n screenshotDir,\n `ui-ready-failure-${Date.now()}.png`,\n );\n await page.screenshot({ path: screenshotPath, fullPage: true });\n log.error(`Debug screenshot saved: ${screenshotPath}`);\n\n const expectedStates =\n expectedStatesDescription ?? 'one of the expected ready states';\n\n throw new Error(\n `Extension UI did not reach expected state within ${timeout}ms. ` +\n `Current URL: ${currentUrl}. ` +\n `Expected: ${expectedStates}. ` +\n `Debug screenshot saved to: ${screenshotPath}`,\n );\n }\n}\n"]}
@@ -22,10 +22,6 @@ export type ExtensionReadinessConfig = {
22
22
  */
23
23
  expectedStatesDescription?: string;
24
24
  };
25
- /**
26
- * Default MetaMask extension readiness configuration.
27
- */
28
- export declare const DEFAULT_EXTENSION_READINESS_CONFIG: ExtensionReadinessConfig;
29
25
  /**
30
26
  * Wait for the extension UI to be ready by checking for expected selectors.
31
27
  *
@@ -33,5 +29,5 @@ export declare const DEFAULT_EXTENSION_READINESS_CONFIG: ExtensionReadinessConfi
33
29
  * @param config - Configuration with ready selectors to wait for
34
30
  * @param timeout - Maximum time to wait in milliseconds (default: 30000)
35
31
  */
36
- export declare function waitForExtensionUiReady(deps: ExtensionReadinessDeps, config?: ExtensionReadinessConfig, timeout?: number): Promise<void>;
32
+ export declare function waitForExtensionUiReady(deps: ExtensionReadinessDeps, config: ExtensionReadinessConfig, timeout?: number): Promise<void>;
37
33
  //# sourceMappingURL=extension-readiness.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-readiness.d.cts","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,yBAAyB;AAG7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,EAAE,wBAWhD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,GAAE,wBAA6D,EACrE,OAAO,SAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
1
+ {"version":3,"file":"extension-readiness.d.cts","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,yBAAyB;AAG7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,wBAAwB,EAChC,OAAO,SAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -22,10 +22,6 @@ export type ExtensionReadinessConfig = {
22
22
  */
23
23
  expectedStatesDescription?: string;
24
24
  };
25
- /**
26
- * Default MetaMask extension readiness configuration.
27
- */
28
- export declare const DEFAULT_EXTENSION_READINESS_CONFIG: ExtensionReadinessConfig;
29
25
  /**
30
26
  * Wait for the extension UI to be ready by checking for expected selectors.
31
27
  *
@@ -33,5 +29,5 @@ export declare const DEFAULT_EXTENSION_READINESS_CONFIG: ExtensionReadinessConfi
33
29
  * @param config - Configuration with ready selectors to wait for
34
30
  * @param timeout - Maximum time to wait in milliseconds (default: 30000)
35
31
  */
36
- export declare function waitForExtensionUiReady(deps: ExtensionReadinessDeps, config?: ExtensionReadinessConfig, timeout?: number): Promise<void>;
32
+ export declare function waitForExtensionUiReady(deps: ExtensionReadinessDeps, config: ExtensionReadinessConfig, timeout?: number): Promise<void>;
37
33
  //# sourceMappingURL=extension-readiness.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"extension-readiness.d.mts","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,yBAAyB;AAG7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kCAAkC,EAAE,wBAWhD,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,GAAE,wBAA6D,EACrE,OAAO,SAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
1
+ {"version":3,"file":"extension-readiness.d.mts","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,yBAAyB;AAG7C,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE;QACH,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KAClC,CAAC;CACH,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAAG;IACrC;;;OAGG;IACH,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACpC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,sBAAsB,EAC5B,MAAM,EAAE,wBAAwB,EAChC,OAAO,SAAQ,GACd,OAAO,CAAC,IAAI,CAAC,CAoCf"}
@@ -1,19 +1,4 @@
1
1
  import path from "path";
2
- /**
3
- * Default MetaMask extension readiness configuration.
4
- */
5
- export const DEFAULT_EXTENSION_READINESS_CONFIG = {
6
- readySelectors: [
7
- '[data-testid="unlock-password"]',
8
- '[data-testid="onboarding-create-wallet"]',
9
- '[data-testid="onboarding-import-wallet"]',
10
- '[data-testid="account-menu-icon"]',
11
- '[data-testid="get-started"]',
12
- '[data-testid="onboarding-terms-checkbox"]',
13
- '[data-testid="onboarding-privacy-policy"]',
14
- ],
15
- expectedStatesDescription: 'unlock page, onboarding page, or home page',
16
- };
17
2
  /**
18
3
  * Wait for the extension UI to be ready by checking for expected selectors.
19
4
  *
@@ -21,9 +6,12 @@ export const DEFAULT_EXTENSION_READINESS_CONFIG = {
21
6
  * @param config - Configuration with ready selectors to wait for
22
7
  * @param timeout - Maximum time to wait in milliseconds (default: 30000)
23
8
  */
24
- export async function waitForExtensionUiReady(deps, config = DEFAULT_EXTENSION_READINESS_CONFIG, timeout = 30000) {
9
+ export async function waitForExtensionUiReady(deps, config, timeout = 30000) {
25
10
  const { page, screenshotDir, log } = deps;
26
11
  const { readySelectors, expectedStatesDescription } = config;
12
+ if (readySelectors.length === 0) {
13
+ throw new Error('Extension readiness config must include at least one ready selector.');
14
+ }
27
15
  try {
28
16
  await Promise.race(readySelectors.map(async (selector) => page.waitForSelector(selector, { timeout })));
29
17
  log.info('Extension UI is ready');
@@ -1 +1 @@
1
- {"version":3,"file":"extension-readiness.mjs","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,aAAa;AA2BxB;;GAEG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAA6B;IAC1E,cAAc,EAAE;QACd,iCAAiC;QACjC,0CAA0C;QAC1C,0CAA0C;QAC1C,mCAAmC;QACnC,6BAA6B;QAC7B,2CAA2C;QAC3C,2CAA2C;KAC5C;IACD,yBAAyB,EAAE,4CAA4C;CACxE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA4B,EAC5B,SAAmC,kCAAkC,EACrE,OAAO,GAAG,KAAK;IAEf,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,cAAc,EAAE,yBAAyB,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACpC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAC5C,CACF,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,aAAa,EACb,oBAAoB,IAAI,CAAC,GAAG,EAAE,MAAM,CACrC,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;QAEvD,MAAM,cAAc,GAClB,yBAAyB,IAAI,kCAAkC,CAAC;QAElE,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,MAAM;YAC/D,gBAAgB,UAAU,IAAI;YAC9B,aAAa,cAAc,IAAI;YAC/B,8BAA8B,cAAc,EAAE,CACjD,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { Page } from '@playwright/test';\nimport path from 'path';\n\nexport type ExtensionReadinessDeps = {\n page: Page;\n screenshotDir: string;\n log: {\n info: (message: string) => void;\n error: (message: string) => void;\n };\n};\n\n/**\n * Configuration for extension readiness detection.\n * Allows different extensions to specify their own UI ready selectors.\n */\nexport type ExtensionReadinessConfig = {\n /**\n * CSS selectors that indicate the extension UI is ready.\n * The function waits for ANY of these selectors to appear.\n */\n readySelectors: string[];\n /**\n * Human-readable description of expected states for error messages.\n */\n expectedStatesDescription?: string;\n};\n\n/**\n * Default MetaMask extension readiness configuration.\n */\nexport const DEFAULT_EXTENSION_READINESS_CONFIG: ExtensionReadinessConfig = {\n readySelectors: [\n '[data-testid=\"unlock-password\"]',\n '[data-testid=\"onboarding-create-wallet\"]',\n '[data-testid=\"onboarding-import-wallet\"]',\n '[data-testid=\"account-menu-icon\"]',\n '[data-testid=\"get-started\"]',\n '[data-testid=\"onboarding-terms-checkbox\"]',\n '[data-testid=\"onboarding-privacy-policy\"]',\n ],\n expectedStatesDescription: 'unlock page, onboarding page, or home page',\n};\n\n/**\n * Wait for the extension UI to be ready by checking for expected selectors.\n *\n * @param deps - Dependencies including page, screenshot directory, and logger\n * @param config - Configuration with ready selectors to wait for\n * @param timeout - Maximum time to wait in milliseconds (default: 30000)\n */\nexport async function waitForExtensionUiReady(\n deps: ExtensionReadinessDeps,\n config: ExtensionReadinessConfig = DEFAULT_EXTENSION_READINESS_CONFIG,\n timeout = 30000,\n): Promise<void> {\n const { page, screenshotDir, log } = deps;\n const { readySelectors, expectedStatesDescription } = config;\n\n try {\n await Promise.race(\n readySelectors.map(async (selector) =>\n page.waitForSelector(selector, { timeout }),\n ),\n );\n log.info('Extension UI is ready');\n } catch {\n const currentUrl = page.url();\n const screenshotPath = path.join(\n screenshotDir,\n `ui-ready-failure-${Date.now()}.png`,\n );\n await page.screenshot({ path: screenshotPath, fullPage: true });\n log.error(`Debug screenshot saved: ${screenshotPath}`);\n\n const expectedStates =\n expectedStatesDescription ?? 'one of the expected ready states';\n\n throw new Error(\n `Extension UI did not reach expected state within ${timeout}ms. ` +\n `Current URL: ${currentUrl}. ` +\n `Expected: ${expectedStates}. ` +\n `Debug screenshot saved to: ${screenshotPath}`,\n );\n }\n}\n"]}
1
+ {"version":3,"file":"extension-readiness.mjs","sourceRoot":"","sources":["../../src/launcher/extension-readiness.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,aAAa;AA2BxB;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,IAA4B,EAC5B,MAAgC,EAChC,OAAO,GAAG,KAAK;IAEf,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAC1C,MAAM,EAAE,cAAc,EAAE,yBAAyB,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CACb,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,CAChB,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CACpC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,CAAC,CAC5C,CACF,CAAC;QACF,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAC9B,aAAa,EACb,oBAAoB,IAAI,CAAC,GAAG,EAAE,MAAM,CACrC,CAAC;QACF,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,GAAG,CAAC,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;QAEvD,MAAM,cAAc,GAClB,yBAAyB,IAAI,kCAAkC,CAAC;QAElE,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,MAAM;YAC/D,gBAAgB,UAAU,IAAI;YAC9B,aAAa,cAAc,IAAI;YAC/B,8BAA8B,cAAc,EAAE,CACjD,CAAC;IACJ,CAAC;AACH,CAAC","sourcesContent":["import type { Page } from '@playwright/test';\nimport path from 'path';\n\nexport type ExtensionReadinessDeps = {\n page: Page;\n screenshotDir: string;\n log: {\n info: (message: string) => void;\n error: (message: string) => void;\n };\n};\n\n/**\n * Configuration for extension readiness detection.\n * Allows different extensions to specify their own UI ready selectors.\n */\nexport type ExtensionReadinessConfig = {\n /**\n * CSS selectors that indicate the extension UI is ready.\n * The function waits for ANY of these selectors to appear.\n */\n readySelectors: string[];\n /**\n * Human-readable description of expected states for error messages.\n */\n expectedStatesDescription?: string;\n};\n\n/**\n * Wait for the extension UI to be ready by checking for expected selectors.\n *\n * @param deps - Dependencies including page, screenshot directory, and logger\n * @param config - Configuration with ready selectors to wait for\n * @param timeout - Maximum time to wait in milliseconds (default: 30000)\n */\nexport async function waitForExtensionUiReady(\n deps: ExtensionReadinessDeps,\n config: ExtensionReadinessConfig,\n timeout = 30000,\n): Promise<void> {\n const { page, screenshotDir, log } = deps;\n const { readySelectors, expectedStatesDescription } = config;\n\n if (readySelectors.length === 0) {\n throw new Error(\n 'Extension readiness config must include at least one ready selector.',\n );\n }\n\n try {\n await Promise.race(\n readySelectors.map(async (selector) =>\n page.waitForSelector(selector, { timeout }),\n ),\n );\n log.info('Extension UI is ready');\n } catch {\n const currentUrl = page.url();\n const screenshotPath = path.join(\n screenshotDir,\n `ui-ready-failure-${Date.now()}.png`,\n );\n await page.screenshot({ path: screenshotPath, fullPage: true });\n log.error(`Debug screenshot saved: ${screenshotPath}`);\n\n const expectedStates =\n expectedStatesDescription ?? 'one of the expected ready states';\n\n throw new Error(\n `Extension UI did not reach expected state within ${timeout}ms. ` +\n `Current URL: ${currentUrl}. ` +\n `Expected: ${expectedStates}. ` +\n `Debug screenshot saved to: ${screenshotPath}`,\n );\n }\n}\n"]}
@@ -378,6 +378,10 @@ exports.runStepsInputSchema = zod_1.z.object({
378
378
  });
379
379
  exports.setContextInputSchema = zod_1.z.object({
380
380
  context: zod_1.z.enum(['e2e', 'prod']).describe('Target context to switch to'),
381
+ options: zod_1.z
382
+ .record(zod_1.z.string(), zod_1.z.unknown())
383
+ .describe('Optional context-specific options forwarded to session manager')
384
+ .optional(),
381
385
  });
382
386
  exports.getContextInputSchema = zod_1.z
383
387
  .object({})
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.cjs","sourceRoot":"","sources":["../../src/mcp-server/schemas.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAExB,oDAAqE;AAExD,QAAA,cAAc,GAAG,OAAC;KAC5B,MAAM,EAAE;KACR,KAAK,CAAC,YAAY,CAAC;KACnB,QAAQ,CACP,gEAAgE;IAC9D,0EAA0E,CAC7E,CAAC;AAES,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC;IACN,OAAO,EAAE,sBAAc,CAAC,QAAQ,EAAE;IAClC,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,kEAAkE,CACnE;SACA,QAAQ,EAAE;IACb,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kDAAkD,CAAC;SAC5D,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAChE,OAAO,CACR,CAAC;IACF,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;AAC/B,CAAC,EACD;IACE,OAAO,EAAE,8DAA8D;CACxE,CACF,CAAC;AAES,QAAA,oBAAoB,GAAG,OAAC,CAAC,KAAK,CAAC;IAC1C,OAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC;IAC/D,OAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,4CAA4C,CAAC;IACvE,OAAC;SACE,MAAM,CAAC;QACN,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC;KACtE,CAAC;SACD,QAAQ,CAAC,sCAAsC,CAAC;CACpD,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG,iCAAoB,CAAC;AAChD,MAAM,SAAS,GAAG,sBAAS,CAAC;AAEf,QAAA,sBAAsB,GAAG,OAAC;KACpC,MAAM,CAAC;IACN,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sDAAsD,CAAC;SAChE,QAAQ,EAAE;IACb,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE;IACrE,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,sDAAsD,CAAC;SAChE,QAAQ,EAAE;IACb,UAAU,EAAE,OAAC;SACV,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CAAC,mDAAmD,CAAC;SAC7D,QAAQ,EAAE;CACd,CAAC;KACD,QAAQ,EAAE,CAAC;AAED,QAAA,gBAAgB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,SAAS,EAAE,OAAC;SACT,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC;SACpB,OAAO,CAAC,YAAY,CAAC;SACrB,QAAQ,CAAC,+DAA+D,CAAC;IAC5E,KAAK,EAAE,OAAC;SACL,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,8CAA8C,CAAC;CAC5D,CAAC,CAAC;AAEU,QAAA,iBAAiB,GAAG,OAAC,CAAC,MAAM,CAAC;IACxC,SAAS,EAAE,OAAC;SACT,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,mDAAmD,CAAC;IAChE,SAAS,EAAE,OAAC;SACT,IAAI,CAAC,CAAC,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;SACzC,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CACP,qBAAqB;QACnB,8CAA8C;QAC9C,6CAA6C;QAC7C,+BAA+B,CAClC;IACH,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CACP,wEAAwE;QACtE,kCAAkC,CACrC;SACA,QAAQ,EAAE;IACb,OAAO,EAAE,OAAC;SACP,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CAAC,4CAA4C,CAAC;SACtD,QAAQ,EAAE;IACb,KAAK,EAAE,OAAC;SACL,MAAM,CAAC;QACN,KAAK,EAAE,OAAC;aACL,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,CAAC,4CAA4C,CAAC;aACtD,QAAQ,EAAE;QACb,aAAa,EAAE,OAAC;aACb,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,KAAK,CAAC;aACV,QAAQ,CAAC,0CAA0C,CAAC;aACpD,QAAQ,EAAE;KACd,CAAC;SACD,QAAQ,EAAE;IACb,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,gEAAgE,CAAC;IAC7E,aAAa,EAAE,OAAC;SACb,MAAM,EAAE;SACR,QAAQ,CAAC,0CAA0C,CAAC;SACpD,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CAAC,iEAAiE,CAAC;SAC3E,QAAQ,EAAE;IACb,QAAQ,EAAE,OAAC;SACR,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CACP,2EAA2E;QACzE,6CAA6C,CAChD;SACA,QAAQ,EAAE;IACb,IAAI,EAAE,OAAC;SACJ,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,CAAC,qCAAqC,CAAC;SAC/C,QAAQ,EAAE;IACb,aAAa,EAAE,OAAC;SACb,KAAK,CAAC,OAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACjC,QAAQ,CAAC,8DAA8D,CAAC;SACxE,QAAQ,EAAE;CACd,CAAC,CAAC;AAEU,QAAA,kBAAkB,GAAG,OAAC,CAAC,MAAM,CAAC;IACzC,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,wDAAwD,CAAC;SAClE,QAAQ,EAAE;CACd,CAAC,CAAC;AAEU,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAEnC,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,MAAM,EAAE,OAAC;SACN,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,EAAE,KAAK,CAAC,CAAC;SACjD,QAAQ,CACP,sEAAsE,CACvE;IACH,GAAG,EAAE,OAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,iDAAiD,CAAC;SAC3D,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EAAE,sCAAsC;IAC/C,IAAI,EAAE,CAAC,KAAK,CAAC;CACd,CACF,CAAC;AAES,QAAA,8BAA8B,GAAG,OAAC,CAAC,MAAM,CAAC;IACrD,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,IAAI,CAAC;SACT,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,wDAAwD,CAAC;CACtE,CAAC,CAAC;AAEU,QAAA,sBAAsB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,GAAG,CAAC;SACZ,QAAQ,CAAC,qCAAqC,CAAC;CACnD,CAAC,CAAC;AAEU,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC;IACvD,YAAY,EAAE,OAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,+CAA+C,CAAC;SACzD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEU,QAAA,yBAAyB,GAAG,OAAC,CAAC,MAAM,CAAC;IAChD,iBAAiB,EAAE,OAAC;SACjB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,uDAAuD,CAAC;IACpE,cAAc,EAAE,OAAC;SACd,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kDAAkD,CAAC;SAC5D,QAAQ,EAAE;IACb,uBAAuB,EAAE,OAAC;SACvB,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC;IAC3E,QAAQ,EAAE,OAAC;SACR,OAAO,EAAE;SACT,OAAO,CAAC,IAAI,CAAC;SACb,QAAQ,CAAC,oCAAoC,CAAC;IACjD,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,0CAA0C,CAAC;SACpD,QAAQ,EAAE;IACb,aAAa,EAAE,OAAC;SACb,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,0CAA0C,CAAC;CACxD,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,6BAAqB,CAAC,GAAG,CACvD,OAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC,CACH,CAAC;AAEW,QAAA,eAAe,GAAG,6BAAqB,CAAC,GAAG,CACtD,OAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+BAA+B,CAAC;IAC1D,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,KAAK,CAAC;SACV,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,+CAA+C,CAAC;CAC7D,CAAC,CACH,CAAC;AAEW,QAAA,kBAAkB,GAAG,6BAAqB,CAAC,GAAG,CACzD,OAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,GAAG,CAAC;SACR,GAAG,CAAC,MAAM,CAAC;SACX,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,6BAA6B,CAAC;CAC3C,CAAC,CACH,CAAC;AAEW,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,CAAC,EAAE,OAAC;SACD,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,oCAAoC,CAAC;IACjD,KAAK,EAAE,4BAAoB;SACxB,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CACP,yEAAyE,CAC1E;IACH,OAAO,EAAE,8BAAsB;CAChC,CAAC,CAAC;AAEU,QAAA,0BAA0B,GAAG,OAAC,CAAC,MAAM,CAAC;IACjD,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,CACP,0EAA0E,CAC3E;IACH,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,2BAA2B,CAAC;IACxC,KAAK,EAAE,4BAAoB;SACxB,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,oEAAoE,CACrE;IACH,OAAO,EAAE,8BAAsB;CAChC,CAAC,CAAC;AAEU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,SAAS,EAAE,OAAC;SACT,MAAM,EAAE;SACR,QAAQ,CAAC,iDAAiD,CAAC;SAC3D,QAAQ,EAAE;IACb,KAAK,EAAE,OAAC;SACL,KAAK,CAAC;QACL,OAAC,CAAC,OAAO,CAAC,SAAS,CAAC;QACpB,OAAC,CAAC,MAAM,CAAC;YACP,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SAC7B,CAAC;KACH,CAAC;SACD,OAAO,CAAC,SAAS,CAAC;SAClB,QAAQ,CAAC,yCAAyC,CAAC;CACvD,CAAC,CAAC;AAEU,QAAA,4BAA4B,GAAG,OAAC,CAAC,MAAM,CAAC;IACnD,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,EAAE;SACL,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,OAAO,CAAC,EAAE,CAAC;SACX,QAAQ,CAAC,oCAAoC,CAAC;IACjD,OAAO,EAAE,8BAAsB;CAChC,CAAC,CAAC;AAEU,QAAA,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC9C,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;IACxC,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;IACtC,eAAe,EAAE,OAAC;SACf,MAAM,CAAC;QACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,cAAc,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACtC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEU,QAAA,wBAAwB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC/C,SAAS,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,QAAQ,EAAE,OAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAEU,QAAA,6BAA6B,GAAG,OAAC,CAAC,MAAM,CAAC;IACpD,YAAY,EAAE,OAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;CACzC,CAAC,CAAC;AAEU,QAAA,gCAAgC,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7D,MAAM,QAAQ,GAAG,CAAC,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AACzE,MAAM,gBAAgB,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,CAAU,CAAC;AAEvD,QAAA,sBAAsB,GAAG,OAAC;KACpC,MAAM,CAAC;IACN,IAAI,EAAE,OAAC;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,QAAQ,CAAC,8DAA8D,CAAC;SACxE,QAAQ,EAAE;IACb,GAAG,EAAE,OAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,uCAAuC,CAAC;SACjD,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;IACvC,OAAO,EAAE,qCAAqC;CAC/C,CAAC,CAAC;AAEQ,QAAA,mBAAmB,GAAG,OAAC;KACjC,MAAM,CAAC;IACN,IAAI,EAAE,OAAC;SACJ,IAAI,CAAC,gBAAgB,CAAC;SACtB,QAAQ,CACP,wEAAwE,CACzE;SACA,QAAQ,EAAE;IACb,GAAG,EAAE,OAAC;SACH,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,qCAAqC,CAAC;SAC/C,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE;IACvC,OAAO,EAAE,qCAAqC;CAC/C,CAAC,CAAC;AAEQ,QAAA,mBAAmB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC1C,KAAK,EAAE,OAAC;SACL,KAAK,CACJ,OAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE;QAChB,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;KACnD,CAAC,CACH;SACA,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CAAC,yCAAyC,CAAC;IACtD,WAAW,EAAE,OAAC;SACX,OAAO,EAAE;SACT,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CAAC,2DAA2D,CAAC;IACxE,mBAAmB,EAAE,OAAC;SACnB,IAAI,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;SACjC,OAAO,CAAC,KAAK,CAAC;SACd,QAAQ,CACP,2CAA2C;QACzC,wEAAwE,CAC3E;CACJ,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,OAAC,CAAC,MAAM,CAAC;IAC5C,OAAO,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;CACzE,CAAC,CAAC;AAEU,QAAA,qBAAqB,GAAG,OAAC;KACnC,MAAM,CAAC,EAAE,CAAC;KACV,QAAQ,CAAC,wBAAwB,CAAC,CAAC;AAEzB,QAAA,oBAAoB,GAAG,OAAC;KAClC,MAAM,CAAC;IACN,MAAM,EAAE,OAAC;SACN,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;SACvB,QAAQ,CACP,mEAAmE,CACpE;IACH,IAAI,EAAE,OAAC;SACJ,MAAM,EAAE;SACR,QAAQ,CAAC,8DAA8D,CAAC;SACxE,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EAAE,yCAAyC;IAClD,IAAI,EAAE,CAAC,MAAM,CAAC;CACf,CACF,CAAC;AAMS,QAAA,WAAW,GAAG;IACzB,KAAK,EAAE,wBAAgB;IACvB,MAAM,EAAE,yBAAiB;IACzB,OAAO,EAAE,0BAAkB;IAC3B,SAAS,EAAE,2BAAmB;IAC9B,QAAQ,EAAE,2BAAmB;IAC7B,qBAAqB,EAAE,sCAA8B;IACrD,aAAa,EAAE,8BAAsB;IACrC,SAAS,EAAE,2BAAmB;IAC9B,YAAY,EAAE,8BAAsB;IACpC,sBAAsB,EAAE,wCAAgC;IACxD,eAAe,EAAE,iCAAyB;IAC1C,UAAU,EAAE,6BAAqB;IACjC,KAAK,EAAE,wBAAgB;IACvB,IAAI,EAAE,uBAAe;IACrB,QAAQ,EAAE,0BAAkB;IAC5B,cAAc,EAAE,gCAAwB;IACxC,gBAAgB,EAAE,kCAA0B;IAC5C,mBAAmB,EAAE,qCAA6B;IAClD,kBAAkB,EAAE,oCAA4B;IAChD,aAAa,EAAE,+BAAuB;IACtC,cAAc,EAAE,gCAAwB;IACxC,oBAAoB,EAAE,qCAA6B;IACnD,cAAc,EAAE,wCAAgC;IAChD,SAAS,EAAE,2BAAmB;IAC9B,WAAW,EAAE,6BAAqB;IAClC,WAAW,EAAE,6BAAqB;IAClC,SAAS,EAAE,4BAAoB;CACvB,CAAC","sourcesContent":["import { z } from 'zod';\n\nimport { SMART_CONTRACT_NAMES, HARDFORKS } from './types/seeding.js';\n\nexport const a11yRefPattern = z\n .string()\n .regex(/^e[0-9]+$/u)\n .describe(\n 'Accessibility ref from accessibility_snapshot (e.g., e1, e2). ' +\n 'These refs are ephemeral and only valid within the current screen state.',\n );\n\nexport const targetSelectionSchema = z\n .object({\n a11yRef: a11yRefPattern.optional(),\n testId: z\n .string()\n .min(1)\n .describe(\n 'data-testid attribute value (stable, preferred for interactions)',\n )\n .optional(),\n selector: z\n .string()\n .min(1)\n .describe('CSS selector (fallback, less stable than testId)')\n .optional(),\n })\n .refine(\n (data) => {\n const provided = [data.a11yRef, data.testId, data.selector].filter(\n Boolean,\n );\n return provided.length === 1;\n },\n {\n message: 'Exactly one of a11yRef, testId, or selector must be provided',\n },\n );\n\nexport const knowledgeScopeSchema = z.union([\n z.literal('current').describe('Only search the active session'),\n z.literal('all').describe('Search all sessions in the knowledge store'),\n z\n .object({\n sessionId: z.string().min(4).describe('Specific session ID to query'),\n })\n .describe('Query a specific prior session by ID'),\n]);\n\nconst smartContractNames = SMART_CONTRACT_NAMES;\nconst hardforks = HARDFORKS;\n\nexport const knowledgeFiltersSchema = z\n .object({\n flowTag: z\n .string()\n .min(1)\n .describe('Filter by flow tag (e.g., send, swap, connect, sign)')\n .optional(),\n tag: z.string().min(1).describe('Filter by free-form tag').optional(),\n screen: z\n .string()\n .min(1)\n .describe('Filter by screen name (e.g., home, unlock, settings)')\n .optional(),\n sinceHours: z\n .number()\n .int()\n .min(1)\n .max(720)\n .describe('Only include sessions/steps from the last N hours')\n .optional(),\n })\n .optional();\n\nexport const buildInputSchema = z.object({\n buildType: z\n .enum(['build:test'])\n .default('build:test')\n .describe('Build command to run. Currently only build:test is supported.'),\n force: z\n .boolean()\n .default(false)\n .describe('Force rebuild even if a build already exists'),\n});\n\nexport const launchInputSchema = z.object({\n autoBuild: z\n .boolean()\n .default(true)\n .describe('Automatically run build if extension is not found'),\n stateMode: z\n .enum(['default', 'onboarding', 'custom'])\n .default('default')\n .describe(\n 'Wallet state mode: ' +\n 'default = pre-onboarded wallet with 25 ETH, ' +\n 'onboarding = fresh wallet requiring setup, ' +\n 'custom = use provided fixture',\n ),\n fixturePreset: z\n .string()\n .min(1)\n .describe(\n 'Name of preset fixture (e.g., withMultipleAccounts, withERC20Tokens). ' +\n 'Only used when stateMode=custom.',\n )\n .optional(),\n fixture: z\n .record(z.string(), z.unknown())\n .describe('Direct fixture object for stateMode=custom')\n .optional(),\n ports: z\n .object({\n anvil: z\n .number()\n .int()\n .min(1)\n .max(65535)\n .describe('Port for Anvil local chain (default: 8545)')\n .optional(),\n fixtureServer: z\n .number()\n .int()\n .min(1)\n .max(65535)\n .describe('Port for fixture server (default: 12345)')\n .optional(),\n })\n .optional(),\n slowMo: z\n .number()\n .int()\n .min(0)\n .max(10000)\n .default(0)\n .describe('Slow down Playwright actions by N milliseconds (for debugging)'),\n extensionPath: z\n .string()\n .describe('Custom path to built extension directory')\n .optional(),\n goal: z\n .string()\n .describe('Goal or task description for this session (for knowledge store)')\n .optional(),\n flowTags: z\n .array(z.string())\n .describe(\n 'Flow tags for categorization (e.g., [\"send\"], [\"swap\", \"confirmation\"]). ' +\n 'Used for cross-session knowledge retrieval.',\n )\n .optional(),\n tags: z\n .array(z.string())\n .describe('Free-form tags for ad-hoc filtering')\n .optional(),\n seedContracts: z\n .array(z.enum(smartContractNames))\n .describe('Smart contracts to deploy on launch (before extension loads)')\n .optional(),\n});\n\nexport const cleanupInputSchema = z.object({\n sessionId: z\n .string()\n .describe('Session ID to clean up (optional, defaults to current)')\n .optional(),\n});\n\nexport const getStateInputSchema = z.object({});\n\nexport const navigateInputSchema = z\n .object({\n screen: z\n .enum(['home', 'settings', 'notification', 'url'])\n .describe(\n 'Target screen: home, settings, notification (popup), or url (custom)',\n ),\n url: z\n .string()\n .min(1)\n .describe('URL to navigate to (required when screen=\"url\")')\n .optional(),\n })\n .refine(\n (data) => {\n if (data.screen === 'url' && !data.url) {\n return false;\n }\n return true;\n },\n {\n message: 'url is required when screen is \"url\"',\n path: ['url'],\n },\n );\n\nexport const waitForNotificationInputSchema = z.object({\n timeoutMs: z\n .number()\n .int()\n .min(1000)\n .max(60000)\n .default(15000)\n .describe('Timeout in milliseconds to wait for notification popup'),\n});\n\nexport const listTestIdsInputSchema = z.object({\n limit: z\n .number()\n .int()\n .min(1)\n .max(500)\n .default(150)\n .describe('Maximum number of testIds to return'),\n});\n\nexport const accessibilitySnapshotInputSchema = z.object({\n rootSelector: z\n .string()\n .min(1)\n .describe('CSS selector to scope the snapshot (optional)')\n .optional(),\n});\n\nexport const describeScreenInputSchema = z.object({\n includeScreenshot: z\n .boolean()\n .default(false)\n .describe('Capture and include a screenshot (opt-in for privacy)'),\n screenshotName: z\n .string()\n .min(1)\n .describe('Name for the screenshot file (without extension)')\n .optional(),\n includeScreenshotBase64: z\n .boolean()\n .default(false)\n .describe('Include base64-encoded screenshot in response'),\n});\n\nexport const screenshotInputSchema = z.object({\n name: z.string().min(1).describe('Screenshot filename (without extension)'),\n fullPage: z\n .boolean()\n .default(true)\n .describe('Capture full page or just viewport'),\n selector: z\n .string()\n .min(1)\n .describe('CSS selector to capture specific element')\n .optional(),\n includeBase64: z\n .boolean()\n .default(false)\n .describe('Include base64-encoded image in response'),\n});\n\nexport const clickInputSchema = targetSelectionSchema.and(\n z.object({\n timeoutMs: z\n .number()\n .int()\n .min(0)\n .max(60000)\n .default(15000)\n .describe('Timeout to wait for element to become visible'),\n }),\n);\n\nexport const typeInputSchema = targetSelectionSchema.and(\n z.object({\n text: z.string().describe('Text to type into the element'),\n timeoutMs: z\n .number()\n .int()\n .min(0)\n .max(60000)\n .default(15000)\n .describe('Timeout to wait for element to become visible'),\n }),\n);\n\nexport const waitForInputSchema = targetSelectionSchema.and(\n z.object({\n timeoutMs: z\n .number()\n .int()\n .min(100)\n .max(120000)\n .default(15000)\n .describe('Timeout to wait for element'),\n }),\n);\n\nexport const knowledgeLastInputSchema = z.object({\n n: z\n .number()\n .int()\n .min(1)\n .max(200)\n .default(20)\n .describe('Number of recent steps to retrieve'),\n scope: knowledgeScopeSchema\n .default('current')\n .describe(\n 'Scope for retrieval: current session, all sessions, or specific session',\n ),\n filters: knowledgeFiltersSchema,\n});\n\nexport const knowledgeSearchInputSchema = z.object({\n query: z\n .string()\n .min(1)\n .max(200)\n .describe(\n 'Search query - matches tool names, screen names, testIds, and a11y names',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .default(20)\n .describe('Maximum number of results'),\n scope: knowledgeScopeSchema\n .default('all')\n .describe(\n 'Search scope (defaults to all sessions for cross-session learning)',\n ),\n filters: knowledgeFiltersSchema,\n});\n\nexport const knowledgeSummarizeInputSchema = z.object({\n sessionId: z\n .string()\n .describe('Deprecated: use scope. Session ID to summarize.')\n .optional(),\n scope: z\n .union([\n z.literal('current'),\n z.object({\n sessionId: z.string().min(4),\n }),\n ])\n .default('current')\n .describe('Session to summarize (cannot use \"all\")'),\n});\n\nexport const knowledgeSessionsInputSchema = z.object({\n limit: z\n .number()\n .int()\n .min(1)\n .max(50)\n .default(10)\n .describe('Maximum number of sessions to list'),\n filters: knowledgeFiltersSchema,\n});\n\nexport const seedContractInputSchema = z.object({\n contractName: z.enum(smartContractNames),\n hardfork: z.enum(hardforks).optional(),\n deployerOptions: z\n .object({\n fromAddress: z.string().optional(),\n fromPrivateKey: z.string().optional(),\n })\n .optional(),\n});\n\nexport const seedContractsInputSchema = z.object({\n contracts: z.array(z.enum(smartContractNames)).min(1).max(9),\n hardfork: z.enum(hardforks).optional(),\n});\n\nexport const getContractAddressInputSchema = z.object({\n contractName: z.enum(smartContractNames),\n});\n\nexport const listDeployedContractsInputSchema = z.object({});\n\nconst tabRoles = ['extension', 'notification', 'dapp', 'other'] as const;\nconst closableTabRoles = ['notification', 'dapp', 'other'] as const;\n\nexport const switchToTabInputSchema = z\n .object({\n role: z\n .enum(tabRoles)\n .describe('Tab role to switch to (extension, notification, dapp, other)')\n .optional(),\n url: z\n .string()\n .min(1)\n .describe('URL prefix to match for tab switching')\n .optional(),\n })\n .refine((data) => data.role ?? data.url, {\n message: 'Either role or url must be provided',\n });\n\nexport const closeTabInputSchema = z\n .object({\n role: z\n .enum(closableTabRoles)\n .describe(\n 'Tab role to close (notification, dapp, other). Cannot close extension.',\n )\n .optional(),\n url: z\n .string()\n .min(1)\n .describe('URL prefix to match for tab closing')\n .optional(),\n })\n .refine((data) => data.role ?? data.url, {\n message: 'Either role or url must be provided',\n });\n\nexport const runStepsInputSchema = z.object({\n steps: z\n .array(\n z.object({\n tool: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .min(1)\n .max(50)\n .describe('Array of tool calls to execute in order'),\n stopOnError: z\n .boolean()\n .default(false)\n .describe('Stop execution on first error (default: false - continue)'),\n includeObservations: z\n .enum(['none', 'failures', 'all'])\n .default('all')\n .describe(\n 'When to include observations in results: ' +\n 'none = never (fastest), failures = only for failed steps, all = always',\n ),\n});\n\nexport const setContextInputSchema = z.object({\n context: z.enum(['e2e', 'prod']).describe('Target context to switch to'),\n});\n\nexport const getContextInputSchema = z\n .object({})\n .describe('No parameters required');\n\nexport const clipboardInputSchema = z\n .object({\n action: z\n .enum(['write', 'read'])\n .describe(\n 'Action to perform: write text to clipboard or read from clipboard',\n ),\n text: z\n .string()\n .describe(\"Text to write to clipboard (required when action is 'write')\")\n .optional(),\n })\n .refine(\n (data) => {\n if (data.action === 'write' && !data.text) {\n return false;\n }\n return true;\n },\n {\n message: \"text is required when action is 'write'\",\n path: ['text'],\n },\n );\n\nexport type SetContextInputZ = z.infer<typeof setContextInputSchema>;\nexport type GetContextInputZ = z.infer<typeof getContextInputSchema>;\nexport type ClipboardInputZ = z.infer<typeof clipboardInputSchema>;\n\nexport const toolSchemas = {\n build: buildInputSchema,\n launch: launchInputSchema,\n cleanup: cleanupInputSchema,\n get_state: getStateInputSchema,\n navigate: navigateInputSchema,\n wait_for_notification: waitForNotificationInputSchema,\n switch_to_tab: switchToTabInputSchema,\n close_tab: closeTabInputSchema,\n list_testids: listTestIdsInputSchema,\n accessibility_snapshot: accessibilitySnapshotInputSchema,\n describe_screen: describeScreenInputSchema,\n screenshot: screenshotInputSchema,\n click: clickInputSchema,\n type: typeInputSchema,\n wait_for: waitForInputSchema,\n knowledge_last: knowledgeLastInputSchema,\n knowledge_search: knowledgeSearchInputSchema,\n knowledge_summarize: knowledgeSummarizeInputSchema,\n knowledge_sessions: knowledgeSessionsInputSchema,\n seed_contract: seedContractInputSchema,\n seed_contracts: seedContractsInputSchema,\n get_contract_address: getContractAddressInputSchema,\n list_contracts: listDeployedContractsInputSchema,\n run_steps: runStepsInputSchema,\n set_context: setContextInputSchema,\n get_context: getContextInputSchema,\n clipboard: clipboardInputSchema,\n} as const;\n\nexport type ToolName = keyof typeof toolSchemas;\n\nexport type BuildInputZ = z.infer<typeof buildInputSchema>;\nexport type LaunchInputZ = z.infer<typeof launchInputSchema>;\nexport type CleanupInputZ = z.infer<typeof cleanupInputSchema>;\nexport type GetStateInputZ = z.infer<typeof getStateInputSchema>;\nexport type NavigateInputZ = z.infer<typeof navigateInputSchema>;\nexport type WaitForNotificationInputZ = z.infer<\n typeof waitForNotificationInputSchema\n>;\nexport type ListTestIdsInputZ = z.infer<typeof listTestIdsInputSchema>;\nexport type AccessibilitySnapshotInputZ = z.infer<\n typeof accessibilitySnapshotInputSchema\n>;\nexport type DescribeScreenInputZ = z.infer<typeof describeScreenInputSchema>;\nexport type ScreenshotInputZ = z.infer<typeof screenshotInputSchema>;\nexport type ClickInputZ = z.infer<typeof clickInputSchema>;\nexport type TypeInputZ = z.infer<typeof typeInputSchema>;\nexport type WaitForInputZ = z.infer<typeof waitForInputSchema>;\nexport type KnowledgeLastInputZ = z.infer<typeof knowledgeLastInputSchema>;\nexport type KnowledgeSearchInputZ = z.infer<typeof knowledgeSearchInputSchema>;\nexport type KnowledgeSummarizeInputZ = z.infer<\n typeof knowledgeSummarizeInputSchema\n>;\nexport type KnowledgeSessionsInputZ = z.infer<\n typeof knowledgeSessionsInputSchema\n>;\nexport type KnowledgeScopeZ = z.infer<typeof knowledgeScopeSchema>;\nexport type KnowledgeFiltersZ = z.infer<typeof knowledgeFiltersSchema>;\nexport type RunStepsInputZ = z.infer<typeof runStepsInputSchema>;\nexport type SwitchToTabInputZ = z.infer<typeof switchToTabInputSchema>;\nexport type CloseTabInputZ = z.infer<typeof closeTabInputSchema>;\n"]}
1
+ {"version":3,"file":"schemas.cjs","sourceRoot":"","sources":["../../src/mcp-server/schemas.ts"],"names":[],"mappings":"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","sourcesContent":["import { z } from 'zod';\n\nimport { SMART_CONTRACT_NAMES, HARDFORKS } from './types/seeding.js';\n\nexport const a11yRefPattern = z\n .string()\n .regex(/^e[0-9]+$/u)\n .describe(\n 'Accessibility ref from accessibility_snapshot (e.g., e1, e2). ' +\n 'These refs are ephemeral and only valid within the current screen state.',\n );\n\nexport const targetSelectionSchema = z\n .object({\n a11yRef: a11yRefPattern.optional(),\n testId: z\n .string()\n .min(1)\n .describe(\n 'data-testid attribute value (stable, preferred for interactions)',\n )\n .optional(),\n selector: z\n .string()\n .min(1)\n .describe('CSS selector (fallback, less stable than testId)')\n .optional(),\n })\n .refine(\n (data) => {\n const provided = [data.a11yRef, data.testId, data.selector].filter(\n Boolean,\n );\n return provided.length === 1;\n },\n {\n message: 'Exactly one of a11yRef, testId, or selector must be provided',\n },\n );\n\nexport const knowledgeScopeSchema = z.union([\n z.literal('current').describe('Only search the active session'),\n z.literal('all').describe('Search all sessions in the knowledge store'),\n z\n .object({\n sessionId: z.string().min(4).describe('Specific session ID to query'),\n })\n .describe('Query a specific prior session by ID'),\n]);\n\nconst smartContractNames = SMART_CONTRACT_NAMES;\nconst hardforks = HARDFORKS;\n\nexport const knowledgeFiltersSchema = z\n .object({\n flowTag: z\n .string()\n .min(1)\n .describe('Filter by flow tag (e.g., send, swap, connect, sign)')\n .optional(),\n tag: z.string().min(1).describe('Filter by free-form tag').optional(),\n screen: z\n .string()\n .min(1)\n .describe('Filter by screen name (e.g., home, unlock, settings)')\n .optional(),\n sinceHours: z\n .number()\n .int()\n .min(1)\n .max(720)\n .describe('Only include sessions/steps from the last N hours')\n .optional(),\n })\n .optional();\n\nexport const buildInputSchema = z.object({\n buildType: z\n .enum(['build:test'])\n .default('build:test')\n .describe('Build command to run. Currently only build:test is supported.'),\n force: z\n .boolean()\n .default(false)\n .describe('Force rebuild even if a build already exists'),\n});\n\nexport const launchInputSchema = z.object({\n autoBuild: z\n .boolean()\n .default(true)\n .describe('Automatically run build if extension is not found'),\n stateMode: z\n .enum(['default', 'onboarding', 'custom'])\n .default('default')\n .describe(\n 'Wallet state mode: ' +\n 'default = pre-onboarded wallet with 25 ETH, ' +\n 'onboarding = fresh wallet requiring setup, ' +\n 'custom = use provided fixture',\n ),\n fixturePreset: z\n .string()\n .min(1)\n .describe(\n 'Name of preset fixture (e.g., withMultipleAccounts, withERC20Tokens). ' +\n 'Only used when stateMode=custom.',\n )\n .optional(),\n fixture: z\n .record(z.string(), z.unknown())\n .describe('Direct fixture object for stateMode=custom')\n .optional(),\n ports: z\n .object({\n anvil: z\n .number()\n .int()\n .min(1)\n .max(65535)\n .describe('Port for Anvil local chain (default: 8545)')\n .optional(),\n fixtureServer: z\n .number()\n .int()\n .min(1)\n .max(65535)\n .describe('Port for fixture server (default: 12345)')\n .optional(),\n })\n .optional(),\n slowMo: z\n .number()\n .int()\n .min(0)\n .max(10000)\n .default(0)\n .describe('Slow down Playwright actions by N milliseconds (for debugging)'),\n extensionPath: z\n .string()\n .describe('Custom path to built extension directory')\n .optional(),\n goal: z\n .string()\n .describe('Goal or task description for this session (for knowledge store)')\n .optional(),\n flowTags: z\n .array(z.string())\n .describe(\n 'Flow tags for categorization (e.g., [\"send\"], [\"swap\", \"confirmation\"]). ' +\n 'Used for cross-session knowledge retrieval.',\n )\n .optional(),\n tags: z\n .array(z.string())\n .describe('Free-form tags for ad-hoc filtering')\n .optional(),\n seedContracts: z\n .array(z.enum(smartContractNames))\n .describe('Smart contracts to deploy on launch (before extension loads)')\n .optional(),\n});\n\nexport const cleanupInputSchema = z.object({\n sessionId: z\n .string()\n .describe('Session ID to clean up (optional, defaults to current)')\n .optional(),\n});\n\nexport const getStateInputSchema = z.object({});\n\nexport const navigateInputSchema = z\n .object({\n screen: z\n .enum(['home', 'settings', 'notification', 'url'])\n .describe(\n 'Target screen: home, settings, notification (popup), or url (custom)',\n ),\n url: z\n .string()\n .min(1)\n .describe('URL to navigate to (required when screen=\"url\")')\n .optional(),\n })\n .refine(\n (data) => {\n if (data.screen === 'url' && !data.url) {\n return false;\n }\n return true;\n },\n {\n message: 'url is required when screen is \"url\"',\n path: ['url'],\n },\n );\n\nexport const waitForNotificationInputSchema = z.object({\n timeoutMs: z\n .number()\n .int()\n .min(1000)\n .max(60000)\n .default(15000)\n .describe('Timeout in milliseconds to wait for notification popup'),\n});\n\nexport const listTestIdsInputSchema = z.object({\n limit: z\n .number()\n .int()\n .min(1)\n .max(500)\n .default(150)\n .describe('Maximum number of testIds to return'),\n});\n\nexport const accessibilitySnapshotInputSchema = z.object({\n rootSelector: z\n .string()\n .min(1)\n .describe('CSS selector to scope the snapshot (optional)')\n .optional(),\n});\n\nexport const describeScreenInputSchema = z.object({\n includeScreenshot: z\n .boolean()\n .default(false)\n .describe('Capture and include a screenshot (opt-in for privacy)'),\n screenshotName: z\n .string()\n .min(1)\n .describe('Name for the screenshot file (without extension)')\n .optional(),\n includeScreenshotBase64: z\n .boolean()\n .default(false)\n .describe('Include base64-encoded screenshot in response'),\n});\n\nexport const screenshotInputSchema = z.object({\n name: z.string().min(1).describe('Screenshot filename (without extension)'),\n fullPage: z\n .boolean()\n .default(true)\n .describe('Capture full page or just viewport'),\n selector: z\n .string()\n .min(1)\n .describe('CSS selector to capture specific element')\n .optional(),\n includeBase64: z\n .boolean()\n .default(false)\n .describe('Include base64-encoded image in response'),\n});\n\nexport const clickInputSchema = targetSelectionSchema.and(\n z.object({\n timeoutMs: z\n .number()\n .int()\n .min(0)\n .max(60000)\n .default(15000)\n .describe('Timeout to wait for element to become visible'),\n }),\n);\n\nexport const typeInputSchema = targetSelectionSchema.and(\n z.object({\n text: z.string().describe('Text to type into the element'),\n timeoutMs: z\n .number()\n .int()\n .min(0)\n .max(60000)\n .default(15000)\n .describe('Timeout to wait for element to become visible'),\n }),\n);\n\nexport const waitForInputSchema = targetSelectionSchema.and(\n z.object({\n timeoutMs: z\n .number()\n .int()\n .min(100)\n .max(120000)\n .default(15000)\n .describe('Timeout to wait for element'),\n }),\n);\n\nexport const knowledgeLastInputSchema = z.object({\n n: z\n .number()\n .int()\n .min(1)\n .max(200)\n .default(20)\n .describe('Number of recent steps to retrieve'),\n scope: knowledgeScopeSchema\n .default('current')\n .describe(\n 'Scope for retrieval: current session, all sessions, or specific session',\n ),\n filters: knowledgeFiltersSchema,\n});\n\nexport const knowledgeSearchInputSchema = z.object({\n query: z\n .string()\n .min(1)\n .max(200)\n .describe(\n 'Search query - matches tool names, screen names, testIds, and a11y names',\n ),\n limit: z\n .number()\n .int()\n .min(1)\n .max(100)\n .default(20)\n .describe('Maximum number of results'),\n scope: knowledgeScopeSchema\n .default('all')\n .describe(\n 'Search scope (defaults to all sessions for cross-session learning)',\n ),\n filters: knowledgeFiltersSchema,\n});\n\nexport const knowledgeSummarizeInputSchema = z.object({\n sessionId: z\n .string()\n .describe('Deprecated: use scope. Session ID to summarize.')\n .optional(),\n scope: z\n .union([\n z.literal('current'),\n z.object({\n sessionId: z.string().min(4),\n }),\n ])\n .default('current')\n .describe('Session to summarize (cannot use \"all\")'),\n});\n\nexport const knowledgeSessionsInputSchema = z.object({\n limit: z\n .number()\n .int()\n .min(1)\n .max(50)\n .default(10)\n .describe('Maximum number of sessions to list'),\n filters: knowledgeFiltersSchema,\n});\n\nexport const seedContractInputSchema = z.object({\n contractName: z.enum(smartContractNames),\n hardfork: z.enum(hardforks).optional(),\n deployerOptions: z\n .object({\n fromAddress: z.string().optional(),\n fromPrivateKey: z.string().optional(),\n })\n .optional(),\n});\n\nexport const seedContractsInputSchema = z.object({\n contracts: z.array(z.enum(smartContractNames)).min(1).max(9),\n hardfork: z.enum(hardforks).optional(),\n});\n\nexport const getContractAddressInputSchema = z.object({\n contractName: z.enum(smartContractNames),\n});\n\nexport const listDeployedContractsInputSchema = z.object({});\n\nconst tabRoles = ['extension', 'notification', 'dapp', 'other'] as const;\nconst closableTabRoles = ['notification', 'dapp', 'other'] as const;\n\nexport const switchToTabInputSchema = z\n .object({\n role: z\n .enum(tabRoles)\n .describe('Tab role to switch to (extension, notification, dapp, other)')\n .optional(),\n url: z\n .string()\n .min(1)\n .describe('URL prefix to match for tab switching')\n .optional(),\n })\n .refine((data) => data.role ?? data.url, {\n message: 'Either role or url must be provided',\n });\n\nexport const closeTabInputSchema = z\n .object({\n role: z\n .enum(closableTabRoles)\n .describe(\n 'Tab role to close (notification, dapp, other). Cannot close extension.',\n )\n .optional(),\n url: z\n .string()\n .min(1)\n .describe('URL prefix to match for tab closing')\n .optional(),\n })\n .refine((data) => data.role ?? data.url, {\n message: 'Either role or url must be provided',\n });\n\nexport const runStepsInputSchema = z.object({\n steps: z\n .array(\n z.object({\n tool: z.string(),\n args: z.record(z.string(), z.unknown()).optional(),\n }),\n )\n .min(1)\n .max(50)\n .describe('Array of tool calls to execute in order'),\n stopOnError: z\n .boolean()\n .default(false)\n .describe('Stop execution on first error (default: false - continue)'),\n includeObservations: z\n .enum(['none', 'failures', 'all'])\n .default('all')\n .describe(\n 'When to include observations in results: ' +\n 'none = never (fastest), failures = only for failed steps, all = always',\n ),\n});\n\nexport const setContextInputSchema = z.object({\n context: z.enum(['e2e', 'prod']).describe('Target context to switch to'),\n options: z\n .record(z.string(), z.unknown())\n .describe('Optional context-specific options forwarded to session manager')\n .optional(),\n});\n\nexport const getContextInputSchema = z\n .object({})\n .describe('No parameters required');\n\nexport const clipboardInputSchema = z\n .object({\n action: z\n .enum(['write', 'read'])\n .describe(\n 'Action to perform: write text to clipboard or read from clipboard',\n ),\n text: z\n .string()\n .describe(\"Text to write to clipboard (required when action is 'write')\")\n .optional(),\n })\n .refine(\n (data) => {\n if (data.action === 'write' && !data.text) {\n return false;\n }\n return true;\n },\n {\n message: \"text is required when action is 'write'\",\n path: ['text'],\n },\n );\n\nexport type SetContextInputZ = z.infer<typeof setContextInputSchema>;\nexport type GetContextInputZ = z.infer<typeof getContextInputSchema>;\nexport type ClipboardInputZ = z.infer<typeof clipboardInputSchema>;\n\nexport const toolSchemas = {\n build: buildInputSchema,\n launch: launchInputSchema,\n cleanup: cleanupInputSchema,\n get_state: getStateInputSchema,\n navigate: navigateInputSchema,\n wait_for_notification: waitForNotificationInputSchema,\n switch_to_tab: switchToTabInputSchema,\n close_tab: closeTabInputSchema,\n list_testids: listTestIdsInputSchema,\n accessibility_snapshot: accessibilitySnapshotInputSchema,\n describe_screen: describeScreenInputSchema,\n screenshot: screenshotInputSchema,\n click: clickInputSchema,\n type: typeInputSchema,\n wait_for: waitForInputSchema,\n knowledge_last: knowledgeLastInputSchema,\n knowledge_search: knowledgeSearchInputSchema,\n knowledge_summarize: knowledgeSummarizeInputSchema,\n knowledge_sessions: knowledgeSessionsInputSchema,\n seed_contract: seedContractInputSchema,\n seed_contracts: seedContractsInputSchema,\n get_contract_address: getContractAddressInputSchema,\n list_contracts: listDeployedContractsInputSchema,\n run_steps: runStepsInputSchema,\n set_context: setContextInputSchema,\n get_context: getContextInputSchema,\n clipboard: clipboardInputSchema,\n} as const;\n\nexport type ToolName = keyof typeof toolSchemas;\n\nexport type BuildInputZ = z.infer<typeof buildInputSchema>;\nexport type LaunchInputZ = z.infer<typeof launchInputSchema>;\nexport type CleanupInputZ = z.infer<typeof cleanupInputSchema>;\nexport type GetStateInputZ = z.infer<typeof getStateInputSchema>;\nexport type NavigateInputZ = z.infer<typeof navigateInputSchema>;\nexport type WaitForNotificationInputZ = z.infer<\n typeof waitForNotificationInputSchema\n>;\nexport type ListTestIdsInputZ = z.infer<typeof listTestIdsInputSchema>;\nexport type AccessibilitySnapshotInputZ = z.infer<\n typeof accessibilitySnapshotInputSchema\n>;\nexport type DescribeScreenInputZ = z.infer<typeof describeScreenInputSchema>;\nexport type ScreenshotInputZ = z.infer<typeof screenshotInputSchema>;\nexport type ClickInputZ = z.infer<typeof clickInputSchema>;\nexport type TypeInputZ = z.infer<typeof typeInputSchema>;\nexport type WaitForInputZ = z.infer<typeof waitForInputSchema>;\nexport type KnowledgeLastInputZ = z.infer<typeof knowledgeLastInputSchema>;\nexport type KnowledgeSearchInputZ = z.infer<typeof knowledgeSearchInputSchema>;\nexport type KnowledgeSummarizeInputZ = z.infer<\n typeof knowledgeSummarizeInputSchema\n>;\nexport type KnowledgeSessionsInputZ = z.infer<\n typeof knowledgeSessionsInputSchema\n>;\nexport type KnowledgeScopeZ = z.infer<typeof knowledgeScopeSchema>;\nexport type KnowledgeFiltersZ = z.infer<typeof knowledgeFiltersSchema>;\nexport type RunStepsInputZ = z.infer<typeof runStepsInputSchema>;\nexport type SwitchToTabInputZ = z.infer<typeof switchToTabInputSchema>;\nexport type CloseTabInputZ = z.infer<typeof closeTabInputSchema>;\n"]}
@@ -56,9 +56,9 @@ export declare const cleanupInputSchema: z.ZodObject<{
56
56
  export declare const getStateInputSchema: z.ZodObject<{}, z.core.$strip>;
57
57
  export declare const navigateInputSchema: z.ZodObject<{
58
58
  screen: z.ZodEnum<{
59
+ notification: "notification";
59
60
  home: "home";
60
61
  settings: "settings";
61
- notification: "notification";
62
62
  url: "url";
63
63
  }>;
64
64
  url: z.ZodOptional<z.ZodString>;
@@ -229,8 +229,8 @@ export declare const getContractAddressInputSchema: z.ZodObject<{
229
229
  export declare const listDeployedContractsInputSchema: z.ZodObject<{}, z.core.$strip>;
230
230
  export declare const switchToTabInputSchema: z.ZodObject<{
231
231
  role: z.ZodOptional<z.ZodEnum<{
232
- notification: "notification";
233
232
  extension: "extension";
233
+ notification: "notification";
234
234
  dapp: "dapp";
235
235
  other: "other";
236
236
  }>>;
@@ -261,6 +261,7 @@ export declare const setContextInputSchema: z.ZodObject<{
261
261
  e2e: "e2e";
262
262
  prod: "prod";
263
263
  }>;
264
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
264
265
  }, z.core.$strip>;
265
266
  export declare const getContextInputSchema: z.ZodObject<{}, z.core.$strip>;
266
267
  export declare const clipboardInputSchema: z.ZodObject<{
@@ -316,9 +317,9 @@ export declare const toolSchemas: {
316
317
  readonly get_state: z.ZodObject<{}, z.core.$strip>;
317
318
  readonly navigate: z.ZodObject<{
318
319
  screen: z.ZodEnum<{
320
+ notification: "notification";
319
321
  home: "home";
320
322
  settings: "settings";
321
- notification: "notification";
322
323
  url: "url";
323
324
  }>;
324
325
  url: z.ZodOptional<z.ZodString>;
@@ -328,8 +329,8 @@ export declare const toolSchemas: {
328
329
  }, z.core.$strip>;
329
330
  readonly switch_to_tab: z.ZodObject<{
330
331
  role: z.ZodOptional<z.ZodEnum<{
331
- notification: "notification";
332
332
  extension: "extension";
333
+ notification: "notification";
333
334
  dapp: "dapp";
334
335
  other: "other";
335
336
  }>>;
@@ -521,6 +522,7 @@ export declare const toolSchemas: {
521
522
  e2e: "e2e";
522
523
  prod: "prod";
523
524
  }>;
525
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
524
526
  }, z.core.$strip>;
525
527
  readonly get_context: z.ZodObject<{}, z.core.$strip>;
526
528
  readonly clipboard: z.ZodObject<{
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.cts","sourceRoot":"","sources":["../../src/mcp-server/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,YAAY;AAIxB,eAAO,MAAM,cAAc,aAMxB,CAAC;AAEJ,eAAO,MAAM,qBAAqB;;;;iBA0B/B,CAAC;AAEJ,eAAO,MAAM,oBAAoB;;mBAQ/B,CAAC;AAKH,eAAO,MAAM,sBAAsB;;;;;kBAqBtB,CAAC;AAEd,eAAO,MAAM,gBAAgB;;;;;iBAS3B,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBA0E5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;iBAK7B,CAAC;AAEH,eAAO,MAAM,mBAAmB,gCAAe,CAAC;AAEhD,eAAO,MAAM,mBAAmB;;;;;;;;iBAwB7B,CAAC;AAEJ,eAAO,MAAM,8BAA8B;;iBAQzC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;iBAQjC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;iBAM3C,CAAC;AAEH,eAAO,MAAM,yBAAyB;;;;iBAcpC,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;iBAehC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;kBAU5B,CAAC;AAEF,eAAO,MAAM,eAAe;;;;;;;kBAW3B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;kBAU9B,CAAC;AAEF,eAAO,MAAM,wBAAwB;;;;;;;;;;;iBAcnC,CAAC;AAEH,eAAO,MAAM,0BAA0B;;;;;;;;;;;;iBAqBrC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;iBAcxC,CAAC;AAEH,eAAO,MAAM,4BAA4B;;;;;;;;iBASvC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBASlC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGnC,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;iBAExC,CAAC;AAEH,eAAO,MAAM,gCAAgC,gCAAe,CAAC;AAK7D,eAAO,MAAM,sBAAsB;;;;;;;;iBAc/B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;;;;iBAgB5B,CAAC;AAEL,eAAO,MAAM,mBAAmB;;;;;;;;;;;iBAsB9B,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;iBAEhC,CAAC;AAEH,eAAO,MAAM,qBAAqB,gCAEG,CAAC;AAEtC,eAAO,MAAM,oBAAoB;;;;;;iBAuB9B,CAAC;AAEJ,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEnE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Bd,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,WAAW,CAAC;AAEhD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC7D,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC/D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACjE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACjE,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAC7C,OAAO,8BAA8B,CACtC,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAC/C,OAAO,gCAAgC,CACxC,CAAC;AACF,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAC7E,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACrE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC3D,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACzD,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAC/D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAC3E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAC/E,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAC5C,OAAO,6BAA6B,CACrC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC3C,OAAO,4BAA4B,CACpC,CAAC;AACF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACjE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"schemas.d.cts","sourceRoot":"","sources":["../../src/mcp-server/schemas.ts"],"names":[],"mappings":"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"}