@itpay/cli 2.0.25 → 2.0.27

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 (29) hide show
  1. package/dist/src/client/backend.js +17 -0
  2. package/dist/src/commands/checkout_handoff.js +12 -3
  3. package/dist/src/commands/guidance.js +1 -1
  4. package/dist/src/commands/install.js +1 -1
  5. package/dist/src/commands/pay.js +7 -5
  6. package/dist/src/commands/vault.js +95 -0
  7. package/dist/src/main.js +72 -0
  8. package/dist/src/state/config.js +2 -2
  9. package/docs/agent/buyer/payment-flow.json +1 -1
  10. package/docs/agent/buyer/render-hosts.json +4 -3
  11. package/docs/cli-reference/agent-types.md +5 -4
  12. package/docs/cli-reference/commands/buy.md +1 -1
  13. package/docs/cli-reference/commands/checkout.md +1 -1
  14. package/docs/cli-reference/commands/install.md +1 -1
  15. package/docs/cli-reference/commands/pay.md +1 -1
  16. package/docs/cli-reference/commands/services/checkout.md +2 -2
  17. package/docs/cli-reference/commands/vault/access.md +32 -0
  18. package/docs/cli-reference/commands/vault/index.md +11 -0
  19. package/docs/cli-reference/commands/vault/list.md +49 -0
  20. package/docs/cli-reference/commands/vault/read.md +27 -0
  21. package/docs/cli-reference/index.md +7 -0
  22. package/docs/skill-bundle-rollout/01-mcp-authentication.md +95 -217
  23. package/docs/skill-bundle-rollout/02-platform-bundle-repositories.md +140 -209
  24. package/docs/skill-bundle-rollout/03-platform-publishing.md +117 -227
  25. package/docs/skill-bundle-rollout/04-first-wave-platforms.md +58 -21
  26. package/docs/skill-bundle-rollout/05-sync-operations.md +62 -0
  27. package/docs/skill-bundle-rollout/README.md +120 -68
  28. package/package.json +1 -1
  29. package/skills/itpay/SKILL.md +17 -1
@@ -1,147 +1,82 @@
1
- # 核心任务二:多平台 Bundle Skill 仓库与自动同步
1
+ # 多平台仓库与 CLI Bundle 合同
2
2
 
3
- 状态:首批平台已实施
3
+ 状态:current。
4
+ 最后核对:2026-08-10。
4
5
 
5
- ## 1. Current State
6
+ ## 1. 原则
6
7
 
7
- 当前 CLI 主仓库:
8
-
9
- - npm 包名为 `@itpay/cli`,当前版本由 `package.json` 管理。
10
- - `npm run check` 执行类型检查、测试覆盖率和打包 smoke test。
11
- - main 分支 CD 在验证后发布精确 npm 版本。
12
- - npm 包已经包含 `bin/`、`dist/src/`、`docs/`、`skills/`、README 和 LICENSE。
13
- - CLI 运行依赖 Node.js 18+,并依赖 `commander`、`qrcode`。
14
- - `skills/itpay/SKILL.md` 是当前通用 Skill 合同,但没有四个平台各自的 manifest、目录结构和商店发布材料。
15
-
16
- 只复制 npm 包 tarball 并不等于自包含 bundle,因为 npm tarball 不包含生产 `node_modules`。真正的 bundle 必须在发布时装入精确生产依赖,或者未来另行构建单文件/原生可执行文件。
17
-
18
- ## 2. Target Behavior
19
-
20
- 建立四个独立平台仓库。每个仓库只维护:
8
+ 每个真实发布面可以有独立仓库,但所有仓库消费同一 MCP 和同一
9
+ `@itpay/cli`。独立仓库解决 manifest、安装、提示、审核和发布节奏差异,
10
+ 不制造平台业务 fork。
21
11
 
