@milehimikey/em 1.13.1 → 1.14.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 (235) hide show
  1. package/.claude/agents/em-critic.md +26 -0
  2. package/.claude/agents/em-implementer.md +34 -0
  3. package/.claude/agents/em-reviewer.md +31 -0
  4. package/.claude/agents/em-validator.md +27 -0
  5. package/.claude/skills/event-modeling/SKILL.md +50 -11
  6. package/.claude/skills/event-modeling-conform/SKILL.md +1 -1
  7. package/.claude/skills/event-modeling-design/SKILL.md +127 -18
  8. package/.claude/skills/event-modeling-discover/SKILL.md +1 -1
  9. package/.claude/skills/event-modeling-engagement/SKILL.md +192 -0
  10. package/.claude/skills/event-modeling-engagement/reference/engagement.md +143 -0
  11. package/.claude/skills/event-modeling-implement/SKILL.md +1 -1
  12. package/.claude/skills/event-modeling-implement/reference/implement.md +38 -11
  13. package/.claude/skills/event-modeling-review/SKILL.md +2 -2
  14. package/.claude/skills/event-modeling-shared/reference/em-dsl.md +279 -189
  15. package/.claude/skills/event-modeling-shared/reference/operating-principles.md +61 -0
  16. package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +116 -5
  17. package/.claude/skills/event-modeling-shared/templates/constitution.md +18 -1
  18. package/.claude/skills/event-modeling-shared/templates/slice.md +64 -39
  19. package/.claude/skills/event-modeling-shared/templates/state.md +5 -1
  20. package/.claude-plugin/marketplace.json +14 -0
  21. package/README.md +25 -11
  22. package/dist/catalog/apiFirst.d.ts +28 -0
  23. package/dist/catalog/apiFirst.js +49 -0
  24. package/dist/catalog/apiFirst.js.map +1 -0
  25. package/dist/catalog/docJoin.d.ts +13 -0
  26. package/dist/catalog/docJoin.js +11 -0
  27. package/dist/catalog/docJoin.js.map +1 -1
  28. package/dist/catalog/docModelConsistencyValidate.js +44 -4
  29. package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
  30. package/dist/catalog/invariantsValidate.d.ts +4 -0
  31. package/dist/catalog/invariantsValidate.js +102 -0
  32. package/dist/catalog/invariantsValidate.js.map +1 -0
  33. package/dist/catalog/scenarios.d.ts +15 -0
  34. package/dist/catalog/scenarios.js +97 -0
  35. package/dist/catalog/scenarios.js.map +1 -0
  36. package/dist/catalog/sliceDoc.d.ts +8 -0
  37. package/dist/catalog/sliceDoc.js +9 -0
  38. package/dist/catalog/sliceDoc.js.map +1 -1
  39. package/dist/catalog/sliceReadyValidate.d.ts +31 -4
  40. package/dist/catalog/sliceReadyValidate.js +66 -8
  41. package/dist/catalog/sliceReadyValidate.js.map +1 -1
  42. package/dist/catalog/sliceSections.d.ts +55 -0
  43. package/dist/catalog/sliceSections.js +317 -0
  44. package/dist/catalog/sliceSections.js.map +1 -0
  45. package/dist/cli/agentsMd.js +7 -1
  46. package/dist/cli/agentsMd.js.map +1 -1
  47. package/dist/cli/api.d.ts +90 -0
  48. package/dist/cli/api.js +318 -0
  49. package/dist/cli/api.js.map +1 -0
  50. package/dist/cli/ciInit.d.ts +82 -21
  51. package/dist/cli/ciInit.js +468 -64
  52. package/dist/cli/ciInit.js.map +1 -1
  53. package/dist/cli/conformScope.d.ts +28 -0
  54. package/dist/cli/conformScope.js +67 -0
  55. package/dist/cli/conformScope.js.map +1 -1
  56. package/dist/cli/coverage.d.ts +9 -0
  57. package/dist/cli/coverage.js +60 -8
  58. package/dist/cli/coverage.js.map +1 -1
  59. package/dist/cli/defer.d.ts +55 -0
  60. package/dist/cli/defer.js +244 -0
  61. package/dist/cli/defer.js.map +1 -0
  62. package/dist/cli/engagement.d.ts +210 -0
  63. package/dist/cli/engagement.js +444 -0
  64. package/dist/cli/engagement.js.map +1 -0
  65. package/dist/cli/engagementFile.d.ts +86 -0
  66. package/dist/cli/engagementFile.js +255 -0
  67. package/dist/cli/engagementFile.js.map +1 -0
  68. package/dist/cli/metrics.d.ts +10 -0
  69. package/dist/cli/metrics.js +49 -1
  70. package/dist/cli/metrics.js.map +1 -1
  71. package/dist/cli/pluginPin.d.ts +55 -0
  72. package/dist/cli/pluginPin.js +188 -0
  73. package/dist/cli/pluginPin.js.map +1 -0
  74. package/dist/cli/ratify.d.ts +27 -2
  75. package/dist/cli/ratify.js +112 -13
  76. package/dist/cli/ratify.js.map +1 -1
  77. package/dist/cli/reratify.d.ts +4 -2
  78. package/dist/cli/reratify.js +41 -16
  79. package/dist/cli/reratify.js.map +1 -1
  80. package/dist/cli/scopeInputs.d.ts +48 -0
  81. package/dist/cli/scopeInputs.js +176 -0
  82. package/dist/cli/scopeInputs.js.map +1 -0
  83. package/dist/cli/skillCheck.d.ts +15 -1
  84. package/dist/cli/skillCheck.js +22 -1
  85. package/dist/cli/skillCheck.js.map +1 -1
  86. package/dist/cli/skillDirs.d.ts +5 -0
  87. package/dist/cli/skillDirs.js +13 -1
  88. package/dist/cli/skillDirs.js.map +1 -1
  89. package/dist/cli/skillSync.d.ts +4 -0
  90. package/dist/cli/skillSync.js +23 -0
  91. package/dist/cli/skillSync.js.map +1 -1
  92. package/dist/cli/sliceNew.d.ts +11 -7
  93. package/dist/cli/sliceNew.js +91 -18
  94. package/dist/cli/sliceNew.js.map +1 -1
  95. package/dist/cli/sliceSync.d.ts +50 -0
  96. package/dist/cli/sliceSync.js +170 -0
  97. package/dist/cli/sliceSync.js.map +1 -0
  98. package/dist/cli/status.d.ts +24 -1
  99. package/dist/cli/status.js +20 -1
  100. package/dist/cli/status.js.map +1 -1
  101. package/dist/cli/systemInputs.d.ts +53 -10
  102. package/dist/cli/systemInputs.js +186 -11
  103. package/dist/cli/systemInputs.js.map +1 -1
  104. package/dist/cli/upgrade.d.ts +16 -3
  105. package/dist/cli/upgrade.js +366 -30
  106. package/dist/cli/upgrade.js.map +1 -1
  107. package/dist/cli/usageLog.d.ts +4 -2
  108. package/dist/cli/usageLog.js +4 -2
  109. package/dist/cli/usageLog.js.map +1 -1
  110. package/dist/cli.js +599 -94
  111. package/dist/cli.js.map +1 -1
  112. package/dist/emit/api.d.ts +29 -0
  113. package/dist/emit/api.js +220 -0
  114. package/dist/emit/api.js.map +1 -0
  115. package/dist/emit/apiCheckJson.d.ts +3 -0
  116. package/dist/emit/apiCheckJson.js +21 -0
  117. package/dist/emit/apiCheckJson.js.map +1 -0
  118. package/dist/emit/codeownersJson.d.ts +3 -0
  119. package/dist/emit/codeownersJson.js +19 -0
  120. package/dist/emit/codeownersJson.js.map +1 -0
  121. package/dist/emit/diffJson.d.ts +1 -1
  122. package/dist/emit/diffJson.js +8 -1
  123. package/dist/emit/diffJson.js.map +1 -1
  124. package/dist/emit/engagementJson.d.ts +8 -0
  125. package/dist/emit/engagementJson.js +46 -0
  126. package/dist/emit/engagementJson.js.map +1 -0
  127. package/dist/emit/glossaryJson.d.ts +1 -1
  128. package/dist/emit/glossaryJson.js +4 -1
  129. package/dist/emit/glossaryJson.js.map +1 -1
  130. package/dist/emit/json.d.ts +17 -1
  131. package/dist/emit/json.js +30 -1
  132. package/dist/emit/json.js.map +1 -1
  133. package/dist/emit/metricsJson.d.ts +1 -1
  134. package/dist/emit/metricsJson.js +4 -1
  135. package/dist/emit/metricsJson.js.map +1 -1
  136. package/dist/emit/queryJson.d.ts +1 -1
  137. package/dist/emit/queryJson.js +7 -1
  138. package/dist/emit/queryJson.js.map +1 -1
  139. package/dist/emit/scopeJson.d.ts +12 -0
  140. package/dist/emit/scopeJson.js +26 -0
  141. package/dist/emit/scopeJson.js.map +1 -0
  142. package/dist/emit/skillCheckJson.d.ts +3 -2
  143. package/dist/emit/skillCheckJson.js +10 -2
  144. package/dist/emit/skillCheckJson.js.map +1 -1
  145. package/dist/emit/statusJson.d.ts +1 -1
  146. package/dist/emit/statusJson.js +15 -1
  147. package/dist/emit/statusJson.js.map +1 -1
  148. package/dist/emit/systemJson.d.ts +15 -8
  149. package/dist/emit/systemJson.js +28 -13
  150. package/dist/emit/systemJson.js.map +1 -1
  151. package/dist/emit/validateJson.d.ts +3 -3
  152. package/dist/emit/validateJson.js +10 -4
  153. package/dist/emit/validateJson.js.map +1 -1
  154. package/dist/mcp/server.d.ts +1 -1
  155. package/dist/mcp/server.js +163 -31
  156. package/dist/mcp/server.js.map +1 -1
  157. package/dist/model/diff.d.ts +4 -1
  158. package/dist/model/diff.js +44 -8
  159. package/dist/model/diff.js.map +1 -1
  160. package/dist/model/glossary.d.ts +2 -0
  161. package/dist/model/glossary.js +1 -0
  162. package/dist/model/glossary.js.map +1 -1
  163. package/dist/model/model.d.ts +55 -2
  164. package/dist/model/model.js +57 -0
  165. package/dist/model/model.js.map +1 -1
  166. package/dist/model/qualifiedRef.d.ts +18 -0
  167. package/dist/model/qualifiedRef.js +26 -0
  168. package/dist/model/qualifiedRef.js.map +1 -1
  169. package/dist/model/queryIndex.d.ts +9 -1
  170. package/dist/model/queryIndex.js +18 -2
  171. package/dist/model/queryIndex.js.map +1 -1
  172. package/dist/model/rules.d.ts +143 -2
  173. package/dist/model/rules.js +162 -3
  174. package/dist/model/rules.js.map +1 -1
  175. package/dist/model/validate.d.ts +40 -0
  176. package/dist/model/validate.js +147 -1
  177. package/dist/model/validate.js.map +1 -1
  178. package/dist/parser/ast.d.ts +31 -3
  179. package/dist/parser/parser.js +148 -14
  180. package/dist/parser/parser.js.map +1 -1
  181. package/dist/query/format.js +1 -1
  182. package/dist/query/format.js.map +1 -1
  183. package/dist/query/verbs.d.ts +6 -0
  184. package/dist/query/verbs.js +6 -2
  185. package/dist/query/verbs.js.map +1 -1
  186. package/dist/system/adaptation.d.ts +14 -0
  187. package/dist/system/adaptation.js +49 -0
  188. package/dist/system/adaptation.js.map +1 -0
  189. package/dist/system/codeowners.d.ts +77 -0
  190. package/dist/system/codeowners.js +242 -0
  191. package/dist/system/codeowners.js.map +1 -0
  192. package/dist/system/manifest.d.ts +10 -5
  193. package/dist/system/manifest.js +54 -26
  194. package/dist/system/manifest.js.map +1 -1
  195. package/dist/system/migrateManifest.d.ts +28 -0
  196. package/dist/system/migrateManifest.js +155 -0
  197. package/dist/system/migrateManifest.js.map +1 -0
  198. package/dist/system/scope.d.ts +46 -0
  199. package/dist/system/scope.js +132 -0
  200. package/dist/system/scope.js.map +1 -0
  201. package/dist/system/verify.d.ts +50 -13
  202. package/dist/system/verify.js +179 -58
  203. package/dist/system/verify.js.map +1 -1
  204. package/dist/templates.d.ts +2 -2
  205. package/dist/templates.js +23 -2
  206. package/dist/templates.js.map +1 -1
  207. package/package.json +5 -2
  208. package/plugin/.claude-plugin/plugin.json +18 -0
  209. package/plugin/agents/em-critic.md +27 -0
  210. package/plugin/agents/em-implementer.md +35 -0
  211. package/plugin/agents/em-reviewer.md +32 -0
  212. package/plugin/agents/em-validator.md +28 -0
  213. package/plugin/shared/reference/em-dsl.md +871 -0
  214. package/plugin/shared/reference/methodology.md +329 -0
  215. package/plugin/shared/reference/operating-principles.md +222 -0
  216. package/plugin/shared/reference/slice-doc-schema.md +574 -0
  217. package/plugin/shared/templates/conformance-report.md +85 -0
  218. package/plugin/shared/templates/constitution.md +136 -0
  219. package/plugin/shared/templates/model-readme.md +46 -0
  220. package/plugin/shared/templates/slice.md +251 -0
  221. package/plugin/shared/templates/state.md +77 -0
  222. package/plugin/skills/conform/SKILL.md +93 -0
  223. package/plugin/skills/conform/reference/conform.md +428 -0
  224. package/plugin/skills/design/SKILL.md +298 -0
  225. package/plugin/skills/discover/SKILL.md +90 -0
  226. package/plugin/skills/discover/reference/extract.md +147 -0
  227. package/plugin/skills/engagement/SKILL.md +193 -0
  228. package/plugin/skills/engagement/reference/engagement.md +144 -0
  229. package/plugin/skills/event-modeling/SKILL.md +132 -0
  230. package/plugin/skills/implement/SKILL.md +61 -0
  231. package/plugin/skills/implement/reference/implement.md +439 -0
  232. package/plugin/skills/review/SKILL.md +74 -0
  233. package/dist/emit/typespec.d.ts +0 -26
  234. package/dist/emit/typespec.js +0 -356
  235. package/dist/emit/typespec.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { MetricsResult } from "../cli/metrics.js";
