@stalfh233/omc-cli 0.5.0 → 0.5.1

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 (225) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +359 -359
  3. package/coverage/m1-coverage-manifest-v1.json +1414 -1414
  4. package/dist/approval-flow.js +0 -0
  5. package/dist/approval-token.js +102 -0
  6. package/dist/args.js +0 -0
  7. package/dist/artifacts.js +0 -0
  8. package/dist/batch-call.js +0 -0
  9. package/dist/bench/call-face-eval.js +0 -0
  10. package/dist/bench/context-attribution.js +0 -0
  11. package/dist/bench/discovery-cost-eval.js +0 -0
  12. package/dist/bench/driver.js +0 -0
  13. package/dist/bench/evals.js +0 -0
  14. package/dist/bench/fake-http-server.js +65 -0
  15. package/dist/bench/instrument.js +0 -0
  16. package/dist/bench/intent-face-eval.js +40 -40
  17. package/dist/bench/run.js +0 -0
  18. package/dist/bench/scenario.js +0 -0
  19. package/dist/bench/types.js +0 -0
  20. package/dist/bi-wire.js +0 -0
  21. package/dist/bizservice-config.js +0 -0
  22. package/dist/call.js +0 -0
  23. package/dist/capability-absences.js +0 -0
  24. package/dist/capability-overview.js +0 -0
  25. package/dist/capability-shape.js +0 -0
  26. package/dist/cli-contract.js +38 -1
  27. package/dist/cli-output.js +8 -2
  28. package/dist/cli.js +9 -1
  29. package/dist/closest-match.js +0 -0
  30. package/dist/code-rules.js +0 -0
  31. package/dist/command-transport.js +0 -0
  32. package/dist/compound-writes.js +0 -0
  33. package/dist/compute.js +0 -0
  34. package/dist/config-store.js +0 -0
  35. package/dist/context.js +0 -0
  36. package/dist/contract-consistency.js +0 -0
  37. package/dist/contract-resources.js +0 -0
  38. package/dist/coverage-consistency.js +0 -0
  39. package/dist/coverage-registry.js +0 -0
  40. package/dist/coverage.js +0 -0
  41. package/dist/data-list-filter.js +0 -0
  42. package/dist/describe-cache.js +0 -0
  43. package/dist/discovery.js +0 -0
  44. package/dist/endpoints.js +0 -0
  45. package/dist/environment-policy.js +0 -0
  46. package/dist/execution-metadata.js +0 -0
  47. package/dist/fake/app.js +45 -0
  48. package/dist/fake/b2-registration.js +594 -0
  49. package/dist/fake/businessrule.js +242 -0
  50. package/dist/fake/datarule.js +72 -0
  51. package/dist/fake/dictionary.js +108 -0
  52. package/dist/fake/environment.js +30 -0
  53. package/dist/fake/field.js +167 -0
  54. package/dist/fake/form.js +101 -0
  55. package/dist/fake/index.js +121 -0
  56. package/dist/fake/list-view.js +289 -0
  57. package/dist/fake/model.js +136 -0
  58. package/dist/fake/online-js.js +18 -0
  59. package/dist/fake/report.js +253 -0
  60. package/dist/fake/routes.js +47 -0
  61. package/dist/fake/rule-lifecycle.js +37 -0
  62. package/dist/fake/runtime-data.js +367 -0
  63. package/dist/fake/state.js +67 -0
  64. package/dist/fake/workflow.js +364 -0
  65. package/dist/field-change.js +75 -7
  66. package/dist/field-families.js +59 -9
  67. package/dist/form-default.js +0 -0
  68. package/dist/form-layout.js +0 -0
  69. package/dist/form-support.js +0 -0
  70. package/dist/formula-lint.js +0 -0
  71. package/dist/goal-routes.js +16 -16
  72. package/dist/governed-execution.js +0 -0
  73. package/dist/graph.js +29 -29
  74. package/dist/human-summary.js +0 -0
  75. package/dist/identity.js +0 -0
  76. package/dist/intent/baseline.js +0 -0
  77. package/dist/intent/capabilities/bizservice.js +0 -0
  78. package/dist/intent/capabilities/businessrule.js +0 -0
  79. package/dist/intent/capabilities/datarule.js +0 -0
  80. package/dist/intent/capabilities/field.js +0 -0
  81. package/dist/intent/capabilities/form.js +0 -0
  82. package/dist/intent/capabilities/index.js +0 -0
  83. package/dist/intent/capabilities/listview.js +0 -0
  84. package/dist/intent/capabilities/model.js +0 -0
  85. package/dist/intent/capabilities/onlinejs.js +0 -0
  86. package/dist/intent/capabilities/report.js +0 -0
  87. package/dist/intent/capabilities/workflow.js +0 -0
  88. package/dist/intent/capability.js +0 -0
  89. package/dist/intent/cli.js +0 -0
  90. package/dist/intent/compare.js +0 -0
  91. package/dist/intent/compiler.js +0 -0
  92. package/dist/intent/dsl.js +0 -0
  93. package/dist/intent/plan-apply.js +0 -0
  94. package/dist/intent/plan-file.js +0 -0
  95. package/dist/intent/readback.js +0 -0
  96. package/dist/intent/schema.js +0 -0
  97. package/dist/intent/validation.js +0 -0
  98. package/dist/intent/yaml.js +0 -0
  99. package/dist/journal.js +0 -0
  100. package/dist/json-column.js +0 -0
  101. package/dist/lanes/app-contract.js +0 -0
  102. package/dist/lanes/app-coverage.js +0 -0
  103. package/dist/lanes/app.js +0 -0
  104. package/dist/lanes/apply-changes.js +0 -0
  105. package/dist/lanes/b2-registration-contract.js +0 -0
  106. package/dist/lanes/b2-registration-coverage.js +0 -0
  107. package/dist/lanes/b2-registration.js +0 -0
  108. package/dist/lanes/businessrule-contract.js +0 -0
  109. package/dist/lanes/businessrule-coverage.js +0 -0
  110. package/dist/lanes/businessrule.js +0 -0
  111. package/dist/lanes/contract-support.js +0 -0
  112. package/dist/lanes/coverage-declaration.js +0 -0
  113. package/dist/lanes/custom-page.js +0 -0
  114. package/dist/lanes/datarule-contract.js +0 -0
  115. package/dist/lanes/datarule-coverage.js +0 -0
  116. package/dist/lanes/datarule-protocol.js +0 -0
  117. package/dist/lanes/datarule.js +0 -0
  118. package/dist/lanes/dictionary-contract.js +0 -0
  119. package/dist/lanes/dictionary-coverage.js +0 -0
  120. package/dist/lanes/dictionary.js +0 -0
  121. package/dist/lanes/environment-contract.js +0 -0
  122. package/dist/lanes/environment-coverage.js +0 -0
  123. package/dist/lanes/environment.js +0 -0
  124. package/dist/lanes/field-contract.js +0 -0
  125. package/dist/lanes/field-coverage.js +0 -0
  126. package/dist/lanes/field.js +6 -1
  127. package/dist/lanes/folder-contract.js +0 -0
  128. package/dist/lanes/folder-coverage.js +0 -0
  129. package/dist/lanes/folder.js +0 -0
  130. package/dist/lanes/form-contract.js +0 -0
  131. package/dist/lanes/form-coverage.js +0 -0
  132. package/dist/lanes/form.js +0 -0
  133. package/dist/lanes/lane-ids.js +0 -0
  134. package/dist/lanes/list-view-contract.js +0 -0
  135. package/dist/lanes/list-view-coverage.js +0 -0
  136. package/dist/lanes/list-view-shapes.js +0 -0
  137. package/dist/lanes/list-view.js +0 -0
  138. package/dist/lanes/meta-contract.js +0 -0
  139. package/dist/lanes/meta.js +6 -0
  140. package/dist/lanes/model-contract.js +0 -0
  141. package/dist/lanes/model-coverage.js +0 -0
  142. package/dist/lanes/model.js +4 -2
  143. package/dist/lanes/online-js-contract.js +0 -0
  144. package/dist/lanes/online-js-coverage.js +0 -0
  145. package/dist/lanes/online-js.js +0 -0
  146. package/dist/lanes/org-tree.js +0 -0
  147. package/dist/lanes/organization.js +0 -0
  148. package/dist/lanes/report-contract.js +0 -0
  149. package/dist/lanes/report-coverage.js +0 -0
  150. package/dist/lanes/report.js +0 -0
  151. package/dist/lanes/rule-graph.js +0 -0
  152. package/dist/lanes/rule-lifecycle-contract.js +0 -0
  153. package/dist/lanes/rule-lifecycle-coverage.js +0 -0
  154. package/dist/lanes/rule-lifecycle.js +0 -0
  155. package/dist/lanes/runtime-data-contract.js +0 -0
  156. package/dist/lanes/runtime-data-coverage.js +0 -0
  157. package/dist/lanes/runtime-data.js +0 -0
  158. package/dist/lanes/workflow-contract.js +0 -0
  159. package/dist/lanes/workflow-coverage.js +0 -0
  160. package/dist/lanes/workflow.js +0 -0
  161. package/dist/model-purge.js +0 -0
  162. package/dist/model-scaffold.js +0 -0
  163. package/dist/omc-core-lazy.js +0 -0
  164. package/dist/online-js-layout.js +0 -0
  165. package/dist/online-js-source.js +28 -28
  166. package/dist/package-tool.js +0 -0
  167. package/dist/package.js +0 -0
  168. package/dist/path-projection.js +0 -0
  169. package/dist/plan.js +0 -0
  170. package/dist/read.js +0 -0
  171. package/dist/recipes/b2-registration.js +0 -0
  172. package/dist/recipes/businessrule.js +0 -0
  173. package/dist/recipes/datarule.js +0 -0
  174. package/dist/recipes/dictionary.js +0 -0
  175. package/dist/recipes/field.js +0 -0
  176. package/dist/recipes/form.js +0 -0
  177. package/dist/recipes/list-view.js +0 -0
  178. package/dist/recipes/model.js +0 -0
  179. package/dist/recipes/online-js.js +0 -0
  180. package/dist/recipes/runtime-data.js +0 -0
  181. package/dist/recipes/shared.js +0 -0
  182. package/dist/recipes/workflow.js +0 -0
  183. package/dist/redact.js +0 -0
  184. package/dist/refusal-guidance.js +0 -0
  185. package/dist/rollback-spec.js +0 -0
  186. package/dist/rollback.js +0 -0
  187. package/dist/rule-support.js +0 -0
  188. package/dist/rule-when.js +0 -0
  189. package/dist/runtime-support.js +0 -0
  190. package/dist/script.js +0 -0
  191. package/dist/server.js +92 -0
  192. package/dist/service-doctor.js +0 -0
  193. package/dist/session-manager.js +0 -0
  194. package/dist/session.js +12 -0
  195. package/dist/skills.js +12 -2
  196. package/dist/sqlite-warning-filter.js +0 -0
  197. package/dist/support.js +0 -0
  198. package/dist/token-cache.js +0 -0
  199. package/dist/tool-types.js +0 -0
  200. package/dist/tools.js +0 -0
  201. package/dist/usage-log.js +0 -0
  202. package/dist/wire.js +0 -0
  203. package/dist/workflow-support.js +0 -0
  204. package/dist/write-lease.js +0 -0
  205. package/dist/write-lock.js +0 -0
  206. package/dist/write.js +0 -0
  207. package/dist/zip.js +0 -0
  208. package/docs/images/omc-nixi/README.md +41 -41
  209. package/docs/omc-introduction.md +851 -851
  210. package/docs/tool-surface-map.md +42 -42
  211. package/package.json +4 -4
  212. package/skills/omc-acceptance-criteria.md +50 -50
  213. package/skills/omc-business-configuration.md +334 -334
  214. package/skills/omc-capabilities.md +214 -214
  215. package/skills/omc-capability-scouting.md +55 -55
  216. package/skills/omc-config-draft-review.md +175 -175
  217. package/skills/omc-five-piece-flow.md +35 -35
  218. package/skills/omc-glossary.md +86 -86
  219. package/skills/omc-refusals.md +127 -127
  220. package/skills/omc-requirement-analysis.md +161 -161
  221. package/skills/omc-requirement-vocabulary.md +61 -61
  222. package/skills/omc-start-here.md +106 -106
  223. package/skills/omc-tool-selection.md +119 -119
  224. package/skills/omc-write-hazards.md +200 -200
  225. package/dist/lanes/organization-coverage.js +0 -27
