@graph-ir/core 0.2.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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +26 -0
  3. package/dist/generation/id-generator.d.ts +81 -0
  4. package/dist/generation/id-generator.d.ts.map +1 -0
  5. package/dist/generation/id-generator.js +193 -0
  6. package/dist/generation/id-generator.js.map +1 -0
  7. package/dist/generation/index.d.ts +7 -0
  8. package/dist/generation/index.d.ts.map +1 -0
  9. package/dist/generation/index.js +7 -0
  10. package/dist/generation/index.js.map +1 -0
  11. package/dist/index.d.ts +12 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +26 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/output/ci.d.ts +36 -0
  16. package/dist/output/ci.d.ts.map +1 -0
  17. package/dist/output/ci.js +145 -0
  18. package/dist/output/ci.js.map +1 -0
  19. package/dist/output/index.d.ts +20 -0
  20. package/dist/output/index.d.ts.map +1 -0
  21. package/dist/output/index.js +40 -0
  22. package/dist/output/index.js.map +1 -0
  23. package/dist/output/json.d.ts +24 -0
  24. package/dist/output/json.d.ts.map +1 -0
  25. package/dist/output/json.js +49 -0
  26. package/dist/output/json.js.map +1 -0
  27. package/dist/output/pretty.d.ts +44 -0
  28. package/dist/output/pretty.d.ts.map +1 -0
  29. package/dist/output/pretty.js +227 -0
  30. package/dist/output/pretty.js.map +1 -0
  31. package/dist/output/types.d.ts +63 -0
  32. package/dist/output/types.d.ts.map +1 -0
  33. package/dist/output/types.js +5 -0
  34. package/dist/output/types.js.map +1 -0
  35. package/dist/schemas/graph-ir.schema.json +360 -0
  36. package/dist/skills/diff.d.ts +73 -0
  37. package/dist/skills/diff.d.ts.map +1 -0
  38. package/dist/skills/diff.js +315 -0
  39. package/dist/skills/diff.js.map +1 -0
  40. package/dist/skills/migrate.d.ts +40 -0
  41. package/dist/skills/migrate.d.ts.map +1 -0
  42. package/dist/skills/migrate.js +288 -0
  43. package/dist/skills/migrate.js.map +1 -0
  44. package/dist/skills/visualize.d.ts +30 -0
  45. package/dist/skills/visualize.d.ts.map +1 -0
  46. package/dist/skills/visualize.js +254 -0
  47. package/dist/skills/visualize.js.map +1 -0
  48. package/dist/symbols/index.d.ts +12 -0
  49. package/dist/symbols/index.d.ts.map +1 -0
  50. package/dist/symbols/index.js +12 -0
  51. package/dist/symbols/index.js.map +1 -0
  52. package/dist/symbols/notation-registry.d.ts +61 -0
  53. package/dist/symbols/notation-registry.d.ts.map +1 -0
  54. package/dist/symbols/notation-registry.js +114 -0
  55. package/dist/symbols/notation-registry.js.map +1 -0
  56. package/dist/symbols/symbol-registry.d.ts +58 -0
  57. package/dist/symbols/symbol-registry.d.ts.map +1 -0
  58. package/dist/symbols/symbol-registry.js +88 -0
  59. package/dist/symbols/symbol-registry.js.map +1 -0
  60. package/dist/symbols/types.d.ts +166 -0
  61. package/dist/symbols/types.d.ts.map +1 -0
  62. package/dist/symbols/types.js +13 -0
  63. package/dist/symbols/types.js.map +1 -0
  64. package/dist/testing/diff.d.ts +46 -0
  65. package/dist/testing/diff.d.ts.map +1 -0
  66. package/dist/testing/diff.js +400 -0
  67. package/dist/testing/diff.js.map +1 -0
  68. package/dist/testing/index.d.ts +10 -0
  69. package/dist/testing/index.d.ts.map +1 -0
  70. package/dist/testing/index.js +10 -0
  71. package/dist/testing/index.js.map +1 -0
  72. package/dist/testing/snapshot.d.ts +95 -0
  73. package/dist/testing/snapshot.d.ts.map +1 -0
  74. package/dist/testing/snapshot.js +172 -0
  75. package/dist/testing/snapshot.js.map +1 -0
  76. package/dist/types.d.ts +240 -0
  77. package/dist/types.d.ts.map +1 -0
  78. package/dist/types.js +7 -0
  79. package/dist/types.js.map +1 -0
  80. package/dist/validation/index.d.ts +9 -0
  81. package/dist/validation/index.d.ts.map +1 -0
  82. package/dist/validation/index.js +8 -0
  83. package/dist/validation/index.js.map +1 -0
  84. package/dist/validation/ir-validator.d.ts +51 -0
  85. package/dist/validation/ir-validator.d.ts.map +1 -0
  86. package/dist/validation/ir-validator.js +349 -0
  87. package/dist/validation/ir-validator.js.map +1 -0
  88. package/dist/validation/validator.d.ts +13 -0
  89. package/dist/validation/validator.d.ts.map +1 -0
  90. package/dist/validation/validator.js +19 -0
  91. package/dist/validation/validator.js.map +1 -0
  92. package/package.json +73 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/skills/migrate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * IR Visualize Skill
