@principal-ai/principal-view-core 0.28.3 → 0.28.4

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.
Files changed (34) hide show
  1. package/dist/auxiliary/AuxiliaryManifestValidator.d.ts +38 -0
  2. package/dist/auxiliary/AuxiliaryManifestValidator.d.ts.map +1 -0
  3. package/dist/auxiliary/AuxiliaryManifestValidator.js +97 -0
  4. package/dist/auxiliary/AuxiliaryManifestValidator.js.map +1 -0
  5. package/dist/auxiliary/index.d.ts +9 -0
  6. package/dist/auxiliary/index.d.ts.map +1 -0
  7. package/dist/auxiliary/index.js +14 -0
  8. package/dist/auxiliary/index.js.map +1 -0
  9. package/dist/auxiliary/validateAreaScopeDisjoint.d.ts +24 -0
  10. package/dist/auxiliary/validateAreaScopeDisjoint.d.ts.map +1 -0
  11. package/dist/auxiliary/validateAreaScopeDisjoint.js +61 -0
  12. package/dist/auxiliary/validateAreaScopeDisjoint.js.map +1 -0
  13. package/dist/node.d.ts +2 -0
  14. package/dist/node.d.ts.map +1 -1
  15. package/dist/node.js +5 -1
  16. package/dist/node.js.map +1 -1
  17. package/dist/types/auxiliary.d.ts +54 -0
  18. package/dist/types/auxiliary.d.ts.map +1 -0
  19. package/dist/types/auxiliary.js +27 -0
  20. package/dist/types/auxiliary.js.map +1 -0
  21. package/dist/types/index.d.ts +1 -0
  22. package/dist/types/index.d.ts.map +1 -1
  23. package/dist/types/index.js +1 -0
  24. package/dist/types/index.js.map +1 -1
  25. package/package.json +2 -1
  26. package/schemas/auxiliary.manifest.schema.json +48 -0
  27. package/src/auxiliary/AuxiliaryManifestValidator.test.ts +92 -0
  28. package/src/auxiliary/AuxiliaryManifestValidator.ts +129 -0
  29. package/src/auxiliary/index.ts +18 -0
  30. package/src/auxiliary/validateAreaScopeDisjoint.test.ts +85 -0
  31. package/src/auxiliary/validateAreaScopeDisjoint.ts +72 -0
  32. package/src/node.ts +12 -0
  33. package/src/types/auxiliary.ts +63 -0
  34. package/src/types/index.ts +1 -0
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Auxiliary Manifest Validator
3
+ *
4
+ * Own-file checks for `.principal-views/auxiliary.manifest.json`:
5
+ * - area names are unique
6
+ * - declared paths exist on disk
7
+ * - paths don't overlap each other (within or across areas)
8
+ *
9
+ * Cross-file overlap with scope paths lives in `validateAreaScopeDisjoint`,
10
+ * mirroring the way `validateScopeNamespaceNesting` handles cross-canvas
11
+ * checks for scopes/namespaces.
12
+ */
13
+ import type { AuxiliaryManifest } from '../types/auxiliary';
14
+ export interface AuxiliaryManifestValidationContext {
15
+ /** Parsed manifest. When absent, validation is a no-op (manifest is optional). */
16
+ manifest?: AuxiliaryManifest;
17
+ /** Path to the manifest file — used in violation messages. */
18
+ manifestPath?: string;
19
+ /** Repo root for resolving area paths against the filesystem. */
20
+ basePath: string;
21
+ }
22
+ export interface AuxiliaryManifestViolation {
23
+ ruleId: string;
24
+ severity: 'error' | 'warn';
25
+ file: string;
26
+ path?: string;
27
+ message: string;
28
+ impact: string;
29
+ suggestion: string;
30
+ }
31
+ export interface AuxiliaryManifestValidationResult {
32
+ valid: boolean;
33
+ violations: AuxiliaryManifestViolation[];
34
+ }
35
+ export declare class AuxiliaryManifestValidator {
36
+ validate(context: AuxiliaryManifestValidationContext): AuxiliaryManifestValidationResult;
37
+ }
38
+ //# sourceMappingURL=AuxiliaryManifestValidator.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ /**
3
+ * Auxiliary Manifest Validator
4
+ *
5
+ * Own-file checks for `.principal-views/auxiliary.manifest.json`:
6
+ * - area names are unique
7
+ * - declared paths exist on disk
8
+ * - paths don't overlap each other (within or across areas)
9
+ *
10
+ * Cross-file overlap with scope paths lives in `validateAreaScopeDisjoint`,
11
+ * mirroring the way `validateScopeNamespaceNesting` handles cross-canvas
12
+ * checks for scopes/namespaces.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.AuxiliaryManifestValidator = void 0;
16
+ const fs_1 = require("fs");
17
+ const path_1 = require("path");
18
+ const path_helpers_1 = require("../events/path-helpers");
19
+ const DEFAULT_MANIFEST_PATH = '.principal-views/auxiliary.manifest.json';
20
+ class AuxiliaryManifestValidator {
21
+ validate(context) {
22
+ const violations = [];
23
+ const { manifest, basePath } = context;
24
+ const file = context.manifestPath || DEFAULT_MANIFEST_PATH;
25
+ if (!manifest) {
26
+ return { valid: true, violations };
27
+ }
28
+ const areas = manifest.areas || [];
29
+ // Unique area names
30
+ const seenNames = new Map();
31
+ areas.forEach((area, idx) => {
32
+ const count = seenNames.get(area.name) ?? 0;
33
+ seenNames.set(area.name, count + 1);
34
+ if (count === 1) {
35
+ violations.push({
36
+ ruleId: 'auxiliary-area-name-duplicate',
37
+ severity: 'error',
38
+ file,
39
+ path: `areas[${idx}].name`,
40
+ message: `Area name "${area.name}" is declared more than once`,
41
+ impact: 'Duplicate names make diagnostics ambiguous — a violation cannot be tied back to a single area',
42
+ suggestion: 'Rename one of the areas so names are unique across the manifest.',
43
+ });
44
+ }
45
+ });
46
+ // Path existence + collect for overlap pass
47
+ const declaredPaths = [];
48
+ areas.forEach((area, areaIdx) => {
49
+ const paths = area.paths || [];
50
+ paths.forEach((p, pathIdx) => {
51
+ 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)) {
54
+ violations.push({
55
+ ruleId: 'auxiliary-area-path-missing',
56
+ severity: 'warn',
57
+ file,
58
+ path: `areas[${areaIdx}].paths[${pathIdx}]`,
59
+ message: `Path "${p}" declared by area "${area.name}" does not exist`,
60
+ impact: 'The manifest documents a folder that is not present in the repository',
61
+ suggestion: 'Verify the path exists relative to the repository root, or remove it from the area declaration.',
62
+ });
63
+ }
64
+ });
65
+ });
66
+ // Path overlap. Unlike scopes, areas have no dotted-name hierarchy, so
67
+ // parent-child nesting between two areas is just as ambiguous as a flat
68
+ // overlap — both are flagged.
69
+ for (let i = 0; i < declaredPaths.length; i++) {
70
+ for (let j = i + 1; j < declaredPaths.length; j++) {
71
+ const a = declaredPaths[i];
72
+ const b = declaredPaths[j];
73
+ const relationship = (0, path_helpers_1.pathsOverlap)(a.path, b.path);
74
+ if (relationship === 'none')
75
+ continue;
76
+ const sameArea = a.areaName === b.areaName;
77
+ violations.push({
78
+ ruleId: sameArea ? 'auxiliary-area-paths-self-overlap' : 'auxiliary-area-paths-overlap',
79
+ severity: 'error',
80
+ file,
81
+ path: sameArea
82
+ ? `areas[${a.areaIndex}].paths`
83
+ : undefined,
84
+ message: sameArea
85
+ ? `Area "${a.areaName}" declares overlapping paths "${a.path}" and "${b.path}"`
86
+ : `Paths overlap between areas "${a.areaName}" ("${a.path}") and "${b.areaName}" ("${b.path}")`,
87
+ impact: 'Two area declarations covering the same file make ownership ambiguous',
88
+ suggestion: 'Make the paths disjoint. If one folder genuinely sits inside another area, drop the redundant entry.',
89
+ });
90
+ }
91
+ }
92
+ const errors = violations.filter((v) => v.severity === 'error');
93
+ return { valid: errors.length === 0, violations };
94
+ }
95
+ }
96
+ exports.AuxiliaryManifestValidator = AuxiliaryManifestValidator;
97
+ //# sourceMappingURL=AuxiliaryManifestValidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuxiliaryManifestValidator.js","sourceRoot":"","sources":["../../src/auxiliary/AuxiliaryManifestValidator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Auxiliary module
3
+ *
4
+ * Validation for `auxiliary.manifest.json` — the catalog of project regions
5
+ * that sit outside the OTEL telemetry surface (docs, .github, etc.).
6
+ */
7
+ export { AuxiliaryManifestValidator, type AuxiliaryManifestValidationContext, type AuxiliaryManifestValidationResult, type AuxiliaryManifestViolation, } from './AuxiliaryManifestValidator';
8
+ export { validateAreaScopeDisjoint, type ValidateAreaScopeDisjointInput, } from './validateAreaScopeDisjoint';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auxiliary/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,0BAA0B,EAC1B,KAAK,kCAAkC,EACvC,KAAK,iCAAiC,EACtC,KAAK,0BAA0B,GAChC,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACL,yBAAyB,EACzB,KAAK,8BAA8B,GACpC,MAAM,6BAA6B,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Auxiliary module
4
+ *
5
+ * Validation for `auxiliary.manifest.json` — the catalog of project regions
6
+ * that sit outside the OTEL telemetry surface (docs, .github, etc.).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.validateAreaScopeDisjoint = exports.AuxiliaryManifestValidator = void 0;
10
+ var AuxiliaryManifestValidator_1 = require("./AuxiliaryManifestValidator");
11
+ Object.defineProperty(exports, "AuxiliaryManifestValidator", { enumerable: true, get: function () { return AuxiliaryManifestValidator_1.AuxiliaryManifestValidator; } });
12
+ var validateAreaScopeDisjoint_1 = require("./validateAreaScopeDisjoint");
13
+ Object.defineProperty(exports, "validateAreaScopeDisjoint", { enumerable: true, get: function () { return validateAreaScopeDisjoint_1.validateAreaScopeDisjoint; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auxiliary/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,2EAKsC;AAJpC,wIAAA,0BAA0B,OAAA;AAM5B,yEAGqC;AAFnC,sIAAA,yBAAyB,OAAA"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Area / Scope Disjointness Validator
3
+ *
4
+ * Cross-file check: project-area paths declared in
5
+ * `auxiliary.manifest.json` must be disjoint from every scope path declared
6
+ * in `architecture.scopes.canvas`. Areas and scopes carve up the repo into
7
+ * non-overlapping regions — any overlap (parent-child or otherwise) means a
8
+ * file is claimed by both an OTEL scope and an auxiliary area, which makes
9
+ * ownership ambiguous.
10
+ *
11
+ * Mirrors `validateScopeNamespaceNesting`'s cross-canvas pattern: takes both
12
+ * inputs, returns violations.
13
+ */
14
+ import type { AuxiliaryManifest } from '../types/auxiliary';
15
+ import type { ExtendedCanvas } from '../types/canvas';
16
+ import type { AuxiliaryManifestViolation } from './AuxiliaryManifestValidator';
17
+ export interface ValidateAreaScopeDisjointInput {
18
+ manifest: AuxiliaryManifest;
19
+ manifestPath?: string;
20
+ scopesCanvas?: ExtendedCanvas;
21
+ scopesCanvasPath?: string;
22
+ }
23
+ export declare function validateAreaScopeDisjoint(input: ValidateAreaScopeDisjointInput): AuxiliaryManifestViolation[];
24
+ //# sourceMappingURL=validateAreaScopeDisjoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateAreaScopeDisjoint.d.ts","sourceRoot":"","sources":["../../src/auxiliary/validateAreaScopeDisjoint.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGtD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE/E,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,cAAc,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAID,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,8BAA8B,GACpC,0BAA0B,EAAE,CAwC9B"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ /**
3
+ * Area / Scope Disjointness Validator
4
+ *
5
+ * Cross-file check: project-area paths declared in
6
+ * `auxiliary.manifest.json` must be disjoint from every scope path declared
7
+ * in `architecture.scopes.canvas`. Areas and scopes carve up the repo into
8
+ * non-overlapping regions — any overlap (parent-child or otherwise) means a
9
+ * file is claimed by both an OTEL scope and an auxiliary area, which makes
10
+ * ownership ambiguous.
11
+ *
12
+ * Mirrors `validateScopeNamespaceNesting`'s cross-canvas pattern: takes both
13
+ * inputs, returns violations.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.validateAreaScopeDisjoint = void 0;
17
+ const canvas_1 = require("../types/canvas");
18
+ const path_helpers_1 = require("../events/path-helpers");
19
+ const DEFAULT_MANIFEST_PATH = '.principal-views/auxiliary.manifest.json';
20
+ function validateAreaScopeDisjoint(input) {
21
+ const { manifest, scopesCanvas } = input;
22
+ const manifestFile = input.manifestPath || DEFAULT_MANIFEST_PATH;
23
+ if (!scopesCanvas)
24
+ return [];
25
+ const scopePaths = [];
26
+ for (const node of scopesCanvas.nodes || []) {
27
+ if (!(0, canvas_1.isOtelScopeNode)(node))
28
+ continue;
29
+ const scope = node.otel?.scope;
30
+ const paths = node.paths;
31
+ if (!scope || !paths || paths.length === 0)
32
+ continue;
33
+ for (const p of paths)
34
+ scopePaths.push({ scope, path: p });
35
+ }
36
+ if (scopePaths.length === 0)
37
+ return [];
38
+ const violations = [];
39
+ const areas = manifest.areas || [];
40
+ areas.forEach((area, areaIdx) => {
41
+ (area.paths || []).forEach((areaPath, pathIdx) => {
42
+ for (const sp of scopePaths) {
43
+ const relationship = (0, path_helpers_1.pathsOverlap)(areaPath, sp.path);
44
+ if (relationship === 'none')
45
+ continue;
46
+ violations.push({
47
+ ruleId: 'auxiliary-area-scope-overlap',
48
+ severity: 'error',
49
+ file: manifestFile,
50
+ path: `areas[${areaIdx}].paths[${pathIdx}]`,
51
+ message: `Area "${area.name}" path "${areaPath}" overlaps scope "${sp.scope}" path "${sp.path}"`,
52
+ impact: 'A file claimed by both an OTEL scope and an auxiliary area has ambiguous ownership — the manifest is meant to catalog regions outside the telemetry surface',
53
+ suggestion: 'Make the area path disjoint from every scope path. If the folder is genuinely runtime code, drop it from the manifest; if it is auxiliary, narrow the scope path or move the folder.',
54
+ });
55
+ }
56
+ });
57
+ });
58
+ return violations;
59
+ }
60
+ exports.validateAreaScopeDisjoint = validateAreaScopeDisjoint;
61
+ //# sourceMappingURL=validateAreaScopeDisjoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateAreaScopeDisjoint.js","sourceRoot":"","sources":["../../src/auxiliary/validateAreaScopeDisjoint.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;AAIH,4CAAkD;AAClD,yDAAsD;AAUtD,MAAM,qBAAqB,GAAG,0CAA0C,CAAC;AAEzE,SAAgB,yBAAyB,CACvC,KAAqC;IAErC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC;IACzC,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,qBAAqB,CAAC;IAEjE,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE7B,MAAM,UAAU,GAA2C,EAAE,CAAC;IAC9D,KAAK,MAAM,IAAI,IAAI,YAAY,CAAC,KAAK,IAAI,EAAE,EAAE;QAC3C,IAAI,CAAC,IAAA,wBAAe,EAAC,IAAI,CAAC;YAAE,SAAS;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACrD,KAAK,MAAM,CAAC,IAAI,KAAK;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;KAC5D;IAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEvC,MAAM,UAAU,GAAiC,EAAE,CAAC;IACpD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;IAEnC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;QAC9B,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YAC/C,KAAK,MAAM,EAAE,IAAI,UAAU,EAAE;gBAC3B,MAAM,YAAY,GAAG,IAAA,2BAAY,EAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;gBACrD,IAAI,YAAY,KAAK,MAAM;oBAAE,SAAS;gBAEtC,UAAU,CAAC,IAAI,CAAC;oBACd,MAAM,EAAE,8BAA8B;oBACtC,QAAQ,EAAE,OAAO;oBACjB,IAAI,EAAE,YAAY;oBAClB,IAAI,EAAE,SAAS,OAAO,WAAW,OAAO,GAAG;oBAC3C,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,WAAW,QAAQ,qBAAqB,EAAE,CAAC,KAAK,WAAW,EAAE,CAAC,IAAI,GAAG;oBAChG,MAAM,EAAE,6JAA6J;oBACrK,UAAU,EAAE,sLAAsL;iBACnM,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC;AA1CD,8DA0CC"}
package/dist/node.d.ts CHANGED
@@ -59,6 +59,8 @@ export { ExecutionLoader, createExecutionLoader } from './execution/ExecutionLoa
59
59
  export type { ExecutionFile, ExecutionLoadResult, } from './execution/ExecutionLoader';
60
60
  export { ScopesCanvasValidator, ScopePathIndex, validateScopeNamespaceNesting, DEFAULT_SCOPE_COLOR, DRAFT_NODE_COLOR, getScopeNames, getScopeDefinition, getScopeColor, normalizeScopes, buildScopeColorMap, getAllScopeNames, } from './scopes';
61
61
  export type { ScopesCanvasValidationContext, ScopesCanvasValidationResult, ScopesCanvasViolation, ScopePathEntry, ScopePathMatch, ScopeEventsCanvasPair, ValidateScopeNamespaceNestingInput, NormalizedScope, } from './scopes';
62
+ export { AuxiliaryManifestValidator, validateAreaScopeDisjoint, } from './auxiliary';
63
+ export type { AuxiliaryManifestValidationContext, AuxiliaryManifestValidationResult, AuxiliaryManifestViolation, ValidateAreaScopeDisjointInput, } from './auxiliary';
62
64
  export { EventsCanvasValidator, ScopeEventsValidator, NamespacePathIndex, OtelEventPathsValidator, } from './events';
63
65
  export type { EventsCanvasValidationContext, EventsCanvasValidationResult, EventsCanvasViolation, ScopeEventsValidationContext, ScopeEventsValidationResult, ScopeEventsViolation, NamespacePathEntry, NamespacePathMatch, EventsCanvasInput, OtelCanvasInput, OtelEventPathsValidationContext, OtelEventPathsValidationResult, OtelEventPathsViolation, OtelEventPathsRuleId, } from './events';
64
66
  //# sourceMappingURL=node.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG7F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EACV,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,YAAY,EACV,aAAa,EACb,eAAe,EACf,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACrF,YAAY,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,6BAA6B,EAC7B,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,kCAAkC,EAClC,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,YAAY,EACV,4BAA4B,EAC5B,6BAA6B,GAC9B,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAC;AAGlF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,YAAY,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAG1D,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAG5E,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAC3G,YAAY,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAGpE,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EACV,eAAe,EACf,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjG,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAG7F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACzE,YAAY,EACV,SAAS,EACT,WAAW,EACX,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,aAAa,EACb,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,UAAU,EACV,eAAe,EACf,WAAW,EACX,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,eAAe,EACf,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,0BAA0B,GAC3B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC;AACtF,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGhD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AAGjF,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,cAAc,EACd,aAAa,EACb,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,cAAc,EACd,uBAAuB,EACvB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,YAAY,EACZ,yBAAyB,EACzB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,2BAA2B,EAC3B,8BAA8B,EAC9B,gCAAgC,GACjC,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,0BAA0B,GAC3B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC9F,YAAY,EACV,aAAa,EACb,eAAe,EACf,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAGxC,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC3E,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACrF,YAAY,EACV,aAAa,EACb,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,6BAA6B,EAC7B,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,kCAAkC,EAClC,eAAe,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,kCAAkC,EAClC,iCAAiC,EACjC,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,qBAAqB,EACrB,4BAA4B,EAC5B,2BAA2B,EAC3B,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,EACf,+BAA+B,EAC/B,8BAA8B,EAC9B,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,UAAU,CAAC"}
package/dist/node.js CHANGED
@@ -26,7 +26,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
26
26
  };
27
27
  Object.defineProperty(exports, "__esModule", { value: true });
28
28
  exports.DRAFT_NODE_COLOR = exports.DEFAULT_SCOPE_COLOR = exports.validateScopeNamespaceNesting = exports.ScopePathIndex = exports.ScopesCanvasValidator = exports.createExecutionLoader = exports.ExecutionLoader = exports.createDashboardValidator = exports.DashboardValidator = exports.createExecutionValidator = exports.ExecutionValidator = exports.LibraryDiscovery = exports.CanvasDiscovery = exports.WorkflowValidator = exports.createWorkflowValidator = exports.setNestedValue = exports.getNestedValue = exports.computeAggregates = exports.hasEventMatching = exports.getRequiredEvents = exports.selectScenario = exports.ParsedTemplate = exports.parseTemplate = exports.renderWorkflow = exports.InMemoryFileSystemAdapter = exports.EventRegistry = exports.LibraryLoader = exports.getConfigNameFromFilename = exports.isYamlFile = exports.parseYaml = exports.ConfigurationLoader = exports.EventRecorderService = exports.SessionManager = exports.traceToCanvasJson = exports.traceToCanvas = exports.generatorRegistry = exports.TypeScriptGenerator = exports.generateTypes = exports.analyzeCoverage = exports.EventValidationError = exports.createValidatedEmitter = exports.EventValidator = exports.CanvasConverter = exports.GraphConverter = exports.PathMatcher = exports.PathBasedEventProcessor = exports.GraphInstrumentationHelper = exports.ConfigurationValidator = exports.ValidationEngine = exports.EventProcessor = void 0;
29
- exports.OtelEventPathsValidator = exports.NamespacePathIndex = exports.ScopeEventsValidator = exports.EventsCanvasValidator = exports.getAllScopeNames = exports.buildScopeColorMap = exports.normalizeScopes = exports.getScopeColor = exports.getScopeDefinition = exports.getScopeNames = void 0;
29
+ exports.OtelEventPathsValidator = exports.NamespacePathIndex = exports.ScopeEventsValidator = exports.EventsCanvasValidator = exports.validateAreaScopeDisjoint = exports.AuxiliaryManifestValidator = exports.getAllScopeNames = exports.buildScopeColorMap = exports.normalizeScopes = exports.getScopeColor = exports.getScopeDefinition = exports.getScopeNames = void 0;
30
30
  // Export all types (safe in all environments)
31
31
  __exportStar(require("./types"), exports);
32
32
  // Export core classes (Node.js processing)
@@ -135,6 +135,10 @@ Object.defineProperty(exports, "getScopeColor", { enumerable: true, get: functio
135
135
  Object.defineProperty(exports, "normalizeScopes", { enumerable: true, get: function () { return scopes_1.normalizeScopes; } });
136
136
  Object.defineProperty(exports, "buildScopeColorMap", { enumerable: true, get: function () { return scopes_1.buildScopeColorMap; } });
137
137
  Object.defineProperty(exports, "getAllScopeNames", { enumerable: true, get: function () { return scopes_1.getAllScopeNames; } });
138
+ // Export auxiliary module (manifest validation for non-OTEL project regions)
139
+ var auxiliary_1 = require("./auxiliary");
140
+ Object.defineProperty(exports, "AuxiliaryManifestValidator", { enumerable: true, get: function () { return auxiliary_1.AuxiliaryManifestValidator; } });
141
+ Object.defineProperty(exports, "validateAreaScopeDisjoint", { enumerable: true, get: function () { return auxiliary_1.validateAreaScopeDisjoint; } });
138
142
  // Export events module (canvas validation)
139
143
  var events_1 = require("./events");
140
144
  Object.defineProperty(exports, "EventsCanvasValidator", { enumerable: true, get: function () { return events_1.EventsCanvasValidator; } });
package/dist/node.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../src/node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Auxiliary Manifest Types
3
+ *
4
+ * The auxiliary manifest catalogs project regions that are *not* OTEL scopes —
5
+ * folders like `docs/` or `.github/` that support the project but don't emit
6
+ * telemetry. Scope paths and area paths together form a partition of the
7
+ * accounted-for filesystem.
8
+ *
9
+ * The manifest is open-ended: `areas` is the first section, but the top-level
10
+ * shape leaves room for future sibling sections (e.g. external integrations)
11
+ * without breaking the format.
12
+ */
13
+ /**
14
+ * One project area — a folder (or file) that supports the project outside the
15
+ * OTEL telemetry surface.
16
+ */
17
+ export interface ProjectArea {
18
+ /**
19
+ * Display name. Must be unique across all areas in the manifest — used as
20
+ * the area's identifier in diagnostics.
21
+ */
22
+ name: string;
23
+ /**
24
+ * One or more repo-relative paths owned by this area. Each entry may be a
25
+ * folder (covers all descendants) or a specific file. Paths must not
26
+ * overlap other areas, and must not overlap any scope path declared in a
27
+ * `.scopes.canvas`.
28
+ */
29
+ paths: string[];
30
+ /**
31
+ * Free-text purpose. The "light documentation" — a sentence about why this
32
+ * folder exists.
33
+ */
34
+ description: string;
35
+ }
36
+ /**
37
+ * The full manifest document. Persisted at
38
+ * `.principal-views/auxiliary.manifest.json`.
39
+ */
40
+ export interface AuxiliaryManifest {
41
+ /**
42
+ * Optional pointer to the JSON Schema that describes this file. Lets editors
43
+ * give autocomplete and validation when the field is set.
44
+ */
45
+ $schema?: string;
46
+ /** Project areas declared in this manifest. */
47
+ areas: ProjectArea[];
48
+ }
49
+ /**
50
+ * Type guard: true when the value plausibly conforms to `AuxiliaryManifest`.
51
+ * Shallow check — full validation lives in `AuxiliaryManifestValidator`.
52
+ */
53
+ export declare function isAuxiliaryManifest(value: unknown): value is AuxiliaryManifest;
54
+ //# sourceMappingURL=auxiliary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auxiliary.d.ts","sourceRoot":"","sources":["../../src/types/auxiliary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;;;;OAKG;IACH,KAAK,EAAE,MAAM,EAAE,CAAC;IAEhB;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,+CAA+C;IAC/C,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI9E"}
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ /**
3
+ * Auxiliary Manifest Types
4
+ *
5
+ * The auxiliary manifest catalogs project regions that are *not* OTEL scopes —
6
+ * folders like `docs/` or `.github/` that support the project but don't emit
7
+ * telemetry. Scope paths and area paths together form a partition of the
8
+ * accounted-for filesystem.
9
+ *
10
+ * The manifest is open-ended: `areas` is the first section, but the top-level
11
+ * shape leaves room for future sibling sections (e.g. external integrations)
12
+ * without breaking the format.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.isAuxiliaryManifest = void 0;
16
+ /**
17
+ * Type guard: true when the value plausibly conforms to `AuxiliaryManifest`.
18
+ * Shallow check — full validation lives in `AuxiliaryManifestValidator`.
19
+ */
20
+ function isAuxiliaryManifest(value) {
21
+ if (!value || typeof value !== 'object')
22
+ return false;
23
+ const v = value;
24
+ return Array.isArray(v.areas);
25
+ }
26
+ exports.isAuxiliaryManifest = isAuxiliaryManifest;
27
+ //# sourceMappingURL=auxiliary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auxiliary.js","sourceRoot":"","sources":["../../src/types/auxiliary.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;GAWG;;;AA2CH;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,KAAc;IAChD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,CAAC,GAAG,KAA4B,CAAC;IACvC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAJD,kDAIC"}
@@ -347,4 +347,5 @@ export * from './resource-match';
347
347
  export * from './canvas-scope';
348
348
  export * from './audit';
349
349
  export * from './dashboard';
350
+ export * from './auxiliary';
350
351
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -34,4 +34,5 @@ __exportStar(require("./resource-match"), exports);
34
34
  __exportStar(require("./canvas-scope"), exports);
35
35
  __exportStar(require("./audit"), exports);
36
36
  __exportStar(require("./dashboard"), exports);
37
+ __exportStar(require("./auxiliary"), exports);
37
38
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAkbH,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,sDAAoC;AAEpC,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,4CAA0B;AAE1B,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAE/E,yCAAuB;AACvB,mDAAiC;AACjC,iDAA+B;AAC/B,0CAAwB;AACxB,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAkbH,+EAA+E;AAC/E,mDAAmD;AACnD,+EAA+E;AAE/E,sDAAoC;AAEpC,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,4CAA0B;AAE1B,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAE/E,yCAAuB;AACvB,mDAAiC;AACjC,iDAA+B;AAC/B,0CAAwB;AACxB,8CAA4B;AAC5B,8CAA4B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@principal-ai/principal-view-core",
3
- "version": "0.28.3",
3
+ "version": "0.28.4",
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",
@@ -21,6 +21,7 @@
21
21
  "files": [
22
22
  "dist",
23
23
  "src",
24
+ "schemas",
24
25
  "README.md"
25
26
  ],
26
27
  "scripts": {
@@ -0,0 +1,48 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "$id": "https://principal-ai.dev/schemas/auxiliary.manifest.schema.json",
4
+ "title": "Auxiliary Manifest",
5
+ "description": "Catalogs project regions outside the OTEL telemetry surface (docs, .github, etc.). Lives at .principal-views/auxiliary.manifest.json.",
6
+ "type": "object",
7
+ "required": ["areas"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "$schema": {
11
+ "type": "string",
12
+ "description": "Pointer to this schema for editor autocomplete."
13
+ },
14
+ "areas": {
15
+ "type": "array",
16
+ "description": "Project areas — folders or files that support the project but don't emit OTEL telemetry.",
17
+ "items": { "$ref": "#/definitions/projectArea" }
18
+ }
19
+ },
20
+ "definitions": {
21
+ "projectArea": {
22
+ "type": "object",
23
+ "required": ["name", "paths", "description"],
24
+ "additionalProperties": false,
25
+ "properties": {
26
+ "name": {
27
+ "type": "string",
28
+ "minLength": 1,
29
+ "description": "Display name. Must be unique across all areas in the manifest."
30
+ },
31
+ "paths": {
32
+ "type": "array",
33
+ "minItems": 1,
34
+ "description": "Repo-relative paths owned by this area. Folder or file. Must not overlap other areas or any scope path.",
35
+ "items": {
36
+ "type": "string",
37
+ "minLength": 1
38
+ }
39
+ },
40
+ "description": {
41
+ "type": "string",
42
+ "minLength": 1,
43
+ "description": "Free-text purpose — a sentence about why this folder exists."
44
+ }
45
+ }
46
+ }
47
+ }
48
+ }
@@ -0,0 +1,92 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { mkdtempSync, mkdirSync, writeFileSync } from 'fs';
3
+ import { tmpdir } from 'os';
4
+ import { join } from 'path';
5
+ import { AuxiliaryManifestValidator } from './AuxiliaryManifestValidator';
6
+ import type { AuxiliaryManifest } from '../types/auxiliary';
7
+
8
+ function makeRepo(layout: string[]): string {
9
+ const root = mkdtempSync(join(tmpdir(), 'aux-manifest-'));
10
+ for (const rel of layout) {
11
+ const full = join(root, rel);
12
+ mkdirSync(full.substring(0, full.lastIndexOf('/')) || full, { recursive: true });
13
+ if (!rel.endsWith('/')) writeFileSync(full, '');
14
+ }
15
+ return root;
16
+ }
17
+
18
+ describe('AuxiliaryManifestValidator', () => {
19
+ const validator = new AuxiliaryManifestValidator();
20
+
21
+ test('no manifest is a no-op', () => {
22
+ const result = validator.validate({ basePath: '/tmp' });
23
+ expect(result.valid).toBe(true);
24
+ expect(result.violations).toHaveLength(0);
25
+ });
26
+
27
+ test('passes for a clean manifest', () => {
28
+ const root = makeRepo(['docs/README.md', '.github/workflows/ci.yml']);
29
+ const manifest: AuxiliaryManifest = {
30
+ areas: [
31
+ { name: 'Documentation', paths: ['docs'], description: 'design docs' },
32
+ { name: 'GitHub', paths: ['.github'], description: 'CI config' },
33
+ ],
34
+ };
35
+ const result = validator.validate({ manifest, basePath: root });
36
+ expect(result.valid).toBe(true);
37
+ expect(result.violations).toHaveLength(0);
38
+ });
39
+
40
+ test('flags duplicate area names', () => {
41
+ const root = makeRepo(['docs/README.md', 'misc/note.txt']);
42
+ const manifest: AuxiliaryManifest = {
43
+ areas: [
44
+ { name: 'Docs', paths: ['docs'], description: 'a' },
45
+ { name: 'Docs', paths: ['misc'], description: 'b' },
46
+ ],
47
+ };
48
+ const result = validator.validate({ manifest, basePath: root });
49
+ const dup = result.violations.find((v) => v.ruleId === 'auxiliary-area-name-duplicate');
50
+ expect(dup).toBeDefined();
51
+ expect(dup!.severity).toBe('error');
52
+ expect(result.valid).toBe(false);
53
+ });
54
+
55
+ test('warns when a declared path does not exist', () => {
56
+ const root = makeRepo(['docs/README.md']);
57
+ const manifest: AuxiliaryManifest = {
58
+ areas: [{ name: 'Ghost', paths: ['nope'], description: 'missing' }],
59
+ };
60
+ const result = validator.validate({ manifest, basePath: root });
61
+ const missing = result.violations.find((v) => v.ruleId === 'auxiliary-area-path-missing');
62
+ expect(missing).toBeDefined();
63
+ expect(missing!.severity).toBe('warn');
64
+ // Warnings alone don't invalidate the manifest
65
+ expect(result.valid).toBe(true);
66
+ });
67
+
68
+ test('flags overlap between two areas', () => {
69
+ const root = makeRepo(['docs/sub/file.md']);
70
+ const manifest: AuxiliaryManifest = {
71
+ areas: [
72
+ { name: 'A', paths: ['docs'], description: 'a' },
73
+ { name: 'B', paths: ['docs/sub'], description: 'b' },
74
+ ],
75
+ };
76
+ const result = validator.validate({ manifest, basePath: root });
77
+ const overlap = result.violations.find((v) => v.ruleId === 'auxiliary-area-paths-overlap');
78
+ expect(overlap).toBeDefined();
79
+ expect(overlap!.severity).toBe('error');
80
+ expect(result.valid).toBe(false);
81
+ });
82
+
83
+ test('flags duplicate paths within a single area as self-overlap', () => {
84
+ const root = makeRepo(['docs/file.md']);
85
+ const manifest: AuxiliaryManifest = {
86
+ areas: [{ name: 'A', paths: ['docs', 'docs'], description: 'a' }],
87
+ };
88
+ const result = validator.validate({ manifest, basePath: root });
89
+ const self = result.violations.find((v) => v.ruleId === 'auxiliary-area-paths-self-overlap');
90
+ expect(self).toBeDefined();
91
+ });
92
+ });
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Auxiliary Manifest Validator
3
+ *
4
+ * Own-file checks for `.principal-views/auxiliary.manifest.json`:
5
+ * - area names are unique
6
+ * - declared paths exist on disk
7
+ * - paths don't overlap each other (within or across areas)
8
+ *
9
+ * Cross-file overlap with scope paths lives in `validateAreaScopeDisjoint`,
10
+ * mirroring the way `validateScopeNamespaceNesting` handles cross-canvas
11
+ * checks for scopes/namespaces.
12
+ */
13
+
14
+ import { existsSync } from 'fs';
15
+ import { resolve } from 'path';
16
+ import type { AuxiliaryManifest } from '../types/auxiliary';
17
+ import { pathsOverlap } from '../events/path-helpers';
18
+
19
+ export interface AuxiliaryManifestValidationContext {
20
+ /** Parsed manifest. When absent, validation is a no-op (manifest is optional). */
21
+ manifest?: AuxiliaryManifest;
22
+
23
+ /** Path to the manifest file — used in violation messages. */
24
+ manifestPath?: string;
25
+
26
+ /** Repo root for resolving area paths against the filesystem. */
27
+ basePath: string;
28
+ }
29
+
30
+ export interface AuxiliaryManifestViolation {
31
+ ruleId: string;
32
+ severity: 'error' | 'warn';
33
+ file: string;
34
+ path?: string;
35
+ message: string;
36
+ impact: string;
37
+ suggestion: string;
38
+ }
39
+
40
+ export interface AuxiliaryManifestValidationResult {
41
+ valid: boolean;
42
+ violations: AuxiliaryManifestViolation[];
43
+ }
44
+
45
+ const DEFAULT_MANIFEST_PATH = '.principal-views/auxiliary.manifest.json';
46
+
47
+ export class AuxiliaryManifestValidator {
48
+ validate(context: AuxiliaryManifestValidationContext): AuxiliaryManifestValidationResult {
49
+ const violations: AuxiliaryManifestViolation[] = [];
50
+ const { manifest, basePath } = context;
51
+ const file = context.manifestPath || DEFAULT_MANIFEST_PATH;
52
+
53
+ if (!manifest) {
54
+ return { valid: true, violations };
55
+ }
56
+
57
+ const areas = manifest.areas || [];
58
+
59
+ // Unique area names
60
+ const seenNames = new Map<string, number>();
61
+ areas.forEach((area, idx) => {
62
+ const count = seenNames.get(area.name) ?? 0;
63
+ seenNames.set(area.name, count + 1);
64
+ if (count === 1) {
65
+ violations.push({
66
+ ruleId: 'auxiliary-area-name-duplicate',
67
+ severity: 'error',
68
+ file,
69
+ path: `areas[${idx}].name`,
70
+ message: `Area name "${area.name}" is declared more than once`,
71
+ impact: 'Duplicate names make diagnostics ambiguous — a violation cannot be tied back to a single area',
72
+ suggestion: 'Rename one of the areas so names are unique across the manifest.',
73
+ });
74
+ }
75
+ });
76
+
77
+ // Path existence + collect for overlap pass
78
+ const declaredPaths: Array<{ areaName: string; areaIndex: number; pathIndex: number; path: string }> = [];
79
+ areas.forEach((area, areaIdx) => {
80
+ const paths = area.paths || [];
81
+ paths.forEach((p, pathIdx) => {
82
+ declaredPaths.push({ areaName: area.name, areaIndex: areaIdx, pathIndex: pathIdx, path: p });
83
+
84
+ const resolved = resolve(basePath, p);
85
+ if (!existsSync(resolved)) {
86
+ violations.push({
87
+ ruleId: 'auxiliary-area-path-missing',
88
+ severity: 'warn',
89
+ file,
90
+ path: `areas[${areaIdx}].paths[${pathIdx}]`,
91
+ message: `Path "${p}" declared by area "${area.name}" does not exist`,
92
+ impact: 'The manifest documents a folder that is not present in the repository',
93
+ suggestion: 'Verify the path exists relative to the repository root, or remove it from the area declaration.',
94
+ });
95
+ }
96
+ });
97
+ });
98
+
99
+ // Path overlap. Unlike scopes, areas have no dotted-name hierarchy, so
100
+ // parent-child nesting between two areas is just as ambiguous as a flat
101
+ // overlap — both are flagged.
102
+ for (let i = 0; i < declaredPaths.length; i++) {
103
+ for (let j = i + 1; j < declaredPaths.length; j++) {
104
+ const a = declaredPaths[i];
105
+ const b = declaredPaths[j];
106
+ const relationship = pathsOverlap(a.path, b.path);
107
+ if (relationship === 'none') continue;
108
+
109
+ const sameArea = a.areaName === b.areaName;
110
+ violations.push({
111
+ ruleId: sameArea ? 'auxiliary-area-paths-self-overlap' : 'auxiliary-area-paths-overlap',
112
+ severity: 'error',
113
+ file,
114
+ path: sameArea
115
+ ? `areas[${a.areaIndex}].paths`
116
+ : undefined,
117
+ message: sameArea
118
+ ? `Area "${a.areaName}" declares overlapping paths "${a.path}" and "${b.path}"`
119
+ : `Paths overlap between areas "${a.areaName}" ("${a.path}") and "${b.areaName}" ("${b.path}")`,
120
+ impact: 'Two area declarations covering the same file make ownership ambiguous',
121
+ suggestion: 'Make the paths disjoint. If one folder genuinely sits inside another area, drop the redundant entry.',
122
+ });
123
+ }
124
+ }
125
+
126
+ const errors = violations.filter((v) => v.severity === 'error');
127
+ return { valid: errors.length === 0, violations };
128
+ }
129
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Auxiliary module
3
+ *
4
+ * Validation for `auxiliary.manifest.json` — the catalog of project regions
5
+ * that sit outside the OTEL telemetry surface (docs, .github, etc.).
6
+ */
7
+
8
+ export {
9
+ AuxiliaryManifestValidator,
10
+ type AuxiliaryManifestValidationContext,
11
+ type AuxiliaryManifestValidationResult,
12
+ type AuxiliaryManifestViolation,
13
+ } from './AuxiliaryManifestValidator';
14
+
15
+ export {
16
+ validateAreaScopeDisjoint,
17
+ type ValidateAreaScopeDisjointInput,
18
+ } from './validateAreaScopeDisjoint';
@@ -0,0 +1,85 @@
1
+ import { describe, expect, test } from 'bun:test';
2
+ import { validateAreaScopeDisjoint } from './validateAreaScopeDisjoint';
3
+ import type { AuxiliaryManifest } from '../types/auxiliary';
4
+ import type { ExtendedCanvas } from '../types/canvas';
5
+
6
+ function scopesCanvas(nodes: Array<{ scope: string; paths?: string[] }>): ExtendedCanvas {
7
+ return {
8
+ nodes: nodes.map((n, i) => ({
9
+ id: `s${i}`,
10
+ type: 'otel-scope',
11
+ description: `${n.scope} scope`,
12
+ ...(n.paths !== undefined ? { paths: n.paths } : {}),
13
+ otel: { scope: n.scope },
14
+ x: 0, y: 0, width: 100, height: 50,
15
+ })),
16
+ edges: [],
17
+ } as ExtendedCanvas;
18
+ }
19
+
20
+ describe('validateAreaScopeDisjoint', () => {
21
+ test('returns no violations when areas and scopes are disjoint', () => {
22
+ const manifest: AuxiliaryManifest = {
23
+ areas: [{ name: 'Docs', paths: ['docs'], description: 'd' }],
24
+ };
25
+ const violations = validateAreaScopeDisjoint({
26
+ manifest,
27
+ scopesCanvas: scopesCanvas([{ scope: 'core', paths: ['packages/core/src'] }]),
28
+ });
29
+ expect(violations).toHaveLength(0);
30
+ });
31
+
32
+ test('flags exact overlap with a scope path', () => {
33
+ const manifest: AuxiliaryManifest = {
34
+ areas: [{ name: 'Core', paths: ['packages/core/src'], description: 'd' }],
35
+ };
36
+ const violations = validateAreaScopeDisjoint({
37
+ manifest,
38
+ scopesCanvas: scopesCanvas([{ scope: 'core', paths: ['packages/core/src'] }]),
39
+ });
40
+ expect(violations).toHaveLength(1);
41
+ expect(violations[0].ruleId).toBe('auxiliary-area-scope-overlap');
42
+ });
43
+
44
+ test('flags parent-child overlap (area covering a scope path)', () => {
45
+ const manifest: AuxiliaryManifest = {
46
+ areas: [{ name: 'All', paths: ['packages'], description: 'd' }],
47
+ };
48
+ const violations = validateAreaScopeDisjoint({
49
+ manifest,
50
+ scopesCanvas: scopesCanvas([{ scope: 'core', paths: ['packages/core/src'] }]),
51
+ });
52
+ expect(violations).toHaveLength(1);
53
+ expect(violations[0].ruleId).toBe('auxiliary-area-scope-overlap');
54
+ });
55
+
56
+ test('flags parent-child overlap (scope path covering an area)', () => {
57
+ const manifest: AuxiliaryManifest = {
58
+ areas: [{ name: 'Inner', paths: ['packages/core/src/docs'], description: 'd' }],
59
+ };
60
+ const violations = validateAreaScopeDisjoint({
61
+ manifest,
62
+ scopesCanvas: scopesCanvas([{ scope: 'core', paths: ['packages/core/src'] }]),
63
+ });
64
+ expect(violations).toHaveLength(1);
65
+ });
66
+
67
+ test('no scopes canvas means no cross-check', () => {
68
+ const manifest: AuxiliaryManifest = {
69
+ areas: [{ name: 'Docs', paths: ['docs'], description: 'd' }],
70
+ };
71
+ const violations = validateAreaScopeDisjoint({ manifest });
72
+ expect(violations).toHaveLength(0);
73
+ });
74
+
75
+ test('scopes without paths impose no constraint', () => {
76
+ const manifest: AuxiliaryManifest = {
77
+ areas: [{ name: 'Docs', paths: ['docs'], description: 'd' }],
78
+ };
79
+ const violations = validateAreaScopeDisjoint({
80
+ manifest,
81
+ scopesCanvas: scopesCanvas([{ scope: 'core' }]),
82
+ });
83
+ expect(violations).toHaveLength(0);
84
+ });
85
+ });
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Area / Scope Disjointness Validator
3
+ *
4
+ * Cross-file check: project-area paths declared in
5
+ * `auxiliary.manifest.json` must be disjoint from every scope path declared
6
+ * in `architecture.scopes.canvas`. Areas and scopes carve up the repo into
7
+ * non-overlapping regions — any overlap (parent-child or otherwise) means a
8
+ * file is claimed by both an OTEL scope and an auxiliary area, which makes
9
+ * ownership ambiguous.
10
+ *
11
+ * Mirrors `validateScopeNamespaceNesting`'s cross-canvas pattern: takes both
12
+ * inputs, returns violations.
13
+ */
14
+
15
+ import type { AuxiliaryManifest } from '../types/auxiliary';
16
+ import type { ExtendedCanvas } from '../types/canvas';
17
+ import { isOtelScopeNode } from '../types/canvas';
18
+ import { pathsOverlap } from '../events/path-helpers';
19
+ import type { AuxiliaryManifestViolation } from './AuxiliaryManifestValidator';
20
+
21
+ export interface ValidateAreaScopeDisjointInput {
22
+ manifest: AuxiliaryManifest;
23
+ manifestPath?: string;
24
+ scopesCanvas?: ExtendedCanvas;
25
+ scopesCanvasPath?: string;
26
+ }
27
+
28
+ const DEFAULT_MANIFEST_PATH = '.principal-views/auxiliary.manifest.json';
29
+
30
+ export function validateAreaScopeDisjoint(
31
+ input: ValidateAreaScopeDisjointInput,
32
+ ): AuxiliaryManifestViolation[] {
33
+ const { manifest, scopesCanvas } = input;
34
+ const manifestFile = input.manifestPath || DEFAULT_MANIFEST_PATH;
35
+
36
+ if (!scopesCanvas) return [];
37
+
38
+ const scopePaths: Array<{ scope: string; path: string }> = [];
39
+ for (const node of scopesCanvas.nodes || []) {
40
+ if (!isOtelScopeNode(node)) continue;
41
+ const scope = node.otel?.scope;
42
+ const paths = node.paths;
43
+ if (!scope || !paths || paths.length === 0) continue;
44
+ for (const p of paths) scopePaths.push({ scope, path: p });
45
+ }
46
+
47
+ if (scopePaths.length === 0) return [];
48
+
49
+ const violations: AuxiliaryManifestViolation[] = [];
50
+ const areas = manifest.areas || [];
51
+
52
+ areas.forEach((area, areaIdx) => {
53
+ (area.paths || []).forEach((areaPath, pathIdx) => {
54
+ for (const sp of scopePaths) {
55
+ const relationship = pathsOverlap(areaPath, sp.path);
56
+ if (relationship === 'none') continue;
57
+
58
+ violations.push({
59
+ ruleId: 'auxiliary-area-scope-overlap',
60
+ severity: 'error',
61
+ file: manifestFile,
62
+ path: `areas[${areaIdx}].paths[${pathIdx}]`,
63
+ message: `Area "${area.name}" path "${areaPath}" overlaps scope "${sp.scope}" path "${sp.path}"`,
64
+ impact: 'A file claimed by both an OTEL scope and an auxiliary area has ambiguous ownership — the manifest is meant to catalog regions outside the telemetry surface',
65
+ suggestion: 'Make the area path disjoint from every scope path. If the folder is genuinely runtime code, drop it from the manifest; if it is auxiliary, narrow the scope path or move the folder.',
66
+ });
67
+ }
68
+ });
69
+ });
70
+
71
+ return violations;
72
+ }
package/src/node.ts CHANGED
@@ -224,6 +224,18 @@ export type {
224
224
  NormalizedScope,
225
225
  } from './scopes';
226
226
 
227
+ // Export auxiliary module (manifest validation for non-OTEL project regions)
228
+ export {
229
+ AuxiliaryManifestValidator,
230
+ validateAreaScopeDisjoint,
231
+ } from './auxiliary';
232
+ export type {
233
+ AuxiliaryManifestValidationContext,
234
+ AuxiliaryManifestValidationResult,
235
+ AuxiliaryManifestViolation,
236
+ ValidateAreaScopeDisjointInput,
237
+ } from './auxiliary';
238
+
227
239
  // Export events module (canvas validation)
228
240
  export {
229
241
  EventsCanvasValidator,
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Auxiliary Manifest Types
3
+ *
4
+ * The auxiliary manifest catalogs project regions that are *not* OTEL scopes —
5
+ * folders like `docs/` or `.github/` that support the project but don't emit
6
+ * telemetry. Scope paths and area paths together form a partition of the
7
+ * accounted-for filesystem.
8
+ *
9
+ * The manifest is open-ended: `areas` is the first section, but the top-level
10
+ * shape leaves room for future sibling sections (e.g. external integrations)
11
+ * without breaking the format.
12
+ */
13
+
14
+ /**
15
+ * One project area — a folder (or file) that supports the project outside the
16
+ * OTEL telemetry surface.
17
+ */
18
+ export interface ProjectArea {
19
+ /**
20
+ * Display name. Must be unique across all areas in the manifest — used as
21
+ * the area's identifier in diagnostics.
22
+ */
23
+ name: string;
24
+
25
+ /**
26
+ * One or more repo-relative paths owned by this area. Each entry may be a
27
+ * folder (covers all descendants) or a specific file. Paths must not
28
+ * overlap other areas, and must not overlap any scope path declared in a
29
+ * `.scopes.canvas`.
30
+ */
31
+ paths: string[];
32
+
33
+ /**
34
+ * Free-text purpose. The "light documentation" — a sentence about why this
35
+ * folder exists.
36
+ */
37
+ description: string;
38
+ }
39
+
40
+ /**
41
+ * The full manifest document. Persisted at
42
+ * `.principal-views/auxiliary.manifest.json`.
43
+ */
44
+ export interface AuxiliaryManifest {
45
+ /**
46
+ * Optional pointer to the JSON Schema that describes this file. Lets editors
47
+ * give autocomplete and validation when the field is set.
48
+ */
49
+ $schema?: string;
50
+
51
+ /** Project areas declared in this manifest. */
52
+ areas: ProjectArea[];
53
+ }
54
+
55
+ /**
56
+ * Type guard: true when the value plausibly conforms to `AuxiliaryManifest`.
57
+ * Shallow check — full validation lives in `AuxiliaryManifestValidator`.
58
+ */
59
+ export function isAuxiliaryManifest(value: unknown): value is AuxiliaryManifest {
60
+ if (!value || typeof value !== 'object') return false;
61
+ const v = value as { areas?: unknown };
62
+ return Array.isArray(v.areas);
63
+ }
@@ -456,3 +456,4 @@ export * from './resource-match';
456
456
  export * from './canvas-scope';
457
457
  export * from './audit';
458
458
  export * from './dashboard';
459
+ export * from './auxiliary';