@memoarchitect/tools 0.15.3 → 0.16.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.
package/README.md CHANGED
@@ -9,7 +9,7 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <code>memo-tools 0.15.3</code> &middot; MIT &middot; SysML v2 &middot; ISO 14971 &middot; IEC 62304 &middot; ISO/IEC/IEEE 42010
12
+ <code>memo-tools 0.16.0</code> &middot; MIT &middot; SysML v2 &middot; ISO 14971 &middot; IEC 62304 &middot; ISO/IEC/IEEE 42010
13
13
  </p>
14
14
 
15
15
  > **0.15.0 is an experimental release.** It adds support for the OpenSysML compiler alongside SysIDE; the OpenSysML path is new and has had less use. The next version will be more stable. Pin an exact version.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@memoarchitect/tools",
3
- "version": "0.15.3",
3
+ "version": "0.16.0",
4
4
  "description": "MEMO tools — SysML v2 parser, semantic model, validation, project operations, and CLI",
5
5
  "type": "module",
6
6
  "main": "./packages/tools/lib/index.js",
@@ -54,7 +54,7 @@
54
54
  "check:transport": "node scripts/measure-transport-latency.mjs"
55
55
  },
56
56
  "dependencies": {
57
- "@memoarchitect/ontology": "0.15.3",
57
+ "@memoarchitect/ontology": "0.16.0",
58
58
  "@openmbee/opensysml": "0.10.0",
59
59
  "chalk": "^5.3.0",
60
60
  "chokidar": "^4.0.0",
@@ -1 +1 @@
1
- {"version":3,"file":"syside-python.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/syside-python.ts"],"names":[],"mappings":"AA0BA,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,EAAE,CAoBzG;AAID,0GAA0G;AAC1G,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAE7G;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAK3G"}
1
+ {"version":3,"file":"syside-python.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/syside-python.ts"],"names":[],"mappings":"AA0BA,mHAAmH;AACnH,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,EAAE,CAuBzG;AAID,0GAA0G;AAC1G,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,wGAAwG;AACxG,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,SAAS,CAE7G;AAED,+EAA+E;AAC/E,wBAAgB,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAK3G"}
@@ -40,6 +40,9 @@ export function sysidePythonCandidates(projectDir, env = process.env) {
40
40
  }
41
41
  // Where SysIDE's own documentation puts it, then the interpreters on PATH.
42
42
  add(inEnvironment(join(homedir(), '.venvs', 'syside')));
43
+ // SysIDE 1.0 ships its CLI inside the Python package, so `uv tool install syside`
44
+ // is the way to get the `syside` command, and it keeps the interpreter here.
45
+ add(inEnvironment(join(env.UV_TOOL_DIR ?? join(homedir(), '.local', 'share', 'uv', 'tools'), 'syside')));
43
46
  add(whichExecutable('python3', env));
44
47
  add(whichExecutable('python', env));
45
48
  return found.filter(candidate => existsSync(candidate));