3
+ *
4
+ * Renders Graph-IR as ASCII diagrams for terminal viewing.
5
+ */
6
+ import type { GraphIR } from '@graph-ir/core';
7
+ export interface VisualizationOptions {
8
+ /** Diagram style */
9
+ style?: 'box' | 'compact' | 'tree' | 'list';
10
+ /** Flow direction */
11
+ direction?: 'down' | 'right' | 'up' | 'left';
12
+ /** Maximum output width */
13
+ maxWidth?: number;
14
+ /** Show node types */
15
+ showTypes?: boolean;
16
+ /** Show edge labels */
17
+ showLabels?: boolean;
18
+ /** Node IDs to highlight */
19
+ highlight?: string[];
20
+ }
21
+ export interface VisualizationResult {
22
+ success: boolean;
23
+ output: string;
24
+ errors: string[];
25
+ }
26
+ /**
27
+ * Visualize Graph-IR as ASCII
28
+ */
29
+ export declare function visualizeIR(ir: GraphIR, options?: VisualizationOptions): VisualizationResult;
30
+ //# sourceMappingURL=visualize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualize.d.ts","sourceRoot":"","sources":["../../src/skills/visualize.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAwB,MAAM,gBAAgB,CAAC;AAEpE,MAAM,WAAW,oBAAoB;IACnC,oBAAoB;IACpB,KAAK,CAAC,EAAE,KAAK,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;IAC5C,qBAAqB;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;IAC7C,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uBAAuB;IACvB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAWD;;GAEG;AACH,wBAAgB,WAAW,CACzB,EAAE,EAAE,OAAO,EACX,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA8BrB"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * IR Visualize Skill
3
+ *
4
+ * Renders Graph-IR as ASCII diagrams for terminal viewing.
5
+ */
6
+ const DEFAULT_OPTIONS = {
7
+ style: 'box',
8
+ direction: 'down',
9
+ maxWidth: 120,
10
+ showTypes: false,
11
+ showLabels: true,
12
+ highlight: [],
13
+ };
14
+ /**
15
+ * Visualize Graph-IR as ASCII
16
+ */
17
+ export function visualizeIR(ir, options = {}) {
18
+ const opts = { ...DEFAULT_OPTIONS, ...options };
19
+ try {
20
+ let output;
21
+ switch (opts.style) {
22
+ case 'compact':
23
+ output = renderCompact(ir, opts);
24
+ break;
25
+ case 'tree':
26
+ output = renderTree(ir, opts);
27
+ break;
28
+ case 'list':
29
+ output = renderList(ir, opts);
30
+ break;
31
+ case 'box':
32
+ default:
33
+ output = renderBox(ir, opts);
34
+ break;
35
+ }
36
+ return { success: true, output, errors: [] };
37
+ }
38
+ catch (e) {
39
+ return {
40
+ success: false,
41
+ output: '',
42
+ errors: [e instanceof Error ? e.message : 'Unknown error'],
43
+ };
44
+ }
45
+ }
46
+ /**
47
+ * Box style - nodes as ASCII boxes with connecting lines
48
+ */
49
+ function renderBox(ir, opts) {
50
+ const lines = [];
51
+ const nodeMap = new Map(ir.nodes.map((n) => [n.id, n]));
52
+ const highlightSet = new Set(opts.highlight);
53
+ // Group edges by source
54
+ const outgoing = new Map();
55
+ for (const edge of ir.edges) {
56
+ const edges = outgoing.get(edge.source) || [];
57
+ edges.push(edge);
58
+ outgoing.set(edge.source, edges);
59
+ }
60
+ // Header
61
+ lines.push(`Graph: ${ir.name || ir.id}`);
62
+ lines.push('═'.repeat(Math.min(40, opts.maxWidth)));
63
+ lines.push('');
64
+ // Render each node
65
+ for (const node of ir.nodes) {
66
+ const isHighlighted = highlightSet.has(node.id);
67
+ renderNodeBox(node, lines, isHighlighted, opts);
68
+ // Render outgoing edges
69
+ const edges = outgoing.get(node.id) || [];
70
+ for (const edge of edges) {
71
+ const target = nodeMap.get(edge.target);
72
+ const targetLabel = target?.label || edge.target;
73
+ const edgeLabel = opts.showLabels && edge.label ? ` [${edge.label}]` : '';
74
+ lines.push(' │');
75
+ lines.push(` └──${edgeLabel}──► ${targetLabel}`);
76
+ }
77
+ lines.push('');
78
+ }
79
+ // Footer
80
+ lines.push('─'.repeat(Math.min(40, opts.maxWidth)));
81
+ lines.push(`Nodes: ${ir.nodes.length}, Edges: ${ir.edges.length}`);
82
+ return lines.join('\n');
83
+ }
84
+ function renderNodeBox(node, lines, highlighted, opts) {
85
+ const label = node.label || node.id;
86
+ const typeStr = opts.showTypes ? `(${node.type})` : '';
87
+ const content = typeStr ? `${label} ${typeStr}` : label;
88
+ const width = Math.min(content.length + 4, opts.maxWidth - 4);
89
+ const paddedContent = content.padEnd(width - 2).slice(0, width - 2);
90
+ if (highlighted) {
91
+ // Double-line box for highlighted nodes
92
+ lines.push('╔' + '═'.repeat(width) + '╗');
93
+ lines.push('║ ' + paddedContent + ' ║');
94
+ lines.push('╚' + '═'.repeat(width) + '╝');
95
+ }
96
+ else {
97
+ lines.push('┌' + '─'.repeat(width) + '┐');
98
+ lines.push('│ ' + paddedContent + ' │');
99
+ lines.push('└' + '─'.repeat(width) + '┘');
100
+ }
101
+ }
102
+ /**
103
+ * Compact style - inline representation
104
+ */
105
+ function renderCompact(ir, opts) {
106
+ const lines = [];
107
+ const nodeMap = new Map(ir.nodes.map((n) => [n.id, n]));
108
+ // Build adjacency for tree-like rendering
109
+ const outgoing = new Map();
110
+ const hasIncoming = new Set();
111
+ for (const edge of ir.edges) {
112
+ const edges = outgoing.get(edge.source) || [];
113
+ edges.push(edge);
114
+ outgoing.set(edge.source, edges);
115
+ hasIncoming.add(edge.target);
116
+ }
117
+ // Find roots (nodes with no incoming edges)
118
+ const roots = ir.nodes.filter((n) => !hasIncoming.has(n.id));
119
+ function renderPath(nodeId, prefix, visited) {
120
+ if (visited.has(nodeId)) {
121
+ lines.push(`${prefix}(cycle: ${nodeId})`);
122
+ return;
123
+ }
124
+ visited.add(nodeId);
125
+ const node = nodeMap.get(nodeId);
126
+ const label = node?.label || nodeId;
127
+ const edges = outgoing.get(nodeId) || [];
128
+ if (edges.length === 0) {
129
+ lines.push(`${prefix}${label}`);
130
+ }
131
+ else {
132
+ for (let i = 0; i < edges.length; i++) {
133
+ const edge = edges[i];
134
+ const edgeLabel = opts.showLabels && edge.label ? `─${edge.label}─` : '──';
135
+ const target = nodeMap.get(edge.target);
136
+ const targetLabel = target?.label || edge.target;
137
+ if (i === 0) {
138
+ lines.push(`${prefix}${label} ${edgeLabel}► ${targetLabel}`);
139
+ }
140
+ else {
141
+ const padding = ' '.repeat(prefix.length + label.length + 1);
142
+ lines.push(`${padding}├${edgeLabel}► ${targetLabel}`);
143
+ }
144
+ // Recurse for children of target
145
+ const targetEdges = outgoing.get(edge.target) || [];
146
+ if (targetEdges.length > 0 && !visited.has(edge.target)) {
147
+ const newPrefix = ' '.repeat(prefix.length + label.length + edgeLabel.length + 4);
148
+ for (const te of targetEdges) {
149
+ const tt = nodeMap.get(te.target);
150
+ const ttLabel = tt?.label || te.target;
151
+ const teLabel = opts.showLabels && te.label ? `─${te.label}─` : '──';
152
+ lines.push(`${newPrefix}└${teLabel}► ${ttLabel}`);
153
+ }
154
+ }
155
+ }
156
+ }
157
+ }
158
+ for (const root of roots) {
159
+ renderPath(root.id, '', new Set());
160
+ }
161
+ // Handle orphans
162
+ const rendered = new Set(roots.map((r) => r.id));
163
+ for (const edge of ir.edges) {
164
+ rendered.add(edge.source);
165
+ rendered.add(edge.target);
166
+ }
167
+ const orphans = ir.nodes.filter((n) => !rendered.has(n.id) && !hasIncoming.has(n.id));
168
+ if (orphans.length > 0) {
169
+ lines.push('');
170
+ lines.push('(Disconnected):');
171
+ for (const orphan of orphans) {
172
+ lines.push(` ${orphan.label || orphan.id}`);
173
+ }
174
+ }
175
+ return lines.join('\n');
176
+ }
177
+ /**
178
+ * Tree style - hierarchical indentation
179
+ */
180
+ function renderTree(ir, opts) {
181
+ const lines = [];
182
+ const nodeMap = new Map(ir.nodes.map((n) => [n.id, n]));
183
+ // Build adjacency
184
+ const children = new Map();
185
+ const hasParent = new Set();
186
+ for (const edge of ir.edges) {
187
+ const kids = children.get(edge.source) || [];
188
+ kids.push(edge.target);
189
+ children.set(edge.source, kids);
190
+ hasParent.add(edge.target);
191
+ }
192
+ // Find roots
193
+ const roots = ir.nodes.filter((n) => !hasParent.has(n.id));
194
+ function renderNode(nodeId, prefix, isLast, visited) {
195
+ if (visited.has(nodeId)) {
196
+ lines.push(`${prefix}${isLast ? '└── ' : '├── '}(cycle: ${nodeId})`);
197
+ return;
198
+ }
199
+ visited.add(nodeId);
200
+ const node = nodeMap.get(nodeId);
201
+ const label = node?.label || nodeId;
202
+ const typeStr = opts.showTypes && node ? ` [${node.type}]` : '';
203
+ const connector = isLast ? '└── ' : '├── ';
204
+ lines.push(`${prefix}${connector}${label}${typeStr}`);
205
+ const kids = children.get(nodeId) || [];
206
+ const childPrefix = prefix + (isLast ? ' ' : '│ ');
207
+ kids.forEach((kidId, index) => {
208
+ renderNode(kidId, childPrefix, index === kids.length - 1, visited);
209
+ });
210
+ }
211
+ for (let i = 0; i < roots.length; i++) {
212
+ const root = roots[i];
213
+ const node = nodeMap.get(root.id);
214
+ const label = node?.label || root.id;
215
+ const typeStr = opts.showTypes && node ? ` [${node.type}]` : '';
216
+ lines.push(`${label}${typeStr}`);
217
+ const kids = children.get(root.id) || [];
218
+ kids.forEach((kidId, index) => {
219
+ renderNode(kidId, '', index === kids.length - 1, new Set([root.id]));
220
+ });
221
+ if (i < roots.length - 1)
222
+ lines.push('');
223
+ }
224
+ return lines.join('\n');
225
+ }
226
+ /**
227
+ * List style - simple enumeration for large graphs
228
+ */
229
+ function renderList(ir, opts) {
230
+ const lines = [];
231
+ const nodeMap = new Map(ir.nodes.map((n) => [n.id, n]));
232
+ const highlightSet = new Set(opts.highlight);
233
+ // Nodes section
234
+ lines.push(`NODES (${ir.nodes.length}):`);
235
+ for (const node of ir.nodes) {
236
+ const label = node.label || node.id;
237
+ const typeStr = opts.showTypes ? ` [${node.type}]` : '';
238
+ const marker = highlightSet.has(node.id) ? '★' : '•';
239
+ lines.push(` ${marker} ${label}${typeStr}`);
240
+ }
241
+ lines.push('');
242
+ // Edges section
243
+ lines.push(`EDGES (${ir.edges.length}):`);
244
+ for (const edge of ir.edges) {
245
+ const source = nodeMap.get(edge.source);
246
+ const target = nodeMap.get(edge.target);
247
+ const sourceLabel = source?.label || edge.source;
248
+ const targetLabel = target?.label || edge.target;
249
+ const edgeLabel = opts.showLabels && edge.label ? `─${edge.label}─` : '──';
250
+ lines.push(` • ${sourceLabel} ${edgeLabel}► ${targetLabel}`);
251
+ }
252
+ return lines.join('\n');
253
+ }
254
+ //# sourceMappingURL=visualize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visualize.js","sourceRoot":"","sources":["../../src/skills/visualize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Symbol/Notation Infrastructure
3
+ *
4
+ * Exports types and registries for the three-layer architecture:
5
+ * - Shape Layer: Pure geometry
6
+ * - Symbol Layer: Shapes with meaning
7
+ * - Notation Layer: Grammar rules
8
+ */
9
+ export type { ShapeDefinition, ShapeParameter, PortAnchor, SymbolDefinition, SymbolVariant, SymbolPort, SymbolDefaults, NotationDefinition, NotationEdgeStyle, ConnectionRule, ConnectionConstraints, NotationValidation, NotationValidationResult, NotationError, NotationErrorCode, } from './types.js';
10
+ export { SymbolRegistry } from './symbol-registry.js';
11
+ export { NotationRegistry, type ConnectionValidationResult } from './notation-registry.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/symbols/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EAEV,eAAe,EACf,cAAc,EACd,UAAU,EAEV,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,cAAc,EAEd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,kBAAkB,EAElB,wBAAwB,EACxB,aAAa,EACb,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,KAAK,0BAA0B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Symbol/Notation Infrastructure
3
+ *
4
+ * Exports types and registries for the three-layer architecture:
5
+ * - Shape Layer: Pure geometry
6
+ * - Symbol Layer: Shapes with meaning
7
+ * - Notation Layer: Grammar rules
8
+ */
9
+ // Registries
10
+ export { SymbolRegistry } from './symbol-registry.js';
11
+ export { NotationRegistry } from './notation-registry.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/symbols/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyBH,aAAa;AACb,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAmC,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * NotationRegistry - Registry for notation definitions
3
+ *
4
+ * Provides methods to register, query, and validate against notations.
5
+ * Notations are loaded from Coral (diagrams) and Armada (code).
6
+ */
7
+ import type { NotationDefinition, SymbolDefinition } from './types.js';
8
+ import type { SymbolRegistry } from './symbol-registry.js';
9
+ export interface ConnectionValidationResult {
10
+ valid: boolean;
11
+ message?: string;
12
+ }
13
+ export declare class NotationRegistry {
14
+ private notations;
15
+ private symbolRegistry;
16
+ constructor(symbolRegistry: SymbolRegistry);
17
+ /**
18
+ * Register a notation definition.
19
+ * Overwrites any existing notation with the same ID.
20
+ */
21
+ register(notation: NotationDefinition): void;
22
+ /**
23
+ * Register multiple notations at once.
24
+ */
25
+ registerAll(notations: NotationDefinition[]): void;
26
+ /**
27
+ * Get a notation by ID.
28
+ */
29
+ get(id: string): NotationDefinition | undefined;
30
+ /**
31
+ * Check if a notation exists.
32
+ */
33
+ has(id: string): boolean;
34
+ /**
35
+ * Get all registered notations.
36
+ */
37
+ all(): NotationDefinition[];
38
+ /**
39
+ * Get the count of registered notations.
40
+ */
41
+ count(): number;
42
+ /**
43
+ * Get symbols valid for a notation.
44
+ * Only returns symbols that exist in the symbol registry.
45
+ */
46
+ getSymbols(notationId: string): SymbolDefinition[];
47
+ /**
48
+ * Validate a connection against notation rules.
49
+ *
50
+ * @param notationId - The notation to validate against
51
+ * @param fromSymbol - Source symbol ID
52
+ * @param toSymbol - Target symbol ID
53
+ * @returns Validation result with valid flag and optional message
54
+ */
55
+ validateConnection(notationId: string, fromSymbol: string, toSymbol: string): ConnectionValidationResult;
56
+ /**
57
+ * Clear all notations from the registry.
58
+ */
59
+ clear(): void;
60
+ }
61
+ //# sourceMappingURL=notation-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notation-registry.d.ts","sourceRoot":"","sources":["../../src/symbols/notation-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,cAAc,CAAiB;gBAE3B,cAAc,EAAE,cAAc;IAI1C;;;OAGG;IACH,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAI5C;;OAEG;IACH,WAAW,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI;IAMlD;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAI/C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,GAAG,IAAI,kBAAkB,EAAE;IAI3B;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;;OAGG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAgBlD;;;;;;;OAOG;IACH,kBAAkB,CAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,0BAA0B;IAqC7B;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * NotationRegistry - Registry for notation definitions
3
+ *
4
+ * Provides methods to register, query, and validate against notations.
5
+ * Notations are loaded from Coral (diagrams) and Armada (code).
6
+ */
7
+ export class NotationRegistry {
8
+ notations = new Map();
9
+ symbolRegistry;
10
+ constructor(symbolRegistry) {
11
+ this.symbolRegistry = symbolRegistry;
12
+ }
13
+ /**
14
+ * Register a notation definition.
15
+ * Overwrites any existing notation with the same ID.
16
+ */
17
+ register(notation) {
18
+ this.notations.set(notation.id, notation);
19
+ }
20
+ /**
21
+ * Register multiple notations at once.
22
+ */
23
+ registerAll(notations) {
24
+ for (const notation of notations) {
25
+ this.register(notation);
26
+ }
27
+ }
28
+ /**
29
+ * Get a notation by ID.
30
+ */
31
+ get(id) {
32
+ return this.notations.get(id);
33
+ }
34
+ /**
35
+ * Check if a notation exists.
36
+ */
37
+ has(id) {
38
+ return this.notations.has(id);
39
+ }
40
+ /**
41
+ * Get all registered notations.
42
+ */
43
+ all() {
44
+ return Array.from(this.notations.values());
45
+ }
46
+ /**
47
+ * Get the count of registered notations.
48
+ */
49
+ count() {
50
+ return this.notations.size;
51
+ }
52
+ /**
53
+ * Get symbols valid for a notation.
54
+ * Only returns symbols that exist in the symbol registry.
55
+ */
56
+ getSymbols(notationId) {
57
+ const notation = this.notations.get(notationId);
58
+ if (!notation) {
59
+ return [];
60
+ }
61
+ const symbols = [];
62
+ for (const symbolId of notation.symbols) {
63
+ const symbol = this.symbolRegistry.get(symbolId);
64
+ if (symbol) {
65
+ symbols.push(symbol);
66
+ }
67
+ }
68
+ return symbols;
69
+ }
70
+ /**
71
+ * Validate a connection against notation rules.
72
+ *
73
+ * @param notationId - The notation to validate against
74
+ * @param fromSymbol - Source symbol ID
75
+ * @param toSymbol - Target symbol ID
76
+ * @returns Validation result with valid flag and optional message
77
+ */
78
+ validateConnection(notationId, fromSymbol, toSymbol) {
79
+ const notation = this.notations.get(notationId);
80
+ if (!notation) {
81
+ return {
82
+ valid: false,
83
+ message: `Unknown notation: ${notationId}`,
84
+ };
85
+ }
86
+ // If no connection rules, everything is allowed
87
+ if (!notation.connectionRules || notation.connectionRules.length === 0) {
88
+ return { valid: true };
89
+ }
90
+ // Find matching rule
91
+ const rule = notation.connectionRules.find((r) => r.from === fromSymbol || r.from === '*');
92
+ if (!rule) {
93
+ return {
94
+ valid: false,
95
+ message: `No connection rule found for source symbol: ${fromSymbol}`,
96
+ };
97
+ }
98
+ // Check if target is in allowed list
99
+ if (!rule.to.includes(toSymbol)) {
100
+ return {
101
+ valid: false,
102
+ message: `Connection from '${fromSymbol}' to '${toSymbol}' is not allowed in notation '${notationId}'`,
103
+ };
104
+ }
105
+ return { valid: true };
106
+ }
107
+ /**
108
+ * Clear all notations from the registry.
109
+ */
110
+ clear() {
111
+ this.notations.clear();
112
+ }
113
+ }
114
+ //# sourceMappingURL=notation-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"notation-registry.js","sourceRoot":"","sources":["../../src/symbols/notation-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * SymbolRegistry - Registry for symbol definitions
3
+ *
4
+ * Provides methods to register, query, and search symbols.
5
+ * Symbols are loaded from Coral (diagrams) and Armada (code).
6
+ */
7
+ import type { SymbolDefinition } from './types.js';
8
+ export declare class SymbolRegistry {
9
+ private symbols;
10
+ /**
11
+ * Register a symbol definition.
12
+ * Overwrites any existing symbol with the same ID.
13
+ */
14
+ register(symbol: SymbolDefinition): void;
15
+ /**
16
+ * Register multiple symbols at once.
17
+ */
18
+ registerAll(symbols: SymbolDefinition[]): void;
19
+ /**
20
+ * Get a symbol by ID.
21
+ */
22
+ get(id: string): SymbolDefinition | undefined;
23
+ /**
24
+ * Check if a symbol exists.
25
+ */
26
+ has(id: string): boolean;
27
+ /**
28
+ * Get all registered symbols.
29
+ */
30
+ all(): SymbolDefinition[];
31
+ /**
32
+ * Get the count of registered symbols.
33
+ */
34
+ count(): number;
35
+ /**
36
+ * Find symbols that belong to a specific notation.
37
+ */
38
+ byNotation(notationId: string): SymbolDefinition[];
39
+ /**
40
+ * Find symbols with a specific tag.
41
+ */
42
+ byTag(tag: string): SymbolDefinition[];
43
+ /**
44
+ * Search symbols by name or description.
45
+ * Case-insensitive partial match.
46
+ */
47
+ search(query: string): SymbolDefinition[];
48
+ /**
49
+ * Merge another registry into this one.
50
+ * Symbols from the other registry overwrite existing symbols with the same ID.
51
+ */
52
+ merge(other: SymbolRegistry): void;
53
+ /**
54
+ * Clear all symbols from the registry.
55
+ */
56
+ clear(): void;
57
+ }
58
+ //# sourceMappingURL=symbol-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-registry.d.ts","sourceRoot":"","sources":["../../src/symbols/symbol-registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAA4C;IAE3D;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIxC;;OAEG;IACH,WAAW,CAAC,OAAO,EAAE,gBAAgB,EAAE,GAAG,IAAI;IAM9C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAI7C;;OAEG;IACH,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;OAEG;IACH,GAAG,IAAI,gBAAgB,EAAE;IAIzB;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAMlD;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAMtC;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,EAAE;IASzC;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,GAAG,IAAI;IAMlC;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}