From 5c3907234865c5809c9829253baf3f5c02fadbb5 Mon Sep 17 00:00:00 2001 From: Nathaniel Girard <72364963+Nathaniel-Girard@users.noreply.github.com> Date: Thu, 29 Jan 2026 13:06:48 -0500 Subject: [PATCH 1/3] fix(integrations/chat): fix chat integration dockerfile local dependencies (#14893) --- integrations/chat/Dockerfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/integrations/chat/Dockerfile b/integrations/chat/Dockerfile index 456d705a6de..63a034a64a1 100644 --- a/integrations/chat/Dockerfile +++ b/integrations/chat/Dockerfile @@ -27,7 +27,8 @@ COPY patches/source-map-js@1.2.1.patch patches/source-map-js@1.2.1.patch # install RUN pnpm install --frozen-lockfile RUN pnpm install --frozen-lockfile --dir integrations/chat -RUN pnpm --filter @botpress/sdk add @bpinternal/zui --save-prod +RUN pnpm --dir packages/sdk add @bpinternal/zui --save-prod +RUN pnpm --dir packages/cli add @botpress/sdk@workspace:* --workspace RUN pnpm install --frozen-lockfile --dir packages/sdk RUN pnpm install --frozen-lockfile --dir packages/cli From f635835a59be539f43648355258fa6f035b143b9 Mon Sep 17 00:00:00 2001 From: JustinBordage <38659460+JustinBordage@users.noreply.github.com> Date: Thu, 29 Jan 2026 17:33:03 -0500 Subject: [PATCH 2/3] refactor(CI): change GitHub actions to use --visibility flag instead of deprecated --public flag (#14856) --- .github/actions/deploy-integrations/action.yml | 2 +- .github/actions/deploy-interfaces/action.yml | 2 +- .github/actions/deploy-plugins/action.yml | 2 +- readme.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/actions/deploy-integrations/action.yml b/.github/actions/deploy-integrations/action.yml index 45d161d5ce7..2e860ed18dc 100644 --- a/.github/actions/deploy-integrations/action.yml +++ b/.github/actions/deploy-integrations/action.yml @@ -84,7 +84,7 @@ runs: integration=$(basename $integration_path) exists=$(./.github/scripts/integration-exists.sh $integration) - base_command="bp deploy -v -y --noBuild --public --allowDeprecated $dryrun" + base_command="bp deploy -v -y --noBuild --visibility public --allowDeprecated $dryrun" upload_sandbox_scripts=false if [ $exists -eq 0 ]; then diff --git a/.github/actions/deploy-interfaces/action.yml b/.github/actions/deploy-interfaces/action.yml index 5973fe1ff0e..965401ea529 100644 --- a/.github/actions/deploy-interfaces/action.yml +++ b/.github/actions/deploy-interfaces/action.yml @@ -54,7 +54,7 @@ runs: interface=$(basename $interface_path) exists=$(./.github/scripts/interface-exists.sh $interface) - base_command="bp deploy -v -y --public" + base_command="bp deploy -v -y --visibility public" if [ $exists -eq 0 ]; then echo -e "\nDeploying interface: ### $interface ###\n" pnpm retry -n 2 -- pnpm -F "{interfaces/$interface}" -c exec -- "$base_command" diff --git a/.github/actions/deploy-plugins/action.yml b/.github/actions/deploy-plugins/action.yml index 6cf819a73c4..8631300a2bc 100644 --- a/.github/actions/deploy-plugins/action.yml +++ b/.github/actions/deploy-plugins/action.yml @@ -54,7 +54,7 @@ runs: plugin=$(basename $plugin_path) exists=$(./.github/scripts/plugin-exists.sh $plugin) - base_command="bp deploy -v -y --public" + base_command="bp deploy -v -y --visibility public" if [ $exists -eq 0 ]; then echo -e "\nDeploying plugin: ### $plugin ###\n" diff --git a/readme.md b/readme.md index 3943f062d46..6ff9edc0c7e 100644 --- a/readme.md +++ b/readme.md @@ -80,7 +80,7 @@ This will deploy your integration's current version to your workspace and make i By default, all integrations are private to the workspace they have been deployed in. When you are ready to share your version with the community, you can make it public by running: ```sh -bp deploy --public +bp deploy --visibility public ``` This will make your integration available to all Botpress users on the [Botpress Hub](https://app.botpress.cloud/hub). Once a version of your integration is public, it cannot be updated again. From f50b3507c53ae4da64e5b7e3376dd3b70293396f Mon Sep 17 00:00:00 2001 From: Abraham Lopez <10536776+AbrahamLopez10@users.noreply.github.com> Date: Thu, 29 Jan 2026 18:15:49 -0500 Subject: [PATCH 3/3] feat(integrations/google-ai): add Gemini 3 Preview models (#14894) --- .../google-ai/integration.definition.ts | 2 +- .../google-ai/src/actions/generate-content.ts | 8 ++++- integrations/google-ai/src/index.ts | 31 +++++++++++++++++++ integrations/google-ai/src/schemas.ts | 8 ++++- 4 files changed, 46 insertions(+), 3 deletions(-) diff --git a/integrations/google-ai/integration.definition.ts b/integrations/google-ai/integration.definition.ts index e1fc41dbf44..936331e0296 100644 --- a/integrations/google-ai/integration.definition.ts +++ b/integrations/google-ai/integration.definition.ts @@ -6,7 +6,7 @@ export default new IntegrationDefinition({ name: 'google-ai', title: 'Google AI', description: 'Gain access to Gemini models for content generation, chat responses, and advanced language tasks.', - version: '6.0.4', + version: '7.0.0', readme: 'hub.md', icon: 'icon.svg', entities: { diff --git a/integrations/google-ai/src/actions/generate-content.ts b/integrations/google-ai/src/actions/generate-content.ts index 3ab52ae3702..faaaafb8033 100644 --- a/integrations/google-ai/src/actions/generate-content.ts +++ b/integrations/google-ai/src/actions/generate-content.ts @@ -126,7 +126,13 @@ async function buildGenerateContentRequest( } } - const thinkingBudget = ThinkingModeBudgetTokens[input.reasoningEffort ?? 'none'] // Default to not use reasoning as Gemini 2.5+ models use optional reasoning + let defaultReasoningEffort: ReasoningEffort = 'none' + if (modelId === 'gemini-3-pro-preview') { + // Gemini 3 Pro doesn't support disabling reasoning, so we use the lowest reasoning effort by default. + defaultReasoningEffort = 'low' + } + + const thinkingBudget = ThinkingModeBudgetTokens[input.reasoningEffort ?? defaultReasoningEffort] const modelSupportsThinking = modelId !== 'models/gemini-2.0-flash' // Gemini 2.0 doesn't support thinking mode return { diff --git a/integrations/google-ai/src/index.ts b/integrations/google-ai/src/index.ts index 7a80851a33a..144e6fec88d 100644 --- a/integrations/google-ai/src/index.ts +++ b/integrations/google-ai/src/index.ts @@ -9,6 +9,37 @@ const googleAIClient = new GoogleGenAI({ apiKey: bp.secrets.GOOGLE_AI_API_KEY }) const DEFAULT_LANGUAGE_MODEL_ID: ModelId = 'models/gemini-2.0-flash' const languageModels: Record = { + 'gemini-3-pro-preview': { + name: 'Gemini 3 Pro (Preview)', + description: + "One of the best models for multimodal understanding, and Google's most powerful agentic and vibe-coding model yet, delivering richer visuals and deeper interactivity, built on a foundation of state-of-the-art reasoning.", + tags: ['preview', 'reasoning', 'agents', 'general-purpose', 'vision'], + input: { + costPer1MTokens: 2, + // Note: Gemini 3 output token limits are actually much higher than the limit enforced below, but we're limiting it for now as they have a tiered token cost that goes up for prompts longer than a certain amount of tokens, as our model pricing is currently based on a flat price per 1M tokens (no matter the prompt size) which is the standard across all major LLM providers except for Google AI. + // Reference: https://ai.google.dev/gemini-api/docs/pricing + maxTokens: 200_000, + }, + output: { + costPer1MTokens: 12, + maxTokens: 65_536, + }, + }, + 'gemini-3-flash-preview': { + name: 'Gemini 3 Flash (Preview)', + description: "Google's most balanced model built for speed, scale, and frontier intelligence.", + tags: ['preview', 'reasoning', 'agents', 'general-purpose', 'vision'], + input: { + costPer1MTokens: 0.5, + // Note: Gemini 3 output token limits are actually much higher than the limit enforced below, but we're limiting it for now as they have a tiered token cost that goes up for prompts longer than a certain amount of tokens, as our model pricing is currently based on a flat price per 1M tokens (no matter the prompt size) which is the standard across all major LLM providers except for Google AI. + // Reference: https://ai.google.dev/gemini-api/docs/pricing + maxTokens: 200_000, + }, + output: { + costPer1MTokens: 3, + maxTokens: 65_536, + }, + }, 'gemini-2.5-flash': { name: 'Gemini 2.5 Flash', description: diff --git a/integrations/google-ai/src/schemas.ts b/integrations/google-ai/src/schemas.ts index 49c65aedce7..8bae789d954 100644 --- a/integrations/google-ai/src/schemas.ts +++ b/integrations/google-ai/src/schemas.ts @@ -3,7 +3,13 @@ import { z } from '@botpress/sdk' export const DefaultModelId: ModelId = 'gemini-2.5-flash' export const ModelId = z - .enum(['gemini-2.5-flash', 'gemini-2.5-pro', 'models/gemini-2.0-flash']) + .enum([ + 'gemini-3-pro-preview', + 'gemini-3-flash-preview', + 'gemini-2.5-flash', + 'gemini-2.5-pro', + 'models/gemini-2.0-flash', + ]) .describe('Model to use for content generation') .placeholder(DefaultModelId) export type ModelId = z.infer