22
12
  ```text
23
- 平台 manifest 和适配说明
24
- 平台专用 SKILL.md
25
- 由自动化生成的 vendor/itpay-cli bundle
26
- bundle.lock.json
27
- 平台测试与发布材料
28
- ```
29
-
30
- CLI 发布后:
31
-
32
- ```text
33
- @itpay/cli@X.Y.Z 发布成功
34
- -> 各平台仓库定时读取 npm dist-tags.latest
35
- -> 下载精确 X.Y.Z 和 npm integrity
36
- -> 安装精确 production dependencies
37
- -> 生成 bundle 和 lock
38
- -> 运行无全局 CLI smoke test
39
- -> 创建同步 PR
40
- -> 人工审查平台差异
41
- -> 合并、打 tag、按平台上传/发布
42
- ```
43
-
44
- ## 3. Scope
45
-
46
- ### In scope
47
-
48
- - 四个独立仓库和平台 manifest。
49
- - 通用 CLI bundle 生成脚本。
50
- - npm 版本、integrity、源 commit 的锁定记录。
51
- - CLI 发布后的跨仓同步 PR。
52
- - 无全局 CLI、无运行时 npm 下载的测试。
53
- - macOS、Linux、Windows 平台适配验证。
54
- - 平台审核包、release notes 和回滚规则。
55
-
56
- ### Out of scope
57
-
58
- - 把 CLI 源码复制到四个仓库继续开发。
59
- - 每个平台 fork 一套业务逻辑。
60
- - 运行时自动执行 `npm install -g @itpay/cli@latest`。
61
- - 在 CLI 发布时绕过平台审核自动公开商店版本。
62
- - 第一阶段引入新的单文件打包器或原生二进制工具链。
63
-
64
- ## 4. 仓库布局
65
-
66
- ### OpenAI
67
-
68
- ```text
69
- itpay-skill-openai/
70
- plugin metadata / submission assets
71
- skills/itpay/SKILL.md
72
- skills/itpay/scripts/itpay
73
- skills/itpay/vendor/itpay-cli/
74
- bundle.lock.json
75
- tests/
76
- submission/
77
- ```
78
-
79
- ChatGPT 云端工作流优先调用远程 MCP;本地 Codex 在平台允许 shell 且 bundle 可执行时才能使用 bundled CLI。Skill 必须明确这个选择,不能在 ChatGPT 沙箱里把 `~/.itpay-v3` 当长期用户认证。
13
+ itpay-ai/compose
14
+ Backend / OAuth / MCP / Web / Buyer / Vault
80
15
 
81
- ### Claude Code
16
+ itpay-ai/cli
17
+ @itpay/cli source / command docs / bundle generator
82
18
 
83
- ```text
84
- itpay-skill-claude-code/
85
- .claude-plugin/marketplace.json
86
- plugins/itpay/
87
- .claude-plugin/plugin.json
88
- skills/itpay/SKILL.md
89
- bin/itpay
90
- vendor/itpay-cli/
91
- .mcp.json # 远程 MCP 上线时加入
92
- bundle.lock.json
93
- README.md
19
+ platform repository
20
+ manifest / platform Skill / exact CLI bundle / tests / submission
94
21
  ```
95
22
 
96
- 一个 Claude 平台仓库同时承载 marketplace catalog 和 ItPay plugin,不另建第五个仓库。Claude Code 会把 plugin root 的 `bin/` 加入 Bash PATH。`bin/itpay` 只负责定位本仓库内 vendor 入口,不搜索或调用全局 `itpay`。
23
+ ## 2. 当前仓库注册表
97
24
 
98
- ### Gemini CLI
25
+ 具体发布状态只在
26
+ [04-first-wave-platforms.md](./04-first-wave-platforms.md) 维护。
99
27
 
100
- ```text
101
- itpay-skill-gemini-cli/
102
- gemini-extension.json
103
- skills/itpay/SKILL.md
104
- bin/itpay
105
- vendor/itpay-cli/
106
- bundle.lock.json
107
- README.md
108
- ```
28
+ | 产品面 | 仓库 | 本地 CLI | 远程 MCP |
29
+ | --- | --- | --- | --- |
30
+ | ChatGPT + Codex | `itpay-plugin-chatgpt` | local Codex | ChatGPT/cloud |
31
+ | WorkBuddy | `itpay-skill-workbuddy` | default when shell is available | explicit connection |
32
+ | OpenClaw | `itpay-skill-openclaw` | supported host-dependent | only after real client acceptance |
33
+ | Kimi Work / Kimi Code | `itpay-plugin-kimi-work` | Kimi Code host-dependent | Kimi Work/remote host-dependent |
34
+ | Hermes Agent | `itpay-skill-hermes` | supported host-dependent | only after real client acceptance |
109
35
 
