@mindstudio-ai/agent 0.0.6 → 0.0.7
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.d.ts +3 -11
- package/dist/index.js +3 -27
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2167,16 +2167,12 @@ interface ScrapeMetaThreadsProfileStepOutput {
|
|
|
2167
2167
|
interface ScrapeUrlStepInput {
|
|
2168
2168
|
/** URL(s) to scrape. Accepts a single URL, JSON array, or comma/newline-separated list */
|
|
2169
2169
|
url: string;
|
|
2170
|
-
/** Variable name to save the screenshot URL(s) into */
|
|
2171
|
-
screenshotVar?: string;
|
|
2172
2170
|
/** Scraping service to use */
|
|
2173
|
-
service
|
|
2171
|
+
service?: "default" | "firecrawl";
|
|
2174
2172
|
/** Whether to enable enhanced scraping for social media URLs (e.g. Twitter, LinkedIn) */
|
|
2175
|
-
autoEnhance
|
|
2176
|
-
/** Output format: text returns markdown, html returns raw HTML, json returns structured scraper data */
|
|
2177
|
-
outputFormat: "text" | "json" | "html";
|
|
2173
|
+
autoEnhance?: boolean;
|
|
2178
2174
|
/** Page-level scraping options (content filtering, screenshots, headers, etc.) */
|
|
2179
|
-
pageOptions
|
|
2175
|
+
pageOptions?: {
|
|
2180
2176
|
/** Whether to extract only the main content of the page, excluding navigation, footers, etc. */
|
|
2181
2177
|
onlyMainContent: boolean;
|
|
2182
2178
|
/** Whether to capture a screenshot of the page */
|
|
@@ -3548,8 +3544,6 @@ interface StepMethods {
|
|
|
3548
3544
|
* - 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
|
|
3549
3545
|
* - Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)
|
|
3550
3546
|
*/
|
|
3551
|
-
generatePdf(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;
|
|
3552
|
-
/** Alias for {@link StepMethods.generatePdf}. */
|
|
3553
3547
|
generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;
|
|
3554
3548
|
/**
|
|
3555
3549
|
* Generate Static Video from Image
|
|
@@ -4329,8 +4323,6 @@ interface StepMethods {
|
|
|
4329
4323
|
* - Mode "background" saves the result to a variable. Mode "foreground" streams it to the user (not available in direct execution).
|
|
4330
4324
|
* - Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.
|
|
4331
4325
|
*/
|
|
4332
|
-
userMessage(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;
|
|
4333
|
-
/** Alias for {@link StepMethods.userMessage}. */
|
|
4334
4326
|
generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;
|
|
4335
4327
|
/**
|
|
4336
4328
|
* Video Face Swap
|
package/dist/index.js
CHANGED
|
@@ -151,10 +151,9 @@ function applyStepMethods(AgentClass) {
|
|
|
151
151
|
proto.generateMusic = function(step, options) {
|
|
152
152
|
return this.executeStep("generateMusic", step, options);
|
|
153
153
|
};
|
|
154
|
-
proto.
|
|
154
|
+
proto.generateAsset = function(step, options) {
|
|
155
155
|
return this.executeStep("generatePdf", step, options);
|
|
156
156
|
};
|
|
157
|
-
proto.generateAsset = proto.generatePdf;
|
|
158
157
|
proto.generateStaticVideoFromImage = function(step, options) {
|
|
159
158
|
return this.executeStep("generateStaticVideoFromImage", step, options);
|
|
160
159
|
};
|
|
@@ -386,10 +385,9 @@ function applyStepMethods(AgentClass) {
|
|
|
386
385
|
proto.upscaleVideo = function(step, options) {
|
|
387
386
|
return this.executeStep("upscaleVideo", step, options);
|
|
388
387
|
};
|
|
389
|
-
proto.
|
|
388
|
+
proto.generateText = function(step, options) {
|
|
390
389
|
return this.executeStep("userMessage", step, options);
|
|
391
390
|
};
|
|
392
|
-
proto.generateText = proto.userMessage;
|
|
393
391
|
proto.videoFaceSwap = function(step, options) {
|
|
394
392
|
return this.executeStep("videoFaceSwap", step, options);
|
|
395
393
|
};
|
|
@@ -734,17 +732,6 @@ var stepSnippets = {
|
|
|
734
732
|
snippet: "{\n text: '',\n}",
|
|
735
733
|
outputKeys: []
|
|
736
734
|
},
|
|
737
|
-
"generatePdf": {
|
|
738
|
-
method: "generatePdf",
|
|
739
|
-
snippet: `{
|
|
740
|
-
source: '',
|
|
741
|
-
sourceType: "html",
|
|
742
|
-
outputFormat: "pdf",
|
|
743
|
-
pageSize: "full",
|
|
744
|
-
testData: {},
|
|
745
|
-
}`,
|
|
746
|
-
outputKeys: ["url"]
|
|
747
|
-
},
|
|
748
735
|
"generateStaticVideoFromImage": {
|
|
749
736
|
method: "generateStaticVideoFromImage",
|
|
750
737
|
snippet: "{\n imageUrl: '',\n duration: '',\n}",
|
|
@@ -1049,13 +1036,7 @@ var stepSnippets = {
|
|
|
1049
1036
|
},
|
|
1050
1037
|
"scrapeUrl": {
|
|
1051
1038
|
method: "scrapeUrl",
|
|
1052
|
-
snippet:
|
|
1053
|
-
url: '',
|
|
1054
|
-
service: "default",
|
|
1055
|
-
autoEnhance: false,
|
|
1056
|
-
outputFormat: "text",
|
|
1057
|
-
pageOptions: {},
|
|
1058
|
-
}`,
|
|
1039
|
+
snippet: "{\n url: '',\n}",
|
|
1059
1040
|
outputKeys: ["content"]
|
|
1060
1041
|
},
|
|
1061
1042
|
"scrapeXPost": {
|
|
@@ -1254,11 +1235,6 @@ var stepSnippets = {
|
|
|
1254
1235
|
}`,
|
|
1255
1236
|
outputKeys: ["videoUrl"]
|
|
1256
1237
|
},
|
|
1257
|
-
"userMessage": {
|
|
1258
|
-
method: "userMessage",
|
|
1259
|
-
snippet: "{\n message: '',\n}",
|
|
1260
|
-
outputKeys: ["content"]
|
|
1261
|
-
},
|
|
1262
1238
|
"videoFaceSwap": {
|
|
1263
1239
|
method: "videoFaceSwap",
|
|
1264
1240
|
snippet: "{\n videoUrl: '',\n faceImageUrl: '',\n targetIndex: 0,\n engine: '',\n}",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/generated/steps.ts","../src/generated/helpers.ts","../src/client.ts","../src/generated/snippets.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';\n\nexport interface HttpClientConfig {\n baseUrl: string;\n token: string;\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 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 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","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-02-27T19:37:40.281Z\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 CreateGoogleCalendarEventStepInput,\n CreateGoogleDocStepInput,\n CreateGoogleSheetStepInput,\n DeleteGoogleCalendarEventStepInput,\n DetectPIIStepInput,\n DownloadVideoStepInput,\n EnhanceImageGenerationPromptStepInput,\n EnhanceVideoGenerationPromptStepInput,\n EnrichPersonStepInput,\n ExtractAudioFromVideoStepInput,\n ExtractTextStepInput,\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 GetGoogleCalendarEventStepInput,\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 ListGoogleCalendarEventsStepInput,\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 ResizeVideoStepInput,\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 SearchGoogleStepInput,\n SearchGoogleImagesStepInput,\n SearchGoogleNewsStepInput,\n SearchGoogleTrendsStepInput,\n SearchPerplexityStepInput,\n SearchXPostsStepInput,\n SearchYoutubeStepInput,\n SearchYoutubeTrendsStepInput,\n SendEmailStepInput,\n SendSMSStepInput,\n SetRunTitleStepInput,\n SetVariableStepInput,\n TelegramSendAudioStepInput,\n TelegramSendFileStepInput,\n TelegramSendImageStepInput,\n TelegramSendMessageStepInput,\n TelegramSendVideoStepInput,\n TelegramSetTypingStepInput,\n TextToSpeechStepInput,\n TranscribeAudioStepInput,\n TrimMediaStepInput,\n UpdateGoogleCalendarEventStepInput,\n UpdateGoogleDocStepInput,\n UpdateGoogleSheetStepInput,\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 CreateGoogleCalendarEventStepOutput,\n CreateGoogleDocStepOutput,\n CreateGoogleSheetStepOutput,\n DeleteGoogleCalendarEventStepOutput,\n DetectPIIStepOutput,\n DownloadVideoStepOutput,\n EnhanceImageGenerationPromptStepOutput,\n EnhanceVideoGenerationPromptStepOutput,\n EnrichPersonStepOutput,\n ExtractAudioFromVideoStepOutput,\n ExtractTextStepOutput,\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 GetGoogleCalendarEventStepOutput,\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 ListGoogleCalendarEventsStepOutput,\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 ResizeVideoStepOutput,\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 SearchGoogleStepOutput,\n SearchGoogleImagesStepOutput,\n SearchGoogleNewsStepOutput,\n SearchGoogleTrendsStepOutput,\n SearchPerplexityStepOutput,\n SearchXPostsStepOutput,\n SearchYoutubeStepOutput,\n SearchYoutubeTrendsStepOutput,\n SendEmailStepOutput,\n SendSMSStepOutput,\n SetRunTitleStepOutput,\n SetVariableStepOutput,\n TelegramSendAudioStepOutput,\n TelegramSendFileStepOutput,\n TelegramSendImageStepOutput,\n TelegramSendMessageStepOutput,\n TelegramSendVideoStepOutput,\n TelegramSetTypingStepOutput,\n TextToSpeechStepOutput,\n TranscribeAudioStepOutput,\n TrimMediaStepOutput,\n UpdateGoogleCalendarEventStepOutput,\n UpdateGoogleDocStepOutput,\n UpdateGoogleSheetStepOutput,\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 * [ActiveCampaign] Add Note\n *\n * Add a note to an existing contact in ActiveCampaign.\n * \n * ## Usage Notes\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 activeCampaignAddNote(step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignAddNoteStepOutput>>;\n\n /**\n * [ActiveCampaign] Create Contact\n *\n * Create or sync a contact in ActiveCampaign.\n * \n * ## Usage Notes\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 activeCampaignCreateContact(step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignCreateContactStepOutput>>;\n\n /**\n * Add Subtitles To Video\n *\n * Automatically add subtitles to a video\n * \n * ## Usage Notes\n * - Can control style of text and animation\n */\n addSubtitlesToVideo(step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AddSubtitlesToVideoStepOutput>>;\n\n /**\n * [Airtable] Create/Update record\n *\n * Create a new record or update an existing record in an Airtable table.\n * \n * ## Usage Notes\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 airtableCreateUpdateRecord(step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableCreateUpdateRecordStepOutput>>;\n\n /**\n * [Airtable] Delete record\n *\n * Delete a record from an Airtable table by its record ID.\n * \n * ## Usage Notes\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Silently succeeds if the record does not exist.\n */\n airtableDeleteRecord(step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableDeleteRecordStepOutput>>;\n\n /**\n * [Airtable] Get record\n *\n * Fetch a single record from an Airtable table by its record ID.\n * \n * ## Usage Notes\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 airtableGetRecord(step: AirtableGetRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetRecordStepOutput>>;\n\n /**\n * [Airtable] Get table records\n *\n * Fetch multiple records from an Airtable table with optional pagination.\n * \n * ## Usage Notes\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 airtableGetTableRecords(step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetTableRecordsStepOutput>>;\n\n /**\n * Analyze Image\n *\n * Analyze an image using a vision model based on a text prompt.\n * \n * ## Usage Notes\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 analyzeImage(step: AnalyzeImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeImageStepOutput>>;\n\n /**\n * Analyze Video\n *\n * Analyze a video using a video analysis model based on a text prompt.\n * \n * ## Usage Notes\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 analyzeVideo(step: AnalyzeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeVideoStepOutput>>;\n\n /**\n * Get Image from Video Frame\n *\n * Capture a thumbnail from a video at a specified timestamp\n * \n * ## Usage Notes\n * \n */\n captureThumbnail(step: CaptureThumbnailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CaptureThumbnailStepOutput>>;\n\n /**\n * [Coda] Create/Update page\n *\n * Create a new page or update an existing page in a Coda document.\n * \n * ## Usage Notes\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 codaCreateUpdatePage(step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdatePageStepOutput>>;\n\n /**\n * [Coda] Create/Update row\n *\n * Create a new row or update an existing row in a Coda table.\n * \n * ## Usage Notes\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 codaCreateUpdateRow(step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdateRowStepOutput>>;\n\n /**\n * [Coda] Find row\n *\n * Search for a row in a Coda table by matching column values.\n * \n * ## Usage Notes\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 codaFindRow(step: CodaFindRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaFindRowStepOutput>>;\n\n /**\n * [Coda] Get page\n *\n * Export and read the contents of a page from a Coda document.\n * \n * ## Usage Notes\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 codaGetPage(step: CodaGetPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetPageStepOutput>>;\n\n /**\n * [Coda] Get table rows\n *\n * Fetch rows from a Coda table with optional pagination.\n * \n * ## Usage Notes\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 codaGetTableRows(step: CodaGetTableRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetTableRowsStepOutput>>;\n\n /**\n * Convert PDF to Images\n *\n * Convert each page of a PDF document into a PNG image.\n * \n * ## Usage Notes\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 convertPdfToImages(step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ConvertPdfToImagesStepOutput>>;\n\n /**\n * [Google Calendar] Create Event\n *\n * Create a new event on a Google Calendar.\n * \n * ## Usage Notes\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 createGoogleCalendarEvent(step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleCalendarEventStepOutput>>;\n\n /**\n * [Google] Create Google Doc\n *\n * Create a new Google Document and optionally populate it with content.\n * \n * ## Usage Notes\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n */\n createGoogleDoc(step: CreateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleDocStepOutput>>;\n\n /**\n * [Google] Create Google Sheet\n *\n * Create a new Google Spreadsheet and populate it with CSV data.\n */\n createGoogleSheet(step: CreateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleSheetStepOutput>>;\n\n /**\n * [Google Calendar] Get Event\n *\n * Retrieve a specific event from a Google Calendar by event ID.\n * \n * ## Usage Notes\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 deleteGoogleCalendarEvent(step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleCalendarEventStepOutput>>;\n\n /**\n * Detect PII\n *\n * Scan text for personally identifiable information using Microsoft Presidio.\n * \n * ## Usage Notes\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 detectPII(step: DetectPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectPIIStepOutput>>;\n\n /**\n * Download Video\n *\n * Download a video file\n * \n * ## Usage Notes\n * - Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\n * - Can save as mp4 or mp3\n */\n downloadVideo(step: DownloadVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DownloadVideoStepOutput>>;\n\n /**\n * Enhance Image Prompt\n *\n * Auto-enhance an image generation prompt using a language model. Optionally generates a negative prompt.\n * \n * ## Usage Notes\n * - Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n */\n enhanceImageGenerationPrompt(step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceImageGenerationPromptStepOutput>>;\n\n /**\n * Enhance Video Prompt\n *\n * Auto-enhance a video generation prompt using a language model. Optionally generates a negative prompt.\n * \n * ## Usage Notes\n * - Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n */\n enhanceVideoGenerationPrompt(step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceVideoGenerationPromptStepOutput>>;\n\n /**\n * [Apollo] Enrich Person\n *\n * Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\n * \n * ## Usage Notes\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 enrichPerson(step: EnrichPersonStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnrichPersonStepOutput>>;\n\n /**\n * Extract Audio from Video\n *\n * Extract audio MP3 from a video file\n * \n * ## Usage Notes\n * \n */\n extractAudioFromVideo(step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractAudioFromVideoStepOutput>>;\n\n /**\n * Extract Text from URL\n *\n * Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\n * \n * ## Usage Notes\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 extractText(step: ExtractTextStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractTextStepOutput>>;\n\n /**\n * [Google] Fetch Google Doc\n *\n * Fetch the contents of an existing Google Document.\n * \n * ## Usage Notes\n * - exportType controls the output format: \"html\" for HTML markup, \"markdown\" for Markdown, \"json\" for structured JSON, \"plain\" for plain text.\n */\n fetchGoogleDoc(step: FetchGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleDocStepOutput>>;\n\n /**\n * [Google] Fetch Google Sheet\n *\n * Fetch contents of a Google Spreadsheet range.\n * \n * ## Usage Notes\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 fetchGoogleSheet(step: FetchGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleSheetStepOutput>>;\n\n /**\n * Fetch Slack Channel History\n *\n * Fetch recent message history from a Slack channel.\n * \n * ## Usage Notes\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n */\n fetchSlackChannelHistory(step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchSlackChannelHistoryStepOutput>>;\n\n /**\n * [YouTube] Fetch Captions\n *\n * Retrieve the captions/transcript for a YouTube video.\n * \n * ## Usage Notes\n * - Supports multiple languages via the language parameter.\n * - \"text\" export produces timestamped plain text; \"json\" export produces structured transcript data.\n */\n fetchYoutubeCaptions(step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCaptionsStepOutput>>;\n\n /**\n * [YouTube] Fetch Channel\n *\n * Retrieve metadata and recent videos for a YouTube channel.\n * \n * ## Usage Notes\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 fetchYoutubeChannel(step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeChannelStepOutput>>;\n\n /**\n * [YouTube] Fetch Comments\n *\n * Retrieve comments for a YouTube video.\n * \n * ## Usage Notes\n * - Paginates through comments (up to 5 pages).\n * - \"text\" export produces markdown-formatted text; \"json\" export produces structured comment data.\n */\n fetchYoutubeComments(step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCommentsStepOutput>>;\n\n /**\n * [YouTube] Fetch Video\n *\n * Retrieve metadata for a YouTube video (title, description, stats, channel info).\n * \n * ## Usage Notes\n * - Returns video metadata, channel info, and engagement stats.\n * - Video format data is excluded from the response.\n */\n fetchYoutubeVideo(step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeVideoStepOutput>>;\n\n /**\n * Generate Chart\n *\n * Create a chart image using QuickChart (Chart.js) and return the URL.\n * \n * ## Usage Notes\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 generateChart(step: GenerateChartStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateChartStepOutput>>;\n\n /**\n * Generate Image\n *\n * Generate an image from a text prompt using an AI model.\n * \n * ## Usage Notes\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 generateImage(step: GenerateImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateImageStepOutput>>;\n\n /**\n * Generate Lipsync\n *\n * Generate a lip sync video from provided audio and image.\n * \n * ## Usage Notes\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n */\n generateLipsync(step: GenerateLipsyncStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateLipsyncStepOutput>>;\n\n /**\n * Generate Music\n *\n * Generate an audio file from provided instructions (text) using a music model.\n * \n * ## Usage Notes\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 generateMusic(step: GenerateMusicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateMusicStepOutput>>;\n\n /**\n * Generate HTML Asset\n *\n * Generate an HTML asset and export it as a webpage, PDF, or image\n * \n * ## Usage Notes\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 generatePdf(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /** Alias for {@link StepMethods.generatePdf}. */\n generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /**\n * Generate Static Video from Image\n *\n * Convert a static image to an MP4\n * \n * ## Usage Notes\n * - Can use to create slides/intertitles/slates for video composition\n */\n generateStaticVideoFromImage(step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateStaticVideoFromImageStepOutput>>;\n\n /**\n * Generate Video\n *\n * Generate a video from a text prompt using an AI model.\n * \n * ## Usage Notes\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 generateVideo(step: GenerateVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateVideoStepOutput>>;\n\n /**\n * [Google Calendar] Get Event\n *\n * Retrieve a specific event from a Google Calendar by event ID.\n * \n * ## Usage Notes\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 getGoogleCalendarEvent(step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleCalendarEventStepOutput>>;\n\n /**\n * Get Media Metadata\n *\n * Get info about a media file\n * \n * ## Usage Notes\n * \n */\n getMediaMetadata(step: GetMediaMetadataStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetMediaMetadataStepOutput>>;\n\n /**\n * HTTP Request\n *\n * Make an HTTP request to an external endpoint and return the response.\n * \n * ## Usage Notes\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 httpRequest(step: HttpRequestStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HttpRequestStepOutput>>;\n\n /**\n * [HubSpot] Create/Update Company\n *\n * Create a new company or update an existing one in HubSpot. Matches by domain.\n * \n * ## Usage Notes\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 hubspotCreateCompany(step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateCompanyStepOutput>>;\n\n /**\n * [HubSpot] Create/Update Contact\n *\n * Create a new contact or update an existing one in HubSpot. Matches by email address.\n * \n * ## Usage Notes\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 hubspotCreateContact(step: HubspotCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateContactStepOutput>>;\n\n /**\n * [HubSpot] Get Company\n *\n * Look up a HubSpot company by domain name or company ID.\n * \n * ## Usage Notes\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 hubspotGetCompany(step: HubspotGetCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetCompanyStepOutput>>;\n\n /**\n * [HubSpot] Get Contact\n *\n * Look up a HubSpot contact by email address or contact ID.\n * \n * ## Usage Notes\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 hubspotGetContact(step: HubspotGetContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetContactStepOutput>>;\n\n /**\n * [Hunter.io] Enrich Company\n *\n * Look up company information by domain using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiCompanyEnrichment(step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiCompanyEnrichmentStepOutput>>;\n\n /**\n * [Hunter.io] Domain Search\n *\n * Search for email addresses associated with a domain using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiDomainSearch(step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiDomainSearchStepOutput>>;\n\n /**\n * [Hunter.io] Find Email\n *\n * Find an email address for a specific person at a domain using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiEmailFinder(step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailFinderStepOutput>>;\n\n /**\n * [Hunter.io] Verify Email\n *\n * Verify whether an email address is valid and deliverable using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiEmailVerification(step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailVerificationStepOutput>>;\n\n /**\n * [Hunter.io] Enrich Person\n *\n * Look up professional information about a person by their email address using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiPersonEnrichment(step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiPersonEnrichmentStepOutput>>;\n\n /**\n * Image Face Swap\n *\n * Replace a face in an image with a face from another image using AI.\n * \n * ## Usage Notes\n * - Requires both a target image and a face source image.\n * - Output is re-hosted on the CDN as a PNG.\n */\n imageFaceSwap(step: ImageFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageFaceSwapStepOutput>>;\n\n /**\n * Remove Image Watermark\n *\n * Remove watermarks from an image using AI.\n * \n * ## Usage Notes\n * - Output is re-hosted on the CDN as a PNG.\n */\n imageRemoveWatermark(step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageRemoveWatermarkStepOutput>>;\n\n /**\n * Insert Video Clips\n *\n * Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\n * \n * ## Usage Notes\n * \n */\n insertVideoClips(step: InsertVideoClipsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<InsertVideoClipsStepOutput>>;\n\n /**\n * [Google Calendar] List Events\n *\n * List upcoming events from a Google Calendar, ordered by start time.\n * \n * ## Usage Notes\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 listGoogleCalendarEvents(step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleCalendarEventsStepOutput>>;\n\n /**\n * Evaluate Logic\n *\n * Use an AI model to evaluate which condition from a list is most true, given a context prompt.\n * \n * ## Usage Notes\n * - This is \"fuzzy\" logic evaluated by an AI model, not computational logic. The model picks the most accurate statement.\n * - All possible cases must be specified — there is no default/fallback case.\n * - Requires at least two cases.\n * - In workflow mode, transitions to the destinationStepId of the winning case. In direct execution, returns the winning case ID and condition.\n */\n logic(step: LogicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<LogicStepOutput>>;\n\n /**\n * Make.com Run Scenario\n *\n * Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\n * \n * ## Usage Notes\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 makeDotComRunScenario(step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MakeDotComRunScenarioStepOutput>>;\n\n /**\n * Merge Audio\n *\n * Merge one or more clips into a single audio file.\n * \n * ## Usage Notes\n * \n */\n mergeAudio(step: MergeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeAudioStepOutput>>;\n\n /**\n * Merge Videos\n *\n * Merge one or more clips into a single video.\n * \n * ## Usage Notes\n * \n */\n mergeVideos(step: MergeVideosStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeVideosStepOutput>>;\n\n /**\n * Mix Audio into Video\n *\n * Mix an audio track into a video\n * \n * ## Usage Notes\n * \n */\n mixAudioIntoVideo(step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MixAudioIntoVideoStepOutput>>;\n\n /**\n * Mute Video\n *\n * Mute a video file\n * \n * ## Usage Notes\n * \n */\n muteVideo(step: MuteVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MuteVideoStepOutput>>;\n\n /**\n * N8N Run Node\n *\n * Trigger an n8n workflow node via webhook and return the response.\n * \n * ## Usage Notes\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 n8nRunNode(step: N8nRunNodeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<N8nRunNodeStepOutput>>;\n\n /**\n * [Notion] Create Page\n *\n * Create a new page in Notion as a child of an existing page.\n * \n * ## Usage Notes\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 notionCreatePage(step: NotionCreatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionCreatePageStepOutput>>;\n\n /**\n * [Notion] Update Page\n *\n * Update the content of an existing Notion page.\n * \n * ## Usage Notes\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 notionUpdatePage(step: NotionUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionUpdatePageStepOutput>>;\n\n /**\n * [Apollo] People Search\n *\n * Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\n * \n * ## Usage Notes\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 peopleSearch(step: PeopleSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PeopleSearchStepOutput>>;\n\n /**\n * [LinkedIn] Create post\n *\n * Create a post on LinkedIn from the connected account.\n * \n * ## Usage Notes\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 postToLinkedIn(step: PostToLinkedInStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToLinkedInStepOutput>>;\n\n /**\n * Post to Slack Channel\n *\n * Send a message to a Slack channel via a connected bot.\n * \n * ## Usage Notes\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 postToSlackChannel(step: PostToSlackChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToSlackChannelStepOutput>>;\n\n /**\n * [X] Create post\n *\n * Create a post on X (Twitter) from the connected account.\n * \n * ## Usage Notes\n * - Requires an X OAuth connection (connectionId).\n * - Posts are plain text. Maximum 280 characters.\n */\n postToX(step: PostToXStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToXStepOutput>>;\n\n /**\n * Post to Zapier\n *\n * Send data to a Zapier Zap via webhook and return the response.\n * \n * ## Usage Notes\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 postToZapier(step: PostToZapierStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToZapierStepOutput>>;\n\n /**\n * Query Data Source\n *\n * Search a vector data source (RAG) and return relevant document chunks.\n * \n * ## Usage Notes\n * - Queries a vectorized data source and returns the most relevant chunks.\n * - Useful for retrieval-augmented generation (RAG) workflows.\n */\n queryDataSource(step: QueryDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryDataSourceStepOutput>>;\n\n /**\n * Query External SQL Database\n *\n * Execute a SQL query against an external database connected to the workspace.\n * \n * ## Usage Notes\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 queryExternalDatabase(step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryExternalDatabaseStepOutput>>;\n\n /**\n * Redact PII\n *\n * Replace personally identifiable information in text with placeholders using Microsoft Presidio.\n * \n * ## Usage Notes\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 redactPII(step: RedactPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RedactPIIStepOutput>>;\n\n /**\n * Remove Background From Image\n *\n * Remove the background from an image using AI, producing a transparent PNG.\n * \n * ## Usage Notes\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 removeBackgroundFromImage(step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RemoveBackgroundFromImageStepOutput>>;\n\n /**\n * Resize Video\n *\n * Resize a video file\n * \n * ## Usage Notes\n * \n */\n resizeVideo(step: ResizeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ResizeVideoStepOutput>>;\n\n /**\n * Run Packaged Workflow\n *\n * Run a packaged workflow (\"custom block\")\n * \n * ## Usage Notes\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 runPackagedWorkflow(step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunPackagedWorkflowStepOutput>>;\n\n /**\n * [Facebook] Scrape Page\n *\n * Scrape a Facebook page\n */\n scrapeFacebookPage(step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPageStepOutput>>;\n\n /**\n * [Facebook] Scrape Posts for Page\n *\n * Get all the posts for a Facebook page\n */\n scrapeFacebookPosts(step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPostsStepOutput>>;\n\n /**\n * [Instagram] Scrape Comments\n *\n * Get all the comments for an Instagram post\n */\n scrapeInstagramComments(step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramCommentsStepOutput>>;\n\n /**\n * [Instagram] Scrape Mentions\n *\n * Scrape an Instagram profile's mentions\n */\n scrapeInstagramMentions(step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramMentionsStepOutput>>;\n\n /**\n * [Instagram] Scrape Posts\n *\n * Get all the posts for an Instagram profile\n */\n scrapeInstagramPosts(step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramPostsStepOutput>>;\n\n /**\n * [Instagram] Scrape Profile\n *\n * Scrape an Instagram profile\n */\n scrapeInstagramProfile(step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramProfileStepOutput>>;\n\n /**\n * [Instagram] Scrape Reels\n *\n * Get all the reels for an Instagram profile\n */\n scrapeInstagramReels(step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramReelsStepOutput>>;\n\n /**\n * Scrape LinkedIn Company\n *\n * Scrape public company data from a LinkedIn company page.\n * \n * ## Usage Notes\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 scrapeLinkedInCompany(step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInCompanyStepOutput>>;\n\n /**\n * Scrape LinkedIn Profile\n *\n * Scrape public profile data from a LinkedIn profile page.\n * \n * ## Usage Notes\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 scrapeLinkedInProfile(step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInProfileStepOutput>>;\n\n /**\n * [Meta Threads] Scrape Profile\n *\n * Scrape a Meta Threads profile\n */\n scrapeMetaThreadsProfile(step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeMetaThreadsProfileStepOutput>>;\n\n /**\n * Scrape URL\n *\n * Extract text, HTML, or structured content from one or more web pages.\n * \n * ## Usage Notes\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 scrapeUrl(step: ScrapeUrlStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeUrlStepOutput>>;\n\n /**\n * Scrape X Post\n *\n * Scrape data from a single X (Twitter) post by URL.\n * \n * ## Usage Notes\n * - Returns structured post data (text, html, optional json/screenshot/metadata).\n * - Optionally saves the text content to a variable.\n */\n scrapeXPost(step: ScrapeXPostStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXPostStepOutput>>;\n\n /**\n * Scrape X Profile\n *\n * Scrape public profile data from an X (Twitter) account by URL.\n * \n * ## Usage Notes\n * - Returns structured profile data.\n * - Optionally saves the result to a variable.\n */\n scrapeXProfile(step: ScrapeXProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXProfileStepOutput>>;\n\n /**\n * Search Google\n *\n * Search the web using Google and return structured results.\n * \n * ## Usage Notes\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 searchGoogle(step: SearchGoogleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleStepOutput>>;\n\n /**\n * Search Google Images\n *\n * Search Google Images and return image results with URLs and metadata.\n * \n * ## Usage Notes\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 searchGoogleImages(step: SearchGoogleImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleImagesStepOutput>>;\n\n /**\n * Search Google News\n *\n * Search Google News for recent news articles matching a query.\n * \n * ## Usage Notes\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n */\n searchGoogleNews(step: SearchGoogleNewsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleNewsStepOutput>>;\n\n /**\n * Search Google Trends\n *\n * Fetch Google Trends data for a search term.\n * \n * ## Usage Notes\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 searchGoogleTrends(step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleTrendsStepOutput>>;\n\n /**\n * Search Perplexity\n *\n * Search the web using the Perplexity API and return structured results.\n * \n * ## Usage Notes\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 searchPerplexity(step: SearchPerplexityStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchPerplexityStepOutput>>;\n\n /**\n * [X] Search Posts\n *\n * Search recent X (Twitter) posts matching a query.\n * \n * ## Usage Notes\n * - Searches only the past 7 days of posts.\n * - Query supports X API v2 search operators (up to 512 characters).\n * \n * Available 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 * \n * Conjunction-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 * \n * For example, has:media alone is invalid, but #AI has:media is valid.\n */\n searchXPosts(step: SearchXPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchXPostsStepOutput>>;\n\n /**\n * [YouTube] Search Videos\n *\n * Search for YouTube videos by keyword.\n * \n * ## Usage Notes\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 searchYoutube(step: SearchYoutubeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeStepOutput>>;\n\n /**\n * [YouTube] Search Trends\n *\n * Retrieve trending videos on YouTube by category and region.\n * \n * ## Usage Notes\n * - Categories: \"now\" (trending now), \"music\", \"gaming\", \"films\".\n * - Supports country and language filtering.\n */\n searchYoutubeTrends(step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeTrendsStepOutput>>;\n\n /**\n * Send Email\n *\n * Send an email to one or more configured recipient addresses.\n * \n * ## Usage Notes\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 sendEmail(step: SendEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendEmailStepOutput>>;\n\n /**\n * Send SMS\n *\n * Send an SMS text message to a phone number configured via OAuth connection.\n * \n * ## Usage Notes\n * - User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\n */\n sendSMS(step: SendSMSStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendSMSStepOutput>>;\n\n /**\n * Set Run Title\n *\n * Set the title of the agent run for the user's history\n */\n setRunTitle(step: SetRunTitleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetRunTitleStepOutput>>;\n\n /**\n * Set Variable\n *\n * Explicitly set a variable to a given value.\n * \n * ## Usage Notes\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 setVariable(step: SetVariableStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetVariableStepOutput>>;\n\n /**\n * Send Telegram Audio\n *\n * Send an audio file to a Telegram chat as music or a voice note via a bot.\n * \n * ## Usage Notes\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 telegramSendAudio(step: TelegramSendAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendAudioStepOutput>>;\n\n /**\n * Send Telegram File\n *\n * Send a document/file to a Telegram chat via a bot.\n */\n telegramSendFile(step: TelegramSendFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendFileStepOutput>>;\n\n /**\n * Send Telegram Image\n *\n * Send an image to a Telegram chat via a bot.\n */\n telegramSendImage(step: TelegramSendImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendImageStepOutput>>;\n\n /**\n * Send Telegram Message\n *\n * Send a text message to a Telegram chat via a bot.\n * \n * ## Usage Notes\n * - Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\n * - botToken format is \"botId:token\" — both parts are required.\n */\n telegramSendMessage(step: TelegramSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendMessageStepOutput>>;\n\n /**\n * Send Telegram Video\n *\n * Send a video to a Telegram chat via a bot.\n */\n telegramSendVideo(step: TelegramSendVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendVideoStepOutput>>;\n\n /**\n * Telegram Set Typing\n *\n * Show the \"typing...\" indicator in a Telegram chat via a bot.\n * \n * ## Usage Notes\n * - The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\n */\n telegramSetTyping(step: TelegramSetTypingStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSetTypingStepOutput>>;\n\n /**\n * Text to Speech\n *\n * Generate an audio file from provided text using a speech model.\n * \n * ## Usage Notes\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 textToSpeech(step: TextToSpeechStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TextToSpeechStepOutput>>;\n\n /**\n * Transcribe Audio\n *\n * Convert an audio file to text using a transcription model.\n * \n * ## Usage Notes\n * - The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\n */\n transcribeAudio(step: TranscribeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TranscribeAudioStepOutput>>;\n\n /**\n * Trim Media\n *\n * Trim an audio or video clip\n * \n * ## Usage Notes\n * \n */\n trimMedia(step: TrimMediaStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TrimMediaStepOutput>>;\n\n /**\n * [Google Calendar] Update Event\n *\n * Update an existing event on a Google Calendar. Only specified fields are changed.\n * \n * ## Usage Notes\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 updateGoogleCalendarEvent(step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleCalendarEventStepOutput>>;\n\n /**\n * [Google] Update Google Doc\n *\n * Update the contents of an existing Google Document.\n * \n * ## Usage Notes\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 updateGoogleDoc(step: UpdateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleDocStepOutput>>;\n\n /**\n * [Google] Update Google Sheet\n *\n * Update a Google Spreadsheet with new data.\n * \n * ## Usage Notes\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 updateGoogleSheet(step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleSheetStepOutput>>;\n\n /**\n * Upscale Image\n *\n * Increase the resolution of an image using AI upscaling.\n * \n * ## Usage Notes\n * - Output is re-hosted on the CDN as a PNG.\n */\n upscaleImage(step: UpscaleImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleImageStepOutput>>;\n\n /**\n * Upscale Video\n *\n * Upscale a video file\n * \n * ## Usage Notes\n * \n */\n upscaleVideo(step: UpscaleVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleVideoStepOutput>>;\n\n /**\n * User Message\n *\n * Send a message to an AI model and return the response, or echo a system message.\n * \n * ## Usage Notes\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 userMessage(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /** Alias for {@link StepMethods.userMessage}. */\n generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /**\n * Video Face Swap\n *\n * Swap faces in a video file\n * \n * ## Usage Notes\n * \n */\n videoFaceSwap(step: VideoFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoFaceSwapStepOutput>>;\n\n /**\n * Remove Video Background\n *\n * Remove or replace background from a video\n * \n * ## Usage Notes\n * \n */\n videoRemoveBackground(step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveBackgroundStepOutput>>;\n\n /**\n * Remove Video Watermark\n *\n * Remove a watermark from a video\n * \n * ## Usage Notes\n * \n */\n videoRemoveWatermark(step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveWatermarkStepOutput>>;\n\n /**\n * Watermark Image\n *\n * Overlay a watermark image onto another image.\n * \n * ## Usage Notes\n * - The watermark is placed at the specified corner with configurable padding and width.\n */\n watermarkImage(step: WatermarkImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkImageStepOutput>>;\n\n /**\n * Watermark Video\n *\n * Add an image watermark to a video\n * \n * ## Usage Notes\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.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.deleteGoogleCalendarEvent = function (step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGoogleCalendarEvent\", 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.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.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.generatePdf = function (step: GeneratePdfStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generatePdf\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateAsset = proto.generatePdf;\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.getGoogleCalendarEvent = function (step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleCalendarEvent\", 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.listGoogleCalendarEvents = function (step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGoogleCalendarEvents\", 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.resizeVideo = function (step: ResizeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"resizeVideo\", 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.searchGoogle = function (step: SearchGoogleStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogle\", 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.sendSMS = function (step: SendSMSStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendSMS\", 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.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.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.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.userMessage = function (step: UserMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"userMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateText = proto.userMessage;\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-02-27T19:37:40.281Z\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 /** Full model identifier from the provider. */\n rawName?: 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 publisher?: string;\n maxTemperature?: number;\n maxResponseSize?: number;\n /** Accepted input types for this model (text, imageUrl, videoUrl, etc.). */\n inputs?: Record<string, unknown>[];\n contextWindow?: number;\n tags?: string;\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 connector services (Slack, Google, HubSpot, etc.).\n */\n listConnectors(): Promise<{ services: Array<{ service: Record<string, unknown>; actions: Record<string, unknown>[] }> }>;\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: Record<string, unknown> }>;\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.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","import { request, type HttpClientConfig } from './http.js';\nimport { MindStudioError } from './errors.js';\nimport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://v1.mindstudio-api.com';\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. `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. `https://v1.mindstudio-api.com` (production default)\n */\nexport class MindStudioAgent {\n /** @internal */\n readonly _httpConfig: HttpClientConfig;\n\n constructor(options: AgentOptions = {}) {\n const token = resolveToken(options.apiKey);\n const baseUrl =\n options.baseUrl ??\n process.env.MINDSTUDIO_BASE_URL ??\n process.env.REMOTE_HOSTNAME ??\n DEFAULT_BASE_URL;\n\n this._httpConfig = { baseUrl, token };\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 { 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 ...(options?.threadId != null && { threadId: options.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 return {\n ...(output as object),\n $appId: headers.get('x-mindstudio-app-id') ?? '',\n $threadId: headers.get('x-mindstudio-thread-id') ?? '',\n } as StepExecutionResult<TOutput>;\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\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(provided?: string): string {\n if (provided) return provided;\n if (process.env.MINDSTUDIO_API_KEY) return process.env.MINDSTUDIO_API_KEY;\n if (process.env.CALLBACK_TOKEN) return process.env.CALLBACK_TOKEN;\n throw new MindStudioError(\n 'No API key provided. Pass `apiKey` to the MindStudioAgent constructor, ' +\n '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-02-27T19:37:40.281Z\n\n\nexport interface StepSnippet {\n method: string;\n snippet: string;\n outputKeys: string[];\n}\n\nexport const stepSnippets: Record<string, StepSnippet> = {\n \"activeCampaignAddNote\": {\n method: \"activeCampaignAddNote\",\n snippet: \"{\\n contactId: '',\\n note: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"activeCampaignCreateContact\": {\n method: \"activeCampaignCreateContact\",\n snippet: \"{\\n email: '',\\n firstName: '',\\n lastName: '',\\n phone: '',\\n accountId: '',\\n customFields: {},\\n connectionId: '',\\n}\",\n outputKeys: [\"contactId\"],\n },\n \"addSubtitlesToVideo\": {\n method: \"addSubtitlesToVideo\",\n snippet: \"{\\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 outputKeys: [\"videoUrl\"],\n },\n \"airtableCreateUpdateRecord\": {\n method: \"airtableCreateUpdateRecord\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n fields: '',\\n recordData: {},\\n}\",\n outputKeys: [\"recordId\"],\n },\n \"airtableDeleteRecord\": {\n method: \"airtableDeleteRecord\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n recordId: '',\\n}\",\n outputKeys: [\"deleted\"],\n },\n \"airtableGetRecord\": {\n method: \"airtableGetRecord\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n recordId: '',\\n}\",\n outputKeys: [\"record\"],\n },\n \"airtableGetTableRecords\": {\n method: \"airtableGetTableRecords\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n}\",\n outputKeys: [\"records\"],\n },\n \"analyzeImage\": {\n method: \"analyzeImage\",\n snippet: \"{\\n prompt: '',\\n imageUrl: '',\\n}\",\n outputKeys: [\"analysis\"],\n },\n \"analyzeVideo\": {\n method: \"analyzeVideo\",\n snippet: \"{\\n prompt: '',\\n videoUrl: '',\\n}\",\n outputKeys: [\"analysis\"],\n },\n \"captureThumbnail\": {\n method: \"captureThumbnail\",\n snippet: \"{\\n videoUrl: '',\\n at: '',\\n}\",\n outputKeys: [\"thumbnailUrl\"],\n },\n \"codaCreateUpdatePage\": {\n method: \"codaCreateUpdatePage\",\n snippet: \"{\\n connectionId: '',\\n pageData: {},\\n}\",\n outputKeys: [\"pageId\"],\n },\n \"codaCreateUpdateRow\": {\n method: \"codaCreateUpdateRow\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n tableId: '',\\n rowData: {},\\n}\",\n outputKeys: [\"rowId\"],\n },\n \"codaFindRow\": {\n method: \"codaFindRow\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n tableId: '',\\n rowData: {},\\n}\",\n outputKeys: [\"row\"],\n },\n \"codaGetPage\": {\n method: \"codaGetPage\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n pageId: '',\\n}\",\n outputKeys: [\"content\"],\n },\n \"codaGetTableRows\": {\n method: \"codaGetTableRows\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n tableId: '',\\n}\",\n outputKeys: [\"rows\"],\n },\n \"convertPdfToImages\": {\n method: \"convertPdfToImages\",\n snippet: \"{\\n pdfUrl: '',\\n}\",\n outputKeys: [\"imageUrls\"],\n },\n \"createGoogleCalendarEvent\": {\n method: \"createGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n summary: '',\\n startDateTime: '',\\n endDateTime: '',\\n}\",\n outputKeys: [\"eventId\",\"htmlLink\"],\n },\n \"createGoogleDoc\": {\n method: \"createGoogleDoc\",\n snippet: \"{\\n title: '',\\n text: '',\\n connectionId: '',\\n textType: \\\"plain\\\",\\n}\",\n outputKeys: [\"documentUrl\"],\n },\n \"createGoogleSheet\": {\n method: \"createGoogleSheet\",\n snippet: \"{\\n title: '',\\n text: '',\\n connectionId: '',\\n}\",\n outputKeys: [\"spreadsheetUrl\"],\n },\n \"deleteGoogleCalendarEvent\": {\n method: \"deleteGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n eventId: '',\\n}\",\n outputKeys: [],\n },\n \"detectPII\": {\n method: \"detectPII\",\n snippet: \"{\\n input: '',\\n language: '',\\n entities: [],\\n}\",\n outputKeys: [\"detected\",\"detections\"],\n },\n \"downloadVideo\": {\n method: \"downloadVideo\",\n snippet: \"{\\n videoUrl: '',\\n format: \\\"mp4\\\",\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"enhanceImageGenerationPrompt\": {\n method: \"enhanceImageGenerationPrompt\",\n snippet: \"{\\n initialPrompt: '',\\n includeNegativePrompt: false,\\n systemPrompt: '',\\n}\",\n outputKeys: [\"prompt\"],\n },\n \"enhanceVideoGenerationPrompt\": {\n method: \"enhanceVideoGenerationPrompt\",\n snippet: \"{\\n initialPrompt: '',\\n includeNegativePrompt: false,\\n systemPrompt: '',\\n}\",\n outputKeys: [\"prompt\"],\n },\n \"enrichPerson\": {\n method: \"enrichPerson\",\n snippet: \"{\\n params: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"extractAudioFromVideo\": {\n method: \"extractAudioFromVideo\",\n snippet: \"{\\n videoUrl: '',\\n}\",\n outputKeys: [\"audioUrl\"],\n },\n \"extractText\": {\n method: \"extractText\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"text\"],\n },\n \"fetchGoogleDoc\": {\n method: \"fetchGoogleDoc\",\n snippet: \"{\\n documentId: '',\\n connectionId: '',\\n exportType: \\\"html\\\",\\n}\",\n outputKeys: [\"content\"],\n },\n \"fetchGoogleSheet\": {\n method: \"fetchGoogleSheet\",\n snippet: \"{\\n spreadsheetId: '',\\n range: '',\\n connectionId: '',\\n exportType: \\\"csv\\\",\\n}\",\n outputKeys: [\"content\"],\n },\n \"fetchSlackChannelHistory\": {\n method: \"fetchSlackChannelHistory\",\n snippet: \"{\\n connectionId: '',\\n channelId: '',\\n}\",\n outputKeys: [\"messages\"],\n },\n \"fetchYoutubeCaptions\": {\n method: \"fetchYoutubeCaptions\",\n snippet: \"{\\n videoUrl: '',\\n exportType: \\\"text\\\",\\n language: '',\\n}\",\n outputKeys: [\"transcripts\"],\n },\n \"fetchYoutubeChannel\": {\n method: \"fetchYoutubeChannel\",\n snippet: \"{\\n channelUrl: '',\\n}\",\n outputKeys: [\"channel\"],\n },\n \"fetchYoutubeComments\": {\n method: \"fetchYoutubeComments\",\n snippet: \"{\\n videoUrl: '',\\n exportType: \\\"text\\\",\\n limitPages: '',\\n}\",\n outputKeys: [\"comments\"],\n },\n \"fetchYoutubeVideo\": {\n method: \"fetchYoutubeVideo\",\n snippet: \"{\\n videoUrl: '',\\n}\",\n outputKeys: [\"video\"],\n },\n \"generateAsset\": {\n method: \"generateAsset\",\n snippet: \"{\\n source: '',\\n sourceType: \\\"html\\\",\\n outputFormat: \\\"pdf\\\",\\n pageSize: \\\"full\\\",\\n testData: {},\\n}\",\n outputKeys: [\"url\"],\n },\n \"generateChart\": {\n method: \"generateChart\",\n snippet: \"{\\n chart: {},\\n}\",\n outputKeys: [\"chartUrl\"],\n },\n \"generateImage\": {\n method: \"generateImage\",\n snippet: \"{\\n prompt: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"generateLipsync\": {\n method: \"generateLipsync\",\n snippet: \"{}\",\n outputKeys: [],\n },\n \"generateMusic\": {\n method: \"generateMusic\",\n snippet: \"{\\n text: '',\\n}\",\n outputKeys: [],\n },\n \"generatePdf\": {\n method: \"generatePdf\",\n snippet: \"{\\n source: '',\\n sourceType: \\\"html\\\",\\n outputFormat: \\\"pdf\\\",\\n pageSize: \\\"full\\\",\\n testData: {},\\n}\",\n outputKeys: [\"url\"],\n },\n \"generateStaticVideoFromImage\": {\n method: \"generateStaticVideoFromImage\",\n snippet: \"{\\n imageUrl: '',\\n duration: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"generateText\": {\n method: \"generateText\",\n snippet: \"{\\n message: '',\\n}\",\n outputKeys: [\"content\"],\n },\n \"generateVideo\": {\n method: \"generateVideo\",\n snippet: \"{\\n prompt: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"getGoogleCalendarEvent\": {\n method: \"getGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n eventId: '',\\n exportType: \\\"json\\\",\\n}\",\n outputKeys: [\"event\"],\n },\n \"getMediaMetadata\": {\n method: \"getMediaMetadata\",\n snippet: \"{\\n mediaUrl: '',\\n}\",\n outputKeys: [\"metadata\"],\n },\n \"httpRequest\": {\n method: \"httpRequest\",\n snippet: \"{\\n url: '',\\n method: '',\\n headers: {},\\n queryParams: {},\\n body: '',\\n bodyItems: {},\\n contentType: \\\"none\\\",\\n customContentType: '',\\n}\",\n outputKeys: [\"ok\",\"status\",\"statusText\",\"response\"],\n },\n \"hubspotCreateCompany\": {\n method: \"hubspotCreateCompany\",\n snippet: \"{\\n connectionId: '',\\n company: {},\\n enabledProperties: [],\\n}\",\n outputKeys: [\"companyId\"],\n },\n \"hubspotCreateContact\": {\n method: \"hubspotCreateContact\",\n snippet: \"{\\n connectionId: '',\\n contact: {},\\n enabledProperties: [],\\n companyDomain: '',\\n}\",\n outputKeys: [\"contactId\"],\n },\n \"hubspotGetCompany\": {\n method: \"hubspotGetCompany\",\n snippet: \"{\\n connectionId: '',\\n searchBy: \\\"domain\\\",\\n companyDomain: '',\\n companyId: '',\\n additionalProperties: [],\\n}\",\n outputKeys: [\"company\"],\n },\n \"hubspotGetContact\": {\n method: \"hubspotGetContact\",\n snippet: \"{\\n connectionId: '',\\n searchBy: \\\"email\\\",\\n contactEmail: '',\\n contactId: '',\\n additionalProperties: [],\\n}\",\n outputKeys: [\"contact\"],\n },\n \"hunterApiCompanyEnrichment\": {\n method: \"hunterApiCompanyEnrichment\",\n snippet: \"{\\n domain: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiDomainSearch\": {\n method: \"hunterApiDomainSearch\",\n snippet: \"{\\n domain: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiEmailFinder\": {\n method: \"hunterApiEmailFinder\",\n snippet: \"{\\n domain: '',\\n firstName: '',\\n lastName: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiEmailVerification\": {\n method: \"hunterApiEmailVerification\",\n snippet: \"{\\n email: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiPersonEnrichment\": {\n method: \"hunterApiPersonEnrichment\",\n snippet: \"{\\n email: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"imageFaceSwap\": {\n method: \"imageFaceSwap\",\n snippet: \"{\\n imageUrl: '',\\n faceImageUrl: '',\\n engine: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"imageRemoveWatermark\": {\n method: \"imageRemoveWatermark\",\n snippet: \"{\\n imageUrl: '',\\n engine: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"insertVideoClips\": {\n method: \"insertVideoClips\",\n snippet: \"{\\n baseVideoUrl: '',\\n overlayVideos: [],\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"listGoogleCalendarEvents\": {\n method: \"listGoogleCalendarEvents\",\n snippet: \"{\\n connectionId: '',\\n limit: 0,\\n exportType: \\\"json\\\",\\n}\",\n outputKeys: [\"events\"],\n },\n \"logic\": {\n method: \"logic\",\n snippet: \"{\\n context: '',\\n cases: [],\\n}\",\n outputKeys: [\"selectedCase\"],\n },\n \"makeDotComRunScenario\": {\n method: \"makeDotComRunScenario\",\n snippet: \"{\\n webhookUrl: '',\\n input: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"mergeAudio\": {\n method: \"mergeAudio\",\n snippet: \"{\\n mp3Urls: [],\\n}\",\n outputKeys: [\"audioUrl\"],\n },\n \"mergeVideos\": {\n method: \"mergeVideos\",\n snippet: \"{\\n videoUrls: [],\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"mixAudioIntoVideo\": {\n method: \"mixAudioIntoVideo\",\n snippet: \"{\\n videoUrl: '',\\n audioUrl: '',\\n options: {},\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"muteVideo\": {\n method: \"muteVideo\",\n snippet: \"{\\n videoUrl: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"n8nRunNode\": {\n method: \"n8nRunNode\",\n snippet: \"{\\n method: '',\\n authentication: \\\"none\\\",\\n user: '',\\n password: '',\\n webhookUrl: '',\\n input: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"notionCreatePage\": {\n method: \"notionCreatePage\",\n snippet: \"{\\n pageId: '',\\n content: '',\\n title: '',\\n connectionId: '',\\n}\",\n outputKeys: [\"pageId\",\"pageUrl\"],\n },\n \"notionUpdatePage\": {\n method: \"notionUpdatePage\",\n snippet: \"{\\n pageId: '',\\n content: '',\\n mode: \\\"append\\\",\\n connectionId: '',\\n}\",\n outputKeys: [\"pageId\",\"pageUrl\"],\n },\n \"peopleSearch\": {\n method: \"peopleSearch\",\n snippet: \"{\\n smartQuery: '',\\n enrichPeople: false,\\n enrichOrganizations: false,\\n limit: '',\\n page: '',\\n params: {},\\n}\",\n outputKeys: [\"results\"],\n },\n \"postToLinkedIn\": {\n method: \"postToLinkedIn\",\n snippet: \"{\\n message: '',\\n visibility: \\\"PUBLIC\\\",\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"postToSlackChannel\": {\n method: \"postToSlackChannel\",\n snippet: \"{\\n channelId: '',\\n messageType: \\\"string\\\",\\n message: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"postToX\": {\n method: \"postToX\",\n snippet: \"{\\n text: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"postToZapier\": {\n method: \"postToZapier\",\n snippet: \"{\\n webhookUrl: '',\\n input: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"queryDataSource\": {\n method: \"queryDataSource\",\n snippet: \"{\\n dataSourceId: '',\\n query: '',\\n maxResults: 0,\\n}\",\n outputKeys: [\"text\",\"chunks\",\"query\",\"citations\",\"latencyMs\"],\n },\n \"queryExternalDatabase\": {\n method: \"queryExternalDatabase\",\n snippet: \"{\\n connectionId: '',\\n query: '',\\n outputFormat: \\\"json\\\",\\n}\",\n outputKeys: [\"data\"],\n },\n \"redactPII\": {\n method: \"redactPII\",\n snippet: \"{\\n input: '',\\n language: '',\\n entities: [],\\n}\",\n outputKeys: [\"text\"],\n },\n \"removeBackgroundFromImage\": {\n method: \"removeBackgroundFromImage\",\n snippet: \"{\\n imageUrl: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"resizeVideo\": {\n method: \"resizeVideo\",\n snippet: \"{\\n videoUrl: '',\\n mode: \\\"fit\\\",\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"runPackagedWorkflow\": {\n method: \"runPackagedWorkflow\",\n snippet: \"{\\n appId: '',\\n workflowId: '',\\n inputVariables: {},\\n outputVariables: {},\\n name: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeFacebookPage\": {\n method: \"scrapeFacebookPage\",\n snippet: \"{\\n pageUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeFacebookPosts\": {\n method: \"scrapeFacebookPosts\",\n snippet: \"{\\n pageUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramComments\": {\n method: \"scrapeInstagramComments\",\n snippet: \"{\\n postUrl: '',\\n resultsLimit: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramMentions\": {\n method: \"scrapeInstagramMentions\",\n snippet: \"{\\n profileUrl: '',\\n resultsLimit: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramPosts\": {\n method: \"scrapeInstagramPosts\",\n snippet: \"{\\n profileUrl: '',\\n resultsLimit: '',\\n onlyPostsNewerThan: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramProfile\": {\n method: \"scrapeInstagramProfile\",\n snippet: \"{\\n profileUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramReels\": {\n method: \"scrapeInstagramReels\",\n snippet: \"{\\n profileUrl: '',\\n resultsLimit: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeLinkedInCompany\": {\n method: \"scrapeLinkedInCompany\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"company\"],\n },\n \"scrapeLinkedInProfile\": {\n method: \"scrapeLinkedInProfile\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"profile\"],\n },\n \"scrapeMetaThreadsProfile\": {\n method: \"scrapeMetaThreadsProfile\",\n snippet: \"{\\n profileUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeUrl\": {\n method: \"scrapeUrl\",\n snippet: \"{\\n url: '',\\n service: \\\"default\\\",\\n autoEnhance: false,\\n outputFormat: \\\"text\\\",\\n pageOptions: {},\\n}\",\n outputKeys: [\"content\"],\n },\n \"scrapeXPost\": {\n method: \"scrapeXPost\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"post\"],\n },\n \"scrapeXProfile\": {\n method: \"scrapeXProfile\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"profile\"],\n },\n \"searchGoogle\": {\n method: \"searchGoogle\",\n snippet: \"{\\n query: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"results\"],\n },\n \"searchGoogleImages\": {\n method: \"searchGoogleImages\",\n snippet: \"{\\n query: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"images\"],\n },\n \"searchGoogleNews\": {\n method: \"searchGoogleNews\",\n snippet: \"{\\n text: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"articles\"],\n },\n \"searchGoogleTrends\": {\n method: \"searchGoogleTrends\",\n snippet: \"{\\n text: '',\\n hl: '',\\n geo: '',\\n data_type: \\\"TIMESERIES\\\",\\n cat: '',\\n date: '',\\n ts: '',\\n}\",\n outputKeys: [\"trends\"],\n },\n \"searchPerplexity\": {\n method: \"searchPerplexity\",\n snippet: \"{\\n query: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"results\"],\n },\n \"searchXPosts\": {\n method: \"searchXPosts\",\n snippet: \"{\\n query: '',\\n scope: \\\"recent\\\",\\n options: {},\\n}\",\n outputKeys: [\"posts\"],\n },\n \"searchYoutube\": {\n method: \"searchYoutube\",\n snippet: \"{\\n query: '',\\n limitPages: '',\\n filter: '',\\n filterType: '',\\n}\",\n outputKeys: [\"results\"],\n },\n \"searchYoutubeTrends\": {\n method: \"searchYoutubeTrends\",\n snippet: \"{\\n bp: \\\"now\\\",\\n hl: '',\\n gl: '',\\n}\",\n outputKeys: [\"trends\"],\n },\n \"sendEmail\": {\n method: \"sendEmail\",\n snippet: \"{\\n subject: '',\\n body: '',\\n connectionId: '',\\n}\",\n outputKeys: [\"recipients\"],\n },\n \"sendSMS\": {\n method: \"sendSMS\",\n snippet: \"{\\n body: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"setRunTitle\": {\n method: \"setRunTitle\",\n snippet: \"{\\n title: '',\\n}\",\n outputKeys: [],\n },\n \"setVariable\": {\n method: \"setVariable\",\n snippet: \"{\\n value: '',\\n type: \\\"imageUrl\\\",\\n}\",\n outputKeys: [\"variableName\",\"value\"],\n },\n \"telegramSendAudio\": {\n method: \"telegramSendAudio\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n audioUrl: '',\\n mode: \\\"audio\\\",\\n}\",\n outputKeys: [],\n },\n \"telegramSendFile\": {\n method: \"telegramSendFile\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n fileUrl: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSendImage\": {\n method: \"telegramSendImage\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n imageUrl: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSendMessage\": {\n method: \"telegramSendMessage\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n text: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSendVideo\": {\n method: \"telegramSendVideo\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n videoUrl: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSetTyping\": {\n method: \"telegramSetTyping\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n}\",\n outputKeys: [],\n },\n \"textToSpeech\": {\n method: \"textToSpeech\",\n snippet: \"{\\n text: '',\\n}\",\n outputKeys: [\"audioUrl\"],\n },\n \"transcribeAudio\": {\n method: \"transcribeAudio\",\n snippet: \"{\\n audioUrl: '',\\n prompt: '',\\n}\",\n outputKeys: [\"text\"],\n },\n \"trimMedia\": {\n method: \"trimMedia\",\n snippet: \"{\\n inputUrl: '',\\n}\",\n outputKeys: [\"mediaUrl\"],\n },\n \"updateGoogleCalendarEvent\": {\n method: \"updateGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n eventId: '',\\n}\",\n outputKeys: [\"eventId\",\"htmlLink\"],\n },\n \"updateGoogleDoc\": {\n method: \"updateGoogleDoc\",\n snippet: \"{\\n documentId: '',\\n connectionId: '',\\n text: '',\\n textType: \\\"plain\\\",\\n operationType: \\\"addToTop\\\",\\n}\",\n outputKeys: [\"documentUrl\"],\n },\n \"updateGoogleSheet\": {\n method: \"updateGoogleSheet\",\n snippet: \"{\\n text: '',\\n connectionId: '',\\n spreadsheetId: '',\\n range: '',\\n operationType: \\\"addToBottom\\\",\\n}\",\n outputKeys: [\"spreadsheetUrl\"],\n },\n \"upscaleImage\": {\n method: \"upscaleImage\",\n snippet: \"{\\n imageUrl: '',\\n targetResolution: \\\"2k\\\",\\n engine: \\\"standard\\\",\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"upscaleVideo\": {\n method: \"upscaleVideo\",\n snippet: \"{\\n videoUrl: '',\\n targetResolution: \\\"720p\\\",\\n engine: \\\"standard\\\",\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"userMessage\": {\n method: \"userMessage\",\n snippet: \"{\\n message: '',\\n}\",\n outputKeys: [\"content\"],\n },\n \"videoFaceSwap\": {\n method: \"videoFaceSwap\",\n snippet: \"{\\n videoUrl: '',\\n faceImageUrl: '',\\n targetIndex: 0,\\n engine: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"videoRemoveBackground\": {\n method: \"videoRemoveBackground\",\n snippet: \"{\\n videoUrl: '',\\n newBackground: \\\"transparent\\\",\\n engine: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"videoRemoveWatermark\": {\n method: \"videoRemoveWatermark\",\n snippet: \"{\\n videoUrl: '',\\n engine: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"watermarkImage\": {\n method: \"watermarkImage\",\n snippet: \"{\\n imageUrl: '',\\n watermarkImageUrl: '',\\n corner: \\\"top-left\\\",\\n paddingPx: 0,\\n widthPx: 0,\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"watermarkVideo\": {\n method: \"watermarkVideo\",\n snippet: \"{\\n videoUrl: '',\\n imageUrl: '',\\n corner: \\\"top-left\\\",\\n paddingPx: 0,\\n widthPx: 0,\\n}\",\n outputKeys: [\"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} 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 } from './generated/helpers.js';\nexport { stepSnippets, type StepSnippet } from './generated/snippets.js';\n"],"mappings":"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","names":["MindStudioAgent"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/generated/steps.ts","../src/generated/helpers.ts","../src/client.ts","../src/generated/snippets.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';\n\nexport interface HttpClientConfig {\n baseUrl: string;\n token: string;\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 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 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","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-02-27T21:58:43.878Z\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 CreateGoogleCalendarEventStepInput,\n CreateGoogleDocStepInput,\n CreateGoogleSheetStepInput,\n DeleteGoogleCalendarEventStepInput,\n DetectPIIStepInput,\n DownloadVideoStepInput,\n EnhanceImageGenerationPromptStepInput,\n EnhanceVideoGenerationPromptStepInput,\n EnrichPersonStepInput,\n ExtractAudioFromVideoStepInput,\n ExtractTextStepInput,\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 GetGoogleCalendarEventStepInput,\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 ListGoogleCalendarEventsStepInput,\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 ResizeVideoStepInput,\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 SearchGoogleStepInput,\n SearchGoogleImagesStepInput,\n SearchGoogleNewsStepInput,\n SearchGoogleTrendsStepInput,\n SearchPerplexityStepInput,\n SearchXPostsStepInput,\n SearchYoutubeStepInput,\n SearchYoutubeTrendsStepInput,\n SendEmailStepInput,\n SendSMSStepInput,\n SetRunTitleStepInput,\n SetVariableStepInput,\n TelegramSendAudioStepInput,\n TelegramSendFileStepInput,\n TelegramSendImageStepInput,\n TelegramSendMessageStepInput,\n TelegramSendVideoStepInput,\n TelegramSetTypingStepInput,\n TextToSpeechStepInput,\n TranscribeAudioStepInput,\n TrimMediaStepInput,\n UpdateGoogleCalendarEventStepInput,\n UpdateGoogleDocStepInput,\n UpdateGoogleSheetStepInput,\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 CreateGoogleCalendarEventStepOutput,\n CreateGoogleDocStepOutput,\n CreateGoogleSheetStepOutput,\n DeleteGoogleCalendarEventStepOutput,\n DetectPIIStepOutput,\n DownloadVideoStepOutput,\n EnhanceImageGenerationPromptStepOutput,\n EnhanceVideoGenerationPromptStepOutput,\n EnrichPersonStepOutput,\n ExtractAudioFromVideoStepOutput,\n ExtractTextStepOutput,\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 GetGoogleCalendarEventStepOutput,\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 ListGoogleCalendarEventsStepOutput,\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 ResizeVideoStepOutput,\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 SearchGoogleStepOutput,\n SearchGoogleImagesStepOutput,\n SearchGoogleNewsStepOutput,\n SearchGoogleTrendsStepOutput,\n SearchPerplexityStepOutput,\n SearchXPostsStepOutput,\n SearchYoutubeStepOutput,\n SearchYoutubeTrendsStepOutput,\n SendEmailStepOutput,\n SendSMSStepOutput,\n SetRunTitleStepOutput,\n SetVariableStepOutput,\n TelegramSendAudioStepOutput,\n TelegramSendFileStepOutput,\n TelegramSendImageStepOutput,\n TelegramSendMessageStepOutput,\n TelegramSendVideoStepOutput,\n TelegramSetTypingStepOutput,\n TextToSpeechStepOutput,\n TranscribeAudioStepOutput,\n TrimMediaStepOutput,\n UpdateGoogleCalendarEventStepOutput,\n UpdateGoogleDocStepOutput,\n UpdateGoogleSheetStepOutput,\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 * [ActiveCampaign] Add Note\n *\n * Add a note to an existing contact in ActiveCampaign.\n * \n * ## Usage Notes\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 activeCampaignAddNote(step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignAddNoteStepOutput>>;\n\n /**\n * [ActiveCampaign] Create Contact\n *\n * Create or sync a contact in ActiveCampaign.\n * \n * ## Usage Notes\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 activeCampaignCreateContact(step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignCreateContactStepOutput>>;\n\n /**\n * Add Subtitles To Video\n *\n * Automatically add subtitles to a video\n * \n * ## Usage Notes\n * - Can control style of text and animation\n */\n addSubtitlesToVideo(step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AddSubtitlesToVideoStepOutput>>;\n\n /**\n * [Airtable] Create/Update record\n *\n * Create a new record or update an existing record in an Airtable table.\n * \n * ## Usage Notes\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 airtableCreateUpdateRecord(step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableCreateUpdateRecordStepOutput>>;\n\n /**\n * [Airtable] Delete record\n *\n * Delete a record from an Airtable table by its record ID.\n * \n * ## Usage Notes\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Silently succeeds if the record does not exist.\n */\n airtableDeleteRecord(step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableDeleteRecordStepOutput>>;\n\n /**\n * [Airtable] Get record\n *\n * Fetch a single record from an Airtable table by its record ID.\n * \n * ## Usage Notes\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 airtableGetRecord(step: AirtableGetRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetRecordStepOutput>>;\n\n /**\n * [Airtable] Get table records\n *\n * Fetch multiple records from an Airtable table with optional pagination.\n * \n * ## Usage Notes\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 airtableGetTableRecords(step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetTableRecordsStepOutput>>;\n\n /**\n * Analyze Image\n *\n * Analyze an image using a vision model based on a text prompt.\n * \n * ## Usage Notes\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 analyzeImage(step: AnalyzeImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeImageStepOutput>>;\n\n /**\n * Analyze Video\n *\n * Analyze a video using a video analysis model based on a text prompt.\n * \n * ## Usage Notes\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 analyzeVideo(step: AnalyzeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeVideoStepOutput>>;\n\n /**\n * Get Image from Video Frame\n *\n * Capture a thumbnail from a video at a specified timestamp\n * \n * ## Usage Notes\n * \n */\n captureThumbnail(step: CaptureThumbnailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CaptureThumbnailStepOutput>>;\n\n /**\n * [Coda] Create/Update page\n *\n * Create a new page or update an existing page in a Coda document.\n * \n * ## Usage Notes\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 codaCreateUpdatePage(step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdatePageStepOutput>>;\n\n /**\n * [Coda] Create/Update row\n *\n * Create a new row or update an existing row in a Coda table.\n * \n * ## Usage Notes\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 codaCreateUpdateRow(step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdateRowStepOutput>>;\n\n /**\n * [Coda] Find row\n *\n * Search for a row in a Coda table by matching column values.\n * \n * ## Usage Notes\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 codaFindRow(step: CodaFindRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaFindRowStepOutput>>;\n\n /**\n * [Coda] Get page\n *\n * Export and read the contents of a page from a Coda document.\n * \n * ## Usage Notes\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 codaGetPage(step: CodaGetPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetPageStepOutput>>;\n\n /**\n * [Coda] Get table rows\n *\n * Fetch rows from a Coda table with optional pagination.\n * \n * ## Usage Notes\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 codaGetTableRows(step: CodaGetTableRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetTableRowsStepOutput>>;\n\n /**\n * Convert PDF to Images\n *\n * Convert each page of a PDF document into a PNG image.\n * \n * ## Usage Notes\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 convertPdfToImages(step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ConvertPdfToImagesStepOutput>>;\n\n /**\n * [Google Calendar] Create Event\n *\n * Create a new event on a Google Calendar.\n * \n * ## Usage Notes\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 createGoogleCalendarEvent(step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleCalendarEventStepOutput>>;\n\n /**\n * [Google] Create Google Doc\n *\n * Create a new Google Document and optionally populate it with content.\n * \n * ## Usage Notes\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n */\n createGoogleDoc(step: CreateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleDocStepOutput>>;\n\n /**\n * [Google] Create Google Sheet\n *\n * Create a new Google Spreadsheet and populate it with CSV data.\n */\n createGoogleSheet(step: CreateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleSheetStepOutput>>;\n\n /**\n * [Google Calendar] Get Event\n *\n * Retrieve a specific event from a Google Calendar by event ID.\n * \n * ## Usage Notes\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 deleteGoogleCalendarEvent(step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleCalendarEventStepOutput>>;\n\n /**\n * Detect PII\n *\n * Scan text for personally identifiable information using Microsoft Presidio.\n * \n * ## Usage Notes\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 detectPII(step: DetectPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectPIIStepOutput>>;\n\n /**\n * Download Video\n *\n * Download a video file\n * \n * ## Usage Notes\n * - Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\n * - Can save as mp4 or mp3\n */\n downloadVideo(step: DownloadVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DownloadVideoStepOutput>>;\n\n /**\n * Enhance Image Prompt\n *\n * Auto-enhance an image generation prompt using a language model. Optionally generates a negative prompt.\n * \n * ## Usage Notes\n * - Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n */\n enhanceImageGenerationPrompt(step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceImageGenerationPromptStepOutput>>;\n\n /**\n * Enhance Video Prompt\n *\n * Auto-enhance a video generation prompt using a language model. Optionally generates a negative prompt.\n * \n * ## Usage Notes\n * - Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n */\n enhanceVideoGenerationPrompt(step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceVideoGenerationPromptStepOutput>>;\n\n /**\n * [Apollo] Enrich Person\n *\n * Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\n * \n * ## Usage Notes\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 enrichPerson(step: EnrichPersonStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnrichPersonStepOutput>>;\n\n /**\n * Extract Audio from Video\n *\n * Extract audio MP3 from a video file\n * \n * ## Usage Notes\n * \n */\n extractAudioFromVideo(step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractAudioFromVideoStepOutput>>;\n\n /**\n * Extract Text from URL\n *\n * Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\n * \n * ## Usage Notes\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 extractText(step: ExtractTextStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractTextStepOutput>>;\n\n /**\n * [Google] Fetch Google Doc\n *\n * Fetch the contents of an existing Google Document.\n * \n * ## Usage Notes\n * - exportType controls the output format: \"html\" for HTML markup, \"markdown\" for Markdown, \"json\" for structured JSON, \"plain\" for plain text.\n */\n fetchGoogleDoc(step: FetchGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleDocStepOutput>>;\n\n /**\n * [Google] Fetch Google Sheet\n *\n * Fetch contents of a Google Spreadsheet range.\n * \n * ## Usage Notes\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 fetchGoogleSheet(step: FetchGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleSheetStepOutput>>;\n\n /**\n * Fetch Slack Channel History\n *\n * Fetch recent message history from a Slack channel.\n * \n * ## Usage Notes\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n */\n fetchSlackChannelHistory(step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchSlackChannelHistoryStepOutput>>;\n\n /**\n * [YouTube] Fetch Captions\n *\n * Retrieve the captions/transcript for a YouTube video.\n * \n * ## Usage Notes\n * - Supports multiple languages via the language parameter.\n * - \"text\" export produces timestamped plain text; \"json\" export produces structured transcript data.\n */\n fetchYoutubeCaptions(step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCaptionsStepOutput>>;\n\n /**\n * [YouTube] Fetch Channel\n *\n * Retrieve metadata and recent videos for a YouTube channel.\n * \n * ## Usage Notes\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 fetchYoutubeChannel(step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeChannelStepOutput>>;\n\n /**\n * [YouTube] Fetch Comments\n *\n * Retrieve comments for a YouTube video.\n * \n * ## Usage Notes\n * - Paginates through comments (up to 5 pages).\n * - \"text\" export produces markdown-formatted text; \"json\" export produces structured comment data.\n */\n fetchYoutubeComments(step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCommentsStepOutput>>;\n\n /**\n * [YouTube] Fetch Video\n *\n * Retrieve metadata for a YouTube video (title, description, stats, channel info).\n * \n * ## Usage Notes\n * - Returns video metadata, channel info, and engagement stats.\n * - Video format data is excluded from the response.\n */\n fetchYoutubeVideo(step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeVideoStepOutput>>;\n\n /**\n * Generate Chart\n *\n * Create a chart image using QuickChart (Chart.js) and return the URL.\n * \n * ## Usage Notes\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 generateChart(step: GenerateChartStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateChartStepOutput>>;\n\n /**\n * Generate Image\n *\n * Generate an image from a text prompt using an AI model.\n * \n * ## Usage Notes\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 generateImage(step: GenerateImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateImageStepOutput>>;\n\n /**\n * Generate Lipsync\n *\n * Generate a lip sync video from provided audio and image.\n * \n * ## Usage Notes\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n */\n generateLipsync(step: GenerateLipsyncStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateLipsyncStepOutput>>;\n\n /**\n * Generate Music\n *\n * Generate an audio file from provided instructions (text) using a music model.\n * \n * ## Usage Notes\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 generateMusic(step: GenerateMusicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateMusicStepOutput>>;\n\n /**\n * Generate HTML Asset\n *\n * Generate an HTML asset and export it as a webpage, PDF, or image\n * \n * ## Usage Notes\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 generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /**\n * Generate Static Video from Image\n *\n * Convert a static image to an MP4\n * \n * ## Usage Notes\n * - Can use to create slides/intertitles/slates for video composition\n */\n generateStaticVideoFromImage(step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateStaticVideoFromImageStepOutput>>;\n\n /**\n * Generate Video\n *\n * Generate a video from a text prompt using an AI model.\n * \n * ## Usage Notes\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 generateVideo(step: GenerateVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateVideoStepOutput>>;\n\n /**\n * [Google Calendar] Get Event\n *\n * Retrieve a specific event from a Google Calendar by event ID.\n * \n * ## Usage Notes\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 getGoogleCalendarEvent(step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleCalendarEventStepOutput>>;\n\n /**\n * Get Media Metadata\n *\n * Get info about a media file\n * \n * ## Usage Notes\n * \n */\n getMediaMetadata(step: GetMediaMetadataStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetMediaMetadataStepOutput>>;\n\n /**\n * HTTP Request\n *\n * Make an HTTP request to an external endpoint and return the response.\n * \n * ## Usage Notes\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 httpRequest(step: HttpRequestStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HttpRequestStepOutput>>;\n\n /**\n * [HubSpot] Create/Update Company\n *\n * Create a new company or update an existing one in HubSpot. Matches by domain.\n * \n * ## Usage Notes\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 hubspotCreateCompany(step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateCompanyStepOutput>>;\n\n /**\n * [HubSpot] Create/Update Contact\n *\n * Create a new contact or update an existing one in HubSpot. Matches by email address.\n * \n * ## Usage Notes\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 hubspotCreateContact(step: HubspotCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateContactStepOutput>>;\n\n /**\n * [HubSpot] Get Company\n *\n * Look up a HubSpot company by domain name or company ID.\n * \n * ## Usage Notes\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 hubspotGetCompany(step: HubspotGetCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetCompanyStepOutput>>;\n\n /**\n * [HubSpot] Get Contact\n *\n * Look up a HubSpot contact by email address or contact ID.\n * \n * ## Usage Notes\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 hubspotGetContact(step: HubspotGetContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetContactStepOutput>>;\n\n /**\n * [Hunter.io] Enrich Company\n *\n * Look up company information by domain using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiCompanyEnrichment(step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiCompanyEnrichmentStepOutput>>;\n\n /**\n * [Hunter.io] Domain Search\n *\n * Search for email addresses associated with a domain using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiDomainSearch(step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiDomainSearchStepOutput>>;\n\n /**\n * [Hunter.io] Find Email\n *\n * Find an email address for a specific person at a domain using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiEmailFinder(step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailFinderStepOutput>>;\n\n /**\n * [Hunter.io] Verify Email\n *\n * Verify whether an email address is valid and deliverable using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiEmailVerification(step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailVerificationStepOutput>>;\n\n /**\n * [Hunter.io] Enrich Person\n *\n * Look up professional information about a person by their email address using Hunter.io.\n * \n * ## Usage Notes\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 hunterApiPersonEnrichment(step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiPersonEnrichmentStepOutput>>;\n\n /**\n * Image Face Swap\n *\n * Replace a face in an image with a face from another image using AI.\n * \n * ## Usage Notes\n * - Requires both a target image and a face source image.\n * - Output is re-hosted on the CDN as a PNG.\n */\n imageFaceSwap(step: ImageFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageFaceSwapStepOutput>>;\n\n /**\n * Remove Image Watermark\n *\n * Remove watermarks from an image using AI.\n * \n * ## Usage Notes\n * - Output is re-hosted on the CDN as a PNG.\n */\n imageRemoveWatermark(step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageRemoveWatermarkStepOutput>>;\n\n /**\n * Insert Video Clips\n *\n * Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\n * \n * ## Usage Notes\n * \n */\n insertVideoClips(step: InsertVideoClipsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<InsertVideoClipsStepOutput>>;\n\n /**\n * [Google Calendar] List Events\n *\n * List upcoming events from a Google Calendar, ordered by start time.\n * \n * ## Usage Notes\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 listGoogleCalendarEvents(step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleCalendarEventsStepOutput>>;\n\n /**\n * Evaluate Logic\n *\n * Use an AI model to evaluate which condition from a list is most true, given a context prompt.\n * \n * ## Usage Notes\n * - This is \"fuzzy\" logic evaluated by an AI model, not computational logic. The model picks the most accurate statement.\n * - All possible cases must be specified — there is no default/fallback case.\n * - Requires at least two cases.\n * - In workflow mode, transitions to the destinationStepId of the winning case. In direct execution, returns the winning case ID and condition.\n */\n logic(step: LogicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<LogicStepOutput>>;\n\n /**\n * Make.com Run Scenario\n *\n * Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\n * \n * ## Usage Notes\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 makeDotComRunScenario(step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MakeDotComRunScenarioStepOutput>>;\n\n /**\n * Merge Audio\n *\n * Merge one or more clips into a single audio file.\n * \n * ## Usage Notes\n * \n */\n mergeAudio(step: MergeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeAudioStepOutput>>;\n\n /**\n * Merge Videos\n *\n * Merge one or more clips into a single video.\n * \n * ## Usage Notes\n * \n */\n mergeVideos(step: MergeVideosStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeVideosStepOutput>>;\n\n /**\n * Mix Audio into Video\n *\n * Mix an audio track into a video\n * \n * ## Usage Notes\n * \n */\n mixAudioIntoVideo(step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MixAudioIntoVideoStepOutput>>;\n\n /**\n * Mute Video\n *\n * Mute a video file\n * \n * ## Usage Notes\n * \n */\n muteVideo(step: MuteVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MuteVideoStepOutput>>;\n\n /**\n * N8N Run Node\n *\n * Trigger an n8n workflow node via webhook and return the response.\n * \n * ## Usage Notes\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 n8nRunNode(step: N8nRunNodeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<N8nRunNodeStepOutput>>;\n\n /**\n * [Notion] Create Page\n *\n * Create a new page in Notion as a child of an existing page.\n * \n * ## Usage Notes\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 notionCreatePage(step: NotionCreatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionCreatePageStepOutput>>;\n\n /**\n * [Notion] Update Page\n *\n * Update the content of an existing Notion page.\n * \n * ## Usage Notes\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 notionUpdatePage(step: NotionUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionUpdatePageStepOutput>>;\n\n /**\n * [Apollo] People Search\n *\n * Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\n * \n * ## Usage Notes\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 peopleSearch(step: PeopleSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PeopleSearchStepOutput>>;\n\n /**\n * [LinkedIn] Create post\n *\n * Create a post on LinkedIn from the connected account.\n * \n * ## Usage Notes\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 postToLinkedIn(step: PostToLinkedInStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToLinkedInStepOutput>>;\n\n /**\n * Post to Slack Channel\n *\n * Send a message to a Slack channel via a connected bot.\n * \n * ## Usage Notes\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 postToSlackChannel(step: PostToSlackChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToSlackChannelStepOutput>>;\n\n /**\n * [X] Create post\n *\n * Create a post on X (Twitter) from the connected account.\n * \n * ## Usage Notes\n * - Requires an X OAuth connection (connectionId).\n * - Posts are plain text. Maximum 280 characters.\n */\n postToX(step: PostToXStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToXStepOutput>>;\n\n /**\n * Post to Zapier\n *\n * Send data to a Zapier Zap via webhook and return the response.\n * \n * ## Usage Notes\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 postToZapier(step: PostToZapierStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToZapierStepOutput>>;\n\n /**\n * Query Data Source\n *\n * Search a vector data source (RAG) and return relevant document chunks.\n * \n * ## Usage Notes\n * - Queries a vectorized data source and returns the most relevant chunks.\n * - Useful for retrieval-augmented generation (RAG) workflows.\n */\n queryDataSource(step: QueryDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryDataSourceStepOutput>>;\n\n /**\n * Query External SQL Database\n *\n * Execute a SQL query against an external database connected to the workspace.\n * \n * ## Usage Notes\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 queryExternalDatabase(step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryExternalDatabaseStepOutput>>;\n\n /**\n * Redact PII\n *\n * Replace personally identifiable information in text with placeholders using Microsoft Presidio.\n * \n * ## Usage Notes\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 redactPII(step: RedactPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RedactPIIStepOutput>>;\n\n /**\n * Remove Background From Image\n *\n * Remove the background from an image using AI, producing a transparent PNG.\n * \n * ## Usage Notes\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 removeBackgroundFromImage(step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RemoveBackgroundFromImageStepOutput>>;\n\n /**\n * Resize Video\n *\n * Resize a video file\n * \n * ## Usage Notes\n * \n */\n resizeVideo(step: ResizeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ResizeVideoStepOutput>>;\n\n /**\n * Run Packaged Workflow\n *\n * Run a packaged workflow (\"custom block\")\n * \n * ## Usage Notes\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 runPackagedWorkflow(step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunPackagedWorkflowStepOutput>>;\n\n /**\n * [Facebook] Scrape Page\n *\n * Scrape a Facebook page\n */\n scrapeFacebookPage(step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPageStepOutput>>;\n\n /**\n * [Facebook] Scrape Posts for Page\n *\n * Get all the posts for a Facebook page\n */\n scrapeFacebookPosts(step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPostsStepOutput>>;\n\n /**\n * [Instagram] Scrape Comments\n *\n * Get all the comments for an Instagram post\n */\n scrapeInstagramComments(step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramCommentsStepOutput>>;\n\n /**\n * [Instagram] Scrape Mentions\n *\n * Scrape an Instagram profile's mentions\n */\n scrapeInstagramMentions(step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramMentionsStepOutput>>;\n\n /**\n * [Instagram] Scrape Posts\n *\n * Get all the posts for an Instagram profile\n */\n scrapeInstagramPosts(step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramPostsStepOutput>>;\n\n /**\n * [Instagram] Scrape Profile\n *\n * Scrape an Instagram profile\n */\n scrapeInstagramProfile(step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramProfileStepOutput>>;\n\n /**\n * [Instagram] Scrape Reels\n *\n * Get all the reels for an Instagram profile\n */\n scrapeInstagramReels(step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramReelsStepOutput>>;\n\n /**\n * Scrape LinkedIn Company\n *\n * Scrape public company data from a LinkedIn company page.\n * \n * ## Usage Notes\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 scrapeLinkedInCompany(step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInCompanyStepOutput>>;\n\n /**\n * Scrape LinkedIn Profile\n *\n * Scrape public profile data from a LinkedIn profile page.\n * \n * ## Usage Notes\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 scrapeLinkedInProfile(step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInProfileStepOutput>>;\n\n /**\n * [Meta Threads] Scrape Profile\n *\n * Scrape a Meta Threads profile\n */\n scrapeMetaThreadsProfile(step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeMetaThreadsProfileStepOutput>>;\n\n /**\n * Scrape URL\n *\n * Extract text, HTML, or structured content from one or more web pages.\n * \n * ## Usage Notes\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 scrapeUrl(step: ScrapeUrlStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeUrlStepOutput>>;\n\n /**\n * Scrape X Post\n *\n * Scrape data from a single X (Twitter) post by URL.\n * \n * ## Usage Notes\n * - Returns structured post data (text, html, optional json/screenshot/metadata).\n * - Optionally saves the text content to a variable.\n */\n scrapeXPost(step: ScrapeXPostStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXPostStepOutput>>;\n\n /**\n * Scrape X Profile\n *\n * Scrape public profile data from an X (Twitter) account by URL.\n * \n * ## Usage Notes\n * - Returns structured profile data.\n * - Optionally saves the result to a variable.\n */\n scrapeXProfile(step: ScrapeXProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXProfileStepOutput>>;\n\n /**\n * Search Google\n *\n * Search the web using Google and return structured results.\n * \n * ## Usage Notes\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 searchGoogle(step: SearchGoogleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleStepOutput>>;\n\n /**\n * Search Google Images\n *\n * Search Google Images and return image results with URLs and metadata.\n * \n * ## Usage Notes\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 searchGoogleImages(step: SearchGoogleImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleImagesStepOutput>>;\n\n /**\n * Search Google News\n *\n * Search Google News for recent news articles matching a query.\n * \n * ## Usage Notes\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n */\n searchGoogleNews(step: SearchGoogleNewsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleNewsStepOutput>>;\n\n /**\n * Search Google Trends\n *\n * Fetch Google Trends data for a search term.\n * \n * ## Usage Notes\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 searchGoogleTrends(step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleTrendsStepOutput>>;\n\n /**\n * Search Perplexity\n *\n * Search the web using the Perplexity API and return structured results.\n * \n * ## Usage Notes\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 searchPerplexity(step: SearchPerplexityStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchPerplexityStepOutput>>;\n\n /**\n * [X] Search Posts\n *\n * Search recent X (Twitter) posts matching a query.\n * \n * ## Usage Notes\n * - Searches only the past 7 days of posts.\n * - Query supports X API v2 search operators (up to 512 characters).\n * \n * Available 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 * \n * Conjunction-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 * \n * For example, has:media alone is invalid, but #AI has:media is valid.\n */\n searchXPosts(step: SearchXPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchXPostsStepOutput>>;\n\n /**\n * [YouTube] Search Videos\n *\n * Search for YouTube videos by keyword.\n * \n * ## Usage Notes\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 searchYoutube(step: SearchYoutubeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeStepOutput>>;\n\n /**\n * [YouTube] Search Trends\n *\n * Retrieve trending videos on YouTube by category and region.\n * \n * ## Usage Notes\n * - Categories: \"now\" (trending now), \"music\", \"gaming\", \"films\".\n * - Supports country and language filtering.\n */\n searchYoutubeTrends(step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeTrendsStepOutput>>;\n\n /**\n * Send Email\n *\n * Send an email to one or more configured recipient addresses.\n * \n * ## Usage Notes\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 sendEmail(step: SendEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendEmailStepOutput>>;\n\n /**\n * Send SMS\n *\n * Send an SMS text message to a phone number configured via OAuth connection.\n * \n * ## Usage Notes\n * - User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\n */\n sendSMS(step: SendSMSStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendSMSStepOutput>>;\n\n /**\n * Set Run Title\n *\n * Set the title of the agent run for the user's history\n */\n setRunTitle(step: SetRunTitleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetRunTitleStepOutput>>;\n\n /**\n * Set Variable\n *\n * Explicitly set a variable to a given value.\n * \n * ## Usage Notes\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 setVariable(step: SetVariableStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetVariableStepOutput>>;\n\n /**\n * Send Telegram Audio\n *\n * Send an audio file to a Telegram chat as music or a voice note via a bot.\n * \n * ## Usage Notes\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 telegramSendAudio(step: TelegramSendAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendAudioStepOutput>>;\n\n /**\n * Send Telegram File\n *\n * Send a document/file to a Telegram chat via a bot.\n */\n telegramSendFile(step: TelegramSendFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendFileStepOutput>>;\n\n /**\n * Send Telegram Image\n *\n * Send an image to a Telegram chat via a bot.\n */\n telegramSendImage(step: TelegramSendImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendImageStepOutput>>;\n\n /**\n * Send Telegram Message\n *\n * Send a text message to a Telegram chat via a bot.\n * \n * ## Usage Notes\n * - Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\n * - botToken format is \"botId:token\" — both parts are required.\n */\n telegramSendMessage(step: TelegramSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendMessageStepOutput>>;\n\n /**\n * Send Telegram Video\n *\n * Send a video to a Telegram chat via a bot.\n */\n telegramSendVideo(step: TelegramSendVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendVideoStepOutput>>;\n\n /**\n * Telegram Set Typing\n *\n * Show the \"typing...\" indicator in a Telegram chat via a bot.\n * \n * ## Usage Notes\n * - The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\n */\n telegramSetTyping(step: TelegramSetTypingStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSetTypingStepOutput>>;\n\n /**\n * Text to Speech\n *\n * Generate an audio file from provided text using a speech model.\n * \n * ## Usage Notes\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 textToSpeech(step: TextToSpeechStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TextToSpeechStepOutput>>;\n\n /**\n * Transcribe Audio\n *\n * Convert an audio file to text using a transcription model.\n * \n * ## Usage Notes\n * - The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\n */\n transcribeAudio(step: TranscribeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TranscribeAudioStepOutput>>;\n\n /**\n * Trim Media\n *\n * Trim an audio or video clip\n * \n * ## Usage Notes\n * \n */\n trimMedia(step: TrimMediaStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TrimMediaStepOutput>>;\n\n /**\n * [Google Calendar] Update Event\n *\n * Update an existing event on a Google Calendar. Only specified fields are changed.\n * \n * ## Usage Notes\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 updateGoogleCalendarEvent(step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleCalendarEventStepOutput>>;\n\n /**\n * [Google] Update Google Doc\n *\n * Update the contents of an existing Google Document.\n * \n * ## Usage Notes\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 updateGoogleDoc(step: UpdateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleDocStepOutput>>;\n\n /**\n * [Google] Update Google Sheet\n *\n * Update a Google Spreadsheet with new data.\n * \n * ## Usage Notes\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 updateGoogleSheet(step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleSheetStepOutput>>;\n\n /**\n * Upscale Image\n *\n * Increase the resolution of an image using AI upscaling.\n * \n * ## Usage Notes\n * - Output is re-hosted on the CDN as a PNG.\n */\n upscaleImage(step: UpscaleImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleImageStepOutput>>;\n\n /**\n * Upscale Video\n *\n * Upscale a video file\n * \n * ## Usage Notes\n * \n */\n upscaleVideo(step: UpscaleVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleVideoStepOutput>>;\n\n /**\n * User Message\n *\n * Send a message to an AI model and return the response, or echo a system message.\n * \n * ## Usage Notes\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 generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /**\n * Video Face Swap\n *\n * Swap faces in a video file\n * \n * ## Usage Notes\n * \n */\n videoFaceSwap(step: VideoFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoFaceSwapStepOutput>>;\n\n /**\n * Remove Video Background\n *\n * Remove or replace background from a video\n * \n * ## Usage Notes\n * \n */\n videoRemoveBackground(step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveBackgroundStepOutput>>;\n\n /**\n * Remove Video Watermark\n *\n * Remove a watermark from a video\n * \n * ## Usage Notes\n * \n */\n videoRemoveWatermark(step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveWatermarkStepOutput>>;\n\n /**\n * Watermark Image\n *\n * Overlay a watermark image onto another image.\n * \n * ## Usage Notes\n * - The watermark is placed at the specified corner with configurable padding and width.\n */\n watermarkImage(step: WatermarkImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkImageStepOutput>>;\n\n /**\n * Watermark Video\n *\n * Add an image watermark to a video\n * \n * ## Usage Notes\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.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.deleteGoogleCalendarEvent = function (step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteGoogleCalendarEvent\", 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.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.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.getGoogleCalendarEvent = function (step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"getGoogleCalendarEvent\", 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.listGoogleCalendarEvents = function (step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listGoogleCalendarEvents\", 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.resizeVideo = function (step: ResizeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"resizeVideo\", 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.searchGoogle = function (step: SearchGoogleStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"searchGoogle\", 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.sendSMS = function (step: SendSMSStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"sendSMS\", 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.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.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.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-02-27T21:58:43.878Z\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 /** Full model identifier from the provider. */\n rawName?: 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 publisher?: string;\n maxTemperature?: number;\n maxResponseSize?: number;\n /** Accepted input types for this model (text, imageUrl, videoUrl, etc.). */\n inputs?: Record<string, unknown>[];\n contextWindow?: number;\n tags?: string;\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 connector services (Slack, Google, HubSpot, etc.).\n */\n listConnectors(): Promise<{ services: Array<{ service: Record<string, unknown>; actions: Record<string, unknown>[] }> }>;\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: Record<string, unknown> }>;\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.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","import { request, type HttpClientConfig } from './http.js';\nimport { MindStudioError } from './errors.js';\nimport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://v1.mindstudio-api.com';\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. `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. `https://v1.mindstudio-api.com` (production default)\n */\nexport class MindStudioAgent {\n /** @internal */\n readonly _httpConfig: HttpClientConfig;\n\n constructor(options: AgentOptions = {}) {\n const token = resolveToken(options.apiKey);\n const baseUrl =\n options.baseUrl ??\n process.env.MINDSTUDIO_BASE_URL ??\n process.env.REMOTE_HOSTNAME ??\n DEFAULT_BASE_URL;\n\n this._httpConfig = { baseUrl, token };\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 { 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 ...(options?.threadId != null && { threadId: options.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 return {\n ...(output as object),\n $appId: headers.get('x-mindstudio-app-id') ?? '',\n $threadId: headers.get('x-mindstudio-thread-id') ?? '',\n } as StepExecutionResult<TOutput>;\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\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(provided?: string): string {\n if (provided) return provided;\n if (process.env.MINDSTUDIO_API_KEY) return process.env.MINDSTUDIO_API_KEY;\n if (process.env.CALLBACK_TOKEN) return process.env.CALLBACK_TOKEN;\n throw new MindStudioError(\n 'No API key provided. Pass `apiKey` to the MindStudioAgent constructor, ' +\n '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-02-27T21:58:43.878Z\n\n\nexport interface StepSnippet {\n method: string;\n snippet: string;\n outputKeys: string[];\n}\n\nexport const stepSnippets: Record<string, StepSnippet> = {\n \"activeCampaignAddNote\": {\n method: \"activeCampaignAddNote\",\n snippet: \"{\\n contactId: '',\\n note: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"activeCampaignCreateContact\": {\n method: \"activeCampaignCreateContact\",\n snippet: \"{\\n email: '',\\n firstName: '',\\n lastName: '',\\n phone: '',\\n accountId: '',\\n customFields: {},\\n connectionId: '',\\n}\",\n outputKeys: [\"contactId\"],\n },\n \"addSubtitlesToVideo\": {\n method: \"addSubtitlesToVideo\",\n snippet: \"{\\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 outputKeys: [\"videoUrl\"],\n },\n \"airtableCreateUpdateRecord\": {\n method: \"airtableCreateUpdateRecord\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n fields: '',\\n recordData: {},\\n}\",\n outputKeys: [\"recordId\"],\n },\n \"airtableDeleteRecord\": {\n method: \"airtableDeleteRecord\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n recordId: '',\\n}\",\n outputKeys: [\"deleted\"],\n },\n \"airtableGetRecord\": {\n method: \"airtableGetRecord\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n recordId: '',\\n}\",\n outputKeys: [\"record\"],\n },\n \"airtableGetTableRecords\": {\n method: \"airtableGetTableRecords\",\n snippet: \"{\\n connectionId: '',\\n baseId: '',\\n tableId: '',\\n}\",\n outputKeys: [\"records\"],\n },\n \"analyzeImage\": {\n method: \"analyzeImage\",\n snippet: \"{\\n prompt: '',\\n imageUrl: '',\\n}\",\n outputKeys: [\"analysis\"],\n },\n \"analyzeVideo\": {\n method: \"analyzeVideo\",\n snippet: \"{\\n prompt: '',\\n videoUrl: '',\\n}\",\n outputKeys: [\"analysis\"],\n },\n \"captureThumbnail\": {\n method: \"captureThumbnail\",\n snippet: \"{\\n videoUrl: '',\\n at: '',\\n}\",\n outputKeys: [\"thumbnailUrl\"],\n },\n \"codaCreateUpdatePage\": {\n method: \"codaCreateUpdatePage\",\n snippet: \"{\\n connectionId: '',\\n pageData: {},\\n}\",\n outputKeys: [\"pageId\"],\n },\n \"codaCreateUpdateRow\": {\n method: \"codaCreateUpdateRow\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n tableId: '',\\n rowData: {},\\n}\",\n outputKeys: [\"rowId\"],\n },\n \"codaFindRow\": {\n method: \"codaFindRow\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n tableId: '',\\n rowData: {},\\n}\",\n outputKeys: [\"row\"],\n },\n \"codaGetPage\": {\n method: \"codaGetPage\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n pageId: '',\\n}\",\n outputKeys: [\"content\"],\n },\n \"codaGetTableRows\": {\n method: \"codaGetTableRows\",\n snippet: \"{\\n connectionId: '',\\n docId: '',\\n tableId: '',\\n}\",\n outputKeys: [\"rows\"],\n },\n \"convertPdfToImages\": {\n method: \"convertPdfToImages\",\n snippet: \"{\\n pdfUrl: '',\\n}\",\n outputKeys: [\"imageUrls\"],\n },\n \"createGoogleCalendarEvent\": {\n method: \"createGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n summary: '',\\n startDateTime: '',\\n endDateTime: '',\\n}\",\n outputKeys: [\"eventId\",\"htmlLink\"],\n },\n \"createGoogleDoc\": {\n method: \"createGoogleDoc\",\n snippet: \"{\\n title: '',\\n text: '',\\n connectionId: '',\\n textType: \\\"plain\\\",\\n}\",\n outputKeys: [\"documentUrl\"],\n },\n \"createGoogleSheet\": {\n method: \"createGoogleSheet\",\n snippet: \"{\\n title: '',\\n text: '',\\n connectionId: '',\\n}\",\n outputKeys: [\"spreadsheetUrl\"],\n },\n \"deleteGoogleCalendarEvent\": {\n method: \"deleteGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n eventId: '',\\n}\",\n outputKeys: [],\n },\n \"detectPII\": {\n method: \"detectPII\",\n snippet: \"{\\n input: '',\\n language: '',\\n entities: [],\\n}\",\n outputKeys: [\"detected\",\"detections\"],\n },\n \"downloadVideo\": {\n method: \"downloadVideo\",\n snippet: \"{\\n videoUrl: '',\\n format: \\\"mp4\\\",\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"enhanceImageGenerationPrompt\": {\n method: \"enhanceImageGenerationPrompt\",\n snippet: \"{\\n initialPrompt: '',\\n includeNegativePrompt: false,\\n systemPrompt: '',\\n}\",\n outputKeys: [\"prompt\"],\n },\n \"enhanceVideoGenerationPrompt\": {\n method: \"enhanceVideoGenerationPrompt\",\n snippet: \"{\\n initialPrompt: '',\\n includeNegativePrompt: false,\\n systemPrompt: '',\\n}\",\n outputKeys: [\"prompt\"],\n },\n \"enrichPerson\": {\n method: \"enrichPerson\",\n snippet: \"{\\n params: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"extractAudioFromVideo\": {\n method: \"extractAudioFromVideo\",\n snippet: \"{\\n videoUrl: '',\\n}\",\n outputKeys: [\"audioUrl\"],\n },\n \"extractText\": {\n method: \"extractText\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"text\"],\n },\n \"fetchGoogleDoc\": {\n method: \"fetchGoogleDoc\",\n snippet: \"{\\n documentId: '',\\n connectionId: '',\\n exportType: \\\"html\\\",\\n}\",\n outputKeys: [\"content\"],\n },\n \"fetchGoogleSheet\": {\n method: \"fetchGoogleSheet\",\n snippet: \"{\\n spreadsheetId: '',\\n range: '',\\n connectionId: '',\\n exportType: \\\"csv\\\",\\n}\",\n outputKeys: [\"content\"],\n },\n \"fetchSlackChannelHistory\": {\n method: \"fetchSlackChannelHistory\",\n snippet: \"{\\n connectionId: '',\\n channelId: '',\\n}\",\n outputKeys: [\"messages\"],\n },\n \"fetchYoutubeCaptions\": {\n method: \"fetchYoutubeCaptions\",\n snippet: \"{\\n videoUrl: '',\\n exportType: \\\"text\\\",\\n language: '',\\n}\",\n outputKeys: [\"transcripts\"],\n },\n \"fetchYoutubeChannel\": {\n method: \"fetchYoutubeChannel\",\n snippet: \"{\\n channelUrl: '',\\n}\",\n outputKeys: [\"channel\"],\n },\n \"fetchYoutubeComments\": {\n method: \"fetchYoutubeComments\",\n snippet: \"{\\n videoUrl: '',\\n exportType: \\\"text\\\",\\n limitPages: '',\\n}\",\n outputKeys: [\"comments\"],\n },\n \"fetchYoutubeVideo\": {\n method: \"fetchYoutubeVideo\",\n snippet: \"{\\n videoUrl: '',\\n}\",\n outputKeys: [\"video\"],\n },\n \"generateAsset\": {\n method: \"generateAsset\",\n snippet: \"{\\n source: '',\\n sourceType: \\\"html\\\",\\n outputFormat: \\\"pdf\\\",\\n pageSize: \\\"full\\\",\\n testData: {},\\n}\",\n outputKeys: [\"url\"],\n },\n \"generateChart\": {\n method: \"generateChart\",\n snippet: \"{\\n chart: {},\\n}\",\n outputKeys: [\"chartUrl\"],\n },\n \"generateImage\": {\n method: \"generateImage\",\n snippet: \"{\\n prompt: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"generateLipsync\": {\n method: \"generateLipsync\",\n snippet: \"{}\",\n outputKeys: [],\n },\n \"generateMusic\": {\n method: \"generateMusic\",\n snippet: \"{\\n text: '',\\n}\",\n outputKeys: [],\n },\n \"generateStaticVideoFromImage\": {\n method: \"generateStaticVideoFromImage\",\n snippet: \"{\\n imageUrl: '',\\n duration: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"generateText\": {\n method: \"generateText\",\n snippet: \"{\\n message: '',\\n}\",\n outputKeys: [\"content\"],\n },\n \"generateVideo\": {\n method: \"generateVideo\",\n snippet: \"{\\n prompt: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"getGoogleCalendarEvent\": {\n method: \"getGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n eventId: '',\\n exportType: \\\"json\\\",\\n}\",\n outputKeys: [\"event\"],\n },\n \"getMediaMetadata\": {\n method: \"getMediaMetadata\",\n snippet: \"{\\n mediaUrl: '',\\n}\",\n outputKeys: [\"metadata\"],\n },\n \"httpRequest\": {\n method: \"httpRequest\",\n snippet: \"{\\n url: '',\\n method: '',\\n headers: {},\\n queryParams: {},\\n body: '',\\n bodyItems: {},\\n contentType: \\\"none\\\",\\n customContentType: '',\\n}\",\n outputKeys: [\"ok\",\"status\",\"statusText\",\"response\"],\n },\n \"hubspotCreateCompany\": {\n method: \"hubspotCreateCompany\",\n snippet: \"{\\n connectionId: '',\\n company: {},\\n enabledProperties: [],\\n}\",\n outputKeys: [\"companyId\"],\n },\n \"hubspotCreateContact\": {\n method: \"hubspotCreateContact\",\n snippet: \"{\\n connectionId: '',\\n contact: {},\\n enabledProperties: [],\\n companyDomain: '',\\n}\",\n outputKeys: [\"contactId\"],\n },\n \"hubspotGetCompany\": {\n method: \"hubspotGetCompany\",\n snippet: \"{\\n connectionId: '',\\n searchBy: \\\"domain\\\",\\n companyDomain: '',\\n companyId: '',\\n additionalProperties: [],\\n}\",\n outputKeys: [\"company\"],\n },\n \"hubspotGetContact\": {\n method: \"hubspotGetContact\",\n snippet: \"{\\n connectionId: '',\\n searchBy: \\\"email\\\",\\n contactEmail: '',\\n contactId: '',\\n additionalProperties: [],\\n}\",\n outputKeys: [\"contact\"],\n },\n \"hunterApiCompanyEnrichment\": {\n method: \"hunterApiCompanyEnrichment\",\n snippet: \"{\\n domain: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiDomainSearch\": {\n method: \"hunterApiDomainSearch\",\n snippet: \"{\\n domain: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiEmailFinder\": {\n method: \"hunterApiEmailFinder\",\n snippet: \"{\\n domain: '',\\n firstName: '',\\n lastName: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiEmailVerification\": {\n method: \"hunterApiEmailVerification\",\n snippet: \"{\\n email: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"hunterApiPersonEnrichment\": {\n method: \"hunterApiPersonEnrichment\",\n snippet: \"{\\n email: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"imageFaceSwap\": {\n method: \"imageFaceSwap\",\n snippet: \"{\\n imageUrl: '',\\n faceImageUrl: '',\\n engine: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"imageRemoveWatermark\": {\n method: \"imageRemoveWatermark\",\n snippet: \"{\\n imageUrl: '',\\n engine: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"insertVideoClips\": {\n method: \"insertVideoClips\",\n snippet: \"{\\n baseVideoUrl: '',\\n overlayVideos: [],\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"listGoogleCalendarEvents\": {\n method: \"listGoogleCalendarEvents\",\n snippet: \"{\\n connectionId: '',\\n limit: 0,\\n exportType: \\\"json\\\",\\n}\",\n outputKeys: [\"events\"],\n },\n \"logic\": {\n method: \"logic\",\n snippet: \"{\\n context: '',\\n cases: [],\\n}\",\n outputKeys: [\"selectedCase\"],\n },\n \"makeDotComRunScenario\": {\n method: \"makeDotComRunScenario\",\n snippet: \"{\\n webhookUrl: '',\\n input: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"mergeAudio\": {\n method: \"mergeAudio\",\n snippet: \"{\\n mp3Urls: [],\\n}\",\n outputKeys: [\"audioUrl\"],\n },\n \"mergeVideos\": {\n method: \"mergeVideos\",\n snippet: \"{\\n videoUrls: [],\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"mixAudioIntoVideo\": {\n method: \"mixAudioIntoVideo\",\n snippet: \"{\\n videoUrl: '',\\n audioUrl: '',\\n options: {},\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"muteVideo\": {\n method: \"muteVideo\",\n snippet: \"{\\n videoUrl: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"n8nRunNode\": {\n method: \"n8nRunNode\",\n snippet: \"{\\n method: '',\\n authentication: \\\"none\\\",\\n user: '',\\n password: '',\\n webhookUrl: '',\\n input: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"notionCreatePage\": {\n method: \"notionCreatePage\",\n snippet: \"{\\n pageId: '',\\n content: '',\\n title: '',\\n connectionId: '',\\n}\",\n outputKeys: [\"pageId\",\"pageUrl\"],\n },\n \"notionUpdatePage\": {\n method: \"notionUpdatePage\",\n snippet: \"{\\n pageId: '',\\n content: '',\\n mode: \\\"append\\\",\\n connectionId: '',\\n}\",\n outputKeys: [\"pageId\",\"pageUrl\"],\n },\n \"peopleSearch\": {\n method: \"peopleSearch\",\n snippet: \"{\\n smartQuery: '',\\n enrichPeople: false,\\n enrichOrganizations: false,\\n limit: '',\\n page: '',\\n params: {},\\n}\",\n outputKeys: [\"results\"],\n },\n \"postToLinkedIn\": {\n method: \"postToLinkedIn\",\n snippet: \"{\\n message: '',\\n visibility: \\\"PUBLIC\\\",\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"postToSlackChannel\": {\n method: \"postToSlackChannel\",\n snippet: \"{\\n channelId: '',\\n messageType: \\\"string\\\",\\n message: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"postToX\": {\n method: \"postToX\",\n snippet: \"{\\n text: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"postToZapier\": {\n method: \"postToZapier\",\n snippet: \"{\\n webhookUrl: '',\\n input: {},\\n}\",\n outputKeys: [\"data\"],\n },\n \"queryDataSource\": {\n method: \"queryDataSource\",\n snippet: \"{\\n dataSourceId: '',\\n query: '',\\n maxResults: 0,\\n}\",\n outputKeys: [\"text\",\"chunks\",\"query\",\"citations\",\"latencyMs\"],\n },\n \"queryExternalDatabase\": {\n method: \"queryExternalDatabase\",\n snippet: \"{\\n connectionId: '',\\n query: '',\\n outputFormat: \\\"json\\\",\\n}\",\n outputKeys: [\"data\"],\n },\n \"redactPII\": {\n method: \"redactPII\",\n snippet: \"{\\n input: '',\\n language: '',\\n entities: [],\\n}\",\n outputKeys: [\"text\"],\n },\n \"removeBackgroundFromImage\": {\n method: \"removeBackgroundFromImage\",\n snippet: \"{\\n imageUrl: '',\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"resizeVideo\": {\n method: \"resizeVideo\",\n snippet: \"{\\n videoUrl: '',\\n mode: \\\"fit\\\",\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"runPackagedWorkflow\": {\n method: \"runPackagedWorkflow\",\n snippet: \"{\\n appId: '',\\n workflowId: '',\\n inputVariables: {},\\n outputVariables: {},\\n name: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeFacebookPage\": {\n method: \"scrapeFacebookPage\",\n snippet: \"{\\n pageUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeFacebookPosts\": {\n method: \"scrapeFacebookPosts\",\n snippet: \"{\\n pageUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramComments\": {\n method: \"scrapeInstagramComments\",\n snippet: \"{\\n postUrl: '',\\n resultsLimit: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramMentions\": {\n method: \"scrapeInstagramMentions\",\n snippet: \"{\\n profileUrl: '',\\n resultsLimit: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramPosts\": {\n method: \"scrapeInstagramPosts\",\n snippet: \"{\\n profileUrl: '',\\n resultsLimit: '',\\n onlyPostsNewerThan: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramProfile\": {\n method: \"scrapeInstagramProfile\",\n snippet: \"{\\n profileUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeInstagramReels\": {\n method: \"scrapeInstagramReels\",\n snippet: \"{\\n profileUrl: '',\\n resultsLimit: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeLinkedInCompany\": {\n method: \"scrapeLinkedInCompany\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"company\"],\n },\n \"scrapeLinkedInProfile\": {\n method: \"scrapeLinkedInProfile\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"profile\"],\n },\n \"scrapeMetaThreadsProfile\": {\n method: \"scrapeMetaThreadsProfile\",\n snippet: \"{\\n profileUrl: '',\\n}\",\n outputKeys: [\"data\"],\n },\n \"scrapeUrl\": {\n method: \"scrapeUrl\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"content\"],\n },\n \"scrapeXPost\": {\n method: \"scrapeXPost\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"post\"],\n },\n \"scrapeXProfile\": {\n method: \"scrapeXProfile\",\n snippet: \"{\\n url: '',\\n}\",\n outputKeys: [\"profile\"],\n },\n \"searchGoogle\": {\n method: \"searchGoogle\",\n snippet: \"{\\n query: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"results\"],\n },\n \"searchGoogleImages\": {\n method: \"searchGoogleImages\",\n snippet: \"{\\n query: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"images\"],\n },\n \"searchGoogleNews\": {\n method: \"searchGoogleNews\",\n snippet: \"{\\n text: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"articles\"],\n },\n \"searchGoogleTrends\": {\n method: \"searchGoogleTrends\",\n snippet: \"{\\n text: '',\\n hl: '',\\n geo: '',\\n data_type: \\\"TIMESERIES\\\",\\n cat: '',\\n date: '',\\n ts: '',\\n}\",\n outputKeys: [\"trends\"],\n },\n \"searchPerplexity\": {\n method: \"searchPerplexity\",\n snippet: \"{\\n query: '',\\n exportType: \\\"text\\\",\\n}\",\n outputKeys: [\"results\"],\n },\n \"searchXPosts\": {\n method: \"searchXPosts\",\n snippet: \"{\\n query: '',\\n scope: \\\"recent\\\",\\n options: {},\\n}\",\n outputKeys: [\"posts\"],\n },\n \"searchYoutube\": {\n method: \"searchYoutube\",\n snippet: \"{\\n query: '',\\n limitPages: '',\\n filter: '',\\n filterType: '',\\n}\",\n outputKeys: [\"results\"],\n },\n \"searchYoutubeTrends\": {\n method: \"searchYoutubeTrends\",\n snippet: \"{\\n bp: \\\"now\\\",\\n hl: '',\\n gl: '',\\n}\",\n outputKeys: [\"trends\"],\n },\n \"sendEmail\": {\n method: \"sendEmail\",\n snippet: \"{\\n subject: '',\\n body: '',\\n connectionId: '',\\n}\",\n outputKeys: [\"recipients\"],\n },\n \"sendSMS\": {\n method: \"sendSMS\",\n snippet: \"{\\n body: '',\\n connectionId: '',\\n}\",\n outputKeys: [],\n },\n \"setRunTitle\": {\n method: \"setRunTitle\",\n snippet: \"{\\n title: '',\\n}\",\n outputKeys: [],\n },\n \"setVariable\": {\n method: \"setVariable\",\n snippet: \"{\\n value: '',\\n type: \\\"imageUrl\\\",\\n}\",\n outputKeys: [\"variableName\",\"value\"],\n },\n \"telegramSendAudio\": {\n method: \"telegramSendAudio\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n audioUrl: '',\\n mode: \\\"audio\\\",\\n}\",\n outputKeys: [],\n },\n \"telegramSendFile\": {\n method: \"telegramSendFile\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n fileUrl: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSendImage\": {\n method: \"telegramSendImage\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n imageUrl: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSendMessage\": {\n method: \"telegramSendMessage\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n text: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSendVideo\": {\n method: \"telegramSendVideo\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n videoUrl: '',\\n}\",\n outputKeys: [],\n },\n \"telegramSetTyping\": {\n method: \"telegramSetTyping\",\n snippet: \"{\\n botToken: '',\\n chatId: '',\\n}\",\n outputKeys: [],\n },\n \"textToSpeech\": {\n method: \"textToSpeech\",\n snippet: \"{\\n text: '',\\n}\",\n outputKeys: [\"audioUrl\"],\n },\n \"transcribeAudio\": {\n method: \"transcribeAudio\",\n snippet: \"{\\n audioUrl: '',\\n prompt: '',\\n}\",\n outputKeys: [\"text\"],\n },\n \"trimMedia\": {\n method: \"trimMedia\",\n snippet: \"{\\n inputUrl: '',\\n}\",\n outputKeys: [\"mediaUrl\"],\n },\n \"updateGoogleCalendarEvent\": {\n method: \"updateGoogleCalendarEvent\",\n snippet: \"{\\n connectionId: '',\\n eventId: '',\\n}\",\n outputKeys: [\"eventId\",\"htmlLink\"],\n },\n \"updateGoogleDoc\": {\n method: \"updateGoogleDoc\",\n snippet: \"{\\n documentId: '',\\n connectionId: '',\\n text: '',\\n textType: \\\"plain\\\",\\n operationType: \\\"addToTop\\\",\\n}\",\n outputKeys: [\"documentUrl\"],\n },\n \"updateGoogleSheet\": {\n method: \"updateGoogleSheet\",\n snippet: \"{\\n text: '',\\n connectionId: '',\\n spreadsheetId: '',\\n range: '',\\n operationType: \\\"addToBottom\\\",\\n}\",\n outputKeys: [\"spreadsheetUrl\"],\n },\n \"upscaleImage\": {\n method: \"upscaleImage\",\n snippet: \"{\\n imageUrl: '',\\n targetResolution: \\\"2k\\\",\\n engine: \\\"standard\\\",\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"upscaleVideo\": {\n method: \"upscaleVideo\",\n snippet: \"{\\n videoUrl: '',\\n targetResolution: \\\"720p\\\",\\n engine: \\\"standard\\\",\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"videoFaceSwap\": {\n method: \"videoFaceSwap\",\n snippet: \"{\\n videoUrl: '',\\n faceImageUrl: '',\\n targetIndex: 0,\\n engine: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"videoRemoveBackground\": {\n method: \"videoRemoveBackground\",\n snippet: \"{\\n videoUrl: '',\\n newBackground: \\\"transparent\\\",\\n engine: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"videoRemoveWatermark\": {\n method: \"videoRemoveWatermark\",\n snippet: \"{\\n videoUrl: '',\\n engine: '',\\n}\",\n outputKeys: [\"videoUrl\"],\n },\n \"watermarkImage\": {\n method: \"watermarkImage\",\n snippet: \"{\\n imageUrl: '',\\n watermarkImageUrl: '',\\n corner: \\\"top-left\\\",\\n paddingPx: 0,\\n widthPx: 0,\\n}\",\n outputKeys: [\"imageUrl\"],\n },\n \"watermarkVideo\": {\n method: \"watermarkVideo\",\n snippet: \"{\\n videoUrl: '',\\n imageUrl: '',\\n corner: \\\"top-left\\\",\\n paddingPx: 0,\\n widthPx: 0,\\n}\",\n outputKeys: [\"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} 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 } from './generated/helpers.js';\nexport { stepSnippets, type StepSnippet } from './generated/snippets.js';\n"],"mappings":"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","names":["MindStudioAgent"]}
|