@memoarchitect/tools 0.4.4 → 0.4.6

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 (154) hide show
  1. package/README.md +17 -9
  2. package/package.json +25 -24
  3. package/packages/tools/lib/bin/memo.js +0 -0
  4. package/packages/tools/lib/commands/dev.d.ts.map +1 -1
  5. package/packages/tools/lib/commands/dev.js +6 -1
  6. package/packages/tools/lib/commands/dev.js.map +1 -1
  7. package/packages/tools/lib/dhf/template-resolver.d.ts +1 -1
  8. package/packages/tools/lib/dhf/template-resolver.d.ts.map +1 -1
  9. package/packages/tools/lib/dhf/template-resolver.js +20 -16
  10. package/packages/tools/lib/dhf/template-resolver.js.map +1 -1
  11. package/packages/tools/lib/language/generated/ast.d.ts +1380 -115
  12. package/packages/tools/lib/language/generated/ast.d.ts.map +1 -1
  13. package/packages/tools/lib/language/generated/ast.js +1468 -843
  14. package/packages/tools/lib/language/generated/ast.js.map +1 -1
  15. package/packages/tools/lib/language/generated/grammar.d.ts +1 -1
  16. package/packages/tools/lib/language/generated/grammar.d.ts.map +1 -1
  17. package/packages/tools/lib/language/generated/grammar.js +97 -329
  18. package/packages/tools/lib/language/generated/grammar.js.map +1 -1
  19. package/packages/tools/lib/language/generated/module.d.ts +1 -1
  20. package/packages/tools/lib/language/generated/module.js +1 -1
  21. package/packages/tools/lib/model/ontology-loader.js +1 -1
  22. package/packages/tools/lib/model/ontology-loader.js.map +1 -1
  23. package/packages/tools/lib/model/paths.d.ts +6 -4
  24. package/packages/tools/lib/model/paths.d.ts.map +1 -1
  25. package/packages/tools/lib/model/paths.js +20 -9
  26. package/packages/tools/lib/model/paths.js.map +1 -1
  27. package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts +0 -2
  28. package/packages/tools/lib/__tests__/archetype-parsing.test.d.ts.map +0 -1
  29. package/packages/tools/lib/__tests__/archetype-parsing.test.js +0 -42
  30. package/packages/tools/lib/__tests__/archetype-parsing.test.js.map +0 -1
  31. package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts +0 -2
  32. package/packages/tools/lib/__tests__/architecture-discovery.test.d.ts.map +0 -1
  33. package/packages/tools/lib/__tests__/architecture-discovery.test.js +0 -82
  34. package/packages/tools/lib/__tests__/architecture-discovery.test.js.map +0 -1
  35. package/packages/tools/lib/__tests__/behavior.test.d.ts +0 -2
  36. package/packages/tools/lib/__tests__/behavior.test.d.ts.map +0 -1
  37. package/packages/tools/lib/__tests__/behavior.test.js +0 -766
  38. package/packages/tools/lib/__tests__/behavior.test.js.map +0 -1
  39. package/packages/tools/lib/__tests__/builder.test.d.ts +0 -2
  40. package/packages/tools/lib/__tests__/builder.test.d.ts.map +0 -1
  41. package/packages/tools/lib/__tests__/builder.test.js +0 -728
  42. package/packages/tools/lib/__tests__/builder.test.js.map +0 -1
  43. package/packages/tools/lib/__tests__/config-loader.test.d.ts +0 -2
  44. package/packages/tools/lib/__tests__/config-loader.test.d.ts.map +0 -1
  45. package/packages/tools/lib/__tests__/config-loader.test.js +0 -196
  46. package/packages/tools/lib/__tests__/config-loader.test.js.map +0 -1
  47. package/packages/tools/lib/__tests__/conformance.test.d.ts +0 -2
  48. package/packages/tools/lib/__tests__/conformance.test.d.ts.map +0 -1
  49. package/packages/tools/lib/__tests__/conformance.test.js +0 -467
  50. package/packages/tools/lib/__tests__/conformance.test.js.map +0 -1
  51. package/packages/tools/lib/__tests__/constraint-eval.test.d.ts +0 -2
  52. package/packages/tools/lib/__tests__/constraint-eval.test.d.ts.map +0 -1
  53. package/packages/tools/lib/__tests__/constraint-eval.test.js +0 -195
  54. package/packages/tools/lib/__tests__/constraint-eval.test.js.map +0 -1
  55. package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts +0 -2
  56. package/packages/tools/lib/__tests__/constraint-grammar.test.d.ts.map +0 -1
  57. package/packages/tools/lib/__tests__/constraint-grammar.test.js +0 -163
  58. package/packages/tools/lib/__tests__/constraint-grammar.test.js.map +0 -1
  59. package/packages/tools/lib/__tests__/constraint-loader.test.d.ts +0 -2
  60. package/packages/tools/lib/__tests__/constraint-loader.test.d.ts.map +0 -1
  61. package/packages/tools/lib/__tests__/constraint-loader.test.js +0 -150
  62. package/packages/tools/lib/__tests__/constraint-loader.test.js.map +0 -1
  63. package/packages/tools/lib/__tests__/csv-io.test.d.ts +0 -2
  64. package/packages/tools/lib/__tests__/csv-io.test.d.ts.map +0 -1
  65. package/packages/tools/lib/__tests__/csv-io.test.js +0 -317
  66. package/packages/tools/lib/__tests__/csv-io.test.js.map +0 -1
  67. package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts +0 -2
  68. package/packages/tools/lib/__tests__/dhf-doc-store.test.d.ts.map +0 -1
  69. package/packages/tools/lib/__tests__/dhf-doc-store.test.js +0 -94
  70. package/packages/tools/lib/__tests__/dhf-doc-store.test.js.map +0 -1
  71. package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts +0 -2
  72. package/packages/tools/lib/__tests__/dhf-template-resolver.test.d.ts.map +0 -1
  73. package/packages/tools/lib/__tests__/dhf-template-resolver.test.js +0 -39
  74. package/packages/tools/lib/__tests__/dhf-template-resolver.test.js.map +0 -1
  75. package/packages/tools/lib/__tests__/dhf.test.d.ts +0 -2
  76. package/packages/tools/lib/__tests__/dhf.test.d.ts.map +0 -1
  77. package/packages/tools/lib/__tests__/dhf.test.js +0 -393
  78. package/packages/tools/lib/__tests__/dhf.test.js.map +0 -1
  79. package/packages/tools/lib/__tests__/dimension-filter.test.d.ts +0 -2
  80. package/packages/tools/lib/__tests__/dimension-filter.test.d.ts.map +0 -1
  81. package/packages/tools/lib/__tests__/dimension-filter.test.js +0 -85
  82. package/packages/tools/lib/__tests__/dimension-filter.test.js.map +0 -1
  83. package/packages/tools/lib/__tests__/dsm.test.d.ts +0 -2
  84. package/packages/tools/lib/__tests__/dsm.test.d.ts.map +0 -1
  85. package/packages/tools/lib/__tests__/dsm.test.js +0 -112
  86. package/packages/tools/lib/__tests__/dsm.test.js.map +0 -1
  87. package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts +0 -2
  88. package/packages/tools/lib/__tests__/e2e-workflow.test.d.ts.map +0 -1
  89. package/packages/tools/lib/__tests__/e2e-workflow.test.js +0 -707
  90. package/packages/tools/lib/__tests__/e2e-workflow.test.js.map +0 -1
  91. package/packages/tools/lib/__tests__/file-watcher.test.d.ts +0 -2
  92. package/packages/tools/lib/__tests__/file-watcher.test.d.ts.map +0 -1
  93. package/packages/tools/lib/__tests__/file-watcher.test.js +0 -31
  94. package/packages/tools/lib/__tests__/file-watcher.test.js.map +0 -1
  95. package/packages/tools/lib/__tests__/impact.test.d.ts +0 -2
  96. package/packages/tools/lib/__tests__/impact.test.d.ts.map +0 -1
  97. package/packages/tools/lib/__tests__/impact.test.js +0 -82
  98. package/packages/tools/lib/__tests__/impact.test.js.map +0 -1
  99. package/packages/tools/lib/__tests__/importer.test.d.ts +0 -2
  100. package/packages/tools/lib/__tests__/importer.test.d.ts.map +0 -1
  101. package/packages/tools/lib/__tests__/importer.test.js +0 -336
  102. package/packages/tools/lib/__tests__/importer.test.js.map +0 -1
  103. package/packages/tools/lib/__tests__/kind-registry.test.d.ts +0 -2
  104. package/packages/tools/lib/__tests__/kind-registry.test.d.ts.map +0 -1
  105. package/packages/tools/lib/__tests__/kind-registry.test.js +0 -132
  106. package/packages/tools/lib/__tests__/kind-registry.test.js.map +0 -1
  107. package/packages/tools/lib/__tests__/llm.test.d.ts +0 -2
  108. package/packages/tools/lib/__tests__/llm.test.d.ts.map +0 -1
  109. package/packages/tools/lib/__tests__/llm.test.js +0 -275
  110. package/packages/tools/lib/__tests__/llm.test.js.map +0 -1
  111. package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts +0 -2
  112. package/packages/tools/lib/__tests__/manifest-resolver.test.d.ts.map +0 -1
  113. package/packages/tools/lib/__tests__/manifest-resolver.test.js +0 -97
  114. package/packages/tools/lib/__tests__/manifest-resolver.test.js.map +0 -1
  115. package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts +0 -2
  116. package/packages/tools/lib/__tests__/markdown-to-ir.test.d.ts.map +0 -1
  117. package/packages/tools/lib/__tests__/markdown-to-ir.test.js +0 -74
  118. package/packages/tools/lib/__tests__/markdown-to-ir.test.js.map +0 -1
  119. package/packages/tools/lib/__tests__/methodology-scope.test.d.ts +0 -2
  120. package/packages/tools/lib/__tests__/methodology-scope.test.d.ts.map +0 -1
  121. package/packages/tools/lib/__tests__/methodology-scope.test.js +0 -59
  122. package/packages/tools/lib/__tests__/methodology-scope.test.js.map +0 -1
  123. package/packages/tools/lib/__tests__/parser.test.d.ts +0 -2
  124. package/packages/tools/lib/__tests__/parser.test.d.ts.map +0 -1
  125. package/packages/tools/lib/__tests__/parser.test.js +0 -938
  126. package/packages/tools/lib/__tests__/parser.test.js.map +0 -1
  127. package/packages/tools/lib/__tests__/plugin.test.d.ts +0 -2
  128. package/packages/tools/lib/__tests__/plugin.test.d.ts.map +0 -1
  129. package/packages/tools/lib/__tests__/plugin.test.js +0 -308
  130. package/packages/tools/lib/__tests__/plugin.test.js.map +0 -1
  131. package/packages/tools/lib/__tests__/relationship-registry.test.d.ts +0 -2
  132. package/packages/tools/lib/__tests__/relationship-registry.test.d.ts.map +0 -1
  133. package/packages/tools/lib/__tests__/relationship-registry.test.js +0 -96
  134. package/packages/tools/lib/__tests__/relationship-registry.test.js.map +0 -1
  135. package/packages/tools/lib/__tests__/rule-registry.test.d.ts +0 -2
  136. package/packages/tools/lib/__tests__/rule-registry.test.d.ts.map +0 -1
  137. package/packages/tools/lib/__tests__/rule-registry.test.js +0 -53
  138. package/packages/tools/lib/__tests__/rule-registry.test.js.map +0 -1
  139. package/packages/tools/lib/__tests__/toolchain.test.d.ts +0 -2
  140. package/packages/tools/lib/__tests__/toolchain.test.d.ts.map +0 -1
  141. package/packages/tools/lib/__tests__/toolchain.test.js +0 -94
  142. package/packages/tools/lib/__tests__/toolchain.test.js.map +0 -1
  143. package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts +0 -2
  144. package/packages/tools/lib/__tests__/view-deriver-samples.test.d.ts.map +0 -1
  145. package/packages/tools/lib/__tests__/view-deriver-samples.test.js +0 -39
  146. package/packages/tools/lib/__tests__/view-deriver-samples.test.js.map +0 -1
  147. package/packages/tools/lib/__tests__/view-kinds.test.d.ts +0 -2
  148. package/packages/tools/lib/__tests__/view-kinds.test.d.ts.map +0 -1
  149. package/packages/tools/lib/__tests__/view-kinds.test.js +0 -263
  150. package/packages/tools/lib/__tests__/view-kinds.test.js.map +0 -1
  151. package/packages/tools/lib/__tests__/view-layout-store.test.d.ts +0 -2
  152. package/packages/tools/lib/__tests__/view-layout-store.test.d.ts.map +0 -1
  153. package/packages/tools/lib/__tests__/view-layout-store.test.js +0 -61
  154. 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":""}