@milehimikey/em 1.0.0 → 1.1.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 (53) hide show
  1. package/.claude/skills/event-modeling/SKILL.md +23 -70
  2. package/.claude/skills/event-modeling/reference/em-dsl.md +0 -15
  3. package/.claude/skills/event-modeling/templates/model-readme.md +4 -4
  4. package/.claude/skills/event-modeling/templates/slice.md +2 -4
  5. package/.claude/skills/event-modeling/templates/state.md +3 -9
  6. package/README.md +16 -31
  7. package/dist/cli.js +4 -227
  8. package/dist/cli.js.map +1 -1
  9. package/dist/model/edges.js +25 -1
  10. package/dist/model/edges.js.map +1 -1
  11. package/dist/model/model.d.ts +4 -0
  12. package/dist/model/model.js +13 -0
  13. package/dist/model/model.js.map +1 -1
  14. package/dist/model/validate.d.ts +0 -2
  15. package/dist/model/validate.js +51 -6
  16. package/dist/model/validate.js.map +1 -1
  17. package/dist/parser/ast.d.ts +2 -0
  18. package/dist/parser/parser.js +9 -0
  19. package/dist/parser/parser.js.map +1 -1
  20. package/dist/render/drawEdges.js +46 -1
  21. package/dist/render/drawEdges.js.map +1 -1
  22. package/package.json +4 -5
  23. package/.claude/skills/event-modeling/reference/frontmatter.md +0 -129
  24. package/dist/config.d.ts +0 -15
  25. package/dist/config.js +0 -60
  26. package/dist/config.js.map +0 -1
  27. package/dist/migrate/migrate.d.ts +0 -26
  28. package/dist/migrate/migrate.js +0 -276
  29. package/dist/migrate/migrate.js.map +0 -1
  30. package/dist/model/deriveSliceFields.d.ts +0 -21
  31. package/dist/model/deriveSliceFields.js +0 -60
  32. package/dist/model/deriveSliceFields.js.map +0 -1
  33. package/dist/model/frontmatter.d.ts +0 -21
  34. package/dist/model/frontmatter.js +0 -38
  35. package/dist/model/frontmatter.js.map +0 -1
  36. package/dist/model/sliceDoc.d.ts +0 -56
  37. package/dist/model/sliceDoc.js +0 -28
  38. package/dist/model/sliceDoc.js.map +0 -1
  39. package/dist/model/validateSliceDocs.d.ts +0 -7
  40. package/dist/model/validateSliceDocs.js +0 -195
  41. package/dist/model/validateSliceDocs.js.map +0 -1
  42. package/dist/slice/generate.d.ts +0 -17
  43. package/dist/slice/generate.js +0 -61
  44. package/dist/slice/generate.js.map +0 -1
  45. package/dist/slice/query.d.ts +0 -42
  46. package/dist/slice/query.js +0 -96
  47. package/dist/slice/query.js.map +0 -1
  48. package/dist/slice/sync.d.ts +0 -18
  49. package/dist/slice/sync.js +0 -104
  50. package/dist/slice/sync.js.map +0 -1
  51. package/dist/util/findModel.d.ts +0 -1
  52. package/dist/util/findModel.js +0 -27
  53. package/dist/util/findModel.js.map +0 -1
@@ -16,10 +16,9 @@ You are facilitating an Event Modeling session. Your job is to **extract an accu
16
16
  the user through Socratic questioning** — never to invent the domain. You drive the `em` CLI to
17
17
  render the model live, and you produce implementation-ready slice design docs.
18
18
 
19
- Read `reference/methodology.md` (the 7 steps + 4 patterns), `reference/em-dsl.md` (DSL syntax +
20
- validation rules), and — before the `slice` phase specifically — `reference/frontmatter.md` (the
21
- slice-doc frontmatter schema, lifecycle, and `em slice` CLI) before doing real work; they are the
22
- source of truth. Templates live in `templates/`.
19
+ Read `reference/methodology.md` (the 7 steps + 4 patterns) and `reference/em-dsl.md` (DSL syntax
20
+ + validation rules) before doing real work — they are the source of truth. Templates live in
21
+ `templates/`.
23
22
 
24
23
  ## Operating principles (every phase)
25
24
 
@@ -59,13 +58,7 @@ source of truth. Templates live in `templates/`.
59
58
  2. Locate the model. Look for an existing `<dir>/.event-modeling.md` and `*.em` in the working
60
59
  directory (or a `models/` subfolder). If found, read the state file. If not, and the phase
