@oh-my-pi/pi-catalog 16.0.0 → 16.0.1
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/CHANGELOG.md +6 -0
- package/dist/types/provider-models/descriptors.d.ts +10 -0
- package/dist/types/provider-models/openai-compat.d.ts +6 -0
- package/package.json +3 -3
- package/src/identity/priority.ts +1 -0
- package/src/models.json +183 -0
- package/src/provider-models/descriptors.ts +9 -0
- package/src/provider-models/openai-compat.ts +152 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [16.0.1] - 2026-06-15
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added the Umans AI Coding Plan provider catalog with Anthropic-compatible model metadata and dynamic discovery ([#2636](https://github.com/can1357/oh-my-pi/pull/2636) by [@oldschoola](https://github.com/oldschoola)).
|
|
10
|
+
|
|
5
11
|
## [16.0.0] - 2026-06-15
|
|
6
12
|
|
|
7
13
|
### Breaking Changes
|
|
@@ -272,6 +272,16 @@ export declare const CATALOG_PROVIDERS: readonly [{
|
|
|
272
272
|
readonly catalogDiscovery: {
|
|
273
273
|
readonly label: "Together";
|
|
274
274
|
};
|
|
275
|
+
}, {
|
|
276
|
+
readonly id: "umans";
|
|
277
|
+
readonly defaultModel: "umans-coder";
|
|
278
|
+
readonly envVars: readonly ["UMANS_AI_CODING_PLAN_API_KEY"];
|
|
279
|
+
readonly createModelManagerOptions: (config: ModelManagerConfig) => import("..").ModelManagerOptions<"anthropic-messages", unknown>;
|
|
280
|
+
readonly dynamicModelsAuthoritative: true;
|
|
281
|
+
readonly catalogDiscovery: {
|
|
282
|
+
readonly label: "Umans AI Coding Plan";
|
|
283
|
+
readonly allowUnauthenticated: true;
|
|
284
|
+
};
|
|
275
285
|
}, {
|
|
276
286
|
readonly id: "venice";
|
|
277
287
|
readonly defaultModel: "llama-3.3-70b";
|
|
@@ -40,6 +40,12 @@ type SimpleProviderConfig = {
|
|
|
40
40
|
fetch?: FetchImpl;
|
|
41
41
|
};
|
|
42
42
|
export declare function createSimpleOpenAICompletionsOptions(providerId: Parameters<typeof getBundledModels>[0], defaultBaseUrl: string, config?: SimpleProviderConfig): ModelManagerOptions<"openai-completions">;
|
|
43
|
+
export interface UmansModelManagerConfig {
|
|
44
|
+
apiKey?: string;
|
|
45
|
+
baseUrl?: string;
|
|
46
|
+
fetch?: FetchImpl;
|
|
47
|
+
}
|
|
48
|
+
export declare function umansModelManagerOptions(config?: UmansModelManagerConfig): ModelManagerOptions<"anthropic-messages">;
|
|
43
49
|
export interface OpenAIModelManagerConfig {
|
|
44
50
|
apiKey?: string;
|
|
45
51
|
baseUrl?: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oh-my-pi/pi-catalog",
|
|
4
|
-
"version": "16.0.
|
|
4
|
+
"version": "16.0.1",
|
|
5
5
|
"description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
6
6
|
"homepage": "https://omp.sh",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -34,11 +34,11 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@bufbuild/protobuf": "^2.12.0",
|
|
37
|
-
"@oh-my-pi/pi-utils": "16.0.
|
|
37
|
+
"@oh-my-pi/pi-utils": "16.0.1",
|
|
38
38
|
"zod": "^4"
|
|
39
39
|
},
|
|
40
40
|
"devDependencies": {
|
|
41
|
-
"@oh-my-pi/pi-ai": "16.0.
|
|
41
|
+
"@oh-my-pi/pi-ai": "16.0.1",
|
|
42
42
|
"@types/bun": "^1.3.14"
|
|
43
43
|
},
|
|
44
44
|
"engines": {
|
package/src/identity/priority.ts
CHANGED
|
@@ -27,6 +27,7 @@ const DEFAULT_MODEL_PROVIDER_ORDER = [
|
|
|
27
27
|
// Generic gateways and editor/proxy providers. These are useful when picked
|
|
28
28
|
// explicitly, but should not win ambiguous automatic role selection.
|
|
29
29
|
"alibaba-coding-plan",
|
|
30
|
+
"umans",
|
|
30
31
|
"google-antigravity",
|
|
31
32
|
"opencode-zen",
|
|
32
33
|
"gitlab-duo",
|
package/src/models.json
CHANGED
|
@@ -68887,6 +68887,189 @@
|
|
|
68887
68887
|
}
|
|
68888
68888
|
}
|
|
68889
68889
|
},
|
|
68890
|
+
"umans": {
|
|
68891
|
+
"umans-coder": {
|
|
68892
|
+
"id": "umans-coder",
|
|
68893
|
+
"name": "Umans Coder",
|
|
68894
|
+
"api": "anthropic-messages",
|
|
68895
|
+
"provider": "umans",
|
|
68896
|
+
"baseUrl": "https://api.code.umans.ai",
|
|
68897
|
+
"reasoning": true,
|
|
68898
|
+
"input": [
|
|
68899
|
+
"text",
|
|
68900
|
+
"image"
|
|
68901
|
+
],
|
|
68902
|
+
"cost": {
|
|
68903
|
+
"input": 0,
|
|
68904
|
+
"output": 0,
|
|
68905
|
+
"cacheRead": 0,
|
|
68906
|
+
"cacheWrite": 0
|
|
68907
|
+
},
|
|
68908
|
+
"contextWindow": 262144,
|
|
68909
|
+
"maxTokens": 262144,
|
|
68910
|
+
"thinking": {
|
|
68911
|
+
"mode": "budget",
|
|
68912
|
+
"efforts": [
|
|
68913
|
+
"minimal",
|
|
68914
|
+
"low",
|
|
68915
|
+
"medium",
|
|
68916
|
+
"high",
|
|
68917
|
+
"xhigh"
|
|
68918
|
+
]
|
|
68919
|
+
}
|
|
68920
|
+
},
|
|
68921
|
+
"umans-flash": {
|
|
68922
|
+
"id": "umans-flash",
|
|
68923
|
+
"name": "Umans Flash",
|
|
68924
|
+
"api": "anthropic-messages",
|
|
68925
|
+
"provider": "umans",
|
|
68926
|
+
"baseUrl": "https://api.code.umans.ai",
|
|
68927
|
+
"reasoning": true,
|
|
68928
|
+
"input": [
|
|
68929
|
+
"text",
|
|
68930
|
+
"image"
|
|
68931
|
+
],
|
|
68932
|
+
"cost": {
|
|
68933
|
+
"input": 0,
|
|
68934
|
+
"output": 0,
|
|
68935
|
+
"cacheRead": 0,
|
|
68936
|
+
"cacheWrite": 0
|
|
68937
|
+
},
|
|
68938
|
+
"contextWindow": 262144,
|
|
68939
|
+
"maxTokens": 262144,
|
|
68940
|
+
"thinking": {
|
|
68941
|
+
"mode": "budget",
|
|
68942
|
+
"efforts": [
|
|
68943
|
+
"minimal",
|
|
68944
|
+
"low",
|
|
68945
|
+
"medium",
|
|
68946
|
+
"high",
|
|
68947
|
+
"xhigh"
|
|
68948
|
+
]
|
|
68949
|
+
}
|
|
68950
|
+
},
|
|
68951
|
+
"umans-glm-5.1": {
|
|
68952
|
+
"id": "umans-glm-5.1",
|
|
68953
|
+
"name": "GLM 5.1",
|
|
68954
|
+
"api": "anthropic-messages",
|
|
68955
|
+
"provider": "umans",
|
|
68956
|
+
"baseUrl": "https://api.code.umans.ai",
|
|
68957
|
+
"reasoning": true,
|
|
68958
|
+
"input": [
|
|
68959
|
+
"text",
|
|
68960
|
+
"image"
|
|
68961
|
+
],
|
|
68962
|
+
"cost": {
|
|
68963
|
+
"input": 0,
|
|
68964
|
+
"output": 0,
|
|
68965
|
+
"cacheRead": 0,
|
|
68966
|
+
"cacheWrite": 0
|
|
68967
|
+
},
|
|
68968
|
+
"contextWindow": 204800,
|
|
68969
|
+
"maxTokens": 131072,
|
|
68970
|
+
"thinking": {
|
|
68971
|
+
"mode": "budget",
|
|
68972
|
+
"efforts": [
|
|
68973
|
+
"minimal",
|
|
68974
|
+
"low",
|
|
68975
|
+
"medium",
|
|
68976
|
+
"high",
|
|
68977
|
+
"xhigh"
|
|
68978
|
+
]
|
|
68979
|
+
}
|
|
68980
|
+
},
|
|
68981
|
+
"umans-kimi-k2.6": {
|
|
68982
|
+
"id": "umans-kimi-k2.6",
|
|
68983
|
+
"name": "Kimi K2.6",
|
|
68984
|
+
"api": "anthropic-messages",
|
|
68985
|
+
"provider": "umans",
|
|
68986
|
+
"baseUrl": "https://api.code.umans.ai",
|
|
68987
|
+
"reasoning": true,
|
|
68988
|
+
"input": [
|
|
68989
|
+
"text",
|
|
68990
|
+
"image"
|
|
68991
|
+
],
|
|
68992
|
+
"cost": {
|
|
68993
|
+
"input": 0,
|
|
68994
|
+
"output": 0,
|
|
68995
|
+
"cacheRead": 0,
|
|
68996
|
+
"cacheWrite": 0
|
|
68997
|
+
},
|
|
68998
|
+
"contextWindow": 262144,
|
|
68999
|
+
"maxTokens": 262144,
|
|
69000
|
+
"thinking": {
|
|
69001
|
+
"mode": "budget",
|
|
69002
|
+
"efforts": [
|
|
69003
|
+
"minimal",
|
|
69004
|
+
"low",
|
|
69005
|
+
"medium",
|
|
69006
|
+
"high",
|
|
69007
|
+
"xhigh"
|
|
69008
|
+
]
|
|
69009
|
+
}
|
|
69010
|
+
},
|
|
69011
|
+
"umans-kimi-k2.7": {
|
|
69012
|
+
"id": "umans-kimi-k2.7",
|
|
69013
|
+
"name": "Kimi K2.7 Code",
|
|
69014
|
+
"api": "anthropic-messages",
|
|
69015
|
+
"provider": "umans",
|
|
69016
|
+
"baseUrl": "https://api.code.umans.ai",
|
|
69017
|
+
"reasoning": true,
|
|
69018
|
+
"input": [
|
|
69019
|
+
"text",
|
|
69020
|
+
"image"
|
|
69021
|
+
],
|
|
69022
|
+
"cost": {
|
|
69023
|
+
"input": 0,
|
|
69024
|
+
"output": 0,
|
|
69025
|
+
"cacheRead": 0,
|
|
69026
|
+
"cacheWrite": 0
|
|
69027
|
+
},
|
|
69028
|
+
"contextWindow": 262144,
|
|
69029
|
+
"maxTokens": 262144,
|
|
69030
|
+
"thinking": {
|
|
69031
|
+
"mode": "budget",
|
|
69032
|
+
"efforts": [
|
|
69033
|
+
"minimal",
|
|
69034
|
+
"low",
|
|
69035
|
+
"medium",
|
|
69036
|
+
"high",
|
|
69037
|
+
"xhigh"
|
|
69038
|
+
],
|
|
69039
|
+
"requiresEffort": true
|
|
69040
|
+
}
|
|
69041
|
+
},
|
|
69042
|
+
"umans-qwen3.6-35b-a3b": {
|
|
69043
|
+
"id": "umans-qwen3.6-35b-a3b",
|
|
69044
|
+
"name": "Qwen3.6 35B A3B",
|
|
69045
|
+
"api": "anthropic-messages",
|
|
69046
|
+
"provider": "umans",
|
|
69047
|
+
"baseUrl": "https://api.code.umans.ai",
|
|
69048
|
+
"reasoning": true,
|
|
69049
|
+
"input": [
|
|
69050
|
+
"text",
|
|
69051
|
+
"image"
|
|
69052
|
+
],
|
|
69053
|
+
"cost": {
|
|
69054
|
+
"input": 0,
|
|
69055
|
+
"output": 0,
|
|
69056
|
+
"cacheRead": 0,
|
|
69057
|
+
"cacheWrite": 0
|
|
69058
|
+
},
|
|
69059
|
+
"contextWindow": 262144,
|
|
69060
|
+
"maxTokens": 262144,
|
|
69061
|
+
"thinking": {
|
|
69062
|
+
"mode": "budget",
|
|
69063
|
+
"efforts": [
|
|
69064
|
+
"minimal",
|
|
69065
|
+
"low",
|
|
69066
|
+
"medium",
|
|
69067
|
+
"high",
|
|
69068
|
+
"xhigh"
|
|
69069
|
+
]
|
|
69070
|
+
}
|
|
69071
|
+
}
|
|
69072
|
+
},
|
|
68890
69073
|
"venice": {
|
|
68891
69074
|
"aion-labs-aion-2-0": {
|
|
68892
69075
|
"id": "aion-labs-aion-2-0",
|
|
@@ -37,6 +37,7 @@ import {
|
|
|
37
37
|
qwenPortalModelManagerOptions,
|
|
38
38
|
syntheticModelManagerOptions,
|
|
39
39
|
togetherModelManagerOptions,
|
|
40
|
+
umansModelManagerOptions,
|
|
40
41
|
veniceModelManagerOptions,
|
|
41
42
|
vercelAiGatewayModelManagerOptions,
|
|
42
43
|
vllmModelManagerOptions,
|
|
@@ -313,6 +314,14 @@ export const CATALOG_PROVIDERS = [
|
|
|
313
314
|
createModelManagerOptions: (config: ModelManagerConfig) => togetherModelManagerOptions(config),
|
|
314
315
|
catalogDiscovery: { label: "Together" },
|
|
315
316
|
},
|
|
317
|
+
{
|
|
318
|
+
id: "umans",
|
|
319
|
+
defaultModel: "umans-coder",
|
|
320
|
+
envVars: ["UMANS_AI_CODING_PLAN_API_KEY"],
|
|
321
|
+
createModelManagerOptions: (config: ModelManagerConfig) => umansModelManagerOptions(config),
|
|
322
|
+
dynamicModelsAuthoritative: true,
|
|
323
|
+
catalogDiscovery: { label: "Umans AI Coding Plan", allowUnauthenticated: true },
|
|
324
|
+
},
|
|
316
325
|
{
|
|
317
326
|
id: "venice",
|
|
318
327
|
defaultModel: "llama-3.3-70b",
|
|
@@ -568,6 +568,155 @@ function createSimpleAnthropicProviderOptions(
|
|
|
568
568
|
};
|
|
569
569
|
}
|
|
570
570
|
|
|
571
|
+
// ---------------------------------------------------------------------------
|
|
572
|
+
// Umans AI Coding Plan
|
|
573
|
+
// ---------------------------------------------------------------------------
|
|
574
|
+
|
|
575
|
+
const UMANS_BASE_URL = "https://api.code.umans.ai";
|
|
576
|
+
const UMANS_MODELS_INFO_PATH = "/models/info";
|
|
577
|
+
const UMANS_REASONING_EFFORT_BY_LEVEL: Record<string, Effort> = {
|
|
578
|
+
minimal: Effort.Minimal,
|
|
579
|
+
low: Effort.Low,
|
|
580
|
+
medium: Effort.Medium,
|
|
581
|
+
high: Effort.High,
|
|
582
|
+
xhigh: Effort.XHigh,
|
|
583
|
+
};
|
|
584
|
+
const UMANS_DEFAULT_REASONING_EFFORTS = [Effort.Minimal, Effort.Low, Effort.Medium, Effort.High, Effort.XHigh] as const;
|
|
585
|
+
|
|
586
|
+
export interface UmansModelManagerConfig {
|
|
587
|
+
apiKey?: string;
|
|
588
|
+
baseUrl?: string;
|
|
589
|
+
fetch?: FetchImpl;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
interface UmansModelInfo {
|
|
593
|
+
name?: unknown;
|
|
594
|
+
display_name?: unknown;
|
|
595
|
+
capabilities?: unknown;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
function normalizeUmansBaseUrl(baseUrl: string | undefined): string {
|
|
599
|
+
const normalized = normalizeAnthropicBaseUrl(baseUrl, UMANS_BASE_URL);
|
|
600
|
+
return normalized.endsWith("/v1") ? normalized.slice(0, -3) : normalized;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
function umansSupportsVision(value: unknown): boolean {
|
|
604
|
+
return value === true || (typeof value === "string" && value.length > 0);
|
|
605
|
+
}
|
|
606
|
+
|
|
607
|
+
function umansReasoningSupported(value: unknown): boolean {
|
|
608
|
+
return isRecord(value) ? value.supported === true : value === true;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
function mapUmansReasoningEfforts(value: unknown): readonly Effort[] {
|
|
612
|
+
if (!isRecord(value) || !Array.isArray(value.levels)) {
|
|
613
|
+
return UMANS_DEFAULT_REASONING_EFFORTS;
|
|
614
|
+
}
|
|
615
|
+
const efforts: Effort[] = [];
|
|
616
|
+
for (const level of value.levels) {
|
|
617
|
+
if (typeof level !== "string") continue;
|
|
618
|
+
const effort = UMANS_REASONING_EFFORT_BY_LEVEL[level];
|
|
619
|
+
if (effort !== undefined && !efforts.includes(effort)) {
|
|
620
|
+
efforts.push(effort);
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
return efforts.length > 0 ? efforts : UMANS_DEFAULT_REASONING_EFFORTS;
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
function mapUmansThinkingConfig(value: unknown): ThinkingConfig | undefined {
|
|
627
|
+
if (!umansReasoningSupported(value)) return undefined;
|
|
628
|
+
const efforts = mapUmansReasoningEfforts(value);
|
|
629
|
+
const thinking: ThinkingConfig = { mode: "budget", efforts };
|
|
630
|
+
if (isRecord(value)) {
|
|
631
|
+
if (value.can_disable === false) {
|
|
632
|
+
thinking.requiresEffort = true;
|
|
633
|
+
}
|
|
634
|
+
if (typeof value.default_level === "string") {
|
|
635
|
+
const defaultLevel = UMANS_REASONING_EFFORT_BY_LEVEL[value.default_level];
|
|
636
|
+
if (defaultLevel !== undefined && efforts.includes(defaultLevel)) {
|
|
637
|
+
thinking.defaultLevel = defaultLevel;
|
|
638
|
+
}
|
|
639
|
+
}
|
|
640
|
+
}
|
|
641
|
+
return thinking;
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
function mapUmansModelInfo(
|
|
645
|
+
modelId: string,
|
|
646
|
+
raw: UmansModelInfo,
|
|
647
|
+
baseUrl: string,
|
|
648
|
+
reference: ModelSpec<"anthropic-messages"> | undefined,
|
|
649
|
+
): ModelSpec<"anthropic-messages"> | null {
|
|
650
|
+
if (!modelId) return null;
|
|
651
|
+
const capabilities = isRecord(raw.capabilities) ? raw.capabilities : {};
|
|
652
|
+
const supportsTools = capabilities.supports_tools;
|
|
653
|
+
const thinking = mapUmansThinkingConfig(capabilities.reasoning);
|
|
654
|
+
return {
|
|
655
|
+
...reference,
|
|
656
|
+
id: modelId,
|
|
657
|
+
name: toModelName(raw.display_name, toModelName(raw.name, modelId)),
|
|
658
|
+
api: "anthropic-messages",
|
|
659
|
+
provider: "umans",
|
|
660
|
+
baseUrl,
|
|
661
|
+
reasoning: thinking !== undefined,
|
|
662
|
+
...(thinking ? { thinking } : {}),
|
|
663
|
+
input: umansSupportsVision(capabilities.supports_vision) ? ["text", "image"] : ["text"],
|
|
664
|
+
...(supportsTools === false ? { supportsTools: false } : {}),
|
|
665
|
+
cost: reference?.cost ?? { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
666
|
+
contextWindow: toPositiveNumber(capabilities.context_window, reference?.contextWindow ?? null),
|
|
667
|
+
maxTokens: toPositiveNumber(capabilities.max_completion_tokens, reference?.maxTokens ?? null),
|
|
668
|
+
};
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
async function fetchUmansModelsInfo(options: {
|
|
672
|
+
baseUrl: string;
|
|
673
|
+
apiKey?: string;
|
|
674
|
+
fetch?: FetchImpl;
|
|
675
|
+
references: Map<string, ModelSpec<"anthropic-messages">>;
|
|
676
|
+
}): Promise<ModelSpec<"anthropic-messages">[] | null> {
|
|
677
|
+
const discoveryBaseUrl = toAnthropicDiscoveryBaseUrl(options.baseUrl);
|
|
678
|
+
const requestHeaders: Record<string, string> = { Accept: "application/json" };
|
|
679
|
+
if (options.apiKey) {
|
|
680
|
+
requestHeaders["x-api-key"] = options.apiKey;
|
|
681
|
+
}
|
|
682
|
+
const fetchImpl = options.fetch ?? fetch;
|
|
683
|
+
let payload: unknown;
|
|
684
|
+
try {
|
|
685
|
+
const response = await fetchImpl(`${discoveryBaseUrl}${UMANS_MODELS_INFO_PATH}`, {
|
|
686
|
+
method: "GET",
|
|
687
|
+
headers: requestHeaders,
|
|
688
|
+
});
|
|
689
|
+
if (!response.ok) {
|
|
690
|
+
return null;
|
|
691
|
+
}
|
|
692
|
+
payload = await response.json();
|
|
693
|
+
} catch (error) {
|
|
694
|
+
throw new Error("Failed to fetch Umans models info", { cause: error });
|
|
695
|
+
}
|
|
696
|
+
if (!isRecord(payload)) {
|
|
697
|
+
return null;
|
|
698
|
+
}
|
|
699
|
+
const models: ModelSpec<"anthropic-messages">[] = [];
|
|
700
|
+
for (const [modelId, value] of Object.entries(payload)) {
|
|
701
|
+
if (!isRecord(value)) continue;
|
|
702
|
+
const mapped = mapUmansModelInfo(modelId, value, options.baseUrl, options.references.get(modelId));
|
|
703
|
+
if (mapped) {
|
|
704
|
+
models.push(mapped);
|
|
705
|
+
}
|
|
706
|
+
}
|
|
707
|
+
return models.sort((left, right) => left.id.localeCompare(right.id));
|
|
708
|
+
}
|
|
709
|
+
|
|
710
|
+
export function umansModelManagerOptions(config?: UmansModelManagerConfig): ModelManagerOptions<"anthropic-messages"> {
|
|
711
|
+
const apiKey = config?.apiKey;
|
|
712
|
+
const baseUrl = normalizeUmansBaseUrl(config?.baseUrl);
|
|
713
|
+
const references = createBundledReferenceMap<"anthropic-messages">("umans");
|
|
714
|
+
return {
|
|
715
|
+
providerId: "umans",
|
|
716
|
+
dynamicModelsAuthoritative: true,
|
|
717
|
+
fetchDynamicModels: () => fetchUmansModelsInfo({ baseUrl, apiKey, fetch: config?.fetch, references }),
|
|
718
|
+
};
|
|
719
|
+
}
|
|
571
720
|
// ---------------------------------------------------------------------------
|
|
572
721
|
// 1. OpenAI
|
|
573
722
|
// ---------------------------------------------------------------------------
|
|
@@ -2307,7 +2456,7 @@ export function xiaomiModelManagerOptions(
|
|
|
2307
2456
|
provider: providerId,
|
|
2308
2457
|
baseUrl: url,
|
|
2309
2458
|
apiKey,
|
|
2310
|
-
filterModel: (_entry, model) => !model.id.includes("-tts"),
|
|
2459
|
+
filterModel: (_entry, model) => !model.id.includes("-tts") && !model.id.includes("-asr"),
|
|
2311
2460
|
mapModel: (entry, defaults) => {
|
|
2312
2461
|
const reference = references.get(defaults.id);
|
|
2313
2462
|
const model = mapWithBundledReference(entry, defaults, reference);
|
|
@@ -3245,6 +3394,8 @@ const MODELS_DEV_PROVIDER_DESCRIPTORS_CORE: readonly ModelsDevProviderDescriptor
|
|
|
3245
3394
|
const MODELS_DEV_PROVIDER_DESCRIPTORS_CODING_PLANS: readonly ModelsDevProviderDescriptor[] = [
|
|
3246
3395
|
// --- zAI ---
|
|
3247
3396
|
anthropicMessagesDescriptor("zai-coding-plan", "zai", "https://api.z.ai/api/anthropic"),
|
|
3397
|
+
// --- Umans AI Coding Plan ---
|
|
3398
|
+
anthropicMessagesDescriptor("umans-ai-coding-plan", "umans", UMANS_BASE_URL),
|
|
3248
3399
|
// --- Xiaomi ---
|
|
3249
3400
|
openAiCompletionsDescriptor("xiaomi", "xiaomi", "https://api.xiaomimimo.com/v1", {
|
|
3250
3401
|
defaultContextWindow: 262144,
|