@oh-my-pi/pi-catalog 18.2.7 → 18.2.9

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.
Files changed (57) hide show
  1. package/CHANGELOG.md +26 -3
  2. package/README.md +18 -18
  3. package/dist/types/compat/auth-ids.d.ts +2 -2
  4. package/dist/types/compat/axes.d.ts +2 -2
  5. package/dist/types/compat/catalog-policy.d.ts +7 -0
  6. package/dist/types/compat/output-limits.d.ts +3 -0
  7. package/dist/types/compat/provider-ids.d.ts +1 -1
  8. package/dist/types/compat/tools.d.ts +5 -0
  9. package/dist/types/compat/types.d.ts +2 -2
  10. package/dist/types/provider-models/openai-compat.d.ts +26 -0
  11. package/dist/types/types.d.ts +5 -2
  12. package/dist/types/wire/singularityapi.d.ts +29 -0
  13. package/package.json +38 -38
  14. package/src/compat/auth-ids.ts +4 -0
  15. package/src/compat/axes.ts +21 -2
  16. package/src/compat/catalog-policy.ts +28 -0
  17. package/src/compat/output-limits.ts +12 -0
  18. package/src/compat/provider-ids.ts +2 -0
  19. package/src/compat/resolve.ts +4 -2
  20. package/src/compat/rules/README.md +34 -33
  21. package/src/compat/rules/auth/_order.kdl +1 -1
  22. package/src/compat/rules/auth/singularityapi-dev.kdl +22 -0
  23. package/src/compat/rules/auth/singularityapi-tech.kdl +23 -0
  24. package/src/compat/rules/classes/gpt-oss.kdl +3 -0
  25. package/src/compat/rules/classes/xai.kdl +3 -3
  26. package/src/compat/rules/providers/amazon-bedrock.kdl +1 -1
  27. package/src/compat/rules/providers/anthropic.kdl +1 -1
  28. package/src/compat/rules/providers/cloudflare-ai-gateway.kdl +1 -1
  29. package/src/compat/rules/providers/commandcode.kdl +1 -1
  30. package/src/compat/rules/providers/cursor.kdl +1 -1
  31. package/src/compat/rules/providers/google-antigravity.kdl +5 -0
  32. package/src/compat/rules/providers/kilo.kdl +1 -1
  33. package/src/compat/rules/providers/litellm.kdl +1 -1
  34. package/src/compat/rules/providers/native-tools.kdl +4 -0
  35. package/src/compat/rules/providers/openai.kdl +58 -0
  36. package/src/compat/rules/providers/opencode-zen.kdl +1 -1
  37. package/src/compat/rules/providers/openrouter.kdl +108 -0
  38. package/src/compat/rules/providers/output-limits.kdl +4 -0
  39. package/src/compat/rules/providers/singularityapi-dev.kdl +92 -0
  40. package/src/compat/rules/providers/singularityapi-tech.kdl +72 -0
  41. package/src/compat/rules/providers/tool-free-history.kdl +6 -0
  42. package/src/compat/rules/providers/vercel-ai-gateway.kdl +1 -1
  43. package/src/compat/rules/providers/xai-oauth.kdl +8 -1
  44. package/src/compat/rules/providers/xai.kdl +4 -4
  45. package/src/compat/rules/providers/xiaomi-token-plan-cn.kdl +23 -0
  46. package/src/compat/rules/providers/zenmux.kdl +1 -1
  47. package/src/compat/rules/runtime/behavior.kdl +2 -0
  48. package/src/compat/rules.json +1 -1
  49. package/src/compat/tools.ts +12 -0
  50. package/src/compat/types.ts +2 -2
  51. package/src/discovery/devin.ts +59 -34
  52. package/src/models.json +1 -1
  53. package/src/provider-models/cache-provider-id.ts +31 -0
  54. package/src/provider-models/descriptors.ts +4 -0
  55. package/src/provider-models/openai-compat.ts +390 -119
  56. package/src/types.ts +19 -1
  57. package/src/wire/singularityapi.ts +34 -0