61
60
  needs one, ask the user for the model name and where to create it.
62
- 3. **Pre-1.0 model check.** If a `slices/*.md` doc exists with no YAML frontmatter block (run
63
- `em validate <model>.em` — a missing-frontmatter doc errors with a message pointing at this),
64
- tell the user this model predates the frontmatter standard and offer to run
65
- `em migrate <model-dir>` before continuing (it refuses a dirty git tree by default — commit
66
- first, or pass `--force`). Don't hand-edit old-format docs around this; migrate once, then
67
- proceed normally.
68
- 4. Parse the argument (`$ARGUMENTS`) to pick the phase below. With **no argument**, read the
61
+ 3. Parse the argument (`$ARGUMENTS`) to pick the phase below. With **no argument**, read the
69
62
  state file and resume the recorded phase/step; if no model exists, propose starting `discover`.
70
63
 
71
64
  ## Project layout this skill creates
@@ -76,24 +69,14 @@ source of truth. Templates live in `templates/`.
76
69
  <model-name>.svg # render target for em watch
77
70
  live.html # auto-refresh viewer (copy of templates/live.html, SVG_FILE set)
78
71
  README.md # overview + slice index (from templates/model-readme.md)
79
- .event-modeling.md # resumable state (from templates/state.md, with frontmatter)
80
- em.config.json # optional: { "sliceTemplate": "..." } for a team's own slice template
81
- slices/<slice-id>.md # one rich slice doc per slice, scaffolded via `em slice new`
72
+ .event-modeling.md # resumable state (from templates/state.md)
73
+ slices/<slice-name>.md # one rich slice doc per slice (from templates/slice.md)
82
74
  ```
83
75
 
84
- When creating a new model, scaffold the directory, copy the `model-readme.md`/`state.md`
85
- templates in (filling the placeholders), and set `SVG_FILE` in the copied `live.html` to
86
- `<model-name>.svg`. You may use `em init` for a starter `.em`, but usually you'll build it up from
87
- the discovery conversation instead. Fill template placeholders — never leave `{{...}}` in
88
- delivered files. **Slice docs are the one exception**: don't hand-copy `templates/slice.md` —
89
- use `em slice new` (see the `slice` phase below), which injects the required frontmatter and
90
- respects a project's `em.config.json` custom template if one is configured.
91
-
92
- Ask the **Regulatory scope** session input (state.md) up front, alongside Scope line / PRD
93
- reference / Headless-API-model: does this domain have compliance requirements (PCI-DSS, SOX,
94
- HIPAA, GDPR, ...) or none? This decides whether the `slice` phase asks about the `compliance:`
95
- frontmatter block per slice (see `reference/frontmatter.md`) — don't ask about compliance at all
96
- for a model with no regulatory scope.
76
+ When creating a new model, scaffold the directory, copy the templates in (filling the
77
+ placeholders), and set `SVG_FILE` in the copied `live.html` to `<model-name>.svg`. You may use
78
+ `em init` for a starter `.em`, but usually you'll build it up from the discovery conversation
79
+ instead. Fill template placeholders — never leave `{{...}}` in delivered files.
97
80
 
98
81
  ---
99
82
 
@@ -159,33 +142,17 @@ the corresponding event/slice to the `.em` and re-render. The happy-path spine f
159
142
  phases is the starting point, not the finished event set.
160
143
 
161
144
  For each slice:
162
- 1. Scaffold the doc: `em slice new "<Slice Name>" --pattern <state-change|state-view|automation|translation>`.
163
- This writes `slices/<id>.md` with the required frontmatter already filled in (`id`, `pattern`,
164
- `status: draft`, `version: 1`, …) and the body template (custom, if `em.config.json` configures
165
- one; the shipped default otherwise) ready to fill in.
166
- 2. Hold a Socratic deep-dive to fill every body section: intent, trigger/actor, command + field
167
- table (types & rules), event(s) + payload (mark immutable facts), invariants (give each a
168
- stable ID), Given/When/Then scenarios (happy path + rule boundaries + edge cases),
145
+ 1. Hold a Socratic deep-dive to fill every section of `templates/slice.md`: intent, trigger/actor,
146
+ command + field table (types & rules), event(s) + payload (mark immutable facts), invariants
147
+ (give each a stable ID), Given/When/Then scenarios (happy path + rule boundaries + edge cases),
169
148
  alternate/error flows (retries, idempotency, compensations), read models affected, open
170
- questions. Park anything unresolved rather than guessing. Pattern and status are frontmatter
171
- now, not prose — see `reference/frontmatter.md`. If the model's **Regulatory scope** (state
172
- file) isn't "none," additionally ask whether *this* slice touches regulated data or processes;
173
- if so, hand-add a `compliance:` block to the doc's frontmatter (see `reference/frontmatter.md`
174
- for the suggested shape — `em` never validates it, so use whatever sub-fields fit). Skip this
175
- question entirely for non-regulated models, and skip the block for slices with no compliance
176
- relevance even in a regulated model — don't ask by rote.
177
- 3. Wire it into the `.em`: add `note "slices/<id>.md"` to the slice's primary element (the command
178
- for State Change, the view for State View, the processor for Automation, the translation for
179
- Translation).
180
- 4. Run `em slice sync <id>` — it discovers the linked element from that `note` and fills in the
181
- generated frontmatter fields (`commands`/`events`/`readModels`/`contexts`/`personas`, and
182
- `triggers`/`triggeredBy` for automation/translation). **Re-run `em slice sync <id>` (or
183
- `--all`) after any later `.em` edit that touches this slice's elements** — generated fields
184
- drift otherwise, and `em validate` will flag it.
185
- 5. When the doc is solid, move it forward: `em slice update <id> --status reviewed` (and later
186
- `--status ready-to-implement`). Update `README.md`'s slice index.
187
- 6. Re-render and `em validate` (validates the `.em` **and** every slice doc's frontmatter by
188
- default).
149
+ questions. Park anything unresolved rather than guessing.
150
+ 2. Write the doc to `slices/<slice-name>.md` (kebab-case the slice name).
151
+ 3. Wire it into the `.em`: add `note "slices/<slice-name>.md"` to the slice's primary element
152
+ (the command for State Change, the view for State View, the processor for Automation, the
153
+ translation for Translation).
154
+ 4. Update `README.md`'s slice index and the state file's slice inventory (`draft` → `ready`).
155
+ 5. Re-render and `em validate`.
189
156
 
190
157
  ## Phase: `watch` — live team view
191
158
 
@@ -200,13 +167,8 @@ For each slice:
200
167
  ## Phase: `validate`
201
168
 
202
169
  Run `em validate <model-name>.em` and walk through each diagnostic with the user, explaining the
203
- rule (see `reference/em-dsl.md` for `.em` rules, `reference/frontmatter.md` for slice-doc
204
- frontmatter rules) and proposing the fix. Apply fixes on agreement:
205
- - `.em`-level fixes: split an automation's command into the next slice, add a missing `from`, give
206
- a command its event.
207
- - Slice-doc-level fixes: no frontmatter block → run `em migrate` (pre-1.0 model); "out of sync
208
- with .em" → run `em slice sync <id>`; orphan doc → wire a `note "slices/<id>.md"` onto the
209
- right element, then sync.
170
+ rule (see `reference/em-dsl.md`) and proposing the fix (e.g. split an automation's command into
171
+ the next slice, add a missing `from`, give a command its event). Apply fixes on agreement.
210
172
 
211
173
  Then do one check `em validate` can't: scan every `translation`/`processor`/`automation` slice and
212
174
  confirm none contains an `event` — each reaction must trigger a `command` in the next slice
@@ -220,20 +182,11 @@ two slices and route it through a command.
220
182
  ```bash
