dsh-antigravity-auth 0.1.3 → 0.1.4-alpha.6

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.
Files changed (44) hide show
  1. package/CHANGELOG.md +14 -1
  2. package/README.md +45 -27
  3. package/README.zh.md +44 -25
  4. package/docs/dsh-source-verification.md +67 -0
  5. package/lib/client.cjs +6 -2
  6. package/lib/client.cjs.map +1 -1
  7. package/lib/image.js +14 -13
  8. package/lib/index.js +36 -4
  9. package/lib/llm-adapter.js +46 -23
  10. package/lib/media-admission.js +1 -1
  11. package/lib/{private-failure-B9vzUkQ7.js → private-failure-DaQoTCkz.js} +1 -1
  12. package/lib/{private-transport-urF138qW.js → private-transport-BQshWFmk.js} +18 -2
  13. package/lib/private-transport.js +1 -1
  14. package/lib/project-context.js +2 -2
  15. package/lib/quota.js +2 -2
  16. package/lib/{rpc-contract-BFWfdKKs.js → rpc-contract-CKmz9a1z.js} +3 -1
  17. package/lib/rpc-contract.js +1 -1
  18. package/lib/search.js +14 -13
  19. package/lib/types/client/AntigravityAuthSettings.d.ts +1 -1
  20. package/lib/types/client/AntigravityAuthSettings.d.ts.map +1 -1
  21. package/lib/types/client/index.d.ts +1 -1
  22. package/lib/types/client/index.d.ts.map +1 -1
  23. package/lib/types/image.d.ts +1 -1
  24. package/lib/types/image.d.ts.map +1 -1
  25. package/lib/types/index.d.ts +1 -1
  26. package/lib/types/index.d.ts.map +1 -1
  27. package/lib/types/llm-adapter.d.ts.map +1 -1
  28. package/lib/types/loopback-rpc.d.ts +19 -0
  29. package/lib/types/loopback-rpc.d.ts.map +1 -0
  30. package/lib/types/rpc-contract.d.ts +2 -2
  31. package/lib/types/rpc-contract.d.ts.map +1 -1
  32. package/lib/types/rpc-vocabulary.d.ts +1 -1
  33. package/lib/types/rpc-vocabulary.d.ts.map +1 -1
  34. package/lib/types/rpc.d.ts +2 -2
  35. package/lib/types/rpc.d.ts.map +1 -1
  36. package/lib/types/search.d.ts +1 -1
  37. package/lib/types/search.d.ts.map +1 -1
  38. package/lib/types/video.d.ts +1 -1
  39. package/lib/types/video.d.ts.map +1 -1
  40. package/lib/types/wire-identity.d.ts +1 -3
  41. package/lib/types/wire-identity.d.ts.map +1 -1
  42. package/lib/video.js +14 -13
  43. package/lib/wire-identity.js +9 -19
  44. package/package.json +51 -44
package/CHANGELOG.md CHANGED
@@ -1,6 +1,19 @@
1
1
  # Changelog
2
2
 
3
- ## [Unreleased]
3
+ ## [0.1.4-alpha.6] - 2026-09-07
4
+
5
+ - Add explicit DSH `0.1.3-alpha.1` source compatibility alongside the npm alpha.5 baseline; keep dependency graphs separate.
6
+ - Add reproducible isolated source-package checks and coherent lockfile validation.
7
+
8
+ ## [0.1.4-alpha.5] - 2026-09-03
9
+
10
+ - Raised the development and peer baseline to DSH `0.1.2-alpha.5`, Cordis `4.0.2`, and Schemastery `3.18.2`, with one coherent prerelease dependency graph.
11
+ - Migrated tool-call IDs, Settings registration, Session event reads, Connection result types, browser Context owners, and client injection metadata to alpha.5 public APIs; removed the retired client-runtime and Host apiproxy packages.
12
+ - Preserved fail-closed account controls after alpha.5 removed per-method RPC authority: only an explicit `127.0.0.1` Web bind uses the real dispatcher; absent, all-interface, and unknown binds receive an inert value-free denial, while non-loopback clients hide the settings section.
13
+ - Updated the audited community core snapshot to `2.2.0`, normalizing the live `gemini-3.8-flash-tiered` directory alias so Gemini 3.8 Flash survives live intersection with its native Medium default and captured Low/Medium/High wire routes and request metadata.
14
+ - Realigned private requests with the audited AGY 1.1.24 wire identity and envelope: the fixed CLI User-Agent replaces obsolete desktop/X-Goog metadata headers while preserving the mandatory DSH secondary attribution, and Gemini 3.8 sends captured numeric thinking budgets plus the `userAgent` field.
15
+ - Drained successful SSE bodies after provider terminal events and replaced Node's race-prone `Readable.toWeb()` bridge with its async-iterable Web Stream bridge, preventing legitimate response cancellation from crashing the Host with `ERR_INVALID_STATE`.
16
+ - Refreshed the release README with current Gemini 3.8 behavior, exact prerelease/tag/tarball installs, the real Host row ID, and no obsolete rc.2 migration warnings.
4
17
 
