@mindstudio-ai/agent 0.0.12 → 0.0.13
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/README.md +20 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -82,6 +82,22 @@ const r2 = await agent.generateText(
|
|
|
82
82
|
);
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
+
### Automatic thread reuse
|
|
86
|
+
|
|
87
|
+
For local debugging or scripts where you want all calls to share a single thread (similar to how MindStudio custom function sandboxes work), enable `reuseThreadId`:
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
const agent = new MindStudioAgent({ reuseThreadId: true });
|
|
91
|
+
|
|
92
|
+
// Or set the environment variable
|
|
93
|
+
// MINDSTUDIO_REUSE_THREAD_ID=true
|
|
94
|
+
|
|
95
|
+
await agent.generateText({ message: 'My name is Alice' }); // creates a thread
|
|
96
|
+
await agent.generateText({ message: 'What is my name?' }); // reuses the same thread automatically
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
The thread ID from the first response is captured and sent with all subsequent calls. You can still override it per-call by passing an explicit `threadId` in the options.
|
|
100
|
+
|
|
85
101
|
## Rate limiting
|
|
86
102
|
|
|
87
103
|
Rate limiting is handled automatically:
|
|
@@ -147,6 +163,10 @@ const agent = new MindStudioAgent({
|
|
|
147
163
|
|
|
148
164
|
// Max retries on 429 rate limit responses (default: 3)
|
|
149
165
|
maxRetries: 5,
|
|
166
|
+
|
|
167
|
+
// Auto-reuse the first returned thread ID for all subsequent calls (default: false)
|
|
168
|
+
// Or set MINDSTUDIO_REUSE_THREAD_ID=true env var
|
|
169
|
+
reuseThreadId: true,
|
|
150
170
|
});
|
|
151
171
|
```
|
|
152
172
|
|
package/dist/index.d.ts
CHANGED
|
@@ -52,6 +52,17 @@ interface AgentOptions {
|
|
|
52
52
|
* @default 3
|
|
53
53
|
*/
|
|
54
54
|
maxRetries?: number;
|
|
55
|
+
/**
|
|
56
|
+
* When true, the thread ID from the first API response is automatically
|
|
57
|
+
* reused for all subsequent calls (unless an explicit `threadId` is passed).
|
|
58
|
+
* Useful for local debugging to simulate custom function sandbox behavior.
|
|
59
|
+
*
|
|
60
|
+
* If omitted, the SDK checks `MINDSTUDIO_REUSE_THREAD_ID` in the environment.
|
|
61
|
+
* Any truthy value (`"true"`, `"1"`) enables reuse.
|
|
62
|
+
*
|
|
63
|
+
* @default false
|
|
64
|
+
*/
|
|
65
|
+
reuseThreadId?: boolean;
|
|
55
66
|
}
|
|
56
67
|
/** Options for a single step execution call. */
|
|
57
68
|
interface StepExecutionOptions {
|
|
@@ -126,6 +137,10 @@ type StepExecutionResult<TOutput = Record<string, unknown>> = TOutput & StepExec
|
|
|
126
137
|
declare class MindStudioAgent$1 {
|
|
127
138
|
/** @internal */
|
|
128
139
|
readonly _httpConfig: HttpClientConfig;
|
|
140
|
+
/** @internal */
|
|
141
|
+
private _reuseThreadId;
|
|
142
|
+
/** @internal */
|
|
143
|
+
private _threadId;
|
|
129
144
|
constructor(options?: AgentOptions);
|
|
130
145
|
/**
|
|
131
146
|
* Execute any step by its type name. This is the low-level method that all
|
package/dist/index.js
CHANGED
|
@@ -532,9 +532,14 @@ var DEFAULT_MAX_RETRIES = 3;
|
|
|
532
532
|
var MindStudioAgent = class {
|
|
533
533
|
/** @internal */
|
|
534
534
|
_httpConfig;
|
|
535
|
+
/** @internal */
|
|
536
|
+
_reuseThreadId;
|
|
537
|
+
/** @internal */
|
|
538
|
+
_threadId;
|
|
535
539
|
constructor(options = {}) {
|
|
536
540
|
const { token, authType } = resolveToken(options.apiKey);
|
|
537
541
|
const baseUrl = options.baseUrl ?? process.env.MINDSTUDIO_BASE_URL ?? process.env.REMOTE_HOSTNAME ?? DEFAULT_BASE_URL;
|
|
542
|
+
this._reuseThreadId = options.reuseThreadId ?? /^(true|1)$/i.test(process.env.MINDSTUDIO_REUSE_THREAD_ID ?? "");
|
|
538
543
|
this._httpConfig = {
|
|
539
544
|
baseUrl,
|
|
540
545
|
token,
|
|
@@ -552,10 +557,11 @@ var MindStudioAgent = class {
|
|
|
552
557
|
* ```
|
|
553
558
|
*/
|
|
554
559
|
async executeStep(stepType, step, options) {
|
|
560
|
+
const threadId = options?.threadId ?? (this._reuseThreadId ? this._threadId : void 0);
|
|
555
561
|
const { data, headers } = await request(this._httpConfig, "POST", `/steps/${stepType}/execute`, {
|
|
556
562
|
step,
|
|
557
563
|
...options?.appId != null && { appId: options.appId },
|
|
558
|
-
...
|
|
564
|
+
...threadId != null && { threadId }
|
|
559
565
|
});
|
|
560
566
|
let output;
|
|
561
567
|
if (data.output != null) {
|
|
@@ -574,11 +580,15 @@ var MindStudioAgent = class {
|
|
|
574
580
|
} else {
|
|
575
581
|
output = void 0;
|
|
576
582
|
}
|
|
583
|
+
const returnedThreadId = headers.get("x-mindstudio-thread-id") ?? "";
|
|
584
|
+
if (this._reuseThreadId && returnedThreadId) {
|
|
585
|
+
this._threadId = returnedThreadId;
|
|
586
|
+
}
|
|
577
587
|
const remaining = headers.get("x-ratelimit-remaining");
|
|
578
588
|
return {
|
|
579
589
|
...output,
|
|
580
590
|
$appId: headers.get("x-mindstudio-app-id") ?? "",
|
|
581
|
-
$threadId:
|
|
591
|
+
$threadId: returnedThreadId,
|
|
582
592
|
$rateLimitRemaining: remaining != null ? parseInt(remaining, 10) : void 0
|
|
583
593
|
};
|
|
584
594
|
}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/rate-limit.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';\nimport type { RateLimiter } from './rate-limit.js';\n\nexport interface HttpClientConfig {\n baseUrl: string;\n token: string;\n rateLimiter: RateLimiter;\n maxRetries: number;\n}\n\nexport async function request<T>(\n config: HttpClientConfig,\n method: 'GET' | 'POST',\n path: string,\n body?: unknown,\n): Promise<{ data: T; headers: Headers }> {\n const url = `${config.baseUrl}/developer/v2${path}`;\n\n await config.rateLimiter.acquire();\n\n try {\n return await requestWithRetry<T>(config, method, url, body, 0);\n } finally {\n config.rateLimiter.release();\n }\n}\n\nasync function requestWithRetry<T>(\n config: HttpClientConfig,\n method: string,\n url: string,\n body: unknown,\n attempt: number,\n): Promise<{ data: T; headers: Headers }> {\n const res = await fetch(url, {\n method,\n headers: {\n Authorization: `Bearer ${config.token}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@mindstudio-ai/agent',\n },\n body: body != null ? JSON.stringify(body) : undefined,\n });\n\n // Update rate limiter with latest server-reported limits\n config.rateLimiter.updateFromHeaders(res.headers);\n\n if (res.status === 429 && attempt < config.maxRetries) {\n const retryAfter = res.headers.get('retry-after');\n const waitMs = retryAfter ? parseFloat(retryAfter) * 1000 : 1000;\n await sleep(waitMs);\n return requestWithRetry<T>(config, method, url, body, attempt + 1);\n }\n\n if (!res.ok) {\n const errorBody = await res.json().catch(() => ({}));\n throw new MindStudioError(\n (errorBody as Record<string, string>).message ||\n `${res.status} ${res.statusText}`,\n (errorBody as Record<string, string>).code || 'api_error',\n res.status,\n errorBody,\n );\n }\n\n const data = (await res.json()) as T;\n return { data, headers: res.headers };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { MindStudioError } from './errors.js';\n\nexport type AuthType = 'internal' | 'apiKey';\n\nconst DEFAULTS: Record<AuthType, { concurrency: number; callCap: number }> = {\n internal: { concurrency: 10, callCap: 500 },\n apiKey: { concurrency: 20, callCap: Infinity },\n};\n\nexport class RateLimiter {\n private inflight = 0;\n private concurrencyLimit: number;\n private callCount = 0;\n private callCap: number;\n private queue: Array<() => void> = [];\n\n constructor(readonly authType: AuthType) {\n this.concurrencyLimit = DEFAULTS[authType].concurrency;\n this.callCap = DEFAULTS[authType].callCap;\n }\n\n /** Acquire a slot. Resolves when a concurrent slot is available. */\n async acquire(): Promise<void> {\n if (this.callCount >= this.callCap) {\n throw new MindStudioError(\n `Call cap reached (${this.callCap} calls). ` +\n 'Internal tokens are limited to 500 calls per execution.',\n 'call_cap_exceeded',\n 429,\n );\n }\n\n if (this.inflight < this.concurrencyLimit) {\n this.inflight++;\n this.callCount++;\n return;\n }\n\n return new Promise<void>((resolve) => {\n this.queue.push(() => {\n this.inflight++;\n this.callCount++;\n resolve();\n });\n });\n }\n\n /** Release a slot and let the next queued request proceed. */\n release(): void {\n this.inflight--;\n const next = this.queue.shift();\n if (next) next();\n }\n\n /** Update limits from response headers. */\n updateFromHeaders(headers: Headers): void {\n const concurrency = headers.get('x-ratelimit-concurrency-limit');\n if (concurrency) {\n this.concurrencyLimit = parseInt(concurrency, 10);\n }\n const limit = headers.get('x-ratelimit-limit');\n if (limit && this.authType === 'internal') {\n this.callCap = parseInt(limit, 10);\n }\n }\n\n /** Read current rate limit state from response headers. */\n static parseHeaders(headers: Headers): {\n remaining: number | undefined;\n concurrencyRemaining: number | undefined;\n } {\n const remaining = headers.get('x-ratelimit-remaining');\n const concurrencyRemaining = headers.get(\n 'x-ratelimit-concurrency-remaining',\n );\n return {\n remaining: remaining != null ? parseInt(remaining, 10) : undefined,\n concurrencyRemaining:\n concurrencyRemaining != null\n ? parseInt(concurrencyRemaining, 10)\n : undefined,\n };\n }\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-02-28T16:06:47.850Z\n\n\nimport type {\n ActiveCampaignAddNoteStepInput,\n ActiveCampaignCreateContactStepInput,\n AddSubtitlesToVideoStepInput,\n AirtableCreateUpdateRecordStepInput,\n AirtableDeleteRecordStepInput,\n AirtableGetRecordStepInput,\n AirtableGetTableRecordsStepInput,\n AnalyzeImageStepInput,\n AnalyzeVideoStepInput,\n CaptureThumbnailStepInput,\n CodaCreateUpdatePageStepInput,\n CodaCreateUpdateRowStepInput,\n CodaFindRowStepInput,\n CodaGetPageStepInput,\n CodaGetTableRowsStepInput,\n ConvertPdfToImagesStepInput,\n CreateDataSourceStepInput,\n CreateGoogleCalendarEventStepInput,\n CreateGoogleDocStepInput,\n CreateGoogleSheetStepInput,\n DeleteDataSourceStepInput,\n DeleteDataSourceDocumentStepInput,\n DeleteGoogleCalendarEventStepInput,\n DetectPIIStepInput,\n DownloadVideoStepInput,\n EnhanceImageGenerationPromptStepInput,\n EnhanceVideoGenerationPromptStepInput,\n EnrichPersonStepInput,\n ExtractAudioFromVideoStepInput,\n ExtractTextStepInput,\n FetchDataSourceDocumentStepInput,\n FetchGoogleDocStepInput,\n FetchGoogleSheetStepInput,\n FetchSlackChannelHistoryStepInput,\n FetchYoutubeCaptionsStepInput,\n FetchYoutubeChannelStepInput,\n FetchYoutubeCommentsStepInput,\n FetchYoutubeVideoStepInput,\n GenerateChartStepInput,\n GenerateImageStepInput,\n GenerateLipsyncStepInput,\n GenerateMusicStepInput,\n GeneratePdfStepInput,\n GenerateStaticVideoFromImageStepInput,\n GenerateVideoStepInput,\n 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 ListDataSourcesStepInput,\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 UploadDataSourceDocumentStepInput,\n UpscaleImageStepInput,\n UpscaleVideoStepInput,\n UserMessageStepInput,\n VideoFaceSwapStepInput,\n VideoRemoveBackgroundStepInput,\n VideoRemoveWatermarkStepInput,\n WatermarkImageStepInput,\n WatermarkVideoStepInput,\n ActiveCampaignAddNoteStepOutput,\n ActiveCampaignCreateContactStepOutput,\n AddSubtitlesToVideoStepOutput,\n AirtableCreateUpdateRecordStepOutput,\n AirtableDeleteRecordStepOutput,\n AirtableGetRecordStepOutput,\n AirtableGetTableRecordsStepOutput,\n AnalyzeImageStepOutput,\n AnalyzeVideoStepOutput,\n CaptureThumbnailStepOutput,\n CodaCreateUpdatePageStepOutput,\n CodaCreateUpdateRowStepOutput,\n CodaFindRowStepOutput,\n CodaGetPageStepOutput,\n CodaGetTableRowsStepOutput,\n ConvertPdfToImagesStepOutput,\n CreateDataSourceStepOutput,\n CreateGoogleCalendarEventStepOutput,\n CreateGoogleDocStepOutput,\n CreateGoogleSheetStepOutput,\n DeleteDataSourceStepOutput,\n DeleteDataSourceDocumentStepOutput,\n DeleteGoogleCalendarEventStepOutput,\n DetectPIIStepOutput,\n DownloadVideoStepOutput,\n EnhanceImageGenerationPromptStepOutput,\n EnhanceVideoGenerationPromptStepOutput,\n EnrichPersonStepOutput,\n ExtractAudioFromVideoStepOutput,\n ExtractTextStepOutput,\n FetchDataSourceDocumentStepOutput,\n FetchGoogleDocStepOutput,\n FetchGoogleSheetStepOutput,\n FetchSlackChannelHistoryStepOutput,\n FetchYoutubeCaptionsStepOutput,\n FetchYoutubeChannelStepOutput,\n FetchYoutubeCommentsStepOutput,\n FetchYoutubeVideoStepOutput,\n GenerateChartStepOutput,\n GenerateImageStepOutput,\n GenerateLipsyncStepOutput,\n GenerateMusicStepOutput,\n GeneratePdfStepOutput,\n GenerateStaticVideoFromImageStepOutput,\n GenerateVideoStepOutput,\n 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 ListDataSourcesStepOutput,\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 UploadDataSourceDocumentStepOutput,\n UpscaleImageStepOutput,\n UpscaleVideoStepOutput,\n UserMessageStepOutput,\n VideoFaceSwapStepOutput,\n VideoRemoveBackgroundStepOutput,\n VideoRemoveWatermarkStepOutput,\n WatermarkImageStepOutput,\n WatermarkVideoStepOutput,\n} from \"./types.js\";\n\nimport type { StepExecutionOptions, StepExecutionResult } from \"../types.js\";\n\nexport interface StepMethods {\n /**\n * Add a note to an existing contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - The contact must already exist — use the contact ID from a previous create or search step.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignAddNote({\n * contactId: ``,\n * note: ``,\n * connectionId: ``,\n * });\n * ```\n */\n activeCampaignAddNote(step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignAddNoteStepOutput>>;\n\n /**\n * Create or sync a contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - If a contact with the email already exists, it may be updated depending on ActiveCampaign settings.\n * - Custom fields are passed as a key-value map where keys are field IDs.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignCreateContact({\n * email: ``,\n * firstName: ``,\n * lastName: ``,\n * phone: ``,\n * accountId: ``,\n * customFields: {},\n * connectionId: ``,\n * });\n * ```\n */\n activeCampaignCreateContact(step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignCreateContactStepOutput>>;\n\n /**\n * Automatically add subtitles to a video\n *\n * @remarks\n * - Can control style of text and animation\n *\n * @example\n * ```typescript\n * const result = await agent.addSubtitlesToVideo({\n * videoUrl: ``,\n * language: ``,\n * fontName: ``,\n * fontSize: 0,\n * fontWeight: \"normal\",\n * fontColor: \"white\",\n * highlightColor: \"white\",\n * strokeWidth: 0,\n * strokeColor: \"black\",\n * backgroundColor: \"black\",\n * backgroundOpacity: 0,\n * position: \"top\",\n * yOffset: 0,\n * wordsPerSubtitle: 0,\n * enableAnimation: false,\n * });\n * ```\n */\n addSubtitlesToVideo(step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AddSubtitlesToVideoStepOutput>>;\n\n /**\n * Create a new record or update an existing record in an Airtable table.\n *\n * @remarks\n * - If recordId is provided, updates that record. Otherwise, creates a new one.\n * - When updating with updateMode \"onlySpecified\", unspecified fields are left as-is. With \"all\", unspecified fields are cleared.\n * - Array fields (e.g. multipleAttachments) accept arrays of values.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableCreateUpdateRecord({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * fields: ``,\n * recordData: {},\n * });\n * ```\n */\n airtableCreateUpdateRecord(step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableCreateUpdateRecordStepOutput>>;\n\n /**\n * Delete a record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Silently succeeds if the record does not exist.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableDeleteRecord({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableDeleteRecord(step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableDeleteRecordStepOutput>>;\n\n /**\n * Fetch a single record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - If the record is not found, returns a string message instead of a record object.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetRecord({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableGetRecord(step: AirtableGetRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetRecordStepOutput>>;\n\n /**\n * Fetch multiple records from an Airtable table with optional pagination.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Default limit is 100 records. Maximum is 1000.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed records.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetTableRecords({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * });\n * ```\n */\n airtableGetTableRecords(step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetTableRecordsStepOutput>>;\n\n /**\n * Analyze an image using a vision model based on a text prompt.\n *\n * @remarks\n * - Uses the configured vision model to generate a text analysis of the image.\n * - The prompt should describe what to look for or extract from the image.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeImage({\n * prompt: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n analyzeImage(step: AnalyzeImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeImageStepOutput>>;\n\n /**\n * Analyze a video using a video analysis model based on a text prompt.\n *\n * @remarks\n * - Uses the configured video analysis model to generate a text analysis of the video.\n * - The prompt should describe what to look for or extract from the video.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeVideo({\n * prompt: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n analyzeVideo(step: AnalyzeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeVideoStepOutput>>;\n\n /**\n * Capture a thumbnail from a video at a specified timestamp\n *\n * @example\n * ```typescript\n * const result = await agent.captureThumbnail({\n * videoUrl: ``,\n * at: ``,\n * });\n * ```\n */\n captureThumbnail(step: CaptureThumbnailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CaptureThumbnailStepOutput>>;\n\n /**\n * Create a new page or update an existing page in a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If pageData.pageId is provided, updates that page. Otherwise, creates a new one.\n * - Page content is provided as markdown and converted to Coda's canvas format.\n * - When updating, insertionMode controls how content is applied (default: 'append').\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdatePage({\n * connectionId: ``,\n * pageData: {},\n * });\n * ```\n */\n codaCreateUpdatePage(step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdatePageStepOutput>>;\n\n /**\n * Create a new row or update an existing row in a Coda table.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If rowId is provided, updates that row. Otherwise, creates a new one.\n * - Row data keys are column IDs. Empty values are excluded.\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdateRow({\n * connectionId: ``,\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaCreateUpdateRow(step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdateRowStepOutput>>;\n\n /**\n * Search for a row in a Coda table by matching column values.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Returns the first row matching all specified column values, or null if no match.\n * - Search criteria in rowData are ANDed together.\n *\n * @example\n * ```typescript\n * const result = await agent.codaFindRow({\n * connectionId: ``,\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaFindRow(step: CodaFindRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaFindRowStepOutput>>;\n\n /**\n * Export and read the contents of a page from a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Page export is asynchronous on Coda's side — there may be a brief delay while it processes.\n * - If a page was just created in a prior step, there is an automatic 20-second retry if the first export attempt fails.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetPage({\n * connectionId: ``,\n * docId: ``,\n * pageId: ``,\n * });\n * ```\n */\n codaGetPage(step: CodaGetPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetPageStepOutput>>;\n\n /**\n * Fetch rows from a Coda table with optional pagination.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Default limit is 10000 rows. Rows are fetched in pages of 500.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed rows.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetTableRows({\n * connectionId: ``,\n * docId: ``,\n * tableId: ``,\n * });\n * ```\n */\n codaGetTableRows(step: CodaGetTableRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetTableRowsStepOutput>>;\n\n /**\n * Convert each page of a PDF document into a PNG image.\n *\n * @remarks\n * - Each page is converted to a separate PNG and re-hosted on the CDN.\n * - Returns an array of image URLs, one per page.\n *\n * @example\n * ```typescript\n * const result = await agent.convertPdfToImages({\n * pdfUrl: ``,\n * });\n * ```\n */\n convertPdfToImages(step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ConvertPdfToImagesStepOutput>>;\n\n /**\n * Create a new empty vector data source for the current app.\n *\n * @remarks\n * - Creates a new data source (vector database) associated with the current app version.\n * - The data source is created empty — use the \"Upload Data Source Document\" block to add documents.\n * - Returns the new data source ID which can be used in subsequent blocks.\n *\n * @example\n * ```typescript\n * const result = await agent.createDataSource({\n * name: ``,\n * });\n * ```\n */\n createDataSource(step: CreateDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateDataSourceStepOutput>>;\n\n /**\n * Create a new event on a Google Calendar.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Date/time values must be ISO 8601 format (e.g. \"2025-07-02T10:00:00-07:00\").\n * - Attendees are specified as one email address per line in a single string.\n * - Set addMeetLink to true to automatically attach a Google Meet video call.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleCalendarEvent({\n * connectionId: ``,\n * summary: ``,\n * startDateTime: ``,\n * endDateTime: ``,\n * });\n * ```\n */\n createGoogleCalendarEvent(step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleCalendarEventStepOutput>>;\n\n /**\n * Create a new Google Document and optionally populate it with content.\n *\n * @remarks\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleDoc({\n * title: ``,\n * text: ``,\n * connectionId: ``,\n * textType: \"plain\",\n * });\n * ```\n */\n createGoogleDoc(step: CreateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleDocStepOutput>>;\n\n /**\n * Create a new Google Spreadsheet and populate it with CSV data.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleSheet({\n * title: ``,\n * text: ``,\n * connectionId: ``,\n * });\n * ```\n */\n createGoogleSheet(step: CreateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleSheetStepOutput>>;\n\n /**\n * Delete a vector data source from the current app.\n *\n * @remarks\n * - Soft-deletes a data source (vector database) by marking it as deleted.\n * - The Milvus partition is cleaned up asynchronously by a background cron job.\n * - The data source must belong to the current app version.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSource({\n * dataSourceId: ``,\n * });\n * ```\n */\n deleteDataSource(step: DeleteDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceStepOutput>>;\n\n /**\n * Delete a single document from a data source.\n *\n * @remarks\n * - Soft-deletes a document by marking it as deleted.\n * - Requires both the data source ID and document ID.\n * - After deletion, reloads vectors into Milvus so the data source reflects the change immediately.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n deleteDataSourceDocument(step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceDocumentStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGoogleCalendarEvent({\n * connectionId: ``,\n * eventId: ``,\n * });\n * ```\n */\n deleteGoogleCalendarEvent(step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleCalendarEventStepOutput>>;\n\n /**\n * Scan text for personally identifiable information using Microsoft Presidio.\n *\n * @remarks\n * - In workflow mode, transitions to detectedStepId if PII is found, notDetectedStepId otherwise.\n * - In direct execution, returns the detection results without transitioning.\n * - If entities is empty, returns immediately with no detections.\n *\n * @example\n * ```typescript\n * const result = await agent.detectPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n detectPII(step: DetectPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectPIIStepOutput>>;\n\n /**\n * Download a video file\n *\n * @remarks\n * - Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\n * - Can save as mp4 or mp3\n *\n * @example\n * ```typescript\n * const result = await agent.downloadVideo({\n * videoUrl: ``,\n * format: \"mp4\",\n * });\n * ```\n */\n downloadVideo(step: DownloadVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DownloadVideoStepOutput>>;\n\n /**\n * Generate or enhance an image generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceImageGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceImageGenerationPrompt(step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceImageGenerationPromptStepOutput>>;\n\n /**\n * Generate or enhance a video generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceVideoGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceVideoGenerationPrompt(step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceVideoGenerationPromptStepOutput>>;\n\n /**\n * Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\n *\n * @remarks\n * - At least one search parameter must be provided.\n * - Returns enriched data from Apollo including contact details, employment info, and social profiles.\n *\n * @example\n * ```typescript\n * const result = await agent.enrichPerson({\n * params: {},\n * });\n * ```\n */\n enrichPerson(step: EnrichPersonStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnrichPersonStepOutput>>;\n\n /**\n * Extract audio MP3 from a video file\n *\n * @example\n * ```typescript\n * const result = await agent.extractAudioFromVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n extractAudioFromVideo(step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractAudioFromVideoStepOutput>>;\n\n /**\n * Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\n *\n * @remarks\n * - Best suited for PDFs and raw text/document files. For web pages, use the scrapeUrl step instead.\n * - Accepts a single URL, a comma-separated list of URLs, or a JSON array of URLs.\n * - Files are rehosted on the MindStudio CDN before extraction.\n * - Maximum file size is 50MB per URL.\n *\n * @example\n * ```typescript\n * const result = await agent.extractText({\n * url: ``,\n * });\n * ```\n */\n extractText(step: ExtractTextStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractTextStepOutput>>;\n\n /**\n * Fetch the full extracted text contents of a document in a data source.\n *\n * @remarks\n * - Loads a document by ID and returns its full extracted text content.\n * - The document must have been successfully processed (status \"done\").\n * - Also returns document metadata (name, summary, word count).\n *\n * @example\n * ```typescript\n * const result = await agent.fetchDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n fetchDataSourceDocument(step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchDataSourceDocumentStepOutput>>;\n\n /**\n * Fetch the contents of an existing Google Document.\n *\n * @remarks\n * - exportType controls the output format: \"html\" for HTML markup, \"markdown\" for Markdown, \"json\" for structured JSON, \"plain\" for plain text.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleDoc({\n * documentId: ``,\n * connectionId: ``,\n * exportType: \"html\",\n * });\n * ```\n */\n fetchGoogleDoc(step: FetchGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleDocStepOutput>>;\n\n /**\n * Fetch contents of a Google Spreadsheet range.\n *\n * @remarks\n * - range uses A1 notation (e.g. \"Sheet1!A1:C10\"). Omit to fetch the entire first sheet.\n * - exportType controls the output format: \"csv\" for comma-separated values, \"json\" for structured JSON.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleSheet({\n * spreadsheetId: ``,\n * range: ``,\n * connectionId: ``,\n * exportType: \"csv\",\n * });\n * ```\n */\n fetchGoogleSheet(step: FetchGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleSheetStepOutput>>;\n\n /**\n * Fetch recent message history from a Slack channel.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n *\n * @example\n * ```typescript\n * const result = await agent.fetchSlackChannelHistory({\n * connectionId: ``,\n * channelId: ``,\n * });\n * ```\n */\n fetchSlackChannelHistory(step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchSlackChannelHistoryStepOutput>>;\n\n /**\n * Retrieve the captions/transcript for a YouTube video.\n *\n * @remarks\n * - Supports multiple languages via the language parameter.\n * - \"text\" export produces timestamped plain text; \"json\" export produces structured transcript data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeCaptions({\n * videoUrl: ``,\n * exportType: \"text\",\n * language: ``,\n * });\n * ```\n */\n fetchYoutubeCaptions(step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCaptionsStepOutput>>;\n\n /**\n * Retrieve metadata and recent videos for a YouTube channel.\n *\n * @remarks\n * - Accepts a YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID).\n * - Returns channel info and video listings as a JSON object.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeChannel({\n * channelUrl: ``,\n * });\n * ```\n */\n fetchYoutubeChannel(step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeChannelStepOutput>>;\n\n /**\n * Retrieve comments for a YouTube video.\n *\n * @remarks\n * - Paginates through comments (up to 5 pages).\n * - \"text\" export produces markdown-formatted text; \"json\" export produces structured comment data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeComments({\n * videoUrl: ``,\n * exportType: \"text\",\n * limitPages: ``,\n * });\n * ```\n */\n fetchYoutubeComments(step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCommentsStepOutput>>;\n\n /**\n * Retrieve metadata for a YouTube video (title, description, stats, channel info).\n *\n * @remarks\n * - Returns video metadata, channel info, and engagement stats.\n * - Video format data is excluded from the response.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n fetchYoutubeVideo(step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeVideoStepOutput>>;\n\n /**\n * Create a chart image using QuickChart (Chart.js) and return the URL.\n *\n * @remarks\n * - The data field must be a Chart.js-compatible JSON object serialized as a string.\n * - Supported chart types: bar, line, pie.\n *\n * @example\n * ```typescript\n * const result = await agent.generateChart({\n * chart: {},\n * });\n * ```\n */\n generateChart(step: GenerateChartStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateChartStepOutput>>;\n\n /**\n * Generate an image from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Images are automatically hosted on a CDN.\n * - In foreground mode, the image is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple images are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateImage({\n * prompt: ``,\n * });\n * ```\n */\n generateImage(step: GenerateImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateImageStepOutput>>;\n\n /**\n * Generate a lip sync video from provided audio and image.\n *\n * @remarks\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateLipsync({});\n * ```\n */\n generateLipsync(step: GenerateLipsyncStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateLipsyncStepOutput>>;\n\n /**\n * Generate an audio file from provided instructions (text) using a music model.\n *\n * @remarks\n * - The text field contains the instructions (prompt) for the music generation.\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateMusic({\n * text: ``,\n * });\n * ```\n */\n generateMusic(step: GenerateMusicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateMusicStepOutput>>;\n\n /**\n * Generate an HTML asset and export it as a webpage, PDF, or image\n *\n * @remarks\n * - Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \"generatePdf\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\n * - The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\n * - If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \"source\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\n * - Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\n * - Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\n *\n * @example\n * ```typescript\n * const result = await agent.generateAsset({\n * source: ``,\n * sourceType: \"html\",\n * outputFormat: \"pdf\",\n * pageSize: \"full\",\n * testData: {},\n * });\n * ```\n */\n generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /**\n * Convert a static image to an MP4\n *\n * @remarks\n * - Can use to create slides/intertitles/slates for video composition\n *\n * @example\n * ```typescript\n * const result = await agent.generateStaticVideoFromImage({\n * imageUrl: ``,\n * duration: ``,\n * });\n * ```\n */\n generateStaticVideoFromImage(step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateStaticVideoFromImageStepOutput>>;\n\n /**\n * Generate a video from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Videos are automatically hosted on a CDN.\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple videos are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateVideo({\n * prompt: ``,\n * });\n * ```\n */\n generateVideo(step: GenerateVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateVideoStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleCalendarEvent({\n * connectionId: ``,\n * eventId: ``,\n * exportType: \"json\",\n * });\n * ```\n */\n getGoogleCalendarEvent(step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleCalendarEventStepOutput>>;\n\n /**\n * Get info about a media file\n *\n * @example\n * ```typescript\n * const result = await agent.getMediaMetadata({\n * mediaUrl: ``,\n * });\n * ```\n */\n getMediaMetadata(step: GetMediaMetadataStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetMediaMetadataStepOutput>>;\n\n /**\n * Make an HTTP request to an external endpoint and return the response.\n *\n * @remarks\n * - Supports GET, POST, PATCH, DELETE, and PUT methods.\n * - Body can be raw JSON/text, URL-encoded form data, or multipart form data.\n *\n * @example\n * ```typescript\n * const result = await agent.httpRequest({\n * url: ``,\n * method: ``,\n * headers: {},\n * queryParams: {},\n * body: ``,\n * bodyItems: {},\n * contentType: \"none\",\n * customContentType: ``,\n * });\n * ```\n */\n httpRequest(step: HttpRequestStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HttpRequestStepOutput>>;\n\n /**\n * Create a new company or update an existing one in HubSpot. Matches by domain.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a company with the given domain already exists, it is updated. Otherwise, a new one is created.\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateCompany({\n * connectionId: ``,\n * company: {},\n * enabledProperties: [],\n * });\n * ```\n */\n hubspotCreateCompany(step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateCompanyStepOutput>>;\n\n /**\n * Create a new contact or update an existing one in HubSpot. Matches by email address.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a contact with the given email already exists, it is updated. Otherwise, a new one is created.\n * - If companyDomain is provided, the contact is associated with that company (creating the company if needed).\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateContact({\n * connectionId: ``,\n * contact: {},\n * enabledProperties: [],\n * companyDomain: ``,\n * });\n * ```\n */\n hubspotCreateContact(step: HubspotCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateContactStepOutput>>;\n\n /**\n * Look up a HubSpot company by domain name or company ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the company is not found.\n * - When searching by domain, performs a search query then fetches the full company record.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetCompany({\n * connectionId: ``,\n * searchBy: \"domain\",\n * companyDomain: ``,\n * companyId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetCompany(step: HubspotGetCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetCompanyStepOutput>>;\n\n /**\n * Look up a HubSpot contact by email address or contact ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the contact is not found.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetContact({\n * connectionId: ``,\n * searchBy: \"email\",\n * contactEmail: ``,\n * contactId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetContact(step: HubspotGetContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetContactStepOutput>>;\n\n /**\n * Look up company information by domain using Hunter.io.\n *\n * @remarks\n * - Returns company name, description, location, industry, size, technologies, and more.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns null if the company is not found.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiCompanyEnrichment({\n * domain: ``,\n * });\n * ```\n */\n hunterApiCompanyEnrichment(step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiCompanyEnrichmentStepOutput>>;\n\n /**\n * Search for email addresses associated with a domain using Hunter.io.\n *\n * @remarks\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns a list of email addresses found for the domain along with organization info.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiDomainSearch({\n * domain: ``,\n * });\n * ```\n */\n hunterApiDomainSearch(step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiDomainSearchStepOutput>>;\n\n /**\n * Find an email address for a specific person at a domain using Hunter.io.\n *\n * @remarks\n * - Requires a first name, last name, and domain.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns the most likely email address with a confidence score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailFinder({\n * domain: ``,\n * firstName: ``,\n * lastName: ``,\n * });\n * ```\n */\n hunterApiEmailFinder(step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailFinderStepOutput>>;\n\n /**\n * Verify whether an email address is valid and deliverable using Hunter.io.\n *\n * @remarks\n * - Checks email format, MX records, SMTP server, and mailbox deliverability.\n * - Returns a status (\"valid\", \"invalid\", \"accept_all\", \"webmail\", \"disposable\", \"unknown\") and a score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailVerification({\n * email: ``,\n * });\n * ```\n */\n hunterApiEmailVerification(step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailVerificationStepOutput>>;\n\n /**\n * Look up professional information about a person by their email address using Hunter.io.\n *\n * @remarks\n * - Returns name, job title, social profiles, and company information.\n * - If the person is not found, returns an object with an error message instead of throwing.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiPersonEnrichment({\n * email: ``,\n * });\n * ```\n */\n hunterApiPersonEnrichment(step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiPersonEnrichmentStepOutput>>;\n\n /**\n * Replace a face in an image with a face from another image using AI.\n *\n * @remarks\n * - Requires both a target image and a face source image.\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageFaceSwap({\n * imageUrl: ``,\n * faceImageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageFaceSwap(step: ImageFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageFaceSwapStepOutput>>;\n\n /**\n * Remove watermarks from an image using AI.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageRemoveWatermark({\n * imageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageRemoveWatermark(step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageRemoveWatermarkStepOutput>>;\n\n /**\n * Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\n *\n * @example\n * ```typescript\n * const result = await agent.insertVideoClips({\n * baseVideoUrl: ``,\n * overlayVideos: [],\n * });\n * ```\n */\n insertVideoClips(step: InsertVideoClipsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<InsertVideoClipsStepOutput>>;\n\n /**\n * List all data sources for the current app.\n *\n * @remarks\n * - Returns metadata for every data source associated with the current app version.\n * - Each entry includes the data source ID, name, description, status, and document list.\n *\n * @example\n * ```typescript\n * const result = await agent.listDataSources({});\n * ```\n */\n listDataSources(step: ListDataSourcesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListDataSourcesStepOutput>>;\n\n /**\n * List upcoming events from a Google Calendar, ordered by start time.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Only returns future events (timeMin = now).\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns structured events.\n *\n * @example\n * ```typescript\n * const result = await agent.listGoogleCalendarEvents({\n * connectionId: ``,\n * limit: 0,\n * exportType: \"json\",\n * });\n * ```\n */\n listGoogleCalendarEvents(step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleCalendarEventsStepOutput>>;\n\n /**\n * Use an AI model to evaluate which condition from a list is most true, given a context prompt.\n *\n * @remarks\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 * @example\n * ```typescript\n * const result = await agent.logic({\n * context: ``,\n * cases: [],\n * });\n * ```\n */\n logic(step: LogicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<LogicStepOutput>>;\n\n /**\n * Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your Make.com scenario.\n * - Input key-value pairs are sent as JSON in the POST body.\n * - Response format depends on the Make.com scenario configuration.\n *\n * @example\n * ```typescript\n * const result = await agent.makeDotComRunScenario({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n makeDotComRunScenario(step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MakeDotComRunScenarioStepOutput>>;\n\n /**\n * Merge one or more clips into a single audio file.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeAudio({\n * mp3Urls: [],\n * });\n * ```\n */\n mergeAudio(step: MergeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeAudioStepOutput>>;\n\n /**\n * Merge one or more clips into a single video.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeVideos({\n * videoUrls: [],\n * });\n * ```\n */\n mergeVideos(step: MergeVideosStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeVideosStepOutput>>;\n\n /**\n * Mix an audio track into a video\n *\n * @example\n * ```typescript\n * const result = await agent.mixAudioIntoVideo({\n * videoUrl: ``,\n * audioUrl: ``,\n * options: {},\n * });\n * ```\n */\n mixAudioIntoVideo(step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MixAudioIntoVideoStepOutput>>;\n\n /**\n * Mute a video file\n *\n * @example\n * ```typescript\n * const result = await agent.muteVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n muteVideo(step: MuteVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MuteVideoStepOutput>>;\n\n /**\n * Trigger an n8n workflow node via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your n8n workflow.\n * - Supports GET and POST methods with optional Basic authentication.\n * - For GET requests, input values are sent as query parameters. For POST, they are sent as JSON body.\n *\n * @example\n * ```typescript\n * const result = await agent.n8nRunNode({\n * method: ``,\n * authentication: \"none\",\n * user: ``,\n * password: ``,\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n n8nRunNode(step: N8nRunNodeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<N8nRunNodeStepOutput>>;\n\n /**\n * Create a new page in Notion as a child of an existing page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks (headings, paragraphs, lists, code, quotes).\n * - The page is created as a child of the specified parent page (pageId).\n *\n * @example\n * ```typescript\n * const result = await agent.notionCreatePage({\n * pageId: ``,\n * content: ``,\n * title: ``,\n * connectionId: ``,\n * });\n * ```\n */\n notionCreatePage(step: NotionCreatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionCreatePageStepOutput>>;\n\n /**\n * Update the content of an existing Notion page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks.\n * - \"append\" mode adds content to the end of the page. \"overwrite\" mode deletes all existing blocks first.\n *\n * @example\n * ```typescript\n * const result = await agent.notionUpdatePage({\n * pageId: ``,\n * content: ``,\n * mode: \"append\",\n * connectionId: ``,\n * });\n * ```\n */\n notionUpdatePage(step: NotionUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionUpdatePageStepOutput>>;\n\n /**\n * Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\n *\n * @remarks\n * - Can use a natural language \"smartQuery\" which is converted to Apollo search parameters by an AI model.\n * - Advanced params can override or supplement the smart query results.\n * - Optionally enriches returned people and/or their organizations for additional detail.\n * - Results are paginated. Use limit and page to control the result window.\n *\n * @example\n * ```typescript\n * const result = await agent.peopleSearch({\n * smartQuery: ``,\n * enrichPeople: false,\n * enrichOrganizations: false,\n * limit: ``,\n * page: ``,\n * params: {},\n * });\n * ```\n */\n peopleSearch(step: PeopleSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PeopleSearchStepOutput>>;\n\n /**\n * Create a post on LinkedIn from the connected account.\n *\n * @remarks\n * - Requires a LinkedIn OAuth connection (connectionId).\n * - Supports text posts, image posts, and video posts.\n * - Visibility controls who can see the post.\n *\n * @example\n * ```typescript\n * const result = await agent.postToLinkedIn({\n * message: ``,\n * visibility: \"PUBLIC\",\n * connectionId: ``,\n * });\n * ```\n */\n postToLinkedIn(step: PostToLinkedInStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToLinkedInStepOutput>>;\n\n /**\n * Send a message to a Slack channel via a connected bot.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n * - Supports both simple text messages and slack blocks messages\n * - Text messages can use limited markdown (slack-only fomatting—e.g., headers are just rendered as bold)\n *\n * @example\n * ```typescript\n * const result = await agent.postToSlackChannel({\n * channelId: ``,\n * messageType: \"string\",\n * message: ``,\n * connectionId: ``,\n * });\n * ```\n */\n postToSlackChannel(step: PostToSlackChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToSlackChannelStepOutput>>;\n\n /**\n * Create a post on X (Twitter) from the connected account.\n *\n * @remarks\n * - Requires an X OAuth connection (connectionId).\n * - Posts are plain text. Maximum 280 characters.\n *\n * @example\n * ```typescript\n * const result = await agent.postToX({\n * text: ``,\n * connectionId: ``,\n * });\n * ```\n */\n postToX(step: PostToXStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToXStepOutput>>;\n\n /**\n * Send data to a Zapier Zap via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in the Zapier Zap settings\n * - Input keys and values are sent as the JSON body of the POST request\n * - The webhook response (JSON or plain text) is returned as the output\n *\n * @example\n * ```typescript\n * const result = await agent.postToZapier({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n postToZapier(step: PostToZapierStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToZapierStepOutput>>;\n\n /**\n * Search a vector data source (RAG) and return relevant document chunks.\n *\n * @remarks\n * - Queries a vectorized data source and returns the most relevant chunks.\n * - Useful for retrieval-augmented generation (RAG) workflows.\n *\n * @example\n * ```typescript\n * const result = await agent.queryDataSource({\n * dataSourceId: ``,\n * query: ``,\n * maxResults: 0,\n * });\n * ```\n */\n queryDataSource(step: QueryDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryDataSourceStepOutput>>;\n\n /**\n * Execute a SQL query against an external database connected to the workspace.\n *\n * @remarks\n * - Requires a database connection configured in the workspace.\n * - Supports PostgreSQL (including Supabase), MySQL, and MSSQL.\n * - Results can be returned as JSON or CSV.\n *\n * @example\n * ```typescript\n * const result = await agent.queryExternalDatabase({\n * connectionId: ``,\n * query: ``,\n * outputFormat: \"json\",\n * });\n * ```\n */\n queryExternalDatabase(step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryExternalDatabaseStepOutput>>;\n\n /**\n * Replace personally identifiable information in text with placeholders using Microsoft Presidio.\n *\n * @remarks\n * - PII is replaced with entity type placeholders (e.g. \"Call me at <PHONE_NUMBER>\").\n * - If entities is empty, returns empty text immediately without processing.\n *\n * @example\n * ```typescript\n * const result = await agent.redactPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n redactPII(step: RedactPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RedactPIIStepOutput>>;\n\n /**\n * Remove the background from an image using AI, producing a transparent PNG.\n *\n * @remarks\n * - Uses the Bria background removal model via fal.ai.\n * - Output is re-hosted on the CDN as a PNG with transparency.\n *\n * @example\n * ```typescript\n * const result = await agent.removeBackgroundFromImage({\n * imageUrl: ``,\n * });\n * ```\n */\n removeBackgroundFromImage(step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RemoveBackgroundFromImageStepOutput>>;\n\n /**\n * Resize a video file\n *\n * @example\n * ```typescript\n * const result = await agent.resizeVideo({\n * videoUrl: ``,\n * mode: \"fit\",\n * });\n * ```\n */\n resizeVideo(step: ResizeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ResizeVideoStepOutput>>;\n\n /**\n * Run a packaged workflow (\"custom block\")\n *\n * @remarks\n * - From the user's perspective, packaged workflows are just ordinary blocks. Behind the scenes, they operate like packages/libraries in a programming language, letting the user execute custom functionality.\n * - Some of these packaged workflows are available as part of MindStudio's \"Standard Library\" and available to every user.\n * - Available packaged workflows are documented here as individual blocks, but the runPackagedWorkflow block is how they need to be wrapped in order to be executed correctly.\n *\n * @example\n * ```typescript\n * const result = await agent.runPackagedWorkflow({\n * appId: ``,\n * workflowId: ``,\n * inputVariables: {},\n * outputVariables: {},\n * name: ``,\n * });\n * ```\n */\n runPackagedWorkflow(step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunPackagedWorkflowStepOutput>>;\n\n /**\n * Scrape a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPage({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPage(step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPageStepOutput>>;\n\n /**\n * Get all the posts for a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPosts({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPosts(step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPostsStepOutput>>;\n\n /**\n * Get all the comments for an Instagram post\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramComments({\n * postUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramComments(step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramCommentsStepOutput>>;\n\n /**\n * Scrape an Instagram profile's mentions\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramMentions({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramMentions(step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramMentionsStepOutput>>;\n\n /**\n * Get all the posts for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramPosts({\n * profileUrl: ``,\n * resultsLimit: ``,\n * onlyPostsNewerThan: ``,\n * });\n * ```\n */\n scrapeInstagramPosts(step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramPostsStepOutput>>;\n\n /**\n * Scrape an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeInstagramProfile(step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramProfileStepOutput>>;\n\n /**\n * Get all the reels for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramReels({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramReels(step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramReelsStepOutput>>;\n\n /**\n * Scrape public company data from a LinkedIn company page.\n *\n * @remarks\n * - Requires a LinkedIn company URL (e.g. https://www.linkedin.com/company/mindstudioai).\n * - Returns structured company data including description, employees, updates, and similar companies.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInCompany({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInCompany(step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInCompanyStepOutput>>;\n\n /**\n * Scrape public profile data from a LinkedIn profile page.\n *\n * @remarks\n * - Requires a LinkedIn profile URL (e.g. https://www.linkedin.com/in/username).\n * - Returns structured profile data including experience, education, articles, and activities.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInProfile(step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInProfileStepOutput>>;\n\n /**\n * Scrape a Meta Threads profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeMetaThreadsProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeMetaThreadsProfile(step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeMetaThreadsProfileStepOutput>>;\n\n /**\n * Extract text, HTML, or structured content from one or more web pages.\n *\n * @remarks\n * - Accepts a single URL or multiple URLs (as a JSON array, comma-separated, or newline-separated).\n * - Output format controls the result shape: \"text\" returns markdown, \"html\" returns raw HTML, \"json\" returns structured scraper data.\n * - Can optionally capture a screenshot of each page.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeUrl({\n * url: ``,\n * });\n * ```\n */\n scrapeUrl(step: ScrapeUrlStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeUrlStepOutput>>;\n\n /**\n * Scrape data from a single X (Twitter) post by URL.\n *\n * @remarks\n * - Returns structured post data (text, html, optional json/screenshot/metadata).\n * - Optionally saves the text content to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXPost({\n * url: ``,\n * });\n * ```\n */\n scrapeXPost(step: ScrapeXPostStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXPostStepOutput>>;\n\n /**\n * Scrape public profile data from an X (Twitter) account by URL.\n *\n * @remarks\n * - Returns structured profile data.\n * - Optionally saves the result to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeXProfile(step: ScrapeXProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXProfileStepOutput>>;\n\n /**\n * Search the web using Google and return structured results.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogle({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogle(step: SearchGoogleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleStepOutput>>;\n\n /**\n * Search Google Images and return image results with URLs and metadata.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleImages({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleImages(step: SearchGoogleImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleImagesStepOutput>>;\n\n /**\n * Search Google News for recent news articles matching a query.\n *\n * @remarks\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleNews({\n * text: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleNews(step: SearchGoogleNewsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleNewsStepOutput>>;\n\n /**\n * Fetch Google Trends data for a search term.\n *\n * @remarks\n * - date accepts shorthand (\"now 1-H\", \"today 1-m\", \"today 5-y\", etc.) or custom \"yyyy-mm-dd yyyy-mm-dd\" ranges.\n * - data_type controls the shape of returned data: TIMESERIES, GEO_MAP, GEO_MAP_0, RELATED_TOPICS, or RELATED_QUERIES.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleTrends({\n * text: ``,\n * hl: ``,\n * geo: ``,\n * data_type: \"TIMESERIES\",\n * cat: ``,\n * date: ``,\n * ts: ``,\n * });\n * ```\n */\n searchGoogleTrends(step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleTrendsStepOutput>>;\n\n /**\n * Search the web using the Perplexity API and return structured results.\n *\n * @remarks\n * - Defaults to US results. Use countryCode (ISO code) to filter by country.\n * - Returns 10 results by default, configurable from 1 to 20.\n * - The variable receives text or JSON depending on exportType. The direct execution output always returns structured results.\n *\n * @example\n * ```typescript\n * const result = await agent.searchPerplexity({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchPerplexity(step: SearchPerplexityStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchPerplexityStepOutput>>;\n\n /**\n * Search recent X (Twitter) posts matching a query.\n *\n * @remarks\n * - Searches only the past 7 days of posts.\n * - Query supports X API v2 search operators (up to 512 characters).\n * Available search operators in query:\n * | Operator | Description |\n * | -----------------| -------------------------------------------------|\n * | from: | Posts from a specific user (e.g., from:elonmusk) |\n * | to: | Posts sent to a specific user (e.g., to:NASA) |\n * | @ | Mentions a user (e.g., @openai) |\n * | # | Hashtag search (e.g., #AI) |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | lang: | Filters by language (e.g., lang:en) |\n * | - | Excludes specific terms (e.g., -spam) |\n * | () | Groups terms or operators (e.g., (AI OR ML)) |\n * | AND, OR, NOT | Boolean logic for combining or excluding terms |\n * Conjunction-Required Operators (must be combined with a standalone operator):\n * | Operator | Description |\n * | ------------ | -----------------------------------------------|\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * For example, has:media alone is invalid, but #AI has:media is valid.\n *\n * @example\n * ```typescript\n * const result = await agent.searchXPosts({\n * query: ``,\n * scope: \"recent\",\n * options: {},\n * });\n * ```\n */\n searchXPosts(step: SearchXPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchXPostsStepOutput>>;\n\n /**\n * Search for YouTube videos by keyword.\n *\n * @remarks\n * - Supports pagination (up to 5 pages) and country/language filters.\n * - Use the filter/filterType fields for YouTube search parameter (sp) filters.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutube({\n * query: ``,\n * limitPages: ``,\n * filter: ``,\n * filterType: ``,\n * });\n * ```\n */\n searchYoutube(step: SearchYoutubeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeStepOutput>>;\n\n /**\n * Retrieve trending videos on YouTube by category and region.\n *\n * @remarks\n * - Categories: \"now\" (trending now), \"music\", \"gaming\", \"films\".\n * - Supports country and language filtering.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutubeTrends({\n * bp: \"now\",\n * hl: ``,\n * gl: ``,\n * });\n * ```\n */\n searchYoutubeTrends(step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeTrendsStepOutput>>;\n\n /**\n * Send an email to one or more configured recipient addresses.\n *\n * @remarks\n * - Recipient email addresses are resolved from OAuth connections configured by the app creator. The user running the workflow does not specify the recipient directly.\n * - If the body is a URL to a hosted HTML file on the CDN, the HTML is fetched and used as the email body.\n * - When generateHtml is enabled, the body text is converted to a styled HTML email using an AI model.\n * - connectionId can be a comma-separated list to send to multiple recipients.\n * - The special connectionId \"trigger_email\" uses the email address that triggered the workflow.\n *\n * @example\n * ```typescript\n * const result = await agent.sendEmail({\n * subject: ``,\n * body: ``,\n * connectionId: ``,\n * });\n * ```\n */\n sendEmail(step: SendEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendEmailStepOutput>>;\n\n /**\n * Send an SMS text message to a phone number configured via OAuth connection.\n *\n * @remarks\n * - User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\n *\n * @example\n * ```typescript\n * const result = await agent.sendSMS({\n * body: ``,\n * connectionId: ``,\n * });\n * ```\n */\n sendSMS(step: SendSMSStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendSMSStepOutput>>;\n\n /**\n * Set the title of the agent run for the user's history\n *\n * @example\n * ```typescript\n * const result = await agent.setRunTitle({\n * title: ``,\n * });\n * ```\n */\n setRunTitle(step: SetRunTitleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetRunTitleStepOutput>>;\n\n /**\n * Explicitly set a variable to a given value.\n *\n * @remarks\n * - Useful for bootstrapping global variables or setting constants.\n * - The variable name and value both support variable interpolation.\n * - The type field is a UI hint only (controls input widget in the editor).\n *\n * @example\n * ```typescript\n * const result = await agent.setVariable({\n * value: ``,\n * type: \"imageUrl\",\n * });\n * ```\n */\n setVariable(step: SetVariableStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetVariableStepOutput>>;\n\n /**\n * Send an audio file to a Telegram chat as music or a voice note via a bot.\n *\n * @remarks\n * - \"audio\" mode sends as a standard audio file. \"voice\" mode sends as a voice message (re-uploads the file for large file support).\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendAudio({\n * botToken: ``,\n * chatId: ``,\n * audioUrl: ``,\n * mode: \"audio\",\n * });\n * ```\n */\n telegramSendAudio(step: TelegramSendAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendAudioStepOutput>>;\n\n /**\n * Send a document/file to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendFile({\n * botToken: ``,\n * chatId: ``,\n * fileUrl: ``,\n * });\n * ```\n */\n telegramSendFile(step: TelegramSendFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendFileStepOutput>>;\n\n /**\n * Send an image to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendImage({\n * botToken: ``,\n * chatId: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n telegramSendImage(step: TelegramSendImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendImageStepOutput>>;\n\n /**\n * Send a text message to a Telegram chat via a bot.\n *\n * @remarks\n * - Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\n * - botToken format is \"botId:token\" — both parts are required.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendMessage({\n * botToken: ``,\n * chatId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramSendMessage(step: TelegramSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendMessageStepOutput>>;\n\n /**\n * Send a video to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendVideo({\n * botToken: ``,\n * chatId: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n telegramSendVideo(step: TelegramSendVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendVideoStepOutput>>;\n\n /**\n * Show the \"typing...\" indicator in a Telegram chat via a bot.\n *\n * @remarks\n * - The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSetTyping({\n * botToken: ``,\n * chatId: ``,\n * });\n * ```\n */\n telegramSetTyping(step: TelegramSetTypingStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSetTypingStepOutput>>;\n\n /**\n * Generate an audio file from provided text using a speech model.\n *\n * @remarks\n * - The text field contains the exact words to be spoken (not instructions).\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.textToSpeech({\n * text: ``,\n * });\n * ```\n */\n textToSpeech(step: TextToSpeechStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TextToSpeechStepOutput>>;\n\n /**\n * Convert an audio file to text using a transcription model.\n *\n * @remarks\n * - The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\n *\n * @example\n * ```typescript\n * const result = await agent.transcribeAudio({\n * audioUrl: ``,\n * prompt: ``,\n * });\n * ```\n */\n transcribeAudio(step: TranscribeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TranscribeAudioStepOutput>>;\n\n /**\n * Trim an audio or video clip\n *\n * @example\n * ```typescript\n * const result = await agent.trimMedia({\n * inputUrl: ``,\n * });\n * ```\n */\n trimMedia(step: TrimMediaStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TrimMediaStepOutput>>;\n\n /**\n * Update an existing event on a Google Calendar. Only specified fields are changed.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Fetches the existing event first, then applies only the provided updates. Omitted fields are left unchanged.\n * - Attendees are specified as one email address per line, and replace the entire attendee list.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleCalendarEvent({\n * connectionId: ``,\n * eventId: ``,\n * });\n * ```\n */\n updateGoogleCalendarEvent(step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleCalendarEventStepOutput>>;\n\n /**\n * Update the contents of an existing Google Document.\n *\n * @remarks\n * - operationType controls how content is applied: \"addToTop\" prepends, \"addToBottom\" appends, \"overwrite\" replaces all content.\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleDoc({\n * documentId: ``,\n * connectionId: ``,\n * text: ``,\n * textType: \"plain\",\n * operationType: \"addToTop\",\n * });\n * ```\n */\n updateGoogleDoc(step: UpdateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleDocStepOutput>>;\n\n /**\n * Update a Google Spreadsheet with new data.\n *\n * @remarks\n * - operationType controls how data is written: \"addToBottom\" appends rows, \"overwrite\" replaces all data, \"range\" writes to a specific cell range.\n * - Data should be provided as CSV in the text field.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleSheet({\n * text: ``,\n * connectionId: ``,\n * spreadsheetId: ``,\n * range: ``,\n * operationType: \"addToBottom\",\n * });\n * ```\n */\n updateGoogleSheet(step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleSheetStepOutput>>;\n\n /**\n * Upload a file into an existing data source from a URL or raw text content.\n *\n * @remarks\n * - If \"file\" is a single URL, the file is downloaded from that URL and uploaded.\n * - If \"file\" is any other string, a .txt document is created from that content and uploaded.\n * - The block waits (polls) for processing to complete before transitioning, up to 5 minutes.\n * - Once processing finishes, vectors are loaded into Milvus so the data source is immediately queryable.\n * - Supported file types (when using a URL) are the same as the data source upload UI (PDF, DOCX, TXT, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.uploadDataSourceDocument({\n * dataSourceId: ``,\n * file: ``,\n * fileName: ``,\n * });\n * ```\n */\n uploadDataSourceDocument(step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UploadDataSourceDocumentStepOutput>>;\n\n /**\n * Increase the resolution of an image using AI upscaling.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleImage({\n * imageUrl: ``,\n * targetResolution: \"2k\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleImage(step: UpscaleImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleImageStepOutput>>;\n\n /**\n * Upscale a video file\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleVideo({\n * videoUrl: ``,\n * targetResolution: \"720p\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleVideo(step: UpscaleVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleVideoStepOutput>>;\n\n /**\n * Send a message to an AI model and return the response, or echo a system message.\n *\n * @remarks\n * - Source \"user\" sends the message to an LLM and returns the model's response.\n * - Source \"system\" echoes the message content directly (no AI call).\n * - Mode \"background\" saves the result to a variable. Mode \"foreground\" streams it to the user (not available in direct execution).\n * - Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\n *\n * @example\n * ```typescript\n * const result = await agent.generateText({\n * message: ``,\n * });\n * ```\n */\n generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /**\n * Swap faces in a video file\n *\n * @example\n * ```typescript\n * const result = await agent.videoFaceSwap({\n * videoUrl: ``,\n * faceImageUrl: ``,\n * targetIndex: 0,\n * engine: ``,\n * });\n * ```\n */\n videoFaceSwap(step: VideoFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoFaceSwapStepOutput>>;\n\n /**\n * Remove or replace background from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveBackground({\n * videoUrl: ``,\n * newBackground: \"transparent\",\n * engine: ``,\n * });\n * ```\n */\n videoRemoveBackground(step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveBackgroundStepOutput>>;\n\n /**\n * Remove a watermark from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveWatermark({\n * videoUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n videoRemoveWatermark(step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveWatermarkStepOutput>>;\n\n /**\n * Overlay a watermark image onto another image.\n *\n * @remarks\n * - The watermark is placed at the specified corner with configurable padding and width.\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkImage({\n * imageUrl: ``,\n * watermarkImageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkImage(step: WatermarkImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkImageStepOutput>>;\n\n /**\n * Add an image watermark to a video\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkVideo({\n * videoUrl: ``,\n * imageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkVideo(step: WatermarkVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkVideoStepOutput>>;\n\n}\n\n/** @internal Attaches typed step methods to the MindStudioAgent prototype. */\nexport function applyStepMethods(AgentClass: new (...args: any[]) => any): void {\n const proto = AgentClass.prototype;\n\n proto.activeCampaignAddNote = function (step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignAddNote\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.activeCampaignCreateContact = function (step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignCreateContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.addSubtitlesToVideo = function (step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"addSubtitlesToVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableCreateUpdateRecord = function (step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableCreateUpdateRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableDeleteRecord = function (step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableDeleteRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetRecord = function (step: AirtableGetRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetTableRecords = function (step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetTableRecords\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeImage = function (step: AnalyzeImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeVideo = function (step: AnalyzeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.captureThumbnail = function (step: CaptureThumbnailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"captureThumbnail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdatePage = function (step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdateRow = function (step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdateRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaFindRow = function (step: CodaFindRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaFindRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetPage = function (step: CodaGetPageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetPage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetTableRows = function (step: CodaGetTableRowsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetTableRows\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.convertPdfToImages = function (step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"convertPdfToImages\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createDataSource = function (step: CreateDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleCalendarEvent = function (step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleDoc = function (step: CreateGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleSheet = function (step: CreateGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSource = function (step: DeleteDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSourceDocument = function (step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.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.fetchDataSourceDocument = function (step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleDoc = function (step: FetchGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleSheet = function (step: FetchGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchSlackChannelHistory = function (step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchSlackChannelHistory\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeCaptions = function (step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeCaptions\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeChannel = function (step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeChannel\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeComments = function (step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeComments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeVideo = function (step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateChart = function (step: GenerateChartStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateChart\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateImage = function (step: GenerateImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateLipsync = function (step: GenerateLipsyncStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateLipsync\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateMusic = function (step: GenerateMusicStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateMusic\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateAsset = function (step: GeneratePdfStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generatePdf\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateStaticVideoFromImage = function (step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateStaticVideoFromImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateVideo = function (step: GenerateVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.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.listDataSources = function (step: ListDataSourcesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listDataSources\", 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.uploadDataSourceDocument = function (step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"uploadDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleImage = function (step: UpscaleImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleVideo = function (step: UpscaleVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateText = function (step: UserMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"userMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoFaceSwap = function (step: VideoFaceSwapStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoFaceSwap\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveBackground = function (step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveBackground\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveWatermark = function (step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveWatermark\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkImage = function (step: WatermarkImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkVideo = function (step: WatermarkVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-02-28T16:06:47.850Z\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 { RateLimiter, type AuthType } from './rate-limit.js';\nimport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://v1.mindstudio-api.com';\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * Client for the MindStudio direct step execution API.\n *\n * Create an instance and call typed step methods directly:\n *\n * ```ts\n * const agent = new MindStudioAgent({ apiKey: \"your-key\" });\n * const { imageUrl } = await agent.generateImage({ prompt: \"a sunset\", mode: \"background\" });\n * console.log(imageUrl);\n * ```\n *\n * Authentication is resolved in order:\n * 1. `apiKey` passed to the constructor\n * 2. `MINDSTUDIO_API_KEY` environment variable\n * 3. `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 *\n * Rate limiting is handled automatically:\n * - Concurrent requests are queued to stay within server limits\n * - 429 responses are retried automatically using the `Retry-After` header\n * - Internal (hook) tokens are capped at 500 calls per execution\n */\nexport class MindStudioAgent {\n /** @internal */\n readonly _httpConfig: HttpClientConfig;\n\n constructor(options: AgentOptions = {}) {\n const { token, authType } = 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 = {\n baseUrl,\n token,\n rateLimiter: new RateLimiter(authType),\n maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,\n };\n }\n\n /**\n * Execute any step by its type name. This is the low-level method that all\n * typed step methods delegate to. Use it as an escape hatch for step types\n * not yet covered by the generated methods.\n *\n * ```ts\n * const result = await agent.executeStep(\"generateImage\", { prompt: \"hello\", mode: \"background\" });\n * ```\n */\n async executeStep<TOutput = unknown>(\n stepType: string,\n step: Record<string, unknown>,\n options?: StepExecutionOptions,\n ): Promise<StepExecutionResult<TOutput>> {\n const { 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 const remaining = headers.get('x-ratelimit-remaining');\n\n return {\n ...(output as object),\n $appId: headers.get('x-mindstudio-app-id') ?? '',\n $threadId: headers.get('x-mindstudio-thread-id') ?? '',\n $rateLimitRemaining:\n remaining != null ? parseInt(remaining, 10) : undefined,\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): {\n token: string;\n authType: AuthType;\n} {\n if (provided) return { token: provided, authType: 'apiKey' };\n if (process.env.MINDSTUDIO_API_KEY)\n return { token: process.env.MINDSTUDIO_API_KEY, authType: 'apiKey' };\n if (process.env.CALLBACK_TOKEN)\n return { token: process.env.CALLBACK_TOKEN, authType: 'internal' };\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-28T16:06:47.850Z\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 \"createDataSource\": {\n method: \"createDataSource\",\n snippet: \"{\\n name: ``,\\n}\",\n outputKeys: [],\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 \"deleteDataSource\": {\n method: \"deleteDataSource\",\n snippet: \"{\\n dataSourceId: ``,\\n}\",\n outputKeys: [],\n },\n \"deleteDataSourceDocument\": {\n method: \"deleteDataSourceDocument\",\n snippet: \"{\\n dataSourceId: ``,\\n documentId: ``,\\n}\",\n outputKeys: [],\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 \"fetchDataSourceDocument\": {\n method: \"fetchDataSourceDocument\",\n snippet: \"{\\n dataSourceId: ``,\\n documentId: ``,\\n}\",\n outputKeys: [],\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: \"generateAsset\",\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 \"listDataSources\": {\n method: \"listDataSources\",\n snippet: \"{}\",\n outputKeys: [],\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 \"uploadDataSourceDocument\": {\n method: \"uploadDataSourceDocument\",\n snippet: \"{\\n dataSourceId: ``,\\n file: ``,\\n fileName: ``,\\n}\",\n outputKeys: [],\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: \"generateText\",\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\nexport type MonacoSnippetFieldType = 'string' | 'number' | 'boolean' | 'array' | 'object' | string[];\nexport type MonacoSnippetField = [name: string, type: MonacoSnippetFieldType];\n\nexport const monacoSnippets: Record<string, MonacoSnippetField[]> = {\n \"activeCampaignAddNote\": [[\"contactId\", 'string'], [\"note\", 'string'], [\"connectionId\", 'string']],\n \"activeCampaignCreateContact\": [[\"email\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string'], [\"phone\", 'string'], [\"accountId\", 'string'], [\"customFields\", 'object'], [\"connectionId\", 'string']],\n \"addSubtitlesToVideo\": [[\"videoUrl\", 'string'], [\"language\", 'string'], [\"fontName\", 'string'], [\"fontSize\", 'number'], [\"fontWeight\", [\"normal\", \"bold\", \"black\"]], [\"fontColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"highlightColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"strokeWidth\", 'number'], [\"strokeColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"backgroundColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\", \"none\"]], [\"backgroundOpacity\", 'number'], [\"position\", [\"top\", \"center\", \"bottom\"]], [\"yOffset\", 'number'], [\"wordsPerSubtitle\", 'number'], [\"enableAnimation\", 'boolean']],\n \"airtableCreateUpdateRecord\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string'], [\"fields\", 'string'], [\"recordData\", 'object']],\n \"airtableDeleteRecord\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']],\n \"airtableGetRecord\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']],\n \"airtableGetTableRecords\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string']],\n \"analyzeImage\": [[\"prompt\", 'string'], [\"imageUrl\", 'string']],\n \"analyzeVideo\": [[\"prompt\", 'string'], [\"videoUrl\", 'string']],\n \"captureThumbnail\": [[\"videoUrl\", 'string'], [\"at\", 'string']],\n \"codaCreateUpdatePage\": [[\"connectionId\", 'string'], [\"pageData\", 'object']],\n \"codaCreateUpdateRow\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']],\n \"codaFindRow\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']],\n \"codaGetPage\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"pageId\", 'string']],\n \"codaGetTableRows\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"tableId\", 'string']],\n \"convertPdfToImages\": [[\"pdfUrl\", 'string']],\n \"createDataSource\": [[\"name\", 'string']],\n \"createGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"summary\", 'string'], [\"startDateTime\", 'string'], [\"endDateTime\", 'string']],\n \"createGoogleDoc\": [[\"title\", 'string'], [\"text\", 'string'], [\"connectionId\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]]],\n \"createGoogleSheet\": [[\"title\", 'string'], [\"text\", 'string'], [\"connectionId\", 'string']],\n \"deleteDataSource\": [[\"dataSourceId\", 'string']],\n \"deleteDataSourceDocument\": [[\"dataSourceId\", 'string'], [\"documentId\", 'string']],\n \"deleteGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"eventId\", 'string']],\n \"detectPII\": [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']],\n \"downloadVideo\": [[\"videoUrl\", 'string'], [\"format\", [\"mp4\", \"mp3\"]]],\n \"enhanceImageGenerationPrompt\": [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']],\n \"enhanceVideoGenerationPrompt\": [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']],\n \"enrichPerson\": [[\"params\", 'object']],\n \"extractAudioFromVideo\": [[\"videoUrl\", 'string']],\n \"extractText\": [[\"url\", 'string']],\n \"fetchDataSourceDocument\": [[\"dataSourceId\", 'string'], [\"documentId\", 'string']],\n \"fetchGoogleDoc\": [[\"documentId\", 'string'], [\"connectionId\", 'string'], [\"exportType\", [\"html\", \"markdown\", \"json\", \"plain\"]]],\n \"fetchGoogleSheet\": [[\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"connectionId\", 'string'], [\"exportType\", [\"csv\", \"json\"]]],\n \"fetchSlackChannelHistory\": [[\"connectionId\", 'string'], [\"channelId\", 'string']],\n \"fetchYoutubeCaptions\": [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"language\", 'string']],\n \"fetchYoutubeChannel\": [[\"channelUrl\", 'string']],\n \"fetchYoutubeComments\": [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"limitPages\", 'string']],\n \"fetchYoutubeVideo\": [[\"videoUrl\", 'string']],\n \"generateAsset\": [[\"source\", 'string'], [\"sourceType\", [\"html\", \"markdown\", \"spa\", \"raw\", \"dynamic\", \"customInterface\"]], [\"outputFormat\", [\"pdf\", \"png\", \"html\", \"mp4\", \"openGraph\"]], [\"pageSize\", [\"full\", \"letter\", \"A4\", \"custom\"]], [\"testData\", 'object']],\n \"generateChart\": [[\"chart\", 'object']],\n \"generateImage\": [[\"prompt\", 'string']],\n \"generateLipsync\": [],\n \"generateMusic\": [[\"text\", 'string']],\n \"generateStaticVideoFromImage\": [[\"imageUrl\", 'string'], [\"duration\", 'string']],\n \"generateText\": [[\"message\", 'string']],\n \"generateVideo\": [[\"prompt\", 'string']],\n \"getGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"eventId\", 'string'], [\"exportType\", [\"json\", \"text\"]]],\n \"getMediaMetadata\": [[\"mediaUrl\", 'string']],\n \"httpRequest\": [[\"url\", 'string'], [\"method\", 'string'], [\"headers\", 'object'], [\"queryParams\", 'object'], [\"body\", 'string'], [\"bodyItems\", 'object'], [\"contentType\", [\"none\", \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\", \"custom\"]], [\"customContentType\", 'string']],\n \"hubspotCreateCompany\": [[\"connectionId\", 'string'], [\"company\", 'object'], [\"enabledProperties\", 'array']],\n \"hubspotCreateContact\": [[\"connectionId\", 'string'], [\"contact\", 'object'], [\"enabledProperties\", 'array'], [\"companyDomain\", 'string']],\n \"hubspotGetCompany\": [[\"connectionId\", 'string'], [\"searchBy\", [\"domain\", \"id\"]], [\"companyDomain\", 'string'], [\"companyId\", 'string'], [\"additionalProperties\", 'array']],\n \"hubspotGetContact\": [[\"connectionId\", 'string'], [\"searchBy\", [\"email\", \"id\"]], [\"contactEmail\", 'string'], [\"contactId\", 'string'], [\"additionalProperties\", 'array']],\n \"hunterApiCompanyEnrichment\": [[\"domain\", 'string']],\n \"hunterApiDomainSearch\": [[\"domain\", 'string']],\n \"hunterApiEmailFinder\": [[\"domain\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string']],\n \"hunterApiEmailVerification\": [[\"email\", 'string']],\n \"hunterApiPersonEnrichment\": [[\"email\", 'string']],\n \"imageFaceSwap\": [[\"imageUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"engine\", 'string']],\n \"imageRemoveWatermark\": [[\"imageUrl\", 'string'], [\"engine\", 'string']],\n \"insertVideoClips\": [[\"baseVideoUrl\", 'string'], [\"overlayVideos\", 'array']],\n \"listDataSources\": [],\n \"listGoogleCalendarEvents\": [[\"connectionId\", 'string'], [\"limit\", 'number'], [\"exportType\", [\"json\", \"text\"]]],\n \"logic\": [[\"context\", 'string'], [\"cases\", 'array']],\n \"makeDotComRunScenario\": [[\"webhookUrl\", 'string'], [\"input\", 'object']],\n \"mergeAudio\": [[\"mp3Urls\", 'array']],\n \"mergeVideos\": [[\"videoUrls\", 'array']],\n \"mixAudioIntoVideo\": [[\"videoUrl\", 'string'], [\"audioUrl\", 'string'], [\"options\", 'object']],\n \"muteVideo\": [[\"videoUrl\", 'string']],\n \"n8nRunNode\": [[\"method\", 'string'], [\"authentication\", [\"none\", \"basic\", \"string\"]], [\"user\", 'string'], [\"password\", 'string'], [\"webhookUrl\", 'string'], [\"input\", 'object']],\n \"notionCreatePage\": [[\"pageId\", 'string'], [\"content\", 'string'], [\"title\", 'string'], [\"connectionId\", 'string']],\n \"notionUpdatePage\": [[\"pageId\", 'string'], [\"content\", 'string'], [\"mode\", [\"append\", \"overwrite\"]], [\"connectionId\", 'string']],\n \"peopleSearch\": [[\"smartQuery\", 'string'], [\"enrichPeople\", 'boolean'], [\"enrichOrganizations\", 'boolean'], [\"limit\", 'string'], [\"page\", 'string'], [\"params\", 'object']],\n \"postToLinkedIn\": [[\"message\", 'string'], [\"visibility\", [\"PUBLIC\", \"CONNECTIONS\"]], [\"connectionId\", 'string']],\n \"postToSlackChannel\": [[\"channelId\", 'string'], [\"messageType\", [\"string\", \"blocks\"]], [\"message\", 'string'], [\"connectionId\", 'string']],\n \"postToX\": [[\"text\", 'string'], [\"connectionId\", 'string']],\n \"postToZapier\": [[\"webhookUrl\", 'string'], [\"input\", 'object']],\n \"queryDataSource\": [[\"dataSourceId\", 'string'], [\"query\", 'string'], [\"maxResults\", 'number']],\n \"queryExternalDatabase\": [[\"connectionId\", 'string'], [\"query\", 'string'], [\"outputFormat\", [\"json\", \"csv\"]]],\n \"redactPII\": [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']],\n \"removeBackgroundFromImage\": [[\"imageUrl\", 'string']],\n \"resizeVideo\": [[\"videoUrl\", 'string'], [\"mode\", [\"fit\", \"exact\"]]],\n \"runPackagedWorkflow\": [[\"appId\", 'string'], [\"workflowId\", 'string'], [\"inputVariables\", 'object'], [\"outputVariables\", 'object'], [\"name\", 'string']],\n \"scrapeFacebookPage\": [[\"pageUrl\", 'string']],\n \"scrapeFacebookPosts\": [[\"pageUrl\", 'string']],\n \"scrapeInstagramComments\": [[\"postUrl\", 'string'], [\"resultsLimit\", 'string']],\n \"scrapeInstagramMentions\": [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']],\n \"scrapeInstagramPosts\": [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string'], [\"onlyPostsNewerThan\", 'string']],\n \"scrapeInstagramProfile\": [[\"profileUrl\", 'string']],\n \"scrapeInstagramReels\": [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']],\n \"scrapeLinkedInCompany\": [[\"url\", 'string']],\n \"scrapeLinkedInProfile\": [[\"url\", 'string']],\n \"scrapeMetaThreadsProfile\": [[\"profileUrl\", 'string']],\n \"scrapeUrl\": [[\"url\", 'string']],\n \"scrapeXPost\": [[\"url\", 'string']],\n \"scrapeXProfile\": [[\"url\", 'string']],\n \"searchGoogle\": [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchGoogleImages\": [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchGoogleNews\": [[\"text\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchGoogleTrends\": [[\"text\", 'string'], [\"hl\", 'string'], [\"geo\", 'string'], [\"data_type\", [\"TIMESERIES\", \"GEO_MAP\", \"GEO_MAP_0\", \"RELATED_TOPICS\", \"RELATED_QUERIES\"]], [\"cat\", 'string'], [\"date\", 'string'], [\"ts\", 'string']],\n \"searchPerplexity\": [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchXPosts\": [[\"query\", 'string'], [\"scope\", [\"recent\", \"all\"]], [\"options\", 'object']],\n \"searchYoutube\": [[\"query\", 'string'], [\"limitPages\", 'string'], [\"filter\", 'string'], [\"filterType\", 'string']],\n \"searchYoutubeTrends\": [[\"bp\", [\"now\", \"music\", \"gaming\", \"films\"]], [\"hl\", 'string'], [\"gl\", 'string']],\n \"sendEmail\": [[\"subject\", 'string'], [\"body\", 'string'], [\"connectionId\", 'string']],\n \"sendSMS\": [[\"body\", 'string'], [\"connectionId\", 'string']],\n \"setRunTitle\": [[\"title\", 'string']],\n \"setVariable\": [[\"value\", 'string'], [\"type\", [\"imageUrl\", \"videoUrl\", \"fileUrl\", \"plaintext\", \"textArray\", \"imageUrlArray\", \"videoUrlArray\"]]],\n \"telegramSendAudio\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"audioUrl\", 'string'], [\"mode\", [\"audio\", \"voice\"]]],\n \"telegramSendFile\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"fileUrl\", 'string']],\n \"telegramSendImage\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"imageUrl\", 'string']],\n \"telegramSendMessage\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"text\", 'string']],\n \"telegramSendVideo\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"videoUrl\", 'string']],\n \"telegramSetTyping\": [[\"botToken\", 'string'], [\"chatId\", 'string']],\n \"textToSpeech\": [[\"text\", 'string']],\n \"transcribeAudio\": [[\"audioUrl\", 'string'], [\"prompt\", 'string']],\n \"trimMedia\": [[\"inputUrl\", 'string']],\n \"updateGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"eventId\", 'string']],\n \"updateGoogleDoc\": [[\"documentId\", 'string'], [\"connectionId\", 'string'], [\"text\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]], [\"operationType\", [\"addToTop\", \"addToBottom\", \"overwrite\"]]],\n \"updateGoogleSheet\": [[\"text\", 'string'], [\"connectionId\", 'string'], [\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"operationType\", [\"addToBottom\", \"overwrite\", \"range\"]]],\n \"uploadDataSourceDocument\": [[\"dataSourceId\", 'string'], [\"file\", 'string'], [\"fileName\", 'string']],\n \"upscaleImage\": [[\"imageUrl\", 'string'], [\"targetResolution\", [\"2k\", \"4k\", \"8k\"]], [\"engine\", [\"standard\", \"pro\"]]],\n \"upscaleVideo\": [[\"videoUrl\", 'string'], [\"targetResolution\", [\"720p\", \"1080p\", \"2K\", \"4K\"]], [\"engine\", [\"standard\", \"pro\", \"ultimate\", \"flashvsr\", \"seedance\", \"seedvr2\", \"runwayml/upscale-v1\"]]],\n \"videoFaceSwap\": [[\"videoUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"targetIndex\", 'number'], [\"engine\", 'string']],\n \"videoRemoveBackground\": [[\"videoUrl\", 'string'], [\"newBackground\", [\"transparent\", \"image\"]], [\"engine\", 'string']],\n \"videoRemoveWatermark\": [[\"videoUrl\", 'string'], [\"engine\", 'string']],\n \"watermarkImage\": [[\"imageUrl\", 'string'], [\"watermarkImageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']],\n \"watermarkVideo\": [[\"videoUrl\", 'string'], [\"imageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']],\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 {\n stepSnippets,\n monacoSnippets,\n type StepSnippet,\n type MonacoSnippetField,\n type MonacoSnippetFieldType,\n} from './generated/snippets.js';\n"],"mappings":"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","names":["MindStudioAgent"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/http.ts","../src/rate-limit.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';\nimport type { RateLimiter } from './rate-limit.js';\n\nexport interface HttpClientConfig {\n baseUrl: string;\n token: string;\n rateLimiter: RateLimiter;\n maxRetries: number;\n}\n\nexport async function request<T>(\n config: HttpClientConfig,\n method: 'GET' | 'POST',\n path: string,\n body?: unknown,\n): Promise<{ data: T; headers: Headers }> {\n const url = `${config.baseUrl}/developer/v2${path}`;\n\n await config.rateLimiter.acquire();\n\n try {\n return await requestWithRetry<T>(config, method, url, body, 0);\n } finally {\n config.rateLimiter.release();\n }\n}\n\nasync function requestWithRetry<T>(\n config: HttpClientConfig,\n method: string,\n url: string,\n body: unknown,\n attempt: number,\n): Promise<{ data: T; headers: Headers }> {\n const res = await fetch(url, {\n method,\n headers: {\n Authorization: `Bearer ${config.token}`,\n 'Content-Type': 'application/json',\n 'User-Agent': '@mindstudio-ai/agent',\n },\n body: body != null ? JSON.stringify(body) : undefined,\n });\n\n // Update rate limiter with latest server-reported limits\n config.rateLimiter.updateFromHeaders(res.headers);\n\n if (res.status === 429 && attempt < config.maxRetries) {\n const retryAfter = res.headers.get('retry-after');\n const waitMs = retryAfter ? parseFloat(retryAfter) * 1000 : 1000;\n await sleep(waitMs);\n return requestWithRetry<T>(config, method, url, body, attempt + 1);\n }\n\n if (!res.ok) {\n const errorBody = await res.json().catch(() => ({}));\n throw new MindStudioError(\n (errorBody as Record<string, string>).message ||\n `${res.status} ${res.statusText}`,\n (errorBody as Record<string, string>).code || 'api_error',\n res.status,\n errorBody,\n );\n }\n\n const data = (await res.json()) as T;\n return { data, headers: res.headers };\n}\n\nfunction sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","import { MindStudioError } from './errors.js';\n\nexport type AuthType = 'internal' | 'apiKey';\n\nconst DEFAULTS: Record<AuthType, { concurrency: number; callCap: number }> = {\n internal: { concurrency: 10, callCap: 500 },\n apiKey: { concurrency: 20, callCap: Infinity },\n};\n\nexport class RateLimiter {\n private inflight = 0;\n private concurrencyLimit: number;\n private callCount = 0;\n private callCap: number;\n private queue: Array<() => void> = [];\n\n constructor(readonly authType: AuthType) {\n this.concurrencyLimit = DEFAULTS[authType].concurrency;\n this.callCap = DEFAULTS[authType].callCap;\n }\n\n /** Acquire a slot. Resolves when a concurrent slot is available. */\n async acquire(): Promise<void> {\n if (this.callCount >= this.callCap) {\n throw new MindStudioError(\n `Call cap reached (${this.callCap} calls). ` +\n 'Internal tokens are limited to 500 calls per execution.',\n 'call_cap_exceeded',\n 429,\n );\n }\n\n if (this.inflight < this.concurrencyLimit) {\n this.inflight++;\n this.callCount++;\n return;\n }\n\n return new Promise<void>((resolve) => {\n this.queue.push(() => {\n this.inflight++;\n this.callCount++;\n resolve();\n });\n });\n }\n\n /** Release a slot and let the next queued request proceed. */\n release(): void {\n this.inflight--;\n const next = this.queue.shift();\n if (next) next();\n }\n\n /** Update limits from response headers. */\n updateFromHeaders(headers: Headers): void {\n const concurrency = headers.get('x-ratelimit-concurrency-limit');\n if (concurrency) {\n this.concurrencyLimit = parseInt(concurrency, 10);\n }\n const limit = headers.get('x-ratelimit-limit');\n if (limit && this.authType === 'internal') {\n this.callCap = parseInt(limit, 10);\n }\n }\n\n /** Read current rate limit state from response headers. */\n static parseHeaders(headers: Headers): {\n remaining: number | undefined;\n concurrencyRemaining: number | undefined;\n } {\n const remaining = headers.get('x-ratelimit-remaining');\n const concurrencyRemaining = headers.get(\n 'x-ratelimit-concurrency-remaining',\n );\n return {\n remaining: remaining != null ? parseInt(remaining, 10) : undefined,\n concurrencyRemaining:\n concurrencyRemaining != null\n ? parseInt(concurrencyRemaining, 10)\n : undefined,\n };\n }\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-02-28T19:35:36.395Z\n\n\nimport type {\n ActiveCampaignAddNoteStepInput,\n ActiveCampaignCreateContactStepInput,\n AddSubtitlesToVideoStepInput,\n AirtableCreateUpdateRecordStepInput,\n AirtableDeleteRecordStepInput,\n AirtableGetRecordStepInput,\n AirtableGetTableRecordsStepInput,\n AnalyzeImageStepInput,\n AnalyzeVideoStepInput,\n CaptureThumbnailStepInput,\n CodaCreateUpdatePageStepInput,\n CodaCreateUpdateRowStepInput,\n CodaFindRowStepInput,\n CodaGetPageStepInput,\n CodaGetTableRowsStepInput,\n ConvertPdfToImagesStepInput,\n CreateDataSourceStepInput,\n CreateGoogleCalendarEventStepInput,\n CreateGoogleDocStepInput,\n CreateGoogleSheetStepInput,\n DeleteDataSourceStepInput,\n DeleteDataSourceDocumentStepInput,\n DeleteGoogleCalendarEventStepInput,\n DetectPIIStepInput,\n DownloadVideoStepInput,\n EnhanceImageGenerationPromptStepInput,\n EnhanceVideoGenerationPromptStepInput,\n EnrichPersonStepInput,\n ExtractAudioFromVideoStepInput,\n ExtractTextStepInput,\n FetchDataSourceDocumentStepInput,\n FetchGoogleDocStepInput,\n FetchGoogleSheetStepInput,\n FetchSlackChannelHistoryStepInput,\n FetchYoutubeCaptionsStepInput,\n FetchYoutubeChannelStepInput,\n FetchYoutubeCommentsStepInput,\n FetchYoutubeVideoStepInput,\n GenerateChartStepInput,\n GenerateImageStepInput,\n GenerateLipsyncStepInput,\n GenerateMusicStepInput,\n GeneratePdfStepInput,\n GenerateStaticVideoFromImageStepInput,\n GenerateVideoStepInput,\n 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 ListDataSourcesStepInput,\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 UploadDataSourceDocumentStepInput,\n UpscaleImageStepInput,\n UpscaleVideoStepInput,\n UserMessageStepInput,\n VideoFaceSwapStepInput,\n VideoRemoveBackgroundStepInput,\n VideoRemoveWatermarkStepInput,\n WatermarkImageStepInput,\n WatermarkVideoStepInput,\n ActiveCampaignAddNoteStepOutput,\n ActiveCampaignCreateContactStepOutput,\n AddSubtitlesToVideoStepOutput,\n AirtableCreateUpdateRecordStepOutput,\n AirtableDeleteRecordStepOutput,\n AirtableGetRecordStepOutput,\n AirtableGetTableRecordsStepOutput,\n AnalyzeImageStepOutput,\n AnalyzeVideoStepOutput,\n CaptureThumbnailStepOutput,\n CodaCreateUpdatePageStepOutput,\n CodaCreateUpdateRowStepOutput,\n CodaFindRowStepOutput,\n CodaGetPageStepOutput,\n CodaGetTableRowsStepOutput,\n ConvertPdfToImagesStepOutput,\n CreateDataSourceStepOutput,\n CreateGoogleCalendarEventStepOutput,\n CreateGoogleDocStepOutput,\n CreateGoogleSheetStepOutput,\n DeleteDataSourceStepOutput,\n DeleteDataSourceDocumentStepOutput,\n DeleteGoogleCalendarEventStepOutput,\n DetectPIIStepOutput,\n DownloadVideoStepOutput,\n EnhanceImageGenerationPromptStepOutput,\n EnhanceVideoGenerationPromptStepOutput,\n EnrichPersonStepOutput,\n ExtractAudioFromVideoStepOutput,\n ExtractTextStepOutput,\n FetchDataSourceDocumentStepOutput,\n FetchGoogleDocStepOutput,\n FetchGoogleSheetStepOutput,\n FetchSlackChannelHistoryStepOutput,\n FetchYoutubeCaptionsStepOutput,\n FetchYoutubeChannelStepOutput,\n FetchYoutubeCommentsStepOutput,\n FetchYoutubeVideoStepOutput,\n GenerateChartStepOutput,\n GenerateImageStepOutput,\n GenerateLipsyncStepOutput,\n GenerateMusicStepOutput,\n GeneratePdfStepOutput,\n GenerateStaticVideoFromImageStepOutput,\n GenerateVideoStepOutput,\n 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 ListDataSourcesStepOutput,\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 UploadDataSourceDocumentStepOutput,\n UpscaleImageStepOutput,\n UpscaleVideoStepOutput,\n UserMessageStepOutput,\n VideoFaceSwapStepOutput,\n VideoRemoveBackgroundStepOutput,\n VideoRemoveWatermarkStepOutput,\n WatermarkImageStepOutput,\n WatermarkVideoStepOutput,\n} from \"./types.js\";\n\nimport type { StepExecutionOptions, StepExecutionResult } from \"../types.js\";\n\nexport interface StepMethods {\n /**\n * Add a note to an existing contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - The contact must already exist — use the contact ID from a previous create or search step.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignAddNote({\n * contactId: ``,\n * note: ``,\n * connectionId: ``,\n * });\n * ```\n */\n activeCampaignAddNote(step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignAddNoteStepOutput>>;\n\n /**\n * Create or sync a contact in ActiveCampaign.\n *\n * @remarks\n * - Requires an ActiveCampaign OAuth connection (connectionId).\n * - If a contact with the email already exists, it may be updated depending on ActiveCampaign settings.\n * - Custom fields are passed as a key-value map where keys are field IDs.\n *\n * @example\n * ```typescript\n * const result = await agent.activeCampaignCreateContact({\n * email: ``,\n * firstName: ``,\n * lastName: ``,\n * phone: ``,\n * accountId: ``,\n * customFields: {},\n * connectionId: ``,\n * });\n * ```\n */\n activeCampaignCreateContact(step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ActiveCampaignCreateContactStepOutput>>;\n\n /**\n * Automatically add subtitles to a video\n *\n * @remarks\n * - Can control style of text and animation\n *\n * @example\n * ```typescript\n * const result = await agent.addSubtitlesToVideo({\n * videoUrl: ``,\n * language: ``,\n * fontName: ``,\n * fontSize: 0,\n * fontWeight: \"normal\",\n * fontColor: \"white\",\n * highlightColor: \"white\",\n * strokeWidth: 0,\n * strokeColor: \"black\",\n * backgroundColor: \"black\",\n * backgroundOpacity: 0,\n * position: \"top\",\n * yOffset: 0,\n * wordsPerSubtitle: 0,\n * enableAnimation: false,\n * });\n * ```\n */\n addSubtitlesToVideo(step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AddSubtitlesToVideoStepOutput>>;\n\n /**\n * Create a new record or update an existing record in an Airtable table.\n *\n * @remarks\n * - If recordId is provided, updates that record. Otherwise, creates a new one.\n * - When updating with updateMode \"onlySpecified\", unspecified fields are left as-is. With \"all\", unspecified fields are cleared.\n * - Array fields (e.g. multipleAttachments) accept arrays of values.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableCreateUpdateRecord({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * fields: ``,\n * recordData: {},\n * });\n * ```\n */\n airtableCreateUpdateRecord(step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableCreateUpdateRecordStepOutput>>;\n\n /**\n * Delete a record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Silently succeeds if the record does not exist.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableDeleteRecord({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableDeleteRecord(step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableDeleteRecordStepOutput>>;\n\n /**\n * Fetch a single record from an Airtable table by its record ID.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - If the record is not found, returns a string message instead of a record object.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetRecord({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * recordId: ``,\n * });\n * ```\n */\n airtableGetRecord(step: AirtableGetRecordStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetRecordStepOutput>>;\n\n /**\n * Fetch multiple records from an Airtable table with optional pagination.\n *\n * @remarks\n * - Requires an active Airtable OAuth connection (connectionId).\n * - Default limit is 100 records. Maximum is 1000.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed records.\n *\n * @example\n * ```typescript\n * const result = await agent.airtableGetTableRecords({\n * connectionId: ``,\n * baseId: ``,\n * tableId: ``,\n * });\n * ```\n */\n airtableGetTableRecords(step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AirtableGetTableRecordsStepOutput>>;\n\n /**\n * Analyze an image using a vision model based on a text prompt.\n *\n * @remarks\n * - Uses the configured vision model to generate a text analysis of the image.\n * - The prompt should describe what to look for or extract from the image.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeImage({\n * prompt: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n analyzeImage(step: AnalyzeImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeImageStepOutput>>;\n\n /**\n * Analyze a video using a video analysis model based on a text prompt.\n *\n * @remarks\n * - Uses the configured video analysis model to generate a text analysis of the video.\n * - The prompt should describe what to look for or extract from the video.\n *\n * @example\n * ```typescript\n * const result = await agent.analyzeVideo({\n * prompt: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n analyzeVideo(step: AnalyzeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<AnalyzeVideoStepOutput>>;\n\n /**\n * Capture a thumbnail from a video at a specified timestamp\n *\n * @example\n * ```typescript\n * const result = await agent.captureThumbnail({\n * videoUrl: ``,\n * at: ``,\n * });\n * ```\n */\n captureThumbnail(step: CaptureThumbnailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CaptureThumbnailStepOutput>>;\n\n /**\n * Create a new page or update an existing page in a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If pageData.pageId is provided, updates that page. Otherwise, creates a new one.\n * - Page content is provided as markdown and converted to Coda's canvas format.\n * - When updating, insertionMode controls how content is applied (default: 'append').\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdatePage({\n * connectionId: ``,\n * pageData: {},\n * });\n * ```\n */\n codaCreateUpdatePage(step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdatePageStepOutput>>;\n\n /**\n * Create a new row or update an existing row in a Coda table.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - If rowId is provided, updates that row. Otherwise, creates a new one.\n * - Row data keys are column IDs. Empty values are excluded.\n *\n * @example\n * ```typescript\n * const result = await agent.codaCreateUpdateRow({\n * connectionId: ``,\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaCreateUpdateRow(step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaCreateUpdateRowStepOutput>>;\n\n /**\n * Search for a row in a Coda table by matching column values.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Returns the first row matching all specified column values, or null if no match.\n * - Search criteria in rowData are ANDed together.\n *\n * @example\n * ```typescript\n * const result = await agent.codaFindRow({\n * connectionId: ``,\n * docId: ``,\n * tableId: ``,\n * rowData: {},\n * });\n * ```\n */\n codaFindRow(step: CodaFindRowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaFindRowStepOutput>>;\n\n /**\n * Export and read the contents of a page from a Coda document.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Page export is asynchronous on Coda's side — there may be a brief delay while it processes.\n * - If a page was just created in a prior step, there is an automatic 20-second retry if the first export attempt fails.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetPage({\n * connectionId: ``,\n * docId: ``,\n * pageId: ``,\n * });\n * ```\n */\n codaGetPage(step: CodaGetPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetPageStepOutput>>;\n\n /**\n * Fetch rows from a Coda table with optional pagination.\n *\n * @remarks\n * - Requires a Coda OAuth connection (connectionId).\n * - Default limit is 10000 rows. Rows are fetched in pages of 500.\n * - When outputFormat is 'csv', the variable receives CSV text. The direct execution output always returns parsed rows.\n *\n * @example\n * ```typescript\n * const result = await agent.codaGetTableRows({\n * connectionId: ``,\n * docId: ``,\n * tableId: ``,\n * });\n * ```\n */\n codaGetTableRows(step: CodaGetTableRowsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CodaGetTableRowsStepOutput>>;\n\n /**\n * Convert each page of a PDF document into a PNG image.\n *\n * @remarks\n * - Each page is converted to a separate PNG and re-hosted on the CDN.\n * - Returns an array of image URLs, one per page.\n *\n * @example\n * ```typescript\n * const result = await agent.convertPdfToImages({\n * pdfUrl: ``,\n * });\n * ```\n */\n convertPdfToImages(step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ConvertPdfToImagesStepOutput>>;\n\n /**\n * Create a new empty vector data source for the current app.\n *\n * @remarks\n * - Creates a new data source (vector database) associated with the current app version.\n * - The data source is created empty — use the \"Upload Data Source Document\" block to add documents.\n * - Returns the new data source ID which can be used in subsequent blocks.\n *\n * @example\n * ```typescript\n * const result = await agent.createDataSource({\n * name: ``,\n * });\n * ```\n */\n createDataSource(step: CreateDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateDataSourceStepOutput>>;\n\n /**\n * Create a new event on a Google Calendar.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Date/time values must be ISO 8601 format (e.g. \"2025-07-02T10:00:00-07:00\").\n * - Attendees are specified as one email address per line in a single string.\n * - Set addMeetLink to true to automatically attach a Google Meet video call.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleCalendarEvent({\n * connectionId: ``,\n * summary: ``,\n * startDateTime: ``,\n * endDateTime: ``,\n * });\n * ```\n */\n createGoogleCalendarEvent(step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleCalendarEventStepOutput>>;\n\n /**\n * Create a new Google Document and optionally populate it with content.\n *\n * @remarks\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleDoc({\n * title: ``,\n * text: ``,\n * connectionId: ``,\n * textType: \"plain\",\n * });\n * ```\n */\n createGoogleDoc(step: CreateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleDocStepOutput>>;\n\n /**\n * Create a new Google Spreadsheet and populate it with CSV data.\n *\n * @example\n * ```typescript\n * const result = await agent.createGoogleSheet({\n * title: ``,\n * text: ``,\n * connectionId: ``,\n * });\n * ```\n */\n createGoogleSheet(step: CreateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<CreateGoogleSheetStepOutput>>;\n\n /**\n * Delete a vector data source from the current app.\n *\n * @remarks\n * - Soft-deletes a data source (vector database) by marking it as deleted.\n * - The Milvus partition is cleaned up asynchronously by a background cron job.\n * - The data source must belong to the current app version.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSource({\n * dataSourceId: ``,\n * });\n * ```\n */\n deleteDataSource(step: DeleteDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceStepOutput>>;\n\n /**\n * Delete a single document from a data source.\n *\n * @remarks\n * - Soft-deletes a document by marking it as deleted.\n * - Requires both the data source ID and document ID.\n * - After deletion, reloads vectors into Milvus so the data source reflects the change immediately.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n deleteDataSourceDocument(step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteDataSourceDocumentStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.deleteGoogleCalendarEvent({\n * connectionId: ``,\n * eventId: ``,\n * });\n * ```\n */\n deleteGoogleCalendarEvent(step: DeleteGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DeleteGoogleCalendarEventStepOutput>>;\n\n /**\n * Scan text for personally identifiable information using Microsoft Presidio.\n *\n * @remarks\n * - In workflow mode, transitions to detectedStepId if PII is found, notDetectedStepId otherwise.\n * - In direct execution, returns the detection results without transitioning.\n * - If entities is empty, returns immediately with no detections.\n *\n * @example\n * ```typescript\n * const result = await agent.detectPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n detectPII(step: DetectPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DetectPIIStepOutput>>;\n\n /**\n * Download a video file\n *\n * @remarks\n * - Works with YouTube, TikTok, etc., by using ytdlp behind the scenes\n * - Can save as mp4 or mp3\n *\n * @example\n * ```typescript\n * const result = await agent.downloadVideo({\n * videoUrl: ``,\n * format: \"mp4\",\n * });\n * ```\n */\n downloadVideo(step: DownloadVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<DownloadVideoStepOutput>>;\n\n /**\n * Generate or enhance an image generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, lighting, colors, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceImageGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceImageGenerationPrompt(step: EnhanceImageGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceImageGenerationPromptStepOutput>>;\n\n /**\n * Generate or enhance a video generation prompt using a language model. Optionally generates a negative prompt.\n *\n * @remarks\n * - Rewrites the user's prompt with added detail about style, camera movement, lighting, and composition.\n * - Also useful for initial generation, it doesn't always need to be enhancing an existing prompt\n * - When includeNegativePrompt is true, a second model call generates a negative prompt.\n *\n * @example\n * ```typescript\n * const result = await agent.enhanceVideoGenerationPrompt({\n * initialPrompt: ``,\n * includeNegativePrompt: false,\n * systemPrompt: ``,\n * });\n * ```\n */\n enhanceVideoGenerationPrompt(step: EnhanceVideoGenerationPromptStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnhanceVideoGenerationPromptStepOutput>>;\n\n /**\n * Look up professional information about a person using Apollo.io. Search by ID, name, LinkedIn URL, email, or domain.\n *\n * @remarks\n * - At least one search parameter must be provided.\n * - Returns enriched data from Apollo including contact details, employment info, and social profiles.\n *\n * @example\n * ```typescript\n * const result = await agent.enrichPerson({\n * params: {},\n * });\n * ```\n */\n enrichPerson(step: EnrichPersonStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<EnrichPersonStepOutput>>;\n\n /**\n * Extract audio MP3 from a video file\n *\n * @example\n * ```typescript\n * const result = await agent.extractAudioFromVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n extractAudioFromVideo(step: ExtractAudioFromVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractAudioFromVideoStepOutput>>;\n\n /**\n * Download a file from a URL and extract its text content. Supports PDFs, plain text files, and other document formats.\n *\n * @remarks\n * - Best suited for PDFs and raw text/document files. For web pages, use the scrapeUrl step instead.\n * - Accepts a single URL, a comma-separated list of URLs, or a JSON array of URLs.\n * - Files are rehosted on the MindStudio CDN before extraction.\n * - Maximum file size is 50MB per URL.\n *\n * @example\n * ```typescript\n * const result = await agent.extractText({\n * url: ``,\n * });\n * ```\n */\n extractText(step: ExtractTextStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ExtractTextStepOutput>>;\n\n /**\n * Fetch the full extracted text contents of a document in a data source.\n *\n * @remarks\n * - Loads a document by ID and returns its full extracted text content.\n * - The document must have been successfully processed (status \"done\").\n * - Also returns document metadata (name, summary, word count).\n *\n * @example\n * ```typescript\n * const result = await agent.fetchDataSourceDocument({\n * dataSourceId: ``,\n * documentId: ``,\n * });\n * ```\n */\n fetchDataSourceDocument(step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchDataSourceDocumentStepOutput>>;\n\n /**\n * Fetch the contents of an existing Google Document.\n *\n * @remarks\n * - exportType controls the output format: \"html\" for HTML markup, \"markdown\" for Markdown, \"json\" for structured JSON, \"plain\" for plain text.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleDoc({\n * documentId: ``,\n * connectionId: ``,\n * exportType: \"html\",\n * });\n * ```\n */\n fetchGoogleDoc(step: FetchGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleDocStepOutput>>;\n\n /**\n * Fetch contents of a Google Spreadsheet range.\n *\n * @remarks\n * - range uses A1 notation (e.g. \"Sheet1!A1:C10\"). Omit to fetch the entire first sheet.\n * - exportType controls the output format: \"csv\" for comma-separated values, \"json\" for structured JSON.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchGoogleSheet({\n * spreadsheetId: ``,\n * range: ``,\n * connectionId: ``,\n * exportType: \"csv\",\n * });\n * ```\n */\n fetchGoogleSheet(step: FetchGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchGoogleSheetStepOutput>>;\n\n /**\n * Fetch recent message history from a Slack channel.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n *\n * @example\n * ```typescript\n * const result = await agent.fetchSlackChannelHistory({\n * connectionId: ``,\n * channelId: ``,\n * });\n * ```\n */\n fetchSlackChannelHistory(step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchSlackChannelHistoryStepOutput>>;\n\n /**\n * Retrieve the captions/transcript for a YouTube video.\n *\n * @remarks\n * - Supports multiple languages via the language parameter.\n * - \"text\" export produces timestamped plain text; \"json\" export produces structured transcript data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeCaptions({\n * videoUrl: ``,\n * exportType: \"text\",\n * language: ``,\n * });\n * ```\n */\n fetchYoutubeCaptions(step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCaptionsStepOutput>>;\n\n /**\n * Retrieve metadata and recent videos for a YouTube channel.\n *\n * @remarks\n * - Accepts a YouTube channel URL (e.g. https://www.youtube.com/@ChannelName or /channel/ID).\n * - Returns channel info and video listings as a JSON object.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeChannel({\n * channelUrl: ``,\n * });\n * ```\n */\n fetchYoutubeChannel(step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeChannelStepOutput>>;\n\n /**\n * Retrieve comments for a YouTube video.\n *\n * @remarks\n * - Paginates through comments (up to 5 pages).\n * - \"text\" export produces markdown-formatted text; \"json\" export produces structured comment data.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeComments({\n * videoUrl: ``,\n * exportType: \"text\",\n * limitPages: ``,\n * });\n * ```\n */\n fetchYoutubeComments(step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeCommentsStepOutput>>;\n\n /**\n * Retrieve metadata for a YouTube video (title, description, stats, channel info).\n *\n * @remarks\n * - Returns video metadata, channel info, and engagement stats.\n * - Video format data is excluded from the response.\n *\n * @example\n * ```typescript\n * const result = await agent.fetchYoutubeVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n fetchYoutubeVideo(step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<FetchYoutubeVideoStepOutput>>;\n\n /**\n * Create a chart image using QuickChart (Chart.js) and return the URL.\n *\n * @remarks\n * - The data field must be a Chart.js-compatible JSON object serialized as a string.\n * - Supported chart types: bar, line, pie.\n *\n * @example\n * ```typescript\n * const result = await agent.generateChart({\n * chart: {},\n * });\n * ```\n */\n generateChart(step: GenerateChartStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateChartStepOutput>>;\n\n /**\n * Generate an image from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Images are automatically hosted on a CDN.\n * - In foreground mode, the image is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple images are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateImage({\n * prompt: ``,\n * });\n * ```\n */\n generateImage(step: GenerateImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateImageStepOutput>>;\n\n /**\n * Generate a lip sync video from provided audio and image.\n *\n * @remarks\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateLipsync({});\n * ```\n */\n generateLipsync(step: GenerateLipsyncStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateLipsyncStepOutput>>;\n\n /**\n * Generate an audio file from provided instructions (text) using a music model.\n *\n * @remarks\n * - The text field contains the instructions (prompt) for the music generation.\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.generateMusic({\n * text: ``,\n * });\n * ```\n */\n generateMusic(step: GenerateMusicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateMusicStepOutput>>;\n\n /**\n * Generate an HTML asset and export it as a webpage, PDF, or image\n *\n * @remarks\n * - Agents can generate HTML documents and export as webpage, PDFs, images, or videos. They do this by using the \"generatePdf\" block, which defines an HTML page with variables, and then the generation process renders the page to create the output and save its URL at the specified variable.\n * - The template for the HTML page is generated by a separate process, and it can only use variables that have already been defined in the workflow at the time of its execution. It has full access to handlebars to render the HTML template, including a handlebars helper to render a markdown variable string as HTML (which can be useful for creating templates that render long strings). The template can also create its own simple JavaScript to do things like format dates and strings.\n * - If PDF or composited image generation are part of the workflow, assistant adds the block and leaves the \"source\" empty. In a separate step, assistant generates a detailed request for the developer who will write the HTML.\n * - Can also auto-generate HTML from a prompt (like a generate text block to generate HTML). In these cases, create a prompt with variables in the dynamicPrompt variable describing, in detail, the document to generate\n * - Can either display output directly to user (foreground mode) or save the URL of the asset to a variable (background mode)\n *\n * @example\n * ```typescript\n * const result = await agent.generateAsset({\n * source: ``,\n * sourceType: \"html\",\n * outputFormat: \"pdf\",\n * pageSize: \"full\",\n * testData: {},\n * });\n * ```\n */\n generateAsset(step: GeneratePdfStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GeneratePdfStepOutput>>;\n\n /**\n * Convert a static image to an MP4\n *\n * @remarks\n * - Can use to create slides/intertitles/slates for video composition\n *\n * @example\n * ```typescript\n * const result = await agent.generateStaticVideoFromImage({\n * imageUrl: ``,\n * duration: ``,\n * });\n * ```\n */\n generateStaticVideoFromImage(step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateStaticVideoFromImageStepOutput>>;\n\n /**\n * Generate a video from a text prompt using an AI model.\n *\n * @remarks\n * - Prompts should be descriptive but concise (roughly 3–6 sentences).\n * - Videos are automatically hosted on a CDN.\n * - In foreground mode, the video is displayed to the user. In background mode, the URL is saved to a variable.\n * - When generateVariants is true with numVariants > 1, multiple videos are generated in parallel.\n * - In direct execution, foreground mode behaves as background, and userSelect variant behavior behaves as saveAll.\n *\n * @example\n * ```typescript\n * const result = await agent.generateVideo({\n * prompt: ``,\n * });\n * ```\n */\n generateVideo(step: GenerateVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GenerateVideoStepOutput>>;\n\n /**\n * Retrieve a specific event from a Google Calendar by event ID.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns the structured event.\n *\n * @example\n * ```typescript\n * const result = await agent.getGoogleCalendarEvent({\n * connectionId: ``,\n * eventId: ``,\n * exportType: \"json\",\n * });\n * ```\n */\n getGoogleCalendarEvent(step: GetGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetGoogleCalendarEventStepOutput>>;\n\n /**\n * Get info about a media file\n *\n * @example\n * ```typescript\n * const result = await agent.getMediaMetadata({\n * mediaUrl: ``,\n * });\n * ```\n */\n getMediaMetadata(step: GetMediaMetadataStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<GetMediaMetadataStepOutput>>;\n\n /**\n * Make an HTTP request to an external endpoint and return the response.\n *\n * @remarks\n * - Supports GET, POST, PATCH, DELETE, and PUT methods.\n * - Body can be raw JSON/text, URL-encoded form data, or multipart form data.\n *\n * @example\n * ```typescript\n * const result = await agent.httpRequest({\n * url: ``,\n * method: ``,\n * headers: {},\n * queryParams: {},\n * body: ``,\n * bodyItems: {},\n * contentType: \"none\",\n * customContentType: ``,\n * });\n * ```\n */\n httpRequest(step: HttpRequestStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HttpRequestStepOutput>>;\n\n /**\n * Create a new company or update an existing one in HubSpot. Matches by domain.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a company with the given domain already exists, it is updated. Otherwise, a new one is created.\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateCompany({\n * connectionId: ``,\n * company: {},\n * enabledProperties: [],\n * });\n * ```\n */\n hubspotCreateCompany(step: HubspotCreateCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateCompanyStepOutput>>;\n\n /**\n * Create a new contact or update an existing one in HubSpot. Matches by email address.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - If a contact with the given email already exists, it is updated. Otherwise, a new one is created.\n * - If companyDomain is provided, the contact is associated with that company (creating the company if needed).\n * - Property values are type-checked against enabledProperties before being sent to HubSpot.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotCreateContact({\n * connectionId: ``,\n * contact: {},\n * enabledProperties: [],\n * companyDomain: ``,\n * });\n * ```\n */\n hubspotCreateContact(step: HubspotCreateContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotCreateContactStepOutput>>;\n\n /**\n * Look up a HubSpot company by domain name or company ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the company is not found.\n * - When searching by domain, performs a search query then fetches the full company record.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetCompany({\n * connectionId: ``,\n * searchBy: \"domain\",\n * companyDomain: ``,\n * companyId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetCompany(step: HubspotGetCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetCompanyStepOutput>>;\n\n /**\n * Look up a HubSpot contact by email address or contact ID.\n *\n * @remarks\n * - Requires a HubSpot OAuth connection (connectionId).\n * - Returns null if the contact is not found.\n * - Use additionalProperties to request specific HubSpot properties beyond the defaults.\n *\n * @example\n * ```typescript\n * const result = await agent.hubspotGetContact({\n * connectionId: ``,\n * searchBy: \"email\",\n * contactEmail: ``,\n * contactId: ``,\n * additionalProperties: [],\n * });\n * ```\n */\n hubspotGetContact(step: HubspotGetContactStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HubspotGetContactStepOutput>>;\n\n /**\n * Look up company information by domain using Hunter.io.\n *\n * @remarks\n * - Returns company name, description, location, industry, size, technologies, and more.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns null if the company is not found.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiCompanyEnrichment({\n * domain: ``,\n * });\n * ```\n */\n hunterApiCompanyEnrichment(step: HunterApiCompanyEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiCompanyEnrichmentStepOutput>>;\n\n /**\n * Search for email addresses associated with a domain using Hunter.io.\n *\n * @remarks\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns a list of email addresses found for the domain along with organization info.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiDomainSearch({\n * domain: ``,\n * });\n * ```\n */\n hunterApiDomainSearch(step: HunterApiDomainSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiDomainSearchStepOutput>>;\n\n /**\n * Find an email address for a specific person at a domain using Hunter.io.\n *\n * @remarks\n * - Requires a first name, last name, and domain.\n * - If the domain input is a full URL, the hostname is automatically extracted.\n * - Returns the most likely email address with a confidence score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailFinder({\n * domain: ``,\n * firstName: ``,\n * lastName: ``,\n * });\n * ```\n */\n hunterApiEmailFinder(step: HunterApiEmailFinderStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailFinderStepOutput>>;\n\n /**\n * Verify whether an email address is valid and deliverable using Hunter.io.\n *\n * @remarks\n * - Checks email format, MX records, SMTP server, and mailbox deliverability.\n * - Returns a status (\"valid\", \"invalid\", \"accept_all\", \"webmail\", \"disposable\", \"unknown\") and a score.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiEmailVerification({\n * email: ``,\n * });\n * ```\n */\n hunterApiEmailVerification(step: HunterApiEmailVerificationStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiEmailVerificationStepOutput>>;\n\n /**\n * Look up professional information about a person by their email address using Hunter.io.\n *\n * @remarks\n * - Returns name, job title, social profiles, and company information.\n * - If the person is not found, returns an object with an error message instead of throwing.\n *\n * @example\n * ```typescript\n * const result = await agent.hunterApiPersonEnrichment({\n * email: ``,\n * });\n * ```\n */\n hunterApiPersonEnrichment(step: HunterApiPersonEnrichmentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<HunterApiPersonEnrichmentStepOutput>>;\n\n /**\n * Replace a face in an image with a face from another image using AI.\n *\n * @remarks\n * - Requires both a target image and a face source image.\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageFaceSwap({\n * imageUrl: ``,\n * faceImageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageFaceSwap(step: ImageFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageFaceSwapStepOutput>>;\n\n /**\n * Remove watermarks from an image using AI.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.imageRemoveWatermark({\n * imageUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n imageRemoveWatermark(step: ImageRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ImageRemoveWatermarkStepOutput>>;\n\n /**\n * Insert b-roll clips into a base video at a timecode, optionally with an xfade transition.\n *\n * @example\n * ```typescript\n * const result = await agent.insertVideoClips({\n * baseVideoUrl: ``,\n * overlayVideos: [],\n * });\n * ```\n */\n insertVideoClips(step: InsertVideoClipsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<InsertVideoClipsStepOutput>>;\n\n /**\n * List all data sources for the current app.\n *\n * @remarks\n * - Returns metadata for every data source associated with the current app version.\n * - Each entry includes the data source ID, name, description, status, and document list.\n *\n * @example\n * ```typescript\n * const result = await agent.listDataSources({});\n * ```\n */\n listDataSources(step: ListDataSourcesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListDataSourcesStepOutput>>;\n\n /**\n * List upcoming events from a Google Calendar, ordered by start time.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Only returns future events (timeMin = now).\n * - The variable receives JSON or XML-like text depending on exportType. The direct execution output always returns structured events.\n *\n * @example\n * ```typescript\n * const result = await agent.listGoogleCalendarEvents({\n * connectionId: ``,\n * limit: 0,\n * exportType: \"json\",\n * });\n * ```\n */\n listGoogleCalendarEvents(step: ListGoogleCalendarEventsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ListGoogleCalendarEventsStepOutput>>;\n\n /**\n * Use an AI model to evaluate which condition from a list is most true, given a context prompt.\n *\n * @remarks\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 * @example\n * ```typescript\n * const result = await agent.logic({\n * context: ``,\n * cases: [],\n * });\n * ```\n */\n logic(step: LogicStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<LogicStepOutput>>;\n\n /**\n * Trigger a Make.com (formerly Integromat) scenario via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your Make.com scenario.\n * - Input key-value pairs are sent as JSON in the POST body.\n * - Response format depends on the Make.com scenario configuration.\n *\n * @example\n * ```typescript\n * const result = await agent.makeDotComRunScenario({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n makeDotComRunScenario(step: MakeDotComRunScenarioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MakeDotComRunScenarioStepOutput>>;\n\n /**\n * Merge one or more clips into a single audio file.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeAudio({\n * mp3Urls: [],\n * });\n * ```\n */\n mergeAudio(step: MergeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeAudioStepOutput>>;\n\n /**\n * Merge one or more clips into a single video.\n *\n * @example\n * ```typescript\n * const result = await agent.mergeVideos({\n * videoUrls: [],\n * });\n * ```\n */\n mergeVideos(step: MergeVideosStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MergeVideosStepOutput>>;\n\n /**\n * Mix an audio track into a video\n *\n * @example\n * ```typescript\n * const result = await agent.mixAudioIntoVideo({\n * videoUrl: ``,\n * audioUrl: ``,\n * options: {},\n * });\n * ```\n */\n mixAudioIntoVideo(step: MixAudioIntoVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MixAudioIntoVideoStepOutput>>;\n\n /**\n * Mute a video file\n *\n * @example\n * ```typescript\n * const result = await agent.muteVideo({\n * videoUrl: ``,\n * });\n * ```\n */\n muteVideo(step: MuteVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<MuteVideoStepOutput>>;\n\n /**\n * Trigger an n8n workflow node via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in your n8n workflow.\n * - Supports GET and POST methods with optional Basic authentication.\n * - For GET requests, input values are sent as query parameters. For POST, they are sent as JSON body.\n *\n * @example\n * ```typescript\n * const result = await agent.n8nRunNode({\n * method: ``,\n * authentication: \"none\",\n * user: ``,\n * password: ``,\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n n8nRunNode(step: N8nRunNodeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<N8nRunNodeStepOutput>>;\n\n /**\n * Create a new page in Notion as a child of an existing page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks (headings, paragraphs, lists, code, quotes).\n * - The page is created as a child of the specified parent page (pageId).\n *\n * @example\n * ```typescript\n * const result = await agent.notionCreatePage({\n * pageId: ``,\n * content: ``,\n * title: ``,\n * connectionId: ``,\n * });\n * ```\n */\n notionCreatePage(step: NotionCreatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionCreatePageStepOutput>>;\n\n /**\n * Update the content of an existing Notion page.\n *\n * @remarks\n * - Requires a Notion OAuth connection (connectionId).\n * - Content is provided as markdown and converted to Notion blocks.\n * - \"append\" mode adds content to the end of the page. \"overwrite\" mode deletes all existing blocks first.\n *\n * @example\n * ```typescript\n * const result = await agent.notionUpdatePage({\n * pageId: ``,\n * content: ``,\n * mode: \"append\",\n * connectionId: ``,\n * });\n * ```\n */\n notionUpdatePage(step: NotionUpdatePageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<NotionUpdatePageStepOutput>>;\n\n /**\n * Search for people matching specific criteria using Apollo.io. Supports natural language queries and advanced filters.\n *\n * @remarks\n * - Can use a natural language \"smartQuery\" which is converted to Apollo search parameters by an AI model.\n * - Advanced params can override or supplement the smart query results.\n * - Optionally enriches returned people and/or their organizations for additional detail.\n * - Results are paginated. Use limit and page to control the result window.\n *\n * @example\n * ```typescript\n * const result = await agent.peopleSearch({\n * smartQuery: ``,\n * enrichPeople: false,\n * enrichOrganizations: false,\n * limit: ``,\n * page: ``,\n * params: {},\n * });\n * ```\n */\n peopleSearch(step: PeopleSearchStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PeopleSearchStepOutput>>;\n\n /**\n * Create a post on LinkedIn from the connected account.\n *\n * @remarks\n * - Requires a LinkedIn OAuth connection (connectionId).\n * - Supports text posts, image posts, and video posts.\n * - Visibility controls who can see the post.\n *\n * @example\n * ```typescript\n * const result = await agent.postToLinkedIn({\n * message: ``,\n * visibility: \"PUBLIC\",\n * connectionId: ``,\n * });\n * ```\n */\n postToLinkedIn(step: PostToLinkedInStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToLinkedInStepOutput>>;\n\n /**\n * Send a message to a Slack channel via a connected bot.\n *\n * @remarks\n * - The user is responsible for connecting their Slack workspace and selecting the channel\n * - Supports both simple text messages and slack blocks messages\n * - Text messages can use limited markdown (slack-only fomatting—e.g., headers are just rendered as bold)\n *\n * @example\n * ```typescript\n * const result = await agent.postToSlackChannel({\n * channelId: ``,\n * messageType: \"string\",\n * message: ``,\n * connectionId: ``,\n * });\n * ```\n */\n postToSlackChannel(step: PostToSlackChannelStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToSlackChannelStepOutput>>;\n\n /**\n * Create a post on X (Twitter) from the connected account.\n *\n * @remarks\n * - Requires an X OAuth connection (connectionId).\n * - Posts are plain text. Maximum 280 characters.\n *\n * @example\n * ```typescript\n * const result = await agent.postToX({\n * text: ``,\n * connectionId: ``,\n * });\n * ```\n */\n postToX(step: PostToXStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToXStepOutput>>;\n\n /**\n * Send data to a Zapier Zap via webhook and return the response.\n *\n * @remarks\n * - The webhook URL must be configured in the Zapier Zap settings\n * - Input keys and values are sent as the JSON body of the POST request\n * - The webhook response (JSON or plain text) is returned as the output\n *\n * @example\n * ```typescript\n * const result = await agent.postToZapier({\n * webhookUrl: ``,\n * input: {},\n * });\n * ```\n */\n postToZapier(step: PostToZapierStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<PostToZapierStepOutput>>;\n\n /**\n * Search a vector data source (RAG) and return relevant document chunks.\n *\n * @remarks\n * - Queries a vectorized data source and returns the most relevant chunks.\n * - Useful for retrieval-augmented generation (RAG) workflows.\n *\n * @example\n * ```typescript\n * const result = await agent.queryDataSource({\n * dataSourceId: ``,\n * query: ``,\n * maxResults: 0,\n * });\n * ```\n */\n queryDataSource(step: QueryDataSourceStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryDataSourceStepOutput>>;\n\n /**\n * Execute a SQL query against an external database connected to the workspace.\n *\n * @remarks\n * - Requires a database connection configured in the workspace.\n * - Supports PostgreSQL (including Supabase), MySQL, and MSSQL.\n * - Results can be returned as JSON or CSV.\n *\n * @example\n * ```typescript\n * const result = await agent.queryExternalDatabase({\n * connectionId: ``,\n * query: ``,\n * outputFormat: \"json\",\n * });\n * ```\n */\n queryExternalDatabase(step: QueryExternalDatabaseStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<QueryExternalDatabaseStepOutput>>;\n\n /**\n * Replace personally identifiable information in text with placeholders using Microsoft Presidio.\n *\n * @remarks\n * - PII is replaced with entity type placeholders (e.g. \"Call me at <PHONE_NUMBER>\").\n * - If entities is empty, returns empty text immediately without processing.\n *\n * @example\n * ```typescript\n * const result = await agent.redactPII({\n * input: ``,\n * language: ``,\n * entities: [],\n * });\n * ```\n */\n redactPII(step: RedactPIIStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RedactPIIStepOutput>>;\n\n /**\n * Remove the background from an image using AI, producing a transparent PNG.\n *\n * @remarks\n * - Uses the Bria background removal model via fal.ai.\n * - Output is re-hosted on the CDN as a PNG with transparency.\n *\n * @example\n * ```typescript\n * const result = await agent.removeBackgroundFromImage({\n * imageUrl: ``,\n * });\n * ```\n */\n removeBackgroundFromImage(step: RemoveBackgroundFromImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RemoveBackgroundFromImageStepOutput>>;\n\n /**\n * Resize a video file\n *\n * @example\n * ```typescript\n * const result = await agent.resizeVideo({\n * videoUrl: ``,\n * mode: \"fit\",\n * });\n * ```\n */\n resizeVideo(step: ResizeVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ResizeVideoStepOutput>>;\n\n /**\n * Run a packaged workflow (\"custom block\")\n *\n * @remarks\n * - From the user's perspective, packaged workflows are just ordinary blocks. Behind the scenes, they operate like packages/libraries in a programming language, letting the user execute custom functionality.\n * - Some of these packaged workflows are available as part of MindStudio's \"Standard Library\" and available to every user.\n * - Available packaged workflows are documented here as individual blocks, but the runPackagedWorkflow block is how they need to be wrapped in order to be executed correctly.\n *\n * @example\n * ```typescript\n * const result = await agent.runPackagedWorkflow({\n * appId: ``,\n * workflowId: ``,\n * inputVariables: {},\n * outputVariables: {},\n * name: ``,\n * });\n * ```\n */\n runPackagedWorkflow(step: RunPackagedWorkflowStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<RunPackagedWorkflowStepOutput>>;\n\n /**\n * Scrape a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPage({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPage(step: ScrapeFacebookPageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPageStepOutput>>;\n\n /**\n * Get all the posts for a Facebook page\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeFacebookPosts({\n * pageUrl: ``,\n * });\n * ```\n */\n scrapeFacebookPosts(step: ScrapeFacebookPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeFacebookPostsStepOutput>>;\n\n /**\n * Get all the comments for an Instagram post\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramComments({\n * postUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramComments(step: ScrapeInstagramCommentsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramCommentsStepOutput>>;\n\n /**\n * Scrape an Instagram profile's mentions\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramMentions({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramMentions(step: ScrapeInstagramMentionsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramMentionsStepOutput>>;\n\n /**\n * Get all the posts for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramPosts({\n * profileUrl: ``,\n * resultsLimit: ``,\n * onlyPostsNewerThan: ``,\n * });\n * ```\n */\n scrapeInstagramPosts(step: ScrapeInstagramPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramPostsStepOutput>>;\n\n /**\n * Scrape an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeInstagramProfile(step: ScrapeInstagramProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramProfileStepOutput>>;\n\n /**\n * Get all the reels for an Instagram profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeInstagramReels({\n * profileUrl: ``,\n * resultsLimit: ``,\n * });\n * ```\n */\n scrapeInstagramReels(step: ScrapeInstagramReelsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeInstagramReelsStepOutput>>;\n\n /**\n * Scrape public company data from a LinkedIn company page.\n *\n * @remarks\n * - Requires a LinkedIn company URL (e.g. https://www.linkedin.com/company/mindstudioai).\n * - Returns structured company data including description, employees, updates, and similar companies.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInCompany({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInCompany(step: ScrapeLinkedInCompanyStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInCompanyStepOutput>>;\n\n /**\n * Scrape public profile data from a LinkedIn profile page.\n *\n * @remarks\n * - Requires a LinkedIn profile URL (e.g. https://www.linkedin.com/in/username).\n * - Returns structured profile data including experience, education, articles, and activities.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeLinkedInProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeLinkedInProfile(step: ScrapeLinkedInProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeLinkedInProfileStepOutput>>;\n\n /**\n * Scrape a Meta Threads profile\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeMetaThreadsProfile({\n * profileUrl: ``,\n * });\n * ```\n */\n scrapeMetaThreadsProfile(step: ScrapeMetaThreadsProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeMetaThreadsProfileStepOutput>>;\n\n /**\n * Extract text, HTML, or structured content from one or more web pages.\n *\n * @remarks\n * - Accepts a single URL or multiple URLs (as a JSON array, comma-separated, or newline-separated).\n * - Output format controls the result shape: \"text\" returns markdown, \"html\" returns raw HTML, \"json\" returns structured scraper data.\n * - Can optionally capture a screenshot of each page.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeUrl({\n * url: ``,\n * });\n * ```\n */\n scrapeUrl(step: ScrapeUrlStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeUrlStepOutput>>;\n\n /**\n * Scrape data from a single X (Twitter) post by URL.\n *\n * @remarks\n * - Returns structured post data (text, html, optional json/screenshot/metadata).\n * - Optionally saves the text content to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXPost({\n * url: ``,\n * });\n * ```\n */\n scrapeXPost(step: ScrapeXPostStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXPostStepOutput>>;\n\n /**\n * Scrape public profile data from an X (Twitter) account by URL.\n *\n * @remarks\n * - Returns structured profile data.\n * - Optionally saves the result to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.scrapeXProfile({\n * url: ``,\n * });\n * ```\n */\n scrapeXProfile(step: ScrapeXProfileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<ScrapeXProfileStepOutput>>;\n\n /**\n * Search the web using Google and return structured results.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogle({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogle(step: SearchGoogleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleStepOutput>>;\n\n /**\n * Search Google Images and return image results with URLs and metadata.\n *\n * @remarks\n * - Defaults to us/english, but can optionally specify country and/or language.\n * - Defaults to any time, but can optionally specify last hour, last day, week, month, or year.\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleImages({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleImages(step: SearchGoogleImagesStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleImagesStepOutput>>;\n\n /**\n * Search Google News for recent news articles matching a query.\n *\n * @remarks\n * - Defaults to top 30 results, but can specify 1 to 100 results to return.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleNews({\n * text: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchGoogleNews(step: SearchGoogleNewsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleNewsStepOutput>>;\n\n /**\n * Fetch Google Trends data for a search term.\n *\n * @remarks\n * - date accepts shorthand (\"now 1-H\", \"today 1-m\", \"today 5-y\", etc.) or custom \"yyyy-mm-dd yyyy-mm-dd\" ranges.\n * - data_type controls the shape of returned data: TIMESERIES, GEO_MAP, GEO_MAP_0, RELATED_TOPICS, or RELATED_QUERIES.\n *\n * @example\n * ```typescript\n * const result = await agent.searchGoogleTrends({\n * text: ``,\n * hl: ``,\n * geo: ``,\n * data_type: \"TIMESERIES\",\n * cat: ``,\n * date: ``,\n * ts: ``,\n * });\n * ```\n */\n searchGoogleTrends(step: SearchGoogleTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchGoogleTrendsStepOutput>>;\n\n /**\n * Search the web using the Perplexity API and return structured results.\n *\n * @remarks\n * - Defaults to US results. Use countryCode (ISO code) to filter by country.\n * - Returns 10 results by default, configurable from 1 to 20.\n * - The variable receives text or JSON depending on exportType. The direct execution output always returns structured results.\n *\n * @example\n * ```typescript\n * const result = await agent.searchPerplexity({\n * query: ``,\n * exportType: \"text\",\n * });\n * ```\n */\n searchPerplexity(step: SearchPerplexityStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchPerplexityStepOutput>>;\n\n /**\n * Search recent X (Twitter) posts matching a query.\n *\n * @remarks\n * - Searches only the past 7 days of posts.\n * - Query supports X API v2 search operators (up to 512 characters).\n * Available search operators in query:\n * | Operator | Description |\n * | -----------------| -------------------------------------------------|\n * | from: | Posts from a specific user (e.g., from:elonmusk) |\n * | to: | Posts sent to a specific user (e.g., to:NASA) |\n * | @ | Mentions a user (e.g., @openai) |\n * | # | Hashtag search (e.g., #AI) |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | lang: | Filters by language (e.g., lang:en) |\n * | - | Excludes specific terms (e.g., -spam) |\n * | () | Groups terms or operators (e.g., (AI OR ML)) |\n * | AND, OR, NOT | Boolean logic for combining or excluding terms |\n * Conjunction-Required Operators (must be combined with a standalone operator):\n * | Operator | Description |\n * | ------------ | -----------------------------------------------|\n * | has:media | Posts containing media (images, videos, or GIFs) |\n * | has:links | Posts containing URLs |\n * | is:retweet | Filters retweets |\n * | is:reply | Filters replies |\n * For example, has:media alone is invalid, but #AI has:media is valid.\n *\n * @example\n * ```typescript\n * const result = await agent.searchXPosts({\n * query: ``,\n * scope: \"recent\",\n * options: {},\n * });\n * ```\n */\n searchXPosts(step: SearchXPostsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchXPostsStepOutput>>;\n\n /**\n * Search for YouTube videos by keyword.\n *\n * @remarks\n * - Supports pagination (up to 5 pages) and country/language filters.\n * - Use the filter/filterType fields for YouTube search parameter (sp) filters.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutube({\n * query: ``,\n * limitPages: ``,\n * filter: ``,\n * filterType: ``,\n * });\n * ```\n */\n searchYoutube(step: SearchYoutubeStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeStepOutput>>;\n\n /**\n * Retrieve trending videos on YouTube by category and region.\n *\n * @remarks\n * - Categories: \"now\" (trending now), \"music\", \"gaming\", \"films\".\n * - Supports country and language filtering.\n *\n * @example\n * ```typescript\n * const result = await agent.searchYoutubeTrends({\n * bp: \"now\",\n * hl: ``,\n * gl: ``,\n * });\n * ```\n */\n searchYoutubeTrends(step: SearchYoutubeTrendsStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SearchYoutubeTrendsStepOutput>>;\n\n /**\n * Send an email to one or more configured recipient addresses.\n *\n * @remarks\n * - Recipient email addresses are resolved from OAuth connections configured by the app creator. The user running the workflow does not specify the recipient directly.\n * - If the body is a URL to a hosted HTML file on the CDN, the HTML is fetched and used as the email body.\n * - When generateHtml is enabled, the body text is converted to a styled HTML email using an AI model.\n * - connectionId can be a comma-separated list to send to multiple recipients.\n * - The special connectionId \"trigger_email\" uses the email address that triggered the workflow.\n *\n * @example\n * ```typescript\n * const result = await agent.sendEmail({\n * subject: ``,\n * body: ``,\n * connectionId: ``,\n * });\n * ```\n */\n sendEmail(step: SendEmailStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendEmailStepOutput>>;\n\n /**\n * Send an SMS text message to a phone number configured via OAuth connection.\n *\n * @remarks\n * - User is responsible for configuring the connection to the number (MindStudio requires double opt-in to prevent spam)\n *\n * @example\n * ```typescript\n * const result = await agent.sendSMS({\n * body: ``,\n * connectionId: ``,\n * });\n * ```\n */\n sendSMS(step: SendSMSStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SendSMSStepOutput>>;\n\n /**\n * Set the title of the agent run for the user's history\n *\n * @example\n * ```typescript\n * const result = await agent.setRunTitle({\n * title: ``,\n * });\n * ```\n */\n setRunTitle(step: SetRunTitleStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetRunTitleStepOutput>>;\n\n /**\n * Explicitly set a variable to a given value.\n *\n * @remarks\n * - Useful for bootstrapping global variables or setting constants.\n * - The variable name and value both support variable interpolation.\n * - The type field is a UI hint only (controls input widget in the editor).\n *\n * @example\n * ```typescript\n * const result = await agent.setVariable({\n * value: ``,\n * type: \"imageUrl\",\n * });\n * ```\n */\n setVariable(step: SetVariableStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<SetVariableStepOutput>>;\n\n /**\n * Send an audio file to a Telegram chat as music or a voice note via a bot.\n *\n * @remarks\n * - \"audio\" mode sends as a standard audio file. \"voice\" mode sends as a voice message (re-uploads the file for large file support).\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendAudio({\n * botToken: ``,\n * chatId: ``,\n * audioUrl: ``,\n * mode: \"audio\",\n * });\n * ```\n */\n telegramSendAudio(step: TelegramSendAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendAudioStepOutput>>;\n\n /**\n * Send a document/file to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendFile({\n * botToken: ``,\n * chatId: ``,\n * fileUrl: ``,\n * });\n * ```\n */\n telegramSendFile(step: TelegramSendFileStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendFileStepOutput>>;\n\n /**\n * Send an image to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendImage({\n * botToken: ``,\n * chatId: ``,\n * imageUrl: ``,\n * });\n * ```\n */\n telegramSendImage(step: TelegramSendImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendImageStepOutput>>;\n\n /**\n * Send a text message to a Telegram chat via a bot.\n *\n * @remarks\n * - Messages are sent using MarkdownV2 formatting. Special characters are auto-escaped.\n * - botToken format is \"botId:token\" — both parts are required.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendMessage({\n * botToken: ``,\n * chatId: ``,\n * text: ``,\n * });\n * ```\n */\n telegramSendMessage(step: TelegramSendMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendMessageStepOutput>>;\n\n /**\n * Send a video to a Telegram chat via a bot.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSendVideo({\n * botToken: ``,\n * chatId: ``,\n * videoUrl: ``,\n * });\n * ```\n */\n telegramSendVideo(step: TelegramSendVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSendVideoStepOutput>>;\n\n /**\n * Show the \"typing...\" indicator in a Telegram chat via a bot.\n *\n * @remarks\n * - The typing indicator automatically expires after a few seconds. Use this right before sending a message for a natural feel.\n *\n * @example\n * ```typescript\n * const result = await agent.telegramSetTyping({\n * botToken: ``,\n * chatId: ``,\n * });\n * ```\n */\n telegramSetTyping(step: TelegramSetTypingStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TelegramSetTypingStepOutput>>;\n\n /**\n * Generate an audio file from provided text using a speech model.\n *\n * @remarks\n * - The text field contains the exact words to be spoken (not instructions).\n * - In foreground mode, the audio is displayed to the user. In background mode, the URL is saved to a variable.\n *\n * @example\n * ```typescript\n * const result = await agent.textToSpeech({\n * text: ``,\n * });\n * ```\n */\n textToSpeech(step: TextToSpeechStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TextToSpeechStepOutput>>;\n\n /**\n * Convert an audio file to text using a transcription model.\n *\n * @remarks\n * - The prompt field provides optional context to improve transcription accuracy (e.g. language, speaker names, domain).\n *\n * @example\n * ```typescript\n * const result = await agent.transcribeAudio({\n * audioUrl: ``,\n * prompt: ``,\n * });\n * ```\n */\n transcribeAudio(step: TranscribeAudioStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TranscribeAudioStepOutput>>;\n\n /**\n * Trim an audio or video clip\n *\n * @example\n * ```typescript\n * const result = await agent.trimMedia({\n * inputUrl: ``,\n * });\n * ```\n */\n trimMedia(step: TrimMediaStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<TrimMediaStepOutput>>;\n\n /**\n * Update an existing event on a Google Calendar. Only specified fields are changed.\n *\n * @remarks\n * - Requires a Google OAuth connection with Calendar events scope.\n * - Fetches the existing event first, then applies only the provided updates. Omitted fields are left unchanged.\n * - Attendees are specified as one email address per line, and replace the entire attendee list.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleCalendarEvent({\n * connectionId: ``,\n * eventId: ``,\n * });\n * ```\n */\n updateGoogleCalendarEvent(step: UpdateGoogleCalendarEventStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleCalendarEventStepOutput>>;\n\n /**\n * Update the contents of an existing Google Document.\n *\n * @remarks\n * - operationType controls how content is applied: \"addToTop\" prepends, \"addToBottom\" appends, \"overwrite\" replaces all content.\n * - textType determines how the text field is interpreted: \"plain\" for plain text, \"html\" for HTML markup, \"markdown\" for Markdown.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleDoc({\n * documentId: ``,\n * connectionId: ``,\n * text: ``,\n * textType: \"plain\",\n * operationType: \"addToTop\",\n * });\n * ```\n */\n updateGoogleDoc(step: UpdateGoogleDocStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleDocStepOutput>>;\n\n /**\n * Update a Google Spreadsheet with new data.\n *\n * @remarks\n * - operationType controls how data is written: \"addToBottom\" appends rows, \"overwrite\" replaces all data, \"range\" writes to a specific cell range.\n * - Data should be provided as CSV in the text field.\n *\n * @example\n * ```typescript\n * const result = await agent.updateGoogleSheet({\n * text: ``,\n * connectionId: ``,\n * spreadsheetId: ``,\n * range: ``,\n * operationType: \"addToBottom\",\n * });\n * ```\n */\n updateGoogleSheet(step: UpdateGoogleSheetStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpdateGoogleSheetStepOutput>>;\n\n /**\n * Upload a file into an existing data source from a URL or raw text content.\n *\n * @remarks\n * - If \"file\" is a single URL, the file is downloaded from that URL and uploaded.\n * - If \"file\" is any other string, a .txt document is created from that content and uploaded.\n * - The block waits (polls) for processing to complete before transitioning, up to 5 minutes.\n * - Once processing finishes, vectors are loaded into Milvus so the data source is immediately queryable.\n * - Supported file types (when using a URL) are the same as the data source upload UI (PDF, DOCX, TXT, etc.).\n *\n * @example\n * ```typescript\n * const result = await agent.uploadDataSourceDocument({\n * dataSourceId: ``,\n * file: ``,\n * fileName: ``,\n * });\n * ```\n */\n uploadDataSourceDocument(step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UploadDataSourceDocumentStepOutput>>;\n\n /**\n * Increase the resolution of an image using AI upscaling.\n *\n * @remarks\n * - Output is re-hosted on the CDN as a PNG.\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleImage({\n * imageUrl: ``,\n * targetResolution: \"2k\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleImage(step: UpscaleImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleImageStepOutput>>;\n\n /**\n * Upscale a video file\n *\n * @example\n * ```typescript\n * const result = await agent.upscaleVideo({\n * videoUrl: ``,\n * targetResolution: \"720p\",\n * engine: \"standard\",\n * });\n * ```\n */\n upscaleVideo(step: UpscaleVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UpscaleVideoStepOutput>>;\n\n /**\n * Send a message to an AI model and return the response, or echo a system message.\n *\n * @remarks\n * - Source \"user\" sends the message to an LLM and returns the model's response.\n * - Source \"system\" echoes the message content directly (no AI call).\n * - Mode \"background\" saves the result to a variable. Mode \"foreground\" streams it to the user (not available in direct execution).\n * - Structured output (JSON/CSV) can be enforced via structuredOutputType and structuredOutputExample.\n *\n * @example\n * ```typescript\n * const result = await agent.generateText({\n * message: ``,\n * });\n * ```\n */\n generateText(step: UserMessageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<UserMessageStepOutput>>;\n\n /**\n * Swap faces in a video file\n *\n * @example\n * ```typescript\n * const result = await agent.videoFaceSwap({\n * videoUrl: ``,\n * faceImageUrl: ``,\n * targetIndex: 0,\n * engine: ``,\n * });\n * ```\n */\n videoFaceSwap(step: VideoFaceSwapStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoFaceSwapStepOutput>>;\n\n /**\n * Remove or replace background from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveBackground({\n * videoUrl: ``,\n * newBackground: \"transparent\",\n * engine: ``,\n * });\n * ```\n */\n videoRemoveBackground(step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveBackgroundStepOutput>>;\n\n /**\n * Remove a watermark from a video\n *\n * @example\n * ```typescript\n * const result = await agent.videoRemoveWatermark({\n * videoUrl: ``,\n * engine: ``,\n * });\n * ```\n */\n videoRemoveWatermark(step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<VideoRemoveWatermarkStepOutput>>;\n\n /**\n * Overlay a watermark image onto another image.\n *\n * @remarks\n * - The watermark is placed at the specified corner with configurable padding and width.\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkImage({\n * imageUrl: ``,\n * watermarkImageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkImage(step: WatermarkImageStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkImageStepOutput>>;\n\n /**\n * Add an image watermark to a video\n *\n * @example\n * ```typescript\n * const result = await agent.watermarkVideo({\n * videoUrl: ``,\n * imageUrl: ``,\n * corner: \"top-left\",\n * paddingPx: 0,\n * widthPx: 0,\n * });\n * ```\n */\n watermarkVideo(step: WatermarkVideoStepInput, options?: StepExecutionOptions): Promise<StepExecutionResult<WatermarkVideoStepOutput>>;\n\n}\n\n/** @internal Attaches typed step methods to the MindStudioAgent prototype. */\nexport function applyStepMethods(AgentClass: new (...args: any[]) => any): void {\n const proto = AgentClass.prototype;\n\n proto.activeCampaignAddNote = function (step: ActiveCampaignAddNoteStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignAddNote\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.activeCampaignCreateContact = function (step: ActiveCampaignCreateContactStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"activeCampaignCreateContact\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.addSubtitlesToVideo = function (step: AddSubtitlesToVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"addSubtitlesToVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableCreateUpdateRecord = function (step: AirtableCreateUpdateRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableCreateUpdateRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableDeleteRecord = function (step: AirtableDeleteRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableDeleteRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetRecord = function (step: AirtableGetRecordStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetRecord\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.airtableGetTableRecords = function (step: AirtableGetTableRecordsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"airtableGetTableRecords\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeImage = function (step: AnalyzeImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.analyzeVideo = function (step: AnalyzeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"analyzeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.captureThumbnail = function (step: CaptureThumbnailStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"captureThumbnail\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdatePage = function (step: CodaCreateUpdatePageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdatePage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaCreateUpdateRow = function (step: CodaCreateUpdateRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaCreateUpdateRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaFindRow = function (step: CodaFindRowStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaFindRow\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetPage = function (step: CodaGetPageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetPage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.codaGetTableRows = function (step: CodaGetTableRowsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"codaGetTableRows\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.convertPdfToImages = function (step: ConvertPdfToImagesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"convertPdfToImages\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createDataSource = function (step: CreateDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleCalendarEvent = function (step: CreateGoogleCalendarEventStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleCalendarEvent\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleDoc = function (step: CreateGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.createGoogleSheet = function (step: CreateGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"createGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSource = function (step: DeleteDataSourceStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSource\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.deleteDataSourceDocument = function (step: DeleteDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"deleteDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.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.fetchDataSourceDocument = function (step: FetchDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleDoc = function (step: FetchGoogleDocStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleDoc\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchGoogleSheet = function (step: FetchGoogleSheetStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchGoogleSheet\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchSlackChannelHistory = function (step: FetchSlackChannelHistoryStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchSlackChannelHistory\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeCaptions = function (step: FetchYoutubeCaptionsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeCaptions\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeChannel = function (step: FetchYoutubeChannelStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeChannel\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeComments = function (step: FetchYoutubeCommentsStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeComments\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.fetchYoutubeVideo = function (step: FetchYoutubeVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"fetchYoutubeVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateChart = function (step: GenerateChartStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateChart\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateImage = function (step: GenerateImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateLipsync = function (step: GenerateLipsyncStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateLipsync\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateMusic = function (step: GenerateMusicStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateMusic\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateAsset = function (step: GeneratePdfStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generatePdf\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateStaticVideoFromImage = function (step: GenerateStaticVideoFromImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateStaticVideoFromImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateVideo = function (step: GenerateVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"generateVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.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.listDataSources = function (step: ListDataSourcesStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"listDataSources\", 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.uploadDataSourceDocument = function (step: UploadDataSourceDocumentStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"uploadDataSourceDocument\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleImage = function (step: UpscaleImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.upscaleVideo = function (step: UpscaleVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"upscaleVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.generateText = function (step: UserMessageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"userMessage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoFaceSwap = function (step: VideoFaceSwapStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoFaceSwap\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveBackground = function (step: VideoRemoveBackgroundStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveBackground\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.videoRemoveWatermark = function (step: VideoRemoveWatermarkStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"videoRemoveWatermark\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkImage = function (step: WatermarkImageStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkImage\", step as unknown as Record<string, unknown>, options);\n };\n\n proto.watermarkVideo = function (step: WatermarkVideoStepInput, options?: StepExecutionOptions) {\n return this.executeStep(\"watermarkVideo\", step as unknown as Record<string, unknown>, options);\n };\n\n}\n","// AUTO-GENERATED — DO NOT EDIT\n// Run `npm run codegen` to regenerate from the OpenAPI spec.\n// Generated: 2026-02-28T19:35:36.395Z\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 { RateLimiter, type AuthType } from './rate-limit.js';\nimport type {\n AgentOptions,\n StepExecutionOptions,\n StepExecutionResult,\n} from './types.js';\n\nconst DEFAULT_BASE_URL = 'https://v1.mindstudio-api.com';\nconst DEFAULT_MAX_RETRIES = 3;\n\n/**\n * Client for the MindStudio direct step execution API.\n *\n * Create an instance and call typed step methods directly:\n *\n * ```ts\n * const agent = new MindStudioAgent({ apiKey: \"your-key\" });\n * const { imageUrl } = await agent.generateImage({ prompt: \"a sunset\", mode: \"background\" });\n * console.log(imageUrl);\n * ```\n *\n * Authentication is resolved in order:\n * 1. `apiKey` passed to the constructor\n * 2. `MINDSTUDIO_API_KEY` environment variable\n * 3. `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 *\n * Rate limiting is handled automatically:\n * - Concurrent requests are queued to stay within server limits\n * - 429 responses are retried automatically using the `Retry-After` header\n * - Internal (hook) tokens are capped at 500 calls per execution\n */\nexport class MindStudioAgent {\n /** @internal */\n readonly _httpConfig: HttpClientConfig;\n /** @internal */\n private _reuseThreadId: boolean;\n /** @internal */\n private _threadId: string | undefined;\n\n constructor(options: AgentOptions = {}) {\n const { token, authType } = 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._reuseThreadId =\n options.reuseThreadId ??\n /^(true|1)$/i.test(process.env.MINDSTUDIO_REUSE_THREAD_ID ?? '');\n\n this._httpConfig = {\n baseUrl,\n token,\n rateLimiter: new RateLimiter(authType),\n maxRetries: options.maxRetries ?? DEFAULT_MAX_RETRIES,\n };\n }\n\n /**\n * Execute any step by its type name. This is the low-level method that all\n * typed step methods delegate to. Use it as an escape hatch for step types\n * not yet covered by the generated methods.\n *\n * ```ts\n * const result = await agent.executeStep(\"generateImage\", { prompt: \"hello\", mode: \"background\" });\n * ```\n */\n async executeStep<TOutput = unknown>(\n stepType: string,\n step: Record<string, unknown>,\n options?: StepExecutionOptions,\n ): Promise<StepExecutionResult<TOutput>> {\n const threadId =\n options?.threadId ?? (this._reuseThreadId ? this._threadId : undefined);\n\n const { data, headers } = await request<{\n output?: TOutput;\n outputUrl?: string;\n }>(this._httpConfig, 'POST', `/steps/${stepType}/execute`, {\n step,\n ...(options?.appId != null && { appId: options.appId }),\n ...(threadId != null && { threadId }),\n });\n\n let output: TOutput;\n if (data.output != null) {\n output = data.output;\n } else if (data.outputUrl) {\n const res = await fetch(data.outputUrl);\n if (!res.ok) {\n throw new MindStudioError(\n `Failed to fetch output from S3: ${res.status} ${res.statusText}`,\n 'output_fetch_error',\n res.status,\n );\n }\n const envelope = (await res.json()) as { value: TOutput };\n output = envelope.value;\n } else {\n output = undefined as TOutput;\n }\n\n const returnedThreadId = headers.get('x-mindstudio-thread-id') ?? '';\n if (this._reuseThreadId && returnedThreadId) {\n this._threadId = returnedThreadId;\n }\n\n const remaining = headers.get('x-ratelimit-remaining');\n\n return {\n ...(output as object),\n $appId: headers.get('x-mindstudio-app-id') ?? '',\n $threadId: returnedThreadId,\n $rateLimitRemaining:\n remaining != null ? parseInt(remaining, 10) : undefined,\n } 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): {\n token: string;\n authType: AuthType;\n} {\n if (provided) return { token: provided, authType: 'apiKey' };\n if (process.env.MINDSTUDIO_API_KEY)\n return { token: process.env.MINDSTUDIO_API_KEY, authType: 'apiKey' };\n if (process.env.CALLBACK_TOKEN)\n return { token: process.env.CALLBACK_TOKEN, authType: 'internal' };\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-28T19:35:36.395Z\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 \"createDataSource\": {\n method: \"createDataSource\",\n snippet: \"{\\n name: ``,\\n}\",\n outputKeys: [],\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 \"deleteDataSource\": {\n method: \"deleteDataSource\",\n snippet: \"{\\n dataSourceId: ``,\\n}\",\n outputKeys: [],\n },\n \"deleteDataSourceDocument\": {\n method: \"deleteDataSourceDocument\",\n snippet: \"{\\n dataSourceId: ``,\\n documentId: ``,\\n}\",\n outputKeys: [],\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 \"fetchDataSourceDocument\": {\n method: \"fetchDataSourceDocument\",\n snippet: \"{\\n dataSourceId: ``,\\n documentId: ``,\\n}\",\n outputKeys: [],\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: \"generateAsset\",\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 \"listDataSources\": {\n method: \"listDataSources\",\n snippet: \"{}\",\n outputKeys: [],\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 \"uploadDataSourceDocument\": {\n method: \"uploadDataSourceDocument\",\n snippet: \"{\\n dataSourceId: ``,\\n file: ``,\\n fileName: ``,\\n}\",\n outputKeys: [],\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: \"generateText\",\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\nexport type MonacoSnippetFieldType = 'string' | 'number' | 'boolean' | 'array' | 'object' | string[];\nexport type MonacoSnippetField = [name: string, type: MonacoSnippetFieldType];\n\nexport const monacoSnippets: Record<string, MonacoSnippetField[]> = {\n \"activeCampaignAddNote\": [[\"contactId\", 'string'], [\"note\", 'string'], [\"connectionId\", 'string']],\n \"activeCampaignCreateContact\": [[\"email\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string'], [\"phone\", 'string'], [\"accountId\", 'string'], [\"customFields\", 'object'], [\"connectionId\", 'string']],\n \"addSubtitlesToVideo\": [[\"videoUrl\", 'string'], [\"language\", 'string'], [\"fontName\", 'string'], [\"fontSize\", 'number'], [\"fontWeight\", [\"normal\", \"bold\", \"black\"]], [\"fontColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"highlightColor\", [\"white\", \"black\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"strokeWidth\", 'number'], [\"strokeColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\"]], [\"backgroundColor\", [\"black\", \"white\", \"red\", \"green\", \"blue\", \"yellow\", \"orange\", \"purple\", \"pink\", \"brown\", \"gray\", \"cyan\", \"magenta\", \"none\"]], [\"backgroundOpacity\", 'number'], [\"position\", [\"top\", \"center\", \"bottom\"]], [\"yOffset\", 'number'], [\"wordsPerSubtitle\", 'number'], [\"enableAnimation\", 'boolean']],\n \"airtableCreateUpdateRecord\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string'], [\"fields\", 'string'], [\"recordData\", 'object']],\n \"airtableDeleteRecord\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']],\n \"airtableGetRecord\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string'], [\"recordId\", 'string']],\n \"airtableGetTableRecords\": [[\"connectionId\", 'string'], [\"baseId\", 'string'], [\"tableId\", 'string']],\n \"analyzeImage\": [[\"prompt\", 'string'], [\"imageUrl\", 'string']],\n \"analyzeVideo\": [[\"prompt\", 'string'], [\"videoUrl\", 'string']],\n \"captureThumbnail\": [[\"videoUrl\", 'string'], [\"at\", 'string']],\n \"codaCreateUpdatePage\": [[\"connectionId\", 'string'], [\"pageData\", 'object']],\n \"codaCreateUpdateRow\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']],\n \"codaFindRow\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"tableId\", 'string'], [\"rowData\", 'object']],\n \"codaGetPage\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"pageId\", 'string']],\n \"codaGetTableRows\": [[\"connectionId\", 'string'], [\"docId\", 'string'], [\"tableId\", 'string']],\n \"convertPdfToImages\": [[\"pdfUrl\", 'string']],\n \"createDataSource\": [[\"name\", 'string']],\n \"createGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"summary\", 'string'], [\"startDateTime\", 'string'], [\"endDateTime\", 'string']],\n \"createGoogleDoc\": [[\"title\", 'string'], [\"text\", 'string'], [\"connectionId\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]]],\n \"createGoogleSheet\": [[\"title\", 'string'], [\"text\", 'string'], [\"connectionId\", 'string']],\n \"deleteDataSource\": [[\"dataSourceId\", 'string']],\n \"deleteDataSourceDocument\": [[\"dataSourceId\", 'string'], [\"documentId\", 'string']],\n \"deleteGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"eventId\", 'string']],\n \"detectPII\": [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']],\n \"downloadVideo\": [[\"videoUrl\", 'string'], [\"format\", [\"mp4\", \"mp3\"]]],\n \"enhanceImageGenerationPrompt\": [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']],\n \"enhanceVideoGenerationPrompt\": [[\"initialPrompt\", 'string'], [\"includeNegativePrompt\", 'boolean'], [\"systemPrompt\", 'string']],\n \"enrichPerson\": [[\"params\", 'object']],\n \"extractAudioFromVideo\": [[\"videoUrl\", 'string']],\n \"extractText\": [[\"url\", 'string']],\n \"fetchDataSourceDocument\": [[\"dataSourceId\", 'string'], [\"documentId\", 'string']],\n \"fetchGoogleDoc\": [[\"documentId\", 'string'], [\"connectionId\", 'string'], [\"exportType\", [\"html\", \"markdown\", \"json\", \"plain\"]]],\n \"fetchGoogleSheet\": [[\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"connectionId\", 'string'], [\"exportType\", [\"csv\", \"json\"]]],\n \"fetchSlackChannelHistory\": [[\"connectionId\", 'string'], [\"channelId\", 'string']],\n \"fetchYoutubeCaptions\": [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"language\", 'string']],\n \"fetchYoutubeChannel\": [[\"channelUrl\", 'string']],\n \"fetchYoutubeComments\": [[\"videoUrl\", 'string'], [\"exportType\", [\"text\", \"json\"]], [\"limitPages\", 'string']],\n \"fetchYoutubeVideo\": [[\"videoUrl\", 'string']],\n \"generateAsset\": [[\"source\", 'string'], [\"sourceType\", [\"html\", \"markdown\", \"spa\", \"raw\", \"dynamic\", \"customInterface\"]], [\"outputFormat\", [\"pdf\", \"png\", \"html\", \"mp4\", \"openGraph\"]], [\"pageSize\", [\"full\", \"letter\", \"A4\", \"custom\"]], [\"testData\", 'object']],\n \"generateChart\": [[\"chart\", 'object']],\n \"generateImage\": [[\"prompt\", 'string']],\n \"generateLipsync\": [],\n \"generateMusic\": [[\"text\", 'string']],\n \"generateStaticVideoFromImage\": [[\"imageUrl\", 'string'], [\"duration\", 'string']],\n \"generateText\": [[\"message\", 'string']],\n \"generateVideo\": [[\"prompt\", 'string']],\n \"getGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"eventId\", 'string'], [\"exportType\", [\"json\", \"text\"]]],\n \"getMediaMetadata\": [[\"mediaUrl\", 'string']],\n \"httpRequest\": [[\"url\", 'string'], [\"method\", 'string'], [\"headers\", 'object'], [\"queryParams\", 'object'], [\"body\", 'string'], [\"bodyItems\", 'object'], [\"contentType\", [\"none\", \"application/json\", \"application/x-www-form-urlencoded\", \"multipart/form-data\", \"custom\"]], [\"customContentType\", 'string']],\n \"hubspotCreateCompany\": [[\"connectionId\", 'string'], [\"company\", 'object'], [\"enabledProperties\", 'array']],\n \"hubspotCreateContact\": [[\"connectionId\", 'string'], [\"contact\", 'object'], [\"enabledProperties\", 'array'], [\"companyDomain\", 'string']],\n \"hubspotGetCompany\": [[\"connectionId\", 'string'], [\"searchBy\", [\"domain\", \"id\"]], [\"companyDomain\", 'string'], [\"companyId\", 'string'], [\"additionalProperties\", 'array']],\n \"hubspotGetContact\": [[\"connectionId\", 'string'], [\"searchBy\", [\"email\", \"id\"]], [\"contactEmail\", 'string'], [\"contactId\", 'string'], [\"additionalProperties\", 'array']],\n \"hunterApiCompanyEnrichment\": [[\"domain\", 'string']],\n \"hunterApiDomainSearch\": [[\"domain\", 'string']],\n \"hunterApiEmailFinder\": [[\"domain\", 'string'], [\"firstName\", 'string'], [\"lastName\", 'string']],\n \"hunterApiEmailVerification\": [[\"email\", 'string']],\n \"hunterApiPersonEnrichment\": [[\"email\", 'string']],\n \"imageFaceSwap\": [[\"imageUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"engine\", 'string']],\n \"imageRemoveWatermark\": [[\"imageUrl\", 'string'], [\"engine\", 'string']],\n \"insertVideoClips\": [[\"baseVideoUrl\", 'string'], [\"overlayVideos\", 'array']],\n \"listDataSources\": [],\n \"listGoogleCalendarEvents\": [[\"connectionId\", 'string'], [\"limit\", 'number'], [\"exportType\", [\"json\", \"text\"]]],\n \"logic\": [[\"context\", 'string'], [\"cases\", 'array']],\n \"makeDotComRunScenario\": [[\"webhookUrl\", 'string'], [\"input\", 'object']],\n \"mergeAudio\": [[\"mp3Urls\", 'array']],\n \"mergeVideos\": [[\"videoUrls\", 'array']],\n \"mixAudioIntoVideo\": [[\"videoUrl\", 'string'], [\"audioUrl\", 'string'], [\"options\", 'object']],\n \"muteVideo\": [[\"videoUrl\", 'string']],\n \"n8nRunNode\": [[\"method\", 'string'], [\"authentication\", [\"none\", \"basic\", \"string\"]], [\"user\", 'string'], [\"password\", 'string'], [\"webhookUrl\", 'string'], [\"input\", 'object']],\n \"notionCreatePage\": [[\"pageId\", 'string'], [\"content\", 'string'], [\"title\", 'string'], [\"connectionId\", 'string']],\n \"notionUpdatePage\": [[\"pageId\", 'string'], [\"content\", 'string'], [\"mode\", [\"append\", \"overwrite\"]], [\"connectionId\", 'string']],\n \"peopleSearch\": [[\"smartQuery\", 'string'], [\"enrichPeople\", 'boolean'], [\"enrichOrganizations\", 'boolean'], [\"limit\", 'string'], [\"page\", 'string'], [\"params\", 'object']],\n \"postToLinkedIn\": [[\"message\", 'string'], [\"visibility\", [\"PUBLIC\", \"CONNECTIONS\"]], [\"connectionId\", 'string']],\n \"postToSlackChannel\": [[\"channelId\", 'string'], [\"messageType\", [\"string\", \"blocks\"]], [\"message\", 'string'], [\"connectionId\", 'string']],\n \"postToX\": [[\"text\", 'string'], [\"connectionId\", 'string']],\n \"postToZapier\": [[\"webhookUrl\", 'string'], [\"input\", 'object']],\n \"queryDataSource\": [[\"dataSourceId\", 'string'], [\"query\", 'string'], [\"maxResults\", 'number']],\n \"queryExternalDatabase\": [[\"connectionId\", 'string'], [\"query\", 'string'], [\"outputFormat\", [\"json\", \"csv\"]]],\n \"redactPII\": [[\"input\", 'string'], [\"language\", 'string'], [\"entities\", 'array']],\n \"removeBackgroundFromImage\": [[\"imageUrl\", 'string']],\n \"resizeVideo\": [[\"videoUrl\", 'string'], [\"mode\", [\"fit\", \"exact\"]]],\n \"runPackagedWorkflow\": [[\"appId\", 'string'], [\"workflowId\", 'string'], [\"inputVariables\", 'object'], [\"outputVariables\", 'object'], [\"name\", 'string']],\n \"scrapeFacebookPage\": [[\"pageUrl\", 'string']],\n \"scrapeFacebookPosts\": [[\"pageUrl\", 'string']],\n \"scrapeInstagramComments\": [[\"postUrl\", 'string'], [\"resultsLimit\", 'string']],\n \"scrapeInstagramMentions\": [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']],\n \"scrapeInstagramPosts\": [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string'], [\"onlyPostsNewerThan\", 'string']],\n \"scrapeInstagramProfile\": [[\"profileUrl\", 'string']],\n \"scrapeInstagramReels\": [[\"profileUrl\", 'string'], [\"resultsLimit\", 'string']],\n \"scrapeLinkedInCompany\": [[\"url\", 'string']],\n \"scrapeLinkedInProfile\": [[\"url\", 'string']],\n \"scrapeMetaThreadsProfile\": [[\"profileUrl\", 'string']],\n \"scrapeUrl\": [[\"url\", 'string']],\n \"scrapeXPost\": [[\"url\", 'string']],\n \"scrapeXProfile\": [[\"url\", 'string']],\n \"searchGoogle\": [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchGoogleImages\": [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchGoogleNews\": [[\"text\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchGoogleTrends\": [[\"text\", 'string'], [\"hl\", 'string'], [\"geo\", 'string'], [\"data_type\", [\"TIMESERIES\", \"GEO_MAP\", \"GEO_MAP_0\", \"RELATED_TOPICS\", \"RELATED_QUERIES\"]], [\"cat\", 'string'], [\"date\", 'string'], [\"ts\", 'string']],\n \"searchPerplexity\": [[\"query\", 'string'], [\"exportType\", [\"text\", \"json\"]]],\n \"searchXPosts\": [[\"query\", 'string'], [\"scope\", [\"recent\", \"all\"]], [\"options\", 'object']],\n \"searchYoutube\": [[\"query\", 'string'], [\"limitPages\", 'string'], [\"filter\", 'string'], [\"filterType\", 'string']],\n \"searchYoutubeTrends\": [[\"bp\", [\"now\", \"music\", \"gaming\", \"films\"]], [\"hl\", 'string'], [\"gl\", 'string']],\n \"sendEmail\": [[\"subject\", 'string'], [\"body\", 'string'], [\"connectionId\", 'string']],\n \"sendSMS\": [[\"body\", 'string'], [\"connectionId\", 'string']],\n \"setRunTitle\": [[\"title\", 'string']],\n \"setVariable\": [[\"value\", 'string'], [\"type\", [\"imageUrl\", \"videoUrl\", \"fileUrl\", \"plaintext\", \"textArray\", \"imageUrlArray\", \"videoUrlArray\"]]],\n \"telegramSendAudio\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"audioUrl\", 'string'], [\"mode\", [\"audio\", \"voice\"]]],\n \"telegramSendFile\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"fileUrl\", 'string']],\n \"telegramSendImage\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"imageUrl\", 'string']],\n \"telegramSendMessage\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"text\", 'string']],\n \"telegramSendVideo\": [[\"botToken\", 'string'], [\"chatId\", 'string'], [\"videoUrl\", 'string']],\n \"telegramSetTyping\": [[\"botToken\", 'string'], [\"chatId\", 'string']],\n \"textToSpeech\": [[\"text\", 'string']],\n \"transcribeAudio\": [[\"audioUrl\", 'string'], [\"prompt\", 'string']],\n \"trimMedia\": [[\"inputUrl\", 'string']],\n \"updateGoogleCalendarEvent\": [[\"connectionId\", 'string'], [\"eventId\", 'string']],\n \"updateGoogleDoc\": [[\"documentId\", 'string'], [\"connectionId\", 'string'], [\"text\", 'string'], [\"textType\", [\"plain\", \"html\", \"markdown\"]], [\"operationType\", [\"addToTop\", \"addToBottom\", \"overwrite\"]]],\n \"updateGoogleSheet\": [[\"text\", 'string'], [\"connectionId\", 'string'], [\"spreadsheetId\", 'string'], [\"range\", 'string'], [\"operationType\", [\"addToBottom\", \"overwrite\", \"range\"]]],\n \"uploadDataSourceDocument\": [[\"dataSourceId\", 'string'], [\"file\", 'string'], [\"fileName\", 'string']],\n \"upscaleImage\": [[\"imageUrl\", 'string'], [\"targetResolution\", [\"2k\", \"4k\", \"8k\"]], [\"engine\", [\"standard\", \"pro\"]]],\n \"upscaleVideo\": [[\"videoUrl\", 'string'], [\"targetResolution\", [\"720p\", \"1080p\", \"2K\", \"4K\"]], [\"engine\", [\"standard\", \"pro\", \"ultimate\", \"flashvsr\", \"seedance\", \"seedvr2\", \"runwayml/upscale-v1\"]]],\n \"videoFaceSwap\": [[\"videoUrl\", 'string'], [\"faceImageUrl\", 'string'], [\"targetIndex\", 'number'], [\"engine\", 'string']],\n \"videoRemoveBackground\": [[\"videoUrl\", 'string'], [\"newBackground\", [\"transparent\", \"image\"]], [\"engine\", 'string']],\n \"videoRemoveWatermark\": [[\"videoUrl\", 'string'], [\"engine\", 'string']],\n \"watermarkImage\": [[\"imageUrl\", 'string'], [\"watermarkImageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']],\n \"watermarkVideo\": [[\"videoUrl\", 'string'], [\"imageUrl\", 'string'], [\"corner\", [\"top-left\", \"top-right\", \"bottom-left\", \"bottom-right\"]], [\"paddingPx\", 'number'], [\"widthPx\", 'number']],\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 {\n stepSnippets,\n monacoSnippets,\n type StepSnippet,\n type MonacoSnippetField,\n type MonacoSnippetFieldType,\n} from './generated/snippets.js';\n"],"mappings":"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","names":["MindStudioAgent"]}
|