@memoarchitect/tools 0.15.2 → 0.15.3
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 +1 -1
- package/package.json +2 -2
- package/packages/tools/lib/commands/dev.d.ts.map +1 -1
- package/packages/tools/lib/commands/dev.js +4 -0
- package/packages/tools/lib/commands/dev.js.map +1 -1
- package/packages/tools/lib/commands/validate.d.ts.map +1 -1
- package/packages/tools/lib/commands/validate.js +2 -16
- package/packages/tools/lib/commands/validate.js.map +1 -1
- package/packages/tools/lib/model/complete-model.d.ts.map +1 -1
- package/packages/tools/lib/model/complete-model.js +59 -14
- package/packages/tools/lib/model/complete-model.js.map +1 -1
- package/packages/tools/lib/model/id-rebase.d.ts +6 -1
- package/packages/tools/lib/model/id-rebase.d.ts.map +1 -1
- package/packages/tools/lib/model/id-rebase.js +71 -36
- package/packages/tools/lib/model/id-rebase.js.map +1 -1
- package/packages/tools/lib/model/identity-registry.d.ts +26 -0
- package/packages/tools/lib/model/identity-registry.d.ts.map +1 -1
- package/packages/tools/lib/model/identity-registry.js +55 -4
- package/packages/tools/lib/model/identity-registry.js.map +1 -1
- package/packages/tools/lib/model/semantic.d.ts +72 -0
- package/packages/tools/lib/model/semantic.d.ts.map +1 -1
- package/packages/tools/lib/model/semantic.js.map +1 -1
- package/packages/tools/lib/model/short-id.d.ts +11 -0
- package/packages/tools/lib/model/short-id.d.ts.map +1 -1
- package/packages/tools/lib/model/short-id.js +33 -0
- package/packages/tools/lib/model/short-id.js.map +1 -1
- package/packages/tools/lib/model/view-deriver.d.ts +8 -1
- package/packages/tools/lib/model/view-deriver.d.ts.map +1 -1
- package/packages/tools/lib/model/view-deriver.js +45 -0
- package/packages/tools/lib/model/view-deriver.js.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.d.ts.map +1 -1
- package/packages/tools/lib/operations/project-snapshot.js +3 -18
- package/packages/tools/lib/operations/project-snapshot.js.map +1 -1
- package/packages/tools/lib/protocol/messages.d.ts +56 -3
- package/packages/tools/lib/protocol/messages.d.ts.map +1 -1
- package/packages/tools/lib/server/axis-query.d.ts +9 -0
- package/packages/tools/lib/server/axis-query.d.ts.map +1 -0
- package/packages/tools/lib/server/axis-query.js +47 -0
- package/packages/tools/lib/server/axis-query.js.map +1 -0
- package/packages/tools/lib/server/dev-server.d.ts.map +1 -1
- package/packages/tools/lib/server/dev-server.js +46 -9
- package/packages/tools/lib/server/dev-server.js.map +1 -1
- package/packages/tools/lib/server/mutation-domain.d.ts.map +1 -1
- package/packages/tools/lib/server/mutation-domain.js +4 -0
- package/packages/tools/lib/server/mutation-domain.js.map +1 -1
- package/packages/tools/lib/server/user-preferences.d.ts.map +1 -1
- package/packages/tools/lib/server/user-preferences.js +11 -2
- package/packages/tools/lib/server/user-preferences.js.map +1 -1
- package/packages/tools/lib/server/view-writer.d.ts +25 -2
- package/packages/tools/lib/server/view-writer.d.ts.map +1 -1
- package/packages/tools/lib/server/view-writer.js +231 -27
- package/packages/tools/lib/server/view-writer.js.map +1 -1
- package/packages/tools/lib/stage2/build-from-api.js +3 -1
- package/packages/tools/lib/stage2/build-from-api.js.map +1 -1
|
@@ -29,7 +29,7 @@ import { createRule, previewRule } from './rule-service.js';
|
|
|
29
29
|
import { loadViewLayouts, saveViewLayout } from './view-layout-store.js';
|
|
30
30
|
import { layoutBlindRevision } from '../model/view-layout-block.js';
|
|
31
31
|
import { assertWritable } from './write-guard.js';
|
|
32
|
-
import { updateViewDisplay, updateViewExpose, writeViewDeclaration } from './view-writer.js';
|
|
32
|
+
import { updateViewDeclaration, updateViewDisplay, updateViewExpose, writeViewDeclaration } from './view-writer.js';
|
|
33
33
|
import { usageKeyword } from '../model/semantic.js';
|
|
34
34
|
import { loadDhfDocs, saveDhfDoc, deleteDhfDoc, loadDhfSettings, saveDhfSettings, listRepoTemplates, readRepoTemplate, saveRepoTemplate, } from './dhf-doc-store.js';
|
|
35
35
|
import { loadDashboards, saveDashboard, deleteDashboard, moveDashboard } from './dashboard-store.js';
|
|
@@ -1616,6 +1616,7 @@ export async function createDevServer(options) {
|
|
|
1616
1616
|
else if (msg.type === 'diagram:create') {
|
|
1617
1617
|
const { projectRoot } = options;
|
|
1618
1618
|
const diagram = { ...msg.payload, auto: false };
|
|
1619
|
+
const requestId = msg.payload?.requestId;
|
|
1619
1620
|
// A view is model content, so it is DECLARED, not recorded in
|
|
1620
1621
|
// a sidecar. Writing the SysML puts it where `memo validate`,
|
|
1621
1622
|
// the selected compiler, review and git can all see it, and — the
|
|
@@ -1630,33 +1631,69 @@ export async function createDevServer(options) {
|
|
|
1630
1631
|
const error = `The view "${diagram.name}" was not created: ${declared.reason}. `
|
|
1631
1632
|
+ 'Every view must be declared in SysML.';
|
|
1632
1633
|
console.error(`[Diagram] REFUSED: ${error}`);
|
|
1633
|
-
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId
|
|
1634
|
+
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId, error } }));
|
|
1635
|
+
if (requestId)
|
|
1636
|
+
ws.send(JSON.stringify({ type: 'diagram:result', payload: { requestId, success: false, error } }));
|
|
1634
1637
|
return;
|
|
1635
1638
|
}
|
|
1636
|
-
console.log(`[Diagram] Declared: ${diagram.name}
|
|
1639
|
+
console.log(`[Diagram] Declared: ${diagram.name} as ${declared.identifier} in ${declared.filePath}`);
|
|
1637
1640
|
// The file watcher recompiles and `view-deriver` emits the
|
|
1638
1641
|
// diagram; no broadcast here, or clients would briefly hold
|
|
1639
1642
|
// a second, sidecar-shaped copy of it.
|
|
1640
1643
|
await recompileAfterWrite();
|
|
1644
|
+
if (requestId) {
|
|
1645
|
+
ws.send(JSON.stringify({ type: 'diagram:result', payload: {
|
|
1646
|
+
requestId, success: true, qualifiedName: declared.qualifiedName, filePath: declared.filePath,
|
|
1647
|
+
} }));
|
|
1648
|
+
}
|
|
1649
|
+
}
|
|
1650
|
+
else if (msg.type === 'query:run') {
|
|
1651
|
+
const requestId = msg.payload?.requestId;
|
|
1652
|
+
try {
|
|
1653
|
+
const { runAxisQuery } = await import('./axis-query.js');
|
|
1654
|
+
const { findConfigFile } = await import('@memoarchitect/tools');
|
|
1655
|
+
const { loadAndResolveConfig } = await import('./config-resolver.js');
|
|
1656
|
+
const configPath = findConfigFile(options.projectRoot);
|
|
1657
|
+
const config = configPath ? await loadAndResolveConfig(configPath) : {};
|
|
1658
|
+
const ctx = await scopedQueryContext(config, msg.payload?.workspace);
|
|
1659
|
+
const result = runAxisQuery(String(msg.payload?.query ?? ''), ctx, {
|
|
1660
|
+
ids: msg.payload?.idLimit, preview: msg.payload?.previewLimit,
|
|
1661
|
+
});
|
|
1662
|
+
ws.send(JSON.stringify({ type: 'query:result', payload: { requestId, ...result } }));
|
|
1663
|
+
}
|
|
1664
|
+
catch (e) {
|
|
1665
|
+
ws.send(JSON.stringify({ type: 'query:result', payload: { requestId, count: 0, preview: [], error: e?.message ?? String(e) } }));
|
|
1666
|
+
}
|
|
1641
1667
|
}
|
|
1642
1668
|
else if (msg.type === 'diagram:update') {
|
|
1643
1669
|
// What a view shows lives in its `expose` members, not in a
|
|
1644
1670
|
// list of ids in a sidecar, so the update is applied to the
|
|
1645
1671
|
// declaration. This used to edit the sidecar, which meant
|
|
1646
1672
|
// that for a DECLARED view it silently did nothing at all.
|
|
1673
|
+
// A matrix view has no `expose`: its name and its axes are
|
|
1674
|
+
// statements of its own declaration.
|
|
1647
1675
|
const { projectRoot } = options;
|
|
1648
|
-
const
|
|
1676
|
+
const payload = (msg.payload ?? {});
|
|
1677
|
+
const requestId = payload.requestId;
|
|
1678
|
+
const declared = currentDiagrams().find(d => d.id === payload.id || d.elementId === payload.id);
|
|
1679
|
+
const isMatrixChange = payload.matrix !== undefined || (payload.name !== undefined && payload.elementIds === undefined);
|
|
1649
1680
|
const result = declared
|
|
1650
|
-
?
|
|
1651
|
-
|
|
1681
|
+
? isMatrixChange
|
|
1682
|
+
? await updateViewDeclaration(projectRoot, currentModel() ?? { elements: {} }, declared, { name: payload.name, matrix: payload.matrix }, (await authoringContext()).outlines)
|
|
1683
|
+
: await updateViewExpose(projectRoot, currentModel() ?? { elements: {} }, declared, payload.elementIds, (await authoringContext()).outlines)
|
|
1684
|
+
: { success: false, reason: `no view "${payload.id}" is declared` };
|
|
1652
1685
|
if (result.success) {
|
|
1653
|
-
console.log(`[Diagram]
|
|
1686
|
+
console.log(`[Diagram] Updated ${declared.name} (${result.filePath})`);
|
|
1654
1687
|
await recompileAfterWrite();
|
|
1688
|
+
if (requestId)
|
|
1689
|
+
ws.send(JSON.stringify({ type: 'diagram:result', payload: { requestId, success: true, filePath: result.filePath } }));
|
|
1655
1690
|
}
|
|
1656
1691
|
else {
|
|
1657
|
-
const error = `The view "${declared?.name ??
|
|
1692
|
+
const error = `The view "${declared?.name ?? payload.id}" was not changed: ${result.reason}.`;
|
|
1658
1693
|
console.error(`[Diagram] REFUSED: ${error}`);
|
|
1659
|
-
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId
|
|
1694
|
+
ws.send(JSON.stringify({ type: 'app:error', payload: { requestId, error } }));
|
|
1695
|
+
if (requestId)
|
|
1696
|
+
ws.send(JSON.stringify({ type: 'diagram:result', payload: { requestId, success: false, error } }));
|
|
1660
1697
|
}
|
|
1661
1698
|
}
|
|
1662
1699
|
else if (msg.type === 'diagram:display:update') {
|