5
18
  ## [0.1.3] - 2026-08-31
6
19
 
package/README.md CHANGED
@@ -1,17 +1,19 @@
1
1
  # dsh-antigravity-auth
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/dsh-antigravity-auth.svg)](https://www.npmjs.com/package/dsh-antigravity-auth)
3
+ > **DSH compatibility:** Supports separately verified `0.1.2-alpha.5` and `0.1.3-alpha.1` graphs. The new DSH prerelease is source-only while its npm packages are unavailable; development dependencies retain alpha.5. See [source verification](docs/dsh-source-verification.md).
4
+
5
+ [![npm alpha version](https://img.shields.io/npm/v/dsh-antigravity-auth/alpha.svg?label=npm%20alpha)](https://www.npmjs.com/package/dsh-antigravity-auth)
4
6
  [![awesome · DSH plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
5
7
 
6
8
  English | [中文](README.zh.md)
7
9
 
8
- Current release: **v0.1.2**
10
+ Current alpha release: **v0.1.4-alpha.6**, supporting DSH `0.1.2-alpha.5` and `0.1.3-alpha.1`, with, Cordis `4.0.2`, and Schemastery `3.18.2`.
9
11
 
10
12
  A self-contained [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
11
13
  **Antigravity Capability Bundle**. It integrates Antigravity's private OAuth session
12
14
  and Wire Identity for:
13
15
 
14
- - the `google-antigravity` LLM route (Gemini Flash, Gemini Pro, Claude Opus, Claude Sonnet, GPT-OSS);
16
+ - the `google-antigravity` LLM route (Gemini 3.8/3.7/3.6 Flash, Gemini 3.1 Pro, Claude Opus, Claude Sonnet, GPT-OSS);
15
17
  - a Global Antigravity Search Provider behind DSH's stock `web_search` tool;
16
18
  - durable image generation and editing through `generate_image`, plus the model-facing `list_images` catalog;
17
19
  - multimodal workspace MP4 video understanding through `analyze_video`;
@@ -23,6 +25,14 @@ and Wire Identity for:
23
25
  > may be rate-limited or changed without notice. Do not rely on it for
24
26
  > production workloads.
25
27
 
28
+ ## v0.1.4-alpha.5 highlights
29
+
30
+ - Moves the development graph and peer baseline to DSH `0.1.2-alpha.5`, including current Settings, Session, Connection, client-injection, and `ToolCallId` APIs; this repository's lockfile contains no older DSH family.
31
+ - Adds authenticated Gemini 3.8 Flash discovery with a Medium default and captured Low/Medium/High routes, model enums, and numeric thinking budgets.
32
+ - Realigns every private Cloud Code `v1internal:` operation with the audited AGY CLI 1.1.24 wire identity while retaining mandatory truthful DSH secondary attribution.
33
+ - Drains successful provider terminal SSE framing and bodies, then uses the cancellation-safe async-iterable Web Stream bridge to prevent Node `ERR_INVALID_STATE` crashes.
34
+ - Keeps account RPC fail-closed on alpha.5: only an explicit `127.0.0.1` Web bind reaches authentication services.
35
+
26
36
  ## Features
27
37
 
28
38
  ### Shared Antigravity Login State
@@ -33,14 +43,14 @@ and Wire Identity for:
33
43
  - Resolves credentials through versioned owner-only storage (POSIX `0600`; Windows user-data ACLs), short-lived in-memory cache, and proactive refresh before expiry.
34
44
  - Coalesces concurrent refreshes in-process and enforces account/lineage consistency before persisting refreshed tokens.
35
45
  - Shows connection state plus real-time visual progress bars for 5-hour and weekly quotas across Gemini and Claude/GPT model families.
36
- - Sends no token value over the loopback-only `/antigravity-auth` Connection RPC channel.
46
+ - Sends no token value over `/antigravity-auth`. On DSH alpha.5, the real account dispatcher is mounted only for an explicit `127.0.0.1` Web bind; an absent, all-interface, or unknown bind receives an inert value-free denial handler.
37
47
 
38
48
  ### LLM Routing & Models
39
49
 
40
50
  - Registers the `google-antigravity` provider through DSH's public `LlmAdapter` seam.
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.
43
- - Supports streaming with pre-delta authentication replay and preserve-by-id function call correlation across fragmented provider names.
51
+ - Intersects the audited `@cortexkit/antigravity-auth-core@2.2.0` model snapshot with live account discovery, normalizing the provider's `gemini-3.8-flash-tiered` directory alias. Gemini 3.8 Flash uses the captured AGY 1.1.24 Low/Medium/High wire routes, numeric thinking budgets, model enums, `userAgent` envelope field, and Medium default.
52
+ - 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. This advisory fallback can temporarily retain a legacy route such as Gemini 3.5 Flash, while a successful live intersection filters routes absent for the account. A successful empty intersection stays empty, while missing authentication, authorization denial, cancellation, and explicit attribution rejection remain fail-closed.
53
+ - Supports streaming with pre-delta authentication replay and preserve-by-id function call correlation across fragmented provider names. Successful terminal events drain the remaining SSE framing before DSH completion, while required cancellation paths use Node's async-iterable Web Stream bridge instead of the race-prone `Readable.toWeb()` adapter.
44
54
 
45
55
  ### Web Search
46
56
 
@@ -69,46 +79,55 @@ Multimodal `analyze_video` tool accepts workspace MP4 videos, performing bounded
69
79
 
70
80
  ## Requirements
71
81
 
72
- - DeepSeek Harness `0.1.1-rc.2` or a compatible later `0.1.x` release.
82
+ - DeepSeek Harness `0.1.2-alpha.5` or `0.1.3-alpha.1` (separately verified graphs; direct peers accept both prerelease lines).
73
83
  - Node.js `^22.19.0` or `>=24.0.0`.
84
+ - `pnpm` available on `PATH` (`11.7.0` is the tested project package manager).
74
85
  - A Google account with Antigravity access.
75
86
 
76
- ## Install from npm (recommended)
87
+ ## Install from npm
88
+
89
+ The npm package includes prebuilt Host and browser bundles. Install the release for either verified DSH graph explicitly:
90
+
91
+ ```sh
92
+ dsh plugin --profile web add dsh-antigravity-auth@0.1.4-alpha.6
93
+ ```
94
+
95
+ With the Web Host bound explicitly to `127.0.0.1`, restart `dsh web`, open Settings, and select **Antigravity Auth**.
77
96
 
78
- The npm package includes prebuilt Host and browser bundles:
97
+ ## Install a prebuilt GitHub release
98
+
99
+ These GitHub examples pin the earlier 0.1.4-alpha.5 release; use the npm command above for 0.1.4-alpha.6.
79
100
 
80
101
  ```sh
81
- dsh plugin --profile web add dsh-antigravity-auth
102
+ dsh plugin --profile web add https://github.com/suntianc/dsh-antigravity-auth/releases/download/v0.1.4-alpha.5/dsh-antigravity-auth-0.1.4-alpha.5.tgz
82
103
  ```
83
104
 
84
- Restart `dsh web`, open Settings, and select **Antigravity Auth**.
105
+ ## Install from the tagged GitHub source
85
106
 
86
- ## Install from GitHub source
107
+ These GitHub examples pin the earlier 0.1.4-alpha.5 release; use the npm command above for 0.1.4-alpha.6.
87
108
 
88
109
  ```sh
89
- dsh plugin --profile web add github:suntianc/dsh-antigravity-auth
110
+ dsh plugin --profile web add github:suntianc/dsh-antigravity-auth#v0.1.4-alpha.5
90
111
  ```
91
112
 
92
113
  Git dependencies are built by the package's `prepare` script. If prompted by pnpm,
93
- add the printed `allowBuilds` key to `~/.dsh/profiles/web/pnpm-workspace.yaml`,
94
- then run the command again.
114
+ add the printed `allowBuilds` key to the `pnpm-workspace.yaml` path printed by
115
+ dsh, then run the command again. Only grant this permission after reviewing the source.
95
116
 
96
117
  ## Install a tarball
97
118
 
98
119
  ```sh
99
- git clone https://github.com/suntianc/dsh-antigravity-auth.git
100
- cd dsh-antigravity-auth
101
- pnpm install
102
- pnpm pack
103
- dsh plugin --profile web add ./dsh-antigravity-auth-0.1.2.tgz
120
+ npm pack dsh-antigravity-auth@0.1.4-alpha.6
121
+ dsh plugin --profile web add ./dsh-antigravity-auth-0.1.4-alpha.6.tgz
104
122
  ```
105
123
 
106
124
  ## Upgrade
107
125
 
108
- Stop the running `dsh web` process and update the Web profile:
126
+ Stop the running `dsh web` process and verify that the Host itself is already on DSH `0.1.2-alpha.5` or `0.1.3-alpha.1`; upgrade DSH first if it is not. Then install the matching plugin release and verify the profile entry:
109
127
 
110
128
  ```sh
111
- dsh plugin --profile web add dsh-antigravity-auth@0.1.2
129
+ dsh --version # must report 0.1.2-alpha.5 or 0.1.3-alpha.1
130
+ dsh plugin --profile web add dsh-antigravity-auth@0.1.4-alpha.6
112
131
  dsh plugin --profile web list
113
132
  ```
114
133
 
@@ -120,15 +139,14 @@ The bundle patch activates independent Host rows in dependency order:
120
139
 
121
140
  | Row | Export | Purpose |
122
141
  |---|---|---|
123
- | `llm-antigravity-auth` | `dsh-antigravity-auth` | Shared auth coordinator and LLM route |
142
+ | `antigravity-auth` | `dsh-antigravity-auth` | Shared auth coordinator and LLM route |
124
143
  | `antigravity-search` | `dsh-antigravity-auth/search` | Global Search Provider |
125
144
  | `antigravity-image` | `dsh-antigravity-auth/image` | Image generation & editing tools |
126
145
  | `antigravity-video` | `dsh-antigravity-auth/video` | Video understanding tools |
127
146
 
128
147
  ## Wire Identity
129
148
 
130
- The Wire Identity module keeps the audited Antigravity headers and adds the truthful DSH identity
131
- returned by DSH's public `attributionHeaders()` formatter as the secondary carrier:
149
+ The Wire Identity module keeps the audited AGY CLI 1.1.24 content-request User-Agent and adds the truthful DSH identity returned by DSH's public `attributionHeaders()` formatter as the mandatory secondary carrier:
132
150
 
133
151
  ```text
134
152
  X-DeepSeek-Harness-Attribution: deepseek-harness/<version> (+repository-url)
@@ -142,7 +160,7 @@ Requests are code-owned: only fixed HTTPS Antigravity origins and enumerated `v1
142
160
  - 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.
143
161
  - Single-account only: no account arrays, switching, rotation, quota pools, or identity fallback.
144
162
  - Local logout clears local storage and in-memory caches immediately.
145
- - The status/login RPC channel is restricted to loopback authorities.
163
+ - DSH alpha.5 no longer exposes a per-method or Host-side carrier authority tier. The plugin therefore enables the real account RPC handler only when the public WebServer bind is exactly `127.0.0.1`; absent, all-interface, and unknown binds receive only `loopback-required`. The browser also hides the section when `ConnectionHandle.isLoopback` is false, but that client hint is UX only: an owner-contained custom carrier cannot be authorized until DSH exposes a corresponding Host-side fact.
146
164
  - Raw media base64 never enters session text or browser RPC.
147
165
 
148
166
  ## Development
package/README.zh.md CHANGED
@@ -1,16 +1,18 @@
1
1
  # dsh-antigravity-auth
2
2
 
3
- [![npm version](https://img.shields.io/npm/v/dsh-antigravity-auth.svg)](https://www.npmjs.com/package/dsh-antigravity-auth)
3
+ > **DSH 兼容性:** 已分别验证 `0.1.2-alpha.5` 与 `0.1.3-alpha.1` 两套依赖图。目标 DSH npm 包尚未发布,开发锁文件暂保留 alpha.5;新版本使用固定源码制品验证。见[源码验证说明](docs/dsh-source-verification.md)。
4
+
5
+ [![npm alpha version](https://img.shields.io/npm/v/dsh-antigravity-auth/alpha.svg?label=npm%20alpha)](https://www.npmjs.com/package/dsh-antigravity-auth)
4
6
  [![awesome · DSH plugin](https://awesome-dsh-plugin.com/badge.svg)](https://awesome-dsh-plugin.com)
5
7
 
6
8
  [English](README.md) | 中文
7
9
 
8
- 当前版本:**v0.1.2**
10
+ 当前 alpha 版本:**v0.1.4-alpha.6**,支持 DSH `0.1.2-alpha.5` 与 `0.1.3-alpha.1`,使用 Cordis `4.0.2` 与 Schemastery `3.18.2`。
9
11
 
10
12
  这是一个自包含的 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness)
11
13
  **Antigravity 能力包**。它集成了 Antigravity 的私有 OAuth 登录态与 Wire Identity 线路身份,提供:
12
14
 
13
- - `google-antigravity` LLM 路由(Gemini Flash、Gemini Pro、Claude Opus、Claude Sonnet、GPT-OSS);
15
+ - `google-antigravity` LLM 路由(Gemini 3.8/3.7/3.6 Flash、Gemini 3.1 Pro、Claude Opus、Claude Sonnet、GPT-OSS);
14
16
  - 接入 DSH 内置 `web_search` 工具的全局 Antigravity 搜索提供方;
15
17
  - 通过 `generate_image` 实现持久图片生成与编辑,并提供供模型使用的 `list_images` 目录;
16
18
  - 支持本地工作区 MP4 文件的多模态 `analyze_video` 视频理解;
@@ -20,6 +22,14 @@
20
22
  > **⚠️ 非官方通道——仅限个人开发。** 私有、受账户权限控制的 Antigravity
21
23
  > 后端服务未获官方支持、可随时撤销,也可能在没有通知的情况下被限流或变更。请勿依赖它承载生产任务。
22
24
 
25
+ ## v0.1.4-alpha.5 重点更新
26
+
27
+ - 将开发依赖图与 peer 基线迁移到 DSH `0.1.2-alpha.5`,采用当前 Settings、Session、Connection、client injection 与 `ToolCallId` API;本仓库 lockfile 不含旧 DSH 包族。
28
+ - 新增经过登录态目录确认的 Gemini 3.8 Flash,默认 Medium,并使用抓取的 Low/Medium/High route、model enum 与 numeric thinking budget。
29
+ - 所有私有 Cloud Code `v1internal:` 操作重新对齐已审计的 AGY CLI 1.1.24 wire identity,同时保留强制、真实的 DSH 二级归因。
30
+ - 排空成功的 provider terminal SSE framing 与 body,并改用 cancellation-safe async-iterable Web Stream bridge,避免 Node `ERR_INVALID_STATE` 崩溃。
31
+ - 在 alpha.5 上保持账号 RPC fail-closed:只有明确绑定 `127.0.0.1` 的 Web Host 才能触达认证服务。
32
+
23
33
  ## 功能特性
24
34
 
25
35
  ### 共享 Antigravity 登录态
@@ -30,14 +40,14 @@
30
40
  - 通过属主权限文件存储(POSIX `0600`;Windows 用户数据目录 ACL)、短时内存缓存解析凭证,并在到期前主动刷新。
31
41
  - 进程内合并并发刷新请求;仅在账号与 lineage 未变化时原子提交新 token。
32
42
  - 仪表盘实时显示连接状态以及 Gemini 与 Claude/GPT 模型家族的 5 小时和每周额度进度条。
33
- - 插件自有、仅允许 loopback 的 `/antigravity-auth` Connection RPC 绝不向前端泄露任何 token 敏感值。
43
+ - `/antigravity-auth` 绝不向前端泄露 token。DSH alpha.5 下,真实账号 dispatcher 只在明确的 `127.0.0.1` Web bind 上启用;缺失、all-interface 或未知 bind 只能得到不含状态的安全拒绝。
34
44
 
35
45
  ### LLM 路由与模型发现
36
46
 
37
47
  - 通过 DSH 公开的 `LlmAdapter` 接口注册 `google-antigravity` 提供方。
38
- - 将已审计的固定社区模型快照与真实登录账号的可用模型取交集。
39
- - 当真实模型发现暂时不可用或发生协议漂移时,DSH 内置模型选择器会回退到固定文本模型快照,设置页仍诚实显示 live catalog 状态;成功但零交集的结果仍保持为空,未登录、授权拒绝、取消与明确的 attribution 拒绝仍保持 fail-closed。
40
- - 流式传输支持首个数据块前的一次认证重放,并支持跨分片提供方函数名的 call-id 稳定关联。
48
+ - 将已审计的 `@cortexkit/antigravity-auth-core@2.2.0` 固定社区模型快照与真实登录账号的可用模型取交集,并规范化服务端返回的 `gemini-3.8-flash-tiered` 目录别名;Gemini 3.8 Flash 使用 AGY 1.1.24 抓取的 Low/Medium/High wire route、numeric thinking budget、model enum、`userAgent` envelope 字段与 Medium 默认档位。
49
+ - 当真实模型发现暂时不可用或发生协议漂移时,DSH 内置模型选择器会回退到固定文本模型快照,设置页仍诚实显示 live catalog 状态;该 advisory 降级可能暂时保留 Gemini 3.5 Flash 等旧路由,而成功的 live intersection 会过滤账号目录中不存在的路由。成功但零交集的结果仍保持为空,未登录、授权拒绝、取消与明确的 attribution 拒绝仍保持 fail-closed。
50
+ - 流式传输支持首个数据块前的一次认证重放,并支持跨分片提供方函数名的 call-id 稳定关联;成功的 terminal event 会先排空剩余 SSE framing 再向 DSH 完成流,必要的取消路径则使用 Node 的 async-iterable Web Stream bridge,避开存在竞态的 `Readable.toWeb()` 适配器。
41
51
 
42
52
  ### 网页搜索
43
53
 
@@ -63,44 +73,53 @@
63
73
 
64
74
  ## 环境要求
65
75
 
66
- - DeepSeek Harness `0.1.1-rc.2` 或兼容的后续 `0.1.x` 版本。
76
+ - DeepSeek Harness `0.1.2-alpha.5` 或 `0.1.3-alpha.1`(两套依赖图分别验证;直接 peer 接受这两条 prerelease 版本线)。
67
77
  - Node.js `^22.19.0` 或 `>=24.0.0`。
78
+ - `PATH` 中可用 `pnpm`(本项目测试版本为 `11.7.0`)。
68
79
  - 具有 Antigravity 权限的 Google 账号。
69
80
 
70
- ## 从 npm 安装(推荐)
81
+ ## 从 npm 安装
82
+
83
+ npm 包包含预构建的 Host 与浏览器 bundle。请显式安装支持上述两套 DSH 依赖图的版本:
84
+
85
+ ```sh
86
+ dsh plugin --profile web add dsh-antigravity-auth@0.1.4-alpha.6
87
+ ```
88
+
89
+ 确认 Web Host 明确绑定 `127.0.0.1` 后,重启 `dsh web`,打开设置并选择 **Antigravity Auth**。
71
90
 
72
- npm 包包含预构建的 Host 与浏览器 bundle,无需安装期构建权限:
91
+ ## 安装 GitHub 预构建 Release
92
+
93
+ 以下 GitHub 示例固定到先前的 0.1.4-alpha.5;本次 0.1.4-alpha.6 请使用上面的 npm 安装命令。
73
94
 
74
95
  ```sh
75
- dsh plugin --profile web add dsh-antigravity-auth
96
+ dsh plugin --profile web add https://github.com/suntianc/dsh-antigravity-auth/releases/download/v0.1.4-alpha.5/dsh-antigravity-auth-0.1.4-alpha.5.tgz
76
97
  ```
77
98
 
78
- 重启 `dsh web`,打开设置并选择 **Antigravity Auth**。
99
+ ## 从 GitHub tag 源码安装
79
100
 
80
- ## 从 GitHub 源码安装
101
+ 以下 GitHub 示例固定到先前的 0.1.4-alpha.5;本次 0.1.4-alpha.6 请使用上面的 npm 安装命令。
81
102
 
82
103
  ```sh
83
- dsh plugin --profile web add github:suntianc/dsh-antigravity-auth
104
+ dsh plugin --profile web add github:suntianc/dsh-antigravity-auth#v0.1.4-alpha.5
84
105
  ```
85
106
 
86
- Git 依赖会通过包内 `prepare` 脚本从源码构建。如遇 pnpm 提示,将输出的 `allowBuilds` 键添加到 `~/.dsh/profiles/web/pnpm-workspace.yaml`,再重新执行安装。
107
+ Git 依赖会通过包内 `prepare` 脚本从源码构建。如遇 pnpm 提示,将输出的 `allowBuilds` 键添加到 dsh 输出的 `pnpm-workspace.yaml` 路径,再重新执行安装。只应在审查并信任源码后授权。
87
108
 
88
109
  ## 从 tarball 安装
89
110
 
90
111
  ```sh
91
- git clone https://github.com/suntianc/dsh-antigravity-auth.git
92
- cd dsh-antigravity-auth
93
- pnpm install
94
- pnpm pack
95
- dsh plugin --profile web add ./dsh-antigravity-auth-0.1.2.tgz
112
+ npm pack dsh-antigravity-auth@0.1.4-alpha.6
113
+ dsh plugin --profile web add ./dsh-antigravity-auth-0.1.4-alpha.6.tgz
96
114
  ```
97
115
 
98
116
  ## 升级
99
117
 
100
- 先停止正在运行的 `dsh web`,再将 Web Profile 更新到当前版本:
118
+ 先停止正在运行的 `dsh web`,确认 Host 本身已经是 DSH `0.1.2-alpha.5` 或 `0.1.3-alpha.1`;若不是,必须先升级 DSH。随后安装匹配的插件版本并核对 profile 条目:
101
119
 
102
120
  ```sh
103
- dsh plugin --profile web add dsh-antigravity-auth@0.1.2
121
+ dsh --version # 必须显示 0.1.2-alpha.5 或 0.1.3-alpha.1
122
+ dsh plugin --profile web add dsh-antigravity-auth@0.1.4-alpha.6
104
123
  dsh plugin --profile web list
105
124
  ```
106
125
 
@@ -112,14 +131,14 @@ dsh plugin --profile web list
112
131
 
113
132
  | 行 | Export | 作用 |
114
133
  |---|---|---|
115
- | `llm-antigravity-auth` | `dsh-antigravity-auth` | 共享认证协调器与 LLM 路由 |
134
+ | `antigravity-auth` | `dsh-antigravity-auth` | 共享认证协调器与 LLM 路由 |
116
135
  | `antigravity-search` | `dsh-antigravity-auth/search` | 全局搜索提供方 |
117
136
  | `antigravity-image` | `dsh-antigravity-auth/image` | 图片生成与编辑工具 |
118
137
  | `antigravity-video` | `dsh-antigravity-auth/video` | 视频理解工具 |
119
138
 
120
139
  ## Wire Identity(线路身份)
121
140
 
122
- Wire Identity 模块保留 Antigravity 专有 header,并调用 DSH 公开的 `attributionHeaders()` formatter,把真实 DSH 身份放入二级 carrier:
141
+ Wire Identity 模块保留已审计的 AGY CLI 1.1.24 content-request User-Agent,并调用 DSH 公开的 `attributionHeaders()` formatter,把真实 DSH 身份放入强制二级 carrier:
123
142
 
124
143
  ```text
125
144
  X-DeepSeek-Harness-Attribution: deepseek-harness/<version> (+repository-url)
@@ -133,7 +152,7 @@ X-DeepSeek-Harness-Attribution: deepseek-harness/<version> (+repository-url)
133
152
  - auth、gate evidence 与受控 live image 文件在 POSIX 上严格校验属主 mode;Windows 由 ACL 管理访问权限,因此不把合成的 POSIX group/other bits 作为访问判据,但仍执行 symlink、文件类型、大小、schema 与内容校验。
134
153
  - 严格单账号模式:不提供账号池、轮换、身份回退或账号切换。
135
154
  - 本地登出立即清除 Host 内存与本地存储。
136
- - RPC 状态与登录通道仅限本机 loopback 访问。
155
+ - DSH alpha.5 不再提供逐 method 或 Host 侧 carrier authority。插件只在公开 WebServer bind 恰为 `127.0.0.1` 时启用真实 account RPC;缺失、all-interface 与未知 bind 只返回 `loopback-required`。浏览器在 `ConnectionHandle.isLoopback` 为 false 时也不会注册该设置分区,但该客户端提示仅用于 UX:在 DSH 提供对应 Host 侧事实前,owner-contained 自定义 carrier 仍不能获得授权。
137
156
  - 原始多媒体 base64 绝不注入会话正文或前端 RPC。
138
157
 
139
158
  ## 本地开发
@@ -0,0 +1,67 @@
1
+ # DSH source compatibility verification
2
+
3
+ This plugin supports two separately checked DSH graphs: npm `0.1.2-alpha.5` and
4
+ the official `0.1.3-alpha.1` source tag at
5
+ `d347e703908d0406b7a7ef80e3a0e594d86b2215`.
6
+ The latter was not available on npm when this upgrade was verified. Therefore the
7
+ ordinary development dependencies and lockfile retain the installable alpha.5
8
+ baseline. Peer ranges explicitly include the new prerelease; they do not imply
9
+ support for arbitrary prereleases. Do not mix the two graphs.
10
+
11
+ ## Build the official artifacts once
12
+
13
+ Use a separate scratch directory, outside any plugin or live DSH installation:
14
+
15
+ ```sh
16
+ git clone --depth 1 --branch dsh-v0.1.3-alpha.1 https://github.com/deepseek-ai/deepseek-harness.git harness
17
+ cd harness
18
+ git rev-parse HEAD
19
+ # Must be d347e703908d0406b7a7ef80e3a0e594d86b2215.
20
+ pnpm install --frozen-lockfile --ignore-scripts
21
+ pnpm run build:lib
22
+ pnpm --filter './packages/**' --filter './vendor/*' -r pack --pack-destination ../dsh-packages
23
+ ```
24
+
25
+ The Host and Client library build is required. Packing does not publish anything.
26
+ The resulting directory can be reused to check each of the four plugins.
27
+
28
+ ## Check this plugin
29
+
30
+ From this plugin's own repository:
31
+
32
+ ```sh
33
+ pnpm install --frozen-lockfile
34
+ pnpm run check
35
+ pnpm run check:dsh-source -- /absolute/path/to/dsh-packages
36
+ ```
37
+
38
+ The source check copies the current plugin into a new temporary directory,
39
+ reads the supplied tarball manifests, rejects mixed DSH versions, explicitly
40
+ supplies the complete DSH dependency/peer closure, and pins pi-ai to the plugin's
41
+ development version when present. It installs that isolated graph and runs
42
+ `pnpm peers check` followed by the unmodified `pnpm run check` command.
43
+
44
+ The runner leaves the verification directory and `artifacts.json` with SHA-512
45
+ checksums for review. The fixed-tag build recipe establishes provenance; the
46
+ runner identifies the supplied bytes and checks their versions, and does not
47
+ claim to authenticate arbitrary user-supplied tarballs. Its local file overrides
48
+ and generated lockfile stay in the temporary directory. They never enter this
49
+ repository, an installed package, or a user profile.
50
+
51
+ Package smoke checks accept both registry and source-artifact lock identities
52
+ while continuing to verify the selected version. The default check remains on
53
+ alpha.5; the source runner selects alpha.1 using `DSH_VERIFY_VERSION`.
54
+
55
+ ## 中文说明
56
+
57
+ 本次增加对 DSH `0.1.3-alpha.1` 固定源码版本的支持,同时保留
58
+ `0.1.2-alpha.5` 的可安装开发依赖与锁文件。原因是目标 DSH npm 包尚未发布。
59
+ 两套图分别完成验证,不能混用;这不是跳过 peer 检查。
60
+
61
+ 按上面的固定 tag 构建、打包一次,然后在本插件目录运行
62
+ `pnpm run check:dsh-source -- /绝对路径/dsh-packages`。脚本在临时目录内安装
63
+ 完整源码包图并运行全部检查,输出位置和制品哈希供复核。正式 package.json
64
+ 和锁文件不会写入本机临时路径,也不会安装到现用 profile。
65
+
66
+ 升级验证覆盖离线类型检查、测试、构建、打包 smoke 和 publint;
67
+ 真实 OAuth、私有服务请求和用户现用 profile 不属于这些离线检查的证明范围。
package/lib/client.cjs CHANGED
@@ -78,6 +78,7 @@ window.__ModuleLoader__.load({
78
78
  //#region src/rpc-vocabulary.ts
79
79
  /** Closed, browser-safe RPC error vocabulary shared by Host and client. */
80
80
  const OPERATION_ERROR_CODES = [
81
+ "loopback-required",
81
82
  "invalid-grant",
82
83
  "network",
83
84
  "timeout",
@@ -95,6 +96,7 @@ window.__ModuleLoader__.load({
95
96
  ];
96
97
  const SAFE_RPC_ERROR_MESSAGES = Object.freeze({
97
98
  "bad-request": "antigravity-auth: invalid request",
99
+ "loopback-required": "Antigravity account controls require a loopback-bound DSH Host",
98
100
  cancelled: "The operation was cancelled",
99
101
  "risk-acknowledgement-required": "Risk acknowledgement is required before login",
100
102
  "port-conflict": "The fixed OAuth callback port is already in use",
@@ -151,7 +153,7 @@ window.__ModuleLoader__.load({
151
153
  //#endregion
152
154
  //#region src/rpc-contract.ts
153
155
  const ANTIGRAVITY_AUTH_RPC_CHANNEL = "/antigravity-auth";
154
- /** Build the browser face over the plugin-owned loopback channel. */
156
+ /** Build the browser face over the plugin-owned guarded account channel. */
155
157
  function createAntigravityAuthRpcClient(rpc) {
156
158
  return {
157
159
  status: (signal) => callValidated(rpc, "status", {}, signal, (value) => {
@@ -2038,7 +2040,9 @@ window.__ModuleLoader__.load({
2038
2040
  zh,
2039
2041
  en
2040
2042
  }), "antigravity-auth: copy dictionaries");
2041
- const rpc = createAntigravityAuthRpcClient(ctx.get("connection").rpc);
2043
+ const connection = ctx.get("connection");
2044
+ if (!connection.isLoopback) return;
2045
+ const rpc = createAntigravityAuthRpcClient(connection.rpc);
2042
2046
  const t = ctx.locale.bind(NS);
2043
2047
  const settingsScope = ctx.settingsScope;
2044
2048
  const searchScope = settingsScope?.bind({