@stalfh233/omc-cli 0.0.0-stage → 0.4.10
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/LICENSE +21 -0
- package/README.md +293 -3
- package/coverage/m1-coverage-manifest-v1.json +1278 -0
- package/dist/approval-token.js +102 -0
- package/dist/args.js +25 -0
- package/dist/artifacts.js +119 -0
- package/dist/bench/call-face-eval.js +256 -0
- package/dist/bench/context-attribution.js +151 -0
- package/dist/bench/discovery-cost-eval.js +230 -0
- package/dist/bench/driver.js +81 -0
- package/dist/bench/evals.js +236 -0
- package/dist/bench/fake-http-server.js +65 -0
- package/dist/bench/instrument.js +87 -0
- package/dist/bench/intent-face-eval.js +343 -0
- package/dist/bench/run.js +166 -0
- package/dist/bench/scenario.js +343 -0
- package/dist/bench/types.js +76 -0
- package/dist/bi-wire.js +41 -0
- package/dist/bizservice-config.js +581 -0
- package/dist/call.js +153 -0
- package/dist/capability-absences.js +23 -0
- package/dist/capability-overview.js +492 -0
- package/dist/capability-shape.js +154 -0
- package/dist/cli-contract.js +70 -0
- package/dist/cli-output.js +73 -0
- package/dist/cli.js +1418 -0
- package/dist/code-rules.js +69 -0
- package/dist/command-transport.js +155 -0
- package/dist/config-store.js +195 -0
- package/dist/context.js +21 -0
- package/dist/contract-consistency.js +66 -0
- package/dist/contract-resources.js +62 -0
- package/dist/coverage-consistency.js +62 -0
- package/dist/coverage-registry.js +76 -0
- package/dist/coverage.js +130 -0
- package/dist/data-list-filter.js +114 -0
- package/dist/discovery.js +390 -0
- package/dist/endpoints.js +154 -0
- package/dist/environment-policy.js +26 -0
- package/dist/execution-metadata.js +1092 -0
- package/dist/fake/app.js +45 -0
- package/dist/fake/b2-registration.js +594 -0
- package/dist/fake/businessrule.js +242 -0
- package/dist/fake/datarule.js +72 -0
- package/dist/fake/dictionary.js +108 -0
- package/dist/fake/environment.js +30 -0
- package/dist/fake/field.js +167 -0
- package/dist/fake/form.js +101 -0
- package/dist/fake/index.js +121 -0
- package/dist/fake/list-view.js +289 -0
- package/dist/fake/model.js +136 -0
- package/dist/fake/online-js.js +18 -0
- package/dist/fake/report.js +253 -0
- package/dist/fake/routes.js +47 -0
- package/dist/fake/rule-lifecycle.js +37 -0
- package/dist/fake/runtime-data.js +367 -0
- package/dist/fake/state.js +67 -0
- package/dist/fake/workflow.js +364 -0
- package/dist/field-change.js +200 -0
- package/dist/field-families.js +896 -0
- package/dist/form-layout.js +111 -0
- package/dist/form-support.js +821 -0
- package/dist/goal-routes.js +468 -0
- package/dist/governed-execution.js +87 -0
- package/dist/human-summary.js +212 -0
- package/dist/identity.js +62 -0
- package/dist/intent/baseline.js +57 -0
- package/dist/intent/capabilities/bizservice.js +274 -0
- package/dist/intent/capabilities/businessrule.js +493 -0
- package/dist/intent/capabilities/datarule.js +187 -0
- package/dist/intent/capabilities/field.js +545 -0
- package/dist/intent/capabilities/form.js +136 -0
- package/dist/intent/capabilities/index.js +64 -0
- package/dist/intent/capabilities/listview.js +157 -0
- package/dist/intent/capabilities/model.js +100 -0
- package/dist/intent/capabilities/onlinejs.js +108 -0
- package/dist/intent/capabilities/report.js +355 -0
- package/dist/intent/capabilities/workflow.js +458 -0
- package/dist/intent/capability.js +6 -0
- package/dist/intent/cli.js +91 -0
- package/dist/intent/compare.js +56 -0
- package/dist/intent/compiler.js +79 -0
- package/dist/intent/dsl.js +129 -0
- package/dist/intent/plan-file.js +63 -0
- package/dist/intent/readback.js +65 -0
- package/dist/intent/schema.js +158 -0
- package/dist/intent/validation.js +30 -0
- package/dist/intent/yaml.js +315 -0
- package/dist/json-column.js +68 -0
- package/dist/lanes/app-contract.js +95 -0
- package/dist/lanes/app-coverage.js +16 -0
- package/dist/lanes/app.js +174 -0
- package/dist/lanes/apply-changes.js +231 -0
- package/dist/lanes/b2-registration-contract.js +292 -0
- package/dist/lanes/b2-registration-coverage.js +48 -0
- package/dist/lanes/b2-registration.js +1187 -0
- package/dist/lanes/businessrule-contract.js +232 -0
- package/dist/lanes/businessrule-coverage.js +16 -0
- package/dist/lanes/businessrule.js +221 -0
- package/dist/lanes/contract-support.js +65 -0
- package/dist/lanes/coverage-declaration.js +9 -0
- package/dist/lanes/datarule-contract.js +155 -0
- package/dist/lanes/datarule-coverage.js +19 -0
- package/dist/lanes/datarule-protocol.js +308 -0
- package/dist/lanes/datarule.js +818 -0
- package/dist/lanes/dictionary-contract.js +78 -0
- package/dist/lanes/dictionary-coverage.js +24 -0
- package/dist/lanes/dictionary.js +235 -0
- package/dist/lanes/environment-contract.js +70 -0
- package/dist/lanes/environment-coverage.js +14 -0
- package/dist/lanes/environment.js +163 -0
- package/dist/lanes/field-contract.js +223 -0
- package/dist/lanes/field-coverage.js +27 -0
- package/dist/lanes/field.js +374 -0
- package/dist/lanes/form-contract.js +97 -0
- package/dist/lanes/form-coverage.js +16 -0
- package/dist/lanes/form.js +185 -0
- package/dist/lanes/lane-ids.js +34 -0
- package/dist/lanes/list-view-contract.js +175 -0
- package/dist/lanes/list-view-coverage.js +20 -0
- package/dist/lanes/list-view-shapes.js +1207 -0
- package/dist/lanes/list-view.js +578 -0
- package/dist/lanes/meta-contract.js +85 -0
- package/dist/lanes/meta.js +255 -0
- package/dist/lanes/model-contract.js +168 -0
- package/dist/lanes/model-coverage.js +20 -0
- package/dist/lanes/model.js +986 -0
- package/dist/lanes/online-js-contract.js +99 -0
- package/dist/lanes/online-js-coverage.js +28 -0
- package/dist/lanes/online-js.js +127 -0
- package/dist/lanes/report-contract.js +144 -0
- package/dist/lanes/report-coverage.js +21 -0
- package/dist/lanes/report.js +476 -0
- package/dist/lanes/rule-graph.js +1846 -0
- package/dist/lanes/rule-lifecycle-contract.js +92 -0
- package/dist/lanes/rule-lifecycle-coverage.js +20 -0
- package/dist/lanes/rule-lifecycle.js +176 -0
- package/dist/lanes/runtime-data-contract.js +264 -0
- package/dist/lanes/runtime-data-coverage.js +25 -0
- package/dist/lanes/runtime-data.js +1054 -0
- package/dist/lanes/workflow-contract.js +223 -0
- package/dist/lanes/workflow-coverage.js +40 -0
- package/dist/lanes/workflow.js +1813 -0
- package/dist/online-js-layout.js +58 -0
- package/dist/online-js-source.js +276 -0
- package/dist/package-tool.js +51 -0
- package/dist/package.js +73 -0
- package/dist/plan.js +73 -0
- package/dist/read.js +144 -0
- package/dist/redact.js +28 -0
- package/dist/rule-support.js +587 -0
- package/dist/runtime-support.js +134 -0
- package/dist/server.js +92 -0
- package/dist/session-manager.js +30 -0
- package/dist/session.js +149 -0
- package/dist/skills.js +112 -0
- package/dist/support.js +98 -0
- package/dist/tool-types.js +127 -0
- package/dist/tools.js +59 -0
- package/dist/usage-log.js +197 -0
- package/dist/wire.js +287 -0
- package/dist/workflow-support.js +99 -0
- package/dist/write-lease.js +26 -0
- package/dist/write-lock.js +109 -0
- package/dist/write.js +176 -0
- package/dist/zip.js +156 -0
- package/docs/tool-surface-map.md +42 -0
- package/package.json +71 -6
- package/skills/omc-acceptance-criteria.md +47 -0
- package/skills/omc-business-configuration.md +257 -0
- package/skills/omc-capabilities.md +197 -0
- package/skills/omc-capability-scouting.md +55 -0
- package/skills/omc-config-draft-review.md +171 -0
- package/skills/omc-five-piece-flow.md +35 -0
- package/skills/omc-glossary.md +86 -0
- package/skills/omc-refusals.md +110 -0
- package/skills/omc-requirement-analysis.md +161 -0
- package/skills/omc-requirement-vocabulary.md +51 -0
- package/skills/omc-start-here.md +82 -0
- package/skills/omc-tool-selection.md +119 -0
- package/skills/omc-write-hazards.md +87 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Oh-My-CpAgent contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,293 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# omc-cli
|
|
2
|
+
|
|
3
|
+
把 CloudPivot 8.6 的配置能力封装为一个本地 **CLI**——受治理、失败即关闭(fail-closed),并以一份机器可读的覆盖清单为边界。
|
|
4
|
+
|
|
5
|
+
- **一条 CLI 工具面**——高层编排(`configure_model` / `configure_form` /
|
|
6
|
+
`configure_rule` / `apply_changes` / `discover_environment` / `get_status`)与低层原子工具共用同一条管道。
|
|
7
|
+
- **对话人门 + 环境写权限**——真正的人门在对话层:执行变更前先讲清草稿、资源、逐条改动与清理并等待明确批准;机器侧只有环境 profile 的 `writable` 开关。只读环境零 wire 拒绝,允许写入环境直接执行。
|
|
8
|
+
- **生产是高危标签**——`production:true` 不再禁止写入;生产写必须在每笔参数中带 `confirmProduction:true`,结果和审计工件记录 `productionConfirmed:true`。
|
|
9
|
+
- **不再有令牌审批**——删除 `approval.request`、HMAC/TTL/指纹令牌、`selfApprove`、`OMC_CLI_SELF_APPROVE`、`--yes` 和交互 y/N。保留 dry-run、覆盖门、版本族门、写租约、权威读回和不确定性冻结。
|
|
10
|
+
- **覆盖清单边界**——随包内置的 M1 清单即契约;超出覆盖范围的调用会拒绝并引用清单条目。非 8.6 版本族(以及缺少版本证据)的写操作失败即关闭。
|
|
11
|
+
- **写租约**——同一环境内的并发写会串行化(进程内)。
|
|
12
|
+
- **本地 dry-lint**——写前零 wire 拒绝坏形状,而不是写到环境才发现:
|
|
13
|
+
**规则图**(路由必备 `points`/`routeCondition`/`matchType`、节点类型/取值枚举、
|
|
14
|
+
动态来源键位)、**业务编码**(模型 ≤26/字段 ≤28、lowerCamel|lower_snake、
|
|
15
|
+
拒绝平台保留字)、**表单布局**(span 白名单、行宽 ≤24、整行独占、控件覆盖率)、
|
|
16
|
+
字段族门。违规返回结构化 `validation`,不猜不改。
|
|
17
|
+
- **规则图自动规范化**——线性图缺坐标或节点重叠时,工具自动铺成平台标准单列
|
|
18
|
+
(x=327、158×40、y=36/116/196…),缺失路由坐标按节点**边中点**推导,缺失
|
|
19
|
+
`routeCondition`/`matchType` 补 `true`/`ANY`;已可渲染的布局与分支图原样保留
|
|
20
|
+
——调用方无需手算几何。
|
|
21
|
+
- **方法论即可读**——`skills/` 下的方法论通过 `omc help <topic>` 按需读取;agent 不必去翻仓库文件。
|
|
22
|
+
- **凭据零回显**——凭据(0600 存储或环境变量)不会出现在任何输出、产物或错误里。
|
|
23
|
+
- **不确定性语义**——传输失败时冻结(`status: "uncertain", frozen: true`),
|
|
24
|
+
绝不伪造成功。
|
|
25
|
+
|
|
26
|
+
## 快速开始
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
omc setup && omc doctor && omc commands --json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
配置入口是 `omc setup`;不确定从哪开始读 `omc help omc-start-here`(任务→topic 路线),
|
|
33
|
+
被拒或状态异常读 `omc help omc-refusals`(拒绝族的含义与下一步),
|
|
34
|
+
写入治理读 `omc help omc-config-draft-review`。
|
|
35
|
+
|
|
36
|
+
### 权威发现路线(静态/就绪分离)
|
|
37
|
+
|
|
38
|
+
随包 `skills/` 是方法论 topic 的**权威**副本;下游 cpdocs 快照只是镜像,不得当作第二真相源。
|
|
39
|
+
`help` / `commands` / `capabilities` 都返回同一份 `discovery` 投影(`authoritative`、
|
|
40
|
+
`route`、`readiness`、`distributedMirror`)。
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
omc capabilities # 能力 nickname/id/lane/aliases/tools/commands 一张表
|
|
44
|
+
omc capability <id-or-alias> --executable # 选中能力的完整执行包(离线,不接触环境)
|
|
45
|
+
omc contract <lane-from-the-capability> # wire 契约 + 该能力路由
|
|
46
|
+
omc describe <tool-from-the-bundle> # schema + recipe + 能力路由
|
|
47
|
+
omc call discover_environment --env <env> --args '{}' # 环境就绪(真实环境)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
`commands --json` 是完整工具清单,每个 lane-bound 工具都带 `capability` 映射;
|
|
51
|
+
`describe` 与 `contract` 重复所选能力路由,切换面不必再宽扫 topic 或契约。
|
|
52
|
+
`omc eval:discovery-comparison` 输出相对 ticket 01 基线的调用数/字节数对比。
|
|
53
|
+
|
|
54
|
+
## 工具面(90 个工具)
|
|
55
|
+
|
|
56
|
+
| 类别 | 数量 | 说明 |
|
|
57
|
+
|---|---|---|
|
|
58
|
+
| 写工具 | 56 | 高层编排 4(`configure_*` + `apply_changes`)+ 低层原子写 52 |
|
|
59
|
+
| 读工具 | 29 | `*.list` / `*.get` / `*.load` / `discover_environment` |
|
|
60
|
+
| 治理/元工具 | 5 | `get_status`、`doctor`、`coverage.manifest`、`setup.*` |
|
|
61
|
+
|
|
62
|
+
**全集与逐工具参数**:`omc commands --json`(name/lane/kind/requiredArgs/writeGate/timeout)、
|
|
63
|
+
`omc describe <tool>`(完整 schema + 可运行示例)。大结果自动落到 `detailFile` 工件,
|
|
64
|
+
只回计数/摘要;相同目标 fingerprint 的重复读返回 `unchanged`(带缓存命中信号)。
|
|
65
|
+
|
|
66
|
+
### 治理 / 元工具(5)
|
|
67
|
+
|
|
68
|
+
| 工具 | 作用 |
|
|
69
|
+
|---|---|
|
|
70
|
+
| `get_status` | 环境健康:连通性、登录、版本族、凭据库权限位、租约、覆盖摘要、写入姿态(`writable` / 是否生产 / 是否需 `confirmProduction` / 已移除配置键) |
|
|
71
|
+
| `doctor` | 只报告的健康链:配置文件 → 凭据 → 登录 → 8.6 版本族兼容 → 环境指纹 |
|
|
72
|
+
| `coverage.manifest` | 覆盖清单投影(能力基线的机器可读视图) |
|
|
73
|
+
| `setup.start` | 配置引导入口:返回待填字段与当前非密值 |
|
|
74
|
+
| `setup.commit` | 幂等提交环境配置(写 `omc.config.json` + 0600 凭据库),随后跑连通性+登录+版本族校验 |
|
|
75
|
+
|
|
76
|
+
### 读工具(29)
|
|
77
|
+
|
|
78
|
+
| 域(lane) | 工具 |
|
|
79
|
+
|---|---|
|
|
80
|
+
| 环境 `environment-governance` | `discover_environment`、`environment.fingerprint` |
|
|
81
|
+
| 应用 `app-management` | `app.list` |
|
|
82
|
+
| 数据字典 `dictionary-management` | `dictionary.list`、`dictionary.type`、`dictionary.names`、`dictionary.get`、`dictionary.records`、`dictionary.parent`、`dictionary.classes` |
|
|
83
|
+
| 字段 `field-families` | `field.list` |
|
|
84
|
+
| 表单 `form-publish-chain` | `form.get` |
|
|
85
|
+
| 字段级规则 `G1-datarule` | `datarule.list` |
|
|
86
|
+
| 业务规则 `B1-businessrule` | `rule.list`、`rule.get` |
|
|
87
|
+
| 流程 / 待办 `W7-S29-greenfield` | `workflow.get_draft`、`workflow.get_published`、`workitem.list` |
|
|
88
|
+
| 运行数据 `M2-runtime-data` | `data.list`、`data.load` |
|
|
89
|
+
| 业务集成 `B2-registration` | `service.get`、`method.get`、`service.category.list`、`service.dbconnpool.list`、`service.adapter_config`、`service.table_list`、`service.table_sql`、`service.export`、`service.check` |
|
|
90
|
+
|
|
91
|
+
## 能力总览(14 项)
|
|
92
|
+
|
|
93
|
+
`omc capabilities` 的静态快照;跑 `omc capabilities` / `omc capability <id>` 取实时投影。
|
|
94
|
+
「依赖」= `requires → precedes`,即能力之间的配置顺序。
|
|
95
|
+
|
|
96
|
+
| 能力 | 标题 | lane | 覆盖 | intent | 依赖 |
|
|
97
|
+
|---|---|---|---|---|---|
|
|
98
|
+
| `environment` | 环境治理 | `environment-governance` | executable | none | - → - |
|
|
99
|
+
| `app` | 应用 | `app-management` | executable | none | - → - |
|
|
100
|
+
| `dictionary` | 数据字典 | `dictionary-management` | executable | none | - → - |
|
|
101
|
+
| `model` | 业务模型 | `model-management` | executable | partial | - → field, workflow |
|
|
102
|
+
| `field` | 字段(含子表) | `field-families` | executable | partial | model → form, listview, datarule, businessrule, data |
|
|
103
|
+
| `form` | 默认表单 | `form-publish-chain` | executable | partial | field → onlinejs |
|
|
104
|
+
| `listview` | 列表视图 | `W1-list-view` | partial | partial | field → - |
|
|
105
|
+
| `datarule` | 字段级控件规则 | `G1-datarule` | partial | partial | field → - |
|
|
106
|
+
| `businessrule` | 业务规则(图形引擎) | `B1-businessrule` | executable | partial | field → rule-lifecycle |
|
|
107
|
+
| `rule-lifecycle` | 规则生命周期 | `S25-rule-lifecycle` | executable | none | businessrule → - |
|
|
108
|
+
| `workflow` | 流程模板 | `W7-S29-greenfield` | executable | partial | model → - |
|
|
109
|
+
| `onlinejs` | 表单在线 JS | `online-js` | executable | partial | form → - |
|
|
110
|
+
| `bizservice` | 业务集成 | `B2-registration` | executable | partial | - → - |
|
|
111
|
+
| `data` | 运行数据 | `M2-runtime-data` | executable | none | field → - |
|
|
112
|
+
|
|
113
|
+
- **覆盖**:`executable` 全量可用;`partial` 有取证边界(见 `omc capability <id>` 的 notes)。
|
|
114
|
+
- **intent**:`partial` 表示该能力可声明式(`omc intent`)覆盖一部分——通常 create/update;
|
|
115
|
+
`none` 表示只走 `omc call`。删除类、方法面、分类/连接池等仍走 `omc call` 逃生舱。
|
|
116
|
+
|
|
117
|
+
## 写工具做什么
|
|
118
|
+
|
|
119
|
+
写工具分三层用法,**全部走同一条受治理管道**。
|
|
120
|
+
|
|
121
|
+
### 1. 高层编排(4 个,一次调用 = 一个变更包)
|
|
122
|
+
|
|
123
|
+
| 工具 | 作用 |
|
|
124
|
+
|---|---|
|
|
125
|
+
| `configure_model` | 建模型 → 建 1..N 个字段 → 模型级 `field.publish`,`publishForm:true` 时再 `form.draft` + `form.publish`,一步到达**结构可用形态**。字段族门逐字段在写入前拒绝。 |
|
|
126
|
+
| `configure_form` | 给模型配默认表单:`fieldCodes` 决定绑定哪些已发布字段(按序;省略=全量;未知 code 在建表前拒绝 `form-fieldcodes-unknown`),再发布。 |
|
|
127
|
+
| `configure_rule` | 保存并启用一条业务规则(graph 规则引擎)——委托 `rule.save` 的 upsert + `rule.enable`。 |
|
|
128
|
+
| `apply_changes` | **批量入口**:一次提交异构变更清单 `changes:[{tool,args}]`(只收低层原子写工具),按序执行、逐步权威读回、**首败即停**并报已完成步骤与失败点;每步传输超时按 `uncertain` 冻结。含**整批时间预算** `totalTimeoutMs`(缺省 8 分钟):超预算即停并返回 `uncertain` + `progressFile` + `resumeFromIndex`,绝不盲重试。 |
|
|
129
|
+
|
|
130
|
+
### 2. 低层原子写(52 个,按域)
|
|
131
|
+
|
|
132
|
+
| 域(lane) | 工具 |
|
|
133
|
+
|---|---|
|
|
134
|
+
| 模型 `model-management` | `model.create`、`model.update`(应用树节点改名补丁:bizSchemaCode/id/name/parentId 四键必需,modelType 恒拒——类型创建时固化)、`model.setSummary`(数据标题/摘要模板)、`model.delete`、`model.deleteMany`(一次 `physically_delete` 请求批量删;逐目标引用预检、被引用整批拒绝零副作用、逐模型缺席轮询;跨应用自动解析 AppFunction id) |
|
|
135
|
+
| 字段 `field-families` | `field.create`、`field.update`、`field.delete`、`field.publish`(模型级一次发布;发布后逐字段读 `bizproperty/get` 比对 name/propertyType,与草稿面不一致即拒绝——不只查发布列表存在性) |
|
|
136
|
+
| 表单 `form-publish-chain` | `form.draft`、`form.publish` |
|
|
137
|
+
| 字段级规则 `G1-datarule` | `datarule.create`、`datarule.update`、`datarule.delete` |
|
|
138
|
+
| 业务规则图 `B1-businessrule` / `S25-rule-lifecycle` | `rule.save`、`rule.enable`、`rule.disable`、`rule.delete` |
|
|
139
|
+
| 运行时数据 `M2-runtime-data` | `data.save`、`data.update`、`data.submit`、`data.delete` |
|
|
140
|
+
| 流程 `W7-S29-greenfield` | `workflow.create`、`workflow.update`、`workflow.publish`、`workflow.bindRule`(支持 `ruleCodes[]` 一次绑多规则,MERGE 语义)、`workflow.delete` |
|
|
141
|
+
| 在线脚本 `online-js` | `onlinejs.compose`(唯一工具;平台模板保真,SHA-256 读回)。后端的「在线开发」(`/api/api/programming` Java 源码)用二开扩展包,不在本 CLI 范围 |
|
|
142
|
+
| 列表视图 `W1-list-view` | `listview.create`、`listview.configure`、`listview.delete`(列/排序/筛选字段引用可给 **propertyCode 或字段显示名**,唯一匹配自动解析,歧义或不存在则拒绝,不静默跳过) |
|
|
143
|
+
| 应用 `app-management` | `app.create`、`app.update`、`app.delete` |
|
|
144
|
+
| 数据字典 `dictionary-management` | `dictionary.save`(字典/记录 upsert,KEY_VALUE/TREE)、`dictionary.status`(启停字典或记录)、`dictionary.usage`(批量 `initialUsed`)、`dictionary.class.save`、`dictionary.class.delete` |
|
|
145
|
+
| 后端服务注册 `B2-registration` | `service.register`、`service.update`、`service.delete`、`method.update`、`method.delete`、`method.test`、`service.import`、`service.category.create`、`service.category.update`、`service.category.delete`、`service.dbconnpool.create`、`service.dbconnpool.update`、`service.dbconnpool.delete` |
|
|
146
|
+
|
|
147
|
+
### 3. 每个写调用都经过的治理管道
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
语义门(字段族 / 规则图 dry-lint / 业务编码 / 表单布局 / 各工具 preflight,零 wire 调用)
|
|
151
|
+
→ 覆盖门(清单声明;超界拒绝并引用条目)
|
|
152
|
+
→ 环境写入门(writable=false 拒绝;生产需 confirmProduction:true)
|
|
153
|
+
→ 会话 + 版本族门(缺版本证据即关闭)
|
|
154
|
+
→ dry-run / requestId 重放门
|
|
155
|
+
→ 写租约(同环境串行)
|
|
156
|
+
→ 执行 → 权威读回 → 交付工件(artifact)+ 中文人话 summary
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
> 人门在对话层,不在这条管道里:agent 必须先出草稿并取得用户明确批准,才发起
|
|
160
|
+
> 下列任何写入。机器管道只执行 writable 与生产 confirmProduction 检查。
|
|
161
|
+
|
|
162
|
+
- **计划与结果同源**:计划卡显示「即将…」,回执显示「已…」,由 `human-summary.ts`
|
|
163
|
+
同一来源按真实参数生成;空转写报「无变更:原因」,不假装有变更。
|
|
164
|
+
- **完整性字段不被摘要替代**:`performed` / `readback` / `deliveryState` /
|
|
165
|
+
`artifactFingerprint` 始终在内,`summary` 是**并列新增**。
|
|
166
|
+
- **失败即停**:批量在失败步停止,返回 `{status, steps(已完成), failedStep, blocker}`;
|
|
167
|
+
已完成步骤的效果真实存在,需善后时按 `steps` 清单处理。
|
|
168
|
+
|
|
169
|
+
## 声明式意图面(omc intent)
|
|
170
|
+
|
|
171
|
+
除 `omc call` 的一次一工具外,可用宣言式 YAML 描述一组变更,编译为**不可变 plan** 后再执行:
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
omc intent validate intent.yaml # 离线语义校验(错误带 源行:列)
|
|
175
|
+
omc intent plan intent.yaml --env <env> # 读基线 → 编译 → plan(planHash 复核对象)
|
|
176
|
+
omc intent apply plan.json # 基线 drift 门 + writable 检查 + 串行执行 + 默认读回等价确认
|
|
177
|
+
omc intent readback intent.yaml --env <env> # 解码回 intent 形状做等价校验
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
- 顶层 `models[]` / `services[]`;各能力声明式覆盖程度见「能力总览」的 intent 列(`partial` = 覆盖 create/update 等一部分)。
|
|
181
|
+
- **plan 不可变**:apply 前 plan 被改一字节即拒(`intent-plan-tampered`),plan 后环境漂移即拒(`intent-baseline-drifted`,重跑 `intent plan`)。
|
|
182
|
+
- 生产环境 apply 加 `--confirm-production`;`--dry-run` 预览,`--no-verify` 跳过最终读回等价确认。
|
|
183
|
+
- 未声明式覆盖的操作(删除类、方法面、分类/连接池等)仍走 `omc call` 逃生舱。
|
|
184
|
+
|
|
185
|
+
## 其它命令
|
|
186
|
+
|
|
187
|
+
| 命令 | 作用 |
|
|
188
|
+
|---|---|
|
|
189
|
+
| `omc artifact get <id>` | 取回大读回的 `detailFile` 工件(0600,校验 sha256) |
|
|
190
|
+
| `omc setup [--list\|--edit <env>\|--remove <env>]` | 命名环境的增删改查 |
|
|
191
|
+
| `omc doctor [--environment <env>]` | 只报告的健康链 |
|
|
192
|
+
| `omc bench [--live-sample] [--env <env>]` | 工具面/wire 面的双面埋点跑分(离线 fake 或 live 采样) |
|
|
193
|
+
| `npm run eval:discovery-cost --workspace omc-cli` | 三组离线 discovery 成本基线(调用次数、stdout 字节、拒绝/重试、CloudPivot 写入) |
|
|
194
|
+
|
|
195
|
+
## 覆盖边界
|
|
196
|
+
|
|
197
|
+
- 随包 `coverage/m1-coverage-manifest-v1.json` 是能力契约;工具面受其约束,超界调用
|
|
198
|
+
拒绝并引用条目。
|
|
199
|
+
- **永久不支持**:应用发布 / 环境级发布、CloudPivot 在线后端内联编码、
|
|
200
|
+
OCR/电子签字段族。
|
|
201
|
+
- 后端逻辑来自二开扩展包,经受治理发布后经 `BizMethodMapping` 服务注册表消费。
|
|
202
|
+
|
|
203
|
+
## 目录结构
|
|
204
|
+
|
|
205
|
+
```
|
|
206
|
+
coverage/ m1-coverage-manifest-v1.json(能力基线)
|
|
207
|
+
skills/ 12 篇方法论 topic —— 以 `omc help <topic>` 暴露(见「方法论 topics」)
|
|
208
|
+
docs/ tool-surface-map.md —— 工具面地图
|
|
209
|
+
src/ args/support/plan/read/write/package/context(治理管道)
|
|
210
|
+
lanes/(各域适配器)· fake/(离线夹具)
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
依赖 [`omc-core`](../omc-core)(能力契约、治理原语、wire 解码器——零 DSH 依赖,
|
|
214
|
+
由 CI 强制)。
|
|
215
|
+
|
|
216
|
+
## 在什么目录运行
|
|
217
|
+
|
|
218
|
+
把本 CLI 当**工具**用,请在**独立、干净的项目目录**里运行,而不要放在 OMC 的
|
|
219
|
+
研发仓库里。工具描述是自包含的(字段族、关联 `options`、规则 `nodeGraph`、
|
|
220
|
+
工作流 `template`、`formData` 与写入治理都已在工具 schema 与描述里声明),
|
|
221
|
+
因此只看到工具的 agent 不需要去读仓库文件。
|
|
222
|
+
|
|
223
|
+
如果 agent 在 OMC 研发仓里启动,它可能读到只属于研发的产物——`.scratch/` 历史、
|
|
224
|
+
`CONTEXT.md`、既有的业务域 spec 与驱动脚本——并误当成使用指引。请优先选择一个只包含本包与目标项目的目录。
|
|
225
|
+
|
|
226
|
+
## 方法论 topics
|
|
227
|
+
|
|
228
|
+
`skills/` 随包分发,用 `omc help <topic>` 读取(等价 `git help <concept>`)。
|
|
229
|
+
首触路线与"任务→topic"映射见 `omc help omc-start-here`。
|
|
230
|
+
|
|
231
|
+
| topic | 用途 |
|
|
232
|
+
|---|---|
|
|
233
|
+
| `omc-start-here` | 首触命令阶梯 + 任务→topic 路线(router) |
|
|
234
|
+
| `omc-capabilities` | **能力总表**:每个能力能做哪些事、工具、recipe、边界("能不能做 X"先读它) |
|
|
235
|
+
| `omc-config-draft-review` | 写前草稿确认:对话人门协议(**任何写前必读**) |
|
|
236
|
+
| `omc-five-piece-flow` | 治理变更五阶段:发现→草稿→权限→执行→读回清理 |
|
|
237
|
+
| `omc-tool-selection` | 目标 → 工具:何时用高层编排、何时落到原子 |
|
|
238
|
+
| `omc-refusals` | 拒绝/不确定族的含义与下一步(按族,不逐码) |
|
|
239
|
+
| `omc-write-hazards` | 底层写面安全形状(表单/视图/按钮/子表/关联/规则/在线 JS) |
|
|
240
|
+
| `omc-business-configuration` | 中文业务配置 runbook(需求维度 → 落地) |
|
|
241
|
+
| `omc-requirement-analysis` | 模糊中文需求 → 平台无关的 Configuration Intent |
|
|
242
|
+
| `omc-requirement-vocabulary` | 中文线索词 → 能力 lookup |
|
|
243
|
+
| `omc-capability-scouting` | 覆盖清单之外的新能力如何诚实取证 |
|
|
244
|
+
| `omc-acceptance-criteria` | 验收门:读回、交付态、零残留、反例基线 |
|
|
245
|
+
| `omc-glossary` | 术语:环境指纹、覆盖清单、交付态、Void envelope、结果状态 |
|
|
246
|
+
|
|
247
|
+
## npm 分发
|
|
248
|
+
|
|
249
|
+
本包(`@stalfh233/omc-cli`,可执行命令仍是 `omc`)通过公共 npm registry 分发。`omc-core` 是 `omc-cli` 的内部依赖,发布时先发 `omc-core`,再发 `omc-cli`;两者版本保持一致。当前版本为 `0.4.10`,尚未宣称 `1.0.0` 稳定契约。
|
|
250
|
+
|
|
251
|
+
### 使用已发布包
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
npm install -g @stalfh233/omc-cli@0.4.10
|
|
255
|
+
omc setup
|
|
256
|
+
omc doctor
|
|
257
|
+
omc help omc-write-hazards
|
|
258
|
+
omc help omc-business-configuration
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### 发布新版本
|
|
262
|
+
|
|
263
|
+
发布在开发机执行,必须先 `omc-core` 后 `omc-cli`,顺序不能反:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
npm run verify
|
|
267
|
+
npm publish --workspace packages/omc-core
|
|
268
|
+
npm publish --workspace packages/omc-cli
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
`omc-core` 与 `omc-cli` 版本保持一致;发布前先用 `git tag vX.Y.Z` 记录该版本。新包首次发布进入 npm staged-publishing 审核队列,需维护者在 npmjs.com 用交互式 2FA 批准后真实版本才可见。
|
|
272
|
+
|
|
273
|
+
### 版本策略
|
|
274
|
+
|
|
275
|
+
- `0.2.x`:继续演进 CLI/覆盖清单/配置契约,允许新增能力和必要的行为修复。
|
|
276
|
+
- `1.0.0`:等 CLI 面、intent 面、覆盖清单和分发安装流程稳定后再发布;发布前应增加迁移说明和兼容性检查。
|
|
277
|
+
|
|
278
|
+
### 分发后自检
|
|
279
|
+
|
|
280
|
+
新会话不需要依赖本仓库的 `AGENTS.md`。安装包内置 `skills/`,可通过以下命令发现和读取方法论:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
omc commands --json
|
|
284
|
+
omc help
|
|
285
|
+
omc help omc-start-here
|
|
286
|
+
omc help omc-write-hazards
|
|
287
|
+
omc help omc-business-configuration
|
|
288
|
+
omc help omc-refusals
|
|
289
|
+
omc describe <tool>
|
|
290
|
+
omc contract <lane>
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
CLI 自己执行 dry-lint、覆盖清单、writable/production confirmation、写租约和权威读回;浏览器不是常规验收步骤。
|