@memoarchitect/tools 0.4.4 → 0.4.5

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 (141) hide show
  1. package/README.md +17 -9
  2. package/package.json +19 -18
  3. package/packages/tools/lib/bin/memo.js +0 -0
  4. package/packages/tools/lib/dhf/template-resolver.d.ts +1 -1
  5. package/packages/tools/lib/dhf/template-resolver.d.ts.map +1 -1
  6. package/packages/tools/lib/dhf/template-resolver.js +20 -16
  7. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  8. package/packages/tools/lib/model/ontology-loader.js +1 -1
  9. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  10. package/packages/tools/lib/model/paths.d.ts +6 -4
  11. package/packages/tools/lib/model/paths.d.ts.map +1 -1
  12. package/packages/tools/lib/model/paths.js +20 -9
  13. package/packages/tools/lib/model/paths.js.map +1 -1
  14. package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts +0 -2
  15. package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts.map +0 -1
  16. package/packages/tools/lib/__tests__/archetype-parsing.test.js +0 -42
  17. package/packages/tools/lib/__tests__/archetype-parsing.test.js.map +0 -1
  18. package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts +0 -2
  19. package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts.map +0 -1
  20. package/packages/tools/lib/__tests__/architecture-discovery.test.js +0 -82
  21. package/packages/tools/lib/__tests__/architecture-discovery.test.js.map +0 -1
  22. package/packages/tools/lib/__tests__/behavior.test.d.ts +0 -2
  23. package/packages/tools/lib/__tests__/behavior.test.d.ts.map +0 -1
  24. package/packages/tools/lib/__tests__/behavior.test.js +0 -766
  25. package/packages/tools/lib/__tests__/behavior.test.js.map +0 -1
  26. package/packages/tools/lib/__tests__/builder.test.d.ts +0 -2
  27. package/packages/tools/lib/__tests__/builder.test.d.ts.map +0 -1
  28. package/packages/tools/lib/__tests__/builder.test.js +0 -728
  29. package/packages/tools/lib/__tests__/builder.test.js.map +0 -1
  30. package/packages/tools/lib/__tests__/config-loader.test.d.ts +0 -2
  31. package/packages/tools/lib/__tests__/config-loader.test.d.ts.map +0 -1
  32. package/packages/tools/lib/__tests__/config-loader.test.js +0 -196
  33. package/packages/tools/lib/__tests__/config-loader.test.js.map +0 -1
  34. package/packages/tools/lib/__tests__/conformance.test.d.ts +0 -2
  35. package/packages/tools/lib/__tests__/conformance.test.d.ts.map +0 -1
  36. package/packages/tools/lib/__tests__/conformance.test.js +0 -467
  37. package/packages/tools/lib/__tests__/conformance.test.js.map +0 -1
  38. package/packages/tools/lib/__tests__/constraint-eval.test.d.ts +0 -2
  39. package/packages/tools/lib/__tests__/constraint-eval.test.d.ts.map +0 -1
  40. package/packages/tools/lib/__tests__/constraint-eval.test.js +0 -195
  41. package/packages/tools/lib/__tests__/constraint-eval.test.js.map +0 -1
  42. package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts +0 -2
  43. package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts.map +0 -1
  44. package/packages/tools/lib/__tests__/constraint-grammar.test.js +0 -163
  45. package/packages/tools/lib/__tests__/constraint-grammar.test.js.map +0 -1
  46. package/packages/tools/lib/__tests__/constraint-loader.test.d.ts +0 -2
  47. package/packages/tools/lib/__tests__/constraint-loader.test.d.ts.map +0 -1
  48. package/packages/tools/lib/__tests__/constraint-loader.test.js +0 -150
  49. package/packages/tools/lib/__tests__/constraint-loader.test.js.map +0 -1
  50. package/packages/tools/lib/__tests__/csv-io.test.d.ts +0 -2
  51. package/packages/tools/lib/__tests__/csv-io.test.d.ts.map +0 -1
  52. package/packages/tools/lib/__tests__/csv-io.test.js +0 -317
  53. package/packages/tools/lib/__tests__/csv-io.test.js.map +0 -1
  54. package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts +0 -2
  55. package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts.map +0 -1
  56. package/packages/tools/lib/__tests__/dhf-doc-store.test.js +0 -94
  57. package/packages/tools/lib/__tests__/dhf-doc-store.test.js.map +0 -1
  58. package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts +0 -2
  59. package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts.map +0 -1
  60. package/packages/tools/lib/__tests__/dhf-template-resolver.test.js +0 -39
  61. package/packages/tools/lib/__tests__/dhf-template-resolver.test.js.map +0 -1
  62. package/packages/tools/lib/__tests__/dhf.test.d.ts +0 -2
  63. package/packages/tools/lib/__tests__/dhf.test.d.ts.map +0 -1
  64. package/packages/tools/lib/__tests__/dhf.test.js +0 -393
  65. package/packages/tools/lib/__tests__/dhf.test.js.map +0 -1
  66. package/packages/tools/lib/__tests__/dimension-filter.test.d.ts +0 -2
  67. package/packages/tools/lib/__tests__/dimension-filter.test.d.ts.map +0 -1
  68. package/packages/tools/lib/__tests__/dimension-filter.test.js +0 -85
  69. package/packages/tools/lib/__tests__/dimension-filter.test.js.map +0 -1
  70. package/packages/tools/lib/__tests__/dsm.test.d.ts +0 -2
  71. package/packages/tools/lib/__tests__/dsm.test.d.ts.map +0 -1
  72. package/packages/tools/lib/__tests__/dsm.test.js +0 -112
  73. package/packages/tools/lib/__tests__/dsm.test.js.map +0 -1
  74. package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts +0 -2
  75. package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts.map +0 -1
  76. package/packages/tools/lib/__tests__/e2e-workflow.test.js +0 -707
  77. package/packages/tools/lib/__tests__/e2e-workflow.test.js.map +0 -1
  78. package/packages/tools/lib/__tests__/file-watcher.test.d.ts +0 -2
  79. package/packages/tools/lib/__tests__/file-watcher.test.d.ts.map +0 -1
  80. package/packages/tools/lib/__tests__/file-watcher.test.js +0 -31
  81. package/packages/tools/lib/__tests__/file-watcher.test.js.map +0 -1
  82. package/packages/tools/lib/__tests__/impact.test.d.ts +0 -2
  83. package/packages/tools/lib/__tests__/impact.test.d.ts.map +0 -1
  84. package/packages/tools/lib/__tests__/impact.test.js +0 -82
  85. package/packages/tools/lib/__tests__/impact.test.js.map +0 -1
  86. package/packages/tools/lib/__tests__/importer.test.d.ts +0 -2
  87. package/packages/tools/lib/__tests__/importer.test.d.ts.map +0 -1
  88. package/packages/tools/lib/__tests__/importer.test.js +0 -336
  89. package/packages/tools/lib/__tests__/importer.test.js.map +0 -1
  90. package/packages/tools/lib/__tests__/kind-registry.test.d.ts +0 -2
  91. package/packages/tools/lib/__tests__/kind-registry.test.d.ts.map +0 -1
  92. package/packages/tools/lib/__tests__/kind-registry.test.js +0 -132
  93. package/packages/tools/lib/__tests__/kind-registry.test.js.map +0 -1
  94. package/packages/tools/lib/__tests__/llm.test.d.ts +0 -2
  95. package/packages/tools/lib/__tests__/llm.test.d.ts.map +0 -1
  96. package/packages/tools/lib/__tests__/llm.test.js +0 -275
  97. package/packages/tools/lib/__tests__/llm.test.js.map +0 -1
  98. package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts +0 -2
  99. package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts.map +0 -1
  100. package/packages/tools/lib/__tests__/manifest-resolver.test.js +0 -97
  101. package/packages/tools/lib/__tests__/manifest-resolver.test.js.map +0 -1
  102. package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts +0 -2
  103. package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts.map +0 -1
  104. package/packages/tools/lib/__tests__/markdown-to-ir.test.js +0 -74
  105. package/packages/tools/lib/__tests__/markdown-to-ir.test.js.map +0 -1
  106. package/packages/tools/lib/__tests__/methodology-scope.test.d.ts +0 -2
  107. package/packages/tools/lib/__tests__/methodology-scope.test.d.ts.map +0 -1
  108. package/packages/tools/lib/__tests__/methodology-scope.test.js +0 -59
  109. package/packages/tools/lib/__tests__/methodology-scope.test.js.map +0 -1
  110. package/packages/tools/lib/__tests__/parser.test.d.ts +0 -2
  111. package/packages/tools/lib/__tests__/parser.test.d.ts.map +0 -1
  112. package/packages/tools/lib/__tests__/parser.test.js +0 -938
  113. package/packages/tools/lib/__tests__/parser.test.js.map +0 -1
  114. package/packages/tools/lib/__tests__/plugin.test.d.ts +0 -2
  115. package/packages/tools/lib/__tests__/plugin.test.d.ts.map +0 -1
  116. package/packages/tools/lib/__tests__/plugin.test.js +0 -308
  117. package/packages/tools/lib/__tests__/plugin.test.js.map +0 -1
  118. package/packages/tools/lib/__tests__/relationship-registry.test.d.ts +0 -2
  119. package/packages/tools/lib/__tests__/relationship-registry.test.d.ts.map +0 -1
  120. package/packages/tools/lib/__tests__/relationship-registry.test.js +0 -96
  121. package/packages/tools/lib/__tests__/relationship-registry.test.js.map +0 -1
  122. package/packages/tools/lib/__tests__/rule-registry.test.d.ts +0 -2
  123. package/packages/tools/lib/__tests__/rule-registry.test.d.ts.map +0 -1
  124. package/packages/tools/lib/__tests__/rule-registry.test.js +0 -53
  125. package/packages/tools/lib/__tests__/rule-registry.test.js.map +0 -1
  126. package/packages/tools/lib/__tests__/toolchain.test.d.ts +0 -2
  127. package/packages/tools/lib/__tests__/toolchain.test.d.ts.map +0 -1
  128. package/packages/tools/lib/__tests__/toolchain.test.js +0 -94
  129. package/packages/tools/lib/__tests__/toolchain.test.js.map +0 -1
  130. package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts +0 -2
  131. package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts.map +0 -1
  132. package/packages/tools/lib/__tests__/view-deriver-samples.test.js +0 -39
  133. package/packages/tools/lib/__tests__/view-deriver-samples.test.js.map +0 -1
  134. package/packages/tools/lib/__tests__/view-kinds.test.d.ts +0 -2
  135. package/packages/tools/lib/__tests__/view-kinds.test.d.ts.map +0 -1
  136. package/packages/tools/lib/__tests__/view-kinds.test.js +0 -263
  137. package/packages/tools/lib/__tests__/view-kinds.test.js.map +0 -1
  138. package/packages/tools/lib/__tests__/view-layout-store.test.d.ts +0 -2
  139. package/packages/tools/lib/__tests__/view-layout-store.test.d.ts.map +0 -1
  140. package/packages/tools/lib/__tests__/view-layout-store.test.js +0 -61
  141. package/packages/tools/lib/__tests__/view-layout-store.test.js.map +0 -1
