intellitester 0.5.1 → 0.5.3

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.
@@ -110,6 +110,26 @@ var clearActionSchema = zod.z.object({
110
110
  frame: FrameLocatorSchema.optional().describe("Iframe context for the target element"),
111
111
  errorIf: errorIfSchema.optional()
112
112
  }).describe("Clear the contents of an input field");
113
+ var uploadInlineFileSchema = zod.z.object({
114
+ name: nonEmptyString.describe('Filename presented to the page (e.g. "resume.pdf")'),
115
+ mimeType: zod.z.string().trim().optional().describe("MIME type. If omitted, derived from `name` extension; falls back to application/octet-stream."),
116
+ content: zod.z.string().optional().describe("Plain-text file contents. Mutually exclusive with `base64`."),
117
+ base64: zod.z.string().optional().describe("Base64-encoded file contents. Mutually exclusive with `content`.")
118
+ }).refine((o) => o.content !== void 0 !== (o.base64 !== void 0), {
119
+ message: "inline upload file requires exactly one of `content` or `base64`"
120
+ });
121
+ var uploadFileEntrySchema = zod.z.union([
122
+ nonEmptyString.describe("File path (relative to test YAML, absolute, or http(s):// URL). Supports {{var}} interpolation."),
123
+ uploadInlineFileSchema
124
+ ]);
125
+ var uploadActionSchema = zod.z.object({
126
+ type: zod.z.literal("upload"),
127
+ target: LocatorSchema.optional().describe('The <input type="file"> element. Works even when CSS-hidden. Use this OR `trigger`, not both.'),
128
+ trigger: LocatorSchema.optional().describe("A button that opens the OS file chooser when clicked. Use this OR `target`, not both."),
129
+ files: zod.z.union([uploadFileEntrySchema, zod.z.array(uploadFileEntrySchema).min(1)]).describe("One file or an ordered list of files. Strings are local paths or http(s) URLs; objects are inline synthetic files."),
130
+ frame: FrameLocatorSchema.optional().describe("Iframe context for the target/trigger element"),
131
+ errorIf: errorIfSchema.optional()
132
+ }).describe("Upload one or more files to a file input or filechooser-triggering button");
113
133
  var hoverActionSchema = zod.z.object({
114
134
  type: zod.z.literal("hover"),
115
135
  target: LocatorSchema,
@@ -279,6 +299,7 @@ var BaseActionSchema = zod.z.discriminatedUnion("type", [
279
299
  inputActionSchema,
280
300
  typeActionSchema,
281
301
  clearActionSchema,
302
+ uploadActionSchema,
282
303
  hoverActionSchema,
283
304
  selectActionSchema,
284
305
  checkActionSchema,
@@ -769,5 +790,5 @@ exports.parseTestDefinition = parseTestDefinition;
769
790
  exports.parseWorkflowDefinition = parseWorkflowDefinition;
770
791
  exports.previewConfigSchema = previewConfigSchema;
771
792
  exports.webServerEntrySchema = webServerEntrySchema;
772
- //# sourceMappingURL=chunk-4EFOHLZ5.cjs.map
773
- //# sourceMappingURL=chunk-4EFOHLZ5.cjs.map
793
+ //# sourceMappingURL=chunk-2L45UPE7.cjs.map
794
+ //# sourceMappingURL=chunk-2L45UPE7.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/loader.ts","../src/core/schema.ts","../src/ai/types.ts","../src/core/workflowSchema.ts","../src/core/pipelineSchema.ts"],"names":["init_cjs_shims","z","nonEmptyString","parse","fs"],"mappings":"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","file":"chunk-2L45UPE7.cjs","sourcesContent":["import fs from 'node:fs/promises';\n\nimport type { ZodIssue, ZodType } from 'zod';\nimport { parse } from 'yaml';\n\nimport { IntellitesterConfigSchema, TestDefinitionSchema, defaultModelForProvider } 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 const test = parseWithSchema(content, TestDefinitionSchema, 'test definition');\n if (test.config?.ai && !test.config.ai.model) {\n test.config.ai.model = defaultModelForProvider(test.config.ai.provider);\n }\n return test as TestDefinition;\n};\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 const config = parseWithSchema(content, IntellitesterConfigSchema, 'config');\n if (config.ai && !config.ai.model) {\n config.ai.model = defaultModelForProvider(config.ai.provider);\n }\n return config as IntellitesterConfig;\n};\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","import { z } from 'zod';\nimport { SUPPORTED_PROVIDERS } from '../ai/types';\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\nexport const FrameLocatorSchema = z\n .object({\n css: z.string().trim().optional().describe('CSS selector for the iframe element'),\n name: z.string().trim().optional().describe('Name or id attribute of the iframe'),\n index: z.number().int().nonnegative().optional().describe('Zero-based index when multiple iframes match (default: 0)'),\n })\n .describe('Defines how to locate an iframe on the page. Either css or name must be provided.')\n .refine(\n (locator) => Boolean(locator.css || locator.name),\n { message: 'FrameLocator requires css or name' },\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 frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\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 frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\n errorIf: errorIfSchema.optional(),\n}).describe('Input text into a field (clears field first)');\n\nconst typeActionSchema = z.object({\n type: z.literal('type'),\n target: LocatorSchema.optional().describe('Element to type into (if omitted, types into the currently focused element)'),\n value: z.string().describe('Text to type character-by-character (appends to existing content)'),\n frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\n delay: z.number().int().nonnegative().optional().describe('Delay between keystrokes in milliseconds (default: 50)'),\n errorIf: errorIfSchema.optional(),\n}).describe('Type text character-by-character without clearing (for Stripe, special inputs)');\n\nconst clearActionSchema = z.object({\n type: z.literal('clear'),\n target: LocatorSchema,\n frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\n errorIf: errorIfSchema.optional(),\n}).describe('Clear the contents of an input field');\n\n// Inline synthetic file: caller supplies name + content directly, no disk read.\nconst uploadInlineFileSchema = z.object({\n name: nonEmptyString.describe('Filename presented to the page (e.g. \"resume.pdf\")'),\n mimeType: z.string().trim().optional()\n .describe('MIME type. If omitted, derived from `name` extension; falls back to application/octet-stream.'),\n content: z.string().optional()\n .describe('Plain-text file contents. Mutually exclusive with `base64`.'),\n base64: z.string().optional()\n .describe('Base64-encoded file contents. Mutually exclusive with `content`.'),\n}).refine((o) => (o.content !== undefined) !== (o.base64 !== undefined), {\n message: 'inline upload file requires exactly one of `content` or `base64`',\n});\n\n// A single entry in an upload action's `files`: a string (local path or http(s) URL) or an inline object.\nconst uploadFileEntrySchema = z.union([\n nonEmptyString.describe('File path (relative to test YAML, absolute, or http(s):// URL). Supports {{var}} interpolation.'),\n uploadInlineFileSchema,\n]);\n\nconst uploadActionSchema = z.object({\n type: z.literal('upload'),\n target: LocatorSchema.optional()\n .describe('The <input type=\"file\"> element. Works even when CSS-hidden. Use this OR `trigger`, not both.'),\n trigger: LocatorSchema.optional()\n .describe('A button that opens the OS file chooser when clicked. Use this OR `target`, not both.'),\n files: z.union([uploadFileEntrySchema, z.array(uploadFileEntrySchema).min(1)])\n .describe('One file or an ordered list of files. Strings are local paths or http(s) URLs; objects are inline synthetic files.'),\n frame: FrameLocatorSchema.optional().describe('Iframe context for the target/trigger element'),\n errorIf: errorIfSchema.optional(),\n}).describe('Upload one or more files to a file input or filechooser-triggering button');\n\nconst hoverActionSchema = z.object({\n type: z.literal('hover'),\n target: LocatorSchema,\n frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\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 frame: FrameLocatorSchema.optional().describe('Iframe context for the target element or keyboard action'),\n errorIf: errorIfSchema.optional(),\n}).describe('Press a keyboard key');\n\nconst focusActionSchema = z.object({\n type: z.literal('focus'),\n target: LocatorSchema,\n frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\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 frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\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 frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\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 frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\n errorIf: errorIfSchema.optional(),\n}).describe('Wait for an element to reach a specific state');\n\nconst logActionSchema = z.object({\n type: z.literal('log'),\n message: z.string().optional().describe('Static message to log (supports ${VAR_NAME} interpolation)'),\n eval: z.string().optional().describe('JavaScript expression to evaluate in page context'),\n target: LocatorSchema.optional().describe('Element to extract content from'),\n frame: FrameLocatorSchema.optional().describe('Iframe context for the target element'),\n format: z.enum(['text', 'html', 'json']).optional().describe('Output format for element content (default: text)'),\n}).describe('Log a message, evaluate JS, or extract element content for debugging')\n .refine(\n (action) => action.message || action.eval || action.target,\n { message: 'log requires message, eval, or target' },\n );\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\nconst evaluateActionSchema = z.object({\n type: z.literal('evaluate'),\n expected: z.union([\n z.string(),\n z.array(z.string()),\n ]).describe('Text to find in screenshot (substring or regex)'),\n mode: z.enum(['ocr', 'ai', 'auto']).optional()\n .describe('ocr=OCR only, ai=LLM vision only, auto=OCR first then AI fallback (default: auto)'),\n regex: z.boolean().optional()\n .describe('Treat expected as regex patterns (default: false)'),\n prompt: z.string().optional()\n .describe('Custom prompt for AI mode'),\n waitBefore: z.number().int().nonnegative().optional()\n .describe('ms to wait before screenshot for visual stability (default: 500)'),\n fullPage: z.boolean().optional()\n .describe('Full page or viewport only (default: true)'),\n confidence: z.number().min(0).max(100).optional()\n .describe('Min OCR confidence threshold, below falls back to AI in auto mode (default: 60)'),\n}).describe('Evaluate page state via screenshot analysis (OCR and/or AI vision)');\n\nconst saveStorageStateActionSchema = z.object({\n type: z.literal('saveStorageState'),\n path: nonEmptyString.optional()\n .describe('File path (relative to cwd) to write Playwright storageState JSON. Calls page.context().storageState({ path }).'),\n handler: nonEmptyString.optional()\n .describe('Path (relative to cwd) to a TS/JS file exporting `default async ({ page, context, variables }) => void`. Called instead of the built-in writer for custom serialization (e.g., to Python pickle, SQLite, S3, ...).'),\n}).describe('Persist the current browser context state (cookies, localStorage) for reuse via config.web.storageState in subsequent runs.')\n .refine(\n (action) => action.path || action.handler,\n { message: 'saveStorageState requires either `path` or `handler`' },\n );\n\nconst assertCookiesActionSchema = z.object({\n type: z.literal('assertCookies'),\n has: z.array(nonEmptyString).optional()\n .describe('Cookie names that MUST be present in the context.'),\n not: z.array(nonEmptyString).optional()\n .describe('Cookie names that MUST NOT be present in the context.'),\n match: z.record(z.string(), z.string()).optional()\n .describe('Map of cookie name to value-matching pattern (substring by default; wrap in /.../ for regex).'),\n url: nonEmptyString.optional()\n .describe('Optional URL/origin filter passed to context.cookies(url).'),\n}).describe('Assert presence/absence (and optionally values) of cookies in the browser context. Sees HttpOnly cookies.')\n .refine(\n (a) => Boolean(a.has?.length) || Boolean(a.not?.length) || Boolean(a.match && Object.keys(a.match).length > 0),\n { message: 'assertCookies requires at least one of `has`, `not`, or `match`' },\n );\n\nconst expectResponseActionSchema = z.object({\n type: z.literal('expectResponse'),\n url: nonEmptyString.describe('URL pattern: glob by default (** = any path, * = single segment), or /regex/ for regex.'),\n status: z.number().int().min(100).max(599).optional()\n .describe('Expected HTTP status code (exact match).'),\n headers: z.record(z.string(), z.string()).optional()\n .describe('Headers that must all match. Header name is case-insensitive. Values: substring match by default, or /regex/ for regex.'),\n since: z.union([\n z.literal('previousStep'),\n z.literal('testStart'),\n z.number(),\n ]).optional().describe('Time window lower bound. Default: previousStep.'),\n timeout: z.number().int().positive().optional()\n .describe('Max wait in ms for a matching response (default 5000).'),\n}).describe('Assert that a network response matching the given URL/status/headers was seen since `since`.');\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 typeActionSchema,\n clearActionSchema,\n uploadActionSchema,\n hoverActionSchema,\n selectActionSchema,\n checkActionSchema,\n uncheckActionSchema,\n pressActionSchema,\n focusActionSchema,\n assertActionSchema,\n waitActionSchema,\n scrollActionSchema,\n screenshotActionSchema,\n saveStorageStateActionSchema,\n assertCookiesActionSchema,\n expectResponseActionSchema,\n setVarActionSchema,\n emailWaitForActionSchema,\n emailExtractCodeActionSchema,\n emailExtractLinkActionSchema,\n emailClearActionSchema,\n appwriteVerifyEmailActionSchema,\n debugActionSchema,\n waitForSelectorActionSchema,\n logActionSchema,\n failActionSchema,\n evaluateActionSchema,\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 storageState: z.union([\n z.string(),\n z.object({\n cookies: z.array(z.any()).optional(),\n origins: z.array(z.any()).optional(),\n }).passthrough(),\n ]).optional().describe('Playwright storageState: file path (string) or inline {cookies, origins} object. Maps to browser.newContext({ storageState }).'),\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 AI-assisted test healing on failures'),\n maxAttempts: z.number().int().min(1).max(10).default(3).describe('Maximum AI healing attempts per failure (default: 3)'),\n strategies: z.array(z.string().trim()).optional().describe('Healing strategies to use'),\n}).describe('AI-assisted test healing configuration');\n\nexport const webServerEntrySchema = z\n .object({\n name: nonEmptyString.optional().describe('Identifier used in logs and the marker file (defaults to server-1, server-2, ...)'),\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 this server is considered ready'),\n port: z.number().int().positive().optional().describe('Port number for the web server'),\n reuseExistingServer: z.boolean().default(true).describe('Reuse an existing server already running at the 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 a single web server process')\n .refine((config) => config.command || config.auto || config.static, {\n message: 'WebServerConfig requires command, auto: true, or static directory',\n });\n\n// `webServer` accepts either a single object (existing single-process behaviour)\n// or an array of entries (new). Array entries are started sequentially in order,\n// each waits for its `url` to respond before the next is started.\nconst webServerSchema = z.union([\n webServerEntrySchema,\n z.array(webServerEntrySchema).min(1).describe('Ordered list of dev processes to start before tests (e.g. API then frontend)'),\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\nexport const defaultModelForProvider = (provider: string): string => {\n switch (provider) {\n case 'anthropic': return 'claude-haiku-4-5-20251001';\n case 'openrouter': return 'anthropic/claude-haiku-4.5';\n case 'openai': return 'gpt-4o-mini';\n case 'gemini': return 'gemini-2.5-flash';\n case 'groq': return 'llama-3.1-8b-instant';\n case 'together': return 'meta-llama/Llama-3.3-70B-Instruct-Turbo';\n case 'mistral': return 'mistral-small-latest';\n case 'deepseek': return 'deepseek-chat';\n case 'fireworks': return 'accounts/fireworks/models/llama-v3p3-70b-instruct';\n case 'perplexity': return 'sonar';\n case 'xai': return 'grok-2-latest';\n case 'cohere': return 'command-r-plus';\n case 'fal': return 'anthropic/claude-haiku-4.5';\n case 'ollama': return 'llama3.2:3b';\n case 'lmStudio': return 'local-model';\n // azure, bedrock, openaiCompat require explicit model — no sensible default\n default: return 'claude-haiku-4-5-20251001';\n }\n};\n\nconst aiConfigSchema = z.object({\n provider: z.enum(SUPPORTED_PROVIDERS).describe('AI provider to use for test generation'),\n model: z.string().trim().optional().describe('Model name to use (defaults based on provider if omitted)'),\n apiKey: z.string().trim().optional().describe('API key for the AI provider (supports ${ENV_VAR} syntax)'),\n baseUrl: optionalUrl.describe('Base URL for the AI API (required for Ollama, auto-set for groq/openrouter)'),\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 providerOptions: z.record(z.string(), z.unknown()).optional().describe('Extra provider-specific options passed verbatim to the Blazen factory (e.g., azure resourceName/deploymentName, bedrock region, fal endpoint, ollama host/port, openaiCompat providerName/defaultModel). Supports ${ENV_VAR} substitution in string values.'),\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 healing: healingSchema.optional(),\n ai: aiConfigSchema.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","export const SUPPORTED_PROVIDERS = [\n 'anthropic',\n 'openai',\n 'gemini',\n 'openrouter',\n 'groq',\n 'together',\n 'mistral',\n 'deepseek',\n 'fireworks',\n 'perplexity',\n 'xai',\n 'cohere',\n 'azure',\n 'bedrock',\n 'fal',\n 'ollama',\n 'lmStudio',\n 'openaiCompat',\n] as const;\n\nexport type AIProvider = (typeof SUPPORTED_PROVIDERS)[number];\n\nexport type AIConfig = {\n provider: AIProvider;\n model: string;\n apiKey?: string;\n baseUrl?: string;\n temperature: number;\n maxTokens: number;\n providerOptions?: Record<string, unknown>;\n};\n","import { z } from 'zod';\nimport { webServerEntrySchema } from './schema';\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 storageState: z.union([\n z.string(),\n z.object({\n cookies: z.array(z.any()).optional(),\n origins: z.array(z.any()).optional(),\n }).passthrough(),\n ]).optional().describe('Playwright storageState: file path (string) or inline {cookies, origins} object. Maps to browser.newContext({ storageState }).'),\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 -- reuses the canonical entry schema and\n// accepts either a single object or an ordered list of entries.\nconst workflowWebServerSchema = z.union([\n webServerEntrySchema,\n z.array(webServerEntrySchema).min(1),\n]);\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';\nimport { webServerEntrySchema } from './schema';\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 storageState: z.union([\n z.string(),\n z.object({\n cookies: z.array(z.any()).optional(),\n origins: z.array(z.any()).optional(),\n }).passthrough(),\n ]).optional().describe('Playwright storageState: file path (string) or inline {cookies, origins} object. Maps to browser.newContext({ storageState }).'),\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 -- reuses the canonical entry schema and\n// accepts either a single object or an ordered list of entries.\nconst pipelineWebServerSchema = z.union([\n webServerEntrySchema,\n z.array(webServerEntrySchema).min(1),\n]);\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"]}