@mindstudio-ai/agent 0.1.1 → 0.1.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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/rate-limit.ts","../src/config.ts","../src/generated/steps.ts","../src/generated/helpers.ts","../src/client.ts","../src/generated/snippets.ts","../src/generated/metadata.ts","../src/index.ts"],"sourcesContent":["/**\n * Error thrown when a MindStudio API request fails.\n *\n * Contains the HTTP status code, an error code from the API,\n * and any additional details returned in the response body.\n */\nexport class MindStudioError extends Error {\n override readonly name = 'MindStudioError';\n\n constructor(\n message: string,\n /** Machine-readable error code from the API (e.g. \"invalid_step_config\"). */\n public readonly code: string,\n /** HTTP status code of the failed request. */\n public readonly status: number,\n /** Raw error body from the API, if available. */\n public readonly details?: unknown,\n ) {\n super(message);\n }\n}\n","import { MindStudioError } from './errors.js';\nimport type { RateLimiter } from './rate-limit.js';\n\nexport interface HttpClientConfig {\n baseUrl: string;\n token: string;\n rateLimiter: RateLimiter;\n maxRetries: number;\n}\n\nexport async function request<T>(\n config: HttpClientConfig,\n method: 'GET' | 'POST',\n path: string,\n body?: unknown,\n): Promise<{ data: T; headers: Headers }> {\n const url = `${config.baseUrl}/developer/v2${path}`;\n\n await config.rateLimiter.acquire();\n\n try {\n return await requestWithRetry<T>(config, method, url, body, 0);\n } finally {\n config.rateLimiter.release();\n }\n}\n\nasync function requestWithRetry<T>(\n config: HttpClientConfig,\n method: string,\n url: string,\n body: unknown,\n attempt: number,\n): Promise<{ data: T; headers: Headers }> {\n const res = await fetch(url, {\n method,\n headers: {\n Authorization: `Bearer ${config.token}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@mindstudio-ai/agent',\n },\n body: body != null ? JSON.stringify(body) : undefined,\n });\n\n // Update rate limiter with latest server-reported limits\n config.rateLimiter.updateFromHeaders(res.headers);\n\n if (res.status === 429 && attempt < config.maxRetries) {\n const retryAfter = res.headers.get('retry-after');\n const waitMs = retryAfter ? parseFloat(retryAfter) * 1000 : 1000;\n await sleep(waitMs);\n return requestWithRetry<T>(config, method, url, body, attempt + 1);\n }\n\n if (!res.ok) {\n const errorBody = await res.json().catch(() => ({}));\n throw new MindStudioError(\n (errorBody as Record<string, string>).message ||\n `${res.status} ${res.statusText}`,\n (errorBody as Record<string, string>).code || 'api_error',\n res.status,\n errorBody,\n );\n }\n\n const data = (await res.json()) as T;\n return { data, headers: res.headers };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { MindStudioError } from './errors.js';\n\nexport type AuthType = 'internal' | 'apiKey';\n\nconst DEFAULTS: Record<AuthType, { concurrency: number; callCap: number }> = {\n internal: { concurrency: 10, callCap: 500 },\n apiKey: { concurrency: 20, callCap: Infinity },\n};\n\nexport class RateLimiter {\n private inflight = 0;\n private concurrencyLimit: number;\n private callCount = 0;\n private callCap: number;\n private queue: Array<() => void> = [];\n\n constructor(readonly authType: AuthType) {\n this.concurrencyLimit = DEFAULTS[authType].concurrency;\n this.callCap = DEFAULTS[authType].callCap;\n }\n\n /** Acquire a slot. Resolves when a concurrent slot is available. */\n async acquire(): Promise<void> {\n if (this.callCount >= this.callCap) {\n throw new MindStudioError(\n `Call cap reached (${this.callCap} calls). ` +\n 'Internal tokens are limited to 500 calls per execution.',\n 'call_cap_exceeded',\n 429,\n );\n }\n\n if (this.inflight < this.concurrencyLimit) {\n this.inflight++;\n this.callCount++;\n return;\n }\n\n return new Promise<void>((resolve) => {\n this.queue.push(() => {\n this.inflight++;\n this.callCount++;\n resolve();\n });\n });\n }\n\n /** Release a slot and let the next queued request proceed. */\n release(): void {\n this.inflight--;\n const next = this.queue.shift();\n if (next) next();\n }\n\n /** Update limits from response headers. */\n updateFromHeaders(headers: Headers): void {\n const concurrency = headers.get('x-ratelimit-concurrency-limit');\n if (concurrency) {\n this.concurrencyLimit = parseInt(concurrency, 10);\n }\n const limit = headers.get('x-ratelimit-limit');\n if (limit && this.authType === 'internal') {\n this.callCap = parseInt(limit, 10);\n }\n }\n\n /** Read current rate limit state from response headers. */\n static parseHeaders(headers: Headers): {\n remaining: number | undefined;\n concurrencyRemaining: number | undefined;\n } {\n const remaining = headers.get('x-ratelimit-remaining');\n const concurrencyRemaining = headers.get(\n 'x-ratelimit-concurrency-remaining',\n );\n return {\n remaining: remaining != null ? parseInt(remaining, 10) : undefined,\n concurrencyRemaining:\n concurrencyRemaining != null\n ? parseInt(concurrencyRemaining, 10)\n : undefined,\n };\n }\n}\n","import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\n\nexport interface MindStudioConfig {\n apiKey?: string;\n baseUrl?: string;\n /** @internal Last update check metadata. */\n _updateCheck?: {\n latestVersion: string;\n checkedAt: number;\n };\n}\n\nfunction configPaths() {\n const dir = join(homedir(), '.mindstudio');\n return { dir, file: join(dir, 'config.json') };\n}\n\nexport function getConfigPath(): string {\n return configPaths().file;\n}\n\nexport function loadConfig(): MindStudioConfig {\n try {\n const raw = readFileSync(configPaths().file, 'utf-8');\n return JSON.parse(raw) as MindStudioConfig;\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(config: MindStudioConfig): void {\n const { dir, file } = configPaths();\n mkdirSync(dir, { recursive: true });\n writeFileSync(file, JSON.stringify(config, null, 2) + '\\n', 'utf-8');\n}\n\nexport function clearConfig(): void {\n saveConfig({});\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-05T13:37:48.795Z\n\n\nimport type {\n ActiveCampaignAddNoteStepInput,\n ActiveCampaignCreateContactStepInput,\n AddSubtitlesToVideoStepInput,\n AirtableCreateUpdateRecordStepInput,\n AirtableDeleteRecordStepInput,\n AirtableGetRecordStepInput,\n AirtableGetTableRecordsStepInput,\n AnalyzeImageStepInput,\n AnalyzeVideoStepInput,\n CaptureThumbnailStepInput,\n CodaCreateUpdatePageStepInput,\n CodaCreateUpdateRowStepInput,\n CodaFindRowStepInput,\n CodaGetPageStepInput,\n CodaGetTableRowsStepInput,\n ConvertPdfToImagesStepInput,\n CreateDataSourceStepInput,\n CreateGmailDraftStepInput,\n CreateGoogleCalendarEventStepInput,\n CreateGoogleDocStepInput,\n CreateGoogleSheetStepInput,\n DeleteDataSourceStepInput,\n DeleteDataSourceDocumentStepInput,\n DeleteGmailEmailStepInput,\n DeleteGoogleCalendarEventStepInput,\n DeleteGoogleSheetRowsStepInput,\n DetectChangesStepInput,\n DetectPIIStepInput,\n DiscordEditMessageStepInput,\n DiscordSendFollowUpStepInput,\n DiscordSendMessageStepInput,\n DownloadVideoStepInput,\n EnhanceImageGenerationPromptStepInput,\n EnhanceVideoGenerationPromptStepInput,\n EnrichPersonStepInput,\n ExtractAudioFromVideoStepInput,\n ExtractTextStepInput,\n FetchDataSourceDocumentStepInput,\n FetchGoogleDocStepInput,\n FetchGoogleSheetStepInput,\n FetchSlackChannelHistoryStepInput,\n FetchYoutubeCaptionsStepInput,\n FetchYoutubeChannelStepInput,\n FetchYoutubeCommentsStepInput,\n FetchYoutubeVideoStepInput,\n GenerateChartStepInput,\n GenerateImageStepInput,\n GenerateLipsyncStepInput,\n GenerateMusicStepInput,\n GeneratePdfStepInput,\n GenerateStaticVideoFromImageStepInput,\n GenerateVideoStepInput,\n GetGmailAttachmentsStepInput,\n GetGmailDraftStepInput,\n GetGmailEmailStepInput,\n GetGmailUnreadCountStepInput,\n GetGoogleCalendarEventStepInput,\n GetGoogleDriveFileStepInput,\n GetGoogleSheetInfoStepInput,\n GetMediaMetadataStepInput,\n HttpRequestStepInput,\n HubspotCreateCompanyStepInput,\n HubspotCreateContactStepInput,\n HubspotGetCompanyStepInput,\n HubspotGetContactStepInput,\n HunterApiCompanyEnrichmentStepInput,\n HunterApiDomainSearchStepInput,\n HunterApiEmailFinderStepInput,\n HunterApiEmailVerificationStepInput,\n HunterApiPersonEnrichmentStepInput,\n ImageFaceSwapStepInput,\n ImageRemoveWatermarkStepInput,\n InsertVideoClipsStepInput,\n ListDataSourcesStepInput,\n ListGmailDraftsStepInput,\n ListGmailLabelsStepInput,\n ListGoogleCalendarEventsStepInput,\n ListGoogleDriveFilesStepInput,\n ListRecentGmailEmailsStepInput,\n LogicStepInput,\n MakeDotComRunScenarioStepInput,\n MergeAudioStepInput,\n MergeVideosStepInput,\n MixAudioIntoVideoStepInput,\n MuteVideoStepInput,\n N8nRunNodeStepInput,\n NotionCreatePageStepInput,\n NotionUpdatePageStepInput,\n PeopleSearchStepInput,\n PostToLinkedInStepInput,\n PostToSlackChannelStepInput,\n PostToXStepInput,\n PostToZapierStepInput,\n QueryDataSourceStepInput,\n QueryExternalDatabaseStepInput,\n RedactPIIStepInput,\n RemoveBackgroundFromImageStepInput,\n ReplyToGmailEmailStepInput,\n ResizeVideoStepInput,\n RunFromConnectorRegistryStepInput,\n RunPackagedWorkflowStepInput,\n ScrapeFacebookPageStepInput,\n ScrapeFacebookPostsStepInput,\n ScrapeInstagramCommentsStepInput,\n ScrapeInstagramMentionsStepInput,\n ScrapeInstagramPostsStepInput,\n ScrapeInstagramProfileStepInput,\n ScrapeInstagramReelsStepInput,\n ScrapeLinkedInCompanyStepInput,\n ScrapeLinkedInProfileStepInput,\n ScrapeMetaThreadsProfileStepInput,\n ScrapeUrlStepInput,\n ScrapeXPostStepInput,\n ScrapeXProfileStepInput,\n SearchGmailEmailsStepInput,\n SearchGoogleStepInput,\n SearchGoogleCalendarEventsStepInput,\n SearchGoogleDriveStepInput,\n SearchGoogleImagesStepInput,\n SearchGoogleNewsStepInput,\n SearchGoogleTrendsStepInput,\n SearchPerplexityStepInput,\n SearchXPostsStepInput,\n SearchYoutubeStepInput,\n SearchYoutubeTrendsStepInput,\n SendEmailStepInput,\n SendGmailDraftStepInput,\n SendGmailMessageStepInput,\n SendSMSStepInput,\n SetGmailReadStatusStepInput,\n SetRunTitleStepInput,\n SetVariableStepInput,\n TelegramEditMessageStepInput,\n TelegramReplyToMessageStepInput,\n TelegramSendAudioStepInput,\n TelegramSendFileStepInput,\n TelegramSendImageStepInput,\n TelegramSendMessageStepInput,\n TelegramSendVideoStepInput,\n TelegramSetTypingStepInput,\n TextToSpeechStepInput,\n TranscribeAudioStepInput,\n TrimMediaStepInput,\n UpdateGmailLabelsStepInput,\n UpdateGoogleCalendarEventStepInput,\n UpdateGoogleDocStepInput,\n UpdateGoogleSheetStepInput,\n UploadDataSourceDocumentStepInput,\n UpscaleImageStepInput,\n UpscaleVideoStepInput,\n UserMessageStepInput,\n VideoFaceSwapStepInput,\n VideoRemoveBackgroundStepInput,\n VideoRemoveWatermarkStepInput,\n WatermarkImageStepInput,\n WatermarkVideoStepInput,\n ActiveCampaignAddNoteStepOutput,\n ActiveCampaignCreateContactStepOutput,\n AddSubtitlesToVideoStepOutput,\n AirtableCreateUpdateRecordStepOutput,\n AirtableDeleteRecordStepOutput,\n AirtableGetRecordStepOutput,\n AirtableGetTableRecordsStepOutput,\n AnalyzeImageStepOutput,\n AnalyzeVideoStepOutput,\n CaptureThumbnailStepOutput,\n CodaCreateUpdatePageStepOutput,\n CodaCreateUpdateRowStepOutput,\n CodaFindRowStepOutput,\n CodaGetPageStepOutput,\n CodaGetTableRowsStepOutput,\n ConvertPdfToImagesStepOutput,\n CreateDataSourceStepOutput,\n CreateGmailDraftStepOutput,\n CreateGoogleCalendarEventStepOutput,\n CreateGoogleDocStepOutput,\n CreateGoogleSheetStepOutput,\n DeleteDataSourceStepOutput,\n DeleteDataSourceDocumentStepOutput,\n DeleteGmailEmailStepOutput,\n DeleteGoogleCalendarEventStepOutput,\n DeleteGoogleSheetRowsStepOutput,\n DetectChangesStepOutput,\n DetectPIIStepOutput,\n DiscordEditMessageStepOutput,\n DiscordSendFollowUpStepOutput,\n DiscordSendMessageStepOutput,\n DownloadVideoStepOutput,\n EnhanceImageGenerationPromptStepOutput,\n EnhanceVideoGenerationPromptStepOutput,\n EnrichPersonStepOutput,\n ExtractAudioFromVideoStepOutput,\n ExtractTextStepOutput,\n FetchDataSourceDocumentStepOutput,\n FetchGoogleDocStepOutput,\n FetchGoogleSheetStepOutput,\n FetchSlackChannelHistoryStepOutput,\n FetchYoutubeCaptionsStepOutput,\n FetchYoutubeChannelStepOutput,\n FetchYoutubeCommentsStepOutput,\n FetchYoutubeVideoStepOutput,\n GenerateChartStepOutput,\n GenerateImageStepOutput,\n GenerateLipsyncStepOutput,\n GenerateMusicStepOutput,\n GeneratePdfStepOutput,\n GenerateStaticVideoFromImageStepOutput,\n GenerateVideoStepOutput,\n GetGmailAttachmentsStepOutput,\n GetGmailDraftStepOutput,\n GetGmailEmailStepOutput,\n GetGmailUnreadCountStepOutput,\n GetGoogleCalendarEventStepOutput,\n GetGoogleDriveFileStepOutput,\n GetGoogleSheetInfoStepOutput,\n GetMediaMetadataStepOutput,\n HttpRequestStepOutput,\n HubspotCreateCompanyStepOutput,\n HubspotCreateContactStepOutput,\n HubspotGetCompanyStepOutput,\n HubspotGetContactStepOutput,\n HunterApiCompanyEnrichmentStepOutput,\n HunterApiDomainSearchStepOutput,\n HunterApiEmailFinderStepOutput,\n HunterApiEmailVerificationStepOutput,\n HunterApiPersonEnrichmentStepOutput,\n ImageFaceSwapStepOutput,\n ImageRemoveWatermarkStepOutput,\n InsertVideoClipsStepOutput,\n ListDataSourcesStepOutput,\n ListGmailDraftsStepOutput,\n ListGmailLabelsStepOutput,\n ListGoogleCalendarEventsStepOutput,\n ListGoogleDriveFilesStepOutput,\n ListRecentGmailEmailsStepOutput,\n LogicStepOutput,\n MakeDotComRunScenarioStepOutput,\n MergeAudioStepOutput,\n MergeVideosStepOutput,\n MixAudioIntoVideoStepOutput,\n MuteVideoStepOutput,\n N8nRunNodeStepOutput,\n NotionCreatePageStepOutput,\n NotionUpdatePageStepOutput,\n PeopleSearchStepOutput,\n PostToLinkedInStepOutput,\n PostToSlackChannelStepOutput,\n PostToXStepOutput,\n PostToZapierStepOutput,\n QueryDataSourceStepOutput,\n QueryExternalDatabaseStepOutput,\n RedactPIIStepOutput,\n RemoveBackgroundFromImageStepOutput,\n ReplyToGmailEmailStepOutput,\n ResizeVideoStepOutput,\n RunFromConnectorRegistryStepOutput,\n RunPackagedWorkflowStepOutput,\n ScrapeFacebookPageStepOutput,\n ScrapeFacebookPostsStepOutput,\n ScrapeInstagramCommentsStepOutput,\n ScrapeInstagramMentionsStepOutput,\n ScrapeInstagramPostsStepOutput,\n ScrapeInstagramProfileStepOutput,\n ScrapeInstagramReelsStepOutput,\n ScrapeLinkedInCompanyStepOutput,\n ScrapeLinkedInProfileStepOutput,\n ScrapeMetaThreadsProfileStepOutput,\n ScrapeUrlStepOutput,\n ScrapeXPostStepOutput,\n ScrapeXProfileStepOutput,\n SearchGmailEmailsStepOutput,\n SearchGoogleStepOutput,\n SearchGoogleCalendarEventsStepOutput,\n SearchGoogleDriveStepOutput,\n SearchGoogleImagesStepOutput,\n SearchGoogleNewsStepOutput,\n SearchGoogleTrendsStepOutput,\n SearchPerplexityStepOutput,\n SearchXPostsStepOutput,\n SearchYoutubeStepOutput,\n SearchYoutubeTrendsStepOutput,\n SendEmailStepOutput,\n SendGmailDraftStepOutput,\n SendGmailMessageStepOutput,\n SendSMSStepOutput,\n SetGmailReadStatusStepOutput,\n SetRunTitleStepOutput,\n SetVariableStepOutput,\n TelegramEditMessageStepOutput,\n TelegramReplyToMessageStepOutput,\n TelegramSendAudioStepOutput,\n TelegramSendFileStepOutput,\n TelegramSendImageStepOutput,\n TelegramSendMessageStepOutput,\n TelegramSendVideoStepOutput,\n TelegramSetTypingStepOutput,\n TextToSpeechStepOutput,\n TranscribeAudioStepOutput,\n TrimMediaStepOutput,\n UpdateGmailLabelsStepOutput,\n UpdateGoogleCalendarEventStepOutput,\n UpdateGoogleDocStepOutput,\n UpdateGoogleSheetStepOutput,\n UploadDataSourceDocumentStepOutput,\n UpscaleImageStepOutput,\n UpscaleVideoStepOutput,\n UserMessageStepOutput,\n VideoFaceSwapStepOutput,\n VideoRemoveBackgroundStepOutput,\n VideoRemoveWatermarkStepOutput,\n WatermarkImageStepOutput,\n WatermarkVideoStepOutput,\n} from \"./types.js\";\n\nimport type { StepExecutionOptions, StepExecutionResult } from \"../types.js\";\n\nexport interface StepMethods {\n /**\n * Add a note to an existing contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - The contact must already exist — use the contact ID from a previous create or search step.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignAddNote({\n * contactId: ``,\n * note: ``,\n * });\n * ```\n */\n activeCampaignAddNote(step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignAddNoteStepOutput>>;\n\n /**\n * Create or sync a contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - If a contact with the email already exists, it may be updated depending on ActiveCampaign settings.\n * - Custom fields are passed as a key-value map where keys are field IDs.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignCreateContact({\n * email: ``,\n * firstName: ``,\n * lastName: ``,\n * phone: ``,\n * accountId: ``,\n * customFields: {},\n * });\n * ```\n */\n activeCampaignCreateContact(step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignCreateContactStepOutput>>;\n\n /**\n * Automatically add subtitles to a video\n *\n * @remarks\n * - Can control style of text and animation\n *\n * @example\n * ```typescript\n * const result = await agent.addSubtitlesToVideo({\n * videoUrl: ``,\n * language: ``,\n * fontName: ``,\n * fontSize: 0,\n * fontWeight: \"normal\",\n * fontColor: \"white\",\n * highlightColor: \"white\",\n * strokeWidth: 0,\n * strokeColor: \"black\",\n * backgroundColor: \"black\",\n * backgroundOpacity: 0,\n * position: \"top\",\n * yOffset: 0,\n * wordsPerSubtitle: 0,\n * enableAnimation: false,\n * });\n * ```\n */\n addSubtitlesToVideo(step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AddSubtitlesToVideoStepOutput>>;\n\n /**\n * Create a new record or update an existing record in an Airtable table.\n *\n * @remarks\n * - If recordId is provided, updates that record. Otherwise, creates a new one.\n * - When updating with updateMode \"onlySpecified\", unspecified fields are left as-is. With \"all\", unspecified fields are cleared.\n * - Array fields (e.g. multipleAttachments) accept arrays of values.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableCreateUpdateRecord({\n * baseId: ``,\n * tableId: ``,\n * fields: ``,\n * recordData: {},\n * });\n * ```\n */\n airtableCreateUpdateRecord(step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableCreateUpdateRecordStepOutput>>;\n\n /**\n * Delete a record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Silently succeeds if the record does not exist.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableDeleteRecord({\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableDeleteRecord(step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableDeleteRecordStepOutput>>;\n\n /**\n * Fetch a single record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - If the record is not found, returns a string message instead of a record object.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetRecord({\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableGetRecord(step: AirtableGetRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetRecordStepOutput>>;\n\n /**\n * Fetch multiple records from an Airtable table with optional pagination.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Default limit is 100 records. Maximum is 1000.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed records.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetTableRecords({\n * baseId: ``,\n * tableId: ``,\n * });\n * ```\n */\n airtableGetTableRecords(step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetTableRecordsStepOutput>>;\n\n /**\n * Analyze an image using a vision model based on a text prompt.\n *\n * @remarks\n * - Uses the configured vision model to generate a text analysis of the image.\n * - The prompt should describe what to look for or extract from the image.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeImage({\n * prompt: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n analyzeImage(step: AnalyzeImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeImageStepOutput>>;\n\n /**\n * Analyze a video using a video analysis model based on a text prompt.\n *\n * @remarks\n * - Uses the configured video analysis model to generate a text analysis of the video.\n * - The prompt should describe what to look for or extract from the video.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeVideo({\n * prompt: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n analyzeVideo(step: AnalyzeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeVideoStepOutput>>;\n\n /**\n * Capture a thumbnail from a video at a specified timestamp\n *\n * @example\n * ```typescript\n * const result = await agent.captureThumbnail({\n * videoUrl: ``,\n * at: ``,\n * });\n * ```\n */\n captureThumbnail(step: CaptureThumbnailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CaptureThumbnailStepOutput>>;\n\n /**\n * Create a new page or update an existing page in a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If pageData.pageId is provided, updates that page. Otherwise, creates a new one.\n * - Page content is provided as markdown and converted to Coda's canvas format.\n * - When updating, insertionMode controls how content is applied (default: 'append').\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdatePage({\n * pageData: {},\n * });\n * ```\n */\n codaCreateUpdatePage(step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdatePageStepOutput>>;\n\n /**\n * Create a new row or update an existing row in a Coda table.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If rowId is provided, updates that row. Otherwise, creates a new one.\n * - Row data keys are column IDs. Empty values are excluded.\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdateRow({\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaCreateUpdateRow(step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdateRowStepOutput>>;\n\n /**\n * Search for a row in a Coda table by matching column values.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Returns the first row matching all specified column values, or null if no match.\n * - Search criteria in rowData are ANDed together.\n *\n * @example\n * ```typescript\n * const result = await agent.codaFindRow({\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaFindRow(step: CodaFindRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaFindRowStepOutput>>;\n\n /**\n * Export and read the contents of a page from a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Page export is asynchronous on Coda's side — there may be a brief delay while it processes.\n * - If a page was just created in a prior step, there is an automatic 20-second retry if the first export attempt fails.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetPage({\n * docId: ``,\n * pageId: ``,\n * });\n * ```\n */\n codaGetPage(step: CodaGetPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetPageStepOutput>>;\n\n /**\n * Fetch rows from a Coda table with optional pagination.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Default limit is 10000 rows. Rows are fetched in pages of 500.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed rows.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetTableRows({\n * docId: ``,\n * tableId: ``,\n * });\n * ```\n */\n codaGetTableRows(step: CodaGetTableRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetTableRowsStepOutput>>;\n\n /**\n * Convert each page of a PDF document into a PNG image.\n *\n * @remarks\n * - Each page is converted to a separate PNG and re-hosted on the CDN.\n * - Returns an array of image URLs, one per page.\n *\n * @example\n * ```typescript\n * const result = await agent.convertPdfToImages({\n * pdfUrl: ``,\n * });\n * ```\n */\n convertPdfToImages(step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ConvertPdfToImagesStepOutput>>;\n\n /**\n * Create a new empty vector data source for the current app.\n *\n * @remarks\n * - Creates a new data source (vector database) associated with the current app version.\n * - The data source is created empty — use the \"Upload Data Source Document\" block to add documents.\n * - Returns the new data source ID which can be used in subsequent blocks.\n *\n * @example\n * ```typescript\n * const result = await agent.createDataSource({\n * name: ``,\n * });\n * ```\n */\n createDataSource(step: CreateDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateDataSourceStepOutput>>;\n\n /**\n * Create a draft email in the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose scope.\n * - The draft appears in the user's Gmail Drafts folder but is not sent.\n * - messageType controls the body format: \"plain\" for plain text, \"html\" for raw HTML, \"markdown\" for auto-converted markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.createGmailDraft({\n * to: ``,\n * subject: ``,\n * message: ``,\n * messageType: \"plain\",\n * });\n * ```\n */\n createGmailDraft(step: CreateGmailDraftStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGmailDraftStepOutput>>;\n\n /**\n * Create a new event on a Google Calendar.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Date/time values must be ISO 8601 format (e.g. \"2025-07-02T10:00:00-07:00\").\n * - Attendees are specified as one email address per line in a single string.\n * - Set addMeetLink to true to automatically attach a Google Meet video call.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleCalendarEvent({\n * summary: ``,\n * startDateTime: ``,\n * endDateTime: ``,\n * });\n * ```\n */\n createGoogleCalendarEvent(step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleCalendarEventStepOutput>>;\n\n /**\n * Create a new Google Document and optionally populate it with content.\n *\n * @remarks\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleDoc({\n * title: ``,\n * text: ``,\n * textType: \"plain\",\n * });\n * ```\n */\n createGoogleDoc(step: CreateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleDocStepOutput>>;\n\n /**\n * Create a new Google Spreadsheet and populate it with CSV data.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleSheet({\n * title: ``,\n * text: ``,\n * });\n * ```\n */\n createGoogleSheet(step: CreateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleSheetStepOutput>>;\n\n /**\n * Delete a vector data source from the current app.\n *\n * @remarks\n * - Soft-deletes a data source (vector database) by marking it as deleted.\n * - The Milvus partition is cleaned up asynchronously by a background cron job.\n * - The data source must belong to the current app version.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSource({\n * dataSourceId: ``,\n * });\n * ```\n */\n deleteDataSource(step: DeleteDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceStepOutput>>;\n\n /**\n * Delete a single document from a data source.\n *\n * @remarks\n * - Soft-deletes a document by marking it as deleted.\n * - Requires both the data source ID and document ID.\n * - After deletion, reloads vectors into Milvus so the data source reflects the change immediately.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n deleteDataSourceDocument(step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceDocumentStepOutput>>;\n\n /**\n * Move an email to trash in the connected Gmail account (recoverable delete).\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail modify scope.\n * - Uses trash (recoverable) rather than permanent delete.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGmailEmail({\n * messageId: ``,\n * });\n * ```\n */\n deleteGmailEmail(step: DeleteGmailEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGmailEmailStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGoogleCalendarEvent({\n * eventId: ``,\n * });\n * ```\n */\n deleteGoogleCalendarEvent(step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleCalendarEventStepOutput>>;\n\n /**\n * Delete a range of rows from a Google Spreadsheet.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - startRow and endRow are 1-based row numbers (inclusive).\n * - If sheetName is omitted, operates on the first sheet.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGoogleSheetRows({\n * documentId: ``,\n * startRow: ``,\n * endRow: ``,\n * });\n * ```\n */\n deleteGoogleSheetRows(step: DeleteGoogleSheetRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleSheetRowsStepOutput>>;\n\n /**\n * Detect changes between runs by comparing current input against previously stored state. Routes execution based on whether a change occurred.\n *\n * @remarks\n * - Persists state across runs using a global variable keyed to the step ID.\n * - Two modes: \"comparison\" (default) uses strict string inequality; \"ai\" uses an LLM to determine if a meaningful change occurred.\n * - First run always treats the value as \"changed\" since there is no previous state.\n * - Each mode supports transitions to different steps/workflows for the \"changed\" and \"unchanged\" paths.\n * - AI mode bills normally for the LLM call.\n *\n * @example\n * ```typescript\n * const result = await agent.detectChanges({\n * mode: \"ai\",\n * input: ``,\n * });\n * ```\n */\n detectChanges(step: DetectChangesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectChangesStepOutput>>;\n\n /**\n * Scan text for personally identifiable information using Microsoft Presidio.\n *\n * @remarks\n * - In workflow mode, transitions to detectedStepId if PII is found, notDetectedStepId otherwise.\n * - In direct execution, returns the detection results without transitioning.\n * - If entities is empty, returns immediately with no detections.\n *\n * @example\n * ```typescript\n * const result = await agent.detectPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n detectPII(step: DetectPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectPIIStepOutput>>;\n\n /**\n * Edit a previously sent Discord channel message. Use with the message ID returned by Send Discord Message.\n *\n * @remarks\n * - Only messages sent by the bot can be edited.\n * - The messageId is returned by the Send Discord Message step.\n * - Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\n * - When editing with an attachment, the new attachment replaces any previous attachments on the message.\n * - URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.discordEditMessage({\n * botToken: ``,\n * channelId: ``,\n * messageId: ``,\n * text: ``,\n * });\n * ```\n */\n discordEditMessage(step: DiscordEditMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DiscordEditMessageStepOutput>>;\n\n /**\n * Send a follow-up message to a Discord slash command interaction.\n *\n * @remarks\n * - Requires the applicationId and interactionToken from the Discord trigger variables.\n * - Follow-up messages appear as new messages in the channel after the initial response.\n * - Returns the sent message ID.\n * - Interaction tokens expire after 15 minutes.\n * - Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\n * - URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.discordSendFollowUp({\n * applicationId: ``,\n * interactionToken: ``,\n * text: ``,\n * });\n * ```\n */\n discordSendFollowUp(step: DiscordSendFollowUpStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DiscordSendFollowUpStepOutput>>;\n\n /**\n * Send a message to Discord — either edit the loading message or send a new channel message.\n *\n * @remarks\n * - mode \"edit\" replaces the loading message (interaction response) with the final result. Uses applicationId and interactionToken from trigger variables. No bot permissions required.\n * - mode \"send\" sends a new message to a channel. Uses botToken and channelId from trigger variables. Returns a messageId that can be used with Edit Discord Message.\n * - Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\n * - URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\n * - Interaction tokens expire after 15 minutes.\n *\n * @example\n * ```typescript\n * const result = await agent.discordSendMessage({\n * mode: \"edit\",\n * text: ``,\n * });\n * ```\n */\n discordSendMessage(step: DiscordSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DiscordSendMessageStepOutput>>;\n\n /**\n * Download a video file\n *\n * @remarks\n * - Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\n * - Can save as mp4 or mp3\n *\n * @example\n * ```typescript\n * const result = await agent.downloadVideo({\n * videoUrl: ``,\n * format: \"mp4\",\n * });\n * ```\n */\n downloadVideo(step: DownloadVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DownloadVideoStepOutput>>;\n\n /**\n * Generate or enhance an image generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceImageGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceImageGenerationPrompt(step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceImageGenerationPromptStepOutput>>;\n\n /**\n * Generate or enhance a video generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceVideoGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceVideoGenerationPrompt(step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceVideoGenerationPromptStepOutput>>;\n\n /**\n * Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\n *\n * @remarks\n * - At least one search parameter must be provided.\n * - Returns enriched data from Apollo including contact details, employment info, and social profiles.\n *\n * @example\n * ```typescript\n * const result = await agent.enrichPerson({\n * params: {},\n * });\n * ```\n */\n enrichPerson(step: EnrichPersonStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnrichPersonStepOutput>>;\n\n /**\n * Extract audio MP3 from a video file\n *\n * @example\n * ```typescript\n * const result = await agent.extractAudioFromVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n extractAudioFromVideo(step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractAudioFromVideoStepOutput>>;\n\n /**\n * Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\n *\n * @remarks\n * - Best suited for PDFs and raw text/document files. For web pages, use the scrapeUrl step instead.\n * - Accepts a single URL, a comma-separated list of URLs, or a JSON array of URLs.\n * - Files are rehosted on the MindStudio CDN before extraction.\n * - Maximum file size is 50MB per URL.\n *\n * @example\n * ```typescript\n * const result = await agent.extractText({\n * url: ``,\n * });\n * ```\n */\n extractText(step: ExtractTextStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractTextStepOutput>>;\n\n /**\n * Fetch the full extracted text contents of a document in a data source.\n *\n * @remarks\n * - Loads a document by ID and returns its full extracted text content.\n * - The document must have been successfully processed (status \"done\").\n * - Also returns document metadata (name, summary, word count).\n *\n * @example\n * ```typescript\n * const result = await agent.fetchDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n fetchDataSourceDocument(step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchDataSourceDocumentStepOutput>>;\n\n /**\n * Fetch the contents of an existing Google Document.\n *\n * @remarks\n * - exportType controls the output format: \"html\" for HTML markup, \"markdown\" for Markdown, \"json\" for structured JSON, \"plain\" for plain text.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleDoc({\n * documentId: ``,\n * exportType: \"html\",\n * });\n * ```\n */\n fetchGoogleDoc(step: FetchGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleDocStepOutput>>;\n\n /**\n * Fetch contents of a Google Spreadsheet range.\n *\n * @remarks\n * - range uses A1 notation (e.g. \"Sheet1!A1:C10\"). Omit to fetch the entire first sheet.\n * - exportType controls the output format: \"csv\" for comma-separated values, \"json\" for structured JSON.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleSheet({\n * spreadsheetId: ``,\n * range: ``,\n * exportType: \"csv\",\n * });\n * ```\n */\n fetchGoogleSheet(step: FetchGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleSheetStepOutput>>;\n\n /**\n * Fetch recent message history from a Slack channel.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n *\n * @example\n * ```typescript\n * const result = await agent.fetchSlackChannelHistory({\n * channelId: ``,\n * });\n * ```\n */\n fetchSlackChannelHistory(step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchSlackChannelHistoryStepOutput>>;\n\n /**\n * Retrieve the captions/transcript for a YouTube video.\n *\n * @remarks\n * - Supports multiple languages via the language parameter.\n * - \"text\" export produces timestamped plain text; \"json\" export produces structured transcript data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeCaptions({\n * videoUrl: ``,\n * exportType: \"text\",\n * language: ``,\n * });\n * ```\n */\n fetchYoutubeCaptions(step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCaptionsStepOutput>>;\n\n /**\n * Retrieve metadata and recent videos for a YouTube channel.\n *\n * @remarks\n * - Accepts a YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID).\n * - Returns channel info and video listings as a JSON object.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeChannel({\n * channelUrl: ``,\n * });\n * ```\n */\n fetchYoutubeChannel(step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeChannelStepOutput>>;\n\n /**\n * Retrieve comments for a YouTube video.\n *\n * @remarks\n * - Paginates through comments (up to 5 pages).\n * - \"text\" export produces markdown-formatted text; \"json\" export produces structured comment data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeComments({\n * videoUrl: ``,\n * exportType: \"text\",\n * limitPages: ``,\n * });\n * ```\n */\n fetchYoutubeComments(step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCommentsStepOutput>>;\n\n /**\n * Retrieve metadata for a YouTube video (title, description, stats, channel info).\n *\n * @remarks\n * - Returns video metadata, channel info, and engagement stats.\n * - Video format data is excluded from the response.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n fetchYoutubeVideo(step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeVideoStepOutput>>;\n\n /**\n * Create a chart image using QuickChart (Chart.js) and return the URL.\n *\n * @remarks\n * - The data field must be a Chart.js-compatible JSON object serialized as a string.\n * - Supported chart types: bar, line, pie.\n *\n * @example\n * ```typescript\n * const result = await agent.generateChart({\n * chart: {},\n * });\n * ```\n */\n generateChart(step: GenerateChartStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateChartStepOutput>>;\n\n /**\n * Generate an image from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Images are automatically hosted on a CDN.\n * - In foreground mode, the image is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple images are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateImage({\n * prompt: ``,\n * });\n * ```\n */\n generateImage(step: GenerateImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateImageStepOutput>>;\n\n /**\n * Generate a lip sync video from provided audio and image.\n *\n * @remarks\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateLipsync({});\n * ```\n */\n generateLipsync(step: GenerateLipsyncStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateLipsyncStepOutput>>;\n\n /**\n * Generate an audio file from provided instructions (text) using a music model.\n *\n * @remarks\n * - The text field contains the instructions (prompt) for the music generation.\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateMusic({\n * text: ``,\n * });\n * ```\n */\n generateMusic(step: GenerateMusicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateMusicStepOutput>>;\n\n /**\n * Generate an HTML asset and export it as a webpage, PDF, or image\n *\n * @remarks\n * - Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \"generatePdf\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\n * - The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\n * - If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \"source\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\n * - Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\n * - Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\n *\n * @example\n * ```typescript\n * const result = await agent.generateAsset({\n * source: ``,\n * sourceType: \"html\",\n * outputFormat: \"pdf\",\n * pageSize: \"full\",\n * testData: {},\n * });\n * ```\n */\n generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /**\n * Convert a static image to an MP4\n *\n * @remarks\n * - Can use to create slides/intertitles/slates for video composition\n *\n * @example\n * ```typescript\n * const result = await agent.generateStaticVideoFromImage({\n * imageUrl: ``,\n * duration: ``,\n * });\n * ```\n */\n generateStaticVideoFromImage(step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateStaticVideoFromImageStepOutput>>;\n\n /**\n * Generate a video from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Videos are automatically hosted on a CDN.\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple videos are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateVideo({\n * prompt: ``,\n * });\n * ```\n */\n generateVideo(step: GenerateVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateVideoStepOutput>>;\n\n /**\n * Download attachments from a Gmail email and re-host them on CDN.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Attachments are uploaded to CDN and returned as URLs.\n * - Attachments larger than 25MB are skipped.\n * - Use the message ID from Search Gmail Emails, List Recent Gmail Emails, or Get Gmail Email steps.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailAttachments({\n * messageId: ``,\n * });\n * ```\n */\n getGmailAttachments(step: GetGmailAttachmentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailAttachmentsStepOutput>>;\n\n /**\n * Retrieve a specific draft from Gmail by draft ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns the draft content including subject, recipients, sender, and body.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailDraft({\n * draftId: ``,\n * });\n * ```\n */\n getGmailDraft(step: GetGmailDraftStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailDraftStepOutput>>;\n\n /**\n * Retrieve a specific email from Gmail by message ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns the email subject, sender, recipient, date, body (plain text preferred, falls back to HTML), and labels.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailEmail({\n * messageId: ``,\n * });\n * ```\n */\n getGmailEmail(step: GetGmailEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailEmailStepOutput>>;\n\n /**\n * Get the number of unread emails in the connected Gmail inbox.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns the unread message count for the inbox label.\n * - This is a lightweight call that does not fetch any email content.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailUnreadCount({});\n * ```\n */\n getGmailUnreadCount(step: GetGmailUnreadCountStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailUnreadCountStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleCalendarEvent({\n * eventId: ``,\n * exportType: \"json\",\n * });\n * ```\n */\n getGoogleCalendarEvent(step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleCalendarEventStepOutput>>;\n\n /**\n * Download a file from Google Drive and rehost it on the CDN. Returns a public CDN URL.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - Google-native files (Docs, Sheets, Slides) cannot be downloaded — use dedicated steps instead.\n * - Maximum file size: 200MB.\n * - The file is downloaded and re-uploaded to the CDN; the returned URL is publicly accessible.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleDriveFile({\n * fileId: ``,\n * });\n * ```\n */\n getGoogleDriveFile(step: GetGoogleDriveFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleDriveFileStepOutput>>;\n\n /**\n * Get metadata about a Google Spreadsheet including sheet names, row counts, and column counts.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - Returns the spreadsheet title and a list of all sheets with their dimensions.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleSheetInfo({\n * documentId: ``,\n * });\n * ```\n */\n getGoogleSheetInfo(step: GetGoogleSheetInfoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleSheetInfoStepOutput>>;\n\n /**\n * Get info about a media file\n *\n * @example\n * ```typescript\n * const result = await agent.getMediaMetadata({\n * mediaUrl: ``,\n * });\n * ```\n */\n getMediaMetadata(step: GetMediaMetadataStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetMediaMetadataStepOutput>>;\n\n /**\n * Make an HTTP request to an external endpoint and return the response.\n *\n * @remarks\n * - Supports GET, POST, PATCH, DELETE, and PUT methods.\n * - Body can be raw JSON/text, URL-encoded form data, or multipart form data.\n *\n * @example\n * ```typescript\n * const result = await agent.httpRequest({\n * url: ``,\n * method: ``,\n * headers: {},\n * queryParams: {},\n * body: ``,\n * bodyItems: {},\n * contentType: \"none\",\n * customContentType: ``,\n * });\n * ```\n */\n httpRequest(step: HttpRequestStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HttpRequestStepOutput>>;\n\n /**\n * Create a new company or update an existing one in HubSpot. Matches by domain.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a company with the given domain already exists, it is updated. Otherwise, a new one is created.\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateCompany({\n * company: {},\n * enabledProperties: [],\n * });\n * ```\n */\n hubspotCreateCompany(step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateCompanyStepOutput>>;\n\n /**\n * Create a new contact or update an existing one in HubSpot. Matches by email address.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a contact with the given email already exists, it is updated. Otherwise, a new one is created.\n * - If companyDomain is provided, the contact is associated with that company (creating the company if needed).\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateContact({\n * contact: {},\n * enabledProperties: [],\n * companyDomain: ``,\n * });\n * ```\n */\n hubspotCreateContact(step: HubspotCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateContactStepOutput>>;\n\n /**\n * Look up a HubSpot company by domain name or company ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the company is not found.\n * - When searching by domain, performs a search query then fetches the full company record.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetCompany({\n * searchBy: \"domain\",\n * companyDomain: ``,\n * companyId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetCompany(step: HubspotGetCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetCompanyStepOutput>>;\n\n /**\n * Look up a HubSpot contact by email address or contact ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the contact is not found.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetContact({\n * searchBy: \"email\",\n * contactEmail: ``,\n * contactId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetContact(step: HubspotGetContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetContactStepOutput>>;\n\n /**\n * Look up company information by domain using Hunter.io.\n *\n * @remarks\n * - Returns company name, description, location, industry, size, technologies, and more.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns null if the company is not found.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiCompanyEnrichment({\n * domain: ``,\n * });\n * ```\n */\n hunterApiCompanyEnrichment(step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiCompanyEnrichmentStepOutput>>;\n\n /**\n * Search for email addresses associated with a domain using Hunter.io.\n *\n * @remarks\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns a list of email addresses found for the domain along with organization info.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiDomainSearch({\n * domain: ``,\n * });\n * ```\n */\n hunterApiDomainSearch(step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiDomainSearchStepOutput>>;\n\n /**\n * Find an email address for a specific person at a domain using Hunter.io.\n *\n * @remarks\n * - Requires a first name, last name, and domain.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns the most likely email address with a confidence score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailFinder({\n * domain: ``,\n * firstName: ``,\n * lastName: ``,\n * });\n * ```\n */\n hunterApiEmailFinder(step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailFinderStepOutput>>;\n\n /**\n * Verify whether an email address is valid and deliverable using Hunter.io.\n *\n * @remarks\n * - Checks email format, MX records, SMTP server, and mailbox deliverability.\n * - Returns a status (\"valid\", \"invalid\", \"accept_all\", \"webmail\", \"disposable\", \"unknown\") and a score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailVerification({\n * email: ``,\n * });\n * ```\n */\n hunterApiEmailVerification(step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailVerificationStepOutput>>;\n\n /**\n * Look up professional information about a person by their email address using Hunter.io.\n *\n * @remarks\n * - Returns name, job title, social profiles, and company information.\n * - If the person is not found, returns an object with an error message instead of throwing.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiPersonEnrichment({\n * email: ``,\n * });\n * ```\n */\n hunterApiPersonEnrichment(step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiPersonEnrichmentStepOutput>>;\n\n /**\n * Replace a face in an image with a face from another image using AI.\n *\n * @remarks\n * - Requires both a target image and a face source image.\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageFaceSwap({\n * imageUrl: ``,\n * faceImageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageFaceSwap(step: ImageFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageFaceSwapStepOutput>>;\n\n /**\n * Remove watermarks from an image using AI.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageRemoveWatermark({\n * imageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageRemoveWatermark(step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageRemoveWatermarkStepOutput>>;\n\n /**\n * Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\n *\n * @example\n * ```typescript\n * const result = await agent.insertVideoClips({\n * baseVideoUrl: ``,\n * overlayVideos: [],\n * });\n * ```\n */\n insertVideoClips(step: InsertVideoClipsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<InsertVideoClipsStepOutput>>;\n\n /**\n * List all data sources for the current app.\n *\n * @remarks\n * - Returns metadata for every data source associated with the current app version.\n * - Each entry includes the data source ID, name, description, status, and document list.\n *\n * @example\n * ```typescript\n * const result = await agent.listDataSources({});\n * ```\n */\n listDataSources(step: ListDataSourcesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListDataSourcesStepOutput>>;\n\n /**\n * List drafts in the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns up to 50 drafts (default 10).\n * - The variable receives text or JSON depending on exportType.\n *\n * @example\n * ```typescript\n * const result = await agent.listGmailDrafts({\n * exportType: \"json\",\n * });\n * ```\n */\n listGmailDrafts(step: ListGmailDraftsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGmailDraftsStepOutput>>;\n\n /**\n * List all labels in the connected Gmail account. Use these label IDs or names with the Update Gmail Labels step.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns both system labels (INBOX, SENT, TRASH, etc.) and user-created labels.\n * - Label type is \"system\" for built-in labels or \"user\" for custom labels.\n *\n * @example\n * ```typescript\n * const result = await agent.listGmailLabels({});\n * ```\n */\n listGmailLabels(step: ListGmailLabelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGmailLabelsStepOutput>>;\n\n /**\n * List upcoming events from a Google Calendar, ordered by start time.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Only returns future events (timeMin = now).\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns structured events.\n *\n * @example\n * ```typescript\n * const result = await agent.listGoogleCalendarEvents({\n * limit: 0,\n * exportType: \"json\",\n * });\n * ```\n */\n listGoogleCalendarEvents(step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleCalendarEventsStepOutput>>;\n\n /**\n * List files in a Google Drive folder.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - If folderId is omitted, lists files in the root folder.\n * - Returns file metadata including name, type, size, and links.\n *\n * @example\n * ```typescript\n * const result = await agent.listGoogleDriveFiles({\n * exportType: \"json\",\n * });\n * ```\n */\n listGoogleDriveFiles(step: ListGoogleDriveFilesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleDriveFilesStepOutput>>;\n\n /**\n * List recent emails from the connected Gmail inbox.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns up to 100 emails (default 5), ordered by most recent first.\n * - Functionally equivalent to Search Gmail Emails with an \"in:inbox\" query.\n *\n * @example\n * ```typescript\n * const result = await agent.listRecentGmailEmails({\n * exportType: \"json\",\n * limit: ``,\n * });\n * ```\n */\n listRecentGmailEmails(step: ListRecentGmailEmailsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListRecentGmailEmailsStepOutput>>;\n\n /**\n * Route execution to different branches based on AI evaluation, comparison operators, or workflow jumps.\n *\n * @remarks\n * - Supports two modes: \"ai\" (default) uses an AI model to pick the most accurate statement; \"comparison\" uses operator-based checks.\n * - In AI mode, the model picks the most accurate statement from the list. All possible cases must be specified.\n * - In comparison mode, the context is the left operand and each case's condition is the right operand. First matching case wins. Use operator \"default\" as a fallback.\n * - Requires at least two cases.\n * - Each case can transition to a step in the current workflow (destinationStepId) or jump to another workflow (destinationWorkflowId).\n *\n * @example\n * ```typescript\n * const result = await agent.logic({\n * context: ``,\n * cases: [],\n * });\n * ```\n */\n logic(step: LogicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<LogicStepOutput>>;\n\n /**\n * Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your Make.com scenario.\n * - Input key-value pairs are sent as JSON in the POST body.\n * - Response format depends on the Make.com scenario configuration.\n *\n * @example\n * ```typescript\n * const result = await agent.makeDotComRunScenario({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n makeDotComRunScenario(step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MakeDotComRunScenarioStepOutput>>;\n\n /**\n * Merge one or more clips into a single audio file.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeAudio({\n * mp3Urls: [],\n * });\n * ```\n */\n mergeAudio(step: MergeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeAudioStepOutput>>;\n\n /**\n * Merge one or more clips into a single video.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeVideos({\n * videoUrls: [],\n * });\n * ```\n */\n mergeVideos(step: MergeVideosStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeVideosStepOutput>>;\n\n /**\n * Mix an audio track into a video\n *\n * @example\n * ```typescript\n * const result = await agent.mixAudioIntoVideo({\n * videoUrl: ``,\n * audioUrl: ``,\n * options: {},\n * });\n * ```\n */\n mixAudioIntoVideo(step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MixAudioIntoVideoStepOutput>>;\n\n /**\n * Mute a video file\n *\n * @example\n * ```typescript\n * const result = await agent.muteVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n muteVideo(step: MuteVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MuteVideoStepOutput>>;\n\n /**\n * Trigger an n8n workflow node via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your n8n workflow.\n * - Supports GET and POST methods with optional Basic authentication.\n * - For GET requests, input values are sent as query parameters. For POST, they are sent as JSON body.\n *\n * @example\n * ```typescript\n * const result = await agent.n8nRunNode({\n * method: ``,\n * authentication: \"none\",\n * user: ``,\n * password: ``,\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n n8nRunNode(step: N8nRunNodeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<N8nRunNodeStepOutput>>;\n\n /**\n * Create a new page in Notion as a child of an existing page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks (headings, paragraphs, lists, code, quotes).\n * - The page is created as a child of the specified parent page (pageId).\n *\n * @example\n * ```typescript\n * const result = await agent.notionCreatePage({\n * pageId: ``,\n * content: ``,\n * title: ``,\n * });\n * ```\n */\n notionCreatePage(step: NotionCreatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionCreatePageStepOutput>>;\n\n /**\n * Update the content of an existing Notion page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks.\n * - \"append\" mode adds content to the end of the page. \"overwrite\" mode deletes all existing blocks first.\n *\n * @example\n * ```typescript\n * const result = await agent.notionUpdatePage({\n * pageId: ``,\n * content: ``,\n * mode: \"append\",\n * });\n * ```\n */\n notionUpdatePage(step: NotionUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionUpdatePageStepOutput>>;\n\n /**\n * Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\n *\n * @remarks\n * - Can use a natural language \"smartQuery\" which is converted to Apollo search parameters by an AI model.\n * - Advanced params can override or supplement the smart query results.\n * - Optionally enriches returned people and/or their organizations for additional detail.\n * - Results are paginated. Use limit and page to control the result window.\n *\n * @example\n * ```typescript\n * const result = await agent.peopleSearch({\n * smartQuery: ``,\n * enrichPeople: false,\n * enrichOrganizations: false,\n * limit: ``,\n * page: ``,\n * params: {},\n * });\n * ```\n */\n peopleSearch(step: PeopleSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PeopleSearchStepOutput>>;\n\n /**\n * Create a post on LinkedIn from the connected account.\n *\n * @remarks\n * - Requires a LinkedIn OAuth connection (connectionId).\n * - Supports text posts, image posts, and video posts.\n * - Visibility controls who can see the post.\n *\n * @example\n * ```typescript\n * const result = await agent.postToLinkedIn({\n * message: ``,\n * visibility: \"PUBLIC\",\n * });\n * ```\n */\n postToLinkedIn(step: PostToLinkedInStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToLinkedInStepOutput>>;\n\n /**\n * Send a message to a Slack channel via a connected bot.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n * - Supports both simple text messages and slack blocks messages\n * - Text messages can use limited markdown (slack-only fomatting—e.g., headers are just rendered as bold)\n *\n * @example\n * ```typescript\n * const result = await agent.postToSlackChannel({\n * channelId: ``,\n * messageType: \"string\",\n * message: ``,\n * });\n * ```\n */\n postToSlackChannel(step: PostToSlackChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToSlackChannelStepOutput>>;\n\n /**\n * Create a post on X (Twitter) from the connected account.\n *\n * @remarks\n * - Requires an X OAuth connection (connectionId).\n * - Posts are plain text. Maximum 280 characters.\n *\n * @example\n * ```typescript\n * const result = await agent.postToX({\n * text: ``,\n * });\n * ```\n */\n postToX(step: PostToXStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToXStepOutput>>;\n\n /**\n * Send data to a Zapier Zap via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in the Zapier Zap settings\n * - Input keys and values are sent as the JSON body of the POST request\n * - The webhook response (JSON or plain text) is returned as the output\n *\n * @example\n * ```typescript\n * const result = await agent.postToZapier({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n postToZapier(step: PostToZapierStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToZapierStepOutput>>;\n\n /**\n * Search a vector data source (RAG) and return relevant document chunks.\n *\n * @remarks\n * - Queries a vectorized data source and returns the most relevant chunks.\n * - Useful for retrieval-augmented generation (RAG) workflows.\n *\n * @example\n * ```typescript\n * const result = await agent.queryDataSource({\n * dataSourceId: ``,\n * query: ``,\n * maxResults: 0,\n * });\n * ```\n */\n queryDataSource(step: QueryDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryDataSourceStepOutput>>;\n\n /**\n * Execute a SQL query against an external database connected to the workspace.\n *\n * @remarks\n * - Requires a database connection configured in the workspace.\n * - Supports PostgreSQL (including Supabase), MySQL, and MSSQL.\n * - Results can be returned as JSON or CSV.\n *\n * @example\n * ```typescript\n * const result = await agent.queryExternalDatabase({\n * query: ``,\n * outputFormat: \"json\",\n * });\n * ```\n */\n queryExternalDatabase(step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryExternalDatabaseStepOutput>>;\n\n /**\n * Replace personally identifiable information in text with placeholders using Microsoft Presidio.\n *\n * @remarks\n * - PII is replaced with entity type placeholders (e.g. \"Call me at <PHONE_NUMBER>\").\n * - If entities is empty, returns empty text immediately without processing.\n *\n * @example\n * ```typescript\n * const result = await agent.redactPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n redactPII(step: RedactPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RedactPIIStepOutput>>;\n\n /**\n * Remove the background from an image using AI, producing a transparent PNG.\n *\n * @remarks\n * - Uses the Bria background removal model via fal.ai.\n * - Output is re-hosted on the CDN as a PNG with transparency.\n *\n * @example\n * ```typescript\n * const result = await agent.removeBackgroundFromImage({\n * imageUrl: ``,\n * });\n * ```\n */\n removeBackgroundFromImage(step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RemoveBackgroundFromImageStepOutput>>;\n\n /**\n * Reply to an existing email in Gmail. The reply is threaded under the original message.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose and readonly scopes.\n * - The reply is sent to the original sender and threaded under the original message.\n * - messageType controls the body format: \"plain\", \"html\", or \"markdown\".\n *\n * @example\n * ```typescript\n * const result = await agent.replyToGmailEmail({\n * messageId: ``,\n * message: ``,\n * messageType: \"plain\",\n * });\n * ```\n */\n replyToGmailEmail(step: ReplyToGmailEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ReplyToGmailEmailStepOutput>>;\n\n /**\n * Resize a video file\n *\n * @example\n * ```typescript\n * const result = await agent.resizeVideo({\n * videoUrl: ``,\n * mode: \"fit\",\n * });\n * ```\n */\n resizeVideo(step: ResizeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ResizeVideoStepOutput>>;\n\n /**\n * Run a raw API connector to a third-party service\n *\n * @remarks\n * - Use the /developer/v2/helpers/connectors endpoint to list available services and actions.\n * - Use /developer/v2/helpers/connectors/{serviceId}/{actionId} to get the full input configuration for an action.\n * - Use /developer/v2/helpers/connections to list your available OAuth connections.\n * - The actionId format is \"serviceId/actionId\" (e.g., \"slack/send-message\").\n * - Pass a __connectionId to authenticate the request with a specific OAuth connection, otherwise the default will be used (if configured).\n *\n * @example\n * ```typescript\n * const result = await agent.runFromConnectorRegistry({\n * actionId: ``,\n * displayName: ``,\n * icon: ``,\n * configurationValues: {},\n * });\n * ```\n */\n runFromConnectorRegistry(step: RunFromConnectorRegistryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunFromConnectorRegistryStepOutput>>;\n\n /**\n * Run a packaged workflow (\"custom block\")\n *\n * @remarks\n * - From the user's perspective, packaged workflows are just ordinary blocks. Behind the scenes, they operate like packages/libraries in a programming language, letting the user execute custom functionality.\n * - Some of these packaged workflows are available as part of MindStudio's \"Standard Library\" and available to every user.\n * - Available packaged workflows are documented here as individual blocks, but the runPackagedWorkflow block is how they need to be wrapped in order to be executed correctly.\n *\n * @example\n * ```typescript\n * const result = await agent.runPackagedWorkflow({\n * appId: ``,\n * workflowId: ``,\n * inputVariables: {},\n * outputVariables: {},\n * name: ``,\n * });\n * ```\n */\n runPackagedWorkflow(step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunPackagedWorkflowStepOutput>>;\n\n /**\n * Scrape a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPage({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPage(step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPageStepOutput>>;\n\n /**\n * Get all the posts for a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPosts({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPosts(step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPostsStepOutput>>;\n\n /**\n * Get all the comments for an Instagram post\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramComments({\n * postUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramComments(step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramCommentsStepOutput>>;\n\n /**\n * Scrape an Instagram profile's mentions\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramMentions({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramMentions(step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramMentionsStepOutput>>;\n\n /**\n * Get all the posts for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramPosts({\n * profileUrl: ``,\n * resultsLimit: ``,\n * onlyPostsNewerThan: ``,\n * });\n * ```\n */\n scrapeInstagramPosts(step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramPostsStepOutput>>;\n\n /**\n * Scrape an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeInstagramProfile(step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramProfileStepOutput>>;\n\n /**\n * Get all the reels for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramReels({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramReels(step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramReelsStepOutput>>;\n\n /**\n * Scrape public company data from a LinkedIn company page.\n *\n * @remarks\n * - Requires a LinkedIn company URL (e.g. https://www.linkedin.com/company/mindstudioai).\n * - Returns structured company data including description, employees, updates, and similar companies.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInCompany({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInCompany(step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInCompanyStepOutput>>;\n\n /**\n * Scrape public profile data from a LinkedIn profile page.\n *\n * @remarks\n * - Requires a LinkedIn profile URL (e.g. https://www.linkedin.com/in/username).\n * - Returns structured profile data including experience, education, articles, and activities.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInProfile(step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInProfileStepOutput>>;\n\n /**\n * Scrape a Meta Threads profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeMetaThreadsProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeMetaThreadsProfile(step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeMetaThreadsProfileStepOutput>>;\n\n /**\n * Extract text, HTML, or structured content from one or more web pages.\n *\n * @remarks\n * - Accepts a single URL or multiple URLs (as a JSON array, comma-separated, or newline-separated).\n * - Output format controls the result shape: \"text\" returns markdown, \"html\" returns raw HTML, \"json\" returns structured scraper data.\n * - Can optionally capture a screenshot of each page.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeUrl({\n * url: ``,\n * });\n * ```\n */\n scrapeUrl(step: ScrapeUrlStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeUrlStepOutput>>;\n\n /**\n * Scrape data from a single X (Twitter) post by URL.\n *\n * @remarks\n * - Returns structured post data (text, html, optional json/screenshot/metadata).\n * - Optionally saves the text content to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXPost({\n * url: ``,\n * });\n * ```\n */\n scrapeXPost(step: ScrapeXPostStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXPostStepOutput>>;\n\n /**\n * Scrape public profile data from an X (Twitter) account by URL.\n *\n * @remarks\n * - Returns structured profile data.\n * - Optionally saves the result to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeXProfile(step: ScrapeXProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXProfileStepOutput>>;\n\n /**\n * Search for emails in the connected Gmail account using a Gmail search query. To list recent inbox emails, pass an empty query string.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Uses Gmail search syntax (e.g. \"from:user@example.com\", \"subject:invoice\", \"is:unread\").\n * - To list recent inbox emails, use an empty query string or \"in:inbox\".\n * - Returns up to 100 emails (default 5). The variable receives text or JSON depending on exportType.\n * - The direct execution output always returns structured email objects.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGmailEmails({\n * query: ``,\n * exportType: \"json\",\n * limit: ``,\n * });\n * ```\n */\n searchGmailEmails(step: SearchGmailEmailsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGmailEmailsStepOutput>>;\n\n /**\n * Search the web using Google and return structured results.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogle({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogle(step: SearchGoogleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleStepOutput>>;\n\n /**\n * Search for events in a Google Calendar by keyword, date range, or both.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Supports keyword search via \"query\" and date filtering via \"timeMin\"/\"timeMax\" (ISO 8601 format).\n * - Unlike \"List Events\" which only shows future events, this allows searching past events too.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleCalendarEvents({\n * exportType: \"json\",\n * });\n * ```\n */\n searchGoogleCalendarEvents(step: SearchGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleCalendarEventsStepOutput>>;\n\n /**\n * Search for files in Google Drive by keyword.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - Searches file content and names using Google Drive's fullText search.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleDrive({\n * query: ``,\n * exportType: \"json\",\n * });\n * ```\n */\n searchGoogleDrive(step: SearchGoogleDriveStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleDriveStepOutput>>;\n\n /**\n * Search Google Images and return image results with URLs and metadata.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleImages({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleImages(step: SearchGoogleImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleImagesStepOutput>>;\n\n /**\n * Search Google News for recent news articles matching a query.\n *\n * @remarks\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleNews({\n * text: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleNews(step: SearchGoogleNewsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleNewsStepOutput>>;\n\n /**\n * Fetch Google Trends data for a search term.\n *\n * @remarks\n * - date accepts shorthand (\"now 1-H\", \"today 1-m\", \"today 5-y\", etc.) or custom \"yyyy-mm-dd yyyy-mm-dd\" ranges.\n * - data_type controls the shape of returned data: TIMESERIES, GEO_MAP, GEO_MAP_0, RELATED_TOPICS, or RELATED_QUERIES.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleTrends({\n * text: ``,\n * hl: ``,\n * geo: ``,\n * data_type: \"TIMESERIES\",\n * cat: ``,\n * date: ``,\n * ts: ``,\n * });\n * ```\n */\n searchGoogleTrends(step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleTrendsStepOutput>>;\n\n /**\n * Search the web using the Perplexity API and return structured results.\n *\n * @remarks\n * - Defaults to US results. Use countryCode (ISO code) to filter by country.\n * - Returns 10 results by default, configurable from 1 to 20.\n * - The variable receives text or JSON depending on exportType. The direct execution output always returns structured results.\n *\n * @example\n * ```typescript\n * const result = await agent.searchPerplexity({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchPerplexity(step: SearchPerplexityStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchPerplexityStepOutput>>;\n\n /**\n * Search recent X (Twitter) posts matching a query.\n *\n * @remarks\n * - Searches only the past 7 days of posts.\n * - Query supports X API v2 search operators (up to 512 characters).\n * Available search operators in query:\n * | Operator | Description |\n * | -----------------| -------------------------------------------------|\n * | from: | Posts from a specific user (e.g., from:elonmusk) |\n * | to: | Posts sent to a specific user (e.g., to:NASA) |\n * | @ | Mentions a user (e.g., @openai) |\n * | # | Hashtag search (e.g., #AI) |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | lang: | Filters by language (e.g., lang:en) |\n * | - | Excludes specific terms (e.g., -spam) |\n * | () | Groups terms or operators (e.g., (AI OR ML)) |\n * | AND, OR, NOT | Boolean logic for combining or excluding terms |\n * Conjunction-Required Operators (must be combined with a standalone operator):\n * | Operator | Description |\n * | ------------ | -----------------------------------------------|\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * For example, has:media alone is invalid, but #AI has:media is valid.\n *\n * @example\n * ```typescript\n * const result = await agent.searchXPosts({\n * query: ``,\n * scope: \"recent\",\n * options: {},\n * });\n * ```\n */\n searchXPosts(step: SearchXPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchXPostsStepOutput>>;\n\n /**\n * Search for YouTube videos by keyword.\n *\n * @remarks\n * - Supports pagination (up to 5 pages) and country/language filters.\n * - Use the filter/filterType fields for YouTube search parameter (sp) filters.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutube({\n * query: ``,\n * limitPages: ``,\n * filter: ``,\n * filterType: ``,\n * });\n * ```\n */\n searchYoutube(step: SearchYoutubeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeStepOutput>>;\n\n /**\n * Retrieve trending videos on YouTube by category and region.\n *\n * @remarks\n * - Categories: \"now\" (trending now), \"music\", \"gaming\", \"films\".\n * - Supports country and language filtering.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutubeTrends({\n * bp: \"now\",\n * hl: ``,\n * gl: ``,\n * });\n * ```\n */\n searchYoutubeTrends(step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeTrendsStepOutput>>;\n\n /**\n * Send an email to one or more configured recipient addresses.\n *\n * @remarks\n * - Recipient email addresses are resolved from OAuth connections configured by the app creator. The user running the workflow does not specify the recipient directly.\n * - If the body is a URL to a hosted HTML file on the CDN, the HTML is fetched and used as the email body.\n * - When generateHtml is enabled, the body text is converted to a styled HTML email using an AI model.\n * - connectionId can be a comma-separated list to send to multiple recipients.\n * - The special connectionId \"trigger_email\" uses the email address that triggered the workflow.\n *\n * @example\n * ```typescript\n * const result = await agent.sendEmail({\n * subject: ``,\n * body: ``,\n * });\n * ```\n */\n sendEmail(step: SendEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendEmailStepOutput>>;\n\n /**\n * Send an existing draft from the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose scope.\n * - The draft is sent and removed from the Drafts folder.\n * - Use the draft ID returned by the Create Gmail Draft or List Gmail Drafts steps.\n *\n * @example\n * ```typescript\n * const result = await agent.sendGmailDraft({\n * draftId: ``,\n * });\n * ```\n */\n sendGmailDraft(step: SendGmailDraftStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendGmailDraftStepOutput>>;\n\n /**\n * Send an email from the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose scope.\n * - messageType controls the body format: \"plain\" for plain text, \"html\" for raw HTML, \"markdown\" for auto-converted markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.sendGmailMessage({\n * to: ``,\n * subject: ``,\n * message: ``,\n * messageType: \"plain\",\n * });\n * ```\n */\n sendGmailMessage(step: SendGmailMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendGmailMessageStepOutput>>;\n\n /**\n * Send an SMS or MMS message to a phone number configured via OAuth connection.\n *\n * @remarks\n * - User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\n * - If mediaUrls are provided, the message is sent as MMS instead of SMS\n * - MMS supports up to 10 media URLs (images, video, audio, PDF) with a 5MB limit per file\n * - MMS is only supported on US and Canadian carriers; international numbers will receive SMS only (media silently dropped)\n *\n * @example\n * ```typescript\n * const result = await agent.sendSMS({\n * body: ``,\n * });\n * ```\n */\n sendSMS(step: SendSMSStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendSMSStepOutput>>;\n\n /**\n * Mark one or more Gmail emails as read or unread.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail modify scope.\n * - Accepts one or more message IDs as a comma-separated string or array.\n * - Set markAsRead to true to mark as read, false to mark as unread.\n *\n * @example\n * ```typescript\n * const result = await agent.setGmailReadStatus({\n * messageIds: ``,\n * markAsRead: false,\n * });\n * ```\n */\n setGmailReadStatus(step: SetGmailReadStatusStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetGmailReadStatusStepOutput>>;\n\n /**\n * Set the title of the agent run for the user's history\n *\n * @example\n * ```typescript\n * const result = await agent.setRunTitle({\n * title: ``,\n * });\n * ```\n */\n setRunTitle(step: SetRunTitleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetRunTitleStepOutput>>;\n\n /**\n * Explicitly set a variable to a given value.\n *\n * @remarks\n * - Useful for bootstrapping global variables or setting constants.\n * - The variable name and value both support variable interpolation.\n * - The type field is a UI hint only (controls input widget in the editor).\n *\n * @example\n * ```typescript\n * const result = await agent.setVariable({\n * value: ``,\n * });\n * ```\n */\n setVariable(step: SetVariableStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetVariableStepOutput>>;\n\n /**\n * Edit a previously sent Telegram message. Use with the message ID returned by Send Telegram Message.\n *\n * @remarks\n * - Only text messages sent by the bot can be edited.\n * - The messageId is returned by the Send Telegram Message step.\n * - Common pattern: send a \"Processing...\" message, do work, then edit it with the result.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramEditMessage({\n * botToken: ``,\n * chatId: ``,\n * messageId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramEditMessage(step: TelegramEditMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramEditMessageStepOutput>>;\n\n /**\n * Send a reply to a specific Telegram message. The reply will be visually threaded in the chat.\n *\n * @remarks\n * - Use the rawMessage.message_id from the incoming trigger variables to reply to the user's message.\n * - Especially useful in group chats where replies provide context.\n * - Returns the sent message ID, which can be used with Edit Telegram Message.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramReplyToMessage({\n * botToken: ``,\n * chatId: ``,\n * replyToMessageId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramReplyToMessage(step: TelegramReplyToMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramReplyToMessageStepOutput>>;\n\n /**\n * Send an audio file to a Telegram chat as music or a voice note via a bot.\n *\n * @remarks\n * - \"audio\" mode sends as a standard audio file. \"voice\" mode sends as a voice message (re-uploads the file for large file support).\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendAudio({\n * botToken: ``,\n * chatId: ``,\n * audioUrl: ``,\n * mode: \"audio\",\n * });\n * ```\n */\n telegramSendAudio(step: TelegramSendAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendAudioStepOutput>>;\n\n /**\n * Send a document/file to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendFile({\n * botToken: ``,\n * chatId: ``,\n * fileUrl: ``,\n * });\n * ```\n */\n telegramSendFile(step: TelegramSendFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendFileStepOutput>>;\n\n /**\n * Send an image to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendImage({\n * botToken: ``,\n * chatId: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n telegramSendImage(step: TelegramSendImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendImageStepOutput>>;\n\n /**\n * Send a text message to a Telegram chat via a bot.\n *\n * @remarks\n * - Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\n * - botToken format is \"botId:token\" — both parts are required.\n * - Returns the sent message ID, which can be used with Edit Telegram Message to update the message later.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendMessage({\n * botToken: ``,\n * chatId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramSendMessage(step: TelegramSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendMessageStepOutput>>;\n\n /**\n * Send a video to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendVideo({\n * botToken: ``,\n * chatId: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n telegramSendVideo(step: TelegramSendVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendVideoStepOutput>>;\n\n /**\n * Show the \"typing...\" indicator in a Telegram chat via a bot.\n *\n * @remarks\n * - The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSetTyping({\n * botToken: ``,\n * chatId: ``,\n * });\n * ```\n */\n telegramSetTyping(step: TelegramSetTypingStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSetTypingStepOutput>>;\n\n /**\n * Generate an audio file from provided text using a speech model.\n *\n * @remarks\n * - The text field contains the exact words to be spoken (not instructions).\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.textToSpeech({\n * text: ``,\n * });\n * ```\n */\n textToSpeech(step: TextToSpeechStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TextToSpeechStepOutput>>;\n\n /**\n * Convert an audio file to text using a transcription model.\n *\n * @remarks\n * - The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\n *\n * @example\n * ```typescript\n * const result = await agent.transcribeAudio({\n * audioUrl: ``,\n * prompt: ``,\n * });\n * ```\n */\n transcribeAudio(step: TranscribeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TranscribeAudioStepOutput>>;\n\n /**\n * Trim an audio or video clip\n *\n * @example\n * ```typescript\n * const result = await agent.trimMedia({\n * inputUrl: ``,\n * });\n * ```\n */\n trimMedia(step: TrimMediaStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TrimMediaStepOutput>>;\n\n /**\n * Add or remove labels on Gmail messages, identified by message IDs or a search query.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail modify scope.\n * - Provide either a query (Gmail search syntax) or explicit messageIds to target messages.\n * - Label IDs can be label names or Gmail label IDs — names are resolved automatically.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGmailLabels({\n * query: ``,\n * messageIds: ``,\n * addLabelIds: ``,\n * removeLabelIds: ``,\n * });\n * ```\n */\n updateGmailLabels(step: UpdateGmailLabelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGmailLabelsStepOutput>>;\n\n /**\n * Update an existing event on a Google Calendar. Only specified fields are changed.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Fetches the existing event first, then applies only the provided updates. Omitted fields are left unchanged.\n * - Attendees are specified as one email address per line, and replace the entire attendee list.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleCalendarEvent({\n * eventId: ``,\n * });\n * ```\n */\n updateGoogleCalendarEvent(step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleCalendarEventStepOutput>>;\n\n /**\n * Update the contents of an existing Google Document.\n *\n * @remarks\n * - operationType controls how content is applied: \"addToTop\" prepends, \"addToBottom\" appends, \"overwrite\" replaces all content.\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleDoc({\n * documentId: ``,\n * text: ``,\n * textType: \"plain\",\n * operationType: \"addToTop\",\n * });\n * ```\n */\n updateGoogleDoc(step: UpdateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleDocStepOutput>>;\n\n /**\n * Update a Google Spreadsheet with new data.\n *\n * @remarks\n * - operationType controls how data is written: \"addToBottom\" appends rows, \"overwrite\" replaces all data, \"range\" writes to a specific cell range.\n * - Data should be provided as CSV in the text field.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleSheet({\n * text: ``,\n * spreadsheetId: ``,\n * range: ``,\n * operationType: \"addToBottom\",\n * });\n * ```\n */\n updateGoogleSheet(step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleSheetStepOutput>>;\n\n /**\n * Upload a file into an existing data source from a URL or raw text content.\n *\n * @remarks\n * - If \"file\" is a single URL, the file is downloaded from that URL and uploaded.\n * - If \"file\" is any other string, a .txt document is created from that content and uploaded.\n * - The block waits (polls) for processing to complete before transitioning, up to 5 minutes.\n * - Once processing finishes, vectors are loaded into Milvus so the data source is immediately queryable.\n * - Supported file types (when using a URL) are the same as the data source upload UI (PDF, DOCX, TXT, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.uploadDataSourceDocument({\n * dataSourceId: ``,\n * file: ``,\n * fileName: ``,\n * });\n * ```\n */\n uploadDataSourceDocument(step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UploadDataSourceDocumentStepOutput>>;\n\n /**\n * Increase the resolution of an image using AI upscaling.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleImage({\n * imageUrl: ``,\n * targetResolution: \"2k\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleImage(step: UpscaleImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleImageStepOutput>>;\n\n /**\n * Upscale a video file\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleVideo({\n * videoUrl: ``,\n * targetResolution: \"720p\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleVideo(step: UpscaleVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleVideoStepOutput>>;\n\n /**\n * Send a message to an AI model and return the response, or echo a system message.\n *\n * @remarks\n * - Source \"user\" sends the message to an LLM and returns the model's response.\n * - Source \"system\" echoes the message content directly (no AI call).\n * - Mode \"background\" saves the result to a variable. Mode \"foreground\" streams it to the user (not available in direct execution).\n * - Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\n *\n * @example\n * ```typescript\n * const result = await agent.generateText({\n * message: ``,\n * });\n * ```\n */\n generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /**\n * Swap faces in a video file\n *\n * @example\n * ```typescript\n * const result = await agent.videoFaceSwap({\n * videoUrl: ``,\n * faceImageUrl: ``,\n * targetIndex: 0,\n * engine: ``,\n * });\n * ```\n */\n videoFaceSwap(step: VideoFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoFaceSwapStepOutput>>;\n\n /**\n * Remove or replace background from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveBackground({\n * videoUrl: ``,\n * newBackground: \"transparent\",\n * engine: ``,\n * });\n * ```\n */\n videoRemoveBackground(step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveBackgroundStepOutput>>;\n\n /**\n * Remove a watermark from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveWatermark({\n * videoUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n videoRemoveWatermark(step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveWatermarkStepOutput>>;\n\n /**\n * Overlay a watermark image onto another image.\n *\n * @remarks\n * - The watermark is placed at the specified corner with configurable padding and width.\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkImage({\n * imageUrl: ``,\n * watermarkImageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkImage(step: WatermarkImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkImageStepOutput>>;\n\n /**\n * Add an image watermark to a video\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkVideo({\n * videoUrl: ``,\n * imageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkVideo(step: WatermarkVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkVideoStepOutput>>;\n\n}\n\n/** @internal Attaches typed step methods to the MindStudioAgent prototype. */\nexport function applyStepMethods(AgentClass: new (...args: any[]) => any): void {\n const proto = AgentClass.prototype;\n\n proto.activeCampaignAddNote = function (step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignAddNote\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.activeCampaignCreateContact = function (step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignCreateContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.addSubtitlesToVideo = function (step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"addSubtitlesToVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableCreateUpdateRecord = function (step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableCreateUpdateRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableDeleteRecord = function (step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableDeleteRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetRecord = function (step: AirtableGetRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetTableRecords = function (step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetTableRecords\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeImage = function (step: AnalyzeImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeVideo = function (step: AnalyzeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.captureThumbnail = function (step: CaptureThumbnailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"captureThumbnail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdatePage = function (step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdateRow = function (step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdateRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaFindRow = function (step: CodaFindRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaFindRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetPage = function (step: CodaGetPageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetPage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetTableRows = function (step: CodaGetTableRowsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetTableRows\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.convertPdfToImages = function (step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"convertPdfToImages\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createDataSource = function (step: CreateDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGmailDraft = function (step: CreateGmailDraftStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGmailDraft\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleCalendarEvent = function (step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleDoc = function (step: CreateGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleSheet = function (step: CreateGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSource = function (step: DeleteDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSourceDocument = function (step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteGmailEmail = function (step: DeleteGmailEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGmailEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteGoogleCalendarEvent = function (step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteGoogleSheetRows = function (step: DeleteGoogleSheetRowsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGoogleSheetRows\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.detectChanges = function (step: DetectChangesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"detectChanges\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.detectPII = function (step: DetectPIIStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"detectPII\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.discordEditMessage = function (step: DiscordEditMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"discordEditMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.discordSendFollowUp = function (step: DiscordSendFollowUpStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"discordSendFollowUp\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.discordSendMessage = function (step: DiscordSendMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"discordSendMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.downloadVideo = function (step: DownloadVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"downloadVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.enhanceImageGenerationPrompt = function (step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"enhanceImageGenerationPrompt\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.enhanceVideoGenerationPrompt = function (step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"enhanceVideoGenerationPrompt\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.enrichPerson = function (step: EnrichPersonStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"enrichPerson\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.extractAudioFromVideo = function (step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"extractAudioFromVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.extractText = function (step: ExtractTextStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"extractText\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchDataSourceDocument = function (step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleDoc = function (step: FetchGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleSheet = function (step: FetchGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchSlackChannelHistory = function (step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchSlackChannelHistory\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeCaptions = function (step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeCaptions\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeChannel = function (step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeChannel\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeComments = function (step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeComments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeVideo = function (step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateChart = function (step: GenerateChartStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateChart\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateImage = function (step: GenerateImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateLipsync = function (step: GenerateLipsyncStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateLipsync\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateMusic = function (step: GenerateMusicStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateMusic\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateAsset = function (step: GeneratePdfStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generatePdf\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateStaticVideoFromImage = function (step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateStaticVideoFromImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateVideo = function (step: GenerateVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailAttachments = function (step: GetGmailAttachmentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailAttachments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailDraft = function (step: GetGmailDraftStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailDraft\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailEmail = function (step: GetGmailEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailUnreadCount = function (step: GetGmailUnreadCountStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailUnreadCount\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGoogleCalendarEvent = function (step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGoogleDriveFile = function (step: GetGoogleDriveFileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleDriveFile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGoogleSheetInfo = function (step: GetGoogleSheetInfoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleSheetInfo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getMediaMetadata = function (step: GetMediaMetadataStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getMediaMetadata\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.httpRequest = function (step: HttpRequestStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"httpRequest\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotCreateCompany = function (step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotCreateCompany\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotCreateContact = function (step: HubspotCreateContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotCreateContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotGetCompany = function (step: HubspotGetCompanyStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotGetCompany\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotGetContact = function (step: HubspotGetContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotGetContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiCompanyEnrichment = function (step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiCompanyEnrichment\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiDomainSearch = function (step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiDomainSearch\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiEmailFinder = function (step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiEmailFinder\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiEmailVerification = function (step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiEmailVerification\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiPersonEnrichment = function (step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiPersonEnrichment\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.imageFaceSwap = function (step: ImageFaceSwapStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"imageFaceSwap\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.imageRemoveWatermark = function (step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"imageRemoveWatermark\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.insertVideoClips = function (step: InsertVideoClipsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"insertVideoClips\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listDataSources = function (step: ListDataSourcesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listDataSources\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGmailDrafts = function (step: ListGmailDraftsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGmailDrafts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGmailLabels = function (step: ListGmailLabelsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGmailLabels\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGoogleCalendarEvents = function (step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGoogleCalendarEvents\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGoogleDriveFiles = function (step: ListGoogleDriveFilesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGoogleDriveFiles\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listRecentGmailEmails = function (step: ListRecentGmailEmailsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listRecentGmailEmails\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.logic = function (step: LogicStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"logic\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.makeDotComRunScenario = function (step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"makeDotComRunScenario\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.mergeAudio = function (step: MergeAudioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"mergeAudio\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.mergeVideos = function (step: MergeVideosStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"mergeVideos\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.mixAudioIntoVideo = function (step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"mixAudioIntoVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.muteVideo = function (step: MuteVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"muteVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.n8nRunNode = function (step: N8nRunNodeStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"n8nRunNode\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.notionCreatePage = function (step: NotionCreatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"notionCreatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.notionUpdatePage = function (step: NotionUpdatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"notionUpdatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.peopleSearch = function (step: PeopleSearchStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"peopleSearch\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToLinkedIn = function (step: PostToLinkedInStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToLinkedIn\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToSlackChannel = function (step: PostToSlackChannelStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToSlackChannel\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToX = function (step: PostToXStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToX\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToZapier = function (step: PostToZapierStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToZapier\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.queryDataSource = function (step: QueryDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"queryDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.queryExternalDatabase = function (step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"queryExternalDatabase\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.redactPII = function (step: RedactPIIStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"redactPII\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.removeBackgroundFromImage = function (step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"removeBackgroundFromImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.replyToGmailEmail = function (step: ReplyToGmailEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"replyToGmailEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.resizeVideo = function (step: ResizeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"resizeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.runFromConnectorRegistry = function (step: RunFromConnectorRegistryStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"runFromConnectorRegistry\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.runPackagedWorkflow = function (step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"runPackagedWorkflow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeFacebookPage = function (step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeFacebookPage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeFacebookPosts = function (step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeFacebookPosts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramComments = function (step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramComments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramMentions = function (step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramMentions\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramPosts = function (step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramPosts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramProfile = function (step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramReels = function (step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramReels\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeLinkedInCompany = function (step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeLinkedInCompany\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeLinkedInProfile = function (step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeLinkedInProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeMetaThreadsProfile = function (step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeMetaThreadsProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeUrl = function (step: ScrapeUrlStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeUrl\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeXPost = function (step: ScrapeXPostStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeXPost\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeXProfile = function (step: ScrapeXProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeXProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGmailEmails = function (step: SearchGmailEmailsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGmailEmails\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogle = function (step: SearchGoogleStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogle\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleCalendarEvents = function (step: SearchGoogleCalendarEventsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleCalendarEvents\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleDrive = function (step: SearchGoogleDriveStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleDrive\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleImages = function (step: SearchGoogleImagesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleImages\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleNews = function (step: SearchGoogleNewsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleNews\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleTrends = function (step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleTrends\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchPerplexity = function (step: SearchPerplexityStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchPerplexity\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchXPosts = function (step: SearchXPostsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchXPosts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchYoutube = function (step: SearchYoutubeStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchYoutube\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchYoutubeTrends = function (step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchYoutubeTrends\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendEmail = function (step: SendEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendGmailDraft = function (step: SendGmailDraftStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendGmailDraft\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendGmailMessage = function (step: SendGmailMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendGmailMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendSMS = function (step: SendSMSStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendSMS\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.setGmailReadStatus = function (step: SetGmailReadStatusStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"setGmailReadStatus\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.setRunTitle = function (step: SetRunTitleStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"setRunTitle\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.setVariable = function (step: SetVariableStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"setVariable\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramEditMessage = function (step: TelegramEditMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramEditMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramReplyToMessage = function (step: TelegramReplyToMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramReplyToMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendAudio = function (step: TelegramSendAudioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendAudio\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendFile = function (step: TelegramSendFileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendFile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendImage = function (step: TelegramSendImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendMessage = function (step: TelegramSendMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendVideo = function (step: TelegramSendVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSetTyping = function (step: TelegramSetTypingStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSetTyping\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.textToSpeech = function (step: TextToSpeechStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"textToSpeech\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.transcribeAudio = function (step: TranscribeAudioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"transcribeAudio\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.trimMedia = function (step: TrimMediaStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"trimMedia\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGmailLabels = function (step: UpdateGmailLabelsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGmailLabels\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGoogleCalendarEvent = function (step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGoogleDoc = function (step: UpdateGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGoogleSheet = function (step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.uploadDataSourceDocument = function (step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"uploadDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleImage = function (step: UpscaleImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleVideo = function (step: UpscaleVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateText = function (step: UserMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"userMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoFaceSwap = function (step: VideoFaceSwapStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoFaceSwap\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveBackground = function (step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveBackground\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveWatermark = function (step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveWatermark\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkImage = function (step: WatermarkImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkVideo = function (step: WatermarkVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-05T13:37:48.795Z\n\n\n/** An AI model available on MindStudio. */\nexport interface MindStudioModel {\n id?: string;\n /** Display name of the model. */\n name?: string;\n /** One of: `llm_chat`, `image_generation`, `video_generation`, `video_analysis`, `text_to_speech`, `vision`, `transcription`. */\n type?: \"llm_chat\" | \"image_generation\" | \"video_generation\" | \"video_analysis\" | \"text_to_speech\" | \"vision\" | \"transcription\";\n maxTemperature?: number;\n maxResponseSize?: number;\n /** Accepted input types for this model (text, imageUrl, videoUrl, etc.). */\n inputs?: Record<string, unknown>[];\n}\n\n/** A lightweight AI model summary. */\nexport interface MindStudioModelSummary {\n id?: string;\n /** Display name of the model. */\n name?: string;\n /** One of: `llm_chat`, `image_generation`, `video_generation`, `video_analysis`, `text_to_speech`, `vision`, `transcription`. */\n type?: \"llm_chat\" | \"image_generation\" | \"video_generation\" | \"video_analysis\" | \"text_to_speech\" | \"vision\" | \"transcription\";\n /** Comma-separated tags for the model. */\n tags?: string;\n}\n\n/** A connector service with its available actions. */\nexport interface ConnectorService {\n id?: string;\n /** Display name of the connector service. */\n name?: string;\n icon?: string;\n /** Available actions for this connector service. */\n actions?: {\n id?: string;\n /** Display name of the action. */\n name?: string;\n }[];\n}\n\n/** Full configuration details for a connector action. */\nexport interface ConnectorActionDetail {\n id?: string;\n /** Display name of the action. */\n name?: string;\n /** What this action does. */\n description?: string;\n /** Short usage guidance for the action. */\n quickHelp?: string;\n /** Input field groups required to call this action. */\n configuration?: ({\n title?: string;\n items?: ({\n label?: string;\n helpText?: string;\n /** The variable name to use when passing this input. */\n variable?: string;\n /** One of: `text`, `outputVariableName`, `select`. */\n type?: \"text\" | \"outputVariableName\" | \"select\";\n defaultValue?: string;\n placeholder?: string;\n selectOptions?: {\n options?: {\n label?: string;\n value?: string;\n }[];\n };\n })[];\n })[];\n}\n\n/** An OAuth connection to a third-party service. */\nexport interface Connection {\n /** Connection ID. Pass this when executing connector actions. */\n id?: string;\n /** The integration provider (e.g., slack, google, github). */\n provider?: string;\n /** Display name or account identifier for the connection. */\n name?: string;\n}\n\n/** A single cost estimate entry for a step. */\nexport interface StepCostEstimateEntry {\n /** Billing event type identifier. */\n eventType?: string;\n /** Human-readable label for the cost. */\n label?: string;\n /** Price per unit in billing units (1/1,000,000,000th of a credit). */\n unitPrice?: number;\n /** What constitutes a unit (e.g. \"token\", \"request\"). */\n unitType?: string;\n /** Estimated total cost in billing units, or null if not estimable. */\n estimatedCost?: number;\n /** Number of billable units. */\n quantity?: number;\n}\n\n/** Supported model type categories for filtering. */\nexport type ModelType = \"llm_chat\" | \"image_generation\" | \"video_generation\" | \"video_analysis\" | \"text_to_speech\" | \"vision\" | \"transcription\";\n\nexport interface HelperMethods {\n /**\n * List all available AI models.\n *\n * Returns models across all categories (chat, image generation, video, etc.).\n * Use `listModelsByType()` to filter by category.\n */\n listModels(): Promise<{ models: MindStudioModel[] }>;\n\n /**\n * List AI models filtered by type.\n *\n * @param modelType - The category to filter by (e.g. \"llm_chat\", \"image_generation\").\n */\n listModelsByType(modelType: ModelType): Promise<{ models: MindStudioModel[] }>;\n\n /**\n * List all available AI models (summary). Returns only id, name, type, and tags.\n *\n * Suitable for display or consumption inside a model context window.\n */\n listModelsSummary(): Promise<{ models: MindStudioModelSummary[] }>;\n\n /**\n * List AI models (summary) filtered by type.\n *\n * @param modelType - The category to filter by (e.g. \"llm_chat\", \"image_generation\").\n */\n listModelsSummaryByType(modelType: ModelType): Promise<{ models: MindStudioModelSummary[] }>;\n\n /**\n * List all available connector services (Slack, Google, HubSpot, etc.).\n */\n listConnectors(): Promise<{ services: ConnectorService[] }>;\n\n /**\n * Get details for a single connector service.\n *\n * @param serviceId - The connector service ID.\n */\n getConnector(serviceId: string): Promise<{ service: ConnectorService }>;\n\n /**\n * Get the full configuration for a connector action, including input fields.\n *\n * @param serviceId - The connector service ID.\n * @param actionId - The full action ID including service prefix (e.g. \"slack/send-message\").\n */\n getConnectorAction(serviceId: string, actionId: string): Promise<{ action: ConnectorActionDetail }>;\n\n /**\n * List OAuth connections for the organization.\n *\n * Returns the third-party services the caller's organization has OAuth connections for.\n * Use the returned connection IDs when calling connector actions.\n */\n listConnections(): Promise<{ connections: Connection[] }>;\n\n /**\n * Estimate the cost of executing a step before running it.\n *\n * Pass the same step config you would use for execution.\n *\n * @param stepType - The step type name (e.g. \"generateText\").\n * @param step - The step input parameters.\n * @param options - Optional appId and workflowId for context-specific pricing.\n */\n estimateStepCost(stepType: string, step?: Record<string, unknown>, options?: { appId?: string; workflowId?: string }): Promise<{ costType?: string; estimates?: StepCostEstimateEntry[] }>;\n}\n\n/** @internal Attaches helper methods to the MindStudioAgent prototype. */\nexport function applyHelperMethods(AgentClass: new (...args: any[]) => any): void {\n const proto = AgentClass.prototype;\n\n proto.listModels = function () {\n return this._request(\"GET\", \"/helpers/models\").then((r: any) => r.data);\n };\n\n proto.listModelsByType = function (modelType: string) {\n return this._request(\"GET\", `/helpers/models/${modelType}`).then((r: any) => r.data);\n };\n\n proto.listModelsSummary = function () {\n return this._request(\"GET\", \"/helpers/models-summary\").then((r: any) => r.data);\n };\n\n proto.listModelsSummaryByType = function (modelType: string) {\n return this._request(\"GET\", `/helpers/models-summary/${modelType}`).then((r: any) => r.data);\n };\n\n proto.listConnectors = function () {\n return this._request(\"GET\", \"/helpers/connectors\").then((r: any) => r.data);\n };\n\n proto.getConnector = function (serviceId: string) {\n return this._request(\"GET\", `/helpers/connectors/${serviceId}`).then((r: any) => r.data);\n };\n\n proto.getConnectorAction = function (serviceId: string, actionId: string) {\n return this._request(\"GET\", `/helpers/connectors/${serviceId}/${actionId}`).then((r: any) => r.data);\n };\n\n proto.listConnections = function () {\n return this._request(\"GET\", \"/helpers/connections\").then((r: any) => r.data);\n };\n\n proto.estimateStepCost = function (stepType: string, step?: Record<string, unknown>, options?: { appId?: string; workflowId?: string }) {\n return this._request(\"POST\", \"/helpers/step-cost-estimate\", { step: { type: stepType, ...step }, ...options }).then((r: any) => r.data);\n };\n}\n","import { request, type HttpClientConfig } from './http.js';\nimport { MindStudioError } from './errors.js';\nimport { RateLimiter, type AuthType } from './rate-limit.js';\nimport { loadConfig, type MindStudioConfig } from './config.js';\nimport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n ListAgentsResult,\n RunAgentOptions,\n RunAgentResult,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://v1.mindstudio-api.com';\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * Client for the MindStudio direct step execution API.\n *\n * Create an instance and call typed step methods directly:\n *\n * ```ts\n * const agent = new MindStudioAgent({ apiKey: \"your-key\" });\n * const { imageUrl } = await agent.generateImage({ prompt: \"a sunset\", mode: \"background\" });\n * console.log(imageUrl);\n * ```\n *\n * Authentication is resolved in order:\n * 1. `apiKey` passed to the constructor\n * 2. `MINDSTUDIO_API_KEY` environment variable\n * 3. `~/.mindstudio/config.json` (set via `mindstudio login`)\n * 4. `CALLBACK_TOKEN` environment variable (auto-set inside MindStudio custom functions)\n *\n * Base URL is resolved in order:\n * 1. `baseUrl` passed to the constructor\n * 2. `MINDSTUDIO_BASE_URL` environment variable\n * 3. `REMOTE_HOSTNAME` environment variable (auto-set inside MindStudio custom functions)\n * 4. `~/.mindstudio/config.json`\n * 5. `https://v1.mindstudio-api.com` (production default)\n *\n * Rate limiting is handled automatically:\n * - Concurrent requests are queued to stay within server limits\n * - 429 responses are retried automatically using the `Retry-After` header\n * - Internal (hook) tokens are capped at 500 calls per execution\n */\nexport class MindStudioAgent {\n /** @internal */\n readonly _httpConfig: HttpClientConfig;\n /** @internal */\n private _reuseThreadId: boolean;\n /** @internal */\n private _threadId: string | undefined;\n\n constructor(options: AgentOptions = {}) {\n const config = loadConfig();\n const { token, authType } = resolveToken(options.apiKey, config);\n const baseUrl =\n options.baseUrl ??\n process.env.MINDSTUDIO_BASE_URL ??\n process.env.REMOTE_HOSTNAME ??\n config.baseUrl ??\n DEFAULT_BASE_URL;\n\n this._reuseThreadId =\n options.reuseThreadId ??\n /^(true|1)$/i.test(process.env.MINDSTUDIO_REUSE_THREAD_ID ?? '');\n\n this._httpConfig = {\n baseUrl,\n token,\n rateLimiter: new RateLimiter(authType),\n maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,\n };\n }\n\n /**\n * Execute any step by its type name. This is the low-level method that all\n * typed step methods delegate to. Use it as an escape hatch for step types\n * not yet covered by the generated methods.\n *\n * ```ts\n * const result = await agent.executeStep(\"generateImage\", { prompt: \"hello\", mode: \"background\" });\n * ```\n */\n async executeStep<TOutput = unknown>(\n stepType: string,\n step: Record<string, unknown>,\n options?: StepExecutionOptions,\n ): Promise<StepExecutionResult<TOutput>> {\n const threadId =\n options?.threadId ?? (this._reuseThreadId ? this._threadId : undefined);\n\n const { data, headers } = await request<{\n output?: TOutput;\n outputUrl?: string;\n }>(this._httpConfig, 'POST', `/steps/${stepType}/execute`, {\n step,\n ...(options?.appId != null && { appId: options.appId }),\n ...(threadId != null && { threadId }),\n });\n\n let output: TOutput;\n if (data.output != null) {\n output = data.output;\n } else if (data.outputUrl) {\n const res = await fetch(data.outputUrl);\n if (!res.ok) {\n throw new MindStudioError(\n `Failed to fetch output from S3: ${res.status} ${res.statusText}`,\n 'output_fetch_error',\n res.status,\n );\n }\n const envelope = (await res.json()) as { value: TOutput };\n output = envelope.value;\n } else {\n output = undefined as TOutput;\n }\n\n const returnedThreadId = headers.get('x-mindstudio-thread-id') ?? '';\n if (this._reuseThreadId && returnedThreadId) {\n this._threadId = returnedThreadId;\n }\n\n const remaining = headers.get('x-ratelimit-remaining');\n const billingCost = headers.get('x-mindstudio-billing-cost');\n const billingEvents = headers.get('x-mindstudio-billing-events');\n\n return {\n ...(output as object),\n $appId: headers.get('x-mindstudio-app-id') ?? '',\n $threadId: returnedThreadId,\n $rateLimitRemaining:\n remaining != null ? parseInt(remaining, 10) : undefined,\n $billingCost:\n billingCost != null ? parseFloat(billingCost) : undefined,\n $billingEvents:\n billingEvents != null\n ? (JSON.parse(billingEvents) as Array<Record<string, unknown>>)\n : undefined,\n } as StepExecutionResult<TOutput>;\n }\n\n /**\n * List all pre-built agents in the organization.\n *\n * ```ts\n * const { apps } = await agent.listAgents();\n * for (const app of apps) console.log(app.name, app.id);\n * ```\n */\n async listAgents(): Promise<ListAgentsResult> {\n const { data } = await request<ListAgentsResult>(\n this._httpConfig,\n 'GET',\n '/agents/load',\n );\n return data;\n }\n\n /**\n * Run a pre-built agent and wait for the result.\n *\n * Uses async polling internally — the request returns immediately with a\n * callback token, then polls until the run completes or fails.\n *\n * ```ts\n * const result = await agent.runAgent({\n * appId: 'your-agent-id',\n * variables: { query: 'hello' },\n * });\n * console.log(result.result);\n * ```\n */\n async runAgent(options: RunAgentOptions): Promise<RunAgentResult> {\n const pollInterval = options.pollIntervalMs ?? 1000;\n\n const { data } = await request<{\n success: boolean;\n threadId: string;\n callbackToken: string;\n }>(this._httpConfig, 'POST', '/agents/run', {\n appId: options.appId,\n async: true,\n ...(options.variables != null && { variables: options.variables }),\n ...(options.workflow != null && { workflow: options.workflow }),\n ...(options.version != null && { version: options.version }),\n ...(options.includeBillingCost != null && {\n includeBillingCost: options.includeBillingCost,\n }),\n ...(options.metadata != null && { metadata: options.metadata }),\n });\n\n const token = data.callbackToken;\n const pollUrl = `${this._httpConfig.baseUrl}/developer/v2/agents/run/poll/${token}`;\n\n // Poll until complete or error\n while (true) {\n await sleep(pollInterval);\n\n const res = await fetch(pollUrl, {\n headers: { 'User-Agent': '@mindstudio-ai/agent' },\n });\n\n if (res.status === 404) {\n throw new MindStudioError(\n 'Poll token not found or expired.',\n 'poll_token_expired',\n 404,\n );\n }\n\n if (!res.ok) {\n throw new MindStudioError(\n `Poll request failed: ${res.status} ${res.statusText}`,\n 'poll_error',\n res.status,\n );\n }\n\n const poll = (await res.json()) as {\n status: 'pending' | 'complete' | 'error';\n result?: RunAgentResult;\n error?: string;\n };\n\n if (poll.status === 'pending') continue;\n\n if (poll.status === 'error') {\n throw new MindStudioError(\n poll.error ?? 'Agent run failed.',\n 'agent_run_error',\n 500,\n );\n }\n\n return poll.result!;\n }\n }\n\n /** @internal Used by generated helper methods. */\n _request<T>(method: 'GET' | 'POST', path: string, body?: unknown) {\n return request<T>(this._httpConfig, method, path, body);\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// Attach generated methods to the prototype\nimport { applyStepMethods } from './generated/steps.js';\nimport { applyHelperMethods } from './generated/helpers.js';\napplyStepMethods(MindStudioAgent);\napplyHelperMethods(MindStudioAgent);\n\nfunction resolveToken(\n provided?: string,\n config?: MindStudioConfig,\n): {\n token: string;\n authType: AuthType;\n} {\n if (provided) return { token: provided, authType: 'apiKey' };\n if (process.env.MINDSTUDIO_API_KEY)\n return { token: process.env.MINDSTUDIO_API_KEY, authType: 'apiKey' };\n if (config?.apiKey)\n return { token: config.apiKey, authType: 'apiKey' };\n if (process.env.CALLBACK_TOKEN)\n return { token: process.env.CALLBACK_TOKEN, authType: 'internal' };\n throw new MindStudioError(\n 'No API key provided. Run `mindstudio login`, pass `apiKey` to the ' +\n 'constructor, or set the MINDSTUDIO_API_KEY environment variable.',\n 'missing_api_key',\n 401,\n );\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-05T13:37:48.795Z\n\n\nexport type MonacoSnippetFieldType = 'string' | 'number' | 'boolean' | 'array' | 'object' | string[];\nexport type MonacoSnippetField = [name: string, type: MonacoSnippetFieldType];\n\nexport interface MonacoSnippet {\n fields: MonacoSnippetField[];\n outputKeys: string[];\n}\n\nexport const monacoSnippets: Record<string, MonacoSnippet> = {\n \"activeCampaignAddNote\": { fields: [[\"contactId\", 'string'], [\"note\", 'string']], outputKeys: [] },\n \"activeCampaignCreateContact\": { fields: [[\"email\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string'], [\"phone\", 'string'], [\"accountId\", 'string'], [\"customFields\", 'object']], outputKeys: [\"contactId\"] },\n \"addSubtitlesToVideo\": { fields: [[\"videoUrl\", 'string'], [\"language\", 'string'], [\"fontName\", 'string'], [\"fontSize\", 'number'], [\"fontWeight\", [\"normal\", \"bold\", \"black\"]], [\"fontColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"highlightColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"strokeWidth\", 'number'], [\"strokeColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"backgroundColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\", \"none\"]], [\"backgroundOpacity\", 'number'], [\"position\", [\"top\", \"center\", \"bottom\"]], [\"yOffset\", 'number'], [\"wordsPerSubtitle\", 'number'], [\"enableAnimation\", 'boolean']], outputKeys: [\"videoUrl\"] },\n \"airtableCreateUpdateRecord\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string'], [\"fields\", 'string'], [\"recordData\", 'object']], outputKeys: [\"recordId\"] },\n \"airtableDeleteRecord\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']], outputKeys: [\"deleted\"] },\n \"airtableGetRecord\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']], outputKeys: [\"record\"] },\n \"airtableGetTableRecords\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string']], outputKeys: [\"records\"] },\n \"analyzeImage\": { fields: [[\"prompt\", 'string'], [\"imageUrl\", 'string']], outputKeys: [\"analysis\"] },\n \"analyzeVideo\": { fields: [[\"prompt\", 'string'], [\"videoUrl\", 'string']], outputKeys: [\"analysis\"] },\n \"captureThumbnail\": { fields: [[\"videoUrl\", 'string'], [\"at\", 'string']], outputKeys: [\"thumbnailUrl\"] },\n \"codaCreateUpdatePage\": { fields: [[\"pageData\", 'object']], outputKeys: [\"pageId\"] },\n \"codaCreateUpdateRow\": { fields: [[\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']], outputKeys: [\"rowId\"] },\n \"codaFindRow\": { fields: [[\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']], outputKeys: [\"row\"] },\n \"codaGetPage\": { fields: [[\"docId\", 'string'], [\"pageId\", 'string']], outputKeys: [\"content\"] },\n \"codaGetTableRows\": { fields: [[\"docId\", 'string'], [\"tableId\", 'string']], outputKeys: [\"rows\"] },\n \"convertPdfToImages\": { fields: [[\"pdfUrl\", 'string']], outputKeys: [\"imageUrls\"] },\n \"createDataSource\": { fields: [[\"name\", 'string']], outputKeys: [] },\n \"createGmailDraft\": { fields: [[\"to\", 'string'], [\"subject\", 'string'], [\"message\", 'string'], [\"messageType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"draftId\"] },\n \"createGoogleCalendarEvent\": { fields: [[\"summary\", 'string'], [\"startDateTime\", 'string'], [\"endDateTime\", 'string']], outputKeys: [\"eventId\",\"htmlLink\"] },\n \"createGoogleDoc\": { fields: [[\"title\", 'string'], [\"text\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"documentUrl\"] },\n \"createGoogleSheet\": { fields: [[\"title\", 'string'], [\"text\", 'string']], outputKeys: [\"spreadsheetUrl\"] },\n \"deleteDataSource\": { fields: [[\"dataSourceId\", 'string']], outputKeys: [] },\n \"deleteDataSourceDocument\": { fields: [[\"dataSourceId\", 'string'], [\"documentId\", 'string']], outputKeys: [] },\n \"deleteGmailEmail\": { fields: [[\"messageId\", 'string']], outputKeys: [] },\n \"deleteGoogleCalendarEvent\": { fields: [[\"eventId\", 'string']], outputKeys: [] },\n \"deleteGoogleSheetRows\": { fields: [[\"documentId\", 'string'], [\"startRow\", 'string'], [\"endRow\", 'string']], outputKeys: [] },\n \"detectChanges\": { fields: [[\"mode\", [\"ai\", \"comparison\"]], [\"input\", 'string']], outputKeys: [\"hasChanged\",\"currentValue\",\"previousValue\",\"isFirstRun\"] },\n \"detectPII\": { fields: [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']], outputKeys: [\"detected\",\"detections\"] },\n \"discordEditMessage\": { fields: [[\"botToken\", 'string'], [\"channelId\", 'string'], [\"messageId\", 'string'], [\"text\", 'string']], outputKeys: [] },\n \"discordSendFollowUp\": { fields: [[\"applicationId\", 'string'], [\"interactionToken\", 'string'], [\"text\", 'string']], outputKeys: [\"messageId\"] },\n \"discordSendMessage\": { fields: [[\"mode\", [\"edit\", \"send\"]], [\"text\", 'string']], outputKeys: [] },\n \"downloadVideo\": { fields: [[\"videoUrl\", 'string'], [\"format\", [\"mp4\", \"mp3\"]]], outputKeys: [\"videoUrl\"] },\n \"enhanceImageGenerationPrompt\": { fields: [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']], outputKeys: [\"prompt\"] },\n \"enhanceVideoGenerationPrompt\": { fields: [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']], outputKeys: [\"prompt\"] },\n \"enrichPerson\": { fields: [[\"params\", 'object']], outputKeys: [\"data\"] },\n \"extractAudioFromVideo\": { fields: [[\"videoUrl\", 'string']], outputKeys: [\"audioUrl\"] },\n \"extractText\": { fields: [[\"url\", 'string']], outputKeys: [\"text\"] },\n \"fetchDataSourceDocument\": { fields: [[\"dataSourceId\", 'string'], [\"documentId\", 'string']], outputKeys: [] },\n \"fetchGoogleDoc\": { fields: [[\"documentId\", 'string'], [\"exportType\", [\"html\", \"markdown\", \"json\", \"plain\"]]], outputKeys: [\"content\"] },\n \"fetchGoogleSheet\": { fields: [[\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"exportType\", [\"csv\", \"json\"]]], outputKeys: [\"content\"] },\n \"fetchSlackChannelHistory\": { fields: [[\"channelId\", 'string']], outputKeys: [\"messages\"] },\n \"fetchYoutubeCaptions\": { fields: [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"language\", 'string']], outputKeys: [\"transcripts\"] },\n \"fetchYoutubeChannel\": { fields: [[\"channelUrl\", 'string']], outputKeys: [\"channel\"] },\n \"fetchYoutubeComments\": { fields: [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"limitPages\", 'string']], outputKeys: [\"comments\"] },\n \"fetchYoutubeVideo\": { fields: [[\"videoUrl\", 'string']], outputKeys: [\"video\"] },\n \"generateAsset\": { fields: [[\"source\", 'string'], [\"sourceType\", [\"html\", \"markdown\", \"spa\", \"raw\", \"dynamic\", \"customInterface\"]], [\"outputFormat\", [\"pdf\", \"png\", \"html\", \"mp4\", \"openGraph\"]], [\"pageSize\", [\"full\", \"letter\", \"A4\", \"custom\"]], [\"testData\", 'object']], outputKeys: [\"url\"] },\n \"generateChart\": { fields: [[\"chart\", 'object']], outputKeys: [\"chartUrl\"] },\n \"generateImage\": { fields: [[\"prompt\", 'string']], outputKeys: [\"imageUrl\"] },\n \"generateLipsync\": { fields: [], outputKeys: [] },\n \"generateMusic\": { fields: [[\"text\", 'string']], outputKeys: [] },\n \"generatePdf\": { fields: [[\"source\", 'string'], [\"sourceType\", [\"html\", \"markdown\", \"spa\", \"raw\", \"dynamic\", \"customInterface\"]], [\"outputFormat\", [\"pdf\", \"png\", \"html\", \"mp4\", \"openGraph\"]], [\"pageSize\", [\"full\", \"letter\", \"A4\", \"custom\"]], [\"testData\", 'object']], outputKeys: [\"url\"] },\n \"generateStaticVideoFromImage\": { fields: [[\"imageUrl\", 'string'], [\"duration\", 'string']], outputKeys: [\"videoUrl\"] },\n \"generateText\": { fields: [[\"message\", 'string']], outputKeys: [\"content\"] },\n \"generateVideo\": { fields: [[\"prompt\", 'string']], outputKeys: [\"videoUrl\"] },\n \"getGmailAttachments\": { fields: [[\"messageId\", 'string']], outputKeys: [] },\n \"getGmailDraft\": { fields: [[\"draftId\", 'string']], outputKeys: [\"draftId\",\"messageId\",\"subject\",\"to\",\"from\",\"body\"] },\n \"getGmailEmail\": { fields: [[\"messageId\", 'string']], outputKeys: [\"messageId\",\"subject\",\"from\",\"to\",\"date\",\"body\",\"labels\"] },\n \"getGmailUnreadCount\": { fields: [], outputKeys: [] },\n \"getGoogleCalendarEvent\": { fields: [[\"eventId\", 'string'], [\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"event\"] },\n \"getGoogleDriveFile\": { fields: [[\"fileId\", 'string']], outputKeys: [\"url\",\"name\",\"mimeType\",\"size\"] },\n \"getGoogleSheetInfo\": { fields: [[\"documentId\", 'string']], outputKeys: [\"title\",\"sheets\"] },\n \"getMediaMetadata\": { fields: [[\"mediaUrl\", 'string']], outputKeys: [\"metadata\"] },\n \"httpRequest\": { fields: [[\"url\", 'string'], [\"method\", 'string'], [\"headers\", 'object'], [\"queryParams\", 'object'], [\"body\", 'string'], [\"bodyItems\", 'object'], [\"contentType\", [\"none\", \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\", \"custom\"]], [\"customContentType\", 'string']], outputKeys: [\"ok\",\"status\",\"statusText\",\"response\"] },\n \"hubspotCreateCompany\": { fields: [[\"company\", 'object'], [\"enabledProperties\", 'array']], outputKeys: [\"companyId\"] },\n \"hubspotCreateContact\": { fields: [[\"contact\", 'object'], [\"enabledProperties\", 'array'], [\"companyDomain\", 'string']], outputKeys: [\"contactId\"] },\n \"hubspotGetCompany\": { fields: [[\"searchBy\", [\"domain\", \"id\"]], [\"companyDomain\", 'string'], [\"companyId\", 'string'], [\"additionalProperties\", 'array']], outputKeys: [\"company\"] },\n \"hubspotGetContact\": { fields: [[\"searchBy\", [\"email\", \"id\"]], [\"contactEmail\", 'string'], [\"contactId\", 'string'], [\"additionalProperties\", 'array']], outputKeys: [\"contact\"] },\n \"hunterApiCompanyEnrichment\": { fields: [[\"domain\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiDomainSearch\": { fields: [[\"domain\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiEmailFinder\": { fields: [[\"domain\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiEmailVerification\": { fields: [[\"email\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiPersonEnrichment\": { fields: [[\"email\", 'string']], outputKeys: [\"data\"] },\n \"imageFaceSwap\": { fields: [[\"imageUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"engine\", 'string']], outputKeys: [\"imageUrl\"] },\n \"imageRemoveWatermark\": { fields: [[\"imageUrl\", 'string'], [\"engine\", 'string']], outputKeys: [\"imageUrl\"] },\n \"insertVideoClips\": { fields: [[\"baseVideoUrl\", 'string'], [\"overlayVideos\", 'array']], outputKeys: [\"videoUrl\"] },\n \"listDataSources\": { fields: [], outputKeys: [] },\n \"listGmailDrafts\": { fields: [[\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"drafts\"] },\n \"listGmailLabels\": { fields: [], outputKeys: [] },\n \"listGoogleCalendarEvents\": { fields: [[\"limit\", 'number'], [\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"events\"] },\n \"listGoogleDriveFiles\": { fields: [[\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"files\"] },\n \"listRecentGmailEmails\": { fields: [[\"exportType\", [\"json\", \"text\"]], [\"limit\", 'string']], outputKeys: [] },\n \"logic\": { fields: [[\"context\", 'string'], [\"cases\", 'array']], outputKeys: [\"selectedCase\"] },\n \"makeDotComRunScenario\": { fields: [[\"webhookUrl\", 'string'], [\"input\", 'object']], outputKeys: [\"data\"] },\n \"mergeAudio\": { fields: [[\"mp3Urls\", 'array']], outputKeys: [\"audioUrl\"] },\n \"mergeVideos\": { fields: [[\"videoUrls\", 'array']], outputKeys: [\"videoUrl\"] },\n \"mixAudioIntoVideo\": { fields: [[\"videoUrl\", 'string'], [\"audioUrl\", 'string'], [\"options\", 'object']], outputKeys: [\"videoUrl\"] },\n \"muteVideo\": { fields: [[\"videoUrl\", 'string']], outputKeys: [\"videoUrl\"] },\n \"n8nRunNode\": { fields: [[\"method\", 'string'], [\"authentication\", [\"none\", \"basic\", \"string\"]], [\"user\", 'string'], [\"password\", 'string'], [\"webhookUrl\", 'string'], [\"input\", 'object']], outputKeys: [\"data\"] },\n \"notionCreatePage\": { fields: [[\"pageId\", 'string'], [\"content\", 'string'], [\"title\", 'string']], outputKeys: [\"pageId\",\"pageUrl\"] },\n \"notionUpdatePage\": { fields: [[\"pageId\", 'string'], [\"content\", 'string'], [\"mode\", [\"append\", \"overwrite\"]]], outputKeys: [\"pageId\",\"pageUrl\"] },\n \"peopleSearch\": { fields: [[\"smartQuery\", 'string'], [\"enrichPeople\", 'boolean'], [\"enrichOrganizations\", 'boolean'], [\"limit\", 'string'], [\"page\", 'string'], [\"params\", 'object']], outputKeys: [\"results\"] },\n \"postToLinkedIn\": { fields: [[\"message\", 'string'], [\"visibility\", [\"PUBLIC\", \"CONNECTIONS\"]]], outputKeys: [] },\n \"postToSlackChannel\": { fields: [[\"channelId\", 'string'], [\"messageType\", [\"string\", \"blocks\"]], [\"message\", 'string']], outputKeys: [] },\n \"postToX\": { fields: [[\"text\", 'string']], outputKeys: [] },\n \"postToZapier\": { fields: [[\"webhookUrl\", 'string'], [\"input\", 'object']], outputKeys: [\"data\"] },\n \"queryDataSource\": { fields: [[\"dataSourceId\", 'string'], [\"query\", 'string'], [\"maxResults\", 'number']], outputKeys: [\"text\",\"chunks\",\"query\",\"citations\",\"latencyMs\"] },\n \"queryExternalDatabase\": { fields: [[\"query\", 'string'], [\"outputFormat\", [\"json\", \"csv\"]]], outputKeys: [\"data\"] },\n \"redactPII\": { fields: [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']], outputKeys: [\"text\"] },\n \"removeBackgroundFromImage\": { fields: [[\"imageUrl\", 'string']], outputKeys: [\"imageUrl\"] },\n \"replyToGmailEmail\": { fields: [[\"messageId\", 'string'], [\"message\", 'string'], [\"messageType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"messageId\"] },\n \"resizeVideo\": { fields: [[\"videoUrl\", 'string'], [\"mode\", [\"fit\", \"exact\"]]], outputKeys: [\"videoUrl\"] },\n \"runFromConnectorRegistry\": { fields: [[\"actionId\", 'string'], [\"displayName\", 'string'], [\"icon\", 'string'], [\"configurationValues\", 'object']], outputKeys: [\"data\"] },\n \"runPackagedWorkflow\": { fields: [[\"appId\", 'string'], [\"workflowId\", 'string'], [\"inputVariables\", 'object'], [\"outputVariables\", 'object'], [\"name\", 'string']], outputKeys: [\"data\"] },\n \"scrapeFacebookPage\": { fields: [[\"pageUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeFacebookPosts\": { fields: [[\"pageUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramComments\": { fields: [[\"postUrl\", 'string'], [\"resultsLimit\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramMentions\": { fields: [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramPosts\": { fields: [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string'], [\"onlyPostsNewerThan\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramProfile\": { fields: [[\"profileUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramReels\": { fields: [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']], outputKeys: [\"data\"] },\n \"scrapeLinkedInCompany\": { fields: [[\"url\", 'string']], outputKeys: [\"company\"] },\n \"scrapeLinkedInProfile\": { fields: [[\"url\", 'string']], outputKeys: [\"profile\"] },\n \"scrapeMetaThreadsProfile\": { fields: [[\"profileUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeUrl\": { fields: [[\"url\", 'string']], outputKeys: [\"content\"] },\n \"scrapeXPost\": { fields: [[\"url\", 'string']], outputKeys: [\"post\"] },\n \"scrapeXProfile\": { fields: [[\"url\", 'string']], outputKeys: [\"profile\"] },\n \"searchGmailEmails\": { fields: [[\"query\", 'string'], [\"exportType\", [\"json\", \"text\"]], [\"limit\", 'string']], outputKeys: [\"emails\"] },\n \"searchGoogle\": { fields: [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"results\"] },\n \"searchGoogleCalendarEvents\": { fields: [[\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"events\"] },\n \"searchGoogleDrive\": { fields: [[\"query\", 'string'], [\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"files\"] },\n \"searchGoogleImages\": { fields: [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"images\"] },\n \"searchGoogleNews\": { fields: [[\"text\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"articles\"] },\n \"searchGoogleTrends\": { fields: [[\"text\", 'string'], [\"hl\", 'string'], [\"geo\", 'string'], [\"data_type\", [\"TIMESERIES\", \"GEO_MAP\", \"GEO_MAP_0\", \"RELATED_TOPICS\", \"RELATED_QUERIES\"]], [\"cat\", 'string'], [\"date\", 'string'], [\"ts\", 'string']], outputKeys: [\"trends\"] },\n \"searchPerplexity\": { fields: [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"results\"] },\n \"searchXPosts\": { fields: [[\"query\", 'string'], [\"scope\", [\"recent\", \"all\"]], [\"options\", 'object']], outputKeys: [\"posts\"] },\n \"searchYoutube\": { fields: [[\"query\", 'string'], [\"limitPages\", 'string'], [\"filter\", 'string'], [\"filterType\", 'string']], outputKeys: [\"results\"] },\n \"searchYoutubeTrends\": { fields: [[\"bp\", [\"now\", \"music\", \"gaming\", \"films\"]], [\"hl\", 'string'], [\"gl\", 'string']], outputKeys: [\"trends\"] },\n \"sendEmail\": { fields: [[\"subject\", 'string'], [\"body\", 'string']], outputKeys: [\"recipients\"] },\n \"sendGmailDraft\": { fields: [[\"draftId\", 'string']], outputKeys: [] },\n \"sendGmailMessage\": { fields: [[\"to\", 'string'], [\"subject\", 'string'], [\"message\", 'string'], [\"messageType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"messageId\"] },\n \"sendSMS\": { fields: [[\"body\", 'string']], outputKeys: [] },\n \"setGmailReadStatus\": { fields: [[\"messageIds\", 'string'], [\"markAsRead\", 'boolean']], outputKeys: [] },\n \"setRunTitle\": { fields: [[\"title\", 'string']], outputKeys: [] },\n \"setVariable\": { fields: [[\"value\", 'string']], outputKeys: [] },\n \"telegramEditMessage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"messageId\", 'string'], [\"text\", 'string']], outputKeys: [] },\n \"telegramReplyToMessage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"replyToMessageId\", 'string'], [\"text\", 'string']], outputKeys: [\"messageId\"] },\n \"telegramSendAudio\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"audioUrl\", 'string'], [\"mode\", [\"audio\", \"voice\"]]], outputKeys: [] },\n \"telegramSendFile\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"fileUrl\", 'string']], outputKeys: [] },\n \"telegramSendImage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"imageUrl\", 'string']], outputKeys: [] },\n \"telegramSendMessage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"text\", 'string']], outputKeys: [\"messageId\"] },\n \"telegramSendVideo\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"videoUrl\", 'string']], outputKeys: [] },\n \"telegramSetTyping\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string']], outputKeys: [] },\n \"textToSpeech\": { fields: [[\"text\", 'string']], outputKeys: [\"audioUrl\"] },\n \"transcribeAudio\": { fields: [[\"audioUrl\", 'string'], [\"prompt\", 'string']], outputKeys: [\"text\"] },\n \"trimMedia\": { fields: [[\"inputUrl\", 'string']], outputKeys: [\"mediaUrl\"] },\n \"updateGmailLabels\": { fields: [[\"query\", 'string'], [\"messageIds\", 'string'], [\"addLabelIds\", 'string'], [\"removeLabelIds\", 'string']], outputKeys: [\"updatedMessageIds\"] },\n \"updateGoogleCalendarEvent\": { fields: [[\"eventId\", 'string']], outputKeys: [\"eventId\",\"htmlLink\"] },\n \"updateGoogleDoc\": { fields: [[\"documentId\", 'string'], [\"text\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]], [\"operationType\", [\"addToTop\", \"addToBottom\", \"overwrite\"]]], outputKeys: [\"documentUrl\"] },\n \"updateGoogleSheet\": { fields: [[\"text\", 'string'], [\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"operationType\", [\"addToBottom\", \"overwrite\", \"range\"]]], outputKeys: [\"spreadsheetUrl\"] },\n \"uploadDataSourceDocument\": { fields: [[\"dataSourceId\", 'string'], [\"file\", 'string'], [\"fileName\", 'string']], outputKeys: [] },\n \"upscaleImage\": { fields: [[\"imageUrl\", 'string'], [\"targetResolution\", [\"2k\", \"4k\", \"8k\"]], [\"engine\", [\"standard\", \"pro\"]]], outputKeys: [\"imageUrl\"] },\n \"upscaleVideo\": { fields: [[\"videoUrl\", 'string'], [\"targetResolution\", [\"720p\", \"1080p\", \"2K\", \"4K\"]], [\"engine\", [\"standard\", \"pro\", \"ultimate\", \"flashvsr\", \"seedance\", \"seedvr2\", \"runwayml/upscale-v1\"]]], outputKeys: [\"videoUrl\"] },\n \"userMessage\": { fields: [[\"message\", 'string']], outputKeys: [\"content\"] },\n \"videoFaceSwap\": { fields: [[\"videoUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"targetIndex\", 'number'], [\"engine\", 'string']], outputKeys: [\"videoUrl\"] },\n \"videoRemoveBackground\": { fields: [[\"videoUrl\", 'string'], [\"newBackground\", [\"transparent\", \"image\"]], [\"engine\", 'string']], outputKeys: [\"videoUrl\"] },\n \"videoRemoveWatermark\": { fields: [[\"videoUrl\", 'string'], [\"engine\", 'string']], outputKeys: [\"videoUrl\"] },\n \"watermarkImage\": { fields: [[\"imageUrl\", 'string'], [\"watermarkImageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']], outputKeys: [\"imageUrl\"] },\n \"watermarkVideo\": { fields: [[\"videoUrl\", 'string'], [\"imageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']], outputKeys: [\"videoUrl\"] },\n};\n\nexport const blockTypeAliases: Record<string, string> = {\n \"userMessage\": \"generateText\",\n \"generatePdf\": \"generateAsset\",\n};\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-05T13:37:48.795Z\n\n\nexport interface StepMetadata {\n stepType: string;\n description: string;\n usageNotes: string;\n inputSchema: Record<string, unknown>;\n outputSchema: Record<string, unknown> | null;\n}\n\nexport const stepMetadata: Record<string, StepMetadata> = {\n \"activeCampaignAddNote\": {\n stepType: \"activeCampaignAddNote\",\n description: \"Add a note to an existing contact in ActiveCampaign.\",\n usageNotes: \"- Requires an ActiveCampaign OAuth connection (connectionId).\\n- The contact must already exist — use the contact ID from a previous create or search step.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"contactId\":{\"type\":\"string\",\"description\":\"ActiveCampaign contact ID to add the note to\"},\"note\":{\"type\":\"string\",\"description\":\"Note text content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"ActiveCampaign OAuth connection ID\"}},\"required\":[\"contactId\",\"note\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"activeCampaignCreateContact\": {\n stepType: \"activeCampaignCreateContact\",\n description: \"Create or sync a contact in ActiveCampaign.\",\n usageNotes: \"- Requires an ActiveCampaign OAuth connection (connectionId).\\n- If a contact with the email already exists, it may be updated depending on ActiveCampaign settings.\\n- Custom fields are passed as a key-value map where keys are field IDs.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Contact email address\"},\"firstName\":{\"type\":\"string\",\"description\":\"Contact first name\"},\"lastName\":{\"type\":\"string\",\"description\":\"Contact last name\"},\"phone\":{\"type\":\"string\",\"description\":\"Contact phone number\"},\"accountId\":{\"type\":\"string\",\"description\":\"ActiveCampaign account ID to associate the contact with\"},\"customFields\":{\"type\":\"object\",\"description\":\"Custom field values keyed by field ID\"},\"connectionId\":{\"type\":\"string\",\"description\":\"ActiveCampaign OAuth connection ID\"}},\"required\":[\"email\",\"firstName\",\"lastName\",\"phone\",\"accountId\",\"customFields\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"contactId\":{\"type\":\"string\",\"description\":\"ActiveCampaign contact ID of the created contact\"}},\"required\":[\"contactId\"]},\n },\n \"addSubtitlesToVideo\": {\n stepType: \"addSubtitlesToVideo\",\n description: \"Automatically add subtitles to a video\",\n usageNotes: \"- Can control style of text and animation\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"language\":{\"type\":\"string\",\"description\":\"ISO language code for subtitle transcription\"},\"fontName\":{\"type\":\"string\",\"description\":\"Google Font name for subtitle text\"},\"fontSize\":{\"type\":\"number\",\"description\":\"Font size in pixels. Default: 100.\"},\"fontWeight\":{\"enum\":[\"normal\",\"bold\",\"black\"],\"type\":\"string\",\"description\":\"Font weight for subtitle text\"},\"fontColor\":{\"enum\":[\"white\",\"black\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\"],\"type\":\"string\",\"description\":\"Color of the subtitle text\"},\"highlightColor\":{\"enum\":[\"white\",\"black\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\"],\"type\":\"string\",\"description\":\"Color used to highlight the currently spoken word\"},\"strokeWidth\":{\"type\":\"number\",\"description\":\"Width of the text stroke outline in pixels\"},\"strokeColor\":{\"enum\":[\"black\",\"white\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\"],\"type\":\"string\",\"description\":\"Color of the text stroke outline\"},\"backgroundColor\":{\"enum\":[\"black\",\"white\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\",\"none\"],\"type\":\"string\",\"description\":\"Background color behind subtitle text. Use 'none' for transparent.\"},\"backgroundOpacity\":{\"type\":\"number\",\"description\":\"Opacity of the subtitle background. 0.0 = fully transparent, 1.0 = fully opaque.\"},\"position\":{\"enum\":[\"top\",\"center\",\"bottom\"],\"type\":\"string\",\"description\":\"Vertical position of subtitle text on screen\"},\"yOffset\":{\"type\":\"number\",\"description\":\"Vertical offset in pixels from the position. Positive moves down, negative moves up. Default: 75.\"},\"wordsPerSubtitle\":{\"type\":\"number\",\"description\":\"Maximum number of words per subtitle segment. Use 1 for single-word display, 2-3 for short phrases, or 8-12 for full sentences. Default: 3.\"},\"enableAnimation\":{\"type\":\"boolean\",\"description\":\"When true, enables bounce-style entrance animation for subtitles. Default: true.\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"language\",\"fontName\",\"fontSize\",\"fontWeight\",\"fontColor\",\"highlightColor\",\"strokeWidth\",\"strokeColor\",\"backgroundColor\",\"backgroundOpacity\",\"position\",\"yOffset\",\"wordsPerSubtitle\",\"enableAnimation\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with subtitles added\"}},\"required\":[\"videoUrl\"]},\n },\n \"airtableCreateUpdateRecord\": {\n stepType: \"airtableCreateUpdateRecord\",\n description: \"Create a new record or update an existing record in an Airtable table.\",\n usageNotes: \"- If recordId is provided, updates that record. Otherwise, creates a new one.\\n- When updating with updateMode \\\"onlySpecified\\\", unspecified fields are left as-is. With \\\"all\\\", unspecified fields are cleared.\\n- Array fields (e.g. multipleAttachments) accept arrays of values.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID\"},\"recordId\":{\"type\":\"string\",\"description\":\"Record ID to update. Omit to create a new record\"},\"updateMode\":{\"enum\":[\"onlySpecified\",\"all\"],\"type\":\"string\",\"description\":\"How to handle unspecified fields on update. 'onlySpecified' leaves them as-is, 'all' clears them\"},\"fields\":{\"description\":\"Field schema metadata used for type resolution\"},\"recordData\":{\"type\":\"object\",\"description\":\"Field values to set, keyed by field ID\"}},\"required\":[\"baseId\",\"tableId\",\"fields\",\"recordData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"recordId\":{\"type\":\"string\",\"description\":\"The Airtable record ID of the created or updated record\"}},\"required\":[\"recordId\"]},\n },\n \"airtableDeleteRecord\": {\n stepType: \"airtableDeleteRecord\",\n description: \"Delete a record from an Airtable table by its record ID.\",\n usageNotes: \"- Requires an active Airtable OAuth connection (connectionId).\\n- Silently succeeds if the record does not exist.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID\"},\"recordId\":{\"type\":\"string\",\"description\":\"Record ID to delete\"}},\"required\":[\"baseId\",\"tableId\",\"recordId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"deleted\":{\"type\":\"boolean\",\"description\":\"Whether the record was successfully deleted\"}},\"required\":[\"deleted\"]},\n },\n \"airtableGetRecord\": {\n stepType: \"airtableGetRecord\",\n description: \"Fetch a single record from an Airtable table by its record ID.\",\n usageNotes: \"- Requires an active Airtable OAuth connection (connectionId).\\n- If the record is not found, returns a string message instead of a record object.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID (e.g. \\\"appXXXXXX\\\")\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID (e.g. \\\"tblXXXXXX\\\")\"},\"recordId\":{\"type\":\"string\",\"description\":\"Record ID to fetch (e.g. \\\"recXXXXXX\\\")\"}},\"required\":[\"baseId\",\"tableId\",\"recordId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"record\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Airtable record ID\"},\"createdTime\":{\"type\":\"string\",\"description\":\"ISO 8601 timestamp when the record was created\"},\"fields\":{\"type\":\"object\",\"description\":\"Field values keyed by field name\"}},\"required\":[\"id\",\"createdTime\",\"fields\"]},{\"type\":\"null\"}]}},\"required\":[\"record\"]},\n },\n \"airtableGetTableRecords\": {\n stepType: \"airtableGetTableRecords\",\n description: \"Fetch multiple records from an Airtable table with optional pagination.\",\n usageNotes: \"- Requires an active Airtable OAuth connection (connectionId).\\n- Default limit is 100 records. Maximum is 1000.\\n- When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed records.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID (e.g. \\\"appXXXXXX\\\")\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID (e.g. \\\"tblXXXXXX\\\")\"},\"outputFormat\":{\"enum\":[\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format for the result. Defaults to 'json'\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of records to return. Defaults to 100, max 1000\"}},\"required\":[\"baseId\",\"tableId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Airtable record ID\"},\"createdTime\":{\"type\":\"string\",\"description\":\"ISO 8601 timestamp when the record was created\"},\"fields\":{\"type\":\"object\",\"description\":\"Field values keyed by field name\"}},\"required\":[\"id\",\"createdTime\",\"fields\"]},\"description\":\"The list of records retrieved from the Airtable table\"}},\"required\":[\"records\"]},\n },\n \"analyzeImage\": {\n stepType: \"analyzeImage\",\n description: \"Analyze an image using a vision model based on a text prompt.\",\n usageNotes: \"- Uses the configured vision model to generate a text analysis of the image.\\n- The prompt should describe what to look for or extract from the image.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Instructions describing what to look for or extract from the image\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to analyze\"},\"visionModelOverride\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"]},{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"]}]}},\"required\":[\"prompt\",\"imageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"analysis\":{\"type\":\"string\",\"description\":\"Text analysis of the image generated by the vision model\"}},\"required\":[\"analysis\"]},\n },\n \"analyzeVideo\": {\n stepType: \"analyzeVideo\",\n description: \"Analyze a video using a video analysis model based on a text prompt.\",\n usageNotes: \"- Uses the configured video analysis model to generate a text analysis of the video.\\n- The prompt should describe what to look for or extract from the video.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Instructions describing what to look for or extract from the video\"},\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video to analyze\"},\"videoAnalysisModelOverride\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"]},{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"]}]}},\"required\":[\"prompt\",\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"analysis\":{\"type\":\"string\",\"description\":\"Text analysis of the video generated by the video analysis model\"}},\"required\":[\"analysis\"]},\n },\n \"captureThumbnail\": {\n stepType: \"captureThumbnail\",\n description: \"Capture a thumbnail from a video at a specified timestamp\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to capture a frame from\"},\"at\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\"}]}},\"required\":[\"videoUrl\",\"at\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"thumbnailUrl\":{\"type\":\"string\",\"description\":\"URL of the captured thumbnail image\"}},\"required\":[\"thumbnailUrl\"]},\n },\n \"codaCreateUpdatePage\": {\n stepType: \"codaCreateUpdatePage\",\n description: \"Create a new page or update an existing page in a Coda document.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- If pageData.pageId is provided, updates that page. Otherwise, creates a new one.\\n- Page content is provided as markdown and converted to Coda's canvas format.\\n- When updating, insertionMode controls how content is applied (default: 'append').\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"pageData\":{\"type\":\"object\",\"properties\":{\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"pageId\":{\"type\":\"string\",\"description\":\"Page ID to update. Omit to create a new page\"},\"name\":{\"type\":\"string\",\"description\":\"Page title\"},\"subtitle\":{\"type\":\"string\",\"description\":\"Page subtitle\"},\"iconName\":{\"type\":\"string\",\"description\":\"Page icon name\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"Page cover image URL\"},\"parentPageId\":{\"type\":\"string\",\"description\":\"Parent page ID for nesting under another page\"},\"pageContent\":{\"anyOf\":[{\"type\":\"string\"},{}]},\"contentUpdate\":{\"description\":\"Content update payload for partial updates\"},\"insertionMode\":{\"type\":\"string\",\"description\":\"How to insert content on update: \\\"append\\\" or \\\"replace\\\"\"}},\"required\":[\"docId\",\"name\",\"subtitle\",\"iconName\",\"imageUrl\",\"pageContent\"],\"description\":\"Page configuration including document ID, title, content, and optional parent page\"}},\"required\":[\"pageData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"The Coda page ID of the created or updated page\"}},\"required\":[\"pageId\"]},\n },\n \"codaCreateUpdateRow\": {\n stepType: \"codaCreateUpdateRow\",\n description: \"Create a new row or update an existing row in a Coda table.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- If rowId is provided, updates that row. Otherwise, creates a new one.\\n- Row data keys are column IDs. Empty values are excluded.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Table ID within the document\"},\"rowId\":{\"type\":\"string\",\"description\":\"Row ID to update. Omit to create a new row\"},\"rowData\":{\"type\":\"object\",\"description\":\"Column values to set, keyed by column ID\"}},\"required\":[\"docId\",\"tableId\",\"rowData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"rowId\":{\"type\":\"string\",\"description\":\"The Coda row ID of the created or updated row\"}},\"required\":[\"rowId\"]},\n },\n \"codaFindRow\": {\n stepType: \"codaFindRow\",\n description: \"Search for a row in a Coda table by matching column values.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- Returns the first row matching all specified column values, or null if no match.\\n- Search criteria in rowData are ANDed together.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Table ID to search within\"},\"rowData\":{\"type\":\"object\",\"description\":\"Column values to match against, keyed by column ID. All criteria are ANDed together\"}},\"required\":[\"docId\",\"tableId\",\"rowData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"row\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Coda row ID\"},\"values\":{\"type\":\"object\",\"description\":\"Column values keyed by column name\"}},\"required\":[\"id\",\"values\"]},{\"type\":\"null\"}]}},\"required\":[\"row\"]},\n },\n \"codaGetPage\": {\n stepType: \"codaGetPage\",\n description: \"Export and read the contents of a page from a Coda document.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- Page export is asynchronous on Coda's side — there may be a brief delay while it processes.\\n- If a page was just created in a prior step, there is an automatic 20-second retry if the first export attempt fails.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"pageId\":{\"type\":\"string\",\"description\":\"Page ID within the document\"},\"outputFormat\":{\"enum\":[\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Export format for the page content. Defaults to 'html'\"}},\"required\":[\"docId\",\"pageId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Page content in the requested format (HTML or Markdown)\"}},\"required\":[\"content\"]},\n },\n \"codaGetTableRows\": {\n stepType: \"codaGetTableRows\",\n description: \"Fetch rows from a Coda table with optional pagination.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- Default limit is 10000 rows. Rows are fetched in pages of 500.\\n- When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed rows.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Table ID within the document\"},\"limit\":{\"type\":[\"number\",\"string\"]},\"outputFormat\":{\"enum\":[\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format for the result. Defaults to 'json'\"}},\"required\":[\"docId\",\"tableId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"rows\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Coda row ID\"},\"values\":{\"type\":\"object\",\"description\":\"Column values keyed by column name\"}},\"required\":[\"id\",\"values\"]},\"description\":\"The list of rows retrieved from the Coda table\"}},\"required\":[\"rows\"]},\n },\n \"convertPdfToImages\": {\n stepType: \"convertPdfToImages\",\n description: \"Convert each page of a PDF document into a PNG image.\",\n usageNotes: \"- Each page is converted to a separate PNG and re-hosted on the CDN.\\n- Returns an array of image URLs, one per page.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pdfUrl\":{\"type\":\"string\",\"description\":\"URL of the PDF document to convert\"}},\"required\":[\"pdfUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"CDN URLs of the generated page images, one per page of the PDF\"}},\"required\":[\"imageUrls\"]},\n },\n \"createDataSource\": {\n stepType: \"createDataSource\",\n description: \"Create a new empty vector data source for the current app.\",\n usageNotes: \"- Creates a new data source (vector database) associated with the current app version.\\n- The data source is created empty — use the \\\"Upload Data Source Document\\\" block to add documents.\\n- Returns the new data source ID which can be used in subsequent blocks.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name for the new data source (supports variable interpolation)\"}},\"required\":[\"name\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"createGmailDraft\": {\n stepType: \"createGmailDraft\",\n description: \"Create a draft email in the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose scope.\\n- The draft appears in the user's Gmail Drafts folder but is not sent.\\n- messageType controls the body format: \\\"plain\\\" for plain text, \\\"html\\\" for raw HTML, \\\"markdown\\\" for auto-converted markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"to\":{\"type\":\"string\",\"description\":\"Recipient email address(es), comma-separated for multiple\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"message\":{\"type\":\"string\",\"description\":\"Email body content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"messageType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"}},\"required\":[\"to\",\"subject\",\"message\",\"messageType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID\"}},\"required\":[\"draftId\"]},\n },\n \"createGoogleCalendarEvent\": {\n stepType: \"createGoogleCalendarEvent\",\n description: \"Create a new event on a Google Calendar.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Date/time values must be ISO 8601 format (e.g. \\\"2025-07-02T10:00:00-07:00\\\").\\n- Attendees are specified as one email address per line in a single string.\\n- Set addMeetLink to true to automatically attach a Google Meet video call.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"startDateTime\":{\"type\":\"string\",\"description\":\"Start time in ISO 8601 format\"},\"endDateTime\":{\"type\":\"string\",\"description\":\"End time in ISO 8601 format\"},\"attendees\":{\"type\":\"string\",\"description\":\"Attendee email addresses, one per line\"},\"addMeetLink\":{\"type\":\"boolean\",\"description\":\"Whether to attach a Google Meet video call link\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"summary\",\"startDateTime\",\"endDateTime\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"}},\"required\":[\"eventId\",\"htmlLink\"]},\n },\n \"createGoogleDoc\": {\n stepType: \"createGoogleDoc\",\n description: \"Create a new Google Document and optionally populate it with content.\",\n usageNotes: \"- textType determines how the text field is interpreted: \\\"plain\\\" for plain text, \\\"html\\\" for HTML markup, \\\"markdown\\\" for Markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title for the new document\"},\"text\":{\"type\":\"string\",\"description\":\"Document body content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"textType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Format of the text field: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"}},\"required\":[\"title\",\"text\",\"textType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"documentUrl\":{\"type\":\"string\",\"description\":\"URL of the newly created Google Document\"}},\"required\":[\"documentUrl\"]},\n },\n \"createGoogleSheet\": {\n stepType: \"createGoogleSheet\",\n description: \"Create a new Google Spreadsheet and populate it with CSV data.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title for the new spreadsheet\"},\"text\":{\"type\":\"string\",\"description\":\"CSV data to populate the sheet with\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"title\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"spreadsheetUrl\":{\"type\":\"string\",\"description\":\"URL of the newly created Google Spreadsheet\"}},\"required\":[\"spreadsheetUrl\"]},\n },\n \"deleteDataSource\": {\n stepType: \"deleteDataSource\",\n description: \"Delete a vector data source from the current app.\",\n usageNotes: \"- Soft-deletes a data source (vector database) by marking it as deleted.\\n- The Milvus partition is cleaned up asynchronously by a background cron job.\\n- The data source must belong to the current app version.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the data source to delete (supports variable interpolation)\"}},\"required\":[\"dataSourceId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteDataSourceDocument\": {\n stepType: \"deleteDataSourceDocument\",\n description: \"Delete a single document from a data source.\",\n usageNotes: \"- Soft-deletes a document by marking it as deleted.\\n- Requires both the data source ID and document ID.\\n- After deletion, reloads vectors into Milvus so the data source reflects the change immediately.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the data source containing the document (supports variable interpolation)\"},\"documentId\":{\"type\":\"string\",\"description\":\"ID of the document to delete (supports variable interpolation)\"}},\"required\":[\"dataSourceId\",\"documentId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteGmailEmail\": {\n stepType: \"deleteGmailEmail\",\n description: \"Move an email to trash in the connected Gmail account (recoverable delete).\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail modify scope.\\n- Uses trash (recoverable) rather than permanent delete.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID to delete (move to trash)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteGoogleCalendarEvent\": {\n stepType: \"deleteGoogleCalendarEvent\",\n description: \"Retrieve a specific event from a Google Calendar by event ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID to delete\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"eventId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteGoogleSheetRows\": {\n stepType: \"deleteGoogleSheetRows\",\n description: \"Delete a range of rows from a Google Spreadsheet.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- startRow and endRow are 1-based row numbers (inclusive).\\n- If sheetName is omitted, operates on the first sheet.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID or URL\"},\"sheetName\":{\"type\":\"string\",\"description\":\"Sheet/tab name (defaults to first sheet)\"},\"startRow\":{\"type\":\"string\",\"description\":\"First row to delete (1-based, inclusive)\"},\"endRow\":{\"type\":\"string\",\"description\":\"Last row to delete (1-based, inclusive)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"documentId\",\"startRow\",\"endRow\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"detectChanges\": {\n stepType: \"detectChanges\",\n description: \"Detect changes between runs by comparing current input against previously stored state. Routes execution based on whether a change occurred.\",\n usageNotes: \"- Persists state across runs using a global variable keyed to the step ID.\\n- Two modes: \\\"comparison\\\" (default) uses strict string inequality; \\\"ai\\\" uses an LLM to determine if a meaningful change occurred.\\n- First run always treats the value as \\\"changed\\\" since there is no previous state.\\n- Each mode supports transitions to different steps/workflows for the \\\"changed\\\" and \\\"unchanged\\\" paths.\\n- AI mode bills normally for the LLM call.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"ai\",\"comparison\"],\"type\":\"string\",\"description\":\"Detection mode: 'comparison' for strict string inequality, 'ai' for LLM-based. Default: 'comparison'\"},\"input\":{\"type\":\"string\",\"description\":\"Current value to check (variable template)\"},\"prompt\":{\"type\":\"string\",\"description\":\"AI mode: what constitutes a meaningful change\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"AI mode: model settings override\"},\"previousValueVariable\":{\"type\":\"string\",\"description\":\"Optional variable name to store the previous value into for downstream access\"},\"changedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if changed (same workflow)\"},\"changedWorkflowId\":{\"type\":\"string\",\"description\":\"Workflow to jump to if changed (cross workflow)\"},\"unchangedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if unchanged (same workflow)\"},\"unchangedWorkflowId\":{\"type\":\"string\",\"description\":\"Workflow to jump to if unchanged (cross workflow)\"}},\"required\":[\"mode\",\"input\"],\"description\":\"Configuration for the detect changes step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"hasChanged\":{\"type\":\"boolean\",\"description\":\"Whether a change was detected\"},\"currentValue\":{\"type\":\"string\",\"description\":\"The resolved input value\"},\"previousValue\":{\"type\":\"string\",\"description\":\"The stored value from last run (empty string on first run)\"},\"isFirstRun\":{\"type\":\"boolean\",\"description\":\"True when no previous state exists\"}},\"required\":[\"hasChanged\",\"currentValue\",\"previousValue\",\"isFirstRun\"]},\n },\n \"detectPII\": {\n stepType: \"detectPII\",\n description: \"Scan text for personally identifiable information using Microsoft Presidio.\",\n usageNotes: \"- In workflow mode, transitions to detectedStepId if PII is found, notDetectedStepId otherwise.\\n- In direct execution, returns the detection results without transitioning.\\n- If entities is empty, returns immediately with no detections.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\",\"description\":\"Text to scan for personally identifiable information\"},\"language\":{\"type\":\"string\",\"description\":\"Language code of the input text (e.g. \\\"en\\\")\"},\"entities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"PII entity types to scan for (e.g. [\\\"PHONE_NUMBER\\\", \\\"EMAIL_ADDRESS\\\"]). Empty array means nothing is scanned.\"},\"detectedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if PII is detected (workflow mode)\"},\"notDetectedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if no PII is detected (workflow mode)\"},\"outputLogVariable\":{\"type\":\"string\",\"description\":\"Variable name to store the raw detection results\"}},\"required\":[\"input\",\"language\",\"entities\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"detected\":{\"type\":\"boolean\",\"description\":\"Whether any PII was found in the input text\"},\"detections\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"entity_type\":{\"type\":\"string\",\"description\":\"PII entity type (e.g. \\\"PHONE_NUMBER\\\", \\\"EMAIL_ADDRESS\\\", \\\"PERSON\\\")\"},\"start\":{\"type\":\"number\",\"description\":\"Start character index in the input text\"},\"end\":{\"type\":\"number\",\"description\":\"End character index in the input text\"},\"score\":{\"type\":\"number\",\"description\":\"Confidence score between 0 and 1\"}},\"required\":[\"entity_type\",\"start\",\"end\",\"score\"]},\"description\":\"List of detected PII entities with type, location, and confidence\"}},\"required\":[\"detected\",\"detections\"]},\n },\n \"discordEditMessage\": {\n stepType: \"discordEditMessage\",\n description: \"Edit a previously sent Discord channel message. Use with the message ID returned by Send Discord Message.\",\n usageNotes: \"- Only messages sent by the bot can be edited.\\n- The messageId is returned by the Send Discord Message step.\\n- Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\\n- When editing with an attachment, the new attachment replaces any previous attachments on the message.\\n- URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Discord bot token for authentication\"},\"channelId\":{\"type\":\"string\",\"description\":\"Discord channel ID containing the message\"},\"messageId\":{\"type\":\"string\",\"description\":\"ID of the message to edit (returned by Send Discord Message)\"},\"text\":{\"type\":\"string\",\"description\":\"New message text to replace the existing content\"},\"attachmentUrl\":{\"type\":\"string\",\"description\":\"URL of a file to download and attach to the message (replaces any previous attachments)\"}},\"required\":[\"botToken\",\"channelId\",\"messageId\",\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"discordSendFollowUp\": {\n stepType: \"discordSendFollowUp\",\n description: \"Send a follow-up message to a Discord slash command interaction.\",\n usageNotes: \"- Requires the applicationId and interactionToken from the Discord trigger variables.\\n- Follow-up messages appear as new messages in the channel after the initial response.\\n- Returns the sent message ID.\\n- Interaction tokens expire after 15 minutes.\\n- Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\\n- URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"applicationId\":{\"type\":\"string\",\"description\":\"Discord application ID from the bot registration\"},\"interactionToken\":{\"type\":\"string\",\"description\":\"Interaction token provided by the Discord trigger — expires after 15 minutes\"},\"text\":{\"type\":\"string\",\"description\":\"Message text to send as a follow-up\"},\"attachmentUrl\":{\"type\":\"string\",\"description\":\"URL of a file to download and attach to the message\"}},\"required\":[\"applicationId\",\"interactionToken\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"ID of the sent follow-up message\"}},\"required\":[\"messageId\"]},\n },\n \"discordSendMessage\": {\n stepType: \"discordSendMessage\",\n description: \"Send a message to Discord — either edit the loading message or send a new channel message.\",\n usageNotes: \"- mode \\\"edit\\\" replaces the loading message (interaction response) with the final result. Uses applicationId and interactionToken from trigger variables. No bot permissions required.\\n- mode \\\"send\\\" sends a new message to a channel. Uses botToken and channelId from trigger variables. Returns a messageId that can be used with Edit Discord Message.\\n- Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\\n- URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\\n- Interaction tokens expire after 15 minutes.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"edit\",\"send\"],\"type\":\"string\",\"description\":\"\\\"edit\\\" replaces the loading message, \\\"send\\\" sends a new channel message\"},\"text\":{\"type\":\"string\",\"description\":\"Message text to send\"},\"applicationId\":{\"type\":\"string\",\"description\":\"Discord application ID from the bot registration (required for \\\"reply\\\" mode)\"},\"interactionToken\":{\"type\":\"string\",\"description\":\"Interaction token provided by the Discord trigger — expires after 15 minutes (required for \\\"reply\\\" mode)\"},\"botToken\":{\"type\":\"string\",\"description\":\"Discord bot token for authentication (required for \\\"send\\\" mode)\"},\"channelId\":{\"type\":\"string\",\"description\":\"Discord channel ID to send the message to (required for \\\"send\\\" mode)\"},\"attachmentUrl\":{\"type\":\"string\",\"description\":\"URL of a file to download and attach to the message\"}},\"required\":[\"mode\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"ID of the sent Discord message, only present in \\\"send\\\" mode (use with Edit Discord Message)\"}}},\n },\n \"downloadVideo\": {\n stepType: \"downloadVideo\",\n description: \"Download a video file\",\n usageNotes: \"- Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\\n- Can save as mp4 or mp3\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video to download (supports YouTube, TikTok, etc. via yt-dlp)\"},\"format\":{\"enum\":[\"mp4\",\"mp3\"],\"type\":\"string\",\"description\":\"Output format for the downloaded file\"}},\"required\":[\"videoUrl\",\"format\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the downloaded and re-hosted video file\"}},\"required\":[\"videoUrl\"]},\n },\n \"enhanceImageGenerationPrompt\": {\n stepType: \"enhanceImageGenerationPrompt\",\n description: \"Generate or enhance an image generation prompt using a language model. Optionally generates a negative prompt.\",\n usageNotes: \"- Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\\n- Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\\n- When includeNegativePrompt is true, a second model call generates a negative prompt.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"initialPrompt\":{\"type\":\"string\",\"description\":\"The raw prompt to enhance\"},\"includeNegativePrompt\":{\"type\":\"boolean\",\"description\":\"Whether to also generate a negative prompt\"},\"negativePromptDestinationVariableName\":{\"type\":\"string\",\"description\":\"Variable name to save the negative prompt into\"},\"systemPrompt\":{\"type\":\"string\",\"description\":\"Custom system prompt for the enhancement model. Uses a default prompt if not provided\"},\"modelOverride\":{\"description\":\"Model override settings. Leave undefined to use the default model\"}},\"required\":[\"initialPrompt\",\"includeNegativePrompt\",\"systemPrompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"The enhanced image generation prompt\"},\"negativePrompt\":{\"type\":\"string\",\"description\":\"The negative prompt, only present when includeNegativePrompt was true\"}},\"required\":[\"prompt\"]},\n },\n \"enhanceVideoGenerationPrompt\": {\n stepType: \"enhanceVideoGenerationPrompt\",\n description: \"Generate or enhance a video generation prompt using a language model. Optionally generates a negative prompt.\",\n usageNotes: \"- Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\\n- Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\\n- When includeNegativePrompt is true, a second model call generates a negative prompt.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"initialPrompt\":{\"type\":\"string\",\"description\":\"The raw prompt to enhance\"},\"includeNegativePrompt\":{\"type\":\"boolean\",\"description\":\"Whether to also generate a negative prompt\"},\"negativePromptDestinationVariableName\":{\"type\":\"string\",\"description\":\"Variable name to save the negative prompt into\"},\"systemPrompt\":{\"type\":\"string\",\"description\":\"Custom system prompt for the enhancement model. Uses a default prompt if not provided\"},\"modelOverride\":{\"description\":\"Model override settings. Leave undefined to use the default model\"}},\"required\":[\"initialPrompt\",\"includeNegativePrompt\",\"systemPrompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"The enhanced video generation prompt\"},\"negativePrompt\":{\"type\":\"string\",\"description\":\"The negative prompt, only present when includeNegativePrompt was true\"}},\"required\":[\"prompt\"]},\n },\n \"enrichPerson\": {\n stepType: \"enrichPerson\",\n description: \"Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\",\n usageNotes: \"- At least one search parameter must be provided.\\n- Returns enriched data from Apollo including contact details, employment info, and social profiles.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"params\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Apollo person ID\"},\"name\":{\"type\":\"string\",\"description\":\"Person's full name\"},\"linkedinUrl\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL\"},\"email\":{\"type\":\"string\",\"description\":\"Email address\"},\"domain\":{\"type\":\"string\",\"description\":\"Company domain\"}},\"required\":[\"id\",\"name\",\"linkedinUrl\",\"email\",\"domain\"],\"description\":\"Search parameters to identify the person (ID, name, LinkedIn URL, email, or domain)\"}},\"required\":[\"params\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Apollo enrichment result with contact details, employment history, and social profiles\"}},\"required\":[\"data\"]},\n },\n \"extractAudioFromVideo\": {\n stepType: \"extractAudioFromVideo\",\n description: \"Extract audio MP3 from a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to extract audio from\"}},\"required\":[\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the extracted audio MP3 file\"}},\"required\":[\"audioUrl\"]},\n },\n \"extractText\": {\n stepType: \"extractText\",\n description: \"Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\",\n usageNotes: \"- Best suited for PDFs and raw text/document files. For web pages, use the scrapeUrl step instead.\\n- Accepts a single URL, a comma-separated list of URLs, or a JSON array of URLs.\\n- Files are rehosted on the MindStudio CDN before extraction.\\n- Maximum file size is 50MB per URL.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"text\"]},\n },\n \"fetchDataSourceDocument\": {\n stepType: \"fetchDataSourceDocument\",\n description: \"Fetch the full extracted text contents of a document in a data source.\",\n usageNotes: \"- Loads a document by ID and returns its full extracted text content.\\n- The document must have been successfully processed (status \\\"done\\\").\\n- Also returns document metadata (name, summary, word count).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the data source containing the document (supports variable interpolation)\"},\"documentId\":{\"type\":\"string\",\"description\":\"ID of the document to fetch (supports variable interpolation)\"}},\"required\":[\"dataSourceId\",\"documentId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"fetchGoogleDoc\": {\n stepType: \"fetchGoogleDoc\",\n description: \"Fetch the contents of an existing Google Document.\",\n usageNotes: \"- exportType controls the output format: \\\"html\\\" for HTML markup, \\\"markdown\\\" for Markdown, \\\"json\\\" for structured JSON, \\\"plain\\\" for plain text.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Document ID (from the document URL)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"html\",\"markdown\",\"json\",\"plain\"],\"type\":\"string\",\"description\":\"Output format: \\\"html\\\", \\\"markdown\\\", \\\"json\\\", or \\\"plain\\\"\"}},\"required\":[\"documentId\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Document contents in the requested export format\"}},\"required\":[\"content\"]},\n },\n \"fetchGoogleSheet\": {\n stepType: \"fetchGoogleSheet\",\n description: \"Fetch contents of a Google Spreadsheet range.\",\n usageNotes: \"- range uses A1 notation (e.g. \\\"Sheet1!A1:C10\\\"). Omit to fetch the entire first sheet.\\n- exportType controls the output format: \\\"csv\\\" for comma-separated values, \\\"json\\\" for structured JSON.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"spreadsheetId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID (from the spreadsheet URL)\"},\"range\":{\"type\":\"string\",\"description\":\"Cell range in A1 notation (e.g. \\\"Sheet1!A1:C10\\\")\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"csv\",\"json\"],\"type\":\"string\",\"description\":\"Output format: \\\"csv\\\" or \\\"json\\\"\"}},\"required\":[\"spreadsheetId\",\"range\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Spreadsheet data in the requested export format\"}},\"required\":[\"content\"]},\n },\n \"fetchSlackChannelHistory\": {\n stepType: \"fetchSlackChannelHistory\",\n description: \"Fetch recent message history from a Slack channel.\",\n usageNotes: \"- The user is responsible for connecting their Slack workspace and selecting the channel\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Slack OAuth connection ID (leave empty to allow user to select)\"},\"channelId\":{\"type\":\"string\",\"description\":\"Slack channel ID (leave empty to allow user to select a channel)\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of messages to return (1-15)\"},\"startDate\":{\"type\":\"string\",\"description\":\"Earliest date to include messages from\"},\"endDate\":{\"type\":\"string\",\"description\":\"Latest date to include messages up to\"},\"includeImages\":{\"type\":\"boolean\",\"description\":\"Whether to include images in the output\"},\"includeRawMessage\":{\"type\":\"boolean\",\"description\":\"Whether to include the raw Slack message object (useful for bot messages with complex attachments)\"}},\"required\":[\"channelId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"from\":{\"type\":\"string\"},\"content\":{\"type\":\"string\"},\"timestamp\":{\"type\":\"string\"},\"images\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"rawMessage\":{\"type\":\"object\",\"properties\":{\"app_id\":{\"type\":\"string\"},\"assistant_app_thread\":{\"type\":\"object\",\"properties\":{\"first_user_thread_reply\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"title_blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"attachments\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"actions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"app_id\":{\"type\":\"string\"},\"app_unfurl_url\":{\"type\":\"string\"},\"author_icon\":{\"type\":\"string\"},\"author_id\":{\"type\":\"string\"},\"author_link\":{\"type\":\"string\"},\"author_name\":{\"type\":\"string\"},\"author_subname\":{\"type\":\"string\"},\"blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"bot_id\":{\"type\":\"string\"},\"bot_team_id\":{\"type\":\"string\"},\"callback_id\":{\"type\":\"string\"},\"channel_id\":{\"type\":\"string\"},\"channel_name\":{\"type\":\"string\"},\"channel_team\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"fallback\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"file_id\":{\"type\":\"string\"},\"filename\":{\"type\":\"string\"},\"files\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"footer\":{\"type\":\"string\"},\"footer_icon\":{\"type\":\"string\"},\"from_url\":{\"type\":\"string\"},\"hide_border\":{\"type\":\"boolean\"},\"hide_color\":{\"type\":\"boolean\"},\"id\":{\"type\":\"number\"},\"image_bytes\":{\"type\":\"number\"},\"image_height\":{\"type\":\"number\"},\"image_url\":{\"type\":\"string\"},\"image_width\":{\"type\":\"number\"},\"indent\":{\"type\":\"boolean\"},\"is_app_unfurl\":{\"type\":\"boolean\"},\"is_file_attachment\":{\"type\":\"boolean\"},\"is_msg_unfurl\":{\"type\":\"boolean\"},\"is_reply_unfurl\":{\"type\":\"boolean\"},\"is_thread_root_unfurl\":{\"type\":\"boolean\"},\"list\":{\"type\":\"string\"},\"list_record\":{\"type\":\"string\"},\"list_record_id\":{\"type\":\"string\"},\"list_records\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"list_schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"list_view\":{\"type\":\"string\"},\"list_view_id\":{\"type\":\"string\"},\"message_blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"metadata\":{\"type\":\"string\"},\"mimetype\":{\"type\":\"string\"},\"mrkdwn_in\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"msg_subtype\":{\"type\":\"string\"},\"original_url\":{\"type\":\"string\"},\"pretext\":{\"type\":\"string\"},\"preview\":{\"type\":\"string\"},\"service_icon\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"service_url\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"text\":{\"type\":\"string\"},\"thumb_height\":{\"type\":\"number\"},\"thumb_url\":{\"type\":\"string\"},\"thumb_width\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"},\"title_link\":{\"type\":\"string\"},\"ts\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"video_html\":{\"type\":\"string\"},\"video_html_height\":{\"type\":\"number\"},\"video_html_width\":{\"type\":\"number\"},\"video_url\":{\"type\":\"string\"}}}},\"blocks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"accessory\":{\"type\":\"string\"},\"alt_text\":{\"type\":\"string\"},\"api_decoration_available\":{\"type\":\"boolean\"},\"app_collaborators\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"app_id\":{\"type\":\"string\"},\"author_name\":{\"type\":\"string\"},\"block_id\":{\"type\":\"string\"},\"bot_user_id\":{\"type\":\"string\"},\"button_label\":{\"type\":\"string\"},\"call\":{\"type\":\"string\"},\"call_id\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"developer_trace_id\":{\"type\":\"string\"},\"dispatch_action\":{\"type\":\"boolean\"},\"element\":{\"type\":\"string\"},\"elements\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expand\":{\"type\":\"boolean\"},\"external_id\":{\"type\":\"string\"},\"fallback\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"file\":{\"type\":\"string\"},\"file_id\":{\"type\":\"string\"},\"function_trigger_id\":{\"type\":\"string\"},\"hint\":{\"type\":\"string\"},\"image_bytes\":{\"type\":\"number\"},\"image_height\":{\"type\":\"number\"},\"image_url\":{\"type\":\"string\"},\"image_width\":{\"type\":\"number\"},\"is_animated\":{\"type\":\"boolean\"},\"is_workflow_app\":{\"type\":\"boolean\"},\"label\":{\"type\":\"string\"},\"optional\":{\"type\":\"boolean\"},\"owning_team_id\":{\"type\":\"string\"},\"provider_icon_url\":{\"type\":\"string\"},\"provider_name\":{\"type\":\"string\"},\"sales_home_workflow_app_type\":{\"type\":\"number\"},\"share_url\":{\"type\":\"string\"},\"slack_file\":{\"type\":\"string\"},\"source\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"thumbnail_url\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"title_url\":{\"type\":\"string\"},\"trigger_subtype\":{\"type\":\"string\"},\"trigger_type\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"video_url\":{\"type\":\"string\"},\"workflow_id\":{\"type\":\"string\"}}}},\"bot_id\":{\"type\":\"string\"},\"bot_profile\":{\"type\":\"object\",\"properties\":{\"app_id\":{\"type\":\"string\"},\"deleted\":{\"type\":\"boolean\"},\"icons\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"team_id\":{\"type\":\"string\"},\"updated\":{\"type\":\"number\"}}},\"client_msg_id\":{\"type\":\"string\"},\"display_as_bot\":{\"type\":\"boolean\"},\"edited\":{\"type\":\"object\",\"properties\":{\"ts\":{\"type\":\"string\"},\"user\":{\"type\":\"string\"}}},\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"access\":{\"type\":\"string\"},\"alt_txt\":{\"type\":\"string\"},\"app_id\":{\"type\":\"string\"},\"app_name\":{\"type\":\"string\"},\"attachments\":{\"type\":\"array\",\"items\":{}},\"blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"bot_id\":{\"type\":\"string\"},\"can_toggle_canvas_lock\":{\"type\":\"boolean\"},\"canvas_printing_enabled\":{\"type\":\"boolean\"},\"canvas_template_mode\":{\"type\":\"string\"},\"cc\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"channel_actions_count\":{\"type\":\"number\"},\"channel_actions_ts\":{\"type\":\"string\"},\"channels\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"comments_count\":{\"type\":\"number\"},\"converted_pdf\":{\"type\":\"string\"},\"created\":{\"type\":\"number\"},\"deanimate\":{\"type\":\"string\"},\"deanimate_gif\":{\"type\":\"string\"},\"display_as_bot\":{\"type\":\"boolean\"},\"dm_mpdm_users_with_file_access\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"duration_ms\":{\"type\":\"number\"},\"edit_link\":{\"type\":\"string\"},\"edit_timestamp\":{\"type\":\"number\"},\"editable\":{\"type\":\"boolean\"},\"editor\":{\"type\":\"string\"},\"editors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"external_id\":{\"type\":\"string\"},\"external_type\":{\"type\":\"string\"},\"external_url\":{\"type\":\"string\"},\"favorites\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"file_access\":{\"type\":\"string\"},\"filetype\":{\"type\":\"string\"},\"from\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"groups\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"has_more\":{\"type\":\"boolean\"},\"has_more_shares\":{\"type\":\"boolean\"},\"has_rich_preview\":{\"type\":\"boolean\"},\"headers\":{\"type\":\"string\"},\"hls\":{\"type\":\"string\"},\"hls_embed\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"image_exif_rotation\":{\"type\":\"number\"},\"ims\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"initial_comment\":{\"type\":\"string\"},\"is_channel_space\":{\"type\":\"boolean\"},\"is_external\":{\"type\":\"boolean\"},\"is_public\":{\"type\":\"boolean\"},\"is_restricted_sharing_enabled\":{\"type\":\"boolean\"},\"is_starred\":{\"type\":\"boolean\"},\"last_editor\":{\"type\":\"string\"},\"last_read\":{\"type\":\"number\"},\"lines\":{\"type\":\"number\"},\"lines_more\":{\"type\":\"number\"},\"linked_channel_id\":{\"type\":\"string\"},\"list_csv_download_url\":{\"type\":\"string\"},\"list_limits\":{\"type\":\"string\"},\"list_metadata\":{\"type\":\"string\"},\"media_display_type\":{\"type\":\"string\"},\"media_progress\":{\"type\":\"string\"},\"mimetype\":{\"type\":\"string\"},\"mode\":{\"type\":\"string\"},\"mp4\":{\"type\":\"string\"},\"mp4_low\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"non_owner_editable\":{\"type\":\"boolean\"},\"num_stars\":{\"type\":\"number\"},\"org_or_workspace_access\":{\"type\":\"string\"},\"original_attachment_count\":{\"type\":\"number\"},\"original_h\":{\"type\":\"string\"},\"original_w\":{\"type\":\"string\"},\"permalink\":{\"type\":\"string\"},\"permalink_public\":{\"type\":\"string\"},\"pinned_to\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"pjpeg\":{\"type\":\"string\"},\"plain_text\":{\"type\":\"string\"},\"pretty_type\":{\"type\":\"string\"},\"preview\":{\"type\":\"string\"},\"preview_highlight\":{\"type\":\"string\"},\"preview_is_truncated\":{\"type\":\"boolean\"},\"preview_plain_text\":{\"type\":\"string\"},\"private_channels_with_file_access_count\":{\"type\":\"number\"},\"private_file_with_access_count\":{\"type\":\"number\"},\"public_url_shared\":{\"type\":\"boolean\"},\"quip_thread_id\":{\"type\":\"string\"},\"reactions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"saved\":{\"type\":\"string\"},\"sent_to_self\":{\"type\":\"boolean\"},\"shares\":{\"type\":\"string\"},\"show_badge\":{\"type\":\"boolean\"},\"simplified_html\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"source_team\":{\"type\":\"string\"},\"subject\":{\"type\":\"string\"},\"subtype\":{\"type\":\"string\"},\"team_pref_version_history_enabled\":{\"type\":\"boolean\"},\"teams_shared_with\":{\"type\":\"array\",\"items\":{}},\"template_conversion_ts\":{\"type\":\"number\"},\"template_description\":{\"type\":\"string\"},\"template_icon\":{\"type\":\"string\"},\"template_name\":{\"type\":\"string\"},\"template_title\":{\"type\":\"string\"},\"thumb_1024\":{\"type\":\"string\"},\"thumb_1024_gif\":{\"type\":\"string\"},\"thumb_1024_h\":{\"type\":\"string\"},\"thumb_1024_w\":{\"type\":\"string\"},\"thumb_160\":{\"type\":\"string\"},\"thumb_160_gif\":{\"type\":\"string\"},\"thumb_160_h\":{\"type\":\"string\"},\"thumb_160_w\":{\"type\":\"string\"},\"thumb_360\":{\"type\":\"string\"},\"thumb_360_gif\":{\"type\":\"string\"},\"thumb_360_h\":{\"type\":\"string\"},\"thumb_360_w\":{\"type\":\"string\"},\"thumb_480\":{\"type\":\"string\"},\"thumb_480_gif\":{\"type\":\"string\"},\"thumb_480_h\":{\"type\":\"string\"},\"thumb_480_w\":{\"type\":\"string\"},\"thumb_64\":{\"type\":\"string\"},\"thumb_64_gif\":{\"type\":\"string\"},\"thumb_64_h\":{\"type\":\"string\"},\"thumb_64_w\":{\"type\":\"string\"},\"thumb_720\":{\"type\":\"string\"},\"thumb_720_gif\":{\"type\":\"string\"},\"thumb_720_h\":{\"type\":\"string\"},\"thumb_720_w\":{\"type\":\"string\"},\"thumb_80\":{\"type\":\"string\"},\"thumb_800\":{\"type\":\"string\"},\"thumb_800_gif\":{\"type\":\"string\"},\"thumb_800_h\":{\"type\":\"string\"},\"thumb_800_w\":{\"type\":\"string\"},\"thumb_80_gif\":{\"type\":\"string\"},\"thumb_80_h\":{\"type\":\"string\"},\"thumb_80_w\":{\"type\":\"string\"},\"thumb_960\":{\"type\":\"string\"},\"thumb_960_gif\":{\"type\":\"string\"},\"thumb_960_h\":{\"type\":\"string\"},\"thumb_960_w\":{\"type\":\"string\"},\"thumb_gif\":{\"type\":\"string\"},\"thumb_pdf\":{\"type\":\"string\"},\"thumb_pdf_h\":{\"type\":\"string\"},\"thumb_pdf_w\":{\"type\":\"string\"},\"thumb_tiny\":{\"type\":\"string\"},\"thumb_video\":{\"type\":\"string\"},\"thumb_video_h\":{\"type\":\"number\"},\"thumb_video_w\":{\"type\":\"number\"},\"timestamp\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"},\"title_blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"to\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"transcription\":{\"type\":\"string\"},\"update_notification\":{\"type\":\"number\"},\"updated\":{\"type\":\"number\"},\"url_private\":{\"type\":\"string\"},\"url_private_download\":{\"type\":\"string\"},\"url_static_preview\":{\"type\":\"string\"},\"user\":{\"type\":\"string\"},\"user_team\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"},\"vtt\":{\"type\":\"string\"}}}},\"icons\":{\"type\":\"object\",\"properties\":{\"emoji\":{\"type\":\"string\"},\"image_36\":{\"type\":\"string\"},\"image_48\":{\"type\":\"string\"},\"image_64\":{\"type\":\"string\"},\"image_72\":{\"type\":\"string\"}}},\"inviter\":{\"type\":\"string\"},\"is_locked\":{\"type\":\"boolean\"},\"latest_reply\":{\"type\":\"string\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"event_payload\":{\"type\":\"string\"},\"event_type\":{\"type\":\"string\"}}},\"parent_user_id\":{\"type\":\"string\"},\"purpose\":{\"type\":\"string\"},\"reactions\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"count\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"users\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}},\"reply_count\":{\"type\":\"number\"},\"reply_users\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"reply_users_count\":{\"type\":\"number\"},\"root\":{\"type\":\"object\",\"properties\":{\"bot_id\":{\"type\":\"string\"},\"icons\":{\"type\":\"string\"},\"latest_reply\":{\"type\":\"string\"},\"parent_user_id\":{\"type\":\"string\"},\"reply_count\":{\"type\":\"number\"},\"reply_users\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"reply_users_count\":{\"type\":\"number\"},\"subscribed\":{\"type\":\"boolean\"},\"subtype\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"thread_ts\":{\"type\":\"string\"},\"ts\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"}}},\"subscribed\":{\"type\":\"boolean\"},\"subtype\":{\"type\":\"string\"},\"team\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"thread_ts\":{\"type\":\"string\"},\"topic\":{\"type\":\"string\"},\"ts\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"upload\":{\"type\":\"boolean\"},\"user\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"},\"x_files\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}},\"required\":[\"from\",\"content\"]},\"description\":\"List of messages from the channel history\"}},\"required\":[\"messages\"]},\n },\n \"fetchYoutubeCaptions\": {\n stepType: \"fetchYoutubeCaptions\",\n description: \"Retrieve the captions/transcript for a YouTube video.\",\n usageNotes: \"- Supports multiple languages via the language parameter.\\n- \\\"text\\\" export produces timestamped plain text; \\\"json\\\" export produces structured transcript data.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"YouTube video URL to fetch captions for\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Output format: \\\"text\\\" for timestamped plain text, \\\"json\\\" for structured transcript data\"},\"language\":{\"type\":\"string\",\"description\":\"Language code for the captions (e.g. \\\"en\\\")\"}},\"required\":[\"videoUrl\",\"exportType\",\"language\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"transcripts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Transcript text segment\"},\"start\":{\"type\":\"number\",\"description\":\"Start time of the segment in seconds\"}},\"required\":[\"text\",\"start\"]},\"description\":\"Parsed transcript segments with text and start timestamps\"}},\"required\":[\"transcripts\"]},\n },\n \"fetchYoutubeChannel\": {\n stepType: \"fetchYoutubeChannel\",\n description: \"Retrieve metadata and recent videos for a YouTube channel.\",\n usageNotes: \"- Accepts a YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID).\\n- Returns channel info and video listings as a JSON object.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"channelUrl\":{\"type\":\"string\",\"description\":\"YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID)\"}},\"required\":[\"channelUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"channel\":{\"type\":\"object\",\"description\":\"Channel metadata and video listings\"}},\"required\":[\"channel\"]},\n },\n \"fetchYoutubeComments\": {\n stepType: \"fetchYoutubeComments\",\n description: \"Retrieve comments for a YouTube video.\",\n usageNotes: \"- Paginates through comments (up to 5 pages).\\n- \\\"text\\\" export produces markdown-formatted text; \\\"json\\\" export produces structured comment data.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"YouTube video URL to fetch comments for\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Output format: \\\"text\\\" for markdown-formatted text, \\\"json\\\" for structured comment data\"},\"limitPages\":{\"type\":\"string\",\"description\":\"Maximum number of comment pages to fetch (1-5)\"}},\"required\":[\"videoUrl\",\"exportType\",\"limitPages\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"comments\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique comment identifier\"},\"link\":{\"type\":\"string\",\"description\":\"Direct URL to the comment\"},\"publishedDate\":{\"type\":\"string\",\"description\":\"Date the comment was published\"},\"text\":{\"type\":\"string\",\"description\":\"Text content of the comment\"},\"likes\":{\"type\":\"number\",\"description\":\"Number of likes on the comment\"},\"replies\":{\"type\":\"number\",\"description\":\"Number of replies to the comment\"},\"author\":{\"type\":\"string\",\"description\":\"Display name of the comment author\"},\"authorLink\":{\"type\":\"string\",\"description\":\"URL to the author's YouTube channel\"},\"authorImg\":{\"type\":\"string\",\"description\":\"URL of the author's profile image\"}},\"required\":[\"id\",\"link\",\"publishedDate\",\"text\",\"likes\",\"replies\",\"author\",\"authorLink\",\"authorImg\"]},\"description\":\"List of comments retrieved from the video\"}},\"required\":[\"comments\"]},\n },\n \"fetchYoutubeVideo\": {\n stepType: \"fetchYoutubeVideo\",\n description: \"Retrieve metadata for a YouTube video (title, description, stats, channel info).\",\n usageNotes: \"- Returns video metadata, channel info, and engagement stats.\\n- Video format data is excluded from the response.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"YouTube video URL to fetch metadata for\"}},\"required\":[\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"video\":{\"type\":\"object\",\"description\":\"Video metadata including title, description, stats, and channel info\"}},\"required\":[\"video\"]},\n },\n \"generateAsset\": {\n stepType: \"generatePdf\",\n description: \"Generate an HTML asset and export it as a webpage, PDF, or image\",\n usageNotes: \"- Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \\\"generatePdf\\\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\\n- The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\\n- If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \\\"source\\\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\\n- Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\\n- Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"The HTML or Markdown source template for the asset\"},\"sourceType\":{\"enum\":[\"html\",\"markdown\",\"spa\",\"raw\",\"dynamic\",\"customInterface\"],\"type\":\"string\",\"description\":\"Source type: html, markdown (auto-formatted), spa (single page app), raw (pre-generated HTML in a variable), dynamic (AI-generated from prompt), or customInterface\"},\"outputFormat\":{\"enum\":[\"pdf\",\"png\",\"html\",\"mp4\",\"openGraph\"],\"type\":\"string\",\"description\":\"The output format for the generated asset\"},\"pageSize\":{\"enum\":[\"full\",\"letter\",\"A4\",\"custom\"],\"type\":\"string\",\"description\":\"Page size for PDF, PNG, or MP4 output\"},\"testData\":{\"type\":\"object\",\"description\":\"Test data used for previewing the template with sample variable values\"},\"options\":{\"type\":\"object\",\"properties\":{\"pageWidthPx\":{\"type\":\"number\",\"description\":\"Custom page width in pixels (for custom pageSize)\"},\"pageHeightPx\":{\"type\":\"number\",\"description\":\"Custom page height in pixels (for custom pageSize)\"},\"pageOrientation\":{\"enum\":[\"portrait\",\"landscape\"],\"type\":\"string\",\"description\":\"Page orientation for the rendered output\"},\"rehostMedia\":{\"type\":\"boolean\",\"description\":\"Whether to re-host third-party images on the MindStudio CDN\"},\"videoDurationSeconds\":{\"type\":\"number\",\"description\":\"Duration in seconds for MP4 video output\"}},\"description\":\"Additional rendering options\"},\"spaSource\":{\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"Source code of the SPA (legacy, use files instead)\"},\"lastCompiledSource\":{\"type\":\"string\",\"description\":\"Last compiled source (cached)\"},\"files\":{\"type\":\"object\",\"description\":\"Multi-file SPA source\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Available route paths in the SPA\"},\"root\":{\"type\":\"string\",\"description\":\"Root URL of the SPA bundle\"},\"zipUrl\":{\"type\":\"string\",\"description\":\"URL of the zipped SPA bundle\"}},\"required\":[\"paths\",\"root\",\"zipUrl\"],\"description\":\"Single page app source configuration (advanced)\"},\"rawSource\":{\"type\":\"string\",\"description\":\"Raw HTML source stored in a variable, using handlebars syntax (e.g. {{myHtmlVariable}})\"},\"dynamicPrompt\":{\"type\":\"string\",\"description\":\"Prompt to generate the HTML dynamically when sourceType is \\\"dynamic\\\"\"},\"dynamicSourceModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model override for dynamic HTML generation. Leave undefined to use the default model\"},\"transitionControl\":{\"enum\":[\"default\",\"native\"],\"type\":\"string\",\"description\":\"Controls how the step transitions after displaying in foreground mode\"},\"shareControl\":{\"enum\":[\"default\",\"hidden\"],\"type\":\"string\",\"description\":\"Controls visibility of the share button on displayed assets\"},\"shareImageUrl\":{\"type\":\"string\",\"description\":\"URL of a custom Open Graph share image\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the asset will not appear in the user's asset history\"}},\"required\":[\"source\",\"sourceType\",\"outputFormat\",\"pageSize\",\"testData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"CDN URL of the generated asset (PDF, PNG, HTML, or MP4 depending on outputFormat)\"}},\"required\":[\"url\"]},\n },\n \"generateChart\": {\n stepType: \"generateChart\",\n description: \"Create a chart image using QuickChart (Chart.js) and return the URL.\",\n usageNotes: \"- The data field must be a Chart.js-compatible JSON object serialized as a string.\\n- Supported chart types: bar, line, pie.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"chart\":{\"type\":\"object\",\"properties\":{\"chartType\":{\"enum\":[\"bar\",\"line\",\"pie\"],\"type\":\"string\",\"description\":\"The type of chart to generate\"},\"data\":{\"type\":\"string\",\"description\":\"Chart.js-compatible JSON data serialized as a string\"},\"options\":{\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"string\",\"description\":\"Image width in pixels (e.g. \\\"500\\\")\"},\"height\":{\"type\":\"string\",\"description\":\"Image height in pixels (e.g. \\\"300\\\")\"}},\"required\":[\"width\",\"height\"],\"description\":\"Image rendering options\"}},\"required\":[\"chartType\",\"data\",\"options\"],\"description\":\"Chart configuration including type, data, and rendering options\"}},\"required\":[\"chart\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"chartUrl\":{\"type\":\"string\",\"description\":\"URL of the generated chart image\"}},\"required\":[\"chartUrl\"]},\n },\n \"generateImage\": {\n stepType: \"generateImage\",\n description: \"Generate an image from a text prompt using an AI model.\",\n usageNotes: \"- Prompts should be descriptive but concise (roughly 3–6 sentences).\\n- Images are automatically hosted on a CDN.\\n- In foreground mode, the image is displayed to the user. In background mode, the URL is saved to a variable.\\n- When generateVariants is true with numVariants > 1, multiple images are generated in parallel.\\n- In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Text prompt describing the image to generate\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the image will not appear in the user's asset history\"},\"imageModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Image generation model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default image model if not specified\"},\"generateVariants\":{\"type\":\"boolean\",\"description\":\"Whether to generate multiple image variants in parallel\"},\"numVariants\":{\"type\":\"number\",\"description\":\"Number of variants to generate (max 10)\"},\"addWatermark\":{\"type\":\"boolean\",\"description\":\"Whether to add a MindStudio watermark to the generated image\"}},\"required\":[\"prompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"imageUrl\"]},\n },\n \"generateLipsync\": {\n stepType: \"generateLipsync\",\n description: \"Generate a lip sync video from provided audio and image.\",\n usageNotes: \"- In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the generated video will not appear in the user's asset history\"},\"addWatermark\":{\"type\":\"boolean\",\"description\":\"Whether to add a MindStudio watermark to the generated video\"},\"lipsyncModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default lipsync model if not specified\"}}},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"generateMusic\": {\n stepType: \"generateMusic\",\n description: \"Generate an audio file from provided instructions (text) using a music model.\",\n usageNotes: \"- The text field contains the instructions (prompt) for the music generation.\\n- In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The instructions (prompt) for the music generation\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the generated audio will not appear in the user's asset history\"},\"musicModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default music model if not specified\"}},\"required\":[\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"generatePdf\": {\n stepType: \"generatePdf\",\n description: \"Generate an HTML asset and export it as a webpage, PDF, or image\",\n usageNotes: \"- Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \\\"generatePdf\\\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\\n- The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\\n- If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \\\"source\\\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\\n- Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\\n- Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"The HTML or Markdown source template for the asset\"},\"sourceType\":{\"enum\":[\"html\",\"markdown\",\"spa\",\"raw\",\"dynamic\",\"customInterface\"],\"type\":\"string\",\"description\":\"Source type: html, markdown (auto-formatted), spa (single page app), raw (pre-generated HTML in a variable), dynamic (AI-generated from prompt), or customInterface\"},\"outputFormat\":{\"enum\":[\"pdf\",\"png\",\"html\",\"mp4\",\"openGraph\"],\"type\":\"string\",\"description\":\"The output format for the generated asset\"},\"pageSize\":{\"enum\":[\"full\",\"letter\",\"A4\",\"custom\"],\"type\":\"string\",\"description\":\"Page size for PDF, PNG, or MP4 output\"},\"testData\":{\"type\":\"object\",\"description\":\"Test data used for previewing the template with sample variable values\"},\"options\":{\"type\":\"object\",\"properties\":{\"pageWidthPx\":{\"type\":\"number\",\"description\":\"Custom page width in pixels (for custom pageSize)\"},\"pageHeightPx\":{\"type\":\"number\",\"description\":\"Custom page height in pixels (for custom pageSize)\"},\"pageOrientation\":{\"enum\":[\"portrait\",\"landscape\"],\"type\":\"string\",\"description\":\"Page orientation for the rendered output\"},\"rehostMedia\":{\"type\":\"boolean\",\"description\":\"Whether to re-host third-party images on the MindStudio CDN\"},\"videoDurationSeconds\":{\"type\":\"number\",\"description\":\"Duration in seconds for MP4 video output\"}},\"description\":\"Additional rendering options\"},\"spaSource\":{\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"Source code of the SPA (legacy, use files instead)\"},\"lastCompiledSource\":{\"type\":\"string\",\"description\":\"Last compiled source (cached)\"},\"files\":{\"type\":\"object\",\"description\":\"Multi-file SPA source\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Available route paths in the SPA\"},\"root\":{\"type\":\"string\",\"description\":\"Root URL of the SPA bundle\"},\"zipUrl\":{\"type\":\"string\",\"description\":\"URL of the zipped SPA bundle\"}},\"required\":[\"paths\",\"root\",\"zipUrl\"],\"description\":\"Single page app source configuration (advanced)\"},\"rawSource\":{\"type\":\"string\",\"description\":\"Raw HTML source stored in a variable, using handlebars syntax (e.g. {{myHtmlVariable}})\"},\"dynamicPrompt\":{\"type\":\"string\",\"description\":\"Prompt to generate the HTML dynamically when sourceType is \\\"dynamic\\\"\"},\"dynamicSourceModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model override for dynamic HTML generation. Leave undefined to use the default model\"},\"transitionControl\":{\"enum\":[\"default\",\"native\"],\"type\":\"string\",\"description\":\"Controls how the step transitions after displaying in foreground mode\"},\"shareControl\":{\"enum\":[\"default\",\"hidden\"],\"type\":\"string\",\"description\":\"Controls visibility of the share button on displayed assets\"},\"shareImageUrl\":{\"type\":\"string\",\"description\":\"URL of a custom Open Graph share image\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the asset will not appear in the user's asset history\"}},\"required\":[\"source\",\"sourceType\",\"outputFormat\",\"pageSize\",\"testData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"CDN URL of the generated asset (PDF, PNG, HTML, or MP4 depending on outputFormat)\"}},\"required\":[\"url\"]},\n },\n \"generateStaticVideoFromImage\": {\n stepType: \"generateStaticVideoFromImage\",\n description: \"Convert a static image to an MP4\",\n usageNotes: \"- Can use to create slides/intertitles/slates for video composition\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the source image to convert to video\"},\"duration\":{\"type\":\"string\",\"description\":\"Duration of the output video in seconds\"}},\"required\":[\"imageUrl\",\"duration\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the generated static video\"}},\"required\":[\"videoUrl\"]},\n },\n \"generateText\": {\n stepType: \"userMessage\",\n description: \"Send a message to an AI model and return the response, or echo a system message.\",\n usageNotes: \"- Source \\\"user\\\" sends the message to an LLM and returns the model's response.\\n- Source \\\"system\\\" echoes the message content directly (no AI call).\\n- Mode \\\"background\\\" saves the result to a variable. Mode \\\"foreground\\\" streams it to the user (not available in direct execution).\\n- Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The message to send (prompt for AI, or text for system echo)\"},\"source\":{\"enum\":[\"user\",\"system\"],\"type\":\"string\",\"description\":\"Message source: \\\"user\\\" sends to AI model, \\\"system\\\" echoes message content directly. Defaults to \\\"user\\\"\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model configuration override. Optional; uses the workflow's default model if not specified\"},\"structuredOutputType\":{\"enum\":[\"text\",\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format constraint for structured responses\"},\"structuredOutputExample\":{\"type\":\"string\",\"description\":\"Sample showing the desired output shape (for JSON/CSV formats). A TypeScript interface is also useful here for more complex types.\"},\"chatHistoryMode\":{\"enum\":[\"include\",\"exclude\"],\"type\":\"string\",\"description\":\"Whether to include or exclude prior chat history in the AI context\"}},\"required\":[\"message\"],\"description\":\"Configuration for the user message step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"The AI model's response or echoed system message content\"}},\"required\":[\"content\"]},\n },\n \"generateVideo\": {\n stepType: \"generateVideo\",\n description: \"Generate a video from a text prompt using an AI model.\",\n usageNotes: \"- Prompts should be descriptive but concise (roughly 3–6 sentences).\\n- Videos are automatically hosted on a CDN.\\n- In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\\n- When generateVariants is true with numVariants > 1, multiple videos are generated in parallel.\\n- In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Text prompt describing the video to generate\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the video will not appear in the user's asset history\"},\"videoModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Video generation model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default video model if not specified\"},\"generateVariants\":{\"type\":\"boolean\",\"description\":\"Whether to generate multiple video variants in parallel\"},\"numVariants\":{\"type\":\"number\",\"description\":\"Number of variants to generate (max 10)\"},\"addWatermark\":{\"type\":\"boolean\",\"description\":\"Whether to add a MindStudio watermark to the generated video\"}},\"required\":[\"prompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"videoUrl\"]},\n },\n \"getGmailAttachments\": {\n stepType: \"getGmailAttachments\",\n description: \"Download attachments from a Gmail email and re-host them on CDN.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Attachments are uploaded to CDN and returned as URLs.\\n- Attachments larger than 25MB are skipped.\\n- Use the message ID from Search Gmail Emails, List Recent Gmail Emails, or Get Gmail Email steps.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"getGmailDraft\": {\n stepType: \"getGmailDraft\",\n description: \"Retrieve a specific draft from Gmail by draft ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns the draft content including subject, recipients, sender, and body.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID to retrieve\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"draftId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID\"},\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email\"},\"from\":{\"type\":\"string\",\"description\":\"Sender email\"},\"body\":{\"type\":\"string\",\"description\":\"Draft body content\"}},\"required\":[\"draftId\",\"messageId\",\"subject\",\"to\",\"from\",\"body\"]},\n },\n \"getGmailEmail\": {\n stepType: \"getGmailEmail\",\n description: \"Retrieve a specific email from Gmail by message ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns the email subject, sender, recipient, date, body (plain text preferred, falls back to HTML), and labels.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID to retrieve\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject\"},\"from\":{\"type\":\"string\",\"description\":\"Sender email\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email\"},\"date\":{\"type\":\"string\",\"description\":\"Email date\"},\"body\":{\"type\":\"string\",\"description\":\"Email body content\"},\"labels\":{\"type\":\"string\",\"description\":\"Comma-separated label IDs\"}},\"required\":[\"messageId\",\"subject\",\"from\",\"to\",\"date\",\"body\",\"labels\"]},\n },\n \"getGmailUnreadCount\": {\n stepType: \"getGmailUnreadCount\",\n description: \"Get the number of unread emails in the connected Gmail inbox.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns the unread message count for the inbox label.\\n- This is a lightweight call that does not fetch any email content.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}}},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"getGoogleCalendarEvent\": {\n stepType: \"getGoogleCalendarEvent\",\n description: \"Retrieve a specific event from a Google Calendar by event ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID to retrieve\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"eventId\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"event\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"status\":{\"type\":\"string\",\"description\":\"Event status (e.g. \\\"confirmed\\\", \\\"tentative\\\", \\\"cancelled\\\")\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"},\"created\":{\"type\":\"string\",\"description\":\"Timestamp when the event was created\"},\"updated\":{\"type\":\"string\",\"description\":\"Timestamp when the event was last updated\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"organizer\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"start\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"end\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"attendees\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"responseStatus\":{\"type\":\"string\"}}}},{\"type\":\"null\"}]}},\"description\":\"The retrieved calendar event\"}},\"required\":[\"event\"]},\n },\n \"getGoogleDriveFile\": {\n stepType: \"getGoogleDriveFile\",\n description: \"Download a file from Google Drive and rehost it on the CDN. Returns a public CDN URL.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- Google-native files (Docs, Sheets, Slides) cannot be downloaded — use dedicated steps instead.\\n- Maximum file size: 200MB.\\n- The file is downloaded and re-uploaded to the CDN; the returned URL is publicly accessible.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"fileId\":{\"type\":\"string\",\"description\":\"Google Drive file ID\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"fileId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"CDN URL of the downloaded file\"},\"name\":{\"type\":\"string\",\"description\":\"Original file name\"},\"mimeType\":{\"type\":\"string\",\"description\":\"File MIME type\"},\"size\":{\"type\":\"number\",\"description\":\"File size in bytes\"}},\"required\":[\"url\",\"name\",\"mimeType\",\"size\"]},\n },\n \"getGoogleSheetInfo\": {\n stepType: \"getGoogleSheetInfo\",\n description: \"Get metadata about a Google Spreadsheet including sheet names, row counts, and column counts.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- Returns the spreadsheet title and a list of all sheets with their dimensions.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID or URL\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"documentId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Spreadsheet title\"},\"sheets\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sheetId\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"},\"rowCount\":{\"type\":\"number\"},\"columnCount\":{\"type\":\"number\"}},\"required\":[\"sheetId\",\"title\",\"rowCount\",\"columnCount\"]},\"description\":\"List of sheets with their properties\"}},\"required\":[\"title\",\"sheets\"]},\n },\n \"getMediaMetadata\": {\n stepType: \"getMediaMetadata\",\n description: \"Get info about a media file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mediaUrl\":{\"type\":\"string\",\"description\":\"URL of the audio or video file to analyze\"}},\"required\":[\"mediaUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"metadata\":{\"type\":\"string\",\"description\":\"JSON string containing the media file metadata\"}},\"required\":[\"metadata\"]},\n },\n \"httpRequest\": {\n stepType: \"httpRequest\",\n description: \"Make an HTTP request to an external endpoint and return the response.\",\n usageNotes: \"- Supports GET, POST, PATCH, DELETE, and PUT methods.\\n- Body can be raw JSON/text, URL-encoded form data, or multipart form data.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"The request URL\"},\"method\":{\"type\":\"string\",\"description\":\"HTTP method (GET, POST, PATCH, DELETE, or PUT)\"},\"headers\":{\"type\":\"object\",\"description\":\"Custom request headers as key-value pairs\"},\"queryParams\":{\"type\":\"object\",\"description\":\"Query string parameters as key-value pairs\"},\"body\":{\"type\":\"string\",\"description\":\"Raw request body (used for JSON or custom content types)\"},\"bodyItems\":{\"type\":\"object\",\"description\":\"Key-value body items (used for form data or URL-encoded content types)\"},\"contentType\":{\"enum\":[\"none\",\"application/json\",\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"custom\"],\"type\":\"string\",\"description\":\"The content type for the request body\"},\"customContentType\":{\"type\":\"string\",\"description\":\"Custom Content-Type header value (used when contentType is \\\"custom\\\")\"},\"testData\":{\"type\":\"object\",\"description\":\"Test data for debug/preview mode\"}},\"required\":[\"url\",\"method\",\"headers\",\"queryParams\",\"body\",\"bodyItems\",\"contentType\",\"customContentType\"],\"description\":\"HTTP request configuration\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"ok\":{\"type\":\"boolean\",\"description\":\"Whether the HTTP response status code is in the 2xx range\"},\"status\":{\"type\":\"number\",\"description\":\"HTTP response status code\"},\"statusText\":{\"type\":\"string\",\"description\":\"HTTP response status text\"},\"response\":{\"type\":\"string\",\"description\":\"Response body as a string\"}},\"required\":[\"ok\",\"status\",\"statusText\",\"response\"]},\n },\n \"hubspotCreateCompany\": {\n stepType: \"hubspotCreateCompany\",\n description: \"Create a new company or update an existing one in HubSpot. Matches by domain.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- If a company with the given domain already exists, it is updated. Otherwise, a new one is created.\\n- Property values are type-checked against enabledProperties before being sent to HubSpot.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"company\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Company domain, used for matching existing companies\"},\"name\":{\"type\":\"string\",\"description\":\"Company name\"}},\"required\":[\"domain\",\"name\"],\"description\":\"Company data including domain, name, and additional properties\"},\"enabledProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"label\":{\"type\":\"string\",\"description\":\"Display label for the HubSpot property\"},\"value\":{\"type\":\"string\",\"description\":\"HubSpot property internal name\"},\"type\":{\"enum\":[\"string\",\"number\",\"bool\"],\"type\":\"string\",\"description\":\"Data type of the property value\"}},\"required\":[\"label\",\"value\",\"type\"]},\"description\":\"HubSpot properties enabled for this step, used for type validation\"}},\"required\":[\"company\",\"enabledProperties\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"companyId\":{\"type\":\"string\",\"description\":\"HubSpot company ID of the created or updated company\"}},\"required\":[\"companyId\"]},\n },\n \"hubspotCreateContact\": {\n stepType: \"hubspotCreateContact\",\n description: \"Create a new contact or update an existing one in HubSpot. Matches by email address.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- If a contact with the given email already exists, it is updated. Otherwise, a new one is created.\\n- If companyDomain is provided, the contact is associated with that company (creating the company if needed).\\n- Property values are type-checked against enabledProperties before being sent to HubSpot.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"contact\":{\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Contact email address, used for matching existing contacts\"},\"firstname\":{\"type\":\"string\",\"description\":\"Contact first name\"},\"lastname\":{\"type\":\"string\",\"description\":\"Contact last name\"}},\"required\":[\"email\",\"firstname\",\"lastname\"],\"description\":\"Contact data including email, first name, last name, and additional properties\"},\"enabledProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"label\":{\"type\":\"string\",\"description\":\"Display label for the HubSpot property\"},\"value\":{\"type\":\"string\",\"description\":\"HubSpot property internal name\"},\"type\":{\"enum\":[\"string\",\"number\",\"bool\"],\"type\":\"string\",\"description\":\"Data type of the property value\"}},\"required\":[\"label\",\"value\",\"type\"]},\"description\":\"HubSpot properties enabled for this step, used for type validation\"},\"companyDomain\":{\"type\":\"string\",\"description\":\"Company domain to associate the contact with. Creates the company if it does not exist\"}},\"required\":[\"contact\",\"enabledProperties\",\"companyDomain\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"contactId\":{\"type\":\"string\",\"description\":\"HubSpot contact ID of the created or updated contact\"}},\"required\":[\"contactId\"]},\n },\n \"hubspotGetCompany\": {\n stepType: \"hubspotGetCompany\",\n description: \"Look up a HubSpot company by domain name or company ID.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- Returns null if the company is not found.\\n- When searching by domain, performs a search query then fetches the full company record.\\n- Use additionalProperties to request specific HubSpot properties beyond the defaults.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"searchBy\":{\"enum\":[\"domain\",\"id\"],\"type\":\"string\",\"description\":\"How to look up the company: by domain name or HubSpot company ID\"},\"companyDomain\":{\"type\":\"string\",\"description\":\"Domain to search by (used when searchBy is 'domain')\"},\"companyId\":{\"type\":\"string\",\"description\":\"HubSpot company ID (used when searchBy is 'id')\"},\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Extra HubSpot property names to include in the response beyond the defaults\"}},\"required\":[\"searchBy\",\"companyDomain\",\"companyId\",\"additionalProperties\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"company\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"archived\":{\"type\":\"boolean\"}},\"required\":[\"id\",\"properties\",\"createdAt\",\"updatedAt\",\"archived\"]},{\"type\":\"null\"}]}},\"required\":[\"company\"]},\n },\n \"hubspotGetContact\": {\n stepType: \"hubspotGetContact\",\n description: \"Look up a HubSpot contact by email address or contact ID.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- Returns null if the contact is not found.\\n- Use additionalProperties to request specific HubSpot properties beyond the defaults.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"searchBy\":{\"enum\":[\"email\",\"id\"],\"type\":\"string\",\"description\":\"How to look up the contact: by email address or HubSpot contact ID\"},\"contactEmail\":{\"type\":\"string\",\"description\":\"Email address to search by (used when searchBy is 'email')\"},\"contactId\":{\"type\":\"string\",\"description\":\"HubSpot contact ID (used when searchBy is 'id')\"},\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Extra HubSpot property names to include in the response beyond the defaults\"}},\"required\":[\"searchBy\",\"contactEmail\",\"contactId\",\"additionalProperties\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"contact\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"archived\":{\"type\":\"boolean\"}},\"required\":[\"id\",\"properties\",\"createdAt\",\"updatedAt\",\"archived\"]},{\"type\":\"null\"}]}},\"required\":[\"contact\"]},\n },\n \"hunterApiCompanyEnrichment\": {\n stepType: \"hunterApiCompanyEnrichment\",\n description: \"Look up company information by domain using Hunter.io.\",\n usageNotes: \"- Returns company name, description, location, industry, size, technologies, and more.\\n- If the domain input is a full URL, the hostname is automatically extracted.\\n- Returns null if the company is not found.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain or URL to look up (e.g. \\\"example.com\\\")\"}},\"required\":[\"domain\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"country\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"city\":{\"type\":\"string\"},\"industry\":{\"type\":\"string\"},\"employees_range\":{\"type\":\"string\"},\"logo_url\":{\"type\":\"string\"},\"technologies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"name\",\"domain\",\"description\",\"country\",\"state\",\"city\",\"industry\",\"employees_range\",\"logo_url\",\"technologies\"]},{\"type\":\"null\"}]}},\"required\":[\"data\"]},\n },\n \"hunterApiDomainSearch\": {\n stepType: \"hunterApiDomainSearch\",\n description: \"Search for email addresses associated with a domain using Hunter.io.\",\n usageNotes: \"- If the domain input is a full URL, the hostname is automatically extracted.\\n- Returns a list of email addresses found for the domain along with organization info.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain or URL to search for email addresses (e.g. \\\"example.com\\\")\"}},\"required\":[\"domain\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"The searched domain\"},\"disposable\":{\"type\":\"boolean\",\"description\":\"Whether the domain uses disposable email addresses\"},\"webmail\":{\"type\":\"boolean\",\"description\":\"Whether the domain is a webmail provider\"},\"accept_all\":{\"type\":\"boolean\",\"description\":\"Whether the domain accepts all email addresses\"},\"pattern\":{\"type\":\"string\",\"description\":\"Common email pattern for the domain (e.g. \\\"{first}.{last}\\\")\"},\"organization\":{\"type\":\"string\",\"description\":\"Organization name associated with the domain\"},\"country\":{\"type\":\"string\",\"description\":\"Country of the organization\"},\"state\":{\"type\":\"string\",\"description\":\"State or region of the organization\"},\"emails\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"value\":{\"type\":\"string\",\"description\":\"Email address\"},\"type\":{\"type\":\"string\",\"description\":\"Email type (e.g. \\\"personal\\\", \\\"generic\\\")\"},\"confidence\":{\"type\":\"number\",\"description\":\"Confidence score (0-100)\"},\"first_name\":{\"type\":\"string\",\"description\":\"Contact first name\"},\"last_name\":{\"type\":\"string\",\"description\":\"Contact last name\"},\"position\":{\"type\":\"string\",\"description\":\"Job title or position\"},\"seniority\":{\"type\":\"string\",\"description\":\"Seniority level\"},\"department\":{\"type\":\"string\",\"description\":\"Department within the organization\"},\"linkedin\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL\"},\"twitter\":{\"type\":\"string\",\"description\":\"Twitter handle\"},\"phone_number\":{\"type\":\"string\",\"description\":\"Phone number\"}},\"required\":[\"value\",\"type\",\"confidence\",\"first_name\",\"last_name\",\"position\",\"seniority\",\"department\",\"linkedin\",\"twitter\",\"phone_number\"]},\"description\":\"List of email addresses found for the domain\"},\"linked_domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Other domains linked to this organization\"}},\"required\":[\"domain\",\"disposable\",\"webmail\",\"accept_all\",\"pattern\",\"organization\",\"country\",\"state\",\"emails\",\"linked_domains\"],\"description\":\"Domain search results including emails and organization info\"}},\"required\":[\"data\"]},\n },\n \"hunterApiEmailFinder\": {\n stepType: \"hunterApiEmailFinder\",\n description: \"Find an email address for a specific person at a domain using Hunter.io.\",\n usageNotes: \"- Requires a first name, last name, and domain.\\n- If the domain input is a full URL, the hostname is automatically extracted.\\n- Returns the most likely email address with a confidence score.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain to search (e.g. \\\"example.com\\\"). Full URLs are also accepted\"},\"firstName\":{\"type\":\"string\",\"description\":\"Person's first name\"},\"lastName\":{\"type\":\"string\",\"description\":\"Person's last name\"}},\"required\":[\"domain\",\"firstName\",\"lastName\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"first_name\":{\"type\":\"string\",\"description\":\"Person's first name\"},\"last_name\":{\"type\":\"string\",\"description\":\"Person's last name\"},\"email\":{\"type\":\"string\",\"description\":\"The found email address\"},\"score\":{\"type\":\"number\",\"description\":\"Confidence score (0-100)\"},\"domain\":{\"type\":\"string\",\"description\":\"Domain searched\"},\"accept_all\":{\"type\":\"boolean\",\"description\":\"Whether the domain accepts all email addresses\"},\"position\":{\"type\":\"string\",\"description\":\"Job title or position\"},\"twitter\":{\"type\":\"string\",\"description\":\"Twitter handle\"},\"linkedin_url\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL\"},\"phone_number\":{\"type\":\"string\",\"description\":\"Phone number\"},\"company\":{\"type\":\"string\",\"description\":\"Company name\"},\"sources\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain where the email was found\"},\"uri\":{\"type\":\"string\",\"description\":\"URI of the page where the email was found\"},\"extracted_on\":{\"type\":\"string\",\"description\":\"Date when the email was extracted\"}},\"required\":[\"domain\",\"uri\",\"extracted_on\"]},\"description\":\"Sources where the email was found\"}},\"required\":[\"first_name\",\"last_name\",\"email\",\"score\",\"domain\",\"accept_all\",\"position\",\"twitter\",\"linkedin_url\",\"phone_number\",\"company\",\"sources\"],\"description\":\"Email finder results including the found email and confidence score\"}},\"required\":[\"data\"]},\n },\n \"hunterApiEmailVerification\": {\n stepType: \"hunterApiEmailVerification\",\n description: \"Verify whether an email address is valid and deliverable using Hunter.io.\",\n usageNotes: \"- Checks email format, MX records, SMTP server, and mailbox deliverability.\\n- Returns a status (\\\"valid\\\", \\\"invalid\\\", \\\"accept_all\\\", \\\"webmail\\\", \\\"disposable\\\", \\\"unknown\\\") and a score.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Email address to verify\"}},\"required\":[\"email\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"string\",\"description\":\"Verification status (e.g. \\\"valid\\\", \\\"invalid\\\", \\\"accept_all\\\", \\\"webmail\\\", \\\"disposable\\\", \\\"unknown\\\")\"},\"result\":{\"type\":\"string\",\"description\":\"Deliverability result\"},\"score\":{\"type\":\"number\",\"description\":\"Confidence score (0-100)\"},\"email\":{\"type\":\"string\",\"description\":\"The verified email address\"},\"regexp\":{\"type\":\"boolean\",\"description\":\"Whether the email matches a valid format\"},\"gibberish\":{\"type\":\"boolean\",\"description\":\"Whether the email appears to be gibberish\"},\"disposable\":{\"type\":\"boolean\",\"description\":\"Whether the email uses a disposable email service\"},\"webmail\":{\"type\":\"boolean\",\"description\":\"Whether the email is from a webmail provider\"},\"mx_records\":{\"type\":\"boolean\",\"description\":\"Whether MX records exist for the domain\"},\"smtp_server\":{\"type\":\"boolean\",\"description\":\"Whether the SMTP server is reachable\"},\"smtp_check\":{\"type\":\"boolean\",\"description\":\"Whether the SMTP mailbox check passed\"},\"accept_all\":{\"type\":\"boolean\",\"description\":\"Whether the domain accepts all email addresses\"},\"block\":{\"type\":\"boolean\",\"description\":\"Whether the email is blocked\"},\"sources\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain where the email was found\"},\"uri\":{\"type\":\"string\",\"description\":\"URI of the page where the email was found\"},\"extracted_on\":{\"type\":\"string\",\"description\":\"Date when the email was extracted\"}},\"required\":[\"domain\",\"uri\",\"extracted_on\"]},\"description\":\"Sources where the email was found\"}},\"required\":[\"status\",\"result\",\"score\",\"email\",\"regexp\",\"gibberish\",\"disposable\",\"webmail\",\"mx_records\",\"smtp_server\",\"smtp_check\",\"accept_all\",\"block\",\"sources\"],\"description\":\"Email verification results including status, deliverability, and confidence score\"}},\"required\":[\"data\"]},\n },\n \"hunterApiPersonEnrichment\": {\n stepType: \"hunterApiPersonEnrichment\",\n description: \"Look up professional information about a person by their email address using Hunter.io.\",\n usageNotes: \"- Returns name, job title, social profiles, and company information.\\n- If the person is not found, returns an object with an error message instead of throwing.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Email address to look up\"}},\"required\":[\"email\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"position\":{\"type\":\"string\"},\"seniority\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"linkedin_url\":{\"type\":\"string\"},\"twitter\":{\"type\":\"string\"},\"phone_number\":{\"type\":\"string\"},\"company\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"industry\":{\"type\":\"string\"}},\"required\":[\"name\",\"domain\",\"industry\"]},{\"type\":\"null\"}]}},\"required\":[\"first_name\",\"last_name\",\"email\",\"position\",\"seniority\",\"department\",\"linkedin_url\",\"twitter\",\"phone_number\",\"company\"]},{\"type\":\"object\",\"properties\":{\"error\":{\"type\":\"string\"}},\"required\":[\"error\"]}]}},\"required\":[\"data\"]},\n },\n \"imageFaceSwap\": {\n stepType: \"imageFaceSwap\",\n description: \"Replace a face in an image with a face from another image using AI.\",\n usageNotes: \"- Requires both a target image and a face source image.\\n- Output is re-hosted on the CDN as a PNG.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the target image containing the face to replace\"},\"faceImageUrl\":{\"type\":\"string\",\"description\":\"URL of the image containing the replacement face\"},\"engine\":{\"type\":\"string\",\"description\":\"Face swap engine to use\"}},\"required\":[\"imageUrl\",\"faceImageUrl\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the face-swapped image (PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"imageRemoveWatermark\": {\n stepType: \"imageRemoveWatermark\",\n description: \"Remove watermarks from an image using AI.\",\n usageNotes: \"- Output is re-hosted on the CDN as a PNG.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to remove the watermark from\"},\"engine\":{\"type\":\"string\",\"description\":\"Watermark removal engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history\"}},\"required\":[\"imageUrl\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the processed image with watermark removed (PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"insertVideoClips\": {\n stepType: \"insertVideoClips\",\n description: \"Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"baseVideoUrl\":{\"type\":\"string\",\"description\":\"URL of the base video to insert clips into\"},\"overlayVideos\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the overlay video clip\"},\"startTimeSec\":{\"type\":\"number\",\"description\":\"Timecode in seconds at which to insert this clip\"}},\"required\":[\"videoUrl\",\"startTimeSec\"]},\"description\":\"Array of overlay clips to insert at specified timecodes\"},\"transition\":{\"type\":\"string\",\"description\":\"Optional xfade transition effect name between clips\"},\"transitionDuration\":{\"type\":\"number\",\"description\":\"Duration of the transition in seconds\"},\"useOverlayAudio\":{\"type\":\"boolean\",\"description\":\"When true, uses audio from the overlay clips instead of the base video audio during inserts\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"baseVideoUrl\",\"overlayVideos\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with clips inserted\"}},\"required\":[\"videoUrl\"]},\n },\n \"listDataSources\": {\n stepType: \"listDataSources\",\n description: \"List all data sources for the current app.\",\n usageNotes: \"- Returns metadata for every data source associated with the current app version.\\n- Each entry includes the data source ID, name, description, status, and document list.\",\n inputSchema: {\"type\":\"object\"},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"listGmailDrafts\": {\n stepType: \"listGmailDrafts\",\n description: \"List drafts in the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns up to 50 drafts (default 10).\\n- The variable receives text or JSON depending on exportType.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"limit\":{\"type\":\"string\",\"description\":\"Max drafts to return (default: 10, max: 50)\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"}},\"required\":[\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"drafts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID\"},\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email\"},\"snippet\":{\"type\":\"string\",\"description\":\"Short preview text\"}},\"required\":[\"draftId\",\"messageId\",\"subject\",\"to\",\"snippet\"]},\"description\":\"List of draft summaries\"}},\"required\":[\"drafts\"]},\n },\n \"listGmailLabels\": {\n stepType: \"listGmailLabels\",\n description: \"List all labels in the connected Gmail account. Use these label IDs or names with the Update Gmail Labels step.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns both system labels (INBOX, SENT, TRASH, etc.) and user-created labels.\\n- Label type is \\\"system\\\" for built-in labels or \\\"user\\\" for custom labels.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}}},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"listGoogleCalendarEvents\": {\n stepType: \"listGoogleCalendarEvents\",\n description: \"List upcoming events from a Google Calendar, ordered by start time.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Only returns future events (timeMin = now).\\n- The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns structured events.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of events to return (default: 10)\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"limit\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"status\":{\"type\":\"string\",\"description\":\"Event status (e.g. \\\"confirmed\\\", \\\"tentative\\\", \\\"cancelled\\\")\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"},\"created\":{\"type\":\"string\",\"description\":\"Timestamp when the event was created\"},\"updated\":{\"type\":\"string\",\"description\":\"Timestamp when the event was last updated\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"organizer\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"start\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"end\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"attendees\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"responseStatus\":{\"type\":\"string\"}}}},{\"type\":\"null\"}]}}},\"description\":\"List of upcoming calendar events ordered by start time\"}},\"required\":[\"events\"]},\n },\n \"listGoogleDriveFiles\": {\n stepType: \"listGoogleDriveFiles\",\n description: \"List files in a Google Drive folder.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- If folderId is omitted, lists files in the root folder.\\n- Returns file metadata including name, type, size, and links.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"folderId\":{\"type\":\"string\",\"description\":\"Google Drive folder ID (defaults to root)\"},\"limit\":{\"type\":\"number\",\"description\":\"Max files to return (default: 20)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"}},\"required\":[\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"mimeType\":{\"type\":\"string\"},\"size\":{\"type\":\"string\"},\"webViewLink\":{\"type\":\"string\"},\"createdTime\":{\"type\":\"string\"},\"modifiedTime\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"mimeType\",\"size\",\"webViewLink\",\"createdTime\",\"modifiedTime\"]},\"description\":\"List of files in the folder\"}},\"required\":[\"files\"]},\n },\n \"listRecentGmailEmails\": {\n stepType: \"listRecentGmailEmails\",\n description: \"List recent emails from the connected Gmail inbox.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns up to 100 emails (default 5), ordered by most recent first.\\n- Functionally equivalent to Search Gmail Emails with an \\\"in:inbox\\\" query.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"limit\":{\"type\":\"string\",\"description\":\"Maximum number of emails to return (1-100, default: 5)\"}},\"required\":[\"exportType\",\"limit\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"logic\": {\n stepType: \"logic\",\n description: \"Route execution to different branches based on AI evaluation, comparison operators, or workflow jumps.\",\n usageNotes: \"- Supports two modes: \\\"ai\\\" (default) uses an AI model to pick the most accurate statement; \\\"comparison\\\" uses operator-based checks.\\n- In AI mode, the model picks the most accurate statement from the list. All possible cases must be specified.\\n- In comparison mode, the context is the left operand and each case's condition is the right operand. First matching case wins. Use operator \\\"default\\\" as a fallback.\\n- Requires at least two cases.\\n- Each case can transition to a step in the current workflow (destinationStepId) or jump to another workflow (destinationWorkflowId).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"ai\",\"comparison\"],\"type\":\"string\",\"description\":\"Evaluation mode: 'ai' for LLM-based, 'comparison' for operator-based. Default: 'ai'\"},\"context\":{\"type\":\"string\",\"description\":\"AI mode: prompt context. Comparison mode: left operand (resolved via variables).\"},\"cases\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique case identifier\"},\"condition\":{\"type\":\"string\",\"description\":\"AI mode: statement to evaluate. Comparison mode: right operand value.\"},\"operator\":{\"enum\":[\"eq\",\"neq\",\"gt\",\"lt\",\"gte\",\"lte\",\"exists\",\"not_exists\",\"contains\",\"not_contains\",\"default\"],\"type\":\"string\",\"description\":\"Comparison operator (comparison mode only)\"},\"destinationStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if this case wins (workflow mode only)\"},\"destinationWorkflowId\":{\"type\":\"string\",\"description\":\"Workflow to jump to if this case wins (uses that workflow's initial step)\"}},\"required\":[\"id\",\"condition\"]},{\"type\":\"string\"}]},\"description\":\"List of conditions to evaluate (objects for managed UIs, strings for code)\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Optional model settings override; uses the organization default if not specified (AI mode only)\"}},\"required\":[\"context\",\"cases\"],\"description\":\"Configuration for the router step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"selectedCase\":{\"type\":\"number\",\"description\":\"The index of the winning case\"}},\"required\":[\"selectedCase\"]},\n },\n \"makeDotComRunScenario\": {\n stepType: \"makeDotComRunScenario\",\n description: \"Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\",\n usageNotes: \"- The webhook URL must be configured in your Make.com scenario.\\n- Input key-value pairs are sent as JSON in the POST body.\\n- Response format depends on the Make.com scenario configuration.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"webhookUrl\":{\"type\":\"string\",\"description\":\"Make.com webhook URL for the scenario\"},\"input\":{\"type\":\"object\",\"description\":\"Key-value pairs to send as the JSON POST body\"}},\"required\":[\"webhookUrl\",\"input\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Response from the Make.com scenario (JSON or string depending on scenario configuration)\"}},\"required\":[\"data\"]},\n },\n \"mergeAudio\": {\n stepType: \"mergeAudio\",\n description: \"Merge one or more clips into a single audio file.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mp3Urls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"URLs of the MP3 audio clips to merge in order\"},\"fileMetadata\":{\"type\":\"object\",\"description\":\"FFmpeg MP3 metadata key-value pairs to embed in the output file\"},\"albumArtUrl\":{\"type\":\"string\",\"description\":\"URL of an image to embed as album art in the output file\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"mp3Urls\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the merged audio file\"}},\"required\":[\"audioUrl\"]},\n },\n \"mergeVideos\": {\n stepType: \"mergeVideos\",\n description: \"Merge one or more clips into a single video.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"URLs of the video clips to merge in order\"},\"transition\":{\"type\":\"string\",\"description\":\"Optional xfade transition effect name\"},\"transitionDuration\":{\"type\":\"number\",\"description\":\"Duration of the transition in seconds\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrls\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the merged video\"}},\"required\":[\"videoUrl\"]},\n },\n \"mixAudioIntoVideo\": {\n stepType: \"mixAudioIntoVideo\",\n description: \"Mix an audio track into a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the audio track to mix into the video\"},\"options\":{\"type\":\"object\",\"properties\":{\"keepVideoAudio\":{\"type\":\"boolean\",\"description\":\"When true, preserves the original video audio alongside the new track. Defaults to false.\"},\"audioGainDb\":{\"type\":\"number\",\"description\":\"Volume adjustment for the new audio track in decibels. Defaults to 0.\"},\"videoGainDb\":{\"type\":\"number\",\"description\":\"Volume adjustment for the existing video audio in decibels. Defaults to 0.\"},\"loopAudio\":{\"type\":\"boolean\",\"description\":\"When true, loops the audio track to match the video duration. Defaults to false.\"}},\"description\":\"Audio mixing options\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"audioUrl\",\"options\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with the mixed audio track\"}},\"required\":[\"videoUrl\"]},\n },\n \"muteVideo\": {\n stepType: \"muteVideo\",\n description: \"Mute a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to mute\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the muted video\"}},\"required\":[\"videoUrl\"]},\n },\n \"n8nRunNode\": {\n stepType: \"n8nRunNode\",\n description: \"Trigger an n8n workflow node via webhook and return the response.\",\n usageNotes: \"- The webhook URL must be configured in your n8n workflow.\\n- Supports GET and POST methods with optional Basic authentication.\\n- For GET requests, input values are sent as query parameters. For POST, they are sent as JSON body.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\",\"description\":\"HTTP method to use (GET or POST)\"},\"authentication\":{\"enum\":[\"none\",\"basic\",\"string\"],\"type\":\"string\",\"description\":\"Authentication type for the webhook request\"},\"user\":{\"type\":\"string\",\"description\":\"Username for Basic authentication\"},\"password\":{\"type\":\"string\",\"description\":\"Password for Basic authentication\"},\"webhookUrl\":{\"type\":\"string\",\"description\":\"n8n webhook URL for the workflow node\"},\"input\":{\"type\":\"object\",\"description\":\"Key-value pairs sent as query params (GET) or JSON body (POST)\"}},\"required\":[\"method\",\"authentication\",\"user\",\"password\",\"webhookUrl\",\"input\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Response from the n8n node (JSON or string depending on node configuration)\"}},\"required\":[\"data\"]},\n },\n \"notionCreatePage\": {\n stepType: \"notionCreatePage\",\n description: \"Create a new page in Notion as a child of an existing page.\",\n usageNotes: \"- Requires a Notion OAuth connection (connectionId).\\n- Content is provided as markdown and converted to Notion blocks (headings, paragraphs, lists, code, quotes).\\n- The page is created as a child of the specified parent page (pageId).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Parent page ID to create the new page under\"},\"content\":{\"type\":\"string\",\"description\":\"Page content in markdown format\"},\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Notion OAuth connection ID\"}},\"required\":[\"pageId\",\"content\",\"title\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Notion page ID of the created page\"},\"pageUrl\":{\"type\":\"string\",\"description\":\"URL to view the page in Notion\"}},\"required\":[\"pageId\",\"pageUrl\"]},\n },\n \"notionUpdatePage\": {\n stepType: \"notionUpdatePage\",\n description: \"Update the content of an existing Notion page.\",\n usageNotes: \"- Requires a Notion OAuth connection (connectionId).\\n- Content is provided as markdown and converted to Notion blocks.\\n- \\\"append\\\" mode adds content to the end of the page. \\\"overwrite\\\" mode deletes all existing blocks first.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Notion page ID to update\"},\"content\":{\"type\":\"string\",\"description\":\"New content in markdown format\"},\"mode\":{\"enum\":[\"append\",\"overwrite\"],\"type\":\"string\",\"description\":\"How to apply the content: 'append' adds to end, 'overwrite' replaces all existing content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Notion OAuth connection ID\"}},\"required\":[\"pageId\",\"content\",\"mode\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Notion page ID of the updated page\"},\"pageUrl\":{\"type\":\"string\",\"description\":\"URL to view the page in Notion\"}},\"required\":[\"pageId\",\"pageUrl\"]},\n },\n \"peopleSearch\": {\n stepType: \"peopleSearch\",\n description: \"Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\",\n usageNotes: \"- Can use a natural language \\\"smartQuery\\\" which is converted to Apollo search parameters by an AI model.\\n- Advanced params can override or supplement the smart query results.\\n- Optionally enriches returned people and/or their organizations for additional detail.\\n- Results are paginated. Use limit and page to control the result window.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"smartQuery\":{\"type\":\"string\",\"description\":\"Natural language search query (e.g. \\\"marketing directors at SaaS companies in NYC\\\")\"},\"enrichPeople\":{\"type\":\"boolean\",\"description\":\"Whether to enrich each result with full contact details\"},\"enrichOrganizations\":{\"type\":\"boolean\",\"description\":\"Whether to enrich each result with full company details\"},\"limit\":{\"type\":\"string\",\"description\":\"Maximum number of results to return\"},\"page\":{\"type\":\"string\",\"description\":\"Page number for pagination\"},\"params\":{\"type\":\"object\",\"properties\":{\"personTitles\":{\"type\":\"string\",\"description\":\"Job titles to search for (comma-separated)\"},\"includeSimilarTitles\":{\"type\":\"string\",\"description\":\"Whether to include similar/related job titles\"},\"qKeywords\":{\"type\":\"string\",\"description\":\"Keywords to search for in person profiles\"},\"personLocations\":{\"type\":\"string\",\"description\":\"Geographic locations of people (comma-separated)\"},\"personSeniorities\":{\"type\":\"string\",\"description\":\"Seniority levels to filter by (comma-separated)\"},\"organizationLocations\":{\"type\":\"string\",\"description\":\"Geographic locations of organizations (comma-separated)\"},\"qOrganizationDomainsList\":{\"type\":\"string\",\"description\":\"Organization domains to filter by (comma-separated)\"},\"contactEmailStatus\":{\"type\":\"string\",\"description\":\"Email verification status filter\"},\"organizationNumEmployeesRanges\":{\"type\":\"string\",\"description\":\"Employee count ranges as semicolon-separated pairs (e.g. \\\"1,10; 250,500\\\")\"},\"revenueRangeMin\":{\"type\":\"string\",\"description\":\"Minimum annual revenue filter\"},\"revenueRangeMax\":{\"type\":\"string\",\"description\":\"Maximum annual revenue filter\"},\"currentlyUsingAllOfTechnologyUids\":{\"type\":\"string\",\"description\":\"Technology UIDs the organization must use (all required)\"},\"currentlyUsingAnyOfTechnologyUids\":{\"type\":\"string\",\"description\":\"Technology UIDs the organization uses (any match)\"},\"currentlyNotUsingAnyOfTechnologyUids\":{\"type\":\"string\",\"description\":\"Technology UIDs the organization must not use\"}},\"required\":[\"personTitles\",\"includeSimilarTitles\",\"qKeywords\",\"personLocations\",\"personSeniorities\",\"organizationLocations\",\"qOrganizationDomainsList\",\"contactEmailStatus\",\"organizationNumEmployeesRanges\",\"revenueRangeMin\",\"revenueRangeMax\",\"currentlyUsingAllOfTechnologyUids\",\"currentlyUsingAnyOfTechnologyUids\",\"currentlyNotUsingAnyOfTechnologyUids\"],\"description\":\"Advanced search filter parameters\"}},\"required\":[\"smartQuery\",\"enrichPeople\",\"enrichOrganizations\",\"limit\",\"page\",\"params\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"description\":\"Apollo search results with matched people and optionally enriched data\"}},\"required\":[\"results\"]},\n },\n \"postToLinkedIn\": {\n stepType: \"postToLinkedIn\",\n description: \"Create a post on LinkedIn from the connected account.\",\n usageNotes: \"- Requires a LinkedIn OAuth connection (connectionId).\\n- Supports text posts, image posts, and video posts.\\n- Visibility controls who can see the post.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The text content of the LinkedIn post\"},\"visibility\":{\"enum\":[\"PUBLIC\",\"CONNECTIONS\"],\"type\":\"string\",\"description\":\"Who can see the post: \\\"PUBLIC\\\" or \\\"CONNECTIONS\\\"\"},\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of a video to attach to the post\"},\"descriptionText\":{\"type\":\"string\",\"description\":\"Description text for link/media attachments\"},\"titleText\":{\"type\":\"string\",\"description\":\"Title text for link/media attachments\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of an image to attach to the post\"},\"connectionId\":{\"type\":\"string\",\"description\":\"LinkedIn OAuth connection ID\"}},\"required\":[\"message\",\"visibility\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"postToSlackChannel\": {\n stepType: \"postToSlackChannel\",\n description: \"Send a message to a Slack channel via a connected bot.\",\n usageNotes: \"- The user is responsible for connecting their Slack workspace and selecting the channel\\n- Supports both simple text messages and slack blocks messages\\n- Text messages can use limited markdown (slack-only fomatting—e.g., headers are just rendered as bold)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"channelId\":{\"type\":\"string\",\"description\":\"Slack channel ID (leave empty to allow user to select a channel)\"},\"messageType\":{\"enum\":[\"string\",\"blocks\"],\"type\":\"string\",\"description\":\"Message format: \\\"string\\\" for plain text/markdown, \\\"blocks\\\" for Slack Block Kit JSON\"},\"message\":{\"type\":\"string\",\"description\":\"Message content (plain text/markdown for \\\"string\\\" type, or JSON for \\\"blocks\\\" type)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Slack OAuth connection ID (leave empty to allow user to select)\"}},\"required\":[\"channelId\",\"messageType\",\"message\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"postToX\": {\n stepType: \"postToX\",\n description: \"Create a post on X (Twitter) from the connected account.\",\n usageNotes: \"- Requires an X OAuth connection (connectionId).\\n- Posts are plain text. Maximum 280 characters.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The text content of the post (max 280 characters)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"X (Twitter) OAuth connection ID\"}},\"required\":[\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"postToZapier\": {\n stepType: \"postToZapier\",\n description: \"Send data to a Zapier Zap via webhook and return the response.\",\n usageNotes: \"- The webhook URL must be configured in the Zapier Zap settings\\n- Input keys and values are sent as the JSON body of the POST request\\n- The webhook response (JSON or plain text) is returned as the output\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"webhookUrl\":{\"type\":\"string\",\"description\":\"Zapier webhook URL to send data to\"},\"input\":{\"type\":\"object\",\"description\":\"Key-value pairs to send as the JSON POST body\"}},\"required\":[\"webhookUrl\",\"input\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Parsed webhook response from Zapier (JSON object, array, or string)\"}},\"required\":[\"data\"]},\n },\n \"queryDataSource\": {\n stepType: \"queryDataSource\",\n description: \"Search a vector data source (RAG) and return relevant document chunks.\",\n usageNotes: \"- Queries a vectorized data source and returns the most relevant chunks.\\n- Useful for retrieval-augmented generation (RAG) workflows.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the vector data source to query\"},\"query\":{\"type\":\"string\",\"description\":\"The search query to run against the data source\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of chunks to return (recommended 1-3)\"}},\"required\":[\"dataSourceId\",\"query\",\"maxResults\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"All matching chunks joined with newlines\"},\"chunks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Individual matching text chunks from the data source\"},\"query\":{\"type\":\"string\",\"description\":\"The resolved search query that was executed\"},\"citations\":{\"type\":\"array\",\"items\":{},\"description\":\"Source citations for the matched chunks\"},\"latencyMs\":{\"type\":\"number\",\"description\":\"Query execution time in milliseconds\"}},\"required\":[\"text\",\"chunks\",\"query\",\"citations\",\"latencyMs\"]},\n },\n \"queryExternalDatabase\": {\n stepType: \"queryExternalDatabase\",\n description: \"Execute a SQL query against an external database connected to the workspace.\",\n usageNotes: \"- Requires a database connection configured in the workspace.\\n- Supports PostgreSQL (including Supabase), MySQL, and MSSQL.\\n- Results can be returned as JSON or CSV.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Database connection ID configured in the workspace\"},\"query\":{\"type\":\"string\",\"description\":\"SQL query to execute (supports variable interpolation)\"},\"outputFormat\":{\"enum\":[\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format for the result variable\"}},\"required\":[\"query\",\"outputFormat\"],\"description\":\"Configuration for the external database query step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Query result rows (array of objects for JSON, CSV string for CSV format)\"}},\"required\":[\"data\"]},\n },\n \"redactPII\": {\n stepType: \"redactPII\",\n description: \"Replace personally identifiable information in text with placeholders using Microsoft Presidio.\",\n usageNotes: \"- PII is replaced with entity type placeholders (e.g. \\\"Call me at <PHONE_NUMBER>\\\").\\n- If entities is empty, returns empty text immediately without processing.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\",\"description\":\"Text to redact PII from\"},\"language\":{\"type\":\"string\",\"description\":\"Language code of the input text (e.g. \\\"en\\\")\"},\"entities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"PII entity types to redact (e.g. [\\\"PHONE_NUMBER\\\", \\\"EMAIL_ADDRESS\\\"]). Empty array means nothing is redacted.\"}},\"required\":[\"input\",\"language\",\"entities\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The input text with detected PII replaced by entity type placeholders (e.g. \\\"<PHONE_NUMBER>\\\")\"}},\"required\":[\"text\"]},\n },\n \"removeBackgroundFromImage\": {\n stepType: \"removeBackgroundFromImage\",\n description: \"Remove the background from an image using AI, producing a transparent PNG.\",\n usageNotes: \"- Uses the Bria background removal model via fal.ai.\\n- Output is re-hosted on the CDN as a PNG with transparency.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the source image to remove the background from\"}},\"required\":[\"imageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the image with background removed (transparent PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"replyToGmailEmail\": {\n stepType: \"replyToGmailEmail\",\n description: \"Reply to an existing email in Gmail. The reply is threaded under the original message.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose and readonly scopes.\\n- The reply is sent to the original sender and threaded under the original message.\\n- messageType controls the body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\".\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID to reply to\"},\"message\":{\"type\":\"string\",\"description\":\"Reply body content\"},\"messageType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\",\"message\",\"messageType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID of the sent reply\"}},\"required\":[\"messageId\"]},\n },\n \"resizeVideo\": {\n stepType: \"resizeVideo\",\n description: \"Resize a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to resize\"},\"mode\":{\"enum\":[\"fit\",\"exact\"],\"type\":\"string\",\"description\":\"Resize mode: 'fit' scales within max dimensions, 'exact' forces exact dimensions\"},\"maxWidth\":{\"type\":\"number\",\"description\":\"Maximum width in pixels (used with 'fit' mode)\"},\"maxHeight\":{\"type\":\"number\",\"description\":\"Maximum height in pixels (used with 'fit' mode)\"},\"width\":{\"type\":\"number\",\"description\":\"Exact width in pixels (used with 'exact' mode)\"},\"height\":{\"type\":\"number\",\"description\":\"Exact height in pixels (used with 'exact' mode)\"},\"strategy\":{\"enum\":[\"pad\",\"crop\"],\"type\":\"string\",\"description\":\"Strategy for handling aspect ratio mismatch in 'exact' mode\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"mode\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the resized video\"}},\"required\":[\"videoUrl\"]},\n },\n \"runFromConnectorRegistry\": {\n stepType: \"runFromConnectorRegistry\",\n description: \"Run a raw API connector to a third-party service\",\n usageNotes: \"- Use the /developer/v2/helpers/connectors endpoint to list available services and actions.\\n- Use /developer/v2/helpers/connectors/{serviceId}/{actionId} to get the full input configuration for an action.\\n- Use /developer/v2/helpers/connections to list your available OAuth connections.\\n- The actionId format is \\\"serviceId/actionId\\\" (e.g., \\\"slack/send-message\\\").\\n- Pass a __connectionId to authenticate the request with a specific OAuth connection, otherwise the default will be used (if configured).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"actionId\":{\"type\":\"string\",\"description\":\"The connector action identifier in the format serviceId/actionId\"},\"displayName\":{\"type\":\"string\",\"description\":\"Human-readable name of the connector action\"},\"icon\":{\"type\":\"string\",\"description\":\"Icon URL for the connector\"},\"configurationValues\":{\"type\":\"object\",\"description\":\"Key-value configuration parameters for the connector action\"},\"__connectionId\":{\"type\":\"string\",\"description\":\"OAuth connection ID used to authenticate the connector request\"}},\"required\":[\"actionId\",\"displayName\",\"icon\",\"configurationValues\"],\"description\":\"Configuration for the connector registry step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"description\":\"Key-value map of output variables set by the connector\"}},\"required\":[\"data\"]},\n },\n \"runPackagedWorkflow\": {\n stepType: \"runPackagedWorkflow\",\n description: \"Run a packaged workflow (\\\"custom block\\\")\",\n usageNotes: \"- From the user's perspective, packaged workflows are just ordinary blocks. Behind the scenes, they operate like packages/libraries in a programming language, letting the user execute custom functionality.\\n- Some of these packaged workflows are available as part of MindStudio's \\\"Standard Library\\\" and available to every user.\\n- Available packaged workflows are documented here as individual blocks, but the runPackagedWorkflow block is how they need to be wrapped in order to be executed correctly.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"appId\":{\"type\":\"string\",\"description\":\"The app ID of the packaged workflow source\"},\"workflowId\":{\"type\":\"string\",\"description\":\"The source workflow ID to execute\"},\"inputVariables\":{\"type\":\"object\",\"description\":\"Variables to pass as input to the packaged workflow\"},\"outputVariables\":{\"type\":\"object\",\"description\":\"Variables to capture from the packaged workflow output\"},\"name\":{\"type\":\"string\",\"description\":\"Display name of the packaged workflow\"}},\"required\":[\"appId\",\"workflowId\",\"inputVariables\",\"outputVariables\",\"name\"],\"description\":\"Configuration for the packaged workflow step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the packaged workflow\"}},\"required\":[\"data\"]},\n },\n \"scrapeFacebookPage\": {\n stepType: \"scrapeFacebookPage\",\n description: \"Scrape a Facebook page\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageUrl\":{\"type\":\"string\",\"description\":\"Full URL to the Facebook page to scrape\"}},\"required\":[\"pageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeFacebookPosts\": {\n stepType: \"scrapeFacebookPosts\",\n description: \"Get all the posts for a Facebook page\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageUrl\":{\"type\":\"string\",\"description\":\"Full URL to the Facebook page to scrape posts from\"}},\"required\":[\"pageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramComments\": {\n stepType: \"scrapeInstagramComments\",\n description: \"Get all the comments for an Instagram post\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"postUrl\":{\"type\":\"string\",\"description\":\"Full URL to the Instagram post to scrape comments from\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of comments to return\"}},\"required\":[\"postUrl\",\"resultsLimit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramMentions\": {\n stepType: \"scrapeInstagramMentions\",\n description: \"Scrape an Instagram profile's mentions\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape mentions for\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of mentions to return\"}},\"required\":[\"profileUrl\",\"resultsLimit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramPosts\": {\n stepType: \"scrapeInstagramPosts\",\n description: \"Get all the posts for an Instagram profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape posts from\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of posts to return\"},\"onlyPostsNewerThan\":{\"type\":\"string\",\"description\":\"Only return posts newer than this date (ISO 8601 format)\"}},\"required\":[\"profileUrl\",\"resultsLimit\",\"onlyPostsNewerThan\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramProfile\": {\n stepType: \"scrapeInstagramProfile\",\n description: \"Scrape an Instagram profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape\"}},\"required\":[\"profileUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramReels\": {\n stepType: \"scrapeInstagramReels\",\n description: \"Get all the reels for an Instagram profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape reels from\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of reels to return\"}},\"required\":[\"profileUrl\",\"resultsLimit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeLinkedInCompany\": {\n stepType: \"scrapeLinkedInCompany\",\n description: \"Scrape public company data from a LinkedIn company page.\",\n usageNotes: \"- Requires a LinkedIn company URL (e.g. https://www.linkedin.com/company/mindstudioai).\\n- Returns structured company data including description, employees, updates, and similar companies.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"LinkedIn company page URL (e.g. https://www.linkedin.com/company/mindstudioai)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"company\":{\"description\":\"Scraped LinkedIn company data\"}},\"required\":[\"company\"]},\n },\n \"scrapeLinkedInProfile\": {\n stepType: \"scrapeLinkedInProfile\",\n description: \"Scrape public profile data from a LinkedIn profile page.\",\n usageNotes: \"- Requires a LinkedIn profile URL (e.g. https://www.linkedin.com/in/username).\\n- Returns structured profile data including experience, education, articles, and activities.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL (e.g. https://www.linkedin.com/in/username)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"profile\":{\"description\":\"Scraped LinkedIn profile data\"}},\"required\":[\"profile\"]},\n },\n \"scrapeMetaThreadsProfile\": {\n stepType: \"scrapeMetaThreadsProfile\",\n description: \"Scrape a Meta Threads profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Meta Threads profile URL or username to scrape\"}},\"required\":[\"profileUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeUrl\": {\n stepType: \"scrapeUrl\",\n description: \"Extract text, HTML, or structured content from one or more web pages.\",\n usageNotes: \"- Accepts a single URL or multiple URLs (as a JSON array, comma-separated, or newline-separated).\\n- Output format controls the result shape: \\\"text\\\" returns markdown, \\\"html\\\" returns raw HTML, \\\"json\\\" returns structured scraper data.\\n- Can optionally capture a screenshot of each page.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"URL(s) to scrape. Accepts a single URL, JSON array, or comma/newline-separated list\"},\"service\":{\"enum\":[\"default\",\"firecrawl\"],\"type\":\"string\",\"description\":\"Scraping service to use\"},\"autoEnhance\":{\"type\":\"boolean\",\"description\":\"Whether to enable enhanced scraping for social media URLs (e.g. Twitter, LinkedIn)\"},\"pageOptions\":{\"type\":\"object\",\"properties\":{\"onlyMainContent\":{\"type\":\"boolean\",\"description\":\"Whether to extract only the main content of the page, excluding navigation, footers, etc.\"},\"screenshot\":{\"type\":\"boolean\",\"description\":\"Whether to capture a screenshot of the page\"},\"waitFor\":{\"type\":\"number\",\"description\":\"Milliseconds to wait before scraping (0 for immediate)\"},\"replaceAllPathsWithAbsolutePaths\":{\"type\":\"boolean\",\"description\":\"Whether to convert relative URLs to absolute URLs in the result\"},\"headers\":{\"type\":\"object\",\"description\":\"Custom HTTP request headers as key-value pairs\"},\"removeTags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"HTML tags to remove from the scraped result\"},\"mobile\":{\"type\":\"boolean\",\"description\":\"Whether to scrape using a mobile user-agent\"}},\"required\":[\"onlyMainContent\",\"screenshot\",\"waitFor\",\"replaceAllPathsWithAbsolutePaths\",\"headers\",\"removeTags\",\"mobile\"],\"description\":\"Page-level scraping options (content filtering, screenshots, headers, etc.)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"]},{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"]}}]},\"screenshot\":{\"type\":\"string\",\"description\":\"Screenshot URL, only present when screenshot was requested via pageOptions\"}},\"required\":[\"content\"]},\n },\n \"scrapeXPost\": {\n stepType: \"scrapeXPost\",\n description: \"Scrape data from a single X (Twitter) post by URL.\",\n usageNotes: \"- Returns structured post data (text, html, optional json/screenshot/metadata).\\n- Optionally saves the text content to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"Full URL to the X post (e.g. https://x.com/elonmusk/status/1655608985058267139)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"post\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"],\"description\":\"Scraped post data including text, HTML, and optional structured JSON\"}},\"required\":[\"post\"]},\n },\n \"scrapeXProfile\": {\n stepType: \"scrapeXProfile\",\n description: \"Scrape public profile data from an X (Twitter) account by URL.\",\n usageNotes: \"- Returns structured profile data.\\n- Optionally saves the result to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"Full URL or username for the X profile (e.g. https://x.com/elonmusk)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"profile\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"],\"description\":\"Scraped profile data including text, HTML, and optional structured JSON\"}},\"required\":[\"profile\"]},\n },\n \"searchGmailEmails\": {\n stepType: \"searchGmailEmails\",\n description: \"Search for emails in the connected Gmail account using a Gmail search query. To list recent inbox emails, pass an empty query string.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Uses Gmail search syntax (e.g. \\\"from:user@example.com\\\", \\\"subject:invoice\\\", \\\"is:unread\\\").\\n- To list recent inbox emails, use an empty query string or \\\"in:inbox\\\".\\n- Returns up to 100 emails (default 5). The variable receives text or JSON depending on exportType.\\n- The direct execution output always returns structured email objects.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Gmail search query (e.g. \\\"from:user@example.com\\\", \\\"subject:invoice\\\", \\\"is:unread\\\")\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"limit\":{\"type\":\"string\",\"description\":\"Maximum number of emails to return (1-10, default: 5)\"}},\"required\":[\"query\",\"exportType\",\"limit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"emails\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"from\":{\"type\":\"string\",\"description\":\"Sender email address\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email address\"},\"date\":{\"type\":\"string\",\"description\":\"Email date\"},\"plainBody\":{\"type\":\"string\",\"description\":\"Plain text body content\"},\"htmlBody\":{\"type\":\"string\",\"description\":\"HTML body content (if available)\"},\"labels\":{\"type\":\"string\",\"description\":\"Comma-separated label IDs applied to the email\"}},\"required\":[\"id\",\"subject\",\"from\",\"to\",\"date\",\"plainBody\",\"htmlBody\",\"labels\"]},\"description\":\"List of matching email messages\"}},\"required\":[\"emails\"]},\n },\n \"searchGoogle\": {\n stepType: \"searchGoogle\",\n description: \"Search the web using Google and return structured results.\",\n usageNotes: \"- Defaults to us/english, but can optionally specify country and/or language.\\n- Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\\n- Defaults to top 30 results, but can specify 1 to 100 results to return.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"The search query to send to Google\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Format for the variable value: \\\"text\\\" or \\\"json\\\"\"},\"countryCode\":{\"type\":\"string\",\"description\":\"Google gl country code (defaults to US)\"},\"languageCode\":{\"type\":\"string\",\"description\":\"Google hl language code (defaults to \\\"en\\\")\"},\"dateRange\":{\"enum\":[\"hour\",\"day\",\"week\",\"month\",\"year\",\"any\"],\"type\":\"string\",\"description\":\"Time range filter: \\\"hour\\\", \\\"day\\\", \\\"week\\\", \\\"month\\\", \\\"year\\\", or \\\"any\\\"\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-100, default: 30)\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title of the search result\"},\"description\":{\"type\":\"string\",\"description\":\"Snippet/description of the search result\"},\"url\":{\"type\":\"string\",\"description\":\"URL of the search result page\"}},\"required\":[\"title\",\"description\",\"url\"]},\"description\":\"List of search result entries\"}},\"required\":[\"results\"]},\n },\n \"searchGoogleCalendarEvents\": {\n stepType: \"searchGoogleCalendarEvents\",\n description: \"Search for events in a Google Calendar by keyword, date range, or both.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Supports keyword search via \\\"query\\\" and date filtering via \\\"timeMin\\\"/\\\"timeMax\\\" (ISO 8601 format).\\n- Unlike \\\"List Events\\\" which only shows future events, this allows searching past events too.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Text search term\"},\"timeMin\":{\"type\":\"string\",\"description\":\"Start of time range (ISO 8601)\"},\"timeMax\":{\"type\":\"string\",\"description\":\"End of time range (ISO 8601)\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\")\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of events to return (default: 10)\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"status\":{\"type\":\"string\",\"description\":\"Event status (e.g. \\\"confirmed\\\", \\\"tentative\\\", \\\"cancelled\\\")\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"},\"created\":{\"type\":\"string\",\"description\":\"Timestamp when the event was created\"},\"updated\":{\"type\":\"string\",\"description\":\"Timestamp when the event was last updated\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"organizer\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"start\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"end\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"attendees\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"responseStatus\":{\"type\":\"string\"}}}},{\"type\":\"null\"}]}}},\"description\":\"List of matching calendar events\"}},\"required\":[\"events\"]},\n },\n \"searchGoogleDrive\": {\n stepType: \"searchGoogleDrive\",\n description: \"Search for files in Google Drive by keyword.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- Searches file content and names using Google Drive's fullText search.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search keyword\"},\"limit\":{\"type\":\"number\",\"description\":\"Max files to return (default: 20)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"mimeType\":{\"type\":\"string\"},\"size\":{\"type\":\"string\"},\"webViewLink\":{\"type\":\"string\"},\"createdTime\":{\"type\":\"string\"},\"modifiedTime\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"mimeType\",\"size\",\"webViewLink\",\"createdTime\",\"modifiedTime\"]},\"description\":\"List of matching files\"}},\"required\":[\"files\"]},\n },\n \"searchGoogleImages\": {\n stepType: \"searchGoogleImages\",\n description: \"Search Google Images and return image results with URLs and metadata.\",\n usageNotes: \"- Defaults to us/english, but can optionally specify country and/or language.\\n- Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\\n- Defaults to top 30 results, but can specify 1 to 100 results to return.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"The image search query\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Format for the variable value: \\\"text\\\" or \\\"json\\\"\"},\"countryCode\":{\"type\":\"string\",\"description\":\"Google gl country code (defaults to US)\"},\"languageCode\":{\"type\":\"string\",\"description\":\"Google hl language code (defaults to \\\"en\\\")\"},\"dateRange\":{\"enum\":[\"hour\",\"day\",\"week\",\"month\",\"year\",\"any\"],\"type\":\"string\",\"description\":\"Time range filter: \\\"hour\\\", \\\"day\\\", \\\"week\\\", \\\"month\\\", \\\"year\\\", or \\\"any\\\"\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-100, default: 30)\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"images\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title/alt text of the image\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"Direct URL of the full-size image\"},\"imageWidth\":{\"type\":\"number\",\"description\":\"Width of the full-size image in pixels\"},\"imageHeight\":{\"type\":\"number\",\"description\":\"Height of the full-size image in pixels\"},\"thumbnailUrl\":{\"type\":\"string\",\"description\":\"URL of the thumbnail image\"},\"thumbnailWidth\":{\"type\":\"number\",\"description\":\"Width of the thumbnail in pixels\"},\"thumbnailHeight\":{\"type\":\"number\",\"description\":\"Height of the thumbnail in pixels\"},\"source\":{\"type\":\"string\",\"description\":\"Source website name\"},\"domain\":{\"type\":\"string\",\"description\":\"Domain of the source website\"},\"link\":{\"type\":\"string\",\"description\":\"URL of the page containing the image\"},\"googleUrl\":{\"type\":\"string\",\"description\":\"Google Images URL for this result\"},\"position\":{\"type\":\"number\",\"description\":\"Position/rank of this result in the search results\"}},\"required\":[\"title\",\"imageUrl\",\"imageWidth\",\"imageHeight\",\"thumbnailUrl\",\"thumbnailWidth\",\"thumbnailHeight\",\"source\",\"domain\",\"link\",\"googleUrl\",\"position\"]},\"description\":\"List of image search results with URLs and metadata\"}},\"required\":[\"images\"]},\n },\n \"searchGoogleNews\": {\n stepType: \"searchGoogleNews\",\n description: \"Search Google News for recent news articles matching a query.\",\n usageNotes: \"- Defaults to top 30 results, but can specify 1 to 100 results to return.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The news search query\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Format for the variable value: \\\"text\\\" or \\\"json\\\"\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-100, default: 30)\"}},\"required\":[\"text\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"articles\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Headline of the news article\"},\"link\":{\"type\":\"string\",\"description\":\"URL to the full article\"},\"date\":{\"type\":\"string\",\"description\":\"Publication date of the article\"},\"source\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name of the news source\"}},\"required\":[\"name\"],\"description\":\"Source publication\"},\"snippet\":{\"type\":\"string\",\"description\":\"Brief excerpt or summary of the article\"}},\"required\":[\"title\",\"link\",\"date\",\"source\"]},\"description\":\"List of matching news articles\"}},\"required\":[\"articles\"]},\n },\n \"searchGoogleTrends\": {\n stepType: \"searchGoogleTrends\",\n description: \"Fetch Google Trends data for a search term.\",\n usageNotes: \"- date accepts shorthand (\\\"now 1-H\\\", \\\"today 1-m\\\", \\\"today 5-y\\\", etc.) or custom \\\"yyyy-mm-dd yyyy-mm-dd\\\" ranges.\\n- data_type controls the shape of returned data: TIMESERIES, GEO_MAP, GEO_MAP_0, RELATED_TOPICS, or RELATED_QUERIES.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The search term to look up on Google Trends\"},\"hl\":{\"type\":\"string\",\"description\":\"Language code (e.g. \\\"en\\\")\"},\"geo\":{\"type\":\"string\",\"description\":\"Geographic region: empty string for worldwide, or a two-letter country code\"},\"data_type\":{\"enum\":[\"TIMESERIES\",\"GEO_MAP\",\"GEO_MAP_0\",\"RELATED_TOPICS\",\"RELATED_QUERIES\"],\"type\":\"string\",\"description\":\"Type of trend data to return\"},\"cat\":{\"type\":\"string\",\"description\":\"Category filter (\\\"0\\\" for all categories)\"},\"date\":{\"type\":\"string\",\"description\":\"Date range for trend data. Available options: - \\\"now 1-H\\\" - Past hour - \\\"now 4-H\\\" - Past 4 hours - \\\"now 1-d\\\" - Past day - \\\"now 7-d\\\" - Past 7 days - \\\"today 1-m\\\" - Past 30 days - \\\"today 3-m\\\" - Past 90 days - \\\"today 12-m\\\" - Past 12 months - \\\"today 5-y\\\" - Past 5 years - \\\"all - 2004\\\" - present - You can also pass custom values: \\\"yyyy-mm-dd yyyy-mm-dd\\\"\"},\"ts\":{\"type\":\"string\",\"description\":\"Timezone offset in minutes (-1439 to 1439, default: 420 for PDT)\"}},\"required\":[\"text\",\"hl\",\"geo\",\"data_type\",\"cat\",\"date\",\"ts\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"trends\":{\"type\":\"object\",\"description\":\"Google Trends data for the searched term\"}},\"required\":[\"trends\"]},\n },\n \"searchPerplexity\": {\n stepType: \"searchPerplexity\",\n description: \"Search the web using the Perplexity API and return structured results.\",\n usageNotes: \"- Defaults to US results. Use countryCode (ISO code) to filter by country.\\n- Returns 10 results by default, configurable from 1 to 20.\\n- The variable receives text or JSON depending on exportType. The direct execution output always returns structured results.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query to send to Perplexity\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Output format for the variable: plain text or structured JSON\"},\"countryCode\":{\"type\":\"string\",\"description\":\"ISO country code to filter results by region (e.g. \\\"us\\\", \\\"gb\\\")\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-20, default: 10)\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title of the search result\"},\"description\":{\"type\":\"string\",\"description\":\"Snippet or description of the search result\"},\"url\":{\"type\":\"string\",\"description\":\"URL of the search result page\"}},\"required\":[\"title\",\"description\",\"url\"]},\"description\":\"List of structured search results\"}},\"required\":[\"results\"]},\n },\n \"searchXPosts\": {\n stepType: \"searchXPosts\",\n description: \"Search recent X (Twitter) posts matching a query.\",\n usageNotes: \"- Searches only the past 7 days of posts.\\n- Query supports X API v2 search operators (up to 512 characters).\\n\\nAvailable search operators in query:\\n\\n| Operator | Description |\\n| -----------------| -------------------------------------------------|\\n| from: | Posts from a specific user (e.g., from:elonmusk) |\\n| to: | Posts sent to a specific user (e.g., to:NASA) |\\n| @ | Mentions a user (e.g., @openai) |\\n| # | Hashtag search (e.g., #AI) |\\n| is:retweet | Filters retweets |\\n| is:reply | Filters replies |\\n| has:media | Posts containing media (images, videos, or GIFs) |\\n| has:links | Posts containing URLs |\\n| lang: | Filters by language (e.g., lang:en) |\\n| - | Excludes specific terms (e.g., -spam) |\\n| () | Groups terms or operators (e.g., (AI OR ML)) |\\n| AND, OR, NOT | Boolean logic for combining or excluding terms |\\n\\nConjunction-Required Operators (must be combined with a standalone operator):\\n\\n| Operator | Description |\\n| ------------ | -----------------------------------------------|\\n| has:media | Posts containing media (images, videos, or GIFs) |\\n| has:links | Posts containing URLs |\\n| is:retweet | Filters retweets |\\n| is:reply | Filters replies |\\n\\nFor example, has:media alone is invalid, but #AI has:media is valid.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query (max 512 chars, supports X API v2 search operators)\"},\"scope\":{\"enum\":[\"recent\",\"all\"],\"type\":\"string\",\"description\":\"Search scope: \\\"recent\\\" for past 7 days or \\\"all\\\" for full archive\"},\"options\":{\"type\":\"object\",\"properties\":{\"startTime\":{\"type\":\"string\",\"description\":\"ISO 8601 date; only return posts after this time\"},\"endTime\":{\"type\":\"string\",\"description\":\"ISO 8601 date; only return posts before this time\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Number of results to return (default: 50, max: 100)\"}},\"description\":\"Additional search options\"}},\"required\":[\"query\",\"scope\",\"options\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"posts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique post identifier\"},\"authorId\":{\"type\":\"string\",\"description\":\"Author's X user ID\"},\"dateCreated\":{\"type\":\"string\",\"description\":\"ISO 8601 timestamp when the post was created\"},\"text\":{\"type\":\"string\",\"description\":\"Text content of the post\"},\"stats\":{\"type\":\"object\",\"properties\":{\"retweets\":{\"type\":\"number\",\"description\":\"Number of retweets/reposts\"},\"replies\":{\"type\":\"number\",\"description\":\"Number of replies\"},\"likes\":{\"type\":\"number\",\"description\":\"Number of likes\"}},\"required\":[\"retweets\",\"replies\",\"likes\"],\"description\":\"Engagement statistics for the post\"}},\"required\":[\"id\",\"authorId\",\"dateCreated\",\"text\",\"stats\"]},\"description\":\"List of matching X posts\"}},\"required\":[\"posts\"]},\n },\n \"searchYoutube\": {\n stepType: \"searchYoutube\",\n description: \"Search for YouTube videos by keyword.\",\n usageNotes: \"- Supports pagination (up to 5 pages) and country/language filters.\\n- Use the filter/filterType fields for YouTube search parameter (sp) filters.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query for YouTube videos\"},\"limitPages\":{\"type\":\"string\",\"description\":\"Maximum number of pages to fetch (1-5)\"},\"filter\":{\"type\":\"string\",\"description\":\"YouTube search parameter (sp) filter value\"},\"filterType\":{\"type\":\"string\",\"description\":\"Filter type identifier\"},\"countryCode\":{\"type\":\"string\",\"description\":\"Google gl country code for regional results (default: \\\"US\\\")\"},\"languageCode\":{\"type\":\"string\",\"description\":\"Google hl language code for result language (default: \\\"en\\\")\"}},\"required\":[\"query\",\"limitPages\",\"filter\",\"filterType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"type\":\"object\",\"description\":\"YouTube search results including video_results, channel_results, etc.\"}},\"required\":[\"results\"]},\n },\n \"searchYoutubeTrends\": {\n stepType: \"searchYoutubeTrends\",\n description: \"Retrieve trending videos on YouTube by category and region.\",\n usageNotes: \"- Categories: \\\"now\\\" (trending now), \\\"music\\\", \\\"gaming\\\", \\\"films\\\".\\n- Supports country and language filtering.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"bp\":{\"enum\":[\"now\",\"music\",\"gaming\",\"films\"],\"type\":\"string\",\"description\":\"Trending category: \\\"now\\\" (trending now), \\\"music\\\", \\\"gaming\\\", or \\\"films\\\"\"},\"hl\":{\"type\":\"string\",\"description\":\"Language code (e.g. \\\"en\\\")\"},\"gl\":{\"type\":\"string\",\"description\":\"Country code (e.g. \\\"US\\\")\"}},\"required\":[\"bp\",\"hl\",\"gl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"trends\":{\"type\":\"object\",\"description\":\"Trending video data for the selected category and region\"}},\"required\":[\"trends\"]},\n },\n \"sendEmail\": {\n stepType: \"sendEmail\",\n description: \"Send an email to one or more configured recipient addresses.\",\n usageNotes: \"- Recipient email addresses are resolved from OAuth connections configured by the app creator. The user running the workflow does not specify the recipient directly.\\n- If the body is a URL to a hosted HTML file on the CDN, the HTML is fetched and used as the email body.\\n- When generateHtml is enabled, the body text is converted to a styled HTML email using an AI model.\\n- connectionId can be a comma-separated list to send to multiple recipients.\\n- The special connectionId \\\"trigger_email\\\" uses the email address that triggered the workflow.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"body\":{\"type\":\"string\",\"description\":\"Email body content (plain text, markdown, HTML, or a CDN URL to an HTML file)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"OAuth connection ID(s) for the recipient(s), comma-separated for multiple\"},\"generateHtml\":{\"type\":\"boolean\",\"description\":\"When true, auto-convert the body text into a styled HTML email using AI\"},\"generateHtmlInstructions\":{\"type\":\"string\",\"description\":\"Natural language instructions for the HTML generation style\"},\"generateHtmlModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model settings override for HTML generation\"},\"attachments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"URLs of files to attach to the email\"}},\"required\":[\"subject\",\"body\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"recipients\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Email addresses the message was sent to\"}},\"required\":[\"recipients\"]},\n },\n \"sendGmailDraft\": {\n stepType: \"sendGmailDraft\",\n description: \"Send an existing draft from the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose scope.\\n- The draft is sent and removed from the Drafts folder.\\n- Use the draft ID returned by the Create Gmail Draft or List Gmail Drafts steps.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID to send\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"draftId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"sendGmailMessage\": {\n stepType: \"sendGmailMessage\",\n description: \"Send an email from the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose scope.\\n- messageType controls the body format: \\\"plain\\\" for plain text, \\\"html\\\" for raw HTML, \\\"markdown\\\" for auto-converted markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"to\":{\"type\":\"string\",\"description\":\"Recipient email address(es), comma-separated for multiple\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"message\":{\"type\":\"string\",\"description\":\"Email body content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"messageType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"}},\"required\":[\"to\",\"subject\",\"message\",\"messageType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID of the sent email\"}},\"required\":[\"messageId\"]},\n },\n \"sendSMS\": {\n stepType: \"sendSMS\",\n description: \"Send an SMS or MMS message to a phone number configured via OAuth connection.\",\n usageNotes: \"- User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\\n- If mediaUrls are provided, the message is sent as MMS instead of SMS\\n- MMS supports up to 10 media URLs (images, video, audio, PDF) with a 5MB limit per file\\n- MMS is only supported on US and Canadian carriers; international numbers will receive SMS only (media silently dropped)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"body\":{\"type\":\"string\",\"description\":\"SMS message body text\"},\"connectionId\":{\"type\":\"string\",\"description\":\"OAuth connection ID for the recipient phone number\"},\"mediaUrls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional array of media URLs to send as MMS (up to 10, 5MB each)\"}},\"required\":[\"body\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"setGmailReadStatus\": {\n stepType: \"setGmailReadStatus\",\n description: \"Mark one or more Gmail emails as read or unread.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail modify scope.\\n- Accepts one or more message IDs as a comma-separated string or array.\\n- Set markAsRead to true to mark as read, false to mark as unread.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageIds\":{\"type\":\"string\",\"description\":\"Gmail message ID(s), comma-separated\"},\"markAsRead\":{\"type\":\"boolean\",\"description\":\"true = mark as read, false = mark as unread\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageIds\",\"markAsRead\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"setRunTitle\": {\n stepType: \"setRunTitle\",\n description: \"Set the title of the agent run for the user's history\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"The title to assign to the agent run (supports variable interpolation)\"}},\"required\":[\"title\"],\"description\":\"Configuration for the set run title step\"},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"setVariable\": {\n stepType: \"setVariable\",\n description: \"Explicitly set a variable to a given value.\",\n usageNotes: \"- Useful for bootstrapping global variables or setting constants.\\n- The variable name and value both support variable interpolation.\\n- The type field is a UI hint only (controls input widget in the editor).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"value\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"value\"],\"description\":\"Configuration for the set variable step\"},\n outputSchema: {\"type\":\"object\"},\n },\n \"telegramEditMessage\": {\n stepType: \"telegramEditMessage\",\n description: \"Edit a previously sent Telegram message. Use with the message ID returned by Send Telegram Message.\",\n usageNotes: \"- Only text messages sent by the bot can be edited.\\n- The messageId is returned by the Send Telegram Message step.\\n- Common pattern: send a \\\"Processing...\\\" message, do work, then edit it with the result.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID containing the message\"},\"messageId\":{\"type\":\"string\",\"description\":\"ID of the message to edit\"},\"text\":{\"type\":\"string\",\"description\":\"New message text (MarkdownV2 formatting supported)\"}},\"required\":[\"botToken\",\"chatId\",\"messageId\",\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramReplyToMessage\": {\n stepType: \"telegramReplyToMessage\",\n description: \"Send a reply to a specific Telegram message. The reply will be visually threaded in the chat.\",\n usageNotes: \"- Use the rawMessage.message_id from the incoming trigger variables to reply to the user's message.\\n- Especially useful in group chats where replies provide context.\\n- Returns the sent message ID, which can be used with Edit Telegram Message.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the reply to\"},\"replyToMessageId\":{\"type\":\"string\",\"description\":\"ID of the message to reply to\"},\"text\":{\"type\":\"string\",\"description\":\"Reply text (MarkdownV2 formatting supported)\"}},\"required\":[\"botToken\",\"chatId\",\"replyToMessageId\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"number\",\"description\":\"ID of the sent reply message\"}},\"required\":[\"messageId\"]},\n },\n \"telegramSendAudio\": {\n stepType: \"telegramSendAudio\",\n description: \"Send an audio file to a Telegram chat as music or a voice note via a bot.\",\n usageNotes: \"- \\\"audio\\\" mode sends as a standard audio file. \\\"voice\\\" mode sends as a voice message (re-uploads the file for large file support).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the audio to\"},\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the audio file to send\"},\"mode\":{\"enum\":[\"audio\",\"voice\"],\"type\":\"string\",\"description\":\"Send as a standard audio track (\\\"audio\\\") or as a voice note (\\\"voice\\\")\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the audio\"}},\"required\":[\"botToken\",\"chatId\",\"audioUrl\",\"mode\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSendFile\": {\n stepType: \"telegramSendFile\",\n description: \"Send a document/file to a Telegram chat via a bot.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the file to\"},\"fileUrl\":{\"type\":\"string\",\"description\":\"URL of the document/file to send\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the file\"}},\"required\":[\"botToken\",\"chatId\",\"fileUrl\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSendImage\": {\n stepType: \"telegramSendImage\",\n description: \"Send an image to a Telegram chat via a bot.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the image to\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to send\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the image\"}},\"required\":[\"botToken\",\"chatId\",\"imageUrl\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSendMessage\": {\n stepType: \"telegramSendMessage\",\n description: \"Send a text message to a Telegram chat via a bot.\",\n usageNotes: \"- Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\\n- botToken format is \\\"botId:token\\\" — both parts are required.\\n- Returns the sent message ID, which can be used with Edit Telegram Message to update the message later.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the message to\"},\"text\":{\"type\":\"string\",\"description\":\"Message text to send (MarkdownV2 formatting supported)\"}},\"required\":[\"botToken\",\"chatId\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"number\",\"description\":\"ID of the sent Telegram message\"}},\"required\":[\"messageId\"]},\n },\n \"telegramSendVideo\": {\n stepType: \"telegramSendVideo\",\n description: \"Send a video to a Telegram chat via a bot.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the video to\"},\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video to send\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the video\"}},\"required\":[\"botToken\",\"chatId\",\"videoUrl\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSetTyping\": {\n stepType: \"telegramSetTyping\",\n description: \"Show the \\\"typing...\\\" indicator in a Telegram chat via a bot.\",\n usageNotes: \"- The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to show the typing indicator in\"}},\"required\":[\"botToken\",\"chatId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"textToSpeech\": {\n stepType: \"textToSpeech\",\n description: \"Generate an audio file from provided text using a speech model.\",\n usageNotes: \"- The text field contains the exact words to be spoken (not instructions).\\n- In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The text to convert to speech\"},\"skipAssetCreation\":{\"type\":\"boolean\"},\"speechModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Speech synthesis model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default speech model if not specified\"}},\"required\":[\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the generated audio file\"}},\"required\":[\"audioUrl\"]},\n },\n \"transcribeAudio\": {\n stepType: \"transcribeAudio\",\n description: \"Convert an audio file to text using a transcription model.\",\n usageNotes: \"- The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the audio file to transcribe\"},\"prompt\":{\"type\":\"string\",\"description\":\"Optional context to improve transcription accuracy (e.g. language, speaker names, domain terms)\"},\"transcriptionModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Audio transcription model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default transcription model if not specified\"}},\"required\":[\"audioUrl\",\"prompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The transcribed text from the audio file\"}},\"required\":[\"text\"]},\n },\n \"trimMedia\": {\n stepType: \"trimMedia\",\n description: \"Trim an audio or video clip\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"inputUrl\":{\"type\":\"string\",\"description\":\"URL of the source audio or video file to trim\"},\"start\":{\"type\":[\"number\",\"string\"]},\"duration\":{\"type\":[\"string\",\"number\"]},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"inputUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"mediaUrl\":{\"type\":\"string\",\"description\":\"URL of the trimmed media file\"}},\"required\":[\"mediaUrl\"]},\n },\n \"updateGmailLabels\": {\n stepType: \"updateGmailLabels\",\n description: \"Add or remove labels on Gmail messages, identified by message IDs or a search query.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail modify scope.\\n- Provide either a query (Gmail search syntax) or explicit messageIds to target messages.\\n- Label IDs can be label names or Gmail label IDs — names are resolved automatically.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Gmail search query to find messages (alternative to messageIds)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"messageIds\":{\"type\":\"string\",\"description\":\"Comma-separated message IDs to target (alternative to query)\"},\"addLabelIds\":{\"type\":\"string\",\"description\":\"Comma-separated label names or IDs to add\"},\"removeLabelIds\":{\"type\":\"string\",\"description\":\"Comma-separated label names or IDs to remove\"}},\"required\":[\"query\",\"messageIds\",\"addLabelIds\",\"removeLabelIds\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"updatedMessageIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Gmail message IDs that were updated\"}},\"required\":[\"updatedMessageIds\"]},\n },\n \"updateGoogleCalendarEvent\": {\n stepType: \"updateGoogleCalendarEvent\",\n description: \"Update an existing event on a Google Calendar. Only specified fields are changed.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Fetches the existing event first, then applies only the provided updates. Omitted fields are left unchanged.\\n- Attendees are specified as one email address per line, and replace the entire attendee list.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID to update\"},\"summary\":{\"type\":\"string\",\"description\":\"Updated event title\"},\"description\":{\"type\":\"string\",\"description\":\"Updated event description\"},\"location\":{\"type\":\"string\",\"description\":\"Updated event location\"},\"startDateTime\":{\"type\":\"string\",\"description\":\"Updated start time in ISO 8601 format\"},\"endDateTime\":{\"type\":\"string\",\"description\":\"Updated end time in ISO 8601 format\"},\"attendees\":{\"type\":\"string\",\"description\":\"Updated attendee email addresses (one per line, replaces all existing attendees)\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"eventId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the updated event in Google Calendar\"}},\"required\":[\"eventId\",\"htmlLink\"]},\n },\n \"updateGoogleDoc\": {\n stepType: \"updateGoogleDoc\",\n description: \"Update the contents of an existing Google Document.\",\n usageNotes: \"- operationType controls how content is applied: \\\"addToTop\\\" prepends, \\\"addToBottom\\\" appends, \\\"overwrite\\\" replaces all content.\\n- textType determines how the text field is interpreted: \\\"plain\\\" for plain text, \\\"html\\\" for HTML markup, \\\"markdown\\\" for Markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Document ID to update\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"text\":{\"type\":\"string\",\"description\":\"New content to write to the document\"},\"textType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Format of the text field: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"},\"operationType\":{\"enum\":[\"addToTop\",\"addToBottom\",\"overwrite\"],\"type\":\"string\",\"description\":\"How to apply the content: \\\"addToTop\\\", \\\"addToBottom\\\", or \\\"overwrite\\\"\"}},\"required\":[\"documentId\",\"text\",\"textType\",\"operationType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"documentUrl\":{\"type\":\"string\",\"description\":\"URL of the updated Google Document\"}},\"required\":[\"documentUrl\"]},\n },\n \"updateGoogleSheet\": {\n stepType: \"updateGoogleSheet\",\n description: \"Update a Google Spreadsheet with new data.\",\n usageNotes: \"- operationType controls how data is written: \\\"addToBottom\\\" appends rows, \\\"overwrite\\\" replaces all data, \\\"range\\\" writes to a specific cell range.\\n- Data should be provided as CSV in the text field.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"CSV data to write to the spreadsheet\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"spreadsheetId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID to update\"},\"range\":{\"type\":\"string\",\"description\":\"Target cell range in A1 notation (used with \\\"range\\\" operationType)\"},\"operationType\":{\"enum\":[\"addToBottom\",\"overwrite\",\"range\"],\"type\":\"string\",\"description\":\"How to apply the data: \\\"addToBottom\\\", \\\"overwrite\\\", or \\\"range\\\"\"}},\"required\":[\"text\",\"spreadsheetId\",\"range\",\"operationType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"spreadsheetUrl\":{\"type\":\"string\",\"description\":\"URL of the updated Google Spreadsheet\"}},\"required\":[\"spreadsheetUrl\"]},\n },\n \"uploadDataSourceDocument\": {\n stepType: \"uploadDataSourceDocument\",\n description: \"Upload a file into an existing data source from a URL or raw text content.\",\n usageNotes: \"- If \\\"file\\\" is a single URL, the file is downloaded from that URL and uploaded.\\n- If \\\"file\\\" is any other string, a .txt document is created from that content and uploaded.\\n- The block waits (polls) for processing to complete before transitioning, up to 5 minutes.\\n- Once processing finishes, vectors are loaded into Milvus so the data source is immediately queryable.\\n- Supported file types (when using a URL) are the same as the data source upload UI (PDF, DOCX, TXT, etc.).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the target data source (supports variable interpolation)\"},\"file\":{\"type\":\"string\",\"description\":\"A URL to download, or raw text content to create a .txt document from (supports variable interpolation)\"},\"fileName\":{\"type\":\"string\",\"description\":\"Display name for the document (supports variable interpolation)\"}},\"required\":[\"dataSourceId\",\"file\",\"fileName\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"upscaleImage\": {\n stepType: \"upscaleImage\",\n description: \"Increase the resolution of an image using AI upscaling.\",\n usageNotes: \"- Output is re-hosted on the CDN as a PNG.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to upscale\"},\"targetResolution\":{\"enum\":[\"2k\",\"4k\",\"8k\"],\"type\":\"string\",\"description\":\"Target output resolution\"},\"engine\":{\"enum\":[\"standard\",\"pro\"],\"type\":\"string\",\"description\":\"Upscaling engine quality tier\"}},\"required\":[\"imageUrl\",\"targetResolution\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the upscaled image (PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"upscaleVideo\": {\n stepType: \"upscaleVideo\",\n description: \"Upscale a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to upscale\"},\"targetResolution\":{\"enum\":[\"720p\",\"1080p\",\"2K\",\"4K\"],\"type\":\"string\",\"description\":\"Target output resolution for the upscaled video\"},\"engine\":{\"enum\":[\"standard\",\"pro\",\"ultimate\",\"flashvsr\",\"seedance\",\"seedvr2\",\"runwayml/upscale-v1\"],\"type\":\"string\",\"description\":\"Upscaling engine to use. Higher tiers produce better quality at higher cost.\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"targetResolution\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the upscaled video\"}},\"required\":[\"videoUrl\"]},\n },\n \"userMessage\": {\n stepType: \"userMessage\",\n description: \"Send a message to an AI model and return the response, or echo a system message.\",\n usageNotes: \"- Source \\\"user\\\" sends the message to an LLM and returns the model's response.\\n- Source \\\"system\\\" echoes the message content directly (no AI call).\\n- Mode \\\"background\\\" saves the result to a variable. Mode \\\"foreground\\\" streams it to the user (not available in direct execution).\\n- Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The message to send (prompt for AI, or text for system echo)\"},\"source\":{\"enum\":[\"user\",\"system\"],\"type\":\"string\",\"description\":\"Message source: \\\"user\\\" sends to AI model, \\\"system\\\" echoes message content directly. Defaults to \\\"user\\\"\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model configuration override. Optional; uses the workflow's default model if not specified\"},\"structuredOutputType\":{\"enum\":[\"text\",\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format constraint for structured responses\"},\"structuredOutputExample\":{\"type\":\"string\",\"description\":\"Sample showing the desired output shape (for JSON/CSV formats). A TypeScript interface is also useful here for more complex types.\"},\"chatHistoryMode\":{\"enum\":[\"include\",\"exclude\"],\"type\":\"string\",\"description\":\"Whether to include or exclude prior chat history in the AI context\"}},\"required\":[\"message\"],\"description\":\"Configuration for the user message step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"The AI model's response or echoed system message content\"}},\"required\":[\"content\"]},\n },\n \"videoFaceSwap\": {\n stepType: \"videoFaceSwap\",\n description: \"Swap faces in a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video containing faces to swap\"},\"faceImageUrl\":{\"type\":\"string\",\"description\":\"URL of the image containing the replacement face\"},\"targetIndex\":{\"type\":\"number\",\"description\":\"Zero-based index of the face to replace in the video\"},\"engine\":{\"type\":\"string\",\"description\":\"Face swap engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"faceImageUrl\",\"targetIndex\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the face-swapped video\"}},\"required\":[\"videoUrl\"]},\n },\n \"videoRemoveBackground\": {\n stepType: \"videoRemoveBackground\",\n description: \"Remove or replace background from a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"newBackground\":{\"enum\":[\"transparent\",\"image\"],\"type\":\"string\",\"description\":\"Whether to make the background transparent or replace it with an image\"},\"newBackgroundImageUrl\":{\"type\":\"string\",\"description\":\"URL of a replacement background image. Required when newBackground is 'image'.\"},\"engine\":{\"type\":\"string\",\"description\":\"Background removal engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"newBackground\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with background removed or replaced\"}},\"required\":[\"videoUrl\"]},\n },\n \"videoRemoveWatermark\": {\n stepType: \"videoRemoveWatermark\",\n description: \"Remove a watermark from a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video containing a watermark\"},\"engine\":{\"type\":\"string\",\"description\":\"Watermark removal engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with watermark removed\"}},\"required\":[\"videoUrl\"]},\n },\n \"watermarkImage\": {\n stepType: \"watermarkImage\",\n description: \"Overlay a watermark image onto another image.\",\n usageNotes: \"- The watermark is placed at the specified corner with configurable padding and width.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the base image\"},\"watermarkImageUrl\":{\"type\":\"string\",\"description\":\"URL of the watermark image to overlay\"},\"corner\":{\"enum\":[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"],\"type\":\"string\",\"description\":\"Corner position for the watermark placement\"},\"paddingPx\":{\"type\":\"number\",\"description\":\"Padding from the corner in pixels\"},\"widthPx\":{\"type\":\"number\",\"description\":\"Width of the watermark overlay in pixels\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history\"}},\"required\":[\"imageUrl\",\"watermarkImageUrl\",\"corner\",\"paddingPx\",\"widthPx\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the watermarked image\"}},\"required\":[\"imageUrl\"]},\n },\n \"watermarkVideo\": {\n stepType: \"watermarkVideo\",\n description: \"Add an image watermark to a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the watermark image to overlay\"},\"corner\":{\"enum\":[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"],\"type\":\"string\",\"description\":\"Corner position for the watermark placement\"},\"paddingPx\":{\"type\":\"number\",\"description\":\"Padding from the corner in pixels\"},\"widthPx\":{\"type\":\"number\",\"description\":\"Width of the watermark overlay in pixels\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"imageUrl\",\"corner\",\"paddingPx\",\"widthPx\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the watermarked video\"}},\"required\":[\"videoUrl\"]},\n },\n};\n","import { MindStudioAgent as _MindStudioAgent } from './client.js';\nimport type { StepMethods } from './generated/steps.js';\nimport type { HelperMethods } from './generated/helpers.js';\nimport type { AgentOptions } from './types.js';\n\n/** MindStudioAgent with all generated step and helper methods. */\nexport type MindStudioAgent = _MindStudioAgent & StepMethods & HelperMethods;\n\n/** {@inheritDoc MindStudioAgent} */\nexport const MindStudioAgent = _MindStudioAgent as unknown as {\n new (options?: AgentOptions): MindStudioAgent;\n};\n\nexport { MindStudioError } from './errors.js';\nexport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n StepExecutionMeta,\n AgentInfo,\n ListAgentsResult,\n RunAgentOptions,\n RunAgentResult,\n} from './types.js';\n\n// Re-export all generated types\nexport * from './generated/types.js';\nexport type { StepMethods } from './generated/steps.js';\nexport type { HelperMethods, MindStudioModel, ModelType, StepCostEstimateEntry } from './generated/helpers.js';\nexport {\n monacoSnippets,\n blockTypeAliases,\n type MonacoSnippet,\n type MonacoSnippetField,\n type MonacoSnippetFieldType,\n} from './generated/snippets.js';\nexport {\n stepMetadata,\n type StepMetadata,\n} from './generated/metadata.js';\n"],"mappings":"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","names":["sleep","MindStudioAgent"]}
1
+ {"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/rate-limit.ts","../src/config.ts","../src/generated/steps.ts","../src/generated/helpers.ts","../src/client.ts","../src/generated/snippets.ts","../src/generated/metadata.ts","../src/index.ts"],"sourcesContent":["/**\n * Error thrown when a MindStudio API request fails.\n *\n * Contains the HTTP status code, an error code from the API,\n * and any additional details returned in the response body.\n */\nexport class MindStudioError extends Error {\n override readonly name = 'MindStudioError';\n\n constructor(\n message: string,\n /** Machine-readable error code from the API (e.g. \"invalid_step_config\"). */\n public readonly code: string,\n /** HTTP status code of the failed request. */\n public readonly status: number,\n /** Raw error body from the API, if available. */\n public readonly details?: unknown,\n ) {\n super(message);\n }\n}\n","import { MindStudioError } from './errors.js';\nimport type { RateLimiter } from './rate-limit.js';\n\nexport interface HttpClientConfig {\n baseUrl: string;\n token: string;\n rateLimiter: RateLimiter;\n maxRetries: number;\n}\n\nexport async function request<T>(\n config: HttpClientConfig,\n method: 'GET' | 'POST',\n path: string,\n body?: unknown,\n): Promise<{ data: T; headers: Headers }> {\n const url = `${config.baseUrl}/developer/v2${path}`;\n\n await config.rateLimiter.acquire();\n\n try {\n return await requestWithRetry<T>(config, method, url, body, 0);\n } finally {\n config.rateLimiter.release();\n }\n}\n\nasync function requestWithRetry<T>(\n config: HttpClientConfig,\n method: string,\n url: string,\n body: unknown,\n attempt: number,\n): Promise<{ data: T; headers: Headers }> {\n const res = await fetch(url, {\n method,\n headers: {\n Authorization: `Bearer ${config.token}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@mindstudio-ai/agent',\n },\n body: body != null ? JSON.stringify(body) : undefined,\n });\n\n // Update rate limiter with latest server-reported limits\n config.rateLimiter.updateFromHeaders(res.headers);\n\n if (res.status === 429 && attempt < config.maxRetries) {\n const retryAfter = res.headers.get('retry-after');\n const waitMs = retryAfter ? parseFloat(retryAfter) * 1000 : 1000;\n await sleep(waitMs);\n return requestWithRetry<T>(config, method, url, body, attempt + 1);\n }\n\n if (!res.ok) {\n const errorBody = await res.json().catch(() => ({}));\n throw new MindStudioError(\n (errorBody as Record<string, string>).message ||\n `${res.status} ${res.statusText}`,\n (errorBody as Record<string, string>).code || 'api_error',\n res.status,\n errorBody,\n );\n }\n\n const data = (await res.json()) as T;\n return { data, headers: res.headers };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { MindStudioError } from './errors.js';\n\nexport type AuthType = 'internal' | 'apiKey';\n\nconst DEFAULTS: Record<AuthType, { concurrency: number; callCap: number }> = {\n internal: { concurrency: 10, callCap: 500 },\n apiKey: { concurrency: 20, callCap: Infinity },\n};\n\nexport class RateLimiter {\n private inflight = 0;\n private concurrencyLimit: number;\n private callCount = 0;\n private callCap: number;\n private queue: Array<() => void> = [];\n\n constructor(readonly authType: AuthType) {\n this.concurrencyLimit = DEFAULTS[authType].concurrency;\n this.callCap = DEFAULTS[authType].callCap;\n }\n\n /** Acquire a slot. Resolves when a concurrent slot is available. */\n async acquire(): Promise<void> {\n if (this.callCount >= this.callCap) {\n throw new MindStudioError(\n `Call cap reached (${this.callCap} calls). ` +\n 'Internal tokens are limited to 500 calls per execution.',\n 'call_cap_exceeded',\n 429,\n );\n }\n\n if (this.inflight < this.concurrencyLimit) {\n this.inflight++;\n this.callCount++;\n return;\n }\n\n return new Promise<void>((resolve) => {\n this.queue.push(() => {\n this.inflight++;\n this.callCount++;\n resolve();\n });\n });\n }\n\n /** Release a slot and let the next queued request proceed. */\n release(): void {\n this.inflight--;\n const next = this.queue.shift();\n if (next) next();\n }\n\n /** Update limits from response headers. */\n updateFromHeaders(headers: Headers): void {\n const concurrency = headers.get('x-ratelimit-concurrency-limit');\n if (concurrency) {\n this.concurrencyLimit = parseInt(concurrency, 10);\n }\n const limit = headers.get('x-ratelimit-limit');\n if (limit && this.authType === 'internal') {\n this.callCap = parseInt(limit, 10);\n }\n }\n\n /** Read current rate limit state from response headers. */\n static parseHeaders(headers: Headers): {\n remaining: number | undefined;\n concurrencyRemaining: number | undefined;\n } {\n const remaining = headers.get('x-ratelimit-remaining');\n const concurrencyRemaining = headers.get(\n 'x-ratelimit-concurrency-remaining',\n );\n return {\n remaining: remaining != null ? parseInt(remaining, 10) : undefined,\n concurrencyRemaining:\n concurrencyRemaining != null\n ? parseInt(concurrencyRemaining, 10)\n : undefined,\n };\n }\n}\n","import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport { homedir } from 'node:os';\n\nexport interface MindStudioConfig {\n apiKey?: string;\n baseUrl?: string;\n /** @internal Last update check metadata. */\n _updateCheck?: {\n latestVersion: string;\n checkedAt: number;\n };\n}\n\nfunction configPaths() {\n const dir = join(homedir(), '.mindstudio');\n return { dir, file: join(dir, 'config.json') };\n}\n\nexport function getConfigPath(): string {\n return configPaths().file;\n}\n\nexport function loadConfig(): MindStudioConfig {\n try {\n const raw = readFileSync(configPaths().file, 'utf-8');\n return JSON.parse(raw) as MindStudioConfig;\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(config: MindStudioConfig): void {\n const { dir, file } = configPaths();\n mkdirSync(dir, { recursive: true });\n writeFileSync(file, JSON.stringify(config, null, 2) + '\\n', 'utf-8');\n}\n\nexport function clearConfig(): void {\n saveConfig({});\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-07T00:39:20.847Z\n\n\nimport type {\n ActiveCampaignAddNoteStepInput,\n ActiveCampaignCreateContactStepInput,\n AddSubtitlesToVideoStepInput,\n AirtableCreateUpdateRecordStepInput,\n AirtableDeleteRecordStepInput,\n AirtableGetRecordStepInput,\n AirtableGetTableRecordsStepInput,\n AnalyzeImageStepInput,\n AnalyzeVideoStepInput,\n CaptureThumbnailStepInput,\n CodaCreateUpdatePageStepInput,\n CodaCreateUpdateRowStepInput,\n CodaFindRowStepInput,\n CodaGetPageStepInput,\n CodaGetTableRowsStepInput,\n ConvertPdfToImagesStepInput,\n CreateDataSourceStepInput,\n CreateGmailDraftStepInput,\n CreateGoogleCalendarEventStepInput,\n CreateGoogleDocStepInput,\n CreateGoogleSheetStepInput,\n DeleteDataSourceStepInput,\n DeleteDataSourceDocumentStepInput,\n DeleteGmailEmailStepInput,\n DeleteGoogleCalendarEventStepInput,\n DeleteGoogleSheetRowsStepInput,\n DetectChangesStepInput,\n DetectPIIStepInput,\n DiscordEditMessageStepInput,\n DiscordSendFollowUpStepInput,\n DiscordSendMessageStepInput,\n DownloadVideoStepInput,\n EnhanceImageGenerationPromptStepInput,\n EnhanceVideoGenerationPromptStepInput,\n EnrichPersonStepInput,\n ExtractAudioFromVideoStepInput,\n ExtractTextStepInput,\n FetchDataSourceDocumentStepInput,\n FetchGoogleDocStepInput,\n FetchGoogleSheetStepInput,\n FetchSlackChannelHistoryStepInput,\n FetchYoutubeCaptionsStepInput,\n FetchYoutubeChannelStepInput,\n FetchYoutubeCommentsStepInput,\n FetchYoutubeVideoStepInput,\n GenerateChartStepInput,\n GenerateImageStepInput,\n GenerateLipsyncStepInput,\n GenerateMusicStepInput,\n GeneratePdfStepInput,\n GenerateStaticVideoFromImageStepInput,\n GenerateVideoStepInput,\n GetGmailAttachmentsStepInput,\n GetGmailDraftStepInput,\n GetGmailEmailStepInput,\n GetGmailUnreadCountStepInput,\n GetGoogleCalendarEventStepInput,\n GetGoogleDriveFileStepInput,\n GetGoogleSheetInfoStepInput,\n GetMediaMetadataStepInput,\n HttpRequestStepInput,\n HubspotCreateCompanyStepInput,\n HubspotCreateContactStepInput,\n HubspotGetCompanyStepInput,\n HubspotGetContactStepInput,\n HunterApiCompanyEnrichmentStepInput,\n HunterApiDomainSearchStepInput,\n HunterApiEmailFinderStepInput,\n HunterApiEmailVerificationStepInput,\n HunterApiPersonEnrichmentStepInput,\n ImageFaceSwapStepInput,\n ImageRemoveWatermarkStepInput,\n InsertVideoClipsStepInput,\n ListDataSourcesStepInput,\n ListGmailDraftsStepInput,\n ListGmailLabelsStepInput,\n ListGoogleCalendarEventsStepInput,\n ListGoogleDriveFilesStepInput,\n ListRecentGmailEmailsStepInput,\n LogicStepInput,\n MakeDotComRunScenarioStepInput,\n MergeAudioStepInput,\n MergeVideosStepInput,\n MixAudioIntoVideoStepInput,\n MuteVideoStepInput,\n N8nRunNodeStepInput,\n NotionCreatePageStepInput,\n NotionUpdatePageStepInput,\n PeopleSearchStepInput,\n PostToLinkedInStepInput,\n PostToSlackChannelStepInput,\n PostToXStepInput,\n PostToZapierStepInput,\n QueryDataSourceStepInput,\n QueryExternalDatabaseStepInput,\n RedactPIIStepInput,\n RemoveBackgroundFromImageStepInput,\n ReplyToGmailEmailStepInput,\n ResizeVideoStepInput,\n RunFromConnectorRegistryStepInput,\n RunPackagedWorkflowStepInput,\n ScrapeFacebookPageStepInput,\n ScrapeFacebookPostsStepInput,\n ScrapeInstagramCommentsStepInput,\n ScrapeInstagramMentionsStepInput,\n ScrapeInstagramPostsStepInput,\n ScrapeInstagramProfileStepInput,\n ScrapeInstagramReelsStepInput,\n ScrapeLinkedInCompanyStepInput,\n ScrapeLinkedInProfileStepInput,\n ScrapeMetaThreadsProfileStepInput,\n ScrapeUrlStepInput,\n ScrapeXPostStepInput,\n ScrapeXProfileStepInput,\n SearchGmailEmailsStepInput,\n SearchGoogleStepInput,\n SearchGoogleCalendarEventsStepInput,\n SearchGoogleDriveStepInput,\n SearchGoogleImagesStepInput,\n SearchGoogleNewsStepInput,\n SearchGoogleTrendsStepInput,\n SearchPerplexityStepInput,\n SearchXPostsStepInput,\n SearchYoutubeStepInput,\n SearchYoutubeTrendsStepInput,\n SendEmailStepInput,\n SendGmailDraftStepInput,\n SendGmailMessageStepInput,\n SendSMSStepInput,\n SetGmailReadStatusStepInput,\n SetRunTitleStepInput,\n SetVariableStepInput,\n TelegramEditMessageStepInput,\n TelegramReplyToMessageStepInput,\n TelegramSendAudioStepInput,\n TelegramSendFileStepInput,\n TelegramSendImageStepInput,\n TelegramSendMessageStepInput,\n TelegramSendVideoStepInput,\n TelegramSetTypingStepInput,\n TextToSpeechStepInput,\n TranscribeAudioStepInput,\n TrimMediaStepInput,\n UpdateGmailLabelsStepInput,\n UpdateGoogleCalendarEventStepInput,\n UpdateGoogleDocStepInput,\n UpdateGoogleSheetStepInput,\n UploadDataSourceDocumentStepInput,\n UpscaleImageStepInput,\n UpscaleVideoStepInput,\n UserMessageStepInput,\n VideoFaceSwapStepInput,\n VideoRemoveBackgroundStepInput,\n VideoRemoveWatermarkStepInput,\n WatermarkImageStepInput,\n WatermarkVideoStepInput,\n ActiveCampaignAddNoteStepOutput,\n ActiveCampaignCreateContactStepOutput,\n AddSubtitlesToVideoStepOutput,\n AirtableCreateUpdateRecordStepOutput,\n AirtableDeleteRecordStepOutput,\n AirtableGetRecordStepOutput,\n AirtableGetTableRecordsStepOutput,\n AnalyzeImageStepOutput,\n AnalyzeVideoStepOutput,\n CaptureThumbnailStepOutput,\n CodaCreateUpdatePageStepOutput,\n CodaCreateUpdateRowStepOutput,\n CodaFindRowStepOutput,\n CodaGetPageStepOutput,\n CodaGetTableRowsStepOutput,\n ConvertPdfToImagesStepOutput,\n CreateDataSourceStepOutput,\n CreateGmailDraftStepOutput,\n CreateGoogleCalendarEventStepOutput,\n CreateGoogleDocStepOutput,\n CreateGoogleSheetStepOutput,\n DeleteDataSourceStepOutput,\n DeleteDataSourceDocumentStepOutput,\n DeleteGmailEmailStepOutput,\n DeleteGoogleCalendarEventStepOutput,\n DeleteGoogleSheetRowsStepOutput,\n DetectChangesStepOutput,\n DetectPIIStepOutput,\n DiscordEditMessageStepOutput,\n DiscordSendFollowUpStepOutput,\n DiscordSendMessageStepOutput,\n DownloadVideoStepOutput,\n EnhanceImageGenerationPromptStepOutput,\n EnhanceVideoGenerationPromptStepOutput,\n EnrichPersonStepOutput,\n ExtractAudioFromVideoStepOutput,\n ExtractTextStepOutput,\n FetchDataSourceDocumentStepOutput,\n FetchGoogleDocStepOutput,\n FetchGoogleSheetStepOutput,\n FetchSlackChannelHistoryStepOutput,\n FetchYoutubeCaptionsStepOutput,\n FetchYoutubeChannelStepOutput,\n FetchYoutubeCommentsStepOutput,\n FetchYoutubeVideoStepOutput,\n GenerateChartStepOutput,\n GenerateImageStepOutput,\n GenerateLipsyncStepOutput,\n GenerateMusicStepOutput,\n GeneratePdfStepOutput,\n GenerateStaticVideoFromImageStepOutput,\n GenerateVideoStepOutput,\n GetGmailAttachmentsStepOutput,\n GetGmailDraftStepOutput,\n GetGmailEmailStepOutput,\n GetGmailUnreadCountStepOutput,\n GetGoogleCalendarEventStepOutput,\n GetGoogleDriveFileStepOutput,\n GetGoogleSheetInfoStepOutput,\n GetMediaMetadataStepOutput,\n HttpRequestStepOutput,\n HubspotCreateCompanyStepOutput,\n HubspotCreateContactStepOutput,\n HubspotGetCompanyStepOutput,\n HubspotGetContactStepOutput,\n HunterApiCompanyEnrichmentStepOutput,\n HunterApiDomainSearchStepOutput,\n HunterApiEmailFinderStepOutput,\n HunterApiEmailVerificationStepOutput,\n HunterApiPersonEnrichmentStepOutput,\n ImageFaceSwapStepOutput,\n ImageRemoveWatermarkStepOutput,\n InsertVideoClipsStepOutput,\n ListDataSourcesStepOutput,\n ListGmailDraftsStepOutput,\n ListGmailLabelsStepOutput,\n ListGoogleCalendarEventsStepOutput,\n ListGoogleDriveFilesStepOutput,\n ListRecentGmailEmailsStepOutput,\n LogicStepOutput,\n MakeDotComRunScenarioStepOutput,\n MergeAudioStepOutput,\n MergeVideosStepOutput,\n MixAudioIntoVideoStepOutput,\n MuteVideoStepOutput,\n N8nRunNodeStepOutput,\n NotionCreatePageStepOutput,\n NotionUpdatePageStepOutput,\n PeopleSearchStepOutput,\n PostToLinkedInStepOutput,\n PostToSlackChannelStepOutput,\n PostToXStepOutput,\n PostToZapierStepOutput,\n QueryDataSourceStepOutput,\n QueryExternalDatabaseStepOutput,\n RedactPIIStepOutput,\n RemoveBackgroundFromImageStepOutput,\n ReplyToGmailEmailStepOutput,\n ResizeVideoStepOutput,\n RunFromConnectorRegistryStepOutput,\n RunPackagedWorkflowStepOutput,\n ScrapeFacebookPageStepOutput,\n ScrapeFacebookPostsStepOutput,\n ScrapeInstagramCommentsStepOutput,\n ScrapeInstagramMentionsStepOutput,\n ScrapeInstagramPostsStepOutput,\n ScrapeInstagramProfileStepOutput,\n ScrapeInstagramReelsStepOutput,\n ScrapeLinkedInCompanyStepOutput,\n ScrapeLinkedInProfileStepOutput,\n ScrapeMetaThreadsProfileStepOutput,\n ScrapeUrlStepOutput,\n ScrapeXPostStepOutput,\n ScrapeXProfileStepOutput,\n SearchGmailEmailsStepOutput,\n SearchGoogleStepOutput,\n SearchGoogleCalendarEventsStepOutput,\n SearchGoogleDriveStepOutput,\n SearchGoogleImagesStepOutput,\n SearchGoogleNewsStepOutput,\n SearchGoogleTrendsStepOutput,\n SearchPerplexityStepOutput,\n SearchXPostsStepOutput,\n SearchYoutubeStepOutput,\n SearchYoutubeTrendsStepOutput,\n SendEmailStepOutput,\n SendGmailDraftStepOutput,\n SendGmailMessageStepOutput,\n SendSMSStepOutput,\n SetGmailReadStatusStepOutput,\n SetRunTitleStepOutput,\n SetVariableStepOutput,\n TelegramEditMessageStepOutput,\n TelegramReplyToMessageStepOutput,\n TelegramSendAudioStepOutput,\n TelegramSendFileStepOutput,\n TelegramSendImageStepOutput,\n TelegramSendMessageStepOutput,\n TelegramSendVideoStepOutput,\n TelegramSetTypingStepOutput,\n TextToSpeechStepOutput,\n TranscribeAudioStepOutput,\n TrimMediaStepOutput,\n UpdateGmailLabelsStepOutput,\n UpdateGoogleCalendarEventStepOutput,\n UpdateGoogleDocStepOutput,\n UpdateGoogleSheetStepOutput,\n UploadDataSourceDocumentStepOutput,\n UpscaleImageStepOutput,\n UpscaleVideoStepOutput,\n UserMessageStepOutput,\n VideoFaceSwapStepOutput,\n VideoRemoveBackgroundStepOutput,\n VideoRemoveWatermarkStepOutput,\n WatermarkImageStepOutput,\n WatermarkVideoStepOutput,\n} from \"./types.js\";\n\nimport type { StepExecutionOptions, StepExecutionResult } from \"../types.js\";\n\nexport interface StepMethods {\n /**\n * Add a note to an existing contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - The contact must already exist — use the contact ID from a previous create or search step.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignAddNote({\n * contactId: ``,\n * note: ``,\n * });\n * ```\n */\n activeCampaignAddNote(step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignAddNoteStepOutput>>;\n\n /**\n * Create or sync a contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - If a contact with the email already exists, it may be updated depending on ActiveCampaign settings.\n * - Custom fields are passed as a key-value map where keys are field IDs.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignCreateContact({\n * email: ``,\n * firstName: ``,\n * lastName: ``,\n * phone: ``,\n * accountId: ``,\n * customFields: {},\n * });\n * ```\n */\n activeCampaignCreateContact(step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignCreateContactStepOutput>>;\n\n /**\n * Automatically add subtitles to a video\n *\n * @remarks\n * - Can control style of text and animation\n *\n * @example\n * ```typescript\n * const result = await agent.addSubtitlesToVideo({\n * videoUrl: ``,\n * language: ``,\n * fontName: ``,\n * fontSize: 0,\n * fontWeight: \"normal\",\n * fontColor: \"white\",\n * highlightColor: \"white\",\n * strokeWidth: 0,\n * strokeColor: \"black\",\n * backgroundColor: \"black\",\n * backgroundOpacity: 0,\n * position: \"top\",\n * yOffset: 0,\n * wordsPerSubtitle: 0,\n * enableAnimation: false,\n * });\n * ```\n */\n addSubtitlesToVideo(step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AddSubtitlesToVideoStepOutput>>;\n\n /**\n * Create a new record or update an existing record in an Airtable table.\n *\n * @remarks\n * - If recordId is provided, updates that record. Otherwise, creates a new one.\n * - When updating with updateMode \"onlySpecified\", unspecified fields are left as-is. With \"all\", unspecified fields are cleared.\n * - Array fields (e.g. multipleAttachments) accept arrays of values.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableCreateUpdateRecord({\n * baseId: ``,\n * tableId: ``,\n * fields: ``,\n * recordData: {},\n * });\n * ```\n */\n airtableCreateUpdateRecord(step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableCreateUpdateRecordStepOutput>>;\n\n /**\n * Delete a record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Silently succeeds if the record does not exist.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableDeleteRecord({\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableDeleteRecord(step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableDeleteRecordStepOutput>>;\n\n /**\n * Fetch a single record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - If the record is not found, returns a string message instead of a record object.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetRecord({\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableGetRecord(step: AirtableGetRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetRecordStepOutput>>;\n\n /**\n * Fetch multiple records from an Airtable table with optional pagination.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Default limit is 100 records. Maximum is 1000.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed records.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetTableRecords({\n * baseId: ``,\n * tableId: ``,\n * });\n * ```\n */\n airtableGetTableRecords(step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetTableRecordsStepOutput>>;\n\n /**\n * Analyze an image using a vision model based on a text prompt.\n *\n * @remarks\n * - Uses the configured vision model to generate a text analysis of the image.\n * - The prompt should describe what to look for or extract from the image.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeImage({\n * prompt: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n analyzeImage(step: AnalyzeImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeImageStepOutput>>;\n\n /**\n * Analyze a video using a video analysis model based on a text prompt.\n *\n * @remarks\n * - Uses the configured video analysis model to generate a text analysis of the video.\n * - The prompt should describe what to look for or extract from the video.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeVideo({\n * prompt: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n analyzeVideo(step: AnalyzeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeVideoStepOutput>>;\n\n /**\n * Capture a thumbnail from a video at a specified timestamp\n *\n * @example\n * ```typescript\n * const result = await agent.captureThumbnail({\n * videoUrl: ``,\n * at: ``,\n * });\n * ```\n */\n captureThumbnail(step: CaptureThumbnailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CaptureThumbnailStepOutput>>;\n\n /**\n * Create a new page or update an existing page in a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If pageData.pageId is provided, updates that page. Otherwise, creates a new one.\n * - Page content is provided as markdown and converted to Coda's canvas format.\n * - When updating, insertionMode controls how content is applied (default: 'append').\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdatePage({\n * pageData: {},\n * });\n * ```\n */\n codaCreateUpdatePage(step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdatePageStepOutput>>;\n\n /**\n * Create a new row or update an existing row in a Coda table.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If rowId is provided, updates that row. Otherwise, creates a new one.\n * - Row data keys are column IDs. Empty values are excluded.\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdateRow({\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaCreateUpdateRow(step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdateRowStepOutput>>;\n\n /**\n * Search for a row in a Coda table by matching column values.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Returns the first row matching all specified column values, or null if no match.\n * - Search criteria in rowData are ANDed together.\n *\n * @example\n * ```typescript\n * const result = await agent.codaFindRow({\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaFindRow(step: CodaFindRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaFindRowStepOutput>>;\n\n /**\n * Export and read the contents of a page from a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Page export is asynchronous on Coda's side — there may be a brief delay while it processes.\n * - If a page was just created in a prior step, there is an automatic 20-second retry if the first export attempt fails.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetPage({\n * docId: ``,\n * pageId: ``,\n * });\n * ```\n */\n codaGetPage(step: CodaGetPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetPageStepOutput>>;\n\n /**\n * Fetch rows from a Coda table with optional pagination.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Default limit is 10000 rows. Rows are fetched in pages of 500.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed rows.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetTableRows({\n * docId: ``,\n * tableId: ``,\n * });\n * ```\n */\n codaGetTableRows(step: CodaGetTableRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetTableRowsStepOutput>>;\n\n /**\n * Convert each page of a PDF document into a PNG image.\n *\n * @remarks\n * - Each page is converted to a separate PNG and re-hosted on the CDN.\n * - Returns an array of image URLs, one per page.\n *\n * @example\n * ```typescript\n * const result = await agent.convertPdfToImages({\n * pdfUrl: ``,\n * });\n * ```\n */\n convertPdfToImages(step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ConvertPdfToImagesStepOutput>>;\n\n /**\n * Create a new empty vector data source for the current app.\n *\n * @remarks\n * - Creates a new data source (vector database) associated with the current app version.\n * - The data source is created empty — use the \"Upload Data Source Document\" block to add documents.\n * - Returns the new data source ID which can be used in subsequent blocks.\n *\n * @example\n * ```typescript\n * const result = await agent.createDataSource({\n * name: ``,\n * });\n * ```\n */\n createDataSource(step: CreateDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateDataSourceStepOutput>>;\n\n /**\n * Create a draft email in the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose scope.\n * - The draft appears in the user's Gmail Drafts folder but is not sent.\n * - messageType controls the body format: \"plain\" for plain text, \"html\" for raw HTML, \"markdown\" for auto-converted markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.createGmailDraft({\n * to: ``,\n * subject: ``,\n * message: ``,\n * messageType: \"plain\",\n * });\n * ```\n */\n createGmailDraft(step: CreateGmailDraftStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGmailDraftStepOutput>>;\n\n /**\n * Create a new event on a Google Calendar.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Date/time values must be ISO 8601 format (e.g. \"2025-07-02T10:00:00-07:00\").\n * - Attendees are specified as one email address per line in a single string.\n * - Set addMeetLink to true to automatically attach a Google Meet video call.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleCalendarEvent({\n * summary: ``,\n * startDateTime: ``,\n * endDateTime: ``,\n * });\n * ```\n */\n createGoogleCalendarEvent(step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleCalendarEventStepOutput>>;\n\n /**\n * Create a new Google Document and optionally populate it with content.\n *\n * @remarks\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleDoc({\n * title: ``,\n * text: ``,\n * textType: \"plain\",\n * });\n * ```\n */\n createGoogleDoc(step: CreateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleDocStepOutput>>;\n\n /**\n * Create a new Google Spreadsheet and populate it with CSV data.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleSheet({\n * title: ``,\n * text: ``,\n * });\n * ```\n */\n createGoogleSheet(step: CreateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleSheetStepOutput>>;\n\n /**\n * Delete a vector data source from the current app.\n *\n * @remarks\n * - Soft-deletes a data source (vector database) by marking it as deleted.\n * - The Milvus partition is cleaned up asynchronously by a background cron job.\n * - The data source must belong to the current app version.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSource({\n * dataSourceId: ``,\n * });\n * ```\n */\n deleteDataSource(step: DeleteDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceStepOutput>>;\n\n /**\n * Delete a single document from a data source.\n *\n * @remarks\n * - Soft-deletes a document by marking it as deleted.\n * - Requires both the data source ID and document ID.\n * - After deletion, reloads vectors into Milvus so the data source reflects the change immediately.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n deleteDataSourceDocument(step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceDocumentStepOutput>>;\n\n /**\n * Move an email to trash in the connected Gmail account (recoverable delete).\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail modify scope.\n * - Uses trash (recoverable) rather than permanent delete.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGmailEmail({\n * messageId: ``,\n * });\n * ```\n */\n deleteGmailEmail(step: DeleteGmailEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGmailEmailStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGoogleCalendarEvent({\n * eventId: ``,\n * });\n * ```\n */\n deleteGoogleCalendarEvent(step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleCalendarEventStepOutput>>;\n\n /**\n * Delete a range of rows from a Google Spreadsheet.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - startRow and endRow are 1-based row numbers (inclusive).\n * - If sheetName is omitted, operates on the first sheet.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGoogleSheetRows({\n * documentId: ``,\n * startRow: ``,\n * endRow: ``,\n * });\n * ```\n */\n deleteGoogleSheetRows(step: DeleteGoogleSheetRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleSheetRowsStepOutput>>;\n\n /**\n * Detect changes between runs by comparing current input against previously stored state. Routes execution based on whether a change occurred.\n *\n * @remarks\n * - Persists state across runs using a global variable keyed to the step ID.\n * - Two modes: \"comparison\" (default) uses strict string inequality; \"ai\" uses an LLM to determine if a meaningful change occurred.\n * - First run always treats the value as \"changed\" since there is no previous state.\n * - Each mode supports transitions to different steps/workflows for the \"changed\" and \"unchanged\" paths.\n * - AI mode bills normally for the LLM call.\n *\n * @example\n * ```typescript\n * const result = await agent.detectChanges({\n * mode: \"ai\",\n * input: ``,\n * });\n * ```\n */\n detectChanges(step: DetectChangesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectChangesStepOutput>>;\n\n /**\n * Scan text for personally identifiable information using Microsoft Presidio.\n *\n * @remarks\n * - In workflow mode, transitions to detectedStepId if PII is found, notDetectedStepId otherwise.\n * - In direct execution, returns the detection results without transitioning.\n * - If entities is empty, returns immediately with no detections.\n *\n * @example\n * ```typescript\n * const result = await agent.detectPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n detectPII(step: DetectPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectPIIStepOutput>>;\n\n /**\n * Edit a previously sent Discord channel message. Use with the message ID returned by Send Discord Message.\n *\n * @remarks\n * - Only messages sent by the bot can be edited.\n * - The messageId is returned by the Send Discord Message step.\n * - Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\n * - When editing with an attachment, the new attachment replaces any previous attachments on the message.\n * - URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.discordEditMessage({\n * botToken: ``,\n * channelId: ``,\n * messageId: ``,\n * text: ``,\n * });\n * ```\n */\n discordEditMessage(step: DiscordEditMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DiscordEditMessageStepOutput>>;\n\n /**\n * Send a follow-up message to a Discord slash command interaction.\n *\n * @remarks\n * - Requires the applicationId and interactionToken from the Discord trigger variables.\n * - Follow-up messages appear as new messages in the channel after the initial response.\n * - Returns the sent message ID.\n * - Interaction tokens expire after 15 minutes.\n * - Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\n * - URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.discordSendFollowUp({\n * applicationId: ``,\n * interactionToken: ``,\n * text: ``,\n * });\n * ```\n */\n discordSendFollowUp(step: DiscordSendFollowUpStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DiscordSendFollowUpStepOutput>>;\n\n /**\n * Send a message to Discord — either edit the loading message or send a new channel message.\n *\n * @remarks\n * - mode \"edit\" replaces the loading message (interaction response) with the final result. Uses applicationId and interactionToken from trigger variables. No bot permissions required.\n * - mode \"send\" sends a new message to a channel. Uses botToken and channelId from trigger variables. Returns a messageId that can be used with Edit Discord Message.\n * - Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\n * - URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\n * - Interaction tokens expire after 15 minutes.\n *\n * @example\n * ```typescript\n * const result = await agent.discordSendMessage({\n * mode: \"edit\",\n * text: ``,\n * });\n * ```\n */\n discordSendMessage(step: DiscordSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DiscordSendMessageStepOutput>>;\n\n /**\n * Download a video file\n *\n * @remarks\n * - Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\n * - Can save as mp4 or mp3\n *\n * @example\n * ```typescript\n * const result = await agent.downloadVideo({\n * videoUrl: ``,\n * format: \"mp4\",\n * });\n * ```\n */\n downloadVideo(step: DownloadVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DownloadVideoStepOutput>>;\n\n /**\n * Generate or enhance an image generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceImageGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceImageGenerationPrompt(step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceImageGenerationPromptStepOutput>>;\n\n /**\n * Generate or enhance a video generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceVideoGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceVideoGenerationPrompt(step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceVideoGenerationPromptStepOutput>>;\n\n /**\n * Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\n *\n * @remarks\n * - At least one search parameter must be provided.\n * - Returns enriched data from Apollo including contact details, employment info, and social profiles.\n *\n * @example\n * ```typescript\n * const result = await agent.enrichPerson({\n * params: {},\n * });\n * ```\n */\n enrichPerson(step: EnrichPersonStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnrichPersonStepOutput>>;\n\n /**\n * Extract audio MP3 from a video file\n *\n * @example\n * ```typescript\n * const result = await agent.extractAudioFromVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n extractAudioFromVideo(step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractAudioFromVideoStepOutput>>;\n\n /**\n * Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\n *\n * @remarks\n * - Best suited for PDFs and raw text/document files. For web pages, use the scrapeUrl step instead.\n * - Accepts a single URL, a comma-separated list of URLs, or a JSON array of URLs.\n * - Files are rehosted on the MindStudio CDN before extraction.\n * - Maximum file size is 50MB per URL.\n *\n * @example\n * ```typescript\n * const result = await agent.extractText({\n * url: ``,\n * });\n * ```\n */\n extractText(step: ExtractTextStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractTextStepOutput>>;\n\n /**\n * Fetch the full extracted text contents of a document in a data source.\n *\n * @remarks\n * - Loads a document by ID and returns its full extracted text content.\n * - The document must have been successfully processed (status \"done\").\n * - Also returns document metadata (name, summary, word count).\n *\n * @example\n * ```typescript\n * const result = await agent.fetchDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n fetchDataSourceDocument(step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchDataSourceDocumentStepOutput>>;\n\n /**\n * Fetch the contents of an existing Google Document.\n *\n * @remarks\n * - exportType controls the output format: \"html\" for HTML markup, \"markdown\" for Markdown, \"json\" for structured JSON, \"plain\" for plain text.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleDoc({\n * documentId: ``,\n * exportType: \"html\",\n * });\n * ```\n */\n fetchGoogleDoc(step: FetchGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleDocStepOutput>>;\n\n /**\n * Fetch contents of a Google Spreadsheet range.\n *\n * @remarks\n * - range uses A1 notation (e.g. \"Sheet1!A1:C10\"). Omit to fetch the entire first sheet.\n * - exportType controls the output format: \"csv\" for comma-separated values, \"json\" for structured JSON.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleSheet({\n * spreadsheetId: ``,\n * range: ``,\n * exportType: \"csv\",\n * });\n * ```\n */\n fetchGoogleSheet(step: FetchGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleSheetStepOutput>>;\n\n /**\n * Fetch recent message history from a Slack channel.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n *\n * @example\n * ```typescript\n * const result = await agent.fetchSlackChannelHistory({\n * channelId: ``,\n * });\n * ```\n */\n fetchSlackChannelHistory(step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchSlackChannelHistoryStepOutput>>;\n\n /**\n * Retrieve the captions/transcript for a YouTube video.\n *\n * @remarks\n * - Supports multiple languages via the language parameter.\n * - \"text\" export produces timestamped plain text; \"json\" export produces structured transcript data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeCaptions({\n * videoUrl: ``,\n * exportType: \"text\",\n * language: ``,\n * });\n * ```\n */\n fetchYoutubeCaptions(step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCaptionsStepOutput>>;\n\n /**\n * Retrieve metadata and recent videos for a YouTube channel.\n *\n * @remarks\n * - Accepts a YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID).\n * - Returns channel info and video listings as a JSON object.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeChannel({\n * channelUrl: ``,\n * });\n * ```\n */\n fetchYoutubeChannel(step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeChannelStepOutput>>;\n\n /**\n * Retrieve comments for a YouTube video.\n *\n * @remarks\n * - Paginates through comments (up to 5 pages).\n * - \"text\" export produces markdown-formatted text; \"json\" export produces structured comment data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeComments({\n * videoUrl: ``,\n * exportType: \"text\",\n * limitPages: ``,\n * });\n * ```\n */\n fetchYoutubeComments(step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCommentsStepOutput>>;\n\n /**\n * Retrieve metadata for a YouTube video (title, description, stats, channel info).\n *\n * @remarks\n * - Returns video metadata, channel info, and engagement stats.\n * - Video format data is excluded from the response.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n fetchYoutubeVideo(step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeVideoStepOutput>>;\n\n /**\n * Create a chart image using QuickChart (Chart.js) and return the URL.\n *\n * @remarks\n * - The data field must be a Chart.js-compatible JSON object serialized as a string.\n * - Supported chart types: bar, line, pie.\n *\n * @example\n * ```typescript\n * const result = await agent.generateChart({\n * chart: {},\n * });\n * ```\n */\n generateChart(step: GenerateChartStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateChartStepOutput>>;\n\n /**\n * Generate an image from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Images are automatically hosted on a CDN.\n * - In foreground mode, the image is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple images are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateImage({\n * prompt: ``,\n * });\n * ```\n */\n generateImage(step: GenerateImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateImageStepOutput>>;\n\n /**\n * Generate a lip sync video from provided audio and image.\n *\n * @remarks\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateLipsync({});\n * ```\n */\n generateLipsync(step: GenerateLipsyncStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateLipsyncStepOutput>>;\n\n /**\n * Generate an audio file from provided instructions (text) using a music model.\n *\n * @remarks\n * - The text field contains the instructions (prompt) for the music generation.\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateMusic({\n * text: ``,\n * });\n * ```\n */\n generateMusic(step: GenerateMusicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateMusicStepOutput>>;\n\n /**\n * Generate an HTML asset and export it as a webpage, PDF, or image\n *\n * @remarks\n * - Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \"generatePdf\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\n * - The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\n * - If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \"source\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\n * - Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\n * - Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\n *\n * @example\n * ```typescript\n * const result = await agent.generateAsset({\n * source: ``,\n * sourceType: \"html\",\n * outputFormat: \"pdf\",\n * pageSize: \"full\",\n * testData: {},\n * });\n * ```\n */\n generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /**\n * Convert a static image to an MP4\n *\n * @remarks\n * - Can use to create slides/intertitles/slates for video composition\n *\n * @example\n * ```typescript\n * const result = await agent.generateStaticVideoFromImage({\n * imageUrl: ``,\n * duration: ``,\n * });\n * ```\n */\n generateStaticVideoFromImage(step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateStaticVideoFromImageStepOutput>>;\n\n /**\n * Generate a video from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Videos are automatically hosted on a CDN.\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple videos are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateVideo({\n * prompt: ``,\n * });\n * ```\n */\n generateVideo(step: GenerateVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateVideoStepOutput>>;\n\n /**\n * Download attachments from a Gmail email and re-host them on CDN.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Attachments are uploaded to CDN and returned as URLs.\n * - Attachments larger than 25MB are skipped.\n * - Use the message ID from Search Gmail Emails, List Recent Gmail Emails, or Get Gmail Email steps.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailAttachments({\n * messageId: ``,\n * });\n * ```\n */\n getGmailAttachments(step: GetGmailAttachmentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailAttachmentsStepOutput>>;\n\n /**\n * Retrieve a specific draft from Gmail by draft ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns the draft content including subject, recipients, sender, and body.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailDraft({\n * draftId: ``,\n * });\n * ```\n */\n getGmailDraft(step: GetGmailDraftStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailDraftStepOutput>>;\n\n /**\n * Retrieve a specific email from Gmail by message ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns the email subject, sender, recipient, date, body (plain text preferred, falls back to HTML), and labels.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailEmail({\n * messageId: ``,\n * });\n * ```\n */\n getGmailEmail(step: GetGmailEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailEmailStepOutput>>;\n\n /**\n * Get the number of unread emails in the connected Gmail inbox.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns the unread message count for the inbox label.\n * - This is a lightweight call that does not fetch any email content.\n *\n * @example\n * ```typescript\n * const result = await agent.getGmailUnreadCount({});\n * ```\n */\n getGmailUnreadCount(step: GetGmailUnreadCountStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGmailUnreadCountStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleCalendarEvent({\n * eventId: ``,\n * exportType: \"json\",\n * });\n * ```\n */\n getGoogleCalendarEvent(step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleCalendarEventStepOutput>>;\n\n /**\n * Download a file from Google Drive and rehost it on the CDN. Returns a public CDN URL.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - Google-native files (Docs, Sheets, Slides) cannot be downloaded — use dedicated steps instead.\n * - Maximum file size: 200MB.\n * - The file is downloaded and re-uploaded to the CDN; the returned URL is publicly accessible.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleDriveFile({\n * fileId: ``,\n * });\n * ```\n */\n getGoogleDriveFile(step: GetGoogleDriveFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleDriveFileStepOutput>>;\n\n /**\n * Get metadata about a Google Spreadsheet including sheet names, row counts, and column counts.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - Returns the spreadsheet title and a list of all sheets with their dimensions.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleSheetInfo({\n * documentId: ``,\n * });\n * ```\n */\n getGoogleSheetInfo(step: GetGoogleSheetInfoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleSheetInfoStepOutput>>;\n\n /**\n * Get info about a media file\n *\n * @example\n * ```typescript\n * const result = await agent.getMediaMetadata({\n * mediaUrl: ``,\n * });\n * ```\n */\n getMediaMetadata(step: GetMediaMetadataStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetMediaMetadataStepOutput>>;\n\n /**\n * Make an HTTP request to an external endpoint and return the response.\n *\n * @remarks\n * - Supports GET, POST, PATCH, DELETE, and PUT methods.\n * - Body can be raw JSON/text, URL-encoded form data, or multipart form data.\n *\n * @example\n * ```typescript\n * const result = await agent.httpRequest({\n * url: ``,\n * method: ``,\n * headers: {},\n * queryParams: {},\n * body: ``,\n * bodyItems: {},\n * contentType: \"none\",\n * customContentType: ``,\n * });\n * ```\n */\n httpRequest(step: HttpRequestStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HttpRequestStepOutput>>;\n\n /**\n * Create a new company or update an existing one in HubSpot. Matches by domain.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a company with the given domain already exists, it is updated. Otherwise, a new one is created.\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateCompany({\n * company: {},\n * enabledProperties: [],\n * });\n * ```\n */\n hubspotCreateCompany(step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateCompanyStepOutput>>;\n\n /**\n * Create a new contact or update an existing one in HubSpot. Matches by email address.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a contact with the given email already exists, it is updated. Otherwise, a new one is created.\n * - If companyDomain is provided, the contact is associated with that company (creating the company if needed).\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateContact({\n * contact: {},\n * enabledProperties: [],\n * companyDomain: ``,\n * });\n * ```\n */\n hubspotCreateContact(step: HubspotCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateContactStepOutput>>;\n\n /**\n * Look up a HubSpot company by domain name or company ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the company is not found.\n * - When searching by domain, performs a search query then fetches the full company record.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetCompany({\n * searchBy: \"domain\",\n * companyDomain: ``,\n * companyId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetCompany(step: HubspotGetCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetCompanyStepOutput>>;\n\n /**\n * Look up a HubSpot contact by email address or contact ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the contact is not found.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetContact({\n * searchBy: \"email\",\n * contactEmail: ``,\n * contactId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetContact(step: HubspotGetContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetContactStepOutput>>;\n\n /**\n * Look up company information by domain using Hunter.io.\n *\n * @remarks\n * - Returns company name, description, location, industry, size, technologies, and more.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns null if the company is not found.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiCompanyEnrichment({\n * domain: ``,\n * });\n * ```\n */\n hunterApiCompanyEnrichment(step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiCompanyEnrichmentStepOutput>>;\n\n /**\n * Search for email addresses associated with a domain using Hunter.io.\n *\n * @remarks\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns a list of email addresses found for the domain along with organization info.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiDomainSearch({\n * domain: ``,\n * });\n * ```\n */\n hunterApiDomainSearch(step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiDomainSearchStepOutput>>;\n\n /**\n * Find an email address for a specific person at a domain using Hunter.io.\n *\n * @remarks\n * - Requires a first name, last name, and domain.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns the most likely email address with a confidence score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailFinder({\n * domain: ``,\n * firstName: ``,\n * lastName: ``,\n * });\n * ```\n */\n hunterApiEmailFinder(step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailFinderStepOutput>>;\n\n /**\n * Verify whether an email address is valid and deliverable using Hunter.io.\n *\n * @remarks\n * - Checks email format, MX records, SMTP server, and mailbox deliverability.\n * - Returns a status (\"valid\", \"invalid\", \"accept_all\", \"webmail\", \"disposable\", \"unknown\") and a score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailVerification({\n * email: ``,\n * });\n * ```\n */\n hunterApiEmailVerification(step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailVerificationStepOutput>>;\n\n /**\n * Look up professional information about a person by their email address using Hunter.io.\n *\n * @remarks\n * - Returns name, job title, social profiles, and company information.\n * - If the person is not found, returns an object with an error message instead of throwing.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiPersonEnrichment({\n * email: ``,\n * });\n * ```\n */\n hunterApiPersonEnrichment(step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiPersonEnrichmentStepOutput>>;\n\n /**\n * Replace a face in an image with a face from another image using AI.\n *\n * @remarks\n * - Requires both a target image and a face source image.\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageFaceSwap({\n * imageUrl: ``,\n * faceImageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageFaceSwap(step: ImageFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageFaceSwapStepOutput>>;\n\n /**\n * Remove watermarks from an image using AI.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageRemoveWatermark({\n * imageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageRemoveWatermark(step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageRemoveWatermarkStepOutput>>;\n\n /**\n * Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\n *\n * @example\n * ```typescript\n * const result = await agent.insertVideoClips({\n * baseVideoUrl: ``,\n * overlayVideos: [],\n * });\n * ```\n */\n insertVideoClips(step: InsertVideoClipsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<InsertVideoClipsStepOutput>>;\n\n /**\n * List all data sources for the current app.\n *\n * @remarks\n * - Returns metadata for every data source associated with the current app version.\n * - Each entry includes the data source ID, name, description, status, and document list.\n *\n * @example\n * ```typescript\n * const result = await agent.listDataSources({});\n * ```\n */\n listDataSources(step: ListDataSourcesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListDataSourcesStepOutput>>;\n\n /**\n * List drafts in the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns up to 50 drafts (default 10).\n * - The variable receives text or JSON depending on exportType.\n *\n * @example\n * ```typescript\n * const result = await agent.listGmailDrafts({\n * exportType: \"json\",\n * });\n * ```\n */\n listGmailDrafts(step: ListGmailDraftsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGmailDraftsStepOutput>>;\n\n /**\n * List all labels in the connected Gmail account. Use these label IDs or names with the Update Gmail Labels step.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns both system labels (INBOX, SENT, TRASH, etc.) and user-created labels.\n * - Label type is \"system\" for built-in labels or \"user\" for custom labels.\n *\n * @example\n * ```typescript\n * const result = await agent.listGmailLabels({});\n * ```\n */\n listGmailLabels(step: ListGmailLabelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGmailLabelsStepOutput>>;\n\n /**\n * List upcoming events from a Google Calendar, ordered by start time.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Only returns future events (timeMin = now).\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns structured events.\n *\n * @example\n * ```typescript\n * const result = await agent.listGoogleCalendarEvents({\n * limit: 0,\n * exportType: \"json\",\n * });\n * ```\n */\n listGoogleCalendarEvents(step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleCalendarEventsStepOutput>>;\n\n /**\n * List files in a Google Drive folder.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - If folderId is omitted, lists files in the root folder.\n * - Returns file metadata including name, type, size, and links.\n *\n * @example\n * ```typescript\n * const result = await agent.listGoogleDriveFiles({\n * exportType: \"json\",\n * });\n * ```\n */\n listGoogleDriveFiles(step: ListGoogleDriveFilesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleDriveFilesStepOutput>>;\n\n /**\n * List recent emails from the connected Gmail inbox.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Returns up to 100 emails (default 5), ordered by most recent first.\n * - Functionally equivalent to Search Gmail Emails with an \"in:inbox\" query.\n *\n * @example\n * ```typescript\n * const result = await agent.listRecentGmailEmails({\n * exportType: \"json\",\n * limit: ``,\n * });\n * ```\n */\n listRecentGmailEmails(step: ListRecentGmailEmailsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListRecentGmailEmailsStepOutput>>;\n\n /**\n * Route execution to different branches based on AI evaluation, comparison operators, or workflow jumps.\n *\n * @remarks\n * - Supports two modes: \"ai\" (default) uses an AI model to pick the most accurate statement; \"comparison\" uses operator-based checks.\n * - In AI mode, the model picks the most accurate statement from the list. All possible cases must be specified.\n * - In comparison mode, the context is the left operand and each case's condition is the right operand. First matching case wins. Use operator \"default\" as a fallback.\n * - Requires at least two cases.\n * - Each case can transition to a step in the current workflow (destinationStepId) or jump to another workflow (destinationWorkflowId).\n *\n * @example\n * ```typescript\n * const result = await agent.logic({\n * context: ``,\n * cases: [],\n * });\n * ```\n */\n logic(step: LogicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<LogicStepOutput>>;\n\n /**\n * Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your Make.com scenario.\n * - Input key-value pairs are sent as JSON in the POST body.\n * - Response format depends on the Make.com scenario configuration.\n *\n * @example\n * ```typescript\n * const result = await agent.makeDotComRunScenario({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n makeDotComRunScenario(step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MakeDotComRunScenarioStepOutput>>;\n\n /**\n * Merge one or more clips into a single audio file.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeAudio({\n * mp3Urls: [],\n * });\n * ```\n */\n mergeAudio(step: MergeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeAudioStepOutput>>;\n\n /**\n * Merge one or more clips into a single video.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeVideos({\n * videoUrls: [],\n * });\n * ```\n */\n mergeVideos(step: MergeVideosStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeVideosStepOutput>>;\n\n /**\n * Mix an audio track into a video\n *\n * @example\n * ```typescript\n * const result = await agent.mixAudioIntoVideo({\n * videoUrl: ``,\n * audioUrl: ``,\n * options: {},\n * });\n * ```\n */\n mixAudioIntoVideo(step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MixAudioIntoVideoStepOutput>>;\n\n /**\n * Mute a video file\n *\n * @example\n * ```typescript\n * const result = await agent.muteVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n muteVideo(step: MuteVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MuteVideoStepOutput>>;\n\n /**\n * Trigger an n8n workflow node via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your n8n workflow.\n * - Supports GET and POST methods with optional Basic authentication.\n * - For GET requests, input values are sent as query parameters. For POST, they are sent as JSON body.\n *\n * @example\n * ```typescript\n * const result = await agent.n8nRunNode({\n * method: ``,\n * authentication: \"none\",\n * user: ``,\n * password: ``,\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n n8nRunNode(step: N8nRunNodeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<N8nRunNodeStepOutput>>;\n\n /**\n * Create a new page in Notion as a child of an existing page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks (headings, paragraphs, lists, code, quotes).\n * - The page is created as a child of the specified parent page (pageId).\n *\n * @example\n * ```typescript\n * const result = await agent.notionCreatePage({\n * pageId: ``,\n * content: ``,\n * title: ``,\n * });\n * ```\n */\n notionCreatePage(step: NotionCreatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionCreatePageStepOutput>>;\n\n /**\n * Update the content of an existing Notion page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks.\n * - \"append\" mode adds content to the end of the page. \"overwrite\" mode deletes all existing blocks first.\n *\n * @example\n * ```typescript\n * const result = await agent.notionUpdatePage({\n * pageId: ``,\n * content: ``,\n * mode: \"append\",\n * });\n * ```\n */\n notionUpdatePage(step: NotionUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionUpdatePageStepOutput>>;\n\n /**\n * Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\n *\n * @remarks\n * - Can use a natural language \"smartQuery\" which is converted to Apollo search parameters by an AI model.\n * - Advanced params can override or supplement the smart query results.\n * - Optionally enriches returned people and/or their organizations for additional detail.\n * - Results are paginated. Use limit and page to control the result window.\n *\n * @example\n * ```typescript\n * const result = await agent.peopleSearch({\n * smartQuery: ``,\n * enrichPeople: false,\n * enrichOrganizations: false,\n * limit: ``,\n * page: ``,\n * params: {},\n * });\n * ```\n */\n peopleSearch(step: PeopleSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PeopleSearchStepOutput>>;\n\n /**\n * Create a post on LinkedIn from the connected account.\n *\n * @remarks\n * - Requires a LinkedIn OAuth connection (connectionId).\n * - Supports text posts, image posts, and video posts.\n * - Visibility controls who can see the post.\n *\n * @example\n * ```typescript\n * const result = await agent.postToLinkedIn({\n * message: ``,\n * visibility: \"PUBLIC\",\n * });\n * ```\n */\n postToLinkedIn(step: PostToLinkedInStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToLinkedInStepOutput>>;\n\n /**\n * Send a message to a Slack channel via a connected bot.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n * - Supports both simple text messages and slack blocks messages\n * - Text messages can use limited markdown (slack-only fomatting—e.g., headers are just rendered as bold)\n *\n * @example\n * ```typescript\n * const result = await agent.postToSlackChannel({\n * channelId: ``,\n * messageType: \"string\",\n * message: ``,\n * });\n * ```\n */\n postToSlackChannel(step: PostToSlackChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToSlackChannelStepOutput>>;\n\n /**\n * Create a post on X (Twitter) from the connected account.\n *\n * @remarks\n * - Requires an X OAuth connection (connectionId).\n * - Posts are plain text. Maximum 280 characters.\n *\n * @example\n * ```typescript\n * const result = await agent.postToX({\n * text: ``,\n * });\n * ```\n */\n postToX(step: PostToXStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToXStepOutput>>;\n\n /**\n * Send data to a Zapier Zap via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in the Zapier Zap settings\n * - Input keys and values are sent as the JSON body of the POST request\n * - The webhook response (JSON or plain text) is returned as the output\n *\n * @example\n * ```typescript\n * const result = await agent.postToZapier({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n postToZapier(step: PostToZapierStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToZapierStepOutput>>;\n\n /**\n * Search a vector data source (RAG) and return relevant document chunks.\n *\n * @remarks\n * - Queries a vectorized data source and returns the most relevant chunks.\n * - Useful for retrieval-augmented generation (RAG) workflows.\n *\n * @example\n * ```typescript\n * const result = await agent.queryDataSource({\n * dataSourceId: ``,\n * query: ``,\n * maxResults: 0,\n * });\n * ```\n */\n queryDataSource(step: QueryDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryDataSourceStepOutput>>;\n\n /**\n * Execute a SQL query against an external database connected to the workspace.\n *\n * @remarks\n * - Requires a database connection configured in the workspace.\n * - Supports PostgreSQL (including Supabase), MySQL, and MSSQL.\n * - Results can be returned as JSON or CSV.\n *\n * @example\n * ```typescript\n * const result = await agent.queryExternalDatabase({\n * query: ``,\n * outputFormat: \"json\",\n * });\n * ```\n */\n queryExternalDatabase(step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryExternalDatabaseStepOutput>>;\n\n /**\n * Replace personally identifiable information in text with placeholders using Microsoft Presidio.\n *\n * @remarks\n * - PII is replaced with entity type placeholders (e.g. \"Call me at <PHONE_NUMBER>\").\n * - If entities is empty, returns empty text immediately without processing.\n *\n * @example\n * ```typescript\n * const result = await agent.redactPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n redactPII(step: RedactPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RedactPIIStepOutput>>;\n\n /**\n * Remove the background from an image using AI, producing a transparent PNG.\n *\n * @remarks\n * - Uses the Bria background removal model via fal.ai.\n * - Output is re-hosted on the CDN as a PNG with transparency.\n *\n * @example\n * ```typescript\n * const result = await agent.removeBackgroundFromImage({\n * imageUrl: ``,\n * });\n * ```\n */\n removeBackgroundFromImage(step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RemoveBackgroundFromImageStepOutput>>;\n\n /**\n * Reply to an existing email in Gmail. The reply is threaded under the original message.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose and readonly scopes.\n * - The reply is sent to the original sender and threaded under the original message.\n * - messageType controls the body format: \"plain\", \"html\", or \"markdown\".\n *\n * @example\n * ```typescript\n * const result = await agent.replyToGmailEmail({\n * messageId: ``,\n * message: ``,\n * messageType: \"plain\",\n * });\n * ```\n */\n replyToGmailEmail(step: ReplyToGmailEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ReplyToGmailEmailStepOutput>>;\n\n /**\n * Resize a video file\n *\n * @example\n * ```typescript\n * const result = await agent.resizeVideo({\n * videoUrl: ``,\n * mode: \"fit\",\n * });\n * ```\n */\n resizeVideo(step: ResizeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ResizeVideoStepOutput>>;\n\n /**\n * Run a raw API connector to a third-party service\n *\n * @remarks\n * - Use the /developer/v2/helpers/connectors endpoint to list available services and actions.\n * - Use /developer/v2/helpers/connectors/{serviceId}/{actionId} to get the full input configuration for an action.\n * - Use /developer/v2/helpers/connections to list your available OAuth connections.\n * - The actionId format is \"serviceId/actionId\" (e.g., \"slack/send-message\").\n * - Pass a __connectionId to authenticate the request with a specific OAuth connection, otherwise the default will be used (if configured).\n *\n * @example\n * ```typescript\n * const result = await agent.runFromConnectorRegistry({\n * actionId: ``,\n * displayName: ``,\n * icon: ``,\n * configurationValues: {},\n * });\n * ```\n */\n runFromConnectorRegistry(step: RunFromConnectorRegistryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunFromConnectorRegistryStepOutput>>;\n\n /**\n * Run a packaged workflow (\"custom block\")\n *\n * @remarks\n * - From the user's perspective, packaged workflows are just ordinary blocks. Behind the scenes, they operate like packages/libraries in a programming language, letting the user execute custom functionality.\n * - Some of these packaged workflows are available as part of MindStudio's \"Standard Library\" and available to every user.\n * - Available packaged workflows are documented here as individual blocks, but the runPackagedWorkflow block is how they need to be wrapped in order to be executed correctly.\n *\n * @example\n * ```typescript\n * const result = await agent.runPackagedWorkflow({\n * appId: ``,\n * workflowId: ``,\n * inputVariables: {},\n * outputVariables: {},\n * name: ``,\n * });\n * ```\n */\n runPackagedWorkflow(step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunPackagedWorkflowStepOutput>>;\n\n /**\n * Scrape a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPage({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPage(step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPageStepOutput>>;\n\n /**\n * Get all the posts for a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPosts({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPosts(step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPostsStepOutput>>;\n\n /**\n * Get all the comments for an Instagram post\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramComments({\n * postUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramComments(step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramCommentsStepOutput>>;\n\n /**\n * Scrape an Instagram profile's mentions\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramMentions({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramMentions(step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramMentionsStepOutput>>;\n\n /**\n * Get all the posts for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramPosts({\n * profileUrl: ``,\n * resultsLimit: ``,\n * onlyPostsNewerThan: ``,\n * });\n * ```\n */\n scrapeInstagramPosts(step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramPostsStepOutput>>;\n\n /**\n * Scrape an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeInstagramProfile(step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramProfileStepOutput>>;\n\n /**\n * Get all the reels for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramReels({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramReels(step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramReelsStepOutput>>;\n\n /**\n * Scrape public company data from a LinkedIn company page.\n *\n * @remarks\n * - Requires a LinkedIn company URL (e.g. https://www.linkedin.com/company/mindstudioai).\n * - Returns structured company data including description, employees, updates, and similar companies.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInCompany({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInCompany(step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInCompanyStepOutput>>;\n\n /**\n * Scrape public profile data from a LinkedIn profile page.\n *\n * @remarks\n * - Requires a LinkedIn profile URL (e.g. https://www.linkedin.com/in/username).\n * - Returns structured profile data including experience, education, articles, and activities.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInProfile(step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInProfileStepOutput>>;\n\n /**\n * Scrape a Meta Threads profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeMetaThreadsProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeMetaThreadsProfile(step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeMetaThreadsProfileStepOutput>>;\n\n /**\n * Extract text, HTML, or structured content from one or more web pages.\n *\n * @remarks\n * - Accepts a single URL or multiple URLs (as a JSON array, comma-separated, or newline-separated).\n * - Output format controls the result shape: \"text\" returns markdown, \"html\" returns raw HTML, \"json\" returns structured scraper data.\n * - Can optionally capture a screenshot of each page.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeUrl({\n * url: ``,\n * });\n * ```\n */\n scrapeUrl(step: ScrapeUrlStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeUrlStepOutput>>;\n\n /**\n * Scrape data from a single X (Twitter) post by URL.\n *\n * @remarks\n * - Returns structured post data (text, html, optional json/screenshot/metadata).\n * - Optionally saves the text content to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXPost({\n * url: ``,\n * });\n * ```\n */\n scrapeXPost(step: ScrapeXPostStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXPostStepOutput>>;\n\n /**\n * Scrape public profile data from an X (Twitter) account by URL.\n *\n * @remarks\n * - Returns structured profile data.\n * - Optionally saves the result to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeXProfile(step: ScrapeXProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXProfileStepOutput>>;\n\n /**\n * Search for emails in the connected Gmail account using a Gmail search query. To list recent inbox emails, pass an empty query string.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail readonly scope.\n * - Uses Gmail search syntax (e.g. \"from:user@example.com\", \"subject:invoice\", \"is:unread\").\n * - To list recent inbox emails, use an empty query string or \"in:inbox\".\n * - Returns up to 100 emails (default 5). The variable receives text or JSON depending on exportType.\n * - The direct execution output always returns structured email objects.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGmailEmails({\n * query: ``,\n * exportType: \"json\",\n * limit: ``,\n * });\n * ```\n */\n searchGmailEmails(step: SearchGmailEmailsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGmailEmailsStepOutput>>;\n\n /**\n * Search the web using Google and return structured results.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogle({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogle(step: SearchGoogleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleStepOutput>>;\n\n /**\n * Search for events in a Google Calendar by keyword, date range, or both.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Supports keyword search via \"query\" and date filtering via \"timeMin\"/\"timeMax\" (ISO 8601 format).\n * - Unlike \"List Events\" which only shows future events, this allows searching past events too.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleCalendarEvents({\n * exportType: \"json\",\n * });\n * ```\n */\n searchGoogleCalendarEvents(step: SearchGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleCalendarEventsStepOutput>>;\n\n /**\n * Search for files in Google Drive by keyword.\n *\n * @remarks\n * - Requires a Google OAuth connection with Drive scope.\n * - Searches file content and names using Google Drive's fullText search.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleDrive({\n * query: ``,\n * exportType: \"json\",\n * });\n * ```\n */\n searchGoogleDrive(step: SearchGoogleDriveStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleDriveStepOutput>>;\n\n /**\n * Search Google Images and return image results with URLs and metadata.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleImages({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleImages(step: SearchGoogleImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleImagesStepOutput>>;\n\n /**\n * Search Google News for recent news articles matching a query.\n *\n * @remarks\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleNews({\n * text: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleNews(step: SearchGoogleNewsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleNewsStepOutput>>;\n\n /**\n * Fetch Google Trends data for a search term.\n *\n * @remarks\n * - date accepts shorthand (\"now 1-H\", \"today 1-m\", \"today 5-y\", etc.) or custom \"yyyy-mm-dd yyyy-mm-dd\" ranges.\n * - data_type controls the shape of returned data: TIMESERIES, GEO_MAP, GEO_MAP_0, RELATED_TOPICS, or RELATED_QUERIES.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleTrends({\n * text: ``,\n * hl: ``,\n * geo: ``,\n * data_type: \"TIMESERIES\",\n * cat: ``,\n * date: ``,\n * ts: ``,\n * });\n * ```\n */\n searchGoogleTrends(step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleTrendsStepOutput>>;\n\n /**\n * Search the web using the Perplexity API and return structured results.\n *\n * @remarks\n * - Defaults to US results. Use countryCode (ISO code) to filter by country.\n * - Returns 10 results by default, configurable from 1 to 20.\n * - The variable receives text or JSON depending on exportType. The direct execution output always returns structured results.\n *\n * @example\n * ```typescript\n * const result = await agent.searchPerplexity({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchPerplexity(step: SearchPerplexityStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchPerplexityStepOutput>>;\n\n /**\n * Search recent X (Twitter) posts matching a query.\n *\n * @remarks\n * - Searches only the past 7 days of posts.\n * - Query supports X API v2 search operators (up to 512 characters).\n * Available search operators in query:\n * | Operator | Description |\n * | -----------------| -------------------------------------------------|\n * | from: | Posts from a specific user (e.g., from:elonmusk) |\n * | to: | Posts sent to a specific user (e.g., to:NASA) |\n * | @ | Mentions a user (e.g., @openai) |\n * | # | Hashtag search (e.g., #AI) |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | lang: | Filters by language (e.g., lang:en) |\n * | - | Excludes specific terms (e.g., -spam) |\n * | () | Groups terms or operators (e.g., (AI OR ML)) |\n * | AND, OR, NOT | Boolean logic for combining or excluding terms |\n * Conjunction-Required Operators (must be combined with a standalone operator):\n * | Operator | Description |\n * | ------------ | -----------------------------------------------|\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * For example, has:media alone is invalid, but #AI has:media is valid.\n *\n * @example\n * ```typescript\n * const result = await agent.searchXPosts({\n * query: ``,\n * scope: \"recent\",\n * options: {},\n * });\n * ```\n */\n searchXPosts(step: SearchXPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchXPostsStepOutput>>;\n\n /**\n * Search for YouTube videos by keyword.\n *\n * @remarks\n * - Supports pagination (up to 5 pages) and country/language filters.\n * - Use the filter/filterType fields for YouTube search parameter (sp) filters.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutube({\n * query: ``,\n * limitPages: ``,\n * filter: ``,\n * filterType: ``,\n * });\n * ```\n */\n searchYoutube(step: SearchYoutubeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeStepOutput>>;\n\n /**\n * Retrieve trending videos on YouTube by category and region.\n *\n * @remarks\n * - Categories: \"now\" (trending now), \"music\", \"gaming\", \"films\".\n * - Supports country and language filtering.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutubeTrends({\n * bp: \"now\",\n * hl: ``,\n * gl: ``,\n * });\n * ```\n */\n searchYoutubeTrends(step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeTrendsStepOutput>>;\n\n /**\n * Send an email to one or more configured recipient addresses.\n *\n * @remarks\n * - Recipient email addresses are resolved from OAuth connections configured by the app creator. The user running the workflow does not specify the recipient directly.\n * - If the body is a URL to a hosted HTML file on the CDN, the HTML is fetched and used as the email body.\n * - When generateHtml is enabled, the body text is converted to a styled HTML email using an AI model.\n * - connectionId can be a comma-separated list to send to multiple recipients.\n * - The special connectionId \"trigger_email\" uses the email address that triggered the workflow.\n *\n * @example\n * ```typescript\n * const result = await agent.sendEmail({\n * subject: ``,\n * body: ``,\n * });\n * ```\n */\n sendEmail(step: SendEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendEmailStepOutput>>;\n\n /**\n * Send an existing draft from the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose scope.\n * - The draft is sent and removed from the Drafts folder.\n * - Use the draft ID returned by the Create Gmail Draft or List Gmail Drafts steps.\n *\n * @example\n * ```typescript\n * const result = await agent.sendGmailDraft({\n * draftId: ``,\n * });\n * ```\n */\n sendGmailDraft(step: SendGmailDraftStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendGmailDraftStepOutput>>;\n\n /**\n * Send an email from the connected Gmail account.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail compose scope.\n * - messageType controls the body format: \"plain\" for plain text, \"html\" for raw HTML, \"markdown\" for auto-converted markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.sendGmailMessage({\n * to: ``,\n * subject: ``,\n * message: ``,\n * messageType: \"plain\",\n * });\n * ```\n */\n sendGmailMessage(step: SendGmailMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendGmailMessageStepOutput>>;\n\n /**\n * Send an SMS or MMS message to a phone number configured via OAuth connection.\n *\n * @remarks\n * - User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\n * - If mediaUrls are provided, the message is sent as MMS instead of SMS\n * - MMS supports up to 10 media URLs (images, video, audio, PDF) with a 5MB limit per file\n * - MMS is only supported on US and Canadian carriers; international numbers will receive SMS only (media silently dropped)\n *\n * @example\n * ```typescript\n * const result = await agent.sendSMS({\n * body: ``,\n * });\n * ```\n */\n sendSMS(step: SendSMSStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendSMSStepOutput>>;\n\n /**\n * Mark one or more Gmail emails as read or unread.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail modify scope.\n * - Accepts one or more message IDs as a comma-separated string or array.\n * - Set markAsRead to true to mark as read, false to mark as unread.\n *\n * @example\n * ```typescript\n * const result = await agent.setGmailReadStatus({\n * messageIds: ``,\n * markAsRead: false,\n * });\n * ```\n */\n setGmailReadStatus(step: SetGmailReadStatusStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetGmailReadStatusStepOutput>>;\n\n /**\n * Set the title of the agent run for the user's history\n *\n * @example\n * ```typescript\n * const result = await agent.setRunTitle({\n * title: ``,\n * });\n * ```\n */\n setRunTitle(step: SetRunTitleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetRunTitleStepOutput>>;\n\n /**\n * Explicitly set a variable to a given value.\n *\n * @remarks\n * - Useful for bootstrapping global variables or setting constants.\n * - The variable name and value both support variable interpolation.\n * - The type field is a UI hint only (controls input widget in the editor).\n *\n * @example\n * ```typescript\n * const result = await agent.setVariable({\n * value: ``,\n * });\n * ```\n */\n setVariable(step: SetVariableStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetVariableStepOutput>>;\n\n /**\n * Edit a previously sent Telegram message. Use with the message ID returned by Send Telegram Message.\n *\n * @remarks\n * - Only text messages sent by the bot can be edited.\n * - The messageId is returned by the Send Telegram Message step.\n * - Common pattern: send a \"Processing...\" message, do work, then edit it with the result.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramEditMessage({\n * botToken: ``,\n * chatId: ``,\n * messageId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramEditMessage(step: TelegramEditMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramEditMessageStepOutput>>;\n\n /**\n * Send a reply to a specific Telegram message. The reply will be visually threaded in the chat.\n *\n * @remarks\n * - Use the rawMessage.message_id from the incoming trigger variables to reply to the user's message.\n * - Especially useful in group chats where replies provide context.\n * - Returns the sent message ID, which can be used with Edit Telegram Message.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramReplyToMessage({\n * botToken: ``,\n * chatId: ``,\n * replyToMessageId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramReplyToMessage(step: TelegramReplyToMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramReplyToMessageStepOutput>>;\n\n /**\n * Send an audio file to a Telegram chat as music or a voice note via a bot.\n *\n * @remarks\n * - \"audio\" mode sends as a standard audio file. \"voice\" mode sends as a voice message (re-uploads the file for large file support).\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendAudio({\n * botToken: ``,\n * chatId: ``,\n * audioUrl: ``,\n * mode: \"audio\",\n * });\n * ```\n */\n telegramSendAudio(step: TelegramSendAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendAudioStepOutput>>;\n\n /**\n * Send a document/file to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendFile({\n * botToken: ``,\n * chatId: ``,\n * fileUrl: ``,\n * });\n * ```\n */\n telegramSendFile(step: TelegramSendFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendFileStepOutput>>;\n\n /**\n * Send an image to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendImage({\n * botToken: ``,\n * chatId: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n telegramSendImage(step: TelegramSendImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendImageStepOutput>>;\n\n /**\n * Send a text message to a Telegram chat via a bot.\n *\n * @remarks\n * - Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\n * - botToken format is \"botId:token\" — both parts are required.\n * - Returns the sent message ID, which can be used with Edit Telegram Message to update the message later.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendMessage({\n * botToken: ``,\n * chatId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramSendMessage(step: TelegramSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendMessageStepOutput>>;\n\n /**\n * Send a video to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendVideo({\n * botToken: ``,\n * chatId: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n telegramSendVideo(step: TelegramSendVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendVideoStepOutput>>;\n\n /**\n * Show the \"typing...\" indicator in a Telegram chat via a bot.\n *\n * @remarks\n * - The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSetTyping({\n * botToken: ``,\n * chatId: ``,\n * });\n * ```\n */\n telegramSetTyping(step: TelegramSetTypingStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSetTypingStepOutput>>;\n\n /**\n * Generate an audio file from provided text using a speech model.\n *\n * @remarks\n * - The text field contains the exact words to be spoken (not instructions).\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.textToSpeech({\n * text: ``,\n * });\n * ```\n */\n textToSpeech(step: TextToSpeechStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TextToSpeechStepOutput>>;\n\n /**\n * Convert an audio file to text using a transcription model.\n *\n * @remarks\n * - The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\n *\n * @example\n * ```typescript\n * const result = await agent.transcribeAudio({\n * audioUrl: ``,\n * prompt: ``,\n * });\n * ```\n */\n transcribeAudio(step: TranscribeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TranscribeAudioStepOutput>>;\n\n /**\n * Trim an audio or video clip\n *\n * @example\n * ```typescript\n * const result = await agent.trimMedia({\n * inputUrl: ``,\n * });\n * ```\n */\n trimMedia(step: TrimMediaStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TrimMediaStepOutput>>;\n\n /**\n * Add or remove labels on Gmail messages, identified by message IDs or a search query.\n *\n * @remarks\n * - Requires a Google OAuth connection with Gmail modify scope.\n * - Provide either a query (Gmail search syntax) or explicit messageIds to target messages.\n * - Label IDs can be label names or Gmail label IDs — names are resolved automatically.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGmailLabels({\n * query: ``,\n * messageIds: ``,\n * addLabelIds: ``,\n * removeLabelIds: ``,\n * });\n * ```\n */\n updateGmailLabels(step: UpdateGmailLabelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGmailLabelsStepOutput>>;\n\n /**\n * Update an existing event on a Google Calendar. Only specified fields are changed.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Fetches the existing event first, then applies only the provided updates. Omitted fields are left unchanged.\n * - Attendees are specified as one email address per line, and replace the entire attendee list.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleCalendarEvent({\n * eventId: ``,\n * });\n * ```\n */\n updateGoogleCalendarEvent(step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleCalendarEventStepOutput>>;\n\n /**\n * Update the contents of an existing Google Document.\n *\n * @remarks\n * - operationType controls how content is applied: \"addToTop\" prepends, \"addToBottom\" appends, \"overwrite\" replaces all content.\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleDoc({\n * documentId: ``,\n * text: ``,\n * textType: \"plain\",\n * operationType: \"addToTop\",\n * });\n * ```\n */\n updateGoogleDoc(step: UpdateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleDocStepOutput>>;\n\n /**\n * Update a Google Spreadsheet with new data.\n *\n * @remarks\n * - operationType controls how data is written: \"addToBottom\" appends rows, \"overwrite\" replaces all data, \"range\" writes to a specific cell range.\n * - Data should be provided as CSV in the text field.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleSheet({\n * text: ``,\n * spreadsheetId: ``,\n * range: ``,\n * operationType: \"addToBottom\",\n * });\n * ```\n */\n updateGoogleSheet(step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleSheetStepOutput>>;\n\n /**\n * Upload a file into an existing data source from a URL or raw text content.\n *\n * @remarks\n * - If \"file\" is a single URL, the file is downloaded from that URL and uploaded.\n * - If \"file\" is any other string, a .txt document is created from that content and uploaded.\n * - The block waits (polls) for processing to complete before transitioning, up to 5 minutes.\n * - Once processing finishes, vectors are loaded into Milvus so the data source is immediately queryable.\n * - Supported file types (when using a URL) are the same as the data source upload UI (PDF, DOCX, TXT, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.uploadDataSourceDocument({\n * dataSourceId: ``,\n * file: ``,\n * fileName: ``,\n * });\n * ```\n */\n uploadDataSourceDocument(step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UploadDataSourceDocumentStepOutput>>;\n\n /**\n * Increase the resolution of an image using AI upscaling.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleImage({\n * imageUrl: ``,\n * targetResolution: \"2k\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleImage(step: UpscaleImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleImageStepOutput>>;\n\n /**\n * Upscale a video file\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleVideo({\n * videoUrl: ``,\n * targetResolution: \"720p\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleVideo(step: UpscaleVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleVideoStepOutput>>;\n\n /**\n * Send a message to an AI model and return the response, or echo a system message.\n *\n * @remarks\n * - Source \"user\" sends the message to an LLM and returns the model's response.\n * - Source \"system\" echoes the message content directly (no AI call).\n * - Mode \"background\" saves the result to a variable. Mode \"foreground\" streams it to the user (not available in direct execution).\n * - Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\n *\n * @example\n * ```typescript\n * const result = await agent.generateText({\n * message: ``,\n * });\n * ```\n */\n generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /**\n * Swap faces in a video file\n *\n * @example\n * ```typescript\n * const result = await agent.videoFaceSwap({\n * videoUrl: ``,\n * faceImageUrl: ``,\n * targetIndex: 0,\n * engine: ``,\n * });\n * ```\n */\n videoFaceSwap(step: VideoFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoFaceSwapStepOutput>>;\n\n /**\n * Remove or replace background from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveBackground({\n * videoUrl: ``,\n * newBackground: \"transparent\",\n * engine: ``,\n * });\n * ```\n */\n videoRemoveBackground(step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveBackgroundStepOutput>>;\n\n /**\n * Remove a watermark from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveWatermark({\n * videoUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n videoRemoveWatermark(step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveWatermarkStepOutput>>;\n\n /**\n * Overlay a watermark image onto another image.\n *\n * @remarks\n * - The watermark is placed at the specified corner with configurable padding and width.\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkImage({\n * imageUrl: ``,\n * watermarkImageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkImage(step: WatermarkImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkImageStepOutput>>;\n\n /**\n * Add an image watermark to a video\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkVideo({\n * videoUrl: ``,\n * imageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkVideo(step: WatermarkVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkVideoStepOutput>>;\n\n}\n\n/** @internal Attaches typed step methods to the MindStudioAgent prototype. */\nexport function applyStepMethods(AgentClass: new (...args: any[]) => any): void {\n const proto = AgentClass.prototype;\n\n proto.activeCampaignAddNote = function (step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignAddNote\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.activeCampaignCreateContact = function (step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignCreateContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.addSubtitlesToVideo = function (step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"addSubtitlesToVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableCreateUpdateRecord = function (step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableCreateUpdateRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableDeleteRecord = function (step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableDeleteRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetRecord = function (step: AirtableGetRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetTableRecords = function (step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetTableRecords\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeImage = function (step: AnalyzeImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeVideo = function (step: AnalyzeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.captureThumbnail = function (step: CaptureThumbnailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"captureThumbnail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdatePage = function (step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdateRow = function (step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdateRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaFindRow = function (step: CodaFindRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaFindRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetPage = function (step: CodaGetPageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetPage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetTableRows = function (step: CodaGetTableRowsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetTableRows\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.convertPdfToImages = function (step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"convertPdfToImages\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createDataSource = function (step: CreateDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGmailDraft = function (step: CreateGmailDraftStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGmailDraft\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleCalendarEvent = function (step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleDoc = function (step: CreateGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleSheet = function (step: CreateGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSource = function (step: DeleteDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSourceDocument = function (step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteGmailEmail = function (step: DeleteGmailEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGmailEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteGoogleCalendarEvent = function (step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteGoogleSheetRows = function (step: DeleteGoogleSheetRowsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGoogleSheetRows\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.detectChanges = function (step: DetectChangesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"detectChanges\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.detectPII = function (step: DetectPIIStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"detectPII\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.discordEditMessage = function (step: DiscordEditMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"discordEditMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.discordSendFollowUp = function (step: DiscordSendFollowUpStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"discordSendFollowUp\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.discordSendMessage = function (step: DiscordSendMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"discordSendMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.downloadVideo = function (step: DownloadVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"downloadVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.enhanceImageGenerationPrompt = function (step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"enhanceImageGenerationPrompt\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.enhanceVideoGenerationPrompt = function (step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"enhanceVideoGenerationPrompt\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.enrichPerson = function (step: EnrichPersonStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"enrichPerson\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.extractAudioFromVideo = function (step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"extractAudioFromVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.extractText = function (step: ExtractTextStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"extractText\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchDataSourceDocument = function (step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleDoc = function (step: FetchGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleSheet = function (step: FetchGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchSlackChannelHistory = function (step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchSlackChannelHistory\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeCaptions = function (step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeCaptions\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeChannel = function (step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeChannel\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeComments = function (step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeComments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeVideo = function (step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateChart = function (step: GenerateChartStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateChart\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateImage = function (step: GenerateImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateLipsync = function (step: GenerateLipsyncStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateLipsync\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateMusic = function (step: GenerateMusicStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateMusic\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateAsset = function (step: GeneratePdfStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generatePdf\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateStaticVideoFromImage = function (step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateStaticVideoFromImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateVideo = function (step: GenerateVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailAttachments = function (step: GetGmailAttachmentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailAttachments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailDraft = function (step: GetGmailDraftStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailDraft\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailEmail = function (step: GetGmailEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGmailUnreadCount = function (step: GetGmailUnreadCountStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGmailUnreadCount\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGoogleCalendarEvent = function (step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGoogleDriveFile = function (step: GetGoogleDriveFileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleDriveFile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getGoogleSheetInfo = function (step: GetGoogleSheetInfoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleSheetInfo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.getMediaMetadata = function (step: GetMediaMetadataStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getMediaMetadata\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.httpRequest = function (step: HttpRequestStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"httpRequest\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotCreateCompany = function (step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotCreateCompany\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotCreateContact = function (step: HubspotCreateContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotCreateContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotGetCompany = function (step: HubspotGetCompanyStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotGetCompany\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hubspotGetContact = function (step: HubspotGetContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hubspotGetContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiCompanyEnrichment = function (step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiCompanyEnrichment\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiDomainSearch = function (step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiDomainSearch\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiEmailFinder = function (step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiEmailFinder\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiEmailVerification = function (step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiEmailVerification\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.hunterApiPersonEnrichment = function (step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"hunterApiPersonEnrichment\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.imageFaceSwap = function (step: ImageFaceSwapStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"imageFaceSwap\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.imageRemoveWatermark = function (step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"imageRemoveWatermark\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.insertVideoClips = function (step: InsertVideoClipsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"insertVideoClips\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listDataSources = function (step: ListDataSourcesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listDataSources\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGmailDrafts = function (step: ListGmailDraftsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGmailDrafts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGmailLabels = function (step: ListGmailLabelsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGmailLabels\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGoogleCalendarEvents = function (step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGoogleCalendarEvents\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listGoogleDriveFiles = function (step: ListGoogleDriveFilesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGoogleDriveFiles\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.listRecentGmailEmails = function (step: ListRecentGmailEmailsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listRecentGmailEmails\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.logic = function (step: LogicStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"logic\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.makeDotComRunScenario = function (step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"makeDotComRunScenario\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.mergeAudio = function (step: MergeAudioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"mergeAudio\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.mergeVideos = function (step: MergeVideosStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"mergeVideos\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.mixAudioIntoVideo = function (step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"mixAudioIntoVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.muteVideo = function (step: MuteVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"muteVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.n8nRunNode = function (step: N8nRunNodeStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"n8nRunNode\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.notionCreatePage = function (step: NotionCreatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"notionCreatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.notionUpdatePage = function (step: NotionUpdatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"notionUpdatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.peopleSearch = function (step: PeopleSearchStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"peopleSearch\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToLinkedIn = function (step: PostToLinkedInStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToLinkedIn\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToSlackChannel = function (step: PostToSlackChannelStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToSlackChannel\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToX = function (step: PostToXStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToX\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.postToZapier = function (step: PostToZapierStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"postToZapier\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.queryDataSource = function (step: QueryDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"queryDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.queryExternalDatabase = function (step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"queryExternalDatabase\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.redactPII = function (step: RedactPIIStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"redactPII\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.removeBackgroundFromImage = function (step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"removeBackgroundFromImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.replyToGmailEmail = function (step: ReplyToGmailEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"replyToGmailEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.resizeVideo = function (step: ResizeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"resizeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.runFromConnectorRegistry = function (step: RunFromConnectorRegistryStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"runFromConnectorRegistry\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.runPackagedWorkflow = function (step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"runPackagedWorkflow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeFacebookPage = function (step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeFacebookPage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeFacebookPosts = function (step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeFacebookPosts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramComments = function (step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramComments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramMentions = function (step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramMentions\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramPosts = function (step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramPosts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramProfile = function (step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeInstagramReels = function (step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeInstagramReels\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeLinkedInCompany = function (step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeLinkedInCompany\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeLinkedInProfile = function (step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeLinkedInProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeMetaThreadsProfile = function (step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeMetaThreadsProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeUrl = function (step: ScrapeUrlStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeUrl\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeXPost = function (step: ScrapeXPostStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeXPost\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.scrapeXProfile = function (step: ScrapeXProfileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"scrapeXProfile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGmailEmails = function (step: SearchGmailEmailsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGmailEmails\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogle = function (step: SearchGoogleStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogle\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleCalendarEvents = function (step: SearchGoogleCalendarEventsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleCalendarEvents\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleDrive = function (step: SearchGoogleDriveStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleDrive\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleImages = function (step: SearchGoogleImagesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleImages\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleNews = function (step: SearchGoogleNewsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleNews\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchGoogleTrends = function (step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogleTrends\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchPerplexity = function (step: SearchPerplexityStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchPerplexity\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchXPosts = function (step: SearchXPostsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchXPosts\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchYoutube = function (step: SearchYoutubeStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchYoutube\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.searchYoutubeTrends = function (step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchYoutubeTrends\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendEmail = function (step: SendEmailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendEmail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendGmailDraft = function (step: SendGmailDraftStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendGmailDraft\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendGmailMessage = function (step: SendGmailMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendGmailMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.sendSMS = function (step: SendSMSStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendSMS\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.setGmailReadStatus = function (step: SetGmailReadStatusStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"setGmailReadStatus\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.setRunTitle = function (step: SetRunTitleStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"setRunTitle\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.setVariable = function (step: SetVariableStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"setVariable\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramEditMessage = function (step: TelegramEditMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramEditMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramReplyToMessage = function (step: TelegramReplyToMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramReplyToMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendAudio = function (step: TelegramSendAudioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendAudio\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendFile = function (step: TelegramSendFileStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendFile\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendImage = function (step: TelegramSendImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendMessage = function (step: TelegramSendMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSendVideo = function (step: TelegramSendVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSendVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.telegramSetTyping = function (step: TelegramSetTypingStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"telegramSetTyping\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.textToSpeech = function (step: TextToSpeechStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"textToSpeech\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.transcribeAudio = function (step: TranscribeAudioStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"transcribeAudio\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.trimMedia = function (step: TrimMediaStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"trimMedia\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGmailLabels = function (step: UpdateGmailLabelsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGmailLabels\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGoogleCalendarEvent = function (step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGoogleDoc = function (step: UpdateGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.updateGoogleSheet = function (step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"updateGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.uploadDataSourceDocument = function (step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"uploadDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleImage = function (step: UpscaleImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleVideo = function (step: UpscaleVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateText = function (step: UserMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"userMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoFaceSwap = function (step: VideoFaceSwapStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoFaceSwap\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveBackground = function (step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveBackground\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveWatermark = function (step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveWatermark\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkImage = function (step: WatermarkImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkVideo = function (step: WatermarkVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-07T00:39:20.847Z\n\n\n/** An AI model available on MindStudio. */\nexport interface MindStudioModel {\n id?: string;\n /** Display name of the model. */\n name?: string;\n /** One of: `llm_chat`, `image_generation`, `video_generation`, `video_analysis`, `text_to_speech`, `vision`, `transcription`. */\n type?: \"llm_chat\" | \"image_generation\" | \"video_generation\" | \"video_analysis\" | \"text_to_speech\" | \"vision\" | \"transcription\";\n maxTemperature?: number;\n maxResponseSize?: number;\n /** Accepted input types for this model (text, imageUrl, videoUrl, etc.). */\n inputs?: Record<string, unknown>[];\n}\n\n/** A lightweight AI model summary. */\nexport interface MindStudioModelSummary {\n id?: string;\n /** Display name of the model. */\n name?: string;\n /** One of: `llm_chat`, `image_generation`, `video_generation`, `video_analysis`, `text_to_speech`, `vision`, `transcription`. */\n type?: \"llm_chat\" | \"image_generation\" | \"video_generation\" | \"video_analysis\" | \"text_to_speech\" | \"vision\" | \"transcription\";\n /** Comma-separated tags for the model. */\n tags?: string;\n}\n\n/** A connector service with its available actions. */\nexport interface ConnectorService {\n id?: string;\n /** Display name of the connector service. */\n name?: string;\n icon?: string;\n /** Available actions for this connector service. */\n actions?: {\n id?: string;\n /** Display name of the action. */\n name?: string;\n }[];\n}\n\n/** Full configuration details for a connector action. */\nexport interface ConnectorActionDetail {\n id?: string;\n /** Display name of the action. */\n name?: string;\n /** What this action does. */\n description?: string;\n /** Short usage guidance for the action. */\n quickHelp?: string;\n /** Input field groups required to call this action. */\n configuration?: ({\n title?: string;\n items?: ({\n label?: string;\n helpText?: string;\n /** The variable name to use when passing this input. */\n variable?: string;\n /** One of: `text`, `outputVariableName`, `select`. */\n type?: \"text\" | \"outputVariableName\" | \"select\";\n defaultValue?: string;\n placeholder?: string;\n selectOptions?: {\n options?: {\n label?: string;\n value?: string;\n }[];\n };\n })[];\n })[];\n}\n\n/** An OAuth connection to a third-party service. */\nexport interface Connection {\n /** Connection ID. Pass this when executing connector actions. */\n id?: string;\n /** The integration provider (e.g., slack, google, github). */\n provider?: string;\n /** Display name or account identifier for the connection. */\n name?: string;\n}\n\n/** A single cost estimate entry for a step. */\nexport interface StepCostEstimateEntry {\n /** Billing event type identifier. */\n eventType?: string;\n /** Human-readable label for the cost. */\n label?: string;\n /** Price per unit in billing units (1/1,000,000,000th of a credit). */\n unitPrice?: number;\n /** What constitutes a unit (e.g. \"token\", \"request\"). */\n unitType?: string;\n /** Estimated total cost in billing units, or null if not estimable. */\n estimatedCost?: number;\n /** Number of billable units. */\n quantity?: number;\n /** Estimated latency based on recent global model metrics. null when no metrics are available. */\n latency?: unknown;\n}\n\n/** Supported model type categories for filtering. */\nexport type ModelType = \"llm_chat\" | \"image_generation\" | \"video_generation\" | \"video_analysis\" | \"text_to_speech\" | \"vision\" | \"transcription\";\n\nexport interface HelperMethods {\n /**\n * List all available AI models.\n *\n * Returns models across all categories (chat, image generation, video, etc.).\n * Use `listModelsByType()` to filter by category.\n */\n listModels(): Promise<{ models: MindStudioModel[] }>;\n\n /**\n * List AI models filtered by type.\n *\n * @param modelType - The category to filter by (e.g. \"llm_chat\", \"image_generation\").\n */\n listModelsByType(modelType: ModelType): Promise<{ models: MindStudioModel[] }>;\n\n /**\n * List all available AI models (summary). Returns only id, name, type, and tags.\n *\n * Suitable for display or consumption inside a model context window.\n */\n listModelsSummary(): Promise<{ models: MindStudioModelSummary[] }>;\n\n /**\n * List AI models (summary) filtered by type.\n *\n * @param modelType - The category to filter by (e.g. \"llm_chat\", \"image_generation\").\n */\n listModelsSummaryByType(modelType: ModelType): Promise<{ models: MindStudioModelSummary[] }>;\n\n /**\n * List all available connector services (Slack, Google, HubSpot, etc.).\n */\n listConnectors(): Promise<{ services: ConnectorService[] }>;\n\n /**\n * Get details for a single connector service.\n *\n * @param serviceId - The connector service ID.\n */\n getConnector(serviceId: string): Promise<{ service: ConnectorService }>;\n\n /**\n * Get the full configuration for a connector action, including input fields.\n *\n * @param serviceId - The connector service ID.\n * @param actionId - The full action ID including service prefix (e.g. \"slack/send-message\").\n */\n getConnectorAction(serviceId: string, actionId: string): Promise<{ action: ConnectorActionDetail }>;\n\n /**\n * List OAuth connections for the organization.\n *\n * Returns the third-party services the caller's organization has OAuth connections for.\n * Use the returned connection IDs when calling connector actions.\n */\n listConnections(): Promise<{ connections: Connection[] }>;\n\n /**\n * Estimate the cost of executing a step before running it.\n *\n * Pass the same step config you would use for execution.\n *\n * @param stepType - The step type name (e.g. \"generateText\").\n * @param step - The step input parameters.\n * @param options - Optional appId and workflowId for context-specific pricing.\n */\n estimateStepCost(stepType: string, step?: Record<string, unknown>, options?: { appId?: string; workflowId?: string }): Promise<{ costType?: string; estimates?: StepCostEstimateEntry[] }>;\n\n /**\n * Update the display name of the authenticated agent.\n *\n * Useful for agents to set their own name after connecting.\n *\n * @param displayName - The new display name.\n */\n changeName(displayName: string): Promise<void>;\n\n /**\n * Update the profile picture of the authenticated agent.\n *\n * Useful for agents to set their own avatar after connecting.\n *\n * @param profilePictureUrl - URL of the new profile picture.\n */\n changeProfilePicture(profilePictureUrl: string): Promise<void>;\n\n /**\n * Upload a file to the MindStudio CDN.\n *\n * Gets a signed upload URL, PUTs the file content, and returns the permanent public URL.\n *\n * @param content - File content as a Buffer or Uint8Array.\n * @param options - Upload options.\n * @param options.extension - File extension without the dot (e.g. \"png\", \"jpg\", \"mp4\").\n * @param options.type - MIME type of the file (e.g. \"image/png\"). Determines which CDN subdomain is used.\n */\n uploadFile(content: Buffer | Uint8Array, options: { extension: string; type?: string }): Promise<{ url: string }>;\n}\n\n/** @internal Attaches helper methods to the MindStudioAgent prototype. */\nexport function applyHelperMethods(AgentClass: new (...args: any[]) => any): void {\n const proto = AgentClass.prototype;\n\n proto.listModels = function () {\n return this._request(\"GET\", \"/helpers/models\").then((r: any) => r.data);\n };\n\n proto.listModelsByType = function (modelType: string) {\n return this._request(\"GET\", `/helpers/models/${modelType}`).then((r: any) => r.data);\n };\n\n proto.listModelsSummary = function () {\n return this._request(\"GET\", \"/helpers/models-summary\").then((r: any) => r.data);\n };\n\n proto.listModelsSummaryByType = function (modelType: string) {\n return this._request(\"GET\", `/helpers/models-summary/${modelType}`).then((r: any) => r.data);\n };\n\n proto.listConnectors = function () {\n return this._request(\"GET\", \"/helpers/connectors\").then((r: any) => r.data);\n };\n\n proto.getConnector = function (serviceId: string) {\n return this._request(\"GET\", `/helpers/connectors/${serviceId}`).then((r: any) => r.data);\n };\n\n proto.getConnectorAction = function (serviceId: string, actionId: string) {\n return this._request(\"GET\", `/helpers/connectors/${serviceId}/${actionId}`).then((r: any) => r.data);\n };\n\n proto.listConnections = function () {\n return this._request(\"GET\", \"/helpers/connections\").then((r: any) => r.data);\n };\n\n proto.estimateStepCost = function (stepType: string, step?: Record<string, unknown>, options?: { appId?: string; workflowId?: string }) {\n return this._request(\"POST\", \"/helpers/step-cost-estimate\", { step: { type: stepType, ...step }, ...options }).then((r: any) => r.data);\n };\n\n proto.changeName = function (displayName: string) {\n return this._request(\"POST\", \"/account/change-name\", { displayName }).then(() => {});\n };\n\n proto.changeProfilePicture = function (profilePictureUrl: string) {\n return this._request(\"POST\", \"/account/change-profile-picture\", { profilePictureUrl }).then(() => {});\n };\n\n proto.uploadFile = async function (content: Buffer | Uint8Array, options: { extension: string; type?: string }) {\n const { data } = await this._request(\"POST\", \"/account/upload\", { extension: options.extension, ...(options.type != null && { type: options.type }) });\n const { uploadUrl, url } = data as { uploadUrl: string; url: string };\n const buf = content.buffer.slice(content.byteOffset, content.byteOffset + content.byteLength) as ArrayBuffer;\n const res = await fetch(uploadUrl, {\n method: \"PUT\",\n body: buf,\n headers: options.type ? { \"Content-Type\": options.type } : {},\n });\n if (!res.ok) throw new Error(`Upload failed: ${res.status} ${res.statusText}`);\n return { url };\n };\n}\n","import { request, type HttpClientConfig } from './http.js';\nimport { MindStudioError } from './errors.js';\nimport { RateLimiter, type AuthType } from './rate-limit.js';\nimport { loadConfig, type MindStudioConfig } from './config.js';\nimport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n ListAgentsResult,\n RunAgentOptions,\n RunAgentResult,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://v1.mindstudio-api.com';\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * Client for the MindStudio direct step execution API.\n *\n * Create an instance and call typed step methods directly:\n *\n * ```ts\n * const agent = new MindStudioAgent({ apiKey: \"your-key\" });\n * const { imageUrl } = await agent.generateImage({ prompt: \"a sunset\", mode: \"background\" });\n * console.log(imageUrl);\n * ```\n *\n * Authentication is resolved in order:\n * 1. `apiKey` passed to the constructor\n * 2. `MINDSTUDIO_API_KEY` environment variable\n * 3. `~/.mindstudio/config.json` (set via `mindstudio login`)\n * 4. `CALLBACK_TOKEN` environment variable (auto-set inside MindStudio custom functions)\n *\n * Base URL is resolved in order:\n * 1. `baseUrl` passed to the constructor\n * 2. `MINDSTUDIO_BASE_URL` environment variable\n * 3. `REMOTE_HOSTNAME` environment variable (auto-set inside MindStudio custom functions)\n * 4. `~/.mindstudio/config.json`\n * 5. `https://v1.mindstudio-api.com` (production default)\n *\n * Rate limiting is handled automatically:\n * - Concurrent requests are queued to stay within server limits\n * - 429 responses are retried automatically using the `Retry-After` header\n * - Internal (hook) tokens are capped at 500 calls per execution\n */\nexport class MindStudioAgent {\n /** @internal */\n readonly _httpConfig: HttpClientConfig;\n /** @internal */\n private _reuseThreadId: boolean;\n /** @internal */\n private _threadId: string | undefined;\n\n constructor(options: AgentOptions = {}) {\n const config = loadConfig();\n const { token, authType } = resolveToken(options.apiKey, config);\n const baseUrl =\n options.baseUrl ??\n process.env.MINDSTUDIO_BASE_URL ??\n process.env.REMOTE_HOSTNAME ??\n config.baseUrl ??\n DEFAULT_BASE_URL;\n\n this._reuseThreadId =\n options.reuseThreadId ??\n /^(true|1)$/i.test(process.env.MINDSTUDIO_REUSE_THREAD_ID ?? '');\n\n this._httpConfig = {\n baseUrl,\n token,\n rateLimiter: new RateLimiter(authType),\n maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,\n };\n }\n\n /**\n * Execute any step by its type name. This is the low-level method that all\n * typed step methods delegate to. Use it as an escape hatch for step types\n * not yet covered by the generated methods.\n *\n * ```ts\n * const result = await agent.executeStep(\"generateImage\", { prompt: \"hello\", mode: \"background\" });\n * ```\n */\n async executeStep<TOutput = unknown>(\n stepType: string,\n step: Record<string, unknown>,\n options?: StepExecutionOptions,\n ): Promise<StepExecutionResult<TOutput>> {\n const threadId =\n options?.threadId ?? (this._reuseThreadId ? this._threadId : undefined);\n\n const { data, headers } = await request<{\n output?: TOutput;\n outputUrl?: string;\n }>(this._httpConfig, 'POST', `/steps/${stepType}/execute`, {\n step,\n ...(options?.appId != null && { appId: options.appId }),\n ...(threadId != null && { threadId }),\n });\n\n let output: TOutput;\n if (data.output != null) {\n output = data.output;\n } else if (data.outputUrl) {\n const res = await fetch(data.outputUrl);\n if (!res.ok) {\n throw new MindStudioError(\n `Failed to fetch output from S3: ${res.status} ${res.statusText}`,\n 'output_fetch_error',\n res.status,\n );\n }\n const envelope = (await res.json()) as { value: TOutput };\n output = envelope.value;\n } else {\n output = undefined as TOutput;\n }\n\n const returnedThreadId = headers.get('x-mindstudio-thread-id') ?? '';\n if (this._reuseThreadId && returnedThreadId) {\n this._threadId = returnedThreadId;\n }\n\n const remaining = headers.get('x-ratelimit-remaining');\n const billingCost = headers.get('x-mindstudio-billing-cost');\n const billingEvents = headers.get('x-mindstudio-billing-events');\n\n return {\n ...(output as object),\n $appId: headers.get('x-mindstudio-app-id') ?? '',\n $threadId: returnedThreadId,\n $rateLimitRemaining:\n remaining != null ? parseInt(remaining, 10) : undefined,\n $billingCost:\n billingCost != null ? parseFloat(billingCost) : undefined,\n $billingEvents:\n billingEvents != null\n ? (JSON.parse(billingEvents) as Array<Record<string, unknown>>)\n : undefined,\n } as StepExecutionResult<TOutput>;\n }\n\n /**\n * List all pre-built agents in the organization.\n *\n * ```ts\n * const { apps } = await agent.listAgents();\n * for (const app of apps) console.log(app.name, app.id);\n * ```\n */\n async listAgents(): Promise<ListAgentsResult> {\n const { data } = await request<ListAgentsResult>(\n this._httpConfig,\n 'GET',\n '/agents/load',\n );\n return data;\n }\n\n /**\n * Run a pre-built agent and wait for the result.\n *\n * Uses async polling internally — the request returns immediately with a\n * callback token, then polls until the run completes or fails.\n *\n * ```ts\n * const result = await agent.runAgent({\n * appId: 'your-agent-id',\n * variables: { query: 'hello' },\n * });\n * console.log(result.result);\n * ```\n */\n async runAgent(options: RunAgentOptions): Promise<RunAgentResult> {\n const pollInterval = options.pollIntervalMs ?? 1000;\n\n const { data } = await request<{\n success: boolean;\n threadId: string;\n callbackToken: string;\n }>(this._httpConfig, 'POST', '/agents/run', {\n appId: options.appId,\n async: true,\n ...(options.variables != null && { variables: options.variables }),\n ...(options.workflow != null && { workflow: options.workflow }),\n ...(options.version != null && { version: options.version }),\n ...(options.includeBillingCost != null && {\n includeBillingCost: options.includeBillingCost,\n }),\n ...(options.metadata != null && { metadata: options.metadata }),\n });\n\n const token = data.callbackToken;\n const pollUrl = `${this._httpConfig.baseUrl}/developer/v2/agents/run/poll/${token}`;\n\n // Poll until complete or error\n while (true) {\n await sleep(pollInterval);\n\n const res = await fetch(pollUrl, {\n headers: { 'User-Agent': '@mindstudio-ai/agent' },\n });\n\n if (res.status === 404) {\n throw new MindStudioError(\n 'Poll token not found or expired.',\n 'poll_token_expired',\n 404,\n );\n }\n\n if (!res.ok) {\n throw new MindStudioError(\n `Poll request failed: ${res.status} ${res.statusText}`,\n 'poll_error',\n res.status,\n );\n }\n\n const poll = (await res.json()) as {\n status: 'pending' | 'complete' | 'error';\n result?: RunAgentResult;\n error?: string;\n };\n\n if (poll.status === 'pending') continue;\n\n if (poll.status === 'error') {\n throw new MindStudioError(\n poll.error ?? 'Agent run failed.',\n 'agent_run_error',\n 500,\n );\n }\n\n return poll.result!;\n }\n }\n\n /** @internal Used by generated helper methods. */\n _request<T>(method: 'GET' | 'POST', path: string, body?: unknown) {\n return request<T>(this._httpConfig, method, path, body);\n }\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\n// Attach generated methods to the prototype\nimport { applyStepMethods } from './generated/steps.js';\nimport { applyHelperMethods } from './generated/helpers.js';\napplyStepMethods(MindStudioAgent);\napplyHelperMethods(MindStudioAgent);\n\nfunction resolveToken(\n provided?: string,\n config?: MindStudioConfig,\n): {\n token: string;\n authType: AuthType;\n} {\n if (provided) return { token: provided, authType: 'apiKey' };\n if (process.env.MINDSTUDIO_API_KEY)\n return { token: process.env.MINDSTUDIO_API_KEY, authType: 'apiKey' };\n if (config?.apiKey)\n return { token: config.apiKey, authType: 'apiKey' };\n if (process.env.CALLBACK_TOKEN)\n return { token: process.env.CALLBACK_TOKEN, authType: 'internal' };\n throw new MindStudioError(\n 'No API key provided. Run `mindstudio login`, pass `apiKey` to the ' +\n 'constructor, or set the MINDSTUDIO_API_KEY environment variable.',\n 'missing_api_key',\n 401,\n );\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-07T00:39:20.847Z\n\n\nexport type MonacoSnippetFieldType = 'string' | 'number' | 'boolean' | 'array' | 'object' | string[];\nexport type MonacoSnippetField = [name: string, type: MonacoSnippetFieldType];\n\nexport interface MonacoSnippet {\n fields: MonacoSnippetField[];\n outputKeys: string[];\n}\n\nexport const monacoSnippets: Record<string, MonacoSnippet> = {\n \"activeCampaignAddNote\": { fields: [[\"contactId\", 'string'], [\"note\", 'string']], outputKeys: [] },\n \"activeCampaignCreateContact\": { fields: [[\"email\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string'], [\"phone\", 'string'], [\"accountId\", 'string'], [\"customFields\", 'object']], outputKeys: [\"contactId\"] },\n \"addSubtitlesToVideo\": { fields: [[\"videoUrl\", 'string'], [\"language\", 'string'], [\"fontName\", 'string'], [\"fontSize\", 'number'], [\"fontWeight\", [\"normal\", \"bold\", \"black\"]], [\"fontColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"highlightColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"strokeWidth\", 'number'], [\"strokeColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"backgroundColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\", \"none\"]], [\"backgroundOpacity\", 'number'], [\"position\", [\"top\", \"center\", \"bottom\"]], [\"yOffset\", 'number'], [\"wordsPerSubtitle\", 'number'], [\"enableAnimation\", 'boolean']], outputKeys: [\"videoUrl\"] },\n \"airtableCreateUpdateRecord\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string'], [\"fields\", 'string'], [\"recordData\", 'object']], outputKeys: [\"recordId\"] },\n \"airtableDeleteRecord\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']], outputKeys: [\"deleted\"] },\n \"airtableGetRecord\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']], outputKeys: [\"record\"] },\n \"airtableGetTableRecords\": { fields: [[\"baseId\", 'string'], [\"tableId\", 'string']], outputKeys: [\"records\"] },\n \"analyzeImage\": { fields: [[\"prompt\", 'string'], [\"imageUrl\", 'string']], outputKeys: [\"analysis\"] },\n \"analyzeVideo\": { fields: [[\"prompt\", 'string'], [\"videoUrl\", 'string']], outputKeys: [\"analysis\"] },\n \"captureThumbnail\": { fields: [[\"videoUrl\", 'string'], [\"at\", 'string']], outputKeys: [\"thumbnailUrl\"] },\n \"codaCreateUpdatePage\": { fields: [[\"pageData\", 'object']], outputKeys: [\"pageId\"] },\n \"codaCreateUpdateRow\": { fields: [[\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']], outputKeys: [\"rowId\"] },\n \"codaFindRow\": { fields: [[\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']], outputKeys: [\"row\"] },\n \"codaGetPage\": { fields: [[\"docId\", 'string'], [\"pageId\", 'string']], outputKeys: [\"content\"] },\n \"codaGetTableRows\": { fields: [[\"docId\", 'string'], [\"tableId\", 'string']], outputKeys: [\"rows\"] },\n \"convertPdfToImages\": { fields: [[\"pdfUrl\", 'string']], outputKeys: [\"imageUrls\"] },\n \"createDataSource\": { fields: [[\"name\", 'string']], outputKeys: [] },\n \"createGmailDraft\": { fields: [[\"to\", 'string'], [\"subject\", 'string'], [\"message\", 'string'], [\"messageType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"draftId\"] },\n \"createGoogleCalendarEvent\": { fields: [[\"summary\", 'string'], [\"startDateTime\", 'string'], [\"endDateTime\", 'string']], outputKeys: [\"eventId\",\"htmlLink\"] },\n \"createGoogleDoc\": { fields: [[\"title\", 'string'], [\"text\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"documentUrl\"] },\n \"createGoogleSheet\": { fields: [[\"title\", 'string'], [\"text\", 'string']], outputKeys: [\"spreadsheetUrl\"] },\n \"deleteDataSource\": { fields: [[\"dataSourceId\", 'string']], outputKeys: [] },\n \"deleteDataSourceDocument\": { fields: [[\"dataSourceId\", 'string'], [\"documentId\", 'string']], outputKeys: [] },\n \"deleteGmailEmail\": { fields: [[\"messageId\", 'string']], outputKeys: [] },\n \"deleteGoogleCalendarEvent\": { fields: [[\"eventId\", 'string']], outputKeys: [] },\n \"deleteGoogleSheetRows\": { fields: [[\"documentId\", 'string'], [\"startRow\", 'string'], [\"endRow\", 'string']], outputKeys: [] },\n \"detectChanges\": { fields: [[\"mode\", [\"ai\", \"comparison\"]], [\"input\", 'string']], outputKeys: [\"hasChanged\",\"currentValue\",\"previousValue\",\"isFirstRun\"] },\n \"detectPII\": { fields: [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']], outputKeys: [\"detected\",\"detections\"] },\n \"discordEditMessage\": { fields: [[\"botToken\", 'string'], [\"channelId\", 'string'], [\"messageId\", 'string'], [\"text\", 'string']], outputKeys: [] },\n \"discordSendFollowUp\": { fields: [[\"applicationId\", 'string'], [\"interactionToken\", 'string'], [\"text\", 'string']], outputKeys: [\"messageId\"] },\n \"discordSendMessage\": { fields: [[\"mode\", [\"edit\", \"send\"]], [\"text\", 'string']], outputKeys: [] },\n \"downloadVideo\": { fields: [[\"videoUrl\", 'string'], [\"format\", [\"mp4\", \"mp3\"]]], outputKeys: [\"videoUrl\"] },\n \"enhanceImageGenerationPrompt\": { fields: [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']], outputKeys: [\"prompt\"] },\n \"enhanceVideoGenerationPrompt\": { fields: [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']], outputKeys: [\"prompt\"] },\n \"enrichPerson\": { fields: [[\"params\", 'object']], outputKeys: [\"data\"] },\n \"extractAudioFromVideo\": { fields: [[\"videoUrl\", 'string']], outputKeys: [\"audioUrl\"] },\n \"extractText\": { fields: [[\"url\", 'string']], outputKeys: [\"text\"] },\n \"fetchDataSourceDocument\": { fields: [[\"dataSourceId\", 'string'], [\"documentId\", 'string']], outputKeys: [] },\n \"fetchGoogleDoc\": { fields: [[\"documentId\", 'string'], [\"exportType\", [\"html\", \"markdown\", \"json\", \"plain\"]]], outputKeys: [\"content\"] },\n \"fetchGoogleSheet\": { fields: [[\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"exportType\", [\"csv\", \"json\"]]], outputKeys: [\"content\"] },\n \"fetchSlackChannelHistory\": { fields: [[\"channelId\", 'string']], outputKeys: [\"messages\"] },\n \"fetchYoutubeCaptions\": { fields: [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"language\", 'string']], outputKeys: [\"transcripts\"] },\n \"fetchYoutubeChannel\": { fields: [[\"channelUrl\", 'string']], outputKeys: [\"channel\"] },\n \"fetchYoutubeComments\": { fields: [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"limitPages\", 'string']], outputKeys: [\"comments\"] },\n \"fetchYoutubeVideo\": { fields: [[\"videoUrl\", 'string']], outputKeys: [\"video\"] },\n \"generateAsset\": { fields: [[\"source\", 'string'], [\"sourceType\", [\"html\", \"markdown\", \"spa\", \"raw\", \"dynamic\", \"customInterface\"]], [\"outputFormat\", [\"pdf\", \"png\", \"html\", \"mp4\", \"openGraph\"]], [\"pageSize\", [\"full\", \"letter\", \"A4\", \"custom\"]], [\"testData\", 'object']], outputKeys: [\"url\"] },\n \"generateChart\": { fields: [[\"chart\", 'object']], outputKeys: [\"chartUrl\"] },\n \"generateImage\": { fields: [[\"prompt\", 'string']], outputKeys: [\"imageUrl\"] },\n \"generateLipsync\": { fields: [], outputKeys: [] },\n \"generateMusic\": { fields: [[\"text\", 'string']], outputKeys: [] },\n \"generatePdf\": { fields: [[\"source\", 'string'], [\"sourceType\", [\"html\", \"markdown\", \"spa\", \"raw\", \"dynamic\", \"customInterface\"]], [\"outputFormat\", [\"pdf\", \"png\", \"html\", \"mp4\", \"openGraph\"]], [\"pageSize\", [\"full\", \"letter\", \"A4\", \"custom\"]], [\"testData\", 'object']], outputKeys: [\"url\"] },\n \"generateStaticVideoFromImage\": { fields: [[\"imageUrl\", 'string'], [\"duration\", 'string']], outputKeys: [\"videoUrl\"] },\n \"generateText\": { fields: [[\"message\", 'string']], outputKeys: [\"content\"] },\n \"generateVideo\": { fields: [[\"prompt\", 'string']], outputKeys: [\"videoUrl\"] },\n \"getGmailAttachments\": { fields: [[\"messageId\", 'string']], outputKeys: [] },\n \"getGmailDraft\": { fields: [[\"draftId\", 'string']], outputKeys: [\"draftId\",\"messageId\",\"subject\",\"to\",\"from\",\"body\"] },\n \"getGmailEmail\": { fields: [[\"messageId\", 'string']], outputKeys: [\"messageId\",\"subject\",\"from\",\"to\",\"date\",\"body\",\"labels\"] },\n \"getGmailUnreadCount\": { fields: [], outputKeys: [] },\n \"getGoogleCalendarEvent\": { fields: [[\"eventId\", 'string'], [\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"event\"] },\n \"getGoogleDriveFile\": { fields: [[\"fileId\", 'string']], outputKeys: [\"url\",\"name\",\"mimeType\",\"size\"] },\n \"getGoogleSheetInfo\": { fields: [[\"documentId\", 'string']], outputKeys: [\"title\",\"sheets\"] },\n \"getMediaMetadata\": { fields: [[\"mediaUrl\", 'string']], outputKeys: [\"metadata\"] },\n \"httpRequest\": { fields: [[\"url\", 'string'], [\"method\", 'string'], [\"headers\", 'object'], [\"queryParams\", 'object'], [\"body\", 'string'], [\"bodyItems\", 'object'], [\"contentType\", [\"none\", \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\", \"custom\"]], [\"customContentType\", 'string']], outputKeys: [\"ok\",\"status\",\"statusText\",\"response\"] },\n \"hubspotCreateCompany\": { fields: [[\"company\", 'object'], [\"enabledProperties\", 'array']], outputKeys: [\"companyId\"] },\n \"hubspotCreateContact\": { fields: [[\"contact\", 'object'], [\"enabledProperties\", 'array'], [\"companyDomain\", 'string']], outputKeys: [\"contactId\"] },\n \"hubspotGetCompany\": { fields: [[\"searchBy\", [\"domain\", \"id\"]], [\"companyDomain\", 'string'], [\"companyId\", 'string'], [\"additionalProperties\", 'array']], outputKeys: [\"company\"] },\n \"hubspotGetContact\": { fields: [[\"searchBy\", [\"email\", \"id\"]], [\"contactEmail\", 'string'], [\"contactId\", 'string'], [\"additionalProperties\", 'array']], outputKeys: [\"contact\"] },\n \"hunterApiCompanyEnrichment\": { fields: [[\"domain\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiDomainSearch\": { fields: [[\"domain\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiEmailFinder\": { fields: [[\"domain\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiEmailVerification\": { fields: [[\"email\", 'string']], outputKeys: [\"data\"] },\n \"hunterApiPersonEnrichment\": { fields: [[\"email\", 'string']], outputKeys: [\"data\"] },\n \"imageFaceSwap\": { fields: [[\"imageUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"engine\", 'string']], outputKeys: [\"imageUrl\"] },\n \"imageRemoveWatermark\": { fields: [[\"imageUrl\", 'string'], [\"engine\", 'string']], outputKeys: [\"imageUrl\"] },\n \"insertVideoClips\": { fields: [[\"baseVideoUrl\", 'string'], [\"overlayVideos\", 'array']], outputKeys: [\"videoUrl\"] },\n \"listDataSources\": { fields: [], outputKeys: [] },\n \"listGmailDrafts\": { fields: [[\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"drafts\"] },\n \"listGmailLabels\": { fields: [], outputKeys: [] },\n \"listGoogleCalendarEvents\": { fields: [[\"limit\", 'number'], [\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"events\"] },\n \"listGoogleDriveFiles\": { fields: [[\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"files\"] },\n \"listRecentGmailEmails\": { fields: [[\"exportType\", [\"json\", \"text\"]], [\"limit\", 'string']], outputKeys: [] },\n \"logic\": { fields: [[\"context\", 'string'], [\"cases\", 'array']], outputKeys: [\"selectedCase\"] },\n \"makeDotComRunScenario\": { fields: [[\"webhookUrl\", 'string'], [\"input\", 'object']], outputKeys: [\"data\"] },\n \"mergeAudio\": { fields: [[\"mp3Urls\", 'array']], outputKeys: [\"audioUrl\"] },\n \"mergeVideos\": { fields: [[\"videoUrls\", 'array']], outputKeys: [\"videoUrl\"] },\n \"mixAudioIntoVideo\": { fields: [[\"videoUrl\", 'string'], [\"audioUrl\", 'string'], [\"options\", 'object']], outputKeys: [\"videoUrl\"] },\n \"muteVideo\": { fields: [[\"videoUrl\", 'string']], outputKeys: [\"videoUrl\"] },\n \"n8nRunNode\": { fields: [[\"method\", 'string'], [\"authentication\", [\"none\", \"basic\", \"string\"]], [\"user\", 'string'], [\"password\", 'string'], [\"webhookUrl\", 'string'], [\"input\", 'object']], outputKeys: [\"data\"] },\n \"notionCreatePage\": { fields: [[\"pageId\", 'string'], [\"content\", 'string'], [\"title\", 'string']], outputKeys: [\"pageId\",\"pageUrl\"] },\n \"notionUpdatePage\": { fields: [[\"pageId\", 'string'], [\"content\", 'string'], [\"mode\", [\"append\", \"overwrite\"]]], outputKeys: [\"pageId\",\"pageUrl\"] },\n \"peopleSearch\": { fields: [[\"smartQuery\", 'string'], [\"enrichPeople\", 'boolean'], [\"enrichOrganizations\", 'boolean'], [\"limit\", 'string'], [\"page\", 'string'], [\"params\", 'object']], outputKeys: [\"results\"] },\n \"postToLinkedIn\": { fields: [[\"message\", 'string'], [\"visibility\", [\"PUBLIC\", \"CONNECTIONS\"]]], outputKeys: [] },\n \"postToSlackChannel\": { fields: [[\"channelId\", 'string'], [\"messageType\", [\"string\", \"blocks\"]], [\"message\", 'string']], outputKeys: [] },\n \"postToX\": { fields: [[\"text\", 'string']], outputKeys: [] },\n \"postToZapier\": { fields: [[\"webhookUrl\", 'string'], [\"input\", 'object']], outputKeys: [\"data\"] },\n \"queryDataSource\": { fields: [[\"dataSourceId\", 'string'], [\"query\", 'string'], [\"maxResults\", 'number']], outputKeys: [\"text\",\"chunks\",\"query\",\"citations\",\"latencyMs\"] },\n \"queryExternalDatabase\": { fields: [[\"query\", 'string'], [\"outputFormat\", [\"json\", \"csv\"]]], outputKeys: [\"data\"] },\n \"redactPII\": { fields: [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']], outputKeys: [\"text\"] },\n \"removeBackgroundFromImage\": { fields: [[\"imageUrl\", 'string']], outputKeys: [\"imageUrl\"] },\n \"replyToGmailEmail\": { fields: [[\"messageId\", 'string'], [\"message\", 'string'], [\"messageType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"messageId\"] },\n \"resizeVideo\": { fields: [[\"videoUrl\", 'string'], [\"mode\", [\"fit\", \"exact\"]]], outputKeys: [\"videoUrl\"] },\n \"runFromConnectorRegistry\": { fields: [[\"actionId\", 'string'], [\"displayName\", 'string'], [\"icon\", 'string'], [\"configurationValues\", 'object']], outputKeys: [\"data\"] },\n \"runPackagedWorkflow\": { fields: [[\"appId\", 'string'], [\"workflowId\", 'string'], [\"inputVariables\", 'object'], [\"outputVariables\", 'object'], [\"name\", 'string']], outputKeys: [\"data\"] },\n \"scrapeFacebookPage\": { fields: [[\"pageUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeFacebookPosts\": { fields: [[\"pageUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramComments\": { fields: [[\"postUrl\", 'string'], [\"resultsLimit\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramMentions\": { fields: [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramPosts\": { fields: [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string'], [\"onlyPostsNewerThan\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramProfile\": { fields: [[\"profileUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeInstagramReels\": { fields: [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']], outputKeys: [\"data\"] },\n \"scrapeLinkedInCompany\": { fields: [[\"url\", 'string']], outputKeys: [\"company\"] },\n \"scrapeLinkedInProfile\": { fields: [[\"url\", 'string']], outputKeys: [\"profile\"] },\n \"scrapeMetaThreadsProfile\": { fields: [[\"profileUrl\", 'string']], outputKeys: [\"data\"] },\n \"scrapeUrl\": { fields: [[\"url\", 'string']], outputKeys: [\"content\"] },\n \"scrapeXPost\": { fields: [[\"url\", 'string']], outputKeys: [\"post\"] },\n \"scrapeXProfile\": { fields: [[\"url\", 'string']], outputKeys: [\"profile\"] },\n \"searchGmailEmails\": { fields: [[\"query\", 'string'], [\"exportType\", [\"json\", \"text\"]], [\"limit\", 'string']], outputKeys: [\"emails\"] },\n \"searchGoogle\": { fields: [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"results\"] },\n \"searchGoogleCalendarEvents\": { fields: [[\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"events\"] },\n \"searchGoogleDrive\": { fields: [[\"query\", 'string'], [\"exportType\", [\"json\", \"text\"]]], outputKeys: [\"files\"] },\n \"searchGoogleImages\": { fields: [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"images\"] },\n \"searchGoogleNews\": { fields: [[\"text\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"articles\"] },\n \"searchGoogleTrends\": { fields: [[\"text\", 'string'], [\"hl\", 'string'], [\"geo\", 'string'], [\"data_type\", [\"TIMESERIES\", \"GEO_MAP\", \"GEO_MAP_0\", \"RELATED_TOPICS\", \"RELATED_QUERIES\"]], [\"cat\", 'string'], [\"date\", 'string'], [\"ts\", 'string']], outputKeys: [\"trends\"] },\n \"searchPerplexity\": { fields: [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]], outputKeys: [\"results\"] },\n \"searchXPosts\": { fields: [[\"query\", 'string'], [\"scope\", [\"recent\", \"all\"]], [\"options\", 'object']], outputKeys: [\"posts\"] },\n \"searchYoutube\": { fields: [[\"query\", 'string'], [\"limitPages\", 'string'], [\"filter\", 'string'], [\"filterType\", 'string']], outputKeys: [\"results\"] },\n \"searchYoutubeTrends\": { fields: [[\"bp\", [\"now\", \"music\", \"gaming\", \"films\"]], [\"hl\", 'string'], [\"gl\", 'string']], outputKeys: [\"trends\"] },\n \"sendEmail\": { fields: [[\"subject\", 'string'], [\"body\", 'string']], outputKeys: [\"recipients\"] },\n \"sendGmailDraft\": { fields: [[\"draftId\", 'string']], outputKeys: [] },\n \"sendGmailMessage\": { fields: [[\"to\", 'string'], [\"subject\", 'string'], [\"message\", 'string'], [\"messageType\", [\"plain\", \"html\", \"markdown\"]]], outputKeys: [\"messageId\"] },\n \"sendSMS\": { fields: [[\"body\", 'string']], outputKeys: [] },\n \"setGmailReadStatus\": { fields: [[\"messageIds\", 'string'], [\"markAsRead\", 'boolean']], outputKeys: [] },\n \"setRunTitle\": { fields: [[\"title\", 'string']], outputKeys: [] },\n \"setVariable\": { fields: [[\"value\", 'string']], outputKeys: [] },\n \"telegramEditMessage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"messageId\", 'string'], [\"text\", 'string']], outputKeys: [] },\n \"telegramReplyToMessage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"replyToMessageId\", 'string'], [\"text\", 'string']], outputKeys: [\"messageId\"] },\n \"telegramSendAudio\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"audioUrl\", 'string'], [\"mode\", [\"audio\", \"voice\"]]], outputKeys: [] },\n \"telegramSendFile\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"fileUrl\", 'string']], outputKeys: [] },\n \"telegramSendImage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"imageUrl\", 'string']], outputKeys: [] },\n \"telegramSendMessage\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"text\", 'string']], outputKeys: [\"messageId\"] },\n \"telegramSendVideo\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"videoUrl\", 'string']], outputKeys: [] },\n \"telegramSetTyping\": { fields: [[\"botToken\", 'string'], [\"chatId\", 'string']], outputKeys: [] },\n \"textToSpeech\": { fields: [[\"text\", 'string']], outputKeys: [\"audioUrl\"] },\n \"transcribeAudio\": { fields: [[\"audioUrl\", 'string'], [\"prompt\", 'string']], outputKeys: [\"text\"] },\n \"trimMedia\": { fields: [[\"inputUrl\", 'string']], outputKeys: [\"mediaUrl\"] },\n \"updateGmailLabels\": { fields: [[\"query\", 'string'], [\"messageIds\", 'string'], [\"addLabelIds\", 'string'], [\"removeLabelIds\", 'string']], outputKeys: [\"updatedMessageIds\"] },\n \"updateGoogleCalendarEvent\": { fields: [[\"eventId\", 'string']], outputKeys: [\"eventId\",\"htmlLink\"] },\n \"updateGoogleDoc\": { fields: [[\"documentId\", 'string'], [\"text\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]], [\"operationType\", [\"addToTop\", \"addToBottom\", \"overwrite\"]]], outputKeys: [\"documentUrl\"] },\n \"updateGoogleSheet\": { fields: [[\"text\", 'string'], [\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"operationType\", [\"addToBottom\", \"overwrite\", \"range\"]]], outputKeys: [\"spreadsheetUrl\"] },\n \"uploadDataSourceDocument\": { fields: [[\"dataSourceId\", 'string'], [\"file\", 'string'], [\"fileName\", 'string']], outputKeys: [] },\n \"upscaleImage\": { fields: [[\"imageUrl\", 'string'], [\"targetResolution\", [\"2k\", \"4k\", \"8k\"]], [\"engine\", [\"standard\", \"pro\"]]], outputKeys: [\"imageUrl\"] },\n \"upscaleVideo\": { fields: [[\"videoUrl\", 'string'], [\"targetResolution\", [\"720p\", \"1080p\", \"2K\", \"4K\"]], [\"engine\", [\"standard\", \"pro\", \"ultimate\", \"flashvsr\", \"seedance\", \"seedvr2\", \"runwayml/upscale-v1\"]]], outputKeys: [\"videoUrl\"] },\n \"userMessage\": { fields: [[\"message\", 'string']], outputKeys: [\"content\"] },\n \"videoFaceSwap\": { fields: [[\"videoUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"targetIndex\", 'number'], [\"engine\", 'string']], outputKeys: [\"videoUrl\"] },\n \"videoRemoveBackground\": { fields: [[\"videoUrl\", 'string'], [\"newBackground\", [\"transparent\", \"image\"]], [\"engine\", 'string']], outputKeys: [\"videoUrl\"] },\n \"videoRemoveWatermark\": { fields: [[\"videoUrl\", 'string'], [\"engine\", 'string']], outputKeys: [\"videoUrl\"] },\n \"watermarkImage\": { fields: [[\"imageUrl\", 'string'], [\"watermarkImageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']], outputKeys: [\"imageUrl\"] },\n \"watermarkVideo\": { fields: [[\"videoUrl\", 'string'], [\"imageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']], outputKeys: [\"videoUrl\"] },\n};\n\nexport const blockTypeAliases: Record<string, string> = {\n \"userMessage\": \"generateText\",\n \"generatePdf\": \"generateAsset\",\n};\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-03-07T00:39:20.847Z\n\n\nexport interface StepMetadata {\n stepType: string;\n description: string;\n usageNotes: string;\n inputSchema: Record<string, unknown>;\n outputSchema: Record<string, unknown> | null;\n}\n\nexport const stepMetadata: Record<string, StepMetadata> = {\n \"activeCampaignAddNote\": {\n stepType: \"activeCampaignAddNote\",\n description: \"Add a note to an existing contact in ActiveCampaign.\",\n usageNotes: \"- Requires an ActiveCampaign OAuth connection (connectionId).\\n- The contact must already exist — use the contact ID from a previous create or search step.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"contactId\":{\"type\":\"string\",\"description\":\"ActiveCampaign contact ID to add the note to\"},\"note\":{\"type\":\"string\",\"description\":\"Note text content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"ActiveCampaign OAuth connection ID\"}},\"required\":[\"contactId\",\"note\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"activeCampaignCreateContact\": {\n stepType: \"activeCampaignCreateContact\",\n description: \"Create or sync a contact in ActiveCampaign.\",\n usageNotes: \"- Requires an ActiveCampaign OAuth connection (connectionId).\\n- If a contact with the email already exists, it may be updated depending on ActiveCampaign settings.\\n- Custom fields are passed as a key-value map where keys are field IDs.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Contact email address\"},\"firstName\":{\"type\":\"string\",\"description\":\"Contact first name\"},\"lastName\":{\"type\":\"string\",\"description\":\"Contact last name\"},\"phone\":{\"type\":\"string\",\"description\":\"Contact phone number\"},\"accountId\":{\"type\":\"string\",\"description\":\"ActiveCampaign account ID to associate the contact with\"},\"customFields\":{\"type\":\"object\",\"description\":\"Custom field values keyed by field ID\"},\"connectionId\":{\"type\":\"string\",\"description\":\"ActiveCampaign OAuth connection ID\"}},\"required\":[\"email\",\"firstName\",\"lastName\",\"phone\",\"accountId\",\"customFields\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"contactId\":{\"type\":\"string\",\"description\":\"ActiveCampaign contact ID of the created contact\"}},\"required\":[\"contactId\"]},\n },\n \"addSubtitlesToVideo\": {\n stepType: \"addSubtitlesToVideo\",\n description: \"Automatically add subtitles to a video\",\n usageNotes: \"- Can control style of text and animation\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"language\":{\"type\":\"string\",\"description\":\"ISO language code for subtitle transcription\"},\"fontName\":{\"type\":\"string\",\"description\":\"Google Font name for subtitle text\"},\"fontSize\":{\"type\":\"number\",\"description\":\"Font size in pixels. Default: 100.\"},\"fontWeight\":{\"enum\":[\"normal\",\"bold\",\"black\"],\"type\":\"string\",\"description\":\"Font weight for subtitle text\"},\"fontColor\":{\"enum\":[\"white\",\"black\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\"],\"type\":\"string\",\"description\":\"Color of the subtitle text\"},\"highlightColor\":{\"enum\":[\"white\",\"black\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\"],\"type\":\"string\",\"description\":\"Color used to highlight the currently spoken word\"},\"strokeWidth\":{\"type\":\"number\",\"description\":\"Width of the text stroke outline in pixels\"},\"strokeColor\":{\"enum\":[\"black\",\"white\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\"],\"type\":\"string\",\"description\":\"Color of the text stroke outline\"},\"backgroundColor\":{\"enum\":[\"black\",\"white\",\"red\",\"green\",\"blue\",\"yellow\",\"orange\",\"purple\",\"pink\",\"brown\",\"gray\",\"cyan\",\"magenta\",\"none\"],\"type\":\"string\",\"description\":\"Background color behind subtitle text. Use 'none' for transparent.\"},\"backgroundOpacity\":{\"type\":\"number\",\"description\":\"Opacity of the subtitle background. 0.0 = fully transparent, 1.0 = fully opaque.\"},\"position\":{\"enum\":[\"top\",\"center\",\"bottom\"],\"type\":\"string\",\"description\":\"Vertical position of subtitle text on screen\"},\"yOffset\":{\"type\":\"number\",\"description\":\"Vertical offset in pixels from the position. Positive moves down, negative moves up. Default: 75.\"},\"wordsPerSubtitle\":{\"type\":\"number\",\"description\":\"Maximum number of words per subtitle segment. Use 1 for single-word display, 2-3 for short phrases, or 8-12 for full sentences. Default: 3.\"},\"enableAnimation\":{\"type\":\"boolean\",\"description\":\"When true, enables bounce-style entrance animation for subtitles. Default: true.\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"language\",\"fontName\",\"fontSize\",\"fontWeight\",\"fontColor\",\"highlightColor\",\"strokeWidth\",\"strokeColor\",\"backgroundColor\",\"backgroundOpacity\",\"position\",\"yOffset\",\"wordsPerSubtitle\",\"enableAnimation\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with subtitles added\"}},\"required\":[\"videoUrl\"]},\n },\n \"airtableCreateUpdateRecord\": {\n stepType: \"airtableCreateUpdateRecord\",\n description: \"Create a new record or update an existing record in an Airtable table.\",\n usageNotes: \"- If recordId is provided, updates that record. Otherwise, creates a new one.\\n- When updating with updateMode \\\"onlySpecified\\\", unspecified fields are left as-is. With \\\"all\\\", unspecified fields are cleared.\\n- Array fields (e.g. multipleAttachments) accept arrays of values.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID\"},\"recordId\":{\"type\":\"string\",\"description\":\"Record ID to update. Omit to create a new record\"},\"updateMode\":{\"enum\":[\"onlySpecified\",\"all\"],\"type\":\"string\",\"description\":\"How to handle unspecified fields on update. 'onlySpecified' leaves them as-is, 'all' clears them\"},\"fields\":{\"description\":\"Field schema metadata used for type resolution\"},\"recordData\":{\"type\":\"object\",\"description\":\"Field values to set, keyed by field ID\"}},\"required\":[\"baseId\",\"tableId\",\"fields\",\"recordData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"recordId\":{\"type\":\"string\",\"description\":\"The Airtable record ID of the created or updated record\"}},\"required\":[\"recordId\"]},\n },\n \"airtableDeleteRecord\": {\n stepType: \"airtableDeleteRecord\",\n description: \"Delete a record from an Airtable table by its record ID.\",\n usageNotes: \"- Requires an active Airtable OAuth connection (connectionId).\\n- Silently succeeds if the record does not exist.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID\"},\"recordId\":{\"type\":\"string\",\"description\":\"Record ID to delete\"}},\"required\":[\"baseId\",\"tableId\",\"recordId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"deleted\":{\"type\":\"boolean\",\"description\":\"Whether the record was successfully deleted\"}},\"required\":[\"deleted\"]},\n },\n \"airtableGetRecord\": {\n stepType: \"airtableGetRecord\",\n description: \"Fetch a single record from an Airtable table by its record ID.\",\n usageNotes: \"- Requires an active Airtable OAuth connection (connectionId).\\n- If the record is not found, returns a string message instead of a record object.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID (e.g. \\\"appXXXXXX\\\")\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID (e.g. \\\"tblXXXXXX\\\")\"},\"recordId\":{\"type\":\"string\",\"description\":\"Record ID to fetch (e.g. \\\"recXXXXXX\\\")\"}},\"required\":[\"baseId\",\"tableId\",\"recordId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"record\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Airtable record ID\"},\"createdTime\":{\"type\":\"string\",\"description\":\"ISO 8601 timestamp when the record was created\"},\"fields\":{\"type\":\"object\",\"description\":\"Field values keyed by field name\"}},\"required\":[\"id\",\"createdTime\",\"fields\"]},{\"type\":\"null\"}]}},\"required\":[\"record\"]},\n },\n \"airtableGetTableRecords\": {\n stepType: \"airtableGetTableRecords\",\n description: \"Fetch multiple records from an Airtable table with optional pagination.\",\n usageNotes: \"- Requires an active Airtable OAuth connection (connectionId).\\n- Default limit is 100 records. Maximum is 1000.\\n- When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed records.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Airtable OAuth connection ID\"},\"baseId\":{\"type\":\"string\",\"description\":\"Airtable base ID (e.g. \\\"appXXXXXX\\\")\"},\"tableId\":{\"type\":\"string\",\"description\":\"Airtable table ID (e.g. \\\"tblXXXXXX\\\")\"},\"outputFormat\":{\"enum\":[\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format for the result. Defaults to 'json'\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of records to return. Defaults to 100, max 1000\"}},\"required\":[\"baseId\",\"tableId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"records\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Airtable record ID\"},\"createdTime\":{\"type\":\"string\",\"description\":\"ISO 8601 timestamp when the record was created\"},\"fields\":{\"type\":\"object\",\"description\":\"Field values keyed by field name\"}},\"required\":[\"id\",\"createdTime\",\"fields\"]},\"description\":\"The list of records retrieved from the Airtable table\"}},\"required\":[\"records\"]},\n },\n \"analyzeImage\": {\n stepType: \"analyzeImage\",\n description: \"Analyze an image using a vision model based on a text prompt.\",\n usageNotes: \"- Uses the configured vision model to generate a text analysis of the image.\\n- The prompt should describe what to look for or extract from the image.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Instructions describing what to look for or extract from the image\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to analyze\"},\"visionModelOverride\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"]},{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"]}]}},\"required\":[\"prompt\",\"imageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"analysis\":{\"type\":\"string\",\"description\":\"Text analysis of the image generated by the vision model\"}},\"required\":[\"analysis\"]},\n },\n \"analyzeVideo\": {\n stepType: \"analyzeVideo\",\n description: \"Analyze a video using a video analysis model based on a text prompt.\",\n usageNotes: \"- Uses the configured video analysis model to generate a text analysis of the video.\\n- The prompt should describe what to look for or extract from the video.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Instructions describing what to look for or extract from the video\"},\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video to analyze\"},\"videoAnalysisModelOverride\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"]},{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"]}]}},\"required\":[\"prompt\",\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"analysis\":{\"type\":\"string\",\"description\":\"Text analysis of the video generated by the video analysis model\"}},\"required\":[\"analysis\"]},\n },\n \"captureThumbnail\": {\n stepType: \"captureThumbnail\",\n description: \"Capture a thumbnail from a video at a specified timestamp\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to capture a frame from\"},\"at\":{\"anyOf\":[{\"type\":\"number\"},{\"type\":\"string\"}]}},\"required\":[\"videoUrl\",\"at\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"thumbnailUrl\":{\"type\":\"string\",\"description\":\"URL of the captured thumbnail image\"}},\"required\":[\"thumbnailUrl\"]},\n },\n \"codaCreateUpdatePage\": {\n stepType: \"codaCreateUpdatePage\",\n description: \"Create a new page or update an existing page in a Coda document.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- If pageData.pageId is provided, updates that page. Otherwise, creates a new one.\\n- Page content is provided as markdown and converted to Coda's canvas format.\\n- When updating, insertionMode controls how content is applied (default: 'append').\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"pageData\":{\"type\":\"object\",\"properties\":{\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"pageId\":{\"type\":\"string\",\"description\":\"Page ID to update. Omit to create a new page\"},\"name\":{\"type\":\"string\",\"description\":\"Page title\"},\"subtitle\":{\"type\":\"string\",\"description\":\"Page subtitle\"},\"iconName\":{\"type\":\"string\",\"description\":\"Page icon name\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"Page cover image URL\"},\"parentPageId\":{\"type\":\"string\",\"description\":\"Parent page ID for nesting under another page\"},\"pageContent\":{\"anyOf\":[{\"type\":\"string\"},{}]},\"contentUpdate\":{\"description\":\"Content update payload for partial updates\"},\"insertionMode\":{\"type\":\"string\",\"description\":\"How to insert content on update: \\\"append\\\" or \\\"replace\\\"\"}},\"required\":[\"docId\",\"name\",\"subtitle\",\"iconName\",\"imageUrl\",\"pageContent\"],\"description\":\"Page configuration including document ID, title, content, and optional parent page\"}},\"required\":[\"pageData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"The Coda page ID of the created or updated page\"}},\"required\":[\"pageId\"]},\n },\n \"codaCreateUpdateRow\": {\n stepType: \"codaCreateUpdateRow\",\n description: \"Create a new row or update an existing row in a Coda table.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- If rowId is provided, updates that row. Otherwise, creates a new one.\\n- Row data keys are column IDs. Empty values are excluded.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Table ID within the document\"},\"rowId\":{\"type\":\"string\",\"description\":\"Row ID to update. Omit to create a new row\"},\"rowData\":{\"type\":\"object\",\"description\":\"Column values to set, keyed by column ID\"}},\"required\":[\"docId\",\"tableId\",\"rowData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"rowId\":{\"type\":\"string\",\"description\":\"The Coda row ID of the created or updated row\"}},\"required\":[\"rowId\"]},\n },\n \"codaFindRow\": {\n stepType: \"codaFindRow\",\n description: \"Search for a row in a Coda table by matching column values.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- Returns the first row matching all specified column values, or null if no match.\\n- Search criteria in rowData are ANDed together.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Table ID to search within\"},\"rowData\":{\"type\":\"object\",\"description\":\"Column values to match against, keyed by column ID. All criteria are ANDed together\"}},\"required\":[\"docId\",\"tableId\",\"rowData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"row\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Coda row ID\"},\"values\":{\"type\":\"object\",\"description\":\"Column values keyed by column name\"}},\"required\":[\"id\",\"values\"]},{\"type\":\"null\"}]}},\"required\":[\"row\"]},\n },\n \"codaGetPage\": {\n stepType: \"codaGetPage\",\n description: \"Export and read the contents of a page from a Coda document.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- Page export is asynchronous on Coda's side — there may be a brief delay while it processes.\\n- If a page was just created in a prior step, there is an automatic 20-second retry if the first export attempt fails.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"pageId\":{\"type\":\"string\",\"description\":\"Page ID within the document\"},\"outputFormat\":{\"enum\":[\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Export format for the page content. Defaults to 'html'\"}},\"required\":[\"docId\",\"pageId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Page content in the requested format (HTML or Markdown)\"}},\"required\":[\"content\"]},\n },\n \"codaGetTableRows\": {\n stepType: \"codaGetTableRows\",\n description: \"Fetch rows from a Coda table with optional pagination.\",\n usageNotes: \"- Requires a Coda OAuth connection (connectionId).\\n- Default limit is 10000 rows. Rows are fetched in pages of 500.\\n- When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed rows.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Coda OAuth connection ID\"},\"docId\":{\"type\":\"string\",\"description\":\"Coda document ID\"},\"tableId\":{\"type\":\"string\",\"description\":\"Table ID within the document\"},\"limit\":{\"type\":[\"number\",\"string\"]},\"outputFormat\":{\"enum\":[\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format for the result. Defaults to 'json'\"}},\"required\":[\"docId\",\"tableId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"rows\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Coda row ID\"},\"values\":{\"type\":\"object\",\"description\":\"Column values keyed by column name\"}},\"required\":[\"id\",\"values\"]},\"description\":\"The list of rows retrieved from the Coda table\"}},\"required\":[\"rows\"]},\n },\n \"convertPdfToImages\": {\n stepType: \"convertPdfToImages\",\n description: \"Convert each page of a PDF document into a PNG image.\",\n usageNotes: \"- Each page is converted to a separate PNG and re-hosted on the CDN.\\n- Returns an array of image URLs, one per page.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pdfUrl\":{\"type\":\"string\",\"description\":\"URL of the PDF document to convert\"}},\"required\":[\"pdfUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"CDN URLs of the generated page images, one per page of the PDF\"}},\"required\":[\"imageUrls\"]},\n },\n \"createDataSource\": {\n stepType: \"createDataSource\",\n description: \"Create a new empty vector data source for the current app.\",\n usageNotes: \"- Creates a new data source (vector database) associated with the current app version.\\n- The data source is created empty — use the \\\"Upload Data Source Document\\\" block to add documents.\\n- Returns the new data source ID which can be used in subsequent blocks.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name for the new data source (supports variable interpolation)\"}},\"required\":[\"name\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"createGmailDraft\": {\n stepType: \"createGmailDraft\",\n description: \"Create a draft email in the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose scope.\\n- The draft appears in the user's Gmail Drafts folder but is not sent.\\n- messageType controls the body format: \\\"plain\\\" for plain text, \\\"html\\\" for raw HTML, \\\"markdown\\\" for auto-converted markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"to\":{\"type\":\"string\",\"description\":\"Recipient email address(es), comma-separated for multiple\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"message\":{\"type\":\"string\",\"description\":\"Email body content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"messageType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"}},\"required\":[\"to\",\"subject\",\"message\",\"messageType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID\"}},\"required\":[\"draftId\"]},\n },\n \"createGoogleCalendarEvent\": {\n stepType: \"createGoogleCalendarEvent\",\n description: \"Create a new event on a Google Calendar.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Date/time values must be ISO 8601 format (e.g. \\\"2025-07-02T10:00:00-07:00\\\").\\n- Attendees are specified as one email address per line in a single string.\\n- Set addMeetLink to true to automatically attach a Google Meet video call.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"startDateTime\":{\"type\":\"string\",\"description\":\"Start time in ISO 8601 format\"},\"endDateTime\":{\"type\":\"string\",\"description\":\"End time in ISO 8601 format\"},\"attendees\":{\"type\":\"string\",\"description\":\"Attendee email addresses, one per line\"},\"addMeetLink\":{\"type\":\"boolean\",\"description\":\"Whether to attach a Google Meet video call link\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"summary\",\"startDateTime\",\"endDateTime\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"}},\"required\":[\"eventId\",\"htmlLink\"]},\n },\n \"createGoogleDoc\": {\n stepType: \"createGoogleDoc\",\n description: \"Create a new Google Document and optionally populate it with content.\",\n usageNotes: \"- textType determines how the text field is interpreted: \\\"plain\\\" for plain text, \\\"html\\\" for HTML markup, \\\"markdown\\\" for Markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title for the new document\"},\"text\":{\"type\":\"string\",\"description\":\"Document body content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"textType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Format of the text field: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"}},\"required\":[\"title\",\"text\",\"textType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"documentUrl\":{\"type\":\"string\",\"description\":\"URL of the newly created Google Document\"}},\"required\":[\"documentUrl\"]},\n },\n \"createGoogleSheet\": {\n stepType: \"createGoogleSheet\",\n description: \"Create a new Google Spreadsheet and populate it with CSV data.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title for the new spreadsheet\"},\"text\":{\"type\":\"string\",\"description\":\"CSV data to populate the sheet with\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"title\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"spreadsheetUrl\":{\"type\":\"string\",\"description\":\"URL of the newly created Google Spreadsheet\"}},\"required\":[\"spreadsheetUrl\"]},\n },\n \"deleteDataSource\": {\n stepType: \"deleteDataSource\",\n description: \"Delete a vector data source from the current app.\",\n usageNotes: \"- Soft-deletes a data source (vector database) by marking it as deleted.\\n- The Milvus partition is cleaned up asynchronously by a background cron job.\\n- The data source must belong to the current app version.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the data source to delete (supports variable interpolation)\"}},\"required\":[\"dataSourceId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteDataSourceDocument\": {\n stepType: \"deleteDataSourceDocument\",\n description: \"Delete a single document from a data source.\",\n usageNotes: \"- Soft-deletes a document by marking it as deleted.\\n- Requires both the data source ID and document ID.\\n- After deletion, reloads vectors into Milvus so the data source reflects the change immediately.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the data source containing the document (supports variable interpolation)\"},\"documentId\":{\"type\":\"string\",\"description\":\"ID of the document to delete (supports variable interpolation)\"}},\"required\":[\"dataSourceId\",\"documentId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteGmailEmail\": {\n stepType: \"deleteGmailEmail\",\n description: \"Move an email to trash in the connected Gmail account (recoverable delete).\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail modify scope.\\n- Uses trash (recoverable) rather than permanent delete.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID to delete (move to trash)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteGoogleCalendarEvent\": {\n stepType: \"deleteGoogleCalendarEvent\",\n description: \"Retrieve a specific event from a Google Calendar by event ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID to delete\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"eventId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"deleteGoogleSheetRows\": {\n stepType: \"deleteGoogleSheetRows\",\n description: \"Delete a range of rows from a Google Spreadsheet.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- startRow and endRow are 1-based row numbers (inclusive).\\n- If sheetName is omitted, operates on the first sheet.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID or URL\"},\"sheetName\":{\"type\":\"string\",\"description\":\"Sheet/tab name (defaults to first sheet)\"},\"startRow\":{\"type\":\"string\",\"description\":\"First row to delete (1-based, inclusive)\"},\"endRow\":{\"type\":\"string\",\"description\":\"Last row to delete (1-based, inclusive)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"documentId\",\"startRow\",\"endRow\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"detectChanges\": {\n stepType: \"detectChanges\",\n description: \"Detect changes between runs by comparing current input against previously stored state. Routes execution based on whether a change occurred.\",\n usageNotes: \"- Persists state across runs using a global variable keyed to the step ID.\\n- Two modes: \\\"comparison\\\" (default) uses strict string inequality; \\\"ai\\\" uses an LLM to determine if a meaningful change occurred.\\n- First run always treats the value as \\\"changed\\\" since there is no previous state.\\n- Each mode supports transitions to different steps/workflows for the \\\"changed\\\" and \\\"unchanged\\\" paths.\\n- AI mode bills normally for the LLM call.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"ai\",\"comparison\"],\"type\":\"string\",\"description\":\"Detection mode: 'comparison' for strict string inequality, 'ai' for LLM-based. Default: 'comparison'\"},\"input\":{\"type\":\"string\",\"description\":\"Current value to check (variable template)\"},\"prompt\":{\"type\":\"string\",\"description\":\"AI mode: what constitutes a meaningful change\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"AI mode: model settings override\"},\"previousValueVariable\":{\"type\":\"string\",\"description\":\"Optional variable name to store the previous value into for downstream access\"},\"changedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if changed (same workflow)\"},\"changedWorkflowId\":{\"type\":\"string\",\"description\":\"Workflow to jump to if changed (cross workflow)\"},\"unchangedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if unchanged (same workflow)\"},\"unchangedWorkflowId\":{\"type\":\"string\",\"description\":\"Workflow to jump to if unchanged (cross workflow)\"}},\"required\":[\"mode\",\"input\"],\"description\":\"Configuration for the detect changes step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"hasChanged\":{\"type\":\"boolean\",\"description\":\"Whether a change was detected\"},\"currentValue\":{\"type\":\"string\",\"description\":\"The resolved input value\"},\"previousValue\":{\"type\":\"string\",\"description\":\"The stored value from last run (empty string on first run)\"},\"isFirstRun\":{\"type\":\"boolean\",\"description\":\"True when no previous state exists\"}},\"required\":[\"hasChanged\",\"currentValue\",\"previousValue\",\"isFirstRun\"]},\n },\n \"detectPII\": {\n stepType: \"detectPII\",\n description: \"Scan text for personally identifiable information using Microsoft Presidio.\",\n usageNotes: \"- In workflow mode, transitions to detectedStepId if PII is found, notDetectedStepId otherwise.\\n- In direct execution, returns the detection results without transitioning.\\n- If entities is empty, returns immediately with no detections.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\",\"description\":\"Text to scan for personally identifiable information\"},\"language\":{\"type\":\"string\",\"description\":\"Language code of the input text (e.g. \\\"en\\\")\"},\"entities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"PII entity types to scan for (e.g. [\\\"PHONE_NUMBER\\\", \\\"EMAIL_ADDRESS\\\"]). Empty array means nothing is scanned.\"},\"detectedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if PII is detected (workflow mode)\"},\"notDetectedStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if no PII is detected (workflow mode)\"},\"outputLogVariable\":{\"type\":\"string\",\"description\":\"Variable name to store the raw detection results\"}},\"required\":[\"input\",\"language\",\"entities\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"detected\":{\"type\":\"boolean\",\"description\":\"Whether any PII was found in the input text\"},\"detections\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"entity_type\":{\"type\":\"string\",\"description\":\"PII entity type (e.g. \\\"PHONE_NUMBER\\\", \\\"EMAIL_ADDRESS\\\", \\\"PERSON\\\")\"},\"start\":{\"type\":\"number\",\"description\":\"Start character index in the input text\"},\"end\":{\"type\":\"number\",\"description\":\"End character index in the input text\"},\"score\":{\"type\":\"number\",\"description\":\"Confidence score between 0 and 1\"}},\"required\":[\"entity_type\",\"start\",\"end\",\"score\"]},\"description\":\"List of detected PII entities with type, location, and confidence\"}},\"required\":[\"detected\",\"detections\"]},\n },\n \"discordEditMessage\": {\n stepType: \"discordEditMessage\",\n description: \"Edit a previously sent Discord channel message. Use with the message ID returned by Send Discord Message.\",\n usageNotes: \"- Only messages sent by the bot can be edited.\\n- The messageId is returned by the Send Discord Message step.\\n- Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\\n- When editing with an attachment, the new attachment replaces any previous attachments on the message.\\n- URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Discord bot token for authentication\"},\"channelId\":{\"type\":\"string\",\"description\":\"Discord channel ID containing the message\"},\"messageId\":{\"type\":\"string\",\"description\":\"ID of the message to edit (returned by Send Discord Message)\"},\"text\":{\"type\":\"string\",\"description\":\"New message text to replace the existing content\"},\"attachmentUrl\":{\"type\":\"string\",\"description\":\"URL of a file to download and attach to the message (replaces any previous attachments)\"}},\"required\":[\"botToken\",\"channelId\",\"messageId\",\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"discordSendFollowUp\": {\n stepType: \"discordSendFollowUp\",\n description: \"Send a follow-up message to a Discord slash command interaction.\",\n usageNotes: \"- Requires the applicationId and interactionToken from the Discord trigger variables.\\n- Follow-up messages appear as new messages in the channel after the initial response.\\n- Returns the sent message ID.\\n- Interaction tokens expire after 15 minutes.\\n- Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\\n- URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"applicationId\":{\"type\":\"string\",\"description\":\"Discord application ID from the bot registration\"},\"interactionToken\":{\"type\":\"string\",\"description\":\"Interaction token provided by the Discord trigger — expires after 15 minutes\"},\"text\":{\"type\":\"string\",\"description\":\"Message text to send as a follow-up\"},\"attachmentUrl\":{\"type\":\"string\",\"description\":\"URL of a file to download and attach to the message\"}},\"required\":[\"applicationId\",\"interactionToken\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"ID of the sent follow-up message\"}},\"required\":[\"messageId\"]},\n },\n \"discordSendMessage\": {\n stepType: \"discordSendMessage\",\n description: \"Send a message to Discord — either edit the loading message or send a new channel message.\",\n usageNotes: \"- mode \\\"edit\\\" replaces the loading message (interaction response) with the final result. Uses applicationId and interactionToken from trigger variables. No bot permissions required.\\n- mode \\\"send\\\" sends a new message to a channel. Uses botToken and channelId from trigger variables. Returns a messageId that can be used with Edit Discord Message.\\n- Optionally attach a file by providing a URL to attachmentUrl. The file is downloaded and uploaded to Discord.\\n- URLs in the text are automatically embedded by Discord (link previews for images, videos, etc.).\\n- Interaction tokens expire after 15 minutes.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"edit\",\"send\"],\"type\":\"string\",\"description\":\"\\\"edit\\\" replaces the loading message, \\\"send\\\" sends a new channel message\"},\"text\":{\"type\":\"string\",\"description\":\"Message text to send\"},\"applicationId\":{\"type\":\"string\",\"description\":\"Discord application ID from the bot registration (required for \\\"reply\\\" mode)\"},\"interactionToken\":{\"type\":\"string\",\"description\":\"Interaction token provided by the Discord trigger — expires after 15 minutes (required for \\\"reply\\\" mode)\"},\"botToken\":{\"type\":\"string\",\"description\":\"Discord bot token for authentication (required for \\\"send\\\" mode)\"},\"channelId\":{\"type\":\"string\",\"description\":\"Discord channel ID to send the message to (required for \\\"send\\\" mode)\"},\"attachmentUrl\":{\"type\":\"string\",\"description\":\"URL of a file to download and attach to the message\"}},\"required\":[\"mode\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"ID of the sent Discord message, only present in \\\"send\\\" mode (use with Edit Discord Message)\"}}},\n },\n \"downloadVideo\": {\n stepType: \"downloadVideo\",\n description: \"Download a video file\",\n usageNotes: \"- Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\\n- Can save as mp4 or mp3\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video to download (supports YouTube, TikTok, etc. via yt-dlp)\"},\"format\":{\"enum\":[\"mp4\",\"mp3\"],\"type\":\"string\",\"description\":\"Output format for the downloaded file\"}},\"required\":[\"videoUrl\",\"format\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the downloaded and re-hosted video file\"}},\"required\":[\"videoUrl\"]},\n },\n \"enhanceImageGenerationPrompt\": {\n stepType: \"enhanceImageGenerationPrompt\",\n description: \"Generate or enhance an image generation prompt using a language model. Optionally generates a negative prompt.\",\n usageNotes: \"- Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\\n- Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\\n- When includeNegativePrompt is true, a second model call generates a negative prompt.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"initialPrompt\":{\"type\":\"string\",\"description\":\"The raw prompt to enhance\"},\"includeNegativePrompt\":{\"type\":\"boolean\",\"description\":\"Whether to also generate a negative prompt\"},\"negativePromptDestinationVariableName\":{\"type\":\"string\",\"description\":\"Variable name to save the negative prompt into\"},\"systemPrompt\":{\"type\":\"string\",\"description\":\"Custom system prompt for the enhancement model. Uses a default prompt if not provided\"},\"modelOverride\":{\"description\":\"Model override settings. Leave undefined to use the default model\"}},\"required\":[\"initialPrompt\",\"includeNegativePrompt\",\"systemPrompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"The enhanced image generation prompt\"},\"negativePrompt\":{\"type\":\"string\",\"description\":\"The negative prompt, only present when includeNegativePrompt was true\"}},\"required\":[\"prompt\"]},\n },\n \"enhanceVideoGenerationPrompt\": {\n stepType: \"enhanceVideoGenerationPrompt\",\n description: \"Generate or enhance a video generation prompt using a language model. Optionally generates a negative prompt.\",\n usageNotes: \"- Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\\n- Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\\n- When includeNegativePrompt is true, a second model call generates a negative prompt.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"initialPrompt\":{\"type\":\"string\",\"description\":\"The raw prompt to enhance\"},\"includeNegativePrompt\":{\"type\":\"boolean\",\"description\":\"Whether to also generate a negative prompt\"},\"negativePromptDestinationVariableName\":{\"type\":\"string\",\"description\":\"Variable name to save the negative prompt into\"},\"systemPrompt\":{\"type\":\"string\",\"description\":\"Custom system prompt for the enhancement model. Uses a default prompt if not provided\"},\"modelOverride\":{\"description\":\"Model override settings. Leave undefined to use the default model\"}},\"required\":[\"initialPrompt\",\"includeNegativePrompt\",\"systemPrompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"The enhanced video generation prompt\"},\"negativePrompt\":{\"type\":\"string\",\"description\":\"The negative prompt, only present when includeNegativePrompt was true\"}},\"required\":[\"prompt\"]},\n },\n \"enrichPerson\": {\n stepType: \"enrichPerson\",\n description: \"Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\",\n usageNotes: \"- At least one search parameter must be provided.\\n- Returns enriched data from Apollo including contact details, employment info, and social profiles.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"params\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Apollo person ID\"},\"name\":{\"type\":\"string\",\"description\":\"Person's full name\"},\"linkedinUrl\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL\"},\"email\":{\"type\":\"string\",\"description\":\"Email address\"},\"domain\":{\"type\":\"string\",\"description\":\"Company domain\"}},\"required\":[\"id\",\"name\",\"linkedinUrl\",\"email\",\"domain\"],\"description\":\"Search parameters to identify the person (ID, name, LinkedIn URL, email, or domain)\"}},\"required\":[\"params\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Apollo enrichment result with contact details, employment history, and social profiles\"}},\"required\":[\"data\"]},\n },\n \"extractAudioFromVideo\": {\n stepType: \"extractAudioFromVideo\",\n description: \"Extract audio MP3 from a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to extract audio from\"}},\"required\":[\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the extracted audio MP3 file\"}},\"required\":[\"audioUrl\"]},\n },\n \"extractText\": {\n stepType: \"extractText\",\n description: \"Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\",\n usageNotes: \"- Best suited for PDFs and raw text/document files. For web pages, use the scrapeUrl step instead.\\n- Accepts a single URL, a comma-separated list of URLs, or a JSON array of URLs.\\n- Files are rehosted on the MindStudio CDN before extraction.\\n- Maximum file size is 50MB per URL.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"text\"]},\n },\n \"fetchDataSourceDocument\": {\n stepType: \"fetchDataSourceDocument\",\n description: \"Fetch the full extracted text contents of a document in a data source.\",\n usageNotes: \"- Loads a document by ID and returns its full extracted text content.\\n- The document must have been successfully processed (status \\\"done\\\").\\n- Also returns document metadata (name, summary, word count).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the data source containing the document (supports variable interpolation)\"},\"documentId\":{\"type\":\"string\",\"description\":\"ID of the document to fetch (supports variable interpolation)\"}},\"required\":[\"dataSourceId\",\"documentId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"fetchGoogleDoc\": {\n stepType: \"fetchGoogleDoc\",\n description: \"Fetch the contents of an existing Google Document.\",\n usageNotes: \"- exportType controls the output format: \\\"html\\\" for HTML markup, \\\"markdown\\\" for Markdown, \\\"json\\\" for structured JSON, \\\"plain\\\" for plain text.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Document ID (from the document URL)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"html\",\"markdown\",\"json\",\"plain\"],\"type\":\"string\",\"description\":\"Output format: \\\"html\\\", \\\"markdown\\\", \\\"json\\\", or \\\"plain\\\"\"}},\"required\":[\"documentId\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Document contents in the requested export format\"}},\"required\":[\"content\"]},\n },\n \"fetchGoogleSheet\": {\n stepType: \"fetchGoogleSheet\",\n description: \"Fetch contents of a Google Spreadsheet range.\",\n usageNotes: \"- range uses A1 notation (e.g. \\\"Sheet1!A1:C10\\\"). Omit to fetch the entire first sheet.\\n- exportType controls the output format: \\\"csv\\\" for comma-separated values, \\\"json\\\" for structured JSON.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"spreadsheetId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID (from the spreadsheet URL)\"},\"range\":{\"type\":\"string\",\"description\":\"Cell range in A1 notation (e.g. \\\"Sheet1!A1:C10\\\")\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"csv\",\"json\"],\"type\":\"string\",\"description\":\"Output format: \\\"csv\\\" or \\\"json\\\"\"}},\"required\":[\"spreadsheetId\",\"range\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"Spreadsheet data in the requested export format\"}},\"required\":[\"content\"]},\n },\n \"fetchSlackChannelHistory\": {\n stepType: \"fetchSlackChannelHistory\",\n description: \"Fetch recent message history from a Slack channel.\",\n usageNotes: \"- The user is responsible for connecting their Slack workspace and selecting the channel\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Slack OAuth connection ID (leave empty to allow user to select)\"},\"channelId\":{\"type\":\"string\",\"description\":\"Slack channel ID (leave empty to allow user to select a channel)\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of messages to return (1-15)\"},\"startDate\":{\"type\":\"string\",\"description\":\"Earliest date to include messages from\"},\"endDate\":{\"type\":\"string\",\"description\":\"Latest date to include messages up to\"},\"includeImages\":{\"type\":\"boolean\",\"description\":\"Whether to include images in the output\"},\"includeRawMessage\":{\"type\":\"boolean\",\"description\":\"Whether to include the raw Slack message object (useful for bot messages with complex attachments)\"}},\"required\":[\"channelId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messages\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"from\":{\"type\":\"string\"},\"content\":{\"type\":\"string\"},\"timestamp\":{\"type\":\"string\"},\"images\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"rawMessage\":{\"type\":\"object\",\"properties\":{\"app_id\":{\"type\":\"string\"},\"assistant_app_thread\":{\"type\":\"object\",\"properties\":{\"first_user_thread_reply\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"title_blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}},\"attachments\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"actions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"app_id\":{\"type\":\"string\"},\"app_unfurl_url\":{\"type\":\"string\"},\"author_icon\":{\"type\":\"string\"},\"author_id\":{\"type\":\"string\"},\"author_link\":{\"type\":\"string\"},\"author_name\":{\"type\":\"string\"},\"author_subname\":{\"type\":\"string\"},\"blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"bot_id\":{\"type\":\"string\"},\"bot_team_id\":{\"type\":\"string\"},\"callback_id\":{\"type\":\"string\"},\"channel_id\":{\"type\":\"string\"},\"channel_name\":{\"type\":\"string\"},\"channel_team\":{\"type\":\"string\"},\"color\":{\"type\":\"string\"},\"fallback\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"file_id\":{\"type\":\"string\"},\"filename\":{\"type\":\"string\"},\"files\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"footer\":{\"type\":\"string\"},\"footer_icon\":{\"type\":\"string\"},\"from_url\":{\"type\":\"string\"},\"hide_border\":{\"type\":\"boolean\"},\"hide_color\":{\"type\":\"boolean\"},\"id\":{\"type\":\"number\"},\"image_bytes\":{\"type\":\"number\"},\"image_height\":{\"type\":\"number\"},\"image_url\":{\"type\":\"string\"},\"image_width\":{\"type\":\"number\"},\"indent\":{\"type\":\"boolean\"},\"is_app_unfurl\":{\"type\":\"boolean\"},\"is_file_attachment\":{\"type\":\"boolean\"},\"is_msg_unfurl\":{\"type\":\"boolean\"},\"is_reply_unfurl\":{\"type\":\"boolean\"},\"is_thread_root_unfurl\":{\"type\":\"boolean\"},\"list\":{\"type\":\"string\"},\"list_record\":{\"type\":\"string\"},\"list_record_id\":{\"type\":\"string\"},\"list_records\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"list_schema\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"list_view\":{\"type\":\"string\"},\"list_view_id\":{\"type\":\"string\"},\"message_blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"metadata\":{\"type\":\"string\"},\"mimetype\":{\"type\":\"string\"},\"mrkdwn_in\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"msg_subtype\":{\"type\":\"string\"},\"original_url\":{\"type\":\"string\"},\"pretext\":{\"type\":\"string\"},\"preview\":{\"type\":\"string\"},\"service_icon\":{\"type\":\"string\"},\"service_name\":{\"type\":\"string\"},\"service_url\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"text\":{\"type\":\"string\"},\"thumb_height\":{\"type\":\"number\"},\"thumb_url\":{\"type\":\"string\"},\"thumb_width\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"},\"title_link\":{\"type\":\"string\"},\"ts\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"video_html\":{\"type\":\"string\"},\"video_html_height\":{\"type\":\"number\"},\"video_html_width\":{\"type\":\"number\"},\"video_url\":{\"type\":\"string\"}}}},\"blocks\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"accessory\":{\"type\":\"string\"},\"alt_text\":{\"type\":\"string\"},\"api_decoration_available\":{\"type\":\"boolean\"},\"app_collaborators\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"app_id\":{\"type\":\"string\"},\"author_name\":{\"type\":\"string\"},\"block_id\":{\"type\":\"string\"},\"bot_user_id\":{\"type\":\"string\"},\"button_label\":{\"type\":\"string\"},\"call\":{\"type\":\"string\"},\"call_id\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"developer_trace_id\":{\"type\":\"string\"},\"dispatch_action\":{\"type\":\"boolean\"},\"element\":{\"type\":\"string\"},\"elements\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"expand\":{\"type\":\"boolean\"},\"external_id\":{\"type\":\"string\"},\"fallback\":{\"type\":\"string\"},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"file\":{\"type\":\"string\"},\"file_id\":{\"type\":\"string\"},\"function_trigger_id\":{\"type\":\"string\"},\"hint\":{\"type\":\"string\"},\"image_bytes\":{\"type\":\"number\"},\"image_height\":{\"type\":\"number\"},\"image_url\":{\"type\":\"string\"},\"image_width\":{\"type\":\"number\"},\"is_animated\":{\"type\":\"boolean\"},\"is_workflow_app\":{\"type\":\"boolean\"},\"label\":{\"type\":\"string\"},\"optional\":{\"type\":\"boolean\"},\"owning_team_id\":{\"type\":\"string\"},\"provider_icon_url\":{\"type\":\"string\"},\"provider_name\":{\"type\":\"string\"},\"sales_home_workflow_app_type\":{\"type\":\"number\"},\"share_url\":{\"type\":\"string\"},\"slack_file\":{\"type\":\"string\"},\"source\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"thumbnail_url\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"title_url\":{\"type\":\"string\"},\"trigger_subtype\":{\"type\":\"string\"},\"trigger_type\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"video_url\":{\"type\":\"string\"},\"workflow_id\":{\"type\":\"string\"}}}},\"bot_id\":{\"type\":\"string\"},\"bot_profile\":{\"type\":\"object\",\"properties\":{\"app_id\":{\"type\":\"string\"},\"deleted\":{\"type\":\"boolean\"},\"icons\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"team_id\":{\"type\":\"string\"},\"updated\":{\"type\":\"number\"}}},\"client_msg_id\":{\"type\":\"string\"},\"display_as_bot\":{\"type\":\"boolean\"},\"edited\":{\"type\":\"object\",\"properties\":{\"ts\":{\"type\":\"string\"},\"user\":{\"type\":\"string\"}}},\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"access\":{\"type\":\"string\"},\"alt_txt\":{\"type\":\"string\"},\"app_id\":{\"type\":\"string\"},\"app_name\":{\"type\":\"string\"},\"attachments\":{\"type\":\"array\",\"items\":{}},\"blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"bot_id\":{\"type\":\"string\"},\"can_toggle_canvas_lock\":{\"type\":\"boolean\"},\"canvas_printing_enabled\":{\"type\":\"boolean\"},\"canvas_template_mode\":{\"type\":\"string\"},\"cc\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"channel_actions_count\":{\"type\":\"number\"},\"channel_actions_ts\":{\"type\":\"string\"},\"channels\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"comments_count\":{\"type\":\"number\"},\"converted_pdf\":{\"type\":\"string\"},\"created\":{\"type\":\"number\"},\"deanimate\":{\"type\":\"string\"},\"deanimate_gif\":{\"type\":\"string\"},\"display_as_bot\":{\"type\":\"boolean\"},\"dm_mpdm_users_with_file_access\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"duration_ms\":{\"type\":\"number\"},\"edit_link\":{\"type\":\"string\"},\"edit_timestamp\":{\"type\":\"number\"},\"editable\":{\"type\":\"boolean\"},\"editor\":{\"type\":\"string\"},\"editors\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"external_id\":{\"type\":\"string\"},\"external_type\":{\"type\":\"string\"},\"external_url\":{\"type\":\"string\"},\"favorites\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"file_access\":{\"type\":\"string\"},\"filetype\":{\"type\":\"string\"},\"from\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"groups\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"has_more\":{\"type\":\"boolean\"},\"has_more_shares\":{\"type\":\"boolean\"},\"has_rich_preview\":{\"type\":\"boolean\"},\"headers\":{\"type\":\"string\"},\"hls\":{\"type\":\"string\"},\"hls_embed\":{\"type\":\"string\"},\"id\":{\"type\":\"string\"},\"image_exif_rotation\":{\"type\":\"number\"},\"ims\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"initial_comment\":{\"type\":\"string\"},\"is_channel_space\":{\"type\":\"boolean\"},\"is_external\":{\"type\":\"boolean\"},\"is_public\":{\"type\":\"boolean\"},\"is_restricted_sharing_enabled\":{\"type\":\"boolean\"},\"is_starred\":{\"type\":\"boolean\"},\"last_editor\":{\"type\":\"string\"},\"last_read\":{\"type\":\"number\"},\"lines\":{\"type\":\"number\"},\"lines_more\":{\"type\":\"number\"},\"linked_channel_id\":{\"type\":\"string\"},\"list_csv_download_url\":{\"type\":\"string\"},\"list_limits\":{\"type\":\"string\"},\"list_metadata\":{\"type\":\"string\"},\"media_display_type\":{\"type\":\"string\"},\"media_progress\":{\"type\":\"string\"},\"mimetype\":{\"type\":\"string\"},\"mode\":{\"type\":\"string\"},\"mp4\":{\"type\":\"string\"},\"mp4_low\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"non_owner_editable\":{\"type\":\"boolean\"},\"num_stars\":{\"type\":\"number\"},\"org_or_workspace_access\":{\"type\":\"string\"},\"original_attachment_count\":{\"type\":\"number\"},\"original_h\":{\"type\":\"string\"},\"original_w\":{\"type\":\"string\"},\"permalink\":{\"type\":\"string\"},\"permalink_public\":{\"type\":\"string\"},\"pinned_to\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"pjpeg\":{\"type\":\"string\"},\"plain_text\":{\"type\":\"string\"},\"pretty_type\":{\"type\":\"string\"},\"preview\":{\"type\":\"string\"},\"preview_highlight\":{\"type\":\"string\"},\"preview_is_truncated\":{\"type\":\"boolean\"},\"preview_plain_text\":{\"type\":\"string\"},\"private_channels_with_file_access_count\":{\"type\":\"number\"},\"private_file_with_access_count\":{\"type\":\"number\"},\"public_url_shared\":{\"type\":\"boolean\"},\"quip_thread_id\":{\"type\":\"string\"},\"reactions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"saved\":{\"type\":\"string\"},\"sent_to_self\":{\"type\":\"boolean\"},\"shares\":{\"type\":\"string\"},\"show_badge\":{\"type\":\"boolean\"},\"simplified_html\":{\"type\":\"string\"},\"size\":{\"type\":\"number\"},\"source_team\":{\"type\":\"string\"},\"subject\":{\"type\":\"string\"},\"subtype\":{\"type\":\"string\"},\"team_pref_version_history_enabled\":{\"type\":\"boolean\"},\"teams_shared_with\":{\"type\":\"array\",\"items\":{}},\"template_conversion_ts\":{\"type\":\"number\"},\"template_description\":{\"type\":\"string\"},\"template_icon\":{\"type\":\"string\"},\"template_name\":{\"type\":\"string\"},\"template_title\":{\"type\":\"string\"},\"thumb_1024\":{\"type\":\"string\"},\"thumb_1024_gif\":{\"type\":\"string\"},\"thumb_1024_h\":{\"type\":\"string\"},\"thumb_1024_w\":{\"type\":\"string\"},\"thumb_160\":{\"type\":\"string\"},\"thumb_160_gif\":{\"type\":\"string\"},\"thumb_160_h\":{\"type\":\"string\"},\"thumb_160_w\":{\"type\":\"string\"},\"thumb_360\":{\"type\":\"string\"},\"thumb_360_gif\":{\"type\":\"string\"},\"thumb_360_h\":{\"type\":\"string\"},\"thumb_360_w\":{\"type\":\"string\"},\"thumb_480\":{\"type\":\"string\"},\"thumb_480_gif\":{\"type\":\"string\"},\"thumb_480_h\":{\"type\":\"string\"},\"thumb_480_w\":{\"type\":\"string\"},\"thumb_64\":{\"type\":\"string\"},\"thumb_64_gif\":{\"type\":\"string\"},\"thumb_64_h\":{\"type\":\"string\"},\"thumb_64_w\":{\"type\":\"string\"},\"thumb_720\":{\"type\":\"string\"},\"thumb_720_gif\":{\"type\":\"string\"},\"thumb_720_h\":{\"type\":\"string\"},\"thumb_720_w\":{\"type\":\"string\"},\"thumb_80\":{\"type\":\"string\"},\"thumb_800\":{\"type\":\"string\"},\"thumb_800_gif\":{\"type\":\"string\"},\"thumb_800_h\":{\"type\":\"string\"},\"thumb_800_w\":{\"type\":\"string\"},\"thumb_80_gif\":{\"type\":\"string\"},\"thumb_80_h\":{\"type\":\"string\"},\"thumb_80_w\":{\"type\":\"string\"},\"thumb_960\":{\"type\":\"string\"},\"thumb_960_gif\":{\"type\":\"string\"},\"thumb_960_h\":{\"type\":\"string\"},\"thumb_960_w\":{\"type\":\"string\"},\"thumb_gif\":{\"type\":\"string\"},\"thumb_pdf\":{\"type\":\"string\"},\"thumb_pdf_h\":{\"type\":\"string\"},\"thumb_pdf_w\":{\"type\":\"string\"},\"thumb_tiny\":{\"type\":\"string\"},\"thumb_video\":{\"type\":\"string\"},\"thumb_video_h\":{\"type\":\"number\"},\"thumb_video_w\":{\"type\":\"number\"},\"timestamp\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"},\"title_blocks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"to\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"transcription\":{\"type\":\"string\"},\"update_notification\":{\"type\":\"number\"},\"updated\":{\"type\":\"number\"},\"url_private\":{\"type\":\"string\"},\"url_private_download\":{\"type\":\"string\"},\"url_static_preview\":{\"type\":\"string\"},\"user\":{\"type\":\"string\"},\"user_team\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"},\"vtt\":{\"type\":\"string\"}}}},\"icons\":{\"type\":\"object\",\"properties\":{\"emoji\":{\"type\":\"string\"},\"image_36\":{\"type\":\"string\"},\"image_48\":{\"type\":\"string\"},\"image_64\":{\"type\":\"string\"},\"image_72\":{\"type\":\"string\"}}},\"inviter\":{\"type\":\"string\"},\"is_locked\":{\"type\":\"boolean\"},\"latest_reply\":{\"type\":\"string\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"event_payload\":{\"type\":\"string\"},\"event_type\":{\"type\":\"string\"}}},\"parent_user_id\":{\"type\":\"string\"},\"purpose\":{\"type\":\"string\"},\"reactions\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"count\":{\"type\":\"number\"},\"name\":{\"type\":\"string\"},\"url\":{\"type\":\"string\"},\"users\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}},\"reply_count\":{\"type\":\"number\"},\"reply_users\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"reply_users_count\":{\"type\":\"number\"},\"root\":{\"type\":\"object\",\"properties\":{\"bot_id\":{\"type\":\"string\"},\"icons\":{\"type\":\"string\"},\"latest_reply\":{\"type\":\"string\"},\"parent_user_id\":{\"type\":\"string\"},\"reply_count\":{\"type\":\"number\"},\"reply_users\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"reply_users_count\":{\"type\":\"number\"},\"subscribed\":{\"type\":\"boolean\"},\"subtype\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"thread_ts\":{\"type\":\"string\"},\"ts\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"}}},\"subscribed\":{\"type\":\"boolean\"},\"subtype\":{\"type\":\"string\"},\"team\":{\"type\":\"string\"},\"text\":{\"type\":\"string\"},\"thread_ts\":{\"type\":\"string\"},\"topic\":{\"type\":\"string\"},\"ts\":{\"type\":\"string\"},\"type\":{\"type\":\"string\"},\"upload\":{\"type\":\"boolean\"},\"user\":{\"type\":\"string\"},\"username\":{\"type\":\"string\"},\"x_files\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}}}},\"required\":[\"from\",\"content\"]},\"description\":\"List of messages from the channel history\"}},\"required\":[\"messages\"]},\n },\n \"fetchYoutubeCaptions\": {\n stepType: \"fetchYoutubeCaptions\",\n description: \"Retrieve the captions/transcript for a YouTube video.\",\n usageNotes: \"- Supports multiple languages via the language parameter.\\n- \\\"text\\\" export produces timestamped plain text; \\\"json\\\" export produces structured transcript data.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"YouTube video URL to fetch captions for\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Output format: \\\"text\\\" for timestamped plain text, \\\"json\\\" for structured transcript data\"},\"language\":{\"type\":\"string\",\"description\":\"Language code for the captions (e.g. \\\"en\\\")\"}},\"required\":[\"videoUrl\",\"exportType\",\"language\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"transcripts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Transcript text segment\"},\"start\":{\"type\":\"number\",\"description\":\"Start time of the segment in seconds\"}},\"required\":[\"text\",\"start\"]},\"description\":\"Parsed transcript segments with text and start timestamps\"}},\"required\":[\"transcripts\"]},\n },\n \"fetchYoutubeChannel\": {\n stepType: \"fetchYoutubeChannel\",\n description: \"Retrieve metadata and recent videos for a YouTube channel.\",\n usageNotes: \"- Accepts a YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID).\\n- Returns channel info and video listings as a JSON object.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"channelUrl\":{\"type\":\"string\",\"description\":\"YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID)\"}},\"required\":[\"channelUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"channel\":{\"type\":\"object\",\"description\":\"Channel metadata and video listings\"}},\"required\":[\"channel\"]},\n },\n \"fetchYoutubeComments\": {\n stepType: \"fetchYoutubeComments\",\n description: \"Retrieve comments for a YouTube video.\",\n usageNotes: \"- Paginates through comments (up to 5 pages).\\n- \\\"text\\\" export produces markdown-formatted text; \\\"json\\\" export produces structured comment data.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"YouTube video URL to fetch comments for\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Output format: \\\"text\\\" for markdown-formatted text, \\\"json\\\" for structured comment data\"},\"limitPages\":{\"type\":\"string\",\"description\":\"Maximum number of comment pages to fetch (1-5)\"}},\"required\":[\"videoUrl\",\"exportType\",\"limitPages\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"comments\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique comment identifier\"},\"link\":{\"type\":\"string\",\"description\":\"Direct URL to the comment\"},\"publishedDate\":{\"type\":\"string\",\"description\":\"Date the comment was published\"},\"text\":{\"type\":\"string\",\"description\":\"Text content of the comment\"},\"likes\":{\"type\":\"number\",\"description\":\"Number of likes on the comment\"},\"replies\":{\"type\":\"number\",\"description\":\"Number of replies to the comment\"},\"author\":{\"type\":\"string\",\"description\":\"Display name of the comment author\"},\"authorLink\":{\"type\":\"string\",\"description\":\"URL to the author's YouTube channel\"},\"authorImg\":{\"type\":\"string\",\"description\":\"URL of the author's profile image\"}},\"required\":[\"id\",\"link\",\"publishedDate\",\"text\",\"likes\",\"replies\",\"author\",\"authorLink\",\"authorImg\"]},\"description\":\"List of comments retrieved from the video\"}},\"required\":[\"comments\"]},\n },\n \"fetchYoutubeVideo\": {\n stepType: \"fetchYoutubeVideo\",\n description: \"Retrieve metadata for a YouTube video (title, description, stats, channel info).\",\n usageNotes: \"- Returns video metadata, channel info, and engagement stats.\\n- Video format data is excluded from the response.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"YouTube video URL to fetch metadata for\"}},\"required\":[\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"video\":{\"type\":\"object\",\"description\":\"Video metadata including title, description, stats, and channel info\"}},\"required\":[\"video\"]},\n },\n \"generateAsset\": {\n stepType: \"generatePdf\",\n description: \"Generate an HTML asset and export it as a webpage, PDF, or image\",\n usageNotes: \"- Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \\\"generatePdf\\\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\\n- The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\\n- If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \\\"source\\\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\\n- Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\\n- Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"The HTML or Markdown source template for the asset\"},\"sourceType\":{\"enum\":[\"html\",\"markdown\",\"spa\",\"raw\",\"dynamic\",\"customInterface\"],\"type\":\"string\",\"description\":\"Source type: html, markdown (auto-formatted), spa (single page app), raw (pre-generated HTML in a variable), dynamic (AI-generated from prompt), or customInterface\"},\"outputFormat\":{\"enum\":[\"pdf\",\"png\",\"html\",\"mp4\",\"openGraph\"],\"type\":\"string\",\"description\":\"The output format for the generated asset\"},\"pageSize\":{\"enum\":[\"full\",\"letter\",\"A4\",\"custom\"],\"type\":\"string\",\"description\":\"Page size for PDF, PNG, or MP4 output\"},\"testData\":{\"type\":\"object\",\"description\":\"Test data used for previewing the template with sample variable values\"},\"options\":{\"type\":\"object\",\"properties\":{\"pageWidthPx\":{\"type\":\"number\",\"description\":\"Custom page width in pixels (for custom pageSize)\"},\"pageHeightPx\":{\"type\":\"number\",\"description\":\"Custom page height in pixels (for custom pageSize)\"},\"pageOrientation\":{\"enum\":[\"portrait\",\"landscape\"],\"type\":\"string\",\"description\":\"Page orientation for the rendered output\"},\"rehostMedia\":{\"type\":\"boolean\",\"description\":\"Whether to re-host third-party images on the MindStudio CDN\"},\"videoDurationSeconds\":{\"type\":\"number\",\"description\":\"Duration in seconds for MP4 video output\"}},\"description\":\"Additional rendering options\"},\"spaSource\":{\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"Source code of the SPA (legacy, use files instead)\"},\"lastCompiledSource\":{\"type\":\"string\",\"description\":\"Last compiled source (cached)\"},\"files\":{\"type\":\"object\",\"description\":\"Multi-file SPA source\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Available route paths in the SPA\"},\"root\":{\"type\":\"string\",\"description\":\"Root URL of the SPA bundle\"},\"zipUrl\":{\"type\":\"string\",\"description\":\"URL of the zipped SPA bundle\"}},\"required\":[\"paths\",\"root\",\"zipUrl\"],\"description\":\"Single page app source configuration (advanced)\"},\"rawSource\":{\"type\":\"string\",\"description\":\"Raw HTML source stored in a variable, using handlebars syntax (e.g. {{myHtmlVariable}})\"},\"dynamicPrompt\":{\"type\":\"string\",\"description\":\"Prompt to generate the HTML dynamically when sourceType is \\\"dynamic\\\"\"},\"dynamicSourceModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model override for dynamic HTML generation. Leave undefined to use the default model\"},\"transitionControl\":{\"enum\":[\"default\",\"native\"],\"type\":\"string\",\"description\":\"Controls how the step transitions after displaying in foreground mode\"},\"shareControl\":{\"enum\":[\"default\",\"hidden\"],\"type\":\"string\",\"description\":\"Controls visibility of the share button on displayed assets\"},\"shareImageUrl\":{\"type\":\"string\",\"description\":\"URL of a custom Open Graph share image\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the asset will not appear in the user's asset history\"}},\"required\":[\"source\",\"sourceType\",\"outputFormat\",\"pageSize\",\"testData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"CDN URL of the generated asset (PDF, PNG, HTML, or MP4 depending on outputFormat)\"}},\"required\":[\"url\"]},\n },\n \"generateChart\": {\n stepType: \"generateChart\",\n description: \"Create a chart image using QuickChart (Chart.js) and return the URL.\",\n usageNotes: \"- The data field must be a Chart.js-compatible JSON object serialized as a string.\\n- Supported chart types: bar, line, pie.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"chart\":{\"type\":\"object\",\"properties\":{\"chartType\":{\"enum\":[\"bar\",\"line\",\"pie\"],\"type\":\"string\",\"description\":\"The type of chart to generate\"},\"data\":{\"type\":\"string\",\"description\":\"Chart.js-compatible JSON data serialized as a string\"},\"options\":{\"type\":\"object\",\"properties\":{\"width\":{\"type\":\"string\",\"description\":\"Image width in pixels (e.g. \\\"500\\\")\"},\"height\":{\"type\":\"string\",\"description\":\"Image height in pixels (e.g. \\\"300\\\")\"}},\"required\":[\"width\",\"height\"],\"description\":\"Image rendering options\"}},\"required\":[\"chartType\",\"data\",\"options\"],\"description\":\"Chart configuration including type, data, and rendering options\"}},\"required\":[\"chart\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"chartUrl\":{\"type\":\"string\",\"description\":\"URL of the generated chart image\"}},\"required\":[\"chartUrl\"]},\n },\n \"generateImage\": {\n stepType: \"generateImage\",\n description: \"Generate an image from a text prompt using an AI model.\",\n usageNotes: \"- Prompts should be descriptive but concise (roughly 3–6 sentences).\\n- Images are automatically hosted on a CDN.\\n- In foreground mode, the image is displayed to the user. In background mode, the URL is saved to a variable.\\n- When generateVariants is true with numVariants > 1, multiple images are generated in parallel.\\n- In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Text prompt describing the image to generate\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the image will not appear in the user's asset history\"},\"imageModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Image generation model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default image model if not specified\"},\"generateVariants\":{\"type\":\"boolean\",\"description\":\"Whether to generate multiple image variants in parallel\"},\"numVariants\":{\"type\":\"number\",\"description\":\"Number of variants to generate (max 10)\"},\"addWatermark\":{\"type\":\"boolean\",\"description\":\"Whether to add a MindStudio watermark to the generated image\"}},\"required\":[\"prompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"imageUrl\"]},\n },\n \"generateLipsync\": {\n stepType: \"generateLipsync\",\n description: \"Generate a lip sync video from provided audio and image.\",\n usageNotes: \"- In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the generated video will not appear in the user's asset history\"},\"addWatermark\":{\"type\":\"boolean\",\"description\":\"Whether to add a MindStudio watermark to the generated video\"},\"lipsyncModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default lipsync model if not specified\"}}},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"generateMusic\": {\n stepType: \"generateMusic\",\n description: \"Generate an audio file from provided instructions (text) using a music model.\",\n usageNotes: \"- The text field contains the instructions (prompt) for the music generation.\\n- In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The instructions (prompt) for the music generation\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the generated audio will not appear in the user's asset history\"},\"musicModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\"},\"config\":{\"type\":\"object\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default music model if not specified\"}},\"required\":[\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"generatePdf\": {\n stepType: \"generatePdf\",\n description: \"Generate an HTML asset and export it as a webpage, PDF, or image\",\n usageNotes: \"- Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \\\"generatePdf\\\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\\n- The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\\n- If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \\\"source\\\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\\n- Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\\n- Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"The HTML or Markdown source template for the asset\"},\"sourceType\":{\"enum\":[\"html\",\"markdown\",\"spa\",\"raw\",\"dynamic\",\"customInterface\"],\"type\":\"string\",\"description\":\"Source type: html, markdown (auto-formatted), spa (single page app), raw (pre-generated HTML in a variable), dynamic (AI-generated from prompt), or customInterface\"},\"outputFormat\":{\"enum\":[\"pdf\",\"png\",\"html\",\"mp4\",\"openGraph\"],\"type\":\"string\",\"description\":\"The output format for the generated asset\"},\"pageSize\":{\"enum\":[\"full\",\"letter\",\"A4\",\"custom\"],\"type\":\"string\",\"description\":\"Page size for PDF, PNG, or MP4 output\"},\"testData\":{\"type\":\"object\",\"description\":\"Test data used for previewing the template with sample variable values\"},\"options\":{\"type\":\"object\",\"properties\":{\"pageWidthPx\":{\"type\":\"number\",\"description\":\"Custom page width in pixels (for custom pageSize)\"},\"pageHeightPx\":{\"type\":\"number\",\"description\":\"Custom page height in pixels (for custom pageSize)\"},\"pageOrientation\":{\"enum\":[\"portrait\",\"landscape\"],\"type\":\"string\",\"description\":\"Page orientation for the rendered output\"},\"rehostMedia\":{\"type\":\"boolean\",\"description\":\"Whether to re-host third-party images on the MindStudio CDN\"},\"videoDurationSeconds\":{\"type\":\"number\",\"description\":\"Duration in seconds for MP4 video output\"}},\"description\":\"Additional rendering options\"},\"spaSource\":{\"type\":\"object\",\"properties\":{\"source\":{\"type\":\"string\",\"description\":\"Source code of the SPA (legacy, use files instead)\"},\"lastCompiledSource\":{\"type\":\"string\",\"description\":\"Last compiled source (cached)\"},\"files\":{\"type\":\"object\",\"description\":\"Multi-file SPA source\"},\"paths\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Available route paths in the SPA\"},\"root\":{\"type\":\"string\",\"description\":\"Root URL of the SPA bundle\"},\"zipUrl\":{\"type\":\"string\",\"description\":\"URL of the zipped SPA bundle\"}},\"required\":[\"paths\",\"root\",\"zipUrl\"],\"description\":\"Single page app source configuration (advanced)\"},\"rawSource\":{\"type\":\"string\",\"description\":\"Raw HTML source stored in a variable, using handlebars syntax (e.g. {{myHtmlVariable}})\"},\"dynamicPrompt\":{\"type\":\"string\",\"description\":\"Prompt to generate the HTML dynamically when sourceType is \\\"dynamic\\\"\"},\"dynamicSourceModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model override for dynamic HTML generation. Leave undefined to use the default model\"},\"transitionControl\":{\"enum\":[\"default\",\"native\"],\"type\":\"string\",\"description\":\"Controls how the step transitions after displaying in foreground mode\"},\"shareControl\":{\"enum\":[\"default\",\"hidden\"],\"type\":\"string\",\"description\":\"Controls visibility of the share button on displayed assets\"},\"shareImageUrl\":{\"type\":\"string\",\"description\":\"URL of a custom Open Graph share image\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the asset will not appear in the user's asset history\"}},\"required\":[\"source\",\"sourceType\",\"outputFormat\",\"pageSize\",\"testData\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"CDN URL of the generated asset (PDF, PNG, HTML, or MP4 depending on outputFormat)\"}},\"required\":[\"url\"]},\n },\n \"generateStaticVideoFromImage\": {\n stepType: \"generateStaticVideoFromImage\",\n description: \"Convert a static image to an MP4\",\n usageNotes: \"- Can use to create slides/intertitles/slates for video composition\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the source image to convert to video\"},\"duration\":{\"type\":\"string\",\"description\":\"Duration of the output video in seconds\"}},\"required\":[\"imageUrl\",\"duration\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the generated static video\"}},\"required\":[\"videoUrl\"]},\n },\n \"generateText\": {\n stepType: \"userMessage\",\n description: \"Send a message to an AI model and return the response, or echo a system message.\",\n usageNotes: \"- Source \\\"user\\\" sends the message to an LLM and returns the model's response.\\n- Source \\\"system\\\" echoes the message content directly (no AI call).\\n- Mode \\\"background\\\" saves the result to a variable. Mode \\\"foreground\\\" streams it to the user (not available in direct execution).\\n- Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The message to send (prompt for AI, or text for system echo)\"},\"source\":{\"enum\":[\"user\",\"system\"],\"type\":\"string\",\"description\":\"Message source: \\\"user\\\" sends to AI model, \\\"system\\\" echoes message content directly. Defaults to \\\"user\\\"\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model configuration override. Optional; uses the workflow's default model if not specified\"},\"structuredOutputType\":{\"enum\":[\"text\",\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format constraint for structured responses\"},\"structuredOutputExample\":{\"type\":\"string\",\"description\":\"Sample showing the desired output shape (for JSON/CSV formats). A TypeScript interface is also useful here for more complex types.\"},\"chatHistoryMode\":{\"enum\":[\"include\",\"exclude\"],\"type\":\"string\",\"description\":\"Whether to include or exclude prior chat history in the AI context\"}},\"required\":[\"message\"],\"description\":\"Configuration for the user message step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"The AI model's response or echoed system message content\"}},\"required\":[\"content\"]},\n },\n \"generateVideo\": {\n stepType: \"generateVideo\",\n description: \"Generate a video from a text prompt using an AI model.\",\n usageNotes: \"- Prompts should be descriptive but concise (roughly 3–6 sentences).\\n- Videos are automatically hosted on a CDN.\\n- In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\\n- When generateVariants is true with numVariants > 1, multiple videos are generated in parallel.\\n- In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"prompt\":{\"type\":\"string\",\"description\":\"Text prompt describing the video to generate\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"If true, the video will not appear in the user's asset history\"},\"videoModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Video generation model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default video model if not specified\"},\"generateVariants\":{\"type\":\"boolean\",\"description\":\"Whether to generate multiple video variants in parallel\"},\"numVariants\":{\"type\":\"number\",\"description\":\"Number of variants to generate (max 10)\"},\"addWatermark\":{\"type\":\"boolean\",\"description\":\"Whether to add a MindStudio watermark to the generated video\"}},\"required\":[\"prompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"videoUrl\"]},\n },\n \"getGmailAttachments\": {\n stepType: \"getGmailAttachments\",\n description: \"Download attachments from a Gmail email and re-host them on CDN.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Attachments are uploaded to CDN and returned as URLs.\\n- Attachments larger than 25MB are skipped.\\n- Use the message ID from Search Gmail Emails, List Recent Gmail Emails, or Get Gmail Email steps.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"getGmailDraft\": {\n stepType: \"getGmailDraft\",\n description: \"Retrieve a specific draft from Gmail by draft ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns the draft content including subject, recipients, sender, and body.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID to retrieve\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"draftId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID\"},\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email\"},\"from\":{\"type\":\"string\",\"description\":\"Sender email\"},\"body\":{\"type\":\"string\",\"description\":\"Draft body content\"}},\"required\":[\"draftId\",\"messageId\",\"subject\",\"to\",\"from\",\"body\"]},\n },\n \"getGmailEmail\": {\n stepType: \"getGmailEmail\",\n description: \"Retrieve a specific email from Gmail by message ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns the email subject, sender, recipient, date, body (plain text preferred, falls back to HTML), and labels.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID to retrieve\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject\"},\"from\":{\"type\":\"string\",\"description\":\"Sender email\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email\"},\"date\":{\"type\":\"string\",\"description\":\"Email date\"},\"body\":{\"type\":\"string\",\"description\":\"Email body content\"},\"labels\":{\"type\":\"string\",\"description\":\"Comma-separated label IDs\"}},\"required\":[\"messageId\",\"subject\",\"from\",\"to\",\"date\",\"body\",\"labels\"]},\n },\n \"getGmailUnreadCount\": {\n stepType: \"getGmailUnreadCount\",\n description: \"Get the number of unread emails in the connected Gmail inbox.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns the unread message count for the inbox label.\\n- This is a lightweight call that does not fetch any email content.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}}},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"getGoogleCalendarEvent\": {\n stepType: \"getGoogleCalendarEvent\",\n description: \"Retrieve a specific event from a Google Calendar by event ID.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID to retrieve\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"eventId\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"event\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"status\":{\"type\":\"string\",\"description\":\"Event status (e.g. \\\"confirmed\\\", \\\"tentative\\\", \\\"cancelled\\\")\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"},\"created\":{\"type\":\"string\",\"description\":\"Timestamp when the event was created\"},\"updated\":{\"type\":\"string\",\"description\":\"Timestamp when the event was last updated\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"organizer\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"start\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"end\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"attendees\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"responseStatus\":{\"type\":\"string\"}}}},{\"type\":\"null\"}]}},\"description\":\"The retrieved calendar event\"}},\"required\":[\"event\"]},\n },\n \"getGoogleDriveFile\": {\n stepType: \"getGoogleDriveFile\",\n description: \"Download a file from Google Drive and rehost it on the CDN. Returns a public CDN URL.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- Google-native files (Docs, Sheets, Slides) cannot be downloaded — use dedicated steps instead.\\n- Maximum file size: 200MB.\\n- The file is downloaded and re-uploaded to the CDN; the returned URL is publicly accessible.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"fileId\":{\"type\":\"string\",\"description\":\"Google Drive file ID\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"fileId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"CDN URL of the downloaded file\"},\"name\":{\"type\":\"string\",\"description\":\"Original file name\"},\"mimeType\":{\"type\":\"string\",\"description\":\"File MIME type\"},\"size\":{\"type\":\"number\",\"description\":\"File size in bytes\"}},\"required\":[\"url\",\"name\",\"mimeType\",\"size\"]},\n },\n \"getGoogleSheetInfo\": {\n stepType: \"getGoogleSheetInfo\",\n description: \"Get metadata about a Google Spreadsheet including sheet names, row counts, and column counts.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- Returns the spreadsheet title and a list of all sheets with their dimensions.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID or URL\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"documentId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Spreadsheet title\"},\"sheets\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"sheetId\":{\"type\":\"number\"},\"title\":{\"type\":\"string\"},\"rowCount\":{\"type\":\"number\"},\"columnCount\":{\"type\":\"number\"}},\"required\":[\"sheetId\",\"title\",\"rowCount\",\"columnCount\"]},\"description\":\"List of sheets with their properties\"}},\"required\":[\"title\",\"sheets\"]},\n },\n \"getMediaMetadata\": {\n stepType: \"getMediaMetadata\",\n description: \"Get info about a media file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mediaUrl\":{\"type\":\"string\",\"description\":\"URL of the audio or video file to analyze\"}},\"required\":[\"mediaUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"metadata\":{\"type\":\"string\",\"description\":\"JSON string containing the media file metadata\"}},\"required\":[\"metadata\"]},\n },\n \"httpRequest\": {\n stepType: \"httpRequest\",\n description: \"Make an HTTP request to an external endpoint and return the response.\",\n usageNotes: \"- Supports GET, POST, PATCH, DELETE, and PUT methods.\\n- Body can be raw JSON/text, URL-encoded form data, or multipart form data.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"The request URL\"},\"method\":{\"type\":\"string\",\"description\":\"HTTP method (GET, POST, PATCH, DELETE, or PUT)\"},\"headers\":{\"type\":\"object\",\"description\":\"Custom request headers as key-value pairs\"},\"queryParams\":{\"type\":\"object\",\"description\":\"Query string parameters as key-value pairs\"},\"body\":{\"type\":\"string\",\"description\":\"Raw request body (used for JSON or custom content types)\"},\"bodyItems\":{\"type\":\"object\",\"description\":\"Key-value body items (used for form data or URL-encoded content types)\"},\"contentType\":{\"enum\":[\"none\",\"application/json\",\"application/x-www-form-urlencoded\",\"multipart/form-data\",\"custom\"],\"type\":\"string\",\"description\":\"The content type for the request body\"},\"customContentType\":{\"type\":\"string\",\"description\":\"Custom Content-Type header value (used when contentType is \\\"custom\\\")\"},\"testData\":{\"type\":\"object\",\"description\":\"Test data for debug/preview mode\"}},\"required\":[\"url\",\"method\",\"headers\",\"queryParams\",\"body\",\"bodyItems\",\"contentType\",\"customContentType\"],\"description\":\"HTTP request configuration\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"ok\":{\"type\":\"boolean\",\"description\":\"Whether the HTTP response status code is in the 2xx range\"},\"status\":{\"type\":\"number\",\"description\":\"HTTP response status code\"},\"statusText\":{\"type\":\"string\",\"description\":\"HTTP response status text\"},\"response\":{\"type\":\"string\",\"description\":\"Response body as a string\"}},\"required\":[\"ok\",\"status\",\"statusText\",\"response\"]},\n },\n \"hubspotCreateCompany\": {\n stepType: \"hubspotCreateCompany\",\n description: \"Create a new company or update an existing one in HubSpot. Matches by domain.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- If a company with the given domain already exists, it is updated. Otherwise, a new one is created.\\n- Property values are type-checked against enabledProperties before being sent to HubSpot.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"company\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Company domain, used for matching existing companies\"},\"name\":{\"type\":\"string\",\"description\":\"Company name\"}},\"required\":[\"domain\",\"name\"],\"description\":\"Company data including domain, name, and additional properties\"},\"enabledProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"label\":{\"type\":\"string\",\"description\":\"Display label for the HubSpot property\"},\"value\":{\"type\":\"string\",\"description\":\"HubSpot property internal name\"},\"type\":{\"enum\":[\"string\",\"number\",\"bool\"],\"type\":\"string\",\"description\":\"Data type of the property value\"}},\"required\":[\"label\",\"value\",\"type\"]},\"description\":\"HubSpot properties enabled for this step, used for type validation\"}},\"required\":[\"company\",\"enabledProperties\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"companyId\":{\"type\":\"string\",\"description\":\"HubSpot company ID of the created or updated company\"}},\"required\":[\"companyId\"]},\n },\n \"hubspotCreateContact\": {\n stepType: \"hubspotCreateContact\",\n description: \"Create a new contact or update an existing one in HubSpot. Matches by email address.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- If a contact with the given email already exists, it is updated. Otherwise, a new one is created.\\n- If companyDomain is provided, the contact is associated with that company (creating the company if needed).\\n- Property values are type-checked against enabledProperties before being sent to HubSpot.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"contact\":{\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Contact email address, used for matching existing contacts\"},\"firstname\":{\"type\":\"string\",\"description\":\"Contact first name\"},\"lastname\":{\"type\":\"string\",\"description\":\"Contact last name\"}},\"required\":[\"email\",\"firstname\",\"lastname\"],\"description\":\"Contact data including email, first name, last name, and additional properties\"},\"enabledProperties\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"label\":{\"type\":\"string\",\"description\":\"Display label for the HubSpot property\"},\"value\":{\"type\":\"string\",\"description\":\"HubSpot property internal name\"},\"type\":{\"enum\":[\"string\",\"number\",\"bool\"],\"type\":\"string\",\"description\":\"Data type of the property value\"}},\"required\":[\"label\",\"value\",\"type\"]},\"description\":\"HubSpot properties enabled for this step, used for type validation\"},\"companyDomain\":{\"type\":\"string\",\"description\":\"Company domain to associate the contact with. Creates the company if it does not exist\"}},\"required\":[\"contact\",\"enabledProperties\",\"companyDomain\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"contactId\":{\"type\":\"string\",\"description\":\"HubSpot contact ID of the created or updated contact\"}},\"required\":[\"contactId\"]},\n },\n \"hubspotGetCompany\": {\n stepType: \"hubspotGetCompany\",\n description: \"Look up a HubSpot company by domain name or company ID.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- Returns null if the company is not found.\\n- When searching by domain, performs a search query then fetches the full company record.\\n- Use additionalProperties to request specific HubSpot properties beyond the defaults.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"searchBy\":{\"enum\":[\"domain\",\"id\"],\"type\":\"string\",\"description\":\"How to look up the company: by domain name or HubSpot company ID\"},\"companyDomain\":{\"type\":\"string\",\"description\":\"Domain to search by (used when searchBy is 'domain')\"},\"companyId\":{\"type\":\"string\",\"description\":\"HubSpot company ID (used when searchBy is 'id')\"},\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Extra HubSpot property names to include in the response beyond the defaults\"}},\"required\":[\"searchBy\",\"companyDomain\",\"companyId\",\"additionalProperties\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"company\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"archived\":{\"type\":\"boolean\"}},\"required\":[\"id\",\"properties\",\"createdAt\",\"updatedAt\",\"archived\"]},{\"type\":\"null\"}]}},\"required\":[\"company\"]},\n },\n \"hubspotGetContact\": {\n stepType: \"hubspotGetContact\",\n description: \"Look up a HubSpot contact by email address or contact ID.\",\n usageNotes: \"- Requires a HubSpot OAuth connection (connectionId).\\n- Returns null if the contact is not found.\\n- Use additionalProperties to request specific HubSpot properties beyond the defaults.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"HubSpot OAuth connection ID\"},\"searchBy\":{\"enum\":[\"email\",\"id\"],\"type\":\"string\",\"description\":\"How to look up the contact: by email address or HubSpot contact ID\"},\"contactEmail\":{\"type\":\"string\",\"description\":\"Email address to search by (used when searchBy is 'email')\"},\"contactId\":{\"type\":\"string\",\"description\":\"HubSpot contact ID (used when searchBy is 'id')\"},\"additionalProperties\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Extra HubSpot property names to include in the response beyond the defaults\"}},\"required\":[\"searchBy\",\"contactEmail\",\"contactId\",\"additionalProperties\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"contact\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"properties\":{\"type\":\"object\"},\"createdAt\":{\"type\":\"string\"},\"updatedAt\":{\"type\":\"string\"},\"archived\":{\"type\":\"boolean\"}},\"required\":[\"id\",\"properties\",\"createdAt\",\"updatedAt\",\"archived\"]},{\"type\":\"null\"}]}},\"required\":[\"contact\"]},\n },\n \"hunterApiCompanyEnrichment\": {\n stepType: \"hunterApiCompanyEnrichment\",\n description: \"Look up company information by domain using Hunter.io.\",\n usageNotes: \"- Returns company name, description, location, industry, size, technologies, and more.\\n- If the domain input is a full URL, the hostname is automatically extracted.\\n- Returns null if the company is not found.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain or URL to look up (e.g. \\\"example.com\\\")\"}},\"required\":[\"domain\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"country\":{\"type\":\"string\"},\"state\":{\"type\":\"string\"},\"city\":{\"type\":\"string\"},\"industry\":{\"type\":\"string\"},\"employees_range\":{\"type\":\"string\"},\"logo_url\":{\"type\":\"string\"},\"technologies\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"name\",\"domain\",\"description\",\"country\",\"state\",\"city\",\"industry\",\"employees_range\",\"logo_url\",\"technologies\"]},{\"type\":\"null\"}]}},\"required\":[\"data\"]},\n },\n \"hunterApiDomainSearch\": {\n stepType: \"hunterApiDomainSearch\",\n description: \"Search for email addresses associated with a domain using Hunter.io.\",\n usageNotes: \"- If the domain input is a full URL, the hostname is automatically extracted.\\n- Returns a list of email addresses found for the domain along with organization info.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain or URL to search for email addresses (e.g. \\\"example.com\\\")\"}},\"required\":[\"domain\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"The searched domain\"},\"disposable\":{\"type\":\"boolean\",\"description\":\"Whether the domain uses disposable email addresses\"},\"webmail\":{\"type\":\"boolean\",\"description\":\"Whether the domain is a webmail provider\"},\"accept_all\":{\"type\":\"boolean\",\"description\":\"Whether the domain accepts all email addresses\"},\"pattern\":{\"type\":\"string\",\"description\":\"Common email pattern for the domain (e.g. \\\"{first}.{last}\\\")\"},\"organization\":{\"type\":\"string\",\"description\":\"Organization name associated with the domain\"},\"country\":{\"type\":\"string\",\"description\":\"Country of the organization\"},\"state\":{\"type\":\"string\",\"description\":\"State or region of the organization\"},\"emails\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"value\":{\"type\":\"string\",\"description\":\"Email address\"},\"type\":{\"type\":\"string\",\"description\":\"Email type (e.g. \\\"personal\\\", \\\"generic\\\")\"},\"confidence\":{\"type\":\"number\",\"description\":\"Confidence score (0-100)\"},\"first_name\":{\"type\":\"string\",\"description\":\"Contact first name\"},\"last_name\":{\"type\":\"string\",\"description\":\"Contact last name\"},\"position\":{\"type\":\"string\",\"description\":\"Job title or position\"},\"seniority\":{\"type\":\"string\",\"description\":\"Seniority level\"},\"department\":{\"type\":\"string\",\"description\":\"Department within the organization\"},\"linkedin\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL\"},\"twitter\":{\"type\":\"string\",\"description\":\"Twitter handle\"},\"phone_number\":{\"type\":\"string\",\"description\":\"Phone number\"}},\"required\":[\"value\",\"type\",\"confidence\",\"first_name\",\"last_name\",\"position\",\"seniority\",\"department\",\"linkedin\",\"twitter\",\"phone_number\"]},\"description\":\"List of email addresses found for the domain\"},\"linked_domains\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Other domains linked to this organization\"}},\"required\":[\"domain\",\"disposable\",\"webmail\",\"accept_all\",\"pattern\",\"organization\",\"country\",\"state\",\"emails\",\"linked_domains\"],\"description\":\"Domain search results including emails and organization info\"}},\"required\":[\"data\"]},\n },\n \"hunterApiEmailFinder\": {\n stepType: \"hunterApiEmailFinder\",\n description: \"Find an email address for a specific person at a domain using Hunter.io.\",\n usageNotes: \"- Requires a first name, last name, and domain.\\n- If the domain input is a full URL, the hostname is automatically extracted.\\n- Returns the most likely email address with a confidence score.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain to search (e.g. \\\"example.com\\\"). Full URLs are also accepted\"},\"firstName\":{\"type\":\"string\",\"description\":\"Person's first name\"},\"lastName\":{\"type\":\"string\",\"description\":\"Person's last name\"}},\"required\":[\"domain\",\"firstName\",\"lastName\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"first_name\":{\"type\":\"string\",\"description\":\"Person's first name\"},\"last_name\":{\"type\":\"string\",\"description\":\"Person's last name\"},\"email\":{\"type\":\"string\",\"description\":\"The found email address\"},\"score\":{\"type\":\"number\",\"description\":\"Confidence score (0-100)\"},\"domain\":{\"type\":\"string\",\"description\":\"Domain searched\"},\"accept_all\":{\"type\":\"boolean\",\"description\":\"Whether the domain accepts all email addresses\"},\"position\":{\"type\":\"string\",\"description\":\"Job title or position\"},\"twitter\":{\"type\":\"string\",\"description\":\"Twitter handle\"},\"linkedin_url\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL\"},\"phone_number\":{\"type\":\"string\",\"description\":\"Phone number\"},\"company\":{\"type\":\"string\",\"description\":\"Company name\"},\"sources\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain where the email was found\"},\"uri\":{\"type\":\"string\",\"description\":\"URI of the page where the email was found\"},\"extracted_on\":{\"type\":\"string\",\"description\":\"Date when the email was extracted\"}},\"required\":[\"domain\",\"uri\",\"extracted_on\"]},\"description\":\"Sources where the email was found\"}},\"required\":[\"first_name\",\"last_name\",\"email\",\"score\",\"domain\",\"accept_all\",\"position\",\"twitter\",\"linkedin_url\",\"phone_number\",\"company\",\"sources\"],\"description\":\"Email finder results including the found email and confidence score\"}},\"required\":[\"data\"]},\n },\n \"hunterApiEmailVerification\": {\n stepType: \"hunterApiEmailVerification\",\n description: \"Verify whether an email address is valid and deliverable using Hunter.io.\",\n usageNotes: \"- Checks email format, MX records, SMTP server, and mailbox deliverability.\\n- Returns a status (\\\"valid\\\", \\\"invalid\\\", \\\"accept_all\\\", \\\"webmail\\\", \\\"disposable\\\", \\\"unknown\\\") and a score.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Email address to verify\"}},\"required\":[\"email\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"properties\":{\"status\":{\"type\":\"string\",\"description\":\"Verification status (e.g. \\\"valid\\\", \\\"invalid\\\", \\\"accept_all\\\", \\\"webmail\\\", \\\"disposable\\\", \\\"unknown\\\")\"},\"result\":{\"type\":\"string\",\"description\":\"Deliverability result\"},\"score\":{\"type\":\"number\",\"description\":\"Confidence score (0-100)\"},\"email\":{\"type\":\"string\",\"description\":\"The verified email address\"},\"regexp\":{\"type\":\"boolean\",\"description\":\"Whether the email matches a valid format\"},\"gibberish\":{\"type\":\"boolean\",\"description\":\"Whether the email appears to be gibberish\"},\"disposable\":{\"type\":\"boolean\",\"description\":\"Whether the email uses a disposable email service\"},\"webmail\":{\"type\":\"boolean\",\"description\":\"Whether the email is from a webmail provider\"},\"mx_records\":{\"type\":\"boolean\",\"description\":\"Whether MX records exist for the domain\"},\"smtp_server\":{\"type\":\"boolean\",\"description\":\"Whether the SMTP server is reachable\"},\"smtp_check\":{\"type\":\"boolean\",\"description\":\"Whether the SMTP mailbox check passed\"},\"accept_all\":{\"type\":\"boolean\",\"description\":\"Whether the domain accepts all email addresses\"},\"block\":{\"type\":\"boolean\",\"description\":\"Whether the email is blocked\"},\"sources\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"domain\":{\"type\":\"string\",\"description\":\"Domain where the email was found\"},\"uri\":{\"type\":\"string\",\"description\":\"URI of the page where the email was found\"},\"extracted_on\":{\"type\":\"string\",\"description\":\"Date when the email was extracted\"}},\"required\":[\"domain\",\"uri\",\"extracted_on\"]},\"description\":\"Sources where the email was found\"}},\"required\":[\"status\",\"result\",\"score\",\"email\",\"regexp\",\"gibberish\",\"disposable\",\"webmail\",\"mx_records\",\"smtp_server\",\"smtp_check\",\"accept_all\",\"block\",\"sources\"],\"description\":\"Email verification results including status, deliverability, and confidence score\"}},\"required\":[\"data\"]},\n },\n \"hunterApiPersonEnrichment\": {\n stepType: \"hunterApiPersonEnrichment\",\n description: \"Look up professional information about a person by their email address using Hunter.io.\",\n usageNotes: \"- Returns name, job title, social profiles, and company information.\\n- If the person is not found, returns an object with an error message instead of throwing.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"email\":{\"type\":\"string\",\"description\":\"Email address to look up\"}},\"required\":[\"email\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"first_name\":{\"type\":\"string\"},\"last_name\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"position\":{\"type\":\"string\"},\"seniority\":{\"type\":\"string\"},\"department\":{\"type\":\"string\"},\"linkedin_url\":{\"type\":\"string\"},\"twitter\":{\"type\":\"string\"},\"phone_number\":{\"type\":\"string\"},\"company\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\"},\"domain\":{\"type\":\"string\"},\"industry\":{\"type\":\"string\"}},\"required\":[\"name\",\"domain\",\"industry\"]},{\"type\":\"null\"}]}},\"required\":[\"first_name\",\"last_name\",\"email\",\"position\",\"seniority\",\"department\",\"linkedin_url\",\"twitter\",\"phone_number\",\"company\"]},{\"type\":\"object\",\"properties\":{\"error\":{\"type\":\"string\"}},\"required\":[\"error\"]}]}},\"required\":[\"data\"]},\n },\n \"imageFaceSwap\": {\n stepType: \"imageFaceSwap\",\n description: \"Replace a face in an image with a face from another image using AI.\",\n usageNotes: \"- Requires both a target image and a face source image.\\n- Output is re-hosted on the CDN as a PNG.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the target image containing the face to replace\"},\"faceImageUrl\":{\"type\":\"string\",\"description\":\"URL of the image containing the replacement face\"},\"engine\":{\"type\":\"string\",\"description\":\"Face swap engine to use\"}},\"required\":[\"imageUrl\",\"faceImageUrl\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the face-swapped image (PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"imageRemoveWatermark\": {\n stepType: \"imageRemoveWatermark\",\n description: \"Remove watermarks from an image using AI.\",\n usageNotes: \"- Output is re-hosted on the CDN as a PNG.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to remove the watermark from\"},\"engine\":{\"type\":\"string\",\"description\":\"Watermark removal engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history\"}},\"required\":[\"imageUrl\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the processed image with watermark removed (PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"insertVideoClips\": {\n stepType: \"insertVideoClips\",\n description: \"Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"baseVideoUrl\":{\"type\":\"string\",\"description\":\"URL of the base video to insert clips into\"},\"overlayVideos\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the overlay video clip\"},\"startTimeSec\":{\"type\":\"number\",\"description\":\"Timecode in seconds at which to insert this clip\"}},\"required\":[\"videoUrl\",\"startTimeSec\"]},\"description\":\"Array of overlay clips to insert at specified timecodes\"},\"transition\":{\"type\":\"string\",\"description\":\"Optional xfade transition effect name between clips\"},\"transitionDuration\":{\"type\":\"number\",\"description\":\"Duration of the transition in seconds\"},\"useOverlayAudio\":{\"type\":\"boolean\",\"description\":\"When true, uses audio from the overlay clips instead of the base video audio during inserts\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"baseVideoUrl\",\"overlayVideos\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with clips inserted\"}},\"required\":[\"videoUrl\"]},\n },\n \"listDataSources\": {\n stepType: \"listDataSources\",\n description: \"List all data sources for the current app.\",\n usageNotes: \"- Returns metadata for every data source associated with the current app version.\\n- Each entry includes the data source ID, name, description, status, and document list.\",\n inputSchema: {\"type\":\"object\"},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"listGmailDrafts\": {\n stepType: \"listGmailDrafts\",\n description: \"List drafts in the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns up to 50 drafts (default 10).\\n- The variable receives text or JSON depending on exportType.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"limit\":{\"type\":\"string\",\"description\":\"Max drafts to return (default: 10, max: 50)\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"}},\"required\":[\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"drafts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID\"},\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email\"},\"snippet\":{\"type\":\"string\",\"description\":\"Short preview text\"}},\"required\":[\"draftId\",\"messageId\",\"subject\",\"to\",\"snippet\"]},\"description\":\"List of draft summaries\"}},\"required\":[\"drafts\"]},\n },\n \"listGmailLabels\": {\n stepType: \"listGmailLabels\",\n description: \"List all labels in the connected Gmail account. Use these label IDs or names with the Update Gmail Labels step.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns both system labels (INBOX, SENT, TRASH, etc.) and user-created labels.\\n- Label type is \\\"system\\\" for built-in labels or \\\"user\\\" for custom labels.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}}},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"listGoogleCalendarEvents\": {\n stepType: \"listGoogleCalendarEvents\",\n description: \"List upcoming events from a Google Calendar, ordered by start time.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Only returns future events (timeMin = now).\\n- The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns structured events.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of events to return (default: 10)\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"limit\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"status\":{\"type\":\"string\",\"description\":\"Event status (e.g. \\\"confirmed\\\", \\\"tentative\\\", \\\"cancelled\\\")\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"},\"created\":{\"type\":\"string\",\"description\":\"Timestamp when the event was created\"},\"updated\":{\"type\":\"string\",\"description\":\"Timestamp when the event was last updated\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"organizer\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"start\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"end\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"attendees\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"responseStatus\":{\"type\":\"string\"}}}},{\"type\":\"null\"}]}}},\"description\":\"List of upcoming calendar events ordered by start time\"}},\"required\":[\"events\"]},\n },\n \"listGoogleDriveFiles\": {\n stepType: \"listGoogleDriveFiles\",\n description: \"List files in a Google Drive folder.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- If folderId is omitted, lists files in the root folder.\\n- Returns file metadata including name, type, size, and links.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"folderId\":{\"type\":\"string\",\"description\":\"Google Drive folder ID (defaults to root)\"},\"limit\":{\"type\":\"number\",\"description\":\"Max files to return (default: 20)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"}},\"required\":[\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"mimeType\":{\"type\":\"string\"},\"size\":{\"type\":\"string\"},\"webViewLink\":{\"type\":\"string\"},\"createdTime\":{\"type\":\"string\"},\"modifiedTime\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"mimeType\",\"size\",\"webViewLink\",\"createdTime\",\"modifiedTime\"]},\"description\":\"List of files in the folder\"}},\"required\":[\"files\"]},\n },\n \"listRecentGmailEmails\": {\n stepType: \"listRecentGmailEmails\",\n description: \"List recent emails from the connected Gmail inbox.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Returns up to 100 emails (default 5), ordered by most recent first.\\n- Functionally equivalent to Search Gmail Emails with an \\\"in:inbox\\\" query.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"limit\":{\"type\":\"string\",\"description\":\"Maximum number of emails to return (1-100, default: 5)\"}},\"required\":[\"exportType\",\"limit\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"logic\": {\n stepType: \"logic\",\n description: \"Route execution to different branches based on AI evaluation, comparison operators, or workflow jumps.\",\n usageNotes: \"- Supports two modes: \\\"ai\\\" (default) uses an AI model to pick the most accurate statement; \\\"comparison\\\" uses operator-based checks.\\n- In AI mode, the model picks the most accurate statement from the list. All possible cases must be specified.\\n- In comparison mode, the context is the left operand and each case's condition is the right operand. First matching case wins. Use operator \\\"default\\\" as a fallback.\\n- Requires at least two cases.\\n- Each case can transition to a step in the current workflow (destinationStepId) or jump to another workflow (destinationWorkflowId).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"ai\",\"comparison\"],\"type\":\"string\",\"description\":\"Evaluation mode: 'ai' for LLM-based, 'comparison' for operator-based. Default: 'ai'\"},\"context\":{\"type\":\"string\",\"description\":\"AI mode: prompt context. Comparison mode: left operand (resolved via variables).\"},\"cases\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique case identifier\"},\"condition\":{\"type\":\"string\",\"description\":\"AI mode: statement to evaluate. Comparison mode: right operand value.\"},\"operator\":{\"enum\":[\"eq\",\"neq\",\"gt\",\"lt\",\"gte\",\"lte\",\"exists\",\"not_exists\",\"contains\",\"not_contains\",\"default\"],\"type\":\"string\",\"description\":\"Comparison operator (comparison mode only)\"},\"destinationStepId\":{\"type\":\"string\",\"description\":\"Step to transition to if this case wins (workflow mode only)\"},\"destinationWorkflowId\":{\"type\":\"string\",\"description\":\"Workflow to jump to if this case wins (uses that workflow's initial step)\"}},\"required\":[\"id\",\"condition\"]},{\"type\":\"string\"}]},\"description\":\"List of conditions to evaluate (objects for managed UIs, strings for code)\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Optional model settings override; uses the organization default if not specified (AI mode only)\"}},\"required\":[\"context\",\"cases\"],\"description\":\"Configuration for the router step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"selectedCase\":{\"type\":\"number\",\"description\":\"The index of the winning case\"}},\"required\":[\"selectedCase\"]},\n },\n \"makeDotComRunScenario\": {\n stepType: \"makeDotComRunScenario\",\n description: \"Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\",\n usageNotes: \"- The webhook URL must be configured in your Make.com scenario.\\n- Input key-value pairs are sent as JSON in the POST body.\\n- Response format depends on the Make.com scenario configuration.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"webhookUrl\":{\"type\":\"string\",\"description\":\"Make.com webhook URL for the scenario\"},\"input\":{\"type\":\"object\",\"description\":\"Key-value pairs to send as the JSON POST body\"}},\"required\":[\"webhookUrl\",\"input\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Response from the Make.com scenario (JSON or string depending on scenario configuration)\"}},\"required\":[\"data\"]},\n },\n \"mergeAudio\": {\n stepType: \"mergeAudio\",\n description: \"Merge one or more clips into a single audio file.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"mp3Urls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"URLs of the MP3 audio clips to merge in order\"},\"fileMetadata\":{\"type\":\"object\",\"description\":\"FFmpeg MP3 metadata key-value pairs to embed in the output file\"},\"albumArtUrl\":{\"type\":\"string\",\"description\":\"URL of an image to embed as album art in the output file\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"mp3Urls\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the merged audio file\"}},\"required\":[\"audioUrl\"]},\n },\n \"mergeVideos\": {\n stepType: \"mergeVideos\",\n description: \"Merge one or more clips into a single video.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"URLs of the video clips to merge in order\"},\"transition\":{\"type\":\"string\",\"description\":\"Optional xfade transition effect name\"},\"transitionDuration\":{\"type\":\"number\",\"description\":\"Duration of the transition in seconds\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrls\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the merged video\"}},\"required\":[\"videoUrl\"]},\n },\n \"mixAudioIntoVideo\": {\n stepType: \"mixAudioIntoVideo\",\n description: \"Mix an audio track into a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the audio track to mix into the video\"},\"options\":{\"type\":\"object\",\"properties\":{\"keepVideoAudio\":{\"type\":\"boolean\",\"description\":\"When true, preserves the original video audio alongside the new track. Defaults to false.\"},\"audioGainDb\":{\"type\":\"number\",\"description\":\"Volume adjustment for the new audio track in decibels. Defaults to 0.\"},\"videoGainDb\":{\"type\":\"number\",\"description\":\"Volume adjustment for the existing video audio in decibels. Defaults to 0.\"},\"loopAudio\":{\"type\":\"boolean\",\"description\":\"When true, loops the audio track to match the video duration. Defaults to false.\"}},\"description\":\"Audio mixing options\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"audioUrl\",\"options\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with the mixed audio track\"}},\"required\":[\"videoUrl\"]},\n },\n \"muteVideo\": {\n stepType: \"muteVideo\",\n description: \"Mute a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to mute\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the muted video\"}},\"required\":[\"videoUrl\"]},\n },\n \"n8nRunNode\": {\n stepType: \"n8nRunNode\",\n description: \"Trigger an n8n workflow node via webhook and return the response.\",\n usageNotes: \"- The webhook URL must be configured in your n8n workflow.\\n- Supports GET and POST methods with optional Basic authentication.\\n- For GET requests, input values are sent as query parameters. For POST, they are sent as JSON body.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"method\":{\"type\":\"string\",\"description\":\"HTTP method to use (GET or POST)\"},\"authentication\":{\"enum\":[\"none\",\"basic\",\"string\"],\"type\":\"string\",\"description\":\"Authentication type for the webhook request\"},\"user\":{\"type\":\"string\",\"description\":\"Username for Basic authentication\"},\"password\":{\"type\":\"string\",\"description\":\"Password for Basic authentication\"},\"webhookUrl\":{\"type\":\"string\",\"description\":\"n8n webhook URL for the workflow node\"},\"input\":{\"type\":\"object\",\"description\":\"Key-value pairs sent as query params (GET) or JSON body (POST)\"}},\"required\":[\"method\",\"authentication\",\"user\",\"password\",\"webhookUrl\",\"input\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Response from the n8n node (JSON or string depending on node configuration)\"}},\"required\":[\"data\"]},\n },\n \"notionCreatePage\": {\n stepType: \"notionCreatePage\",\n description: \"Create a new page in Notion as a child of an existing page.\",\n usageNotes: \"- Requires a Notion OAuth connection (connectionId).\\n- Content is provided as markdown and converted to Notion blocks (headings, paragraphs, lists, code, quotes).\\n- The page is created as a child of the specified parent page (pageId).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Parent page ID to create the new page under\"},\"content\":{\"type\":\"string\",\"description\":\"Page content in markdown format\"},\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Notion OAuth connection ID\"}},\"required\":[\"pageId\",\"content\",\"title\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Notion page ID of the created page\"},\"pageUrl\":{\"type\":\"string\",\"description\":\"URL to view the page in Notion\"}},\"required\":[\"pageId\",\"pageUrl\"]},\n },\n \"notionUpdatePage\": {\n stepType: \"notionUpdatePage\",\n description: \"Update the content of an existing Notion page.\",\n usageNotes: \"- Requires a Notion OAuth connection (connectionId).\\n- Content is provided as markdown and converted to Notion blocks.\\n- \\\"append\\\" mode adds content to the end of the page. \\\"overwrite\\\" mode deletes all existing blocks first.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Notion page ID to update\"},\"content\":{\"type\":\"string\",\"description\":\"New content in markdown format\"},\"mode\":{\"enum\":[\"append\",\"overwrite\"],\"type\":\"string\",\"description\":\"How to apply the content: 'append' adds to end, 'overwrite' replaces all existing content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Notion OAuth connection ID\"}},\"required\":[\"pageId\",\"content\",\"mode\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"pageId\":{\"type\":\"string\",\"description\":\"Notion page ID of the updated page\"},\"pageUrl\":{\"type\":\"string\",\"description\":\"URL to view the page in Notion\"}},\"required\":[\"pageId\",\"pageUrl\"]},\n },\n \"peopleSearch\": {\n stepType: \"peopleSearch\",\n description: \"Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\",\n usageNotes: \"- Can use a natural language \\\"smartQuery\\\" which is converted to Apollo search parameters by an AI model.\\n- Advanced params can override or supplement the smart query results.\\n- Optionally enriches returned people and/or their organizations for additional detail.\\n- Results are paginated. Use limit and page to control the result window.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"smartQuery\":{\"type\":\"string\",\"description\":\"Natural language search query (e.g. \\\"marketing directors at SaaS companies in NYC\\\")\"},\"enrichPeople\":{\"type\":\"boolean\",\"description\":\"Whether to enrich each result with full contact details\"},\"enrichOrganizations\":{\"type\":\"boolean\",\"description\":\"Whether to enrich each result with full company details\"},\"limit\":{\"type\":\"string\",\"description\":\"Maximum number of results to return\"},\"page\":{\"type\":\"string\",\"description\":\"Page number for pagination\"},\"params\":{\"type\":\"object\",\"properties\":{\"personTitles\":{\"type\":\"string\",\"description\":\"Job titles to search for (comma-separated)\"},\"includeSimilarTitles\":{\"type\":\"string\",\"description\":\"Whether to include similar/related job titles\"},\"qKeywords\":{\"type\":\"string\",\"description\":\"Keywords to search for in person profiles\"},\"personLocations\":{\"type\":\"string\",\"description\":\"Geographic locations of people (comma-separated)\"},\"personSeniorities\":{\"type\":\"string\",\"description\":\"Seniority levels to filter by (comma-separated)\"},\"organizationLocations\":{\"type\":\"string\",\"description\":\"Geographic locations of organizations (comma-separated)\"},\"qOrganizationDomainsList\":{\"type\":\"string\",\"description\":\"Organization domains to filter by (comma-separated)\"},\"contactEmailStatus\":{\"type\":\"string\",\"description\":\"Email verification status filter\"},\"organizationNumEmployeesRanges\":{\"type\":\"string\",\"description\":\"Employee count ranges as semicolon-separated pairs (e.g. \\\"1,10; 250,500\\\")\"},\"revenueRangeMin\":{\"type\":\"string\",\"description\":\"Minimum annual revenue filter\"},\"revenueRangeMax\":{\"type\":\"string\",\"description\":\"Maximum annual revenue filter\"},\"currentlyUsingAllOfTechnologyUids\":{\"type\":\"string\",\"description\":\"Technology UIDs the organization must use (all required)\"},\"currentlyUsingAnyOfTechnologyUids\":{\"type\":\"string\",\"description\":\"Technology UIDs the organization uses (any match)\"},\"currentlyNotUsingAnyOfTechnologyUids\":{\"type\":\"string\",\"description\":\"Technology UIDs the organization must not use\"}},\"required\":[\"personTitles\",\"includeSimilarTitles\",\"qKeywords\",\"personLocations\",\"personSeniorities\",\"organizationLocations\",\"qOrganizationDomainsList\",\"contactEmailStatus\",\"organizationNumEmployeesRanges\",\"revenueRangeMin\",\"revenueRangeMax\",\"currentlyUsingAllOfTechnologyUids\",\"currentlyUsingAnyOfTechnologyUids\",\"currentlyNotUsingAnyOfTechnologyUids\"],\"description\":\"Advanced search filter parameters\"}},\"required\":[\"smartQuery\",\"enrichPeople\",\"enrichOrganizations\",\"limit\",\"page\",\"params\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"description\":\"Apollo search results with matched people and optionally enriched data\"}},\"required\":[\"results\"]},\n },\n \"postToLinkedIn\": {\n stepType: \"postToLinkedIn\",\n description: \"Create a post on LinkedIn from the connected account.\",\n usageNotes: \"- Requires a LinkedIn OAuth connection (connectionId).\\n- Supports text posts, image posts, and video posts.\\n- Visibility controls who can see the post.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The text content of the LinkedIn post\"},\"visibility\":{\"enum\":[\"PUBLIC\",\"CONNECTIONS\"],\"type\":\"string\",\"description\":\"Who can see the post: \\\"PUBLIC\\\" or \\\"CONNECTIONS\\\"\"},\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of a video to attach to the post\"},\"descriptionText\":{\"type\":\"string\",\"description\":\"Description text for link/media attachments\"},\"titleText\":{\"type\":\"string\",\"description\":\"Title text for link/media attachments\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of an image to attach to the post\"},\"connectionId\":{\"type\":\"string\",\"description\":\"LinkedIn OAuth connection ID\"}},\"required\":[\"message\",\"visibility\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"postToSlackChannel\": {\n stepType: \"postToSlackChannel\",\n description: \"Send a message to a Slack channel via a connected bot.\",\n usageNotes: \"- The user is responsible for connecting their Slack workspace and selecting the channel\\n- Supports both simple text messages and slack blocks messages\\n- Text messages can use limited markdown (slack-only fomatting—e.g., headers are just rendered as bold)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"channelId\":{\"type\":\"string\",\"description\":\"Slack channel ID (leave empty to allow user to select a channel)\"},\"messageType\":{\"enum\":[\"string\",\"blocks\"],\"type\":\"string\",\"description\":\"Message format: \\\"string\\\" for plain text/markdown, \\\"blocks\\\" for Slack Block Kit JSON\"},\"message\":{\"type\":\"string\",\"description\":\"Message content (plain text/markdown for \\\"string\\\" type, or JSON for \\\"blocks\\\" type)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Slack OAuth connection ID (leave empty to allow user to select)\"}},\"required\":[\"channelId\",\"messageType\",\"message\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"postToX\": {\n stepType: \"postToX\",\n description: \"Create a post on X (Twitter) from the connected account.\",\n usageNotes: \"- Requires an X OAuth connection (connectionId).\\n- Posts are plain text. Maximum 280 characters.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The text content of the post (max 280 characters)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"X (Twitter) OAuth connection ID\"}},\"required\":[\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"postToZapier\": {\n stepType: \"postToZapier\",\n description: \"Send data to a Zapier Zap via webhook and return the response.\",\n usageNotes: \"- The webhook URL must be configured in the Zapier Zap settings\\n- Input keys and values are sent as the JSON body of the POST request\\n- The webhook response (JSON or plain text) is returned as the output\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"webhookUrl\":{\"type\":\"string\",\"description\":\"Zapier webhook URL to send data to\"},\"input\":{\"type\":\"object\",\"description\":\"Key-value pairs to send as the JSON POST body\"}},\"required\":[\"webhookUrl\",\"input\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Parsed webhook response from Zapier (JSON object, array, or string)\"}},\"required\":[\"data\"]},\n },\n \"queryDataSource\": {\n stepType: \"queryDataSource\",\n description: \"Search a vector data source (RAG) and return relevant document chunks.\",\n usageNotes: \"- Queries a vectorized data source and returns the most relevant chunks.\\n- Useful for retrieval-augmented generation (RAG) workflows.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the vector data source to query\"},\"query\":{\"type\":\"string\",\"description\":\"The search query to run against the data source\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of chunks to return (recommended 1-3)\"}},\"required\":[\"dataSourceId\",\"query\",\"maxResults\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"All matching chunks joined with newlines\"},\"chunks\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Individual matching text chunks from the data source\"},\"query\":{\"type\":\"string\",\"description\":\"The resolved search query that was executed\"},\"citations\":{\"type\":\"array\",\"items\":{},\"description\":\"Source citations for the matched chunks\"},\"latencyMs\":{\"type\":\"number\",\"description\":\"Query execution time in milliseconds\"}},\"required\":[\"text\",\"chunks\",\"query\",\"citations\",\"latencyMs\"]},\n },\n \"queryExternalDatabase\": {\n stepType: \"queryExternalDatabase\",\n description: \"Execute a SQL query against an external database connected to the workspace.\",\n usageNotes: \"- Requires a database connection configured in the workspace.\\n- Supports PostgreSQL (including Supabase), MySQL, and MSSQL.\\n- Results can be returned as JSON or CSV.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Database connection ID configured in the workspace\"},\"query\":{\"type\":\"string\",\"description\":\"SQL query to execute (supports variable interpolation)\"},\"outputFormat\":{\"enum\":[\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format for the result variable\"}},\"required\":[\"query\",\"outputFormat\"],\"description\":\"Configuration for the external database query step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"Query result rows (array of objects for JSON, CSV string for CSV format)\"}},\"required\":[\"data\"]},\n },\n \"redactPII\": {\n stepType: \"redactPII\",\n description: \"Replace personally identifiable information in text with placeholders using Microsoft Presidio.\",\n usageNotes: \"- PII is replaced with entity type placeholders (e.g. \\\"Call me at <PHONE_NUMBER>\\\").\\n- If entities is empty, returns empty text immediately without processing.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"input\":{\"type\":\"string\",\"description\":\"Text to redact PII from\"},\"language\":{\"type\":\"string\",\"description\":\"Language code of the input text (e.g. \\\"en\\\")\"},\"entities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"PII entity types to redact (e.g. [\\\"PHONE_NUMBER\\\", \\\"EMAIL_ADDRESS\\\"]). Empty array means nothing is redacted.\"}},\"required\":[\"input\",\"language\",\"entities\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The input text with detected PII replaced by entity type placeholders (e.g. \\\"<PHONE_NUMBER>\\\")\"}},\"required\":[\"text\"]},\n },\n \"removeBackgroundFromImage\": {\n stepType: \"removeBackgroundFromImage\",\n description: \"Remove the background from an image using AI, producing a transparent PNG.\",\n usageNotes: \"- Uses the Bria background removal model via fal.ai.\\n- Output is re-hosted on the CDN as a PNG with transparency.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the source image to remove the background from\"}},\"required\":[\"imageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the image with background removed (transparent PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"replyToGmailEmail\": {\n stepType: \"replyToGmailEmail\",\n description: \"Reply to an existing email in Gmail. The reply is threaded under the original message.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose and readonly scopes.\\n- The reply is sent to the original sender and threaded under the original message.\\n- messageType controls the body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\".\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID to reply to\"},\"message\":{\"type\":\"string\",\"description\":\"Reply body content\"},\"messageType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageId\",\"message\",\"messageType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID of the sent reply\"}},\"required\":[\"messageId\"]},\n },\n \"resizeVideo\": {\n stepType: \"resizeVideo\",\n description: \"Resize a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to resize\"},\"mode\":{\"enum\":[\"fit\",\"exact\"],\"type\":\"string\",\"description\":\"Resize mode: 'fit' scales within max dimensions, 'exact' forces exact dimensions\"},\"maxWidth\":{\"type\":\"number\",\"description\":\"Maximum width in pixels (used with 'fit' mode)\"},\"maxHeight\":{\"type\":\"number\",\"description\":\"Maximum height in pixels (used with 'fit' mode)\"},\"width\":{\"type\":\"number\",\"description\":\"Exact width in pixels (used with 'exact' mode)\"},\"height\":{\"type\":\"number\",\"description\":\"Exact height in pixels (used with 'exact' mode)\"},\"strategy\":{\"enum\":[\"pad\",\"crop\"],\"type\":\"string\",\"description\":\"Strategy for handling aspect ratio mismatch in 'exact' mode\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"mode\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the resized video\"}},\"required\":[\"videoUrl\"]},\n },\n \"runFromConnectorRegistry\": {\n stepType: \"runFromConnectorRegistry\",\n description: \"Run a raw API connector to a third-party service\",\n usageNotes: \"- Use the /developer/v2/helpers/connectors endpoint to list available services and actions.\\n- Use /developer/v2/helpers/connectors/{serviceId}/{actionId} to get the full input configuration for an action.\\n- Use /developer/v2/helpers/connections to list your available OAuth connections.\\n- The actionId format is \\\"serviceId/actionId\\\" (e.g., \\\"slack/send-message\\\").\\n- Pass a __connectionId to authenticate the request with a specific OAuth connection, otherwise the default will be used (if configured).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"actionId\":{\"type\":\"string\",\"description\":\"The connector action identifier in the format serviceId/actionId\"},\"displayName\":{\"type\":\"string\",\"description\":\"Human-readable name of the connector action\"},\"icon\":{\"type\":\"string\",\"description\":\"Icon URL for the connector\"},\"configurationValues\":{\"type\":\"object\",\"description\":\"Key-value configuration parameters for the connector action\"},\"__connectionId\":{\"type\":\"string\",\"description\":\"OAuth connection ID used to authenticate the connector request\"}},\"required\":[\"actionId\",\"displayName\",\"icon\",\"configurationValues\"],\"description\":\"Configuration for the connector registry step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"type\":\"object\",\"description\":\"Key-value map of output variables set by the connector\"}},\"required\":[\"data\"]},\n },\n \"runPackagedWorkflow\": {\n stepType: \"runPackagedWorkflow\",\n description: \"Run a packaged workflow (\\\"custom block\\\")\",\n usageNotes: \"- From the user's perspective, packaged workflows are just ordinary blocks. Behind the scenes, they operate like packages/libraries in a programming language, letting the user execute custom functionality.\\n- Some of these packaged workflows are available as part of MindStudio's \\\"Standard Library\\\" and available to every user.\\n- Available packaged workflows are documented here as individual blocks, but the runPackagedWorkflow block is how they need to be wrapped in order to be executed correctly.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"appId\":{\"type\":\"string\",\"description\":\"The app ID of the packaged workflow source\"},\"workflowId\":{\"type\":\"string\",\"description\":\"The source workflow ID to execute\"},\"inputVariables\":{\"type\":\"object\",\"description\":\"Variables to pass as input to the packaged workflow\"},\"outputVariables\":{\"type\":\"object\",\"description\":\"Variables to capture from the packaged workflow output\"},\"name\":{\"type\":\"string\",\"description\":\"Display name of the packaged workflow\"}},\"required\":[\"appId\",\"workflowId\",\"inputVariables\",\"outputVariables\",\"name\"],\"description\":\"Configuration for the packaged workflow step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the packaged workflow\"}},\"required\":[\"data\"]},\n },\n \"scrapeFacebookPage\": {\n stepType: \"scrapeFacebookPage\",\n description: \"Scrape a Facebook page\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageUrl\":{\"type\":\"string\",\"description\":\"Full URL to the Facebook page to scrape\"}},\"required\":[\"pageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeFacebookPosts\": {\n stepType: \"scrapeFacebookPosts\",\n description: \"Get all the posts for a Facebook page\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"pageUrl\":{\"type\":\"string\",\"description\":\"Full URL to the Facebook page to scrape posts from\"}},\"required\":[\"pageUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramComments\": {\n stepType: \"scrapeInstagramComments\",\n description: \"Get all the comments for an Instagram post\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"postUrl\":{\"type\":\"string\",\"description\":\"Full URL to the Instagram post to scrape comments from\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of comments to return\"}},\"required\":[\"postUrl\",\"resultsLimit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramMentions\": {\n stepType: \"scrapeInstagramMentions\",\n description: \"Scrape an Instagram profile's mentions\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape mentions for\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of mentions to return\"}},\"required\":[\"profileUrl\",\"resultsLimit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramPosts\": {\n stepType: \"scrapeInstagramPosts\",\n description: \"Get all the posts for an Instagram profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape posts from\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of posts to return\"},\"onlyPostsNewerThan\":{\"type\":\"string\",\"description\":\"Only return posts newer than this date (ISO 8601 format)\"}},\"required\":[\"profileUrl\",\"resultsLimit\",\"onlyPostsNewerThan\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramProfile\": {\n stepType: \"scrapeInstagramProfile\",\n description: \"Scrape an Instagram profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape\"}},\"required\":[\"profileUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeInstagramReels\": {\n stepType: \"scrapeInstagramReels\",\n description: \"Get all the reels for an Instagram profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Instagram profile URL or username to scrape reels from\"},\"resultsLimit\":{\"type\":\"string\",\"description\":\"Maximum number of reels to return\"}},\"required\":[\"profileUrl\",\"resultsLimit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeLinkedInCompany\": {\n stepType: \"scrapeLinkedInCompany\",\n description: \"Scrape public company data from a LinkedIn company page.\",\n usageNotes: \"- Requires a LinkedIn company URL (e.g. https://www.linkedin.com/company/mindstudioai).\\n- Returns structured company data including description, employees, updates, and similar companies.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"LinkedIn company page URL (e.g. https://www.linkedin.com/company/mindstudioai)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"company\":{\"description\":\"Scraped LinkedIn company data\"}},\"required\":[\"company\"]},\n },\n \"scrapeLinkedInProfile\": {\n stepType: \"scrapeLinkedInProfile\",\n description: \"Scrape public profile data from a LinkedIn profile page.\",\n usageNotes: \"- Requires a LinkedIn profile URL (e.g. https://www.linkedin.com/in/username).\\n- Returns structured profile data including experience, education, articles, and activities.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"LinkedIn profile URL (e.g. https://www.linkedin.com/in/username)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"profile\":{\"description\":\"Scraped LinkedIn profile data\"}},\"required\":[\"profile\"]},\n },\n \"scrapeMetaThreadsProfile\": {\n stepType: \"scrapeMetaThreadsProfile\",\n description: \"Scrape a Meta Threads profile\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"profileUrl\":{\"type\":\"string\",\"description\":\"Meta Threads profile URL or username to scrape\"}},\"required\":[\"profileUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"data\":{\"description\":\"The result data returned from the Apify actor run\"}},\"required\":[\"data\"]},\n },\n \"scrapeUrl\": {\n stepType: \"scrapeUrl\",\n description: \"Extract text, HTML, or structured content from one or more web pages.\",\n usageNotes: \"- Accepts a single URL or multiple URLs (as a JSON array, comma-separated, or newline-separated).\\n- Output format controls the result shape: \\\"text\\\" returns markdown, \\\"html\\\" returns raw HTML, \\\"json\\\" returns structured scraper data.\\n- Can optionally capture a screenshot of each page.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"URL(s) to scrape. Accepts a single URL, JSON array, or comma/newline-separated list\"},\"service\":{\"enum\":[\"default\",\"firecrawl\"],\"type\":\"string\",\"description\":\"Scraping service to use\"},\"autoEnhance\":{\"type\":\"boolean\",\"description\":\"Whether to enable enhanced scraping for social media URLs (e.g. Twitter, LinkedIn)\"},\"pageOptions\":{\"type\":\"object\",\"properties\":{\"onlyMainContent\":{\"type\":\"boolean\",\"description\":\"Whether to extract only the main content of the page, excluding navigation, footers, etc.\"},\"screenshot\":{\"type\":\"boolean\",\"description\":\"Whether to capture a screenshot of the page\"},\"waitFor\":{\"type\":\"number\",\"description\":\"Milliseconds to wait before scraping (0 for immediate)\"},\"replaceAllPathsWithAbsolutePaths\":{\"type\":\"boolean\",\"description\":\"Whether to convert relative URLs to absolute URLs in the result\"},\"headers\":{\"type\":\"object\",\"description\":\"Custom HTTP request headers as key-value pairs\"},\"removeTags\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"HTML tags to remove from the scraped result\"},\"mobile\":{\"type\":\"boolean\",\"description\":\"Whether to scrape using a mobile user-agent\"}},\"required\":[\"onlyMainContent\",\"screenshot\",\"waitFor\",\"replaceAllPathsWithAbsolutePaths\",\"headers\",\"removeTags\",\"mobile\"],\"description\":\"Page-level scraping options (content filtering, screenshots, headers, etc.)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}},{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"]},{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"]}}]},\"screenshot\":{\"type\":\"string\",\"description\":\"Screenshot URL, only present when screenshot was requested via pageOptions\"}},\"required\":[\"content\"]},\n },\n \"scrapeXPost\": {\n stepType: \"scrapeXPost\",\n description: \"Scrape data from a single X (Twitter) post by URL.\",\n usageNotes: \"- Returns structured post data (text, html, optional json/screenshot/metadata).\\n- Optionally saves the text content to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"Full URL to the X post (e.g. https://x.com/elonmusk/status/1655608985058267139)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"post\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"],\"description\":\"Scraped post data including text, HTML, and optional structured JSON\"}},\"required\":[\"post\"]},\n },\n \"scrapeXProfile\": {\n stepType: \"scrapeXProfile\",\n description: \"Scrape public profile data from an X (Twitter) account by URL.\",\n usageNotes: \"- Returns structured profile data.\\n- Optionally saves the result to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"url\":{\"type\":\"string\",\"description\":\"Full URL or username for the X profile (e.g. https://x.com/elonmusk)\"}},\"required\":[\"url\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"profile\":{\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"Markdown/plain-text content of the scraped page\"},\"html\":{\"type\":\"string\",\"description\":\"Raw HTML content of the scraped page\"},\"json\":{\"type\":\"object\",\"description\":\"Structured data extracted from the page\"},\"screenshotUrl\":{\"type\":\"string\",\"description\":\"Screenshot URL of the page (if requested)\"},\"metadata\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title\"},\"description\":{\"type\":\"string\",\"description\":\"Page meta description\"},\"url\":{\"type\":\"string\",\"description\":\"Canonical URL\"},\"image\":{\"type\":\"string\",\"description\":\"Open Graph image URL\"}},\"required\":[\"title\",\"description\",\"url\",\"image\"],\"description\":\"Page metadata (Open Graph / meta tags)\"}},\"required\":[\"text\",\"html\"],\"description\":\"Scraped profile data including text, HTML, and optional structured JSON\"}},\"required\":[\"profile\"]},\n },\n \"searchGmailEmails\": {\n stepType: \"searchGmailEmails\",\n description: \"Search for emails in the connected Gmail account using a Gmail search query. To list recent inbox emails, pass an empty query string.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail readonly scope.\\n- Uses Gmail search syntax (e.g. \\\"from:user@example.com\\\", \\\"subject:invoice\\\", \\\"is:unread\\\").\\n- To list recent inbox emails, use an empty query string or \\\"in:inbox\\\".\\n- Returns up to 100 emails (default 5). The variable receives text or JSON depending on exportType.\\n- The direct execution output always returns structured email objects.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Gmail search query (e.g. \\\"from:user@example.com\\\", \\\"subject:invoice\\\", \\\"is:unread\\\")\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"limit\":{\"type\":\"string\",\"description\":\"Maximum number of emails to return (1-10, default: 5)\"}},\"required\":[\"query\",\"exportType\",\"limit\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"emails\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Gmail message ID\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"from\":{\"type\":\"string\",\"description\":\"Sender email address\"},\"to\":{\"type\":\"string\",\"description\":\"Recipient email address\"},\"date\":{\"type\":\"string\",\"description\":\"Email date\"},\"plainBody\":{\"type\":\"string\",\"description\":\"Plain text body content\"},\"htmlBody\":{\"type\":\"string\",\"description\":\"HTML body content (if available)\"},\"labels\":{\"type\":\"string\",\"description\":\"Comma-separated label IDs applied to the email\"}},\"required\":[\"id\",\"subject\",\"from\",\"to\",\"date\",\"plainBody\",\"htmlBody\",\"labels\"]},\"description\":\"List of matching email messages\"}},\"required\":[\"emails\"]},\n },\n \"searchGoogle\": {\n stepType: \"searchGoogle\",\n description: \"Search the web using Google and return structured results.\",\n usageNotes: \"- Defaults to us/english, but can optionally specify country and/or language.\\n- Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\\n- Defaults to top 30 results, but can specify 1 to 100 results to return.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"The search query to send to Google\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Format for the variable value: \\\"text\\\" or \\\"json\\\"\"},\"countryCode\":{\"type\":\"string\",\"description\":\"Google gl country code (defaults to US)\"},\"languageCode\":{\"type\":\"string\",\"description\":\"Google hl language code (defaults to \\\"en\\\")\"},\"dateRange\":{\"enum\":[\"hour\",\"day\",\"week\",\"month\",\"year\",\"any\"],\"type\":\"string\",\"description\":\"Time range filter: \\\"hour\\\", \\\"day\\\", \\\"week\\\", \\\"month\\\", \\\"year\\\", or \\\"any\\\"\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-100, default: 30)\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title of the search result\"},\"description\":{\"type\":\"string\",\"description\":\"Snippet/description of the search result\"},\"url\":{\"type\":\"string\",\"description\":\"URL of the search result page\"}},\"required\":[\"title\",\"description\",\"url\"]},\"description\":\"List of search result entries\"}},\"required\":[\"results\"]},\n },\n \"searchGoogleCalendarEvents\": {\n stepType: \"searchGoogleCalendarEvents\",\n description: \"Search for events in a Google Calendar by keyword, date range, or both.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Supports keyword search via \\\"query\\\" and date filtering via \\\"timeMin\\\"/\\\"timeMax\\\" (ISO 8601 format).\\n- Unlike \\\"List Events\\\" which only shows future events, this allows searching past events too.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Text search term\"},\"timeMin\":{\"type\":\"string\",\"description\":\"Start of time range (ISO 8601)\"},\"timeMax\":{\"type\":\"string\",\"description\":\"End of time range (ISO 8601)\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\")\"},\"limit\":{\"type\":\"number\",\"description\":\"Maximum number of events to return (default: 10)\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"events\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"status\":{\"type\":\"string\",\"description\":\"Event status (e.g. \\\"confirmed\\\", \\\"tentative\\\", \\\"cancelled\\\")\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the event in Google Calendar\"},\"created\":{\"type\":\"string\",\"description\":\"Timestamp when the event was created\"},\"updated\":{\"type\":\"string\",\"description\":\"Timestamp when the event was last updated\"},\"summary\":{\"type\":\"string\",\"description\":\"Event title\"},\"description\":{\"type\":\"string\",\"description\":\"Event description\"},\"location\":{\"type\":\"string\",\"description\":\"Event location\"},\"organizer\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"start\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"end\":{\"anyOf\":[{\"type\":\"object\",\"properties\":{\"dateTime\":{\"type\":\"string\"},\"timeZone\":{\"type\":\"string\"}}},{\"type\":\"null\"}]},\"attendees\":{\"anyOf\":[{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"displayName\":{\"type\":\"string\"},\"email\":{\"type\":\"string\"},\"responseStatus\":{\"type\":\"string\"}}}},{\"type\":\"null\"}]}}},\"description\":\"List of matching calendar events\"}},\"required\":[\"events\"]},\n },\n \"searchGoogleDrive\": {\n stepType: \"searchGoogleDrive\",\n description: \"Search for files in Google Drive by keyword.\",\n usageNotes: \"- Requires a Google OAuth connection with Drive scope.\\n- Searches file content and names using Google Drive's fullText search.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search keyword\"},\"limit\":{\"type\":\"number\",\"description\":\"Max files to return (default: 20)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"exportType\":{\"enum\":[\"json\",\"text\"],\"type\":\"string\",\"description\":\"Format for the variable output: \\\"json\\\" or \\\"text\\\"\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"files\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\"},\"name\":{\"type\":\"string\"},\"mimeType\":{\"type\":\"string\"},\"size\":{\"type\":\"string\"},\"webViewLink\":{\"type\":\"string\"},\"createdTime\":{\"type\":\"string\"},\"modifiedTime\":{\"type\":\"string\"}},\"required\":[\"id\",\"name\",\"mimeType\",\"size\",\"webViewLink\",\"createdTime\",\"modifiedTime\"]},\"description\":\"List of matching files\"}},\"required\":[\"files\"]},\n },\n \"searchGoogleImages\": {\n stepType: \"searchGoogleImages\",\n description: \"Search Google Images and return image results with URLs and metadata.\",\n usageNotes: \"- Defaults to us/english, but can optionally specify country and/or language.\\n- Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\\n- Defaults to top 30 results, but can specify 1 to 100 results to return.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"The image search query\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Format for the variable value: \\\"text\\\" or \\\"json\\\"\"},\"countryCode\":{\"type\":\"string\",\"description\":\"Google gl country code (defaults to US)\"},\"languageCode\":{\"type\":\"string\",\"description\":\"Google hl language code (defaults to \\\"en\\\")\"},\"dateRange\":{\"enum\":[\"hour\",\"day\",\"week\",\"month\",\"year\",\"any\"],\"type\":\"string\",\"description\":\"Time range filter: \\\"hour\\\", \\\"day\\\", \\\"week\\\", \\\"month\\\", \\\"year\\\", or \\\"any\\\"\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-100, default: 30)\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"images\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Title/alt text of the image\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"Direct URL of the full-size image\"},\"imageWidth\":{\"type\":\"number\",\"description\":\"Width of the full-size image in pixels\"},\"imageHeight\":{\"type\":\"number\",\"description\":\"Height of the full-size image in pixels\"},\"thumbnailUrl\":{\"type\":\"string\",\"description\":\"URL of the thumbnail image\"},\"thumbnailWidth\":{\"type\":\"number\",\"description\":\"Width of the thumbnail in pixels\"},\"thumbnailHeight\":{\"type\":\"number\",\"description\":\"Height of the thumbnail in pixels\"},\"source\":{\"type\":\"string\",\"description\":\"Source website name\"},\"domain\":{\"type\":\"string\",\"description\":\"Domain of the source website\"},\"link\":{\"type\":\"string\",\"description\":\"URL of the page containing the image\"},\"googleUrl\":{\"type\":\"string\",\"description\":\"Google Images URL for this result\"},\"position\":{\"type\":\"number\",\"description\":\"Position/rank of this result in the search results\"}},\"required\":[\"title\",\"imageUrl\",\"imageWidth\",\"imageHeight\",\"thumbnailUrl\",\"thumbnailWidth\",\"thumbnailHeight\",\"source\",\"domain\",\"link\",\"googleUrl\",\"position\"]},\"description\":\"List of image search results with URLs and metadata\"}},\"required\":[\"images\"]},\n },\n \"searchGoogleNews\": {\n stepType: \"searchGoogleNews\",\n description: \"Search Google News for recent news articles matching a query.\",\n usageNotes: \"- Defaults to top 30 results, but can specify 1 to 100 results to return.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The news search query\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Format for the variable value: \\\"text\\\" or \\\"json\\\"\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-100, default: 30)\"}},\"required\":[\"text\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"articles\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Headline of the news article\"},\"link\":{\"type\":\"string\",\"description\":\"URL to the full article\"},\"date\":{\"type\":\"string\",\"description\":\"Publication date of the article\"},\"source\":{\"type\":\"object\",\"properties\":{\"name\":{\"type\":\"string\",\"description\":\"Name of the news source\"}},\"required\":[\"name\"],\"description\":\"Source publication\"},\"snippet\":{\"type\":\"string\",\"description\":\"Brief excerpt or summary of the article\"}},\"required\":[\"title\",\"link\",\"date\",\"source\"]},\"description\":\"List of matching news articles\"}},\"required\":[\"articles\"]},\n },\n \"searchGoogleTrends\": {\n stepType: \"searchGoogleTrends\",\n description: \"Fetch Google Trends data for a search term.\",\n usageNotes: \"- date accepts shorthand (\\\"now 1-H\\\", \\\"today 1-m\\\", \\\"today 5-y\\\", etc.) or custom \\\"yyyy-mm-dd yyyy-mm-dd\\\" ranges.\\n- data_type controls the shape of returned data: TIMESERIES, GEO_MAP, GEO_MAP_0, RELATED_TOPICS, or RELATED_QUERIES.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The search term to look up on Google Trends\"},\"hl\":{\"type\":\"string\",\"description\":\"Language code (e.g. \\\"en\\\")\"},\"geo\":{\"type\":\"string\",\"description\":\"Geographic region: empty string for worldwide, or a two-letter country code\"},\"data_type\":{\"enum\":[\"TIMESERIES\",\"GEO_MAP\",\"GEO_MAP_0\",\"RELATED_TOPICS\",\"RELATED_QUERIES\"],\"type\":\"string\",\"description\":\"Type of trend data to return\"},\"cat\":{\"type\":\"string\",\"description\":\"Category filter (\\\"0\\\" for all categories)\"},\"date\":{\"type\":\"string\",\"description\":\"Date range for trend data. Available options: - \\\"now 1-H\\\" - Past hour - \\\"now 4-H\\\" - Past 4 hours - \\\"now 1-d\\\" - Past day - \\\"now 7-d\\\" - Past 7 days - \\\"today 1-m\\\" - Past 30 days - \\\"today 3-m\\\" - Past 90 days - \\\"today 12-m\\\" - Past 12 months - \\\"today 5-y\\\" - Past 5 years - \\\"all - 2004\\\" - present - You can also pass custom values: \\\"yyyy-mm-dd yyyy-mm-dd\\\"\"},\"ts\":{\"type\":\"string\",\"description\":\"Timezone offset in minutes (-1439 to 1439, default: 420 for PDT)\"}},\"required\":[\"text\",\"hl\",\"geo\",\"data_type\",\"cat\",\"date\",\"ts\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"trends\":{\"type\":\"object\",\"description\":\"Google Trends data for the searched term\"}},\"required\":[\"trends\"]},\n },\n \"searchPerplexity\": {\n stepType: \"searchPerplexity\",\n description: \"Search the web using the Perplexity API and return structured results.\",\n usageNotes: \"- Defaults to US results. Use countryCode (ISO code) to filter by country.\\n- Returns 10 results by default, configurable from 1 to 20.\\n- The variable receives text or JSON depending on exportType. The direct execution output always returns structured results.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query to send to Perplexity\"},\"exportType\":{\"enum\":[\"text\",\"json\"],\"type\":\"string\",\"description\":\"Output format for the variable: plain text or structured JSON\"},\"countryCode\":{\"type\":\"string\",\"description\":\"ISO country code to filter results by region (e.g. \\\"us\\\", \\\"gb\\\")\"},\"numResults\":{\"type\":\"number\",\"description\":\"Number of results to return (1-20, default: 10)\"}},\"required\":[\"query\",\"exportType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"Page title of the search result\"},\"description\":{\"type\":\"string\",\"description\":\"Snippet or description of the search result\"},\"url\":{\"type\":\"string\",\"description\":\"URL of the search result page\"}},\"required\":[\"title\",\"description\",\"url\"]},\"description\":\"List of structured search results\"}},\"required\":[\"results\"]},\n },\n \"searchXPosts\": {\n stepType: \"searchXPosts\",\n description: \"Search recent X (Twitter) posts matching a query.\",\n usageNotes: \"- Searches only the past 7 days of posts.\\n- Query supports X API v2 search operators (up to 512 characters).\\n\\nAvailable search operators in query:\\n\\n| Operator | Description |\\n| -----------------| -------------------------------------------------|\\n| from: | Posts from a specific user (e.g., from:elonmusk) |\\n| to: | Posts sent to a specific user (e.g., to:NASA) |\\n| @ | Mentions a user (e.g., @openai) |\\n| # | Hashtag search (e.g., #AI) |\\n| is:retweet | Filters retweets |\\n| is:reply | Filters replies |\\n| has:media | Posts containing media (images, videos, or GIFs) |\\n| has:links | Posts containing URLs |\\n| lang: | Filters by language (e.g., lang:en) |\\n| - | Excludes specific terms (e.g., -spam) |\\n| () | Groups terms or operators (e.g., (AI OR ML)) |\\n| AND, OR, NOT | Boolean logic for combining or excluding terms |\\n\\nConjunction-Required Operators (must be combined with a standalone operator):\\n\\n| Operator | Description |\\n| ------------ | -----------------------------------------------|\\n| has:media | Posts containing media (images, videos, or GIFs) |\\n| has:links | Posts containing URLs |\\n| is:retweet | Filters retweets |\\n| is:reply | Filters replies |\\n\\nFor example, has:media alone is invalid, but #AI has:media is valid.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query (max 512 chars, supports X API v2 search operators)\"},\"scope\":{\"enum\":[\"recent\",\"all\"],\"type\":\"string\",\"description\":\"Search scope: \\\"recent\\\" for past 7 days or \\\"all\\\" for full archive\"},\"options\":{\"type\":\"object\",\"properties\":{\"startTime\":{\"type\":\"string\",\"description\":\"ISO 8601 date; only return posts after this time\"},\"endTime\":{\"type\":\"string\",\"description\":\"ISO 8601 date; only return posts before this time\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Number of results to return (default: 50, max: 100)\"}},\"description\":\"Additional search options\"}},\"required\":[\"query\",\"scope\",\"options\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"posts\":{\"type\":\"array\",\"items\":{\"type\":\"object\",\"properties\":{\"id\":{\"type\":\"string\",\"description\":\"Unique post identifier\"},\"authorId\":{\"type\":\"string\",\"description\":\"Author's X user ID\"},\"dateCreated\":{\"type\":\"string\",\"description\":\"ISO 8601 timestamp when the post was created\"},\"text\":{\"type\":\"string\",\"description\":\"Text content of the post\"},\"stats\":{\"type\":\"object\",\"properties\":{\"retweets\":{\"type\":\"number\",\"description\":\"Number of retweets/reposts\"},\"replies\":{\"type\":\"number\",\"description\":\"Number of replies\"},\"likes\":{\"type\":\"number\",\"description\":\"Number of likes\"}},\"required\":[\"retweets\",\"replies\",\"likes\"],\"description\":\"Engagement statistics for the post\"}},\"required\":[\"id\",\"authorId\",\"dateCreated\",\"text\",\"stats\"]},\"description\":\"List of matching X posts\"}},\"required\":[\"posts\"]},\n },\n \"searchYoutube\": {\n stepType: \"searchYoutube\",\n description: \"Search for YouTube videos by keyword.\",\n usageNotes: \"- Supports pagination (up to 5 pages) and country/language filters.\\n- Use the filter/filterType fields for YouTube search parameter (sp) filters.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Search query for YouTube videos\"},\"limitPages\":{\"type\":\"string\",\"description\":\"Maximum number of pages to fetch (1-5)\"},\"filter\":{\"type\":\"string\",\"description\":\"YouTube search parameter (sp) filter value\"},\"filterType\":{\"type\":\"string\",\"description\":\"Filter type identifier\"},\"countryCode\":{\"type\":\"string\",\"description\":\"Google gl country code for regional results (default: \\\"US\\\")\"},\"languageCode\":{\"type\":\"string\",\"description\":\"Google hl language code for result language (default: \\\"en\\\")\"}},\"required\":[\"query\",\"limitPages\",\"filter\",\"filterType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"results\":{\"type\":\"object\",\"description\":\"YouTube search results including video_results, channel_results, etc.\"}},\"required\":[\"results\"]},\n },\n \"searchYoutubeTrends\": {\n stepType: \"searchYoutubeTrends\",\n description: \"Retrieve trending videos on YouTube by category and region.\",\n usageNotes: \"- Categories: \\\"now\\\" (trending now), \\\"music\\\", \\\"gaming\\\", \\\"films\\\".\\n- Supports country and language filtering.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"bp\":{\"enum\":[\"now\",\"music\",\"gaming\",\"films\"],\"type\":\"string\",\"description\":\"Trending category: \\\"now\\\" (trending now), \\\"music\\\", \\\"gaming\\\", or \\\"films\\\"\"},\"hl\":{\"type\":\"string\",\"description\":\"Language code (e.g. \\\"en\\\")\"},\"gl\":{\"type\":\"string\",\"description\":\"Country code (e.g. \\\"US\\\")\"}},\"required\":[\"bp\",\"hl\",\"gl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"trends\":{\"type\":\"object\",\"description\":\"Trending video data for the selected category and region\"}},\"required\":[\"trends\"]},\n },\n \"sendEmail\": {\n stepType: \"sendEmail\",\n description: \"Send an email to one or more configured recipient addresses.\",\n usageNotes: \"- Recipient email addresses are resolved from OAuth connections configured by the app creator. The user running the workflow does not specify the recipient directly.\\n- If the body is a URL to a hosted HTML file on the CDN, the HTML is fetched and used as the email body.\\n- When generateHtml is enabled, the body text is converted to a styled HTML email using an AI model.\\n- connectionId can be a comma-separated list to send to multiple recipients.\\n- The special connectionId \\\"trigger_email\\\" uses the email address that triggered the workflow.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"body\":{\"type\":\"string\",\"description\":\"Email body content (plain text, markdown, HTML, or a CDN URL to an HTML file)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"OAuth connection ID(s) for the recipient(s), comma-separated for multiple\"},\"generateHtml\":{\"type\":\"boolean\",\"description\":\"When true, auto-convert the body text into a styled HTML email using AI\"},\"generateHtmlInstructions\":{\"type\":\"string\",\"description\":\"Natural language instructions for the HTML generation style\"},\"generateHtmlModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model settings override for HTML generation\"},\"attachments\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"URLs of files to attach to the email\"}},\"required\":[\"subject\",\"body\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"recipients\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Email addresses the message was sent to\"}},\"required\":[\"recipients\"]},\n },\n \"sendGmailDraft\": {\n stepType: \"sendGmailDraft\",\n description: \"Send an existing draft from the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose scope.\\n- The draft is sent and removed from the Drafts folder.\\n- Use the draft ID returned by the Create Gmail Draft or List Gmail Drafts steps.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"draftId\":{\"type\":\"string\",\"description\":\"Gmail draft ID to send\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"draftId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"sendGmailMessage\": {\n stepType: \"sendGmailMessage\",\n description: \"Send an email from the connected Gmail account.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail compose scope.\\n- messageType controls the body format: \\\"plain\\\" for plain text, \\\"html\\\" for raw HTML, \\\"markdown\\\" for auto-converted markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"to\":{\"type\":\"string\",\"description\":\"Recipient email address(es), comma-separated for multiple\"},\"subject\":{\"type\":\"string\",\"description\":\"Email subject line\"},\"message\":{\"type\":\"string\",\"description\":\"Email body content\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"messageType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Body format: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"}},\"required\":[\"to\",\"subject\",\"message\",\"messageType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"string\",\"description\":\"Gmail message ID of the sent email\"}},\"required\":[\"messageId\"]},\n },\n \"sendSMS\": {\n stepType: \"sendSMS\",\n description: \"Send an SMS or MMS message to a phone number configured via OAuth connection.\",\n usageNotes: \"- User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\\n- If mediaUrls are provided, the message is sent as MMS instead of SMS\\n- MMS supports up to 10 media URLs (images, video, audio, PDF) with a 5MB limit per file\\n- MMS is only supported on US and Canadian carriers; international numbers will receive SMS only (media silently dropped)\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"body\":{\"type\":\"string\",\"description\":\"SMS message body text\"},\"connectionId\":{\"type\":\"string\",\"description\":\"OAuth connection ID for the recipient phone number\"},\"mediaUrls\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Optional array of media URLs to send as MMS (up to 10, 5MB each)\"}},\"required\":[\"body\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"setGmailReadStatus\": {\n stepType: \"setGmailReadStatus\",\n description: \"Mark one or more Gmail emails as read or unread.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail modify scope.\\n- Accepts one or more message IDs as a comma-separated string or array.\\n- Set markAsRead to true to mark as read, false to mark as unread.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"messageIds\":{\"type\":\"string\",\"description\":\"Gmail message ID(s), comma-separated\"},\"markAsRead\":{\"type\":\"boolean\",\"description\":\"true = mark as read, false = mark as unread\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"}},\"required\":[\"messageIds\",\"markAsRead\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"setRunTitle\": {\n stepType: \"setRunTitle\",\n description: \"Set the title of the agent run for the user's history\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\",\"description\":\"The title to assign to the agent run (supports variable interpolation)\"}},\"required\":[\"title\"],\"description\":\"Configuration for the set run title step\"},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"setVariable\": {\n stepType: \"setVariable\",\n description: \"Explicitly set a variable to a given value.\",\n usageNotes: \"- Useful for bootstrapping global variables or setting constants.\\n- The variable name and value both support variable interpolation.\\n- The type field is a UI hint only (controls input widget in the editor).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"value\":{\"anyOf\":[{\"type\":\"string\"},{\"type\":\"array\",\"items\":{\"type\":\"string\"}}]}},\"required\":[\"value\"],\"description\":\"Configuration for the set variable step\"},\n outputSchema: {\"type\":\"object\"},\n },\n \"telegramEditMessage\": {\n stepType: \"telegramEditMessage\",\n description: \"Edit a previously sent Telegram message. Use with the message ID returned by Send Telegram Message.\",\n usageNotes: \"- Only text messages sent by the bot can be edited.\\n- The messageId is returned by the Send Telegram Message step.\\n- Common pattern: send a \\\"Processing...\\\" message, do work, then edit it with the result.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID containing the message\"},\"messageId\":{\"type\":\"string\",\"description\":\"ID of the message to edit\"},\"text\":{\"type\":\"string\",\"description\":\"New message text (MarkdownV2 formatting supported)\"}},\"required\":[\"botToken\",\"chatId\",\"messageId\",\"text\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramReplyToMessage\": {\n stepType: \"telegramReplyToMessage\",\n description: \"Send a reply to a specific Telegram message. The reply will be visually threaded in the chat.\",\n usageNotes: \"- Use the rawMessage.message_id from the incoming trigger variables to reply to the user's message.\\n- Especially useful in group chats where replies provide context.\\n- Returns the sent message ID, which can be used with Edit Telegram Message.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the reply to\"},\"replyToMessageId\":{\"type\":\"string\",\"description\":\"ID of the message to reply to\"},\"text\":{\"type\":\"string\",\"description\":\"Reply text (MarkdownV2 formatting supported)\"}},\"required\":[\"botToken\",\"chatId\",\"replyToMessageId\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"number\",\"description\":\"ID of the sent reply message\"}},\"required\":[\"messageId\"]},\n },\n \"telegramSendAudio\": {\n stepType: \"telegramSendAudio\",\n description: \"Send an audio file to a Telegram chat as music or a voice note via a bot.\",\n usageNotes: \"- \\\"audio\\\" mode sends as a standard audio file. \\\"voice\\\" mode sends as a voice message (re-uploads the file for large file support).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the audio to\"},\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the audio file to send\"},\"mode\":{\"enum\":[\"audio\",\"voice\"],\"type\":\"string\",\"description\":\"Send as a standard audio track (\\\"audio\\\") or as a voice note (\\\"voice\\\")\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the audio\"}},\"required\":[\"botToken\",\"chatId\",\"audioUrl\",\"mode\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSendFile\": {\n stepType: \"telegramSendFile\",\n description: \"Send a document/file to a Telegram chat via a bot.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the file to\"},\"fileUrl\":{\"type\":\"string\",\"description\":\"URL of the document/file to send\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the file\"}},\"required\":[\"botToken\",\"chatId\",\"fileUrl\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSendImage\": {\n stepType: \"telegramSendImage\",\n description: \"Send an image to a Telegram chat via a bot.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the image to\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to send\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the image\"}},\"required\":[\"botToken\",\"chatId\",\"imageUrl\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSendMessage\": {\n stepType: \"telegramSendMessage\",\n description: \"Send a text message to a Telegram chat via a bot.\",\n usageNotes: \"- Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\\n- botToken format is \\\"botId:token\\\" — both parts are required.\\n- Returns the sent message ID, which can be used with Edit Telegram Message to update the message later.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the message to\"},\"text\":{\"type\":\"string\",\"description\":\"Message text to send (MarkdownV2 formatting supported)\"}},\"required\":[\"botToken\",\"chatId\",\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"messageId\":{\"type\":\"number\",\"description\":\"ID of the sent Telegram message\"}},\"required\":[\"messageId\"]},\n },\n \"telegramSendVideo\": {\n stepType: \"telegramSendVideo\",\n description: \"Send a video to a Telegram chat via a bot.\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to send the video to\"},\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video to send\"},\"caption\":{\"type\":\"string\",\"description\":\"Optional caption text for the video\"}},\"required\":[\"botToken\",\"chatId\",\"videoUrl\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"telegramSetTyping\": {\n stepType: \"telegramSetTyping\",\n description: \"Show the \\\"typing...\\\" indicator in a Telegram chat via a bot.\",\n usageNotes: \"- The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"botToken\":{\"type\":\"string\",\"description\":\"Telegram bot token in \\\"botId:token\\\" format\"},\"chatId\":{\"type\":\"string\",\"description\":\"Telegram chat ID to show the typing indicator in\"}},\"required\":[\"botToken\",\"chatId\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"textToSpeech\": {\n stepType: \"textToSpeech\",\n description: \"Generate an audio file from provided text using a speech model.\",\n usageNotes: \"- The text field contains the exact words to be spoken (not instructions).\\n- In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The text to convert to speech\"},\"skipAssetCreation\":{\"type\":\"boolean\"},\"speechModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Speech synthesis model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default speech model if not specified\"}},\"required\":[\"text\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the generated audio file\"}},\"required\":[\"audioUrl\"]},\n },\n \"transcribeAudio\": {\n stepType: \"transcribeAudio\",\n description: \"Convert an audio file to text using a transcription model.\",\n usageNotes: \"- The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"audioUrl\":{\"type\":\"string\",\"description\":\"URL of the audio file to transcribe\"},\"prompt\":{\"type\":\"string\",\"description\":\"Optional context to improve transcription accuracy (e.g. language, speaker names, domain terms)\"},\"transcriptionModelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Audio transcription model identifier\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\"],\"description\":\"Optional model configuration override. Uses the workflow's default transcription model if not specified\"}},\"required\":[\"audioUrl\",\"prompt\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"The transcribed text from the audio file\"}},\"required\":[\"text\"]},\n },\n \"trimMedia\": {\n stepType: \"trimMedia\",\n description: \"Trim an audio or video clip\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"inputUrl\":{\"type\":\"string\",\"description\":\"URL of the source audio or video file to trim\"},\"start\":{\"type\":[\"number\",\"string\"]},\"duration\":{\"type\":[\"string\",\"number\"]},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"inputUrl\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"mediaUrl\":{\"type\":\"string\",\"description\":\"URL of the trimmed media file\"}},\"required\":[\"mediaUrl\"]},\n },\n \"updateGmailLabels\": {\n stepType: \"updateGmailLabels\",\n description: \"Add or remove labels on Gmail messages, identified by message IDs or a search query.\",\n usageNotes: \"- Requires a Google OAuth connection with Gmail modify scope.\\n- Provide either a query (Gmail search syntax) or explicit messageIds to target messages.\\n- Label IDs can be label names or Gmail label IDs — names are resolved automatically.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"query\":{\"type\":\"string\",\"description\":\"Gmail search query to find messages (alternative to messageIds)\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"messageIds\":{\"type\":\"string\",\"description\":\"Comma-separated message IDs to target (alternative to query)\"},\"addLabelIds\":{\"type\":\"string\",\"description\":\"Comma-separated label names or IDs to add\"},\"removeLabelIds\":{\"type\":\"string\",\"description\":\"Comma-separated label names or IDs to remove\"}},\"required\":[\"query\",\"messageIds\",\"addLabelIds\",\"removeLabelIds\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"updatedMessageIds\":{\"type\":\"array\",\"items\":{\"type\":\"string\"},\"description\":\"Gmail message IDs that were updated\"}},\"required\":[\"updatedMessageIds\"]},\n },\n \"updateGoogleCalendarEvent\": {\n stepType: \"updateGoogleCalendarEvent\",\n description: \"Update an existing event on a Google Calendar. Only specified fields are changed.\",\n usageNotes: \"- Requires a Google OAuth connection with Calendar events scope.\\n- Fetches the existing event first, then applies only the provided updates. Omitted fields are left unchanged.\\n- Attendees are specified as one email address per line, and replace the entire attendee list.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID to update\"},\"summary\":{\"type\":\"string\",\"description\":\"Updated event title\"},\"description\":{\"type\":\"string\",\"description\":\"Updated event description\"},\"location\":{\"type\":\"string\",\"description\":\"Updated event location\"},\"startDateTime\":{\"type\":\"string\",\"description\":\"Updated start time in ISO 8601 format\"},\"endDateTime\":{\"type\":\"string\",\"description\":\"Updated end time in ISO 8601 format\"},\"attendees\":{\"type\":\"string\",\"description\":\"Updated attendee email addresses (one per line, replaces all existing attendees)\"},\"calendarId\":{\"type\":\"string\",\"description\":\"Calendar ID (defaults to \\\"primary\\\" if omitted)\"}},\"required\":[\"eventId\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"eventId\":{\"type\":\"string\",\"description\":\"Google Calendar event ID\"},\"htmlLink\":{\"type\":\"string\",\"description\":\"URL to view the updated event in Google Calendar\"}},\"required\":[\"eventId\",\"htmlLink\"]},\n },\n \"updateGoogleDoc\": {\n stepType: \"updateGoogleDoc\",\n description: \"Update the contents of an existing Google Document.\",\n usageNotes: \"- operationType controls how content is applied: \\\"addToTop\\\" prepends, \\\"addToBottom\\\" appends, \\\"overwrite\\\" replaces all content.\\n- textType determines how the text field is interpreted: \\\"plain\\\" for plain text, \\\"html\\\" for HTML markup, \\\"markdown\\\" for Markdown.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"documentId\":{\"type\":\"string\",\"description\":\"Google Document ID to update\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"text\":{\"type\":\"string\",\"description\":\"New content to write to the document\"},\"textType\":{\"enum\":[\"plain\",\"html\",\"markdown\"],\"type\":\"string\",\"description\":\"Format of the text field: \\\"plain\\\", \\\"html\\\", or \\\"markdown\\\"\"},\"operationType\":{\"enum\":[\"addToTop\",\"addToBottom\",\"overwrite\"],\"type\":\"string\",\"description\":\"How to apply the content: \\\"addToTop\\\", \\\"addToBottom\\\", or \\\"overwrite\\\"\"}},\"required\":[\"documentId\",\"text\",\"textType\",\"operationType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"documentUrl\":{\"type\":\"string\",\"description\":\"URL of the updated Google Document\"}},\"required\":[\"documentUrl\"]},\n },\n \"updateGoogleSheet\": {\n stepType: \"updateGoogleSheet\",\n description: \"Update a Google Spreadsheet with new data.\",\n usageNotes: \"- operationType controls how data is written: \\\"addToBottom\\\" appends rows, \\\"overwrite\\\" replaces all data, \\\"range\\\" writes to a specific cell range.\\n- Data should be provided as CSV in the text field.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"text\":{\"type\":\"string\",\"description\":\"CSV data to write to the spreadsheet\"},\"connectionId\":{\"type\":\"string\",\"description\":\"Google OAuth connection ID\"},\"spreadsheetId\":{\"type\":\"string\",\"description\":\"Google Spreadsheet ID to update\"},\"range\":{\"type\":\"string\",\"description\":\"Target cell range in A1 notation (used with \\\"range\\\" operationType)\"},\"operationType\":{\"enum\":[\"addToBottom\",\"overwrite\",\"range\"],\"type\":\"string\",\"description\":\"How to apply the data: \\\"addToBottom\\\", \\\"overwrite\\\", or \\\"range\\\"\"}},\"required\":[\"text\",\"spreadsheetId\",\"range\",\"operationType\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"spreadsheetUrl\":{\"type\":\"string\",\"description\":\"URL of the updated Google Spreadsheet\"}},\"required\":[\"spreadsheetUrl\"]},\n },\n \"uploadDataSourceDocument\": {\n stepType: \"uploadDataSourceDocument\",\n description: \"Upload a file into an existing data source from a URL or raw text content.\",\n usageNotes: \"- If \\\"file\\\" is a single URL, the file is downloaded from that URL and uploaded.\\n- If \\\"file\\\" is any other string, a .txt document is created from that content and uploaded.\\n- The block waits (polls) for processing to complete before transitioning, up to 5 minutes.\\n- Once processing finishes, vectors are loaded into Milvus so the data source is immediately queryable.\\n- Supported file types (when using a URL) are the same as the data source upload UI (PDF, DOCX, TXT, etc.).\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"dataSourceId\":{\"type\":\"string\",\"description\":\"ID of the target data source (supports variable interpolation)\"},\"file\":{\"type\":\"string\",\"description\":\"A URL to download, or raw text content to create a .txt document from (supports variable interpolation)\"},\"fileName\":{\"type\":\"string\",\"description\":\"Display name for the document (supports variable interpolation)\"}},\"required\":[\"dataSourceId\",\"file\",\"fileName\"]},\n outputSchema: {\"description\":\"This step does not produce output data.\"},\n },\n \"upscaleImage\": {\n stepType: \"upscaleImage\",\n description: \"Increase the resolution of an image using AI upscaling.\",\n usageNotes: \"- Output is re-hosted on the CDN as a PNG.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the image to upscale\"},\"targetResolution\":{\"enum\":[\"2k\",\"4k\",\"8k\"],\"type\":\"string\",\"description\":\"Target output resolution\"},\"engine\":{\"enum\":[\"standard\",\"pro\"],\"type\":\"string\",\"description\":\"Upscaling engine quality tier\"}},\"required\":[\"imageUrl\",\"targetResolution\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the upscaled image (PNG)\"}},\"required\":[\"imageUrl\"]},\n },\n \"upscaleVideo\": {\n stepType: \"upscaleVideo\",\n description: \"Upscale a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video to upscale\"},\"targetResolution\":{\"enum\":[\"720p\",\"1080p\",\"2K\",\"4K\"],\"type\":\"string\",\"description\":\"Target output resolution for the upscaled video\"},\"engine\":{\"enum\":[\"standard\",\"pro\",\"ultimate\",\"flashvsr\",\"seedance\",\"seedvr2\",\"runwayml/upscale-v1\"],\"type\":\"string\",\"description\":\"Upscaling engine to use. Higher tiers produce better quality at higher cost.\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"targetResolution\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the upscaled video\"}},\"required\":[\"videoUrl\"]},\n },\n \"userMessage\": {\n stepType: \"userMessage\",\n description: \"Send a message to an AI model and return the response, or echo a system message.\",\n usageNotes: \"- Source \\\"user\\\" sends the message to an LLM and returns the model's response.\\n- Source \\\"system\\\" echoes the message content directly (no AI call).\\n- Mode \\\"background\\\" saves the result to a variable. Mode \\\"foreground\\\" streams it to the user (not available in direct execution).\\n- Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"message\":{\"type\":\"string\",\"description\":\"The message to send (prompt for AI, or text for system echo)\"},\"source\":{\"enum\":[\"user\",\"system\"],\"type\":\"string\",\"description\":\"Message source: \\\"user\\\" sends to AI model, \\\"system\\\" echoes message content directly. Defaults to \\\"user\\\"\"},\"modelOverride\":{\"type\":\"object\",\"properties\":{\"model\":{\"type\":\"string\",\"description\":\"Model identifier (e.g. \\\"gpt-4\\\", \\\"claude-3-opus\\\")\"},\"temperature\":{\"type\":\"number\",\"description\":\"Sampling temperature for the model (0-2)\"},\"maxResponseTokens\":{\"type\":\"number\",\"description\":\"Maximum number of tokens in the model's response\"},\"ignorePreamble\":{\"type\":\"boolean\",\"description\":\"Whether to skip the system preamble/instructions\"},\"userMessagePreprocessor\":{\"type\":\"object\",\"properties\":{\"dataSource\":{\"type\":\"string\",\"description\":\"Data source identifier for the preprocessor\"},\"messageTemplate\":{\"type\":\"string\",\"description\":\"Template string applied to user messages before sending to the model\"},\"maxResults\":{\"type\":\"number\",\"description\":\"Maximum number of results to include from the data source\"},\"enabled\":{\"type\":\"boolean\",\"description\":\"Whether the preprocessor is active\"},\"shouldInherit\":{\"type\":\"boolean\",\"description\":\"Whether child steps should inherit this preprocessor configuration\"}},\"description\":\"Preprocessor applied to user messages before sending to the model\"},\"preamble\":{\"type\":\"string\",\"description\":\"System preamble/instructions for the model\"},\"multiModelEnabled\":{\"type\":\"boolean\",\"description\":\"Whether multi-model candidate generation is enabled\"},\"editResponseEnabled\":{\"type\":\"boolean\",\"description\":\"Whether the user can edit the model's response\"},\"config\":{\"type\":\"object\",\"description\":\"Additional model-specific configuration\"}},\"required\":[\"model\",\"temperature\",\"maxResponseTokens\"],\"description\":\"Model configuration override. Optional; uses the workflow's default model if not specified\"},\"structuredOutputType\":{\"enum\":[\"text\",\"json\",\"csv\"],\"type\":\"string\",\"description\":\"Output format constraint for structured responses\"},\"structuredOutputExample\":{\"type\":\"string\",\"description\":\"Sample showing the desired output shape (for JSON/CSV formats). A TypeScript interface is also useful here for more complex types.\"},\"chatHistoryMode\":{\"enum\":[\"include\",\"exclude\"],\"type\":\"string\",\"description\":\"Whether to include or exclude prior chat history in the AI context\"}},\"required\":[\"message\"],\"description\":\"Configuration for the user message step\"},\n outputSchema: {\"type\":\"object\",\"properties\":{\"content\":{\"type\":\"string\",\"description\":\"The AI model's response or echoed system message content\"}},\"required\":[\"content\"]},\n },\n \"videoFaceSwap\": {\n stepType: \"videoFaceSwap\",\n description: \"Swap faces in a video file\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video containing faces to swap\"},\"faceImageUrl\":{\"type\":\"string\",\"description\":\"URL of the image containing the replacement face\"},\"targetIndex\":{\"type\":\"number\",\"description\":\"Zero-based index of the face to replace in the video\"},\"engine\":{\"type\":\"string\",\"description\":\"Face swap engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"faceImageUrl\",\"targetIndex\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the face-swapped video\"}},\"required\":[\"videoUrl\"]},\n },\n \"videoRemoveBackground\": {\n stepType: \"videoRemoveBackground\",\n description: \"Remove or replace background from a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"newBackground\":{\"enum\":[\"transparent\",\"image\"],\"type\":\"string\",\"description\":\"Whether to make the background transparent or replace it with an image\"},\"newBackgroundImageUrl\":{\"type\":\"string\",\"description\":\"URL of a replacement background image. Required when newBackground is 'image'.\"},\"engine\":{\"type\":\"string\",\"description\":\"Background removal engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"newBackground\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with background removed or replaced\"}},\"required\":[\"videoUrl\"]},\n },\n \"videoRemoveWatermark\": {\n stepType: \"videoRemoveWatermark\",\n description: \"Remove a watermark from a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video containing a watermark\"},\"engine\":{\"type\":\"string\",\"description\":\"Watermark removal engine to use\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"engine\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the video with watermark removed\"}},\"required\":[\"videoUrl\"]},\n },\n \"watermarkImage\": {\n stepType: \"watermarkImage\",\n description: \"Overlay a watermark image onto another image.\",\n usageNotes: \"- The watermark is placed at the specified corner with configurable padding and width.\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the base image\"},\"watermarkImageUrl\":{\"type\":\"string\",\"description\":\"URL of the watermark image to overlay\"},\"corner\":{\"enum\":[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"],\"type\":\"string\",\"description\":\"Corner position for the watermark placement\"},\"paddingPx\":{\"type\":\"number\",\"description\":\"Padding from the corner in pixels\"},\"widthPx\":{\"type\":\"number\",\"description\":\"Width of the watermark overlay in pixels\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history\"}},\"required\":[\"imageUrl\",\"watermarkImageUrl\",\"corner\",\"paddingPx\",\"widthPx\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"imageUrl\":{\"type\":\"string\",\"description\":\"CDN URL of the watermarked image\"}},\"required\":[\"imageUrl\"]},\n },\n \"watermarkVideo\": {\n stepType: \"watermarkVideo\",\n description: \"Add an image watermark to a video\",\n usageNotes: \"\",\n inputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the source video\"},\"imageUrl\":{\"type\":\"string\",\"description\":\"URL of the watermark image to overlay\"},\"corner\":{\"enum\":[\"top-left\",\"top-right\",\"bottom-left\",\"bottom-right\"],\"type\":\"string\",\"description\":\"Corner position for the watermark placement\"},\"paddingPx\":{\"type\":\"number\",\"description\":\"Padding from the corner in pixels\"},\"widthPx\":{\"type\":\"number\",\"description\":\"Width of the watermark overlay in pixels\"},\"skipAssetCreation\":{\"type\":\"boolean\",\"description\":\"When true, the result will not appear in the user's asset history. Useful for intermediate compositing steps.\"}},\"required\":[\"videoUrl\",\"imageUrl\",\"corner\",\"paddingPx\",\"widthPx\"]},\n outputSchema: {\"type\":\"object\",\"properties\":{\"videoUrl\":{\"type\":\"string\",\"description\":\"URL of the watermarked video\"}},\"required\":[\"videoUrl\"]},\n },\n};\n","import { MindStudioAgent as _MindStudioAgent } from './client.js';\nimport type { StepMethods } from './generated/steps.js';\nimport type { HelperMethods } from './generated/helpers.js';\nimport type { AgentOptions } from './types.js';\n\n/** MindStudioAgent with all generated step and helper methods. */\nexport type MindStudioAgent = _MindStudioAgent & StepMethods & HelperMethods;\n\n/** {@inheritDoc MindStudioAgent} */\nexport const MindStudioAgent = _MindStudioAgent as unknown as {\n new (options?: AgentOptions): MindStudioAgent;\n};\n\nexport { MindStudioError } from './errors.js';\nexport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n StepExecutionMeta,\n AgentInfo,\n ListAgentsResult,\n RunAgentOptions,\n RunAgentResult,\n} from './types.js';\n\n// Re-export all generated types\nexport * from './generated/types.js';\nexport type { StepMethods } from './generated/steps.js';\nexport type { HelperMethods, MindStudioModel, ModelType, StepCostEstimateEntry } from './generated/helpers.js';\nexport {\n monacoSnippets,\n blockTypeAliases,\n type MonacoSnippet,\n type MonacoSnippetField,\n type MonacoSnippetFieldType,\n} from './generated/snippets.js';\nexport {\n stepMetadata,\n type StepMetadata,\n} from './generated/metadata.js';\n"],"mappings":";AAMO,IAAM,kBAAN,cAA8B,MAAM;AAAA,EAGzC,YACE,SAEgB,MAEA,QAEA,SAChB;AACA,UAAM,OAAO;AANG;AAEA;AAEA;AAAA,EAGlB;AAAA,EAZkB,OAAO;AAa3B;;;ACVA,eAAsB,QACpB,QACA,QACA,MACA,MACwC;AACxC,QAAM,MAAM,GAAG,OAAO,OAAO,gBAAgB,IAAI;AAEjD,QAAM,OAAO,YAAY,QAAQ;AAEjC,MAAI;AACF,WAAO,MAAM,iBAAoB,QAAQ,QAAQ,KAAK,MAAM,CAAC;AAAA,EAC/D,UAAE;AACA,WAAO,YAAY,QAAQ;AAAA,EAC7B;AACF;AAEA,eAAe,iBACb,QACA,QACA,KACA,MACA,SACwC;AACxC,QAAM,MAAM,MAAM,MAAM,KAAK;AAAA,IAC3B;AAAA,IACA,SAAS;AAAA,MACP,eAAe,UAAU,OAAO,KAAK;AAAA,MACrC,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB;AAAA,IACA,MAAM,QAAQ,OAAO,KAAK,UAAU,IAAI,IAAI;AAAA,EAC9C,CAAC;AAGD,SAAO,YAAY,kBAAkB,IAAI,OAAO;AAEhD,MAAI,IAAI,WAAW,OAAO,UAAU,OAAO,YAAY;AACrD,UAAM,aAAa,IAAI,QAAQ,IAAI,aAAa;AAChD,UAAM,SAAS,aAAa,WAAW,UAAU,IAAI,MAAO;AAC5D,UAAM,MAAM,MAAM;AAClB,WAAO,iBAAoB,QAAQ,QAAQ,KAAK,MAAM,UAAU,CAAC;AAAA,EACnE;AAEA,MAAI,CAAC,IAAI,IAAI;AACX,UAAM,YAAY,MAAM,IAAI,KAAK,EAAE,MAAM,OAAO,CAAC,EAAE;AACnD,UAAM,IAAI;AAAA,MACP,UAAqC,WACpC,GAAG,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,MAChC,UAAqC,QAAQ;AAAA,MAC9C,IAAI;AAAA,MACJ;AAAA,IACF;AAAA,EACF;AAEA,QAAM,OAAQ,MAAM,IAAI,KAAK;AAC7B,SAAO,EAAE,MAAM,SAAS,IAAI,QAAQ;AACtC;AAEA,SAAS,MAAM,IAA2B;AACxC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;;;ACnEA,IAAM,WAAuE;AAAA,EAC3E,UAAU,EAAE,aAAa,IAAI,SAAS,IAAI;AAAA,EAC1C,QAAQ,EAAE,aAAa,IAAI,SAAS,SAAS;AAC/C;AAEO,IAAM,cAAN,MAAkB;AAAA,EAOvB,YAAqB,UAAoB;AAApB;AACnB,SAAK,mBAAmB,SAAS,QAAQ,EAAE;AAC3C,SAAK,UAAU,SAAS,QAAQ,EAAE;AAAA,EACpC;AAAA,EATQ,WAAW;AAAA,EACX;AAAA,EACA,YAAY;AAAA,EACZ;AAAA,EACA,QAA2B,CAAC;AAAA;AAAA,EAQpC,MAAM,UAAyB;AAC7B,QAAI,KAAK,aAAa,KAAK,SAAS;AAClC,YAAM,IAAI;AAAA,QACR,qBAAqB,KAAK,OAAO;AAAA,QAEjC;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAEA,QAAI,KAAK,WAAW,KAAK,kBAAkB;AACzC,WAAK;AACL,WAAK;AACL;AAAA,IACF;AAEA,WAAO,IAAI,QAAc,CAAC,YAAY;AACpC,WAAK,MAAM,KAAK,MAAM;AACpB,aAAK;AACL,aAAK;AACL,gBAAQ;AAAA,MACV,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA;AAAA,EAGA,UAAgB;AACd,SAAK;AACL,UAAM,OAAO,KAAK,MAAM,MAAM;AAC9B,QAAI,KAAM,MAAK;AAAA,EACjB;AAAA;AAAA,EAGA,kBAAkB,SAAwB;AACxC,UAAM,cAAc,QAAQ,IAAI,+BAA+B;AAC/D,QAAI,aAAa;AACf,WAAK,mBAAmB,SAAS,aAAa,EAAE;AAAA,IAClD;AACA,UAAM,QAAQ,QAAQ,IAAI,mBAAmB;AAC7C,QAAI,SAAS,KAAK,aAAa,YAAY;AACzC,WAAK,UAAU,SAAS,OAAO,EAAE;AAAA,IACnC;AAAA,EACF;AAAA;AAAA,EAGA,OAAO,aAAa,SAGlB;AACA,UAAM,YAAY,QAAQ,IAAI,uBAAuB;AACrD,UAAM,uBAAuB,QAAQ;AAAA,MACnC;AAAA,IACF;AACA,WAAO;AAAA,MACL,WAAW,aAAa,OAAO,SAAS,WAAW,EAAE,IAAI;AAAA,MACzD,sBACE,wBAAwB,OACpB,SAAS,sBAAsB,EAAE,IACjC;AAAA,IACR;AAAA,EACF;AACF;;;ACnFA,SAAS,cAAc,eAAe,iBAAiB;AACvD,SAAS,YAAY;AACrB,SAAS,eAAe;AAYxB,SAAS,cAAc;AACrB,QAAM,MAAM,KAAK,QAAQ,GAAG,aAAa;AACzC,SAAO,EAAE,KAAK,MAAM,KAAK,KAAK,aAAa,EAAE;AAC/C;AAMO,SAAS,aAA+B;AAC7C,MAAI;AACF,UAAM,MAAM,aAAa,YAAY,EAAE,MAAM,OAAO;AACpD,WAAO,KAAK,MAAM,GAAG;AAAA,EACvB,QAAQ;AACN,WAAO,CAAC;AAAA,EACV;AACF;;;AC27FO,SAAS,iBAAiB,YAA+C;AAC9E,QAAM,QAAQ,WAAW;AAEzB,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,8BAA8B,SAAU,MAA4C,SAAgC;AACxH,WAAO,KAAK,YAAY,+BAA+B,MAA4C,OAAO;AAAA,EAC5G;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,6BAA6B,SAAU,MAA2C,SAAgC;AACtH,WAAO,KAAK,YAAY,8BAA8B,MAA4C,OAAO;AAAA,EAC3G;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,0BAA0B,SAAU,MAAwC,SAAgC;AAChH,WAAO,KAAK,YAAY,2BAA2B,MAA4C,OAAO;AAAA,EACxG;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,4BAA4B,SAAU,MAA0C,SAAgC;AACpH,WAAO,KAAK,YAAY,6BAA6B,MAA4C,OAAO;AAAA,EAC1G;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,2BAA2B,SAAU,MAAyC,SAAgC;AAClH,WAAO,KAAK,YAAY,4BAA4B,MAA4C,OAAO;AAAA,EACzG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,4BAA4B,SAAU,MAA0C,SAAgC;AACpH,WAAO,KAAK,YAAY,6BAA6B,MAA4C,OAAO;AAAA,EAC1G;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,YAAY,SAAU,MAA0B,SAAgC;AACpF,WAAO,KAAK,YAAY,aAAa,MAA4C,OAAO;AAAA,EAC1F;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,+BAA+B,SAAU,MAA6C,SAAgC;AAC1H,WAAO,KAAK,YAAY,gCAAgC,MAA4C,OAAO;AAAA,EAC7G;AAEA,QAAM,+BAA+B,SAAU,MAA6C,SAAgC;AAC1H,WAAO,KAAK,YAAY,gCAAgC,MAA4C,OAAO;AAAA,EAC7G;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,0BAA0B,SAAU,MAAwC,SAAgC;AAChH,WAAO,KAAK,YAAY,2BAA2B,MAA4C,OAAO;AAAA,EACxG;AAEA,QAAM,iBAAiB,SAAU,MAA+B,SAAgC;AAC9F,WAAO,KAAK,YAAY,kBAAkB,MAA4C,OAAO;AAAA,EAC/F;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,2BAA2B,SAAU,MAAyC,SAAgC;AAClH,WAAO,KAAK,YAAY,4BAA4B,MAA4C,OAAO;AAAA,EACzG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,gBAAgB,SAAU,MAA4B,SAAgC;AAC1F,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,+BAA+B,SAAU,MAA6C,SAAgC;AAC1H,WAAO,KAAK,YAAY,gCAAgC,MAA4C,OAAO;AAAA,EAC7G;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,yBAAyB,SAAU,MAAuC,SAAgC;AAC9G,WAAO,KAAK,YAAY,0BAA0B,MAA4C,OAAO;AAAA,EACvG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,6BAA6B,SAAU,MAA2C,SAAgC;AACtH,WAAO,KAAK,YAAY,8BAA8B,MAA4C,OAAO;AAAA,EAC3G;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,6BAA6B,SAAU,MAA2C,SAAgC;AACtH,WAAO,KAAK,YAAY,8BAA8B,MAA4C,OAAO;AAAA,EAC3G;AAEA,QAAM,4BAA4B,SAAU,MAA0C,SAAgC;AACpH,WAAO,KAAK,YAAY,6BAA6B,MAA4C,OAAO;AAAA,EAC1G;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,2BAA2B,SAAU,MAAyC,SAAgC;AAClH,WAAO,KAAK,YAAY,4BAA4B,MAA4C,OAAO;AAAA,EACzG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,QAAQ,SAAU,MAAsB,SAAgC;AAC5E,WAAO,KAAK,YAAY,SAAS,MAA4C,OAAO;AAAA,EACtF;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,aAAa,SAAU,MAA2B,SAAgC;AACtF,WAAO,KAAK,YAAY,cAAc,MAA4C,OAAO;AAAA,EAC3F;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,YAAY,SAAU,MAA0B,SAAgC;AACpF,WAAO,KAAK,YAAY,aAAa,MAA4C,OAAO;AAAA,EAC1F;AAEA,QAAM,aAAa,SAAU,MAA2B,SAAgC;AACtF,WAAO,KAAK,YAAY,cAAc,MAA4C,OAAO;AAAA,EAC3F;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,iBAAiB,SAAU,MAA+B,SAAgC;AAC9F,WAAO,KAAK,YAAY,kBAAkB,MAA4C,OAAO;AAAA,EAC/F;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,UAAU,SAAU,MAAwB,SAAgC;AAChF,WAAO,KAAK,YAAY,WAAW,MAA4C,OAAO;AAAA,EACxF;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,YAAY,SAAU,MAA0B,SAAgC;AACpF,WAAO,KAAK,YAAY,aAAa,MAA4C,OAAO;AAAA,EAC1F;AAEA,QAAM,4BAA4B,SAAU,MAA0C,SAAgC;AACpH,WAAO,KAAK,YAAY,6BAA6B,MAA4C,OAAO;AAAA,EAC1G;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,2BAA2B,SAAU,MAAyC,SAAgC;AAClH,WAAO,KAAK,YAAY,4BAA4B,MAA4C,OAAO;AAAA,EACzG;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,0BAA0B,SAAU,MAAwC,SAAgC;AAChH,WAAO,KAAK,YAAY,2BAA2B,MAA4C,OAAO;AAAA,EACxG;AAEA,QAAM,0BAA0B,SAAU,MAAwC,SAAgC;AAChH,WAAO,KAAK,YAAY,2BAA2B,MAA4C,OAAO;AAAA,EACxG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,yBAAyB,SAAU,MAAuC,SAAgC;AAC9G,WAAO,KAAK,YAAY,0BAA0B,MAA4C,OAAO;AAAA,EACvG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,2BAA2B,SAAU,MAAyC,SAAgC;AAClH,WAAO,KAAK,YAAY,4BAA4B,MAA4C,OAAO;AAAA,EACzG;AAEA,QAAM,YAAY,SAAU,MAA0B,SAAgC;AACpF,WAAO,KAAK,YAAY,aAAa,MAA4C,OAAO;AAAA,EAC1F;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,iBAAiB,SAAU,MAA+B,SAAgC;AAC9F,WAAO,KAAK,YAAY,kBAAkB,MAA4C,OAAO;AAAA,EAC/F;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,6BAA6B,SAAU,MAA2C,SAAgC;AACtH,WAAO,KAAK,YAAY,8BAA8B,MAA4C,OAAO;AAAA,EAC3G;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,YAAY,SAAU,MAA0B,SAAgC;AACpF,WAAO,KAAK,YAAY,aAAa,MAA4C,OAAO;AAAA,EAC1F;AAEA,QAAM,iBAAiB,SAAU,MAA+B,SAAgC;AAC9F,WAAO,KAAK,YAAY,kBAAkB,MAA4C,OAAO;AAAA,EAC/F;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,UAAU,SAAU,MAAwB,SAAgC;AAChF,WAAO,KAAK,YAAY,WAAW,MAA4C,OAAO;AAAA,EACxF;AAEA,QAAM,qBAAqB,SAAU,MAAmC,SAAgC;AACtG,WAAO,KAAK,YAAY,sBAAsB,MAA4C,OAAO;AAAA,EACnG;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,cAAc,SAAU,MAA4B,SAAgC;AACxF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,yBAAyB,SAAU,MAAuC,SAAgC;AAC9G,WAAO,KAAK,YAAY,0BAA0B,MAA4C,OAAO;AAAA,EACvG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,mBAAmB,SAAU,MAAiC,SAAgC;AAClG,WAAO,KAAK,YAAY,oBAAoB,MAA4C,OAAO;AAAA,EACjG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,sBAAsB,SAAU,MAAoC,SAAgC;AACxG,WAAO,KAAK,YAAY,uBAAuB,MAA4C,OAAO;AAAA,EACpG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,YAAY,SAAU,MAA0B,SAAgC;AACpF,WAAO,KAAK,YAAY,aAAa,MAA4C,OAAO;AAAA,EAC1F;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,4BAA4B,SAAU,MAA0C,SAAgC;AACpH,WAAO,KAAK,YAAY,6BAA6B,MAA4C,OAAO;AAAA,EAC1G;AAEA,QAAM,kBAAkB,SAAU,MAAgC,SAAgC;AAChG,WAAO,KAAK,YAAY,mBAAmB,MAA4C,OAAO;AAAA,EAChG;AAEA,QAAM,oBAAoB,SAAU,MAAkC,SAAgC;AACpG,WAAO,KAAK,YAAY,qBAAqB,MAA4C,OAAO;AAAA,EAClG;AAEA,QAAM,2BAA2B,SAAU,MAAyC,SAAgC;AAClH,WAAO,KAAK,YAAY,4BAA4B,MAA4C,OAAO;AAAA,EACzG;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,eAAe,SAAU,MAA6B,SAAgC;AAC1F,WAAO,KAAK,YAAY,gBAAgB,MAA4C,OAAO;AAAA,EAC7F;AAEA,QAAM,eAAe,SAAU,MAA4B,SAAgC;AACzF,WAAO,KAAK,YAAY,eAAe,MAA4C,OAAO;AAAA,EAC5F;AAEA,QAAM,gBAAgB,SAAU,MAA8B,SAAgC;AAC5F,WAAO,KAAK,YAAY,iBAAiB,MAA4C,OAAO;AAAA,EAC9F;AAEA,QAAM,wBAAwB,SAAU,MAAsC,SAAgC;AAC5G,WAAO,KAAK,YAAY,yBAAyB,MAA4C,OAAO;AAAA,EACtG;AAEA,QAAM,uBAAuB,SAAU,MAAqC,SAAgC;AAC1G,WAAO,KAAK,YAAY,wBAAwB,MAA4C,OAAO;AAAA,EACrG;AAEA,QAAM,iBAAiB,SAAU,MAA+B,SAAgC;AAC9F,WAAO,KAAK,YAAY,kBAAkB,MAA4C,OAAO;AAAA,EAC/F;AAEA,QAAM,iBAAiB,SAAU,MAA+B,SAAgC;AAC9F,WAAO,KAAK,YAAY,kBAAkB,MAA4C,OAAO;AAAA,EAC/F;AAEF;;;AC93GO,SAAS,mBAAmB,YAA+C;AAChF,QAAM,QAAQ,WAAW;AAEzB,QAAM,aAAa,WAAY;AAC7B,WAAO,KAAK,SAAS,OAAO,iBAAiB,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EACxE;AAEA,QAAM,mBAAmB,SAAU,WAAmB;AACpD,WAAO,KAAK,SAAS,OAAO,mBAAmB,SAAS,EAAE,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EACrF;AAEA,QAAM,oBAAoB,WAAY;AACpC,WAAO,KAAK,SAAS,OAAO,yBAAyB,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EAChF;AAEA,QAAM,0BAA0B,SAAU,WAAmB;AAC3D,WAAO,KAAK,SAAS,OAAO,2BAA2B,SAAS,EAAE,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EAC7F;AAEA,QAAM,iBAAiB,WAAY;AACjC,WAAO,KAAK,SAAS,OAAO,qBAAqB,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EAC5E;AAEA,QAAM,eAAe,SAAU,WAAmB;AAChD,WAAO,KAAK,SAAS,OAAO,uBAAuB,SAAS,EAAE,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EACzF;AAEA,QAAM,qBAAqB,SAAU,WAAmB,UAAkB;AACxE,WAAO,KAAK,SAAS,OAAO,uBAAuB,SAAS,IAAI,QAAQ,EAAE,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EACrG;AAEA,QAAM,kBAAkB,WAAY;AAClC,WAAO,KAAK,SAAS,OAAO,sBAAsB,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EAC7E;AAEA,QAAM,mBAAmB,SAAU,UAAkB,MAAgC,SAAmD;AACtI,WAAO,KAAK,SAAS,QAAQ,+BAA+B,EAAE,MAAM,EAAE,MAAM,UAAU,GAAG,KAAK,GAAG,GAAG,QAAQ,CAAC,EAAE,KAAK,CAAC,MAAW,EAAE,IAAI;AAAA,EACxI;AAEA,QAAM,aAAa,SAAU,aAAqB;AAChD,WAAO,KAAK,SAAS,QAAQ,wBAAwB,EAAE,YAAY,CAAC,EAAE,KAAK,MAAM;AAAA,IAAC,CAAC;AAAA,EACrF;AAEA,QAAM,uBAAuB,SAAU,mBAA2B;AAChE,WAAO,KAAK,SAAS,QAAQ,mCAAmC,EAAE,kBAAkB,CAAC,EAAE,KAAK,MAAM;AAAA,IAAC,CAAC;AAAA,EACtG;AAEA,QAAM,aAAa,eAAgB,SAA8B,SAA+C;AAC9G,UAAM,EAAE,KAAK,IAAI,MAAM,KAAK,SAAS,QAAQ,mBAAmB,EAAE,WAAW,QAAQ,WAAW,GAAI,QAAQ,QAAQ,QAAQ,EAAE,MAAM,QAAQ,KAAK,EAAG,CAAC;AACrJ,UAAM,EAAE,WAAW,IAAI,IAAI;AAC3B,UAAM,MAAM,QAAQ,OAAO,MAAM,QAAQ,YAAY,QAAQ,aAAa,QAAQ,UAAU;AAC5F,UAAM,MAAM,MAAM,MAAM,WAAW;AAAA,MACjC,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,SAAS,QAAQ,OAAO,EAAE,gBAAgB,QAAQ,KAAK,IAAI,CAAC;AAAA,IAC9D,CAAC;AACD,QAAI,CAAC,IAAI,GAAI,OAAM,IAAI,MAAM,kBAAkB,IAAI,MAAM,IAAI,IAAI,UAAU,EAAE;AAC7E,WAAO,EAAE,IAAI;AAAA,EACf;AACF;;;AC5PA,IAAM,mBAAmB;AACzB,IAAM,sBAAsB;AA+BrB,IAAM,kBAAN,MAAsB;AAAA;AAAA,EAElB;AAAA;AAAA,EAED;AAAA;AAAA,EAEA;AAAA,EAER,YAAY,UAAwB,CAAC,GAAG;AACtC,UAAM,SAAS,WAAW;AAC1B,UAAM,EAAE,OAAO,SAAS,IAAI,aAAa,QAAQ,QAAQ,MAAM;AAC/D,UAAM,UACJ,QAAQ,WACR,QAAQ,IAAI,uBACZ,QAAQ,IAAI,mBACZ,OAAO,WACP;AAEF,SAAK,iBACH,QAAQ,iBACR,cAAc,KAAK,QAAQ,IAAI,8BAA8B,EAAE;AAEjE,SAAK,cAAc;AAAA,MACjB;AAAA,MACA;AAAA,MACA,aAAa,IAAI,YAAY,QAAQ;AAAA,MACrC,YAAY,QAAQ,cAAc;AAAA,IACpC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YACJ,UACA,MACA,SACuC;AACvC,UAAM,WACJ,SAAS,aAAa,KAAK,iBAAiB,KAAK,YAAY;AAE/D,UAAM,EAAE,MAAM,QAAQ,IAAI,MAAM,QAG7B,KAAK,aAAa,QAAQ,UAAU,QAAQ,YAAY;AAAA,MACzD;AAAA,MACA,GAAI,SAAS,SAAS,QAAQ,EAAE,OAAO,QAAQ,MAAM;AAAA,MACrD,GAAI,YAAY,QAAQ,EAAE,SAAS;AAAA,IACrC,CAAC;AAED,QAAI;AACJ,QAAI,KAAK,UAAU,MAAM;AACvB,eAAS,KAAK;AAAA,IAChB,WAAW,KAAK,WAAW;AACzB,YAAM,MAAM,MAAM,MAAM,KAAK,SAAS;AACtC,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,mCAAmC,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,UAC/D;AAAA,UACA,IAAI;AAAA,QACN;AAAA,MACF;AACA,YAAM,WAAY,MAAM,IAAI,KAAK;AACjC,eAAS,SAAS;AAAA,IACpB,OAAO;AACL,eAAS;AAAA,IACX;AAEA,UAAM,mBAAmB,QAAQ,IAAI,wBAAwB,KAAK;AAClE,QAAI,KAAK,kBAAkB,kBAAkB;AAC3C,WAAK,YAAY;AAAA,IACnB;AAEA,UAAM,YAAY,QAAQ,IAAI,uBAAuB;AACrD,UAAM,cAAc,QAAQ,IAAI,2BAA2B;AAC3D,UAAM,gBAAgB,QAAQ,IAAI,6BAA6B;AAE/D,WAAO;AAAA,MACL,GAAI;AAAA,MACJ,QAAQ,QAAQ,IAAI,qBAAqB,KAAK;AAAA,MAC9C,WAAW;AAAA,MACX,qBACE,aAAa,OAAO,SAAS,WAAW,EAAE,IAAI;AAAA,MAChD,cACE,eAAe,OAAO,WAAW,WAAW,IAAI;AAAA,MAClD,gBACE,iBAAiB,OACZ,KAAK,MAAM,aAAa,IACzB;AAAA,IACR;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,aAAwC;AAC5C,UAAM,EAAE,KAAK,IAAI,MAAM;AAAA,MACrB,KAAK;AAAA,MACL;AAAA,MACA;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,SAAS,SAAmD;AAChE,UAAM,eAAe,QAAQ,kBAAkB;AAE/C,UAAM,EAAE,KAAK,IAAI,MAAM,QAIpB,KAAK,aAAa,QAAQ,eAAe;AAAA,MAC1C,OAAO,QAAQ;AAAA,MACf,OAAO;AAAA,MACP,GAAI,QAAQ,aAAa,QAAQ,EAAE,WAAW,QAAQ,UAAU;AAAA,MAChE,GAAI,QAAQ,YAAY,QAAQ,EAAE,UAAU,QAAQ,SAAS;AAAA,MAC7D,GAAI,QAAQ,WAAW,QAAQ,EAAE,SAAS,QAAQ,QAAQ;AAAA,MAC1D,GAAI,QAAQ,sBAAsB,QAAQ;AAAA,QACxC,oBAAoB,QAAQ;AAAA,MAC9B;AAAA,MACA,GAAI,QAAQ,YAAY,QAAQ,EAAE,UAAU,QAAQ,SAAS;AAAA,IAC/D,CAAC;AAED,UAAM,QAAQ,KAAK;AACnB,UAAM,UAAU,GAAG,KAAK,YAAY,OAAO,iCAAiC,KAAK;AAGjF,WAAO,MAAM;AACX,YAAMA,OAAM,YAAY;AAExB,YAAM,MAAM,MAAM,MAAM,SAAS;AAAA,QAC/B,SAAS,EAAE,cAAc,uBAAuB;AAAA,MAClD,CAAC;AAED,UAAI,IAAI,WAAW,KAAK;AACtB,cAAM,IAAI;AAAA,UACR;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,IAAI,IAAI;AACX,cAAM,IAAI;AAAA,UACR,wBAAwB,IAAI,MAAM,IAAI,IAAI,UAAU;AAAA,UACpD;AAAA,UACA,IAAI;AAAA,QACN;AAAA,MACF;AAEA,YAAM,OAAQ,MAAM,IAAI,KAAK;AAM7B,UAAI,KAAK,WAAW,UAAW;AAE/B,UAAI,KAAK,WAAW,SAAS;AAC3B,cAAM,IAAI;AAAA,UACR,KAAK,SAAS;AAAA,UACd;AAAA,UACA;AAAA,QACF;AAAA,MACF;AAEA,aAAO,KAAK;AAAA,IACd;AAAA,EACF;AAAA;AAAA,EAGA,SAAY,QAAwB,MAAc,MAAgB;AAChE,WAAO,QAAW,KAAK,aAAa,QAAQ,MAAM,IAAI;AAAA,EACxD;AACF;AAEA,SAASA,OAAM,IAA2B;AACxC,SAAO,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,EAAE,CAAC;AACzD;AAKA,iBAAiB,eAAe;AAChC,mBAAmB,eAAe;AAElC,SAAS,aACP,UACA,QAIA;AACA,MAAI,SAAU,QAAO,EAAE,OAAO,UAAU,UAAU,SAAS;AAC3D,MAAI,QAAQ,IAAI;AACd,WAAO,EAAE,OAAO,QAAQ,IAAI,oBAAoB,UAAU,SAAS;AACrE,MAAI,QAAQ;AACV,WAAO,EAAE,OAAO,OAAO,QAAQ,UAAU,SAAS;AACpD,MAAI,QAAQ,IAAI;AACd,WAAO,EAAE,OAAO,QAAQ,IAAI,gBAAgB,UAAU,WAAW;AACnE,QAAM,IAAI;AAAA,IACR;AAAA,IAEA;AAAA,IACA;AAAA,EACF;AACF;;;ACvQO,IAAM,iBAAgD;AAAA,EAC3D,yBAAyB,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACjG,+BAA+B,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EACrN,uBAAuB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,cAAc,CAAC,UAAU,QAAQ,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,SAAS,OAAO,SAAS,QAAQ,UAAU,UAAU,UAAU,QAAQ,SAAS,QAAQ,QAAQ,SAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,SAAS,SAAS,OAAO,SAAS,QAAQ,UAAU,UAAU,UAAU,QAAQ,SAAS,QAAQ,QAAQ,SAAS,CAAC,GAAG,CAAC,eAAe,QAAQ,GAAG,CAAC,eAAe,CAAC,SAAS,SAAS,OAAO,SAAS,QAAQ,UAAU,UAAU,UAAU,QAAQ,SAAS,QAAQ,QAAQ,SAAS,CAAC,GAAG,CAAC,mBAAmB,CAAC,SAAS,SAAS,OAAO,SAAS,QAAQ,UAAU,UAAU,UAAU,QAAQ,SAAS,QAAQ,QAAQ,WAAW,MAAM,CAAC,GAAG,CAAC,qBAAqB,QAAQ,GAAG,CAAC,YAAY,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,oBAAoB,QAAQ,GAAG,CAAC,mBAAmB,SAAS,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACh7B,8BAA8B,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAChK,wBAAwB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACjI,qBAAqB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EAC7H,2BAA2B,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC5G,gBAAgB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACnG,gBAAgB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACnG,oBAAoB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,YAAY,CAAC,cAAc,EAAE;AAAA,EACvG,wBAAwB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EACnF,uBAAuB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE;AAAA,EAC5H,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE;AAAA,EAClH,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC9F,oBAAoB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACjG,sBAAsB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAClF,oBAAoB,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACnE,oBAAoB,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,eAAe,CAAC,SAAS,QAAQ,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACxK,6BAA6B,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,iBAAiB,QAAQ,GAAG,CAAC,eAAe,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAU,UAAU,EAAE;AAAA,EAC3J,mBAAmB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,YAAY,CAAC,SAAS,QAAQ,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,aAAa,EAAE;AAAA,EACjJ,qBAAqB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,gBAAgB,EAAE;AAAA,EACzG,oBAAoB,EAAE,QAAQ,CAAC,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC3E,4BAA4B,EAAE,QAAQ,CAAC,CAAC,gBAAgB,QAAQ,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC7G,oBAAoB,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACxE,6BAA6B,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC/E,yBAAyB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC5H,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,cAAa,gBAAe,iBAAgB,YAAY,EAAE;AAAA,EACzJ,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,OAAO,CAAC,GAAG,YAAY,CAAC,YAAW,YAAY,EAAE;AAAA,EACnI,sBAAsB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC/I,uBAAuB,EAAE,QAAQ,CAAC,CAAC,iBAAiB,QAAQ,GAAG,CAAC,oBAAoB,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAC9I,sBAAsB,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACjG,iBAAiB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC1G,gCAAgC,EAAE,QAAQ,CAAC,CAAC,iBAAiB,QAAQ,GAAG,CAAC,yBAAyB,SAAS,GAAG,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EAClK,gCAAgC,EAAE,QAAQ,CAAC,CAAC,iBAAiB,QAAQ,GAAG,CAAC,yBAAyB,SAAS,GAAG,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EAClK,gBAAgB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACvE,yBAAyB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACtF,eAAe,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACnE,2BAA2B,EAAE,QAAQ,CAAC,CAAC,gBAAgB,QAAQ,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC5G,kBAAkB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,YAAY,QAAQ,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACvI,oBAAoB,EAAE,QAAQ,CAAC,CAAC,iBAAiB,QAAQ,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,OAAO,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC3I,4BAA4B,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC1F,wBAAwB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,aAAa,EAAE;AAAA,EAClJ,uBAAuB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACrF,wBAAwB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACjJ,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE;AAAA,EAC/E,iBAAiB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,YAAY,OAAO,OAAO,WAAW,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,OAAO,QAAQ,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,UAAU,MAAM,QAAQ,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE;AAAA,EACjS,iBAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC3E,iBAAiB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC5E,mBAAmB,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAChD,iBAAiB,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAChE,eAAe,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,YAAY,OAAO,OAAO,WAAW,iBAAiB,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,OAAO,QAAQ,OAAO,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,UAAU,MAAM,QAAQ,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,KAAK,EAAE;AAAA,EAC/R,gCAAgC,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACrH,gBAAgB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC3E,iBAAiB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC5E,uBAAuB,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC3E,iBAAiB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAU,aAAY,WAAU,MAAK,QAAO,MAAM,EAAE;AAAA,EACrH,iBAAiB,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,CAAC,GAAG,YAAY,CAAC,aAAY,WAAU,QAAO,MAAK,QAAO,QAAO,QAAQ,EAAE;AAAA,EAC7H,uBAAuB,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACpD,0BAA0B,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE;AAAA,EACrH,sBAAsB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,OAAM,QAAO,YAAW,MAAM,EAAE;AAAA,EACrG,sBAAsB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAQ,QAAQ,EAAE;AAAA,EAC3F,oBAAoB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACjF,eAAe,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,eAAe,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,eAAe,CAAC,QAAQ,oBAAoB,qCAAqC,uBAAuB,QAAQ,CAAC,GAAG,CAAC,qBAAqB,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAK,UAAS,cAAa,UAAU,EAAE;AAAA,EAC7W,wBAAwB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,qBAAqB,OAAO,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EACrH,wBAAwB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,qBAAqB,OAAO,GAAG,CAAC,iBAAiB,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAClJ,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,UAAU,IAAI,CAAC,GAAG,CAAC,iBAAiB,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,wBAAwB,OAAO,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAClL,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,wBAAwB,OAAO,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAChL,8BAA8B,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACrF,yBAAyB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAChF,wBAAwB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAChI,8BAA8B,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACpF,6BAA6B,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACnF,iBAAiB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAChI,wBAAwB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC3G,oBAAoB,EAAE,QAAQ,CAAC,CAAC,gBAAgB,QAAQ,GAAG,CAAC,iBAAiB,OAAO,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACjH,mBAAmB,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAChD,mBAAmB,EAAE,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EACxF,mBAAmB,EAAE,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAChD,4BAA4B,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EACtH,wBAAwB,EAAE,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE;AAAA,EAC5F,yBAAyB,EAAE,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC3G,SAAS,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,SAAS,OAAO,CAAC,GAAG,YAAY,CAAC,cAAc,EAAE;AAAA,EAC7F,yBAAyB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACzG,cAAc,EAAE,QAAQ,CAAC,CAAC,WAAW,OAAO,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACzE,eAAe,EAAE,QAAQ,CAAC,CAAC,aAAa,OAAO,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC5E,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACjI,aAAa,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC1E,cAAc,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,kBAAkB,CAAC,QAAQ,SAAS,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACjN,oBAAoB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAS,SAAS,EAAE;AAAA,EACnI,oBAAoB,EAAE,QAAQ,CAAC,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,QAAQ,CAAC,UAAU,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC,UAAS,SAAS,EAAE;AAAA,EACjJ,gBAAgB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,gBAAgB,SAAS,GAAG,CAAC,uBAAuB,SAAS,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC9M,kBAAkB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,cAAc,CAAC,UAAU,aAAa,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC/G,sBAAsB,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,GAAG,CAAC,eAAe,CAAC,UAAU,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACxI,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC1D,gBAAgB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAChG,mBAAmB,EAAE,QAAQ,CAAC,CAAC,gBAAgB,QAAQ,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAO,UAAS,SAAQ,aAAY,WAAW,EAAE;AAAA,EACxK,yBAAyB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,gBAAgB,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAClH,aAAa,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAClH,6BAA6B,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC1F,qBAAqB,EAAE,QAAQ,CAAC,CAAC,aAAa,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,eAAe,CAAC,SAAS,QAAQ,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAC3J,eAAe,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC,OAAO,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACxG,4BAA4B,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,eAAe,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,uBAAuB,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACvK,uBAAuB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,kBAAkB,QAAQ,GAAG,CAAC,mBAAmB,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACxL,sBAAsB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAC9E,uBAAuB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAC/E,2BAA2B,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAC/G,2BAA2B,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAClH,wBAAwB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,sBAAsB,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACjJ,0BAA0B,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACrF,wBAAwB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAC/G,yBAAyB,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAChF,yBAAyB,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAChF,4BAA4B,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACvF,aAAa,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACpE,eAAe,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EACnE,kBAAkB,EAAE,QAAQ,CAAC,CAAC,OAAO,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACzE,qBAAqB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EACpI,gBAAgB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC3G,8BAA8B,EAAE,QAAQ,CAAC,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EACnG,qBAAqB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE;AAAA,EAC9G,sBAAsB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EAChH,oBAAoB,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC/G,sBAAsB,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,OAAO,QAAQ,GAAG,CAAC,aAAa,CAAC,cAAc,WAAW,aAAa,kBAAkB,iBAAiB,CAAC,GAAG,CAAC,OAAO,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EACvQ,oBAAoB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,CAAC,QAAQ,MAAM,CAAC,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC/G,gBAAgB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,SAAS,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE;AAAA,EAC5H,iBAAiB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,cAAc,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EACpJ,uBAAuB,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,SAAS,UAAU,OAAO,CAAC,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,MAAM,QAAQ,CAAC,GAAG,YAAY,CAAC,QAAQ,EAAE;AAAA,EAC3I,aAAa,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,YAAY,EAAE;AAAA,EAC/F,kBAAkB,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACpE,oBAAoB,EAAE,QAAQ,CAAC,CAAC,MAAM,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,WAAW,QAAQ,GAAG,CAAC,eAAe,CAAC,SAAS,QAAQ,UAAU,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAC1K,WAAW,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC1D,sBAAsB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,cAAc,SAAS,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACtG,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC/D,eAAe,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC/D,uBAAuB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC7I,0BAA0B,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,oBAAoB,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAClK,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,QAAQ,CAAC,SAAS,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACpJ,oBAAoB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACpH,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACtH,uBAAuB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAW,EAAE;AAAA,EAC/H,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EACtH,qBAAqB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC9F,gBAAgB,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACzE,mBAAmB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE;AAAA,EAClG,aAAa,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC1E,qBAAqB,EAAE,QAAQ,CAAC,CAAC,SAAS,QAAQ,GAAG,CAAC,cAAc,QAAQ,GAAG,CAAC,eAAe,QAAQ,GAAG,CAAC,kBAAkB,QAAQ,CAAC,GAAG,YAAY,CAAC,mBAAmB,EAAE;AAAA,EAC3K,6BAA6B,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,WAAU,UAAU,EAAE;AAAA,EACnG,mBAAmB,EAAE,QAAQ,CAAC,CAAC,cAAc,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,YAAY,CAAC,SAAS,QAAQ,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,eAAe,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC,aAAa,EAAE;AAAA,EACnN,qBAAqB,EAAE,QAAQ,CAAC,CAAC,QAAQ,QAAQ,GAAG,CAAC,iBAAiB,QAAQ,GAAG,CAAC,SAAS,QAAQ,GAAG,CAAC,iBAAiB,CAAC,eAAe,aAAa,OAAO,CAAC,CAAC,GAAG,YAAY,CAAC,gBAAgB,EAAE;AAAA,EAChM,4BAA4B,EAAE,QAAQ,CAAC,CAAC,gBAAgB,QAAQ,GAAG,CAAC,QAAQ,QAAQ,GAAG,CAAC,YAAY,QAAQ,CAAC,GAAG,YAAY,CAAC,EAAE;AAAA,EAC/H,gBAAgB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,oBAAoB,CAAC,MAAM,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACxJ,gBAAgB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,oBAAoB,CAAC,QAAQ,SAAS,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,YAAY,OAAO,YAAY,YAAY,YAAY,WAAW,qBAAqB,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACzO,eAAe,EAAE,QAAQ,CAAC,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,SAAS,EAAE;AAAA,EAC1E,iBAAiB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,gBAAgB,QAAQ,GAAG,CAAC,eAAe,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC3J,yBAAyB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,iBAAiB,CAAC,eAAe,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACzJ,wBAAwB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EAC3G,kBAAkB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,qBAAqB,QAAQ,GAAG,CAAC,UAAU,CAAC,YAAY,aAAa,eAAe,cAAc,CAAC,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAAA,EACtO,kBAAkB,EAAE,QAAQ,CAAC,CAAC,YAAY,QAAQ,GAAG,CAAC,YAAY,QAAQ,GAAG,CAAC,UAAU,CAAC,YAAY,aAAa,eAAe,cAAc,CAAC,GAAG,CAAC,aAAa,QAAQ,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,YAAY,CAAC,UAAU,EAAE;AAC/N;AAEO,IAAM,mBAA2C;AAAA,EACtD,eAAe;AAAA,EACf,eAAe;AACjB;;;ACpKO,IAAM,eAA6C;AAAA,EACxD,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,aAAY,MAAM,EAAC;AAAA,IACtT,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,+BAA+B;AAAA,IAC7B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,0DAAyD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,SAAQ,aAAY,YAAW,SAAQ,aAAY,cAAc,EAAC;AAAA,IAC3oB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EACvK;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,cAAa,EAAC,QAAO,CAAC,UAAS,QAAO,OAAO,GAAE,QAAO,UAAS,eAAc,gCAA+B,GAAE,aAAY,EAAC,QAAO,CAAC,SAAQ,SAAQ,OAAM,SAAQ,QAAO,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,SAAS,GAAE,QAAO,UAAS,eAAc,6BAA4B,GAAE,kBAAiB,EAAC,QAAO,CAAC,SAAQ,SAAQ,OAAM,SAAQ,QAAO,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,SAAS,GAAE,QAAO,UAAS,eAAc,oDAAmD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,eAAc,EAAC,QAAO,CAAC,SAAQ,SAAQ,OAAM,SAAQ,QAAO,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,SAAS,GAAE,QAAO,UAAS,eAAc,mCAAkC,GAAE,mBAAkB,EAAC,QAAO,CAAC,SAAQ,SAAQ,OAAM,SAAQ,QAAO,UAAS,UAAS,UAAS,QAAO,SAAQ,QAAO,QAAO,WAAU,MAAM,GAAE,QAAO,UAAS,eAAc,qEAAoE,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mFAAkF,GAAE,YAAW,EAAC,QAAO,CAAC,OAAM,UAAS,QAAQ,GAAE,QAAO,UAAS,eAAc,+CAA8C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,oGAAmG,GAAE,oBAAmB,EAAC,QAAO,UAAS,eAAc,8IAA6I,GAAE,mBAAkB,EAAC,QAAO,WAAU,eAAc,mFAAkF,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,YAAW,YAAW,YAAW,cAAa,aAAY,kBAAiB,eAAc,eAAc,mBAAkB,qBAAoB,YAAW,WAAU,oBAAmB,iBAAiB,EAAC;AAAA,IAC58E,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,wCAAuC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC1J;AAAA,EACA,8BAA8B;AAAA,IAC5B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,cAAa,EAAC,QAAO,CAAC,iBAAgB,KAAK,GAAE,QAAO,UAAS,eAAc,mGAAkG,GAAE,UAAS,EAAC,eAAc,iDAAgD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,yCAAwC,EAAC,GAAE,YAAW,CAAC,UAAS,WAAU,UAAS,YAAY,EAAC;AAAA,IACvtB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0DAAyD,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC5K;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,sBAAqB,EAAC,GAAE,YAAW,CAAC,UAAS,WAAU,UAAU,EAAC;AAAA,IAChW,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,WAAU,eAAc,8CAA6C,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC/J;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,sCAAuC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,uCAAwC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,wCAAyC,EAAC,GAAE,YAAW,CAAC,UAAS,WAAU,UAAU,EAAC;AAAA,IAC9Z,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,MAAK,eAAc,QAAQ,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EACzZ;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,sCAAuC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,uCAAwC,GAAE,gBAAe,EAAC,QAAO,CAAC,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,mDAAkD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,UAAS,SAAS,EAAC;AAAA,IAC/hB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,MAAK,eAAc,QAAQ,EAAC,GAAE,eAAc,wDAAuD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC9d;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qEAAoE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,uBAAsB,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC,GAAE,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,UAAS,UAAU,EAAC;AAAA,IAC33D,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,2DAA0D,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC7K;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qEAAoE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,8BAA6B,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC,GAAE,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,UAAS,UAAU,EAAC;AAAA,IACl4D,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,mEAAkE,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACrL;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,MAAK,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,YAAW,IAAI,EAAC;AAAA,IAC3N,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,cAAc,EAAC;AAAA,EAChK;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,YAAW,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,gDAA+C,GAAE,eAAc,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,CAAC,CAAC,EAAC,GAAE,iBAAgB,EAAC,eAAc,6CAA4C,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,yDAA4D,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAO,YAAW,YAAW,YAAW,aAAa,GAAE,eAAc,qFAAoF,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IAChjC,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,kDAAiD,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EAChK;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,YAAW,CAAC,SAAQ,WAAU,SAAS,EAAC;AAAA,IAC7c,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,gDAA+C,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,EAC5J;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,sFAAqF,EAAC,GAAE,YAAW,CAAC,SAAQ,WAAU,SAAS,EAAC;AAAA,IACha,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,cAAa,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,MAAK,QAAQ,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,EACjS;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,gBAAe,EAAC,QAAO,CAAC,QAAO,UAAU,GAAE,QAAO,UAAS,eAAc,yDAAwD,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAQ,EAAC;AAAA,IACzZ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,0DAAyD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC1K;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,SAAQ,EAAC,QAAO,CAAC,UAAS,QAAQ,EAAC,GAAE,gBAAe,EAAC,QAAO,CAAC,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,SAAQ,SAAS,EAAC;AAAA,IACtb,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,cAAa,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,MAAK,QAAQ,EAAC,GAAE,eAAc,iDAAgD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC/V;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IAChJ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EAC9M;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,IACxK,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA;AAAA;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,eAAc,EAAC,QAAO,CAAC,SAAQ,QAAO,UAAU,GAAE,QAAO,UAAS,eAAc,8CAAmD,EAAC,GAAE,YAAW,CAAC,MAAK,WAAU,WAAU,aAAa,EAAC;AAAA,IAChhB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,iBAAgB,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACjI;AAAA,EACA,6BAA6B;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,cAAa,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,eAAc,EAAC,QAAO,WAAU,eAAc,kDAAiD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAkD,EAAC,GAAE,YAAW,CAAC,WAAU,iBAAgB,aAAa,EAAC;AAAA,IACrxB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,YAAW,CAAC,WAAU,UAAU,EAAC;AAAA,EAC5O;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,YAAW,EAAC,QAAO,CAAC,SAAQ,QAAO,UAAU,GAAE,QAAO,UAAS,eAAc,2DAAgE,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAO,UAAU,EAAC;AAAA,IAClb,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,YAAW,CAAC,aAAa,EAAC;AAAA,EACnK;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,SAAQ,MAAM,EAAC;AAAA,IACzS,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,kBAAiB,EAAC,QAAO,UAAS,eAAc,8CAA6C,EAAC,GAAE,YAAW,CAAC,gBAAgB,EAAC;AAAA,EAC5K;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,oEAAmE,EAAC,GAAE,YAAW,CAAC,cAAc,EAAC;AAAA,IAC3L,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,4BAA4B;AAAA,IAC1B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,kFAAiF,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,gBAAe,YAAY,EAAC;AAAA,IACpU,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,IAC1O,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,6BAA6B;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAkD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IAC9T,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,cAAa,YAAW,QAAQ,EAAC;AAAA,IAClf,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,CAAC,MAAK,YAAY,GAAE,QAAO,UAAS,eAAc,uGAAsG,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,gDAA+C,GAAE,iBAAgB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,mCAAkC,GAAE,yBAAwB,EAAC,QAAO,UAAS,eAAc,gFAA+E,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,uBAAsB,EAAC,QAAO,UAAS,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,QAAO,OAAO,GAAE,eAAc,4CAA2C;AAAA,IACtiF,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,WAAU,eAAc,gCAA+B,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,6DAA4D,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,cAAa,gBAAe,iBAAgB,YAAY,EAAC;AAAA,EAC7c;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,uDAAsD,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,8CAA+C,GAAE,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,+GAAkH,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,2DAA0D,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,8DAA6D,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAW,UAAU,EAAC;AAAA,IAC7wB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,WAAU,eAAc,8CAA6C,GAAE,cAAa,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,UAAS,eAAc,mEAAwE,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,eAAc,SAAQ,OAAM,OAAO,EAAC,GAAE,eAAc,oEAAmE,EAAC,GAAE,YAAW,CAAC,YAAW,YAAY,EAAC;AAAA,EAC1tB;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,+DAA8D,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,0FAAyF,EAAC,GAAE,YAAW,CAAC,YAAW,aAAY,aAAY,MAAM,EAAC;AAAA,IAC5lB,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,iBAAgB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,oBAAmB,EAAC,QAAO,UAAS,eAAc,oFAA8E,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,sDAAqD,EAAC,GAAE,YAAW,CAAC,iBAAgB,oBAAmB,MAAM,EAAC;AAAA,IAC3f,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EACvJ;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,0EAA6E,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,+EAAgF,GAAE,oBAAmB,EAAC,QAAO,UAAS,eAAc,gHAA4G,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,kEAAmE,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,uEAAwE,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,sDAAqD,EAAC,GAAE,YAAW,CAAC,QAAO,MAAM,EAAC;AAAA,IAC53B,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,8FAA+F,EAAC,EAAC;AAAA,EAC3L;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,2EAA0E,GAAE,UAAS,EAAC,QAAO,CAAC,OAAM,KAAK,GAAE,QAAO,UAAS,eAAc,wCAAuC,EAAC,GAAE,YAAW,CAAC,YAAW,QAAQ,EAAC;AAAA,IACzS,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,iDAAgD,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACnK;AAAA,EACA,gCAAgC;AAAA,IAC9B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,iBAAgB,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,yBAAwB,EAAC,QAAO,WAAU,eAAc,6CAA4C,GAAE,yCAAwC,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,wFAAuF,GAAE,iBAAgB,EAAC,eAAc,oEAAmE,EAAC,GAAE,YAAW,CAAC,iBAAgB,yBAAwB,cAAc,EAAC;AAAA,IACtoB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,wEAAuE,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EAC9Q;AAAA,EACA,gCAAgC;AAAA,IAC9B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,iBAAgB,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,yBAAwB,EAAC,QAAO,WAAU,eAAc,6CAA4C,GAAE,yCAAwC,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,wFAAuF,GAAE,iBAAgB,EAAC,eAAc,oEAAmE,EAAC,GAAE,YAAW,CAAC,iBAAgB,yBAAwB,cAAc,EAAC;AAAA,IACtoB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,wEAAuE,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EAC9Q;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,iBAAgB,EAAC,GAAE,YAAW,CAAC,MAAK,QAAO,eAAc,SAAQ,QAAQ,GAAE,eAAc,sFAAqF,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IACnjB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,yFAAwF,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACnL;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,gDAA+C,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IAC/J,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACxJ;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,IAC9I,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACnJ;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,kFAAiF,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,gEAA+D,EAAC,GAAE,YAAW,CAAC,gBAAe,YAAY,EAAC;AAAA,IACnU,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,YAAW,QAAO,OAAO,GAAE,QAAO,UAAS,eAAc,wDAA+D,EAAC,GAAE,YAAW,CAAC,cAAa,YAAY,EAAC;AAAA,IAChZ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACnK;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,iBAAgB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAoD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,CAAC,OAAM,MAAM,GAAE,QAAO,UAAS,eAAc,iCAAoC,EAAC,GAAE,YAAW,CAAC,iBAAgB,SAAQ,YAAY,EAAC;AAAA,IACld,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,kDAAiD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAClK;AAAA,EACA,4BAA4B;AAAA,IAC1B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,kEAAiE,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,mEAAkE,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,0CAAyC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,qGAAoG,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,IACvxB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,cAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,GAAE,wBAAuB,EAAC,QAAO,UAAS,cAAa,EAAC,2BAA0B,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,UAAS,GAAE,cAAa,EAAC,QAAO,UAAS,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,UAAS,GAAE,iBAAgB,EAAC,QAAO,UAAS,GAAE,sBAAqB,EAAC,QAAO,UAAS,GAAE,iBAAgB,EAAC,QAAO,UAAS,GAAE,mBAAkB,EAAC,QAAO,UAAS,GAAE,yBAAwB,EAAC,QAAO,UAAS,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,qBAAoB,EAAC,QAAO,SAAQ,GAAE,oBAAmB,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,4BAA2B,EAAC,QAAO,UAAS,GAAE,qBAAoB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,sBAAqB,EAAC,QAAO,SAAQ,GAAE,mBAAkB,EAAC,QAAO,UAAS,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,UAAS,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,uBAAsB,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,UAAS,GAAE,mBAAkB,EAAC,QAAO,UAAS,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,UAAS,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,qBAAoB,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,gCAA+B,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,mBAAkB,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,UAAS,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,UAAS,GAAE,UAAS,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,SAAQ,CAAC,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,0BAAyB,EAAC,QAAO,UAAS,GAAE,2BAA0B,EAAC,QAAO,UAAS,GAAE,wBAAuB,EAAC,QAAO,SAAQ,GAAE,MAAK,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,yBAAwB,EAAC,QAAO,SAAQ,GAAE,sBAAqB,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,UAAS,GAAE,kCAAiC,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,UAAS,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,EAAC,QAAO,UAAS,GAAE,mBAAkB,EAAC,QAAO,UAAS,GAAE,oBAAmB,EAAC,QAAO,UAAS,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,uBAAsB,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,mBAAkB,EAAC,QAAO,SAAQ,GAAE,oBAAmB,EAAC,QAAO,UAAS,GAAE,eAAc,EAAC,QAAO,UAAS,GAAE,aAAY,EAAC,QAAO,UAAS,GAAE,iCAAgC,EAAC,QAAO,UAAS,GAAE,cAAa,EAAC,QAAO,UAAS,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,qBAAoB,EAAC,QAAO,SAAQ,GAAE,yBAAwB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,sBAAqB,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,sBAAqB,EAAC,QAAO,UAAS,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,2BAA0B,EAAC,QAAO,SAAQ,GAAE,6BAA4B,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,oBAAmB,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,qBAAoB,EAAC,QAAO,SAAQ,GAAE,wBAAuB,EAAC,QAAO,UAAS,GAAE,sBAAqB,EAAC,QAAO,SAAQ,GAAE,2CAA0C,EAAC,QAAO,SAAQ,GAAE,kCAAiC,EAAC,QAAO,SAAQ,GAAE,qBAAoB,EAAC,QAAO,UAAS,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,UAAS,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,UAAS,GAAE,mBAAkB,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,qCAAoC,EAAC,QAAO,UAAS,GAAE,qBAAoB,EAAC,QAAO,SAAQ,SAAQ,CAAC,EAAC,GAAE,0BAAyB,EAAC,QAAO,SAAQ,GAAE,wBAAuB,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,MAAK,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,iBAAgB,EAAC,QAAO,SAAQ,GAAE,uBAAsB,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,wBAAuB,EAAC,QAAO,SAAQ,GAAE,sBAAqB,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,UAAS,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,UAAS,cAAa,EAAC,iBAAgB,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,OAAM,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,EAAC,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,qBAAoB,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,qBAAoB,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,UAAS,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,cAAa,EAAC,QAAO,UAAS,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,MAAK,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,UAAS,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,EAAC,GAAE,YAAW,CAAC,QAAO,SAAS,EAAC,GAAE,eAAc,4CAA2C,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACnkY;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,0FAA6F,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,EAAC,GAAE,YAAW,CAAC,YAAW,cAAa,UAAU,EAAC;AAAA,IAC7a,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,QAAO,OAAO,EAAC,GAAE,eAAc,4DAA2D,EAAC,GAAE,YAAW,CAAC,aAAa,EAAC;AAAA,EACxY;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,iFAAgF,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IACpM,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACtJ;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,wFAA2F,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAgD,EAAC,GAAE,YAAW,CAAC,YAAW,cAAa,YAAY,EAAC;AAAA,IACjb,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,MAAK,QAAO,iBAAgB,QAAO,SAAQ,WAAU,UAAS,cAAa,WAAW,EAAC,GAAE,eAAc,4CAA2C,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC38B;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IACzJ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,uEAAsE,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,EACnL;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,YAAW,OAAM,OAAM,WAAU,iBAAiB,GAAE,QAAO,UAAS,eAAc,sKAAqK,GAAE,gBAAe,EAAC,QAAO,CAAC,OAAM,OAAM,QAAO,OAAM,WAAW,GAAE,QAAO,UAAS,eAAc,4CAA2C,GAAE,YAAW,EAAC,QAAO,CAAC,QAAO,UAAS,MAAK,QAAQ,GAAE,QAAO,UAAS,eAAc,wCAAuC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,yEAAwE,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,UAAS,eAAc,oDAAmD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,mBAAkB,EAAC,QAAO,CAAC,YAAW,WAAW,GAAE,QAAO,UAAS,eAAc,2CAA0C,GAAE,eAAc,EAAC,QAAO,WAAU,eAAc,8DAA6D,GAAE,wBAAuB,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,eAAc,+BAA8B,GAAE,aAAY,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,sBAAqB,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,mCAAkC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAO,QAAQ,GAAE,eAAc,kDAAiD,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,0FAAyF,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,uEAAwE,GAAE,8BAA6B,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,uFAAsF,GAAE,qBAAoB,EAAC,QAAO,CAAC,WAAU,QAAQ,GAAE,QAAO,UAAS,eAAc,wEAAuE,GAAE,gBAAe,EAAC,QAAO,CAAC,WAAU,QAAQ,GAAE,QAAO,UAAS,eAAc,8DAA6D,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,UAAS,cAAa,gBAAe,YAAW,UAAU,EAAC;AAAA,IACz5I,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,oFAAmF,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,EAC5L;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,CAAC,OAAM,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,gCAA+B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uDAAsD,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,qCAAsC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,sCAAuC,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAQ,GAAE,eAAc,0BAAyB,EAAC,GAAE,YAAW,CAAC,aAAY,QAAO,SAAS,GAAE,eAAc,kEAAiE,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,IAC3rB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACrJ;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,iEAAgE,GAAE,sBAAqB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,kGAAiG,GAAE,oBAAmB,EAAC,QAAO,WAAU,eAAc,0DAAyD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,gBAAe,EAAC,QAAO,WAAU,eAAc,+DAA8D,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IAC/5B,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC3J;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,qBAAoB,EAAC,QAAO,WAAU,eAAc,2EAA0E,GAAE,gBAAe,EAAC,QAAO,WAAU,eAAc,+DAA8D,GAAE,wBAAuB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,oGAAmG,EAAC,EAAC;AAAA,IAC/gB,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,2EAA0E,GAAE,sBAAqB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,kGAAiG,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,IAC5gB,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,YAAW,OAAM,OAAM,WAAU,iBAAiB,GAAE,QAAO,UAAS,eAAc,sKAAqK,GAAE,gBAAe,EAAC,QAAO,CAAC,OAAM,OAAM,QAAO,OAAM,WAAW,GAAE,QAAO,UAAS,eAAc,4CAA2C,GAAE,YAAW,EAAC,QAAO,CAAC,QAAO,UAAS,MAAK,QAAQ,GAAE,QAAO,UAAS,eAAc,wCAAuC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,yEAAwE,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,UAAS,eAAc,oDAAmD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,mBAAkB,EAAC,QAAO,CAAC,YAAW,WAAW,GAAE,QAAO,UAAS,eAAc,2CAA0C,GAAE,eAAc,EAAC,QAAO,WAAU,eAAc,8DAA6D,GAAE,wBAAuB,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,eAAc,+BAA8B,GAAE,aAAY,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,sBAAqB,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,mCAAkC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAO,QAAQ,GAAE,eAAc,kDAAiD,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,0FAAyF,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,uEAAwE,GAAE,8BAA6B,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,uFAAsF,GAAE,qBAAoB,EAAC,QAAO,CAAC,WAAU,QAAQ,GAAE,QAAO,UAAS,eAAc,wEAAuE,GAAE,gBAAe,EAAC,QAAO,CAAC,WAAU,QAAQ,GAAE,QAAO,UAAS,eAAc,8DAA6D,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,UAAS,cAAa,gBAAe,YAAW,UAAU,EAAC;AAAA,IACz5I,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,oFAAmF,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,EAC5L;AAAA,EACA,gCAAgC;AAAA,IAC9B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,YAAW,UAAU,EAAC;AAAA,IAC7P,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACtJ;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA;AAAA;AAAA;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,+DAA8D,GAAE,UAAS,EAAC,QAAO,CAAC,QAAO,QAAQ,GAAE,QAAO,UAAS,eAAc,yGAA8G,GAAE,iBAAgB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,6FAA4F,GAAE,wBAAuB,EAAC,QAAO,CAAC,QAAO,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,oDAAmD,GAAE,2BAA0B,EAAC,QAAO,UAAS,eAAc,qIAAoI,GAAE,mBAAkB,EAAC,QAAO,CAAC,WAAU,SAAS,GAAE,QAAO,UAAS,eAAc,qEAAoE,EAAC,GAAE,YAAW,CAAC,SAAS,GAAE,eAAc,0CAAyC;AAAA,IACr9E,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,2DAA0D,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC3K;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,iEAAgE,GAAE,sBAAqB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,kGAAiG,GAAE,oBAAmB,EAAC,QAAO,WAAU,eAAc,0DAAyD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,gBAAe,EAAC,QAAO,WAAU,eAAc,+DAA8D,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IAC/5B,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC3J;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,IAChN,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IACtN,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,kBAAiB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,eAAc,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,qBAAoB,EAAC,GAAE,YAAW,CAAC,WAAU,aAAY,WAAU,MAAK,QAAO,MAAM,EAAC;AAAA,EAC5c;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,IAC5N,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,eAAc,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,kBAAiB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,4BAA2B,EAAC,GAAE,YAAW,CAAC,aAAY,WAAU,QAAO,MAAK,QAAO,QAAO,QAAQ,EAAC;AAAA,EAChhB;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,EAAC;AAAA,IACxH,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAkD,EAAC,GAAE,YAAW,CAAC,WAAU,YAAY,EAAC;AAAA,IACxc,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,4DAAiE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,cAAa,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,aAAY,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,SAAQ,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,OAAM,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,aAAY,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,EACtzC;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IAC9M,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,qBAAoB,EAAC,GAAE,YAAW,CAAC,OAAM,QAAO,YAAW,MAAM,EAAC;AAAA,EACtV;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IAC9N,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,WAAU,SAAQ,YAAW,aAAa,EAAC,GAAE,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAQ,EAAC;AAAA,EAC5a;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,4CAA2C,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IAC3J,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,iDAAgD,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACnK;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,kBAAiB,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,2DAA0D,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,yEAAwE,GAAE,eAAc,EAAC,QAAO,CAAC,QAAO,oBAAmB,qCAAoC,uBAAsB,QAAQ,GAAE,QAAO,UAAS,eAAc,wCAAuC,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,uEAAwE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,OAAM,UAAS,WAAU,eAAc,QAAO,aAAY,eAAc,mBAAmB,GAAE,eAAc,6BAA4B;AAAA,IACjmC,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,WAAU,eAAc,4DAA2D,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,4BAA2B,EAAC,GAAE,YAAW,CAAC,MAAK,UAAS,cAAa,UAAU,EAAC;AAAA,EACzZ;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,uDAAsD,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,eAAc,EAAC,GAAE,YAAW,CAAC,UAAS,MAAM,GAAE,eAAc,iEAAgE,GAAE,qBAAoB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,QAAO,EAAC,QAAO,CAAC,UAAS,UAAS,MAAM,GAAE,QAAO,UAAS,eAAc,kCAAiC,EAAC,GAAE,YAAW,CAAC,SAAQ,SAAQ,MAAM,EAAC,GAAE,eAAc,qEAAoE,EAAC,GAAE,YAAW,CAAC,WAAU,mBAAmB,EAAC;AAAA,IAC35B,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,uDAAsD,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EAC3K;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,6DAA4D,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,oBAAmB,EAAC,GAAE,YAAW,CAAC,SAAQ,aAAY,UAAU,GAAE,eAAc,iFAAgF,GAAE,qBAAoB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,QAAO,EAAC,QAAO,CAAC,UAAS,UAAS,MAAM,GAAE,QAAO,UAAS,eAAc,kCAAiC,EAAC,GAAE,YAAW,CAAC,SAAQ,SAAQ,MAAM,EAAC,GAAE,eAAc,qEAAoE,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,yFAAwF,EAAC,GAAE,YAAW,CAAC,WAAU,qBAAoB,eAAe,EAAC;AAAA,IAClqC,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,uDAAsD,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EAC3K;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,YAAW,EAAC,QAAO,CAAC,UAAS,IAAI,GAAE,QAAO,UAAS,eAAc,mEAAkE,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,uDAAsD,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,wBAAuB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,8EAA6E,EAAC,GAAE,YAAW,CAAC,YAAW,iBAAgB,aAAY,sBAAsB,EAAC;AAAA,IAC5qB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,UAAS,EAAC,GAAE,YAAW,CAAC,MAAK,cAAa,aAAY,aAAY,UAAU,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC/V;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,YAAW,EAAC,QAAO,CAAC,SAAQ,IAAI,GAAE,QAAO,UAAS,eAAc,qEAAoE,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6DAA4D,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,wBAAuB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,8EAA6E,EAAC,GAAE,YAAW,CAAC,YAAW,gBAAe,aAAY,sBAAsB,EAAC;AAAA,IACjrB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,UAAS,EAAC,GAAE,YAAW,CAAC,MAAK,cAAa,aAAY,aAAY,UAAU,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC/V;AAAA,EACA,8BAA8B;AAAA,IAC5B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,gDAAiD,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IAC7J,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,mBAAkB,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,YAAW,CAAC,QAAO,UAAS,eAAc,WAAU,SAAQ,QAAO,YAAW,mBAAkB,YAAW,cAAc,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC7jB;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,mEAAoE,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,IAChL,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,sBAAqB,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,qDAAoD,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,2CAA0C,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,8DAA+D,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0CAA6C,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,kBAAiB,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,eAAc,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAO,cAAa,cAAa,aAAY,YAAW,aAAY,cAAa,YAAW,WAAU,cAAc,EAAC,GAAE,eAAc,+CAA8C,GAAE,kBAAiB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,4CAA2C,EAAC,GAAE,YAAW,CAAC,UAAS,cAAa,WAAU,cAAa,WAAU,gBAAe,WAAU,SAAQ,UAAS,gBAAgB,GAAE,eAAc,+DAA8D,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACjlE;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qEAAsE,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,sBAAqB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,qBAAoB,EAAC,GAAE,YAAW,CAAC,UAAS,aAAY,UAAU,EAAC;AAAA,IAC3U,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,sBAAqB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,kBAAiB,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,eAAc,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,eAAc,GAAE,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,UAAS,OAAM,cAAc,EAAC,GAAE,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,cAAa,aAAY,SAAQ,SAAQ,UAAS,cAAa,YAAW,WAAU,gBAAe,gBAAe,WAAU,SAAS,GAAE,eAAc,sEAAqE,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACl8C;AAAA,EACA,8BAA8B;AAAA,IAC5B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,0BAAyB,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,IACnI,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,kGAA6G,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,UAAS,EAAC,QAAO,WAAU,eAAc,2CAA0C,GAAE,aAAY,EAAC,QAAO,WAAU,eAAc,4CAA2C,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,oDAAmD,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,+CAA8C,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,0CAAyC,GAAE,eAAc,EAAC,QAAO,WAAU,eAAc,uCAAsC,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,wCAAuC,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,SAAQ,EAAC,QAAO,WAAU,eAAc,+BAA8B,GAAE,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,UAAS,OAAM,cAAc,EAAC,GAAE,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,UAAS,UAAS,SAAQ,SAAQ,UAAS,aAAY,cAAa,WAAU,cAAa,eAAc,cAAa,cAAa,SAAQ,SAAS,GAAE,eAAc,oFAAmF,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACt3D;AAAA,EACA,6BAA6B;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,2BAA0B,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,IACpI,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,aAAY,EAAC,QAAO,SAAQ,GAAE,cAAa,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,GAAE,WAAU,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,SAAQ,GAAE,UAAS,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,QAAO,UAAS,UAAU,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,cAAa,aAAY,SAAQ,YAAW,aAAY,cAAa,gBAAe,WAAU,gBAAe,SAAS,EAAC,GAAE,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC1xB;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0BAAyB,EAAC,GAAE,YAAW,CAAC,YAAW,gBAAe,QAAQ,EAAC;AAAA,IACrW,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC5J;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,gDAA+C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,oEAAmE,EAAC,GAAE,YAAW,CAAC,YAAW,QAAQ,EAAC;AAAA,IAC5W,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,8DAA6D,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAChL;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,iBAAgB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,YAAW,cAAc,EAAC,GAAE,eAAc,0DAAyD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,sDAAqD,GAAE,sBAAqB,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,mBAAkB,EAAC,QAAO,WAAU,eAAc,8FAA6F,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,gBAAe,eAAe,EAAC;AAAA,IAChhC,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACzJ;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,SAAQ;AAAA,IAC7B,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IACnW,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,kBAAiB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,EAAC,GAAE,YAAW,CAAC,WAAU,aAAY,WAAU,MAAK,SAAS,EAAC,GAAE,eAAc,0BAAyB,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EACthB;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,EAAC;AAAA,IACxH,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,4BAA4B;AAAA,IAC1B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAkD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAY,EAAC;AAAA,IAChd,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,4DAAiE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,cAAa,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,aAAY,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,SAAQ,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,OAAM,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,aAAY,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,EAAC,GAAE,eAAc,yDAAwD,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EAC32C;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IAChb,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,MAAK,QAAO,YAAW,QAAO,eAAc,eAAc,cAAc,EAAC,GAAE,eAAc,8BAA6B,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,EAC/c;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,yDAAwD,EAAC,GAAE,YAAW,CAAC,cAAa,OAAO,EAAC;AAAA,IACtX,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,SAAS;AAAA,IACP,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA;AAAA;AAAA;AAAA;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,CAAC,MAAK,YAAY,GAAE,QAAO,UAAS,eAAc,sFAAqF,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,mFAAkF,GAAE,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,yBAAwB,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,wEAAuE,GAAE,YAAW,EAAC,QAAO,CAAC,MAAK,OAAM,MAAK,MAAK,OAAM,OAAM,UAAS,cAAa,YAAW,gBAAe,SAAS,GAAE,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,+DAA8D,GAAE,yBAAwB,EAAC,QAAO,UAAS,eAAc,4EAA2E,EAAC,GAAE,YAAW,CAAC,MAAK,WAAW,EAAC,GAAE,EAAC,QAAO,SAAQ,CAAC,EAAC,GAAE,eAAc,6EAA4E,GAAE,iBAAgB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,kGAAiG,EAAC,GAAE,YAAW,CAAC,WAAU,OAAO,GAAE,eAAc,oCAAmC;AAAA,IAC1zF,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,cAAc,EAAC;AAAA,EAC1J;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,gDAA+C,EAAC,GAAE,YAAW,CAAC,cAAa,OAAO,EAAC;AAAA,IAC3P,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,2FAA0F,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACrL;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,gDAA+C,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,kEAAiE,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2DAA0D,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IACrjB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACjJ;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,4CAA2C,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,sBAAqB,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,IAC7gB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0BAAyB,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC5I;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,kBAAiB,EAAC,QAAO,WAAU,eAAc,4FAA2F,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,wEAAuE,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,6EAA4E,GAAE,aAAY,EAAC,QAAO,WAAU,eAAc,mFAAkF,EAAC,GAAE,eAAc,uBAAsB,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,YAAW,SAAS,EAAC;AAAA,IAC5+B,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,8CAA6C,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAChK;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IACtT,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,yBAAwB,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC3I;AAAA,EACA,cAAc;AAAA,IACZ,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,kBAAiB,EAAC,QAAO,CAAC,QAAO,SAAQ,QAAQ,GAAE,QAAO,UAAS,eAAc,8CAA6C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,UAAS,kBAAiB,QAAO,YAAW,cAAa,OAAO,EAAC;AAAA,IAC9pB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,8EAA6E,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACxK;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,UAAS,WAAU,OAAO,EAAC;AAAA,IACxX,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iCAAgC,EAAC,GAAE,YAAW,CAAC,UAAS,SAAS,EAAC;AAAA,EACxO;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,QAAO,EAAC,QAAO,CAAC,UAAS,WAAW,GAAE,QAAO,UAAS,eAAc,4FAA2F,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,UAAS,WAAU,MAAM,EAAC;AAAA,IAC/c,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iCAAgC,EAAC,GAAE,YAAW,CAAC,UAAS,SAAS,EAAC;AAAA,EACxO;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,sFAAuF,GAAE,gBAAe,EAAC,QAAO,WAAU,eAAc,0DAAyD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,0DAAyD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,UAAS,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,wBAAuB,EAAC,QAAO,UAAS,eAAc,gDAA+C,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,yBAAwB,EAAC,QAAO,UAAS,eAAc,0DAAyD,GAAE,4BAA2B,EAAC,QAAO,UAAS,eAAc,sDAAqD,GAAE,sBAAqB,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,kCAAiC,EAAC,QAAO,UAAS,eAAc,4EAA6E,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,qCAAoC,EAAC,QAAO,UAAS,eAAc,2DAA0D,GAAE,qCAAoC,EAAC,QAAO,UAAS,eAAc,oDAAmD,GAAE,wCAAuC,EAAC,QAAO,UAAS,eAAc,gDAA+C,EAAC,GAAE,YAAW,CAAC,gBAAe,wBAAuB,aAAY,mBAAkB,qBAAoB,yBAAwB,4BAA2B,sBAAqB,kCAAiC,mBAAkB,mBAAkB,qCAAoC,qCAAoC,sCAAsC,GAAE,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,cAAa,gBAAe,uBAAsB,SAAQ,QAAO,QAAQ,EAAC;AAAA,IACp/E,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,eAAc,yEAAwE,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACzK;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,cAAa,EAAC,QAAO,CAAC,UAAS,aAAa,GAAE,QAAO,UAAS,eAAc,kDAAqD,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,WAAU,YAAY,EAAC;AAAA,IAC5sB,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,mEAAkE,GAAE,eAAc,EAAC,QAAO,CAAC,UAAS,QAAQ,GAAE,QAAO,UAAS,eAAc,sFAAyF,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qFAAwF,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,kEAAiE,EAAC,GAAE,YAAW,CAAC,aAAY,eAAc,SAAS,EAAC;AAAA,IACnmB,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,WAAW;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,oDAAmD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,kCAAiC,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,IAC5O,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,gDAA+C,EAAC,GAAE,YAAW,CAAC,cAAa,OAAO,EAAC;AAAA,IACxP,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,sEAAqE,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAChK;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,uDAAsD,EAAC,GAAE,YAAW,CAAC,gBAAe,SAAQ,YAAY,EAAC;AAAA,IAClX,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,uDAAsD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,CAAC,GAAE,eAAc,0CAAyC,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,QAAO,UAAS,SAAQ,aAAY,WAAW,EAAC;AAAA,EAChkB;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,gBAAe,EAAC,QAAO,CAAC,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,wCAAuC,EAAC,GAAE,YAAW,CAAC,SAAQ,cAAc,GAAE,eAAc,qDAAoD;AAAA,IACrc,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,2EAA0E,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACrK;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,8CAA+C,GAAE,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,8GAAiH,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAW,UAAU,EAAC;AAAA,IAC1a,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,gGAAiG,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC5M;AAAA,EACA,6BAA6B;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,wDAAuD,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IACvK,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACnL;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,eAAc,EAAC,QAAO,CAAC,SAAQ,QAAO,UAAU,GAAE,QAAO,UAAS,eAAc,8CAAmD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,aAAY,WAAU,aAAa,EAAC;AAAA,IACxb,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EACzJ;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,QAAO,EAAC,QAAO,CAAC,OAAM,OAAO,GAAE,QAAO,UAAS,eAAc,mFAAkF,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,YAAW,EAAC,QAAO,CAAC,OAAM,MAAM,GAAE,QAAO,UAAS,eAAc,8DAA6D,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,MAAM,EAAC;AAAA,IAC77B,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,2BAA0B,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC7I;AAAA,EACA,4BAA4B;AAAA,IAC1B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,mEAAkE,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,uBAAsB,EAAC,QAAO,UAAS,eAAc,8DAA6D,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,iEAAgE,EAAC,GAAE,YAAW,CAAC,YAAW,eAAc,QAAO,qBAAqB,GAAE,eAAc,gDAA+C;AAAA,IACjqB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,yDAAwD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACnK;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA;AAAA;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,sDAAqD,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,wCAAuC,EAAC,GAAE,YAAW,CAAC,SAAQ,cAAa,kBAAiB,mBAAkB,MAAM,GAAE,eAAc,+CAA8C;AAAA,IAC5nB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,sDAAqD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAChJ;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IACvJ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,qDAAoD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IAClK,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,WAAU,cAAc,EAAC;AAAA,IAC3Q,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,2BAA2B;AAAA,IACzB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,2DAA0D,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,cAAa,cAAc,EAAC;AAAA,IACnR,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,sBAAqB,EAAC,QAAO,UAAS,eAAc,2DAA0D,EAAC,GAAE,YAAW,CAAC,cAAa,gBAAe,oBAAoB,EAAC;AAAA,IACnZ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IACjK,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,cAAa,cAAc,EAAC;AAAA,IAC9Q,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,iFAAgF,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,IACtL,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAChI;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,mEAAkE,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,IACxK,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAChI;AAAA,EACA,4BAA4B;AAAA,IAC1B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAgD,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IACpK,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,eAAc,oDAAmD,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EAC9I;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,sFAAqF,GAAE,WAAU,EAAC,QAAO,CAAC,WAAU,WAAW,GAAE,QAAO,UAAS,eAAc,0BAAyB,GAAE,eAAc,EAAC,QAAO,WAAU,eAAc,qFAAoF,GAAE,eAAc,EAAC,QAAO,UAAS,cAAa,EAAC,mBAAkB,EAAC,QAAO,WAAU,eAAc,4FAA2F,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,8CAA6C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,yDAAwD,GAAE,oCAAmC,EAAC,QAAO,WAAU,eAAc,kEAAiE,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,cAAa,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,8CAA6C,GAAE,UAAS,EAAC,QAAO,WAAU,eAAc,8CAA6C,EAAC,GAAE,YAAW,CAAC,mBAAkB,cAAa,WAAU,oCAAmC,WAAU,cAAa,QAAQ,GAAE,eAAc,8EAA6E,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,IACj6C,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,GAAE,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,YAAW,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,uBAAsB,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,OAAM,OAAO,GAAE,eAAc,yCAAwC,EAAC,GAAE,YAAW,CAAC,QAAO,MAAM,EAAC,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,YAAW,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,uBAAsB,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,OAAM,OAAO,GAAE,eAAc,yCAAwC,EAAC,GAAE,YAAW,CAAC,QAAO,MAAM,EAAC,EAAC,CAAC,EAAC,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,6EAA4E,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACp1D;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,kFAAiF,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,IACvL,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,YAAW,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,uBAAsB,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,OAAM,OAAO,GAAE,eAAc,yCAAwC,EAAC,GAAE,YAAW,CAAC,QAAO,MAAM,GAAE,eAAc,uEAAsE,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACn7B;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,OAAM,EAAC,QAAO,UAAS,eAAc,uEAAsE,EAAC,GAAE,YAAW,CAAC,KAAK,EAAC;AAAA,IAC5K,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,kDAAiD,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,YAAW,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,gBAAe,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,uBAAsB,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,OAAM,OAAO,GAAE,eAAc,yCAAwC,EAAC,GAAE,YAAW,CAAC,QAAO,MAAM,GAAE,eAAc,0EAAyE,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC57B;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,oFAAyF,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,wDAAuD,EAAC,GAAE,YAAW,CAAC,SAAQ,cAAa,OAAO,EAAC;AAAA,IAC/f,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uBAAsB,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,aAAY,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,iDAAgD,EAAC,GAAE,YAAW,CAAC,MAAK,WAAU,QAAO,MAAK,QAAO,aAAY,YAAW,QAAQ,EAAC,GAAE,eAAc,kCAAiC,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EAC7xB;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,kDAAqD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,aAAY,EAAC,QAAO,CAAC,QAAO,OAAM,QAAO,SAAQ,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,sEAAiF,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAY,EAAC;AAAA,IAC3tB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,KAAK,EAAC,GAAE,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACrc;AAAA,EACA,8BAA8B;AAAA,IAC5B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mBAAkB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,iCAAgC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,sCAAuC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,IAC5oB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,4DAAiE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,cAAa,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,aAAY,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,SAAQ,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,OAAM,EAAC,SAAQ,CAAC,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,GAAE,aAAY,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,SAAQ,GAAE,SAAQ,EAAC,QAAO,SAAQ,GAAE,kBAAiB,EAAC,QAAO,SAAQ,EAAC,EAAC,EAAC,GAAE,EAAC,QAAO,OAAM,CAAC,EAAC,EAAC,EAAC,GAAE,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EACr1C;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,iBAAgB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,mDAAsD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAY,EAAC;AAAA,IAC1Z,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,YAAW,EAAC,QAAO,SAAQ,GAAE,QAAO,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,eAAc,EAAC,QAAO,SAAQ,GAAE,gBAAe,EAAC,QAAO,SAAQ,EAAC,GAAE,YAAW,CAAC,MAAK,QAAO,YAAW,QAAO,eAAc,eAAc,cAAc,EAAC,GAAE,eAAc,yBAAwB,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,EAC1c;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,yBAAwB,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,kDAAqD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,aAAY,EAAC,QAAO,CAAC,QAAO,OAAM,QAAO,SAAQ,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,sEAAiF,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAY,EAAC;AAAA,IAC/sB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,sBAAqB,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,qDAAoD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAW,cAAa,eAAc,gBAAe,kBAAiB,mBAAkB,UAAS,UAAS,QAAO,aAAY,UAAU,EAAC,GAAE,eAAc,sDAAqD,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EACvyC;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,kDAAqD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,QAAO,YAAY,EAAC;AAAA,IACtW,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,UAAS,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,0BAAyB,EAAC,GAAE,YAAW,CAAC,MAAM,GAAE,eAAc,qBAAoB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,QAAO,QAAO,QAAQ,EAAC,GAAE,eAAc,iCAAgC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC9qB;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,4BAA6B,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,8EAA6E,GAAE,aAAY,EAAC,QAAO,CAAC,cAAa,WAAU,aAAY,kBAAiB,iBAAiB,GAAE,QAAO,UAAS,eAAc,+BAA8B,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,2CAA4C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,mXAAsY,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,mEAAkE,EAAC,GAAE,YAAW,CAAC,QAAO,MAAK,OAAM,aAAY,OAAM,QAAO,IAAI,EAAC;AAAA,IACxnC,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EACzJ;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,cAAa,EAAC,QAAO,CAAC,QAAO,MAAM,GAAE,QAAO,UAAS,eAAc,gEAA+D,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,iEAAoE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,kDAAiD,EAAC,GAAE,YAAW,CAAC,SAAQ,YAAY,EAAC;AAAA,IACjf,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,OAAM,EAAC,QAAO,UAAS,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,KAAK,EAAC,GAAE,eAAc,oCAAmC,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACjd;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mEAAkE,GAAE,SAAQ,EAAC,QAAO,CAAC,UAAS,KAAK,GAAE,QAAO,UAAS,eAAc,mEAAsE,GAAE,WAAU,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,oDAAmD,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,sDAAqD,EAAC,GAAE,eAAc,4BAA2B,EAAC,GAAE,YAAW,CAAC,SAAQ,SAAQ,SAAS,EAAC;AAAA,IAC1rB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,yBAAwB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,+CAA8C,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,SAAQ,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,oBAAmB,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,kBAAiB,EAAC,GAAE,YAAW,CAAC,YAAW,WAAU,OAAO,GAAE,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,MAAK,YAAW,eAAc,QAAO,OAAO,EAAC,GAAE,eAAc,2BAA0B,EAAC,GAAE,YAAW,CAAC,OAAO,EAAC;AAAA,EAC50B;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,yCAAwC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,yBAAwB,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,8DAA+D,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,8DAA+D,EAAC,GAAE,YAAW,CAAC,SAAQ,cAAa,UAAS,YAAY,EAAC;AAAA,IAC7nB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,wEAAuE,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EACxL;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,CAAC,OAAM,SAAQ,UAAS,OAAO,GAAE,QAAO,UAAS,eAAc,yEAAgF,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,4BAA6B,GAAE,MAAK,EAAC,QAAO,UAAS,eAAc,2BAA4B,EAAC,GAAE,YAAW,CAAC,MAAK,MAAK,IAAI,EAAC;AAAA,IAC3W,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,UAAS,EAAC,QAAO,UAAS,eAAc,2DAA0D,EAAC,GAAE,YAAW,CAAC,QAAQ,EAAC;AAAA,EACzK;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,gFAA+E,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,4EAA2E,GAAE,gBAAe,EAAC,QAAO,WAAU,eAAc,0EAAyE,GAAE,4BAA2B,EAAC,QAAO,UAAS,eAAc,8DAA6D,GAAE,6BAA4B,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,8CAA6C,GAAE,eAAc,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,uCAAsC,EAAC,GAAE,YAAW,CAAC,WAAU,MAAM,EAAC;AAAA,IAC9xE,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,YAAY,EAAC;AAAA,EACzL;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,yBAAwB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IAClN,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,MAAK,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qBAAoB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,eAAc,EAAC,QAAO,CAAC,SAAQ,QAAO,UAAU,GAAE,QAAO,UAAS,eAAc,8CAAmD,EAAC,GAAE,YAAW,CAAC,MAAK,WAAU,WAAU,aAAa,EAAC;AAAA,IAChhB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EACzJ;AAAA,EACA,WAAW;AAAA,IACT,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,qDAAoD,GAAE,aAAY,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,mEAAkE,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,IAC3W,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,sBAAsB;AAAA,IACpB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,cAAa,EAAC,QAAO,WAAU,eAAc,8CAA6C,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,EAAC,GAAE,YAAW,CAAC,cAAa,YAAY,EAAC;AAAA,IAC/U,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,yEAAwE,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,2CAA0C;AAAA,IAC3O,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,SAAQ,CAAC,EAAC,QAAO,SAAQ,GAAE,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,EAAC,CAAC,EAAC,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,0CAAyC;AAAA,IAC1M,cAAc,EAAC,QAAO,SAAQ;AAAA,EAChC;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,qDAAoD,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,aAAY,MAAM,EAAC;AAAA,IACjb,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,0BAA0B;AAAA,IACxB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,oBAAmB,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,+CAA8C,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,oBAAmB,MAAM,EAAC;AAAA,IAC3b,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EACnJ;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,QAAO,EAAC,QAAO,CAAC,SAAQ,OAAO,GAAE,QAAO,UAAS,eAAc,wEAA2E,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,YAAW,MAAM,EAAC;AAAA,IACjjB,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,oBAAoB;AAAA,IAClB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,SAAS,EAAC;AAAA,IAC7Z,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,UAAU,EAAC;AAAA,IACzZ,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,uBAAuB;AAAA,IACrB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,yDAAwD,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,MAAM,EAAC;AAAA,IACjW,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,aAAY,EAAC,QAAO,UAAS,eAAc,kCAAiC,EAAC,GAAE,YAAW,CAAC,WAAW,EAAC;AAAA,EACtJ;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,YAAW,UAAS,UAAU,EAAC;AAAA,IACzZ,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA8C,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,YAAW,QAAQ,EAAC;AAAA,IACnQ,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,gCAA+B,GAAE,qBAAoB,EAAC,QAAO,UAAS,GAAE,uBAAsB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,mGAAkG,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,IAC1gB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,kCAAiC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACpJ;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,kGAAiG,GAAE,8BAA6B,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,OAAO,GAAE,eAAc,0GAAyG,EAAC,GAAE,YAAW,CAAC,YAAW,QAAQ,EAAC;AAAA,IACtpB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,2CAA0C,EAAC,GAAE,YAAW,CAAC,MAAM,EAAC;AAAA,EACrJ;AAAA,EACA,aAAa;AAAA,IACX,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,gDAA+C,GAAE,SAAQ,EAAC,QAAO,CAAC,UAAS,QAAQ,EAAC,GAAE,YAAW,EAAC,QAAO,CAAC,UAAS,QAAQ,EAAC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,IACjZ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAClJ;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,kEAAiE,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,+DAA8D,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,4CAA2C,GAAE,kBAAiB,EAAC,QAAO,UAAS,eAAc,+CAA8C,EAAC,GAAE,YAAW,CAAC,SAAQ,cAAa,eAAc,gBAAgB,EAAC;AAAA,IACzkB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,qBAAoB,EAAC,QAAO,SAAQ,SAAQ,EAAC,QAAO,SAAQ,GAAE,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,mBAAmB,EAAC;AAAA,EACnM;AAAA,EACA,6BAA6B;AAAA,IAC3B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,sBAAqB,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,4BAA2B,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,yBAAwB,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,sCAAqC,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,mFAAkF,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,iDAAkD,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,IACvzB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,2BAA0B,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,mDAAkD,EAAC,GAAE,YAAW,CAAC,WAAU,UAAU,EAAC;AAAA,EACpP;AAAA,EACA,mBAAmB;AAAA,IACjB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,+BAA8B,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,YAAW,EAAC,QAAO,CAAC,SAAQ,QAAO,UAAU,GAAE,QAAO,UAAS,eAAc,2DAAgE,GAAE,iBAAgB,EAAC,QAAO,CAAC,YAAW,eAAc,WAAW,GAAE,QAAO,UAAS,eAAc,sEAA2E,EAAC,GAAE,YAAW,CAAC,cAAa,QAAO,YAAW,eAAe,EAAC;AAAA,IACvoB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,eAAc,EAAC,QAAO,UAAS,eAAc,qCAAoC,EAAC,GAAE,YAAW,CAAC,aAAa,EAAC;AAAA,EAC7J;AAAA,EACA,qBAAqB;AAAA,IACnB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,QAAO,EAAC,QAAO,UAAS,eAAc,uCAAsC,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,6BAA4B,GAAE,iBAAgB,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,SAAQ,EAAC,QAAO,UAAS,eAAc,qEAAsE,GAAE,iBAAgB,EAAC,QAAO,CAAC,eAAc,aAAY,OAAO,GAAE,QAAO,UAAS,eAAc,gEAAqE,EAAC,GAAE,YAAW,CAAC,QAAO,iBAAgB,SAAQ,eAAe,EAAC;AAAA,IACpmB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,kBAAiB,EAAC,QAAO,UAAS,eAAc,wCAAuC,EAAC,GAAE,YAAW,CAAC,gBAAgB,EAAC;AAAA,EACtK;AAAA,EACA,4BAA4B;AAAA,IAC1B,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,gBAAe,EAAC,QAAO,UAAS,eAAc,iEAAgE,GAAE,QAAO,EAAC,QAAO,UAAS,eAAc,0GAAyG,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,kEAAiE,EAAC,GAAE,YAAW,CAAC,gBAAe,QAAO,UAAU,EAAC;AAAA,IACxc,cAAc,EAAC,eAAc,0CAAyC;AAAA,EACxE;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,8BAA6B,GAAE,oBAAmB,EAAC,QAAO,CAAC,MAAK,MAAK,IAAI,GAAE,QAAO,UAAS,eAAc,2BAA0B,GAAE,UAAS,EAAC,QAAO,CAAC,YAAW,KAAK,GAAE,QAAO,UAAS,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,YAAW,oBAAmB,QAAQ,EAAC;AAAA,IAClX,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,sCAAqC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACxJ;AAAA,EACA,gBAAgB;AAAA,IACd,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,qCAAoC,GAAE,oBAAmB,EAAC,QAAO,CAAC,QAAO,SAAQ,MAAK,IAAI,GAAE,QAAO,UAAS,eAAc,kDAAiD,GAAE,UAAS,EAAC,QAAO,CAAC,YAAW,OAAM,YAAW,YAAW,YAAW,WAAU,qBAAqB,GAAE,QAAO,UAAS,eAAc,+EAA8E,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,oBAAmB,QAAQ,EAAC;AAAA,IAC/qB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,4BAA2B,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC9I;AAAA,EACA,eAAe;AAAA,IACb,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA;AAAA;AAAA;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,+DAA8D,GAAE,UAAS,EAAC,QAAO,CAAC,QAAO,QAAQ,GAAE,QAAO,UAAS,eAAc,yGAA8G,GAAE,iBAAgB,EAAC,QAAO,UAAS,cAAa,EAAC,SAAQ,EAAC,QAAO,UAAS,eAAc,mDAAsD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,kBAAiB,EAAC,QAAO,WAAU,eAAc,mDAAkD,GAAE,2BAA0B,EAAC,QAAO,UAAS,cAAa,EAAC,cAAa,EAAC,QAAO,UAAS,eAAc,8CAA6C,GAAE,mBAAkB,EAAC,QAAO,UAAS,eAAc,uEAAsE,GAAE,cAAa,EAAC,QAAO,UAAS,eAAc,4DAA2D,GAAE,WAAU,EAAC,QAAO,WAAU,eAAc,qCAAoC,GAAE,iBAAgB,EAAC,QAAO,WAAU,eAAc,qEAAoE,EAAC,GAAE,eAAc,oEAAmE,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,6CAA4C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,sDAAqD,GAAE,uBAAsB,EAAC,QAAO,WAAU,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,SAAQ,eAAc,mBAAmB,GAAE,eAAc,6FAA4F,GAAE,wBAAuB,EAAC,QAAO,CAAC,QAAO,QAAO,KAAK,GAAE,QAAO,UAAS,eAAc,oDAAmD,GAAE,2BAA0B,EAAC,QAAO,UAAS,eAAc,qIAAoI,GAAE,mBAAkB,EAAC,QAAO,CAAC,WAAU,SAAS,GAAE,QAAO,UAAS,eAAc,qEAAoE,EAAC,GAAE,YAAW,CAAC,SAAS,GAAE,eAAc,0CAAyC;AAAA,IACr9E,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,WAAU,EAAC,QAAO,UAAS,eAAc,2DAA0D,EAAC,GAAE,YAAW,CAAC,SAAS,EAAC;AAAA,EAC3K;AAAA,EACA,iBAAiB;AAAA,IACf,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,gBAAe,EAAC,QAAO,UAAS,eAAc,mDAAkD,GAAE,eAAc,EAAC,QAAO,UAAS,eAAc,uDAAsD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,gBAAe,eAAc,QAAQ,EAAC;AAAA,IACvnB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,gCAA+B,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAClJ;AAAA,EACA,yBAAyB;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,iBAAgB,EAAC,QAAO,CAAC,eAAc,OAAO,GAAE,QAAO,UAAS,eAAc,yEAAwE,GAAE,yBAAwB,EAAC,QAAO,UAAS,eAAc,iFAAgF,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,mCAAkC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,iBAAgB,QAAQ,EAAC;AAAA,IACprB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,uDAAsD,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACzK;AAAA,EACA,wBAAwB;AAAA,IACtB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,iDAAgD,GAAE,UAAS,EAAC,QAAO,UAAS,eAAc,kCAAiC,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,QAAQ,EAAC;AAAA,IACzZ,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0CAAyC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EAC5J;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,wBAAuB,GAAE,qBAAoB,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,UAAS,EAAC,QAAO,CAAC,YAAW,aAAY,eAAc,cAAc,GAAE,QAAO,UAAS,eAAc,8CAA6C,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,oEAAmE,EAAC,GAAE,YAAW,CAAC,YAAW,qBAAoB,UAAS,aAAY,SAAS,EAAC;AAAA,IACxsB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,mCAAkC,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACrJ;AAAA,EACA,kBAAkB;AAAA,IAChB,UAAU;AAAA,IACV,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,0BAAyB,GAAE,YAAW,EAAC,QAAO,UAAS,eAAc,wCAAuC,GAAE,UAAS,EAAC,QAAO,CAAC,YAAW,aAAY,eAAc,cAAc,GAAE,QAAO,UAAS,eAAc,8CAA6C,GAAE,aAAY,EAAC,QAAO,UAAS,eAAc,oCAAmC,GAAE,WAAU,EAAC,QAAO,UAAS,eAAc,2CAA0C,GAAE,qBAAoB,EAAC,QAAO,WAAU,eAAc,gHAA+G,EAAC,GAAE,YAAW,CAAC,YAAW,YAAW,UAAS,aAAY,SAAS,EAAC;AAAA,IACpuB,cAAc,EAAC,QAAO,UAAS,cAAa,EAAC,YAAW,EAAC,QAAO,UAAS,eAAc,+BAA8B,EAAC,GAAE,YAAW,CAAC,UAAU,EAAC;AAAA,EACjJ;AACF;;;ACvlCO,IAAMC,mBAAkB;","names":["sleep","MindStudioAgent"]}