dsh-antigravity-auth 0.1.1 → 0.1.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 +5 -0
- package/README.md +4 -3
- package/README.zh.md +4 -3
- package/lib/llm-adapter.js +31 -6
- package/lib/types/llm-adapter.d.ts +1 -0
- package/lib/types/llm-adapter.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.1.2] - 2026-08-27
|
|
6
|
+
|
|
7
|
+
- Kept the Antigravity provider visible in DSH's stock model catalog during explicitly allowlisted transient live-discovery failures by falling back to the audited pinned text snapshot.
|
|
8
|
+
- Preserved fail-closed handling for missing authentication, authorization denial, cancellation, attribution rejection, unknown failures, and successful live catalogs with no supported-model intersection.
|
|
9
|
+
|
|
5
10
|
## [0.1.1] - 2026-08-25
|
|
6
11
|
|
|
7
12
|
- Fixed Windows reads of auth, capability-gate, and controlled live-image records by applying `0700`/`0600` mode rejection only on POSIX while retaining symlink, file-type, size, schema, and content validation on every platform.
|
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
English | [中文](README.zh.md)
|
|
7
7
|
|
|
8
|
-
Current release: **v0.1.
|
|
8
|
+
Current release: **v0.1.2**
|
|
9
9
|
|
|
10
10
|
A self-contained [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
|
|
11
11
|
**Antigravity Capability Bundle**. It integrates Antigravity's private OAuth session
|
|
@@ -39,6 +39,7 @@ and Wire Identity for:
|
|
|
39
39
|
|
|
40
40
|
- Registers the `google-antigravity` provider through DSH's public `LlmAdapter` seam.
|
|
41
41
|
- Intersects the pinned community model catalog with live account discovery.
|
|
42
|
+
- Keeps DSH's stock model selector usable when live discovery is temporarily unavailable or drifts by falling back to the pinned text snapshot; Settings still reports the live-catalog state. A successful empty intersection stays empty, while missing authentication, authorization denial, cancellation, and explicit attribution rejection remain fail-closed.
|
|
42
43
|
- Supports streaming with pre-delta authentication replay and preserve-by-id function call correlation across fragmented provider names.
|
|
43
44
|
|
|
44
45
|
### Web Search
|
|
@@ -99,7 +100,7 @@ git clone https://github.com/suntianc/dsh-antigravity-auth.git
|
|
|
99
100
|
cd dsh-antigravity-auth
|
|
100
101
|
pnpm install
|
|
101
102
|
pnpm pack
|
|
102
|
-
dsh plugin --profile web add ./dsh-antigravity-auth-0.1.
|
|
103
|
+
dsh plugin --profile web add ./dsh-antigravity-auth-0.1.2.tgz
|
|
103
104
|
```
|
|
104
105
|
|
|
105
106
|
## Upgrade
|
|
@@ -107,7 +108,7 @@ dsh plugin --profile web add ./dsh-antigravity-auth-0.1.1.tgz
|
|
|
107
108
|
Stop the running `dsh web` process and update the Web profile:
|
|
108
109
|
|
|
109
110
|
```sh
|
|
110
|
-
dsh plugin --profile web add dsh-antigravity-auth@0.1.
|
|
111
|
+
dsh plugin --profile web add dsh-antigravity-auth@0.1.2
|
|
111
112
|
dsh plugin --profile web list
|
|
112
113
|
```
|
|
113
114
|
|
package/README.zh.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
[English](README.md) | 中文
|
|
7
7
|
|
|
8
|
-
当前版本:**v0.1.
|
|
8
|
+
当前版本:**v0.1.2**
|
|
9
9
|
|
|
10
10
|
这是一个自包含的 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
|
|
11
11
|
**Antigravity 能力包**。它集成了 Antigravity 的私有 OAuth 登录态与 Wire Identity 线路身份,提供:
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
|
|
37
37
|
- 通过 DSH 公开的 `LlmAdapter` 接口注册 `google-antigravity` 提供方。
|
|
38
38
|
- 将已审计的固定社区模型快照与真实登录账号的可用模型取交集。
|
|
39
|
+
- 当真实模型发现暂时不可用或发生协议漂移时,DSH 内置模型选择器会回退到固定文本模型快照,设置页仍诚实显示 live catalog 状态;成功但零交集的结果仍保持为空,未登录、授权拒绝、取消与明确的 attribution 拒绝仍保持 fail-closed。
|
|
39
40
|
- 流式传输支持首个数据块前的一次认证重放,并支持跨分片提供方函数名的 call-id 稳定关联。
|
|
40
41
|
|
|
41
42
|
### 网页搜索
|
|
@@ -91,7 +92,7 @@ git clone https://github.com/suntianc/dsh-antigravity-auth.git
|
|
|
91
92
|
cd dsh-antigravity-auth
|
|
92
93
|
pnpm install
|
|
93
94
|
pnpm pack
|
|
94
|
-
dsh plugin --profile web add ./dsh-antigravity-auth-0.1.
|
|
95
|
+
dsh plugin --profile web add ./dsh-antigravity-auth-0.1.2.tgz
|
|
95
96
|
```
|
|
96
97
|
|
|
97
98
|
## 升级
|
|
@@ -99,7 +100,7 @@ dsh plugin --profile web add ./dsh-antigravity-auth-0.1.1.tgz
|
|
|
99
100
|
先停止正在运行的 `dsh web`,再将 Web Profile 更新到当前版本:
|
|
100
101
|
|
|
101
102
|
```sh
|
|
102
|
-
dsh plugin --profile web add dsh-antigravity-auth@0.1.
|
|
103
|
+
dsh plugin --profile web add dsh-antigravity-auth@0.1.2
|
|
103
104
|
dsh plugin --profile web list
|
|
104
105
|
```
|
|
105
106
|
|
package/lib/llm-adapter.js
CHANGED
|
@@ -78,6 +78,7 @@ var AntigravityAdapter = class extends LlmAdapter {
|
|
|
78
78
|
}
|
|
79
79
|
async listModels(provider, signal) {
|
|
80
80
|
this.providerInfo(provider);
|
|
81
|
+
const snapshot = this.pinnedTextModelInfos();
|
|
81
82
|
let available;
|
|
82
83
|
try {
|
|
83
84
|
available = await this.readLiveModelIds(signal);
|
|
@@ -85,9 +86,13 @@ var AntigravityAdapter = class extends LlmAdapter {
|
|
|
85
86
|
} catch (error) {
|
|
86
87
|
const state = error instanceof LlmError && error.code === "PROTOCOL_DRIFT" ? "protocol-drift" : "refresh-failed";
|
|
87
88
|
this.catalogView = createCatalogView(this.definitions, state, void 0, (/* @__PURE__ */ new Date()).toISOString());
|
|
88
|
-
throw error;
|
|
89
|
+
if (!canFallBackToPinnedTextSnapshot(error)) throw error;
|
|
90
|
+
return snapshot;
|
|
89
91
|
}
|
|
90
|
-
return
|
|
92
|
+
return snapshot.filter((model) => available.has(model.id));
|
|
93
|
+
}
|
|
94
|
+
pinnedTextModelInfos() {
|
|
95
|
+
return Object.values(this.definitions).filter((definition) => !definition.modalities.output.includes("image")).map((definition) => ({
|
|
91
96
|
provider: ANTIGRAVITY_PROVIDER,
|
|
92
97
|
id: definition.id,
|
|
93
98
|
name: cleanModelDisplayName(definition.name),
|
|
@@ -273,7 +278,7 @@ var AntigravityAdapter = class extends LlmAdapter {
|
|
|
273
278
|
responseHeaderTimeoutMs: this.options.responseHeaderTimeoutMs
|
|
274
279
|
});
|
|
275
280
|
} catch (error) {
|
|
276
|
-
const failure =
|
|
281
|
+
const failure = toModelCatalogError(error, signal, "provider");
|
|
277
282
|
this.rememberCatalogFailure(credential.projectId, failure);
|
|
278
283
|
throw failure;
|
|
279
284
|
}
|
|
@@ -285,8 +290,18 @@ var AntigravityAdapter = class extends LlmAdapter {
|
|
|
285
290
|
...signal === void 0 ? {} : { signal },
|
|
286
291
|
responseHeaderTimeoutMs: this.options.responseHeaderTimeoutMs
|
|
287
292
|
});
|
|
288
|
-
if (retryResponse.ok)
|
|
289
|
-
|
|
293
|
+
if (retryResponse.ok) {
|
|
294
|
+
await cancelResponse(response);
|
|
295
|
+
response = retryResponse;
|
|
296
|
+
} else await cancelResponse(retryResponse);
|
|
297
|
+
} catch (error) {
|
|
298
|
+
const failure = toModelCatalogError(error, signal, "provider");
|
|
299
|
+
if (failure.code === "CANCELLED" || failure.code === "GATE_0_ATTRIBUTION") {
|
|
300
|
+
await cancelResponse(response);
|
|
301
|
+
this.rememberCatalogFailure(credential.projectId, failure);
|
|
302
|
+
throw failure;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
290
305
|
const statusError = privateStatusError(response.status);
|
|
291
306
|
if (statusError !== void 0) {
|
|
292
307
|
await cancelResponse(response);
|
|
@@ -307,7 +322,7 @@ var AntigravityAdapter = class extends LlmAdapter {
|
|
|
307
322
|
maxBytes: Math.min(this.options.maxResponseBytes, MAX_MODEL_CATALOG_BYTES)
|
|
308
323
|
}));
|
|
309
324
|
} catch (error) {
|
|
310
|
-
const failure = error
|
|
325
|
+
const failure = toModelCatalogError(error, signal, "protocol");
|
|
311
326
|
this.rememberCatalogFailure(credential.projectId, failure);
|
|
312
327
|
throw failure;
|
|
313
328
|
}
|
|
@@ -864,6 +879,16 @@ const LLM_FAILURE_CODES = {
|
|
|
864
879
|
network: "NETWORK",
|
|
865
880
|
failed: "PROVIDER_ERROR"
|
|
866
881
|
};
|
|
882
|
+
function canFallBackToPinnedTextSnapshot(error) {
|
|
883
|
+
if (!(error instanceof LlmError)) return false;
|
|
884
|
+
return error.code === "RATE_LIMIT" || error.code === "TIMEOUT" || error.code === "PROTOCOL_DRIFT" || error.code === "RESPONSE_LIMIT" || error.code === "UPSTREAM" || error.code === "NETWORK";
|
|
885
|
+
}
|
|
886
|
+
function toModelCatalogError(error, signal, fallback) {
|
|
887
|
+
if (isAborted(signal)) return new LlmError("The Antigravity live model catalog request was cancelled", "CANCELLED");
|
|
888
|
+
if (error instanceof LlmError) return error;
|
|
889
|
+
if (error instanceof PrivateTransportError || fallback === "provider") return toLlmError(error);
|
|
890
|
+
return new LlmError("The Antigravity live model catalog did not match the audited schema", "PROTOCOL_DRIFT");
|
|
891
|
+
}
|
|
867
892
|
function toLlmError(error) {
|
|
868
893
|
if (error instanceof LlmError) return error;
|
|
869
894
|
if (error instanceof PrivateTransportError) {
|
|
@@ -54,6 +54,7 @@ export declare class AntigravityAdapter extends LlmAdapter {
|
|
|
54
54
|
/** Refresh the advisory catalog and collapse failures into browser-safe state. */
|
|
55
55
|
modelCatalog(signal?: AbortSignal, forceRefresh?: boolean): Promise<AntigravityModelCatalogView>;
|
|
56
56
|
listModels(provider: string, signal?: AbortSignal): Promise<readonly LlmModelInfo[]>;
|
|
57
|
+
private pinnedTextModelInfos;
|
|
57
58
|
resolveModel(provider: string, model: string, _signal?: AbortSignal): Promise<LlmResolvedModelInfo>;
|
|
58
59
|
stream(options: GenerateOptions): AsyncIterable<StreamChunk>;
|
|
59
60
|
private streamResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-adapter.d.ts","sourceRoot":"","sources":["../../src/llm-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"llm-adapter.d.ts","sourceRoot":"","sources":["../../src/llm-adapter.ts"],"names":[],"mappings":"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"}
|