jeopi-catalog 16.6.2 → 16.6.3
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
CHANGED
|
@@ -2,6 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [16.6.3] - 2026-10-16
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Refresh Antigravity account catalogs with the current client version so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers are discoverable. Invalidate model caches when the client identity changes and exclude explicitly designated tab and image-generation models without removing other chat models.
|
|
10
|
+
|
|
5
11
|
## [16.6.2] - 2026-10-03
|
|
6
12
|
|
|
7
13
|
### Changed
|
|
@@ -31,12 +31,22 @@ export interface AntigravityDiscoveryAgentModelGroup {
|
|
|
31
31
|
export interface AntigravityDiscoveryAgentModelSort {
|
|
32
32
|
groups?: AntigravityDiscoveryAgentModelGroup[];
|
|
33
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Tiered model ids returned by Antigravity's authenticated agent picker.
|
|
36
|
+
*/
|
|
37
|
+
export interface AntigravityDiscoveryTieredModelIds {
|
|
38
|
+
[tier: string]: string[];
|
|
39
|
+
}
|
|
34
40
|
/**
|
|
35
41
|
* Response payload returned by Antigravity's `fetchAvailableModels` endpoint.
|
|
36
42
|
*/
|
|
37
43
|
export interface AntigravityDiscoveryApiResponse {
|
|
38
44
|
models?: Record<string, AntigravityDiscoveryApiModel>;
|
|
39
45
|
agentModelSorts?: AntigravityDiscoveryAgentModelSort[];
|
|
46
|
+
tabModelIds?: string[];
|
|
47
|
+
imageGenerationModelIds?: string[];
|
|
48
|
+
tieredModelIds?: AntigravityDiscoveryTieredModelIds;
|
|
49
|
+
defaultAgentModelId?: string;
|
|
40
50
|
}
|
|
41
51
|
/**
|
|
42
52
|
* Options for fetching Antigravity discovery models.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "jeopi-catalog",
|
|
4
|
-
"version": "16.6.
|
|
4
|
+
"version": "16.6.3",
|
|
5
5
|
"description": "Model catalog for jeopi: bundled model database, provider discovery descriptors, model identity, classification, and equivalence",
|
|
6
6
|
"homepage": "https://github.com/akillness/jeopi",
|
|
7
7
|
"author": "Can Boluk",
|
|
@@ -34,12 +34,12 @@
|
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
36
|
"@bufbuild/protobuf": "^2.12.0",
|
|
37
|
-
"jeopi-utils": "16.6.
|
|
37
|
+
"jeopi-utils": "16.6.3",
|
|
38
38
|
"arktype": "2.2.3",
|
|
39
39
|
"zod": "^4"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"jeopi-ai": "16.6.
|
|
42
|
+
"jeopi-ai": "16.6.3",
|
|
43
43
|
"@types/bun": "^1.3.14"
|
|
44
44
|
},
|
|
45
45
|
"engines": {
|
|
@@ -49,13 +49,36 @@ export interface AntigravityDiscoveryAgentModelSort {
|
|
|
49
49
|
groups?: AntigravityDiscoveryAgentModelGroup[];
|
|
50
50
|
}
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Tiered model ids returned by Antigravity's authenticated agent picker.
|
|
54
|
+
*/
|
|
55
|
+
export interface AntigravityDiscoveryTieredModelIds {
|
|
56
|
+
[tier: string]: string[];
|
|
57
|
+
}
|
|
58
|
+
|
|
52
59
|
/**
|
|
53
60
|
* Response payload returned by Antigravity's `fetchAvailableModels` endpoint.
|
|
54
61
|
*/
|
|
55
62
|
export interface AntigravityDiscoveryApiResponse {
|
|
56
63
|
models?: Record<string, AntigravityDiscoveryApiModel>;
|
|
57
64
|
agentModelSorts?: AntigravityDiscoveryAgentModelSort[];
|
|
65
|
+
tabModelIds?: string[];
|
|
66
|
+
imageGenerationModelIds?: string[];
|
|
67
|
+
tieredModelIds?: AntigravityDiscoveryTieredModelIds;
|
|
68
|
+
defaultAgentModelId?: string;
|
|
58
69
|
}
|
|
70
|
+
|
|
71
|
+
const parseModelIdList = (value: unknown): string[] | undefined => {
|
|
72
|
+
if (!Array.isArray(value)) return undefined;
|
|
73
|
+
const modelIds: string[] = [];
|
|
74
|
+
for (const modelId of value) {
|
|
75
|
+
if (typeof modelId === "string" && modelId.trim()) {
|
|
76
|
+
modelIds.push(modelId.trim());
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return modelIds;
|
|
80
|
+
};
|
|
81
|
+
|
|
59
82
|
const AntigravityDiscoveryApiModelSchema = type({
|
|
60
83
|
"displayName?": type("unknown").pipe(value => (typeof value === "string" ? value : undefined)),
|
|
61
84
|
"supportsImages?": type("unknown").pipe(value => (typeof value === "boolean" ? value : undefined)),
|
|
@@ -78,9 +101,7 @@ const AntigravityDiscoveryApiModelSchema = type({
|
|
|
78
101
|
});
|
|
79
102
|
|
|
80
103
|
const AntigravityDiscoveryAgentModelGroupSchema = type({
|
|
81
|
-
"modelIds?": type("unknown").pipe(
|
|
82
|
-
Array.isArray(value) ? value.filter((modelId): modelId is string => typeof modelId === "string") : undefined,
|
|
83
|
-
),
|
|
104
|
+
"modelIds?": type("unknown").pipe(parseModelIdList),
|
|
84
105
|
});
|
|
85
106
|
|
|
86
107
|
const AntigravityDiscoveryAgentModelSortSchema = type({
|
|
@@ -97,6 +118,20 @@ const AntigravityDiscoveryAgentModelSortSchema = type({
|
|
|
97
118
|
}),
|
|
98
119
|
});
|
|
99
120
|
|
|
121
|
+
const AntigravityDiscoveryTieredModelIdsSchema = type("unknown").pipe(value => {
|
|
122
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
const normalized: AntigravityDiscoveryTieredModelIds = {};
|
|
126
|
+
for (const [tier, modelIds] of Object.entries(value)) {
|
|
127
|
+
const parsedModelIds = parseModelIdList(modelIds);
|
|
128
|
+
if (parsedModelIds?.length) {
|
|
129
|
+
normalized[tier] = parsedModelIds;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return normalized;
|
|
133
|
+
});
|
|
134
|
+
|
|
100
135
|
const AntigravityDiscoveryApiResponseSchema = type({
|
|
101
136
|
"models?": type("unknown").pipe(value => {
|
|
102
137
|
if (typeof value !== "object" || value === null) {
|
|
@@ -127,6 +162,12 @@ const AntigravityDiscoveryApiResponseSchema = type({
|
|
|
127
162
|
}
|
|
128
163
|
return result;
|
|
129
164
|
}),
|
|
165
|
+
"tabModelIds?": type("unknown").pipe(parseModelIdList),
|
|
166
|
+
"imageGenerationModelIds?": type("unknown").pipe(parseModelIdList),
|
|
167
|
+
"tieredModelIds?": AntigravityDiscoveryTieredModelIdsSchema,
|
|
168
|
+
"defaultAgentModelId?": type("unknown").pipe(value =>
|
|
169
|
+
typeof value === "string" && value.trim() ? value.trim() : undefined,
|
|
170
|
+
),
|
|
130
171
|
});
|
|
131
172
|
/**
|
|
132
173
|
* Options for fetching Antigravity discovery models.
|
|
@@ -205,6 +246,8 @@ export async function fetchAntigravityDiscoveryModels(
|
|
|
205
246
|
}
|
|
206
247
|
|
|
207
248
|
const models: ModelSpec<"google-gemini-cli">[] = [];
|
|
249
|
+
const excludedModelIds = new Set([...(parsed.tabModelIds ?? []), ...(parsed.imageGenerationModelIds ?? [])]);
|
|
250
|
+
const pickerModelIds = collectPickerModelIds(parsed);
|
|
208
251
|
|
|
209
252
|
for (const [modelId, model] of Object.entries(parsed.models ?? {})) {
|
|
210
253
|
if (ANTIGRAVITY_DISCOVERY_DENYLIST.has(modelId)) {
|
|
@@ -213,6 +256,12 @@ export async function fetchAntigravityDiscoveryModels(
|
|
|
213
256
|
if (model.isInternal === true) {
|
|
214
257
|
continue;
|
|
215
258
|
}
|
|
259
|
+
if (excludedModelIds.has(modelId)) {
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (pickerModelIds && !model.displayName?.trim() && !pickerModelIds.has(modelId)) {
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
216
265
|
|
|
217
266
|
const supportsImages = model.supportsImages === true;
|
|
218
267
|
models.push({
|
|
@@ -245,6 +294,26 @@ export async function fetchAntigravityDiscoveryModels(
|
|
|
245
294
|
return null;
|
|
246
295
|
}
|
|
247
296
|
|
|
297
|
+
function collectPickerModelIds(response: AntigravityDiscoveryApiResponse): Set<string> | undefined {
|
|
298
|
+
const modelIds = new Set<string>();
|
|
299
|
+
for (const sort of response.agentModelSorts ?? []) {
|
|
300
|
+
for (const group of sort.groups ?? []) {
|
|
301
|
+
for (const modelId of group.modelIds ?? []) {
|
|
302
|
+
modelIds.add(modelId);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
for (const tierModelIds of Object.values(response.tieredModelIds ?? {})) {
|
|
307
|
+
for (const modelId of tierModelIds) {
|
|
308
|
+
modelIds.add(modelId);
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
if (response.defaultAgentModelId) {
|
|
312
|
+
modelIds.add(response.defaultAgentModelId);
|
|
313
|
+
}
|
|
314
|
+
return modelIds.size ? modelIds : undefined;
|
|
315
|
+
}
|
|
316
|
+
|
|
248
317
|
function parseAntigravityDiscoveryResponse(value: unknown): AntigravityDiscoveryApiResponse | null {
|
|
249
318
|
// An absent or corrupt map is a failed discovery, never an authoritative empty catalog.
|
|
250
319
|
if (typeof value !== "object" || value === null || !("models" in value)) return null;
|
|
@@ -3,6 +3,7 @@ import { fetchGeminiModels } from "../discovery/gemini";
|
|
|
3
3
|
import type { ModelManagerOptions } from "../model-manager";
|
|
4
4
|
import type { FetchImpl } from "../types";
|
|
5
5
|
import { GEMINI_CLI_VARIANT_COLLAPSE_TABLE } from "../variant-collapse";
|
|
6
|
+
import { getAntigravityUserAgent } from "../wire/gemini-headers";
|
|
6
7
|
|
|
7
8
|
export interface GoogleModelManagerConfig {
|
|
8
9
|
apiKey?: string;
|
|
@@ -70,7 +71,7 @@ export function googleAntigravityModelManagerOptions(
|
|
|
70
71
|
providerId: "google-antigravity",
|
|
71
72
|
...(token
|
|
72
73
|
? {
|
|
73
|
-
cacheProviderId: `google-antigravity:discovery-
|
|
74
|
+
cacheProviderId: `google-antigravity:discovery-v3:${Bun.hash(JSON.stringify([endpoint, config?.cacheScope ?? token, getAntigravityUserAgent()])).toString(36)}`,
|
|
74
75
|
dynamicModelsAuthoritative: true,
|
|
75
76
|
preserveAuthoritativeCacheOnFailure: true,
|
|
76
77
|
fetchDynamicModels: async () => {
|
|
@@ -27,7 +27,7 @@ export const ANTIGRAVITY_SYSTEM_INSTRUCTION =
|
|
|
27
27
|
* parse graph.
|
|
28
28
|
*/
|
|
29
29
|
export let getAntigravityUserAgent = () => {
|
|
30
|
-
const DEFAULT_ANTIGRAVITY_VERSION = "2.1
|
|
30
|
+
const DEFAULT_ANTIGRAVITY_VERSION = "2.23.1";
|
|
31
31
|
const version = process.env.PI_AI_ANTIGRAVITY_VERSION || DEFAULT_ANTIGRAVITY_VERSION;
|
|
32
32
|
// Map Node.js platform/arch to Antigravity's expected format.
|
|
33
33
|
// Verified against Antigravity source: _qn() and wqn() in main.js.
|