@bett3r-dev/blueprint-schema 1.6.0 → 1.7.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.
Files changed (201) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/build/cjs/apply-design.d.ts +5 -5
  3. package/build/cjs/apply-design.d.ts.map +1 -1
  4. package/build/cjs/apply-design.js +10 -1
  5. package/build/cjs/apply-design.js.map +1 -1
  6. package/build/cjs/apply-overrides.d.ts +3 -3
  7. package/build/cjs/apply-overrides.d.ts.map +1 -1
  8. package/build/cjs/apply-overrides.js +3 -0
  9. package/build/cjs/apply-overrides.js.map +1 -1
  10. package/build/cjs/card-channel.d.ts +18 -0
  11. package/build/cjs/card-channel.d.ts.map +1 -0
  12. package/build/cjs/card-channel.js +30 -0
  13. package/build/cjs/card-channel.js.map +1 -0
  14. package/build/cjs/convergence.d.ts +2 -2
  15. package/build/cjs/convergence.d.ts.map +1 -1
  16. package/build/cjs/coverage-links.d.ts +27 -0
  17. package/build/cjs/coverage-links.d.ts.map +1 -0
  18. package/build/cjs/coverage-links.js +117 -0
  19. package/build/cjs/coverage-links.js.map +1 -0
  20. package/build/cjs/design.d.ts +32 -2
  21. package/build/cjs/design.d.ts.map +1 -1
  22. package/build/cjs/design.js +27 -2
  23. package/build/cjs/design.js.map +1 -1
  24. package/build/cjs/diagnostics.d.ts +2 -2
  25. package/build/cjs/diagnostics.d.ts.map +1 -1
  26. package/build/cjs/edges.d.ts +2 -2
  27. package/build/cjs/edges.d.ts.map +1 -1
  28. package/build/cjs/edges.js +2 -1
  29. package/build/cjs/edges.js.map +1 -1
  30. package/build/cjs/entry-points.d.ts +2 -2
  31. package/build/cjs/entry-points.d.ts.map +1 -1
  32. package/build/cjs/find-orphan-nodes.d.ts +3 -3
  33. package/build/cjs/find-orphan-nodes.d.ts.map +1 -1
  34. package/build/cjs/flow-traversal.d.ts +3 -3
  35. package/build/cjs/flow-traversal.d.ts.map +1 -1
  36. package/build/cjs/fork-scenarios.d.ts +44 -0
  37. package/build/cjs/fork-scenarios.d.ts.map +1 -0
  38. package/build/cjs/fork-scenarios.js +83 -0
  39. package/build/cjs/fork-scenarios.js.map +1 -0
  40. package/build/cjs/graph.d.ts +2 -2
  41. package/build/cjs/graph.d.ts.map +1 -1
  42. package/build/cjs/graph.js.map +1 -1
  43. package/build/cjs/handler-scope.d.ts +3 -3
  44. package/build/cjs/handler-scope.d.ts.map +1 -1
  45. package/build/cjs/index.d.ts +5 -0
  46. package/build/cjs/index.d.ts.map +1 -1
  47. package/build/cjs/index.js +5 -0
  48. package/build/cjs/index.js.map +1 -1
  49. package/build/cjs/invariants.d.ts +26 -0
  50. package/build/cjs/invariants.d.ts.map +1 -0
  51. package/build/cjs/invariants.js +39 -0
  52. package/build/cjs/invariants.js.map +1 -0
  53. package/build/cjs/map-links.d.ts +1 -0
  54. package/build/cjs/map-links.d.ts.map +1 -1
  55. package/build/cjs/map-links.js +14 -1
  56. package/build/cjs/map-links.js.map +1 -1
  57. package/build/cjs/map-structure.d.ts +171 -2
  58. package/build/cjs/map-structure.d.ts.map +1 -1
  59. package/build/cjs/map-structure.js +46 -4
  60. package/build/cjs/map-structure.js.map +1 -1
  61. package/build/cjs/map-vocabulary.d.ts +29 -1
  62. package/build/cjs/map-vocabulary.d.ts.map +1 -1
  63. package/build/cjs/map-vocabulary.js +72 -2
  64. package/build/cjs/map-vocabulary.js.map +1 -1
  65. package/build/cjs/nodes.d.ts +11 -1
  66. package/build/cjs/nodes.d.ts.map +1 -1
  67. package/build/cjs/nodes.js +4 -2
  68. package/build/cjs/nodes.js.map +1 -1
  69. package/build/cjs/ops.d.ts +43 -10
  70. package/build/cjs/ops.d.ts.map +1 -1
  71. package/build/cjs/ops.js +1 -1
  72. package/build/cjs/ops.js.map +1 -1
  73. package/build/cjs/overrides.d.ts +5 -2
  74. package/build/cjs/overrides.d.ts.map +1 -1
  75. package/build/cjs/overrides.js.map +1 -1
  76. package/build/cjs/package.json +1 -0
  77. package/build/cjs/reachability.d.ts +4 -4
  78. package/build/cjs/reachability.d.ts.map +1 -1
  79. package/build/cjs/reachability.js +4 -0
  80. package/build/cjs/reachability.js.map +1 -1
  81. package/build/cjs/reality-check.d.ts +4 -4
  82. package/build/cjs/reality-check.d.ts.map +1 -1
  83. package/build/cjs/reality-check.js +9 -0
  84. package/build/cjs/reality-check.js.map +1 -1
  85. package/build/cjs/session.d.ts +21 -0
  86. package/build/cjs/session.d.ts.map +1 -1
  87. package/build/cjs/session.js +19 -0
  88. package/build/cjs/session.js.map +1 -1
  89. package/build/cjs/spec.d.ts +137 -0
  90. package/build/cjs/spec.d.ts.map +1 -0
  91. package/build/cjs/spec.js +462 -0
  92. package/build/cjs/spec.js.map +1 -0
  93. package/build/cjs/topology.d.ts +2 -2
  94. package/build/cjs/topology.d.ts.map +1 -1
  95. package/build/cjs/topology.js +2 -0
  96. package/build/cjs/topology.js.map +1 -1
  97. package/build/cjs/validate-design.d.ts +3 -3
  98. package/build/cjs/validate-design.d.ts.map +1 -1
  99. package/build/cjs/validate-design.js +34 -0
  100. package/build/cjs/validate-design.js.map +1 -1
  101. package/build/esm/apply-design.d.ts +5 -5
  102. package/build/esm/apply-design.d.ts.map +1 -1
  103. package/build/esm/apply-design.js +10 -1
  104. package/build/esm/apply-design.js.map +1 -1
  105. package/build/esm/apply-overrides.d.ts +3 -3
  106. package/build/esm/apply-overrides.d.ts.map +1 -1
  107. package/build/esm/apply-overrides.js +3 -0
  108. package/build/esm/apply-overrides.js.map +1 -1
  109. package/build/esm/card-channel.d.ts +18 -0
  110. package/build/esm/card-channel.d.ts.map +1 -0
  111. package/build/esm/card-channel.js +25 -0
  112. package/build/esm/card-channel.js.map +1 -0
  113. package/build/esm/convergence.d.ts +2 -2
  114. package/build/esm/convergence.d.ts.map +1 -1
  115. package/build/esm/coverage-links.d.ts +27 -0
  116. package/build/esm/coverage-links.d.ts.map +1 -0
  117. package/build/esm/coverage-links.js +113 -0
  118. package/build/esm/coverage-links.js.map +1 -0
  119. package/build/esm/design.d.ts +32 -2
  120. package/build/esm/design.d.ts.map +1 -1
  121. package/build/esm/design.js +25 -1
  122. package/build/esm/design.js.map +1 -1
  123. package/build/esm/diagnostics.d.ts +2 -2
  124. package/build/esm/diagnostics.d.ts.map +1 -1
  125. package/build/esm/edges.d.ts +2 -2
  126. package/build/esm/edges.d.ts.map +1 -1
  127. package/build/esm/edges.js +2 -1
  128. package/build/esm/edges.js.map +1 -1
  129. package/build/esm/entry-points.d.ts +2 -2
  130. package/build/esm/entry-points.d.ts.map +1 -1
  131. package/build/esm/find-orphan-nodes.d.ts +3 -3
  132. package/build/esm/find-orphan-nodes.d.ts.map +1 -1
  133. package/build/esm/flow-traversal.d.ts +3 -3
  134. package/build/esm/flow-traversal.d.ts.map +1 -1
  135. package/build/esm/fork-scenarios.d.ts +44 -0
  136. package/build/esm/fork-scenarios.d.ts.map +1 -0
  137. package/build/esm/fork-scenarios.js +78 -0
  138. package/build/esm/fork-scenarios.js.map +1 -0
  139. package/build/esm/graph.d.ts +2 -2
  140. package/build/esm/graph.d.ts.map +1 -1
  141. package/build/esm/graph.js.map +1 -1
  142. package/build/esm/handler-scope.d.ts +3 -3
  143. package/build/esm/handler-scope.d.ts.map +1 -1
  144. package/build/esm/index.d.ts +5 -0
  145. package/build/esm/index.d.ts.map +1 -1
  146. package/build/esm/index.js +5 -0
  147. package/build/esm/index.js.map +1 -1
  148. package/build/esm/invariants.d.ts +26 -0
  149. package/build/esm/invariants.d.ts.map +1 -0
  150. package/build/esm/invariants.js +36 -0
  151. package/build/esm/invariants.js.map +1 -0
  152. package/build/esm/map-links.d.ts +1 -0
  153. package/build/esm/map-links.d.ts.map +1 -1
  154. package/build/esm/map-links.js +14 -1
  155. package/build/esm/map-links.js.map +1 -1
  156. package/build/esm/map-structure.d.ts +171 -2
  157. package/build/esm/map-structure.d.ts.map +1 -1
  158. package/build/esm/map-structure.js +42 -3
  159. package/build/esm/map-structure.js.map +1 -1
  160. package/build/esm/map-vocabulary.d.ts +29 -1
  161. package/build/esm/map-vocabulary.d.ts.map +1 -1
  162. package/build/esm/map-vocabulary.js +64 -1
  163. package/build/esm/map-vocabulary.js.map +1 -1
  164. package/build/esm/nodes.d.ts +11 -1
  165. package/build/esm/nodes.d.ts.map +1 -1
  166. package/build/esm/nodes.js +4 -2
  167. package/build/esm/nodes.js.map +1 -1
  168. package/build/esm/ops.d.ts +43 -10
  169. package/build/esm/ops.d.ts.map +1 -1
  170. package/build/esm/ops.js +1 -1
  171. package/build/esm/ops.js.map +1 -1
  172. package/build/esm/overrides.d.ts +5 -2
  173. package/build/esm/overrides.d.ts.map +1 -1
  174. package/build/esm/overrides.js.map +1 -1
  175. package/build/esm/reachability.d.ts +4 -4
  176. package/build/esm/reachability.d.ts.map +1 -1
  177. package/build/esm/reachability.js +4 -0
  178. package/build/esm/reachability.js.map +1 -1
  179. package/build/esm/reality-check.d.ts +4 -4
  180. package/build/esm/reality-check.d.ts.map +1 -1
  181. package/build/esm/reality-check.js +9 -0
  182. package/build/esm/reality-check.js.map +1 -1
  183. package/build/esm/session.d.ts +21 -0
  184. package/build/esm/session.d.ts.map +1 -1
  185. package/build/esm/session.js +17 -0
  186. package/build/esm/session.js.map +1 -1
  187. package/build/esm/spec.d.ts +137 -0
  188. package/build/esm/spec.d.ts.map +1 -0
  189. package/build/esm/spec.js +449 -0
  190. package/build/esm/spec.js.map +1 -0
  191. package/build/esm/topology.d.ts +2 -2
  192. package/build/esm/topology.d.ts.map +1 -1
  193. package/build/esm/topology.js +2 -0
  194. package/build/esm/topology.js.map +1 -1
  195. package/build/esm/validate-design.d.ts +3 -3
  196. package/build/esm/validate-design.d.ts.map +1 -1
  197. package/build/esm/validate-design.js +35 -1
  198. package/build/esm/validate-design.js.map +1 -1
  199. package/build/tsconfig.tsbuildinfo +1 -1
  200. package/package.json +14 -4
  201. package/schema/map.schema.json +62 -1
