Skip to content
Closed
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
104 commits
Select commit Hold shift + click to select a range
a8e5a71
add ibm-cloud watsonx AI npm dependency
PrasangAPrajapati Aug 25, 2025
feda684
add IBM watsonx AI provider and IBM watsonx embedded AI provider for …
PrasangAPrajapati Aug 26, 2025
ad4b778
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Aug 26, 2025
0362aae
add watsonx missing provider in the typs
PrasangAPrajapati Aug 26, 2025
408b554
fix lock file
PrasangAPrajapati Aug 26, 2025
2129d11
fix providers issue
PrasangAPrajapati Aug 26, 2025
dd2eb49
fix providers issue
PrasangAPrajapati Aug 26, 2025
13f49fe
fix providers issue
PrasangAPrajapati Aug 26, 2025
5574351
add refresh models button to get the models dynamically
PrasangAPrajapati Aug 26, 2025
4d9fbb0
allow any type to handle watsonx
PrasangAPrajapati Aug 26, 2025
37c5584
add support for IBM Cloud Pak for Data
PrasangAPrajapati Aug 27, 2025
f1c700b
add IBM cloud pak for data support for embedded watsonx models for co…
PrasangAPrajapati Aug 27, 2025
6c269c1
add ibm-cloud-sdk-core dependency
PrasangAPrajapati Aug 28, 2025
669240a
set username to empty string instead of undefined
PrasangAPrajapati Sep 4, 2025
f22f692
finish junit tests and naming convention changes to provider
PrasangAPrajapati Sep 9, 2025
ea8e61c
pass empty model id for default
PrasangAPrajapati Sep 9, 2025
1341c43
add timestamp script to generate vsix with timestamp added
PrasangAPrajapati Sep 9, 2025
99bdf52
fix margins and text
PrasangAPrajapati Sep 11, 2025
e196ea1
update IBM watsonx embeddeer for code indeix
PrasangAPrajapati Sep 17, 2025
97c98ac
change it to retrieve models
PrasangAPrajapati Sep 17, 2025
5c1f337
merge main into watsonx-ai-integration
PrasangAPrajapati Sep 17, 2025
f43b197
minor tweaks to fix for merge
PrasangAPrajapati Sep 17, 2025
8176fcc
add ibm-cloud watsonx AI npm dependency
PrasangAPrajapati Aug 25, 2025
2beaa34
rebase to main
PrasangAPrajapati Sep 17, 2025
792b037
add watsonx missing provider in the typs
PrasangAPrajapati Aug 26, 2025
94017b4
fix lock file
PrasangAPrajapati Aug 26, 2025
411cf01
fix providers issue
PrasangAPrajapati Aug 26, 2025
eb0c60e
fix providers issue
PrasangAPrajapati Aug 26, 2025
c821b5e
fix providers issue
PrasangAPrajapati Aug 26, 2025
24697d1
add refresh models button to get the models dynamically
PrasangAPrajapati Aug 26, 2025
196828e
allow any type to handle watsonx
PrasangAPrajapati Aug 26, 2025
0e44af6
add support for IBM Cloud Pak for Data
PrasangAPrajapati Aug 27, 2025
a190c73
add IBM cloud pak for data support for embedded watsonx models for co…
PrasangAPrajapati Aug 27, 2025
3f4d5bc
add ibm-cloud-sdk-core dependency
PrasangAPrajapati Aug 28, 2025
d399992
set username to empty string instead of undefined
PrasangAPrajapati Sep 4, 2025
3bf2038
finish junit tests and naming convention changes to provider
PrasangAPrajapati Sep 9, 2025
7d248cf
pass empty model id for default
PrasangAPrajapati Sep 9, 2025
a4c9b73
add timestamp script to generate vsix with timestamp added
PrasangAPrajapati Sep 9, 2025
13c8137
fix margins and text
PrasangAPrajapati Sep 11, 2025
89495dd
update IBM watsonx embeddeer for code indeix
PrasangAPrajapati Sep 17, 2025
7db1909
change it to retrieve models
PrasangAPrajapati Sep 17, 2025
f8732f3
minor tweaks to fix for merge
PrasangAPrajapati Sep 17, 2025
5e12380
minor rebase changes
PrasangAPrajapati Sep 17, 2025
e316c89
minor rebase changes remove duplicates
PrasangAPrajapati Sep 17, 2025
2529892
Merge branch 'watsonx-ai-integration' of https://github.com/PrasangAP…
PrasangAPrajapati Sep 17, 2025
59ee5aa
Merge branch 'watsonx-ai-integration' of https://github.com/PrasangAP…
PrasangAPrajapati Sep 17, 2025
67e406d
Merge branch 'watsonx-ai-integration' of https://github.com/PrasangAP…
PrasangAPrajapati Sep 17, 2025
b7bd92f
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Sep 17, 2025
4723c84
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Sep 17, 2025
3484642
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Sep 17, 2025
24f0d45
update pnpm lock file
PrasangAPrajapati Sep 18, 2025
91706f4
fix code indexing and remove duplicates
PrasangAPrajapati Sep 18, 2025
c8196d2
add missing keys in each languages for translations
PrasangAPrajapati Sep 18, 2025
862402c
add missing keys in each languages for translations
PrasangAPrajapati Sep 18, 2025
8f10c55
fix junit tests for watsonx provider and embedded watsonx provider
PrasangAPrajapati Sep 18, 2025
3867b84
fix junit tests for watsonx provider and embedded watsonx provider
PrasangAPrajapati Sep 18, 2025
ea2408f
Address roomote feedback and remove console log statement that were a…
PrasangAPrajapati Sep 18, 2025
1a8239c
Address roomote feedback for better error handling
PrasangAPrajapati Sep 18, 2025
9ddfd95
revert accidental changes
PrasangAPrajapati Sep 18, 2025
c1a7eb1
revert accidental changes
PrasangAPrajapati Sep 18, 2025
8e0e30c
revert accidental changes
PrasangAPrajapati Sep 18, 2025
d337bfc
Update src/api/providers/fetchers/watsonx.ts
PrasangAPrajapati Sep 18, 2025
59380cb
Update src/i18n/locales/pl/embeddings.json
PrasangAPrajapati Sep 18, 2025
87f1e1a
Update src/i18n/locales/ru/embeddings.json
PrasangAPrajapati Sep 18, 2025
fc7f146
Update webview-ui/src/components/settings/providers/WatsonxAI.tsx
PrasangAPrajapati Sep 18, 2025
7b1be53
Update webview-ui/src/i18n/locales/ca/settings.json
PrasangAPrajapati Sep 18, 2025
43e5e90
Update webview-ui/src/i18n/locales/de/settings.json
PrasangAPrajapati Sep 18, 2025
0157a36
Update webview-ui/src/i18n/locales/de/settings.json
PrasangAPrajapati Sep 18, 2025
7d2a819
Update webview-ui/src/i18n/locales/nl/settings.json
PrasangAPrajapati Sep 18, 2025
8bdd84f
Update webview-ui/src/i18n/locales/nl/settings.json
PrasangAPrajapati Sep 18, 2025
395406f
Update webview-ui/src/i18n/locales/pt-BR/settings.json
PrasangAPrajapati Sep 18, 2025
e5623b0
Update webview-ui/src/i18n/locales/tr/settings.json
PrasangAPrajapati Sep 18, 2025
e3c9df1
fix roo-mote suggestions
PrasangAPrajapati Sep 18, 2025
c284d60
remove the watsonx models which does not support text_chat
PrasangAPrajapati Sep 19, 2025
a8ede1f
re-use the openAI messages conversion
PrasangAPrajapati Sep 22, 2025
0f8495f
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Sep 22, 2025
aa27d16
revert some formatting changes
PrasangAPrajapati Sep 22, 2025
1695c67
pull origin
PrasangAPrajapati Sep 22, 2025
ad876bc
remove duplicate definition and fix test
PrasangAPrajapati Sep 22, 2025
82588ce
fix providers issue
PrasangAPrajapati Aug 26, 2025
67c1fac
add refresh models button to get the models dynamically
PrasangAPrajapati Aug 26, 2025
a48da10
add IBM cloud pak for data support for embedded watsonx models for co…
PrasangAPrajapati Aug 27, 2025
64dc0b2
finish junit tests and naming convention changes to provider
PrasangAPrajapati Sep 9, 2025
636604b
update IBM watsonx embeddeer for code indeix
PrasangAPrajapati Sep 17, 2025
415bc02
add IBM watsonx AI provider and IBM watsonx embedded AI provider for …
PrasangAPrajapati Aug 26, 2025
63d71d4
add refresh models button to get the models dynamically
PrasangAPrajapati Aug 26, 2025
4bd8938
add IBM cloud pak for data support for embedded watsonx models for co…
PrasangAPrajapati Aug 27, 2025
a25bd4b
finish junit tests and naming convention changes to provider
PrasangAPrajapati Sep 9, 2025
7d2136c
update IBM watsonx embeddeer for code indeix
PrasangAPrajapati Sep 17, 2025
c72a633
fix code indexing and remove duplicates
PrasangAPrajapati Sep 18, 2025
709f81f
add missing keys in each languages for translations
PrasangAPrajapati Sep 18, 2025
3343d52
revert some formatting changes
PrasangAPrajapati Sep 22, 2025
b160e96
format watsonx
PrasangAPrajapati Sep 22, 2025
c709427
change variable
PrasangAPrajapati Sep 22, 2025
90147b2
remove duplicate imports
PrasangAPrajapati Sep 22, 2025
2be16a1
remove duplicate imports
PrasangAPrajapati Sep 22, 2025
5c16cdf
run format
PrasangAPrajapati Sep 22, 2025
7813862
remove not needed file
PrasangAPrajapati Sep 22, 2025
f2a5804
Revert unintended changes to featherless.ts, codeSearchTool.ts and c-…
PrasangAPrajapati Sep 22, 2025
93d86cb
Minor UI changes to watsonx AI
PrasangAPrajapati Sep 22, 2025
d2edf65
update authentication for IBM Cloud Pak for Data
PrasangAPrajapati Sep 24, 2025
3bcfe6b
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Sep 24, 2025
798f3cc
Merge branch 'main' into watsonx-ai-integration
PrasangAPrajapati Sep 24, 2025
bfb97a3
Revert "Merge branch 'main' into watsonx-ai-integration"
PrasangAPrajapati Sep 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
- [简体中文](locales/zh-CN/README.md)
- [繁體中文](locales/zh-TW/README.md)
- ...
</details>
</details>

