@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 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.8.0";
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 clear the in-flight cache so a later call retries.
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.5.1",
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.5.1",
97
- "@oh-my-pi/pi-utils": "18.5.1"
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.5.1",
101
+ "@oh-my-pi/pi-ai": "18.6.0",
102
102
  "@types/bun": "^1.3.14"
103
103
  },
104
104
  "engines": {
@@ -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") && DSML_HEALING_PROVIDERS[provider] === true) return "dsml";
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
- on "ollama-cloud" "nvidia" "deepseek" "fireworks" "nanogpt" "opencode-go" "openrouter" "litellm" "nous" {
96
- stream-markup-healing-pattern "dsml"
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"