110
- manifest 位于绝对根目录。Skill 命令使用 `${extensionPath}` 定位 bundle,不依赖安装目录名称。
36
+ Claude Gemini 属于待开始支持目标;没有真实仓库、manifest 和验收前不放入
37
+ 当前注册表。
111
38
 
112
- ### WorkBuddy
39
+ ## 3. 平台仓库最小内容
113
40
 
114
41
  ```text
115
- itpay-skill-workbuddy/
116
- SKILL.md
117
- scripts/itpay
118
- vendor/itpay-cli/
119
- bundle.lock.json
120
- README.md
42
+ platform manifest / connector config
43
+ platform-specific SKILL.md
44
+ bin or scripts launcher # only for local-capable hosts
45
+ vendor/itpay-cli/ # generated, not edited
46
+ bundle.lock.json
47
+ tests/
48
+ README / submission / release notes
121
49
  ```
122
50
 
123
- 最终压缩结构以 WorkBuddy 实际上传校验结果为准。当前官方文档确认可以上传本地技能包,但未公开社区 SkillHub 提交 schema,因此不要预先创造私有 manifest。
51
+ 平台仓库不得包含:
124
52
 
125
- ## 5. Bundle 合同
53
+ - CLI 源码副本或手工 Agent Type patch;
54
+ - Backend/MCP/Vault 状态机;
55
+ - OAuth client secret、Access/Refresh Token;
56
+ - `.env`、用户 HOME、Device 私钥/session;
57
+ - 运行时 `npm install` 或 `latest`;
58
+ - 全局 CLI fallback。
126
59
 
127
- ### 第一阶段产物
60
+ ## 4. Bundle 格式
128
61
 
129
- 平台按审核环境选择现有的两种构建格式:
62
+ 优先复用现有已验证格式:
130
63
 
131
64
  ```text
132
- npm-tree:
133
- vendor/itpay-cli/package/ npm 包内容
134
- vendor/itpay-cli/node_modules/production dependencies
65
+ npm-tree
66
+ vendor/itpay-cli/package/
67
+ vendor/itpay-cli/node_modules/ production only
135
68
 
136
- single-file-esm:
69
+ single-file-esm
137
70
  vendor/itpay-cli/itpay-cli.bundle.mjs
138
- vendor/itpay-cli/docs/agent/buyer/
71
+ vendor/itpay-cli/docs/
139
72
  vendor/itpay-cli/licenses/
140
73
  ```
141
74
 
142
- WorkBuddy OpenClaw 使用 `single-file-esm`,上传包不得包含任何 `node_modules`。npm 依赖只允许出现在 CI 临时构建目录;运行时不得联网安装。宿主必须已有 Node.js 18+。如果某平台审核环境没有 Node,再单独启动“standalone executable”任务;不要在还没有失败证据时提前维护多架构二进制。
75
+ WorkBuddy/OpenClaw/Hermes 等上传型 Skill 优先使用 `single-file-esm`,不包含
76
+ `node_modules`。只有真实平台证明 Node runtime 不可用时,才启动 standalone
77
+ executable 工作;不提前维护多架构二进制。
143
78
 
144
- ### `bundle.lock.json`
79
+ ## 5. `bundle.lock.json`
145
80
 
146
81
  至少包含:
147
82
 
@@ -149,131 +84,127 @@ WorkBuddy 和 OpenClaw 使用 `single-file-esm`,上传包不得包含任何 `n
149
84
  {
150
85
  "schemaVersion": 1,
151
86
  "package": "@itpay/cli",
152
- "version": "2.0.14",
87
+ "version": "X.Y.Z",
88
+ "format": "single-file-esm",
153
89
  "npmIntegrity": "sha512-...",
154
90
  "sourceGitSha": "...",
155
- "generatedAt": "2026-07-21T00:00:00Z",
156
- "node": ">=18"
91
+ "generatedAt": "<RFC3339>",
92
+ "node": ">=18",
93
+ "bundleDirectory": "vendor/itpay-cli",
94
+ "dependencyLockSha256": "<64 lowercase hex characters>"
157
95
  }
158
96
  ```
159
97
 