@@ -0,0 +1,462 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRACER_BULLET_KIND = exports.SPEC_REQUIRED_SECTIONS = exports.SPEC_SECTION_IDS = exports.SPEC_VERSION = void 0;
4
+ exports.emptySpec = emptySpec;
5
+ exports.isSpecSectionId = isSpecSectionId;
6
+ exports.specPostBatch = specPostBatch;
7
+ exports.specStrikeBatch = specStrikeBatch;
8
+ exports.foldSpecBatch = foldSpecBatch;
9
+ exports.specSourceSeq = specSourceSeq;
10
+ exports.renderBlueprint = renderBlueprint;
11
+ exports.renderDecisions = renderDecisions;
12
+ exports.checkSpecCompleteness = checkSpecCompleteness;
13
+ exports.blueprintFileOf = blueprintFileOf;
14
+ const apply_design_js_1 = require("./apply-design.js");
15
+ const design_js_1 = require("./design.js");
16
+ const fork_scenarios_js_1 = require("./fork-scenarios.js");
17
+ const graph_js_1 = require("./graph.js");
18
+ const map_links_js_1 = require("./map-links.js");
19
+ exports.SPEC_VERSION = 1;
20
+ // The written sections in spine order, spelled as the spec-post payload carries them. The decision tree's
21
+ // written entries are its rationales; the tree itself, the artifacts and the provenance header are derived (F7).
22
+ exports.SPEC_SECTION_IDS = [
23
+ 'problem',
24
+ 'solution',
25
+ 'userStories',
26
+ 'decisionTree',
27
+ 'implementationDecisions',
28
+ 'testingDecisions',
29
+ 'risks',
30
+ 'outOfScope',
31
+ 'provenance'
32
+ ];
33
+ function emptySpec() {
34
+ return { specVersion: exports.SPEC_VERSION, entries: [] };
35
+ }
36
+ const recordOf = (value) => value !== null && typeof value === 'object' && !Array.isArray(value) ? value : undefined;
37
+ const listOf = (value) => Array.isArray(value) ? value : [];
38
+ const isText = (value) => typeof value === 'string' && value.length > 0;
39
+ function isSpecSectionId(value) {
40
+ return typeof value === 'string' && exports.SPEC_SECTION_IDS.includes(value);
41
+ }
42
+ const isTextList = (value) => Array.isArray(value) && value.every(isText);
43
+ const isTextRecord = (value) => {
44
+ const record = recordOf(value);
45
+ return record !== undefined && Object.values(record).every(field => typeof field === 'string');
46
+ };
47
+ // A posted entry keeps only the fields SpecEntry names; one this build cannot read folds nothing.
48
+ function postedSpecEntry(value) {
49
+ const entry = recordOf(value);
50
+ if (entry === undefined || !isText(entry.id) || !isSpecSectionId(entry.section) || !isText(entry.kind)
51
+ || typeof entry.body !== 'string')
52
+ return [];
53
+ return [{
54
+ id: entry.id,
55
+ section: entry.section,
56
+ kind: entry.kind,
57
+ ...(typeof entry.title === 'string' ? { title: entry.title } : {}),
58
+ body: entry.body,
59
+ ...(isTextList(entry.refs) ? { refs: [...entry.refs] } : {}),
60
+ ...(isTextRecord(entry.fields) ? { fields: { ...entry.fields } } : {})
61
+ }];
62
+ }
63
+ /** A spec-post's payload as a batch: every readable entry, in payload order. */
64
+ function specPostBatch(payload) {
65
+ return { posted: listOf(recordOf(payload)?.entries).flatMap(postedSpecEntry), struck: [] };
66
+ }
67
+ /** A spec-strike's payload as a batch: every readable id with its reason. */
68
+ function specStrikeBatch(payload) {
69
+ const struck = listOf(recordOf(payload)?.entries).flatMap((value) => {
70
+ const entry = recordOf(value);
71
+ return isText(entry?.id) && typeof entry.reason === 'string' ? [{ id: entry.id, reason: entry.reason }] : [];
72
+ });
73
+ return { posted: [], struck };
74
+ }
75
+ function upsertSpecEntry(spec, entry) {
76
+ return spec.entries.some(held => held.id === entry.id)
77
+ ? { ...spec, entries: spec.entries.map(held => held.id === entry.id ? entry : held) }
78
+ : { ...spec, entries: [...spec.entries, entry] };
79
+ }
80
+ function strikeSpecEntry(spec, { id, reason }) {
81
+ return { ...spec, entries: spec.entries.map(held => held.id === id ? { ...held, struck: { reason } } : held) };
82
+ }
83
+ /**
84
+ * The one spec fold, which both replay copies call (F5, F6). A post upserts by id in place, so a re-post keeps
85
+ * the entry's position and clears a strike; a strike of an id the spec does not hold changes nothing.
86
+ */
87
+ function foldSpecBatch(current, batch) {
88
+ return batch.struck.reduce(strikeSpecEntry, batch.posted.reduce(upsertSpecEntry, current));
89
+ }
90
+ // F8: the seq the rendered state stands at, the last op that can change a rendered byte. A comment, a
91
+ // resolve, an undo of a comment and every verb no fold reads are left out, so appending one moves the
92
+ // head seq and leaves the source seq, and with it both files, as they were.
93
+ const RENDERED_VERB_PREFIXES = ['map-', 'spec-'];
94
+ const RENDERED_DESIGN_VERBS = new Set(['propose', 'modify', 'remove', 'reclassify']);
95
+ function rendersState(op) {
96
+ if (RENDERED_DESIGN_VERBS.has(op.verb) || RENDERED_VERB_PREFIXES.some(prefix => op.verb.startsWith(prefix)))
97
+ return true;
98
+ return op.verb === 'undo' && recordOf(op.payload)?.undoneVerb !== 'comment';
99
+ }
100
+ function specSourceSeq(ops) {
101
+ return ops.reduce((seq, op) => rendersState(op) ? Math.max(seq, op.seq) : seq, 0);
102
+ }
103
+ // F12: map-tree.py's RESOLVED_BY_FALLBACK, the census grammar of the `resolved_by:` line.
104
+ const RESOLVED_BY = { owner: 'human', code: 'code', recommendation: 'recommendation' };
105
+ // decisions.md names who decided: the owner, the owner assenting to the recommendation, or code.
106
+ const DECIDED_BY = { owner: 'owner', recommendation: 'recommendation-assented', code: 'code' };
107
+ const NONE = '_None._';
108
+ const STEP_KEYWORDS = [['given', 'Given'], ['when', 'When'], ['then', 'Then']];
109
+ /** Every line of `text` after the first, indented, so a multi-line body stays inside its list item. */
110
+ const hanging = (text, indent) => text.split('\n').join(`\n${indent}`);
111
+ const bullet = (text) => `- ${hanging(text, ' ')}`;
112
+ // map-tree.py's normalise (each line right-stripped, blank lines dropped at either end), then one closing newline.
113
+ function documentOf(blocks) {
114
+ const lines = blocks.join('\n').split('\n').map(line => line.trimEnd());
115
+ while (lines.length > 0 && lines[0] === '')
116
+ lines.shift();
117
+ while (lines.length > 0 && lines[lines.length - 1] === '')
118
+ lines.pop();
119
+ return `${lines.join('\n')}\n`;
120
+ }
121
+ function section(heading, lines) {
122
+ const body = [...lines];
123
+ while (body.length > 0 && body[body.length - 1] === '')
124
+ body.pop();
125
+ return ['', `## ${heading}`, '', ...(body.length > 0 ? body : [NONE])];
126
+ }
127
+ const headerOf = (title, manifest, sourceSeq) => [
128
+ `# ${title} — ${manifest.name}`,
129
+ '',
130
+ `Session: ${manifest.sessionId}`,
131
+ `Tickets: ${manifest.ticketRefs.length > 0 ? manifest.ticketRefs.join(', ') : 'none'}`,
132
+ `Source seq: ${sourceSeq}`
133
+ ];
134
+ // A struck entry is not part of the spec; the rest keep the order they were first posted in.
135
+ function liveSpecOf(spec) {
136
+ const entries = spec.entries.filter(entry => entry.struck === undefined);
137
+ return { of: wanted => entries.filter(entry => entry.section === wanted) };
138
+ }
139
+ /** An entry's lead line (its title, when it has one, then its body) and one line per named field, by name. */
140
+ function entryLines(entry, lead = '') {
141
+ const fields = Object.keys(entry.fields ?? {}).sort().map(name => `${name}: ${entry.fields?.[name]}`);
142
+ return [`${lead}${entry.title === undefined ? '' : `**${entry.title}**: `}${entry.body}`, ...fields].join('\n');
143
+ }
144
+ const optionLabel = (card, optionId) => card.options.find(option => option.id === optionId)?.label ?? optionId;
145
+ const rejectedText = (option) => `${option.label}: ${option.rejectedBecause ?? 'no reason recorded'}${option.evidence !== undefined && option.evidence.length > 0 ? ` (${option.evidence.join(', ')})` : ''}`;
146
+ /**
147
+ * A decided fork's why: the spec's rationale for it where one is written, else the card's recommendation when
148
+ * the chosen option is the recommended one, else no rationale; a recommendation's why never explains an overturn.
149
+ */
150
+ function whyOf(fork, card, option, spec) {
151
+ const written = spec.of('decisionTree').filter(entry => entry.refs?.includes(fork.id) === true).map(entry => entry.body);
152
+ if (written.length > 0)
153
+ return written.join(' ');
154
+ return card.recommendation.option === option ? card.recommendation.why : 'no rationale recorded';
155
+ }
156
+ // F12: map-tree.py render_md's lines (decided(source), Why:, resolved_by:, Rejected —), without its markers.
157
+ function decisionTreeOf(map, spec) {
158
+ return map.forks.flatMap((fork) => {
159
+ const { status, card } = fork;
160
+ if (status.kind === 'moot')
161
+ return [`### ${fork.id} — ${fork.title}`, '', `moot — ${status.reason}`, ''];
162
+ if (card === undefined) {
163
+ const waits = fork.restsOn.length > 0 ? fork.restsOn.join(', ') : 'an unrecorded fork';
164
+ return [`### ${fork.id} — ${fork.title}`, '', `LOCKED — waits on ${waits}`, ''];
165
+ }
166
+ if (status.kind === 'open') {
167
+ return [`### ${fork.id} — ${fork.title}`, '', `OPEN — recommended: ${optionLabel(card, card.recommendation.option)}`, '',
168
+ `Why: ${card.recommendation.why}`, ''];
169
+ }
170
+ const rejected = card.options.filter(option => option.id !== status.option);
171
+ return [
172
+ `### ${fork.id} — ${fork.title}: ${optionLabel(card, status.option)}`, '',
173
+ `decided(${status.source})`, '',
174
+ `Why: ${whyOf(fork, card, status.option, spec)}`, '',
175
+ `resolved_by: ${RESOLVED_BY[status.source]}`, '',
176
+ ...(rejected.length > 0 ? [...rejected.map(option => `- Rejected — ${rejectedText(option)}`), ''] : [])
177
+ ];
178
+ });
179
+ }
180
+ function nodeRef(map, id) {
181
+ const node = map.nodes.find(candidate => candidate.id === id);
182
+ if (node === undefined)
183
+ return id;
184
+ return `${id} "${node.title}"${node.struck === undefined ? '' : ' (struck)'}`;
185
+ }
186
+ const stepLines = (steps) => STEP_KEYWORDS.flatMap(([key, keyword]) => steps[key].map((step, index) => ` - ${index === 0 ? keyword : 'And'} ${step.text}`));
187
+ // ESAS-296: each stored scenario not struck, with its status and any review reason, then the scenarios the
188
+ // decided forks' chosen walks propose and no stored scenario holds yet.
189
+ function scenariosOf(map) {
190
+ const report = (0, fork_scenarios_js_1.joinForkScenarios)(map);
191
+ const reviewOf = new Map(report.derived.map(judgement => [judgement.scenarioId, judgement.reviewReason]));
192
+ const stored = map.scenarios.filter(scenario => scenario.status.kind !== 'struck').flatMap(scenario => {
193
+ const review = reviewOf.get(scenario.id);
194
+ return [
195
+ `- ${scenario.id} — ${scenario.title} (${scenario.status.kind}${review === undefined || review === null ? '' : `, under review: ${review}`})`,
196
+ ...stepLines(scenario)
197
+ ];
198
+ });
199
+ const proposed = report.proposals.flatMap(proposal => [
200
+ `- ${proposal.key} — ${proposal.title} (from ${proposal.forkId}, ${proposal.state === 'ready' ? 'ready' : 'needs Gherkin'})`,
201
+ ...(proposal.state === 'ready' ? stepLines(proposal) : [` - ${proposal.text}`])
202
+ ]);
203
+ return [...stored, ...proposed];
204
+ }
205
+ // C8: only an agreed observation is part of the handoff.
206
+ const observationsOf = (map) => map.observations
207
+ .filter(observation => observation.status.kind === 'agreed')
208
+ .map(({ id, title, expect }) => `- ${id} — ${title}: ${expect.direction} to ${expect.target} over ${expect.window}${expect.baseline === undefined ? '' : ` (baseline ${expect.baseline})`}`);
209
+ // C9: rule and errorCodes, with the other fields a node or a modify sets, one line each under the artifact.
210
+ const DETAIL_LABELS = {
211
+ label: 'Label',
212
+ subdomain: 'Subdomain',
213
+ resourceKey: 'Resource key',
214
+ queries: 'Queries',
215
+ rule: 'Rule',
216
+ errorCodes: 'Error codes',
217
+ generic: 'Generic'
218
+ };
219
+ function detailLines(fields, shown) {
220
+ return shown.flatMap(field => {
221
+ const value = fields[field];
222
+ if (value === undefined)
223
+ return [];
224
+ const text = field === 'errorCodes' ? value.join(', ')
225
+ : field === 'queries' ? JSON.stringify(value)
226
+ : field === 'generic' ? (value ? 'yes' : 'no')
227
+ : String(value);
228
+ return [` ${DETAIL_LABELS[field]}: ${text}`];
229
+ });
230
+ }
231
+ const NODE_DETAIL_FIELDS = ['resourceKey', 'queries', 'rule', 'errorCodes', 'generic'];
232
+ // F7: the design's proposals, modifies and removals, each element with the deliverables its map links serve.
233
+ function artifactsOf(design, map) {
234
+ const serves = (esId) => {
235
+ const deliverables = map.links.filter(link => link.esId === esId).map(link => nodeRef(map, link.deliverableId));
236
+ return deliverables.length > 0 ? `, serves ${deliverables.join(', ')}` : '';
237
+ };
238
+ const nodes = (design.propose?.nodes ?? []).flatMap(node => {
239
+ const id = (0, apply_design_js_1.proposedNodeId)(node);
240
+ return [`- ${node.type} ${node.label} in ${node.subdomain} (\`${id}\`)${serves(id)}`, ...detailLines(node, NODE_DETAIL_FIELDS)];
241
+ });
242
+ const edges = (design.propose?.edges ?? []).map(edge => `- edge \`${edge.from}\` → \`${edge.to}\` (${edge.kind}${edge.handlers === undefined ? '' : `; handlers ${edge.handlers.join(', ')}`})`);
243
+ const modifies = (design.modify ?? []).flatMap(entry => [`- modifies \`${entry.id}\`${serves(entry.id)}`, ...detailLines(entry.set, design_js_1.MODIFIABLE_NODE_FIELDS)]);
244
+ const removes = (design.remove ?? []).map(entry => entry.kind === 'node'
245
+ ? `- removes node \`${entry.id}\``
246
+ : `- removes edge \`${entry.from}\` → \`${entry.to}\` (${entry.edgeKind})`);
247
+ return [...nodes, ...edges, ...modifies, ...removes];
248
+ }
249
+ const paragraphs = (entries) => entries.flatMap((entry, index) => index === 0 ? [entryLines(entry)] : ['', entryLines(entry)]);
250
+ const bullets = (entries) => entries.map(entry => bullet(entryLines(entry)));
251
+ const MAP_LEVEL_WORDS = { goal: 'goal', mapActor: 'actor', impact: 'impact', deliverable: 'deliverable' };
252
+ // F1: a story's refs, each named by what it is on the map (its impact and its actor).
253
+ function refsOf(map, refs) {
254
+ if (refs.length === 0)
255
+ return '';
256
+ const named = refs.map(ref => {
257
+ const node = map.nodes.find(candidate => candidate.id === ref);
258
+ if (node !== undefined)
259
+ return `${MAP_LEVEL_WORDS[node.level]} ${nodeRef(map, ref)}`;
260
+ const fork = map.forks.find(candidate => candidate.id === ref);
261
+ return fork === undefined ? ref : `fork ${ref} "${fork.title}"`;
262
+ });
263
+ return ` (${named.join(', ')})`;
264
+ }
265
+ /**
266
+ * F7, F8: blueprint.md, the written sections in spine order with the derived ones (decision tree, scenarios,
267
+ * observations, artifacts) read from the same fold, under a provenance header that prints the source seq.
268
+ */
269
+ function renderBlueprint(input) {
270
+ const { design, map, spec: folded } = input.replay(input.ops);
271
+ const spec = liveSpecOf(folded);
272
+ const stories = spec.of('userStories').map((story, index) => {
273
+ const [lead, ...fields] = entryLines(story).split('\n');
274
+ return `${index + 1}. ${hanging([`${lead}${refsOf(map, story.refs ?? [])}`, ...fields].join('\n'), ' ')}`;
275
+ });
276
+ const tests = spec.of('testingDecisions').map(entry => bullet(entryLines(entry, entry.kind === 'tracer-bullet' ? 'Tracer bullet: ' : '')));
277
+ return documentOf([
278
+ ...headerOf('Blueprint', input.manifest, specSourceSeq(input.ops)),
279
+ ...section('Problem', paragraphs(spec.of('problem'))),
280
+ ...section('Solution', paragraphs(spec.of('solution'))),
281
+ ...section('User Stories', stories),
282
+ ...section('Resolved decision tree', decisionTreeOf(map, spec)),
283
+ ...section('Scenarios', scenariosOf(map)),
284
+ ...section('Observations', observationsOf(map)),
285
+ ...section('Implementation Decisions', bullets(spec.of('implementationDecisions'))),
286
+ ...section('Testing Decisions', tests),
287
+ ...section('Risks', bullets(spec.of('risks'))),
288
+ ...section('Out of Scope', bullets(spec.of('outOfScope'))),
289
+ ...section('Artifacts', artifactsOf(design, map)),
290
+ ...section('Provenance', bullets(spec.of('provenance')))
291
+ ]);
292
+ }
293
+ /**
294
+ * decisions.md: per fork its question, the chosen option, who decided, why, and every rejected option with its
295
+ * rejectedBecause; an open, moot or locked fork says so instead.
296
+ */
297
+ function renderDecisions(input) {
298
+ const { map, spec: folded } = input.replay(input.ops);
299
+ const spec = liveSpecOf(folded);
300
+ const forks = map.forks.flatMap((fork) => {
301
+ const { status, card } = fork;
302
+ const head = ['', `## ${fork.id}`, '', `Question: ${fork.title}`];
303
+ if (status.kind === 'moot')
304
+ return [...head, `Status: moot — ${status.reason}`];
305
+ if (card === undefined)
306
+ return [...head, `Status: locked — waits on ${fork.restsOn.length > 0 ? fork.restsOn.join(', ') : 'an unrecorded fork'}`];
307
+ if (status.kind === 'open') {
308
+ return [...head, `Status: open — recommended: ${optionLabel(card, card.recommendation.option)}`, `Why: ${card.recommendation.why}`];
309
+ }
310
+ const rejected = card.options.filter(option => option.id !== status.option);
311
+ return [
312
+ ...head,
313
+ `Chosen: ${optionLabel(card, status.option)}`,
314
+ `Decided by: ${DECIDED_BY[status.source]}`,
315
+ `Why: ${whyOf(fork, card, status.option, spec)}`,
316
+ ...(rejected.length > 0 ? ['', 'Rejected:', ...rejected.map(option => bullet(rejectedText(option)))] : [])
317
+ ];
318
+ });
319
+ return documentOf([
320
+ ...headerOf('Decisions', input.manifest, specSourceSeq(input.ops)),
321
+ ...(forks.length > 0 ? forks : ['', NONE])
322
+ ]);
323
+ }
324
+ /** The written sections that must hold a live entry, per scope; User Stories and the rationales have their own codes. */
325
+ exports.SPEC_REQUIRED_SECTIONS = {
326
+ map: ['problem', 'solution'],
327
+ design: ['problem', 'solution', 'implementationDecisions', 'testingDecisions', 'risks', 'outOfScope', 'provenance']
328
+ };
329
+ // The codes a map-stage check leaves out: the eventstorming elements and the tracer bullet are the design stage's.
330
+ // ESAS-330 (S5): the program-stage codes join them; a map-stage check runs before Map agreed.
331
+ const DESIGN_ONLY_CODES = new Set([
332
+ 'tracer-bullet', 'element-unlinked', 'deliverable-without-element', 'element-review-pending', 'stage-not-program'
333
+ ]);
334
+ /** The spine's Testing Decisions name exactly one tracer bullet. */
335
+ exports.TRACER_BULLET_KIND = 'tracer-bullet';
336
+ const forkOpenGaps = ({ map }) => map.forks
337
+ .filter(fork => fork.status.kind === 'open')
338
+ .map(fork => ({ code: 'fork-open', section: 'decisionTree', ref: fork.id, message: `${fork.id} "${fork.title}" is still open` }));
339
+ const sectionEmptyGaps = (spec, scope) => exports.SPEC_REQUIRED_SECTIONS[scope]
340
+ .filter(wanted => spec.of(wanted).length === 0)
341
+ .map(wanted => ({ code: 'section-empty', section: wanted, message: `${wanted} has no entry` }));
342
+ function tracerBulletGaps(spec) {
343
+ const count = spec.of('testingDecisions').filter(entry => entry.kind === exports.TRACER_BULLET_KIND).length;
344
+ return count === 1 ? [] : [{ code: 'tracer-bullet', section: 'testingDecisions', message: `Testing Decisions names ${count} tracer bullets, not exactly one` }];
345
+ }
346
+ // S5: element-unlinked is joinMapLinks' unlinked list: every element the design proposes or modifies that no map
347
+ // link names. The check holds no merged graph, so it drops nothing as removed from the graph.
348
+ const elementUnlinkedGaps = ({ design, map }) => (0, map_links_js_1.joinMapLinks)((0, graph_js_1.emptyGraph)(), design, map).unlinked
349
+ .map(esId => ({ code: 'element-unlinked', ref: esId, message: `${esId} serves no deliverable: no map link names it` }));
350
+ // F1: every live impact has a live story whose refs name it.
351
+ function impactWithoutStoryGaps({ map }, spec) {
352
+ const told = new Set(spec.of('userStories').flatMap(story => story.refs ?? []));
353
+ return map.nodes
354
+ .filter(node => node.level === 'impact' && node.struck === undefined && !told.has(node.id))
355
+ .map(node => ({ code: 'impact-without-story', section: 'userStories', ref: node.id, message: `impact ${node.id} "${node.title}" has no story` }));
356
+ }
357
+ // F3 (overturn): a fork decided on an option its card did not recommend needs a written rationale ref'ing it.
358
+ function rationaleMissingGaps({ map }, spec) {
359
+ const explained = new Set(spec.of('decisionTree').flatMap(entry => entry.refs ?? []));
360
+ return map.forks.flatMap((fork) => {
361
+ const { status, card } = fork;
362
+ if (status.kind !== 'decided' || card === undefined || status.option === card.recommendation.option || explained.has(fork.id))
363
+ return [];
364
+ return [{ code: 'rationale-missing', section: 'decisionTree', ref: fork.id,
365
+ message: `${fork.id} was decided on ${optionLabel(card, status.option)}, not the recommended ${optionLabel(card, card.recommendation.option)}, and no rationale says why` }];
366
+ });
367
+ }
368
+ // F1 (struck impact): a live entry ref'ing a struck map node, scenario or observation is anchored to nothing.
369
+ function refStruckGaps({ map, spec }) {
370
+ const struck = new Set([
371
+ ...map.nodes.filter(node => node.struck !== undefined).map(node => node.id),
372
+ ...[...map.scenarios, ...map.observations].filter(example => example.status.kind === 'struck').map(example => example.id)
373
+ ]);
374
+ return spec.entries.filter(entry => entry.struck === undefined).flatMap((entry) => {
375
+ const dead = (entry.refs ?? []).filter(ref => struck.has(ref));
376
+ return dead.length === 0 ? [] : [{ code: 'ref-struck', section: entry.section, ref: entry.id, message: `${entry.id} refs struck ${dead.join(', ')}` }];
377
+ });
378
+ }
379
+ // F3 (stale prose): a human semantic op past the agent's sync cursor is one the design agent has not folded; the
380
+ // same predicate the pending guard reads (blueprint-store sync-point.ts). A cursor never moved reads as seq 0.
381
+ const ownerChangesUnreadGaps = ({ ops, agentSyncSeq }) => ops
382
+ .filter(op => op.author === 'human' && op.class === 'semantic' && op.seq > (agentSyncSeq ?? 0))
383
+ .map(op => ({ code: 'owner-changes-unread', ref: String(op.seq),
384
+ message: `the owner's ${op.verb} at seq ${op.seq} is past the agent's last sync; ask the design agent to fold the change` }));
385
+ // An open question is a comment thread nobody resolved. A reply joins the thread its commentId chain roots in, as the
386
+ // board's buildThreads groups it (sticky-notes-board discussion-threads.ts), and the thread is open while any of its
387
+ // remarks is unresolved. Which comments hold it open is scaffold-core's rule, not the board's: an unresolved reaction
388
+ // asks nothing, so it holds none open (blueprint-scaffold-core filter.ts `holds`). The board's thread `open` counts
389
+ // any unresolved comment, a reaction included (discussion-threads.ts:60); that divergence is deliberate.
390
+ function questionOpenGaps({ design }) {
391
+ const comments = design.comments ?? [];
392
+ const byId = new Map(comments.map(comment => [comment.id, comment]));
393
+ const rootOf = (comment) => {
394
+ const visited = new Set();
395
+ let current = comment;
396
+ while ((0, design_js_1.isCommentIdAnchor)(current.anchor)) {
397
+ visited.add(current.id);
398
+ const parent = byId.get(current.anchor.commentId);
399
+ if (parent === undefined || visited.has(parent.id))
400
+ break;
401
+ current = parent;
402
+ }
403
+ return current;
404
+ };
405
+ const open = new Set(comments.filter(comment => !comment.resolved && comment.reaction === undefined).map(comment => rootOf(comment).id));
406
+ return comments.filter(comment => open.has(comment.id))
407
+ .map(comment => ({ code: 'question-open', ref: comment.id, message: `the thread ${comment.id} is unresolved` }));
408
+ }
409
+ // F3 owner amendment: no stored scenario is still only proposed. A walk joinForkScenarios proposes and no stored
410
+ // scenario holds is not a stored scenario, so it is no gap.
411
+ const scenarioProposedGaps = ({ map }) => map.scenarios
412
+ .filter(scenario => scenario.status.kind === 'proposed')
413
+ .map(scenario => ({ code: 'scenario-proposed', ref: scenario.id, message: `${scenario.id} "${scenario.title}": scenario still proposed` }));
414
+ // ESAS-330 S5: deliverable-without-element is joinMapLinks' unserved list: every live deliverable no map link names.
415
+ // Under emptyGraph() any link serves (A1), so a struck deliverable is the only one excused without a link.
416
+ const deliverableWithoutElementGaps = ({ design, map }) => {
417
+ const titleOf = new Map(map.nodes.map(node => [node.id, node.title]));
418
+ return (0, map_links_js_1.joinMapLinks)((0, graph_js_1.emptyGraph)(), design, map).unserved
419
+ .map(id => ({ code: 'deliverable-without-element', ref: id, message: `deliverable ${id} "${titleOf.get(id) ?? ''}": no element serves it` }));
420
+ };
421
+ // ESAS-330 S5: a re-review flag the map fold holds is an element whose linked map entry changed after agreement.
422
+ const elementReviewPendingGaps = ({ map }) => (map.review ?? [])
423
+ .map(flag => ({ code: 'element-review-pending', ref: flag.esId,
424
+ message: `${flag.esId} needs re-review: its deliverable ${flag.deliverableId} changed (${flag.cause}, ${flag.verb}) after Map agreed` }));
425
+ // ESAS-330 S5: the map fold sets agreedAt only from a stage-advance; without one the session never entered the program stage.
426
+ const stageNotProgramGaps = ({ map }) => map.agreedAt !== undefined ? [] : [
427
+ { code: 'stage-not-program', message: 'the map was never agreed: press Map agreed before Design done' }
428
+ ];
429
+ /**
430
+ * ESAS-331 F3, S5: every gap between the session's state and a handoff, in the order SpecGapCode lists the codes.
431
+ * ESAS-330's three codes read the map fold's own agreedAt and review, and joinMapLinks' unserved list.
432
+ */
433
+ function checkSpecCompleteness(input, scope = 'design') {
434
+ const spec = liveSpecOf(input.spec);
435
+ const gaps = [
436
+ ...forkOpenGaps(input),
437
+ ...sectionEmptyGaps(spec, scope),
438
+ ...tracerBulletGaps(spec),
439
+ ...elementUnlinkedGaps(input),
440
+ ...impactWithoutStoryGaps(input, spec),
441
+ ...rationaleMissingGaps(input, spec),
442
+ ...refStruckGaps(input),
443
+ ...ownerChangesUnreadGaps(input),
444
+ ...questionOpenGaps(input),
445
+ ...scenarioProposedGaps(input),
446
+ ...deliverableWithoutElementGaps(input),
447
+ ...elementReviewPendingGaps(input),
448
+ ...stageNotProgramGaps(input)
449
+ ].filter(gap => scope === 'design' || !DESIGN_ONLY_CODES.has(gap.code));
450
+ return { complete: gaps.length === 0, gaps };
451
+ }
452
+ /**
453
+ * F10, F14: the two files Design done's flush commits, or the gaps that refuse it. `replay` is the deviation D2
454
+ * names: blueprint-schema cannot fold design and map, so the caller passes the replay it holds.
455
+ */
456
+ function blueprintFileOf(ops, manifest, agentSyncSeq, replay) {
457
+ const { gaps } = checkSpecCompleteness({ ops, ...replay(ops), agentSyncSeq }, 'design');
458
+ if (gaps.length > 0)
459
+ return { ok: false, gaps };
460
+ return { ok: true, files: { 'blueprint.md': renderBlueprint({ ops, manifest, replay }), 'decisions.md': renderDecisions({ ops, manifest, replay }) } };
461
+ }
462
+ //# sourceMappingURL=spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/spec.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import { EdgeKind } from './edges.js';
2
- import { NodeType } from './nodes.js';
1
+ import type { EdgeKind } from './edges.js';
2
+ import type { NodeType } from './nodes.js';
3
3
  export type TopologyRule = {
4
4
  from: NodeType;
5
5
  kind: EdgeKind;
@@ -1 +1 @@
1
- {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AA0DF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAc,CAAC;AAEjE,wBAAgB,aAAa,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,OAAO,CAErF;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,SAAS,QAAQ,EAAE,CAEpF"}
1
+ {"version":3,"file":"topology.d.ts","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,QAAQ,CAAC;IACf,EAAE,EAAE,QAAQ,CAAC;CACd,CAAC;AA6DF,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAElD,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAc,CAAC;AAEjE,wBAAgB,aAAa,CAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,OAAO,CAErF;AAED,wBAAgB,gBAAgB,CAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,GAAI,SAAS,QAAQ,EAAE,CAEpF"}
@@ -14,6 +14,8 @@ const ARTIFACT_TYPES = [
14
14
  const RAW_RULES = [
15
15
  { from: 'command', kind: 'handled-by', to: 'aggregate' },
16
16
  { from: 'command', kind: 'handled-by', to: 'system' },
17
+ // ESAS-305: the rule a command must satisfy before its handler runs; owned by that handler, so no owner edge.
18
+ { from: 'command', kind: 'guarded-by', to: 'invariant' },
17
19
  { from: 'command', kind: 'produces', to: 'event' },
18
20
  { from: 'aggregate', kind: 'emits', to: 'event' },
19
21
  { from: 'system', kind: 'emits', to: 'event' },
@@ -1 +1 @@
1
- {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"topology.js","sourceRoot":"","sources":["../../src/topology.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- import { DesignBatch, DesignFile } from './design.js';
2
- import { BlueprintGraph } from './graph.js';
3
- import { BlueprintOverrides } from './overrides.js';
1
+ import { type DesignBatch, type DesignFile } from './design.js';
2
+ import { type BlueprintGraph } from './graph.js';
3
+ import { type BlueprintOverrides } from './overrides.js';
4
4
  export type DesignIssueCode = 'UNSUPPORTED_SCHEMA_VERSION' | 'MALFORMED_ENTRY' | 'UNKNOWN_NODE_TYPE' | 'UNKNOWN_EDGE_KIND' | 'UNRESOLVED_EDGE_ENDPOINT' | 'TOPOLOGY_VIOLATION' | 'UNMODIFIABLE_FIELD' | 'UNRESOLVED_TARGET' | 'DUPLICATE_IDENTITY' | 'EDGE_TARGETS_REMOVED' | 'INVALID_EDGE_HANDLER' | 'DUPLICATE_COMMENT_ID';
5
5
  export type DesignValidationIssue = {
6
6
  code: DesignIssueCode;
@@ -1 +1 @@
1
- {"version":3,"file":"validate-design.d.ts","sourceRoot":"","sources":["../../src/validate-design.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,WAAW,EAEX,UAAU,EAQX,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,cAAc,EAAU,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAgC,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGlF,MAAM,MAAM,eAAe,GACvB,4BAA4B,GAC5B,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,0BAA0B,GAC1B,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,WAAW,GAAG,YAAY,CAalF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC,CAAC;AAWF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;AA0hBF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,qBAA0B,GAClC,sBAAsB,CA6GxB"}
1
+ {"version":3,"file":"validate-design.d.ts","sourceRoot":"","sources":["../../src/validate-design.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,WAAW,EAEhB,KAAK,UAAU,EAQhB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,cAAc,EAAU,MAAM,YAAY,CAAC;AAEzD,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGvF,MAAM,MAAM,eAAe,GACvB,4BAA4B,GAC5B,iBAAiB,GACjB,mBAAmB,GACnB,mBAAmB,GACnB,0BAA0B,GAC1B,oBAAoB,GACpB,oBAAoB,GACpB,mBAAmB,GACnB,oBAAoB,GACpB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,CAAC;AAE3B,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,eAAe,EAAE,WAAW,GAAG,YAAY,CAalF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC,CAAC;AAWF,MAAM,MAAM,qBAAqB,GAAG;IAClC,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,MAAM,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CAC9B,CAAC;AAkkBF,wBAAgB,cAAc,CAC5B,MAAM,EAAE,UAAU,EAClB,OAAO,GAAE,qBAA0B,GAClC,sBAAsB,CA6GxB"}