@vessel-dsp/core 0.6.19 → 0.6.21

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
@@ -29,3 +29,43 @@ schematics; unknown roles warn by default and become errors when callers pass
29
29
  `validateDocument(document, { playbackClaim: true })`. Hosts can add
30
30
  lowering-specific diagnostics with `validateDocument(document, { rules: [...] })`
31
31
  without embedding runtime policy in core.
32
+
33
+ ## Advisory trace warnings
34
+
35
+ Trace plausibility checks are warnings for source review, not import gates or
36
+ proof of circuit correctness. Structural checks run by default and fail closed
37
+ when connectivity is incomplete. Role-aware audio checks are opt-in:
38
+
39
+ ```ts
40
+ import {
41
+ parseVdspCircuitDocumentWithTopology,
42
+ validateTracePlausibility,
43
+ } from "@vessel-dsp/core";
44
+
45
+ const parsed = parseVdspCircuitDocumentWithTopology(source);
46
+ const issues = validateTracePlausibility(parsed.document, {
47
+ connectivity: parsed.connectivity,
48
+ nodeRoles: parsed.nodeRoles,
49
+ includeAudioTopology: true,
50
+ });
51
+ ```
52
+
53
+ The audio checks warn about destructive signal-path RC shunts, extreme direct
54
+ input loading, and explicitly declared audio buffers without a passive
55
+ negative-feedback path. They require unique audio input/output roles and
56
+ locally connected boundary nodes; unavailable coverage is reported explicitly.
57
+
58
+ ## Supply-rail ownership
59
+
60
+ Every modeled supply voltage must have a single owner. A mains PSU (a referenced
61
+ `transformer`) owns the voltages it produces, a battery/DC-adapter owns a direct
62
+ DC boundary, and a converter/regulator/divider owns its produced output. A
63
+ `kind: rail` that asserts an ideal source on top of an already-owned voltage is a
64
+ `power-rail-fixed-owner-conflict` error from `validateDocument`. Declare the
65
+ boundary with the optional `CircuitPowerDomain.sourceKind`
66
+ (`mains-ac` | `external-dc`); when absent it is inferred from the domain's source
67
+ components. The check is power-model driven and connectivity-independent — it
68
+ never reads wires, node identity, or component voltage properties, so it produces
69
+ the same verdict for `wires: []` and a fully connected drawing. Represent a
70
+ produced/derived node as `kind: port` (a named net) with its `rails[]` binding
71
+ instead of a second ideal source.
@@ -1,4 +1,5 @@
1
1
  import type { CircuitDocument, DocumentSource } from "../model/types";
2
+ import { type InterchangeTopologyParseResult } from "./interchange/parser";
2
3
  export type CircuitFormat = "schx" | "spice" | "ltspice-asc";
3
4
  export type CircuitDocumentFileFormat = CircuitFormat | "vdsp" | "yaml" | "circuit-json";
