@oh-my-pi/pi-catalog 18.4.0 → 18.4.2
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 +21 -0
- package/dist/types/compat/resolve.d.ts +6 -0
- package/dist/types/compat/types.d.ts +2 -0
- package/dist/types/wire/devin.d.ts +15 -4
- package/package.json +4 -4
- package/src/compat/behavior.ts +1 -1
- package/src/compat/catalog-policy.ts +2 -2
- package/src/compat/context-window.ts +3 -3
- package/src/compat/resolve.ts +9 -0
- package/src/compat/rules/providers/amazon-bedrock.kdl +16 -5
- package/src/compat/rules/providers/cursor.kdl +593 -2
- package/src/compat/rules/providers/github-copilot.kdl +14 -0
- package/src/compat/rules/runtime/behavior.kdl +8 -0
- package/src/compat/rules/taxonomy/xai.kdl +4 -2
- package/src/compat/rules.json +1 -1
- package/src/compat/types.ts +2 -0
- package/src/model-cache.ts +87 -48
- package/src/models.json +1 -1
- package/src/wire/devin.ts +13 -9
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [18.4.2] - 2026-09-28
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Improved model cache invalidation efficiency by implementing deep equality checks on cached rows when database version signals change
|
|
10
|
+
- Optimized read-row cache by enabling granular cache-hit logic across concurrent connection handles
|
|
11
|
+
|
|
12
|
+
## [18.4.1] - 2026-09-28
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- Added `resolveCatalogAxes` to `compat/resolve`, which resolves a model's catalog-axis policy without computing its full compat and thinking policy; context-window and catalog-policy lookups now use it, reducing model-catalog load time.
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- Fixed `--thinking xhigh` on Amazon Bedrock Grok 4.6 (`us.xai.grok-4.6`, `global.xai.grok-4.6`, `xai.grok-4.6`), which was silently lowered to `high` ([#13515](https://github.com/can1357/oh-my-pi/pull/13515) by [@pgkt04](https://github.com/pgkt04)).
|
|
21
|
+
- Fixed `--thinking xhigh` and `--thinking max` on Amazon Bedrock Claude Opus 5.5, which were silently lowered to `high` ([#13515](https://github.com/can1357/oh-my-pi/pull/13515) by [@pgkt04](https://github.com/pgkt04)).
|
|
22
|
+
- Fixed GitHub Copilot GPT-5.6 and GPT-6 Astra starting on the 1.05M premium context window instead of the default tier ([#13017](https://github.com/can1357/oh-my-pi/pull/13017)).
|
|
23
|
+
- Added Cursor model pricing so usage stats no longer record zero cost for Cursor turns ([#13302](https://github.com/can1357/oh-my-pi/pull/13302) by [@eggpeat](https://github.com/eggpeat)).
|
|
24
|
+
- Devin requests now identify as Devin CLI 3000.11.3 instead of 3000.6.2, the CLI release that routes Fusion pairings ([#13527](https://github.com/can1357/oh-my-pi/pull/13527) by [@will-bogusz](https://github.com/will-bogusz)).
|
|
25
|
+
|
|
5
26
|
## [18.4.0] - 2026-09-28
|
|
6
27
|
|
|
7
28
|
### Fixed
|
|
@@ -10,6 +10,12 @@ export interface ResolvedModelPolicy<TApi extends Api = Api> {
|
|
|
10
10
|
}
|
|
11
11
|
/** Resolve the request adapter assigned to a discovery backend before materialization. */
|
|
12
12
|
export declare function resolveDiscoveryApi(spec: ModelSpec<Api>, providerType: string): Api;
|
|
13
|
+
/**
|
|
14
|
+
* Catalog-data axis assignments for one model spec — the `catalog` field of
|
|
15
|
+
* {@link resolveModelPolicy} without resolving the compat and thinking
|
|
16
|
+
* policies, which dominate its cost on catalog-wide scans.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveCatalogAxes(spec: ModelSpec<Api>): Record<string, unknown>;
|
|
13
19
|
/**
|
|
14
20
|
* Resolves the full policy surface for one model spec: structured identity,
|
|
15
21
|
* complete compat record, thinking metadata, and catalog-data corrections.
|
|
@@ -240,6 +240,8 @@ export interface CompiledCursorParameter {
|
|
|
240
240
|
/** One provider quota-scope table. */
|
|
241
241
|
export interface CompiledQuotaRule {
|
|
242
242
|
provider: string;
|
|
243
|
+
/** Tier used when no exact or fallback membership matches. */
|
|
244
|
+
defaultTier?: string;
|
|
243
245
|
tiers: {
|
|
244
246
|
label: string;
|
|
245
247
|
models: string[];
|
|
@@ -8,17 +8,28 @@
|
|
|
8
8
|
export declare const DEVIN_DEFAULT_BASE_URL = "https://server.codeium.com";
|
|
9
9
|
/** Session token as the wire format carries it: the scheme prefix is required. */
|
|
10
10
|
export declare function normalizeDevinSessionToken(apiKey: string | undefined): string;
|
|
11
|
+
/** Released-CLI metadata with credential bytes already encoded for the wire. */
|
|
12
|
+
export declare function devinWireMetadata(apiKey: string | undefined, userJwt?: string): {
|
|
13
|
+
ideName: "devin-cli";
|
|
14
|
+
ideType: "chisel";
|
|
15
|
+
ideVersion: "3000.11.3";
|
|
16
|
+
extensionName: "chisel";
|
|
17
|
+
extensionVersion: "3000.11.3";
|
|
18
|
+
locale: "en";
|
|
19
|
+
os: "darwin" | "linux" | "windows";
|
|
20
|
+
apiKey: string;
|
|
21
|
+
userJwt: string;
|
|
22
|
+
};
|
|
11
23
|
/**
|
|
12
24
|
* Fields for `Metadata` on released-CLI calls (`GetUserJwt`, `AssignModel`,
|
|
13
|
-
* `GetChatMessage`, `GetUserStatus`)
|
|
14
|
-
* CLI makes with the session token alone (auth, model assignment, usage).
|
|
25
|
+
* `GetChatMessage`, `GetUserStatus`) authenticated by a Devin session token.
|
|
15
26
|
*/
|
|
16
27
|
export declare function devinCliMetadata(apiKey: string | undefined, userJwt?: string): {
|
|
17
28
|
ideName: "devin-cli";
|
|
18
29
|
ideType: "chisel";
|
|
19
|
-
ideVersion: "3000.
|
|
30
|
+
ideVersion: "3000.11.3";
|
|
20
31
|
extensionName: "chisel";
|
|
21
|
-
extensionVersion: "3000.
|
|
32
|
+
extensionVersion: "3000.11.3";
|
|
22
33
|
locale: "en";
|
|
23
34
|
os: "darwin" | "linux" | "windows";
|
|
24
35
|
apiKey: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-my-pi/pi-catalog",
|
|
3
|
-
"version": "18.4.
|
|
3
|
+
"version": "18.4.2",
|
|
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.4.
|
|
97
|
-
"@oh-my-pi/pi-utils": "18.4.
|
|
96
|
+
"@oh-my-pi/omptype": "18.4.2",
|
|
97
|
+
"@oh-my-pi/pi-utils": "18.4.2"
|
|
98
98
|
},
|
|
99
99
|
"devDependencies": {
|
|
100
100
|
"@bgotink/kdl": "0.4.0",
|
|
101
|
-
"@oh-my-pi/pi-ai": "18.4.
|
|
101
|
+
"@oh-my-pi/pi-ai": "18.4.2",
|
|
102
102
|
"@types/bun": "^1.3.14"
|
|
103
103
|
},
|
|
104
104
|
"engines": {
|
package/src/compat/behavior.ts
CHANGED
|
@@ -100,7 +100,7 @@ export function quotaTierFor(provider: string, model: string): string | undefine
|
|
|
100
100
|
for (const fallback of rule.fallbacks) {
|
|
101
101
|
if (model.includes(fallback.substring)) return fallback.label;
|
|
102
102
|
}
|
|
103
|
-
return
|
|
103
|
+
return rule.defaultTier;
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
/** UTC offset for a provider's timezone-naive absolute retry-reset timestamps. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { toModelSpec } from "../provider-models/bundled-references";
|
|
2
2
|
import type { Model } from "../types";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveCatalogAxes } from "./resolve";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Rule-owned catalog-axis policy by model. Resolve once per process rather
|
|
@@ -21,7 +21,7 @@ export function resolveCatalogPolicy(model: Model): Readonly<Record<string, unkn
|
|
|
21
21
|
const key = `${model.provider}\u0000${model.providerType ?? ""}\u0000${model.api}\u0000${model.id}\u0000${model.reasoning ? 1 : 0}`;
|
|
22
22
|
const cached = catalogPolicyCache.get(key);
|
|
23
23
|
if (cached !== undefined) return cached;
|
|
24
|
-
const policy = Object.freeze({ ...
|
|
24
|
+
const policy = Object.freeze({ ...resolveCatalogAxes(toModelSpec(model)) });
|
|
25
25
|
if (catalogPolicyCache.size >= CATALOG_POLICY_CACHE_MAX) catalogPolicyCache.clear();
|
|
26
26
|
catalogPolicyCache.set(key, policy);
|
|
27
27
|
return policy;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { toModelSpec } from "../provider-models/bundled-references";
|
|
2
2
|
import type { Model } from "../types";
|
|
3
|
-
import {
|
|
3
|
+
import { resolveCatalogAxes } from "./resolve";
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Rule-owned maxima by provider/id/api. Resolve once per process rather than
|
|
@@ -21,7 +21,7 @@ export function resolveMaxContextWindow(model: Model): number | undefined {
|
|
|
21
21
|
const key = `${model.provider} ${model.id} ${model.api}`;
|
|
22
22
|
let curated = ruleMaximumCache.get(key);
|
|
23
23
|
if (curated === undefined) {
|
|
24
|
-
const maximum =
|
|
24
|
+
const maximum = resolveCatalogAxes(toModelSpec(model)).maxContextWindow;
|
|
25
25
|
curated = typeof maximum === "number" && Number.isFinite(maximum) && maximum > 0 ? maximum : null;
|
|
26
26
|
if (ruleMaximumCache.size >= RULE_POLICY_CACHE_MAX) ruleMaximumCache.clear();
|
|
27
27
|
ruleMaximumCache.set(key, curated);
|
|
@@ -56,7 +56,7 @@ export function clampsContextOverride(model: Model): boolean {
|
|
|
56
56
|
const key = `${model.provider} ${model.id} ${model.api}`;
|
|
57
57
|
const cached = clampOverrideCache.get(key);
|
|
58
58
|
if (cached !== undefined) return cached;
|
|
59
|
-
const clamps =
|
|
59
|
+
const clamps = resolveCatalogAxes(toModelSpec(model)).clampContextOverride === true;
|
|
60
60
|
if (clampOverrideCache.size >= RULE_POLICY_CACHE_MAX) clampOverrideCache.clear();
|
|
61
61
|
clampOverrideCache.set(key, clamps);
|
|
62
62
|
return clamps;
|
package/src/compat/resolve.ts
CHANGED
|
@@ -1241,6 +1241,15 @@ export function resolveDiscoveryApi(spec: ModelSpec<Api>, providerType: string):
|
|
|
1241
1241
|
return typeof discoveryApi === "string" ? discoveryApi : spec.api;
|
|
1242
1242
|
}
|
|
1243
1243
|
|
|
1244
|
+
/**
|
|
1245
|
+
* Catalog-data axis assignments for one model spec — the `catalog` field of
|
|
1246
|
+
* {@link resolveModelPolicy} without resolving the compat and thinking
|
|
1247
|
+
* policies, which dominate its cost on catalog-wide scans.
|
|
1248
|
+
*/
|
|
1249
|
+
export function resolveCatalogAxes(spec: ModelSpec<Api>): Record<string, unknown> {
|
|
1250
|
+
return resolveCascade(buildResolveTarget(spec, resolveIdentity(spec))).catalog;
|
|
1251
|
+
}
|
|
1252
|
+
|
|
1244
1253
|
/**
|
|
1245
1254
|
* Resolves the full policy surface for one model spec: structured identity,
|
|
1246
1255
|
* complete compat record, thinking metadata, and catalog-data corrections.
|
|
@@ -7,11 +7,6 @@ provider "amazon-bedrock" {
|
|
|
7
7
|
// (`amazon-bedrock.ts`), so a block can land above text already rendered.
|
|
8
8
|
stream-revision "possible"
|
|
9
9
|
class "anthropic" {
|
|
10
|
-
family "fable" {
|
|
11
|
-
revision ">=5.1 <5.2" {
|
|
12
|
-
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
10
|
family "opus" {
|
|
16
11
|
revision ">=4.6 <4.7" {
|
|
17
12
|
thinking-mode "anthropic-adaptive"
|
|
@@ -22,6 +17,22 @@ provider "amazon-bedrock" {
|
|
|
22
17
|
stream-idle-timeout-ms 900000
|
|
23
18
|
thinking-efforts "low" "medium" "high" "max"
|
|
24
19
|
}
|
|
20
|
+
// First-party >=4.7 xhigh/max omits amazon-bedrock: the host rule
|
|
21
|
+
// above is a shorter ladder. From 5.1 the host accepts the full set.
|
|
22
|
+
revision ">=5.1" {
|
|
23
|
+
thinking-efforts "low" "medium" "high" "xhigh" "max"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
class "xai" {
|
|
27
|
+
family "grok" {
|
|
28
|
+
// Converse accepts reasoning.effort for Grok 4.6; budget_tokens is
|
|
29
|
+
// the Anthropic path and the unknown-class default. Older Groks
|
|
30
|
+
// are unverified and keep budget.
|
|
31
|
+
revision ">=4.6" {
|
|
32
|
+
thinking-mode "effort"
|
|
33
|
+
thinking-efforts "low" "medium" "high" "xhigh"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
25
36
|
}
|
|
26
37
|
class "openai" {
|
|
27
38
|
thinking-mode "effort"
|