@zhuoyuezs/ml-platform 0.1.1 → 0.1.3
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/DEVELOPMENT.md +96 -9
- package/README.md +89 -38
- package/checksums.json +12 -12
- package/package.json +5 -1
- package/release-policy.json +10 -0
- package/release.json +13 -9
- package/runtime/business-client/README.md +13 -0
- package/runtime/business-client/package-lock.json +2 -2
- package/runtime/business-client/package.json +1 -1
- package/runtime/business-client/src/catalog.js +37 -16
- package/runtime/business-client/src/cli.js +67 -15
- package/scripts/lib.js +98 -4
- package/scripts/main.js +96 -11
- package/skills/feature-management/SKILL.md +37 -8
- package/skills/feature-management/references/commands.md +37 -4
package/DEVELOPMENT.md
CHANGED
|
@@ -10,10 +10,14 @@
|
|
|
10
10
|
- Skill 直接调用正式命令 `ml-platform`,不嵌入 CLI runtime。
|
|
11
11
|
- 正式 npm 包只有 `@zhuoyuezs/ml-platform`,正式 bin 只有 `ml-platform`。
|
|
12
12
|
- `business-client-js/` 是 CLI 唯一源码,`skills/feature-management/` 是 Skill 唯一源码。
|
|
13
|
-
- `npx
|
|
13
|
+
- `npx @zhuoyuezs/ml-platform@<version> install` 是面向用户的统一安装入口;默认目标是 Codex
|
|
14
|
+
用户级 Skill,不要求额外安装参数。
|
|
15
|
+
- 管理命令默认输出简洁结果;Agent 和 CI 显式使用 `--json` 获取稳定结构化输出。
|
|
14
16
|
- npm `postinstall` 不得修改 Agent Skills 目录。
|
|
15
17
|
- Python business client 只保留为迁移 oracle,不进入 release。
|
|
16
18
|
- Codex CLI 不重新打包;当前只支持唯一自研 Host。
|
|
19
|
+
- builder 使用 Python,因此开发构建命令仍通过 `uv run ...` 启动;最终 npm 包和用户侧
|
|
20
|
+
`ml-platform` 运行时只依赖 Node.js,不依赖 Python 或 `uv`。
|
|
17
21
|
|
|
18
22
|
## 2. 源码与归档
|
|
19
23
|
|
|
@@ -37,6 +41,7 @@ package/
|
|
|
37
41
|
│ └── lib.js
|
|
38
42
|
├── runtime/business-client/
|
|
39
43
|
├── skills/feature-management/
|
|
44
|
+
├── release-policy.json
|
|
40
45
|
├── release.json
|
|
41
46
|
├── checksums.json
|
|
42
47
|
├── README.md
|
|
@@ -46,6 +51,10 @@ package/
|
|
|
46
51
|
严格 `files` allowlist 必须排除 `node_modules`、测试 oracle、旧 wheel、Skill runtime、旧 wrapper、
|
|
47
52
|
Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
48
53
|
|
|
54
|
+
最终发布单元是 builder 生成并通过 smoke test 的 `.tgz`,不是 `dist/package/` 目录。目录只用于
|
|
55
|
+
生成和检查归档;正式发布必须直接上传同一个 `.tgz`,避免 npm 在发布时重新打包出另一份未经
|
|
56
|
+
验收的字节流。
|
|
57
|
+
|
|
49
58
|
## 3. Step-by-step 实施计划
|
|
50
59
|
|
|
51
60
|
每一步单独实现、补测试并验收;上一阶段未通过时不进入下一阶段。
|
|
@@ -55,10 +64,14 @@ Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
|
55
64
|
- 补齐全部 Python CLI 命令和参数契约;
|
|
56
65
|
- 对齐 JSON stdout、stderr 和退出码;
|
|
57
66
|
- 补齐数值参数、子命令 help、路径展开和 HTTP 错误测试;
|
|
67
|
+
- 已注册 Dataset 支持 `get-dataset`、`resolve-dataset` 和
|
|
68
|
+
`build-registered-dataset` API-first 流程,不依赖本地 Manifest;
|
|
69
|
+
- Catalog 规范化保留 `project`,Registry 只读元数据与可发布契约分离,目标 project
|
|
70
|
+
不一致时在访问 Registry 前失败;
|
|
58
71
|
- 扩大 Catalog normalization differential tests;
|
|
59
72
|
- 完成 Job、Artifact、inference 和 Operator upload 负向测试;
|
|
60
73
|
- 删除正式运行路径中的旧产品名兼容;
|
|
61
|
-
- 独立执行 `npm pack --dry-run
|
|
74
|
+
- 独立执行 `npm pack --json --dry-run` 机器可读清单校验、clean install 和 CLI smoke test。
|
|
62
75
|
|
|
63
76
|
完成标准:Python 只剩 oracle 作用,正式 CLI 不需要 Python、`uv` 或第三方 npm runtime 依赖。
|
|
64
77
|
|
|
@@ -103,7 +116,8 @@ Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
|
103
116
|
|
|
104
117
|
- `install/upgrade/status/doctor` 进入 installer;
|
|
105
118
|
- 全部业务命令进入同一 business client;
|
|
106
|
-
-
|
|
119
|
+
- 未知命令和参数返回非零错误;`--json` 模式返回结构化错误;
|
|
120
|
+
- 管理命令默认人类可读,`--json` 保持稳定的 Agent/CI 契约;
|
|
107
121
|
- 安装事务支持 staging、lock、ownership 和 rollback;
|
|
108
122
|
- `status` 报告 CLI release、Skill revision、scope 和路径;
|
|
109
123
|
- `doctor` 校验 package、CLI、Skill、record、PATH 和可选 API health;
|
|
@@ -124,21 +138,23 @@ Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
|
124
138
|
- Skill validator 和 forward tests;
|
|
125
139
|
- npm installer tests;
|
|
126
140
|
- release builder;
|
|
127
|
-
- `npm pack --dry-run
|
|
141
|
+
- `npm pack --json --dry-run` 机器可读文件清单和最终归档校验;
|
|
128
142
|
- `.tgz.sha256`;
|
|
129
143
|
- clean npx install,删除 npx cache 后重测;
|
|
130
144
|
- `status`、`doctor` 和只读业务命令;
|
|
145
|
+
- 零参数用户级安装、当前目录项目级安装和显式 `--json` 输出;
|
|
131
146
|
- Codex project/user scope 和显式 Skills 目录;
|
|
132
147
|
- 最终归档敏感文件和重复 client 检查。
|
|
133
148
|
|
|
134
|
-
完成标准:同一个不可变 `.tgz`
|
|
149
|
+
完成标准:同一个不可变 `.tgz` 通过全部验收,并作为唯一允许发布的输入。没有明确发布授权时,
|
|
150
|
+
仍不执行 npmjs 或其他外部发布。
|
|
135
151
|
|
|
136
152
|
## 4. package.json
|
|
137
153
|
|
|
138
154
|
```json
|
|
139
155
|
{
|
|
140
156
|
"name": "@zhuoyuezs/ml-platform",
|
|
141
|
-
"version": "
|
|
157
|
+
"version": "<release-version>",
|
|
142
158
|
"bin": {
|
|
143
159
|
"ml-platform": "scripts/main.js"
|
|
144
160
|
},
|
|
@@ -146,6 +162,7 @@ Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
|
146
162
|
"scripts",
|
|
147
163
|
"runtime",
|
|
148
164
|
"skills",
|
|
165
|
+
"release-policy.json",
|
|
149
166
|
"release.json",
|
|
150
167
|
"checksums.json",
|
|
151
168
|
"README.md",
|
|
@@ -154,6 +171,10 @@ Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
|
154
171
|
"engines": {
|
|
155
172
|
"node": ">=18"
|
|
156
173
|
},
|
|
174
|
+
"os": [
|
|
175
|
+
"darwin",
|
|
176
|
+
"linux"
|
|
177
|
+
],
|
|
157
178
|
"license": "UNLICENSED",
|
|
158
179
|
"publishConfig": {
|
|
159
180
|
"access": "public",
|
|
@@ -164,6 +185,18 @@ Host 副本、日志、会话数据、attic、凭证和实验文件。
|
|
|
164
185
|
|
|
165
186
|
不得配置用于安装 Skills 的 `postinstall`。
|
|
166
187
|
|
|
188
|
+
发布前还必须检查以下 package metadata:
|
|
189
|
+
|
|
190
|
+
- `package.json.version` 与目标 release version 一致;
|
|
191
|
+
- `repository`、`homepage`、`bugs` 和 license 与真实仓库及授权策略一致;
|
|
192
|
+
- `engines.node` 与实际测试矩阵一致;
|
|
193
|
+
- 支持的 OS 与安装器实现一致。当前持久 shim 是 Unix 可执行脚本;在补充 Windows `.cmd` shim
|
|
194
|
+
和 Windows clean-install 测试前,不得在文档中声称支持 Windows。
|
|
195
|
+
|
|
196
|
+
当前 Git remote 是内部仓库,公共 npm 包不得把内部仓库地址写入 `repository`、`homepage` 或
|
|
197
|
+
`bugs`。在存在可公开访问的代码或支持页面前保持这些字段缺省;`UNLICENSED` 表示公开下载不等于
|
|
198
|
+
授予源码许可证。
|
|
199
|
+
|
|
167
200
|
## 5. Release v2 约束
|
|
168
201
|
|
|
169
202
|
release manifest 必须记录:
|
|
@@ -172,18 +205,72 @@ release manifest 必须记录:
|
|
|
172
205
|
- source commit;
|
|
173
206
|
- CLI name、version、path、entrypoint 和 tree digest;
|
|
174
207
|
- Skill revision、path、CLI compatibility range 和 tree digest;
|
|
175
|
-
- Agent
|
|
208
|
+
- 支持的 Agent 安装适配器 `agent_adapters`;
|
|
176
209
|
- Node.js 要求和 API compatibility contract;
|
|
177
210
|
- 不参与组件 digest 的生成时间。
|
|
178
211
|
|
|
179
212
|
`checksums.json` 覆盖 `runtime/` 和 `skills/` 全部文件,按路径排序并使用 canonical JSON。
|
|
180
213
|
|
|
181
|
-
## 6.
|
|
214
|
+
## 6. 发布前一致性门禁
|
|
215
|
+
|
|
216
|
+
每次发布前必须满足:
|
|
217
|
+
|
|
218
|
+
1. `package.json.version`、builder 参数、`release.json.release_version` 和 Skill revision 一致;
|
|
219
|
+
2. business client version 与 `release.json.cli.version` 一致,且满足 Skill 的 `requires_cli`;
|
|
220
|
+
3. release source 已提交,`source_commit` 能代表实际归档内容;
|
|
221
|
+
4. README 已同步本次真实行为,staged package 和最终归档包含同一份 README;
|
|
222
|
+
5. `npm pack --json --dry-run` 的 `files` 列表通过 allowlist 校验;
|
|
223
|
+
6. release payload 不含内部地址、凭证、过期实施状态或未实现能力描述;
|
|
224
|
+
7. 最终 `.tgz`、`.tgz.sha256`、clean install 和删除 npm cache 后的持久 CLI 测试全部通过;
|
|
225
|
+
8. stable 版本使用 `latest` dist-tag;预发布版本使用独立 tag,不得提前覆盖 `latest`。
|
|
226
|
+
|
|
227
|
+
README 更新是发布门禁,不是发布后的补充工作。面向用户的 README 保持简洁,只描述安装、配置、
|
|
228
|
+
验证、常用命令、scope 选择和故障处理;架构与发布细节留在开发者文档中。
|
|
229
|
+
|
|
230
|
+
## 7. 安装命令接口
|
|
231
|
+
|
|
232
|
+
普通用户只需要:
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
npx @zhuoyuezs/ml-platform@<version> install
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
默认值固定为 `agent=codex`、`scope=user`、简洁输出。项目级安装只增加
|
|
239
|
+
`--scope project`,并默认把当前目录作为项目根目录。只有命令不在项目根目录执行时才提供
|
|
240
|
+
`--project-dir PATH`。
|
|
241
|
+
|
|
242
|
+
保留两种 scope 是因为它们解决不同的隔离需求:`user` 适合一个开发者在多个 Codex 项目共享
|
|
243
|
+
同一 Skill,`project` 适合项目独立安装、校验和升级。它们不是两套发布物,也不会复制 CLI;
|
|
244
|
+
持久 CLI 始终只有一份,scope 只决定 Skill 和安装记录的位置。
|
|
245
|
+
|
|
246
|
+
公开常用选项是 `--scope user|project`、`--project-dir PATH`、`--json` 和迁移旧 Skill 时使用的
|
|
247
|
+
`--backup-unmanaged`。`--agent`、`--skills-dir`、`--state-dir`、`--bin-dir`、
|
|
248
|
+
`--allow-downgrade`、`--no-prewarm` 和兼容形式 `install --upgrade` 是适配、恢复或隔离测试接口,
|
|
249
|
+
不进入快速开始。
|
|
250
|
+
`--summary` 作为旧版兼容别名保留;默认已经是简洁输出,新调用不需要添加它。
|
|
251
|
+
|
|
252
|
+
## 8. 安全与发布限制
|
|
182
253
|
|
|
183
254
|
- 不将凭证写入 npm 包、Skill、安装记录或测试 fixture;
|
|
184
255
|
- 不在安装时访问或修改 ML Platform Registry;
|
|
185
256
|
- 远程验收只执行获批的只读命令;
|
|
186
257
|
- 不发布模型训练、模型服务、Kubernetes 或平台服务端;
|
|
187
|
-
- 正式 npm
|
|
258
|
+
- 正式 npm 发布必须直接上传 builder 生成并验收过的
|
|
259
|
+
`dist/zhuoyuezs-ml-platform-<version>.tgz`,不得从源码或 staged 目录重新打包发布;
|
|
188
260
|
- 不执行 GitHub Release 或其他未授权的外部发布;
|
|
189
261
|
- candidate 验证后不得用相同版本重新构建不同内容。
|
|
262
|
+
|
|
263
|
+
当前允许使用 npm 账号 2FA 完成人工发布。后续迁移到受控 CI 时,优先使用 npm Trusted
|
|
264
|
+
Publishing 和 OIDC,并在受支持的公开 CI 环境执行 `npm publish --provenance`。本地登录不能
|
|
265
|
+
替代 CI provenance,未建立可信发布工作流前不得宣称包具有对应来源证明。
|
|
266
|
+
|
|
267
|
+
## 9. 参考与取舍
|
|
268
|
+
|
|
269
|
+
- [npm package.json](https://docs.npmjs.com/cli/v11/configuring-npm/package-json/):`bin`、`files`、
|
|
270
|
+
`engines`、`publishConfig` 等公开包契约;
|
|
271
|
+
- [npm pack](https://docs.npmjs.com/cli/v11/commands/npm-pack):发布归档和机器可读 dry-run;
|
|
272
|
+
- [npm 生命周期脚本](https://docs.npmjs.com/cli/v11/using-npm/scripts):安装和发布脚本边界;
|
|
273
|
+
- [npm provenance](https://docs.npmjs.com/generating-provenance-statements/) 与
|
|
274
|
+
[Trusted Publishers](https://docs.npmjs.com/trusted-publishers/):后续可信发布路径;
|
|
275
|
+
- [飞书 CLI](https://github.com/larksuite/cli/blob/main/README.zh.md):借鉴单命令安装、持久 CLI、
|
|
276
|
+
人类/Agent 分层说明和人类可读输出,不照搬其 native binary `postinstall` 下载模式。
|
package/README.md
CHANGED
|
@@ -1,76 +1,127 @@
|
|
|
1
1
|
# ML Platform
|
|
2
2
|
|
|
3
|
-
ML Platform 的 JavaScript CLI 和 `feature-management` Agent Skill
|
|
4
|
-
|
|
3
|
+
ML Platform 的 JavaScript CLI 和 `feature-management` Agent Skill。CLI 与 Skill 由同一个 npm
|
|
4
|
+
release 安装和升级,运行时不需要 Python 或 `uv`。
|
|
5
|
+
|
|
6
|
+
## 环境要求
|
|
7
|
+
|
|
8
|
+
- macOS 或 Linux;
|
|
9
|
+
- Node.js 18+ 和 npm/npx;
|
|
10
|
+
- Codex 环境;项目级安装时需要一个真实项目目录。
|
|
5
11
|
|
|
6
12
|
## 安装
|
|
7
13
|
|
|
8
|
-
|
|
14
|
+
直接安装:
|
|
9
15
|
|
|
10
16
|
```bash
|
|
11
|
-
npx
|
|
12
|
-
@zhuoyuezs/ml-platform@latest install \
|
|
13
|
-
--agent codex \
|
|
14
|
-
--scope project \
|
|
15
|
-
--project-dir "$PWD"
|
|
17
|
+
npx @zhuoyuezs/ml-platform@latest install
|
|
16
18
|
```
|
|
17
19
|
|
|
18
|
-
|
|
20
|
+
这条命令不需要额外参数。默认安装持久化的 `ml-platform` 命令,并将 Skill 安装到
|
|
21
|
+
`~/.codex/skills/feature-management/`,供当前用户的 Codex 使用。安装后重启终端和 Agent 会话。
|
|
19
22
|
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
只在当前项目使用 Skill 时,在项目根目录运行:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npx @zhuoyuezs/ml-platform@latest install --scope project
|
|
22
27
|
```
|
|
23
28
|
|
|
24
|
-
|
|
29
|
+
此时 Skill 安装到当前目录的 `.agents/skills/feature-management/`。如果命令不在项目根目录运行,
|
|
30
|
+
再使用 `--project-dir /absolute/path/to/project` 显式指定项目。
|
|
31
|
+
|
|
32
|
+
### 安装参数
|
|
33
|
+
|
|
34
|
+
`install` 是安装子命令,必须提供;其余选项都不是普通安装的必填项。
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
常用选项:
|
|
37
|
+
|
|
38
|
+
| 选项 | 默认值 | 含义 |
|
|
39
|
+
| --- | --- | --- |
|
|
40
|
+
| `--scope user` | `user` | 用户级安装,Skill 写入 `~/.codex/skills/` |
|
|
41
|
+
| `--scope project` | - | 项目级安装,Skill 只对指定项目生效 |
|
|
42
|
+
| `--project-dir PATH` | 当前目录 | 指定项目根目录,仅在项目级安装时需要关注 |
|
|
43
|
+
| `--json` | 关闭 | 输出供 Agent 和 CI 解析的稳定 JSON;省略时输出简洁结果 |
|
|
44
|
+
| `--backup-unmanaged` | 关闭 | 目标位置已有旧版或非本包管理的 Skill 时,先备份再安装 |
|
|
45
|
+
|
|
46
|
+
高级选项:
|
|
47
|
+
|
|
48
|
+
| 选项 | 默认值 | 含义 |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| `--agent codex` | `codex` | 指定 Codex;普通用户无需填写 |
|
|
51
|
+
| `--agent pi\|custom` | - | 指定其他 Agent 目录规则,必须同时提供 `--skills-dir` |
|
|
52
|
+
| `--skills-dir PATH` | 根据 Agent 和 scope 推导 | 直接指定 Agent Skills 根目录 |
|
|
53
|
+
| `--state-dir PATH` | `~/.local/share/ml-platform` | 自定义持久 CLI 和安装状态目录 |
|
|
54
|
+
| `--bin-dir PATH` | `~/.local/bin` | 自定义 `ml-platform` 命令 shim 目录 |
|
|
55
|
+
| `--allow-downgrade` | 关闭 | 明确允许安装低于当前版本的 release |
|
|
56
|
+
| `--no-prewarm` | 关闭 | 跳过安装后的 CLI 启动校验,主要用于测试或受限环境 |
|
|
57
|
+
| `--upgrade` | 关闭 | `install --upgrade` 的兼容形式;新调用优先使用独立的 `upgrade` 子命令 |
|
|
58
|
+
| `--summary` | 开启 | 兼容旧调用的简洁输出别名;新命令直接省略输出选项即可 |
|
|
59
|
+
|
|
60
|
+
`npx --yes` 可以跳过 npm 的下载确认;`--registry` 只在需要覆盖本机 npm registry 配置时使用。
|
|
61
|
+
它们是 npm/npx 的选项,不是 `ml-platform` 的安装参数。
|
|
62
|
+
|
|
63
|
+
## 配置
|
|
64
|
+
|
|
65
|
+
API 地址由用户或部署环境提供,不固化在 npm 包或 Skill 中:
|
|
27
66
|
|
|
28
67
|
```bash
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
--scope user
|
|
68
|
+
ml-platform configure --api-url https://your-ml-platform.example.com
|
|
69
|
+
ml-platform show-config
|
|
70
|
+
ml-platform health
|
|
33
71
|
```
|
|
34
72
|
|
|
35
|
-
|
|
73
|
+
解析顺序是:命令行 `--api-url`、`ML_PLATFORM_API_URL`、`configure` 保存的地址。
|
|
36
74
|
|
|
37
|
-
|
|
75
|
+
## 验证
|
|
38
76
|
|
|
39
77
|
```bash
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
--scope project \
|
|
44
|
-
--project-dir "$PWD" \
|
|
45
|
-
--backup-unmanaged
|
|
78
|
+
ml-platform version
|
|
79
|
+
ml-platform status
|
|
80
|
+
ml-platform doctor
|
|
46
81
|
```
|
|
47
82
|
|
|
48
|
-
|
|
83
|
+
管理命令默认输出简洁结果;Agent 和 CI 使用 `--json` 获取稳定 JSON。`doctor` 会使用当前有效
|
|
84
|
+
API 配置;未配置 API 时只跳过联网检查,其余安装完整性检查仍会执行。
|
|
49
85
|
|
|
50
|
-
|
|
86
|
+
验证项目级安装时,在项目根目录使用 `ml-platform status --scope project` 和
|
|
87
|
+
`ml-platform doctor --scope project`。
|
|
88
|
+
|
|
89
|
+
## 常用命令
|
|
51
90
|
|
|
52
91
|
```bash
|
|
53
|
-
ml-platform configure --api-url http://<host>:<port>
|
|
54
|
-
ml-platform health
|
|
55
92
|
ml-platform list-parameters
|
|
93
|
+
ml-platform list-datasets --project <project>
|
|
94
|
+
ml-platform get-dataset <dataset_id> <dataset_version> --project <project>
|
|
95
|
+
ml-platform resolve-dataset <dataset_id> <dataset_version> --project <project>
|
|
96
|
+
ml-platform build-registered-dataset <dataset_id> <dataset_version> --project <project> --wait
|
|
56
97
|
ml-platform apply /absolute/path/to/catalog --dry-run
|
|
57
|
-
ml-platform
|
|
58
|
-
ml-platform
|
|
98
|
+
ml-platform build-dataset /absolute/path/to/manifest.json --wait
|
|
99
|
+
ml-platform --help
|
|
59
100
|
```
|
|
60
101
|
|
|
61
|
-
|
|
102
|
+
前四个 Dataset 命令直接使用远程 Registry/API,适合 Agent 对已发布版本执行发现、只读诊断和
|
|
103
|
+
受控构建,不要求本地存在 Catalog。`apply`、`resolve-manifest` 和带本地 JSON 路径的
|
|
104
|
+
`build-dataset` 用于新契约的编写和发布流程。
|
|
105
|
+
|
|
106
|
+
## 迁移旧 Skill
|
|
107
|
+
|
|
108
|
+
目标目录存在旧 Python Skill、实验 symlink 或其他未托管 Skill 时,确认后显式备份:
|
|
62
109
|
|
|
63
110
|
```bash
|
|
64
|
-
|
|
111
|
+
npx --yes --registry=https://registry.npmjs.org/ \
|
|
112
|
+
@zhuoyuezs/ml-platform@latest install \
|
|
113
|
+
--scope project \
|
|
114
|
+
--project-dir /absolute/path/to/project \
|
|
115
|
+
--backup-unmanaged
|
|
65
116
|
```
|
|
66
117
|
|
|
118
|
+
安装器保留带时间戳的备份,不会静默覆盖用户文件。
|
|
119
|
+
|
|
67
120
|
## 包内容
|
|
68
121
|
|
|
69
122
|
- 一份 JavaScript business CLI;
|
|
70
123
|
- 一份纯 `feature-management` Skill;
|
|
71
|
-
-
|
|
72
|
-
|
|
73
|
-
本包不包含 Codex CLI、Python business-client wheel、Agent Host、平台服务端、模型训练或
|
|
74
|
-
Kubernetes 部署。
|
|
124
|
+
- 显式安装、升级、状态、校验和回滚逻辑。
|
|
75
125
|
|
|
76
|
-
|
|
126
|
+
不包含 Codex CLI、Python business-client wheel、Agent Host、平台服务端、模型训练或 Kubernetes
|
|
127
|
+
部署。开发和发布约束见 [DEVELOPMENT.md](DEVELOPMENT.md)。
|
package/checksums.json
CHANGED
|
@@ -2,28 +2,28 @@
|
|
|
2
2
|
"files": [
|
|
3
3
|
{
|
|
4
4
|
"path": "runtime/business-client/README.md",
|
|
5
|
-
"sha256": "sha256:
|
|
6
|
-
"size_bytes":
|
|
5
|
+
"sha256": "sha256:4bca6d490a0ac3de54accb8f9f43003cdfb0c187bcf1acefea48728b16001e94",
|
|
6
|
+
"size_bytes": 1233
|
|
7
7
|
},
|
|
8
8
|
{
|
|
9
9
|
"path": "runtime/business-client/package-lock.json",
|
|
10
|
-
"sha256": "sha256:
|
|
10
|
+
"sha256": "sha256:a253eb945f8666779adfbf9e7009c539b450746298f145bbe4d0b2ca5f4cbe35",
|
|
11
11
|
"size_bytes": 381
|
|
12
12
|
},
|
|
13
13
|
{
|
|
14
14
|
"path": "runtime/business-client/package.json",
|
|
15
|
-
"sha256": "sha256:
|
|
15
|
+
"sha256": "sha256:bf29516fcbd162fe051f6ea142bd604dead0be99c461bc184a59e7c526766aa4",
|
|
16
16
|
"size_bytes": 426
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
19
|
"path": "runtime/business-client/src/catalog.js",
|
|
20
|
-
"sha256": "sha256:
|
|
21
|
-
"size_bytes":
|
|
20
|
+
"sha256": "sha256:d37f8069027350a3b698af2e9121067e77feb995980bbb226e45e7cdf9130db1",
|
|
21
|
+
"size_bytes": 53751
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"path": "runtime/business-client/src/cli.js",
|
|
25
|
-
"sha256": "sha256:
|
|
26
|
-
"size_bytes":
|
|
25
|
+
"sha256": "sha256:51d2056d8f1c12c3e669b597415bd2c2b911c9a8d44ce4721ee9ff63c9922679",
|
|
26
|
+
"size_bytes": 19305
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"path": "runtime/business-client/src/config.js",
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
},
|
|
38
38
|
{
|
|
39
39
|
"path": "skills/feature-management/SKILL.md",
|
|
40
|
-
"sha256": "sha256:
|
|
41
|
-
"size_bytes":
|
|
40
|
+
"sha256": "sha256:ffd68632b98f51b15e18f225ee83452d6548969e799af727ea9f9efae7300cfb",
|
|
41
|
+
"size_bytes": 19156
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
"path": "skills/feature-management/agents/openai.yaml",
|
|
@@ -92,8 +92,8 @@
|
|
|
92
92
|
},
|
|
93
93
|
{
|
|
94
94
|
"path": "skills/feature-management/references/commands.md",
|
|
95
|
-
"sha256": "sha256:
|
|
96
|
-
"size_bytes":
|
|
95
|
+
"sha256": "sha256:1c1de0e9c5d40ab57374f59b32a04b92648d1e6abecd4962965ddd887a4e0242",
|
|
96
|
+
"size_bytes": 9999
|
|
97
97
|
},
|
|
98
98
|
{
|
|
99
99
|
"path": "skills/feature-management/references/contracts.md",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhuoyuezs/ml-platform",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "ML 数据平台 business CLI 与 Agent Skills 管理工具",
|
|
5
5
|
"bin": {
|
|
6
6
|
"ml-platform": "scripts/main.js"
|
|
@@ -21,6 +21,10 @@
|
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=18"
|
|
23
23
|
},
|
|
24
|
+
"os": [
|
|
25
|
+
"darwin",
|
|
26
|
+
"linux"
|
|
27
|
+
],
|
|
24
28
|
"license": "UNLICENSED",
|
|
25
29
|
"publishConfig": {
|
|
26
30
|
"access": "public",
|
package/release-policy.json
CHANGED
|
@@ -27,5 +27,15 @@
|
|
|
27
27
|
".sqlite",
|
|
28
28
|
".sqlite3",
|
|
29
29
|
".whl"
|
|
30
|
+
],
|
|
31
|
+
"forbidden_content_patterns": [
|
|
32
|
+
{
|
|
33
|
+
"name": "private_ipv4_url",
|
|
34
|
+
"pattern": "https?://(?:10(?:\\.\\d{1,3}){3}|192\\.168(?:\\.\\d{1,3}){2}|172\\.(?:1[6-9]|2\\d|3[01])(?:\\.\\d{1,3}){2})(?::\\d+)?"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"name": "stale_packaging_status",
|
|
38
|
+
"pattern": "the packaging stage is not implemented\\s+yet"
|
|
39
|
+
}
|
|
30
40
|
]
|
|
31
41
|
}
|
package/release.json
CHANGED
|
@@ -13,10 +13,10 @@
|
|
|
13
13
|
"entrypoint": "src/cli.js",
|
|
14
14
|
"name": "ml-platform",
|
|
15
15
|
"path": "runtime/business-client",
|
|
16
|
-
"sha256": "sha256:
|
|
17
|
-
"version": "0.
|
|
16
|
+
"sha256": "sha256:f782ec0cda02a69cf3fcc9dfccd7f29793bdbd91a8092d56e4073f09547fbf78",
|
|
17
|
+
"version": "0.6.0"
|
|
18
18
|
},
|
|
19
|
-
"policy_sha256": "sha256:
|
|
19
|
+
"policy_sha256": "sha256:02fbde0134696b78c0c365d6e0b76c9814227208da5b2b3d4e5dbd82dc4a3606",
|
|
20
20
|
"public_schema_versions": [
|
|
21
21
|
"ml_data_platform.catalog/v1",
|
|
22
22
|
"ml_data_platform.parameter/v1",
|
|
@@ -25,18 +25,22 @@
|
|
|
25
25
|
"ml_data_platform.feature_set/v1",
|
|
26
26
|
"ml_data_platform.dataset_manifest/v1"
|
|
27
27
|
],
|
|
28
|
-
"release_version": "0.1.
|
|
28
|
+
"release_version": "0.1.3",
|
|
29
29
|
"runtime_requirements": {
|
|
30
|
-
"node": ">=18"
|
|
30
|
+
"node": ">=18",
|
|
31
|
+
"os": [
|
|
32
|
+
"darwin",
|
|
33
|
+
"linux"
|
|
34
|
+
]
|
|
31
35
|
},
|
|
32
36
|
"schema_version": "data_platform.ml_platform_release/v2",
|
|
33
37
|
"skills": {
|
|
34
38
|
"feature-management": {
|
|
35
39
|
"path": "skills/feature-management",
|
|
36
|
-
"requires_cli": ">=0.
|
|
37
|
-
"revision": "0.1.
|
|
38
|
-
"sha256": "sha256:
|
|
40
|
+
"requires_cli": ">=0.6.0 <0.7.0",
|
|
41
|
+
"revision": "0.1.3",
|
|
42
|
+
"sha256": "sha256:e0ec0b304bb9f511eb5a5c53a32b76dcfede8bcdce70e3ff516eb4143a6c04f2"
|
|
39
43
|
}
|
|
40
44
|
},
|
|
41
|
-
"source_commit": "
|
|
45
|
+
"source_commit": "f63960b92fce9eb9360dd6ad64d10f26f5dd72db"
|
|
42
46
|
}
|
|
@@ -12,3 +12,16 @@ node business-client-js/src/cli.js --help
|
|
|
12
12
|
当前包保持 `private: true`,用于独立开发、测试和迁移验证,不作为第二个正式 npm 产品发布。
|
|
13
13
|
正式 npm 封装阶段会把这份源码作为 `@zhuoyuezs/ml-platform` 的唯一 CLI runtime,并继续只暴露
|
|
14
14
|
`ml-platform` 命令。
|
|
15
|
+
|
|
16
|
+
已注册 Dataset 的 API-first 流程不依赖本地 Catalog:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
ml-platform list-datasets --project <project>
|
|
20
|
+
ml-platform get-dataset <dataset_id> <dataset_version> --project <project>
|
|
21
|
+
ml-platform resolve-dataset <dataset_id> <dataset_version> --project <project>
|
|
22
|
+
ml-platform build-registered-dataset <dataset_id> <dataset_version> \
|
|
23
|
+
--project <project> --wait
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
`resolve-manifest` 和 `build-dataset <manifest.json>` 仍用于尚未注册的本地契约。Catalog
|
|
27
|
+
normalizer 保留并校验非默认 `project`;`apply --project` 与 Catalog 内项目不一致时拒绝执行。
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zhuoyuezs/ml-platform-business-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@zhuoyuezs/ml-platform-business-client",
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.6.0",
|
|
10
10
|
"license": "UNLICENSED",
|
|
11
11
|
"bin": {
|
|
12
12
|
"ml-platform": "src/cli.js"
|