@milehimikey/em 1.6.1 → 1.7.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 (105) hide show
  1. package/.claude/skills/event-modeling/SKILL.md +94 -49
  2. package/.claude/skills/event-modeling/reference/conform.md +30 -8
  3. package/.claude/skills/event-modeling/reference/em-dsl.md +194 -73
  4. package/.claude/skills/event-modeling/reference/extract.md +14 -11
  5. package/.claude/skills/event-modeling/reference/implement.md +172 -0
  6. package/.claude/skills/event-modeling/reference/methodology.md +40 -33
  7. package/.claude/skills/event-modeling/templates/conformance-report.md +15 -9
  8. package/.claude/skills/event-modeling/templates/model-readme.md +7 -7
  9. package/.claude/skills/event-modeling/templates/slice.md +73 -7
  10. package/.claude/skills/event-modeling/templates/state.md +7 -6
  11. package/README.md +1 -0
  12. package/dist/catalog/build.d.ts +5 -0
  13. package/dist/catalog/build.js +1 -3
  14. package/dist/catalog/build.js.map +1 -1
  15. package/dist/catalog/classify.d.ts +7 -8
  16. package/dist/catalog/classify.js +7 -8
  17. package/dist/catalog/classify.js.map +1 -1
  18. package/dist/catalog/docJoin.d.ts +39 -0
  19. package/dist/catalog/docJoin.js +86 -0
  20. package/dist/catalog/docJoin.js.map +1 -0
  21. package/dist/catalog/driftSignal.d.ts +16 -0
  22. package/dist/catalog/driftSignal.js +24 -0
  23. package/dist/catalog/driftSignal.js.map +1 -0
  24. package/dist/catalog/frontmatterCoherenceValidate.d.ts +8 -0
  25. package/dist/catalog/frontmatterCoherenceValidate.js +52 -0
  26. package/dist/catalog/frontmatterCoherenceValidate.js.map +1 -0
  27. package/dist/catalog/lineageValidate.d.ts +9 -0
  28. package/dist/catalog/lineageValidate.js +161 -0
  29. package/dist/catalog/lineageValidate.js.map +1 -0
  30. package/dist/catalog/readSliceDoc.d.ts +2 -0
  31. package/dist/catalog/readSliceDoc.js +21 -0
  32. package/dist/catalog/readSliceDoc.js.map +1 -0
  33. package/dist/catalog/sliceDoc.d.ts +94 -3
  34. package/dist/catalog/sliceDoc.js +157 -7
  35. package/dist/catalog/sliceDoc.js.map +1 -1
  36. package/dist/catalog/sliceReadyValidate.d.ts +11 -0
  37. package/dist/catalog/sliceReadyValidate.js +85 -0
  38. package/dist/catalog/sliceReadyValidate.js.map +1 -0
  39. package/dist/cli/diff-inputs.d.ts +20 -0
  40. package/dist/cli/diff-inputs.js +75 -18
  41. package/dist/cli/diff-inputs.js.map +1 -1
  42. package/dist/cli/ledgerCheck.d.ts +38 -0
  43. package/dist/cli/ledgerCheck.js +116 -0
  44. package/dist/cli/ledgerCheck.js.map +1 -0
  45. package/dist/cli/skillCheck.d.ts +18 -0
  46. package/dist/cli/skillCheck.js +63 -0
  47. package/dist/cli/skillCheck.js.map +1 -0
  48. package/dist/cli/skillSync.d.ts +22 -0
  49. package/dist/cli/skillSync.js +69 -0
  50. package/dist/cli/skillSync.js.map +1 -0
  51. package/dist/cli/skillVersionCheck.d.ts +32 -0
  52. package/dist/cli/skillVersionCheck.js +145 -0
  53. package/dist/cli/skillVersionCheck.js.map +1 -0
  54. package/dist/cli.d.ts +3 -1
  55. package/dist/cli.js +203 -32
  56. package/dist/cli.js.map +1 -1
  57. package/dist/emit/diffJson.d.ts +1 -1
  58. package/dist/emit/diffJson.js +18 -14
  59. package/dist/emit/diffJson.js.map +1 -1
  60. package/dist/emit/dot.js +46 -5
  61. package/dist/emit/dot.js.map +1 -1
  62. package/dist/emit/json.d.ts +10 -25
  63. package/dist/emit/json.js +70 -103
  64. package/dist/emit/json.js.map +1 -1
  65. package/dist/emit/ledgerJson.d.ts +5 -0
  66. package/dist/emit/ledgerJson.js +25 -0
  67. package/dist/emit/ledgerJson.js.map +1 -0
  68. package/dist/emit/skillCheckJson.d.ts +5 -0
  69. package/dist/emit/skillCheckJson.js +32 -0
  70. package/dist/emit/skillCheckJson.js.map +1 -0
  71. package/dist/model/diff.d.ts +44 -1
  72. package/dist/model/diff.js +51 -9
  73. package/dist/model/diff.js.map +1 -1
  74. package/dist/model/edges.js +17 -17
  75. package/dist/model/edges.js.map +1 -1
  76. package/dist/model/model.d.ts +1 -1
  77. package/dist/model/refs.d.ts +23 -0
  78. package/dist/model/refs.js +75 -0
  79. package/dist/model/refs.js.map +1 -0
  80. package/dist/model/rules.d.ts +253 -0
  81. package/dist/model/rules.js +254 -0
  82. package/dist/model/rules.js.map +1 -0
  83. package/dist/model/validate.d.ts +23 -1
  84. package/dist/model/validate.js +207 -69
  85. package/dist/model/validate.js.map +1 -1
  86. package/dist/parser/ast.d.ts +3 -2
  87. package/dist/parser/lexer.d.ts +17 -2
  88. package/dist/parser/lexer.js +119 -13
  89. package/dist/parser/lexer.js.map +1 -1
  90. package/dist/parser/parser.js +75 -34
  91. package/dist/parser/parser.js.map +1 -1
  92. package/dist/pipeline.d.ts +9 -0
  93. package/dist/pipeline.js +4 -2
  94. package/dist/pipeline.js.map +1 -1
  95. package/dist/render/sliceDiagram.js +33 -35
  96. package/dist/render/sliceDiagram.js.map +1 -1
  97. package/dist/render/sliceStatus.js +1 -1
  98. package/dist/render/sliceStatus.js.map +1 -1
  99. package/dist/util/isMainModule.d.ts +14 -0
  100. package/dist/util/isMainModule.js +33 -0
  101. package/dist/util/isMainModule.js.map +1 -0
  102. package/dist/util/walkDir.d.ts +4 -0
  103. package/dist/util/walkDir.js +28 -0
  104. package/dist/util/walkDir.js.map +1 -0
  105. package/package.json +5 -2