160
- 不要把 token、registry credential、构建机路径或本地身份写入 lock。
98
+ `format` is `single-file-esm` or `npm-tree`. `bundleDirectory` is the
99
+ repository-relative Skill bundle directory, and `dependencyLockSha256` is the
100
+ raw lowercase SHA-256 hex digest emitted by `build-platform-bundle.mjs` (without
101
+ a `sha256:` prefix). The reusable synchronization workflow consumes these exact
102
+ field names.
161
103
 
162
- ### 启动器规则
104
+ 不得包含 Token、registry credential、本机路径或 Device 状态。
163
105
 
164
- - 只调用 bundle 内的 CLI 入口。
165
- - 正确转发全部参数、stdout、stderr 和 exit code。
166
- - 不修改 `HOME`,使本地平台继续复用真实 `~/.itpay-v3`。
167
- - 不回退到 PATH 中的另一个 `itpay`,避免同机双版本不确定性。
168
- - `itpay --version` 必须等于 `bundle.lock.json.version`。
106
+ ## 6. 启动器规则
169
107
 
170
- 用户全局安装的 CLI 可以同时存在:终端里执行全局 `itpay` 使用全局版本;Skill 内必须调用平台 bundle 的绝对路径或 plugin PATH 中的启动器。两者共享同一 `~/.itpay-v3` Device schema,因此共享本地 Device 身份,但代码版本由调用路径明确决定。
108
+ - 只调用 bundle 内入口;
109
+ - 转发全部参数、stdout、stderr、signal 和 exit code;
110
+ - 不修改 `HOME`;
111
+ - 不搜索 PATH 中其他 `itpay`;
112
+ - `itpay --version` 必须等于 lock version;
113
+ - 临时测试使用临时 HOME,不能触碰开发者真实 Device;
114
+ - 路径含空格和中文用户名仍可运行。
171
115
 
172
- ## 6. Implementation Steps
116
+ ## 7. 平台 Skill 允许差异
173
117
 
174
- ### Step 1:建立 bundle 生成器
118
+ 允许:
175
119
 
176
- 位置:优先放在 CLI 主仓库 `scripts/`,四个仓库调用同一已发布脚本或复制极小且固定的生成逻辑。
120
+ - manifest 和安装路径;
121
+ - MCP 配置语法;
122
+ - Agent Type / host 选择;
123
+ - 平台工具名和浏览器/文件展示方式;
124
+ - 权限说明和审核材料;
125
+ - CLI/MCP 路由提示;
126
+ - 平台特有的安全限制。
177
127
 
178
- - 输入必须是精确 semver,拒绝 `latest`、范围和未发布版本。
179
- - 从 npm registry 读取版本、dist.integrity 和 gitHead。
180
- - 下载 tarball并验证 integrity。
181
- - 安装 `--omit=dev --ignore-scripts` 的精确生产依赖。
182
- - 删除 npm cache、测试临时文件和不需要的元数据。
183
- - 生成 `bundle.lock.json`。
128
+ 不允许:
184
129
 
185
- 依赖:现有 npm 发布成功。
130
+ - 改变 CLI 命令参数和 JSON 合同;
131
+ - 改变 MCP 工具 Schema;
132
+ - 改变 Buyer/Vault/支付/退款规则;
133
+ - 保存 OAuth Token;
134
+ - 自动猜测并切换线路;
135
+ - 修改生成的 CLI bundle 业务代码。
186
136
 
187
- ### Step 2:建立四个平台仓库
137
+ ## 8. Bundle 生成
188
138
 
189
- - 每个仓库只保留一个平台的 manifest、Skill、bundle、测试和发布说明。
190
- - 平台专用 Skill 从当前 `skills/itpay/SKILL.md` 派生,但认证、路径和工具选择规则允许平台差异。
191
- - 通用业务规则不得四处手工修改;同步器每次更新时生成或校验通用段落。
192
- - 支付相关公共 Skill 默认只引导外部 Checkout;operator escape hatch 不作为推荐工作流。
139
+ 生成器只接受精确 semver:
193
140
 
