@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.
- package/CHANGELOG.md +26 -3
- package/README.md +18 -18
- package/dist/types/compat/auth-ids.d.ts +2 -2
- package/dist/types/compat/axes.d.ts +2 -2
- package/dist/types/compat/catalog-policy.d.ts +7 -0
- package/dist/types/compat/output-limits.d.ts +3 -0
- package/dist/types/compat/provider-ids.d.ts +1 -1
- package/dist/types/compat/tools.d.ts +5 -0
- package/dist/types/compat/types.d.ts +2 -2
- package/dist/types/provider-models/openai-compat.d.ts +26 -0
- package/dist/types/types.d.ts +5 -2
- package/dist/types/wire/singularityapi.d.ts +29 -0
- package/package.json +38 -38
- package/src/compat/auth-ids.ts +4 -0
- package/src/compat/axes.ts +21 -2
- package/src/compat/catalog-policy.ts +28 -0
- package/src/compat/output-limits.ts +12 -0
- package/src/compat/provider-ids.ts +2 -0
- package/src/compat/resolve.ts +4 -2
- package/src/compat/rules/README.md +34 -33
- package/src/compat/rules/auth/_order.kdl +1 -1
- package/src/compat/rules/auth/singularityapi-dev.kdl +22 -0
- package/src/compat/rules/auth/singularityapi-tech.kdl +23 -0
- package/src/compat/rules/classes/gpt-oss.kdl +3 -0
- package/src/compat/rules/classes/xai.kdl +3 -3
- package/src/compat/rules/providers/amazon-bedrock.kdl +1 -1
- package/src/compat/rules/providers/anthropic.kdl +1 -1
- package/src/compat/rules/providers/cloudflare-ai-gateway.kdl +1 -1
- package/src/compat/rules/providers/commandcode.kdl +1 -1
- package/src/compat/rules/providers/cursor.kdl +1 -1
- package/src/compat/rules/providers/google-antigravity.kdl +5 -0
- package/src/compat/rules/providers/kilo.kdl +1 -1
- package/src/compat/rules/providers/litellm.kdl +1 -1
- package/src/compat/rules/providers/native-tools.kdl +4 -0
- package/src/compat/rules/providers/openai.kdl +58 -0
- package/src/compat/rules/providers/opencode-zen.kdl +1 -1
- package/src/compat/rules/providers/openrouter.kdl +108 -0
- package/src/compat/rules/providers/output-limits.kdl +4 -0
- package/src/compat/rules/providers/singularityapi-dev.kdl +92 -0
- package/src/compat/rules/providers/singularityapi-tech.kdl +72 -0
- package/src/compat/rules/providers/tool-free-history.kdl +6 -0
- package/src/compat/rules/providers/vercel-ai-gateway.kdl +1 -1
- package/src/compat/rules/providers/xai-oauth.kdl +8 -1
- package/src/compat/rules/providers/xai.kdl +4 -4
- package/src/compat/rules/providers/xiaomi-token-plan-cn.kdl +23 -0
- package/src/compat/rules/providers/zenmux.kdl +1 -1
- package/src/compat/rules/runtime/behavior.kdl +2 -0
- package/src/compat/rules.json +1 -1
- package/src/compat/tools.ts +12 -0
- package/src/compat/types.ts +2 -2
- package/src/discovery/devin.ts +59 -34
- package/src/models.json +1 -1
- package/src/provider-models/cache-provider-id.ts +31 -0
- package/src/provider-models/descriptors.ts +4 -0
- package/src/provider-models/openai-compat.ts +390 -119
- package/src/types.ts +19 -1
- 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
|
+
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.
|
|
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
|
+
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" \
|