@@ -1 +1 @@
1
- {"version":3,"file":"syside-python.js","sourceRoot":"","sources":["../../../src/toolchain/providers/syside-python.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syside-python.js","sourceRoot":"","sources":["../../../src/toolchain/providers/syside-python.ts"],"names":[],"mappings":"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"}
@@ -12,9 +12,19 @@ export interface SysideToolConfig {
12
12
  /** Validation scope. Defaults to `all`. Use `none` for syntax only. */
13
13
  diagnose?: 'all' | 'external' | 'project' | 'none';
14
14
  }
15
- export declare function buildSysideInvocation(context: ProviderContext): ToolInvocation;
16
15
  /**
17
- * `syside --version` prints `syside 0.10.2 <commit>`; the commit is noise for a
16
+ * `all` adds the diagnostics of SysIDE's bundled standard library to the
17
+ * project's. 1.0.0 reports 22 errors and 10 warnings there (Geometry and
18
+ * Systems Library files nobody here owns), so a clean project would fail every
19
+ * check. `project` still diagnoses each file the project ships, including
20
+ * namespace shadowing and reserved-keyword misuse. 0.10.x is clean under both,
21
+ * so it keeps the stricter default.
22
+ */
23
+ export declare function defaultDiagnoseScope(version: string | undefined): 'all' | 'project';
24
+ /** `version` is the installed SysIDE's, read from the executable when not given. */
25
+ export declare function buildSysideInvocation(context: ProviderContext, version?: string | undefined): ToolInvocation;
26
+ /**
27
+ * `syside --version` prints `syside 1.0.0 <commit>` (0.10 prints the same shape); the commit is noise for a
18
28
  * probe listing. Reduce to the version number when the shape is recognisable,
19
29
  * and otherwise report whatever it said rather than nothing.
20
30
  */
@@ -1 +1 @@
1
- {"version":3,"file":"syside.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/syside.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAER,eAAe,EAEf,cAAc,EAEd,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC7B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;CACtD;AAsCD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,eAAe,GAAG,cAAc,CAgB9E;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIlF;AA0CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CA+BrF;AAED,eAAO,MAAM,yBAAyB,EAAE,mBA2DvC,CAAC"}
1
+ {"version":3,"file":"syside.d.ts","sourceRoot":"","sources":["../../../src/toolchain/providers/syside.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,UAAU,EAAsB,MAAM,kBAAkB,CAAC;AACvE,OAAO,KAAK,EAER,eAAe,EAEf,cAAc,EAEd,mBAAmB,EACtB,MAAM,gBAAgB,CAAC;AAGxB,4CAA4C;AAC5C,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,MAAM,WAAW,gBAAgB;IAC7B,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,EAAE,KAAK,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;CACtD;AAsCD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,CAGnF;AAED,oFAAoF;AACpF,wBAAgB,qBAAqB,CACjC,OAAO,EAAE,eAAe,EACxB,OAAO,GAAE,MAAM,GAAG,SAA2C,GAC9D,cAAc,CAiBhB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAIlF;AA0CD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,EAAE,CA+BrF;AAED,eAAO,MAAM,yBAAyB,EAAE,mBA2DvC,CAAC"}
@@ -1,7 +1,7 @@
1
1
  // ─── Adapter: Syside CLI ─────────────────────────────────────────────────────
2
2
  //
3
3
  // The best validator available today: full semantic validation, 151 stable
4
- // rule codes, absolute paths and full ranges. It cannot emit IR (`syside 0.10.2`
4
+ // rule codes, absolute paths and full ranges. It cannot emit IR (`syside` 0.10 and 1.0
5
5
  // exposes only check/format/rule/viz/table), so it fills the validator role and
6
6
  // nothing else — which is precisely why the validator and lowering roles are
7
7
  // separate. Requiring one tool to do both would delete the only external
@@ -37,7 +37,7 @@ const SETTINGS_SCHEMA = [
37
37
  path: `${SYSIDE_PROVIDER_ID}.diagnose`,
38
38
  type: 'enum',
39
39
  values: DIAGNOSE_SCOPES,
40
- description: 'Validation scope. Defaults to all.',
40
+ description: 'Validation scope. Defaults to all, and to project for SysIDE 1.0 and later, whose `all` also fails its own bundled standard library.',
41
41
  },
42
42
  ];
43
43
  function settings(context) {
@@ -46,9 +46,23 @@ function settings(context) {
46
46
  function command(context) {
47
47
  return resolveExecutable(settings(context).executable, SYSIDE_PROVIDER_ID, context.projectDir);
48
48
  }
49
- export function buildSysideInvocation(context) {
49
+ /**
50
+ * `all` adds the diagnostics of SysIDE's bundled standard library to the
51
+ * project's. 1.0.0 reports 22 errors and 10 warnings there (Geometry and
52
+ * Systems Library files nobody here owns), so a clean project would fail every
53
+ * check. `project` still diagnoses each file the project ships, including
54
+ * namespace shadowing and reserved-keyword misuse. 0.10.x is clean under both,
55
+ * so it keeps the stricter default.
56
+ */
57
+ export function defaultDiagnoseScope(version) {
58
+ const major = version ? Number(version.split('.')[0]) : NaN;
59
+ return major >= 1 ? 'project' : 'all';
60
+ }
61
+ /** `version` is the installed SysIDE's, read from the executable when not given. */
62
+ export function buildSysideInvocation(context, version = cachedVersion(command(context))) {
50
63
  const tool = settings(context);
51
- const args = ['check', '--colour', 'no', '--diagnose', tool.diagnose ?? 'all'];
64
+ const scope = tool.diagnose ?? defaultDiagnoseScope(version);
65
+ const args = ['check', '--colour', 'no', '--diagnose', scope];
52
66
  if (tool.configFile)
53
67
  args.push('--config', resolveProjectPath(tool.configFile, context.projectDir));
54
68
  if (tool.warningsAsErrors ?? true)
@@ -69,7 +83,7 @@ export function buildSysideInvocation(context) {
69
83
  return { command: command(context), args, provider: SYSIDE_PROVIDER_ID };
70
84
  }
71
85
  /**
72
- * `syside --version` prints `syside 0.10.2 <commit>`; the commit is noise for a
86
+ * `syside --version` prints `syside 1.0.0 <commit>` (0.10 prints the same shape); the commit is noise for a
73
87
  * probe listing. Reduce to the version number when the shape is recognisable,
74
88
  * and otherwise report whatever it said rather than nothing.
75
89
  */
@@ -151,7 +165,7 @@ export function parseSysideDiagnostics(output, version) {
151
165
  export const sysideValidatorDescriptor = {
152
166
  id: SYSIDE_PROVIDER_ID,
153
167
  role: 'validator',
154
- // No `emit-ir`: `syside 0.10.2` has no AST, semantic-model or IR export.
168
+ // No `emit-ir`: neither `syside` 0.10 nor 1.0 has an AST, semantic-model or IR export.
155
169
  capabilities: ['check', 'format'],
156
170
  settingsSchema: SETTINGS_SCHEMA,
157
171
  probe(context) {
@@ -1 +1 @@
1
- {"version":3,"file":"syside.js","sourceRoot":"","sources":["../../../src/toolchain/providers/syside.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syside.js","sourceRoot":"","sources":["../../../src/toolchain/providers/syside.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,7 @@ alone, `diagnostics` of the libraries and the project), with `"library":
33
33
  from __future__ import annotations
34
34
 
35
35
  import argparse
36
+ import contextlib
36
37
  import json
37
38
  import os
38
39
  import re
@@ -94,10 +95,16 @@ def classify(project_root: Path, library_roots: list[Path], files: list[str] | N
94
95
 
95
96
  def reported(diagnostics) -> list[dict]:
96
97
  out = []
97
- for diagnostic in diagnostics.all:
98
- # The full message is what `syside check` prints: the snippet with its
99
- # carets (the span's width) and any related note. Colour is stripped.
100
- text = ANSI.sub("", diagnostic.full_message).rstrip()
98
+ for item in diagnostics.all:
99
+ # SysIDE 1.0 yields (document url, diagnostic) pairs and has no
100
+ # `full_message`; 0.10 yields the diagnostic alone.
101
+ url, diagnostic = item if isinstance(item, tuple) else (None, item)
102
+ if hasattr(diagnostic, "full_message"):
103
+ # The full message is what `syside check` prints: the snippet with its
104
+ # carets (the span's width) and any related note. Colour is stripped.
105
+ text = ANSI.sub("", diagnostic.full_message).rstrip()
106
+ else:
107
+ text = f"{url}:{diagnostic.line}:{diagnostic.col}: {severity_of(diagnostic)} ({diagnostic.code}): {diagnostic.message}"
101
108
  out.append({"severity": severity_of(diagnostic), "text": text})
102
109
  return out
103
110
 
@@ -147,6 +154,29 @@ def base_of(path: Path, role: str, project_root: Path, library_roots: list[Path]
147
154
  (root for root in library_roots if root in path.parents), path.parent)
148
155
 
149
156
 
157
+ def user_documents(model):
158
+ """The model's own documents. SysIDE 1.0 calls them `documents` and hands
159
+ them over already locked; 0.10 kept them as `user_docs`, locked by the caller."""
160
+ return model.user_docs if hasattr(model, "user_docs") else model.documents
161
+
162
+
163
+ def standard_documents(model):
164
+ """The standard library's documents: `stdlib_docs` up to SysIDE 0.10, the
165
+ model's environment's `documents` from 1.0."""
166
+ return model.stdlib_docs if hasattr(model, "stdlib_docs") else model.environment.documents
167
+
168
+
169
+ @contextlib.contextmanager
170
+ def opened(shared):
171
+ """A document to read: locked for the caller on 0.10 (`SharedMutex`), already
172
+ a `Document` on 1.0."""
173
+ if hasattr(shared, "lock"):
174
+ with shared.lock() as document:
175
+ yield document
176
+ else:
177
+ yield shared
178
+
179
+
150
180
  def export(model, files: list[Path], role: str, project_root: Path, library_roots: list[Path],
151
181
  standard: dict[str, str | None], carried: frozenset[str] = frozenset()):
152
182
  """The API JSON of the model's documents among `files`, all of one role,
@@ -157,8 +187,8 @@ def export(model, files: list[Path], role: str, project_root: Path, library_root
157
187
  referenced: set[str] = set()
158
188
  documents = []
159
189
  index: dict[str, dict] = {}
160
- for shared in model.user_docs:
161
- with shared.lock() as document:
190
+ for shared in user_documents(model):
191
+ with opened(shared) as document:
162
192
  path = Path(document.url.path).resolve()
163
193
  if str(path) not in wanted_files:
164
194
  continue
@@ -174,8 +204,8 @@ def standard_names(model) -> dict[str, str | None]:
174
204
  """Each standard library element's qualified name (None for an unnamed one),
175
205
  by id: read once, since walking the library is most of an export's cost."""
176
206
  names: dict[str, str | None] = {}
177
- for shared in model.stdlib_docs:
178
- with shared.lock() as document:
207
+ for shared in standard_documents(model):
208
+ with opened(shared) as document:
179
209
  for element in document.all_nodes(syside.Element):
180
210
  qualified = element.qualified_name
181
211
  names[str(element.element_id)] = str(qualified) if qualified else None
@@ -307,8 +337,8 @@ class Project:
307
337
  if not reusable:
308
338
  self.exported = {}
309
339
  sent: set[str] = set()
310
- for shared in model.user_docs:
311
- with shared.lock() as document:
340
+ for shared in user_documents(model):
341
+ with opened(shared) as document:
312
342
  path = str(Path(document.url.path).resolve())
313
343
  if path not in texts:
314
344
  continue