221
183
  em --version
222
184
  em init <name>.em # optional starter scaffold
223
- em validate <name>.em # check .em rules + slice-doc frontmatter
185
+ em validate <name>.em # check rules; exit 0 if clean/warnings only
224
186
  em render <name>.em -o <name>.svg # render (svg/png/pdf by extension)
225
187
  em render <name>.em --emit-dot # inspect generated Graphviz DOT
226
188
  em watch <name>.em -o <name>.svg # re-render on save (run in background)
227
-
228
- em slice new "<Slice Name>" --pattern <pattern> # scaffold slices/<id>.md with frontmatter
229
- em slice sync <id> # after wiring note "slices/<id>.md" into the .em
230
- em slice update <id> --status <status> # move a slice's lifecycle status forward
231
- em slice list / show <id> / search "<query>" # query slice docs by frontmatter (--format json)
232
- em slice search "<q>" --format json --full # ...with every field, not just the summary row
233
- em migrate <model-dir> # one-time upgrade from a pre-1.0 model
234
189
  ```
235
190
 
236
- See `reference/frontmatter.md` for the full slice-doc frontmatter schema and CLI reference.
237
-
238
191
  Always finish a working session by: re-rendering, running `em validate`, and updating
239
192
  `.event-modeling.md` with the current phase/step, decisions, and open questions.
@@ -20,21 +20,6 @@ em validate <file> # check event-modeling rules; exit 0 if only warn
20
20
  Install if missing: `npm i -g @milehimikey/em`. PNG works with no system deps; PDF needs
21
21
  `rsvg-convert`.
22
22
 
23
- **Slice docs** (frontmatter, lifecycle, search — see `reference/frontmatter.md` for the schema):
24
-
25
- ```bash
26
- em slice new "Slice Name" [--pattern state-change] [--id <id>] # scaffold slices/<id>.md
27
- em slice sync <id> # after wiring note "slices/<id>.md" into the .em
28
- em slice sync --all # re-sync every doc in the model directory
29
- em slice list [--status <s>] [--pattern <p>] [--context <c>] [--tag <t>] [--format json] [--full]
30
- em slice show <id> [--body] [--format json]
31
- em slice search "<query>" [--pattern <p>] [--status <s>] [--context <c>] [--tag <t>] [--format json] [--full]
32
- em slice update <id> [--status <s>] [--bump-version]
33
- em migrate <model-dir> [--dry-run] [--report <path>] # one-time upgrade from a pre-1.0 model
34
- ```
35
-
36
- `em validate <file>` also validates every doc in `slices/` by default (`--skip-slices` to opt out).
37
-
38
23
  ---
39
24
 
40
25
  ## Grammar
@@ -19,10 +19,10 @@ Static render: `em render {{model-name}}.em -o {{model-name}}.svg`
19
19
  - **Translation** — External input (or Read Model) → Translation → (next slice) Command → Event
20
20
 
21
21
  ## Slices
22
- <!-- Keep this index in sync as slice docs are written (or regenerate from `em slice list`). -->
23
- | # | Slice | Pattern | Status | Design doc |
24
- |---|-------|---------|--------|------------|
25
- | 1 | {{Slice Name}} | {{Pattern}} | {{status}} | [slices/{{slice-id}}.md](slices/{{slice-id}}.md) |
22
+ <!-- Keep this index in sync as slice docs are written. -->
23
+ | # | Slice | Pattern | Design doc |
24
+ |---|-------|---------|------------|
25
+ | 1 | {{Slice Name}} | {{Pattern}} | [slices/{{slice-name}}.md](slices/{{slice-name}}.md) |
26
26
 
27
27
  ## Status
28
28
  See [`.event-modeling.md`](.event-modeling.md) for current phase, decisions, and open questions.
@@ -3,15 +3,13 @@ Rich slice design document. One per slice, stored in <model>/slices/<slice-name>
3
3
  linked from the .em model with: note "slices/<slice-name>.md" on the slice's defining element.
4
4
  Fill every section through Socratic questioning. Leave "Open Questions" rather than guessing.
5
5
  Replace the bracketed placeholders; delete guidance comments before finishing.
6
-
7
- This is the body template only — `em slice new` injects the required frontmatter block above
8
- this content (id, pattern, status, version, sliceElement, and the generated search fields).
9
- Pattern and status live there now, not as prose here — see reference/frontmatter.md.
10
6
  -->
11
7
 
12
8
  # Slice: {{Slice Name}}
13
9
 
10
+ - **Pattern:** {{State Change | State View | Automation | Translation}}
14
11
  - **Swimlane:** {{Persona/Actor}} → {{Context/Aggregate}}
12
+ - **Status:** {{draft | reviewed | ready-to-implement}}
15
13
 
16
14
  ## Intent
17
15
  {{Why this slice exists — the user or business goal it serves, in one or two sentences.}}
@@ -4,11 +4,6 @@ The skill reads this on `/event-modeling` (no arg) to resume where you left off.
4
4
  Keep it current at the end of every working session.
5
5
  -->
6
6
 
7
- ---
8
- schemaVersion: 1
9
- model: {{model-name}}.em
10
- ---
11
-
12
7
  # Event Modeling Progress — {{Model Name}}
13
8
 
14
9
  - **Model file:** `{{model-name}}.em`
@@ -20,7 +15,6 @@ model: {{model-name}}.em
20
15
  - **Scope line:** {{one-line description of what's in/out of bounds for this model}}
21
16
  - **PRD / spec reference:** {{path, link, or "none"}}
22
17
  - **Headless/API model:** {{yes | no}}
23
- - **Regulatory scope:** {{e.g. PCI-DSS, SOX, HIPAA, or "none"}}
24
18
 
25
19
  ## Steps completed
26
20
  - [ ] 1. Brainstorm events
@@ -40,6 +34,6 @@ model: {{model-name}}.em
40
34
  - [ ] {{question}}
41
35
 
42
36
  ## Slice inventory
43
- | Slice | Id | Pattern | Doc status |
44
- |-------|-----|---------|------------|
45
- | {{Slice Name}} | {{slice-id}} | {{state-change/state-view/automation/translation}} | {{none / draft / reviewed / ready-to-implement}} |
37
+ | Slice | Pattern | Doc status |
38
+ |-------|---------|------------|
39
+ | {{Slice Name}} | {{State Change/View/Automation/Translation}} | {{none / draft / ready}} |
package/README.md CHANGED
@@ -98,6 +98,12 @@ read model. The empty API lane is dropped when a model has neither; pass `--keep
98
98
  to keep it.
