@principal-ai/subsystems-react 0.51.2 → 0.51.4

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 (85) hide show
  1. package/dist/index.d.ts +5 -3
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/subsystem/C4Graph.d.ts +12 -1
  6. package/dist/subsystem/C4Graph.d.ts.map +1 -1
  7. package/dist/subsystem/C4Graph.js +115 -22
  8. package/dist/subsystem/C4Graph.js.map +1 -1
  9. package/dist/subsystem/C4NodeCard.d.ts +22 -22
  10. package/dist/subsystem/C4NodeCard.d.ts.map +1 -1
  11. package/dist/subsystem/C4NodeCard.js +56 -77
  12. package/dist/subsystem/C4NodeCard.js.map +1 -1
  13. package/dist/subsystem/SubsystemComponentGraph.d.ts.map +1 -1
  14. package/dist/subsystem/SubsystemComponentGraph.js +32 -13
  15. package/dist/subsystem/SubsystemComponentGraph.js.map +1 -1
  16. package/dist/subsystem/TrailsPanel.d.ts.map +1 -1
  17. package/dist/subsystem/TrailsPanel.js +8 -4
  18. package/dist/subsystem/TrailsPanel.js.map +1 -1
  19. package/dist/subsystem/c4.d.ts +24 -86
  20. package/dist/subsystem/c4.d.ts.map +1 -1
  21. package/dist/subsystem/c4.js +6 -285
  22. package/dist/subsystem/c4.js.map +1 -1
  23. package/dist/subsystem/c4Evidence.js +1 -1
  24. package/dist/subsystem/c4Evidence.js.map +1 -1
  25. package/dist/subsystem/model.d.ts +14 -0
  26. package/dist/subsystem/model.d.ts.map +1 -1
  27. package/dist/subsystem/model.js.map +1 -1
  28. package/dist/subsystem/nodes.d.ts.map +1 -1
  29. package/dist/subsystem/nodes.js +4 -2
  30. package/dist/subsystem/nodes.js.map +1 -1
  31. package/dist/subsystem/techIcons/bun.d.ts +11 -0
  32. package/dist/subsystem/techIcons/bun.d.ts.map +1 -0
  33. package/dist/subsystem/techIcons/bun.js +11 -0
  34. package/dist/subsystem/techIcons/bun.js.map +1 -0
  35. package/dist/subsystem/techIcons/index.d.ts +36 -0
  36. package/dist/subsystem/techIcons/index.d.ts.map +1 -0
  37. package/dist/subsystem/techIcons/index.js +55 -0
  38. package/dist/subsystem/techIcons/index.js.map +1 -0
  39. package/dist/subsystem/techIcons/node.d.ts +12 -0
  40. package/dist/subsystem/techIcons/node.d.ts.map +1 -0
  41. package/dist/subsystem/techIcons/node.js +39 -0
  42. package/dist/subsystem/techIcons/node.js.map +1 -0
  43. package/dist/subsystem/techIcons/react.d.ts +12 -0
  44. package/dist/subsystem/techIcons/react.d.ts.map +1 -0
  45. package/dist/subsystem/techIcons/react.js +19 -0
  46. package/dist/subsystem/techIcons/react.js.map +1 -0
  47. package/dist/utils/edgeLabel.d.ts +1 -1
  48. package/dist/utils/edgeLabel.d.ts.map +1 -1
  49. package/dist/utils/edgeLabel.js +1 -1
  50. package/dist/utils/edgeLabel.js.map +1 -1
  51. package/dist/utils/elkLayout.d.ts +18 -0
  52. package/dist/utils/elkLayout.d.ts.map +1 -1
  53. package/dist/utils/elkLayout.js +90 -9
  54. package/dist/utils/elkLayout.js.map +1 -1
  55. package/package.json +3 -3
  56. package/src/index.ts +4 -6
  57. package/src/stories/Subsystem/C4Graph/C4Container.stories.tsx +212 -0
  58. package/src/stories/Subsystem/C4Graph/C4NodeGallery.stories.tsx +20 -10
  59. package/src/stories/Subsystem/ComponentGraph/IssueOverlay.stories.tsx +4 -2
  60. package/src/stories/Subsystem/ComponentGraph/ProposedTrails.stories.tsx +21 -1
  61. package/src/subsystem/C4Graph.tsx +171 -19
  62. package/src/subsystem/C4NodeCard.test.ts +71 -77
  63. package/src/subsystem/C4NodeCard.tsx +65 -95
  64. package/src/subsystem/SubsystemComponentGraph.tsx +41 -13
  65. package/src/subsystem/TrailsPanel.tsx +10 -5
  66. package/src/subsystem/c4.ts +23 -357
  67. package/src/subsystem/c4Evidence.test.ts +1 -1
  68. package/src/subsystem/c4Evidence.ts +1 -1
  69. package/src/subsystem/model.ts +14 -0
  70. package/src/subsystem/nodes.tsx +5 -2
  71. package/src/subsystem/techIcons/bun.ts +10 -0
  72. package/src/subsystem/techIcons/index.tsx +73 -0
  73. package/src/subsystem/techIcons/node.ts +38 -0
  74. package/src/subsystem/techIcons/react.ts +18 -0
  75. package/src/subsystem/techIcons/techIcons.test.ts +39 -0
  76. package/src/utils/edgeLabel.ts +1 -1
  77. package/src/utils/elkLayout.test.ts +34 -0
  78. package/src/utils/elkLayout.ts +88 -9
  79. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.d.ts +0 -493
  80. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.d.ts.map +0 -1
  81. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.js +0 -329
  82. package/dist/stories/Subsystem/C4Graph/c4ProposedElements.fixture.js.map +0 -1
  83. package/src/stories/Subsystem/C4Graph/ProposedElements.stories.tsx +0 -293
  84. package/src/stories/Subsystem/C4Graph/c4ProposedElements.fixture.ts +0 -366
  85. package/src/subsystem/c4.test.ts +0 -573
