@oh-my-pi/pi-catalog 18.1.20 → 18.1.22
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 +10 -0
- package/dist/types/compat/types.d.ts +2 -0
- package/dist/types/types.d.ts +8 -1
- package/package.json +4 -4
- package/src/build.ts +8 -2
- package/src/compat/axes.ts +1 -0
- package/src/compat/rules/README.md +1 -0
- package/src/compat/rules/auth/amazon-bedrock.kdl +1 -0
- package/src/compat/rules/auth/bedrock-mantle.kdl +1 -0
- package/src/compat/rules/providers/ollama-cloud.kdl +2 -0
- package/src/compat/rules/providers/ollama.kdl +3 -0
- package/src/compat/rules/runtime/behavior.kdl +6 -6
- package/src/compat/rules.json +20 -7
- package/src/compat/types.ts +2 -0
- package/src/types.ts +8 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [18.1.22] - 2026-09-14
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Enabled assistant prefill support for Ollama models
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- OpenCode Zen GPT-6 Astra requests now use the Responses endpoint instead of failing through chat completions with HTTP 500 ([#12030](https://github.com/can1357/oh-my-pi/issues/12030)).
|
|
14
|
+
|
|
5
15
|
## [18.1.20] - 2026-09-13
|
|
6
16
|
|
|
7
17
|
### Fixed
|
|
@@ -505,6 +505,8 @@ export interface CompiledAuthProvider {
|
|
|
505
505
|
hook: string;
|
|
506
506
|
};
|
|
507
507
|
allowsMissingApiKey?: boolean;
|
|
508
|
+
/** APIs whose provider transport resolves credentials without a stored account. */
|
|
509
|
+
nativeAuthApis?: string[];
|
|
508
510
|
available?: boolean;
|
|
509
511
|
showInLoginList?: boolean;
|
|
510
512
|
storeAs?: string;
|
package/dist/types/types.d.ts
CHANGED
|
@@ -933,6 +933,13 @@ export interface Model<TApi extends Api = Api> {
|
|
|
933
933
|
requiresCursorToolSchemaProjection?: boolean;
|
|
934
934
|
/** Whether this model requires tool-result images hoisted into sibling user content blocks. */
|
|
935
935
|
requiresToolResultImageHoisting?: boolean;
|
|
936
|
+
/**
|
|
937
|
+
* Whether the host continues a trailing assistant message verbatim instead of
|
|
938
|
+
* treating it as a completed turn (Ollama, on both its native and OpenAI-compat
|
|
939
|
+
* endpoints). Callers that need a committed output prefix (session titling)
|
|
940
|
+
* read this before appending one. Rule-owned via `supports-assistant-prefill`.
|
|
941
|
+
*/
|
|
942
|
+
supportsAssistantPrefill?: boolean;
|
|
936
943
|
/**
|
|
937
944
|
* Model id to send on the wire when it differs from `id`. Used by catalog
|
|
938
945
|
* variants that present one upstream model under several local entries —
|
|
@@ -1106,7 +1113,7 @@ export interface Model<TApi extends Api = Api> {
|
|
|
1106
1113
|
* vocabulary of `buildModel`. Identical to `Model` except `compat` carries the
|
|
1107
1114
|
* sparse override shape and nothing is resolved yet.
|
|
1108
1115
|
*/
|
|
1109
|
-
export interface ModelSpec<TApi extends Api = Api> extends Omit<Model<TApi>, "compat" | "identity" | "compatConfig" | "requiresGlyphTokenization" | "requiresCursorToolSchemaProjection" | "requiresToolResultImageHoisting" | "supportsComputerUseConfig"> {
|
|
1116
|
+
export interface ModelSpec<TApi extends Api = Api> extends Omit<Model<TApi>, "compat" | "identity" | "compatConfig" | "requiresGlyphTokenization" | "requiresCursorToolSchemaProjection" | "requiresToolResultImageHoisting" | "supportsAssistantPrefill" | "supportsComputerUseConfig"> {
|
|
1110
1117
|
/** Sparse compatibility overrides; resolved into `Model.compat` by `buildModel`. */
|
|
1111
1118
|
compat?: CompatConfigOf<TApi>;
|
|
1112
1119
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oh-my-pi/pi-catalog",
|
|
4
|
-
"version": "18.1.
|
|
4
|
+
"version": "18.1.22",
|
|
5
5
|
"description": "Model catalog for omp: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
6
6
|
"homepage": "https://omp.sh",
|
|
7
7
|
"author": "Stencil Labs, Inc.",
|
|
@@ -35,12 +35,12 @@
|
|
|
35
35
|
"gen:proto": "bun scripts/generate-protocols.ts"
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@oh-my-pi/omptype": "18.1.
|
|
39
|
-
"@oh-my-pi/pi-utils": "18.1.
|
|
38
|
+
"@oh-my-pi/omptype": "18.1.22",
|
|
39
|
+
"@oh-my-pi/pi-utils": "18.1.22"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
42
|
"@bgotink/kdl": "0.4.0",
|
|
43
|
-
"@oh-my-pi/pi-ai": "18.1.
|
|
43
|
+
"@oh-my-pi/pi-ai": "18.1.22",
|
|
44
44
|
"@types/bun": "^1.3.14"
|
|
45
45
|
},
|
|
46
46
|
"engines": {
|
package/src/build.ts
CHANGED
|
@@ -34,8 +34,9 @@ function isInputModalities(value: unknown): value is ("text" | "image")[] {
|
|
|
34
34
|
* corrections (`cost-patch`, `limits-patch`, `long-context-cost`,
|
|
35
35
|
* `context-window-floor`) overwrite upstream values; selection metadata
|
|
36
36
|
* (`priority`, `apply-patch-tool-type`, `service-tier-cost`,
|
|
37
|
-
* `requires-cursor-tool-schema-projection`, `requires-tool-result-image-hoisting
|
|
38
|
-
* is rule-owned; `context-promotion-target` fills
|
|
37
|
+
* `requires-cursor-tool-schema-projection`, `requires-tool-result-image-hoisting`,
|
|
38
|
+
* `supports-assistant-prefill`) is rule-owned; `context-promotion-target` fills
|
|
39
|
+
* only when the spec left it unset.
|
|
39
40
|
*/
|
|
40
41
|
function applyCatalogAssignments<TApi extends Api>(model: Model<TApi>, catalog: Record<string, unknown>): void {
|
|
41
42
|
const serviceTierCost = objectPayload(catalog.serviceTierCost);
|
|
@@ -69,6 +70,11 @@ function applyCatalogAssignments<TApi extends Api>(model: Model<TApi>, catalog:
|
|
|
69
70
|
} else {
|
|
70
71
|
delete model.requiresToolResultImageHoisting;
|
|
71
72
|
}
|
|
73
|
+
if (catalog.supportsAssistantPrefill === true) {
|
|
74
|
+
model.supportsAssistantPrefill = true;
|
|
75
|
+
} else {
|
|
76
|
+
delete model.supportsAssistantPrefill;
|
|
77
|
+
}
|
|
72
78
|
const contextPromotionTarget = catalog.contextPromotionTarget;
|
|
73
79
|
if (typeof contextPromotionTarget === "string" && model.contextPromotionTarget === undefined) {
|
|
74
80
|
model.contextPromotionTarget = contextPromotionTarget;
|
package/src/compat/axes.ts
CHANGED
|
@@ -292,6 +292,7 @@ export const AXES: Readonly<Record<string, AxisDef>> = {
|
|
|
292
292
|
set: "catalog",
|
|
293
293
|
shape: "scalar",
|
|
294
294
|
},
|
|
295
|
+
"supports-assistant-prefill": { key: "supportsAssistantPrefill", set: "catalog", shape: "scalar" },
|
|
295
296
|
priority: { key: "priority", set: "catalog", shape: "scalar" },
|
|
296
297
|
"service-tier-cost": { key: "serviceTierCost", set: "catalog", shape: "object" },
|
|
297
298
|
"time-based-cost": { key: "timeBased", set: "catalog", shape: "object" },
|
|
@@ -339,6 +339,7 @@ auth "anthropic" {
|
|
|
339
339
|
expiry "jwt-or-never" // session-JWT expiry policy
|
|
340
340
|
result "api-key" // OAuth login persists only credentials.access as a plain API key
|
|
341
341
|
allows-missing-api-key #true
|
|
342
|
+
native-auth-api "bedrock-converse-stream" // provider transport resolves auth; scan plans pin this API without secrets
|
|
342
343
|
available #false
|
|
343
344
|
show-in-login-list #false
|
|
344
345
|
}
|
|
@@ -9,4 +9,7 @@ provider "ollama" priority=-1 {
|
|
|
9
9
|
// Replaces both Ollama empty-length finish baselines.
|
|
10
10
|
empty-length-finish-is-context-error #true
|
|
11
11
|
thinking-efforts "low" "medium" "high" "max"
|
|
12
|
+
// Ollama continues a trailing assistant turn verbatim on /api/chat and
|
|
13
|
+
// /v1/responses alike; callers use it to commit an output prefix.
|
|
14
|
+
supports-assistant-prefill #true
|
|
12
15
|
}
|
|
@@ -173,13 +173,13 @@ behavior {
|
|
|
173
173
|
route "openai-completions" exact="glm-5.3-flash"
|
|
174
174
|
}
|
|
175
175
|
// OpenCode Zen: models.dev declares minimax-m3 with `@ai-sdk/anthropic`, but
|
|
176
|
-
// the gateway serves it only at /v1/chat/completions (#1617).
|
|
177
|
-
//
|
|
178
|
-
//
|
|
179
|
-
//
|
|
180
|
-
//
|
|
176
|
+
// the gateway serves it only at /v1/chat/completions (#1617). It omits
|
|
177
|
+
// muse-spark-1.3-contributor-free entirely, and the gateway's GPT-6 Astra
|
|
178
|
+
// listing carries no transport metadata; both model lines are served only
|
|
179
|
+
// at /responses (#10610, #12030). The Muse prefix covers gateway-first
|
|
180
|
+
// revisions; exact ids stay as cache-migration identity.
|
|
181
181
|
api-routes provider="opencode-zen" {
|
|
182
|
-
route "openai-responses" prefix="muse-spark-" exact="muse-spark-1.3-contributor-free"
|
|
182
|
+
route "openai-responses" prefix="muse-spark-" exact="muse-spark-1.3-contributor-free" exact="gpt-6-astra"
|
|
183
183
|
route "openai-completions" exact="minimax-m3" exact="minimax-m3-free"
|
|
184
184
|
}
|
|
185
185
|
// OpenCode Go: models.dev's npm hints misroute these (#887, #1617); the
|
package/src/compat/rules.json
CHANGED
|
@@ -12355,7 +12355,7 @@
|
|
|
12355
12355
|
}
|
|
12356
12356
|
},
|
|
12357
12357
|
{
|
|
12358
|
-
"source": "providers/ollama-cloud.kdl:
|
|
12358
|
+
"source": "providers/ollama-cloud.kdl:7",
|
|
12359
12359
|
"class": "unknown",
|
|
12360
12360
|
"providers": [
|
|
12361
12361
|
"ollama-cloud"
|
|
@@ -12370,7 +12370,7 @@
|
|
|
12370
12370
|
}
|
|
12371
12371
|
},
|
|
12372
12372
|
{
|
|
12373
|
-
"source": "providers/ollama-cloud.kdl:
|
|
12373
|
+
"source": "providers/ollama-cloud.kdl:11",
|
|
12374
12374
|
"providers": [
|
|
12375
12375
|
"ollama-cloud"
|
|
12376
12376
|
],
|
|
@@ -12389,7 +12389,7 @@
|
|
|
12389
12389
|
}
|
|
12390
12390
|
},
|
|
12391
12391
|
{
|
|
12392
|
-
"source": "providers/ollama-cloud.kdl:
|
|
12392
|
+
"source": "providers/ollama-cloud.kdl:15",
|
|
12393
12393
|
"providers": [
|
|
12394
12394
|
"ollama-cloud"
|
|
12395
12395
|
],
|
|
@@ -12417,7 +12417,7 @@
|
|
|
12417
12417
|
}
|
|
12418
12418
|
},
|
|
12419
12419
|
{
|
|
12420
|
-
"source": "providers/ollama-cloud.kdl:
|
|
12420
|
+
"source": "providers/ollama-cloud.kdl:19",
|
|
12421
12421
|
"providers": [
|
|
12422
12422
|
"ollama-cloud"
|
|
12423
12423
|
],
|
|
@@ -12441,6 +12441,9 @@
|
|
|
12441
12441
|
],
|
|
12442
12442
|
"thinking": {
|
|
12443
12443
|
"mode": "effort"
|
|
12444
|
+
},
|
|
12445
|
+
"catalog": {
|
|
12446
|
+
"supportsAssistantPrefill": true
|
|
12444
12447
|
}
|
|
12445
12448
|
},
|
|
12446
12449
|
{
|
|
@@ -12459,6 +12462,9 @@
|
|
|
12459
12462
|
"high",
|
|
12460
12463
|
"max"
|
|
12461
12464
|
]
|
|
12465
|
+
},
|
|
12466
|
+
"catalog": {
|
|
12467
|
+
"supportsAssistantPrefill": true
|
|
12462
12468
|
}
|
|
12463
12469
|
},
|
|
12464
12470
|
{
|
|
@@ -16523,7 +16529,8 @@
|
|
|
16523
16529
|
"muse-spark-"
|
|
16524
16530
|
],
|
|
16525
16531
|
"exact": [
|
|
16526
|
-
"muse-spark-1.3-contributor-free"
|
|
16532
|
+
"muse-spark-1.3-contributor-free",
|
|
16533
|
+
"gpt-6-astra"
|
|
16527
16534
|
]
|
|
16528
16535
|
}
|
|
16529
16536
|
},
|
|
@@ -19134,7 +19141,10 @@
|
|
|
19134
19141
|
"name": "Amazon Bedrock",
|
|
19135
19142
|
"env": {
|
|
19136
19143
|
"hook": "aws-bedrock"
|
|
19137
|
-
}
|
|
19144
|
+
},
|
|
19145
|
+
"nativeAuthApis": [
|
|
19146
|
+
"bedrock-converse-stream"
|
|
19147
|
+
]
|
|
19138
19148
|
},
|
|
19139
19149
|
{
|
|
19140
19150
|
"id": "azure",
|
|
@@ -19148,7 +19158,10 @@
|
|
|
19148
19158
|
"env": {
|
|
19149
19159
|
"hook": "aws-bedrock-mantle"
|
|
19150
19160
|
},
|
|
19151
|
-
"allowsMissingApiKey": true
|
|
19161
|
+
"allowsMissingApiKey": true,
|
|
19162
|
+
"nativeAuthApis": [
|
|
19163
|
+
"openai-responses"
|
|
19164
|
+
]
|
|
19152
19165
|
},
|
|
19153
19166
|
{
|
|
19154
19167
|
"id": "google",
|
package/src/compat/types.ts
CHANGED
|
@@ -520,6 +520,8 @@ export interface CompiledAuthProvider {
|
|
|
520
520
|
name: string;
|
|
521
521
|
env?: { vars: string[] } | { hook: string };
|
|
522
522
|
allowsMissingApiKey?: boolean;
|
|
523
|
+
/** APIs whose provider transport resolves credentials without a stored account. */
|
|
524
|
+
nativeAuthApis?: string[];
|
|
523
525
|
available?: boolean;
|
|
524
526
|
showInLoginList?: boolean;
|
|
525
527
|
storeAs?: string;
|
package/src/types.ts
CHANGED
|
@@ -1113,6 +1113,13 @@ export interface Model<TApi extends Api = Api> {
|
|
|
1113
1113
|
requiresCursorToolSchemaProjection?: boolean;
|
|
1114
1114
|
/** Whether this model requires tool-result images hoisted into sibling user content blocks. */
|
|
1115
1115
|
requiresToolResultImageHoisting?: boolean;
|
|
1116
|
+
/**
|
|
1117
|
+
* Whether the host continues a trailing assistant message verbatim instead of
|
|
1118
|
+
* treating it as a completed turn (Ollama, on both its native and OpenAI-compat
|
|
1119
|
+
* endpoints). Callers that need a committed output prefix (session titling)
|
|
1120
|
+
* read this before appending one. Rule-owned via `supports-assistant-prefill`.
|
|
1121
|
+
*/
|
|
1122
|
+
supportsAssistantPrefill?: boolean;
|
|
1116
1123
|
/**
|
|
1117
1124
|
* Model id to send on the wire when it differs from `id`. Used by catalog
|
|
1118
1125
|
* variants that present one upstream model under several local entries —
|
|
@@ -1295,6 +1302,7 @@ export interface ModelSpec<TApi extends Api = Api> extends Omit<
|
|
|
1295
1302
|
| "requiresGlyphTokenization"
|
|
1296
1303
|
| "requiresCursorToolSchemaProjection"
|
|
1297
1304
|
| "requiresToolResultImageHoisting"
|
|
1305
|
+
| "supportsAssistantPrefill"
|
|
1298
1306
|
| "supportsComputerUseConfig"
|
|
1299
1307
|
> {
|
|
1300
1308
|
/** Sparse compatibility overrides; resolved into `Model.compat` by `buildModel`. */
|