@oh-my-pi/pi-catalog 18.5.1 → 18.6.0
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 +8 -0
- package/dist/types/wire/gemini-headers.d.ts +6 -3
- package/package.json +4 -4
- package/src/compat/resolve.ts +4 -18
- package/src/compat/rules/classes/deepseek.kdl +5 -3
- package/src/compat/rules/taxonomy/deepseek.kdl +4 -0
- package/src/compat/rules.json +1 -1
- package/src/models.json +1 -1
- package/src/wire/gemini-headers.ts +39 -21
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [18.6.0] - 2026-10-03
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Fixed DeepSeek V4 model IDs and the V4.1 Flash alias lacking version information in model identity and dashboards ([#14194](https://github.com/can1357/oh-my-pi/issues/14194)).
|
|
10
|
+
- Fixed Antigravity models such as Claude Opus 5.5 and Sonnet 5.5 disappearing after `omp models refresh`. When the update check failed, omp reported an outdated Antigravity client version (2.8.0), so the server left the newer models out of the list. The fallback version is now 2.19.1.
|
|
11
|
+
- DSML tool calls from DeepSeek models are now parsed on every host. This includes local servers (llama.cpp, LM Studio, vLLM), custom providers from `models.yml`, and gateways that weren't on the old list of supported hosts. Before, a complete `<|DSML|tool_calls>` envelope from these hosts showed up as plain text and the tool never ran ([#14202](https://github.com/can1357/oh-my-pi/pull/14202) by [@H4vC](https://github.com/H4vC)).
|
|
12
|
+
|
|
5
13
|
## [18.5.1] - 2026-10-03
|
|
6
14
|
|
|
7
15
|
### Added
|
|
@@ -24,7 +24,7 @@ export declare const getGeminiCliHeaders: (modelId?: string) => {
|
|
|
24
24
|
* client the version and manifest are captured from, independent of the host
|
|
25
25
|
* platform. Overrides: PI_AI_ANTIGRAVITY_VERSION / _CL / _OS / _ARCH.
|
|
26
26
|
*/
|
|
27
|
-
export declare const DEFAULT_ANTIGRAVITY_VERSION = "2.
|
|
27
|
+
export declare const DEFAULT_ANTIGRAVITY_VERSION = "2.19.1";
|
|
28
28
|
/** Current Antigravity client version: env override → manifest-discovered → pinned fallback. */
|
|
29
29
|
export declare function getAntigravityVersion(): string;
|
|
30
30
|
/**
|
|
@@ -35,8 +35,11 @@ export declare function parseAntigravityManifestVersion(yamlText: string): strin
|
|
|
35
35
|
/**
|
|
36
36
|
* Resolves the latest Antigravity release from the official update manifest.
|
|
37
37
|
* Success is cached for the process lifetime; failures are silent (the pinned
|
|
38
|
-
* fallback stays valid) and
|
|
39
|
-
* Skipped entirely when PI_AI_ANTIGRAVITY_VERSION is set.
|
|
38
|
+
* fallback stays valid) and suppress further lookups for
|
|
39
|
+
* `ANTIGRAVITY_VERSION_RETRY_MS`. Skipped entirely when PI_AI_ANTIGRAVITY_VERSION is set.
|
|
40
|
+
*
|
|
41
|
+
* The lookup is shared by concurrent callers, so it is bounded only by its own
|
|
42
|
+
* timeout; `signal` ends this caller's wait without cancelling the lookup.
|
|
40
43
|
*/
|
|
41
44
|
export declare function ensureAntigravityVersion(fetcher?: FetchImpl, signal?: AbortSignal): Promise<void>;
|
|
42
45
|
/** Antigravity `User-Agent` header value; rebuilt when the discovered version changes. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-my-pi/pi-catalog",
|
|
3
|
-
"version": "18.
|
|
3
|
+
"version": "18.6.0",
|
|
4
4
|
"description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -93,12 +93,12 @@
|
|
|
93
93
|
"gen:proto": "bun scripts/generate-protocols.ts"
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
|
-
"@oh-my-pi/omptype": "18.
|
|
97
|
-
"@oh-my-pi/pi-utils": "18.
|
|
96
|
+
"@oh-my-pi/omptype": "18.6.0",
|
|
97
|
+
"@oh-my-pi/pi-utils": "18.6.0"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
100
|
"@bgotink/kdl": "0.4.0",
|
|
101
|
-
"@oh-my-pi/pi-ai": "18.
|
|
101
|
+
"@oh-my-pi/pi-ai": "18.6.0",
|
|
102
102
|
"@types/bun": "^1.3.14"
|
|
103
103
|
},
|
|
104
104
|
"engines": {
|
package/src/compat/resolve.ts
CHANGED
|
@@ -598,26 +598,12 @@ function detectOpenAICompat(
|
|
|
598
598
|
};
|
|
599
599
|
}
|
|
600
600
|
|
|
601
|
-
const DSML_HEALING_PROVIDERS: Record<string, true> = {
|
|
602
|
-
ollama: true,
|
|
603
|
-
"ollama-cloud": true,
|
|
604
|
-
nvidia: true,
|
|
605
|
-
deepseek: true,
|
|
606
|
-
fireworks: true,
|
|
607
|
-
nanogpt: true,
|
|
608
|
-
"opencode-go": true,
|
|
609
|
-
openrouter: true,
|
|
610
|
-
// Transparent gateways / user-configured hosts forward the upstream model's
|
|
611
|
-
// native chat template unchanged, so a deepseek-classed model behind them
|
|
612
|
-
// still emits DSML tool-call envelopes and needs the DSML healer.
|
|
613
|
-
litellm: true,
|
|
614
|
-
nous: true,
|
|
615
|
-
};
|
|
616
|
-
|
|
617
601
|
/**
|
|
618
602
|
* Default leaked-markup healer. Kimi/DeepSeek dedicated grammars are keyed on
|
|
619
603
|
* identity class; official OpenAI heals nothing; everything else defaults to
|
|
620
|
-
* the generic `thinking` healer.
|
|
604
|
+
* the generic `thinking` healer. DSML is DeepSeek's own tool-call grammar, so
|
|
605
|
+
* every host serving a DeepSeek model gets it — gateways, local backends, and
|
|
606
|
+
* custom providers alike.
|
|
621
607
|
*/
|
|
622
608
|
function detectStreamMarkupHealing(
|
|
623
609
|
provider: string,
|
|
@@ -628,7 +614,7 @@ function detectStreamMarkupHealing(
|
|
|
628
614
|
// Kimi ids keep the generic healer, matching the census.
|
|
629
615
|
const isKimiK2 = facts.is("kimi") && facts.identity.family?.startsWith("k2") === true;
|
|
630
616
|
if (provider === "kimi-code" || provider === "moonshot" || isKimiK2) return "kimi";
|
|
631
|
-
if (facts.is("deepseek")
|
|
617
|
+
if (facts.is("deepseek")) return "dsml";
|
|
632
618
|
if (isOfficialOpenAIEndpoint(provider, baseUrl)) return undefined;
|
|
633
619
|
return "thinking";
|
|
634
620
|
}
|
|
@@ -92,8 +92,10 @@ class "deepseek" {
|
|
|
92
92
|
models "deepseek-flash" priority=10 {
|
|
93
93
|
strip-image-input #false
|
|
94
94
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
// DSML is the model's own tool-call grammar, not a host quirk: any server
|
|
96
|
+
// running DeepSeek's chat template without (or with a broken) tool parser
|
|
97
|
+
// leaks it into content — hosted gateways, local backends, and custom
|
|
98
|
+
// providers alike. On hosts that parse it the healer sees no markup.
|
|
99
|
+
stream-markup-healing-pattern "dsml"
|
|
98
100
|
thinking-loop-guard "deepseek"
|
|
99
101
|
}
|
|
@@ -15,6 +15,10 @@ class "deepseek" {
|
|
|
15
15
|
family "v4" glob="*deepseek-v4*"
|
|
16
16
|
family "v3" glob="*deepseek-v3*"
|
|
17
17
|
|
|
18
|
+
revision prefix="deepseek-v" anywhere=#true
|
|
19
|
+
|
|
20
|
+
override id="deepseek-bare-flash-v4-1" provider="deepseek" model="deepseek-flash" class="deepseek" family="flash" revision="4.1" rationale="The first-party bare Flash alias serves DeepSeek V4.1 Flash, not V4 Flash" provenance="providers/deepseek.kdl"
|
|
21
|
+
override id="opencode-go-bare-flash-v4-1" provider="opencode-go" model="deepseek-flash" class="deepseek" family="flash" revision="4.1" rationale="OpenCode Go's bare Flash lane shares the reviewed V4.1 Flash deployment contract" provenance="providers/opencode-go.kdl"
|
|
18
22
|
override id="vercel-deepseek-v3-2-thinking-product" provider="vercel-ai-gateway" model="deepseek-v3.2-thinking" logical="deepseek/deepseek-v3.2-thinking" class="deepseek" rationale="Oracle exposes this independently priced product rather than an effort route" provenance="fixtures/llm-oracle/catalog/models.normalized.json"
|
|
19
23
|
override id="opencode-zen-big-pickle-family" provider="opencode-zen" model="big-pickle" class="deepseek" rationale="OpenCode Zen's big-pickle is a DeepSeek reasoning alias whose upstream 400s require exact reasoning_content replay" provenance="models.json census"
|
|
20
24
|
override id="umans-deepseek-v4-flash-family" provider="umans" model="umans-deepseek-v4-flash-0731" logical="umans-deepseek-v4-flash-0731" class="deepseek" rationale="The opaque Umans product identifier is backed by the reviewed DeepSeek V4 Flash family" provenance="fixtures/llm-oracle/catalog-policy/compat-profiles.json:compat-04"
|