2
- export declare const METRICS_SCHEMA_VERSION = "1.0";
2
+ export declare const METRICS_SCHEMA_VERSION = "1.1";
3
3
  /** Build the `em metrics <file> --from <rev> [--to <rev>] --json` document. Pretty-printed
4
4
  * (2-space), no trailing newline — the caller adds it, same convention as buildStatusJson/
5
5
  * buildFreshnessJson. No timestamps or other non-deterministic fields: byte-identical for the
@@ -6,7 +6,9 @@
6
6
  // server.ts), so there is exactly one schema for this surface (MCP parity).
7
7
  import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
8
8
  // 1.0 (MIL-170): initial shape.
9
- export const METRICS_SCHEMA_VERSION = "1.0";
9
+ // 1.1 (MIL-240): `seamCrossings: {count, commits}` - commits in the range whose change set altered
10
+ // a producer's public surface (or contract file) and a consuming model's design dir together.
11
+ export const METRICS_SCHEMA_VERSION = "1.1";
10
12
  /** Build the `em metrics <file> --from <rev> [--to <rev>] --json` document. Pretty-printed
11
13
  * (2-space), no trailing newline — the caller adds it, same convention as buildStatusJson/
12
14
  * buildFreshnessJson. No timestamps or other non-deterministic fields: byte-identical for the
@@ -20,6 +22,7 @@ export function buildMetricsJson(result) {
20
22
  ratificationTurnaround: result.ratificationTurnaround,
21
23
  conformCadence: result.conformCadence,
22
24
  statusVsReality: result.statusVsReality,
25
+ seamCrossings: result.seamCrossings,
23
26
  readinessGateEffect: result.readinessGateEffect,
24
27
  };
25
28
  return JSON.stringify(doc, null, 2);
@@ -1 +1 @@
1
- {"version":3,"file":"metricsJson.js","sourceRoot":"","sources":["../../src/emit/metricsJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8FAA8F;AAC9F,+FAA+F;AAC/F,gGAAgG;AAChG,0FAA0F;AAC1F,4EAA4E;AAG5E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;;uCAGuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,MAAM,GAAG,GAAG;QACV,oBAAoB,EAAE,sBAAsB;QAC5C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;KAChD,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"metricsJson.js","sourceRoot":"","sources":["../../src/emit/metricsJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,8FAA8F;AAC9F,+FAA+F;AAC/F,gGAAgG;AAChG,0FAA0F;AAC1F,4EAA4E;AAG5E,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,mGAAmG;AACnG,8FAA8F;AAC9F,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C;;;uCAGuC;AACvC,MAAM,UAAU,gBAAgB,CAAC,MAAqB;IACpD,MAAM,GAAG,GAAG;QACV,oBAAoB,EAAE,sBAAsB;QAC5C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;QACrD,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,eAAe,EAAE,MAAM,CAAC,eAAe;QACvC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;KAChD,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare const QUERY_SCHEMA_VERSION = "1.1";
1
+ export declare const QUERY_SCHEMA_VERSION = "1.2";
2
2
  /** Build the `em query <verb> ... --json` document. Pretty-printed (2-space), no trailing
3
3
  * newline — the caller adds it, same convention as every other `em` JSON surface. No
4
4
  * timestamps or other non-deterministic fields: byte-identical for the same models/args
@@ -12,7 +12,13 @@ import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
12
12
  // edge, distinct from an ordinary `from`-derived `event->view` connection (model/queryIndex.ts).
13
13
  // `downstream`/`upstream` results crossing one carry `via: "loops-to"`. Additive-only (new enum
14
14
  // value on an existing string field, not a new key).
15
- export const QUERY_SCHEMA_VERSION = "1.1";
15
+ // 1.2 (1.14.0 release): ONE bump for the release.
16
+ // - MIL-237: `field` results gain `optional: boolean` (the field's `name?: Type` marker).
17
+ // - MIL-265: `invariant` results gain `rule` (the model's rule sentence, null for a
18
+ // doc-declared id) and `declaredIn` (`"model"` | `"doc"`) — model-declared ids are found
19
+ // first, doc-body extraction is the fallback.
20
+ // Additive-only.
21
+ export const QUERY_SCHEMA_VERSION = "1.2";
16
22
  /** Build the `em query <verb> ... --json` document. Pretty-printed (2-space), no trailing
17
23
  * newline — the caller adds it, same convention as every other `em` JSON surface. No
18
24
  * timestamps or other non-deterministic fields: byte-identical for the same models/args
@@ -1 +1 @@
1
- {"version":3,"file":"queryJson.js","sourceRoot":"","sources":["../../src/emit/queryJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,uFAAuF;AACvF,gGAAgG;AAChG,+FAA+F;AAC/F,iGAAiG;AACjG,iGAAiG;AACjG,yDAAyD;AAEzD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,6DAA6D;AAC7D,4FAA4F;AAC5F,iGAAiG;AACjG,gGAAgG;AAChG,qDAAqD;AACrD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;0DAG0D;AAC1D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAe,EAAE,IAA6B,EAAE,OAAkB;IAC7G,MAAM,GAAG,GAAG;QACV,kBAAkB,EAAE,oBAAoB;QACxC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,KAAK;QACL,4FAA4F;QAC5F,wFAAwF;QACxF,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO;KACR,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"queryJson.js","sourceRoot":"","sources":["../../src/emit/queryJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,uFAAuF;AACvF,gGAAgG;AAChG,+FAA+F;AAC/F,iGAAiG;AACjG,iGAAiG;AACjG,yDAAyD;AAEzD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,6DAA6D;AAC7D,4FAA4F;AAC5F,iGAAiG;AACjG,gGAAgG;AAChG,qDAAqD;AACrD,kDAAkD;AAClD,2FAA2F;AAC3F,qFAAqF;AACrF,4FAA4F;AAC5F,iDAAiD;AACjD,iBAAiB;AACjB,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAE1C;;;0DAG0D;AAC1D,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAe,EAAE,IAA6B,EAAE,OAAkB;IAC7G,MAAM,GAAG,GAAG;QACV,kBAAkB,EAAE,oBAAoB;QACxC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,KAAK;QACL,4FAA4F;QAC5F,wFAAwF;QACxF,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO;KACR,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { ScopeReport } from "../system/scope.js";
2
+ export declare const SCOPE_SCHEMA_VERSION = "1.0";
3
+ export interface ScopeJsonFacts {
4
+ /** The `--base` revision as given, or null when only `--staged` was asked for. */
5
+ base: string | null;
6
+ staged: boolean;
7
+ /** Repo-relative changed paths after the exemption (what the rules saw), sorted. */
8
+ changedPaths: string[];
9
+ /** Repo-relative paths dropped because every commit touching them carries `Em-Upgrade:`. */
10
+ exemptPaths: string[];
11
+ }
12
+ export declare function buildScopeJson(facts: ScopeJsonFacts, report: ScopeReport): string;
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: MIT
2
+ // Builds the `em system scope --json` document (MIL-240): a versioned envelope around
3
+ // `ScopeReport` (src/system/scope.ts) plus the change-set facts the CLI gathered. Same
4
+ // conventions as systemJson.ts: pretty-printed 2-space, no trailing newline (the caller adds
5
+ // it), no timestamps, no absolute paths - byte-identical for the same repository state and the
6
+ // exact document the MCP `system_scope` tool returns.
7
+ import { serializeDiagnostic } from "../model/validate.js";
8
+ import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
9
+ // 1.0 (MIL-240): initial shape.
10
+ export const SCOPE_SCHEMA_VERSION = "1.0";
11
+ export function buildScopeJson(facts, report) {
12
+ const doc = {
13
+ scopeSchemaVersion: SCOPE_SCHEMA_VERSION,
14
+ generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
15
+ base: facts.base,
16
+ staged: facts.staged,
17
+ changedPaths: facts.changedPaths,
18
+ exemptPaths: facts.exemptPaths,
19
+ models: report.touched,
20
+ unmappedPaths: report.unmapped,
21
+ crossings: report.crossings,
22
+ diagnostics: report.diagnostics.map((d) => ({ file: d.file, ...serializeDiagnostic(d) })),
23
+ };
24
+ return JSON.stringify(doc, null, 2);
25
+ }
26
+ //# sourceMappingURL=scopeJson.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeJson.js","sourceRoot":"","sources":["../../src/emit/scopeJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,sFAAsF;AACtF,uFAAuF;AACvF,6FAA6F;AAC7F,+FAA+F;AAC/F,sDAAsD;AAEtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAY1C,MAAM,UAAU,cAAc,CAAC,KAAqB,EAAE,MAAmB;IACvE,MAAM,GAAG,GAAG;QACV,kBAAkB,EAAE,oBAAoB;QACxC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,MAAM,EAAE,MAAM,CAAC,OAAO;QACtB,aAAa,EAAE,MAAM,CAAC,QAAQ;QAC9B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -1,5 +1,6 @@
1
+ import type { PluginDeclaration } from "../cli/pluginPin.js";
1
2
  import { SkillCheckResult } from "../cli/skillCheck.js";
