@zhuoyuezs/ml-platform 0.1.10 → 0.1.12

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 (34) hide show
  1. package/checksums.json +155 -0
  2. package/package.json +3 -2
  3. package/release.json +52 -0
  4. package/runtime/business-client/README.md +110 -0
  5. package/runtime/business-client/package-lock.json +19 -0
  6. package/runtime/business-client/package.json +23 -0
  7. package/runtime/business-client/src/catalog.js +214 -0
  8. package/runtime/business-client/src/cli.js +538 -0
  9. package/runtime/business-client/src/config.js +56 -0
  10. package/runtime/business-client/src/http.js +254 -0
  11. package/scripts/verify-release-package.js +28 -0
  12. package/skills/feature-management/SKILL.md +491 -0
  13. package/skills/feature-management/agents/openai.yaml +4 -0
  14. package/skills/feature-management/assets/catalog-template/catalog.json +23 -0
  15. package/skills/feature-management/assets/catalog-template/datasets/example_temperature_training.v1.json +40 -0
  16. package/skills/feature-management/assets/catalog-template/feature_sets/example_temperature_core.v1.json +14 -0
  17. package/skills/feature-management/assets/catalog-template/features/example_temperature_mean_5m.v1.json +28 -0
  18. package/skills/feature-management/assets/catalog-template/operator_package/pyproject.toml +12 -0
  19. package/skills/feature-management/assets/catalog-template/operator_package/src/business_feature_operator_template/__init__.py +39 -0
  20. package/skills/feature-management/assets/catalog-template/operator_package/tests/test_operator.py +83 -0
  21. package/skills/feature-management/assets/catalog-template/operators/example_temperature_features.v1.json +58 -0
  22. package/skills/feature-management/assets/catalog-template/parameters/example_temperature.v1.json +58 -0
  23. package/skills/feature-management/references/commands.md +358 -0
  24. package/skills/feature-management/references/contracts.md +766 -0
  25. package/skills/feature-management/references/operator-authoring.md +175 -0
  26. package/skills/feature-management/references/platform-capability-guide.md +75 -0
  27. package/skills/feature-management/references/supervised-datasets.md +101 -0
  28. package/skills/model-lifecycle-management/SKILL.md +38 -0
  29. package/skills/model-lifecycle-management/agents/openai.yaml +4 -0
  30. package/skills/model-lifecycle-management/references/discovery.md +89 -0
  31. package/skills/model-lifecycle-management/references/evaluation.md +172 -0
  32. package/skills/model-lifecycle-management/references/packaging.md +58 -0
  33. package/skills/model-lifecycle-management/references/training-contracts.md +259 -0
  34. package/skills/model-lifecycle-management/references/training.md +107 -0