@@ -0,0 +1,72 @@
1
+ // SingularityAPI reserved DeepSeek lanes (api.singularityapi.tech, a LiteLLM
2
+ // front end for slot-reserved lanes). This is the vendor's other product —
3
+ // see `singularityapi-dev` for the pay-as-you-go universal gateway — split
4
+ // out because the two gateways publish conflicting effort ladders: `max` is
5
+ // valid here and400s there, `medium` is rejected here and accepted there
6
+ // (both measured live 2026-09-22). Usage bills against a booked reservation
7
+ // slot, so a valid key with no active slot answers 403 `permission_error`
8
+ // ("No active lane reservation for this key", verified 2026-09-22): login
9
+ // succeeds while a slot is idle, inference waits for one.
10
+ //
11
+ // The live `/v1/models` roster owns membership: keys are lane-scoped `sk-...`
12
+ // bearer tokens issued from the dashboard, and a bogus key is rejected with
13
+ // 401 `token_not_found_in_db` (verified 2026-09-21), so no rows are frozen
14
+ // here. Deliberately no `discovery` node: that node enrolls a provider in
15
+ // generate-models.ts, which would freeze one account's lane snapshot into
16
+ // models.json on every credential-less regen. The roster is per-key
17
+ // credential-scoped, so `singularityApiTechModelManagerOptions` keys its
18
+ // authoritative cache on both the resolved credential and the endpoint;
19
+ // `dynamic-models-authoritative` prunes stale rows.
20
+ provider "singularityapi-tech" {
21
+ default-model "deepseek-ai/DeepSeek-V4.1-Flash"
22
+ env "SINGULARITYAPI_TECH_API_KEY"
23
+ dynamic-models-authoritative #true
24
+
25
+ // Gateway-wide request shape. The deployment fronts DeepSeek lanes only and
26
+ // its front end takes `max_tokens`, returning reasoning as top-level
27
+ // `reasoning_content` on the final message and on streamed deltas (verified
28
+ // live 2026-09-22). A lane row that no `models` rule below matches inherits
29
+ // exactly this shape instead of the openai-completions default
30
+ // (`max_completion_tokens`), because the roster is per-key and unreviewed
31
+ // lanes are expected.
32
+ max-tokens-field "max_tokens"
33
+ reasoning-content-field "reasoning_content"
34
+
35
+ // Model guide (dashboard): the lane runs DeepSeek V4.1 Flash. Send
36
+ // `deepseek-ai/DeepSeek-V4.1-Flash`; the short alias
37
+ // `deepseek-v4.1-flash` is accepted too, and the account also serves the
38
+ // dated V4 Flash row. Context is 262,144 tokens prompt+completion (not the
39
+ // documented 1M); an overflowing max_tokens is reduced automatically, and a
40
+ // prompt within ~1K of the limit 400s. Both ids classify deepseek/flash by
41
+ // taxonomy, but bare `/v1/models` rows carry no reasoning metadata, so
42
+ // neutral discovery would leave the effort dial dark.
43
+ // Glob, not `exact`: one lane ships as a `deepseek-ai/…` id, a dated `-0731`
44
+ // row and a short alias, and cascade globs match the lowercased id, so one
45
+ // pattern covers each spelling where `exact` compares the raw id verbatim.
46
+ models "*deepseek-v4-flash-0731" "*deepseek-v4.1-flash" {
47
+ thinking-upgrade-neutral #true
48
+ // Effort vocabulary measured against the live gateway 2026-09-22:
49
+ // `none`, `minimal`, `low`, `high`, `xhigh`, `max` pass admission;
50
+ // `medium` and integer efforts 400 even though the gateway's own
51
+ // rejected-variant text lists `medium` as valid, so the guide's
52
+ // integer 1-100 scale does not survive the forward path. The ladder
53
+ // below is the accepted named set, `none` owns the off position.
54
+ thinking-efforts "low" "high" "xhigh" "max"
55
+ reasoning-disable-mode "none-effort"
56
+ // Guide: an overflowing max_tokens is reduced automatically, so clamp the
57
+ // request to the lane's ceiling rather than let the gateway answer 400.
58
+ // Lane-scoped, not provider-wide: for a row whose ceiling discovery leaves
59
+ // unknown the clamp falls back to the OpenAI default ceiling, which is not
60
+ // something an unreviewed lane should inherit.
61
+ clamp-output-to-model-max #true
62
+ // Guide: up to 8 image_url parts per request (PNG/JPEG, data URL or
63
+ // public https). Declared here as well as clearing the class strip:
64
+ // live discovery seeds input ["text"], and the wire guard requires the
65
+ // declared modality.
66
+ input-modalities "text" "image"
67
+ strip-image-input #false
68
+ limits-patch {
69
+ context-window 262144
70
+ }
71
+ }
72
+ }
@@ -0,0 +1,6 @@
1
+ // Bedrock injects a callable sentinel when tool-free requests retain tool history, but the
2
+ // sentinel is model-visible and calling it ends the turn: a genuine tool opt-out needs
3
+ // history without prior tool calls or results. Applies to every routed Bedrock deployment.
4
+ on-api "bedrock-converse-stream" {
5
+ requires-tool-free-history-for-tool-opt-out #true
6
+ }
@@ -1,7 +1,7 @@
1
1
  // Provider-wire compat for "vercel-ai-gateway"; regenerated from the frozen census using deployment contract selectors.