2
- export declare const SKILL_CHECK_SCHEMA_VERSION = "1.0";
3
+ export declare const SKILL_CHECK_SCHEMA_VERSION = "1.1";
3
4
  /** Build the `em skill check --json` document. Pretty-printed (2-space), no trailing newline —
4
5
  * the caller adds it, same convention as buildLedgerJson/buildDiffJson/buildGlossaryJson. */
5
- export declare function buildSkillCheckJson(result: SkillCheckResult, vendoredDir: string, installedVersion: string): string;
6
+ export declare function buildSkillCheckJson(result: SkillCheckResult, vendoredDir: string, installedVersion: string, plugin?: PluginDeclaration | null): string;
@@ -5,7 +5,11 @@
5
5
  // both the npm package and every other command's own schema.
6
6
  import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
7
7
  // 1.0: initial shape (MIL-93).
8
- export const SKILL_CHECK_SCHEMA_VERSION = "1.0";
8
+ // 1.1 (MIL-231): top-level `plugin` ({declared, name, ref, enabled}, null when the repo does not
9
+ // declare the em plugin); findings gain pluginName / pluginRef / installCommands (null when
10
+ // unused by `code`); new finding codes plugin-pin-mismatch, plugin-not-enabled,
11
+ // plugin-registered-at-different-ref, plugin-not-installed-locally.
12
+ export const SKILL_CHECK_SCHEMA_VERSION = "1.1";
9
13
  /** `SkillCheckFinding` with every optional field present, explicit `null` when unused by `code`. */