99
99
 
100
100
  `@Persona` / `@Context` choose the row within a band (undeclared tags create a new row).
101
+ `view <Name> again [from "Event", …]` declares a LATER INSTANCE of an already-declared read
102
+ model — the Event Modeling device for keeping the timeline forward-only as a view evolves.
103
+ Instances are one logical view: the first declaration owns the `note` doc; each instance lists
104
+ the events that reach it there; instances are linked left-to-right with a continuity arrow, and
105
+ reactions (`processor … from "View"`) read the nearest instance at-or-before their slice.
106
+
101
107
  `view … from "Event"[, "Event2"]` declares which events feed a read model and draws the
102
108
  data-flow arrow. Arrows within a slice are inferred from the pattern; use `arrow A -> B` for
103
109
  anything extra (e.g. a read model feeding a different screen).
@@ -148,16 +154,19 @@ em render <file> -o out.png # PNG (in-process, no system deps)
148
154
  em render <file> --emit-dot # print the generated DOT instead of rendering
149
155
  em render <file> --keep-empty-lanes # don't collapse the API lane when empty
150
156
  em watch <file> [-o out.svg] # re-render on every save
151
- em validate <file> # check event-modeling rules + slice-doc frontmatter
152
- em migrate <model-dir> # one-time upgrade of a pre-1.0 model to the frontmatter standard
157
+ em validate <file> # check event-modeling rules (non-zero exit on errors)
153
158
  ```
154
159
 
155
- See [Slice docs & frontmatter](#slice-docs--frontmatter) below for the `em slice` command group.
156
-
157
160
  ## Validation rules (`em validate`)
158
161
 
159
162
  - two same-band elements in one slice (collision) → **error** (split into separate slices)
160
163
  - a read model whose `from "Event"` doesn't exist → **error**
164
+ - **time flows left to right** (the Two Laws): an event feeding an EARLIER view instance,
165
+ a reaction reading a view that only exists later, or an explicit backward `arrow` → **error**
166
+ (fix: add `view X again` at the point on the timeline where the event lands)
167
+ - `again` on a view with no earlier declaration → **error**; `again` on non-views → parse error
168
+ - multi-event slices always render as a FAN from the command (never event→event); fanned
169
+ arrows route around the column gutter so they cannot read as a chain
161
170
  - an automation/translation whose `from "<read model>"` doesn't exist → **error**
162
171
  - an `arrow` endpoint that matches no element → **error**
163
172
  - an automation/translation slice that also holds the command it triggers → **warning**
@@ -165,34 +174,10 @@ See [Slice docs & frontmatter](#slice-docs--frontmatter) below for the `em slice
165
174
  - a read model with no source event → **warning**
