Files
oh-my-pi/packages/catalog
jiwangyihao bf1b692df9 fix(gitlab-duo): direct_access 错误保留 HTTP 状态码以触发凭据轮换
机器人指出两处问题,本提交处理:

1) direct_access 带 body message 的错误丢弃了 response.status,导致
   streaming auth-retry 路径(extractStatusFromAssistantError ->
   extractHttpStatusFromError)无法恢复状态、无法刷新/轮换过期 OAuth 或
   配额受限的 broker 凭据。现在即便有 body message 也内嵌 HTTP <status>,
   与 create 路径既有约定一致。新增 401 Unauthorized 回归测试断言状态可恢复,
   并强化既有 403 配额测试。

2) generate-models 种子注释过度暗示生成期会跑 namespace-scoped 发现。
   实际上 gitlab-duo-agent descriptor 故意不带 catalogDiscovery,被
   isCatalogDescriptor 过滤排除在生成发现循环之外,因此生成期绝不会拉取
   某账号的 aiChatAvailableModels,只播种通用 namespace-free fallback。
   修正注释表述,新增两条针对 descriptor 的回归测试:断言 descriptor 无
   catalogDiscovery(永不参与生成发现),以及 fallback 模型不带
   gitlabDuoWorkflowRootNamespaceId。
2026-06-26 16:13:24 +08:00
..
2026-06-26 09:19:53 +02:00

@oh-my-pi/pi-catalog

Model catalog for oh-my-pi: bundled model database, provider discovery, model identity, classification, and equivalence.

What's inside

Module Purpose
models.json + models Bundled model database (pricing, context windows, modalities, thinking support)
provider-models Provider catalog descriptors (CATALOG_PROVIDERS), per-provider model resolution rules
discovery Runtime model discovery for OpenAI-compatible endpoints, Gemini, Codex, Cursor, Antigravity, Ollama
identity Model id parsing and classification (family/version), reference resolution, equivalence, selection priority
model-thinking Thinking/reasoning metadata and generated per-model policies
model-manager / model-cache Runtime model registry with discovery refresh and on-disk caching
variant-collapse Collapsing provider-specific variants of the same underlying model
compat Request/response compatibility fixups for OpenAI- and Anthropic-shaped APIs
wire Wire-level helpers: Codex, Gemini headers, GitHub Copilot
effort Reasoning-effort level definitions

Import from subpaths (@oh-my-pi/pi-catalog/<module>) or the root barrel.

models.json is generated

Never edit src/models.json by hand — it is produced from upstream sources (models.dev, provider catalog discovery, OpenCode docs) by scripts/generate-models.ts and the resolvers in src/provider-models/. Regenerate with:

bun --cwd=packages/catalog run generate-models

To change an entry, fix the source: resolver overrides in provider-models/openai-compat.ts, provider entries in provider-models/descriptors.ts, generator fixups in scripts/generate-models.ts, or thinking policies in model-thinking.ts.

Install

bun add @oh-my-pi/pi-catalog

Ships TypeScript source directly (no build step); requires Bun ≥ 1.3.14.

References