@vessel-dsp/core 0.6.18 → 0.6.20

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,28 @@ 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.
@@ -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":"AACA,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,MAAM,EAEX,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACX,eAAe,EAkFf,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,CAiBhC"}
@@ -1,4 +1,5 @@
1
1
  import { isParsedQuantity } from "../../model/properties.js";
2
+ import { pinKey, resolveConnectivity, } from "../../model/connectivity.js";
2
3
  const INTERCHANGE_SCHEMA_V2 = "circuit-interchange/v2";
3
4
  const INTERCHANGE_SCHEMA_V3 = "circuit-interchange/v3";
4
5
  const V3_ONLY_TOP_LEVEL_FIELDS = [
@@ -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) {