166
175
  - a name defined more than once and referenced → **warning** (resolves to first)
167
176
 
168
- ## Slice docs & frontmatter
169
-
170
- Slice design docs (`slices/<id>.md`, written during the skill's `slice` phase or via
171
- `em slice new`) carry a required YAML frontmatter block — a stable `id`, lifecycle `status`,
172
- integer `version`, and fields generated from the `.em` (`commands`/`events`/`readModels`/
173
- `contexts`/`personas`, plus `triggers`/`triggeredBy` for automation/translation) — so an AI agent
174
- can search and filter across a model with hundreds of slices from frontmatter alone, without
175
- reading every doc's body or re-parsing the `.em`:
176
-
177
- ```bash
178
- em slice new "Place Order" --pattern state-change # scaffold slices/place-order.md
179
- em slice sync place-order # after wiring note "slices/..." into the .em
180
- em slice list --status ready-to-implement
181
- em slice search --pattern automation --context Payment --format json
182
- em slice search --status ready-to-implement --format json --full # every field, not just a summary
183
- em slice update place-order --status reviewed --bump-version
184
- ```
185
-
186
- The doc body itself is **yours to define** — point `em.config.json` at a custom template
187
- (`{ "sliceTemplate": "path/to/template.md" }`) and `em` injects the frontmatter on top of it
188
- regardless of what sections you ask for. Full schema, lifecycle model, and the handoff contract a
189
- build/SDD tool should treat as authoritative once a slice is `ready-to-implement`:
190
- [docs/1.0.0-spec.md](docs/1.0.0-spec.md).
191
-
192
177
  ## Documentation