@@ -1,467 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { EmptyFileSystem } from 'langium';
3
- import { parseHelper } from 'langium/test';
4
- import { createMemoSysMLServices } from '../language/memo-sysml-module.js';
5
- import { readFileSync, readdirSync, existsSync } from 'node:fs';
6
- import { resolve, join, relative, dirname } from 'node:path';
7
- import { VENDOR_ONTOLOGY_SRC_DIR } from '../model/paths.js';
8
- const services = createMemoSysMLServices({ ...EmptyFileSystem }).MemoSysML;
9
- const parse = parseHelper(services);
10
- const ONTOLOGY_ROOT = resolve(__dirname, '../../../..', VENDOR_ONTOLOGY_SRC_DIR);
11
- // The canonical ontology and its example projects are scanned separately so
12
- // package workspace dirs, installed dependencies, output, and git metadata are
13
- // never mistaken for source content.
14
- const VENDOR_SKIP_DIRS = new Set(['examples', 'packages', 'node_modules', 'output', '.git', '.turbo']);
15
- function collectSysmlFiles(dir) {
16
- const files = [];
17
- for (const entry of readdirSync(dir, { withFileTypes: true })) {
18
- const full = join(dir, entry.name);
19
- if (entry.isDirectory()) {
20
- if (VENDOR_SKIP_DIRS.has(entry.name))
21
- continue;
22
- files.push(...collectSysmlFiles(full));
23
- }
24
- else if (entry.name.endsWith('.sysml')) {
25
- files.push(full);
26
- }
27
- }
28
- return files;
29
- }
30
- const EXAMPLES_ROOT = resolve(ONTOLOGY_ROOT, 'examples');
31
- const GPCA_MODEL_DIR = resolve(EXAMPLES_ROOT, 'gpca-pump/model');
32
- const STDLIB_WRAPPER_DIR = resolve(ONTOLOGY_ROOT, 'core', 'stdlib');
33
- const STANDARD_LIBRARY_PACKAGES = [
34
- 'ScalarValues', 'BaseFunctions', 'Collections',
35
- 'ISQBase', 'ISQ', 'SI', 'USCustomary',
36
- 'MeasurementReferences', 'Quantities',
37
- 'Time', 'Duration',
38
- 'Performances', 'Actions', 'Calculations',
39
- 'ControlPerformances', 'TransitionPerformances',
40
- 'StatePerformances', 'Triggers',
41
- 'KerML', 'SysML',
42
- ];
43
- // ScalarValues must be visible in each independent source package for SysIDE
44
- // to resolve String, Boolean, Integer, and Real. Other direct library imports
45
- // remain prohibited by ADR-1-13.
46
- const FORBIDDEN_DIRECT_LIBRARY_PACKAGES = STANDARD_LIBRARY_PACKAGES.filter(name => name !== 'ScalarValues');
47
- const KERNEL_IMPORT_RE = new RegExp(`^\\s*(?:private\\s+|public\\s+)?import\\s+(?:all\\s+)?(${FORBIDDEN_DIRECT_LIBRARY_PACKAGES.join('|')})(?:::|;|\\s)`, 'gm');
48
- const sysmlFiles = [
49
- ...collectSysmlFiles(ONTOLOGY_ROOT),
50
- ...collectSysmlFiles(EXAMPLES_ROOT),
51
- ];
52
- describe('SysML v2 Conformance: ontology packages parse with zero diagnostics', () => {
53
- it('discovers ontology files', () => {
54
- expect(sysmlFiles.length).toBeGreaterThanOrEqual(30);
55
- });
56
- for (const file of sysmlFiles) {
57
- const rel = relative(ONTOLOGY_ROOT, file);
58
- it(`${rel} — zero parse errors`, async () => {
59
- const source = readFileSync(file, 'utf-8');
60
- const doc = await parse(source);
61
- const errors = [
62
- ...doc.parseResult.lexerErrors,
63
- ...doc.parseResult.parserErrors,
64
- ];
65
- if (errors.length > 0) {
66
- const msgs = errors.slice(0, 10).map((e) => e.message);
67
- throw new Error(`${errors.length} parse error(s) in ${rel}:\n${msgs.join('\n')}`);
68
- }
69
- expect(errors).toHaveLength(0);
70
- });
71
- }
72
- });
73
- describe('DD-2: only required ScalarValues may be imported directly (ADR-1-13)', () => {
74
- const roots = [
75
- { label: 'ontology', dir: ONTOLOGY_ROOT },
76
- { label: 'examples', dir: EXAMPLES_ROOT },
77
- ];
78
- const allFiles = [];
79
- for (const { label, dir } of roots) {
80
- if (!existsSync(dir))
81
- continue;
82
- for (const f of collectSysmlFiles(dir)) {
83
- if (f.startsWith(STDLIB_WRAPPER_DIR))
84
- continue;
85
- allFiles.push({ label, file: f });
86
- }
87
- }
88
- it('discovers SysML files to audit', () => {
89
- expect(allFiles.length).toBeGreaterThanOrEqual(30);
90
- });
91
- for (const { label, file } of allFiles) {
92
- const rel = relative(resolve(__dirname, '../../../..'), file);
93
- it(`${rel} — no unsupported direct standard-library imports`, () => {
94
- const source = readFileSync(file, 'utf-8');
95
- const violations = [];
96
- let m;
97
- KERNEL_IMPORT_RE.lastIndex = 0;
98
- while ((m = KERNEL_IMPORT_RE.exec(source)) !== null) {
99
- const line = source.slice(0, m.index).split('\n').length;
100
- violations.push(`line ${line}: import of '${m[1]}' — use the MEMO stdlib wrapper instead`);
101
- }
102
- if (violations.length > 0) {
103
- throw new Error(`${violations.length} unsupported direct standard-library import(s) in ${rel}:\n${violations.join('\n')}`);
104
- }
105
- expect(violations).toHaveLength(0);
106
- });
107
- }
108
- });
109
- describe('DD-4: Syside compatibility — structural invariants', () => {
110
- // SysIDE indexes packages document-by-document and does not merge reopened
111
- // namespace wrappers reliably. Each source therefore owns one readable,
112
- // path-derived package; memo_namespaces.sysml supplies the canonical aliases.
113
- function extractPackages(text) {
114
- const clean = text
115
- .replace(/\/\*[\s\S]*?\*\//g, '') // block comments
116
- .replace(/\/\/[^\n]*/g, '') // line comments
117
- .replace(/"(?:[^"\\]|\\.)*"/g, '""'); // string literals
118
- const tokenRe = /(?:library\s+)?package\s+([A-Za-z_]\w*)\s*\{|\{|\}/g;
119
- const all = [];
120
- const leaves = [];
121
- // stack frames: package name (string) or null for a non-package brace
122
- const stack = [];
123
- const hasChild = new Map();
124
- let m;
125
- while ((m = tokenRe.exec(clean)) !== null) {
126
- if (m[1]) {
127
- const parentSegs = stack.filter((s) => s !== null);
128
- const fqn = [...parentSegs, m[1]].join('::');
129
- all.push(fqn);
130
- if (parentSegs.length > 0)
131
- hasChild.set(parentSegs.join('::'), true);
132
- hasChild.set(fqn, hasChild.get(fqn) ?? false);
133
- stack.push(m[1]);
134
- }
135
- else if (m[0] === '{') {
136
- stack.push(null);
137
- }
138
- else {
139
- stack.pop();
140
- }
141
- }
142
- for (const fqn of all)
143
- if (!hasChild.get(fqn))
144
- leaves.push(fqn);
145
- return { all, leaves };
146
- }
147
- function collectAllSysml() {
148
- const dirs = [ONTOLOGY_ROOT, EXAMPLES_ROOT];
149
- const entries = [];
150
- const root = resolve(__dirname, '../../../..');
151
- for (const dir of dirs) {
152
- if (!existsSync(dir))
153
- continue;
154
- for (const f of collectSysmlFiles(dir)) {
155
- const text = readFileSync(f, 'utf-8');
156
- const relPath = relative(root, f);
157
- const { all, leaves } = extractPackages(text);
158
- const imports = [];
159
- const importRe = /(?:private|public)?\s*import\s+([\w:]+)::\*/g;
160
- let m;
161
- while ((m = importRe.exec(text)) !== null) {
162
- imports.push(m[1]);
163
- }
164
- entries.push({ relPath, text, allPackages: all, leafPackages: leaves, imports });
165
- }
166
- }
167
- return entries;
168
- }
169
- const allEntries = collectAllSysml();
170
- // Every declared package FQN (wrappers + leaves) across all files is a valid import target.
171
- const declaredPackages = new Set(allEntries.flatMap(e => e.allPackages));
172
- it('C1: every SysML source has a unique package declaration', () => {
173
- const missing = allEntries
174
- .filter(entry => entry.allPackages.length === 0)
175
- .map(entry => entry.relPath);
176
- expect(missing, missing.join('\n')).toHaveLength(0);
177
- const seen = new Map();
178
- const duplicates = [];
179
- for (const entry of allEntries) {
180
- for (const packageName of entry.allPackages) {
181
- const firstFile = seen.get(packageName);
182
- if (firstFile)
183
- duplicates.push(`${packageName}: ${firstFile}, ${entry.relPath}`);
184
- else
185
- seen.set(packageName, entry.relPath);
186
- }
187
- }
188
- expect(duplicates, duplicates.join('\n')).toHaveLength(0);
189
- });
190
- it('C2: every import target resolves to a declared package', () => {
191
- const kernelSet = new Set(STANDARD_LIBRARY_PACKAGES);
192
- const unresolved = [];
193
- for (const e of allEntries) {
194
- for (const imp of e.imports) {
195
- if (kernelSet.has(imp))
196
- continue;
197
- if (!declaredPackages.has(imp)) {
198
- unresolved.push(`${e.relPath}: unresolved import "${imp}::*"`);
199
- }
200
- }
201
- }
202
- expect(unresolved, unresolved.join('\n')).toHaveLength(0);
203
- });
204
- it('EE-5: no bare shorthand redefinitions (standard SysML v2 requires `attribute redefines`/`:>>`)', () => {
205
- // `title = "x";` (a bare feature value with no keyword/operator) is a MEMO
206
- // grammar extension. Standard SysML v2 requires the redefinition operator:
207
- // `attribute redefines title = "x";` or `:>> title = "x";`. The MEMO serializer
208
- // already emits the `attribute redefines` form — authored files must match.
209
- const violations = [];
210
- // A statement line whose first token is immediately followed by ` = ` is a bare
211
- // assignment; legitimate forms lead with `attribute`/`ref`/`part`/`:>>`, so their
212
- // first token is the keyword, not the assigned name.
213
- const re = /^[ \t]+([A-Za-z_]\w*) = [^=]/gm;
214
- for (const e of allEntries) {
215
- const stripped = e.text
216
- .replace(/\/\*[\s\S]*?\*\//g, '')
217
- .replace(/\/\/[^\n]*/g, '');
218
- let m;
219
- re.lastIndex = 0;
220
- while ((m = re.exec(stripped)) !== null) {
221
- const line = stripped.slice(0, m.index).split('\n').length;
222
- violations.push(`${e.relPath}:${line}: bare "${m[1]} = …" — use "attribute redefines ${m[1]} = …"`);
223
- }
224
- }
225
- expect(violations, violations.join('\n')).toHaveLength(0);
226
- });
227
- it('EE-5: no qualified names in package declarations (portable SysML v2)', () => {
228
- // `package memo::a::b { }` is a MEMO grammar extension rejected by external tools.
229
- // Every package declaration must use a single-identifier name and nest instead.
230
- const violations = [];
231
- for (const e of allEntries) {
232
- const stripped = e.text
233
- .replace(/\/\*[\s\S]*?\*\//g, '')
234
- .replace(/\/\/[^\n]*/g, '');
235
- const re = /(?:^|\n)\s*(?:library\s+)?package\s+([A-Za-z_]\w*(?:::[A-Za-z_]\w*)+)\s*\{/g;
236
- let m;
237
- while ((m = re.exec(stripped)) !== null) {
238
- violations.push(`${e.relPath}: qualified package declaration "${m[1]}" — nest packages instead`);
239
- }
240
- }
241
- expect(violations, violations.join('\n')).toHaveLength(0);
242
- });
243
- it('C3: no Langium-only syntax in SysML files', () => {
244
- const langiumPatterns = [
245
- { pattern: /\bentry\s+:/, label: 'entry keyword' },
246
- { pattern: /\bterminal\s+/, label: 'terminal rule' },
247
- { pattern: /\bfragment\s+/, label: 'fragment rule' },
248
- { pattern: /\bhidden\s*\(/, label: 'hidden terminal' },
249
- { pattern: /\breturns\s+\w+/, label: 'returns clause' },
250
- ];
251
- const violations = [];
252
- for (const e of allEntries) {
253
- const stripped = e.text.replace(/\/\*[\s\S]*?\*\//g, '').replace(/\/\/[^\n]*/g, '');
254
- for (const { pattern, label } of langiumPatterns) {
255
- if (pattern.test(stripped)) {
256
- violations.push(`${e.relPath}: ${label}`);
257
- }
258
- }
259
- }
260
- expect(violations, violations.join('\n')).toHaveLength(0);
261
- });
262
- it('C4: ontology directory segments match namespace segments', () => {
263
- const mismatches = [];
264
- const ONTOLOGY_PREFIX = `${VENDOR_ONTOLOGY_SRC_DIR}/`;
265
- for (const e of allEntries) {
266
- if (!e.relPath.startsWith(ONTOLOGY_PREFIX) || e.relPath.endsWith('/memo_namespaces.sysml'))
267
- continue;
268
- const innerPath = e.relPath.slice(ONTOLOGY_PREFIX.length);
269
- const innerDir = dirname(innerPath);
270
- const normalizedDir = innerDir === '.' ? '' : innerDir.replace(/[^A-Za-z0-9]+/g, '_');
271
- const expectedBase = normalizedDir ? `memo_${normalizedDir}` : 'memo';
272
- for (const packageName of e.allPackages) {
273
- if (packageName !== expectedBase && !packageName.startsWith(`${expectedBase}_`)) {
274
- mismatches.push(`${e.relPath}: package "${packageName}" does not match base "${expectedBase}"`);
275
- }
276
- }
277
- }
278
- expect(mismatches, mismatches.join('\n')).toHaveLength(0);
279
- });
280
- it('C5: no hyphens in .sysml filenames (ADR-1-12)', () => {
281
- const bad = allEntries
282
- .filter(e => /[^/]+-[^/]+\.sysml/.test(e.relPath))
283
- .map(e => e.relPath);
284
- expect(bad, bad.join('\n')).toHaveLength(0);
285
- });
286
- it('C6: GPCA model sources are organized under catalog, samples, or views', () => {
287
- const rootModelFiles = readdirSync(GPCA_MODEL_DIR, { withFileTypes: true })
288
- .filter(entry => entry.isFile() && entry.name.endsWith('.sysml'))
289
- .map(entry => entry.name);
290
- const catalogDir = resolve(GPCA_MODEL_DIR, 'catalog');
291
- const catalogFiles = existsSync(catalogDir)
292
- ? readdirSync(catalogDir).filter(name => name.endsWith('.sysml'))
293
- : [];
294
- expect(rootModelFiles, rootModelFiles.join('\n')).toHaveLength(0);
295
- expect(catalogFiles.length).toBeGreaterThan(0);
296
- });
297
- });
298
- describe('DD-5: sysand publish dry-run — publishable packages', () => {
299
- const PACKAGE_MAP = [
300
- { name: '@memoarchitect/sysml-base', level: 'L0', dirs: ['base', 'core'] },
301
- { name: '@memoarchitect/ontology', level: 'L1', dirs: ['architecture', 'compliance', 'viewpoints', 'views'], rootFiles: ['medical_device_library.sysml'] },
302
- { name: '@memoarchitect/methodology-default', level: 'L2', dirs: ['methodology'] },
303
- ];
304
- function collectPackageFiles(pkg) {
305
- const files = [];
306
- for (const dir of pkg.dirs) {
307
- const dirPath = resolve(ONTOLOGY_ROOT, dir);
308
- if (existsSync(dirPath))
309
- files.push(...collectSysmlFiles(dirPath));
310
- }
311
- if (pkg.rootFiles) {
312
- for (const f of pkg.rootFiles) {
313
- const fp = resolve(ONTOLOGY_ROOT, f);
314
- if (existsSync(fp))
315
- files.push(fp);
316
- }
317
- }
318
- return files;
319
- }
320
- for (const pkg of PACKAGE_MAP) {
321
- it(`${pkg.name} (${pkg.level}) has SysML files`, () => {
322
- const files = collectPackageFiles(pkg);
323
- expect(files.length).toBeGreaterThan(0);
324
- });
325
- it(`${pkg.name} (${pkg.level}) all files are readable and non-empty`, () => {
326
- const files = collectPackageFiles(pkg);
327
- const empty = [];
328
- const unreadable = [];
329
- for (const f of files) {
330
- try {
331
- const content = readFileSync(f, 'utf-8');
332
- if (content.trim().length === 0)
333
- empty.push(relative(ONTOLOGY_ROOT, f));
334
- }
335
- catch {
336
- unreadable.push(relative(ONTOLOGY_ROOT, f));
337
- }
338
- }
339
- expect(unreadable, `Unreadable: ${unreadable.join(', ')}`).toHaveLength(0);
340
- expect(empty, `Empty: ${empty.join(', ')}`).toHaveLength(0);
341
- });
342
- it(`${pkg.name} (${pkg.level}) all files parse without errors`, async () => {
343
- const files = collectPackageFiles(pkg);
344
- const errors = [];
345
- for (const f of files) {
346
- const source = readFileSync(f, 'utf-8');
347
- const doc = await parse(source);
348
- const parseErrors = [
349
- ...doc.parseResult.lexerErrors,
350
- ...doc.parseResult.parserErrors,
351
- ];
352
- if (parseErrors.length > 0) {
353
- errors.push(`${relative(ONTOLOGY_ROOT, f)}: ${parseErrors.length} error(s)`);
354
- }
355
- }
356
- expect(errors, errors.join('\n')).toHaveLength(0);
357
- });
358
- it(`${pkg.name} (${pkg.level}) produces valid .kpar artifact name`, () => {
359
- const safeName = pkg.name.replace(/^@/, '').replace(/\//g, '-');
360
- const kparName = `${safeName}-0.1.0.kpar`;
361
- expect(kparName).toMatch(/^[a-z0-9-]+-\d+\.\d+\.\d+\.kpar$/);
362
- });
363
- }
364
- });
365
- describe('DD-6: naming + casing lint (ADR-1-12)', () => {
366
- const PASCAL_CASE_RE = /^[A-Z][a-zA-Z0-9]*$/;
367
- const CAMEL_CASE_RE = /^[a-z][a-zA-Z0-9]*$/;
368
- const SNAKE_CASE_RE = /^[a-z][a-z0-9]*(?:_[a-z0-9]+)*$/;
369
- const DEF_CONSTRUCTS = ['part', 'item', 'enum', 'requirement', 'action', 'port', 'connection', 'attribute', 'view', 'viewpoint'];
370
- const DEF_RE = new RegExp(`(?:^|\\n)\\s*(?:${DEF_CONSTRUCTS.join('|')})\\s+def\\s+(\\w+)`, 'g');
371
- const ATTR_RE = /(?:^|\n)\s*attribute\s+(\w+)\s*(?::|;|=)/g;
372
- function collectAllSysml() {
373
- const dirs = [ONTOLOGY_ROOT, EXAMPLES_ROOT];
374
- const entries = [];
375
- const root = resolve(__dirname, '../../../..');
376
- for (const dir of dirs) {
377
- if (!existsSync(dir))
378
- continue;
379
- for (const f of collectSysmlFiles(dir)) {
380
- entries.push({
381
- relPath: relative(root, f),
382
- text: readFileSync(f, 'utf-8'),
383
- });
384
- }
385
- }
386
- return entries;
387
- }
388
- const allEntries = collectAllSysml();
389
- it('discovers SysML files to audit', () => {
390
- expect(allEntries.length).toBeGreaterThanOrEqual(30);
391
- });
392
- it('N1: all type definitions use PascalCase', () => {
393
- const violations = [];
394
- for (const e of allEntries) {
395
- DEF_RE.lastIndex = 0;
396
- let m;
397
- while ((m = DEF_RE.exec(e.text)) !== null) {
398
- const name = m[1];
399
- if (!PASCAL_CASE_RE.test(name)) {
400
- const line = e.text.slice(0, m.index).split('\n').length;
401
- violations.push(`${e.relPath}:${line}: "${name}" is not PascalCase`);
402
- }
403
- }
404
- }
405
- expect(violations, violations.join('\n')).toHaveLength(0);
406
- });
407
- it('N2: all attribute names use camelCase', () => {
408
- const violations = [];
409
- for (const e of allEntries) {
410
- ATTR_RE.lastIndex = 0;
411
- let m;
412
- while ((m = ATTR_RE.exec(e.text)) !== null) {
413
- const name = m[1];
414
- const preceding = e.text.slice(Math.max(0, m.index - 4), m.index + m[0].length);
415
- if (/attribute\s+def\s/.test(preceding))
416
- continue;
417
- if (!CAMEL_CASE_RE.test(name)) {
418
- const line = e.text.slice(0, m.index).split('\n').length;
419
- violations.push(`${e.relPath}:${line}: "${name}" is not camelCase`);
420
- }
421
- }
422
- }
423
- expect(violations, violations.join('\n')).toHaveLength(0);
424
- });
425
- it('N3: all .sysml filenames use snake_case', () => {
426
- const violations = [];
427
- for (const e of allEntries) {
428
- const filename = e.relPath.split('/').pop().replace('.sysml', '');
429
- if (!SNAKE_CASE_RE.test(filename)) {
430
- violations.push(`${e.relPath}: filename "${filename}" is not snake_case`);
431
- }
432
- }
433
- expect(violations, violations.join('\n')).toHaveLength(0);
434
- });
435
- it('N4: ontology directory segments use snake_case', () => {
436
- const ONTOLOGY_PREFIX = `${VENDOR_ONTOLOGY_SRC_DIR}/`;
437
- const violations = [];
438
- for (const e of allEntries) {
439
- if (!e.relPath.startsWith(ONTOLOGY_PREFIX))
440
- continue;
441
- const innerPath = e.relPath.slice(ONTOLOGY_PREFIX.length);
442
- const segments = dirname(innerPath).split('/').filter((s) => s && s !== '.');
443
- for (const seg of segments) {
444
- // Project container names are filesystem slugs, not SysML namespace
445
- // segments. The namespace below this directory is `memo::examples::gpca`.
446
- if (seg === 'gpca-pump')
447
- continue;
448
- if (!SNAKE_CASE_RE.test(seg)) {
449
- violations.push(`${e.relPath}: directory segment "${seg}" is not snake_case`);
450
- }
451
- }
452
- }
453
- expect(violations, violations.join('\n')).toHaveLength(0);
454
- });
455
- it('lint.mjs exits cleanly with zero P6 violations', async () => {
456
- const { execSync } = await import('node:child_process');
457
- const repoRoot = resolve(__dirname, '../../../..');
458
- const result = execSync('node tools/ontology-tools/lint.mjs', {
459
- cwd: repoRoot,
460
- encoding: 'utf-8',
461
- timeout: 30_000,
462
- });
463
- expect(result).toContain('lint passed');
464
- expect(result).not.toMatch(/P6/);
465
- });
466
- });
467
- //# sourceMappingURL=conformance.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"conformance.test.js","sourceRoot":"","sources":["../../src/__tests__/conformance.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=constraint-eval.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constraint-eval.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/constraint-eval.test.ts"],"names":[],"mappings":""}