194
- 依赖:Step 1。
141
+ ```text
142
+ resolve exact npm version
143
+ -> fetch tarball metadata
144
+ -> verify npm integrity
145
+ -> install exact production dependencies with scripts disabled
146
+ -> remove cache/test/temp files
147
+ -> create requested bundle format
148
+ -> generate lock
149
+ -> secret/dangerous-file scan
150
+ -> offline smoke
151
+ ```
195
152
 
196
- ### Step 3:加入仓库内验证
153
+ 拒绝 `latest`、范围、未发布版本和 integrity 不匹配。
197
154
 
198
- 每个平台至少验证:
155
+ ## 9. CLI 发布后的同步
199
156
 
200
157
  ```text
201
- 没有全局 itpay 命令
202
- 不允许测试过程访问 npm registry
203
- bundle itpay --version == lock.version
204
- bundle itpay skill show itpay --json 成功
205
- 平台 manifest 可被官方 validator/CLI 读取
206
- 启动器路径含空格时仍可运行
207
- bundle 不包含凭据、.env、~/.itpay-v3 npm token
158
+ @itpay/cli X.Y.Z published
159
+ -> platform repo detects version drift
160
+ -> invoke reusable bundle workflow
161
+ -> rebuild and verify
162
+ -> update lock/manifest/release notes
163
+ -> create or refresh sync PR
164
+ -> platform owner reviews tests and Skill differences
165
+ -> merge/tag/publish separately
208
166
  ```
209
167
 
210
- 本地身份与网络业务测试使用临时 HOME;不得触碰开发者真实 `~/.itpay-v3`。
168
+ CLI 主仓库在 `main` 提供 reusable workflow。各平台仓库每小时错峰运行 caller workflow,并可手动触发;npm `dist-tags.latest` 或请求的 bundle format 与当前 `bundle.lock.json` 不同时更新。同步优先使用只安装到分发仓库、只拥有 Contents/Pull requests 写权限的 `itpay-bundle-sync` GitHub App 短期 token;未配置 App 时回落到平台仓库自己的 `GITHUB_TOKEN`,但该模式创建的 PR checks 需要仓库写权限用户批准。禁止使用个人 PAT。
211
169
 
212
- 依赖:Step 2。
170
+ 同步决策同时读取 main 和当前版本的 open automation PR。目标版本、format 和 bundle directory 已存在于 open PR 时必须返回 `pr-current`,不得每小时重建、提交或 force-push 同一产物。
213
171
 
214
- ### Step 4:CLI 发布后创建同步 PR
215
-
216
- CLI 主仓库在 `main` 提供 reusable workflow。各平台仓库每小时错峰运行 caller workflow,并可手动触发;npm `dist-tags.latest` 或请求的 bundle format 与当前 `bundle.lock.json` 不同时更新。平台仓库自身的 `GITHUB_TOKEN` 写入本仓库,因此不需要跨仓 PAT,也不会在 CLI 发布失败时提前同步未发布版本。
217
-
218
- 检测到新版本后:
172
+ - 优先使用最小权限 GitHub App 短期 token;
173
+ - fallback 只使用平台仓库自己的 `GITHUB_TOKEN`;
174
+ - 禁止个人 PAT
175
+ - 不自动合并;
176
+ - 不自动打 tag;
177
+ - 不自动提交商店;
178
+ - CLI 发布失败时不生成平台发布。
219
179
 
220
180
  - 重新生成 bundle;
221
181
  - 更新 manifest 版本、lock、changelog;
222
182
  - 跑全套测试;
223
183
  - 对启用 Skill 差异跟踪的平台,比较旧、新 `sourceGitSha` 的中心 `skills/itpay/SKILL.md`;有差异时创建 Draft PR、附 diff 和人工合并清单,但不覆盖平台 Skill;
