@bubblelab/bubble-core 0.1.126 → 0.1.128
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bubble-bundle.d.ts +7 -5
- package/dist/bubbles/service-bubble/ai-agent.d.ts +3 -5
- package/dist/bubbles/service-bubble/ai-agent.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/ai-agent.js +4 -91
- package/dist/bubbles/service-bubble/ai-agent.js.map +1 -1
- package/dist/bubbles/service-bubble/capability-pipeline.d.ts +15 -0
- package/dist/bubbles/service-bubble/capability-pipeline.d.ts.map +1 -0
- package/dist/bubbles/service-bubble/capability-pipeline.js +114 -0
- package/dist/bubbles/service-bubble/capability-pipeline.js.map +1 -0
- package/dist/bubbles/service-bubble/notion/notion.d.ts.map +1 -1
- package/dist/bubbles/service-bubble/notion/notion.js +14 -1
- package/dist/bubbles/service-bubble/notion/notion.js.map +1 -1
- package/dist/bubbles.json +1 -1
- package/package.json +2 -2
package/dist/bubble-bundle.d.ts
CHANGED
|
@@ -127,11 +127,12 @@ export interface CronEvent extends BubbleTriggerEvent { cron: string; body?: Rec
|
|
|
127
127
|
export interface WebhookEvent extends BubbleTriggerEvent { body?: Record<string, unknown>; }
|
|
128
128
|
export interface BubbleTrigger { type: keyof BubbleTriggerEventRegistry; cronSchedule?: string; name?: string; description?: string; timeout?: number; retries?: number; }
|
|
129
129
|
export interface SlackFile { id: string; name: string; title?: string; mimetype: string; filetype: string; size: number; user?: string; url_private?: string; url_private_download?: string; original_w?: number; original_h?: number; permalink?: string; }
|
|
130
|
+
export interface SlackThreadHistoryMessage { user_id: string; name: string; timezone: string | null; message: string; image_url_private_downloads?: string[]; }
|
|
130
131
|
export interface SlackEventWrapper { token: string; team_id: string; api_app_id: string; event: SlackAppMentionEvent | SlackMessageEvent; type: 'event_callback'; authorizations: Array<{ enterprise_id?: string; team_id: string; user_id: string; is_bot: boolean; }>; event_context: string; event_id: string; event_time: number; }
|
|
131
132
|
export interface SlackAppMentionEvent { type: 'app_mention'; user: string; text: string; ts: string; channel: string; event_ts: string; thread_ts?: string; files?: SlackFile[]; upload?: boolean; }
|
|
132
133
|
export interface SlackMessageEvent { type: 'message'; user: string; text: string; ts: string; channel: string; event_ts: string; channel_type: 'channel' | 'group' | 'im' | 'mpim'; thread_ts?: string; subtype?: string; bot_id?: string; bot_profile?: { id: string; name: string; app_id: string; }; files?: SlackFile[]; upload?: boolean; }
|
|
133
|
-
export interface SlackMentionEvent extends BubbleTriggerEvent { slack_event: SlackEventWrapper; channel: string; user: string; text: string; ts?: string; thread_ts?: string; files?: SlackFile[]; }
|
|
134
|
-
export interface SlackMessageReceivedEvent extends BubbleTriggerEvent { slack_event: SlackEventWrapper; channel: string; user: string; text: string; ts?: string; thread_ts?: string; channel_type: 'channel' | 'group' | 'im' | 'mpim'; subtype?: string; files?: SlackFile[]; }
|
|
134
|
+
export interface SlackMentionEvent extends BubbleTriggerEvent { slack_event: SlackEventWrapper; channel: string; user: string; text: string; ts?: string; thread_ts?: string; files?: SlackFile[]; thread_histories: SlackThreadHistoryMessage[]; }
|
|
135
|
+
export interface SlackMessageReceivedEvent extends BubbleTriggerEvent { slack_event: SlackEventWrapper; channel: string; user: string; text: string; ts?: string; thread_ts?: string; channel_type: 'channel' | 'group' | 'im' | 'mpim'; subtype?: string; files?: SlackFile[]; thread_histories: SlackThreadHistoryMessage[]; }
|
|
135
136
|
export interface AirtableEventBase extends BubbleTriggerEvent { airtable_event: { baseId: string; webhookId: string; timestamp: string; baseTransactionNumber: number; actionMetadata?: { source: string; sourceMetadata?: Record<string, unknown>; }; }; base_id: string; table_id: string; }
|
|
136
137
|
export interface AirtableRecordCreatedEvent extends AirtableEventBase { airtable_event: AirtableEventBase['airtable_event'] & { type: 'record_created'; records: Record<string, { cellValuesByFieldId: Record<string, unknown>; }>; }; }
|
|
137
138
|
export interface AirtableRecordUpdatedEvent extends AirtableEventBase { airtable_event: AirtableEventBase['airtable_event'] & { type: 'record_updated'; records: Record<string, { current: { cellValuesByFieldId: Record<string, unknown>; }; previous?: { cellValuesByFieldId: Record<string, unknown>; }; }>; }; }
|
|
@@ -195,7 +196,8 @@ export interface IToolBubble<TResult extends BubbleOperationResult = BubbleOpera
|
|
|
195
196
|
export interface IUIBubble extends IBubble { readonly type: 'ui'; template: string; }
|
|
196
197
|
export interface IInfraBubble extends IBubble { readonly type: 'infra'; provider: 'aws' | 'gcp' | 'supabase'; resourceType: string; }
|
|
197
198
|
export type BubbleFlowOperationResult = unknown; export interface BubbleContext { logger?: BubbleLogger; variableId?: number; invocationCallSiteKey?: string; dependencyGraph?: DependencyGraphNode; currentUniqueId?: string; __uniqueIdCounters__?: Record<string, number>; [key: string]: unknown; }
|
|
198
|
-
export type ServiceBubbleParams<T = unknown> = T & { credentials?: CredentialOptions; retries?: number; }; export declare const AvailableTools: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; export type AvailableTool = z.infer<typeof AvailableTools>; export type ToolHookContext = { toolName: AvailableTool; toolInput: unknown; toolOutput?: BubbleResult<unknown>; messages: BaseMessage[]; }; export type ToolHookAfter = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; shouldStop?: boolean; }>; export type ToolHookBefore = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; toolInput: Record<string, any>; }>; export type AfterLLMCallContext = { messages: BaseMessage[]; lastAIMessage: AIMessage | AIMessageChunk; hasToolCalls: boolean; }; export type AfterLLMCallHook = (context: AfterLLMCallContext) => Promise<{ messages: BaseMessage[]; continueToAgent?: boolean; }>; export type StreamingCallback = (event: StreamingEvent) => Promise<void> | void; export type ConversationMessage = z.infer<typeof ConversationMessageSchema>; declare const AIAgentParamsSchema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; declare const AIAgentResultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; type AIAgentParams = z.input<typeof AIAgentParamsSchema>;;; & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; type AIAgentParamsParsed = z.output<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; type AIAgentResult = z.output<typeof AIAgentResultSchema>; export declare class AIAgentBubble extends ServiceBubble<AIAgentParamsParsed, AIAgentResult> { static readonly type: "service"; static readonly service = "ai-agent"; static readonly authType: "apikey"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; static readonly resultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; static readonly shortDescription = "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode"; static readonly longDescription = "\n An AI agent powered by LangGraph that can use any tool bubble to answer questions.\n Use cases:\n - Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)\n - Multi-step reasoning with tool assistance\n - Tool-augmented conversations with any registered tool\n - JSON mode for structured output (strips markdown formatting)\n "; static readonly alias = "agent"; private factory; private beforeToolCallHook; private afterToolCallHook; private afterLLMCallHook; private streamingCallback; private shouldStopAfterTools; private shouldContinueToAgent; constructor(params?: AIAgentParams, context?: BubbleContext, instanceId?: string); testCredential(): Promise<boolean>; private buildModelConfig; private executeWithModel; private beforeAction; private applyCapabilityResponseAppend; protected performAction(context?: BubbleContext): Promise<AIAgentResult>; protected getCredentialType(): CredentialType; private getCredentialTypeForModel; protected chooseCredential(): string | undefined; private isDeepResearchModel; private executeDeepResearchViaOpenRouter; private initializeModel; private initializeTools; private resolveCapabilityCredentials; private resolveCapabilityToolNode; private jsonSchemaToZod; private executeToolsWithHooks; private createAgentGraph; private executeAgent; }
|
|
199
|
+
export type ServiceBubbleParams<T = unknown> = T & { credentials?: CredentialOptions; retries?: number; }; export declare const AvailableTools: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; export type AvailableTool = z.infer<typeof AvailableTools>; export type ToolHookContext = { toolName: AvailableTool; toolInput: unknown; toolOutput?: BubbleResult<unknown>; messages: BaseMessage[]; }; export type ToolHookAfter = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; shouldStop?: boolean; }>; export type ToolHookBefore = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; toolInput: Record<string, any>; }>; export type AfterLLMCallContext = { messages: BaseMessage[]; lastAIMessage: AIMessage | AIMessageChunk; hasToolCalls: boolean; }; export type AfterLLMCallHook = (context: AfterLLMCallContext) => Promise<{ messages: BaseMessage[]; continueToAgent?: boolean; }>; export type StreamingCallback = (event: StreamingEvent) => Promise<void> | void; export type ConversationMessage = z.infer<typeof ConversationMessageSchema>; declare const AIAgentParamsSchema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; declare const AIAgentResultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; export
|
|
200
|
+
type AIAgentParams = z.input<typeof AIAgentParamsSchema>;;; & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; export type AIAgentParamsParsed = z.output<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; export type AIAgentResult = z.output<typeof AIAgentResultSchema>; export declare class AIAgentBubble extends ServiceBubble<AIAgentParamsParsed, AIAgentResult> { static readonly type: "service"; static readonly service = "ai-agent"; static readonly authType: "apikey"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; static readonly resultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; static readonly shortDescription = "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode"; static readonly longDescription = "\n An AI agent powered by LangGraph that can use any tool bubble to answer questions.\n Use cases:\n - Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)\n - Multi-step reasoning with tool assistance\n - Tool-augmented conversations with any registered tool\n - JSON mode for structured output (strips markdown formatting)\n "; static readonly alias = "agent"; private factory; private beforeToolCallHook; private afterToolCallHook; private afterLLMCallHook; private streamingCallback; private shouldStopAfterTools; private shouldContinueToAgent; constructor(params?: AIAgentParams, context?: BubbleContext, instanceId?: string); testCredential(): Promise<boolean>; private buildModelConfig; private executeWithModel; private beforeAction; protected performAction(context?: BubbleContext): Promise<AIAgentResult>; protected getCredentialType(): CredentialType; private getCredentialTypeForModel; protected chooseCredential(): string | undefined; private isDeepResearchModel; private executeDeepResearchViaOpenRouter; private initializeModel; private initializeTools; private resolveCapabilityCredentials; private resolveCapabilityToolNode; private jsonSchemaToZod; private executeToolsWithHooks; private createAgentGraph; private executeAgent; }
|
|
199
201
|
export {}; export declare class BubbleError extends Error { readonly variableId?: number; readonly bubbleName?: string; constructor(message: string, options?: { variableId?: number; bubbleName?: string; cause?: Error; }); }
|
|
200
202
|
export declare class BubbleValidationError extends BubbleError { readonly validationErrors?: string[]; constructor(message: string, options?: { variableId?: number; bubbleName?: string; validationErrors?: string[]; cause?: Error; }); }
|
|
201
203
|
export declare class BubbleExecutionError extends BubbleError { readonly executionPhase?: 'instantiation' | 'execution' | 'validation'; constructor(message: string, options?: { variableId?: number; bubbleName?: string; executionPhase?: 'instantiation' | 'execution' | 'validation'; cause?: Error; }); }
|
|
@@ -233,7 +235,7 @@ export interface IToolBubble<TResult extends BubbleOperationResult = BubbleOpera
|
|
|
233
235
|
export interface IUIBubble extends IBubble { readonly type: 'ui'; template: string; }
|
|
234
236
|
export interface IInfraBubble extends IBubble { readonly type: 'infra'; provider: 'aws' | 'gcp' | 'supabase'; resourceType: string; }
|
|
235
237
|
export type BubbleFlowOperationResult = unknown; export interface BubbleContext { logger?: BubbleLogger; variableId?: number; invocationCallSiteKey?: string; dependencyGraph?: DependencyGraphNode; currentUniqueId?: string; __uniqueIdCounters__?: Record<string, number>; [key: string]: unknown; }
|
|
236
|
-
export type ServiceBubbleParams<T = unknown> = T & { credentials?: CredentialOptions; retries?: number; }; export declare const AvailableTools: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; export type AvailableTool = z.infer<typeof AvailableTools>; export type ToolHookContext = { toolName: AvailableTool; toolInput: unknown; toolOutput?: BubbleResult<unknown>; messages: BaseMessage[]; }; export type ToolHookAfter = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; shouldStop?: boolean; }>; export type ToolHookBefore = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; toolInput: Record<string, any>; }>; export type AfterLLMCallContext = { messages: BaseMessage[]; lastAIMessage: AIMessage | AIMessageChunk; hasToolCalls: boolean; }; export type AfterLLMCallHook = (context: AfterLLMCallContext) => Promise<{ messages: BaseMessage[]; continueToAgent?: boolean; }>; export type StreamingCallback = (event: StreamingEvent) => Promise<void> | void; export type ConversationMessage = z.infer<typeof ConversationMessageSchema>; declare const AIAgentParamsSchema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; declare const AIAgentResultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; type AIAgentParams = z.input<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; type AIAgentParamsParsed = z.output<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; type AIAgentResult = z.output<typeof AIAgentResultSchema>; export declare class AIAgentBubble extends ServiceBubble<AIAgentParamsParsed, AIAgentResult> { static readonly type: "service"; static readonly service = "ai-agent"; static readonly authType: "apikey"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; static readonly resultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; static readonly shortDescription = "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode"; static readonly longDescription = "\n An AI agent powered by LangGraph that can use any tool bubble to answer questions.\n Use cases:\n - Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)\n - Multi-step reasoning with tool assistance\n - Tool-augmented conversations with any registered tool\n - JSON mode for structured output (strips markdown formatting)\n "; static readonly alias = "agent"; private factory; private beforeToolCallHook; private afterToolCallHook; private afterLLMCallHook; private streamingCallback; private shouldStopAfterTools; private shouldContinueToAgent; constructor(params?: AIAgentParams, context?: BubbleContext, instanceId?: string); testCredential(): Promise<boolean>; private buildModelConfig; private executeWithModel; private beforeAction; private applyCapabilityResponseAppend; protected performAction(context?: BubbleContext): Promise<AIAgentResult>; protected getCredentialType(): CredentialType; private getCredentialTypeForModel; protected chooseCredential(): string | undefined; private isDeepResearchModel; private executeDeepResearchViaOpenRouter; private initializeModel; private initializeTools; private resolveCapabilityCredentials; private resolveCapabilityToolNode; private jsonSchemaToZod; private executeToolsWithHooks; private createAgentGraph; private executeAgent; }
|
|
238
|
+
export type ServiceBubbleParams<T = unknown> = T & { credentials?: CredentialOptions; retries?: number; }; export declare const AvailableTools: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; export type AvailableTool = z.infer<typeof AvailableTools>; export type ToolHookContext = { toolName: AvailableTool; toolInput: unknown; toolOutput?: BubbleResult<unknown>; messages: BaseMessage[]; }; export type ToolHookAfter = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; shouldStop?: boolean; }>; export type ToolHookBefore = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; toolInput: Record<string, any>; }>; export type AfterLLMCallContext = { messages: BaseMessage[]; lastAIMessage: AIMessage | AIMessageChunk; hasToolCalls: boolean; }; export type AfterLLMCallHook = (context: AfterLLMCallContext) => Promise<{ messages: BaseMessage[]; continueToAgent?: boolean; }>; export type StreamingCallback = (event: StreamingEvent) => Promise<void> | void; export type ConversationMessage = z.infer<typeof ConversationMessageSchema>; declare const AIAgentParamsSchema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; declare const AIAgentResultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; export type AIAgentParams = z.input<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; export type AIAgentParamsParsed = z.output<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; export type AIAgentResult = z.output<typeof AIAgentResultSchema>; export declare class AIAgentBubble extends ServiceBubble<AIAgentParamsParsed, AIAgentResult> { static readonly type: "service"; static readonly service = "ai-agent"; static readonly authType: "apikey"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; static readonly resultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; static readonly shortDescription = "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode"; static readonly longDescription = "\n An AI agent powered by LangGraph that can use any tool bubble to answer questions.\n Use cases:\n - Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)\n - Multi-step reasoning with tool assistance\n - Tool-augmented conversations with any registered tool\n - JSON mode for structured output (strips markdown formatting)\n "; static readonly alias = "agent"; private factory; private beforeToolCallHook; private afterToolCallHook; private afterLLMCallHook; private streamingCallback; private shouldStopAfterTools; private shouldContinueToAgent; constructor(params?: AIAgentParams, context?: BubbleContext, instanceId?: string); testCredential(): Promise<boolean>; private buildModelConfig; private executeWithModel; private beforeAction; protected performAction(context?: BubbleContext): Promise<AIAgentResult>; protected getCredentialType(): CredentialType; private getCredentialTypeForModel; protected chooseCredential(): string | undefined; private isDeepResearchModel; private executeDeepResearchViaOpenRouter; private initializeModel; private initializeTools; private resolveCapabilityCredentials; private resolveCapabilityToolNode; private jsonSchemaToZod; private executeToolsWithHooks; private createAgentGraph; private executeAgent; }
|
|
237
239
|
export {}; export declare class BubbleError extends Error { readonly variableId?: number; readonly bubbleName?: string; constructor(message: string, options?: { variableId?: number; bubbleName?: string; cause?: Error; }); }
|
|
238
240
|
export declare class BubbleValidationError extends BubbleError { readonly validationErrors?: string[]; constructor(message: string, options?: { variableId?: number; bubbleName?: string; validationErrors?: string[]; cause?: Error; }); }
|
|
239
241
|
export declare class BubbleExecutionError extends BubbleError { readonly executionPhase?: 'instantiation' | 'execution' | 'validation'; constructor(message: string, options?: { variableId?: number; bubbleName?: string; executionPhase?: 'instantiation' | 'execution' | 'validation'; cause?: Error; }); }
|
|
@@ -327,7 +329,7 @@ export interface IToolBubble<TResult extends BubbleOperationResult = BubbleOpera
|
|
|
327
329
|
export interface IUIBubble extends IBubble { readonly type: 'ui'; template: string; }
|
|
328
330
|
export interface IInfraBubble extends IBubble { readonly type: 'infra'; provider: 'aws' | 'gcp' | 'supabase'; resourceType: string; }
|
|
329
331
|
export type BubbleFlowOperationResult = unknown; export interface BubbleContext { logger?: BubbleLogger; variableId?: number; invocationCallSiteKey?: string; dependencyGraph?: DependencyGraphNode; currentUniqueId?: string; __uniqueIdCounters__?: Record<string, number>; [key: string]: unknown; }
|
|
330
|
-
export type ServiceBubbleParams<T = unknown> = T & { credentials?: CredentialOptions; retries?: number; }; export declare const AvailableTools: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; export type AvailableTool = z.infer<typeof AvailableTools>; export type ToolHookContext = { toolName: AvailableTool; toolInput: unknown; toolOutput?: BubbleResult<unknown>; messages: BaseMessage[]; }; export type ToolHookAfter = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; shouldStop?: boolean; }>; export type ToolHookBefore = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; toolInput: Record<string, any>; }>; export type AfterLLMCallContext = { messages: BaseMessage[]; lastAIMessage: AIMessage | AIMessageChunk; hasToolCalls: boolean; }; export type AfterLLMCallHook = (context: AfterLLMCallContext) => Promise<{ messages: BaseMessage[]; continueToAgent?: boolean; }>; export type StreamingCallback = (event: StreamingEvent) => Promise<void> | void; export type ConversationMessage = z.infer<typeof ConversationMessageSchema>; declare const AIAgentParamsSchema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; declare const AIAgentResultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; type AIAgentParams = z.input<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; type AIAgentParamsParsed = z.output<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; type AIAgentResult = z.output<typeof AIAgentResultSchema>; export declare class AIAgentBubble extends ServiceBubble<AIAgentParamsParsed, AIAgentResult> { static readonly type: "service"; static readonly service = "ai-agent"; static readonly authType: "apikey"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; static readonly resultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; static readonly shortDescription = "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode"; static readonly longDescription = "\n An AI agent powered by LangGraph that can use any tool bubble to answer questions.\n Use cases:\n - Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)\n - Multi-step reasoning with tool assistance\n - Tool-augmented conversations with any registered tool\n - JSON mode for structured output (strips markdown formatting)\n "; static readonly alias = "agent"; private factory; private beforeToolCallHook; private afterToolCallHook; private afterLLMCallHook; private streamingCallback; private shouldStopAfterTools; private shouldContinueToAgent; constructor(params?: AIAgentParams, context?: BubbleContext, instanceId?: string); testCredential(): Promise<boolean>; private buildModelConfig; private executeWithModel; private beforeAction; private applyCapabilityResponseAppend; protected performAction(context?: BubbleContext): Promise<AIAgentResult>; protected getCredentialType(): CredentialType; private getCredentialTypeForModel; protected chooseCredential(): string | undefined; private isDeepResearchModel; private executeDeepResearchViaOpenRouter; private initializeModel; private initializeTools; private resolveCapabilityCredentials; private resolveCapabilityToolNode; private jsonSchemaToZod; private executeToolsWithHooks; private createAgentGraph; private executeAgent; }
|
|
332
|
+
export type ServiceBubbleParams<T = unknown> = T & { credentials?: CredentialOptions; retries?: number; }; export declare const AvailableTools: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; export type AvailableTool = z.infer<typeof AvailableTools>; export type ToolHookContext = { toolName: AvailableTool; toolInput: unknown; toolOutput?: BubbleResult<unknown>; messages: BaseMessage[]; }; export type ToolHookAfter = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; shouldStop?: boolean; }>; export type ToolHookBefore = (context: ToolHookContext) => Promise<{ messages: BaseMessage[]; toolInput: Record<string, any>; }>; export type AfterLLMCallContext = { messages: BaseMessage[]; lastAIMessage: AIMessage | AIMessageChunk; hasToolCalls: boolean; }; export type AfterLLMCallHook = (context: AfterLLMCallContext) => Promise<{ messages: BaseMessage[]; continueToAgent?: boolean; }>; export type StreamingCallback = (event: StreamingEvent) => Promise<void> | void; export type ConversationMessage = z.infer<typeof ConversationMessageSchema>; declare const AIAgentParamsSchema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; declare const AIAgentResultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; export type AIAgentParams = z.input<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; export type AIAgentParamsParsed = z.output<typeof AIAgentParamsSchema> & { beforeToolCall?: ToolHookBefore; afterToolCall?: ToolHookAfter; afterLLMCall?: AfterLLMCallHook; streamingCallback?: StreamingCallback; }; export type AIAgentResult = z.output<typeof AIAgentResultSchema>; export declare class AIAgentBubble extends ServiceBubble<AIAgentParamsParsed, AIAgentResult> { static readonly type: "service"; static readonly service = "ai-agent"; static readonly authType: "apikey"; static readonly bubbleName: BubbleName; static readonly schema: z.ZodObject<{ message: z.ZodString; images: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{ type: z.ZodDefault<z.ZodLiteral<"base64">>; data: z.ZodString; mimeType: z.ZodDefault<z.ZodString>; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "base64"; data: string; mimeType: string; description?: string | undefined; }, { data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; }>, z.ZodObject<{ type: z.ZodLiteral<"url">; url: z.ZodString; description: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { type: "url"; url: string; description?: string | undefined; }, { type: "url"; url: string; description?: string | undefined; }>]>, "many">>; conversationHistory: z.ZodOptional<z.ZodArray<z.ZodObject<{ role: z.ZodEnum<["user", "assistant", "tool"]>; content: z.ZodString; toolCallId: z.ZodOptional<z.ZodString>; name: z.ZodOptional<z.ZodString>; }, "strip", z.ZodTypeAny, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }, { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }>, "many">>; systemPrompt: z.ZodDefault<z.ZodString>; name: z.ZodOptional<z.ZodDefault<z.ZodString>>; model: z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodDefault<z.ZodNumber>; maxTokens: z.ZodDefault<z.ZodOptional<z.ZodNumber>>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodDefault<z.ZodNumber>; provider: z.ZodOptional<z.ZodArray<z.ZodString, "many">>; jsonMode: z.ZodDefault<z.ZodBoolean>; backupModel: z.ZodOptional<z.ZodDefault<z.ZodObject<{ model: z.ZodEnum<["openai/gpt-5", "openai/gpt-5-mini", "openai/gpt-5.1", "openai/gpt-5.2", "google/gemini-2.5-pro", "google/gemini-2.5-flash", "google/gemini-2.5-flash-lite", "google/gemini-2.5-flash-image-preview", "google/gemini-3-pro-preview", "google/gemini-3-pro-image-preview", "google/gemini-3-flash-preview", "anthropic/claude-sonnet-4-5", "anthropic/claude-opus-4-5", "anthropic/claude-haiku-4-5", "openrouter/x-ai/grok-code-fast-1", "openrouter/z-ai/glm-4.6", "openrouter/z-ai/glm-4.7", "openrouter/anthropic/claude-sonnet-4.5", "openrouter/anthropic/claude-opus-4.5", "openrouter/google/gemini-3-pro-preview", "openrouter/morph/morph-v3-large", "openrouter/openai/gpt-oss-120b", "openrouter/openai/o3-deep-research", "openrouter/openai/o4-mini-deep-research"]>; temperature: z.ZodOptional<z.ZodNumber>; maxTokens: z.ZodOptional<z.ZodNumber>; reasoningEffort: z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>; maxRetries: z.ZodOptional<z.ZodNumber>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; }>>>; }, "strip", z.ZodTypeAny, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }, { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }>>; tools: z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodEnum<["web-search-tool", "web-scrape-tool", "web-crawl-tool", "web-extract-tool", "research-agent-tool", "reddit-scrape-tool", "instagram-tool", "list-bubbles-tool", "list-capabilities-tool", "get-bubble-details-tool", "get-trigger-detail-tool", "bubbleflow-validation-tool", "code-edit-tool", "chart-js-tool", "amazon-shopping-tool", "linkedin-tool", "tiktok-tool", "twitter-tool", "google-maps-tool", "youtube-tool", "people-search-tool", "sql-query-tool"]>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }, { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }>, "many">>; customTools: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodUnion<[z.ZodRecord<z.ZodString, z.ZodUnknown>, z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>]>; func: z.ZodFunction<z.ZodTuple<[z.ZodRecord<z.ZodString, z.ZodUnknown>], z.ZodUnknown>, z.ZodPromise<z.ZodUnknown>>; }, "strip", z.ZodTypeAny, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }, { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }>, "many">>>; maxIterations: z.ZodDefault<z.ZodNumber>; credentials: z.ZodOptional<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>; streaming: z.ZodDefault<z.ZodBoolean>; capabilities: z.ZodOptional<z.ZodDefault<z.ZodArray<z.ZodObject<{ id: z.ZodString; inputs: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodString, "many">]>>>; credentials: z.ZodOptional<z.ZodDefault<z.ZodRecord<z.ZodNativeEnum<typeof CredentialType>, z.ZodString>>>; }, "strip", z.ZodTypeAny, { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }, { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }>, "many">>>; expectedOutputSchema: z.ZodOptional<z.ZodUnion<[z.ZodType<z.ZodTypeAny, z.ZodTypeDef, z.ZodTypeAny>, z.ZodString]>>; }, "strip", z.ZodTypeAny, { message: string; images: ({ type: "base64"; data: string; mimeType: string; description?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[]; systemPrompt: string; model: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature: number; maxTokens: number; maxRetries: number; jsonMode: boolean; reasoningEffort?: "low" | "medium" | "high" | undefined; provider?: string[] | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; }; tools: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[]; maxIterations: number; streaming: boolean; name?: string | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; capabilities?: { id: string; inputs: Record<string, string | number | boolean | string[]>; credentials?: Partial<Record<CredentialType, string>> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }, { message: string; name?: string | undefined; images?: ({ data: string; type?: "base64" | undefined; description?: string | undefined; mimeType?: string | undefined; } | { type: "url"; url: string; description?: string | undefined; })[] | undefined; conversationHistory?: { role: "user" | "assistant" | "tool"; content: string; toolCallId?: string | undefined; name?: string | undefined; }[] | undefined; systemPrompt?: string | undefined; model?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; provider?: string[] | undefined; jsonMode?: boolean | undefined; backupModel?: { model: "openai/gpt-5" | "openai/gpt-5-mini" | "openai/gpt-5.1" | "openai/gpt-5.2" | "google/gemini-2.5-pro" | "google/gemini-2.5-flash" | "google/gemini-2.5-flash-lite" | "google/gemini-2.5-flash-image-preview" | "google/gemini-3-pro-preview" | "google/gemini-3-pro-image-preview" | "google/gemini-3-flash-preview" | "anthropic/claude-sonnet-4-5" | "anthropic/claude-opus-4-5" | "anthropic/claude-haiku-4-5" | "openrouter/x-ai/grok-code-fast-1" | "openrouter/z-ai/glm-4.6" | "openrouter/z-ai/glm-4.7" | "openrouter/anthropic/claude-sonnet-4.5" | "openrouter/anthropic/claude-opus-4.5" | "openrouter/google/gemini-3-pro-preview" | "openrouter/morph/morph-v3-large" | "openrouter/openai/gpt-oss-120b" | "openrouter/openai/o3-deep-research" | "openrouter/openai/o4-mini-deep-research"; temperature?: number | undefined; maxTokens?: number | undefined; reasoningEffort?: "low" | "medium" | "high" | undefined; maxRetries?: number | undefined; } | undefined; } | undefined; credentials?: Partial<Record<CredentialType, string>> | undefined; tools?: { name: "get-bubble-details-tool" | "get-trigger-detail-tool" | "list-bubbles-tool" | "list-capabilities-tool" | "sql-query-tool" | "chart-js-tool" | "web-search-tool" | "web-scrape-tool" | "web-crawl-tool" | "web-extract-tool" | "research-agent-tool" | "reddit-scrape-tool" | "bubbleflow-validation-tool" | "code-edit-tool" | "instagram-tool" | "linkedin-tool" | "tiktok-tool" | "twitter-tool" | "google-maps-tool" | "youtube-tool" | "amazon-shopping-tool" | "people-search-tool"; credentials?: Partial<Record<CredentialType, string>> | undefined; config?: Record<string, unknown> | undefined; }[] | undefined; customTools?: { description: string; name: string; schema: z.ZodTypeAny | Record<string, unknown>; func: (args_0: Record<string, unknown>, ...args: unknown[]) => Promise<unknown>; }[] | undefined; maxIterations?: number | undefined; streaming?: boolean | undefined; capabilities?: { id: string; credentials?: Partial<Record<CredentialType, string>> | undefined; inputs?: Record<string, string | number | boolean | string[]> | undefined; }[] | undefined; expectedOutputSchema?: string | z.ZodTypeAny | undefined; }>; static readonly resultSchema: z.ZodObject<{ response: z.ZodString; reasoning: z.ZodOptional<z.ZodNullable<z.ZodString>>; toolCalls: z.ZodArray<z.ZodObject<{ tool: z.ZodString; input: z.ZodUnknown; output: z.ZodUnknown; }, "strip", z.ZodTypeAny, { tool: string; input?: unknown; output?: unknown; }, { tool: string; input?: unknown; output?: unknown; }>, "many">; iterations: z.ZodNumber; totalCost: z.ZodOptional<z.ZodNumber>; error: z.ZodString; success: z.ZodBoolean; }, "strip", z.ZodTypeAny, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }, { error: string; success: boolean; response: string; toolCalls: { tool: string; input?: unknown; output?: unknown; }[]; iterations: number; reasoning?: string | null | undefined; totalCost?: number | undefined; }>; static readonly shortDescription = "AI agent with LangGraph for tool-enabled conversations, multimodal support, and JSON mode"; static readonly longDescription = "\n An AI agent powered by LangGraph that can use any tool bubble to answer questions.\n Use cases:\n - Add tools to enhance the AI agent's capabilities (web-search-tool, web-scrape-tool)\n - Multi-step reasoning with tool assistance\n - Tool-augmented conversations with any registered tool\n - JSON mode for structured output (strips markdown formatting)\n "; static readonly alias = "agent"; private factory; private beforeToolCallHook; private afterToolCallHook; private afterLLMCallHook; private streamingCallback; private shouldStopAfterTools; private shouldContinueToAgent; constructor(params?: AIAgentParams, context?: BubbleContext, instanceId?: string); testCredential(): Promise<boolean>; private buildModelConfig; private executeWithModel; private beforeAction; protected performAction(context?: BubbleContext): Promise<AIAgentResult>; protected getCredentialType(): CredentialType; private getCredentialTypeForModel; protected chooseCredential(): string | undefined; private isDeepResearchModel; private executeDeepResearchViaOpenRouter; private initializeModel; private initializeTools; private resolveCapabilityCredentials; private resolveCapabilityToolNode; private jsonSchemaToZod; private executeToolsWithHooks; private createAgentGraph; private executeAgent; }
|
|
331
333
|
export {}; export declare abstract class BaseBubble<TParams = unknown, TResult extends BubbleOperationResult = BubbleOperationResult> implements IBubble<TResult> { readonly name: string; readonly schema: z.ZodObject<z.ZodRawShape>; readonly resultSchema: z.ZodObject<z.ZodRawShape>; readonly shortDescription: string; readonly longDescription: string; readonly alias?: string; abstract readonly type: 'service' | 'workflow' | 'tool' | 'ui' | 'infra'; protected readonly params: TParams; protected context?: BubbleContext; previousResult: BubbleResult<BubbleOperationResult> | undefined; protected readonly instanceId?: string; constructor(params: unknown, context?: BubbleContext, instanceId?: string); private computeChildContext; saveResult<R extends BubbleOperationResult>(result: BubbleResult<R>): void; clearSavedResult(): void; toJSON(): Record<string, unknown>; action(): Promise<BubbleResult<TResult>>; generateMockResult(): BubbleResult<TResult>; generateMockResultWithSeed(seed: number): BubbleResult<TResult>; protected abstract performAction(context?: BubbleContext): Promise<TResult>; }
|
|
332
334
|
export declare abstract class ServiceBubble<TParams extends ServiceBubbleParams = ServiceBubbleParams, TResult extends BubbleOperationResult = BubbleOperationResult> extends BaseBubble<TParams, TResult> { readonly type: "service"; authType?: 'oauth' | 'apikey' | 'none' | 'connection-string'; constructor(params: unknown, context?: BubbleContext, instanceId?: string); abstract testCredential(): Promise<boolean>; protected abstract chooseCredential(): string | undefined; getCredentialMetadata(): Promise<DatabaseMetadata | undefined>; get currentParams(): Omit<TParams, 'credentials'>; setParam<K extends keyof TParams>(paramName: K, paramValue: TParams[K]): void; get currentContext(): BubbleContext | undefined; }
|
|
333
335
|
export declare class BubbleError extends Error { readonly variableId?: number; readonly bubbleName?: string; constructor(message: string, options?: { variableId?: number; bubbleName?: string; cause?: Error; }); }
|