intellitester 0.2.59 → 0.2.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-PLBDORWC.cjs → chunk-4GGDKFY2.cjs} +14 -6
- package/dist/chunk-4GGDKFY2.cjs.map +1 -0
- package/dist/{chunk-4QKRZMHH.js → chunk-6GXSY4NF.js} +14 -6
- package/dist/chunk-6GXSY4NF.js.map +1 -0
- package/dist/{chunk-QD675U7P.cjs → chunk-UJMTTIG7.cjs} +27 -12
- package/dist/chunk-UJMTTIG7.cjs.map +1 -0
- package/dist/{chunk-FICSJDDO.js → chunk-WUJWRU6X.js} +25 -10
- package/dist/chunk-WUJWRU6X.js.map +1 -0
- package/dist/cli/index.cjs +43 -43
- package/dist/cli/index.js +2 -2
- package/dist/index.cjs +34 -34
- package/dist/index.d.cts +9 -9
- package/dist/index.d.ts +9 -9
- package/dist/index.js +2 -2
- package/dist/{loader-7F5OSM7A.js → loader-KGW6SEFV.js} +3 -3
- package/dist/{loader-7F5OSM7A.js.map → loader-KGW6SEFV.js.map} +1 -1
- package/dist/{loader-34OASNSN.cjs → loader-YECKFAL7.cjs} +16 -16
- package/dist/{loader-34OASNSN.cjs.map → loader-YECKFAL7.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/chunk-4QKRZMHH.js.map +0 -1
- package/dist/chunk-FICSJDDO.js.map +0 -1
- package/dist/chunk-PLBDORWC.cjs.map +0 -1
- package/dist/chunk-QD675U7P.cjs.map +0 -1
|
@@ -10,6 +10,14 @@ var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
|
10
10
|
|
|
11
11
|
// src/core/loader.ts
|
|
12
12
|
var nonEmptyString = zod.z.string().trim().min(1, "Value cannot be empty");
|
|
13
|
+
zod.z.preprocess(
|
|
14
|
+
(val) => typeof val === "string" && val.trim() === "" ? void 0 : val,
|
|
15
|
+
zod.z.string().trim().optional()
|
|
16
|
+
);
|
|
17
|
+
var optionalUrl = zod.z.preprocess(
|
|
18
|
+
(val) => typeof val === "string" && val.trim() === "" ? void 0 : val,
|
|
19
|
+
zod.z.string().trim().url().optional()
|
|
20
|
+
);
|
|
13
21
|
var trackSchema = zod.z.object({
|
|
14
22
|
type: nonEmptyString.describe("Tracked resource type (e.g., row, user, file)"),
|
|
15
23
|
id: nonEmptyString.describe("Tracked resource ID"),
|
|
@@ -214,7 +222,7 @@ var defaultsSchema = zod.z.object({
|
|
|
214
222
|
screenshots: zod.z.enum(["on-failure", "always", "never"]).optional().describe("When to capture screenshots during test execution")
|
|
215
223
|
}).describe("Default settings that apply to all tests unless overridden");
|
|
216
224
|
var webConfigSchema = zod.z.object({
|
|
217
|
-
baseUrl:
|
|
225
|
+
baseUrl: optionalUrl.describe("Base URL for the web application"),
|
|
218
226
|
browser: zod.z.string().trim().optional().describe("Browser to use for testing"),
|
|
219
227
|
headless: zod.z.boolean().optional().describe("Run browser in headless mode"),
|
|
220
228
|
timeout: zod.z.number().int().positive().optional().describe("Timeout in milliseconds for web actions")
|
|
@@ -229,7 +237,7 @@ var iosConfigSchema = zod.z.object({
|
|
|
229
237
|
}).describe("iOS platform configuration");
|
|
230
238
|
var emailConfigSchema = zod.z.object({
|
|
231
239
|
provider: zod.z.literal("inbucket").describe("Email testing provider"),
|
|
232
|
-
endpoint:
|
|
240
|
+
endpoint: optionalUrl.describe("Email service endpoint URL")
|
|
233
241
|
}).describe("Email testing configuration");
|
|
234
242
|
var appwriteConfigSchema = zod.z.object({
|
|
235
243
|
endpoint: nonEmptyString.url().describe("Appwrite API endpoint"),
|
|
@@ -264,7 +272,7 @@ var aiConfigSchema = zod.z.object({
|
|
|
264
272
|
provider: zod.z.enum(["anthropic", "openai", "ollama"]).describe("AI provider to use for test generation"),
|
|
265
273
|
model: nonEmptyString.describe("Model name to use"),
|
|
266
274
|
apiKey: zod.z.string().trim().optional().describe("API key for the AI provider"),
|
|
267
|
-
baseUrl:
|
|
275
|
+
baseUrl: optionalUrl.describe("Base URL for the AI API (required for Ollama)"),
|
|
268
276
|
temperature: zod.z.number().min(0).max(2).default(0.2).describe("Temperature for AI generation (0 = deterministic, 2 = very creative)"),
|
|
269
277
|
maxTokens: zod.z.number().int().positive().default(4096).describe("Maximum tokens for AI responses"),
|
|
270
278
|
source: aiSourceSchema
|
|
@@ -295,7 +303,7 @@ var previewConfigSchema = zod.z.object({
|
|
|
295
303
|
preview: zod.z.object({
|
|
296
304
|
command: zod.z.string().optional().describe("Command to start the preview server after build")
|
|
297
305
|
}).optional().describe("Preview server configuration"),
|
|
298
|
-
url:
|
|
306
|
+
url: optionalUrl.describe("URL to wait for before starting tests"),
|
|
299
307
|
timeout: zod.z.number().int().positive().optional().describe("Timeout in milliseconds to wait for preview server")
|
|
300
308
|
}).describe("Configuration for the --preview flag (build and serve production build)");
|
|
301
309
|
var TestConfigSchema = zod.z.object({
|
|
@@ -568,5 +576,5 @@ exports.parsePipelineDefinition = parsePipelineDefinition;
|
|
|
568
576
|
exports.parseTestDefinition = parseTestDefinition;
|
|
569
577
|
exports.parseWorkflowDefinition = parseWorkflowDefinition;
|
|
570
578
|
exports.previewConfigSchema = previewConfigSchema;
|
|
571
|
-
//# sourceMappingURL=chunk-
|
|
572
|
-
//# sourceMappingURL=chunk-
|
|
579
|
+
//# sourceMappingURL=chunk-4GGDKFY2.cjs.map
|
|
580
|
+
//# sourceMappingURL=chunk-4GGDKFY2.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/schema.ts","../src/core/workflowSchema.ts","../src/core/pipelineSchema.ts","../src/core/loader.ts"],"names":["z","nonEmptyString","parse","fs"],"mappings":"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","file":"chunk-4GGDKFY2.cjs","sourcesContent":["import { z } from 'zod';\n\nconst nonEmptyString = z.string().trim().min(1, 'Value cannot be empty');\n\n// Transform empty strings to undefined for optional fields\nconst optionalString = z.preprocess(\n (val) => (typeof val === 'string' && val.trim() === '' ? undefined : val),\n z.string().trim().optional()\n);\n\n// Transform empty strings to undefined for optional URL fields\nconst optionalUrl = z.preprocess(\n (val) => (typeof val === 'string' && val.trim() === '' ? undefined : val),\n z.string().trim().url().optional()\n);\n\nconst trackSchema = z.object({\n type: nonEmptyString.describe('Tracked resource type (e.g., row, user, file)'),\n id: nonEmptyString.describe('Tracked resource ID'),\n includeStepContext: z.boolean().optional().describe('Include step context with tracked resource'),\n}).passthrough().describe('Optional tracking metadata for cleanup');\n\nconst trackableSchema = z.object({\n track: trackSchema.optional(),\n});\n\n// Error condition for immediate failure (no waiting)\nexport const errorIfSchema = z.enum(['not-found', 'not-visible', 'disabled', 'empty'])\n .describe('Fail immediately if this condition is met (no waiting)');\n\nexport const LocatorSchema = z\n .object({\n description: z.string().trim().optional().describe('AI-friendly description of the element to find'),\n testId: z.string().trim().optional().describe('data-testid attribute value'),\n text: z.string().trim().optional().describe('Visible text content'),\n css: z.string().trim().optional().describe('CSS selector'),\n xpath: z.string().trim().optional().describe('XPath selector'),\n role: z.string().trim().optional().describe('ARIA role'),\n name: z.string().trim().optional().describe('Accessible name'),\n })\n .describe('Defines how to locate an element on the page. At least one selector must be provided.')\n .refine(\n (locator) =>\n Boolean(\n locator.description ||\n locator.testId ||\n locator.text ||\n locator.css ||\n locator.xpath ||\n locator.role ||\n locator.name,\n ),\n { message: 'Locator requires at least one selector or description' },\n );\n\nconst navigateActionSchema = z.object({\n type: z.literal('navigate'),\n value: nonEmptyString.describe('URL or path to navigate to'),\n}).describe('Navigate to a URL');\n\nconst tapActionSchema = z.object({\n type: z.literal('tap'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Click or tap on an element');\n\nconst inputActionSchema = z.object({\n type: z.literal('input'),\n target: LocatorSchema,\n value: z.string().describe('Text to input (can reference variables with ${VAR_NAME})'),\n errorIf: errorIfSchema.optional(),\n}).describe('Input text into a field');\n\nconst clearActionSchema = z.object({\n type: z.literal('clear'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Clear the contents of an input field');\n\nconst hoverActionSchema = z.object({\n type: z.literal('hover'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Hover over an element');\n\nconst selectActionSchema = z.object({\n type: z.literal('select'),\n target: LocatorSchema,\n value: z.string().describe('Option value, label, or index to select'),\n errorIf: errorIfSchema.optional(),\n}).describe('Select an option from a dropdown');\n\nconst checkActionSchema = z.object({\n type: z.literal('check'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Check a checkbox');\n\nconst uncheckActionSchema = z.object({\n type: z.literal('uncheck'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Uncheck a checkbox');\n\nconst pressActionSchema = z.object({\n type: z.literal('press'),\n key: nonEmptyString.describe('Key to press (e.g., Enter, Tab, Escape, ArrowDown)'),\n target: LocatorSchema.optional().describe('Element to focus before pressing key'),\n errorIf: errorIfSchema.optional(),\n}).describe('Press a keyboard key');\n\nconst focusActionSchema = z.object({\n type: z.literal('focus'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Focus an element');\n\nconst assertActionSchema = z.object({\n type: z.literal('assert'),\n target: LocatorSchema,\n value: z.string().optional().describe('Expected text content'),\n errorIf: errorIfSchema.optional(),\n}).describe('Assert that an element exists or contains expected text');\n\nconst waitActionSchema = z\n .object({\n type: z.literal('wait'),\n target: LocatorSchema.optional().describe('Element to wait for'),\n timeout: z.number().int().positive().optional().describe('Time to wait in milliseconds'),\n errorIf: errorIfSchema.optional(),\n })\n .describe('Wait for an element or timeout')\n .refine((action) => action.target || action.timeout, {\n message: 'wait requires a target or timeout',\n });\n\nconst scrollActionSchema = z.object({\n type: z.literal('scroll'),\n target: LocatorSchema.optional().describe('Element to scroll'),\n direction: z.enum(['up', 'down']).optional().describe('Direction to scroll'),\n amount: z.number().int().positive().optional().describe('Amount to scroll in pixels'),\n errorIf: errorIfSchema.optional(),\n}).describe('Scroll the page or an element');\n\nconst screenshotActionSchema = z.object({\n type: z.literal('screenshot'),\n name: z.string().optional().describe('Name for the screenshot file'),\n waitBefore: z.number().int().nonnegative().optional().describe('Milliseconds to wait before capturing for visual stability (default: 500)'),\n}).describe('Take a screenshot');\n\nconst setVarActionSchema = z.object({\n type: z.literal('setVar'),\n name: nonEmptyString.describe('Variable name to set'),\n value: z.string().optional().describe('Static value to set'),\n from: z.enum(['response', 'element', 'email']).optional().describe('Extract value from a source'),\n path: z.string().optional().describe('JSON path or selector for extraction'),\n pattern: z.string().optional().describe('Regular expression pattern for extraction'),\n}).describe('Set a variable for use in later steps');\n\nconst emailWaitForActionSchema = z.object({\n type: z.literal('email.waitFor'),\n mailbox: nonEmptyString.describe('Email address or mailbox to check'),\n timeout: z.number().int().positive().optional().describe('How long to wait for email in milliseconds'),\n subjectContains: z.string().optional().describe('Filter by email subject'),\n}).describe('Wait for an email to arrive');\n\nconst emailExtractCodeActionSchema = z.object({\n type: z.literal('email.extractCode'),\n saveTo: nonEmptyString.describe('Variable name to save the extracted code'),\n pattern: z.string().optional().describe('Regular expression to extract code'),\n}).describe('Extract a verification code from email');\n\nconst emailExtractLinkActionSchema = z.object({\n type: z.literal('email.extractLink'),\n saveTo: nonEmptyString.describe('Variable name to save the extracted link'),\n pattern: z.string().optional().describe('Regular expression to match specific links'),\n}).describe('Extract a link from email');\n\nconst emailClearActionSchema = z.object({\n type: z.literal('email.clear'),\n mailbox: nonEmptyString.describe('Email address or mailbox to clear'),\n}).describe('Clear emails from a mailbox');\n\nconst appwriteVerifyEmailActionSchema = z.object({\n type: z.literal('appwrite.verifyEmail'),\n}).describe('Verify email using Appwrite');\n\nconst debugActionSchema = z.object({\n type: z.literal('debug'),\n}).describe('Pause execution and open Playwright Inspector for debugging');\n\nconst waitForSelectorActionSchema = z.object({\n type: z.literal('waitForSelector'),\n target: LocatorSchema,\n state: z.enum(['enabled', 'disabled', 'visible', 'hidden', 'attached', 'detached'])\n .describe('Element state to wait for'),\n timeout: z.number().int().positive().optional()\n .describe('Time to wait in milliseconds'),\n errorIf: errorIfSchema.optional(),\n}).describe('Wait for an element to reach a specific state');\n\nconst failActionSchema = z.object({\n type: z.literal('fail'),\n message: nonEmptyString.describe('Error message to display when test fails'),\n}).describe('Explicitly fail the test with a custom message');\n\n// Base action schema without conditional (used for nested steps in conditional)\nconst BaseActionSchema = z.discriminatedUnion('type', [\n navigateActionSchema,\n tapActionSchema,\n inputActionSchema,\n clearActionSchema,\n hoverActionSchema,\n selectActionSchema,\n checkActionSchema,\n uncheckActionSchema,\n pressActionSchema,\n focusActionSchema,\n assertActionSchema,\n waitActionSchema,\n scrollActionSchema,\n screenshotActionSchema,\n setVarActionSchema,\n emailWaitForActionSchema,\n emailExtractCodeActionSchema,\n emailExtractLinkActionSchema,\n emailClearActionSchema,\n appwriteVerifyEmailActionSchema,\n debugActionSchema,\n waitForSelectorActionSchema,\n failActionSchema,\n]);\n\nconst TrackableBaseActionSchema = z.intersection(BaseActionSchema, trackableSchema);\n\nconst conditionalActionSchema = z.intersection(z.object({\n type: z.literal('conditional'),\n condition: z.object({\n type: z.enum(['exists', 'notExists', 'visible', 'hidden']),\n target: LocatorSchema,\n }).describe('Condition to check'),\n then: z.array(TrackableBaseActionSchema).describe('Steps to execute if condition is true'),\n else: z.array(TrackableBaseActionSchema).optional().describe('Steps to execute if condition is false'),\n}).describe('Execute steps conditionally based on element state'), trackableSchema);\n\n// Branch definition - can be inline actions OR a workflow file reference\nconst branchSchema = z.union([\n z.array(TrackableBaseActionSchema), // Inline actions\n z.object({\n workflow: z.string().trim().min(1).describe('Path to workflow file relative to current file'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables to pass to the workflow'),\n }),\n]).describe('Actions to execute - either inline steps or a workflow file reference');\n\nconst waitForBranchActionSchema = z.intersection(z.object({\n type: z.literal('waitForBranch'),\n target: LocatorSchema.describe('Element to wait for'),\n timeout: z.number().int().positive().optional().describe('Maximum time to wait for element in milliseconds (default: 30000)'),\n state: z.enum(['visible', 'attached', 'enabled']).optional().describe('Element state to wait for (default: visible)'),\n onAppear: branchSchema.describe('Actions to execute when element appears within timeout'),\n onTimeout: branchSchema.optional().describe('Actions to execute if timeout occurs (silent continue if omitted)'),\n pollInterval: z.number().int().positive().optional().describe('How often to check for element in milliseconds (default: 100)'),\n}).describe('Wait for an element and branch based on whether it appears or times out'), trackableSchema);\n\nexport const ActionSchema = z.union([TrackableBaseActionSchema, conditionalActionSchema, waitForBranchActionSchema]);\n\nconst defaultsSchema = z.object({\n timeout: z.number().int().positive().optional().describe('Default timeout in milliseconds for all actions'),\n screenshots: z.enum(['on-failure', 'always', 'never']).optional().describe('When to capture screenshots during test execution'),\n}).describe('Default settings that apply to all tests unless overridden');\n\nconst webConfigSchema = z.object({\n baseUrl: optionalUrl.describe('Base URL for the web application'),\n browser: z.string().trim().optional().describe('Browser to use for testing'),\n headless: z.boolean().optional().describe('Run browser in headless mode'),\n timeout: z.number().int().positive().optional().describe('Timeout in milliseconds for web actions'),\n}).describe('Web platform configuration');\n\nconst androidConfigSchema = z.object({\n appId: z.string().trim().optional().describe('Android application ID'),\n device: z.string().trim().optional().describe('Device name or ID to run tests on'),\n}).describe('Android platform configuration');\n\nconst iosConfigSchema = z.object({\n bundleId: z.string().trim().optional().describe('iOS bundle identifier'),\n simulator: z.string().trim().optional().describe('Simulator name to run tests on'),\n}).describe('iOS platform configuration');\n\nconst emailConfigSchema = z.object({\n provider: z.literal('inbucket').describe('Email testing provider'),\n endpoint: optionalUrl.describe('Email service endpoint URL'),\n}).describe('Email testing configuration');\n\nconst appwriteConfigSchema = z.object({\n endpoint: nonEmptyString.url().describe('Appwrite API endpoint'),\n projectId: nonEmptyString.describe('Appwrite project ID'),\n apiKey: nonEmptyString.describe('Appwrite API key with appropriate permissions'),\n cleanup: z.boolean().optional().describe('Enable automatic cleanup of created resources'),\n cleanupOnFailure: z.boolean().optional().describe('Clean up resources even when test fails'),\n}).describe('Appwrite backend configuration');\n\nconst healingSchema = z.object({\n enabled: z.boolean().optional().describe('Enable self-healing capabilities'),\n strategies: z.array(z.string().trim()).optional().describe('Healing strategies to use'),\n}).describe('Self-healing test configuration');\n\nconst webServerSchema = z\n .object({\n command: nonEmptyString.optional().describe('Command to start the web server'),\n auto: z.boolean().optional().describe('Automatically detect and run the dev server from package.json'),\n static: z.string().optional().describe('Serve a static directory instead of running a command'),\n url: nonEmptyString.url().describe('URL to wait for before starting tests'),\n port: z.number().int().positive().optional().describe('Port number for the web server'),\n reuseExistingServer: z.boolean().default(true).describe('Use existing server if already running at the specified URL'),\n timeout: z.number().int().positive().default(30000).describe('Timeout in milliseconds to wait for server to become available'),\n workdir: z.string().optional().describe('Working directory for the server command'),\n cwd: z.string().optional().describe('Deprecated: use workdir instead'),\n })\n .describe('Configuration for starting a web server before running tests')\n .refine((config) => config.command || config.auto || config.static, {\n message: 'WebServerConfig requires command, auto: true, or static directory',\n });\n\nconst aiSourceSchema = z.object({\n pagesDir: z.string().optional().describe('Directory containing page components'),\n componentsDir: z.string().optional().describe('Directory containing reusable components'),\n extensions: z.array(z.string()).default(['.vue', '.astro', '.tsx', '.jsx', '.svelte']).describe('File extensions to include in source code analysis'),\n}).optional().describe('Source code directories for AI to analyze when generating tests');\n\nconst aiConfigSchema = z.object({\n provider: z.enum(['anthropic', 'openai', 'ollama']).describe('AI provider to use for test generation'),\n model: nonEmptyString.describe('Model name to use'),\n apiKey: z.string().trim().optional().describe('API key for the AI provider'),\n baseUrl: optionalUrl.describe('Base URL for the AI API (required for Ollama)'),\n temperature: z.number().min(0).max(2).default(0.2).describe('Temperature for AI generation (0 = deterministic, 2 = very creative)'),\n maxTokens: z.number().int().positive().default(4096).describe('Maximum tokens for AI responses'),\n source: aiSourceSchema,\n}).describe('AI configuration for test generation and healing');\n\n// Cleanup discovery configuration\nexport const cleanupDiscoverSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable auto-discovery of cleanup handlers in specified paths'),\n paths: z.array(z.string()).default(['./tests/cleanup']).describe('Directories to search for cleanup handler files'),\n pattern: z.string().default('**/*.ts').describe('Glob pattern to match handler files'),\n}).optional().describe('Auto-discovery configuration for cleanup handlers');\n\n// Main cleanup configuration\nexport const cleanupConfigSchema = z.object({\n provider: z.string().optional().describe('Primary cleanup provider to use'),\n parallel: z.boolean().default(false).describe('Execute cleanup operations in parallel'),\n retries: z.number().min(1).max(10).default(3).describe('Number of retry attempts for failed cleanup operations'),\n types: z.record(z.string(), z.string()).optional().describe('Map resource types to cleanup handler methods'),\n handlers: z.array(z.string()).optional().describe('Explicit paths to custom cleanup handler files'),\n discover: cleanupDiscoverSchema,\n scanUntracked: z.boolean().optional().describe('Scan for untracked resources using provider heuristics'),\n}).passthrough().describe('Comprehensive resource cleanup configuration'); // Allow provider-specific configs like appwrite: {...}\n\n// Export the inferred type\nexport type CleanupConfig = z.infer<typeof cleanupConfigSchema>;\n\nconst platformsSchema = z.object({\n web: webConfigSchema.optional(),\n android: androidConfigSchema.optional(),\n ios: iosConfigSchema.optional(),\n}).describe('Platform-specific configurations');\n\n// Preview configuration for --preview flag\nexport const previewConfigSchema = z.object({\n build: z.object({\n command: z.string().optional().describe('Command to build the project'),\n }).optional().describe('Build configuration'),\n preview: z.object({\n command: z.string().optional().describe('Command to start the preview server after build'),\n }).optional().describe('Preview server configuration'),\n url: optionalUrl.describe('URL to wait for before starting tests'),\n timeout: z.number().int().positive().optional().describe('Timeout in milliseconds to wait for preview server'),\n}).describe('Configuration for the --preview flag (build and serve production build)');\n\nexport const TestConfigSchema = z.object({\n defaults: defaultsSchema.optional(),\n web: webConfigSchema.optional(),\n android: androidConfigSchema.optional(),\n ios: iosConfigSchema.optional(),\n email: emailConfigSchema.optional(),\n appwrite: appwriteConfigSchema.optional(),\n}).describe('Test-specific configuration that overrides global settings');\n\nexport const TestDefinitionSchema = z.object({\n name: nonEmptyString.describe('The name of the test'),\n platform: z.enum(['web', 'android', 'ios']).describe('The platform to run the test on'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables that can be referenced in test steps using ${VARIABLE_NAME} syntax'),\n config: TestConfigSchema.optional(),\n steps: z.array(ActionSchema).min(1).describe('The sequence of actions to execute in this test'),\n}).describe('Schema for IntelliTester test definition files');\n\nexport const IntellitesterConfigSchema = z.object({\n defaults: defaultsSchema.optional(),\n ai: aiConfigSchema.optional(),\n platforms: platformsSchema.optional(),\n healing: healingSchema.optional(),\n email: emailConfigSchema.optional(),\n appwrite: appwriteConfigSchema.optional(),\n cleanup: cleanupConfigSchema.optional(),\n webServer: webServerSchema.optional(),\n preview: previewConfigSchema.optional(),\n secrets: z.record(z.string(), z.string().trim()).optional().describe('Secret values that can be referenced in tests'),\n}).describe('Global configuration file for IntelliTester');\n","import { z } from 'zod';\n\nconst nonEmptyString = z.string().trim().min(1, 'Value cannot be empty');\n\n// Reference to a test file in the workflow\nconst testReferenceSchema = z.object({\n file: nonEmptyString.describe('Path to the test file relative to the workflow file'),\n id: nonEmptyString.optional().describe('Optional ID for referencing this test in variables or dependencies'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables to inject or override for this specific test'),\n}).describe('Reference to a test file');\n\n// Workflow-specific web config\nconst workflowWebConfigSchema = z.object({\n baseUrl: nonEmptyString.url().optional().describe('Base URL for all tests in this workflow'),\n browser: z.enum(['chromium', 'firefox', 'webkit']).optional().describe('Browser to use for all web tests'),\n headless: z.boolean().optional().describe('Run browser in headless mode'),\n testSizes: z.array(z.enum(['xs', 'sm', 'md', 'lg', 'xl'])).optional()\n .describe('Viewport sizes to test (Tailwind breakpoints). Tests run once per size.'),\n}).describe('Web platform configuration for the workflow');\n\n// Workflow-specific Appwrite config\nconst workflowAppwriteConfigSchema = z.object({\n endpoint: nonEmptyString.url().describe('Appwrite API endpoint'),\n projectId: nonEmptyString.describe('Appwrite project ID'),\n apiKey: nonEmptyString.describe('Appwrite API key'),\n cleanup: z.boolean().default(true).describe('Enable automatic cleanup of created resources'),\n cleanupOnFailure: z.boolean().default(true).describe('Clean up resources even when tests fail'),\n}).describe('Appwrite backend configuration for the workflow');\n\n// Cleanup discovery configuration for workflows\nconst workflowCleanupDiscoverSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable auto-discovery of cleanup handlers'),\n paths: z.array(z.string()).default(['./tests/cleanup']).describe('Directories to search for cleanup handlers'),\n pattern: z.string().default('**/*.ts').describe('Glob pattern for handler files'),\n}).optional().describe('Auto-discovery configuration for cleanup handlers');\n\n// Workflow cleanup configuration\nconst workflowCleanupConfigSchema = z.object({\n provider: z.string().optional().describe('Cleanup provider to use'),\n parallel: z.boolean().default(false).describe('Run cleanup tasks in parallel'),\n retries: z.number().min(1).max(10).default(3).describe('Number of retry attempts for failed cleanup operations'),\n types: z.record(z.string(), z.string()).optional().describe('Map resource types to cleanup handler methods'),\n handlers: z.array(z.string()).optional().describe('Explicit paths to custom cleanup handler files'),\n discover: workflowCleanupDiscoverSchema,\n scanUntracked: z.boolean().optional().describe('Scan for untracked resources using provider heuristics'),\n}).passthrough().describe('Resource cleanup configuration'); // Allow provider-specific configs like appwrite: {...}\n\n// Workflow-specific web server config\nconst workflowWebServerSchema = z.object({\n command: nonEmptyString.optional().describe('Command to start the web server'),\n auto: z.boolean().optional().describe('Auto-detect server start command from package.json'),\n url: nonEmptyString.url().describe('URL to wait for before starting tests'),\n reuseExistingServer: z.boolean().default(true).describe('Use existing server if already running at the URL'),\n timeout: z.number().int().positive().default(30000).describe('Timeout in milliseconds to wait for server to start'),\n workdir: nonEmptyString.optional().describe('Working directory for the web server command'),\n cwd: nonEmptyString.optional().describe('Deprecated: use workdir instead'),\n}).describe('Configuration for starting a web server before tests');\n\n// Workflow configuration\nconst workflowConfigSchema = z.object({\n web: workflowWebConfigSchema.optional(),\n appwrite: workflowAppwriteConfigSchema.optional(),\n cleanup: workflowCleanupConfigSchema.optional(),\n webServer: workflowWebServerSchema.optional(),\n}).describe('Workflow-level configuration that applies to all tests');\n\n// Main workflow definition schema\nexport const WorkflowDefinitionSchema = z.object({\n name: nonEmptyString.describe('The name of the workflow'),\n platform: z.enum(['web', 'android', 'ios']).default('web').describe('The platform to run the workflow on'),\n variables: z.record(z.string(), z.string()).optional().describe('Workflow-level variables available to all tests'),\n config: workflowConfigSchema.optional(),\n continueOnFailure: z.boolean().default(false).describe('Continue running subsequent tests even if a test fails'),\n tests: z.array(testReferenceSchema).min(1, 'Workflow must contain at least one test').describe('List of test files to execute in this workflow'),\n}).describe('Schema for IntelliTester workflow files that orchestrate multiple tests');\n\n// Export inferred types\nexport type WorkflowDefinition = z.infer<typeof WorkflowDefinitionSchema>;\nexport type TestReference = z.infer<typeof testReferenceSchema>;\nexport type WorkflowConfig = z.infer<typeof workflowConfigSchema>;\nexport type WorkflowWebConfig = z.infer<typeof workflowWebConfigSchema>;\nexport type WorkflowAppwriteConfig = z.infer<typeof workflowAppwriteConfigSchema>;\nexport type WorkflowCleanupConfig = z.infer<typeof workflowCleanupConfigSchema>;\nexport type WorkflowWebServerConfig = z.infer<typeof workflowWebServerSchema>;\n","import { z } from 'zod';\n\nconst nonEmptyString = z.string().trim().min(1, 'Value cannot be empty');\n\n// Workflow reference within a pipeline\nconst workflowReferenceSchema = z.object({\n file: nonEmptyString.describe('Path to the workflow file'),\n id: nonEmptyString.optional().describe('Optional ID for referencing this workflow in dependencies'),\n depends_on: z.array(nonEmptyString).optional().describe('IDs of workflows that must complete before this one'),\n on_failure: z.enum(['skip', 'fail', 'ignore']).optional().describe('How to handle failure of this workflow'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables to inject or override for this workflow'),\n}).describe('Reference to a workflow file');\n\n// Pipeline-specific web config (matches workflow web config pattern)\nconst pipelineWebConfigSchema = z.object({\n baseUrl: nonEmptyString.url().optional().describe('Base URL for all workflows in this pipeline'),\n browser: z.enum(['chromium', 'firefox', 'webkit']).optional().describe('Browser to use for all web tests'),\n headless: z.boolean().optional().describe('Run browser in headless mode'),\n testSizes: z.array(z.enum(['xs', 'sm', 'md', 'lg', 'xl'])).optional()\n .describe('Viewport sizes to test (Tailwind breakpoints). Tests run once per size.'),\n}).describe('Web platform configuration for the pipeline');\n\n// Pipeline-specific Appwrite config\nconst pipelineAppwriteConfigSchema = z.object({\n endpoint: nonEmptyString.url().describe('Appwrite API endpoint'),\n projectId: nonEmptyString.describe('Appwrite project ID'),\n apiKey: nonEmptyString.describe('Appwrite API key'),\n cleanup: z.boolean().default(true).describe('Enable automatic cleanup of created resources'),\n cleanupOnFailure: z.boolean().default(true).describe('Clean up resources even when workflows fail'),\n}).describe('Appwrite backend configuration for the pipeline');\n\n// Pipeline cleanup discovery configuration\nconst pipelineCleanupDiscoverSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable auto-discovery of cleanup handlers'),\n paths: z.array(z.string()).default(['./tests/cleanup']).describe('Directories to search for cleanup handlers'),\n pattern: z.string().default('**/*.ts').describe('Glob pattern for handler files'),\n}).optional().describe('Auto-discovery configuration for cleanup handlers');\n\n// Pipeline cleanup configuration\nconst pipelineCleanupConfigSchema = z.object({\n provider: z.string().optional().describe('Cleanup provider to use'),\n parallel: z.boolean().default(false).describe('Run cleanup tasks in parallel'),\n retries: z.number().min(1).max(10).default(3).describe('Number of retry attempts for failed cleanup operations'),\n types: z.record(z.string(), z.string()).optional().describe('Map resource types to cleanup handler methods'),\n handlers: z.array(z.string()).optional().describe('Explicit paths to custom cleanup handler files'),\n discover: pipelineCleanupDiscoverSchema,\n scanUntracked: z.boolean().optional().describe('Scan for untracked resources using provider heuristics'),\n on_failure: z.boolean().default(true).describe('Run cleanup even if pipeline fails'),\n}).passthrough().describe('Resource cleanup configuration'); // Allow provider-specific configs like appwrite: {...}\n\n// Pipeline-specific web server config\nconst pipelineWebServerSchema = z.object({\n command: nonEmptyString.optional().describe('Command to start the web server'),\n auto: z.boolean().optional().describe('Auto-detect server start command from package.json'),\n url: nonEmptyString.url().describe('URL to wait for before starting workflows'),\n reuseExistingServer: z.boolean().default(true).describe('Use existing server if already running at the URL'),\n timeout: z.number().int().positive().default(30000).describe('Timeout in milliseconds to wait for server to start'),\n workdir: nonEmptyString.optional().describe('Working directory for the web server command'),\n cwd: nonEmptyString.optional().describe('Deprecated: use workdir instead'),\n}).describe('Configuration for starting a web server before workflows');\n\n// Pipeline configuration (similar to workflow config)\nconst pipelineConfigSchema = z.object({\n web: pipelineWebConfigSchema.optional(),\n appwrite: pipelineAppwriteConfigSchema.optional(),\n cleanup: pipelineCleanupConfigSchema.optional(),\n webServer: pipelineWebServerSchema.optional(),\n}).describe('Pipeline-level configuration that applies to all workflows');\n\n// Main pipeline definition schema\nexport const PipelineDefinitionSchema = z.object({\n name: nonEmptyString.describe('The name of the pipeline'),\n platform: z.enum(['web', 'android', 'ios']).default('web').describe('The platform to run the pipeline on'),\n config: pipelineConfigSchema.optional(),\n on_failure: z.enum(['skip', 'fail', 'ignore']).default('skip').describe('Default failure handling for workflows'),\n cleanup_on_failure: z.boolean().default(true).describe('Run cleanup even when pipeline fails'),\n workflows: z.array(workflowReferenceSchema).min(1, 'Pipeline must contain at least one workflow').describe('List of workflow files to execute in this pipeline'),\n}).describe('Schema for IntelliTester pipeline files that orchestrate multiple workflows');\n\n// Export inferred types\nexport type PipelineDefinition = z.infer<typeof PipelineDefinitionSchema>;\nexport type WorkflowReference = z.infer<typeof workflowReferenceSchema>;\nexport type PipelineConfig = z.infer<typeof pipelineConfigSchema>;\nexport type PipelineWebConfig = z.infer<typeof pipelineWebConfigSchema>;\nexport type PipelineAppwriteConfig = z.infer<typeof pipelineAppwriteConfigSchema>;\nexport type PipelineCleanupConfig = z.infer<typeof pipelineCleanupConfigSchema>;\nexport type PipelineWebServerConfig = z.infer<typeof pipelineWebServerSchema>;\n","import fs from 'node:fs/promises';\n\nimport type { ZodIssue, ZodType } from 'zod';\nimport { parse } from 'yaml';\n\nimport { IntellitesterConfigSchema, TestDefinitionSchema } from './schema';\nimport type { IntellitesterConfig, TestDefinition } from './types';\nimport { WorkflowDefinitionSchema, type WorkflowDefinition } from './workflowSchema';\nimport { PipelineDefinitionSchema, type PipelineDefinition } from './pipelineSchema';\n\nconst formatIssues = (issues: ZodIssue[]): string =>\n issues\n .map((issue) => {\n const path = issue.path.join('.') || '<root>';\n return `${path}: ${issue.message}`;\n })\n .join('; ');\n\n/**\n * Interpolates environment variables in a parsed YAML object.\n * Recursively replaces ${VAR_NAME} patterns with environment variable values.\n */\nconst interpolateEnvVars = (obj: unknown): unknown => {\n if (typeof obj === 'string') {\n // Replace ${VAR_NAME} with environment variable value\n return obj.replace(/\\$\\{([^}]+)\\}/g, (_, varName) => {\n const value = process.env[varName];\n if (value === undefined) {\n throw new Error(`Environment variable ${varName} is not defined`);\n }\n return value;\n });\n }\n\n if (Array.isArray(obj)) {\n return obj.map(interpolateEnvVars);\n }\n\n if (obj !== null && typeof obj === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = interpolateEnvVars(value);\n }\n return result;\n }\n\n return obj;\n};\n\nconst parseWithSchema = <T>(content: string, schema: ZodType<T>, subject: string): T => {\n let parsed: unknown;\n try {\n parsed = parse(content);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid YAML for ${subject}: ${message}`);\n }\n\n // Interpolate environment variables in the parsed content\n const interpolated = interpolateEnvVars(parsed);\n\n const result = schema.safeParse(interpolated);\n if (!result.success) {\n throw new Error(`Invalid ${subject}: ${formatIssues(result.error.issues)}`);\n }\n\n return result.data;\n};\n\nexport const parseTestDefinition = (content: string): TestDefinition =>\n parseWithSchema(content, TestDefinitionSchema, 'test definition');\n\nexport const loadTestDefinition = async (filePath: string): Promise<TestDefinition> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseTestDefinition(fileContent);\n};\n\nexport const parseIntellitesterConfig = (content: string): IntellitesterConfig =>\n parseWithSchema(content, IntellitesterConfigSchema, 'config');\n\nexport const loadIntellitesterConfig = async (filePath: string): Promise<IntellitesterConfig> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseIntellitesterConfig(fileContent);\n};\n\nexport const parseWorkflowDefinition = (content: string): WorkflowDefinition =>\n parseWithSchema(content, WorkflowDefinitionSchema, 'workflow definition');\n\nexport const loadWorkflowDefinition = async (filePath: string): Promise<WorkflowDefinition> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseWorkflowDefinition(fileContent);\n};\n\nexport const isWorkflowFile = (filePath: string): boolean => {\n return filePath.endsWith('.workflow.yaml') || filePath.endsWith('.workflow.yml');\n};\n\n/**\n * Check if a file is a pipeline file based on naming convention.\n * Pipeline files end with .pipeline.yaml or .pipeline.yml\n */\nexport const isPipelineFile = (filePath: string): boolean => {\n return filePath.endsWith('.pipeline.yaml') || filePath.endsWith('.pipeline.yml');\n};\n\n/**\n * Parse pipeline definition from string content.\n */\nexport const parsePipelineDefinition = (content: string): PipelineDefinition =>\n parseWithSchema(content, PipelineDefinitionSchema, 'pipeline definition');\n\n/**\n * Load and validate a pipeline definition from a YAML file.\n */\nexport const loadPipelineDefinition = async (filePath: string): Promise<PipelineDefinition> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parsePipelineDefinition(fileContent);\n};\n\n/**\n * Recursively collects all environment variable names that are referenced\n * but not defined in the process environment.\n */\nexport const collectMissingEnvVars = (obj: unknown): string[] => {\n const missing: string[] = [];\n\n const collect = (value: unknown): void => {\n if (typeof value === 'string') {\n const matches = value.matchAll(/\\$\\{([^}]+)\\}/g);\n for (const match of matches) {\n const varName = match[1];\n if (process.env[varName] === undefined && !missing.includes(varName)) {\n missing.push(varName);\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach(collect);\n } else if (value !== null && typeof value === 'object') {\n Object.values(value).forEach(collect);\n }\n };\n\n collect(obj);\n return missing;\n};\n\n/**\n * Detect if YAML content is a workflow by checking for 'tests' array.\n */\nexport const isWorkflowContent = (content: string): boolean => {\n try {\n const parsed = parse(content);\n return parsed && Array.isArray(parsed.tests) && !parsed.steps && !parsed.workflows;\n } catch {\n return false;\n }\n};\n\n/**\n * Detect if YAML content is a pipeline by checking for 'workflows' array.\n */\nexport const isPipelineContent = (content: string): boolean => {\n try {\n const parsed = parse(content);\n return parsed && Array.isArray(parsed.workflows) && !parsed.steps;\n } catch {\n return false;\n }\n};\n"]}
|
|
@@ -4,6 +4,14 @@ import { z } from 'zod';
|
|
|
4
4
|
|
|
5
5
|
// src/core/loader.ts
|
|
6
6
|
var nonEmptyString = z.string().trim().min(1, "Value cannot be empty");
|
|
7
|
+
z.preprocess(
|
|
8
|
+
(val) => typeof val === "string" && val.trim() === "" ? void 0 : val,
|
|
9
|
+
z.string().trim().optional()
|
|
10
|
+
);
|
|
11
|
+
var optionalUrl = z.preprocess(
|
|
12
|
+
(val) => typeof val === "string" && val.trim() === "" ? void 0 : val,
|
|
13
|
+
z.string().trim().url().optional()
|
|
14
|
+
);
|
|
7
15
|
var trackSchema = z.object({
|
|
8
16
|
type: nonEmptyString.describe("Tracked resource type (e.g., row, user, file)"),
|
|
9
17
|
id: nonEmptyString.describe("Tracked resource ID"),
|
|
@@ -208,7 +216,7 @@ var defaultsSchema = z.object({
|
|
|
208
216
|
screenshots: z.enum(["on-failure", "always", "never"]).optional().describe("When to capture screenshots during test execution")
|
|
209
217
|
}).describe("Default settings that apply to all tests unless overridden");
|
|
210
218
|
var webConfigSchema = z.object({
|
|
211
|
-
baseUrl:
|
|
219
|
+
baseUrl: optionalUrl.describe("Base URL for the web application"),
|
|
212
220
|
browser: z.string().trim().optional().describe("Browser to use for testing"),
|
|
213
221
|
headless: z.boolean().optional().describe("Run browser in headless mode"),
|
|
214
222
|
timeout: z.number().int().positive().optional().describe("Timeout in milliseconds for web actions")
|
|
@@ -223,7 +231,7 @@ var iosConfigSchema = z.object({
|
|
|
223
231
|
}).describe("iOS platform configuration");
|
|
224
232
|
var emailConfigSchema = z.object({
|
|
225
233
|
provider: z.literal("inbucket").describe("Email testing provider"),
|
|
226
|
-
endpoint:
|
|
234
|
+
endpoint: optionalUrl.describe("Email service endpoint URL")
|
|
227
235
|
}).describe("Email testing configuration");
|
|
228
236
|
var appwriteConfigSchema = z.object({
|
|
229
237
|
endpoint: nonEmptyString.url().describe("Appwrite API endpoint"),
|
|
@@ -258,7 +266,7 @@ var aiConfigSchema = z.object({
|
|
|
258
266
|
provider: z.enum(["anthropic", "openai", "ollama"]).describe("AI provider to use for test generation"),
|
|
259
267
|
model: nonEmptyString.describe("Model name to use"),
|
|
260
268
|
apiKey: z.string().trim().optional().describe("API key for the AI provider"),
|
|
261
|
-
baseUrl:
|
|
269
|
+
baseUrl: optionalUrl.describe("Base URL for the AI API (required for Ollama)"),
|
|
262
270
|
temperature: z.number().min(0).max(2).default(0.2).describe("Temperature for AI generation (0 = deterministic, 2 = very creative)"),
|
|
263
271
|
maxTokens: z.number().int().positive().default(4096).describe("Maximum tokens for AI responses"),
|
|
264
272
|
source: aiSourceSchema
|
|
@@ -289,7 +297,7 @@ var previewConfigSchema = z.object({
|
|
|
289
297
|
preview: z.object({
|
|
290
298
|
command: z.string().optional().describe("Command to start the preview server after build")
|
|
291
299
|
}).optional().describe("Preview server configuration"),
|
|
292
|
-
url:
|
|
300
|
+
url: optionalUrl.describe("URL to wait for before starting tests"),
|
|
293
301
|
timeout: z.number().int().positive().optional().describe("Timeout in milliseconds to wait for preview server")
|
|
294
302
|
}).describe("Configuration for the --preview flag (build and serve production build)");
|
|
295
303
|
var TestConfigSchema = z.object({
|
|
@@ -541,5 +549,5 @@ var isPipelineContent = (content) => {
|
|
|
541
549
|
};
|
|
542
550
|
|
|
543
551
|
export { ActionSchema, IntellitesterConfigSchema, LocatorSchema, TestConfigSchema, TestDefinitionSchema, cleanupConfigSchema, cleanupDiscoverSchema, collectMissingEnvVars, errorIfSchema, isPipelineContent, isPipelineFile, isWorkflowContent, isWorkflowFile, loadIntellitesterConfig, loadPipelineDefinition, loadTestDefinition, loadWorkflowDefinition, parseIntellitesterConfig, parsePipelineDefinition, parseTestDefinition, parseWorkflowDefinition, previewConfigSchema };
|
|
544
|
-
//# sourceMappingURL=chunk-
|
|
545
|
-
//# sourceMappingURL=chunk-
|
|
552
|
+
//# sourceMappingURL=chunk-6GXSY4NF.js.map
|
|
553
|
+
//# sourceMappingURL=chunk-6GXSY4NF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/core/schema.ts","../src/core/workflowSchema.ts","../src/core/pipelineSchema.ts","../src/core/loader.ts"],"names":["nonEmptyString","z"],"mappings":";;;;;AAEA,IAAM,cAAA,GAAiB,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,GAAA,CAAI,GAAG,uBAAuB,CAAA;AAGhD,CAAA,CAAE,UAAA;AAAA,EACvB,CAAC,QAAS,OAAO,GAAA,KAAQ,YAAY,GAAA,CAAI,IAAA,EAAK,KAAM,EAAA,GAAK,MAAA,GAAY,GAAA;AAAA,EACrE,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,QAAA;AACpB;AAGA,IAAM,cAAc,CAAA,CAAE,UAAA;AAAA,EACpB,CAAC,QAAS,OAAO,GAAA,KAAQ,YAAY,GAAA,CAAI,IAAA,EAAK,KAAM,EAAA,GAAK,MAAA,GAAY,GAAA;AAAA,EACrE,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,GAAA,GAAM,QAAA;AAC1B,CAAA;AAEA,IAAM,WAAA,GAAc,EAAE,MAAA,CAAO;AAAA,EAC3B,IAAA,EAAM,cAAA,CAAe,QAAA,CAAS,+CAA+C,CAAA;AAAA,EAC7E,EAAA,EAAI,cAAA,CAAe,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACjD,oBAAoB,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,4CAA4C;AAClG,CAAC,CAAA,CAAE,WAAA,EAAY,CAAE,QAAA,CAAS,wCAAwC,CAAA;AAElE,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EAC/B,KAAA,EAAO,YAAY,QAAA;AACrB,CAAC,CAAA;AAGM,IAAM,aAAA,GAAgB,CAAA,CAAE,IAAA,CAAK,CAAC,WAAA,EAAa,aAAA,EAAe,UAAA,EAAY,OAAO,CAAC,CAAA,CAClF,QAAA,CAAS,wDAAwD;AAE7D,IAAM,aAAA,GAAgB,EAC1B,MAAA,CAAO;AAAA,EACN,WAAA,EAAa,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gDAAgD,CAAA;AAAA,EACnG,MAAA,EAAQ,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B,CAAA;AAAA,EAC3E,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,sBAAsB,CAAA;AAAA,EAClE,GAAA,EAAK,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,cAAc,CAAA;AAAA,EACzD,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gBAAgB,CAAA;AAAA,EAC7D,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,WAAW,CAAA;AAAA,EACvD,IAAA,EAAM,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iBAAiB;AAC/D,CAAC,CAAA,CACA,QAAA,CAAS,uFAAuF,CAAA,CAChG,MAAA;AAAA,EACC,CAAC,OAAA,KACC,OAAA;AAAA,IACE,OAAA,CAAQ,WAAA,IACR,OAAA,CAAQ,MAAA,IACR,OAAA,CAAQ,IAAA,IACR,OAAA,CAAQ,GAAA,IACR,OAAA,CAAQ,KAAA,IACR,OAAA,CAAQ,IAAA,IACR,OAAA,CAAQ;AAAA,GACV;AAAA,EACF,EAAE,SAAS,uDAAA;AACb;AAEF,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EACpC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,UAAU,CAAA;AAAA,EAC1B,KAAA,EAAO,cAAA,CAAe,QAAA,CAAS,4BAA4B;AAC7D,CAAC,CAAA,CAAE,SAAS,mBAAmB,CAAA;AAE/B,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EAC/B,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,EACrB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAExC,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,0DAA0D,CAAA;AAAA,EACrF,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,yBAAyB,CAAA;AAErC,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,sCAAsC,CAAA;AAElD,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,uBAAuB,CAAA;AAEnC,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EAClC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAO,CAAA,CAAE,MAAA,EAAO,CAAE,SAAS,yCAAyC,CAAA;AAAA,EACpE,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAE9C,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAE9B,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EACnC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,EACzB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,oBAAoB,CAAA;AAEhC,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,GAAA,EAAK,cAAA,CAAe,QAAA,CAAS,oDAAoD,CAAA;AAAA,EACjF,MAAA,EAAQ,aAAA,CAAc,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAChF,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,sBAAsB,CAAA;AAElC,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,EACvB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,kBAAkB,CAAA;AAE9B,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EAClC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,MAAA,EAAQ,aAAA;AAAA,EACR,OAAO,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uBAAuB,CAAA;AAAA,EAC7D,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,yDAAyD,CAAA;AAErE,IAAM,gBAAA,GAAmB,EACtB,MAAA,CAAO;AAAA,EACN,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,MAAA,EAAQ,aAAA,CAAc,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAC/D,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8BAA8B,CAAA;AAAA,EACvF,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CACA,QAAA,CAAS,gCAAgC,CAAA,CACzC,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,CAAO,MAAA,IAAU,MAAA,CAAO,OAAA,EAAS;AAAA,EACnD,OAAA,EAAS;AACX,CAAC,CAAA;AAEH,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EAClC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,MAAA,EAAQ,aAAA,CAAc,QAAA,EAAS,CAAE,SAAS,mBAAmB,CAAA;AAAA,EAC7D,SAAA,EAAW,CAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,MAAM,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,qBAAqB,CAAA;AAAA,EAC3E,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4BAA4B,CAAA;AAAA,EACpF,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAE3C,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EACtC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,YAAY,CAAA;AAAA,EAC5B,MAAM,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACnE,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,WAAA,EAAY,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2EAA2E;AAC5I,CAAC,CAAA,CAAE,SAAS,mBAAmB,CAAA;AAE/B,IAAM,kBAAA,GAAqB,EAAE,MAAA,CAAO;AAAA,EAClC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,EACxB,IAAA,EAAM,cAAA,CAAe,QAAA,CAAS,sBAAsB,CAAA;AAAA,EACpD,OAAO,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAC3D,IAAA,EAAM,CAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,SAAA,EAAW,OAAO,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B,CAAA;AAAA,EAChG,MAAM,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAC3E,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,2CAA2C;AACrF,CAAC,CAAA,CAAE,SAAS,uCAAuC,CAAA;AAEnD,IAAM,wBAAA,GAA2B,EAAE,MAAA,CAAO;AAAA,EACxC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAC/B,OAAA,EAAS,cAAA,CAAe,QAAA,CAAS,mCAAmC,CAAA;AAAA,EACpE,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4CAA4C,CAAA;AAAA,EACrG,iBAAiB,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB;AAC3E,CAAC,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAEzC,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EAC5C,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,mBAAmB,CAAA;AAAA,EACnC,MAAA,EAAQ,cAAA,CAAe,QAAA,CAAS,0CAA0C,CAAA;AAAA,EAC1E,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,oCAAoC;AAC9E,CAAC,CAAA,CAAE,SAAS,wCAAwC,CAAA;AAEpD,IAAM,4BAAA,GAA+B,EAAE,MAAA,CAAO;AAAA,EAC5C,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,mBAAmB,CAAA;AAAA,EACnC,MAAA,EAAQ,cAAA,CAAe,QAAA,CAAS,0CAA0C,CAAA;AAAA,EAC1E,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,4CAA4C;AACtF,CAAC,CAAA,CAAE,SAAS,2BAA2B,CAAA;AAEvC,IAAM,sBAAA,GAAyB,EAAE,MAAA,CAAO;AAAA,EACtC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAC7B,OAAA,EAAS,cAAA,CAAe,QAAA,CAAS,mCAAmC;AACtE,CAAC,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAEzC,IAAM,+BAAA,GAAkC,EAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,sBAAsB;AACxC,CAAC,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAEzC,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,OAAO;AACzB,CAAC,CAAA,CAAE,SAAS,6DAA6D,CAAA;AAEzE,IAAM,2BAAA,GAA8B,EAAE,MAAA,CAAO;AAAA,EAC3C,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,iBAAiB,CAAA;AAAA,EACjC,MAAA,EAAQ,aAAA;AAAA,EACR,KAAA,EAAO,CAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,EAAY,SAAA,EAAW,QAAA,EAAU,UAAA,EAAY,UAAU,CAAC,CAAA,CAC/E,SAAS,2BAA2B,CAAA;AAAA,EACvC,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAC3C,QAAA,CAAS,8BAA8B,CAAA;AAAA,EAC1C,OAAA,EAAS,cAAc,QAAA;AACzB,CAAC,CAAA,CAAE,SAAS,+CAA+C,CAAA;AAE3D,IAAM,gBAAA,GAAmB,EAAE,MAAA,CAAO;AAAA,EAChC,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,EACtB,OAAA,EAAS,cAAA,CAAe,QAAA,CAAS,0CAA0C;AAC7E,CAAC,CAAA,CAAE,SAAS,gDAAgD,CAAA;AAG5D,IAAM,gBAAA,GAAmB,CAAA,CAAE,kBAAA,CAAmB,MAAA,EAAQ;AAAA,EACpD,oBAAA;AAAA,EACA,eAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,iBAAA;AAAA,EACA,mBAAA;AAAA,EACA,iBAAA;AAAA,EACA,iBAAA;AAAA,EACA,kBAAA;AAAA,EACA,gBAAA;AAAA,EACA,kBAAA;AAAA,EACA,sBAAA;AAAA,EACA,kBAAA;AAAA,EACA,wBAAA;AAAA,EACA,4BAAA;AAAA,EACA,4BAAA;AAAA,EACA,sBAAA;AAAA,EACA,+BAAA;AAAA,EACA,iBAAA;AAAA,EACA,2BAAA;AAAA,EACA;AACF,CAAC,CAAA;AAED,IAAM,yBAAA,GAA4B,CAAA,CAAE,YAAA,CAAa,gBAAA,EAAkB,eAAe,CAAA;AAElF,IAAM,uBAAA,GAA0B,CAAA,CAAE,YAAA,CAAa,CAAA,CAAE,MAAA,CAAO;AAAA,EACtD,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,aAAa,CAAA;AAAA,EAC7B,SAAA,EAAW,EAAE,MAAA,CAAO;AAAA,IAClB,IAAA,EAAM,EAAE,IAAA,CAAK,CAAC,UAAU,WAAA,EAAa,SAAA,EAAW,QAAQ,CAAC,CAAA;AAAA,IACzD,MAAA,EAAQ;AAAA,GACT,CAAA,CAAE,QAAA,CAAS,oBAAoB,CAAA;AAAA,EAChC,MAAM,CAAA,CAAE,KAAA,CAAM,yBAAyB,CAAA,CAAE,SAAS,uCAAuC,CAAA;AAAA,EACzF,IAAA,EAAM,EAAE,KAAA,CAAM,yBAAyB,EAAE,QAAA,EAAS,CAAE,SAAS,wCAAwC;AACvG,CAAC,CAAA,CAAE,QAAA,CAAS,oDAAoD,CAAA,EAAG,eAAe,CAAA;AAGlF,IAAM,YAAA,GAAe,EAAE,KAAA,CAAM;AAAA,EAC3B,CAAA,CAAE,MAAM,yBAAyB,CAAA;AAAA;AAAA,EACjC,EAAE,MAAA,CAAO;AAAA,IACP,QAAA,EAAU,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,gDAAgD,CAAA;AAAA,IAC5F,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,mCAAmC;AAAA,GACpG;AACH,CAAC,CAAA,CAAE,SAAS,uEAAuE,CAAA;AAEnF,IAAM,yBAAA,GAA4B,CAAA,CAAE,YAAA,CAAa,CAAA,CAAE,MAAA,CAAO;AAAA,EACxD,IAAA,EAAM,CAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,EAC/B,MAAA,EAAQ,aAAA,CAAc,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACpD,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mEAAmE,CAAA;AAAA,EAC5H,KAAA,EAAO,CAAA,CAAE,IAAA,CAAK,CAAC,SAAA,EAAW,UAAA,EAAY,SAAS,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,8CAA8C,CAAA;AAAA,EACpH,QAAA,EAAU,YAAA,CAAa,QAAA,CAAS,wDAAwD,CAAA;AAAA,EACxF,SAAA,EAAW,YAAA,CAAa,QAAA,EAAS,CAAE,SAAS,mEAAmE,CAAA;AAAA,EAC/G,YAAA,EAAc,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,+DAA+D;AAC/H,CAAC,CAAA,CAAE,QAAA,CAAS,yEAAyE,CAAA,EAAG,eAAe,CAAA;AAEhG,IAAM,eAAe,CAAA,CAAE,KAAA,CAAM,CAAC,yBAAA,EAA2B,uBAAA,EAAyB,yBAAyB,CAAC;AAEnH,IAAM,cAAA,GAAiB,EAAE,MAAA,CAAO;AAAA,EAC9B,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iDAAiD,CAAA;AAAA,EAC1G,WAAA,EAAa,CAAA,CAAE,IAAA,CAAK,CAAC,YAAA,EAAc,QAAA,EAAU,OAAO,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mDAAmD;AAChI,CAAC,CAAA,CAAE,SAAS,4DAA4D,CAAA;AAExE,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EAC/B,OAAA,EAAS,WAAA,CAAY,QAAA,CAAS,kCAAkC,CAAA;AAAA,EAChE,OAAA,EAAS,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,4BAA4B,CAAA;AAAA,EAC3E,UAAU,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACxE,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,yCAAyC;AACpG,CAAC,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAExC,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EACnC,KAAA,EAAO,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wBAAwB,CAAA;AAAA,EACrE,MAAA,EAAQ,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mCAAmC;AACnF,CAAC,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAE5C,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EAC/B,QAAA,EAAU,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,uBAAuB,CAAA;AAAA,EACvE,SAAA,EAAW,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC;AACnF,CAAC,CAAA,CAAE,SAAS,4BAA4B,CAAA;AAExC,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACjC,UAAU,CAAA,CAAE,OAAA,CAAQ,UAAU,CAAA,CAAE,SAAS,wBAAwB,CAAA;AAAA,EACjE,QAAA,EAAU,WAAA,CAAY,QAAA,CAAS,4BAA4B;AAC7D,CAAC,CAAA,CAAE,SAAS,6BAA6B,CAAA;AAEzC,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EACpC,QAAA,EAAU,cAAA,CAAe,GAAA,EAAI,CAAE,SAAS,uBAAuB,CAAA;AAAA,EAC/D,SAAA,EAAW,cAAA,CAAe,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACxD,MAAA,EAAQ,cAAA,CAAe,QAAA,CAAS,+CAA+C,CAAA;AAAA,EAC/E,SAAS,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EACxF,kBAAkB,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,yCAAyC;AAC7F,CAAC,CAAA,CAAE,SAAS,gCAAgC,CAAA;AAE5C,IAAM,aAAA,GAAgB,EAAE,MAAA,CAAO;AAAA,EAC7B,SAAS,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,kCAAkC,CAAA;AAAA,EAC3E,UAAA,EAAY,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,EAAM,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,2BAA2B;AACxF,CAAC,CAAA,CAAE,SAAS,iCAAiC,CAAA;AAE7C,IAAM,eAAA,GAAkB,EACrB,MAAA,CAAO;AAAA,EACN,OAAA,EAAS,cAAA,CAAe,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAC7E,MAAM,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,+DAA+D,CAAA;AAAA,EACrG,QAAQ,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,uDAAuD,CAAA;AAAA,EAC9F,GAAA,EAAK,cAAA,CAAe,GAAA,EAAI,CAAE,SAAS,uCAAuC,CAAA;AAAA,EAC1E,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAAA,EACtF,mBAAA,EAAqB,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,6DAA6D,CAAA;AAAA,EACrH,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,GAAK,CAAA,CAAE,QAAA,CAAS,gEAAgE,CAAA;AAAA,EAC7H,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EAClF,KAAK,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC;AACvE,CAAC,CAAA,CACA,QAAA,CAAS,8DAA8D,CAAA,CACvE,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,CAAO,OAAA,IAAW,MAAA,CAAO,IAAA,IAAQ,MAAA,CAAO,MAAA,EAAQ;AAAA,EAClE,OAAA,EAAS;AACX,CAAC,CAAA;AAEH,IAAM,cAAA,GAAiB,EAAE,MAAA,CAAO;AAAA,EAC9B,UAAU,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAC/E,eAAe,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,0CAA0C,CAAA;AAAA,EACxF,YAAY,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,MAAA,EAAQ,UAAU,MAAA,EAAQ,MAAA,EAAQ,SAAS,CAAC,CAAA,CAAE,SAAS,oDAAoD;AACtJ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,iEAAiE,CAAA;AAExF,IAAM,cAAA,GAAiB,EAAE,MAAA,CAAO;AAAA,EAC9B,QAAA,EAAU,CAAA,CAAE,IAAA,CAAK,CAAC,WAAA,EAAa,UAAU,QAAQ,CAAC,CAAA,CAAE,QAAA,CAAS,wCAAwC,CAAA;AAAA,EACrG,KAAA,EAAO,cAAA,CAAe,QAAA,CAAS,mBAAmB,CAAA;AAAA,EAClD,MAAA,EAAQ,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,6BAA6B,CAAA;AAAA,EAC3E,OAAA,EAAS,WAAA,CAAY,QAAA,CAAS,+CAA+C,CAAA;AAAA,EAC7E,WAAA,EAAa,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,OAAA,CAAQ,GAAG,CAAA,CAAE,SAAS,sEAAsE,CAAA;AAAA,EAClI,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,IAAI,CAAA,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,EAC/F,MAAA,EAAQ;AACV,CAAC,CAAA,CAAE,SAAS,kDAAkD,CAAA;AAGvD,IAAM,qBAAA,GAAwB,EAAE,MAAA,CAAO;AAAA,EAC5C,OAAA,EAAS,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,8DAA8D,CAAA;AAAA,EAC1G,KAAA,EAAO,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,iBAAiB,CAAC,CAAA,CAAE,SAAS,iDAAiD,CAAA;AAAA,EAClH,OAAA,EAAS,EAAE,MAAA,EAAO,CAAE,QAAQ,SAAS,CAAA,CAAE,SAAS,qCAAqC;AACvF,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mDAAmD;AAGnE,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,UAAU,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAC1E,QAAA,EAAU,EAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wCAAwC,CAAA;AAAA,EACtF,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAC/G,KAAA,EAAO,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EAC3G,QAAA,EAAU,CAAA,CAAE,KAAA,CAAM,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gDAAgD,CAAA;AAAA,EAClG,QAAA,EAAU,qBAAA;AAAA,EACV,eAAe,CAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wDAAwD;AACzG,CAAC,CAAA,CAAE,WAAA,EAAY,CAAE,QAAA,CAAS,8CAA8C;AAKxE,IAAM,eAAA,GAAkB,EAAE,MAAA,CAAO;AAAA,EAC/B,GAAA,EAAK,gBAAgB,QAAA,EAAS;AAAA,EAC9B,OAAA,EAAS,oBAAoB,QAAA,EAAS;AAAA,EACtC,GAAA,EAAK,gBAAgB,QAAA;AACvB,CAAC,CAAA,CAAE,SAAS,kCAAkC,CAAA;AAGvC,IAAM,mBAAA,GAAsB,EAAE,MAAA,CAAO;AAAA,EAC1C,KAAA,EAAO,EAAE,MAAA,CAAO;AAAA,IACd,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,8BAA8B;AAAA,GACvE,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,qBAAqB,CAAA;AAAA,EAC5C,OAAA,EAAS,EAAE,MAAA,CAAO;AAAA,IAChB,SAAS,CAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,iDAAiD;AAAA,GAC1F,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACrD,GAAA,EAAK,WAAA,CAAY,QAAA,CAAS,uCAAuC,CAAA;AAAA,EACjE,OAAA,EAAS,CAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,oDAAoD;AAC/G,CAAC,CAAA,CAAE,SAAS,yEAAyE;AAE9E,IAAM,gBAAA,GAAmB,EAAE,MAAA,CAAO;AAAA,EACvC,QAAA,EAAU,eAAe,QAAA,EAAS;AAAA,EAClC,GAAA,EAAK,gBAAgB,QAAA,EAAS;AAAA,EAC9B,OAAA,EAAS,oBAAoB,QAAA,EAAS;AAAA,EACtC,GAAA,EAAK,gBAAgB,QAAA,EAAS;AAAA,EAC9B,KAAA,EAAO,kBAAkB,QAAA,EAAS;AAAA,EAClC,QAAA,EAAU,qBAAqB,QAAA;AACjC,CAAC,CAAA,CAAE,SAAS,4DAA4D;AAEjE,IAAM,oBAAA,GAAuB,EAAE,MAAA,CAAO;AAAA,EAC3C,IAAA,EAAM,cAAA,CAAe,QAAA,CAAS,sBAAsB,CAAA;AAAA,EACpD,QAAA,EAAU,CAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,WAAW,KAAK,CAAC,CAAA,CAAE,QAAA,CAAS,iCAAiC,CAAA;AAAA,EACtF,SAAA,EAAW,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,MAAA,EAAO,EAAG,CAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,8EAA8E,CAAA;AAAA,EAC9I,MAAA,EAAQ,iBAAiB,QAAA,EAAS;AAAA,EAClC,KAAA,EAAO,EAAE,KAAA,CAAM,YAAY,EAAE,GAAA,CAAI,CAAC,CAAA,CAAE,QAAA,CAAS,iDAAiD;AAChG,CAAC,CAAA,CAAE,SAAS,gDAAgD;AAErD,IAAM,yBAAA,GAA4B,EAAE,MAAA,CAAO;AAAA,EAChD,QAAA,EAAU,eAAe,QAAA,EAAS;AAAA,EAClC,EAAA,EAAI,eAAe,QAAA,EAAS;AAAA,EAC5B,SAAA,EAAW,gBAAgB,QAAA,EAAS;AAAA,EACpC,OAAA,EAAS,cAAc,QAAA,EAAS;AAAA,EAChC,KAAA,EAAO,kBAAkB,QAAA,EAAS;AAAA,EAClC,QAAA,EAAU,qBAAqB,QAAA,EAAS;AAAA,EACxC,OAAA,EAAS,oBAAoB,QAAA,EAAS;AAAA,EACtC,SAAA,EAAW,gBAAgB,QAAA,EAAS;AAAA,EACpC,OAAA,EAAS,oBAAoB,QAAA,EAAS;AAAA,EACtC,OAAA,EAAS,CAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,MAAA,EAAO,CAAE,MAAM,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,+CAA+C;AACtH,CAAC,CAAA,CAAE,SAAS,6CAA6C;ACpZzD,IAAMA,eAAAA,GAAiBC,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,GAAA,CAAI,GAAG,uBAAuB,CAAA;AAGvE,IAAM,mBAAA,GAAsBA,EAAE,MAAA,CAAO;AAAA,EACnC,IAAA,EAAMD,eAAAA,CAAe,QAAA,CAAS,qDAAqD,CAAA;AAAA,EACnF,EAAA,EAAIA,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,oEAAoE,CAAA;AAAA,EAC3G,SAAA,EAAWC,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,wDAAwD;AAC1H,CAAC,CAAA,CAAE,SAAS,0BAA0B,CAAA;AAGtC,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EACvC,SAASD,eAAAA,CAAe,GAAA,GAAM,QAAA,EAAS,CAAE,SAAS,yCAAyC,CAAA;AAAA,EAC3F,OAAA,EAASC,CAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,kCAAkC,CAAA;AAAA,EACzG,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACxE,WAAWA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAC,EAAE,QAAA,EAAS,CACjE,SAAS,yEAAyE;AACvF,CAAC,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAGzD,IAAM,4BAAA,GAA+BA,EAAE,MAAA,CAAO;AAAA,EAC5C,QAAA,EAAUD,eAAAA,CAAe,GAAA,EAAI,CAAE,SAAS,uBAAuB,CAAA;AAAA,EAC/D,SAAA,EAAWA,eAAAA,CAAe,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACxD,MAAA,EAAQA,eAAAA,CAAe,QAAA,CAAS,kBAAkB,CAAA;AAAA,EAClD,OAAA,EAASC,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,+CAA+C,CAAA;AAAA,EAC3F,gBAAA,EAAkBA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,yCAAyC;AAChG,CAAC,CAAA,CAAE,SAAS,iDAAiD,CAAA;AAG7D,IAAM,6BAAA,GAAgCA,EAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAASA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA,EACvF,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,iBAAiB,CAAC,CAAA,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAC7G,OAAA,EAASA,EAAE,MAAA,EAAO,CAAE,QAAQ,SAAS,CAAA,CAAE,SAAS,gCAAgC;AAClF,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mDAAmD,CAAA;AAG1E,IAAM,2BAAA,GAA8BA,EAAE,MAAA,CAAO;AAAA,EAC3C,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,EAClE,QAAA,EAAUA,EAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC7E,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAC/G,KAAA,EAAOA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EAC3G,QAAA,EAAUA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gDAAgD,CAAA;AAAA,EAClG,QAAA,EAAU,6BAAA;AAAA,EACV,eAAeA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wDAAwD;AACzG,CAAC,CAAA,CAAE,WAAA,EAAY,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAG1D,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EACvC,OAAA,EAASD,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAC7E,MAAMC,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAC1F,GAAA,EAAKD,eAAAA,CAAe,GAAA,EAAI,CAAE,SAAS,uCAAuC,CAAA;AAAA,EAC1E,mBAAA,EAAqBC,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,mDAAmD,CAAA;AAAA,EAC3G,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,GAAK,CAAA,CAAE,QAAA,CAAS,qDAAqD,CAAA;AAAA,EAClH,OAAA,EAASD,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EAC1F,GAAA,EAAKA,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,iCAAiC;AAC3E,CAAC,CAAA,CAAE,SAAS,sDAAsD,CAAA;AAGlE,IAAM,oBAAA,GAAuBC,EAAE,MAAA,CAAO;AAAA,EACpC,GAAA,EAAK,wBAAwB,QAAA,EAAS;AAAA,EACtC,QAAA,EAAU,6BAA6B,QAAA,EAAS;AAAA,EAChD,OAAA,EAAS,4BAA4B,QAAA,EAAS;AAAA,EAC9C,SAAA,EAAW,wBAAwB,QAAA;AACrC,CAAC,CAAA,CAAE,SAAS,wDAAwD,CAAA;AAG7D,IAAM,wBAAA,GAA2BA,EAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAMD,eAAAA,CAAe,QAAA,CAAS,0BAA0B,CAAA;AAAA,EACxD,QAAA,EAAUC,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,SAAA,EAAW,KAAK,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA,EACzG,SAAA,EAAWA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,iDAAiD,CAAA;AAAA,EACjH,MAAA,EAAQ,qBAAqB,QAAA,EAAS;AAAA,EACtC,iBAAA,EAAmBA,EAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAC/G,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAM,mBAAmB,CAAA,CAAE,IAAI,CAAA,EAAG,yCAAyC,CAAA,CAAE,QAAA,CAAS,gDAAgD;AACjJ,CAAC,CAAA,CAAE,SAAS,yEAAyE,CAAA;ACxErF,IAAMD,eAAAA,GAAiBC,EAAE,MAAA,EAAO,CAAE,MAAK,CAAE,GAAA,CAAI,GAAG,uBAAuB,CAAA;AAGvE,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EACvC,IAAA,EAAMD,eAAAA,CAAe,QAAA,CAAS,2BAA2B,CAAA;AAAA,EACzD,EAAA,EAAIA,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,2DAA2D,CAAA;AAAA,EAClG,UAAA,EAAYC,EAAE,KAAA,CAAMD,eAAc,EAAE,QAAA,EAAS,CAAE,SAAS,qDAAqD,CAAA;AAAA,EAC7G,UAAA,EAAYC,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,wCAAwC,CAAA;AAAA,EAC3G,SAAA,EAAWA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,mDAAmD;AACrH,CAAC,CAAA,CAAE,SAAS,8BAA8B,CAAA;AAG1C,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EACvC,SAASD,eAAAA,CAAe,GAAA,GAAM,QAAA,EAAS,CAAE,SAAS,6CAA6C,CAAA;AAAA,EAC/F,OAAA,EAASC,CAAAA,CAAE,IAAA,CAAK,CAAC,UAAA,EAAY,SAAA,EAAW,QAAQ,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,kCAAkC,CAAA;AAAA,EACzG,UAAUA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,8BAA8B,CAAA;AAAA,EACxE,WAAWA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,IAAA,CAAK,CAAC,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,IAAI,CAAC,CAAC,EAAE,QAAA,EAAS,CACjE,SAAS,yEAAyE;AACvF,CAAC,CAAA,CAAE,SAAS,6CAA6C,CAAA;AAGzD,IAAM,4BAAA,GAA+BA,EAAE,MAAA,CAAO;AAAA,EAC5C,QAAA,EAAUD,eAAAA,CAAe,GAAA,EAAI,CAAE,SAAS,uBAAuB,CAAA;AAAA,EAC/D,SAAA,EAAWA,eAAAA,CAAe,QAAA,CAAS,qBAAqB,CAAA;AAAA,EACxD,MAAA,EAAQA,eAAAA,CAAe,QAAA,CAAS,kBAAkB,CAAA;AAAA,EAClD,OAAA,EAASC,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,+CAA+C,CAAA;AAAA,EAC3F,gBAAA,EAAkBA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,6CAA6C;AACpG,CAAC,CAAA,CAAE,SAAS,iDAAiD,CAAA;AAG7D,IAAM,6BAAA,GAAgCA,EAAE,MAAA,CAAO;AAAA,EAC7C,OAAA,EAASA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,2CAA2C,CAAA;AAAA,EACvF,KAAA,EAAOA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,OAAA,CAAQ,CAAC,iBAAiB,CAAC,CAAA,CAAE,SAAS,4CAA4C,CAAA;AAAA,EAC7G,OAAA,EAASA,EAAE,MAAA,EAAO,CAAE,QAAQ,SAAS,CAAA,CAAE,SAAS,gCAAgC;AAClF,CAAC,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,mDAAmD,CAAA;AAG1E,IAAM,2BAAA,GAA8BA,EAAE,MAAA,CAAO;AAAA,EAC3C,UAAUA,CAAAA,CAAE,MAAA,GAAS,QAAA,EAAS,CAAE,SAAS,yBAAyB,CAAA;AAAA,EAClE,QAAA,EAAUA,EAAE,OAAA,EAAQ,CAAE,QAAQ,KAAK,CAAA,CAAE,SAAS,+BAA+B,CAAA;AAAA,EAC7E,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA,CAAE,GAAA,CAAI,EAAE,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,SAAS,wDAAwD,CAAA;AAAA,EAC/G,KAAA,EAAOA,CAAAA,CAAE,MAAA,CAAOA,CAAAA,CAAE,MAAA,EAAO,EAAGA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,SAAS,+CAA+C,CAAA;AAAA,EAC3G,QAAA,EAAUA,CAAAA,CAAE,KAAA,CAAMA,CAAAA,CAAE,MAAA,EAAQ,CAAA,CAAE,QAAA,EAAS,CAAE,QAAA,CAAS,gDAAgD,CAAA;AAAA,EAClG,QAAA,EAAU,6BAAA;AAAA,EACV,eAAeA,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,wDAAwD,CAAA;AAAA,EACvG,UAAA,EAAYA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,oCAAoC;AACrF,CAAC,CAAA,CAAE,WAAA,EAAY,CAAE,QAAA,CAAS,gCAAgC,CAAA;AAG1D,IAAM,uBAAA,GAA0BA,EAAE,MAAA,CAAO;AAAA,EACvC,OAAA,EAASD,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,iCAAiC,CAAA;AAAA,EAC7E,MAAMC,CAAAA,CAAE,OAAA,GAAU,QAAA,EAAS,CAAE,SAAS,oDAAoD,CAAA;AAAA,EAC1F,GAAA,EAAKD,eAAAA,CAAe,GAAA,EAAI,CAAE,SAAS,2CAA2C,CAAA;AAAA,EAC9E,mBAAA,EAAqBC,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,mDAAmD,CAAA;AAAA,EAC3G,OAAA,EAASA,CAAAA,CAAE,MAAA,EAAO,CAAE,GAAA,EAAI,CAAE,QAAA,EAAS,CAAE,OAAA,CAAQ,GAAK,CAAA,CAAE,QAAA,CAAS,qDAAqD,CAAA;AAAA,EAClH,OAAA,EAASD,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,8CAA8C,CAAA;AAAA,EAC1F,GAAA,EAAKA,eAAAA,CAAe,QAAA,EAAS,CAAE,SAAS,iCAAiC;AAC3E,CAAC,CAAA,CAAE,SAAS,0DAA0D,CAAA;AAGtE,IAAM,oBAAA,GAAuBC,EAAE,MAAA,CAAO;AAAA,EACpC,GAAA,EAAK,wBAAwB,QAAA,EAAS;AAAA,EACtC,QAAA,EAAU,6BAA6B,QAAA,EAAS;AAAA,EAChD,OAAA,EAAS,4BAA4B,QAAA,EAAS;AAAA,EAC9C,SAAA,EAAW,wBAAwB,QAAA;AACrC,CAAC,CAAA,CAAE,SAAS,4DAA4D,CAAA;AAGjE,IAAM,wBAAA,GAA2BA,EAAE,MAAA,CAAO;AAAA,EAC/C,IAAA,EAAMD,eAAAA,CAAe,QAAA,CAAS,0BAA0B,CAAA;AAAA,EACxD,QAAA,EAAUC,CAAAA,CAAE,IAAA,CAAK,CAAC,KAAA,EAAO,SAAA,EAAW,KAAK,CAAC,CAAA,CAAE,OAAA,CAAQ,KAAK,CAAA,CAAE,SAAS,qCAAqC,CAAA;AAAA,EACzG,MAAA,EAAQ,qBAAqB,QAAA,EAAS;AAAA,EACtC,UAAA,EAAYA,CAAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,MAAA,EAAQ,QAAQ,CAAC,CAAA,CAAE,OAAA,CAAQ,MAAM,CAAA,CAAE,SAAS,wCAAwC,CAAA;AAAA,EAChH,kBAAA,EAAoBA,EAAE,OAAA,EAAQ,CAAE,QAAQ,IAAI,CAAA,CAAE,SAAS,sCAAsC,CAAA;AAAA,EAC7F,SAAA,EAAWA,CAAAA,CAAE,KAAA,CAAM,uBAAuB,CAAA,CAAE,IAAI,CAAA,EAAG,6CAA6C,CAAA,CAAE,QAAA,CAAS,oDAAoD;AACjK,CAAC,CAAA,CAAE,SAAS,6EAA6E,CAAA;;;ACnEzF,IAAM,eAAe,CAAC,MAAA,KACpB,MAAA,CACG,GAAA,CAAI,CAAC,KAAA,KAAU;AACd,EAAA,MAAM,IAAA,GAAO,KAAA,CAAM,IAAA,CAAK,IAAA,CAAK,GAAG,CAAA,IAAK,QAAA;AACrC,EAAA,OAAO,CAAA,EAAG,IAAI,CAAA,EAAA,EAAK,KAAA,CAAM,OAAO,CAAA,CAAA;AAClC,CAAC,CAAA,CACA,KAAK,IAAI,CAAA;AAMd,IAAM,kBAAA,GAAqB,CAAC,GAAA,KAA0B;AACpD,EAAA,IAAI,OAAO,QAAQ,QAAA,EAAU;AAE3B,IAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,gBAAA,EAAkB,CAAC,GAAG,OAAA,KAAY;AACnD,MAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA;AACjC,MAAA,IAAI,UAAU,MAAA,EAAW;AACvB,QAAA,MAAM,IAAI,KAAA,CAAM,CAAA,qBAAA,EAAwB,OAAO,CAAA,eAAA,CAAiB,CAAA;AAAA,MAClE;AACA,MAAA,OAAO,KAAA;AAAA,IACT,CAAC,CAAA;AAAA,EACH;AAEA,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,GAAG,CAAA,EAAG;AACtB,IAAA,OAAO,GAAA,CAAI,IAAI,kBAAkB,CAAA;AAAA,EACnC;AAEA,EAAA,IAAI,GAAA,KAAQ,IAAA,IAAQ,OAAO,GAAA,KAAQ,QAAA,EAAU;AAC3C,IAAA,MAAM,SAAkC,EAAC;AACzC,IAAA,KAAA,MAAW,CAAC,GAAA,EAAK,KAAK,KAAK,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,EAAG;AAC9C,MAAA,MAAA,CAAO,GAAG,CAAA,GAAI,kBAAA,CAAmB,KAAK,CAAA;AAAA,IACxC;AACA,IAAA,OAAO,MAAA;AAAA,EACT;AAEA,EAAA,OAAO,GAAA;AACT,CAAA;AAEA,IAAM,eAAA,GAAkB,CAAI,OAAA,EAAiB,MAAA,EAAoB,OAAA,KAAuB;AACtF,EAAA,IAAI,MAAA;AACJ,EAAA,IAAI;AACF,IAAA,MAAA,GAAS,MAAM,OAAO,CAAA;AAAA,EACxB,SAAS,KAAA,EAAO;AACd,IAAA,MAAM,UAAU,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,OAAO,KAAK,CAAA;AACrE,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,iBAAA,EAAoB,OAAO,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAA;AAAA,EAC3D;AAGA,EAAA,MAAM,YAAA,GAAe,mBAAmB,MAAM,CAAA;AAE9C,EAAA,MAAM,MAAA,GAAS,MAAA,CAAO,SAAA,CAAU,YAAY,CAAA;AAC5C,EAAA,IAAI,CAAC,OAAO,OAAA,EAAS;AACnB,IAAA,MAAM,IAAI,KAAA,CAAM,CAAA,QAAA,EAAW,OAAO,CAAA,EAAA,EAAK,aAAa,MAAA,CAAO,KAAA,CAAM,MAAM,CAAC,CAAA,CAAE,CAAA;AAAA,EAC5E;AAEA,EAAA,OAAO,MAAA,CAAO,IAAA;AAChB,CAAA;AAEO,IAAM,sBAAsB,CAAC,OAAA,KAClC,eAAA,CAAgB,OAAA,EAAS,sBAAsB,iBAAiB;AAE3D,IAAM,kBAAA,GAAqB,OAAO,QAAA,KAA8C;AACrF,EAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,QAAA,CAAS,UAAU,MAAM,CAAA;AACtD,EAAA,OAAO,oBAAoB,WAAW,CAAA;AACxC;AAEO,IAAM,2BAA2B,CAAC,OAAA,KACvC,eAAA,CAAgB,OAAA,EAAS,2BAA2B,QAAQ;AAEvD,IAAM,uBAAA,GAA0B,OAAO,QAAA,KAAmD;AAC/F,EAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,QAAA,CAAS,UAAU,MAAM,CAAA;AACtD,EAAA,OAAO,yBAAyB,WAAW,CAAA;AAC7C;AAEO,IAAM,0BAA0B,CAAC,OAAA,KACtC,eAAA,CAAgB,OAAA,EAAS,0BAA0B,qBAAqB;AAEnE,IAAM,sBAAA,GAAyB,OAAO,QAAA,KAAkD;AAC7F,EAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,QAAA,CAAS,UAAU,MAAM,CAAA;AACtD,EAAA,OAAO,wBAAwB,WAAW,CAAA;AAC5C;AAEO,IAAM,cAAA,GAAiB,CAAC,QAAA,KAA8B;AAC3D,EAAA,OAAO,SAAS,QAAA,CAAS,gBAAgB,CAAA,IAAK,QAAA,CAAS,SAAS,eAAe,CAAA;AACjF;AAMO,IAAM,cAAA,GAAiB,CAAC,QAAA,KAA8B;AAC3D,EAAA,OAAO,SAAS,QAAA,CAAS,gBAAgB,CAAA,IAAK,QAAA,CAAS,SAAS,eAAe,CAAA;AACjF;AAKO,IAAM,0BAA0B,CAAC,OAAA,KACtC,eAAA,CAAgB,OAAA,EAAS,0BAA0B,qBAAqB;AAKnE,IAAM,sBAAA,GAAyB,OAAO,QAAA,KAAkD;AAC7F,EAAA,MAAM,WAAA,GAAc,MAAM,EAAA,CAAG,QAAA,CAAS,UAAU,MAAM,CAAA;AACtD,EAAA,OAAO,wBAAwB,WAAW,CAAA;AAC5C;AAMO,IAAM,qBAAA,GAAwB,CAAC,GAAA,KAA2B;AAC/D,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,MAAM,OAAA,GAAU,CAAC,KAAA,KAAyB;AACxC,IAAA,IAAI,OAAO,UAAU,QAAA,EAAU;AAC7B,MAAA,MAAM,OAAA,GAAU,KAAA,CAAM,QAAA,CAAS,gBAAgB,CAAA;AAC/C,MAAA,KAAA,MAAW,SAAS,OAAA,EAAS;AAC3B,QAAA,MAAM,OAAA,GAAU,MAAM,CAAC,CAAA;AACvB,QAAA,IAAI,OAAA,CAAQ,IAAI,OAAO,CAAA,KAAM,UAAa,CAAC,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA,EAAG;AACpE,UAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AAAA,QACtB;AAAA,MACF;AAAA,IACF,CAAA,MAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EAAG;AAC/B,MAAA,KAAA,CAAM,QAAQ,OAAO,CAAA;AAAA,IACvB,CAAA,MAAA,IAAW,KAAA,KAAU,IAAA,IAAQ,OAAO,UAAU,QAAA,EAAU;AACtD,MAAA,MAAA,CAAO,MAAA,CAAO,KAAK,CAAA,CAAE,OAAA,CAAQ,OAAO,CAAA;AAAA,IACtC;AAAA,EACF,CAAA;AAEA,EAAA,OAAA,CAAQ,GAAG,CAAA;AACX,EAAA,OAAO,OAAA;AACT;AAKO,IAAM,iBAAA,GAAoB,CAAC,OAAA,KAA6B;AAC7D,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,OAAO,CAAA;AAC5B,IAAA,OAAO,MAAA,IAAU,KAAA,CAAM,OAAA,CAAQ,MAAA,CAAO,KAAK,KAAK,CAAC,MAAA,CAAO,KAAA,IAAS,CAAC,MAAA,CAAO,SAAA;AAAA,EAC3E,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF;AAKO,IAAM,iBAAA,GAAoB,CAAC,OAAA,KAA6B;AAC7D,EAAA,IAAI;AACF,IAAA,MAAM,MAAA,GAAS,MAAM,OAAO,CAAA;AAC5B,IAAA,OAAO,UAAU,KAAA,CAAM,OAAA,CAAQ,OAAO,SAAS,CAAA,IAAK,CAAC,MAAA,CAAO,KAAA;AAAA,EAC9D,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,KAAA;AAAA,EACT;AACF","file":"chunk-6GXSY4NF.js","sourcesContent":["import { z } from 'zod';\n\nconst nonEmptyString = z.string().trim().min(1, 'Value cannot be empty');\n\n// Transform empty strings to undefined for optional fields\nconst optionalString = z.preprocess(\n (val) => (typeof val === 'string' && val.trim() === '' ? undefined : val),\n z.string().trim().optional()\n);\n\n// Transform empty strings to undefined for optional URL fields\nconst optionalUrl = z.preprocess(\n (val) => (typeof val === 'string' && val.trim() === '' ? undefined : val),\n z.string().trim().url().optional()\n);\n\nconst trackSchema = z.object({\n type: nonEmptyString.describe('Tracked resource type (e.g., row, user, file)'),\n id: nonEmptyString.describe('Tracked resource ID'),\n includeStepContext: z.boolean().optional().describe('Include step context with tracked resource'),\n}).passthrough().describe('Optional tracking metadata for cleanup');\n\nconst trackableSchema = z.object({\n track: trackSchema.optional(),\n});\n\n// Error condition for immediate failure (no waiting)\nexport const errorIfSchema = z.enum(['not-found', 'not-visible', 'disabled', 'empty'])\n .describe('Fail immediately if this condition is met (no waiting)');\n\nexport const LocatorSchema = z\n .object({\n description: z.string().trim().optional().describe('AI-friendly description of the element to find'),\n testId: z.string().trim().optional().describe('data-testid attribute value'),\n text: z.string().trim().optional().describe('Visible text content'),\n css: z.string().trim().optional().describe('CSS selector'),\n xpath: z.string().trim().optional().describe('XPath selector'),\n role: z.string().trim().optional().describe('ARIA role'),\n name: z.string().trim().optional().describe('Accessible name'),\n })\n .describe('Defines how to locate an element on the page. At least one selector must be provided.')\n .refine(\n (locator) =>\n Boolean(\n locator.description ||\n locator.testId ||\n locator.text ||\n locator.css ||\n locator.xpath ||\n locator.role ||\n locator.name,\n ),\n { message: 'Locator requires at least one selector or description' },\n );\n\nconst navigateActionSchema = z.object({\n type: z.literal('navigate'),\n value: nonEmptyString.describe('URL or path to navigate to'),\n}).describe('Navigate to a URL');\n\nconst tapActionSchema = z.object({\n type: z.literal('tap'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Click or tap on an element');\n\nconst inputActionSchema = z.object({\n type: z.literal('input'),\n target: LocatorSchema,\n value: z.string().describe('Text to input (can reference variables with ${VAR_NAME})'),\n errorIf: errorIfSchema.optional(),\n}).describe('Input text into a field');\n\nconst clearActionSchema = z.object({\n type: z.literal('clear'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Clear the contents of an input field');\n\nconst hoverActionSchema = z.object({\n type: z.literal('hover'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Hover over an element');\n\nconst selectActionSchema = z.object({\n type: z.literal('select'),\n target: LocatorSchema,\n value: z.string().describe('Option value, label, or index to select'),\n errorIf: errorIfSchema.optional(),\n}).describe('Select an option from a dropdown');\n\nconst checkActionSchema = z.object({\n type: z.literal('check'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Check a checkbox');\n\nconst uncheckActionSchema = z.object({\n type: z.literal('uncheck'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Uncheck a checkbox');\n\nconst pressActionSchema = z.object({\n type: z.literal('press'),\n key: nonEmptyString.describe('Key to press (e.g., Enter, Tab, Escape, ArrowDown)'),\n target: LocatorSchema.optional().describe('Element to focus before pressing key'),\n errorIf: errorIfSchema.optional(),\n}).describe('Press a keyboard key');\n\nconst focusActionSchema = z.object({\n type: z.literal('focus'),\n target: LocatorSchema,\n errorIf: errorIfSchema.optional(),\n}).describe('Focus an element');\n\nconst assertActionSchema = z.object({\n type: z.literal('assert'),\n target: LocatorSchema,\n value: z.string().optional().describe('Expected text content'),\n errorIf: errorIfSchema.optional(),\n}).describe('Assert that an element exists or contains expected text');\n\nconst waitActionSchema = z\n .object({\n type: z.literal('wait'),\n target: LocatorSchema.optional().describe('Element to wait for'),\n timeout: z.number().int().positive().optional().describe('Time to wait in milliseconds'),\n errorIf: errorIfSchema.optional(),\n })\n .describe('Wait for an element or timeout')\n .refine((action) => action.target || action.timeout, {\n message: 'wait requires a target or timeout',\n });\n\nconst scrollActionSchema = z.object({\n type: z.literal('scroll'),\n target: LocatorSchema.optional().describe('Element to scroll'),\n direction: z.enum(['up', 'down']).optional().describe('Direction to scroll'),\n amount: z.number().int().positive().optional().describe('Amount to scroll in pixels'),\n errorIf: errorIfSchema.optional(),\n}).describe('Scroll the page or an element');\n\nconst screenshotActionSchema = z.object({\n type: z.literal('screenshot'),\n name: z.string().optional().describe('Name for the screenshot file'),\n waitBefore: z.number().int().nonnegative().optional().describe('Milliseconds to wait before capturing for visual stability (default: 500)'),\n}).describe('Take a screenshot');\n\nconst setVarActionSchema = z.object({\n type: z.literal('setVar'),\n name: nonEmptyString.describe('Variable name to set'),\n value: z.string().optional().describe('Static value to set'),\n from: z.enum(['response', 'element', 'email']).optional().describe('Extract value from a source'),\n path: z.string().optional().describe('JSON path or selector for extraction'),\n pattern: z.string().optional().describe('Regular expression pattern for extraction'),\n}).describe('Set a variable for use in later steps');\n\nconst emailWaitForActionSchema = z.object({\n type: z.literal('email.waitFor'),\n mailbox: nonEmptyString.describe('Email address or mailbox to check'),\n timeout: z.number().int().positive().optional().describe('How long to wait for email in milliseconds'),\n subjectContains: z.string().optional().describe('Filter by email subject'),\n}).describe('Wait for an email to arrive');\n\nconst emailExtractCodeActionSchema = z.object({\n type: z.literal('email.extractCode'),\n saveTo: nonEmptyString.describe('Variable name to save the extracted code'),\n pattern: z.string().optional().describe('Regular expression to extract code'),\n}).describe('Extract a verification code from email');\n\nconst emailExtractLinkActionSchema = z.object({\n type: z.literal('email.extractLink'),\n saveTo: nonEmptyString.describe('Variable name to save the extracted link'),\n pattern: z.string().optional().describe('Regular expression to match specific links'),\n}).describe('Extract a link from email');\n\nconst emailClearActionSchema = z.object({\n type: z.literal('email.clear'),\n mailbox: nonEmptyString.describe('Email address or mailbox to clear'),\n}).describe('Clear emails from a mailbox');\n\nconst appwriteVerifyEmailActionSchema = z.object({\n type: z.literal('appwrite.verifyEmail'),\n}).describe('Verify email using Appwrite');\n\nconst debugActionSchema = z.object({\n type: z.literal('debug'),\n}).describe('Pause execution and open Playwright Inspector for debugging');\n\nconst waitForSelectorActionSchema = z.object({\n type: z.literal('waitForSelector'),\n target: LocatorSchema,\n state: z.enum(['enabled', 'disabled', 'visible', 'hidden', 'attached', 'detached'])\n .describe('Element state to wait for'),\n timeout: z.number().int().positive().optional()\n .describe('Time to wait in milliseconds'),\n errorIf: errorIfSchema.optional(),\n}).describe('Wait for an element to reach a specific state');\n\nconst failActionSchema = z.object({\n type: z.literal('fail'),\n message: nonEmptyString.describe('Error message to display when test fails'),\n}).describe('Explicitly fail the test with a custom message');\n\n// Base action schema without conditional (used for nested steps in conditional)\nconst BaseActionSchema = z.discriminatedUnion('type', [\n navigateActionSchema,\n tapActionSchema,\n inputActionSchema,\n clearActionSchema,\n hoverActionSchema,\n selectActionSchema,\n checkActionSchema,\n uncheckActionSchema,\n pressActionSchema,\n focusActionSchema,\n assertActionSchema,\n waitActionSchema,\n scrollActionSchema,\n screenshotActionSchema,\n setVarActionSchema,\n emailWaitForActionSchema,\n emailExtractCodeActionSchema,\n emailExtractLinkActionSchema,\n emailClearActionSchema,\n appwriteVerifyEmailActionSchema,\n debugActionSchema,\n waitForSelectorActionSchema,\n failActionSchema,\n]);\n\nconst TrackableBaseActionSchema = z.intersection(BaseActionSchema, trackableSchema);\n\nconst conditionalActionSchema = z.intersection(z.object({\n type: z.literal('conditional'),\n condition: z.object({\n type: z.enum(['exists', 'notExists', 'visible', 'hidden']),\n target: LocatorSchema,\n }).describe('Condition to check'),\n then: z.array(TrackableBaseActionSchema).describe('Steps to execute if condition is true'),\n else: z.array(TrackableBaseActionSchema).optional().describe('Steps to execute if condition is false'),\n}).describe('Execute steps conditionally based on element state'), trackableSchema);\n\n// Branch definition - can be inline actions OR a workflow file reference\nconst branchSchema = z.union([\n z.array(TrackableBaseActionSchema), // Inline actions\n z.object({\n workflow: z.string().trim().min(1).describe('Path to workflow file relative to current file'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables to pass to the workflow'),\n }),\n]).describe('Actions to execute - either inline steps or a workflow file reference');\n\nconst waitForBranchActionSchema = z.intersection(z.object({\n type: z.literal('waitForBranch'),\n target: LocatorSchema.describe('Element to wait for'),\n timeout: z.number().int().positive().optional().describe('Maximum time to wait for element in milliseconds (default: 30000)'),\n state: z.enum(['visible', 'attached', 'enabled']).optional().describe('Element state to wait for (default: visible)'),\n onAppear: branchSchema.describe('Actions to execute when element appears within timeout'),\n onTimeout: branchSchema.optional().describe('Actions to execute if timeout occurs (silent continue if omitted)'),\n pollInterval: z.number().int().positive().optional().describe('How often to check for element in milliseconds (default: 100)'),\n}).describe('Wait for an element and branch based on whether it appears or times out'), trackableSchema);\n\nexport const ActionSchema = z.union([TrackableBaseActionSchema, conditionalActionSchema, waitForBranchActionSchema]);\n\nconst defaultsSchema = z.object({\n timeout: z.number().int().positive().optional().describe('Default timeout in milliseconds for all actions'),\n screenshots: z.enum(['on-failure', 'always', 'never']).optional().describe('When to capture screenshots during test execution'),\n}).describe('Default settings that apply to all tests unless overridden');\n\nconst webConfigSchema = z.object({\n baseUrl: optionalUrl.describe('Base URL for the web application'),\n browser: z.string().trim().optional().describe('Browser to use for testing'),\n headless: z.boolean().optional().describe('Run browser in headless mode'),\n timeout: z.number().int().positive().optional().describe('Timeout in milliseconds for web actions'),\n}).describe('Web platform configuration');\n\nconst androidConfigSchema = z.object({\n appId: z.string().trim().optional().describe('Android application ID'),\n device: z.string().trim().optional().describe('Device name or ID to run tests on'),\n}).describe('Android platform configuration');\n\nconst iosConfigSchema = z.object({\n bundleId: z.string().trim().optional().describe('iOS bundle identifier'),\n simulator: z.string().trim().optional().describe('Simulator name to run tests on'),\n}).describe('iOS platform configuration');\n\nconst emailConfigSchema = z.object({\n provider: z.literal('inbucket').describe('Email testing provider'),\n endpoint: optionalUrl.describe('Email service endpoint URL'),\n}).describe('Email testing configuration');\n\nconst appwriteConfigSchema = z.object({\n endpoint: nonEmptyString.url().describe('Appwrite API endpoint'),\n projectId: nonEmptyString.describe('Appwrite project ID'),\n apiKey: nonEmptyString.describe('Appwrite API key with appropriate permissions'),\n cleanup: z.boolean().optional().describe('Enable automatic cleanup of created resources'),\n cleanupOnFailure: z.boolean().optional().describe('Clean up resources even when test fails'),\n}).describe('Appwrite backend configuration');\n\nconst healingSchema = z.object({\n enabled: z.boolean().optional().describe('Enable self-healing capabilities'),\n strategies: z.array(z.string().trim()).optional().describe('Healing strategies to use'),\n}).describe('Self-healing test configuration');\n\nconst webServerSchema = z\n .object({\n command: nonEmptyString.optional().describe('Command to start the web server'),\n auto: z.boolean().optional().describe('Automatically detect and run the dev server from package.json'),\n static: z.string().optional().describe('Serve a static directory instead of running a command'),\n url: nonEmptyString.url().describe('URL to wait for before starting tests'),\n port: z.number().int().positive().optional().describe('Port number for the web server'),\n reuseExistingServer: z.boolean().default(true).describe('Use existing server if already running at the specified URL'),\n timeout: z.number().int().positive().default(30000).describe('Timeout in milliseconds to wait for server to become available'),\n workdir: z.string().optional().describe('Working directory for the server command'),\n cwd: z.string().optional().describe('Deprecated: use workdir instead'),\n })\n .describe('Configuration for starting a web server before running tests')\n .refine((config) => config.command || config.auto || config.static, {\n message: 'WebServerConfig requires command, auto: true, or static directory',\n });\n\nconst aiSourceSchema = z.object({\n pagesDir: z.string().optional().describe('Directory containing page components'),\n componentsDir: z.string().optional().describe('Directory containing reusable components'),\n extensions: z.array(z.string()).default(['.vue', '.astro', '.tsx', '.jsx', '.svelte']).describe('File extensions to include in source code analysis'),\n}).optional().describe('Source code directories for AI to analyze when generating tests');\n\nconst aiConfigSchema = z.object({\n provider: z.enum(['anthropic', 'openai', 'ollama']).describe('AI provider to use for test generation'),\n model: nonEmptyString.describe('Model name to use'),\n apiKey: z.string().trim().optional().describe('API key for the AI provider'),\n baseUrl: optionalUrl.describe('Base URL for the AI API (required for Ollama)'),\n temperature: z.number().min(0).max(2).default(0.2).describe('Temperature for AI generation (0 = deterministic, 2 = very creative)'),\n maxTokens: z.number().int().positive().default(4096).describe('Maximum tokens for AI responses'),\n source: aiSourceSchema,\n}).describe('AI configuration for test generation and healing');\n\n// Cleanup discovery configuration\nexport const cleanupDiscoverSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable auto-discovery of cleanup handlers in specified paths'),\n paths: z.array(z.string()).default(['./tests/cleanup']).describe('Directories to search for cleanup handler files'),\n pattern: z.string().default('**/*.ts').describe('Glob pattern to match handler files'),\n}).optional().describe('Auto-discovery configuration for cleanup handlers');\n\n// Main cleanup configuration\nexport const cleanupConfigSchema = z.object({\n provider: z.string().optional().describe('Primary cleanup provider to use'),\n parallel: z.boolean().default(false).describe('Execute cleanup operations in parallel'),\n retries: z.number().min(1).max(10).default(3).describe('Number of retry attempts for failed cleanup operations'),\n types: z.record(z.string(), z.string()).optional().describe('Map resource types to cleanup handler methods'),\n handlers: z.array(z.string()).optional().describe('Explicit paths to custom cleanup handler files'),\n discover: cleanupDiscoverSchema,\n scanUntracked: z.boolean().optional().describe('Scan for untracked resources using provider heuristics'),\n}).passthrough().describe('Comprehensive resource cleanup configuration'); // Allow provider-specific configs like appwrite: {...}\n\n// Export the inferred type\nexport type CleanupConfig = z.infer<typeof cleanupConfigSchema>;\n\nconst platformsSchema = z.object({\n web: webConfigSchema.optional(),\n android: androidConfigSchema.optional(),\n ios: iosConfigSchema.optional(),\n}).describe('Platform-specific configurations');\n\n// Preview configuration for --preview flag\nexport const previewConfigSchema = z.object({\n build: z.object({\n command: z.string().optional().describe('Command to build the project'),\n }).optional().describe('Build configuration'),\n preview: z.object({\n command: z.string().optional().describe('Command to start the preview server after build'),\n }).optional().describe('Preview server configuration'),\n url: optionalUrl.describe('URL to wait for before starting tests'),\n timeout: z.number().int().positive().optional().describe('Timeout in milliseconds to wait for preview server'),\n}).describe('Configuration for the --preview flag (build and serve production build)');\n\nexport const TestConfigSchema = z.object({\n defaults: defaultsSchema.optional(),\n web: webConfigSchema.optional(),\n android: androidConfigSchema.optional(),\n ios: iosConfigSchema.optional(),\n email: emailConfigSchema.optional(),\n appwrite: appwriteConfigSchema.optional(),\n}).describe('Test-specific configuration that overrides global settings');\n\nexport const TestDefinitionSchema = z.object({\n name: nonEmptyString.describe('The name of the test'),\n platform: z.enum(['web', 'android', 'ios']).describe('The platform to run the test on'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables that can be referenced in test steps using ${VARIABLE_NAME} syntax'),\n config: TestConfigSchema.optional(),\n steps: z.array(ActionSchema).min(1).describe('The sequence of actions to execute in this test'),\n}).describe('Schema for IntelliTester test definition files');\n\nexport const IntellitesterConfigSchema = z.object({\n defaults: defaultsSchema.optional(),\n ai: aiConfigSchema.optional(),\n platforms: platformsSchema.optional(),\n healing: healingSchema.optional(),\n email: emailConfigSchema.optional(),\n appwrite: appwriteConfigSchema.optional(),\n cleanup: cleanupConfigSchema.optional(),\n webServer: webServerSchema.optional(),\n preview: previewConfigSchema.optional(),\n secrets: z.record(z.string(), z.string().trim()).optional().describe('Secret values that can be referenced in tests'),\n}).describe('Global configuration file for IntelliTester');\n","import { z } from 'zod';\n\nconst nonEmptyString = z.string().trim().min(1, 'Value cannot be empty');\n\n// Reference to a test file in the workflow\nconst testReferenceSchema = z.object({\n file: nonEmptyString.describe('Path to the test file relative to the workflow file'),\n id: nonEmptyString.optional().describe('Optional ID for referencing this test in variables or dependencies'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables to inject or override for this specific test'),\n}).describe('Reference to a test file');\n\n// Workflow-specific web config\nconst workflowWebConfigSchema = z.object({\n baseUrl: nonEmptyString.url().optional().describe('Base URL for all tests in this workflow'),\n browser: z.enum(['chromium', 'firefox', 'webkit']).optional().describe('Browser to use for all web tests'),\n headless: z.boolean().optional().describe('Run browser in headless mode'),\n testSizes: z.array(z.enum(['xs', 'sm', 'md', 'lg', 'xl'])).optional()\n .describe('Viewport sizes to test (Tailwind breakpoints). Tests run once per size.'),\n}).describe('Web platform configuration for the workflow');\n\n// Workflow-specific Appwrite config\nconst workflowAppwriteConfigSchema = z.object({\n endpoint: nonEmptyString.url().describe('Appwrite API endpoint'),\n projectId: nonEmptyString.describe('Appwrite project ID'),\n apiKey: nonEmptyString.describe('Appwrite API key'),\n cleanup: z.boolean().default(true).describe('Enable automatic cleanup of created resources'),\n cleanupOnFailure: z.boolean().default(true).describe('Clean up resources even when tests fail'),\n}).describe('Appwrite backend configuration for the workflow');\n\n// Cleanup discovery configuration for workflows\nconst workflowCleanupDiscoverSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable auto-discovery of cleanup handlers'),\n paths: z.array(z.string()).default(['./tests/cleanup']).describe('Directories to search for cleanup handlers'),\n pattern: z.string().default('**/*.ts').describe('Glob pattern for handler files'),\n}).optional().describe('Auto-discovery configuration for cleanup handlers');\n\n// Workflow cleanup configuration\nconst workflowCleanupConfigSchema = z.object({\n provider: z.string().optional().describe('Cleanup provider to use'),\n parallel: z.boolean().default(false).describe('Run cleanup tasks in parallel'),\n retries: z.number().min(1).max(10).default(3).describe('Number of retry attempts for failed cleanup operations'),\n types: z.record(z.string(), z.string()).optional().describe('Map resource types to cleanup handler methods'),\n handlers: z.array(z.string()).optional().describe('Explicit paths to custom cleanup handler files'),\n discover: workflowCleanupDiscoverSchema,\n scanUntracked: z.boolean().optional().describe('Scan for untracked resources using provider heuristics'),\n}).passthrough().describe('Resource cleanup configuration'); // Allow provider-specific configs like appwrite: {...}\n\n// Workflow-specific web server config\nconst workflowWebServerSchema = z.object({\n command: nonEmptyString.optional().describe('Command to start the web server'),\n auto: z.boolean().optional().describe('Auto-detect server start command from package.json'),\n url: nonEmptyString.url().describe('URL to wait for before starting tests'),\n reuseExistingServer: z.boolean().default(true).describe('Use existing server if already running at the URL'),\n timeout: z.number().int().positive().default(30000).describe('Timeout in milliseconds to wait for server to start'),\n workdir: nonEmptyString.optional().describe('Working directory for the web server command'),\n cwd: nonEmptyString.optional().describe('Deprecated: use workdir instead'),\n}).describe('Configuration for starting a web server before tests');\n\n// Workflow configuration\nconst workflowConfigSchema = z.object({\n web: workflowWebConfigSchema.optional(),\n appwrite: workflowAppwriteConfigSchema.optional(),\n cleanup: workflowCleanupConfigSchema.optional(),\n webServer: workflowWebServerSchema.optional(),\n}).describe('Workflow-level configuration that applies to all tests');\n\n// Main workflow definition schema\nexport const WorkflowDefinitionSchema = z.object({\n name: nonEmptyString.describe('The name of the workflow'),\n platform: z.enum(['web', 'android', 'ios']).default('web').describe('The platform to run the workflow on'),\n variables: z.record(z.string(), z.string()).optional().describe('Workflow-level variables available to all tests'),\n config: workflowConfigSchema.optional(),\n continueOnFailure: z.boolean().default(false).describe('Continue running subsequent tests even if a test fails'),\n tests: z.array(testReferenceSchema).min(1, 'Workflow must contain at least one test').describe('List of test files to execute in this workflow'),\n}).describe('Schema for IntelliTester workflow files that orchestrate multiple tests');\n\n// Export inferred types\nexport type WorkflowDefinition = z.infer<typeof WorkflowDefinitionSchema>;\nexport type TestReference = z.infer<typeof testReferenceSchema>;\nexport type WorkflowConfig = z.infer<typeof workflowConfigSchema>;\nexport type WorkflowWebConfig = z.infer<typeof workflowWebConfigSchema>;\nexport type WorkflowAppwriteConfig = z.infer<typeof workflowAppwriteConfigSchema>;\nexport type WorkflowCleanupConfig = z.infer<typeof workflowCleanupConfigSchema>;\nexport type WorkflowWebServerConfig = z.infer<typeof workflowWebServerSchema>;\n","import { z } from 'zod';\n\nconst nonEmptyString = z.string().trim().min(1, 'Value cannot be empty');\n\n// Workflow reference within a pipeline\nconst workflowReferenceSchema = z.object({\n file: nonEmptyString.describe('Path to the workflow file'),\n id: nonEmptyString.optional().describe('Optional ID for referencing this workflow in dependencies'),\n depends_on: z.array(nonEmptyString).optional().describe('IDs of workflows that must complete before this one'),\n on_failure: z.enum(['skip', 'fail', 'ignore']).optional().describe('How to handle failure of this workflow'),\n variables: z.record(z.string(), z.string()).optional().describe('Variables to inject or override for this workflow'),\n}).describe('Reference to a workflow file');\n\n// Pipeline-specific web config (matches workflow web config pattern)\nconst pipelineWebConfigSchema = z.object({\n baseUrl: nonEmptyString.url().optional().describe('Base URL for all workflows in this pipeline'),\n browser: z.enum(['chromium', 'firefox', 'webkit']).optional().describe('Browser to use for all web tests'),\n headless: z.boolean().optional().describe('Run browser in headless mode'),\n testSizes: z.array(z.enum(['xs', 'sm', 'md', 'lg', 'xl'])).optional()\n .describe('Viewport sizes to test (Tailwind breakpoints). Tests run once per size.'),\n}).describe('Web platform configuration for the pipeline');\n\n// Pipeline-specific Appwrite config\nconst pipelineAppwriteConfigSchema = z.object({\n endpoint: nonEmptyString.url().describe('Appwrite API endpoint'),\n projectId: nonEmptyString.describe('Appwrite project ID'),\n apiKey: nonEmptyString.describe('Appwrite API key'),\n cleanup: z.boolean().default(true).describe('Enable automatic cleanup of created resources'),\n cleanupOnFailure: z.boolean().default(true).describe('Clean up resources even when workflows fail'),\n}).describe('Appwrite backend configuration for the pipeline');\n\n// Pipeline cleanup discovery configuration\nconst pipelineCleanupDiscoverSchema = z.object({\n enabled: z.boolean().default(true).describe('Enable auto-discovery of cleanup handlers'),\n paths: z.array(z.string()).default(['./tests/cleanup']).describe('Directories to search for cleanup handlers'),\n pattern: z.string().default('**/*.ts').describe('Glob pattern for handler files'),\n}).optional().describe('Auto-discovery configuration for cleanup handlers');\n\n// Pipeline cleanup configuration\nconst pipelineCleanupConfigSchema = z.object({\n provider: z.string().optional().describe('Cleanup provider to use'),\n parallel: z.boolean().default(false).describe('Run cleanup tasks in parallel'),\n retries: z.number().min(1).max(10).default(3).describe('Number of retry attempts for failed cleanup operations'),\n types: z.record(z.string(), z.string()).optional().describe('Map resource types to cleanup handler methods'),\n handlers: z.array(z.string()).optional().describe('Explicit paths to custom cleanup handler files'),\n discover: pipelineCleanupDiscoverSchema,\n scanUntracked: z.boolean().optional().describe('Scan for untracked resources using provider heuristics'),\n on_failure: z.boolean().default(true).describe('Run cleanup even if pipeline fails'),\n}).passthrough().describe('Resource cleanup configuration'); // Allow provider-specific configs like appwrite: {...}\n\n// Pipeline-specific web server config\nconst pipelineWebServerSchema = z.object({\n command: nonEmptyString.optional().describe('Command to start the web server'),\n auto: z.boolean().optional().describe('Auto-detect server start command from package.json'),\n url: nonEmptyString.url().describe('URL to wait for before starting workflows'),\n reuseExistingServer: z.boolean().default(true).describe('Use existing server if already running at the URL'),\n timeout: z.number().int().positive().default(30000).describe('Timeout in milliseconds to wait for server to start'),\n workdir: nonEmptyString.optional().describe('Working directory for the web server command'),\n cwd: nonEmptyString.optional().describe('Deprecated: use workdir instead'),\n}).describe('Configuration for starting a web server before workflows');\n\n// Pipeline configuration (similar to workflow config)\nconst pipelineConfigSchema = z.object({\n web: pipelineWebConfigSchema.optional(),\n appwrite: pipelineAppwriteConfigSchema.optional(),\n cleanup: pipelineCleanupConfigSchema.optional(),\n webServer: pipelineWebServerSchema.optional(),\n}).describe('Pipeline-level configuration that applies to all workflows');\n\n// Main pipeline definition schema\nexport const PipelineDefinitionSchema = z.object({\n name: nonEmptyString.describe('The name of the pipeline'),\n platform: z.enum(['web', 'android', 'ios']).default('web').describe('The platform to run the pipeline on'),\n config: pipelineConfigSchema.optional(),\n on_failure: z.enum(['skip', 'fail', 'ignore']).default('skip').describe('Default failure handling for workflows'),\n cleanup_on_failure: z.boolean().default(true).describe('Run cleanup even when pipeline fails'),\n workflows: z.array(workflowReferenceSchema).min(1, 'Pipeline must contain at least one workflow').describe('List of workflow files to execute in this pipeline'),\n}).describe('Schema for IntelliTester pipeline files that orchestrate multiple workflows');\n\n// Export inferred types\nexport type PipelineDefinition = z.infer<typeof PipelineDefinitionSchema>;\nexport type WorkflowReference = z.infer<typeof workflowReferenceSchema>;\nexport type PipelineConfig = z.infer<typeof pipelineConfigSchema>;\nexport type PipelineWebConfig = z.infer<typeof pipelineWebConfigSchema>;\nexport type PipelineAppwriteConfig = z.infer<typeof pipelineAppwriteConfigSchema>;\nexport type PipelineCleanupConfig = z.infer<typeof pipelineCleanupConfigSchema>;\nexport type PipelineWebServerConfig = z.infer<typeof pipelineWebServerSchema>;\n","import fs from 'node:fs/promises';\n\nimport type { ZodIssue, ZodType } from 'zod';\nimport { parse } from 'yaml';\n\nimport { IntellitesterConfigSchema, TestDefinitionSchema } from './schema';\nimport type { IntellitesterConfig, TestDefinition } from './types';\nimport { WorkflowDefinitionSchema, type WorkflowDefinition } from './workflowSchema';\nimport { PipelineDefinitionSchema, type PipelineDefinition } from './pipelineSchema';\n\nconst formatIssues = (issues: ZodIssue[]): string =>\n issues\n .map((issue) => {\n const path = issue.path.join('.') || '<root>';\n return `${path}: ${issue.message}`;\n })\n .join('; ');\n\n/**\n * Interpolates environment variables in a parsed YAML object.\n * Recursively replaces ${VAR_NAME} patterns with environment variable values.\n */\nconst interpolateEnvVars = (obj: unknown): unknown => {\n if (typeof obj === 'string') {\n // Replace ${VAR_NAME} with environment variable value\n return obj.replace(/\\$\\{([^}]+)\\}/g, (_, varName) => {\n const value = process.env[varName];\n if (value === undefined) {\n throw new Error(`Environment variable ${varName} is not defined`);\n }\n return value;\n });\n }\n\n if (Array.isArray(obj)) {\n return obj.map(interpolateEnvVars);\n }\n\n if (obj !== null && typeof obj === 'object') {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n result[key] = interpolateEnvVars(value);\n }\n return result;\n }\n\n return obj;\n};\n\nconst parseWithSchema = <T>(content: string, schema: ZodType<T>, subject: string): T => {\n let parsed: unknown;\n try {\n parsed = parse(content);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid YAML for ${subject}: ${message}`);\n }\n\n // Interpolate environment variables in the parsed content\n const interpolated = interpolateEnvVars(parsed);\n\n const result = schema.safeParse(interpolated);\n if (!result.success) {\n throw new Error(`Invalid ${subject}: ${formatIssues(result.error.issues)}`);\n }\n\n return result.data;\n};\n\nexport const parseTestDefinition = (content: string): TestDefinition =>\n parseWithSchema(content, TestDefinitionSchema, 'test definition');\n\nexport const loadTestDefinition = async (filePath: string): Promise<TestDefinition> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseTestDefinition(fileContent);\n};\n\nexport const parseIntellitesterConfig = (content: string): IntellitesterConfig =>\n parseWithSchema(content, IntellitesterConfigSchema, 'config');\n\nexport const loadIntellitesterConfig = async (filePath: string): Promise<IntellitesterConfig> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseIntellitesterConfig(fileContent);\n};\n\nexport const parseWorkflowDefinition = (content: string): WorkflowDefinition =>\n parseWithSchema(content, WorkflowDefinitionSchema, 'workflow definition');\n\nexport const loadWorkflowDefinition = async (filePath: string): Promise<WorkflowDefinition> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parseWorkflowDefinition(fileContent);\n};\n\nexport const isWorkflowFile = (filePath: string): boolean => {\n return filePath.endsWith('.workflow.yaml') || filePath.endsWith('.workflow.yml');\n};\n\n/**\n * Check if a file is a pipeline file based on naming convention.\n * Pipeline files end with .pipeline.yaml or .pipeline.yml\n */\nexport const isPipelineFile = (filePath: string): boolean => {\n return filePath.endsWith('.pipeline.yaml') || filePath.endsWith('.pipeline.yml');\n};\n\n/**\n * Parse pipeline definition from string content.\n */\nexport const parsePipelineDefinition = (content: string): PipelineDefinition =>\n parseWithSchema(content, PipelineDefinitionSchema, 'pipeline definition');\n\n/**\n * Load and validate a pipeline definition from a YAML file.\n */\nexport const loadPipelineDefinition = async (filePath: string): Promise<PipelineDefinition> => {\n const fileContent = await fs.readFile(filePath, 'utf8');\n return parsePipelineDefinition(fileContent);\n};\n\n/**\n * Recursively collects all environment variable names that are referenced\n * but not defined in the process environment.\n */\nexport const collectMissingEnvVars = (obj: unknown): string[] => {\n const missing: string[] = [];\n\n const collect = (value: unknown): void => {\n if (typeof value === 'string') {\n const matches = value.matchAll(/\\$\\{([^}]+)\\}/g);\n for (const match of matches) {\n const varName = match[1];\n if (process.env[varName] === undefined && !missing.includes(varName)) {\n missing.push(varName);\n }\n }\n } else if (Array.isArray(value)) {\n value.forEach(collect);\n } else if (value !== null && typeof value === 'object') {\n Object.values(value).forEach(collect);\n }\n };\n\n collect(obj);\n return missing;\n};\n\n/**\n * Detect if YAML content is a workflow by checking for 'tests' array.\n */\nexport const isWorkflowContent = (content: string): boolean => {\n try {\n const parsed = parse(content);\n return parsed && Array.isArray(parsed.tests) && !parsed.steps && !parsed.workflows;\n } catch {\n return false;\n }\n};\n\n/**\n * Detect if YAML content is a pipeline by checking for 'workflows' array.\n */\nexport const isPipelineContent = (content: string): boolean => {\n try {\n const parsed = parse(content);\n return parsed && Array.isArray(parsed.workflows) && !parsed.steps;\n } catch {\n return false;\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4GGDKFY2_cjs = require('./chunk-4GGDKFY2.cjs');
|
|
4
4
|
var chunkYNHXOSMZ_cjs = require('./chunk-YNHXOSMZ.cjs');
|
|
5
5
|
var chunk2ZSINOCK_cjs = require('./chunk-2ZSINOCK.cjs');
|
|
6
6
|
var uniqueNamesGenerator = require('unique-names-generator');
|
|
@@ -1370,7 +1370,8 @@ var WebServerManager = class _WebServerManager {
|
|
|
1370
1370
|
if (!reuseExistingServer) {
|
|
1371
1371
|
throw new Error(`Port ${new URL(url).port} is already in use by another process`);
|
|
1372
1372
|
}
|
|
1373
|
-
console.
|
|
1373
|
+
console.log(`Reusing existing server at ${url}`);
|
|
1374
|
+
return null;
|
|
1374
1375
|
}
|
|
1375
1376
|
let command;
|
|
1376
1377
|
if (config.command) {
|
|
@@ -2100,7 +2101,7 @@ async function executeActionWithRetry(page, action, index, options) {
|
|
|
2100
2101
|
});
|
|
2101
2102
|
}
|
|
2102
2103
|
} else {
|
|
2103
|
-
const { loadWorkflowDefinition, loadTestDefinition: loadTestDefinition2 } = await import('./loader-
|
|
2104
|
+
const { loadWorkflowDefinition, loadTestDefinition: loadTestDefinition2 } = await import('./loader-YECKFAL7.cjs');
|
|
2104
2105
|
const workflowPath = path4__namespace.default.resolve(process.cwd(), branchToExecute.workflow);
|
|
2105
2106
|
const workflowDir = path4__namespace.default.dirname(workflowPath);
|
|
2106
2107
|
if (debugMode) {
|
|
@@ -2689,9 +2690,17 @@ async function runTestInWorkflow(test, page, context, options, _workflowDir, wor
|
|
|
2689
2690
|
switch (action.type) {
|
|
2690
2691
|
case "navigate": {
|
|
2691
2692
|
const interpolated = interpolate(action.value);
|
|
2692
|
-
const baseUrl = test.config?.web?.baseUrl
|
|
2693
|
+
const baseUrl = test.config?.web?.baseUrl || workflowBaseUrl;
|
|
2693
2694
|
const target = resolveUrl2(interpolated, baseUrl);
|
|
2694
|
-
if (debugMode)
|
|
2695
|
+
if (debugMode) {
|
|
2696
|
+
console.log(` [DEBUG] Navigate step:`);
|
|
2697
|
+
console.log(` [DEBUG] - action.value: ${action.value}`);
|
|
2698
|
+
console.log(` [DEBUG] - interpolated: ${interpolated}`);
|
|
2699
|
+
console.log(` [DEBUG] - test.config?.web?.baseUrl: ${test.config?.web?.baseUrl ?? "(undefined)"}`);
|
|
2700
|
+
console.log(` [DEBUG] - workflowBaseUrl: ${workflowBaseUrl ?? "(undefined)"}`);
|
|
2701
|
+
console.log(` [DEBUG] - effective baseUrl: ${baseUrl ?? "(undefined)"}`);
|
|
2702
|
+
console.log(` [DEBUG] - target: ${target}`);
|
|
2703
|
+
}
|
|
2695
2704
|
await page.goto(target);
|
|
2696
2705
|
break;
|
|
2697
2706
|
}
|
|
@@ -3041,7 +3050,7 @@ async function runTestInWorkflow(test, page, context, options, _workflowDir, wor
|
|
|
3041
3050
|
switch (nestedAction.type) {
|
|
3042
3051
|
case "navigate": {
|
|
3043
3052
|
const interpolated = interpolate(nestedAction.value);
|
|
3044
|
-
const baseUrl = test.config?.web?.baseUrl
|
|
3053
|
+
const baseUrl = test.config?.web?.baseUrl || workflowBaseUrl;
|
|
3045
3054
|
const target = resolveUrl2(interpolated, baseUrl);
|
|
3046
3055
|
await page.goto(target);
|
|
3047
3056
|
break;
|
|
@@ -3126,7 +3135,7 @@ async function runTestInWorkflow(test, page, context, options, _workflowDir, wor
|
|
|
3126
3135
|
if (debugMode) {
|
|
3127
3136
|
console.log(` [DEBUG] waitForBranch: loading workflow from ${workflowPath}`);
|
|
3128
3137
|
}
|
|
3129
|
-
const { loadWorkflowDefinition } = await import('./loader-
|
|
3138
|
+
const { loadWorkflowDefinition } = await import('./loader-YECKFAL7.cjs');
|
|
3130
3139
|
const nestedWorkflow = await loadWorkflowDefinition(workflowPath);
|
|
3131
3140
|
if (branch.variables) {
|
|
3132
3141
|
for (const [key, value] of Object.entries(branch.variables)) {
|
|
@@ -3136,7 +3145,7 @@ async function runTestInWorkflow(test, page, context, options, _workflowDir, wor
|
|
|
3136
3145
|
}
|
|
3137
3146
|
for (const testRef of nestedWorkflow.tests) {
|
|
3138
3147
|
const testFilePath = path4__namespace.default.resolve(path4__namespace.default.dirname(workflowPath), testRef.file);
|
|
3139
|
-
const nestedTest = await
|
|
3148
|
+
const nestedTest = await chunk4GGDKFY2_cjs.loadTestDefinition(testFilePath);
|
|
3140
3149
|
if (nestedTest.variables) {
|
|
3141
3150
|
for (const [key, value] of Object.entries(nestedTest.variables)) {
|
|
3142
3151
|
const interpolated = interpolateVariables(value, context.variables);
|
|
@@ -3398,7 +3407,7 @@ Starting workflow: ${workflow.name}`);
|
|
|
3398
3407
|
console.log(` Test ID: ${testRef.id}`);
|
|
3399
3408
|
}
|
|
3400
3409
|
try {
|
|
3401
|
-
const test = await
|
|
3410
|
+
const test = await chunk4GGDKFY2_cjs.loadTestDefinition(testFilePath);
|
|
3402
3411
|
if (testRef.variables) {
|
|
3403
3412
|
for (const [key, value] of Object.entries(testRef.variables)) {
|
|
3404
3413
|
const interpolated = interpolateWorkflowVariables(
|
|
@@ -3417,7 +3426,13 @@ Starting workflow: ${workflow.name}`);
|
|
|
3417
3426
|
executionContext.variables.set(key, interpolated);
|
|
3418
3427
|
}
|
|
3419
3428
|
}
|
|
3420
|
-
const
|
|
3429
|
+
const effectiveBaseUrl = workflow.config?.web?.baseUrl || options.baseUrl;
|
|
3430
|
+
if (options.debug) {
|
|
3431
|
+
console.log(` [DEBUG] Effective baseUrl for test: ${effectiveBaseUrl ?? "(none)"}`);
|
|
3432
|
+
console.log(` [DEBUG] - workflow.config?.web?.baseUrl: ${workflow.config?.web?.baseUrl ?? "(undefined)"}`);
|
|
3433
|
+
console.log(` [DEBUG] - options.baseUrl: ${options.baseUrl ?? "(undefined)"}`);
|
|
3434
|
+
}
|
|
3435
|
+
const result = await runTestInWorkflow(test, page, executionContext, options, workflowDir, effectiveBaseUrl);
|
|
3421
3436
|
const testResult = {
|
|
3422
3437
|
id: testRef.id,
|
|
3423
3438
|
file: testRef.file,
|
|
@@ -3839,5 +3854,5 @@ exports.runWorkflowWithContext = runWorkflowWithContext;
|
|
|
3839
3854
|
exports.setupAppwriteTracking = setupAppwriteTracking;
|
|
3840
3855
|
exports.startTrackingServer = startTrackingServer;
|
|
3841
3856
|
exports.webServerManager = webServerManager;
|
|
3842
|
-
//# sourceMappingURL=chunk-
|
|
3843
|
-
//# sourceMappingURL=chunk-
|
|
3857
|
+
//# sourceMappingURL=chunk-UJMTTIG7.cjs.map
|
|
3858
|
+
//# sourceMappingURL=chunk-UJMTTIG7.cjs.map
|