2
2
 
3
3
  provider "vercel-ai-gateway" {
4
- default-model "anthropic/claude-opus-4.8"
4
+ default-model "anthropic/claude-opus-5"
5
5
  env "AI_GATEWAY_API_KEY"
6
6
  discovery label="Vercel AI Gateway" allow-unauthenticated=#true {
7
7
  env "VERCEL_AI_GATEWAY_API_KEY"
@@ -58,6 +58,13 @@ provider "xai-oauth" {
58
58
  cost input=0 output=0 cache-read=0 cache-write=0
59
59
  limits context=500000 max-tokens=500000
60
60
  }
61
+ // 500K context per docs.x.ai/developers/models/grok-4.7.
62
+ model "grok-4.7" name="Grok 4.7" {
63
+ reasoning #true
64
+ input "text" "image"
65
+ cost input=0 output=0 cache-read=0 cache-write=0
66
+ limits context=500000 max-tokens=500000
67
+ }
61
68
  // Text-only per the bundled catalog.
62
69
  model "grok-4.20-multi-agent-0309" name="Grok 4.20 (Multi-Agent)" {
63
70
  reasoning #true
@@ -144,7 +151,7 @@ provider "xai-oauth" {
144
151
  supports-reasoning-effort #false
145
152
  }
146
153
  // xhigh-capable SKUs keep xhigh unmapped.
147
- models "grok-4.6*" "grok-4.20-multi-agent*" priority=1 {
154
+ models "grok-4.6*" "grok-4.7*" "grok-4.20-multi-agent*" priority=1 {
148
155
  reasoning-effort-map {
149
156
  minimal "low"
150
157
  }
@@ -49,14 +49,14 @@ provider "xai" {
49
49
  thinking-mode "effort"
50
50
  }
51
51
  }
52
- // Dormant until a catalog snapshot ships grok-4.6; xhigh is native there.
52
+ // Dormant until a catalog snapshot ships grok-4.7; xhigh is native there.
53
53
  // The effort-capable allowlist accepts the wire reasoning.effort dial;
54
- // xhigh-capable SKUs (4.6, multi-agent) keep xhigh unmapped.
55
- models "grok-3-mini*" "grok-4.20-multi-agent*" "grok-4.3*" "grok-4.5*" "grok-4.6*" {
54
+ // xhigh-capable SKUs (4.6, 4.7, multi-agent) keep xhigh unmapped.
55
+ models "grok-3-mini*" "grok-4.20-multi-agent*" "grok-4.3*" "grok-4.5*" "grok-4.6*" "grok-4.7*" {
56
56
  supports-reasoning-effort #true
57
57
  omit-reasoning-effort #false
58
58
  }
59
- models "grok-4.20-multi-agent*" "grok-4.6*" priority=1 {
59
+ models "grok-4.20-multi-agent*" "grok-4.6*" "grok-4.7*" priority=1 {
60
60
  reasoning-effort-map {
61
61
  minimal "low"
62
62
  }
@@ -4,6 +4,29 @@ provider "xiaomi-token-plan-cn" {
4
4
  default-model "mimo-v2.5"
5
5
  env "XIAOMI_TOKEN_PLAN_CN_API_KEY"
6
6
 
7
+ // Xiaomi's credential-scoped roster returns bare ids, so these documented
8
+ // V2.6 capabilities must remain authoritative across online refreshes.
9
+ seed api="openai-completions" base-url="https://token-plan-cn.xiaomimimo.com/v1" bundle="always" precedence="seed" {
10
+ model "mimo-v2.6-pro" name="MiMo-V2.6-Pro" {
11
+ reasoning #true
12
+ input "text" "image"
13
+ cost input=0 output=0 cache-read=0 cache-write=0
14
+ limits context=1048576 max-tokens=131072
15
+ }
16
+ model "mimo-v2.6-flash" name="MiMo-V2.6-Flash" {
17
+ reasoning #true
18
+ input "text" "image"
19
+ cost input=0 output=0 cache-read=0 cache-write=0
20
+ limits context=1048576 max-tokens=131072
21
+ }
22
+ model "mimo-v2.6-pro-ultraspeed" name="MiMo-V2.6-Pro-Ultraspeed" {
23
+ reasoning #true
24
+ input "text" "image"
25
+ cost input=0 output=0 cache-read=0 cache-write=0
26
+ limits context=1048576 max-tokens=131072
27
+ }
28
+ }
29
+
7
30
  class "mimo" {
8
31
  family "v2" {
9
32
  thinking-mode "effort"
@@ -1,7 +1,7 @@
1
1
  // Provider-wire compat for "zenmux"; regenerated from the frozen census using deployment contract selectors.
2
2
 
3
3
  provider "zenmux" {
4
- default-model "anthropic/claude-opus-4.8"
4
+ default-model "anthropic/claude-opus-5"
5
5
  env "ZENMUX_API_KEY"
6
6
  allow-unauthenticated #true
7
7
  discovery label="ZenMux" allow-unauthenticated=#true
@@ -197,6 +197,7 @@ behavior {
197
197
  // at /responses (#10610, #12030). The Muse prefix covers gateway-first
198
198
  // revisions; exact ids stay as cache-migration identity.
199
199
  api-routes provider="opencode-zen" {
200
+ route "anthropic-messages" exact="union-alpha"
200
201
  route "openai-responses" prefix="muse-spark-" exact="muse-spark-1.3-contributor-free" exact="gpt-6-astra"
201
202
  route "openai-completions" exact="minimax-m3" exact="minimax-m3-free"
202
203
  }
@@ -204,6 +205,7 @@ behavior {
204
205
  // responses pins are gateway-verified (deepseek-v4-flash 2026-08-08;
205
206
  // muse-spark per opencode.ai/docs/go/#endpoints, #8957, #10610).
206
207
  api-routes provider="opencode-go" {
208
+ route "anthropic-messages" exact="union-alpha"
207
209
  route "openai-responses" prefix="muse-spark-" exact="deepseek-v4-flash" exact="muse-spark-1.2" \
208
210
  exact="muse-spark-1.2-contributor" exact="muse-spark-1.3" exact="muse-spark-1.3-contributor"
209
211
  route "openai-completions" exact="minimax-m2.7" exact="minimax-m3" exact="minimax-m3-free" \