@@ -7,9 +7,10 @@
7
7
  * reading `process` strings will produce it — `process` answers "where does
8
8
  * this run", which is a different question.
9
9
  *
10
- * So the element list is authored. An agent proposes it, a person confirms it,
11
- * and `buildC4Model` does the only mechanical job left: draw the boxes the
12
- * author named, and use the trails to draw the lines between them.
10
+ * So the element list is authored, and so is the `C4Model` projected from it.
11
+ * There is no builder here: how edges are determined is still open, so a caller
12
+ * supplies the drawable model directly rather than having trails converted into
13
+ * lines.
13
14
  *
14
15
  * ## Why a union and not one type with two axes
15
16
  *
@@ -30,7 +31,7 @@
30
31
  *
31
32
  * [C4 notation]: https://c4model.com/diagrams/notation
32
33
  */
33
- import type { SubsystemComponent, SubsystemModelDocument } from './model';
34
+ import type { SubsystemComponent } from './model';
34
35
  /**
35
36
  * Has anyone signed off on this element yet?
36
37
  *
@@ -52,12 +53,9 @@ interface C4ElementBase {
52
53
  * The component aliases that live directly inside this element.
53
54
  *
54
55
  * Named explicitly rather than derived from a `process` value, because two
55
- * runs of code being one container is a judgement, not a lookup. This is also
56
- * the dedup mechanism: two elements that should be one simply end up as one
57
- * element holding both member sets.
56
+ * runs of code being one container is a judgement, not a lookup.
58
57
  *
59
- * Each alias belongs to exactly one element. A container does *not* repeat
60
- * the aliases its components already claim — `buildC4Model` rolls those up.
58
+ * Each alias belongs to exactly one element.
61
59
  */
62
60
  members: string[];