package/checksums.json ADDED
@@ -0,0 +1,155 @@
1
+ {
2
+ "files": [
3
+ {
4
+ "path": "runtime/business-client/README.md",
5
+ "sha256": "sha256:b823c0cafc47478fa1297c7c2e61e15b537db155586dd012b40d678d788c3ce3",
6
+ "size_bytes": 5158
7
+ },
8
+ {
9
+ "path": "runtime/business-client/package-lock.json",
10
+ "sha256": "sha256:cfd3633238713a21444bd4d1810e7ee2c48557157f9817be9b0e7c59a4dc46b3",
11
+ "size_bytes": 381
12
+ },
13
+ {
14
+ "path": "runtime/business-client/package.json",
15
+ "sha256": "sha256:e6bd1fd8a9cf49366a97f10e03b368c448d33f48df38f036a96c2979f1a2ec1b",
16
+ "size_bytes": 501
17
+ },
18
+ {
19
+ "path": "runtime/business-client/src/catalog.js",
20
+ "sha256": "sha256:5625abc155779d827850de475db104995feadea6b64d56419e3665005669225f",
21
+ "size_bytes": 54291
22
+ },
23
+ {
24
+ "path": "runtime/business-client/src/cli.js",
25
+ "sha256": "sha256:5a31e407dba79205e56d2ed1e74260213d0b89c6bb5a665ec0f52e92927ebcaf",
26
+ "size_bytes": 44897
27
+ },
28
+ {
29
+ "path": "runtime/business-client/src/config.js",
30
+ "sha256": "sha256:4190e09c339a3f0b2861ca7dbc96fe2aa3bdd7927a5e1c4a4c00103a53236bd8",
31
+ "size_bytes": 2186
32
+ },
33
+ {
34
+ "path": "runtime/business-client/src/http.js",
35
+ "sha256": "sha256:e515b39f19e7b5e7d6c2388e9cf2d8e2c9fd18b585bb53bd4f8eeeb7412af81c",
36
+ "size_bytes": 15192
37
+ },
38
+ {
39
+ "path": "skills/feature-management/SKILL.md",
40
+ "sha256": "sha256:e5b927611cd401bc5e6160a2d358369efd0c4f65d3fe5cbf21bbab9adb6bd978",
41
+ "size_bytes": 31991
42
+ },
43
+ {
44
+ "path": "skills/feature-management/agents/openai.yaml",
45
+ "sha256": "sha256:a4c69cb062dc52749f0c0c96ad2d16f91f83ecedb44f78dcf662ef220273f24d",
46
+ "size_bytes": 325
47
+ },
48
+ {
49
+ "path": "skills/feature-management/assets/catalog-template/catalog.json",
50
+ "sha256": "sha256:b2bf887040479082d8f09e5d1027b5a98c7a02b14a784dbb170c29568f14304d",
51
+ "size_bytes": 606
52
+ },
53
+ {
54
+ "path": "skills/feature-management/assets/catalog-template/datasets/example_temperature_training.v1.json",
55
+ "sha256": "sha256:4dbe304631d6ecbf60b19d7c5a377178e0593525362f5fe509c60622b99e8a46",
56
+ "size_bytes": 900
57
+ },
58
+ {
59
+ "path": "skills/feature-management/assets/catalog-template/feature_sets/example_temperature_core.v1.json",
60
+ "sha256": "sha256:22f37b954200864c19ed5593ab8455f562cc3dee7e05a0b01d5856a163dc0660",
61
+ "size_bytes": 352
62
+ },
63
+ {
64
+ "path": "skills/feature-management/assets/catalog-template/features/example_temperature_mean_5m.v1.json",
65
+ "sha256": "sha256:7e58fa9c6a5ef581866d5cae598682de73e5ef3ce49fdd630432bada3a8a41a1",
66
+ "size_bytes": 807
67
+ },
68
+ {
69
+ "path": "skills/feature-management/assets/catalog-template/operator_package/pyproject.toml",
70
+ "sha256": "sha256:df8b4087cb20ecd86736fc69d013a665e7c3dfa7dab80ffbc23279158dae5451",
71
+ "size_bytes": 295
72
+ },
73
+ {
74
+ "path": "skills/feature-management/assets/catalog-template/operator_package/src/business_feature_operator_template/__init__.py",
75
+ "sha256": "sha256:46a572cbd603299cb18692548480462208ec7b2696ba4f2fd90e1b15697e1a4b",
76
+ "size_bytes": 1366
77
+ },
78
+ {
79
+ "path": "skills/feature-management/assets/catalog-template/operator_package/tests/test_operator.py",
80
+ "sha256": "sha256:6fe073e07ed57d0fb4e782150153556b97c5b873b9eb2dad45df0d7f522d8650",
81
+ "size_bytes": 3678
82
+ },
83
+ {
84
+ "path": "skills/feature-management/assets/catalog-template/operators/example_temperature_features.v1.json",
85
+ "sha256": "sha256:646965a05b982ae291960b23f359403c69bf8a173d6cc65d706fb2dc53ab030b",
86
+ "size_bytes": 1277
87
+ },
88
+ {
89
+ "path": "skills/feature-management/assets/catalog-template/parameters/example_temperature.v1.json",
90
+ "sha256": "sha256:28c7d3576c4b7e94c1e9db7f95f26d83ee2e10dc9f81ec6223f4fbd9b2f5eeda",
91
+ "size_bytes": 1488
92
+ },
93
+ {
94
+ "path": "skills/feature-management/references/commands.md",
95
+ "sha256": "sha256:c748f1877f6d2ac1f6ecc29e45cd270997cbd35b498a190decddb66c74b840ab",
96
+ "size_bytes": 13751
97
+ },
98
+ {
99
+ "path": "skills/feature-management/references/contracts.md",
100
+ "sha256": "sha256:4e10ba13399de17561a10b1dead4e2fcc57e0962cf81eba5131d12d66c4ce013",
101
+ "size_bytes": 29965
102
+ },
103
+ {
104
+ "path": "skills/feature-management/references/operator-authoring.md",
105
+ "sha256": "sha256:2ecfccbc9fe771bc1103db679d67af78847307eeb440f680f4055c35405ac923",
106
+ "size_bytes": 6089
107
+ },
108
+ {
109
+ "path": "skills/feature-management/references/platform-capability-guide.md",
110
+ "sha256": "sha256:6acb35f57e1bd6385702b6114e96c0ed1db34c9650d18658f74f212af9f91d14",
111
+ "size_bytes": 4423
112
+ },
113
+ {
114
+ "path": "skills/feature-management/references/supervised-datasets.md",
115
+ "sha256": "sha256:2c7a894330a649248e7f52c944422bcd7a3aba4558f7984d129dfd21c8736cf3",
116
+ "size_bytes": 4540
117
+ },
118
+ {
119
+ "path": "skills/model-lifecycle-management/SKILL.md",
120
+ "sha256": "sha256:faa4f8c0dbae7d1c1e2ca94499ce9b13cc8b52e8229154c05ac6282ea5e47788",
121
+ "size_bytes": 3610
122
+ },
123
+ {
124
+ "path": "skills/model-lifecycle-management/agents/openai.yaml",
125
+ "sha256": "sha256:37857849a8baa6b06b6d5d07ae6036080239356fcccd36f77bbdc52c1dfa283f",
126
+ "size_bytes": 249
127
+ },
128
+ {
129
+ "path": "skills/model-lifecycle-management/references/discovery.md",
130
+ "sha256": "sha256:c87a9efacb1a18125bc1ee1b3061c5a9b876355e238aa5f7f17a985014413281",
131
+ "size_bytes": 4899
132
+ },
133
+ {
134
+ "path": "skills/model-lifecycle-management/references/evaluation.md",
135
+ "sha256": "sha256:099fc54af2a1d8bed287f9e557cee8583558e594880235c32b89276b385cce90",
136
+ "size_bytes": 8858
137
+ },
138
+ {
139
+ "path": "skills/model-lifecycle-management/references/packaging.md",
140
+ "sha256": "sha256:0992f2f9104cb0d65a6325756108211d3f94856e05eca12640e9792c07e1108f",
141
+ "size_bytes": 3250
142
+ },
143
+ {
144
+ "path": "skills/model-lifecycle-management/references/training-contracts.md",
145
+ "sha256": "sha256:b6d72f37adf40c7d3832dbe46645cd416485411dcd48ea7b93f6072d458922c9",
146
+ "size_bytes": 11825
147
+ },
148
+ {
149
+ "path": "skills/model-lifecycle-management/references/training.md",
150
+ "sha256": "sha256:f7bb40919da78b99cad13d4f1f05fef136552409df5ba6e2838e1e6b4a2435a5",
151
+ "size_bytes": 5508
152
+ }
153
+ ],
154
+ "schema_version": "data_platform.ml_platform_checksums/v1"
155
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhuoyuezs/ml-platform",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
4
  "description": "ML 数据平台 business CLI 与 Agent Skills 管理工具",
5
5
  "bin": {
6
6
  "ml-platform": "scripts/main.js"
@@ -19,7 +19,8 @@
19
19
  "scripts": {
20
20
  "test": "node --test test/*.test.js",
21
21
  "api:check": "node ../../scripts/check_api_contract.js",
22
- "pack": "npm pack"
22
+ "pack": "npm pack",
23
+ "prepublishOnly": "node scripts/verify-release-package.js"
23
24
  },
24
25
  "engines": {
25
26
  "node": ">=18"
package/release.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "agent_adapters": [
3
+ "codex-user",
4
+ "codex-project",
5
+ "explicit-skills-dir"
6
+ ],
7
+ "api_compatibility": {
8
+ "contract": "current-unversioned",
9
+ "health_check_required": true,
10
+ "note": "The deployed API does not yet expose a machine-readable API version."
11
+ },
12
+ "cli": {
13
+ "entrypoint": "src/cli.js",
14
+ "name": "ml-platform",
15
+ "path": "runtime/business-client",
16
+ "sha256": "sha256:0c928cad92c70c10b00d58a8bd9bd95f0bf88ac2f876c7967c67c5b17bfbfa2c",
17
+ "version": "0.7.2"
18
+ },
19
+ "policy_sha256": "sha256:02fbde0134696b78c0c365d6e0b76c9814227208da5b2b3d4e5dbd82dc4a3606",
20
+ "public_schema_versions": [
21
+ "ml_data_platform.catalog/v1",
22
+ "ml_data_platform.parameter/v1",
23
+ "ml_data_platform.operator/v1",
24
+ "ml_data_platform.feature/v1",
25
+ "ml_data_platform.feature_set/v1",
26
+ "ml_data_platform.dataset_manifest/v1"
27
+ ],
28
+ "release_version": "0.1.12",
29
+ "runtime_requirements": {
30
+ "node": ">=18",
31
+ "os": [
32
+ "darwin",
33
+ "linux"
34
+ ]
35
+ },
36
+ "schema_version": "data_platform.ml_platform_release/v2",
37
+ "skills": {
38
+ "feature-management": {
39
+ "path": "skills/feature-management",
40
+ "requires_cli": ">=0.7.2 <0.8.0",
41
+ "revision": "0.1.12",
42
+ "sha256": "sha256:182b6f2df4fe58c946e482dfaf416c7d5b78c6fde9c8c8d7293103246618cb4e"
43
+ },
44
+ "model-lifecycle-management": {
45
+ "path": "skills/model-lifecycle-management",
46
+ "requires_cli": ">=0.7.2 <0.8.0",
47
+ "revision": "0.1.12",
48
+ "sha256": "sha256:61ba17f955b36d1c2e8329a10454d040ee7eca5afdb90ff0914d3f85b6e2d203"
49
+ }
50
+ },
51
+ "source_commit": "0246c26b396ce551fed3a9c8d4341a2230765025"
52
+ }
@@ -0,0 +1,110 @@
1
+ # Business Client JS
2
+
3
+ 工业时序智能建模平台唯一受支持的业务 CLI 与 API client 实现。客户端合同由平台
4
+ OpenAPI 快照、JavaScript 单元测试和 npm 发布测试直接验证;
5
+ 本目录是业务 CLI 的唯一 JavaScript 实现源码,Skill 通过外部 `ml-platform` 命令调用它,
6
+ 不复制或内嵌本目录的 runtime。
7
+
8
+ ```bash
9
+ npm test --prefix business-client-js
10
+ node business-client-js/src/cli.js --help
11
+ ```
12
+
13
+ 当前包保持 `private: true`,用于独立开发、测试和迁移验证,不作为第二个正式 npm 产品发布。
14
+ 正式 npm 封装阶段会把这份源码作为 `@zhuoyuezs/ml-platform` 的唯一 CLI runtime,并继续只暴露
15
+ `ml-platform` 命令。
16
+
17
+ 已注册 Dataset 的 API-first 流程不依赖本地 Catalog:
18
+
19
+ ```bash
20
+ ml-platform list-datasets --project <project>
21
+ ml-platform get-dataset <dataset_id> <dataset_version> --project <project>
22
+ ml-platform resolve-dataset <dataset_id> <dataset_version> --project <project>
23
+ ml-platform build-registered-dataset <dataset_id> <dataset_version> \
24
+ --project <project> --wait
25
+ ```
26
+
27
+ `resolve-manifest` 和 `build-dataset <manifest.json>` 仍用于尚未注册的本地契约。Catalog
28
+ normalizer 保留并校验非默认 `project`;`apply --project` 与 Catalog 内项目不一致时拒绝执行。
29
+
30
+ 同一 Parameter 需要从历史库训练、从实时库取数时,在 Parameter JSON 同时填写 `source` 与
31
+ 可选的 `online_source`,然后照常使用 `add-parameter` 或 Catalog `apply`;CLI 原样透传该
32
+ 字段,不需要额外参数。离线构建读取 `source`,实时因果读取自动选择 `online_source`。
33
+
34
+ Registry 资产详情和版本发现使用与 `dev` OpenAPI 一致的命令:
35
+
36
+ ```bash
37
+ ml-platform get-parameter <name> <version> --project <project>
38
+ ml-platform get-feature <name> <version> --project <project>
39
+ ml-platform list-feature-versions <name> --project <project> --all
40
+ ml-platform list-jobs --project <project> --status succeeded --all
41
+ ```
42
+
43
+ 平台资源生命周期与部署绑定的因果上下文读取也由同一 CLI 覆盖:
44
+
45
+ ```bash
46
+ ml-platform list-parameter-references <name> <version> --project <project>
47
+ ml-platform get-parameter-lifecycle <name> <version> --project <project>
48
+ ml-platform fetch-inference-context /absolute/path/to/request.json
49
+ ```
50
+
51
+ 已部署模型的标准推理使用 Serving URL,不使用控制面 `--api-url`。Chronos-2 v2 的
52
+ `known_future` 协变量放在 inline 请求的 `inputs.future_covariates` 中;每个预测步一行,
53
+ 行数必须等于模型的 `prediction_length`。下例为 15 分钟频率、预测 30 分钟;预测明天时
54
+ 同样提供整天的所有未来步:
55
+
56
+ ```json
57
+ {
58
+ "input_mode": "inline",
59
+ "cutoff_time": "2026-09-09T00:00:00+08:00",
60
+ "horizon": [{"duration": "PT30M"}],
61
+ "inputs": {
62
+ "timestamps": ["...", "2026-09-09T00:00:00+08:00"],
63
+ "values": [{"storage_soc": 51.2, "storage_power": 4.0}, {"storage_soc": 52.0, "storage_power": 3.8}],
64
+ "future_covariates": [
65
+ {"weather_temperature": 28.0, "peak_valley": 1},
66
+ {"weather_temperature": 27.5, "peak_valley": 1}
67
+ ]
68
+ }
69
+ }
70
+ ```
71
+
72
+ ```bash
73
+ ml-platform predict-model /absolute/path/to/request.json \
74
+ --serving-url https://storage-forecast.example
75
+ ```
76
+
77
+ 训练历史必须使用各个历史 cutoff 当时可取得的天气预报,不得以事后实测天气替代。
78
+
79
+ Parameter、Feature、FeatureSet 的删除命令执行软删除,并支持带 actor、reason 和幂等键的
80
+ 恢复;调用方应在任何变更前查询直接与传递引用。
81
+
82
+ 仓库中的 `api-spec/latest.json` 从 `origin/dev` 生成。同步或验证契约时运行:
83
+
84
+ ```bash
85
+ uv run python scripts/generate_openapi_schema.py --ref origin/dev
86
+ uv run python scripts/generate_openapi_schema.py --ref origin/dev --check
87
+ npm run api:check --prefix business-client-js
88
+ ```
89
+
90
+ ## Lifecycle discovery and preflight
91
+
92
+ Use `get-model-runtime-release` to inspect approved trainer/device/image bindings
93
+ and the effective evaluation identity. Find immutable resources with
94
+ `list-training-runs`, `list-training-jobs`, `list-model-artifacts`,
95
+ `list-evaluation-configs`, `list-evaluation-runs`, `list-evaluation-jobs`,
96
+ `list-metric-definitions`, `list-executable-packages`, and `list-model-packages`.
97
+ These commands accept `-q`, `--limit` (1–500), and `--offset`; responses contain
98
+ `items`, `total`, `limit`, `offset`. Query matches serialized metadata substrings.
99
+ Use the returned exact IDs with detail commands; Job lists contain immutable
100
+ specs, while Job detail refreshes status.
101
+
102
+ `validate-training-job REQUEST_JSON` and `validate-model-package REQUEST_JSON`
103
+ resolve the same contracts as submission without registering or scheduling
104
+ workloads. Read `submitted=false` and `unchecked`: successful preflight does not
105
+ verify image pulls, cluster resources or runtime execution. Complete request
106
+ examples and identity propagation are in the bundled model lifecycle Skill.
107
+
108
+ Maintainers can export the current API, including uncommitted schema changes,
109
+ with `uv run python scripts/generate_openapi_schema.py --working-tree` from the
110
+ repository root; use `--check` with it to verify the committed snapshot.
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@zhuoyuezs/ml-platform-business-client",
3
+ "version": "0.7.2",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "@zhuoyuezs/ml-platform-business-client",
9
+ "version": "0.7.2",
10
+ "license": "UNLICENSED",
11
+ "bin": {
12
+ "ml-platform": "src/cli.js"
13
+ },
14
+ "engines": {
15
+ "node": ">=18"
16
+ }
17
+ }
18
+ }
19
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@zhuoyuezs/ml-platform-business-client",
3
+ "version": "0.7.2",
4
+ "private": true,
5
+ "description": "JavaScript implementation of the ML Platform business client",
6
+ "bin": {
7
+ "ml-platform": "src/cli.js"
8
+ },
9
+ "files": [
10
+ "src",
11
+ "README.md"
12
+ ],
13
+ "scripts": {
14
+ "test": "node --test test/*.test.js",
15
+ "api:check": "node ../scripts/check_api_contract.js",
16
+ "pack": "npm pack"
17
+ },
18
+ "engines": {
19
+ "node": ">=18"
20
+ },
21
+ "license": "UNLICENSED",
22
+ "dependencies": {}
23
+ }