jeo-code 0.12.3 → 0.12.4
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 +11 -0
- package/README.ja.md +1 -1
- package/README.ko.md +1 -1
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/package.json +1 -1
- package/src/ai/model-cache.ts +2 -1
- package/src/ai/model-catalog.ts +1 -1
- package/src/ai/model-discovery.ts +13 -6
- package/src/ai/providers/antigravity.ts +2 -2
- package/src/ai/providers/gemini.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,17 @@ The README mirrors the latest 5 entries — regenerate with `bun run changelog:s
|
|
|
9
9
|
|
|
10
10
|
## [Unreleased]
|
|
11
11
|
|
|
12
|
+
## [0.12.4] - 2026-10-17
|
|
13
|
+
_Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`._
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- **Antigravity provider client identity & Argon catalog visibility** (`src/ai/providers/antigravity.ts`, `src/ai/model-discovery.ts`) — updated `getAntigravityUserAgent()` from `antigravity/1.104.0` to `antigravity/hub/2.23.1` (`jeopi` v16.6.3 parity) so `daily-cloudcode-pa.googleapis.com/v1internal:fetchAvailableModels` returns entitled `gemini-4-argon-{low,medium,high}` and `gemini-3.8-flash-*` tiers. Preserved named non-recommended chat models (`displayName`) alongside `agentModelSorts`/`tieredModelIds`/`defaultAgentModelId` while excluding explicit non-chat (`tabModelIds`, `imageGenerationModelIds`, `audioTranscriptionModelIds`, `deprecatedModelIds`), internal, and unnamed rows.
|
|
17
|
+
- **Client-UA-scoped Antigravity model cache invalidation** (`src/ai/model-cache.ts`) — included `getAntigravityUserAgent()` in `antigravityAccountScope` so client User-Agent updates immediately invalidate stale cached model lists without waiting for the 6-hour TTL.
|
|
18
|
+
- **In-name `-medium` thinking depth recognition** (`src/ai/providers/gemini.ts`, `src/ai/model-catalog.ts`) — `geminiNamedEffort` and `inferCatalogMetadata` now recognize `-medium` model suffixes (`gemini-4-argon-medium`, `gemini-3.8-flash-medium`) so unset `reasoningEffort` defaults to `medium` thinking depth.
|
|
19
|
+
|
|
20
|
+
### Verified
|
|
21
|
+
- Focused Antigravity/Gemini/discovery/catalog regression suites (`175 pass, 0 fail`), `bun run typecheck`, `bun run build`, `bun run pack:check`, and live `antigravity/gemini-4-argon-{low,medium,high}` discovery + `antigravity/gemini-4-argon-medium` inference (`HTTP 200`).
|
|
22
|
+
|
|
12
23
|
## [0.12.3] - 2026-10-17
|
|
13
24
|
_Anthropic static model catalog trimmed to claude-5.x with live API discovery, and `/route off` strictly fixes the active model with no failover._
|
|
14
25
|
|
package/README.ja.md
CHANGED
|
@@ -416,10 +416,10 @@ CI は `.github/workflows/npm-publish.yml` で公開します — GitHub リリ
|
|
|
416
416
|
|
|
417
417
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
418
418
|
- **[Unreleased]**
|
|
419
|
+
- **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
|
|
419
420
|
- **[0.12.3]** (2026-10-17) — Anthropic static model catalog trimmed to claude-5.x with live API discovery, and `/route off` strictly fixes the active model with no failover.
|
|
420
421
|
- **[0.12.2]** (2026-10-16) — Select Argon through the official agy full agent, with its own live catalog and session, separately from jeo's Cloud Code Assist backend.
|
|
421
422
|
- **[0.12.1]** (2026-10-16) — Logged-in OpenAI subscription models were invisible on proxy-configured machines.
|
|
422
|
-
- **[0.12.0]** (2026-10-16) — Karpathy behavioral guardrails become always-on discipline, and skill routing gains an ECC single-harness inventory plus a Jev-style advisory router.
|
|
423
423
|
|
|
424
424
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
425
425
|
<!-- CHANGELOG:END -->
|
package/README.ko.md
CHANGED
|
@@ -417,10 +417,10 @@ CI는 `.github/workflows/npm-publish.yml`로 배포합니다 — GitHub 릴리
|
|
|
417
417
|
|
|
418
418
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
419
419
|
- **[Unreleased]**
|
|
420
|
+
- **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
|
|
420
421
|
- **[0.12.3]** (2026-10-17) — Anthropic static model catalog trimmed to claude-5.x with live API discovery, and `/route off` strictly fixes the active model with no failover.
|
|
421
422
|
- **[0.12.2]** (2026-10-16) — Select Argon through the official agy full agent, with its own live catalog and session, separately from jeo's Cloud Code Assist backend.
|
|
422
423
|
- **[0.12.1]** (2026-10-16) — Logged-in OpenAI subscription models were invisible on proxy-configured machines.
|
|
423
|
-
- **[0.12.0]** (2026-10-16) — Karpathy behavioral guardrails become always-on discipline, and skill routing gains an ECC single-harness inventory plus a Jev-style advisory router.
|
|
424
424
|
|
|
425
425
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
426
426
|
<!-- CHANGELOG:END -->
|
package/README.md
CHANGED
|
@@ -409,10 +409,10 @@ Huge thanks to [gajae-code](https://github.com/Yeachan-Heo/gajae-code) for the i
|
|
|
409
409
|
|
|
410
410
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
411
411
|
- **[Unreleased]**
|
|
412
|
+
- **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
|
|
412
413
|
- **[0.12.3]** (2026-10-17) — Anthropic static model catalog trimmed to claude-5.x with live API discovery, and `/route off` strictly fixes the active model with no failover.
|
|
413
414
|
- **[0.12.2]** (2026-10-16) — Select Argon through the official agy full agent, with its own live catalog and session, separately from jeo's Cloud Code Assist backend.
|
|
414
415
|
- **[0.12.1]** (2026-10-16) — Logged-in OpenAI subscription models were invisible on proxy-configured machines.
|
|
415
|
-
- **[0.12.0]** (2026-10-16) — Karpathy behavioral guardrails become always-on discipline, and skill routing gains an ECC single-harness inventory plus a Jev-style advisory router.
|
|
416
416
|
|
|
417
417
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
418
418
|
<!-- CHANGELOG:END -->
|
package/README.zh.md
CHANGED
|
@@ -414,10 +414,10 @@ CI 通过 `.github/workflows/npm-publish.yml` 发布 — GitHub 发布 release
|
|
|
414
414
|
|
|
415
415
|
<!-- CHANGELOG:START (auto-generated from CHANGELOG.md — run `bun run changelog:sync`) -->
|
|
416
416
|
- **[Unreleased]**
|
|
417
|
+
- **[0.12.4]** (2026-10-17) — Refresh Antigravity provider (`antigravity/*`) account catalogs with `antigravity/hub/2.23.1` so entitled Gemini 4 Argon and Gemini 3.8 Flash tiers appear directly in `/model provider antigravity`.
|
|
417
418
|
- **[0.12.3]** (2026-10-17) — Anthropic static model catalog trimmed to claude-5.x with live API discovery, and `/route off` strictly fixes the active model with no failover.
|
|
418
419
|
- **[0.12.2]** (2026-10-16) — Select Argon through the official agy full agent, with its own live catalog and session, separately from jeo's Cloud Code Assist backend.
|
|
419
420
|
- **[0.12.1]** (2026-10-16) — Logged-in OpenAI subscription models were invisible on proxy-configured machines.
|
|
420
|
-
- **[0.12.0]** (2026-10-16) — Karpathy behavioral guardrails become always-on discipline, and skill routing gains an ECC single-harness inventory plus a Jev-style advisory router.
|
|
421
421
|
|
|
422
422
|
See [CHANGELOG.md](CHANGELOG.md) for the full history.
|
|
423
423
|
<!-- CHANGELOG:END -->
|
package/package.json
CHANGED
package/src/ai/model-cache.ts
CHANGED
|
@@ -22,6 +22,7 @@ import { jeoEnv } from "../util/env";
|
|
|
22
22
|
import { recordLiveCodexModels, recordLiveProviderModels, setAntigravityAccountScope, setOpenAIOauthAccountScope } from "./model-catalog";
|
|
23
23
|
import type { Credential } from "../auth";
|
|
24
24
|
import { getStoredOAuth, snapshotProvider } from "../auth/storage";
|
|
25
|
+
import { getAntigravityUserAgent } from "./providers/antigravity";
|
|
25
26
|
import { extractChatgptAccountId } from "./providers/openai-responses";
|
|
26
27
|
import type { ProviderName } from "./types";
|
|
27
28
|
|
|
@@ -87,7 +88,7 @@ export async function antigravityAccountScope(credential?: Credential): Promise<
|
|
|
87
88
|
|| process.env.GOOGLE_CLOUD_PROJECT?.trim()
|
|
88
89
|
|| process.env.GOOGLE_CLOUD_PROJECT_ID?.trim()
|
|
89
90
|
|| "";
|
|
90
|
-
return createHash("sha256").update(`${providerSlot}\u0000${identity}\u0000${projectId}`, "utf8").digest("hex");
|
|
91
|
+
return createHash("sha256").update(`${providerSlot}\u0000${identity}\u0000${projectId}\u0000${getAntigravityUserAgent()}`, "utf8").digest("hex");
|
|
91
92
|
} catch {
|
|
92
93
|
return undefined;
|
|
93
94
|
}
|
package/src/ai/model-catalog.ts
CHANGED
|
@@ -618,7 +618,7 @@ export function inferCatalogMetadata(modelId: string): CatalogModel | undefined
|
|
|
618
618
|
providerModel: id,
|
|
619
619
|
contextTokens: 1_000_000,
|
|
620
620
|
maxOutputTokens: 65_536,
|
|
621
|
-
thinking: !reasons ? [] : big3 || id.includes("thinking") || id.includes("-high") || id.includes("-low") ? FULL : STD,
|
|
621
|
+
thinking: !reasons ? [] : big3 || id.includes("thinking") || id.includes("-high") || id.includes("-medium") || id.includes("-low") ? FULL : STD,
|
|
622
622
|
images: true,
|
|
623
623
|
company: antigravity ? "Google Antigravity" : "Google",
|
|
624
624
|
};
|
|
@@ -212,7 +212,7 @@ function isGeminiChatModel(id: string): boolean {
|
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
type CodexModelRow = { slug?: string; id?: string; visibility?: string; supported_in_api?: boolean; priority?: number };
|
|
215
|
-
type AntigravityModelRow = { slug?: string; id?: string; name?: string; isInternal?: boolean; model?: string };
|
|
215
|
+
type AntigravityModelRow = { slug?: string; id?: string; name?: string; displayName?: string; isInternal?: boolean; model?: string };
|
|
216
216
|
|
|
217
217
|
function normalizeAntigravityModelId(id: string): string {
|
|
218
218
|
return id.replace(/^models\//, "").replace(/^antigravity\//, "");
|
|
@@ -250,8 +250,9 @@ export function parseModelsBody(provider: ProviderName, body: unknown, opts: { o
|
|
|
250
250
|
// (MODEL_PLACEHOLDER_*) and must never be surfaced. The response's OWN
|
|
251
251
|
// metadata decides what to show — no hard-coded model lists:
|
|
252
252
|
// Agent sorts and tiered model ids are complementary chat offerings, not
|
|
253
|
-
// interchangeable allowlists. Include both plus the declared default
|
|
254
|
-
//
|
|
253
|
+
// interchangeable allowlists. Include both plus the declared default and
|
|
254
|
+
// named non-recommended chat models; exclude explicit non-chat roles and
|
|
255
|
+
// unnamed unreferenced rows.
|
|
255
256
|
const payload = body as {
|
|
256
257
|
models?: Record<string, AntigravityModelRow> | AntigravityModelRow[];
|
|
257
258
|
agentModelSorts?: { groups?: { modelIds?: string[] }[] }[];
|
|
@@ -280,13 +281,16 @@ export function parseModelsBody(provider: ProviderName, body: unknown, opts: { o
|
|
|
280
281
|
if (typeof payload.defaultAgentModelId === "string") agentIds.add(normalizeAntigravityModelId(payload.defaultAgentModelId));
|
|
281
282
|
const hasChatModelMetadata = Array.isArray(payload.agentModelSorts)
|
|
282
283
|
|| payload.tieredModelIds !== undefined || payload.defaultAgentModelId !== undefined;
|
|
283
|
-
const
|
|
284
|
+
const explicitNonChat = new Set([
|
|
284
285
|
...roleIds(payload.tabModelIds),
|
|
285
286
|
...roleIds(payload.imageGenerationModelIds),
|
|
286
287
|
...roleIds(payload.audioTranscriptionModelIds),
|
|
288
|
+
...deprecated,
|
|
289
|
+
]);
|
|
290
|
+
const nonChat = new Set([
|
|
291
|
+
...explicitNonChat,
|
|
287
292
|
...roleIds(payload.commitMessageModelIds),
|
|
288
293
|
...roleIds(payload.mqueryModelIds),
|
|
289
|
-
...deprecated,
|
|
290
294
|
]);
|
|
291
295
|
const rawModels = payload.models;
|
|
292
296
|
const entries = Array.isArray(rawModels)
|
|
@@ -297,7 +301,10 @@ export function parseModelsBody(provider: ProviderName, body: unknown, opts: { o
|
|
|
297
301
|
.filter(([id, model]) =>
|
|
298
302
|
id.length > 0 &&
|
|
299
303
|
model?.isInternal !== true &&
|
|
300
|
-
|
|
304
|
+
!explicitNonChat.has(id) &&
|
|
305
|
+
(hasChatModelMetadata
|
|
306
|
+
? agentIds.size > 0 && (agentIds.has(id) || (!nonChat.has(id) && typeof model?.displayName === "string" && model.displayName.trim().length > 0))
|
|
307
|
+
: !nonChat.has(id)))
|
|
301
308
|
.map(([id]) => `antigravity/${id}`);
|
|
302
309
|
}
|
|
303
310
|
if (provider === "gemini") {
|
|
@@ -28,10 +28,10 @@ function antigravityClaudeThinkingBudget(effort: CallOptions["reasoningEffort"])
|
|
|
28
28
|
const ENDPOINTS = [ANTIGRAVITY_DAILY_ENDPOINT, ANTIGRAVITY_SANDBOX_ENDPOINT] as const;
|
|
29
29
|
|
|
30
30
|
export function getAntigravityUserAgent(): string {
|
|
31
|
-
const version = process.env.PI_AI_ANTIGRAVITY_VERSION || "
|
|
31
|
+
const version = process.env.PI_AI_ANTIGRAVITY_VERSION || "2.23.1";
|
|
32
32
|
const os = process.platform === "win32" ? "windows" : process.platform;
|
|
33
33
|
const arch = process.arch === "x64" ? "amd64" : process.arch === "ia32" ? "386" : process.arch;
|
|
34
|
-
return `antigravity/${version} ${os}/${arch}`;
|
|
34
|
+
return `antigravity/hub/${version} ${os}/${arch}`;
|
|
35
35
|
}
|
|
36
36
|
|
|
37
37
|
function antigravityModelId(model: string): string {
|
|
@@ -48,6 +48,7 @@ export function geminiThinkingBudget(model: string, effort?: CallOptions["reason
|
|
|
48
48
|
* the documented thought-token burn protection). Expects a lowercased id. */
|
|
49
49
|
function geminiNamedEffort(m: string): CallOptions["reasoningEffort"] | undefined {
|
|
50
50
|
return m.includes("-high") ? "high"
|
|
51
|
+
: m.includes("-medium") ? "medium"
|
|
51
52
|
: m.includes("-low") ? "low"
|
|
52
53
|
: m.includes("thinking") ? "medium"
|
|
53
54
|
: undefined;
|