63
61
  /**
@@ -171,17 +169,28 @@ export interface C4Group {
171
169
  parentId?: string;
172
170
  memberIds: string[];
173
171
  }
174
- /** A line between two elements, rolled up from a trail step. */
172
+ /**
173
+ * A line between two elements. Authored, like the boxes.
174
+ *
175
+ * C4 asks a container-diagram line to say the *technology/protocol* of the
176
+ * interaction (`protocol`), and the label is that plus the trail verbs where
177
+ * known. `label` is what the chip shows; `protocol` and `mechanisms` are kept
178
+ * separate so a caller can render either.
179
+ */
175
180
  export interface C4Edge {
176
181
  id: string;
177
182
  source: string;
178
183
  target: string;
184
+ /** Text the edge chip shows, e.g. `RPC` or `calls (HTTP)`. */
179
185
  label: string;
186
+ /** The interaction's technology/protocol, e.g. `RPC`, `HTTP`, `stdin`. */
187
+ protocol?: string;
188
+ /** Trail verbs that produced this line (`calls`, `writes`, …). */
180
189
  mechanisms: string[];
181
- /** Trail steps that produced this line. */
190
+ /** How many underlying steps this line rolled up. */
182
191
  count: number;
183
192
  }
184
- /** A drawable C4 projection. */
193
+ /** A drawable C4 projection. Authored, not derived. */
185
194
  export interface C4Model {
186
195
  view: C4View;
187
196
  system: {
@@ -193,81 +202,10 @@ export interface C4Model {
193
202
  groups: C4Group[];
194
203
  edges: C4Edge[];
195
204
  }
196
- /** Something an author should fix before this set is trusted. */
197
- export type C4ProblemKind =
198
- /** a member is claimed by two elements */
199
- 'conflicting_member'
200
- /** a member is not in the supplied document */
201
- | 'unknown_member'
202
- /** two elements share an id */
203
- | 'duplicate_id'
204
- /** an element that should have contents has none */
205
- | 'empty_element'
206
- /** a component names a container that is missing, or is not a container */
207
- | 'unknown_container';
208
- export interface C4Problem {
209
- kind: C4ProblemKind;
210
- message: string;
211
- /** Alias for member problems, element id for the rest. */
212
- subject: string;
213
- }
214
- export interface C4BuildResult {
215
- model: C4Model;
216
- /** Authoring mistakes. An empty array means the set is self-consistent. */
217
- problems: C4Problem[];
218
- /** Component aliases in the document that no element claims. */
219
- unmapped: string[];
220
- }
221
- export interface C4BuildOptions {
222
- /** The elements. The source of truth — nothing is invented. */
223
- elements: readonly C4Element[];
224
- /** Supply to resolve members and draw lines from trails. */
225
- document?: SubsystemModelDocument;
226
- view?: C4View;
227
- /** Name of the system the elements sit in. */
228
- systemLabel?: string;
229
- /** Override the repo key (defaults to the first member's purl). */
230
- repoKey?: string;
231
- /** Model-id attribution per component alias. */
232
- modelsByAlias?: Record<string, string[]>;
233
- }
234
- /** True when this element kind is drawn inside the system frame. */
235
- export declare function isInBoundary(e: C4Element): boolean;
236
- /** `owner/name` from a purl, trimmed of scheme and fragment. */
237
- export declare function labelFromPurl(purl: string): string;
238
205
  /**
239
- * Build the drawable projection from authored elements.
240
- *
241
- * A plain join with no architectural judgement:
242
- *
243
- * boxes ← one per element, named and placed by the author
244
- * lines ← trail steps, with each endpoint mapped to its owning element
245
- *
246
- * Trail steps whose endpoints are not claimed by any element are skipped:
247
- * drawing them would assert a relationship the author did not describe.
206
+ * `owner/name` from a purl, trimmed of scheme and fragment. Used to label the
207
+ * system frame when a repo key is known.
248
208
  */
249
- export declare function buildC4Model(options: C4BuildOptions): C4BuildResult;
250
- /**
251
- * Tally for the confirm UI: how much is proposed vs accepted, and how much is
252
- * still missing what the C4 notation requires.
253
- *
254
- * Counts the authored set, not the projection — a rejected element is still a
255
- * decision that was made, so it is reported rather than forgotten.
256
- */
257
- export declare function summarizeElements(elements: readonly C4Element[]): {
258
- containers: number;
259
- components: number;
260
- externals: number;
261
- people: number;
262
- accepted: number;
263
- proposed: number;
264
- rejected: number;
265
- /** Containers missing the technology C4 requires. */
266
- missingTechnology: number;
267
- /** Elements missing a description. */
268
- missingDescription: number;
269
- /** Elements whose state is not yet `accepted`. */
270
- needsDecision: number;
271
- };
209
+ export declare function labelFromPurl(purl: string): string;
272
210
  export {};
273
211
  //# sourceMappingURL=c4.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"c4.d.ts","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c4.d.ts","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;AAElE,uDAAuD;AACvD,UAAU,aAAa;IACrB;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd;;;;;;;OAOG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,YAAY,CAAC;AAE3D,yDAAyD;AACzD,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,IAAI,EAAE,WAAW,CAAC;IAClB,sCAAsC;IACtC,aAAa,EAAE,eAAe,CAAC;IAC/B,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAY,SAAQ,aAAa;IAChD,IAAI,EAAE,WAAW,CAAC;IAClB,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,6DAA6D;AAC7D,MAAM,WAAW,gBAAiB,SAAQ,aAAa;IACrD,IAAI,EAAE,iBAAiB,CAAC;IACxB,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,gEAAgE;AAChE,MAAM,WAAW,QAAS,SAAQ,aAAa;IAC7C,IAAI,EAAE,QAAQ,CAAC;CAChB;AAED,yCAAyC;AACzC,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,WAAW,GAAG,gBAAgB,GAAG,QAAQ,CAAC;AAEhF,qEAAqE;AACrE,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,SAAS,EAAE,CAAC;CACvB;AAED,8DAA8D;AAC9D,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,WAAW,CAAC;AAE/C;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,sEAAsE;IACtE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,mGAAmG;IACnG,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,kDAAkD;IAClD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gEAAgE;IAChE,SAAS,CAAC,EAAE,kBAAkB,CAAC;IAC/B,+EAA+E;IAC/E,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,2EAA2E;AAC3E,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,qDAAqD;IACrD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,uDAAuD;AACvD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIlD"}
@@ -7,9 +7,10 @@
7
7
  * reading `process` strings will produce it — `process` answers "where does
8
8
  * this run", which is a different question.
9
9
  *
10
- * So the element list is authored. An agent proposes it, a person confirms it,
11
- * and `buildC4Model` does the only mechanical job left: draw the boxes the
12
- * author named, and use the trails to draw the lines between them.
10
+ * So the element list is authored, and so is the `C4Model` projected from it.
11
+ * There is no builder here: how edges are determined is still open, so a caller
12
+ * supplies the drawable model directly rather than having trails converted into
13
+ * lines.
13
14
  *
14
15
  * ## Why a union and not one type with two axes
15
16
  *
@@ -31,292 +32,12 @@
31
32
  * [C4 notation]: https://c4model.com/diagrams/notation
32
33
  */
33
34
  /**
34
- * Element kinds drawn inside the system boundary.
35
- *
36
- * A C4 container diagram puts external systems *inside* the boundary: they are
37
- * things this system depends on, drawn as containers we do not own. People go
38
- * outside it, because a person is never part of any system.
35
+ * `owner/name` from a purl, trimmed of scheme and fragment. Used to label the
36
+ * system frame when a repo key is known.
39
37
  */
40
- const IN_BOUNDARY = new Set(['container', 'external-system']);
41
- /** True when this element kind is drawn inside the system frame. */
42
- export function isInBoundary(e) {
43
- return IN_BOUNDARY.has(e.kind);
44
- }
45
- function purlRepoKey(purl) {
46
- const p = (purl ?? '').split('#')[0]?.trim();
47
- if (!p || p === 'external' || p.startsWith('external:'))
48
- return undefined;
49
- return p;
50
- }
51
- /** `owner/name` from a purl, trimmed of scheme and fragment. */
52
38
  export function labelFromPurl(purl) {
53
39
  const base = purl.replace(/^external:/, '').split('#')[0]?.trim() ?? '';
54
40
  const parts = base.split('/').filter(Boolean);
55
41
  return parts.slice(-2).join('/') || base || purl;
56
42
  }
57
- /**
58
- * Build the drawable projection from authored elements.
59
- *
60
- * A plain join with no architectural judgement:
61
- *
62
- * boxes ← one per element, named and placed by the author
63
- * lines ← trail steps, with each endpoint mapped to its owning element
64
- *
65
- * Trail steps whose endpoints are not claimed by any element are skipped:
66
- * drawing them would assert a relationship the author did not describe.
67
- */
68
- export function buildC4Model(options) {
69
- const view = options.view ?? 'container';
70
- const doc = options.document;
71
- const problems = [];
72
- const byAlias = new Map(doc?.components.map((c) => [c.alias, c]) ?? []);
73
- /**
74
- * Alias → owning element, innermost home wins. One owner per alias: this is
75
- * what makes `conflicting_member` mean "two boxes disagree" rather than
76
- * "a container and its components both mention the same code".
77
- */
78
- const membersOf = new Map();
79
- // --- accept each element once, and resolve membership --------------------
80
- const seenIds = new Set();
81
- /** alias → element id. One owner per alias; conflicts are reported. */
82
- const ownerOf = new Map();
83
- /** Ids in authored order, duplicates dropped. */
84
- const accepted = [];
85
- const elementById = new Map();
86
- for (const e of options.elements) {
87
- if (seenIds.has(e.id)) {
88
- problems.push({
89
- kind: 'duplicate_id',
90
- subject: e.id,
91
- message: `two elements share the id ${e.id}`,
92
- });
93
- continue;
94
- }
95
- seenIds.add(e.id);
96
- accepted.push(e.id);
97
- elementById.set(e.id, e);
98
- // A rejected element is not drawn, so its members are inside nothing.
99
- // Leaving them claimed would hide them from `unmapped` and quietly hide
100
- // the fact that rejecting an element orphans whatever was in it.
101
- if (e.state === 'rejected')
102
- continue;
103
- for (const alias of e.members) {
104
- if (doc && !byAlias.has(alias)) {
105
- problems.push({
106
- kind: 'unknown_member',
107
- subject: alias,
108
- message: `element "${e.id}" claims "${alias}", which is not in the supplied document`,
109
- });
110
- continue;
111
- }
112
- const existing = ownerOf.get(alias);
113
- if (existing && existing !== e.id) {
114
- problems.push({
115
- kind: 'conflicting_member',
116
- subject: alias,
117
- message: `"${alias}" is claimed by both ${existing} and ${e.id}; it is drawn inside ${existing}`,
118
- });
119
- continue;
120
- }
121
- ownerOf.set(alias, e.id);
122
- const list = membersOf.get(e.id) ?? [];
123
- list.push(alias);
124
- membersOf.set(e.id, list);
125
- }
126
- }
127
- // --- the system boundary -------------------------------------------------
128
- const repoKey = options.repoKey ??
129
- options.elements
130
- .flatMap((e) => e.members)
131
- .map((alias) => purlRepoKey(byAlias.get(alias)?.purl))
132
- .find(Boolean);
133
- const systemId = `system:${repoKey ?? 'unspecified'}`;
134
- const systemLabel = options.systemLabel ?? (repoKey ? labelFromPurl(repoKey) : 'Software System');
135
- // --- draw the boxes ------------------------------------------------------
136
- const nodes = [];
137
- /**
138
- * The aliases an element claimed itself, before any rollup. A component's
139
- * own members and its container's own members are disjoint by construction,
140
- * which is what lets the two be added together below.
141
- */
142
- const ownMembers = new Map();
143
- for (const id of accepted) {
144
- const e = elementById.get(id);
145
- if (e.state === 'rejected')
146
- continue;
147
- const own = membersOf.get(id) ?? [];
148
- // A component's parent is stated, not inferred. Check it resolves: a
149
- // dangling parent would silently drop the component out of every frame.
150
- let parentId;
151
- if (e.kind === 'component') {
152
- const parent = elementById.get(e.container);
153
- if (!parent || parent.state === 'rejected') {
154
- problems.push({
155
- kind: 'unknown_container',
156
- subject: id,
157
- message: `component "${id}" names container "${e.container}", which is not in this set`,
158
- });
159
- }
160
- else if (parent.kind !== 'container') {
161
- problems.push({
162
- kind: 'unknown_container',
163
- subject: id,
164
- message: `component "${id}" names container "${e.container}", which is a ${parent.kind}, not a container`,
165
- });
166
- }
167
- else {
168
- parentId = parent.id;
169
- }
170
- }
171
- else if (isInBoundary(e)) {
172
- parentId = systemId;
173
- }
174
- ownMembers.set(id, own);
175
- nodes.push({
176
- id: e.id,
177
- kind: e.kind,
178
- label: e.label,
179
- ...(parentId ? { parentId } : {}),
180
- technology: 'technology' in e ? e.technology : undefined,
181
- description: e.description,
182
- state: e.state,
183
- ...(e.kind === 'container' ? { containerKind: e.containerKind } : {}),
184
- ...(e.derivedFrom && e.derivedFrom.length > 1 ? { derivedFrom: e.derivedFrom } : {}),
185
- members: own,
186
- constructs: [],
187
- });
188
- }
189
- // --- roll components up into their container ------------------------------
190
- //
191
- // A C4 container diagram draws the container as a whole, so a container
192
- // holds everything inside its components. Membership is still authored
193
- // exactly once: an alias belongs to one element, so a container must not
194
- // repeat what its components already claim — that repetition would read as
195
- // a `conflicting_member` and hide the real question, which is how many
196
- // components a container has.
197
- for (const n of nodes) {
198
- if (n.kind !== 'component' || !n.parentId)
199
- continue;
200
- const list = membersOf.get(n.parentId) ?? [];
201
- list.push(...(ownMembers.get(n.id) ?? []));
202
- membersOf.set(n.parentId, list);
203
- }
204
- for (const n of nodes) {
205
- n.members = membersOf.get(n.id) ?? [];
206
- if (n.members.length === 0) {
207
- problems.push({
208
- kind: 'empty_element',
209
- subject: n.id,
210
- message: `element "${n.id}" (${n.kind}) claims no members, and nothing is inside it either, so there is nothing to draw`,
211
- });
212
- }
213
- const resolved = n.members.map((m) => byAlias.get(m)).filter((c) => !!c);
214
- const constructs = [];
215
- for (const c of resolved)
216
- if (!constructs.includes(c.construct))
217
- constructs.push(c.construct);
218
- n.constructs = constructs;
219
- if (n.kind === 'component' && resolved[0])
220
- n.component = resolved[0];
221
- const models = [...new Set(n.members.flatMap((m) => options.modelsByAlias?.[m] ?? []))];
222
- if (models.length > 0)
223
- n.models = models;
224
- }
225
- // --- compound frames -----------------------------------------------------
226
- const groups = [];
227
- if (view === 'container') {
228
- const containerIds = nodes.filter((n) => n.kind === 'container').map((n) => n.id);
229
- if (containerIds.length > 0) {
230
- groups.push({ id: systemId, kind: 'system', label: systemLabel, memberIds: containerIds });
231
- }
232
- }
233
- else {
234
- const byContainer = new Map();
235
- for (const n of nodes) {
236
- if (n.kind !== 'component' || !n.parentId)
237
- continue;
238
- const list = byContainer.get(n.parentId) ?? [];
239
- list.push(n.id);
240
- byContainer.set(n.parentId, list);
241
- }
242
- const framed = [];
243
- for (const [id, memberIds] of byContainer) {
244
- const label = nodes.find((n) => n.id === id)?.label ?? id;
245
- groups.push({ id, kind: 'container', label, parentId: systemId, memberIds });
246
- framed.push(id);
247
- }
248
- if (framed.length > 0) {
249
- groups.push({ id: systemId, kind: 'system', label: systemLabel, memberIds: framed });
250
- }
251
- }
252
- // --- lines, from the trails ---------------------------------------------
253
- const drawn = new Set(nodes.map((n) => n.id));
254
- const edges = new Map();
255
- for (const trail of doc?.trails ?? []) {
256
- for (const step of trail.steps ?? []) {
257
- const source = ownerOf.get(step.from);
258
- const target = ownerOf.get(step.to);
259
- // An endpoint no element claims has no box, so there is no line to draw.
260
- if (!source || !target || source === target)
261
- continue;
262
- if (!drawn.has(source) || !drawn.has(target))
263
- continue;
264
- const key = `${source}\0${target}`;
265
- const edge = edges.get(key);
266
- if (edge) {
267
- edge.count += 1;
268
- if (!edge.mechanisms.includes(step.mechanism))
269
- edge.mechanisms.push(step.mechanism);
270
- }
271
- else {
272
- edges.set(key, {
273
- id: `flow:${key}`,
274
- source,
275
- target,
276
- label: step.mechanism,
277
- mechanisms: [step.mechanism],
278
- count: 1,
279
- });
280
- }
281
- }
282
- }
283
- for (const e of edges.values())
284
- e.label = [...e.mechanisms].sort().join(' + ');
285
- const unmapped = (doc?.components ?? []).filter((c) => !ownerOf.has(c.alias)).map((c) => c.alias);
286
- return {
287
- model: {
288
- view,
289
- system: { id: systemId, label: systemLabel, repoKey },
290
- nodes,
291
- groups,
292
- edges: [...edges.values()],
293
- },
294
- problems,
295
- unmapped,
296
- };
297
- }
298
- /**
299
- * Tally for the confirm UI: how much is proposed vs accepted, and how much is
300
- * still missing what the C4 notation requires.
301
- *
302
- * Counts the authored set, not the projection — a rejected element is still a
303
- * decision that was made, so it is reported rather than forgotten.
304
- */
305
- export function summarizeElements(elements) {
306
- const live = elements.filter((e) => e.state !== 'rejected');
307
- return {
308
- containers: live.filter((e) => e.kind === 'container').length,
309
- components: live.filter((e) => e.kind === 'component').length,
310
- externals: live.filter((e) => e.kind === 'external-system').length,
311
- people: live.filter((e) => e.kind === 'person').length,
312
- accepted: live.filter((e) => e.state === 'accepted').length,
313
- proposed: live.filter((e) => e.state === 'proposed').length,
314
- rejected: elements.filter((e) => e.state === 'rejected').length,
315
- // `technology` is required by the type on containers and components, so a
316
- // missing one can only mean an empty string — still worth reporting.
317
- missingTechnology: live.filter((e) => 'technology' in e && !e.technology).length,
318
- missingDescription: live.filter((e) => !e.description).length,
319
- needsDecision: live.filter((e) => e.state !== 'accepted').length,
320
- };
321
- }
322
43
  //# sourceMappingURL=c4.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"c4.js","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"c4.js","sourceRoot":"","sources":["../../src/subsystem/c4.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAwLH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC;AACnD,CAAC"}
@@ -200,7 +200,7 @@ export function proposeElements(options) {
200
200
  label: key,
201
201
  containerKind: suggestContainerKind(members),
202
202
  // C4 requires a technology on every container. With no framework signal
203
- // the honest value is empty and `summarizeElements` reports the gap —
203
+ // the honest value is empty and the notation-gap check reports it —
204
204
  // inventing "TypeScript" here would be exactly the derivation this
205
205
  // module stopped doing.
206
206
  technology: frameworks.length > 0 ? frameworks.join(' + ') : '',
@@ -1 +1 @@
1
- {"version":3,"file":"c4Evidence.js","sourceRoot":"","sources":["../../src/subsystem/c4Evidence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAkDH,+EAA+E;AAC/E,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AAE3E,SAAS,SAAS,CAAC,CAAe;IAChC,MAAM,CAAC,GAAG,CAAC,CAAC,WAA8D,CAAC;IAC3E,OAAO,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACrD,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,OAAO,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAW,EACX,OAAgC,EAChC,OAA0C,EAAE,UAAU,EAAE,EAAE,EAAE;IAE5D,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;IAEvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QACxB,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,YAAY,GAAG,6BAA6B,OAAO,CAAC,CAAC,CAAC,8CAA8C;YAC7G,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;KACJ;IAED,oEAAoE;IACpE,2EAA2E;IAC3E,gCAAgC;IAChC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;QAC9C,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,YAAY,GAAG,SAAS,OAAO,CAAC,MAAM,2CAA2C,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C;YAChM,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;KACJ;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QACtD,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,cAAc,GAAG,yEAAyE;YACnG,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;KACJ;IAED,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,OAAO;SACJ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAClD,CAAC;IACF,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE;QAClB,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,aAAa;YACnB,OAAO,EAAE,YAAY,GAAG,WAAW,KAAK,CAAC,IAAI,eAAe,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD;YACvI,OAAO,EAAE,OAAO;SACjB,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,iBAAiB,GAAG,8BAA8B,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kEAAkE;YAC9L,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAC1C,CAAC,CAAC;KACJ;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAClH,CAAC;IACF,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3B,GAAG,CAAC,IAAI,CAAC;YACP,MAAM,EAAE,GAAG;YACX,IAAI,EAAE,uBAAuB;YAC7B,OAAO,EAAE,GAAG,YAAY,CAAC,MAAM,6CAA6C,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,gDAAgD;YACvK,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;SAC1C,CAAC,CAAC;KACJ;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAC3B,MAA2D;IAE3D,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC3C,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,MAAM,EAAE;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,CAAC;YAAE,SAAS,CAAC,mCAAmC;QAC7D,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;KACxB;IACD,MAAM,GAAG,GAA4D,EAAE,CAAC;IACxE,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAC/E,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC9B,GAAG,CAAC,IAAI,CAAC;YACP,IAAI;YACJ,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,0BAA0B,IAAI,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,wDAAwD;SAC9I,CAAC,CAAC;KACJ;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgC;IAC7D,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,aAAa,CAC3B,QAA8B,EAC9B,eAAkC,EAClC,QAAiB,EACjB,gBAA8C;IAE9C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAC7E,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9C,2EAA2E;IAC3E,sEAAsE;IACtE,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAG,CAAC,CAAY,EAAU,EAAE;QACtC,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,EAAE;gBAAE,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvE,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,QAAQ,GACZ,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC;IAEtF,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAgB;QAC1B,GAAI,QAAwB;QAC5B,OAAO,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACnF,WAAW,EAAE;YACX,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC;SAC/F;QACD,SAAS,EACP,CAAC,QAAQ,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YACrF,SAAS;KACZ,CAAC;IAEF,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,IAAI,CAC7F,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CACnC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAC7B,OAIC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE;QACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC9D,OAAO;YACL,EAAE,EAAE,aAAa,GAAG,EAAE;YACtB,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;YACpC,WAAW,EAAE,CAAC,GAAG,CAAC;YAClB,KAAK,EAAE,GAAG;YACV,aAAa,EAAE,oBAAoB,CAAC,OAAO,CAAC;YAC5C,wEAAwE;YACxE,sEAAsE;YACtE,mEAAmE;YACnE,wBAAwB;YACxB,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;YAC/D,KAAK,EAAE,UAAmB;YAC1B,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS;YAChE,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAgC;IACnE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,OAAO,CAAC,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;QACrB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC;QAC5F,OAAO,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;KAChD;IACD,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"c4Evidence.js","sourceRoot":"","sources":["../../src/subsystem/c4Evidence.ts"],"names":[],"mappings":"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"}
@@ -347,6 +347,14 @@ export interface SubsystemTrailStep {
347
347
  * mechanism + filename fallback.
348
348
  */
349
349
  symbol: string;
350
+ /**
351
+ * Planned seam — the step describes intended behavior through code that is
352
+ * not written yet. Orthogonal to (and redundant with) the endpoints' own
353
+ * `proposed` flags: a step is proposed when it says so OR either endpoint
354
+ * is proposed. Verification skips source checks either way, and viewers
355
+ * tint it exactly like a proposed node.
356
+ */
357
+ proposed?: boolean;
350
358
  /**
351
359
  * Free-text note anchored to this step's site line. Optional — informative
352
360
  * only, never verified against source; the Pierre trail code view
@@ -630,6 +638,12 @@ export interface SubsystemGraphEdgeData extends Record<string, unknown> {
630
638
  /** True while another edge is selected — render this edge (and its label)
631
639
  * dimmed to focus the selected relationship. */
632
640
  dimmed?: boolean;
641
+ /**
642
+ * A backing trail step declares itself `proposed` — a planned seam between
643
+ * otherwise-real components. The SVG edge and its label draw dashed;
644
+ * distinct from a proposed ENDPOINT, which dashes the node instead.
645
+ */
646
+ proposedStep?: boolean;
633
647
  /** ELK-computed label midpoint (from the actual edge path, not node centers). */
634
648
  labelX?: number;
635
649
  labelY?: number;