224
- - 创建或刷新 `automation/itpay-cli-X.Y.Z` 分支和同步 PR;
225
- - PR 描述列出 CLI commit、integrity、平台测试和是否需要商店重新审核。
226
-
227
- 同步 workflow 只开 PR,不合并、不打 tag、不发布平台商店版本。
228
-
229
- 依赖:Step 3。
230
-
231
- ### Step 5:平台发布和回滚
232
-
233
- - 合并同步 PR 后为平台仓库打与 manifest 一致的 tag。
234
- - OpenAI、Claude 官方市场和 WorkBuddy 按各自审核流程上传;Gemini GitHub Release 可由 tag 自动生成。
235
- - 保存每个平台已发布 CLI 版本矩阵。
236
- - 回滚通过重新发布上一个已验证 bundle 对应的平台版本,不修改或删除用户 Device 身份。
237
-
238
- 依赖:Step 4。
239
-
240
- ## 7. API / Data / Type Changes
241
-
242
- CLI 业务 API:无。
243
-
244
- 新增发布合同:
245
-
246
- - `bundle.lock.json` schema。
247
- - CLI reusable workflow 与各平台 caller workflow。
248
- - 每个平台 manifest 和平台版本。
249
-
250
- CLI 版本和平台包版本第一阶段保持相同,减少映射成本。若以后平台仅修改说明而 CLI 未变,再引入独立的 `pluginVersion`,同时保留 `cliVersion`;现在不提前增加双版本系统。
251
-
252
- ## 8. Tests / Verification
253
-
254
- ### 自动化
255
-
256
- - bundle integrity、精确版本和依赖完整性。
257
- - 无全局 CLI、离线 smoke、路径含空格、Windows 启动。
258
- - Skill frontmatter/manifest 校验。
259
- - secret scan 和危险文件清单。
260
- - 发布矩阵与 npm 当前版本漂移检测。
184
+ - 创建或刷新 `automation/itpay-cli-X.Y.Z` 分支和同步 PR;同版本的后续计划任务必须为 no-op
185
+ - PR 描述列出 CLI commit、integrity、dependency lock、同步 run、平台测试和是否需要商店重新审核;
186
+ - 新版本 PR 验证成功后,只关闭没有人工提交的旧机器人同步 PR;保留远程分支用于审计和恢复。
261
187
 
262
- ### 手动
188
+ ## 10. Repository tests
263
189
 
264
- - 四个平台全新安装。
265
- - 同机存在全局旧版 CLI 时,Skill 仍调用 bundle 版本。
266
- - Skill 更新后 bundle 版本更新,但 `~/.itpay-v3/device` 未变化。
267
- - 平台卸载 Skill 后不删除用户已有 CLI Device 身份;是否保留平台专用缓存按平台规则处理。
190
+ 每个平台必须证明:
268
191
 
269
- ## 9. Risks / Uncertainties
192
+ - 无全局 CLI;
193
+ - 测试期间禁止 npm 网络下载;
194
+ - bundle version/integrity/source SHA 正确;
195
+ - manifest 能被平台 validator 读取;
196
+ - platform Skill 只选择一个 CLI/MCP lane;
197
+ - MCP Token 不进入配置、prompt、tool 或 bundle;
198
+ - Device 文件不被打包或打印;
199
+ - 同机旧全局 CLI 不影响 bundled CLI;
200
+ - 升级/回滚不删除 `~/.itpay-v3`;
201
+ - 平台声称支持 MCP 时完成真实连接、刷新、重连和撤销测试。
270
202
 
271
- - OpenAI Skill 沙箱是否提供满足要求的 Node 运行时不能作为稳定合同;ChatGPT 路径应以远程 MCP 为主。
272
- - `single-file-esm` 仍依赖宿主 Node.js 18+;未来引入原生 Node addon 时需要重新验证 bundling。
273
- - 四个仓库意味着四套审核节奏,但不意味着四套 CLI 业务实现。
274
- - WorkBuddy 公共 SkillHub 提交通道未公开,自动化只能先生成可上传包。
275
- - 平台安全扫描可能拒绝支付或可执行 bundle;拒绝原因应反馈到相应平台仓库,不改变其他平台已通过版本。
203
+ ## 11. 版本与回滚
276
204
 
277
- ## 10. Checkpoint
205
+ 第一阶段平台包版本跟随 CLI 版本,避免双版本映射。只有平台仅修改 manifest/
206
+ 说明且真实需要独立发布节奏时,才增加 `pluginVersion`,同时保留
207
+ `cliVersion`。
278
208
 
279
- 首批仓库、生成器和无跨仓凭据的同步 workflow 已完成。剩余 checkpoint 是各平台审核与人工发布;这些步骤不由同步 workflow 自动执行。
209
+ 回滚发布上一个通过验证的 bundle/manifest,不修改 Buyer、MCP Connection
210
+ Device 状态。