dsh-antigravity-auth 0.1.0 → 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 +13 -3
- package/README.md +7 -5
- package/README.zh.md +7 -5
- package/lib/{capability-lifecycle--tgGKajs.js → capability-lifecycle-BjW2Jho1.js} +14 -9
- package/lib/image.js +1 -1
- package/lib/index.js +1 -1
- package/lib/live-gate-runner.js +8 -6
- package/lib/llm-adapter.js +31 -6
- package/lib/search.js +1 -1
- package/lib/types/auth-store.d.ts +2 -0
- package/lib/types/auth-store.d.ts.map +1 -1
- package/lib/types/capability-gates.d.ts +2 -0
- package/lib/types/capability-gates.d.ts.map +1 -1
- package/lib/types/live-gate-attachments.d.ts +5 -1
- package/lib/types/live-gate-attachments.d.ts.map +1 -1
- package/lib/types/llm-adapter.d.ts +1 -0
- package/lib/types/llm-adapter.d.ts.map +1 -1
- package/lib/video.js +1 -1
- package/package.json +35 -35
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
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
|
+
|
|
10
|
+
## [0.1.1] - 2026-08-25
|
|
11
|
+
|
|
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.
|
|
13
|
+
- Raised the minimum and tested DSH package baseline to `0.1.1-rc.2` and regenerated one coherent rc.2 dependency graph.
|
|
14
|
+
- Confirmed that rc.2's additive LLM preparation and normalized request-image pipeline preserve the plugin's public seams; Antigravity keeps its private transport and existing `AttachmentStore.readImage()` path rather than adopting DeepSeek Files API behavior.
|
|
15
|
+
|
|
16
|
+
## [0.1.0] - 2026-08-22
|
|
17
|
+
|
|
5
18
|
- Removed callback-URL submission from browser RPC, added closed value-free RPC error validation, and made every settings action abort with component lifetime.
|
|
6
19
|
- Replaced private-endpoint `fetch` dispatch with a plugin-owned TLS/raw HTTP/1.1 serializer that fixes ordered audited `agy` framing and mandatory truthful DSH secondary attribution.
|
|
7
20
|
- Added credential-lineage-fenced, value-free Gate 0/L/S/I/V and independent atomically persisted Gemini/Claude/GPT-OSS outcomes; Auth/LLM is derived directly from all three rather than a separately writable aggregate pass.
|
|
@@ -17,9 +30,6 @@
|
|
|
17
30
|
- Added distinct safe project discovery states for unavailable, authentication, forbidden, rate-limited, offline, malformed, and protocol-drift outcomes; no onboarding or fallback project is attempted.
|
|
18
31
|
- Raised the minimum and tested DSH package baseline to `0.1.1-rc.1`, regenerated a coherent rc.1 lockfile, and added peer-graph verification before the full offline check.
|
|
19
32
|
- Confirmed that the rc.1 credentials/authorization, session-projection, client boot, and sandbox changes require no current Antigravity behavior migration; plugin-owned auth and Wire Identity modules remain unchanged.
|
|
20
|
-
|
|
21
|
-
## [0.1.0]
|
|
22
|
-
|
|
23
33
|
- Added the offline-verifiable Host-only single-account PKCE S256 login path with a strict loopback callback listener.
|
|
24
34
|
- Added one-shot state expiry/cancellation, fixed-port conflict handling, remote callback URL submission, and safe value-free login status RPC results.
|
|
25
35
|
- Added injected project validation and versioned owner-only atomic persistence; access tokens remain Host memory and failed validation preserves the existing account.
|
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
|
|
@@ -30,7 +30,7 @@ and Wire Identity for:
|
|
|
30
30
|
- Uses one Host-only auth coordinator for LLM, Search, Image, Video, and Quota operations.
|
|
31
31
|
- Direct OAuth 2.0 with PKCE S256: Host memory generates verifier and state handle; the browser receives only the authorization URL.
|
|
32
32
|
- The callback listener binds only `127.0.0.1:51121`, accepting only the registered one-shot code/state pair.
|
|
33
|
-
- Resolves credentials through versioned owner-only storage (`0600
|
|
33
|
+
- Resolves credentials through versioned owner-only storage (POSIX `0600`; Windows user-data ACLs), short-lived in-memory cache, and proactive refresh before expiry.
|
|
34
34
|
- Coalesces concurrent refreshes in-process and enforces account/lineage consistency before persisting refreshed tokens.
|
|
35
35
|
- Shows connection state plus real-time visual progress bars for 5-hour and weekly quotas across Gemini and Claude/GPT model families.
|
|
36
36
|
- Sends no token value over the loopback-only `/antigravity-auth` Connection RPC channel.
|
|
@@ -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
|
|
@@ -68,7 +69,7 @@ Multimodal `analyze_video` tool accepts workspace MP4 videos, performing bounded
|
|
|
68
69
|
|
|
69
70
|
## Requirements
|
|
70
71
|
|
|
71
|
-
- DeepSeek Harness `0.1.1-rc.
|
|
72
|
+
- DeepSeek Harness `0.1.1-rc.2` or a compatible later `0.1.x` release.
|
|
72
73
|
- Node.js `^22.19.0` or `>=24.0.0`.
|
|
73
74
|
- A Google account with Antigravity access.
|
|
74
75
|
|
|
@@ -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.0.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
|
|
|
@@ -138,6 +139,7 @@ Requests are code-owned: only fixed HTTPS Antigravity origins and enumerated `v1
|
|
|
138
139
|
## Security and limitations
|
|
139
140
|
|
|
140
141
|
- Token values never enter the browser, settings, logs, session events, or tool metadata. Only Host-side requests receive authorization headers.
|
|
142
|
+
- POSIX owner-only modes are enforced for auth, gate-evidence, and controlled live-image files. Windows access is governed by ACLs, so synthetic POSIX group/other bits are not treated as an access decision; symlink, file-type, size, schema, and content checks remain enforced.
|
|
141
143
|
- Single-account only: no account arrays, switching, rotation, quota pools, or identity fallback.
|
|
142
144
|
- Local logout clears local storage and in-memory caches immediately.
|
|
143
145
|
- The status/login RPC channel is restricted to loopback authorities.
|
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 线路身份,提供:
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
- LLM、搜索、图片、视频与配额操作共用一个仅运行于 Host 的认证协调器。
|
|
28
28
|
- 直连 OAuth 2.0 PKCE S256 流程:Host 内存生成 verifier 与 state 句柄,浏览器仅接收授权链接,密钥绝不跨越 Host 边界。
|
|
29
29
|
- 回调监听器仅绑定 `127.0.0.1:51121`,只接受一次性的已注册 code/state 凭据对。
|
|
30
|
-
-
|
|
30
|
+
- 通过属主权限文件存储(POSIX `0600`;Windows 用户数据目录 ACL)、短时内存缓存解析凭证,并在到期前主动刷新。
|
|
31
31
|
- 进程内合并并发刷新请求;仅在账号与 lineage 未变化时原子提交新 token。
|
|
32
32
|
- 仪表盘实时显示连接状态以及 Gemini 与 Claude/GPT 模型家族的 5 小时和每周额度进度条。
|
|
33
33
|
- 插件自有、仅允许 loopback 的 `/antigravity-auth` Connection RPC 绝不向前端泄露任何 token 敏感值。
|
|
@@ -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
|
### 网页搜索
|
|
@@ -62,7 +63,7 @@
|
|
|
62
63
|
|
|
63
64
|
## 环境要求
|
|
64
65
|
|
|
65
|
-
- DeepSeek Harness `0.1.1-rc.
|
|
66
|
+
- DeepSeek Harness `0.1.1-rc.2` 或兼容的后续 `0.1.x` 版本。
|
|
66
67
|
- Node.js `^22.19.0` 或 `>=24.0.0`。
|
|
67
68
|
- 具有 Antigravity 权限的 Google 账号。
|
|
68
69
|
|
|
@@ -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.0.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
|
|
|
@@ -129,6 +130,7 @@ X-DeepSeek-Harness-Attribution: deepseek-harness/<version> (+repository-url)
|
|
|
129
130
|
## 安全与限制
|
|
130
131
|
|
|
131
132
|
- token 值绝不进入前端、设置、日志、会话事件或工具 metadata,仅在 Host 侧发起私有请求时附带认证 header。
|
|
133
|
+
- auth、gate evidence 与受控 live image 文件在 POSIX 上严格校验属主 mode;Windows 由 ACL 管理访问权限,因此不把合成的 POSIX group/other bits 作为访问判据,但仍执行 symlink、文件类型、大小、schema 与内容校验。
|
|
132
134
|
- 严格单账号模式:不提供账号池、轮换、身份回退或账号切换。
|
|
133
135
|
- 本地登出立即清除 Host 内存与本地存储。
|
|
134
136
|
- RPC 状态与登录通道仅限本机 loopback 访问。
|
|
@@ -33,16 +33,18 @@ function defaultAuthStorePath(env = process.env, home = env.HOME, platform = pro
|
|
|
33
33
|
/** Create one store whose public API never exposes an access token field. */
|
|
34
34
|
function createAuthStore(path, options = {}) {
|
|
35
35
|
const now = options.now ?? (() => Date.now());
|
|
36
|
+
const platform = options.platform ?? process.platform;
|
|
36
37
|
const enqueue = createMutationQueue();
|
|
38
|
+
const read = () => readAuthRecordForPlatform(path, platform);
|
|
37
39
|
return {
|
|
38
|
-
read
|
|
40
|
+
read,
|
|
39
41
|
commit: (draft) => enqueue(() => withStoreLock(path, async () => {
|
|
40
|
-
const record = makeRecord(draft, ((await
|
|
42
|
+
const record = makeRecord(draft, ((await read())?.revision ?? 0) + 1, now());
|
|
41
43
|
await writeAuthRecord(path, record);
|
|
42
44
|
return record;
|
|
43
45
|
})),
|
|
44
46
|
compareAndCommit: (expectedRevision, draft, expectedLineage) => enqueue(() => withStoreLock(path, async () => {
|
|
45
|
-
const current = await
|
|
47
|
+
const current = await read();
|
|
46
48
|
if ((current?.revision ?? 0) !== expectedRevision) return void 0;
|
|
47
49
|
const lineage = expectedLineage ?? draft.lineage;
|
|
48
50
|
if (lineage === void 0 ? current?.lineage !== void 0 : current?.lineage !== lineage) return void 0;
|
|
@@ -51,7 +53,7 @@ function createAuthStore(path, options = {}) {
|
|
|
51
53
|
return record;
|
|
52
54
|
})),
|
|
53
55
|
clearIfCurrent: (expectedRevision, expectedLineage) => enqueue(() => withStoreLock(path, async () => {
|
|
54
|
-
const current = await
|
|
56
|
+
const current = await read();
|
|
55
57
|
if ((current?.revision ?? 0) !== expectedRevision) return false;
|
|
56
58
|
if (expectedLineage === void 0 ? current?.lineage !== void 0 : current?.lineage !== expectedLineage) return false;
|
|
57
59
|
try {
|
|
@@ -138,7 +140,7 @@ async function removeStaleLock(path) {
|
|
|
138
140
|
if (!isNotFound(error)) return;
|
|
139
141
|
}
|
|
140
142
|
}
|
|
141
|
-
async function
|
|
143
|
+
async function readAuthRecordForPlatform(path, platform) {
|
|
142
144
|
let fileInfo;
|
|
143
145
|
try {
|
|
144
146
|
fileInfo = await lstat(path);
|
|
@@ -147,7 +149,7 @@ async function readAuthRecord(path) {
|
|
|
147
149
|
throw storeIoError();
|
|
148
150
|
}
|
|
149
151
|
if (fileInfo.isSymbolicLink() || !fileInfo.isFile()) throw unsafePermissionsError();
|
|
150
|
-
await assertOwnerOnly(path);
|
|
152
|
+
await assertOwnerOnly(path, platform);
|
|
151
153
|
let text;
|
|
152
154
|
try {
|
|
153
155
|
text = await readFile(path, "utf8");
|
|
@@ -239,11 +241,12 @@ function parseRecord(value) {
|
|
|
239
241
|
...lineage === void 0 ? {} : { lineage }
|
|
240
242
|
};
|
|
241
243
|
}
|
|
242
|
-
async function assertOwnerOnly(path) {
|
|
244
|
+
async function assertOwnerOnly(path, platform) {
|
|
243
245
|
try {
|
|
244
246
|
const file = await lstat(path);
|
|
245
247
|
const parent = await lstat(dirname(path));
|
|
246
|
-
|
|
248
|
+
const unsafePosixMode = platform !== "win32" && ((file.mode & 63) !== 0 || (parent.mode & 63) !== 0);
|
|
249
|
+
if (file.isSymbolicLink() || parent.isSymbolicLink() || !parent.isDirectory() || unsafePosixMode) throw unsafePermissionsError();
|
|
247
250
|
} catch (error) {
|
|
248
251
|
if (error instanceof AuthStoreError) throw error;
|
|
249
252
|
throw storeIoError();
|
|
@@ -1418,12 +1421,14 @@ function createMemoryCapabilityGates(initial = {}, now = () => Date.now()) {
|
|
|
1418
1421
|
}
|
|
1419
1422
|
function createFileCapabilityGates(path, options = {}) {
|
|
1420
1423
|
const now = options.now ?? (() => Date.now());
|
|
1424
|
+
const platform = options.platform ?? process.platform;
|
|
1421
1425
|
let mutation = Promise.resolve();
|
|
1422
1426
|
const read = async () => {
|
|
1423
1427
|
let text;
|
|
1424
1428
|
try {
|
|
1425
1429
|
const [file, directory] = await Promise.all([lstat(path), lstat(dirname(path))]);
|
|
1426
|
-
|
|
1430
|
+
const unsafePosixMode = platform !== "win32" && ((file.mode & 63) !== 0 || (directory.mode & 63) !== 0);
|
|
1431
|
+
if (file.isSymbolicLink() || !file.isFile() || directory.isSymbolicLink() || !directory.isDirectory() || file.size > MAX_GATE_FILE_BYTES || unsafePosixMode) throw new Error("unsafe gate record");
|
|
1427
1432
|
text = await readFile(path, "utf8");
|
|
1428
1433
|
if (text.length > MAX_GATE_FILE_BYTES) throw new Error("oversized gate record");
|
|
1429
1434
|
} catch (error) {
|
package/lib/image.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createAntigravityAuthService, n as registerCapabilitySet, t as mountCapabilityLifecycle } from "./capability-lifecycle
|
|
1
|
+
import { i as createAntigravityAuthService, n as registerCapabilitySet, t as mountCapabilityLifecycle } from "./capability-lifecycle-BjW2Jho1.js";
|
|
2
2
|
import { d as privateStatusError, i as DEFAULT_PRIVATE_RESPONSE_BYTES, l as createPrivateTransport, m as PrivateTransportError, p as readPrivateText } from "./private-transport-urF138qW.js";
|
|
3
3
|
import { ANTIGRAVITY_WIRE_ORIGIN } from "./wire-identity.js";
|
|
4
4
|
import { t as classifyPrivateFailure } from "./private-failure-B9vzUkQ7.js";
|
package/lib/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ as defaultAuthStorePath, a as maskEmail, c as defaultCapabilityGatePath, d as ANTIGRAVITY_TOKEN_ENDPOINT, f as CredentialOperationError, g as credentialErrorMessage, h as createGoogleRevokeTransport, i as createAntigravityAuthService, l as OAuthFlowError, m as createGoogleRefreshTransport, o as createFileCapabilityGates, p as createCredentialCoordinator, r as AntigravityAuthService, s as createMemoryCapabilityGates, t as mountCapabilityLifecycle, u as ANTIGRAVITY_REVOKE_ENDPOINT } from "./capability-lifecycle
|
|
1
|
+
import { _ as defaultAuthStorePath, a as maskEmail, c as defaultCapabilityGatePath, d as ANTIGRAVITY_TOKEN_ENDPOINT, f as CredentialOperationError, g as credentialErrorMessage, h as createGoogleRevokeTransport, i as createAntigravityAuthService, l as OAuthFlowError, m as createGoogleRefreshTransport, o as createFileCapabilityGates, p as createCredentialCoordinator, r as AntigravityAuthService, s as createMemoryCapabilityGates, t as mountCapabilityLifecycle, u as ANTIGRAVITY_REVOKE_ENDPOINT } from "./capability-lifecycle-BjW2Jho1.js";
|
|
2
2
|
import { a as DEFAULT_PRIVATE_RESPONSE_HEADER_TIMEOUT_MS, c as assertPrivateEndpoint, d as privateStatusError, f as readPrivateBytes, i as DEFAULT_PRIVATE_RESPONSE_BYTES, l as createPrivateTransport, m as PrivateTransportError, n as DEFAULT_PRIVATE_IDLE_TIMEOUT_MS, o as DEFAULT_PRIVATE_TOTAL_TIMEOUT_MS, p as readPrivateText, r as DEFAULT_PRIVATE_REQUEST_BYTES, s as MAX_PRIVATE_REQUEST_BYTES, t as DEFAULT_PRIVATE_FRAME_BYTES, u as iteratePrivateSse } from "./private-transport-urF138qW.js";
|
|
3
3
|
import { AGY_PROVIDER_USER_AGENT, ANTIGRAVITY_WIRE_ORIGIN, ANTIGRAVITY_WIRE_ORIGINS, ANTIGRAVITY_WIRE_PATHS, DSH_ATTRIBUTION_HEADER, WireIdentityError, assertWireIdentityInvariant, buildWireIdentityHeaders, createWireIdentity } from "./wire-identity.js";
|
|
4
4
|
import { PROJECT_DISCOVERY_ENDPOINT, PROJECT_DISCOVERY_PATH, ProjectDiscoveryError, createProjectContext, createProjectDiscovery, normalizeProjectId } from "./project-context.js";
|
package/lib/live-gate-runner.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as isBoundedSafeText } from "./safe-text-AlEyN8q_.js";
|
|
2
|
-
import { _ as defaultAuthStorePath, c as defaultCapabilityGatePath, i as createAntigravityAuthService, o as createFileCapabilityGates } from "./capability-lifecycle
|
|
2
|
+
import { _ as defaultAuthStorePath, c as defaultCapabilityGatePath, i as createAntigravityAuthService, o as createFileCapabilityGates } from "./capability-lifecycle-BjW2Jho1.js";
|
|
3
3
|
import { ANTIGRAVITY_PROVIDER, AntigravityAdapter } from "./llm-adapter.js";
|
|
4
4
|
import { AntigravitySearchProvider } from "./search.js";
|
|
5
5
|
import { ANTIGRAVITY_IMAGE_MODEL, createAntigravityImageTools } from "./image.js";
|
|
@@ -58,7 +58,8 @@ const PNG_SIGNATURE = Uint8Array.from([
|
|
|
58
58
|
10
|
|
59
59
|
]);
|
|
60
60
|
/** Create a persistent, owner-only PNG store for controlled live image fixtures. */
|
|
61
|
-
function createDurableLiveAttachmentStore(root) {
|
|
61
|
+
function createDurableLiveAttachmentStore(root, options = {}) {
|
|
62
|
+
const platform = options.platform ?? process.platform;
|
|
62
63
|
const imageLimits = Object.freeze({
|
|
63
64
|
maxImageBytes: MAX_LIVE_IMAGE_BYTES,
|
|
64
65
|
maxImagesPerMessage: 2,
|
|
@@ -86,7 +87,7 @@ function createDurableLiveAttachmentStore(root) {
|
|
|
86
87
|
await link(temporary, target);
|
|
87
88
|
} catch (error) {
|
|
88
89
|
if (error.code !== "EEXIST") throw error;
|
|
89
|
-
const existing = await readBounded(target);
|
|
90
|
+
const existing = await readBounded(target, platform);
|
|
90
91
|
if (createHash("sha256").update(existing).digest("hex") !== digest) throw new Error("collision");
|
|
91
92
|
}
|
|
92
93
|
await chmod(target, 384);
|
|
@@ -111,7 +112,7 @@ function createDurableLiveAttachmentStore(root) {
|
|
|
111
112
|
if (!/^[a-f0-9]{64}$/u.test(digest) || ref.mediaType !== "image/png") throw admissionError();
|
|
112
113
|
let data;
|
|
113
114
|
try {
|
|
114
|
-
data = await readBounded(join(root, `${digest}.png`));
|
|
115
|
+
data = await readBounded(join(root, `${digest}.png`), platform);
|
|
115
116
|
} catch {
|
|
116
117
|
throw admissionError();
|
|
117
118
|
}
|
|
@@ -224,9 +225,10 @@ async function ensureRoot(root) {
|
|
|
224
225
|
throw admissionError();
|
|
225
226
|
}
|
|
226
227
|
}
|
|
227
|
-
async function readBounded(path) {
|
|
228
|
+
async function readBounded(path, platform) {
|
|
228
229
|
const info = await lstat(path);
|
|
229
|
-
|
|
230
|
+
const unsafePosixMode = platform !== "win32" && (info.mode & 63) !== 0;
|
|
231
|
+
if (info.isSymbolicLink() || !info.isFile() || info.size < 1 || info.size > MAX_LIVE_IMAGE_BYTES || unsafePosixMode) throw admissionError();
|
|
230
232
|
const data = await readFile(path);
|
|
231
233
|
if (data.byteLength !== info.size) throw admissionError();
|
|
232
234
|
return data;
|
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) {
|
package/lib/search.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createAntigravityAuthService, t as mountCapabilityLifecycle } from "./capability-lifecycle
|
|
1
|
+
import { i as createAntigravityAuthService, t as mountCapabilityLifecycle } from "./capability-lifecycle-BjW2Jho1.js";
|
|
2
2
|
import { d as privateStatusError, l as createPrivateTransport, m as PrivateTransportError, n as DEFAULT_PRIVATE_IDLE_TIMEOUT_MS, o as DEFAULT_PRIVATE_TOTAL_TIMEOUT_MS, t as DEFAULT_PRIVATE_FRAME_BYTES, u as iteratePrivateSse } from "./private-transport-urF138qW.js";
|
|
3
3
|
import { ANTIGRAVITY_WIRE_ORIGIN } from "./wire-identity.js";
|
|
4
4
|
import { t as classifyPrivateFailure } from "./private-failure-B9vzUkQ7.js";
|
|
@@ -19,6 +19,8 @@ export interface AntigravityAuthRecord {
|
|
|
19
19
|
}
|
|
20
20
|
export interface AuthStoreOptions {
|
|
21
21
|
readonly now?: () => number;
|
|
22
|
+
/** Override process.platform only for deterministic cross-platform tests. */
|
|
23
|
+
readonly platform?: NodeJS.Platform;
|
|
22
24
|
}
|
|
23
25
|
export interface AntigravityAuthStore {
|
|
24
26
|
read(): Promise<AntigravityAuthRecord | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../../src/auth-store.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAOvE,eAAO,MAAM,mBAAmB,EAAG,CAAU,CAAA;AAO7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,mBAAmB,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"auth-store.d.ts","sourceRoot":"","sources":["../../src/auth-store.ts"],"names":[],"mappings":"AAAA,uEAAuE;AAOvE,eAAO,MAAM,mBAAmB,EAAG,CAAU,CAAA;AAO7C,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,qFAAqF;IACrF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,OAAO,EAAE,OAAO,mBAAmB,CAAA;IAC5C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,mFAAmF;IACnF,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,IAAI,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAA;IAClD,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAC9D,gBAAgB,CACd,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,eAAe,EACtB,eAAe,CAAC,EAAE,MAAM,GACvB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAA;IAC7C,6EAA6E;IAC7E,cAAc,CAAC,gBAAgB,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACpF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,gCAAgC,GAChC,+BAA+B,GAC/B,qBAAqB,GACrB,eAAe,CAAA;AAEnB,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAA;gBAErB,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM;CAKtD;AAED,gEAAgE;AAChE,wBAAgB,oBAAoB,CAClC,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,IAAI,qBAAW,EACf,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,MAAM,CAaR;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,oBAAoB,CA4ClG;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,qBAAqB,EAAE,OAAO,GAAE,gBAAqB,GAAG,oBAAoB,CAyB3H;AAyED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAE7F;AA+BD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhG;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,SAAa,GAAG,qBAAqB,CAEhH"}
|
|
@@ -10,6 +10,8 @@ export interface CapabilityGateRegistry {
|
|
|
10
10
|
}
|
|
11
11
|
export interface FileCapabilityGateOptions {
|
|
12
12
|
readonly now?: () => number;
|
|
13
|
+
/** Override process.platform only for deterministic cross-platform tests. */
|
|
14
|
+
readonly platform?: NodeJS.Platform;
|
|
13
15
|
}
|
|
14
16
|
/** Resolve a gate record next to the plugin-owned auth record without reading either. */
|
|
15
17
|
export declare function defaultCapabilityGatePath(authStorePath: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capability-gates.d.ts","sourceRoot":"","sources":["../../src/capability-gates.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAIjF,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE1B,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAA;AAMpB,KAAK,qBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;AAEjE,MAAM,WAAW,sBAAsB;IACrC,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACvC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC7F,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACtH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC7H,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"capability-gates.d.ts","sourceRoot":"","sources":["../../src/capability-gates.ts"],"names":[],"mappings":"AAAA,iFAAiF;AAIjF,OAAO,EAIL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE1B,KAAK,eAAe,EACpB,KAAK,WAAW,EACjB,MAAM,aAAa,CAAA;AAMpB,KAAK,qBAAqB,GAAG,OAAO,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;AAEjE,MAAM,WAAW,sBAAsB;IACrC,IAAI,IAAI,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACvC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC7F,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IACtH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC7H,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CACpC;AAED,yFAAyF;AACzF,wBAAgB,yBAAyB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,2BAA2B,CACzC,OAAO,GAAE,sBAA2B,EACpC,GAAG,GAAE,MAAM,MAAyB,GACnC,sBAAsB,CAoBxB;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,yBAA8B,GACtC,sBAAsB,CAiDxB"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/** Durable, content-addressed AttachmentStore seam used only by explicitly run Gate I. */
|
|
2
2
|
import type { AttachmentStore } from '@deepseek-ai/dsh-attachment';
|
|
3
3
|
export type DurableLiveAttachmentStore = Pick<AttachmentStore, 'imageLimits' | 'validateImage' | 'saveImage' | 'saveImages' | 'readImage'>;
|
|
4
|
+
export interface DurableLiveAttachmentStoreOptions {
|
|
5
|
+
/** Override process.platform only for deterministic cross-platform tests. */
|
|
6
|
+
readonly platform?: NodeJS.Platform;
|
|
7
|
+
}
|
|
4
8
|
/** Create a persistent, owner-only PNG store for controlled live image fixtures. */
|
|
5
|
-
export declare function createDurableLiveAttachmentStore(root: string): DurableLiveAttachmentStore;
|
|
9
|
+
export declare function createDurableLiveAttachmentStore(root: string, options?: DurableLiveAttachmentStoreOptions): DurableLiveAttachmentStore;
|
|
6
10
|
//# sourceMappingURL=live-gate-attachments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"live-gate-attachments.d.ts","sourceRoot":"","sources":["../../src/live-gate-attachments.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAO1F,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,6BAA6B,CAAA;AAUpC,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,eAAe,EACf,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAC3E,CAAA;AAED,oFAAoF;AACpF,wBAAgB,gCAAgC,
|
|
1
|
+
{"version":3,"file":"live-gate-attachments.d.ts","sourceRoot":"","sources":["../../src/live-gate-attachments.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAO1F,OAAO,KAAK,EACV,eAAe,EAIhB,MAAM,6BAA6B,CAAA;AAUpC,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,eAAe,EACf,aAAa,GAAG,eAAe,GAAG,WAAW,GAAG,YAAY,GAAG,WAAW,CAC3E,CAAA;AAED,MAAM,WAAW,iCAAiC;IAChD,6EAA6E;IAC7E,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAA;CACpC;AAED,oFAAoF;AACpF,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,iCAAsC,GAC9C,0BAA0B,CAuE5B"}
|
|
@@ -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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"}
|
package/lib/video.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { i as createAntigravityAuthService, t as mountCapabilityLifecycle } from "./capability-lifecycle
|
|
1
|
+
import { i as createAntigravityAuthService, t as mountCapabilityLifecycle } from "./capability-lifecycle-BjW2Jho1.js";
|
|
2
2
|
import { d as privateStatusError, i as DEFAULT_PRIVATE_RESPONSE_BYTES, l as createPrivateTransport, m as PrivateTransportError, p as readPrivateText } from "./private-transport-urF138qW.js";
|
|
3
3
|
import { ANTIGRAVITY_WIRE_ORIGIN } from "./wire-identity.js";
|
|
4
4
|
import { t as classifyPrivateFailure } from "./private-failure-B9vzUkQ7.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-antigravity-auth",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Private, single-account, unofficial Antigravity OAuth capability bundle for DeepSeek Harness",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
@@ -119,46 +119,46 @@
|
|
|
119
119
|
},
|
|
120
120
|
"peerDependencies": {
|
|
121
121
|
"@deepseek-ai/cordis": "^4.0.1",
|
|
122
|
-
"@deepseek-ai/dsh-agent": "^0.1.1-rc.
|
|
123
|
-
"@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.
|
|
124
|
-
"@deepseek-ai/dsh-attachment": "^0.1.1-rc.
|
|
125
|
-
"@deepseek-ai/dsh-client-connection": "^0.1.1-rc.
|
|
126
|
-
"@deepseek-ai/dsh-client-locale": "^0.1.1-rc.
|
|
127
|
-
"@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.
|
|
128
|
-
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.1-rc.
|
|
129
|
-
"@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.
|
|
130
|
-
"@deepseek-ai/dsh-client-ui-slots": "^0.1.1-rc.
|
|
131
|
-
"@deepseek-ai/dsh-fs": "^0.1.1-rc.
|
|
132
|
-
"@deepseek-ai/dsh-host-apiproxy": "^0.1.1-rc.
|
|
133
|
-
"@deepseek-ai/dsh-invariants": "^0.1.1-rc.
|
|
134
|
-
"@deepseek-ai/dsh-llm": "^0.1.1-rc.
|
|
135
|
-
"@deepseek-ai/dsh-session": "^0.1.1-rc.
|
|
136
|
-
"@deepseek-ai/dsh-settings": "^0.1.1-rc.
|
|
137
|
-
"@deepseek-ai/dsh-tools": "^0.1.1-rc.
|
|
138
|
-
"@deepseek-ai/dsh-web": "^0.1.1-rc.
|
|
122
|
+
"@deepseek-ai/dsh-agent": "^0.1.1-rc.2",
|
|
123
|
+
"@deepseek-ai/dsh-api-remotes": "^0.1.1-rc.2",
|
|
124
|
+
"@deepseek-ai/dsh-attachment": "^0.1.1-rc.2",
|
|
125
|
+
"@deepseek-ai/dsh-client-connection": "^0.1.1-rc.2",
|
|
126
|
+
"@deepseek-ai/dsh-client-locale": "^0.1.1-rc.2",
|
|
127
|
+
"@deepseek-ai/dsh-client-runtime": "^0.1.1-rc.2",
|
|
128
|
+
"@deepseek-ai/dsh-client-ui-primitives": "^0.1.1-rc.2",
|
|
129
|
+
"@deepseek-ai/dsh-client-ui-settings": "^0.1.1-rc.2",
|
|
130
|
+
"@deepseek-ai/dsh-client-ui-slots": "^0.1.1-rc.2",
|
|
131
|
+
"@deepseek-ai/dsh-fs": "^0.1.1-rc.2",
|
|
132
|
+
"@deepseek-ai/dsh-host-apiproxy": "^0.1.1-rc.2",
|
|
133
|
+
"@deepseek-ai/dsh-invariants": "^0.1.1-rc.2",
|
|
134
|
+
"@deepseek-ai/dsh-llm": "^0.1.1-rc.2",
|
|
135
|
+
"@deepseek-ai/dsh-session": "^0.1.1-rc.2",
|
|
136
|
+
"@deepseek-ai/dsh-settings": "^0.1.1-rc.2",
|
|
137
|
+
"@deepseek-ai/dsh-tools": "^0.1.1-rc.2",
|
|
138
|
+
"@deepseek-ai/dsh-web": "^0.1.1-rc.2",
|
|
139
139
|
"@deepseek-ai/schemastery": "^3.18.1",
|
|
140
140
|
"react": "^18.2.0"
|
|
141
141
|
},
|
|
142
142
|
"devDependencies": {
|
|
143
143
|
"@cortexkit/antigravity-auth-core": "2.1.0",
|
|
144
144
|
"@deepseek-ai/cordis": "4.0.1",
|
|
145
|
-
"@deepseek-ai/dsh-agent": "0.1.1-rc.
|
|
146
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.1-rc.
|
|
147
|
-
"@deepseek-ai/dsh-attachment": "0.1.1-rc.
|
|
148
|
-
"@deepseek-ai/dsh-client-connection": "0.1.1-rc.
|
|
149
|
-
"@deepseek-ai/dsh-client-locale": "0.1.1-rc.
|
|
150
|
-
"@deepseek-ai/dsh-client-runtime": "0.1.1-rc.
|
|
151
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.1-rc.
|
|
152
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.1-rc.
|
|
153
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.1-rc.
|
|
154
|
-
"@deepseek-ai/dsh-fs": "0.1.1-rc.
|
|
155
|
-
"@deepseek-ai/dsh-host-apiproxy": "0.1.1-rc.
|
|
156
|
-
"@deepseek-ai/dsh-invariants": "0.1.1-rc.
|
|
157
|
-
"@deepseek-ai/dsh-llm": "0.1.1-rc.
|
|
158
|
-
"@deepseek-ai/dsh-session": "0.1.1-rc.
|
|
159
|
-
"@deepseek-ai/dsh-settings": "0.1.1-rc.
|
|
160
|
-
"@deepseek-ai/dsh-tools": "0.1.1-rc.
|
|
161
|
-
"@deepseek-ai/dsh-web": "0.1.1-rc.
|
|
145
|
+
"@deepseek-ai/dsh-agent": "0.1.1-rc.2",
|
|
146
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.1-rc.2",
|
|
147
|
+
"@deepseek-ai/dsh-attachment": "0.1.1-rc.2",
|
|
148
|
+
"@deepseek-ai/dsh-client-connection": "0.1.1-rc.2",
|
|
149
|
+
"@deepseek-ai/dsh-client-locale": "0.1.1-rc.2",
|
|
150
|
+
"@deepseek-ai/dsh-client-runtime": "0.1.1-rc.2",
|
|
151
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.1-rc.2",
|
|
152
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.1-rc.2",
|
|
153
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.1-rc.2",
|
|
154
|
+
"@deepseek-ai/dsh-fs": "0.1.1-rc.2",
|
|
155
|
+
"@deepseek-ai/dsh-host-apiproxy": "0.1.1-rc.2",
|
|
156
|
+
"@deepseek-ai/dsh-invariants": "0.1.1-rc.2",
|
|
157
|
+
"@deepseek-ai/dsh-llm": "0.1.1-rc.2",
|
|
158
|
+
"@deepseek-ai/dsh-session": "0.1.1-rc.2",
|
|
159
|
+
"@deepseek-ai/dsh-settings": "0.1.1-rc.2",
|
|
160
|
+
"@deepseek-ai/dsh-tools": "0.1.1-rc.2",
|
|
161
|
+
"@deepseek-ai/dsh-web": "0.1.1-rc.2",
|
|
162
162
|
"@deepseek-ai/schemastery": "3.18.1",
|
|
163
163
|
"@testing-library/react": "^16.3.2",
|
|
164
164
|
"@types/node": "^22.20.0",
|