@principal-ai/principal-view-core 0.28.5 → 0.28.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.
@@ -10,6 +10,7 @@
10
10
  * mirroring the way `validateScopeNamespaceNesting` handles cross-canvas
11
11
  * checks for scopes/namespaces.
12
12
  */
13
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
13
14
  import type { AuxiliaryManifest } from '../types/auxiliary';
14
15
  export interface AuxiliaryManifestValidationContext {
15
16
  /** Parsed manifest. When absent, validation is a no-op (manifest is optional). */
@@ -33,6 +34,8 @@ export interface AuxiliaryManifestValidationResult {
33
34
  violations: AuxiliaryManifestViolation[];
34
35
  }
35
36
  export declare class AuxiliaryManifestValidator {
36
- validate(context: AuxiliaryManifestValidationContext): AuxiliaryManifestValidationResult;
37
+ private fsAdapter;
38
+ constructor(fsAdapter: FileSystemAdapter);
39
+ validate(context: AuxiliaryManifestValidationContext): Promise<AuxiliaryManifestValidationResult>;
37
40
  }
38
41
  //# sourceMappingURL=AuxiliaryManifestValidator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AuxiliaryManifestValidator.d.ts","sourceRoot":"","sources":["../../src/auxiliary/AuxiliaryManifestValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,MAAM,WAAW,kCAAkC;IACjD,kFAAkF;IAClF,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iCAAiC;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,0BAA0B,EAAE,CAAC;CAC1C;AAID,qBAAa,0BAA0B;IACrC,QAAQ,CAAC,OAAO,EAAE,kCAAkC,GAAG,iCAAiC;CAiFzF"}
1
+ {"version":3,"file":"AuxiliaryManifestValidator.d.ts","sourceRoot":"","sources":["../../src/auxiliary/AuxiliaryManifestValidator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAG5D,MAAM,WAAW,kCAAkC;IACjD,kFAAkF;IAClF,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAE7B,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iCAAiC;IAChD,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,0BAA0B,EAAE,CAAC;CAC1C;AAID,qBAAa,0BAA0B;IACzB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAE1C,QAAQ,CAAC,OAAO,EAAE,kCAAkC,GAAG,OAAO,CAAC,iCAAiC,CAAC;CAmFxG"}
@@ -13,12 +13,13 @@
13
13
  */
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.AuxiliaryManifestValidator = void 0;
16
- const fs_1 = require("fs");
17
- const path_1 = require("path");
18
16
  const path_helpers_1 = require("../events/path-helpers");
19
17
  const DEFAULT_MANIFEST_PATH = '.principal-views/auxiliary.manifest.json';
20
18
  class AuxiliaryManifestValidator {
21
- validate(context) {
19
+ constructor(fsAdapter) {
20
+ this.fsAdapter = fsAdapter;
21
+ }
22
+ async validate(context) {
22
23
  const violations = [];
23
24
  const { manifest, basePath } = context;
24
25
  const file = context.manifestPath || DEFAULT_MANIFEST_PATH;
@@ -45,12 +46,14 @@ class AuxiliaryManifestValidator {
45
46
  });
46
47
  // Path existence + collect for overlap pass
47
48
  const declaredPaths = [];
48
- areas.forEach((area, areaIdx) => {
49
+ for (let areaIdx = 0; areaIdx < areas.length; areaIdx++) {
50
+ const area = areas[areaIdx];
49
51
  const paths = area.paths || [];
50
- paths.forEach((p, pathIdx) => {
52
+ for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {
53
+ const p = paths[pathIdx];
51
54
  declaredPaths.push({ areaName: area.name, areaIndex: areaIdx, pathIndex: pathIdx, path: p });
52
- const resolved = (0, path_1.resolve)(basePath, p);
53
- if (!(0, fs_1.existsSync)(resolved)) {
55
+ const resolved = this.fsAdapter.join(basePath, p);
56
+ if (!(await this.fsAdapter.exists(resolved))) {
54
57
  violations.push({
55
58
  ruleId: 'auxiliary-area-path-missing',
56
59
  severity: 'warn',
@@ -61,8 +64,8 @@ class AuxiliaryManifestValidator {
61
64
  suggestion: 'Verify the path exists relative to the repository root, or remove it from the area declaration.',
62
65
  });
63
66
  }
64
- });
65
- });
67
+ }
68
+ }
66
69
  // Path overlap. Unlike scopes, areas have no dotted-name hierarchy, so
67
70
  // parent-child nesting between two areas is just as ambiguous as a flat
68
71
  // overlap — both are flagged.
@@ -1 +1 @@
1
- {"version":3,"file":"AuxiliaryManifestValidator.js","sourceRoot":"","sources":["../../src/auxiliary/AuxiliaryManifestValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AuxiliaryManifestValidator.js","sourceRoot":"","sources":["../../src/auxiliary/AuxiliaryManifestValidator.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Validates that a .events.canvas file properly documents event namespaces
5
5
  * and their events, with correct namespace extraction and node structure.
6
6
  */
7
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
7
8
  import type { ExtendedCanvas } from '../types/canvas';
8
9
  /**
9
10
  * Event namespace node structure
@@ -107,6 +108,8 @@ export interface EventsCanvasValidationResult {
107
108
  * Validates events canvas files
108
109
  */
109
110
  export declare class EventsCanvasValidator {
111
+ private fsAdapter;
112
+ constructor(fsAdapter: FileSystemAdapter);
110
113
  /**
111
114
  * Extract namespace from event name (all segments except last)
112
115
  *
@@ -1 +1 @@
1
- {"version":3,"file":"EventsCanvasValidator.d.ts","sourceRoot":"","sources":["../../src/events/EventsCanvasValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AAK1E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB;;;;;;;;;;;WAWG;QACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;YACrC,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;gBAC1B,IAAI,EAAE,MAAM,CAAC;gBACb,QAAQ,CAAC,EAAE,OAAO,CAAC;gBACnB,WAAW,CAAC,EAAE,MAAM,CAAC;aACtB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;IAEF,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,mCAAmC;IACnC,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IAEf,+BAA+B;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IAEpC,uBAAuB;IACvB,OAAO,EAAE;QACP,oCAAoC;QACpC,eAAe,EAAE,MAAM,CAAC;QACxB,4BAA4B;QAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,+BAA+B;QAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,yCAAyC;QACzC,WAAW,EAAE,MAAM,CAAC;QACpB,oDAAoD;QACpD,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,uCAAuC;QACvC,kBAAkB,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC;CAgOzC"}
1
+ {"version":3,"file":"EventsCanvasValidator.d.ts","sourceRoot":"","sources":["../../src/events/EventsCanvasValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,iBAAiB,CAAC;AAG1E;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,iBAAiB,CAAC;IACxB,SAAS,EAAE;QACT,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB;;;;;;;;;;;WAWG;QACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,EAAE,KAAK,CAAC;YACZ,IAAI,EAAE,MAAM,CAAC;YACb,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;YACrC,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;gBAC1B,IAAI,EAAE,MAAM,CAAC;gBACb,QAAQ,CAAC,EAAE,OAAO,CAAC;gBACnB,WAAW,CAAC,EAAE,MAAM,CAAC;aACtB,CAAC,CAAC;SACJ,CAAC,CAAC;KACJ,CAAC;IAEF,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,mCAAmC;IACnC,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IAEjB,mDAAmD;IACnD,aAAa,CAAC,EAAE,KAAK,CAAC;QACpB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IAEf,+BAA+B;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IAEpC,uBAAuB;IACvB,OAAO,EAAE;QACP,oCAAoC;QACpC,eAAe,EAAE,MAAM,CAAC;QACxB,4BAA4B;QAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;QAC/B,+BAA+B;QAC/B,iBAAiB,EAAE,MAAM,EAAE,CAAC;QAC5B,yCAAyC;QACzC,WAAW,EAAE,MAAM,CAAC;QACpB,oDAAoD;QACpD,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,uCAAuC;QACvC,kBAAkB,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAEhD;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAK5B;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAsB/B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;OAEG;IACG,QAAQ,CACZ,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,4BAA4B,CAAC;CAgOzC"}
@@ -7,13 +7,14 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.EventsCanvasValidator = void 0;
10
- const fs_1 = require("fs");
11
- const path_1 = require("path");
12
10
  const path_helpers_1 = require("./path-helpers");
13
11
  /**
14
12
  * Validates events canvas files
15
13
  */
16
14
  class EventsCanvasValidator {
15
+ constructor(fsAdapter) {
16
+ this.fsAdapter = fsAdapter;
17
+ }
17
18
  /**
18
19
  * Extract namespace from event name (all segments except last)
19
20
  *
@@ -231,8 +232,8 @@ class EventsCanvasValidator {
231
232
  path: p,
232
233
  });
233
234
  // Warn when a declared path does not exist relative to the repo root.
234
- const resolved = (0, path_1.resolve)(basePath, p);
235
- if (!(0, fs_1.existsSync)(resolved)) {
235
+ const resolved = this.fsAdapter.join(basePath, p);
236
+ if (!(await this.fsAdapter.exists(resolved))) {
236
237
  violations.push({
237
238
  ruleId: 'events-namespace-paths-missing',
238
239
  severity: 'warn',
@@ -1 +1 @@
1
- {"version":3,"file":"EventsCanvasValidator.js","sourceRoot":"","sources":["../../src/events/EventsCanvasValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EventsCanvasValidator.js","sourceRoot":"","sources":["../../src/events/EventsCanvasValidator.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Validates that a .scopes.canvas file exists and properly documents
5
5
  * all instrumentation scopes declared in library.yaml.
6
6
  */
7
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
7
8
  import type { ExtendedCanvas } from '../types/canvas';
8
9
  /**
9
10
  * Scopes canvas validation context
@@ -61,6 +62,8 @@ export interface ScopesCanvasValidationResult {
61
62
  * Validates scopes canvas files
62
63
  */
63
64
  export declare class ScopesCanvasValidator {
65
+ private fsAdapter;
66
+ constructor(fsAdapter: FileSystemAdapter);
64
67
  /**
65
68
  * Validate a scopes canvas against library.yaml owned-scopes
66
69
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ScopesCanvasValidator.d.ts","sourceRoot":"","sources":["../../src/scopes/ScopesCanvasValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAsD,MAAM,iBAAiB,CAAC;AAI1G;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,mCAAmC;IACnC,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qCAAqC;IACrC,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IAEf,+BAA+B;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IAEpC,iCAAiC;IACjC,QAAQ,EAAE;QACR,2CAA2C;QAC3C,gBAAgB,EAAE,MAAM,CAAC;QACzB,kCAAkC;QAClC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,iCAAiC;QACjC,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,+CAA+C;QAC/C,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,qBAAqB;IAChC;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAgM7F;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAsBhC"}
1
+ {"version":3,"file":"ScopesCanvasValidator.d.ts","sourceRoot":"","sources":["../../src/scopes/ScopesCanvasValidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAsD,MAAM,iBAAiB,CAAC;AAI1G;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,mCAAmC;IACnC,YAAY,CAAC,EAAE,cAAc,CAAC;IAE9B,qCAAqC;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,qCAAqC;IACrC,WAAW,EAAE,MAAM,EAAE,CAAC;IAEtB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;IAEf,qBAAqB;IACrB,QAAQ,EAAE,OAAO,GAAG,MAAM,CAAC;IAE3B,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IAEb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC;IAEhB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IAEf,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,4CAA4C;IAC5C,KAAK,EAAE,OAAO,CAAC;IAEf,+BAA+B;IAC/B,UAAU,EAAE,qBAAqB,EAAE,CAAC;IAEpC,iCAAiC;IACjC,QAAQ,EAAE;QACR,2CAA2C;QAC3C,gBAAgB,EAAE,MAAM,CAAC;QACzB,kCAAkC;QAClC,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,iCAAiC;QACjC,aAAa,EAAE,MAAM,EAAE,CAAC;QACxB,+CAA+C;QAC/C,WAAW,EAAE,MAAM,EAAE,CAAC;KACvB,CAAC;CACH;AAED;;GAEG;AACH,qBAAa,qBAAqB;IACpB,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,iBAAiB;IAEhD;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,6BAA6B,GAAG,OAAO,CAAC,4BAA4B,CAAC;IAgM7F;;OAEG;IACH,OAAO,CAAC,uBAAuB;CAsBhC"}
@@ -7,14 +7,15 @@
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.ScopesCanvasValidator = void 0;
10
- const fs_1 = require("fs");
11
- const path_1 = require("path");
12
10
  const canvas_1 = require("../types/canvas");
13
11
  const path_helpers_1 = require("../events/path-helpers");
14
12
  /**
15
13
  * Validates scopes canvas files
16
14
  */
17
15
  class ScopesCanvasValidator {
16
+ constructor(fsAdapter) {
17
+ this.fsAdapter = fsAdapter;
18
+ }
18
19
  /**
19
20
  * Validate a scopes canvas against library.yaml owned-scopes
20
21
  */
@@ -146,8 +147,8 @@ class ScopesCanvasValidator {
146
147
  for (const p of paths) {
147
148
  declaredPaths.push({ scope, nodeId, path: p });
148
149
  // Warn when a declared path does not exist relative to the repo root.
149
- const resolved = (0, path_1.resolve)(basePath, p);
150
- if (!(0, fs_1.existsSync)(resolved)) {
150
+ const resolved = this.fsAdapter.join(basePath, p);
151
+ if (!(await this.fsAdapter.exists(resolved))) {
151
152
  violations.push({
152
153
  ruleId: 'scopes-paths-missing',
153
154
  severity: 'warn',
@@ -1 +1 @@
1
- {"version":3,"file":"ScopesCanvasValidator.js","sourceRoot":"","sources":["../../src/scopes/ScopesCanvasValidator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScopesCanvasValidator.js","sourceRoot":"","sources":["../../src/scopes/ScopesCanvasValidator.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ai/principal-view-core",
3
- "version": "0.28.5",
3
+ "version": "0.28.6",
4
4
  "description": "Core logic and types for graph-based principal view framework",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -2,6 +2,7 @@ import { describe, expect, test } from 'bun:test';
2
2
  import { mkdtempSync, mkdirSync, writeFileSync } from 'fs';
3
3
  import { tmpdir } from 'os';
4
4
  import { join } from 'path';
5
+ import { NodeFileSystemAdapter } from '@principal-ai/repository-abstraction/node';
5
6
  import { AuxiliaryManifestValidator } from './AuxiliaryManifestValidator';
6
7
  import type { AuxiliaryManifest } from '../types/auxiliary';
7
8
 
@@ -16,15 +17,15 @@ function makeRepo(layout: string[]): string {
16
17
  }
17
18
 
18
19
  describe('AuxiliaryManifestValidator', () => {
19
- const validator = new AuxiliaryManifestValidator();
20
+ const validator = new AuxiliaryManifestValidator(new NodeFileSystemAdapter());
20
21
 
21
- test('no manifest is a no-op', () => {
22
- const result = validator.validate({ basePath: '/tmp' });
22
+ test('no manifest is a no-op', async () => {
23
+ const result = await validator.validate({ basePath: '/tmp' });
23
24
  expect(result.valid).toBe(true);
24
25
  expect(result.violations).toHaveLength(0);
25
26
  });
26
27
 
27
- test('passes for a clean manifest', () => {
28
+ test('passes for a clean manifest', async () => {
28
29
  const root = makeRepo(['docs/README.md', '.github/workflows/ci.yml']);
29
30
  const manifest: AuxiliaryManifest = {
30
31
  areas: [
@@ -32,12 +33,12 @@ describe('AuxiliaryManifestValidator', () => {
32
33
  { name: 'GitHub', paths: ['.github'], description: 'CI config' },
33
34
  ],
34
35
  };
35
- const result = validator.validate({ manifest, basePath: root });
36
+ const result = await validator.validate({ manifest, basePath: root });
36
37
  expect(result.valid).toBe(true);
37
38
  expect(result.violations).toHaveLength(0);
38
39
  });
39
40
 
40
- test('flags duplicate area names', () => {
41
+ test('flags duplicate area names', async () => {
41
42
  const root = makeRepo(['docs/README.md', 'misc/note.txt']);
42
43
  const manifest: AuxiliaryManifest = {
43
44
  areas: [
@@ -45,19 +46,19 @@ describe('AuxiliaryManifestValidator', () => {
45
46
  { name: 'Docs', paths: ['misc'], description: 'b' },
46
47
  ],
47
48
  };
48
- const result = validator.validate({ manifest, basePath: root });
49
+ const result = await validator.validate({ manifest, basePath: root });
49
50
  const dup = result.violations.find((v) => v.ruleId === 'auxiliary-area-name-duplicate');
50
51
  expect(dup).toBeDefined();
51
52
  expect(dup!.severity).toBe('error');
52
53
  expect(result.valid).toBe(false);
53
54
  });
54
55
 
55
- test('warns when a declared path does not exist', () => {
56
+ test('warns when a declared path does not exist', async () => {
56
57
  const root = makeRepo(['docs/README.md']);
57
58
  const manifest: AuxiliaryManifest = {
58
59
  areas: [{ name: 'Ghost', paths: ['nope'], description: 'missing' }],
59
60
  };
60
- const result = validator.validate({ manifest, basePath: root });
61
+ const result = await validator.validate({ manifest, basePath: root });
61
62
  const missing = result.violations.find((v) => v.ruleId === 'auxiliary-area-path-missing');
62
63
  expect(missing).toBeDefined();
63
64
  expect(missing!.severity).toBe('warn');
@@ -65,7 +66,7 @@ describe('AuxiliaryManifestValidator', () => {
65
66
  expect(result.valid).toBe(true);
66
67
  });
67
68
 
68
- test('flags overlap between two areas', () => {
69
+ test('flags overlap between two areas', async () => {
69
70
  const root = makeRepo(['docs/sub/file.md']);
70
71
  const manifest: AuxiliaryManifest = {
71
72
  areas: [
@@ -73,19 +74,19 @@ describe('AuxiliaryManifestValidator', () => {
73
74
  { name: 'B', paths: ['docs/sub'], description: 'b' },
74
75
  ],
75
76
  };
76
- const result = validator.validate({ manifest, basePath: root });
77
+ const result = await validator.validate({ manifest, basePath: root });
77
78
  const overlap = result.violations.find((v) => v.ruleId === 'auxiliary-area-paths-overlap');
78
79
  expect(overlap).toBeDefined();
79
80
  expect(overlap!.severity).toBe('error');
80
81
  expect(result.valid).toBe(false);
81
82
  });
82
83
 
83
- test('flags duplicate paths within a single area as self-overlap', () => {
84
+ test('flags duplicate paths within a single area as self-overlap', async () => {
84
85
  const root = makeRepo(['docs/file.md']);
85
86
  const manifest: AuxiliaryManifest = {
86
87
  areas: [{ name: 'A', paths: ['docs', 'docs'], description: 'a' }],
87
88
  };
88
- const result = validator.validate({ manifest, basePath: root });
89
+ const result = await validator.validate({ manifest, basePath: root });
89
90
  const self = result.violations.find((v) => v.ruleId === 'auxiliary-area-paths-self-overlap');
90
91
  expect(self).toBeDefined();
91
92
  });
@@ -11,8 +11,7 @@
11
11
  * checks for scopes/namespaces.
12
12
  */
13
13
 
14
- import { existsSync } from 'fs';
15
- import { resolve } from 'path';
14
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
16
15
  import type { AuxiliaryManifest } from '../types/auxiliary';
17
16
  import { pathsOverlap } from '../events/path-helpers';
18
17
 
@@ -45,7 +44,9 @@ export interface AuxiliaryManifestValidationResult {
45
44
  const DEFAULT_MANIFEST_PATH = '.principal-views/auxiliary.manifest.json';
46
45
 
47
46
  export class AuxiliaryManifestValidator {
48
- validate(context: AuxiliaryManifestValidationContext): AuxiliaryManifestValidationResult {
47
+ constructor(private fsAdapter: FileSystemAdapter) {}
48
+
49
+ async validate(context: AuxiliaryManifestValidationContext): Promise<AuxiliaryManifestValidationResult> {
49
50
  const violations: AuxiliaryManifestViolation[] = [];
50
51
  const { manifest, basePath } = context;
51
52
  const file = context.manifestPath || DEFAULT_MANIFEST_PATH;
@@ -76,13 +77,15 @@ export class AuxiliaryManifestValidator {
76
77
 
77
78
  // Path existence + collect for overlap pass
78
79
  const declaredPaths: Array<{ areaName: string; areaIndex: number; pathIndex: number; path: string }> = [];
79
- areas.forEach((area, areaIdx) => {
80
+ for (let areaIdx = 0; areaIdx < areas.length; areaIdx++) {
81
+ const area = areas[areaIdx];
80
82
  const paths = area.paths || [];
81
- paths.forEach((p, pathIdx) => {
83
+ for (let pathIdx = 0; pathIdx < paths.length; pathIdx++) {
84
+ const p = paths[pathIdx];
82
85
  declaredPaths.push({ areaName: area.name, areaIndex: areaIdx, pathIndex: pathIdx, path: p });
83
86
 
84
- const resolved = resolve(basePath, p);
85
- if (!existsSync(resolved)) {
87
+ const resolved = this.fsAdapter.join(basePath, p);
88
+ if (!(await this.fsAdapter.exists(resolved))) {
86
89
  violations.push({
87
90
  ruleId: 'auxiliary-area-path-missing',
88
91
  severity: 'warn',
@@ -93,8 +96,8 @@ export class AuxiliaryManifestValidator {
93
96
  suggestion: 'Verify the path exists relative to the repository root, or remove it from the area declaration.',
94
97
  });
95
98
  }
96
- });
97
- });
99
+ }
100
+ }
98
101
 
99
102
  // Path overlap. Unlike scopes, areas have no dotted-name hierarchy, so
100
103
  // parent-child nesting between two areas is just as ambiguous as a flat
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Browser-safety regression test.
3
+ *
4
+ * The package has two entry points:
5
+ * - `@principal-ai/principal-view-core` (src/index.ts) — must work in any
6
+ * environment, including browsers. It must not transitively import any
7
+ * Node.js-only built-in module.
8
+ * - `@principal-ai/principal-view-core/node` (src/node.ts) — Node-only.
9
+ *
10
+ * This test walks the import graph starting from src/index.ts and fails if
11
+ * any reachable source file pulls in a forbidden Node built-in. `import type`
12
+ * lines are erased at compile time and are ignored.
13
+ */
14
+
15
+ import { describe, expect, test } from 'bun:test';
16
+ import { readFileSync, statSync } from 'fs';
17
+ import { dirname, resolve } from 'path';
18
+
19
+ const ENTRY = resolve(import.meta.dir, 'index.ts');
20
+ const SRC_ROOT = resolve(import.meta.dir);
21
+
22
+ // Node built-ins that don't exist in the browser. `node:` prefix and
23
+ // submodules like `fs/promises` are matched separately.
24
+ const FORBIDDEN_BARE = new Set([
25
+ 'fs',
26
+ 'path',
27
+ 'os',
28
+ 'child_process',
29
+ 'crypto',
30
+ 'http',
31
+ 'https',
32
+ 'net',
33
+ 'tls',
34
+ 'stream',
35
+ 'zlib',
36
+ 'url',
37
+ 'worker_threads',
38
+ 'cluster',
39
+ 'dgram',
40
+ 'dns',
41
+ 'readline',
42
+ 'v8',
43
+ 'vm',
44
+ ]);
45
+
46
+ function isForbidden(spec: string): boolean {
47
+ if (spec.startsWith('node:')) return true;
48
+ const root = spec.split('/')[0];
49
+ return FORBIDDEN_BARE.has(root);
50
+ }
51
+
52
+ function resolveRelative(from: string, spec: string): string | null {
53
+ const base = resolve(dirname(from), spec);
54
+ const candidates = [
55
+ base,
56
+ `${base}.ts`,
57
+ `${base}.tsx`,
58
+ `${base}/index.ts`,
59
+ `${base}/index.tsx`,
60
+ ];
61
+ for (const c of candidates) {
62
+ try {
63
+ const s = statSync(c);
64
+ if (s.isFile()) return c;
65
+ } catch {
66
+ // not a file; keep trying
67
+ }
68
+ }
69
+ return null;
70
+ }
71
+
72
+ interface ImportRef {
73
+ spec: string;
74
+ typeOnly: boolean;
75
+ }
76
+
77
+ // Strip /* ... */ and // ... so commented-out imports don't trip the regex.
78
+ function stripComments(src: string): string {
79
+ return src
80
+ .replace(/\/\*[\s\S]*?\*\//g, '')
81
+ .replace(/(^|[^:])\/\/[^\n]*/g, '$1');
82
+ }
83
+
84
+ function extractImports(src: string): ImportRef[] {
85
+ const cleaned = stripComments(src);
86
+ const refs: ImportRef[] = [];
87
+
88
+ // import ... from 'spec' / import 'spec'
89
+ const importRe = /^\s*import\s+(type\s+)?(?:[^'"]*?from\s+)?['"]([^'"]+)['"]/gm;
90
+ let m: RegExpExecArray | null;
91
+ while ((m = importRe.exec(cleaned))) {
92
+ refs.push({ spec: m[2], typeOnly: Boolean(m[1]) });
93
+ }
94
+
95
+ // export ... from 'spec' (re-exports — runtime-relevant unless "export type")
96
+ const exportRe = /^\s*export\s+(type\s+)?(?:\*|\{[^}]*\})\s+from\s+['"]([^'"]+)['"]/gm;
97
+ while ((m = exportRe.exec(cleaned))) {
98
+ refs.push({ spec: m[2], typeOnly: Boolean(m[1]) });
99
+ }
100
+
101
+ return refs;
102
+ }
103
+
104
+ interface LeakReport {
105
+ chain: string[];
106
+ forbiddenSpec: string;
107
+ }
108
+
109
+ function findLeaks(entry: string): LeakReport[] {
110
+ const visited = new Set<string>();
111
+ const leaks: LeakReport[] = [];
112
+
113
+ function walk(file: string, chain: string[]): void {
114
+ if (visited.has(file)) return;
115
+ visited.add(file);
116
+
117
+ const rel = file.startsWith(SRC_ROOT) ? file.slice(SRC_ROOT.length + 1) : file;
118
+ const nextChain = [...chain, rel];
119
+
120
+ let src: string;
121
+ try {
122
+ src = readFileSync(file, 'utf-8');
123
+ } catch {
124
+ return;
125
+ }
126
+
127
+ for (const ref of extractImports(src)) {
128
+ if (ref.typeOnly) continue;
129
+
130
+ // Forbidden Node built-in?
131
+ if (isForbidden(ref.spec)) {
132
+ leaks.push({ chain: nextChain, forbiddenSpec: ref.spec });
133
+ continue;
134
+ }
135
+
136
+ // Relative import — recurse.
137
+ if (ref.spec.startsWith('.')) {
138
+ const resolved = resolveRelative(file, ref.spec);
139
+ if (resolved) walk(resolved, nextChain);
140
+ continue;
141
+ }
142
+
143
+ // External package — out of scope. We trust the package author to have
144
+ // shipped a browser-safe entry; if they didn't, that's a separate bug.
145
+ }
146
+ }
147
+
148
+ walk(entry, []);
149
+ return leaks;
150
+ }
151
+
152
+ describe('browser-safe entry (src/index.ts)', () => {
153
+ test('does not transitively import any Node.js built-in', () => {
154
+ const leaks = findLeaks(ENTRY);
155
+
156
+ if (leaks.length > 0) {
157
+ const lines = leaks.map((l) => {
158
+ const arrow = l.chain.join('\n → ');
159
+ return ` ✗ imports "${l.forbiddenSpec}" via:\n → ${arrow}`;
160
+ });
161
+ const msg =
162
+ `Found ${leaks.length} Node.js built-in import(s) reachable from src/index.ts.\n` +
163
+ `These must move to src/node.ts (or be replaced with a FileSystemAdapter):\n\n` +
164
+ lines.join('\n\n');
165
+ throw new Error(msg);
166
+ }
167
+
168
+ expect(leaks).toHaveLength(0);
169
+ });
170
+ });
@@ -2,6 +2,7 @@ import { describe, expect, test, beforeAll, afterAll } from 'bun:test';
2
2
  import { mkdtempSync, mkdirSync, rmSync } from 'fs';
3
3
  import { tmpdir } from 'os';
4
4
  import { join } from 'path';
5
+ import { NodeFileSystemAdapter } from '@principal-ai/repository-abstraction/node';
5
6
  import { EventsCanvasValidator } from './EventsCanvasValidator';
6
7
  import type { ExtendedCanvas } from '../types/canvas';
7
8
 
@@ -50,7 +51,7 @@ function canvas(nodes: any[]): ExtendedCanvas {
50
51
  }
51
52
 
52
53
  async function runValidator(nodes: any[]) {
53
- const validator = new EventsCanvasValidator();
54
+ const validator = new EventsCanvasValidator(new NodeFileSystemAdapter());
54
55
  return validator.validate({
55
56
  eventsCanvas: canvas(nodes),
56
57
  eventsCanvasPath: 'test.events.canvas',
@@ -5,9 +5,8 @@
5
5
  * and their events, with correct namespace extraction and node structure.
6
6
  */
7
7
 
8
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
8
9
  import type { ExtendedCanvas, ExtendedCanvasNode } from '../types/canvas';
9
- import { existsSync } from 'fs';
10
- import { resolve } from 'path';
11
10
  import { pathsOverlap } from './path-helpers';
12
11
 
13
12
  /**
@@ -128,6 +127,8 @@ export interface EventsCanvasValidationResult {
128
127
  * Validates events canvas files
129
128
  */
130
129
  export class EventsCanvasValidator {
130
+ constructor(private fsAdapter: FileSystemAdapter) {}
131
+
131
132
  /**
132
133
  * Extract namespace from event name (all segments except last)
133
134
  *
@@ -376,8 +377,8 @@ export class EventsCanvasValidator {
376
377
  });
377
378
 
378
379
  // Warn when a declared path does not exist relative to the repo root.
379
- const resolved = resolve(basePath, p);
380
- if (!existsSync(resolved)) {
380
+ const resolved = this.fsAdapter.join(basePath, p);
381
+ if (!(await this.fsAdapter.exists(resolved))) {
381
382
  violations.push({
382
383
  ruleId: 'events-namespace-paths-missing',
383
384
  severity: 'warn',
@@ -2,6 +2,7 @@ import { describe, expect, test } from 'bun:test';
2
2
  import { mkdtempSync, mkdirSync, writeFileSync, rmSync } from 'fs';
3
3
  import { join } from 'path';
4
4
  import { tmpdir } from 'os';
5
+ import { NodeFileSystemAdapter } from '@principal-ai/repository-abstraction/node';
5
6
  import { ScopesCanvasValidator } from './ScopesCanvasValidator';
6
7
  import type { ExtendedCanvas } from '../types/canvas';
7
8
 
@@ -46,7 +47,7 @@ function withTempRepo(layout: string[], fn: (root: string) => Promise<void>): Pr
46
47
  describe('ScopesCanvasValidator scope paths', () => {
47
48
  test('no paths declared → no path violations', async () => {
48
49
  const canvas = makeCanvas([makeScopeNode({ id: 's1', scope: 'a.b' })]);
49
- const v = new ScopesCanvasValidator();
50
+ const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
50
51
  const r = await v.validate({
51
52
  scopesCanvas: canvas,
52
53
  ownedScopes: ['a.b'],
@@ -64,7 +65,7 @@ describe('ScopesCanvasValidator scope paths', () => {
64
65
  paths: ['packages/a/src', 'packages/a/generated'],
65
66
  }),
66
67
  ]);
67
- const v = new ScopesCanvasValidator();
68
+ const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
68
69
  const r = await v.validate({ scopesCanvas: canvas, ownedScopes: ['a'], basePath: root });
69
70
  const w = r.violations.find(x => x.ruleId === 'scopes-paths-multiple');
70
71
  expect(w).toBeDefined();
@@ -77,7 +78,7 @@ describe('ScopesCanvasValidator scope paths', () => {
77
78
  const canvas = makeCanvas([
78
79
  makeScopeNode({ id: 's1', scope: 'a', paths: ['packages/a/missing'] }),
79
80
  ]);
80
- const v = new ScopesCanvasValidator();
81
+ const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
81
82
  const r = await v.validate({ scopesCanvas: canvas, ownedScopes: ['a'], basePath: root });
82
83
  const w = r.violations.find(x => x.ruleId === 'scopes-paths-missing');
83
84
  expect(w).toBeDefined();
@@ -91,7 +92,7 @@ describe('ScopesCanvasValidator scope paths', () => {
91
92
  makeScopeNode({ id: 's1', scope: 'a', paths: ['packages/shared/src'] }),
92
93
  makeScopeNode({ id: 's2', scope: 'b', paths: ['packages/shared/src'] }),
93
94
  ]);
94
- const v = new ScopesCanvasValidator();
95
+ const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
95
96
  const r = await v.validate({
96
97
  scopesCanvas: canvas,
97
98
  ownedScopes: ['a', 'b'],
@@ -114,7 +115,7 @@ describe('ScopesCanvasValidator scope paths', () => {
114
115
  paths: ['packages/core/src/validation'],
115
116
  }),
116
117
  ]);
117
- const v = new ScopesCanvasValidator();
118
+ const v = new ScopesCanvasValidator(new NodeFileSystemAdapter());
118
119
  const r = await v.validate({
119
120
  scopesCanvas: canvas,
120
121
  ownedScopes: ['principal-ai.core', 'principal-ai.core.validation'],
@@ -5,8 +5,7 @@
5
5
  * all instrumentation scopes declared in library.yaml.
6
6
  */
7
7
 
8
- import { existsSync } from 'fs';
9
- import { resolve } from 'path';
8
+ import type { FileSystemAdapter } from '@principal-ai/repository-abstraction';
10
9
  import type { ExtendedCanvas, ExtendedCanvasNode, OtelScopeNode, isOtelScopeNode } from '../types/canvas';
11
10
  import { isOtelScopeNode as checkOtelScopeNode } from '../types/canvas';
12
11
  import { pathsOverlap } from '../events/path-helpers';
@@ -81,6 +80,8 @@ export interface ScopesCanvasValidationResult {
81
80
  * Validates scopes canvas files
82
81
  */
83
82
  export class ScopesCanvasValidator {
83
+ constructor(private fsAdapter: FileSystemAdapter) {}
84
+
84
85
  /**
85
86
  * Validate a scopes canvas against library.yaml owned-scopes
86
87
  */
@@ -224,8 +225,8 @@ export class ScopesCanvasValidator {
224
225
  declaredPaths.push({ scope, nodeId, path: p });
225
226
 
226
227
  // Warn when a declared path does not exist relative to the repo root.
227
- const resolved = resolve(basePath, p);
228
- if (!existsSync(resolved)) {
228
+ const resolved = this.fsAdapter.join(basePath, p);
229
+ if (!(await this.fsAdapter.exists(resolved))) {
229
230
  violations.push({
230
231
  ruleId: 'scopes-paths-missing',
231
232
  severity: 'warn',