193
178
 
194
- - [docs/1.0.0-spec.md](docs/1.0.0-spec.md) — slice frontmatter standard, config, `em slice`/
195
- `em migrate`, and the SDD handoff contract
179
+ - [docs/timeline-model.md](docs/timeline-model.md) — the Two Laws of the Timeline (forward-only
180
+ validation, `view … again`)
196
181
  - [docs/why-dot-not-plantuml.md](docs/why-dot-not-plantuml.md) — why DOT + the strict-grid /
197
182
  self-drawn-edges architecture
198
183
  - [docs/features.md](docs/features.md) — full feature list and roadmap
@@ -224,7 +209,7 @@ Then, in Claude Code, run:
224
209
  /event-modeling # start (or resume) a guided session
225
210
  /event-modeling discover # steps 1–4: brainstorm events, timeline, commands, read models
226
211
  /event-modeling model # steps 5–7: swimlanes, patterns, completeness check
227
- /event-modeling slice # deep implementation specs, one per slice (frontmatter via `em slice new`)
212
+ /event-modeling slice # deep implementation specs, one per slice
228
213
  /event-modeling watch # open a live browser view for team modeling sessions
229
214
  /event-modeling validate # run em validate and resolve all diagnostics
230
215
  ```
package/dist/cli.js CHANGED
@@ -4,24 +4,18 @@ import { readFileSync, writeFileSync, existsSync } from "node:fs";
4
4
  import { cp, mkdir } from "node:fs/promises";
5
5
  import { basename, dirname, extname, join, resolve } from "node:path";
6
6
  import { fileURLToPath } from "node:url";
7
- import { Command, Option } from "commander";
7
+ import { Command } from "commander";
8
8
  import { compile } from "./pipeline.js";
9
9
  import { ParseError } from "./parser/parser.js";
10
10
  import { renderDot, formatFromPath } from "./render/render.js";
11
11
  import { watchFile } from "./render/watch.js";
12
12
  import { formatDiagnostic, hasErrors } from "./model/validate.js";
13
- import { loadSliceDocs } from "./model/sliceDoc.js";
14
- import { validateSliceDocs, VALID_PATTERNS, VALID_STATUSES } from "./model/validateSliceDocs.js";
15
- import { newSlice } from "./slice/generate.js";
16
- import { syncAll, syncSlice } from "./slice/sync.js";
17
- import { listSliceRecords, listSlices, searchSliceRecords, searchSlices, showSlice, updateSlice, } from "./slice/query.js";
18
- import { applyMigration, assertCleanWorkingTree, formatMigrationReport, planMigration, } from "./migrate/migrate.js";
19
13
  import { STARTER_EM } from "./templates.js";
20
14
  const program = new Command();
21
15
  program
22
16
  .name("em")
23
17
  .description("Event Modeling CLI — slice-first DSL rendered as a strict Graphviz grid")
24
- .version("1.0.0");
18
+ .version("1.1.1");
25
19
  program
26
20
  .command("init")
27
21
  .description("scaffold a starter .em model")
@@ -105,13 +99,8 @@ program
105
99
  .command("validate")
106
100
  .description("check a model against event-modeling rules")
107
101
  .argument("<file>", "input .em file")
108
- .option("--skip-slices", "don't validate slice docs (slices/*.md)")
109
- .action((file, opts) => {
110
- const { model, diagnostics } = compileFile(file);
111
- if (!opts.skipSlices) {
112
- const docs = loadSliceDocs(dirname(file));
113
- diagnostics.push(...validateSliceDocs(model, file, docs));
114
- }
102
+ .action((file) => {
103
+ const { diagnostics } = compileFile(file);
115
104
  printDiagnostics(diagnostics);
116
105
  if (hasErrors(diagnostics))
117
106
  process.exit(1);
@@ -139,198 +128,6 @@ skill
139
128
  console.log(`installed event-modeling skill → ${dest}`);
140
129
  console.log("in Claude Code, run /event-modeling to start a guided session");
141
130
  });
142
- const slice = program.command("slice").description("manage slice design docs (slices/*.md)");
143
- slice
144
- .command("new")
145
- .description("scaffold a new slice doc with injected frontmatter")
146
- .argument("<name>", 'slice title, e.g. "Place Order"')
147
- .option("--dir <path>", "model directory", ".")
148
- .option("--model <path>", "explicit .em file (default: the only .em in --dir)")
149
- .option("--config <path>", "explicit em.config.json path")
150
- .addOption(new Option("--pattern <pattern>", "slice pattern").choices(VALID_PATTERNS).default("state-change"))
151
- .option("--id <id>", "explicit slice id (default: kebab-case of the name)")
152
- .option("--slice-element <id>", "the .em Element.id this doc documents, if already known")
153
- .option("-f, --force", "overwrite an existing doc with this id")
154
- .action((name, opts) => {
155
- try {
156
- const result = newSlice(name, {
157
- dir: opts.dir,
158
- modelPath: opts.model,
159
- configPath: opts.config,
160
- pattern: opts.pattern,
161
- id: opts.id,
162
- sliceElement: opts.sliceElement,
163
- force: opts.force,
164
- });
165
- console.log(`wrote ${result.path} (id: ${result.id})`);
166
- }
167
- catch (e) {
168
- reportError(e);
169
- process.exit(1);
170
- }
171
- });
172
- slice
173
- .command("sync")
174
- .description("recompute generated frontmatter fields (commands/events/readModels/contexts/personas/triggers) from the .em")
175
- .argument("[id]", "slice id to sync (omit with --all)")
176
- .option("--dir <path>", "model directory", ".")
177
- .option("--model <path>", "explicit .em file")
178
- .option("--all", "sync every slice doc in the directory")
179
- .action((id, opts) => {
180
- try {
181
- if (opts.all) {
182
- const { synced, skipped } = syncAll({ dir: opts.dir, modelPath: opts.model });
183
- for (const s of synced)
184
- console.log(`synced ${s.path}${s.changed ? "" : " (no changes)"}`);
185
- for (const s of skipped)
186
- console.warn(` skip ${s.file}: ${s.reason}`);
187
- }
188
- else {
189
- if (!id) {
190
- console.error("pass a slice id, or --all");
191
- process.exit(1);
192
- }
193
- const result = syncSlice(id, { dir: opts.dir, modelPath: opts.model });
194
- console.log(`synced ${result.path}${result.changed ? "" : " (no changes)"}`);
195
- }
196
- }
197
- catch (e) {
198
- reportError(e);
199
- process.exit(1);
200
- }
201
- });
202
- slice
203
- .command("list")
204
- .description("list slice docs from frontmatter only (no .em parse, no body read)")
205
- .option("--dir <path>", "model directory", ".")
206
- .addOption(new Option("--status <status>", "filter by status").choices(VALID_STATUSES))
207
- .addOption(new Option("--pattern <pattern>", "filter by pattern").choices(VALID_PATTERNS))
208
- .option("--context <context>", "filter by context")
209
- .option("--tag <tag>", "filter by tag")
210
- .option("--format <fmt>", "table | json", "table")
211
- .option("--full", "emit every frontmatter field per slice (requires --format json)")
212
- .action((opts) => {
213
- const filter = {
214
- dir: opts.dir,
215
- status: opts.status,
216
- pattern: opts.pattern,
217
- context: opts.context,
218
- tag: opts.tag,
219
- };
220
- if (opts.full) {
221
- requireJson(opts.format);
222
- console.log(JSON.stringify(listSliceRecords(filter), null, 2));
223
- return;
224
- }
225
- printSlices(listSlices(filter), opts.format);
226
- });
227
- slice
228
- .command("show")
229
- .description("show one slice doc's frontmatter")
230
- .argument("<id>", "slice id")
231
- .option("--dir <path>", "model directory", ".")
232
- .option("--format <fmt>", "table | json", "table")
233
- .option("--body", "include the doc body")
234
- .action((id, opts) => {
235
- const doc = showSlice(id, { dir: opts.dir });
236
- if (!doc) {
237
- console.error(`no slice doc with id "${id}" found in ${opts.dir}`);
238
- process.exit(1);
239
- }
240
- if (opts.format === "json") {
241
- const payload = opts.body ? { ...doc.frontmatter, body: doc.body } : doc.frontmatter;
242
- console.log(JSON.stringify(payload, null, 2));
243
- return;
244
- }
245
- console.log(`# ${doc.file}`);
246
- for (const [k, v] of Object.entries(doc.frontmatter ?? {})) {
247
- console.log(`${k}: ${JSON.stringify(v)}`);
248
- }
249
- if (opts.body) {
250
- console.log("");
251
- console.log(doc.body);
252
- }
253
- });
254
- slice
255
- .command("search")
256
- .description("search slice docs by frontmatter only (title/tags/commands/events/readModels)")
257
- .argument("[query]", "free-text query", "")
258
- .option("--dir <path>", "model directory", ".")
259
- .addOption(new Option("--status <status>", "filter by status").choices(VALID_STATUSES))
260
- .addOption(new Option("--pattern <pattern>", "filter by pattern").choices(VALID_PATTERNS))
261
- .option("--context <context>", "filter by context")
262
- .option("--tag <tag>", "filter by tag")
263
- .option("--format <fmt>", "table | json", "table")
264
- .option("--full", "emit every frontmatter field per slice (requires --format json)")
265
- .action((query, opts) => {
266
- const filter = {
267
- dir: opts.dir,
268
- status: opts.status,
269
- pattern: opts.pattern,
270
- context: opts.context,
271
- tag: opts.tag,
272
- };
273
- if (opts.full) {
274
- requireJson(opts.format);
275
- console.log(JSON.stringify(searchSliceRecords(query, filter), null, 2));
276
- return;
277
- }
278
- printSlices(searchSlices(query, filter), opts.format);
279
- });
280
- slice
281
- .command("update")
282
- .description("write status/version changes back into a slice doc's frontmatter")
283
- .argument("<id>", "slice id")
284
- .option("--dir <path>", "model directory", ".")
285
- .addOption(new Option("--status <status>", "new status").choices(VALID_STATUSES))
286
- .option("--bump-version", "increment version by 1")
287
- .action((id, opts) => {
288
- try {
289
- const result = updateSlice(id, {
290
- dir: opts.dir,
291
- status: opts.status,
292
- bumpVersion: opts.bumpVersion,
293
- });
294
- console.log(`updated ${result.path}`);
295
- }
296
- catch (e) {
297
- reportError(e);
298
- process.exit(1);
299
- }
300
- });
301
- program
302
- .command("migrate")
303
- .description("upgrade a pre-1.0 model directory to the frontmatter standard (docs/1.0.0-spec.md)")
304
- .argument("<model-dir>", "model directory")
305
- .option("--model <path>", "explicit .em file")
306
- .option("--dry-run", "print the plan/report without writing")
307
- .option("--force", "proceed even with uncommitted changes or no git repo")
308
- .option("--report <path>", "write the migration report to a file instead of stdout")
309
- .action((dir, opts) => {
310
- try {
311
- if (!opts.dryRun)
312
- assertCleanWorkingTree(dir, opts.force);
313
- const plan = planMigration(dir, { modelPath: opts.model });
314
- const report = formatMigrationReport(plan);
315
- if (opts.report) {
316
- writeFileSync(opts.report, report);
317
- console.log(`wrote migration report -> ${opts.report}`);
318
- }
319
- else {
320
- console.log(report);
321
- }
322
- if (opts.dryRun) {
323
- console.log("dry run — no files written");
324
- return;
325
- }
326
- applyMigration(plan);
327
- console.log("migration applied");
328
- }
329
- catch (e) {
330
- reportError(e);
331
- process.exit(1);
332
- }
333
- });
334
131
  program.parseAsync().catch((e) => {
335
132
  reportError(e);
336
133
  process.exit(1);
@@ -383,24 +180,4 @@ function printDiagnostics(diags) {
383
180
  function reportError(e) {
384
181
  console.error(e instanceof Error ? e.message : String(e));
385
182
  }
386
- /** --full emits a shape only JSON can carry; fail loudly rather than silently ignoring it. */
387
- function requireJson(format) {
388
- if (format !== "json") {
389
- console.error("--full requires --format json");
390
- process.exit(1);
391
- }
392
- }
393
- function printSlices(results, format) {
394
- if (format === "json") {
395
- console.log(JSON.stringify(results, null, 2));
396
- return;
397
- }
398
- if (results.length === 0) {
399
- console.log("no matching slices");
400
- return;
401
- }
402
- for (const s of results) {
403
- console.log(`${s.id}\t${s.pattern ?? "?"}\t${s.status ?? "?"}\tv${s.version ?? "?"}\t${s.title}`);
404
- }
405
- }
406
183
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}