diff --git a/extensions/dench-ai-gateway/models.ts b/extensions/dench-ai-gateway/models.ts index c2279a6e27f..c8ad4b3bd42 100644 --- a/extensions/dench-ai-gateway/models.ts +++ b/extensions/dench-ai-gateway/models.ts @@ -13,8 +13,8 @@ export type DenchCloudCatalogModel = { id: string; stableId: string; displayName: string; - provider: "openai" | "anthropic"; - transportProvider: "openai" | "bedrock"; + provider: string; + transportProvider: string; api: "openai-completions"; input: Array<"text" | "image">; reasoning: boolean; @@ -77,12 +77,8 @@ function readBoolean(input: UnknownRecord, ...keys: string[]): boolean | undefin return undefined; } -function isProvider(value: string | undefined): value is "openai" | "anthropic" { - return value === "openai" || value === "anthropic"; -} - -function isTransportProvider(value: string | undefined): value is "openai" | "bedrock" { - return value === "openai" || value === "bedrock"; +function isNonEmptyString(value: string | undefined): value is string { + return typeof value === "string" && value.trim().length > 0; } function normalizeInputKinds(input: unknown, supportsImages: boolean): Array<"text" | "image"> { @@ -213,7 +209,7 @@ export function normalizeDenchCloudCatalogModel(input: unknown): DenchCloudCatal const displayName = readString(record, "name", "displayName", "display_name"); const provider = readString(record, "provider"); const transportProvider = readString(record, "transportProvider", "transport_provider"); - if (!publicId || !stableId || !displayName || !isProvider(provider) || !isTransportProvider(transportProvider)) { + if (!publicId || !stableId || !displayName || !isNonEmptyString(provider) || !isNonEmptyString(transportProvider)) { return null; } diff --git a/package.json b/package.json index d62f639149e..07a51390307 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "denchclaw", - "version": "2.3.1", + "version": "2.3.2", "description": "Fully Managed OpenClaw Framework for managing your CRM, Sales Automation and Outreach agents. The only local productivity tool you need.", "keywords": [], "homepage": "https://github.com/DenchHQ/DenchClaw#readme", diff --git a/packages/dench/package.json b/packages/dench/package.json index 9c3a5af9a72..bf0c659dba5 100644 --- a/packages/dench/package.json +++ b/packages/dench/package.json @@ -1,6 +1,6 @@ { "name": "dench", - "version": "2.3.1", + "version": "2.3.2", "description": "Shorthand alias for denchclaw — AI-powered CRM platform CLI", "license": "MIT", "repository": { @@ -16,7 +16,7 @@ ], "type": "module", "dependencies": { - "denchclaw": "^2.3.1" + "denchclaw": "^2.3.2" }, "engines": { "node": ">=22.12.0" diff --git a/src/cli/dench-cloud.ts b/src/cli/dench-cloud.ts index 4b7b16285de..28f5032d5fc 100644 --- a/src/cli/dench-cloud.ts +++ b/src/cli/dench-cloud.ts @@ -13,8 +13,8 @@ export type DenchCloudCatalogModel = { id: string; stableId: string; displayName: string; - provider: "openai" | "anthropic"; - transportProvider: "openai" | "bedrock"; + provider: string; + transportProvider: string; api: "openai-completions"; input: Array<"text" | "image">; reasoning: boolean; @@ -85,12 +85,8 @@ function readBoolean(input: UnknownRecord, ...keys: string[]): boolean | undefin return undefined; } -function isProvider(value: string | undefined): value is "openai" | "anthropic" { - return value === "openai" || value === "anthropic"; -} - -function isTransportProvider(value: string | undefined): value is "openai" | "bedrock" { - return value === "openai" || value === "bedrock"; +function isNonEmptyString(value: string | undefined): value is string { + return typeof value === "string" && value.trim().length > 0; } function normalizeInputKinds(input: unknown, supportsImages: boolean): Array<"text" | "image"> { @@ -223,7 +219,7 @@ export function normalizeDenchCloudCatalogModel(input: unknown): DenchCloudCatal const displayName = readString(record, "name", "displayName", "display_name"); const provider = readString(record, "provider"); const transportProvider = readString(record, "transportProvider", "transport_provider"); - if (!publicId || !stableId || !displayName || !isProvider(provider) || !isTransportProvider(transportProvider)) { + if (!publicId || !stableId || !displayName || !isNonEmptyString(provider) || !isNonEmptyString(transportProvider)) { return null; }