---

Expand Down
4 changes: 2 additions & 2 deletions apps/web-roo-code/src/app/privacy/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,8 @@ export default function Privacy() {
Your source code does not transit Roo Code servers unless you explicitly choose Roo Code
as a model provider (proxy mode).
</strong>{" "}
When Roo Code Cloud is your model provider, your code briefly transits Roo Code servers only to
forward it to the upstream model, is not stored, and is deleted immediately after
When Roo Code Cloud is your model provider, your code briefly transits Roo Code servers only
to forward it to the upstream model, is not stored, and is deleted immediately after
forwarding. Otherwise, your code is sent <strong>directly</strong>—via client‑to‑provider
TLS—to the model you select. Roo Code never stores, inspects, or trains on your code.
</li>
Expand Down
2 changes: 1 addition & 1 deletion locales/ca/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/de/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/es/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/fr/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/hi/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/id/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/it/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/ja/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/ko/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/nl/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/pl/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/pt-BR/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/ru/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/tr/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/vi/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/zh-CN/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion locales/zh-TW/README.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@
"bundle:nightly": "turbo bundle:nightly --log-order grouped --output-logs new-only",
"vsix": "turbo vsix --log-order grouped --output-logs new-only",
"vsix:nightly": "turbo vsix:nightly --log-order grouped --output-logs new-only",
"vsix:timestamp": "node scripts/update-version-timestamp.js && turbo vsix --log-order grouped --output-logs new-only",
"clean": "turbo clean --log-order grouped --output-logs new-only && rimraf dist out bin .vite-port .turbo",
"install:vsix": "pnpm install --frozen-lockfile && pnpm clean && pnpm vsix && node scripts/install-vsix.js",
"install:vsix:timestamp": "pnpm install --frozen-lockfile && pnpm clean && pnpm vsix:timestamp && node scripts/install-vsix.js",
"changeset:version": "cp CHANGELOG.md src/CHANGELOG.md && changeset version && cp -vf src/CHANGELOG.md .",
"knip": "knip --include files",
"update-contributors": "node scripts/update-contributors.js",
Expand Down
5 changes: 4 additions & 1 deletion packages/types/src/codebase-index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ export const codebaseIndexConfigSchema = z.object({
codebaseIndexEnabled: z.boolean().optional(),
codebaseIndexQdrantUrl: z.string().optional(),
codebaseIndexEmbedderProvider: z
.enum(["openai", "ollama", "openai-compatible", "gemini", "mistral", "vercel-ai-gateway"])
.enum(["openai", "ollama", "openai-compatible", "gemini", "mistral", "vercel-ai-gateway", "watsonx"])
.optional(),
codebaseIndexEmbedderBaseUrl: z.string().optional(),
codebaseIndexEmbedderModelId: z.string().optional(),
Expand Down Expand Up @@ -51,6 +51,7 @@ export const codebaseIndexModelsSchema = z.object({
gemini: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
mistral: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
"vercel-ai-gateway": z.record(z.string(), z.object({ dimension: z.number() })).optional(),
watsonx: z.record(z.string(), z.object({ dimension: z.number() })).optional(),
})

export type CodebaseIndexModels = z.infer<typeof codebaseIndexModelsSchema>
Expand All @@ -68,6 +69,8 @@ export const codebaseIndexProviderSchema = z.object({
codebaseIndexGeminiApiKey: z.string().optional(),
codebaseIndexMistralApiKey: z.string().optional(),
codebaseIndexVercelAiGatewayApiKey: z.string().optional(),
codebaseIndexWatsonxApiKey: z.string().optional(),
codebaseIndexWatsonxProjectId: z.string().optional(),
})

export type CodebaseIndexProvider = z.infer<typeof codebaseIndexProviderSchema>
3 changes: 3 additions & 0 deletions packages/types/src/global-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,9 @@ export const SECRET_STATE_KEYS = [
"codebaseIndexMistralApiKey",
"codebaseIndexVercelAiGatewayApiKey",
"huggingFaceApiKey",
"watsonxApiKey",
"codebaseIndexWatsonxApiKey",
"codebaseIndexWatsonxProjectId",
"sambaNovaApiKey",
"zaiApiKey",
"fireworksApiKey",
Expand Down
18 changes: 18 additions & 0 deletions packages/types/src/provider-settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export const providerNames = [
"chutes",
"litellm",
"huggingface",
"watsonx",
"cerebras",
"sambanova",
"zai",
Expand Down Expand Up @@ -300,6 +301,18 @@ const litellmSchema = baseProviderSettingsSchema.extend({
litellmUsePromptCache: z.boolean().optional(),
})

const watsonxSchema = baseProviderSettingsSchema.extend({
watsonxPlatform: z.string().optional(),
watsonxBaseUrl: z.string().optional(),
watsonxApiKey: z.string().optional(),
watsonxProjectId: z.string().optional(),
watsonxModelId: z.string().optional(),
watsonxUsername: z.string().optional(),
watsonxAuthType: z.string().optional(),
watsonxPassword: z.string().optional(),
watsonxRegion: z.string().optional(),
})

const cerebrasSchema = apiModelIdProviderModelSchema.extend({
cerebrasApiKey: z.string().optional(),
})
Expand Down Expand Up @@ -375,6 +388,7 @@ export const providerSettingsSchemaDiscriminated = z.discriminatedUnion("apiProv
huggingFaceSchema.merge(z.object({ apiProvider: z.literal("huggingface") })),
chutesSchema.merge(z.object({ apiProvider: z.literal("chutes") })),
litellmSchema.merge(z.object({ apiProvider: z.literal("litellm") })),
watsonxSchema.merge(z.object({ apiProvider: z.literal("watsonx") })),
cerebrasSchema.merge(z.object({ apiProvider: z.literal("cerebras") })),
sambaNovaSchema.merge(z.object({ apiProvider: z.literal("sambanova") })),
zaiSchema.merge(z.object({ apiProvider: z.literal("zai") })),
Expand Down Expand Up @@ -426,6 +440,7 @@ export const providerSettingsSchema = z.object({
...rooSchema.shape,
...vercelAiGatewaySchema.shape,
...codebaseIndexProviderSchema.shape,
...watsonxSchema.shape,
})

export type ProviderSettings = z.infer<typeof providerSettingsSchema>
Expand Down Expand Up @@ -455,6 +470,7 @@ export const MODEL_ID_KEYS: Partial<keyof ProviderSettings>[] = [
"ioIntelligenceModelId",
"vercelAiGatewayModelId",
"deepInfraModelId",
"watsonxModelId",
]

export const getModelId = (settings: ProviderSettings): string | undefined => {
Expand Down Expand Up @@ -578,6 +594,7 @@ export const MODELS_BY_PROVIDER: Record<
unbound: { id: "unbound", label: "Unbound", models: [] },
deepinfra: { id: "deepinfra", label: "DeepInfra", models: [] },
"vercel-ai-gateway": { id: "vercel-ai-gateway", label: "Vercel AI Gateway", models: [] },
watsonx: { id: "watsonx", label: "IBM watsonx", models: [] },
}

export const dynamicProviders = [
Expand All @@ -589,6 +606,7 @@ export const dynamicProviders = [
"unbound",
"deepinfra",
"vercel-ai-gateway",
"watsonx",
] as const satisfies readonly ProviderName[]

export type DynamicProvider = (typeof dynamicProviders)[number]
Expand Down
1 change: 1 addition & 0 deletions packages/types/src/providers/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -30,3 +30,4 @@ export * from "./xai.js"
export * from "./vercel-ai-gateway.js"
export * from "./zai.js"
export * from "./deepinfra.js"
export * from "./watsonx.js"
25 changes: 25 additions & 0 deletions packages/types/src/providers/watsonx.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import type { ModelInfo } from "../model.js"

export type WatsonxAIModelId = keyof typeof watsonxAiModels
export const watsonxAiDefaultModelId = ""
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P3] Empty default model id can lead to runtime calls with an empty model id if validation is bypassed. Prefer a safe explicit default (e.g., ibm/granite-3-3-8b-instruct) or require selection.


// Common model properties
export const baseModelInfo: ModelInfo = {
maxTokens: 131072,
contextWindow: 131072,
supportsImages: false,
supportsPromptCache: false,
supportsReasoningEffort: true,
supportsReasoningBudget: false,
requiredReasoningBudget: false,
inputPrice: 5.22,
outputPrice: 5.22,
}

export const watsonxAiModels = {
// IBM Granite model
"ibm/granite-3-3-8b-instruct": {
...baseModelInfo,
description: "",
},
} as const satisfies Record<string, ModelInfo>
Loading
Loading