10
14
  function serializeFinding(f) {
11
15
  return {
@@ -14,16 +18,20 @@ function serializeFinding(f) {
14
18
  vendoredStamp: f.vendoredStamp ?? null,
15
19
  installedVersion: f.installedVersion ?? null,
16
20
  driftedFiles: f.driftedFiles ?? null,
21
+ pluginName: f.pluginName ?? null,
22
+ pluginRef: f.pluginRef ?? null,
23
+ installCommands: f.installCommands ?? null,
17
24
  };
18
25
  }
19
26
  /** Build the `em skill check --json` document. Pretty-printed (2-space), no trailing newline —
20
27
  * the caller adds it, same convention as buildLedgerJson/buildDiffJson/buildGlossaryJson. */
21
- export function buildSkillCheckJson(result, vendoredDir, installedVersion) {
28
+ export function buildSkillCheckJson(result, vendoredDir, installedVersion, plugin = null) {
22
29
  const doc = {
23
30
  skillCheckSchemaVersion: SKILL_CHECK_SCHEMA_VERSION,
24
31
  generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
25
32
  vendoredDir,
26
33
  installedVersion,
34
+ plugin: plugin ? { declared: true, name: plugin.name, ref: plugin.ref, enabled: plugin.enabled } : null,
27
35
  findings: result.findings.map(serializeFinding),
28
36
  ok: result.ok,
29
37
  };
@@ -1 +1 @@
1
- {"version":3,"file":"skillCheckJson.js","sourceRoot":"","sources":["../../src/emit/skillCheckJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,kFAAkF;AAClF,2FAA2F;AAC3F,6DAA6D;AAG7D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,+BAA+B;AAC/B,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAYhD,oGAAoG;AACpG,SAAS,gBAAgB,CAAC,CAAoB;IAC5C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;QACtC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QAC5C,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;KACrC,CAAC;AACJ,CAAC;AAED;8FAC8F;AAC9F,MAAM,UAAU,mBAAmB,CAAC,MAAwB,EAAE,WAAmB,EAAE,gBAAwB;IACzG,MAAM,GAAG,GAAG;QACV,uBAAuB,EAAE,0BAA0B;QACnD,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,WAAW;QACX,gBAAgB;QAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC/C,EAAE,EAAE,MAAM,CAAC,EAAE;KACd,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"skillCheckJson.js","sourceRoot":"","sources":["../../src/emit/skillCheckJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,4FAA4F;AAC5F,kFAAkF;AAClF,2FAA2F;AAC3F,6DAA6D;AAI7D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,+BAA+B;AAC/B,iGAAiG;AACjG,gGAAgG;AAChG,oFAAoF;AACpF,wEAAwE;AACxE,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC;AAYhD,oGAAoG;AACpG,SAAS,gBAAgB,CAAC,CAAoB;IAC5C,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,IAAI;QACtC,gBAAgB,EAAE,CAAC,CAAC,gBAAgB,IAAI,IAAI;QAC5C,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI;QACpC,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,IAAI;QAChC,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;QAC9B,eAAe,EAAE,CAAC,CAAC,eAAe,IAAI,IAAI;KAC3C,CAAC;AACJ,CAAC;AAED;8FAC8F;AAC9F,MAAM,UAAU,mBAAmB,CACjC,MAAwB,EACxB,WAAmB,EACnB,gBAAwB,EACxB,SAAmC,IAAI;IAEvC,MAAM,GAAG,GAAG;QACV,uBAAuB,EAAE,0BAA0B;QACnD,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,WAAW;QACX,gBAAgB;QAChB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI;QACvG,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC/C,EAAE,EAAE,MAAM,CAAC,EAAE;KACd,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { StatusReport } from "../cli/status.js";
2
- export declare const STATUS_SCHEMA_VERSION = "1.7";
2
+ export declare const STATUS_SCHEMA_VERSION = "1.8";
3
3
  /** Build the `em status <files...> --json` document. Pretty-printed (2-space), no trailing
4
4
  * newline — the caller adds it, same convention as buildCoverageJson/buildLedgerJson. No
5
5
  * timestamps or other non-deterministic fields: byte-identical for the same models/git state
@@ -35,7 +35,18 @@ import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
35
35
  // 1.7 (MIL-219): a new top-level `emVersion` array — one entry per input file whose state file
36
36
  // resolved: the recorded `Em version:` bullet (null when absent/unknown), the em actually
37
37
  // running, and whether the recorded one is behind. See ../cli/status.ts's EmVersionStatusEntry.
38
- export const STATUS_SCHEMA_VERSION = "1.7";
38
+ // 1.8 (MIL-239): a new top-level `system` — `{ manifest, consumerNotAdapted }` for the nearest
39
+ // `system.yaml` above the first input file (the number of `consumes` bindings failing the
40
+ // consumer-adaptation check), or `null` when no manifest is found. See ../cli/status.ts's
41
+ // StatusReport.system.
42
+ // - MIL-238: a new top-level `publicSlicesUnconfirmed` (number) — public-touching slices
43
+ // (owning a `public` command/event/view) at ready-to-implement/implemented whose doc records
44
+ // neither `meaningConfirmed: true` nor a `contractChange:` (the API-first sign-off `em slice
45
+ // ratify`/`reratify` write). See ../cli/status.ts's StatusReport.publicSlicesUnconfirmed.
46
+ // - MIL-268: a new top-level `engagements` — `{ open, slugs }`: the engagement files
47
+ // (`<modelDir>/engagements/<slug>.md`) whose frontmatter says `status: open`, beside every
48
+ // input model, slugs sorted. See ../cli/status.ts's StatusReport.engagements.
49
+ export const STATUS_SCHEMA_VERSION = "1.8";
39
50
  /** Build the `em status <files...> --json` document. Pretty-printed (2-space), no trailing
40
51
  * newline — the caller adds it, same convention as buildCoverageJson/buildLedgerJson. No
41
52
  * timestamps or other non-deterministic fields: byte-identical for the same models/git state
@@ -54,6 +65,9 @@ export function buildStatusJson(report) {
54
65
  modelVersion: report.modelVersion,
55
66
  emVersion: report.emVersion,
56
67
  owners: report.owners,
68
+ system: report.system,
69
+ publicSlicesUnconfirmed: report.publicSlicesUnconfirmed,
70
+ engagements: report.engagements,
57
71
  // Doc-join diagnostics (binding-missing-file/frontmatter-invalid), tagged with the file
58
72
  // each concerns — same serialized diagnostic shape em export/em diff use (severity, code,
59
73
  // message, line, refs), plus `file` since this is a multi-model surface.
@@ -1 +1 @@
1
- {"version":3,"file":"statusJson.js","sourceRoot":"","sources":["../../src/emit/statusJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,uFAAuF;AACvF,2FAA2F;AAC3F,4FAA4F;AAC5F,6FAA6F;AAC7F,mFAAmF;AAGnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,yFAAyF;AACzF,8FAA8F;AAC9F,6FAA6F;AAC7F,2FAA2F;AAC3F,6EAA6E;AAC7E,8FAA8F;AAC9F,+FAA+F;AAC/F,iGAAiG;AACjG,+EAA+E;AAC/E,yFAAyF;AACzF,6FAA6F;AAC7F,8FAA8F;AAC9F,mEAAmE;AACnE,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,6FAA6F;AAC7F,6EAA6E;AAC7E,mGAAmG;AACnG,yFAAyF;AACzF,+FAA+F;AAC/F,4FAA4F;AAC5F,kDAAkD;AAClD,+FAA+F;AAC/F,0FAA0F;AAC1F,gGAAgG;AAChG,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;mDAGmD;AACnD,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,wFAAwF;QACxF,0FAA0F;QAC1F,yEAAyE;QACzE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"statusJson.js","sourceRoot":"","sources":["../../src/emit/statusJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,0FAA0F;AAC1F,uFAAuF;AACvF,2FAA2F;AAC3F,4FAA4F;AAC5F,6FAA6F;AAC7F,mFAAmF;AAGnF,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,gCAAgC;AAChC,yFAAyF;AACzF,8FAA8F;AAC9F,6FAA6F;AAC7F,2FAA2F;AAC3F,6EAA6E;AAC7E,8FAA8F;AAC9F,+FAA+F;AAC/F,iGAAiG;AACjG,+EAA+E;AAC/E,yFAAyF;AACzF,6FAA6F;AAC7F,8FAA8F;AAC9F,mEAAmE;AACnE,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,+FAA+F;AAC/F,6FAA6F;AAC7F,6EAA6E;AAC7E,mGAAmG;AACnG,yFAAyF;AACzF,+FAA+F;AAC/F,4FAA4F;AAC5F,kDAAkD;AAClD,+FAA+F;AAC/F,0FAA0F;AAC1F,gGAAgG;AAChG,+FAA+F;AAC/F,0FAA0F;AAC1F,0FAA0F;AAC1F,uBAAuB;AACvB,0FAA0F;AAC1F,gGAAgG;AAChG,gGAAgG;AAChG,6FAA6F;AAC7F,sFAAsF;AACtF,8FAA8F;AAC9F,iFAAiF;AACjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;mDAGmD;AACnD,MAAM,UAAU,eAAe,CAAC,MAAoB;IAClD,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;QACvD,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,wFAAwF;QACxF,0FAA0F;QAC1F,yEAAyE;QACzE,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -1,8 +1,15 @@
1
- import { SystemReport } from "../system/verify.js";
2
- export declare const SYSTEM_SCHEMA_VERSION = "1.0";
3
- /** Build the `em system <manifest> --json` document. Pretty-printed (2-space), no trailing
4
- * newline — the caller adds it, same convention as every other `em` JSON surface. No
5
- * timestamps or other non-deterministic fields: byte-identical for the same manifest + models
6
- * (the project-wide "deterministic core" constraint). `manifestPath` is echoed as given on the
7
- * command line (not resolved), same as `em export`'s `source.path`. */
8
- export declare function buildSystemJson(manifestPath: string, manifestText: string, report: SystemReport): string;
1
+ import { SystemDiscovery, SystemReport } from "../system/verify.js";
2
+ export declare const SYSTEM_SCHEMA_VERSION = "2.0";
3
+ /** Where the system came from — exactly one of the two is non-null. */
4
+ export interface SystemJsonSource {
5
+ manifestPath: string | null;
6
+ manifestText: string | null;
7
+ discovery: SystemDiscovery | null;
8
+ }
9
+ /** Build the `em system --json` document. Pretty-printed (2-space), no trailing newline — the
10
+ * caller adds it, same convention as every other `em` JSON surface. No timestamps or other
11
+ * non-deterministic fields: byte-identical for the same manifest (or discovered files) +
12
+ * models (the project-wide "deterministic core" constraint). `manifestPath` and
13
+ * `discovery.root` are echoed as given/reached from the command line (not resolved), same as
14
+ * `em export`'s `source.path`. */
15
+ export declare function buildSystemJson(source: SystemJsonSource, report: SystemReport): string;
@@ -1,5 +1,5 @@
1
1
  // SPDX-License-Identifier: MIT
2
- // Builds the `em system <manifest> --json` document (MIL-194): a versioned envelope around
2
+ // Builds the `em system [<manifest>|<dir>] --json` document (MIL-194): a versioned envelope around
3
3
  // `SystemReport` (src/system/verify.ts) — the verified seam list, each model's public surface,
4
4
  // and the org-level context map (models as nodes, seams as edges) em-portal 0.4.0 renders.
5
5
  // Same "one versioned envelope over what the builder already computed" convention as
@@ -10,24 +10,39 @@ import { createHash } from "node:crypto";
10
10
  import { serializeDiagnostic } from "../model/validate.js";
11
11
  import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
12
12
  // 1.0 (MIL-194): initial shape — manifest, models, seams, contextMap, diagnostics.
13
- export const SYSTEM_SCHEMA_VERSION = "1.0";
14
- /** Build the `em system <manifest> --json` document. Pretty-printed (2-space), no trailing
15
- * newline — the caller adds it, same convention as every other `em` JSON surface. No
16
- * timestamps or other non-deterministic fields: byte-identical for the same manifest + models
17
- * (the project-wide "deterministic core" constraint). `manifestPath` is echoed as given on the
18
- * command line (not resolved), same as `em export`'s `source.path`. */
19
- export function buildSystemJson(manifestPath, manifestText, report) {
13
+ // 2.0 (MIL-235): seams are declared consumer-side (`consumes` on a translation), so `seams[]`
14
+ // lists every resolved `consumes` binding (then any legacy 1.0 manifest seam) in the same
15
+ // {from, to, fromSlice, toSlice, description, status, diagnostics} shape — `description` is
16
+ // null for a `consumes` binding. `models[].owner` and `contextMap.nodes[].owner` are now
17
+ // `string[]` (the model header's `owner` entries) instead of `string | null`. `manifest` is
18
+ // `null` when the system was discovered (no system.yaml), and the new `discovery: {root,
19
+ // files} | null` (before `diagnostics`) says what was found. Major bump: `owner`'s type changed.
20
+ // - MIL-239 (additive, stays 2.0): `consumer-not-adapted` errors join `diagnostics` (same
21
+ // array), and a new `consumerAdaptation: {checked, notAdapted}` summary sits after
22
+ // `discovery`, before `diagnostics`. Seams carrying the finding have `status: "error"`.
23
+ export const SYSTEM_SCHEMA_VERSION = "2.0";
24
+ /** Build the `em system --json` document. Pretty-printed (2-space), no trailing newline — the
25
+ * caller adds it, same convention as every other `em` JSON surface. No timestamps or other
26
+ * non-deterministic fields: byte-identical for the same manifest (or discovered files) +
27
+ * models (the project-wide "deterministic core" constraint). `manifestPath` and
28
+ * `discovery.root` are echoed as given/reached from the command line (not resolved), same as
29
+ * `em export`'s `source.path`. */
30
+ export function buildSystemJson(source, report) {
20
31
  const doc = {
21
32
  systemSchemaVersion: SYSTEM_SCHEMA_VERSION,
22
33
  generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
23
- manifest: {
24
- path: manifestPath,
25
- sha256: createHash("sha256").update(manifestText, "utf8").digest("hex"),
26
- name: report.name,
27
- },
34
+ manifest: source.manifestPath === null
35
+ ? null
36
+ : {
37
+ path: source.manifestPath,
38
+ sha256: createHash("sha256").update(source.manifestText ?? "", "utf8").digest("hex"),
39
+ name: report.name,
40
+ },
28
41
  models: report.models,
29
42
  seams: report.seams,
30
43
  contextMap: report.contextMap,
44
+ discovery: source.discovery,
45
+ consumerAdaptation: report.consumerAdaptation,
31
46
  // Same serialized diagnostic shape em export/em diff use (severity, code, message, line,
32
47
  // refs), plus `file` since this is a multi-model surface (`em status --json`'s convention):
33
48
  // manifest-level findings point at the manifest, per-element ones at the model's source.
@@ -1 +1 @@
1
- {"version":3,"file":"systemJson.js","sourceRoot":"","sources":["../../src/emit/systemJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,2FAA2F;AAC3F,+FAA+F;AAC/F,2FAA2F;AAC3F,qFAAqF;AACrF,yFAAyF;AACzF,8FAA8F;AAC9F,kGAAkG;AAElG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,mFAAmF;AACnF,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAE3C;;;;wEAIwE;AACxE,MAAM,UAAU,eAAe,CAAC,YAAoB,EAAE,YAAoB,EAAE,MAAoB;IAC9F,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,QAAQ,EAAE;YACR,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;YACvE,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB;QACD,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,yFAAyF;QACzF,4FAA4F;QAC5F,yFAAyF;QACzF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
1
+ {"version":3,"file":"systemJson.js","sourceRoot":"","sources":["../../src/emit/systemJson.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,mGAAmG;AACnG,+FAA+F;AAC/F,2FAA2F;AAC3F,qFAAqF;AACrF,yFAAyF;AACzF,8FAA8F;AAC9F,kGAAkG;AAElG,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,mFAAmF;AACnF,8FAA8F;AAC9F,0FAA0F;AAC1F,4FAA4F;AAC5F,yFAAyF;AACzF,4FAA4F;AAC5F,yFAAyF;AACzF,iGAAiG;AACjG,4FAA4F;AAC5F,uFAAuF;AACvF,4FAA4F;AAC5F,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC;AAS3C;;;;;mCAKmC;AACnC,MAAM,UAAU,eAAe,CAAC,MAAwB,EAAE,MAAoB;IAC5E,MAAM,GAAG,GAAG;QACV,mBAAmB,EAAE,qBAAqB;QAC1C,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,QAAQ,EACN,MAAM,CAAC,YAAY,KAAK,IAAI;YAC1B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC;gBACE,IAAI,EAAE,MAAM,CAAC,YAAY;gBACzB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACpF,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;QACP,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,kBAAkB,EAAE,MAAM,CAAC,kBAAkB;QAC7C,yFAAyF;QACzF,4FAA4F;QAC5F,yFAAyF;QACzF,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC1F,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -8,14 +8,14 @@ export declare const VALIDATE_SCHEMA_VERSION = "1.0";
8
8
  * a model with errors; `ok` mirrors `!hasErrors(diagnostics)`, the same predicate that gates
9
9
  * `em validate`'s exit code. */
10
10
  export declare function buildValidateJson(file: string, diagnostics: Diagnostic[]): string;
11
- export declare const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.1";
11
+ export declare const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.2";
12
12
  /** Build the `em validate <file> --slice-ready <key> --json` document — the machine verdict
13
13
  * replacing the two hand-parsed English sentences ("is ready-to-implement" /
14
- * "is NOT ready-to-implement") plus scraped warning prose. `gates` names each of the 4
14
+ * "is NOT ready-to-implement") plus scraped warning prose. `gates` names each of the 5
15
15
  * conditions individually (see `computeSliceReadyGates`, catalog/sliceReadyValidate.ts);
16
16
  * `null` when `sliceKey` matches no slice in the model (the `slice-ready-unknown-slice` error
17
17
  * case — nothing to gate). `ready` is the same predicate driving `em validate`'s exit code
18
- * for `--slice-ready` (scoped diagnostics empty) — it is the AND of the 4 gates only when
18
+ * for `--slice-ready` (scoped diagnostics empty) — it is the AND of the 5 gates only when
19
19
  * `gates` is non-null AND nothing else concerning this slice is broken (e.g. a plain
20
20
  * both-ends-of-a-flow diagnostic on one of its own elements); `diagnostics` carries that full
21
21
  * scoped list so a consumer sees exactly why, never just the 4 named gates. `continuationOf`
@@ -49,14 +49,20 @@ export function buildValidateJson(file, diagnostics) {
49
49
  // the `gates` above actually verify. `gates` themselves already resolve straight through to the
50
50
  // originating slice's own doc/status (see `computeSliceReadyGates`); this field only explains
51
51
  // why. Additive-only.
52
- export const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.1";
52
+ // 1.2 (MIL-259, 1.14.0): `gates.ratified` — the doc carries a recorded `ratifiedBy`. A
53
+ // ready-to-implement doc without one (e.g. right after `em slice reratify`) is no longer ready:
54
+ // the `slice-ready-not-ratified` error joins the scoped diagnostics. Additive-only.
55
+ // - MIL-266: `slice-ready-structured-section-malformed` (error) can join the scoped diagnostics
56
+ // — a doc whose generated regions or `### Scenario:` blocks don't parse. Diagnostic-only:
57
+ // `gates` is unchanged.
58
+ export const VALIDATE_SLICE_READY_SCHEMA_VERSION = "1.2";
53
59
  /** Build the `em validate <file> --slice-ready <key> --json` document — the machine verdict
54
60
  * replacing the two hand-parsed English sentences ("is ready-to-implement" /
55
- * "is NOT ready-to-implement") plus scraped warning prose. `gates` names each of the 4
61
+ * "is NOT ready-to-implement") plus scraped warning prose. `gates` names each of the 5
56
62
  * conditions individually (see `computeSliceReadyGates`, catalog/sliceReadyValidate.ts);
57
63
  * `null` when `sliceKey` matches no slice in the model (the `slice-ready-unknown-slice` error
58
64
  * case — nothing to gate). `ready` is the same predicate driving `em validate`'s exit code
59
- * for `--slice-ready` (scoped diagnostics empty) — it is the AND of the 4 gates only when
65
+ * for `--slice-ready` (scoped diagnostics empty) — it is the AND of the 5 gates only when
60
66
  * `gates` is non-null AND nothing else concerning this slice is broken (e.g. a plain
61
67
  * both-ends-of-a-flow diagnostic on one of its own elements); `diagnostics` carries that full
62
68
  * scoped list so a consumer sees exactly why, never just the 4 named gates. `continuationOf`
@@ -109,7 +115,7 @@ export function collectMarkers(model, refs, kinds) {
109
115
  if (kinds.public) {
110
116
  const noReader = publicViewsWithoutInModelReader(model);
111
117
  for (const el of model.elements) {
112
- if (el.public && (el.kind === "event" || el.kind === "view")) {
118
+ if (el.public && (el.kind === "command" || el.kind === "event" || el.kind === "view")) {
113
119
  const flag = el.kind === "view" ? noReader.has(el.logicalId) : null;
114
120
  markers.push(entryFor(el, "public", null, flag));
115
121
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validateJson.js","sourceRoot":"","sources":["../../src/emit/validateJson.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validateJson.js","sourceRoot":"","sources":["../../src/emit/validateJson.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
4
4
  * so `em --version`/`em export`'s `generator.version`/this server's version never drift apart. */
5
5
  export declare const SERVER_NAME = "em";
6
6
  export declare const SERVER_VERSION: string;
7
- /** Registers all eighteen MCP tools on a fresh McpServer instance and returns it, unconnected — the
7
+ /** Registers all MCP tools on a fresh McpServer instance and returns it, unconnected — the
8
8
  * caller (src/mcp/main.ts's stdio entry, or a test harness using an in-memory transport)
9
9
  * decides how to connect it. Building the server is a pure, side-effect-free function so tests
10
10
  * can exercise it directly with the SDK's in-memory transport, no child process required. */