@@ -2,15 +2,17 @@
2
2
  // Event-modeling rule checks over the normalized model + grid.
3
3
  import { AUTOMATION_KINDS } from "../parser/ast.js";
4
4
  import { normalizeName, resolveTypeRef } from "./model.js";
5
- export function validate(model, grid) {
5
+ import { pushDiag } from "./rules.js";
6
+ export function validate(model, grid, refs) {
6
7
  const diags = [];
8
+ const refOf = (id) => refs.refById.get(id);
7
9
  // Grid collisions: two elements of the same band landed in one slice cell.
8
10
  for (const c of grid.collisions) {
9
- diags.push({
10
- severity: "error",
11
+ pushDiag(diags, "grid-collision", {
11
12
  message: `"${c.dropped.name}" collides with "${c.kept.name}" in the same ` +
12
13
  `slice/lane (${c.rowKey}); split them into separate slices`,
13
14
  line: c.dropped.line,
15
+ refs: [refOf(c.dropped.id), refOf(c.kept.id)],
14
16
  });
15
17
  }
16
18
  for (const slice of model.slices) {
@@ -19,49 +21,45 @@ export function validate(model, grid) {
19
21
  const events = slice.elements.filter((e) => e.kind === "event");
20
22
  const views = slice.elements.filter((e) => e.kind === "view");
21
23
  const auto = slice.elements.find((e) => AUTOMATION_KINDS.has(e.kind));
22
- // An automation/translation slice holds only the read model + the
23
- // automation; the command it triggers belongs in the next slice.
24
- if (auto && command) {
25
- diags.push({
26
- severity: "warning",
27
- message: `${auto.kind} "${auto.name}" shares slice "${slice.name}" with command ` +
28
- `"${command.name}"; put the triggered command in the next slice`,
29
- line: command.line,
30
- });
31
- }
24
+ // An automation/translation triggers its command in the same slice — the reaction is
25
+ // to a command what a `ui` is in the State Change pattern, just in the automation band
26
+ // instead of a persona row. An explicit arrow to a command elsewhere also counts (see
27
+ // the command-untriggered check below for the symmetric case); this is the other half
28
+ // of that same completeness pair, checked in the block below alongside `event-unproduced`.
32
29
  // A `ui` only ever triggers a `command` (State Change) — no pattern has a `ui`
33
- // triggering a reaction. If one sits in a reaction's slice instead, with no read
34
- // model in the same slice, it renders with no outgoing edge at all: a floating box
35
- // nothing points at. But a `view` in the same slice draws `view -> ui` regardless of
36
- // whether an automation also reads it (edges.ts) — that ui IS connected, so stay quiet.
37
- if (auto && !command && views.length === 0) {
30
+ // triggering a reaction. If one sits in a reaction's slice, with no read model in the
31
+ // same slice, it renders with no outgoing edge at all: a floating box nothing points
32
+ // at — true whether or not that slice already has the reaction's own command. But a
33
+ // `view` in the same slice draws `view -> ui` regardless of whether an automation also
34
+ // reads it (edges.ts) — that ui IS connected, so stay quiet.
35
+ if (auto && views.length === 0) {
38
36
  for (const ui of slice.elements.filter((e) => e.kind === "ui")) {
39
- diags.push({
40
- severity: "warning",
37
+ pushDiag(diags, "ui-shares-slice-with-automation", {
41
38
  message: `ui "${ui.name}" shares slice "${slice.name}" with ${auto.kind} "${auto.name}"; ` +
42
- `a \`ui\` only wires to a \`command\` and renders disconnected here — move it to the ` +
43
- `slice that consumes the read model, or to the slice with the command this triggers`,
39
+ `a \`ui\` only wires to a \`command\` a person issues and renders disconnected here — ` +
40
+ `move it to the slice that displays the read model, or drop it`,
44
41
  line: ui.line,
42
+ refs: [refOf(ui.id), refOf(auto.id)],
45
43
  });
46
44
  }
47
45
  }
48
46
  // A command should record at least one event.
49
47
  if (command && events.length === 0) {
50
- diags.push({
51
- severity: "warning",
48
+ pushDiag(diags, "both-ends-of-a-flow/command-no-event", {
52
49
  message: `command "${command.name}" produces no event in slice "${slice.name}"`,
53
50
  line: command.line,
51
+ refs: [refOf(command.id)],
54
52
  });
55
53
  }
56
54
  // A read model must derive from at least one event.
57
55
  for (const view of views) {
58
56
  const hasFrom = (view.from ?? []).length > 0;
59
57
  if (!hasFrom && events.length === 0) {
60
- diags.push({
61
- severity: "warning",
58
+ pushDiag(diags, "view-no-source", {
62
59
  message: `read model "${view.name}" has no source event ` +
63
60
  `(add \`from "Event"\` or place it in a slice with an event)`,
64
61
  line: view.line,
62
+ refs: [refOf(view.id)],
65
63
  });
66
64
  }
67
65
  for (const src of view.from ?? []) {
@@ -71,22 +69,22 @@ export function validate(model, grid) {
71
69
  // Same courtesy as the reaction check below: if the name exists as
72
70
  // another kind, say so rather than calling it unknown.
73
71
  const other = bucket?.[0];
74
- diags.push({
75
- severity: "error",
72
+ pushDiag(diags, "view-from-unresolved", {
76
73
  message: other
77
74
  ? `read model "${view.name}" references "${src}", which is a ${other.kind}, not an event — ` +
78
75
  `\`from\` on a view names the events it projects`
79
76
  : `read model "${view.name}" references unknown event "${src}"`,
80
77
  line: view.line,
78
+ refs: other ? [refOf(view.id), refOf(other.id)] : [refOf(view.id)],
81
79
  });
82
80
  }
83
81
  else if (evt.sliceIndex > view.sliceIndex) {
84
- diags.push({
85
- severity: "error",
82
+ pushDiag(diags, "view-from-future-event", {
86
83
  message: `time flows left to right: event "${evt.name}" (slice ${evt.sliceIndex + 1}) happens ` +
87
84
  `after read model "${view.name}" (slice ${view.sliceIndex + 1}); move this source to a ` +
88
85
  `later \`view ${view.name} again\` instance`,
89
86
  line: view.line,
87
+ refs: [refOf(view.id), refOf(evt.id)],
90
88
  });
91
89
  }
92
90
  }
@@ -114,10 +112,10 @@ export function validate(model, grid) {
114
112
  const eventList = fromNames.map((n) => `"${n}"`).join(", ");
115
113
  for (const f of view.fields) {
116
114
  if (!fieldUnion.has(normalizeName(f.name))) {
117
- diags.push({
118
- severity: "warning",
115
+ pushDiag(diags, "fields-completeness/view-field-no-source", {
119
116
  message: `view "${view.name}" field "${f.name}" has no source in ${eventList}`,
120
117
  line: view.line,
118
+ refs: [refOf(view.id), ...sourceEvents.map((e) => refOf(e.id))],
121
119
  });
122
120
  }
123
121
  }
@@ -143,10 +141,10 @@ export function validate(model, grid) {
143
141
  continue;
144
142
  for (const f of evt.fields) {
145
143
  if (!commandFieldUnion.has(normalizeName(f.name))) {
146
- diags.push({
147
- severity: "warning",
144
+ pushDiag(diags, "fields-completeness/event-field-no-source", {
148
145
  message: `event "${evt.name}" field "${f.name}" not provided by ${byCommands}`,
149
146
  line: evt.line,
147
+ refs: [refOf(evt.id), ...commands.map((c) => refOf(c.id))],
150
148
  });
151
149
  }
152
150
  }
@@ -167,22 +165,22 @@ export function validate(model, grid) {
167
165
  // saying so — call out the kind mismatch and the fix (project the
168
166
  // event into a view) instead of claiming the name is unknown.
169
167
  const asEvent = bucket?.find((e) => e.kind === "event");
170
- diags.push({
171
- severity: "error",
168
+ pushDiag(diags, "reaction-from-unresolved", {
172
169
  message: asEvent
173
170
  ? `${el.kind} "${el.name}" references "${src}", which is an event, not a read model — ` +
174
171
  `reactions watch read models; project the event into a view first ` +
175
172
  `(\`view <Pending Work> from "${src}"\`) and reference that view`
176
173
  : `${el.kind} "${el.name}" references unknown read model "${src}"`,
177
174
  line: el.line,
175
+ refs: asEvent ? [refOf(el.id), refOf(asEvent.id)] : [refOf(el.id)],
178
176
  });
179
177
  }
180
178
  else if (!views.some((v) => v.sliceIndex <= el.sliceIndex)) {
181
- diags.push({
182
- severity: "error",
179
+ pushDiag(diags, "reaction-from-future-view", {
183
180
  message: `time flows left to right: ${el.kind} "${el.name}" (slice ${el.sliceIndex + 1}) reads ` +
184
181
  `"${src}" before any instance of it exists; declare the view in or before that slice`,
185
182
  line: el.line,
183
+ refs: [refOf(el.id)],
186
184
  });
187
185
  }
188
186
  }
@@ -190,24 +188,23 @@ export function validate(model, grid) {
190
188
  // A \`view X again\` instance needs an earlier declaration to continue.
191
189
  for (const el of model.elements) {
192
190
  if (el.kind === "view" && el.again && el.logicalId === el.id) {
193
- diags.push({
194
- severity: "error",
191
+ pushDiag(diags, "view-again-without-earlier", {
195
192
  message: `view "${el.name}" is marked \`again\` but has no earlier declaration; ` +
196
193
  `declare it plainly the first time it appears`,
197
194
  line: el.line,
195
+ refs: [refOf(el.id)],
198
196
  });
199
197
  }
200
198
  }
201
199
  // Something must trigger every command. Information enters the system through a command, and
202
200
  // a command enters through a person on a screen or a reaction acting for them — one with
203
201
  // neither is a write nobody can start, the input-side mirror of an event nobody reads.
204
- model.slices.forEach((slice, i) => {
202
+ for (const slice of model.slices) {
205
203
  for (const cmd of slice.elements.filter((e) => e.kind === "command")) {
206
204
  if (slice.elements.some((e) => e.kind === "ui"))
207
205
  continue; // State Change: ui -> command
208
- // Automation/Translation: the reaction sits in the slice before its command.
209
- const prev = model.slices[i - 1]?.elements ?? [];
210
- if (prev.some((e) => AUTOMATION_KINDS.has(e.kind)))
206
+ // Automation/Translation: the reaction triggers the command in this same slice.
207
+ if (slice.elements.some((e) => AUTOMATION_KINDS.has(e.kind)))
211
208
  continue;
212
209
  const arrowed = model.arrows.some((a) => {
213
210
  const from = a.fromId ? model.byId.get(a.fromId) : undefined;
@@ -215,14 +212,93 @@ export function validate(model, grid) {
215
212
  });
216
213
  if (arrowed)
217
214
  continue;
218
- diags.push({
219
- severity: "warning",
215
+ pushDiag(diags, "both-ends-of-a-flow/command-untriggered", {
220
216
  message: `command "${cmd.name}" has nothing that triggers it; add the screen it is issued ` +
221
- `from (a \`ui\` in this slice) or the reaction that issues it (in the previous slice)`,
217
+ `from (a \`ui\` in this slice) or the reaction that issues it (also in this slice)`,
222
218
  line: cmd.line,
219
+ refs: [refOf(cmd.id)],
220
+ });
221
+ }
222
+ }
223
+ // The mirror case: a reaction that triggers no command. A processor/translation never
224
+ // records an event itself (isLegalFlow allows no other producer downstream of a reaction
225
+ // but a command) — one with no command in its slice and no explicit arrow to one is a
226
+ // decision the system never acts on.
227
+ for (const slice of model.slices) {
228
+ for (const auto of slice.elements.filter((e) => AUTOMATION_KINDS.has(e.kind))) {
229
+ if (slice.elements.some((e) => e.kind === "command"))
230
+ continue;
231
+ const arrowed = model.arrows.some((a) => {
232
+ const to = a.toId ? model.byId.get(a.toId) : undefined;
233
+ return a.fromId === auto.id && to?.kind === "command";
234
+ });
235
+ if (arrowed)
236
+ continue;
237
+ pushDiag(diags, "both-ends-of-a-flow/reaction-no-command", {
238
+ message: `${auto.kind} "${auto.name}" triggers no command; add the command it issues ` +
239
+ `(in this slice) or an explicit arrow to one`,
240
+ line: auto.line,
241
+ refs: [refOf(auto.id)],
242
+ });
243
+ }
244
+ }
245
+ // Something must produce every event. An event is only ever recorded by a command
246
+ // (isLegalFlow allows no other producer) — one with no command in its slice and no
247
+ // explicit arrow from one is a fact on the timeline with no traceable cause, the
248
+ // record-side mirror of a command nothing triggers.
249
+ for (const slice of model.slices) {
250
+ if (slice.elements.some((e) => e.kind === "command"))
251
+ continue;
252
+ for (const evt of slice.elements.filter((e) => e.kind === "event")) {
253
+ const arrowed = model.arrows.some((a) => {
254
+ const from = a.fromId ? model.byId.get(a.fromId) : undefined;
255
+ return a.toId === evt.id && from?.kind === "command";
256
+ });
257
+ if (arrowed)
258
+ continue;
259
+ pushDiag(diags, "both-ends-of-a-flow/event-unproduced", {
260
+ message: `event "${evt.name}" has no producing command; add the command that records it ` +
261
+ `(in this slice) or an explicit arrow from one`,
262
+ line: evt.line,
263
+ refs: [refOf(evt.id)],
223
264
  });
224
265
  }
225
- });
266
+ }
267
+ // Every screen needs something behind it: a read model to display (State View,
268
+ // view -> ui) or a command to issue (State Change, ui -> command). A `ui` with neither
269
+ // is a screen modeled with nothing driving it — commonly a GET endpoint quietly dropped
270
+ // during extraction because it doesn't fit the "each endpoint is a command" framing.
271
+ // The reaction-slice case (a `ui` misplaced in an automation's slice with no read model)
272
+ // already gets its own, more specific diagnostic above — skip it here to avoid a
273
+ // duplicate warning for the same root cause.
274
+ for (const slice of model.slices) {
275
+ const autoInSlice = slice.elements.find((e) => AUTOMATION_KINDS.has(e.kind));
276
+ const hasViewInSlice = slice.elements.some((e) => e.kind === "view");
277
+ const hasCommandInSlice = slice.elements.some((e) => e.kind === "command");
278
+ if (autoInSlice && !hasViewInSlice)
279
+ continue;
280
+ for (const ui of slice.elements.filter((e) => e.kind === "ui")) {
281
+ if (hasViewInSlice || hasCommandInSlice)
282
+ continue;
283
+ const viewArrow = model.arrows.some((a) => {
284
+ const from = a.fromId ? model.byId.get(a.fromId) : undefined;
285
+ return a.toId === ui.id && from?.kind === "view";
286
+ });
287
+ const commandArrow = model.arrows.some((a) => {
288
+ const to = a.toId ? model.byId.get(a.toId) : undefined;
289
+ return a.fromId === ui.id && to?.kind === "command";
290
+ });
291
+ if (viewArrow || commandArrow)
292
+ continue;
293
+ pushDiag(diags, "both-ends-of-a-flow/ui-unbacked", {
294
+ message: `ui "${ui.name}" has no read model backing it and issues no command; add a ` +
295
+ `\`view\` it displays (event -> read model -> ui) or the command it triggers ` +
296
+ `(ui -> command), or reconsider this screen`,
297
+ line: ui.line,
298
+ refs: [refOf(ui.id)],
299
+ });
300
+ }
301
+ }
226
302
  // Every read model must be consumed. A view nothing displays or watches is the output-side
227
303
  // half-slice: information projected out of the system and then dropped on the floor. A
228
304
  // complete State View is event -> read model -> ui (or -> reaction, the Automation pattern).
@@ -253,11 +329,15 @@ export function validate(model, grid) {
253
329
  for (const view of slice.elements.filter((e) => e.kind === "view")) {
254
330
  if (consumedViews.has(view.id))
255
331
  continue;
256
- diags.push({
257
- severity: "warning",
332
+ // A `public` view is a published read API/webhook — its consumer is outside this
333
+ // model, possibly outside this system entirely, so there's nothing local to point to.
334
+ if (view.public)
335
+ continue;
336
+ pushDiag(diags, "both-ends-of-a-flow/view-unconsumed", {
258
337
  message: `read model "${view.name}" has no consumer; add the screen that displays it ` +
259
338
  `(a \`ui\` in this slice) or the reaction that watches it — or drop this instance`,
260
339
  line: view.line,
340
+ refs: [refOf(view.id)],
261
341
  });
262
342
  }
263
343
  }
@@ -291,11 +371,16 @@ export function validate(model, grid) {
291
371
  continue;
292
372
  if (readEvents.has(normalizeName(el.name)))
293
373
  continue;
294
- diags.push({
295
- severity: "warning",
374
+ // A `public` event is part of the published integration surface — its reader is
375
+ // outside this model, possibly outside this system entirely, so there's nothing local
376
+ // to project it into.
377
+ if (el.public)
378
+ continue;
379
+ pushDiag(diags, "both-ends-of-a-flow/event-unread", {
296
380
  message: `event "${el.name}" is not read by any read model; project it into a view ` +
297
381
  `(\`view X from "${el.name}"\`), or reconsider recording it`,
298
382
  line: el.line,
383
+ refs: [refOf(el.id)],
299
384
  });
300
385
  }
301
386
  // Explicit arrow endpoints must resolve — and point forward.
@@ -304,45 +389,45 @@ export function validate(model, grid) {
304
389
  const fromEl = model.byId.get(a.fromId);
305
390
  const toEl = model.byId.get(a.toId);
306
391
  if (fromEl && toEl && toEl.sliceIndex < fromEl.sliceIndex) {
307
- diags.push({
308
- severity: "error",
392
+ pushDiag(diags, "arrow-backward", {
309
393
  message: `time flows left to right: arrow "${a.from}" -> "${a.to}" points backward ` +
310
394
  `(slice ${fromEl.sliceIndex + 1} -> ${toEl.sliceIndex + 1}); restructure so the target comes later`,
311
395
  line: a.line,
396
+ refs: [refOf(fromEl.id), refOf(toEl.id)],
312
397
  });
313
398
  }
314
399
  // Inferred edges are legal by construction; a hand-written arrow is the one way an
315
400
  // illegal connection can enter a model, so check the kind pair against the patterns.
316
401
  if (fromEl && toEl && !isLegalFlow(fromEl.kind, toEl.kind)) {
317
- diags.push({
318
- severity: "error",
402
+ pushDiag(diags, "connection-legality/illegal-pair", {
319
403
  message: `arrow "${a.from}" -> "${a.to}" connects ${withArticle(fromEl.kind)} directly to ` +
320
404
  `${withArticle(toEl.kind)}: ${flowGuidance(fromEl.kind, toEl.kind)}`,
321
405
  line: a.line,
406
+ refs: [refOf(fromEl.id), refOf(toEl.id)],
322
407
  });
323
408
  }
324
409
  }
325
410
  if (!a.fromId)
326
- diags.push({
327
- severity: "error",
411
+ pushDiag(diags, "arrow-unresolved-source", {
328
412
  message: `arrow source "${a.from}" does not match any element`,
329
413
  line: a.line,
414
+ ...(a.toId ? { refs: [refOf(a.toId)] } : {}),
330
415
  });
331
416
  if (!a.toId)
332
- diags.push({
333
- severity: "error",
417
+ pushDiag(diags, "arrow-unresolved-target", {
334
418
  message: `arrow target "${a.to}" does not match any element`,
335
419
  line: a.line,
420
+ ...(a.fromId ? { refs: [refOf(a.fromId)] } : {}),
336
421
  });
337
422
  }
338
423
  // Open issues (`issue "text"`) are always surfaced as a warning — the red-note
339
424
  // device for a question that hasn't been resolved yet.
340
425
  for (const el of model.elements) {
341
426
  if (el.issue) {
342
- diags.push({
343
- severity: "warning",
427
+ pushDiag(diags, "open-issue", {
344
428
  message: `open issue on "${el.name}": ${el.issue}`,
345
429
  line: el.line,
430
+ refs: [refOf(el.id)],
346
431
  });
347
432
  }
348
433
  }
@@ -351,17 +436,50 @@ export function validate(model, grid) {
351
436
  // entire point of the annotation is that it stops re-firing as a warning (or as conform-loop
352
437
  // drift) on every run; a warning here would defeat that. Use `em validate --list-divergences`
353
438
  // to audit them on demand instead.
439
+ // Two translations sharing a name but reading from different producers is a naming
440
+ // collision waiting to confuse a reader — the timeline shows the same name twice for two
441
+ // unrelated external messages. Unlike the general ambiguous-name check below, this fires
442
+ // unconditionally (not gated on `isReferenced`): a translation is itself a producer, not
443
+ // typically something else's `from` target, so the confusion is in reading the model, not
444
+ // in resolving a reference.
445
+ const translationsByName = new Map();
446
+ for (const el of model.elements) {
447
+ if (el.kind !== "translation")
448
+ continue;
449
+ const key = normalizeName(el.name);
450
+ const bucket = translationsByName.get(key);
451
+ if (bucket)
452
+ bucket.push(el);
453
+ else
454
+ translationsByName.set(key, [el]);
455
+ }
456
+ for (const group of translationsByName.values()) {
457
+ if (group.length < 2)
458
+ continue;
459
+ const producerSets = group.map((t) => new Set((t.from ?? []).map(normalizeName)));
460
+ const first = producerSets[0];
461
+ const allSameProducers = producerSets.every((s) => s.size === first.size && [...s].every((v) => first.has(v)));
462
+ if (allSameProducers)
463
+ continue; // same producers, just repeated for clarity — not a collision
464
+ pushDiag(diags, "translation-name-collision", {
465
+ message: `translation "${group[0].name}" is defined ${group.length} times with different ` +
466
+ `producers (${group.map((t) => `"${(t.from ?? []).join(", ") || "none"}"`).join(" vs ")}); ` +
467
+ `use a distinct name per producer to avoid confusion`,
468
+ line: group[0].line,
469
+ refs: group.map((t) => refOf(t.id)),
470
+ });
471
+ }
354
472
  // Ambiguous names (used by arrows / view sources) get a heads-up.
355
473
  for (const [key, els] of model.byName) {
356
474
  // Later \`again\` instances of a view are the SAME logical read model reappearing on the
357
475
  // timeline — deliberate, not an ambiguity. Only warn when a duplicate is NOT an instance.
358
476
  const nonInstances = els.filter((e, i) => i === 0 || !(e.kind === "view" && e.again));
359
477
  if (nonInstances.length > 1 && isReferenced(model, key)) {
360
- diags.push({
361
- severity: "warning",
478
+ pushDiag(diags, "duplicate-name", {
362
479
  message: `name "${els[0].name}" is defined ${nonInstances.length} times; ` +
363
480
  `references resolve to the first occurrence`,
364
481
  line: els[0].line,
482
+ refs: nonInstances.map((e) => refOf(e.id)),
365
483
  });
366
484
  }
367
485
  }
@@ -380,10 +498,10 @@ export function validate(model, grid) {
380
498
  }
381
499
  for (const decls of typesByNormalizedName.values()) {
382
500
  if (decls.length > 1) {
383
- diags.push({
384
- severity: "warning",
501
+ pushDiag(diags, "duplicate-type-name", {
385
502
  message: `type "${decls[0].name}" is defined ${decls.length} times; references resolve to the first occurrence`,
386
503
  line: decls[0].line,
504
+ refs: decls.map((t) => refs.refByTypeId.get(t.id)),
387
505
  });
388
506
  }
389
507
  }
@@ -391,10 +509,23 @@ export function validate(model, grid) {
391
509
  // shared `Address` referenced twice is fine), but a cycle — a type transitively nesting
392
510
  // itself with no array to terminate it at runtime — can never be satisfied and is an error.
393
511
  for (const cycle of findTypeCycles(model)) {
394
- diags.push({
395
- severity: "error",
512
+ // cycle.path repeats its first name at the end (closing the loop) — dedupe by normalized
513
+ // name before resolving to refs, so a 3-hop cycle reports 3 refs, not 4.
514
+ const seen = new Set();
515
+ const cycleRefs = [];
516
+ for (const name of cycle.path) {
517
+ const key = normalizeName(name);
518
+ if (seen.has(key))
519
+ continue;
520
+ seen.add(key);
521
+ const t = model.typesByName.get(key);
522
+ if (t)
523
+ cycleRefs.push(refs.refByTypeId.get(t.id));
524
+ }
525
+ pushDiag(diags, "type-cycle", {
396
526
  message: `type "${cycle.path[0]}" has a cyclic reference: ${cycle.path.join(" -> ")}`,
397
527
  line: cycle.line,
528
+ refs: cycleRefs,
398
529
  });
399
530
  }
400
531
  return diags;
@@ -464,7 +595,7 @@ function flowGuidance(from, to) {
464
595
  if (from === "command" && to === "view")
465
596
  return "an event has to sit between them (command -> event -> read model)";
466
597
  if (from === "view" && to === "command")
467
- return "a reaction has to sit between them (read model -> processor -> command), split across two slices";
598
+ return "a reaction has to sit between them (read model -> processor -> command)";
468
599
  if (from === "event" && to === "command")
469
600
  return "project the event into a read model a reaction watches (event -> read model -> processor -> command)";
470
601
  if (from === "event" && to === "event")
@@ -508,4 +639,11 @@ export function formatDiagnostic(d) {
508
639
  const tag = d.severity === "error" ? "error" : "warn ";
509
640
  return ` ${tag}${where} ${d.message}`;
510
641
  }
642
+ /** JSON-shaped diagnostic — `line`/`refs` widened to explicit `null`/`[]`, same convention
643
+ * every other optional export field uses. Shared by `em export` (`emit/json.ts`) and `em
644
+ * diff --json` (`emit/diffJson.ts`, which spreads `{ side, ...serializeDiagnostic(d) }`) so
645
+ * the shape is defined once, next to the `Diagnostic` type it serializes. */
646
+ export function serializeDiagnostic(d) {
647
+ return { severity: d.severity, code: d.code, message: d.message, line: d.line ?? null, refs: d.refs ?? [] };
648
+ }
511
649
  //# sourceMappingURL=validate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/model/validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/model/validate.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,9 @@ export interface ElementNode {
28
28
  fields?: Field[];
29
29
  /** view-only: a later timeline instance of an already-declared read model. */
30
30
  again?: boolean;
31
- /** `public` — event-only: marks this event as part of the published integration
32
- * surface, as opposed to an internal-only fact. */
31
+ /** `public` — event or view: marks this element as part of the published integration
32
+ * surface (an event as a contract, a view as a public read API's response shape), as
33
+ * opposed to an internal-only fact or read model. */
33
34
  public?: boolean;
34
35
  line: number;
35
36
  }