4
5
  export type ParseCircuitDocumentOptions = Readonly<{
@@ -55,6 +56,7 @@ export declare function isVdspFilename(filename: string): boolean;
55
56
  export declare function detectCircuitDocumentFileFormat(filename: string): CircuitDocumentFileFormat | null;
56
57
  export declare function vdspFilenameFromName(name: string): string;
57
58
  export declare function parseVdspCircuitDocument(source: string): CircuitDocument;
59
+ export declare function parseVdspCircuitDocumentWithTopology(source: string): InterchangeTopologyParseResult;
58
60
  export declare function validateVdspCircuitDocumentSchema(source: string): VdspSchemaValidationResult;
59
61
  export declare function parseCircuitDocumentFile(source: string, options: ParseCircuitDocumentFileOptions): CircuitDocument;
60
62
  export declare function serializeCircuitDocumentFile(document: CircuitDocument, options: SerializeCircuitDocumentFileOptions): string;
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import { parseSchx } from "./schx/parser.js";
4
4
  import { serializeSchx } from "./schx/serializer.js";
5
5
  import { parseSpiceNetlist } from "./spice/parser.js";
6
6
  import { serializeSpiceNetlist } from "./spice/serializer.js";
7
- import { parseInterchangeYaml } from "./interchange/parser.js";
7
+ import { parseInterchangeYaml, parseInterchangeYamlWithTopology, } from "./interchange/parser.js";
8
8
  import { serializeInterchangeYaml } from "./interchange/serializer.js";
9
9
  import { parseCircuitJsonDocument, serializeCircuitJsonDocument, } from "./circuit-json/serializer.js";
10
10
  export const vdspFileExtension = ".vdsp";
@@ -85,6 +85,9 @@ export function vdspFilenameFromName(name) {
85
85
  export function parseVdspCircuitDocument(source) {
86
86
  return parseInterchangeYaml(source);
87
87
  }
88
+ export function parseVdspCircuitDocumentWithTopology(source) {
89
+ return parseInterchangeYamlWithTopology(source);
90
+ }
88
91
  export function validateVdspCircuitDocumentSchema(source) {
89
92
  try {
90
93
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/formats/document.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,12 @@
1
+ import { type Connectivity, type NodeId } from "../../model/connectivity";
1
2
  import type { CircuitDocument } from "../../model/types";
3
+ export type InterchangeTopologyParseResult = Readonly<{
4
+ document: CircuitDocument;
5
+ connectivity: Connectivity;
6
+ nodeRoles: ReadonlyMap<NodeId, string>;
7
+ connectivitySource: "declared" | "geometric";
8
+ }>;
2
9
  export declare function parseInterchangeYaml(source: string): CircuitDocument;
10
+ /** Parse a document together with source-declared node membership and roles. */
11
+ export declare function parseInterchangeYamlWithTopology(source: string): InterchangeTopologyParseResult;
3
12
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/interchange/parser.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,eAAe,EAkFf,MAAM,mBAAmB,CAAC;AAoC3B,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA4DpE"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/formats/interchange/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,MAAM,EAIX,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAwBX,eAAe,EA4Df,MAAM,mBAAmB,CAAC;AAoC3B,MAAM,MAAM,8BAA8B,GAAG,QAAQ,CAAC;IACrD,QAAQ,EAAE,eAAe,CAAC;IAC1B,YAAY,EAAE,YAAY,CAAC;IAC3B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,kBAAkB,EAAE,UAAU,GAAG,WAAW,CAAC;CAC7C,CAAC,CAAC;AAEH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,CA4DpE;AAED,gFAAgF;AAChF,wBAAgB,gCAAgC,CAC/C,MAAM,EAAE,MAAM,GACZ,8BAA8B,CAkBhC"}
@@ -1,3 +1,4 @@
1
+ import { pinKey, resolveConnectivity, } from "../../model/connectivity.js";
1
2
  import { isParsedQuantity } from "../../model/properties.js";
2
3
  const INTERCHANGE_SCHEMA_V2 = "circuit-interchange/v2";
3
4
  const INTERCHANGE_SCHEMA_V3 = "circuit-interchange/v3";
@@ -72,6 +73,271 @@ export function parseInterchangeYaml(source) {
72
73
  rawAttributes: parseStringRecord(root.rawAttributes, "rawAttributes"),
73
74
  };
74
75
  }
76
+ /** Parse a document together with source-declared node membership and roles. */
77
+ export function parseInterchangeYamlWithTopology(source) {
78
+ const document = parseInterchangeYaml(source);
79
+ const root = expectObject(parseYamlSubset(source), "root");
80
+ const declared = parseDeclaredTopology(root, document);
81
+ if (declared)
82
+ return { document, ...declared, connectivitySource: "declared" };
83
+ const connectivity = resolveConnectivity(document);
84
+ return {
85
+ document,
86
+ connectivity,
87
+ nodeRoles: new Map([...connectivity.nodeMembers.keys()].map((nodeId) => [
88
+ nodeId,
89
+ nodeId === connectivity.groundNodeId ? "ground" : "signal",
90
+ ])),
91
+ connectivitySource: "geometric",
92
+ };
93
+ }
94
+ function parseDeclaredTopology(root, document) {
95
+ const rawComponents = optionalArray(root.components, "components");
96
+ const rawNodes = optionalArray(root.nodes, "nodes");
97
+ const nodeKeys = new Set();
98
+ let declaredTerminalCount = 0;
99
+ for (const [componentIndex, rawComponent] of rawComponents.entries()) {
100
+ const component = expectObject(rawComponent, `components[${componentIndex}]`);
101
+ for (const [terminalIndex, rawTerminal] of optionalArray(component.terminals, `components[${componentIndex}].terminals`).entries()) {
102
+ const terminal = expectObject(rawTerminal, `components[${componentIndex}].terminals[${terminalIndex}]`);
103
+ const key = declaredNodeKey(terminal.node);
104
+ if (key === null)
105
+ continue;
106
+ nodeKeys.add(key);
107
+ declaredTerminalCount += 1;
108
+ }
109
+ }
110
+ for (const [index, rawNode] of rawNodes.entries()) {
111
+ const node = expectObject(rawNode, `nodes[${index}]`);
112
+ const key = declaredNodeKey(node.id);
113
+ if (key !== null)
114
+ nodeKeys.add(key);
115
+ }
116
+ if (declaredTerminalCount === 0 && rawNodes.length === 0)
117
+ return null;
118
+ const nodeIds = declaredNodeIds(nodeKeys);
119
+ const pinToNode = new Map();
120
+ const nodeMembers = new Map([...nodeIds.values()].map((nodeId) => [nodeId, []]));
121
+ const nodeRoles = new Map();
122
+ for (const [index, rawNode] of rawNodes.entries()) {
123
+ const node = expectObject(rawNode, `nodes[${index}]`);
124
+ const key = declaredNodeKey(node.id);
125
+ const nodeId = key === null ? undefined : nodeIds.get(key);
126
+ if (nodeId === undefined)
127
+ continue;
128
+ if (typeof node.role === "string" && node.role.trim()) {
129
+ nodeRoles.set(nodeId, node.role.trim());
130
+ }
131
+ }
132
+ if (declaredTerminalCount > 0) {
133
+ for (const [componentIndex, rawComponent] of rawComponents.entries()) {
134
+ const component = expectObject(rawComponent, `components[${componentIndex}]`);
135
+ const componentId = expectString(component.id, `components[${componentIndex}].id`);
136
+ for (const [terminalIndex, rawTerminal] of optionalArray(component.terminals, `components[${componentIndex}].terminals`).entries()) {
137
+ const path = `components[${componentIndex}].terminals[${terminalIndex}]`;
138
+ const terminal = expectObject(rawTerminal, path);
139
+ const key = declaredNodeKey(terminal.node);
140
+ const nodeId = key === null ? undefined : nodeIds.get(key);
141
+ if (nodeId === undefined)
142
+ continue;
143
+ addDeclaredPin(pinToNode, nodeMembers, nodeId, {
144
+ componentId,
145
+ terminalName: expectString(terminal.name, `${path}.name`),
146
+ }, path);
147
+ }
148
+ }
149
+ }
150
+ else {
151
+ parseDeclaredNodeMembers(rawNodes, document, nodeIds, pinToNode, nodeMembers);
152
+ }
153
+ let groundNodeId = null;
154
+ for (const [nodeId, role] of nodeRoles) {
155
+ if (role.toLowerCase() === "ground") {
156
+ groundNodeId = nodeId;
157
+ break;
158
+ }
159
+ }
160
+ if (groundNodeId === null) {
161
+ for (const component of document.components) {
162
+ if (component.kind !== "ground")
163
+ continue;
164
+ const terminal = component.terminals[0];
165
+ if (!terminal)
166
+ continue;
167
+ const nodeId = pinToNode.get(pinKey({ componentId: component.id, terminalName: terminal.name }));
168
+ if (nodeId !== undefined) {
169
+ groundNodeId = nodeId;
170
+ break;
171
+ }
172
+ }
173
+ }
174
+ for (const nodeId of nodeMembers.keys()) {
175
+ if (!nodeRoles.has(nodeId)) {
176
+ nodeRoles.set(nodeId, nodeId === groundNodeId ? "ground" : "signal");
177
+ }
178
+ }
179
+ return {
180
+ connectivity: {
181
+ pinToNode,
182
+ nodeMembers,
183
+ groundNodeId,
184
+ nodeCount: nodeMembers.size,
185
+ },
186
+ nodeRoles,
187
+ };
188
+ }
189
+ function declaredNodeKey(value) {
190
+ if (typeof value === "number" && Number.isInteger(value) && value >= 0) {
191
+ return String(value);
192
+ }
193
+ if (typeof value === "string" && value.trim())
194
+ return value.trim();
195
+ return null;
196
+ }
197
+ function declaredNodeIds(keys) {
198
+ const out = new Map();
199
+ const used = new Set();
200
+ for (const key of keys) {
201
+ if (!/^\d+$/.test(key))
202
+ continue;
203
+ const nodeId = Number(key);
204
+ if (!Number.isSafeInteger(nodeId))
205
+ continue;
206
+ out.set(key, nodeId);
207
+ used.add(nodeId);
208
+ }
209
+ let nextId = 0;
210
+ for (const key of keys) {
211
+ if (out.has(key))
212
+ continue;
213
+ while (used.has(nextId))
214
+ nextId += 1;
215
+ out.set(key, nextId);
216
+ used.add(nextId);
217
+ }
218
+ return out;
219
+ }
220
+ function addDeclaredPin(pinToNode, nodeMembers, nodeId, pin, path) {
221
+ const key = pinKey(pin);
222
+ const previousNode = pinToNode.get(key);
223
+ if (previousNode !== undefined) {
224
+ throw new Error(`${path}: pin "${pin.componentId}.${pin.terminalName}" already belongs to node ${previousNode}`);
225
+ }
226
+ pinToNode.set(key, nodeId);
227
+ const members = nodeMembers.get(nodeId);
228
+ if (!members)
229
+ throw new Error(`${path}: unknown declared node ${nodeId}`);
230
+ members.push(pin);
231
+ }
232
+ function parseDeclaredNodeMembers(rawNodes, document, nodeIds, pinToNode, nodeMembers) {
233
+ const componentTerminals = new Map(document.components.map((component) => [
234
+ component.id,
235
+ new Set(component.terminals.map((terminal) => terminal.name)),
236
+ ]));
237
+ const seenNodeKeys = new Set();
238
+ for (const [index, rawNode] of rawNodes.entries()) {
239
+ const path = `nodes[${index}]`;
240
+ const node = expectObject(rawNode, path);
241
+ const key = declaredNodeKey(node.id);
242
+ if (key === null)
243
+ throw new Error(`${path}.id: expected node identifier`);
244
+ if (seenNodeKeys.has(key))
245
+ throw new Error(`${path}.id: duplicate node id ${key}`);
246
+ seenNodeKeys.add(key);
247
+ const nodeId = nodeIds.get(key);
248
+ if (nodeId === undefined)
249
+ throw new Error(`${path}.id: unknown node identifier`);
250
+ for (const [memberIndex, rawMember] of optionalArray(node.members, `${path}.members`).entries()) {
251
+ const memberPath = `${path}.members[${memberIndex}]`;
252
+ const member = declaredNodeMemberObject(rawMember, memberPath);
253
+ const componentId = expectString(member.componentId, `${memberPath}.componentId`);
254
+ const terminalName = expectString(member.terminalName, `${memberPath}.terminalName`);
255
+ const terminals = componentTerminals.get(componentId);
256
+ if (!terminals) {
257
+ throw new Error(`${memberPath}.componentId: unknown component "${componentId}"`);
258
+ }
259
+ if (!terminals.has(terminalName)) {
260
+ throw new Error(`${memberPath}.terminalName: unknown terminal "${componentId}.${terminalName}"`);
261
+ }
262
+ addDeclaredPin(pinToNode, nodeMembers, nodeId, { componentId, terminalName }, memberPath);
263
+ }
264
+ }
265
+ }
266
+ function declaredNodeMemberObject(value, path) {
267
+ if (isYamlObject(value) && value.componentId !== undefined)
268
+ return value;
269
+ let flowText = typeof value === "string" ? value : null;
270
+ if (isYamlObject(value)) {
271
+ const entries = Object.entries(value);
272
+ const first = entries[0];
273
+ if (entries.length === 1 && first?.[0].trimStart().startsWith("{")) {
274
+ flowText = `${first[0]}: ${scalarText(first[1], path)}`;
275
+ }
276
+ }
277
+ if (!flowText?.trim().startsWith("{") || !flowText.trim().endsWith("}")) {
278
+ return expectObject(value, path);
279
+ }
280
+ const body = flowText.trim().slice(1, -1);
281
+ const out = {};
282
+ for (const field of splitFlowFields(body, path)) {
283
+ const colon = field.indexOf(":");
284
+ if (colon <= 0)
285
+ throw new Error(`${path}: invalid flow mapping member`);
286
+ const key = field.slice(0, colon).trim();
287
+ const rawValue = field.slice(colon + 1).trim();
288
+ if (!key || !rawValue)
289
+ throw new Error(`${path}: invalid flow mapping member`);
290
+ let parsedValue;
291
+ if (rawValue.startsWith('"')) {
292
+ try {
293
+ const parsed = JSON.parse(rawValue);
294
+ if (typeof parsed !== "string")
295
+ throw new Error();
296
+ parsedValue = parsed;
297
+ }
298
+ catch {
299
+ throw new Error(`${path}: invalid quoted flow mapping value`);
300
+ }
301
+ }
302
+ else if (rawValue.startsWith("'") && rawValue.endsWith("'")) {
303
+ parsedValue = rawValue.slice(1, -1).replace(/''/g, "'");
304
+ }
305
+ else {
306
+ parsedValue = rawValue;
307
+ }
308
+ assignUniqueKey(out, key, parsedValue);
309
+ }
310
+ return out;
311
+ }
312
+ function splitFlowFields(value, path) {
313
+ const fields = [];
314
+ let start = 0;
315
+ let quote = null;
316
+ let escaped = false;
317
+ for (let index = 0; index < value.length; index += 1) {
318
+ const char = value[index];
319
+ if (escaped) {
320
+ escaped = false;
321
+ continue;
322
+ }
323
+ if (quote === '"' && char === "\\") {
324
+ escaped = true;
325
+ continue;
326
+ }
327
+ if (char === '"' || char === "'") {
328
+ quote = quote === null ? char : quote === char ? null : quote;
329
+ continue;
330
+ }
331
+ if (char === "," && quote === null) {
332
+ fields.push(value.slice(start, index).trim());
333
+ start = index + 1;
334
+ }
335
+ }
336
+ if (quote !== null)
337
+ throw new Error(`${path}: unterminated quoted flow mapping`);
338
+ fields.push(value.slice(start).trim());
339
+ return fields.filter(Boolean);
340
+ }
75
341
  function rejectV3OnlyTopLevelFields(root) {
76
342
  for (const field of V3_ONLY_TOP_LEVEL_FIELDS) {
77
343
  if (root[field] !== undefined) {
@@ -528,8 +794,17 @@ function parsePower(value) {
528
794
  }
529
795
  function parsePowerDomain(value, path) {
530
796
  const domain = expectObject(value, path);
531
- return {
797
+ // sourceKind and the provisional powerSourceKind alias are normalized into the
798
+ // typed field below; drop both from the build-data passthrough so the parser is
799
+ // the single normalization boundary and only canonical sourceKind round-trips.
800
+ const buildData = {
532
801
  ...parseBuildDataObject(domain, path),
802
+ };
803
+ delete buildData.sourceKind;
804
+ delete buildData.powerSourceKind;
805
+ const sourceKind = parsePowerSourceKind(domain.sourceKind, domain.powerSourceKind, path);
806
+ return {
807
+ ...buildData,
533
808
  id: expectString(domain.id, `${path}.id`),
534
809
  sourceComponentIds: optionalArray(domain.sourceComponentIds, `${path}.sourceComponentIds`).map((id, index) => expectString(id, `${path}.sourceComponentIds[${index}]`)),
535
810
  ...(domain.ratedVoltage === undefined
@@ -538,9 +813,37 @@ function parsePowerDomain(value, path) {
538
813
  ratedVoltage: parseQuantity(domain.ratedVoltage, `${path}.ratedVoltage`),
539
814
  }),
540
815
  groundPolarity: parseCircuitPowerGroundPolarity(domain.groundPolarity, `${path}.groundPolarity`),
816
+ ...(sourceKind === undefined ? {} : { sourceKind }),
541
817
  rails: optionalArray(domain.rails, `${path}.rails`).map((rail, index) => parsePowerRailBinding(rail, `${path}.rails[${index}]`)),
542
818
  };
543
819
  }
820
+ // Resolves the canonical `sourceKind` and the provisional `powerSourceKind`
821
+ // build-data alias into one typed value: canonical wins, a same-valued alias is
822
+ // accepted, and disagreeing keys are rejected.
823
+ function parsePowerSourceKind(canonical, legacy, path) {
824
+ const canonicalKind = canonical === undefined
825
+ ? undefined
826
+ : coercePowerSourceKind(canonical, `${path}.sourceKind`);
827
+ const legacyKind = legacy === undefined
828
+ ? undefined
829
+ : coercePowerSourceKind(legacy, `${path}.powerSourceKind`);
830
+ if (canonicalKind !== undefined &&
831
+ legacyKind !== undefined &&
832
+ canonicalKind !== legacyKind) {
833
+ throw new Error(`${path}: sourceKind "${canonicalKind}" conflicts with powerSourceKind "${legacyKind}"`);
834
+ }
835
+ return canonicalKind ?? legacyKind;
836
+ }
837
+ function coercePowerSourceKind(value, path) {
838
+ const kind = expectString(value, path);
839
+ switch (kind) {
840
+ case "mains-ac":
841
+ case "external-dc":
842
+ return kind;
843
+ default:
844
+ throw new Error(`${path}: expected mains-ac or external-dc`);
845
+ }
846
+ }
544
847
  function parsePowerRailBinding(value, path) {
545
848
  const rail = expectObject(value, path);
546
849
  return {
@@ -1251,7 +1554,7 @@ function parseBlock(lines, cursor, indent) {
1251
1554
  return parseObject(lines, cursor, indent);
1252
1555
  }
1253
1556
  function assignUniqueKey(out, key, value) {
1254
- if (Object.prototype.hasOwnProperty.call(out, key)) {
1557
+ if (Object.hasOwn(out, key)) {
1255
1558
  throw new Error(`duplicate mapping key "${key}"`);
1256
1559
  }
1257
1560
  out[key] = value;