package/dist/session.js CHANGED
@@ -21,6 +21,13 @@ export class CloudPivotSession {
21
21
  tokenCache;
22
22
  loginResult;
23
23
  version;
24
+ /**
25
+ * Non-fatal login caveats (e.g. the `client` blob in system/config was
26
+ * absent or unreadable, so the token request carried no client_secret).
27
+ * Doctor reports these as WARN so a deployment shape difference never reads
28
+ * as "环境不可达".
29
+ */
30
+ loginNotesValue = [];
24
31
  httpAdapter;
25
32
  fingerprintOf;
26
33
  constructor(environmentName, profile, credential, http, systemConfig = undefined, requestTimeoutMs = defaultRequestTimeoutMs(), tokenCache) {
@@ -101,6 +108,7 @@ export class CloudPivotSession {
101
108
  password: this.credential.password,
102
109
  ...(systemConfig ? { systemConfig } : {}),
103
110
  });
111
+ this.loginNotesValue = authenticator.loginNotes();
104
112
  this.version = detectVersion(systemConfig);
105
113
  this.tokenCache?.save({
106
114
  token: this.loginResult.token,
@@ -115,6 +123,10 @@ export class CloudPivotSession {
115
123
  detectedVersion() {
116
124
  return this.version;
117
125
  }
126
+ /** Non-fatal login caveats; empty when the login was fully nominal. */
127
+ loginNotes() {
128
+ return this.loginNotesValue;
129
+ }
118
130
  token() {
119
131
  if (!this.loginResult)
120
132
  throw new Error("session is not logged in");
package/dist/skills.js CHANGED
@@ -11,6 +11,16 @@ import { fileURLToPath } from "node:url";
11
11
  * makes `git help <concept>` reliable and a docs-site link unreliable.
12
12
  */
13
13
  const skillsDir = join(dirname(fileURLToPath(import.meta.url)), "..", "skills");
14
+ /**
15
+ * Methodology files are read as text on every platform, so normalize the line
16
+ * ending at the read boundary. A Windows checkout (`core.autocrlf`) otherwise
17
+ * adds one byte per line: the `omc help` bodies drift from the golden masters,
18
+ * the context-cost budgets inflate by ~1.2 KB, and every help payload carries
19
+ * stray `\r` into JSON. The shipped bytes are LF; make every host agree.
20
+ */
21
+ function normalizeLineEndings(text) {
22
+ return text.includes("\r\n") ? text.replace(/\r\n/g, "\n") : text;
23
+ }
14
24
  function frontmatterDescription(text) {
15
25
  const match = /^---\r?\n([\s\S]*?)\r?\n---/.exec(text);
16
26
  const line = match?.[1]?.split(/\r?\n/).find((entry) => entry.startsWith("description:"));
@@ -30,7 +40,7 @@ export function listSkills() {
30
40
  const name = file.replace(/\.md$/, "");
31
41
  let description = `OMC methodology: ${name}`;
32
42
  try {
33
- description = frontmatterDescription(readFileSync(join(skillsDir, file), "utf8")) ?? description;
43
+ description = frontmatterDescription(normalizeLineEndings(readFileSync(join(skillsDir, file), "utf8"))) ?? description;
34
44
  }
35
45
  catch {
36
46
  // Unreadable file still lists by name; reading it reports the error.
@@ -46,7 +56,7 @@ export function readSkill(name) {
46
56
  if (entry === undefined)
47
57
  return undefined;
48
58
  try {
49
- return { ...entry, content: readFileSync(join(skillsDir, `${name}.md`), "utf8") };
59
+ return { ...entry, content: normalizeLineEndings(readFileSync(join(skillsDir, `${name}.md`), "utf8")) };
50
60
  }
51
61
  catch {
52
62
  return undefined;
File without changes
package/dist/support.js CHANGED
File without changes
File without changes
File without changes
package/dist/tools.js CHANGED
File without changes
package/dist/usage-log.js CHANGED
File without changes
package/dist/wire.js CHANGED
File without changes
File without changes
File without changes
File without changes
package/dist/write.js CHANGED
File without changes
package/dist/zip.js CHANGED
File without changes
@@ -1,41 +1,41 @@
1
- # 截图占位目录(尼西实战案例)
2
-
3
- `omc-introduction.md` 的「15. 实战一:尼西双表单与流程搭建」章节里引用了 9 张截图。
4
- 把截图按下面文件名放进本目录即可,文档中的占位说明可逐条删除。
5
-
6
- ## 客户源需求(3 张)
7
-
8
- | 文件名 | 内容 |
9
- |---|---|
10
- | `01-requirement-ft-sheet.png` | 客户 Excel 的 `FT` Sheet(字段清单 / 必填 / LotClass 显隐) |
11
- | `02-requirement-fp-sheet.png` | 客户 Excel 的 `FP` Sheet |
12
- | `03-requirement-flow.png` | 客户给的流程图(FT/FP,含 `SubConRootCause=1` 分支) |
13
-
14
- ## 对话截图(6 张)
15
-
16
- | 文件名 | 内容 |
17
- |---|---|
18
- | `04-chat-app-create.png` | 确认新建应用 + `app.create ok` |
19
- | `05-chat-intent-apply.png` | `intent apply` 返回 `DELIVERED` + `equivalent: true`(89 个动作) |
20
- | `06-chat-workflow-role.png` | 流程节点与角色路由(PIC→蔡依涛 / MOS→赵益 / AOSIT / AOSENG) |
21
- | `07-chat-permission-matrix.png` | 节点字段权限矩阵(本节点 + 之前所有节点可见) |
22
- | `08-chat-biz-integration.png` | `service.register` 注册 productType 服务 + `method.test` 返回 `PRODUCT_TYPE=MOS` |
23
- | `09-chat-onlinejs-publish.png` | `onlinejs.compose` 返回 `published: true` |
24
-
25
- ## 替换方式
26
-
27
- 文档里每处占位是:
28
-
29
- ```
30
- > **[截图 01|客户源需求:FT 表单规格]**
31
- > 占位文件:`docs/images/omc-nixi/01-requirement-ft-sheet.png`
32
- > 建议内容:...
33
- ```
34
-
35
- 落地后改成标准图片引用即可:
36
-
37
- ```markdown
38
- ![客户源需求:FT 表单规格](images/omc-nixi/01-requirement-ft-sheet.png)
39
- ```
40
-
41
- 建议截图宽度 ≥ 1200px,避免中文文字模糊。
1
+ # 截图占位目录(尼西实战案例)
2
+
3
+ `omc-introduction.md` 的「15. 实战一:尼西双表单与流程搭建」章节里引用了 9 张截图。
4
+ 把截图按下面文件名放进本目录即可,文档中的占位说明可逐条删除。
5
+
6
+ ## 客户源需求(3 张)
7
+
8
+ | 文件名 | 内容 |
9
+ |---|---|
10
+ | `01-requirement-ft-sheet.png` | 客户 Excel 的 `FT` Sheet(字段清单 / 必填 / LotClass 显隐) |
11
+ | `02-requirement-fp-sheet.png` | 客户 Excel 的 `FP` Sheet |
12
+ | `03-requirement-flow.png` | 客户给的流程图(FT/FP,含 `SubConRootCause=1` 分支) |
13
+
14
+ ## 对话截图(6 张)
15
+
16
+ | 文件名 | 内容 |
17
+ |---|---|
18
+ | `04-chat-app-create.png` | 确认新建应用 + `app.create ok` |
19
+ | `05-chat-intent-apply.png` | `intent apply` 返回 `DELIVERED` + `equivalent: true`(89 个动作) |
20
+ | `06-chat-workflow-role.png` | 流程节点与角色路由(PIC→蔡依涛 / MOS→赵益 / AOSIT / AOSENG) |
21
+ | `07-chat-permission-matrix.png` | 节点字段权限矩阵(本节点 + 之前所有节点可见) |
22
+ | `08-chat-biz-integration.png` | `service.register` 注册 productType 服务 + `method.test` 返回 `PRODUCT_TYPE=MOS` |
23
+ | `09-chat-onlinejs-publish.png` | `onlinejs.compose` 返回 `published: true` |
24
+
25
+ ## 替换方式
26
+
27
+ 文档里每处占位是:
28
+
29
+ ```
30
+ > **[截图 01|客户源需求:FT 表单规格]**
31
+ > 占位文件:`docs/images/omc-nixi/01-requirement-ft-sheet.png`
32
+ > 建议内容:...
33
+ ```
34
+
35
+ 落地后改成标准图片引用即可:
36
+
37
+ ```markdown
38
+ ![客户源需求:FT 表单规格](images/omc-nixi/01-requirement-ft-sheet.png)
39
+ ```
40
+
41
+ 建议截图宽度 ≥ 1200px,避免中文文字模糊。