@milehimikey/em 1.19.7 → 1.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/event-modeling/SKILL.md +1 -1
- package/.claude/skills/event-modeling-conform/SKILL.md +1 -1
- package/.claude/skills/event-modeling-conform/reference/conform.md +29 -1
- package/.claude/skills/event-modeling-design/SKILL.md +33 -7
- package/.claude/skills/event-modeling-discover/SKILL.md +2 -2
- package/.claude/skills/event-modeling-discover/reference/extract.md +12 -0
- package/.claude/skills/event-modeling-engagement/SKILL.md +1 -1
- package/.claude/skills/event-modeling-implement/SKILL.md +7 -2
- package/.claude/skills/event-modeling-implement/reference/implement.md +73 -6
- package/.claude/skills/event-modeling-review/SKILL.md +19 -7
- package/.claude/skills/event-modeling-shared/reference/em-dsl.md +57 -5
- package/.claude/skills/event-modeling-shared/reference/methodology.md +51 -2
- package/.claude/skills/event-modeling-shared/reference/slice-doc-schema.md +2 -1
- package/.claude/skills/event-modeling-shared/templates/model-readme.md +10 -2
- package/.claude/skills/event-modeling-shared/templates/slice.md +12 -1
- package/.claude-plugin/marketplace.json +2 -2
- package/dist/catalog/build.js +6 -5
- package/dist/catalog/build.js.map +1 -1
- package/dist/catalog/coverage.d.ts +3 -0
- package/dist/catalog/coverage.js +12 -0
- package/dist/catalog/coverage.js.map +1 -1
- package/dist/catalog/docBadge.d.ts +16 -0
- package/dist/catalog/docBadge.js +50 -0
- package/dist/catalog/docBadge.js.map +1 -0
- package/dist/catalog/docLocate.d.ts +17 -0
- package/dist/catalog/docLocate.js +97 -0
- package/dist/catalog/docLocate.js.map +1 -0
- package/dist/catalog/docModelConsistencyValidate.js +9 -2
- package/dist/catalog/docModelConsistencyValidate.js.map +1 -1
- package/dist/catalog/frontmatterCoherenceValidate.js +16 -1
- package/dist/catalog/frontmatterCoherenceValidate.js.map +1 -1
- package/dist/catalog/invTokens.d.ts +49 -0
- package/dist/catalog/invTokens.js +94 -0
- package/dist/catalog/invTokens.js.map +1 -0
- package/dist/catalog/orphanedSliceDocValidate.js +15 -10
- package/dist/catalog/orphanedSliceDocValidate.js.map +1 -1
- package/dist/catalog/pages.js +48 -1
- package/dist/catalog/pages.js.map +1 -1
- package/dist/catalog/readSliceDoc.js +5 -4
- package/dist/catalog/readSliceDoc.js.map +1 -1
- package/dist/catalog/scenarioQualityValidate.js +2 -2
- package/dist/catalog/scenarioQualityValidate.js.map +1 -1
- package/dist/catalog/scenarios.d.ts +4 -0
- package/dist/catalog/scenarios.js +4 -1
- package/dist/catalog/scenarios.js.map +1 -1
- package/dist/catalog/sliceDoc.d.ts +54 -1
- package/dist/catalog/sliceDoc.js +99 -2
- package/dist/catalog/sliceDoc.js.map +1 -1
- package/dist/catalog/sliceDocRender.d.ts +3 -0
- package/dist/catalog/sliceDocRender.js +295 -0
- package/dist/catalog/sliceDocRender.js.map +1 -0
- package/dist/catalog/sliceSections.d.ts +18 -1
- package/dist/catalog/sliceSections.js +38 -4
- package/dist/catalog/sliceSections.js.map +1 -1
- package/dist/cli/coverage.d.ts +13 -23
- package/dist/cli/coverage.js +51 -91
- package/dist/cli/coverage.js.map +1 -1
- package/dist/cli/defer.js +3 -2
- package/dist/cli/defer.js.map +1 -1
- package/dist/cli/ledgerCheck.js +11 -8
- package/dist/cli/ledgerCheck.js.map +1 -1
- package/dist/cli/markImplemented.js +2 -2
- package/dist/cli/markImplemented.js.map +1 -1
- package/dist/cli/ratify.js +2 -2
- package/dist/cli/ratify.js.map +1 -1
- package/dist/cli/refsCheck.d.ts +52 -0
- package/dist/cli/refsCheck.js +129 -2
- package/dist/cli/refsCheck.js.map +1 -1
- package/dist/cli/render-inputs.d.ts +1 -1
- package/dist/cli/render-inputs.js +3 -2
- package/dist/cli/render-inputs.js.map +1 -1
- package/dist/cli/review.js +2 -2
- package/dist/cli/review.js.map +1 -1
- package/dist/cli/revise.js +2 -2
- package/dist/cli/revise.js.map +1 -1
- package/dist/cli/skillDirs.d.ts +22 -0
- package/dist/cli/skillDirs.js +24 -0
- package/dist/cli/skillDirs.js.map +1 -1
- package/dist/cli/sliceConform.d.ts +57 -1
- package/dist/cli/sliceConform.js +111 -10
- package/dist/cli/sliceConform.js.map +1 -1
- package/dist/cli/sliceIndex.d.ts +19 -3
- package/dist/cli/sliceIndex.js +81 -17
- package/dist/cli/sliceIndex.js.map +1 -1
- package/dist/cli/sliceNew.js +2 -0
- package/dist/cli/sliceNew.js.map +1 -1
- package/dist/cli/sliceStubAll.js +7 -2
- package/dist/cli/sliceStubAll.js.map +1 -1
- package/dist/cli/sliceSync.d.ts +12 -0
- package/dist/cli/sliceSync.js +42 -4
- package/dist/cli/sliceSync.js.map +1 -1
- package/dist/cli/status.d.ts +3 -4
- package/dist/cli/status.js +5 -4
- package/dist/cli/status.js.map +1 -1
- package/dist/cli/storylineSplit.d.ts +18 -0
- package/dist/cli/storylineSplit.js +110 -0
- package/dist/cli/storylineSplit.js.map +1 -0
- package/dist/cli/upgrade.js +39 -14
- package/dist/cli/upgrade.js.map +1 -1
- package/dist/cli/watchStoryline.d.ts +33 -0
- package/dist/cli/watchStoryline.js +65 -0
- package/dist/cli/watchStoryline.js.map +1 -0
- package/dist/cli.js +423 -71
- package/dist/cli.js.map +1 -1
- package/dist/emit/docJson.d.ts +99 -0
- package/dist/emit/docJson.js +197 -0
- package/dist/emit/docJson.js.map +1 -0
- package/dist/emit/json.d.ts +22 -1
- package/dist/emit/json.js +12 -1
- package/dist/emit/json.js.map +1 -1
- package/dist/emit/refsJson.d.ts +5 -3
- package/dist/emit/refsJson.js +5 -2
- package/dist/emit/refsJson.js.map +1 -1
- package/dist/mcp/server.js +43 -9
- package/dist/mcp/server.js.map +1 -1
- package/dist/model/continuation.d.ts +9 -0
- package/dist/model/continuation.js +30 -0
- package/dist/model/continuation.js.map +1 -1
- package/dist/model/edges.d.ts +1 -1
- package/dist/model/edges.js +8 -1
- package/dist/model/edges.js.map +1 -1
- package/dist/model/loadModel.d.ts +38 -0
- package/dist/model/loadModel.js +122 -0
- package/dist/model/loadModel.js.map +1 -0
- package/dist/model/model.d.ts +9 -4
- package/dist/model/model.js +4 -0
- package/dist/model/model.js.map +1 -1
- package/dist/model/rules.d.ts +31 -0
- package/dist/model/rules.js +31 -0
- package/dist/model/rules.js.map +1 -1
- package/dist/model/shapeLint.js +143 -0
- package/dist/model/shapeLint.js.map +1 -1
- package/dist/model/sliceDocIndex.js +13 -5
- package/dist/model/sliceDocIndex.js.map +1 -1
- package/dist/model/sliceDocPath.d.ts +19 -0
- package/dist/model/sliceDocPath.js +49 -0
- package/dist/model/sliceDocPath.js.map +1 -0
- package/dist/model/storylineMap.d.ts +20 -0
- package/dist/model/storylineMap.js +55 -0
- package/dist/model/storylineMap.js.map +1 -0
- package/dist/model/validate.d.ts +7 -0
- package/dist/model/validate.js +127 -0
- package/dist/model/validate.js.map +1 -1
- package/dist/parser/ast.d.ts +27 -0
- package/dist/parser/parser.d.ts +17 -1
- package/dist/parser/parser.js +142 -3
- package/dist/parser/parser.js.map +1 -1
- package/dist/pipeline.d.ts +16 -0
- package/dist/pipeline.js +19 -2
- package/dist/pipeline.js.map +1 -1
- package/dist/render/drawEdges.d.ts +5 -1
- package/dist/render/drawEdges.js +57 -4
- package/dist/render/drawEdges.js.map +1 -1
- package/dist/render/drawNotes.d.ts +4 -1
- package/dist/render/drawNotes.js +40 -10
- package/dist/render/drawNotes.js.map +1 -1
- package/dist/render/render.d.ts +11 -0
- package/dist/render/render.js +93 -10
- package/dist/render/render.js.map +1 -1
- package/dist/render/serve.d.ts +5 -0
- package/dist/render/serve.js +18 -2
- package/dist/render/serve.js.map +1 -1
- package/dist/render/sliceDiagram.js +3 -0
- package/dist/render/sliceDiagram.js.map +1 -1
- package/dist/render/sliceOverlay.d.ts +5 -1
- package/dist/render/sliceOverlay.js +24 -2
- package/dist/render/sliceOverlay.js.map +1 -1
- package/dist/render/sliceStatus.d.ts +8 -0
- package/dist/render/sliceStatus.js +22 -15
- package/dist/render/sliceStatus.js.map +1 -1
- package/dist/render/storylineBands.d.ts +0 -3
- package/dist/render/storylineBands.js +2 -22
- package/dist/render/storylineBands.js.map +1 -1
- package/dist/render/storylineDiagram.js +17 -69
- package/dist/render/storylineDiagram.js.map +1 -1
- package/dist/render/storylineMap.d.ts +18 -0
- package/dist/render/storylineMap.js +263 -0
- package/dist/render/storylineMap.js.map +1 -0
- package/dist/render/storylinePicker.d.ts +9 -0
- package/dist/render/storylinePicker.js +17 -0
- package/dist/render/storylinePicker.js.map +1 -0
- package/dist/render/svgGeometry.d.ts +9 -0
- package/dist/render/svgGeometry.js +16 -0
- package/dist/render/svgGeometry.js.map +1 -1
- package/dist/render/viewerHtml.js +1 -1
- package/dist/render/viewerHtml.js.map +1 -1
- package/dist/templates.d.ts +1 -1
- package/dist/templates.js +10 -2
- package/dist/templates.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/shared/reference/em-dsl.md +57 -5
- package/plugin/shared/reference/methodology.md +51 -2
- package/plugin/shared/reference/slice-doc-schema.md +2 -1
- package/plugin/shared/templates/model-readme.md +10 -2
- package/plugin/shared/templates/slice.md +12 -1
- package/plugin/skills/conform/SKILL.md +1 -1
- package/plugin/skills/conform/reference/conform.md +29 -1
- package/plugin/skills/design/SKILL.md +33 -7
- package/plugin/skills/discover/SKILL.md +2 -2
- package/plugin/skills/discover/reference/extract.md +12 -0
- package/plugin/skills/engagement/SKILL.md +1 -1
- package/plugin/skills/event-modeling/SKILL.md +1 -1
- package/plugin/skills/implement/SKILL.md +7 -2
- package/plugin/skills/implement/reference/implement.md +73 -6
- package/plugin/skills/review/SKILL.md +19 -7
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { NormalizedModel } from "../model/model.js";
|
|
2
|
+
import { RefsResult } from "../model/refs.js";
|
|
3
|
+
import { Diagnostic, serializeDiagnostic } from "../model/validate.js";
|
|
4
|
+
import { SliceDocExport } from "../catalog/docJoin.js";
|
|
5
|
+
import { Scenario } from "../catalog/scenarios.js";
|
|
6
|
+
import { OpenQuestionExport } from "../catalog/sliceDoc.js";
|
|
7
|
+
export declare const DOC_EXPORT_SCHEMA_VERSION = "1.0";
|
|
8
|
+
/** One field-table row as data — `name`/`type` are the first two columns of the generated table,
|
|
9
|
+
* `notes` is the remaining column(s) (Required+Rules for a command, Source/Notes for an event or
|
|
10
|
+
* view), joined with " · ", verbatim as `em slice sync` wrote them. */
|
|
11
|
+
export interface DocFieldRow {
|
|
12
|
+
name: string;
|
|
13
|
+
type: string;
|
|
14
|
+
notes: string;
|
|
15
|
+
}
|
|
16
|
+
/** The generated field table for one element of a slice (`buildSliceRegions` region), as data. */
|
|
17
|
+
export interface DocFieldGroup {
|
|
18
|
+
/** The element's display name (from the region's `**Command:**`/`**Event:**`/`- **View:**`
|
|
19
|
+
* marker line). */
|
|
20
|
+
element: string;
|
|
21
|
+
kind: "command" | "event" | "view";
|
|
22
|
+
fields: DocFieldRow[];
|
|
23
|
+
}
|
|
24
|
+
/** One invariant of a slice: its stable ID and rule text (`text` null when the declaration gives
|
|
25
|
+
* none), deduped by ID in declaration order. `source` says where the declaration lives — a model
|
|
26
|
+
* `invariant` line (`"model"`, canonical) or, following the same precedence `em coverage`/`em
|
|
27
|
+
* query invariant` apply, the doc's own `**INV-X:**` label (`"doc"`, the fallback a 1.13-style
|
|
28
|
+
* estate with no model `invariant` lines still exports). Model-declared ids win: a doc label for
|
|
29
|
+
* an id the model already declares is the normal `declared-in-both` restatement, not a second
|
|
30
|
+
* entry. */
|
|
31
|
+
export interface DocInvariant {
|
|
32
|
+
id: string;
|
|
33
|
+
text: string | null;
|
|
34
|
+
source: "model" | "doc";
|
|
35
|
+
}
|
|
36
|
+
/** One slice's structured doc, in `model.slices[]`. */
|
|
37
|
+
export interface DocJsonSlice {
|
|
38
|
+
key: string;
|
|
39
|
+
name: string;
|
|
40
|
+
/** Model-derived pattern (`classifySlicePattern`, same value the model export's `slice.pattern`
|
|
41
|
+
* carries) — NOT the frontmatter's authored `pattern:`. */
|
|
42
|
+
pattern: string;
|
|
43
|
+
/** The frontmatter join — byte-identical to the model export's `slice.doc` (SliceDocExport):
|
|
44
|
+
* `found`/`reason`, status, version, driftSignal, the review/ratification/shipped/conformed
|
|
45
|
+
* keys, scenarios, queuedForNext, … See catalog/docJoin.ts. */
|
|
46
|
+
frontmatter: SliceDocExport;
|
|
47
|
+
fields: DocFieldGroup[];
|
|
48
|
+
invariants: DocInvariant[];
|
|
49
|
+
/** The authored Given/When/Then scenarios (parseScenarios) — same array `frontmatter.scenarios`
|
|
50
|
+
* carries, surfaced here as a first-class section; `[]` when the doc has none. */
|
|
51
|
+
scenarios: Scenario[];
|
|
52
|
+
errorFlows: string[];
|
|
53
|
+
openQuestions: OpenQuestionExport[];
|
|
54
|
+
/** The doc body rendered to HTML (the existing `marked` path) — present only with
|
|
55
|
+
* `--include-html`; `null` when no usable doc is bound. */
|
|
56
|
+
html?: string | null;
|
|
57
|
+
}
|
|
58
|
+
/** One entry of the model-level invariant catalog: a declared INV id, the slice that declares it
|
|
59
|
+
* (`owningSlice` — first declaring slice in model order; `source` says whether that declaration
|
|
60
|
+
* is a model `invariant` line or the doc-label fallback, see `DocInvariant`), and every OTHER
|
|
61
|
+
* slice whose doc body mentions the id. */
|
|
62
|
+
export interface DocInvariantCatalogEntry {
|
|
63
|
+
id: string;
|
|
64
|
+
owningSlice: string;
|
|
65
|
+
source: "model" | "doc";
|
|
66
|
+
referencingSlices: string[];
|
|
67
|
+
}
|
|
68
|
+
export interface DocJsonExportDoc {
|
|
69
|
+
schemaVersion: string;
|
|
70
|
+
generator: {
|
|
71
|
+
name: string;
|
|
72
|
+
version: string;
|
|
73
|
+
};
|
|
74
|
+
source: {
|
|
75
|
+
path: string;
|
|
76
|
+
sha256: string;
|
|
77
|
+
};
|
|
78
|
+
model: {
|
|
79
|
+
name: string | null;
|
|
80
|
+
key: string;
|
|
81
|
+
invariants: DocInvariantCatalogEntry[];
|
|
82
|
+
slices: DocJsonSlice[];
|
|
83
|
+
};
|
|
84
|
+
diagnostics: ReturnType<typeof serializeDiagnostic>[];
|
|
85
|
+
}
|
|
86
|
+
export interface DocJsonExportResult {
|
|
87
|
+
/** Pretty-printed JSON, no trailing newline. */
|
|
88
|
+
text: string;
|
|
89
|
+
/** Same diagnostics the model export raises (compile + doc-join + note-binding). */
|
|
90
|
+
diagnostics: Diagnostic[];
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Build the `em export --doc-json` document for an already-validated (error-free) model. Layered
|
|
94
|
+
* on `buildExportDoc` so the doc join is resolved exactly once; `includeHtml` opts each slice's
|
|
95
|
+
* rendered HTML body in (excluded by default). See the module comment for the reuse contract.
|
|
96
|
+
*/
|
|
97
|
+
export declare function buildDocJsonExport(model: NormalizedModel, refs: RefsResult, diagnostics: Diagnostic[], source: string, path: string, opts?: {
|
|
98
|
+
includeHtml?: boolean;
|
|
99
|
+
}): DocJsonExportResult;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
// SPDX-License-Identifier: MIT
|
|
2
|
+
// GH #401: the structured slice-doc export — `em export --doc-json`. A SEPARATE surface from the
|
|
3
|
+
// model snapshot (`em export`, src/emit/json.ts): it serialises the slice DOCS' structure as data
|
|
4
|
+
// so a renderer (em-portal, the #396 doc-site layer, `em catalog`) never re-reads and re-parses
|
|
5
|
+
// `slices/*.md` itself. Per slice: the frontmatter join (the same doc-join object the model
|
|
6
|
+
// export's `slice.doc` carries — status, version, driftSignal, ratification/shipped/conformed
|
|
7
|
+
// keys, …) plus the parsed sections as data — the generated field tables, the model-declared
|
|
8
|
+
// invariants, the authored Given/When/Then scenarios, the Error Flows list and the Open Questions
|
|
9
|
+
// with their deferral state. Model-level: the invariant catalog (id -> owning slice -> the slices
|
|
10
|
+
// that reference it elsewhere).
|
|
11
|
+
//
|
|
12
|
+
// Own schema version, DOC_EXPORT_SCHEMA_VERSION — NOT the model export's SCHEMA_VERSION: the
|
|
13
|
+
// doc-structure shape evolves on its own cadence, and plain `em export` stays byte-identical.
|
|
14
|
+
//
|
|
15
|
+
// Every parse is REUSED, never re-derived ad hoc: the field rows come from `buildSliceRegions`
|
|
16
|
+
// (the same generated regions `em slice sync` writes) read back with `splitCells`; invariants
|
|
17
|
+
// from the model's own `invariant` lines, falling back to the doc's `**INV-X:**` declaring labels
|
|
18
|
+
// (coverage.ts's `extractDeclaredInvariantRules`) for ids the model does not declare — the same
|
|
19
|
+
// model-first precedence `em coverage`/`em query invariant` apply; scenarios from the doc-join's
|
|
20
|
+
// `parseScenarios`; error flows / open questions from sliceDoc.ts's section parsers; INV mentions
|
|
21
|
+
// from coverage.ts's `INV_TOKEN_RE`. The whole thing is layered on `buildExportDoc` so the doc
|
|
22
|
+
// join (and its continuation/cross-binding resolution) is computed exactly once, the same way the
|
|
23
|
+
// model export computes it.
|
|
24
|
+
import { dirname } from "node:path";
|
|
25
|
+
import { buildExportDoc } from "./json.js";
|
|
26
|
+
import { errorFlows, openQuestions } from "../catalog/sliceDoc.js";
|
|
27
|
+
import { readSliceDoc } from "../catalog/readSliceDoc.js";
|
|
28
|
+
import { buildSliceRegions, splitCells } from "../catalog/sliceSections.js";
|
|
29
|
+
import { extractDeclaredInvariantRules, INV_TOKEN_RE } from "../cli/coverage.js";
|
|
30
|
+
// 1.0 (GH #401): the first structured slice-doc export. Separate constant from the model export's
|
|
31
|
+
// SCHEMA_VERSION on purpose — a change to the model snapshot does not bump this, and a change to
|
|
32
|
+
// the doc-structure shape does not bump that.
|
|
33
|
+
export const DOC_EXPORT_SCHEMA_VERSION = "1.0";
|
|
34
|
+
/** The slice key a doc-join path (`slices/<key>.md` — the actual path the content came from,
|
|
35
|
+
* which for a cross-bound or continuation slice is another slice's) resolves to. */
|
|
36
|
+
function keyFromDocPath(path, fallback) {
|
|
37
|
+
const m = /slices\/(.+)\.md$/i.exec(path);
|
|
38
|
+
return m ? m[1] : fallback;
|
|
39
|
+
}
|
|
40
|
+
/** A generated region's element marker line (`**Command:**` / `**Event:**` / `- **View:**`) —
|
|
41
|
+
* one per element block. An alternatives region (GH #278, `**Records one of:**`) carries one
|
|
42
|
+
* `**Event:**` marker per alternative, so splitting on these yields one group per alternative. */
|
|
43
|
+
const ELEMENT_MARKER_RE = /^(?:\*\*(?:Command|Event):\*\*|- \*\*View:\*\*)\s+`([^`]+)`/;
|
|
44
|
+
/** Every data row of every markdown table in a generated region body, read back with the same
|
|
45
|
+
* `splitCells` the region writers and `structured-section-malformed` use. `name`/`type` are
|
|
46
|
+
* columns 0/1; `notes` is the rest joined with " · ". A region with no table (an element with no
|
|
47
|
+
* fields — the `_No fields…_` body) yields none. */
|
|
48
|
+
function parseFieldRows(body) {
|
|
49
|
+
const rows = [];
|
|
50
|
+
let i = 0;
|
|
51
|
+
while (i < body.length - 1) {
|
|
52
|
+
const isHeader = /^\s*\|/.test(body[i]) &&
|
|
53
|
+
/^\s*\|/.test(body[i + 1]) &&
|
|
54
|
+
splitCells(body[i + 1]).every((c) => /^:?-+:?$/.test(c));
|
|
55
|
+
if (!isHeader) {
|
|
56
|
+
i++;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
let j = i + 2;
|
|
60
|
+
for (; j < body.length && /^\s*\|/.test(body[j]); j++) {
|
|
61
|
+
const cells = splitCells(body[j]);
|
|
62
|
+
rows.push({ name: cells[0] ?? "", type: cells[1] ?? "", notes: cells.slice(2).join(" · ") });
|
|
63
|
+
}
|
|
64
|
+
i = j;
|
|
65
|
+
}
|
|
66
|
+
return rows;
|
|
67
|
+
}
|
|
68
|
+
/** The generated field tables of one slice, grouped by element, reusing `buildSliceRegions`.
|
|
69
|
+
* Each region's body is split at its `ELEMENT_MARKER_RE` lines, one group per marker — so an
|
|
70
|
+
* alternatives region (one `**Event:**` block per alternative, GH #278) yields one group per
|
|
71
|
+
* alternative, each with only its own rows, never the concatenation under the first name. A
|
|
72
|
+
* region with no marker (the "none"/placeholder body) yields no group. */
|
|
73
|
+
function fieldGroups(model, sliceIndex) {
|
|
74
|
+
const groups = [];
|
|
75
|
+
for (const region of buildSliceRegions(model, [sliceIndex])) {
|
|
76
|
+
if (region.kind === "invariants")
|
|
77
|
+
continue;
|
|
78
|
+
let element = null;
|
|
79
|
+
let chunk = [];
|
|
80
|
+
const flush = () => {
|
|
81
|
+
if (element !== null)
|
|
82
|
+
groups.push({ element, kind: region.kind, fields: parseFieldRows(chunk) });
|
|
83
|
+
chunk = [];
|
|
84
|
+
};
|
|
85
|
+
for (const line of region.body) {
|
|
86
|
+
const m = ELEMENT_MARKER_RE.exec(line);
|
|
87
|
+
if (m) {
|
|
88
|
+
flush();
|
|
89
|
+
element = m[1];
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
chunk.push(line);
|
|
93
|
+
}
|
|
94
|
+
flush();
|
|
95
|
+
}
|
|
96
|
+
return groups;
|
|
97
|
+
}
|
|
98
|
+
/** One slice's invariants, deduped by ID: the model-declared `invariant` lines on its
|
|
99
|
+
* command/event elements first (declaration order, `source: "model"` — the same lines
|
|
100
|
+
* `buildSliceRegions`' invariants region restates), then — the same model-first precedence
|
|
101
|
+
* `em coverage`/`em query invariant` apply — the doc's own `**INV-X:**` declaring labels
|
|
102
|
+
* (`extractDeclaredInvariantRules`, ownership sections only) as the fallback for ids the model
|
|
103
|
+
* does not declare (`source: "doc"`, how a 1.13-style estate's invariants still export). */
|
|
104
|
+
function sliceInvariants(slice, body) {
|
|
105
|
+
const out = [];
|
|
106
|
+
const seen = new Set();
|
|
107
|
+
for (const el of slice.elements) {
|
|
108
|
+
if (el.kind !== "command" && el.kind !== "event")
|
|
109
|
+
continue;
|
|
110
|
+
for (const inv of el.invariants ?? []) {
|
|
111
|
+
if (seen.has(inv.id))
|
|
112
|
+
continue;
|
|
113
|
+
seen.add(inv.id);
|
|
114
|
+
out.push({ id: inv.id, text: inv.rule ?? null, source: "model" });
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
for (const declared of extractDeclaredInvariantRules(body)) {
|
|
118
|
+
if (seen.has(declared.id))
|
|
119
|
+
continue;
|
|
120
|
+
seen.add(declared.id);
|
|
121
|
+
out.push({ id: declared.id, text: declared.text === "" ? null : declared.text, source: "doc" });
|
|
122
|
+
}
|
|
123
|
+
return out;
|
|
124
|
+
}
|
|
125
|
+
/** Does `body` mention the exact INV id as a whole token (coverage.ts's `INV_TOKEN_RE`)? */
|
|
126
|
+
function mentionsInvariant(body, id) {
|
|
127
|
+
for (const m of body.matchAll(INV_TOKEN_RE))
|
|
128
|
+
if (m[0] === id)
|
|
129
|
+
return true;
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Build the `em export --doc-json` document for an already-validated (error-free) model. Layered
|
|
134
|
+
* on `buildExportDoc` so the doc join is resolved exactly once; `includeHtml` opts each slice's
|
|
135
|
+
* rendered HTML body in (excluded by default). See the module comment for the reuse contract.
|
|
136
|
+
*/
|
|
137
|
+
export function buildDocJsonExport(model, refs, diagnostics, source, path, opts = {}) {
|
|
138
|
+
const { doc: fullDoc, diagnostics: allDiagnostics } = buildExportDoc(model, refs, diagnostics, source, path);
|
|
139
|
+
const baseDir = dirname(path);
|
|
140
|
+
// Read each slice's bound doc once: its body feeds error flows / open questions / HTML here and
|
|
141
|
+
// the invariant catalog's reference scan below.
|
|
142
|
+
const built = fullDoc.model.slices.map((s, sliceIndex) => {
|
|
143
|
+
const frontmatter = s.doc;
|
|
144
|
+
const docKey = keyFromDocPath(frontmatter.path, s.key);
|
|
145
|
+
const parsed = readSliceDoc(baseDir, docKey);
|
|
146
|
+
const body = parsed?.body ?? "";
|
|
147
|
+
const invariants = sliceInvariants(model.slices[sliceIndex], body);
|
|
148
|
+
const slice = {
|
|
149
|
+
key: s.key,
|
|
150
|
+
name: s.name,
|
|
151
|
+
pattern: s.pattern,
|
|
152
|
+
frontmatter,
|
|
153
|
+
fields: fieldGroups(model, sliceIndex),
|
|
154
|
+
invariants,
|
|
155
|
+
scenarios: frontmatter.scenarios ?? [],
|
|
156
|
+
errorFlows: errorFlows(body),
|
|
157
|
+
openQuestions: openQuestions(body),
|
|
158
|
+
};
|
|
159
|
+
if (opts.includeHtml)
|
|
160
|
+
slice.html = parsed?.html ?? null;
|
|
161
|
+
return { slice, body };
|
|
162
|
+
});
|
|
163
|
+
// Model-level invariant catalog: first slice to declare an id OWNS it (declaration order —
|
|
164
|
+
// model-declared and doc-declared alike, each entry keeping its declaration's `source`);
|
|
165
|
+
// every other slice whose doc body mentions the id REFERENCES it.
|
|
166
|
+
const owningSlice = new Map();
|
|
167
|
+
const idOrder = [];
|
|
168
|
+
for (const b of built) {
|
|
169
|
+
for (const inv of b.slice.invariants) {
|
|
170
|
+
if (owningSlice.has(inv.id))
|
|
171
|
+
continue;
|
|
172
|
+
owningSlice.set(inv.id, { key: b.slice.key, source: inv.source });
|
|
173
|
+
idOrder.push(inv.id);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
const invariants = idOrder.map((id) => {
|
|
177
|
+
const owner = owningSlice.get(id);
|
|
178
|
+
const referencingSlices = built
|
|
179
|
+
.filter((b) => b.slice.key !== owner.key && mentionsInvariant(b.body, id))
|
|
180
|
+
.map((b) => b.slice.key);
|
|
181
|
+
return { id, owningSlice: owner.key, source: owner.source, referencingSlices };
|
|
182
|
+
});
|
|
183
|
+
const docJson = {
|
|
184
|
+
schemaVersion: DOC_EXPORT_SCHEMA_VERSION,
|
|
185
|
+
generator: fullDoc.generator,
|
|
186
|
+
source: fullDoc.source,
|
|
187
|
+
model: {
|
|
188
|
+
name: fullDoc.model.name,
|
|
189
|
+
key: fullDoc.model.key,
|
|
190
|
+
invariants,
|
|
191
|
+
slices: built.map((b) => b.slice),
|
|
192
|
+
},
|
|
193
|
+
diagnostics: fullDoc.diagnostics,
|
|
194
|
+
};
|
|
195
|
+
return { text: JSON.stringify(docJson, null, 2), diagnostics: allDiagnostics };
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=docJson.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docJson.js","sourceRoot":"","sources":["../../src/emit/docJson.ts"],"names":[],"mappings":"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"}
|
package/dist/emit/json.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { RefsResult } from "../model/refs.js";
|
|
|
4
4
|
import { EdgeSource } from "../model/edges.js";
|
|
5
5
|
export declare const GENERATOR_NAME = "@milehimikey/em";
|
|
6
6
|
export declare const GENERATOR_VERSION: string;
|
|
7
|
-
export declare const SCHEMA_VERSION = "1.
|
|
7
|
+
export declare const SCHEMA_VERSION = "1.20";
|
|
8
8
|
export interface ExportResult {
|
|
9
9
|
/** Pretty-printed JSON, no trailing newline. */
|
|
10
10
|
text: string;
|
|
@@ -37,6 +37,12 @@ export interface ElementExport {
|
|
|
37
37
|
name: string;
|
|
38
38
|
ref: string | null;
|
|
39
39
|
}[] | null;
|
|
40
|
+
/** The `updates from` subset of `from` (schema 1.20, view only): events that keep rows current
|
|
41
|
+
* or remove them; `from` still carries every source. `null` when the view declares none. */
|
|
42
|
+
updatesFrom: {
|
|
43
|
+
name: string;
|
|
44
|
+
ref: string | null;
|
|
45
|
+
}[] | null;
|
|
40
46
|
persona: string | null;
|
|
41
47
|
context: string | null;
|
|
42
48
|
again: boolean;
|
|
@@ -100,6 +106,9 @@ export interface StorylineExport {
|
|
|
100
106
|
/** The storyline this one is declared `after`, as written; null when it declares none. */
|
|
101
107
|
after: string | null;
|
|
102
108
|
sliceKeys: string[];
|
|
109
|
+
/** GH #421 (schema 1.20): the storyline model file holding this storyline's slices, posix and
|
|
110
|
+
* relative to the root model's directory; `null` for an inline block. */
|
|
111
|
+
file: string | null;
|
|
103
112
|
}
|
|
104
113
|
export interface SliceExport {
|
|
105
114
|
key: string;
|
|
@@ -166,6 +175,18 @@ export interface ExportDoc {
|
|
|
166
175
|
slices: SliceExport[];
|
|
167
176
|
/** GH #277, schema 1.19: the `storyline` blocks in document order. */
|
|
168
177
|
storylines: StorylineExport[];
|
|
178
|
+
/** Schema 1.20: the flow between storylines (model/storylineMap.ts) — a declared `after`
|
|
179
|
+
* ("after", no elements) or elements of one storyline feeding another ("reads", the
|
|
180
|
+
* crossing source elements as `{ name, ref }`). Empty for a model without storylines. */
|
|
181
|
+
storylineEdges: {
|
|
182
|
+
from: string;
|
|
183
|
+
to: string;
|
|
184
|
+
kind: "after" | "reads";
|
|
185
|
+
elements: {
|
|
186
|
+
name: string;
|
|
187
|
+
ref: string;
|
|
188
|
+
}[];
|
|
189
|
+
}[];
|
|
169
190
|
arrows: unknown[];
|
|
170
191
|
edges: EdgeExport[];
|
|
171
192
|
};
|
package/dist/emit/json.js
CHANGED
|
@@ -16,6 +16,7 @@ import { collectTags, resolveByName, resolveTypeRef } from "../model/model.js";
|
|
|
16
16
|
import { serializeDiagnostic } from "../model/validate.js";
|
|
17
17
|
import { computeModelKey } from "../model/qualifiedRef.js";
|
|
18
18
|
import { resolveLoopsToTarget, semanticEdges } from "../model/edges.js";
|
|
19
|
+
import { storylineMap } from "../model/storylineMap.js";
|
|
19
20
|
import { classifySlicePattern } from "../catalog/classify.js";
|
|
20
21
|
import { resolveSliceDocJoin } from "../catalog/docJoin.js";
|
|
21
22
|
import { validateNoteBindings } from "../catalog/noteBindingValidate.js";
|
|
@@ -177,7 +178,7 @@ export const GENERATOR_VERSION = JSON.parse(readFileSync(join(dirname(fileURLToP
|
|
|
177
178
|
// 1.19 (GH #278), same schema version: `element.alternativeGroup: string | null` — for the events
|
|
178
179
|
// of one `event A | B @Ctx` line or one `oneof { … }` block, the ref of the group's first alternative (shared by all of them,
|
|
179
180
|
// so a consumer groups by equal value); null on every other element. Additive-only.
|
|
180
|
-
export const SCHEMA_VERSION = "1.
|
|
181
|
+
export const SCHEMA_VERSION = "1.20";
|
|
181
182
|
/**
|
|
182
183
|
* Export a single field, additively: `name`/`type` are exactly what today's consumers already
|
|
183
184
|
* see. `typeRef` is the new, purely-additive key — non-null only when `type` (bare or `[]`-
|
|
@@ -364,6 +365,9 @@ export function buildExportDoc(model, refs, diagnostics, source, path) {
|
|
|
364
365
|
issue: el.issue ?? null,
|
|
365
366
|
divergence: el.divergence ?? null,
|
|
366
367
|
from: fromOf(el),
|
|
368
|
+
updatesFrom: el.updatesFrom && el.updatesFrom.length > 0
|
|
369
|
+
? el.updatesFrom.map((name) => ({ name, ref: refOf(resolveByName(model.byName, name)) }))
|
|
370
|
+
: null,
|
|
367
371
|
persona: el.persona ?? null,
|
|
368
372
|
context: el.context ?? null,
|
|
369
373
|
again: el.again === true,
|
|
@@ -416,6 +420,13 @@ export function buildExportDoc(model, refs, diagnostics, source, path) {
|
|
|
416
420
|
source: st.source ?? null,
|
|
417
421
|
after: st.after ?? null,
|
|
418
422
|
sliceKeys: st.sliceIndexes.map((i) => sliceKeys[i]),
|
|
423
|
+
file: st.file ?? null,
|
|
424
|
+
})),
|
|
425
|
+
storylineEdges: storylineMap(model).edges.map((e) => ({
|
|
426
|
+
from: e.from,
|
|
427
|
+
to: e.to,
|
|
428
|
+
kind: e.kind,
|
|
429
|
+
elements: e.elementIds.map((id) => ({ name: model.byId.get(id)?.name ?? id, ref: refOf(id) })),
|
|
419
430
|
})),
|
|
420
431
|
arrows: model.arrows.map((a) => ({
|
|
421
432
|
from: a.from,
|
package/dist/emit/json.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/emit/json.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/emit/json.ts"],"names":[],"mappings":"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"}
|
package/dist/emit/refsJson.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import { RefsCheckResult } from "../cli/refsCheck.js";
|
|
1
|
+
import { OrderResult, RefsCheckResult } from "../cli/refsCheck.js";
|
|
2
2
|
export declare const REFS_SCHEMA_VERSION = "1.0";
|
|
3
|
-
/** Pretty-printed JSON, no trailing newline — the caller adds it, same convention as buildLedgerJson.
|
|
4
|
-
|
|
3
|
+
/** Pretty-printed JSON, no trailing newline — the caller adds it, same convention as buildLedgerJson.
|
|
4
|
+
* `orderResults` is omitted entirely when `null` (the default, `--check-order` not passed) so a
|
|
5
|
+
* plain `em refs --json` run stays byte-identical to before GH #399. */
|
|
6
|
+
export declare function buildRefsJson(result: RefsCheckResult, file: string, orderResults?: OrderResult[] | null): string;
|
package/dist/emit/refsJson.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { GENERATOR_NAME, GENERATOR_VERSION } from "./json.js";
|
|
2
2
|
export const REFS_SCHEMA_VERSION = "1.0";
|
|
3
|
-
/** Pretty-printed JSON, no trailing newline — the caller adds it, same convention as buildLedgerJson.
|
|
4
|
-
|
|
3
|
+
/** Pretty-printed JSON, no trailing newline — the caller adds it, same convention as buildLedgerJson.
|
|
4
|
+
* `orderResults` is omitted entirely when `null` (the default, `--check-order` not passed) so a
|
|
5
|
+
* plain `em refs --json` run stays byte-identical to before GH #399. */
|
|
6
|
+
export function buildRefsJson(result, file, orderResults = null) {
|
|
5
7
|
const doc = {
|
|
6
8
|
refsSchemaVersion: REFS_SCHEMA_VERSION,
|
|
7
9
|
generator: { name: GENERATOR_NAME, version: GENERATOR_VERSION },
|
|
@@ -13,6 +15,7 @@ export function buildRefsJson(result, file) {
|
|
|
13
15
|
results: result.results,
|
|
14
16
|
waived: result.waived,
|
|
15
17
|
ok: result.ok,
|
|
18
|
+
...(orderResults !== null ? { orderResults } : {}),
|
|
16
19
|
};
|
|
17
20
|
return JSON.stringify(doc, null, 2);
|
|
18
21
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refsJson.js","sourceRoot":"","sources":["../../src/emit/refsJson.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"refsJson.js","sourceRoot":"","sources":["../../src/emit/refsJson.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAE9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,CAAC;AAEzC;;yEAEyE;AACzE,MAAM,UAAU,aAAa,CAAC,MAAuB,EAAE,IAAY,EAAE,eAAqC,IAAI;IAC5G,MAAM,GAAG,GAAG;QACV,iBAAiB,EAAE,mBAAmB;QACtC,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,iBAAiB,EAAE;QAC/D,IAAI;QACJ,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE;QAC/D,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,GAAG,CAAC,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -25,11 +25,13 @@ import { dirname, join } from "node:path";
|
|
|
25
25
|
import { fileURLToPath } from "node:url";
|
|
26
26
|
import { z } from "zod";
|
|
27
27
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
28
|
-
import {
|
|
28
|
+
import { compileModelFile, compileModelText } from "../pipeline.js";
|
|
29
|
+
import { ModelLoadError } from "../model/loadModel.js";
|
|
29
30
|
import { ParseError } from "../parser/parser.js";
|
|
30
31
|
import { hasErrors } from "../model/validate.js";
|
|
31
32
|
import { diffModels } from "../model/diff.js";
|
|
32
33
|
import { buildExport, buildSliceExport, GENERATOR_VERSION } from "../emit/json.js";
|
|
34
|
+
import { buildDocJsonExport } from "../emit/docJson.js";
|
|
33
35
|
import { buildValidateJson, buildShapeJson, buildSliceReadyJson, buildValidateListJson, collectMarkers } from "../emit/validateJson.js";
|
|
34
36
|
import { buildDiffJson } from "../emit/diffJson.js";
|
|
35
37
|
import { runApiCheck } from "../cli/api.js";
|
|
@@ -122,29 +124,42 @@ function compileFile(file) {
|
|
|
122
124
|
return { error: `cannot read ${file}` };
|
|
123
125
|
}
|
|
124
126
|
try {
|
|
125
|
-
const { model, refs, diagnostics } =
|
|
127
|
+
const { model, refs, diagnostics } = compileModelFile(file); // GH #421: root + storyline model files
|
|
126
128
|
return { model, refs, source, diagnostics };
|
|
127
129
|
}
|
|
128
130
|
catch (e) {
|
|
129
131
|
if (e instanceof ParseError)
|
|
130
132
|
return { error: `parse error in ${file} ${e.message}` };
|
|
133
|
+
if (e instanceof ModelLoadError)
|
|
134
|
+
return { error: e.message };
|
|
131
135
|
throw e;
|
|
132
136
|
}
|
|
133
137
|
}
|
|
134
138
|
/** Same as compileFile(), but for source text already in hand (e.g. `git show`'s stdout) rather
|
|
135
139
|
* than a path to read — shared by the `diff` tool's git-revision form, which never has a real
|
|
136
140
|
* file on disk for the revision side. `label` is used only for the parse-error message. */
|
|
137
|
-
function compileText(source, label) {
|
|
141
|
+
function compileText(source, label, read) {
|
|
138
142
|
try {
|
|
139
|
-
const { model, refs, diagnostics } =
|
|
143
|
+
const { model, refs, diagnostics } = compileModelText(source, read, label); // GH #421
|
|
140
144
|
return { model, refs, source, diagnostics };
|
|
141
145
|
}
|
|
142
146
|
catch (e) {
|
|
143
147
|
if (e instanceof ParseError)
|
|
144
148
|
return { error: `parse error in ${label} ${e.message}` };
|
|
149
|
+
if (e instanceof ModelLoadError)
|
|
150
|
+
return { error: e.message };
|
|
145
151
|
throw e;
|
|
146
152
|
}
|
|
147
153
|
}
|
|
154
|
+
/** GH #421: storyline model files of `file` as of git revision `rev` (throws when git cannot). */
|
|
155
|
+
function gitReader(file, rev) {
|
|
156
|
+
return (rel) => {
|
|
157
|
+
const r = resolveRevision(join(dirname(file), rel), rev);
|
|
158
|
+
if (!r.ok)
|
|
159
|
+
throw new Error(r.message);
|
|
160
|
+
return r.content;
|
|
161
|
+
};
|
|
162
|
+
}
|
|
148
163
|
/** compileFile() plus the same fs-aware checks `em validate` folds into its own diagnostic set
|
|
149
164
|
* unconditionally (lineage, frontmatter coherence, note bindings, doc↔model consistency,
|
|
150
165
|
* orphaned slice docs — MIL-183) — shared by the `validate`, `slice_ready`, and `list_markers`
|
|
@@ -319,9 +334,24 @@ export function createServer() {
|
|
|
319
334
|
"— read it rather than re-deriving connections from slice membership), and export-stable " +
|
|
320
335
|
"refs. Refuses (tool error) when the model has " +
|
|
321
336
|
"errors, same as the CLI — call `validate` first, or use `export_slice` to read one " +
|
|
322
|
-
"already-ratified slice while the rest of the model is still broken."
|
|
323
|
-
|
|
324
|
-
|
|
337
|
+
"already-ratified slice while the rest of the model is still broken. With `docJson: true` " +
|
|
338
|
+
"(GH #401) it returns the structured slice-doc export instead (`em export --doc-json`): " +
|
|
339
|
+
"per slice the frontmatter join plus the parsed sections as data (fields, invariants, " +
|
|
340
|
+
"scenarios, error flows, open questions) and a model-level invariant catalog, under its " +
|
|
341
|
+
"own `DOC_EXPORT_SCHEMA_VERSION`. `includeHtml: true` adds each slice doc's rendered HTML " +
|
|
342
|
+
"body (excluded by default, and only read with `docJson`).",
|
|
343
|
+
inputSchema: {
|
|
344
|
+
file: fileParam,
|
|
345
|
+
docJson: z
|
|
346
|
+
.boolean()
|
|
347
|
+
.optional()
|
|
348
|
+
.describe("return the structured slice-doc export (`em export --doc-json`) instead of the model snapshot"),
|
|
349
|
+
includeHtml: z
|
|
350
|
+
.boolean()
|
|
351
|
+
.optional()
|
|
352
|
+
.describe("with `docJson`, include each slice doc's rendered HTML body (excluded by default)"),
|
|
353
|
+
},
|
|
354
|
+
}, async ({ file, docJson, includeHtml }) => {
|
|
325
355
|
const compiled = compileFile(file);
|
|
326
356
|
if ("error" in compiled)
|
|
327
357
|
return errorResult(compiled.error);
|
|
@@ -329,6 +359,10 @@ export function createServer() {
|
|
|
329
359
|
if (hasErrors(diagnostics)) {
|
|
330
360
|
return errorResult(`not exporting: "${file}" has errors — run \`validate\` first and fix them`);
|
|
331
361
|
}
|
|
362
|
+
if (docJson) {
|
|
363
|
+
const exportedDoc = buildDocJsonExport(model, refs, diagnostics, source, file, { includeHtml });
|
|
364
|
+
return textResult(exportedDoc.text);
|
|
365
|
+
}
|
|
332
366
|
const exported = buildExport(model, refs, diagnostics, source, file);
|
|
333
367
|
return textResult(exported.text);
|
|
334
368
|
});
|
|
@@ -593,13 +627,13 @@ export function createServer() {
|
|
|
593
627
|
if (!oldRev.ok)
|
|
594
628
|
return errorResult(oldRev.message);
|
|
595
629
|
oldLabel = `${plan.file}@${plan.from}`;
|
|
596
|
-
oldResult = compileText(oldRev.content, oldLabel);
|
|
630
|
+
oldResult = compileText(oldRev.content, oldLabel, gitReader(plan.file, plan.from));
|
|
597
631
|
if (plan.to) {
|
|
598
632
|
const newRev = resolveRevision(plan.file, plan.to);
|
|
599
633
|
if (!newRev.ok)
|
|
600
634
|
return errorResult(newRev.message);
|
|
601
635
|
newLabel = `${plan.file}@${plan.to}`;
|
|
602
|
-
newResult = compileText(newRev.content, newLabel);
|
|
636
|
+
newResult = compileText(newRev.content, newLabel, gitReader(plan.file, plan.to));
|
|
603
637
|
}
|
|
604
638
|
else {
|
|
605
639
|
newLabel = plan.file;
|