@squads-sh/validator 0.1.0

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 (53) hide show
  1. package/dist/adapters/filesystem.d.ts +11 -0
  2. package/dist/adapters/filesystem.d.ts.map +1 -0
  3. package/dist/adapters/filesystem.js +37 -0
  4. package/dist/adapters/filesystem.js.map +1 -0
  5. package/dist/categories/agents.d.ts +21 -0
  6. package/dist/categories/agents.d.ts.map +1 -0
  7. package/dist/categories/agents.js +214 -0
  8. package/dist/categories/agents.js.map +1 -0
  9. package/dist/categories/cross-refs.d.ts +13 -0
  10. package/dist/categories/cross-refs.d.ts.map +1 -0
  11. package/dist/categories/cross-refs.js +88 -0
  12. package/dist/categories/cross-refs.js.map +1 -0
  13. package/dist/categories/manifest.d.ts +19 -0
  14. package/dist/categories/manifest.d.ts.map +1 -0
  15. package/dist/categories/manifest.js +150 -0
  16. package/dist/categories/manifest.js.map +1 -0
  17. package/dist/categories/structure.d.ts +14 -0
  18. package/dist/categories/structure.d.ts.map +1 -0
  19. package/dist/categories/structure.js +76 -0
  20. package/dist/categories/structure.js.map +1 -0
  21. package/dist/categories/tasks.d.ts +20 -0
  22. package/dist/categories/tasks.d.ts.map +1 -0
  23. package/dist/categories/tasks.js +195 -0
  24. package/dist/categories/tasks.js.map +1 -0
  25. package/dist/categories/workflows.d.ts +17 -0
  26. package/dist/categories/workflows.d.ts.map +1 -0
  27. package/dist/categories/workflows.js +125 -0
  28. package/dist/categories/workflows.js.map +1 -0
  29. package/dist/index.d.ts +14 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +62 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/parser.d.ts +20 -0
  34. package/dist/parser.d.ts.map +1 -0
  35. package/dist/parser.js +58 -0
  36. package/dist/parser.js.map +1 -0
  37. package/dist/scoring.d.ts +22 -0
  38. package/dist/scoring.d.ts.map +1 -0
  39. package/dist/scoring.js +57 -0
  40. package/dist/scoring.js.map +1 -0
  41. package/dist/types.d.ts +101 -0
  42. package/dist/types.d.ts.map +1 -0
  43. package/dist/types.js +19 -0
  44. package/dist/types.js.map +1 -0
  45. package/dist/utils/enums.d.ts +9 -0
  46. package/dist/utils/enums.d.ts.map +1 -0
  47. package/dist/utils/enums.js +37 -0
  48. package/dist/utils/enums.js.map +1 -0
  49. package/dist/utils/patterns.d.ts +11 -0
  50. package/dist/utils/patterns.d.ts.map +1 -0
  51. package/dist/utils/patterns.js +11 -0
  52. package/dist/utils/patterns.js.map +1 -0
  53. package/package.json +34 -0
@@ -0,0 +1,22 @@
1
+ import type { CategoryResult, CategoryName, ValidationFinding, ValidationStatus } from "./types.js";
2
+ /**
3
+ * Compute score for a single category.
4
+ * Starts at 100, loses ERROR_PENALTY per error and WARNING_PENALTY per warning, min 0.
5
+ */
6
+ export declare function computeCategoryScore(findings: ValidationFinding[]): number;
7
+ /**
8
+ * Build a CategoryResult from findings for a category.
9
+ */
10
+ export declare function buildCategoryResult(name: CategoryName, findings: ValidationFinding[]): CategoryResult;
11
+ /**
12
+ * Compute weighted average score from category results.
13
+ */
14
+ export declare function computeWeightedScore(categories: CategoryResult[]): number;
15
+ /**
16
+ * Determine overall validation status.
17
+ * SAFE: 0 errors, 0 warnings
18
+ * WARNING: 0 errors, >= 1 warning
19
+ * CRITICAL: >= 1 error
20
+ */
21
+ export declare function computeStatus(totalErrors: number, totalWarnings: number): ValidationStatus;
22
+ //# sourceMappingURL=scoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.d.ts","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAMpB;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAM1E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,iBAAiB,EAAE,GAC5B,cAAc,CAWhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,GAAG,MAAM,CAWzE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,MAAM,GACpB,gBAAgB,CAIlB"}
@@ -0,0 +1,57 @@
1
+ import { CATEGORY_WEIGHTS, CATEGORY_LABELS } from "./types.js";
2
+ const ERROR_PENALTY = 20;
3
+ const WARNING_PENALTY = 5;
4
+ /**
5
+ * Compute score for a single category.
6
+ * Starts at 100, loses ERROR_PENALTY per error and WARNING_PENALTY per warning, min 0.
7
+ */
8
+ export function computeCategoryScore(findings) {
9
+ let score = 100;
10
+ for (const f of findings) {
11
+ score -= f.severity === "error" ? ERROR_PENALTY : WARNING_PENALTY;
12
+ }
13
+ return Math.max(0, score);
14
+ }
15
+ /**
16
+ * Build a CategoryResult from findings for a category.
17
+ */
18
+ export function buildCategoryResult(name, findings) {
19
+ const categoryFindings = findings.filter((f) => f.category === name);
20
+ return {
21
+ name,
22
+ label: CATEGORY_LABELS[name],
23
+ weight: CATEGORY_WEIGHTS[name],
24
+ score: computeCategoryScore(categoryFindings),
25
+ findings: categoryFindings,
26
+ errorCount: categoryFindings.filter((f) => f.severity === "error").length,
27
+ warningCount: categoryFindings.filter((f) => f.severity === "warning").length,
28
+ };
29
+ }
30
+ /**
31
+ * Compute weighted average score from category results.
32
+ */
33
+ export function computeWeightedScore(categories) {
34
+ let totalWeight = 0;
35
+ let weightedSum = 0;
36
+ for (const cat of categories) {
37
+ weightedSum += cat.score * cat.weight;
38
+ totalWeight += cat.weight;
39
+ }
40
+ if (totalWeight === 0)
41
+ return 0;
42
+ return Math.round(weightedSum / totalWeight);
43
+ }
44
+ /**
45
+ * Determine overall validation status.
46
+ * SAFE: 0 errors, 0 warnings
47
+ * WARNING: 0 errors, >= 1 warning
48
+ * CRITICAL: >= 1 error
49
+ */
50
+ export function computeStatus(totalErrors, totalWarnings) {
51
+ if (totalErrors > 0)
52
+ return "CRITICAL";
53
+ if (totalWarnings > 0)
54
+ return "WARNING";
55
+ return "SAFE";
56
+ }
57
+ //# sourceMappingURL=scoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring.js","sourceRoot":"","sources":["../src/scoring.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE/D,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAA6B;IAChE,IAAI,KAAK,GAAG,GAAG,CAAC;IAChB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,IAAkB,EAClB,QAA6B;IAE7B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC;IACrE,OAAO;QACL,IAAI;QACJ,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC;QAC5B,MAAM,EAAE,gBAAgB,CAAC,IAAI,CAAC;QAC9B,KAAK,EAAE,oBAAoB,CAAC,gBAAgB,CAAC;QAC7C,QAAQ,EAAE,gBAAgB;QAC1B,UAAU,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM;QACzE,YAAY,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM;KAC9E,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,UAA4B;IAC/D,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,WAAW,IAAI,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;QACtC,WAAW,IAAI,GAAG,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IAChC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,aAAqB;IAErB,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,UAAU,CAAC;IACvC,IAAI,aAAa,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * FileTree: Map of relative paths to file contents.
3
+ * The validator never touches filesystem or APIs directly.
4
+ * CLI builds this via fs.readdir, Web builds via GitHub API.
5
+ */
6
+ export type FileTree = Map<string, string>;
7
+ /** Severity of a validation finding */
8
+ export type Severity = "error" | "warning";
9
+ /** A single validation finding */
10
+ export interface ValidationFinding {
11
+ severity: Severity;
12
+ category: CategoryName;
13
+ message: string;
14
+ file?: string;
15
+ }
16
+ /** Names for the 6 validation categories */
17
+ export type CategoryName = "manifest" | "structure" | "agents" | "tasks" | "workflows" | "cross-refs";
18
+ /** Result for a single category */
19
+ export interface CategoryResult {
20
+ name: CategoryName;
21
+ label: string;
22
+ weight: number;
23
+ score: number;
24
+ findings: ValidationFinding[];
25
+ errorCount: number;
26
+ warningCount: number;
27
+ }
28
+ /** Overall validation status */
29
+ export type ValidationStatus = "SAFE" | "WARNING" | "CRITICAL";
30
+ /** The full validation report */
31
+ export interface ValidationReport {
32
+ score: number;
33
+ status: ValidationStatus;
34
+ categories: CategoryResult[];
35
+ findings: ValidationFinding[];
36
+ summary: {
37
+ totalErrors: number;
38
+ totalWarnings: number;
39
+ fileCount: number;
40
+ };
41
+ }
42
+ /** Parsed squad.yaml manifest */
43
+ export interface ParsedManifest {
44
+ name?: string;
45
+ version?: string;
46
+ description?: string;
47
+ slashPrefix?: string;
48
+ aios?: {
49
+ minVersion?: string;
50
+ type?: string;
51
+ };
52
+ components?: {
53
+ agents?: string[];
54
+ tasks?: string[];
55
+ workflows?: string[];
56
+ };
57
+ [key: string]: unknown;
58
+ }
59
+ /** Parsed agent frontmatter */
60
+ export interface ParsedAgent {
61
+ file: string;
62
+ agent?: {
63
+ name?: string;
64
+ id?: string;
65
+ title?: string;
66
+ icon?: string;
67
+ whenToUse?: string;
68
+ };
69
+ persona_profile?: {
70
+ archetype?: string;
71
+ communication?: {
72
+ tone?: string;
73
+ };
74
+ };
75
+ greeting_levels?: Record<string, unknown>;
76
+ }
77
+ /** Parsed task frontmatter */
78
+ export interface ParsedTask {
79
+ file: string;
80
+ task?: string;
81
+ responsavel?: string;
82
+ responsavel_type?: string;
83
+ atomic_layer?: string;
84
+ Entrada?: Array<Record<string, unknown>>;
85
+ Saida?: Array<Record<string, unknown>>;
86
+ Checklist?: unknown;
87
+ }
88
+ /** Parsed workflow YAML */
89
+ export interface ParsedWorkflow {
90
+ file: string;
91
+ workflow_name?: string;
92
+ description?: string;
93
+ agent_sequence?: string[];
94
+ success_indicators?: string[];
95
+ transitions?: Record<string, unknown>;
96
+ }
97
+ /** Category weights configuration */
98
+ export declare const CATEGORY_WEIGHTS: Record<CategoryName, number>;
99
+ /** Category labels for display */
100
+ export declare const CATEGORY_LABELS: Record<CategoryName, string>;
101
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,19 @@
1
+ /** Category weights configuration */
2
+ export const CATEGORY_WEIGHTS = {
3
+ manifest: 25,
4
+ structure: 15,
5
+ agents: 20,
6
+ tasks: 15,
7
+ workflows: 10,
8
+ "cross-refs": 15,
9
+ };
10
+ /** Category labels for display */
11
+ export const CATEGORY_LABELS = {
12
+ manifest: "Manifest",
13
+ structure: "Structure",
14
+ agents: "Agents",
15
+ tasks: "Tasks",
16
+ workflows: "Workflows",
17
+ "cross-refs": "Cross References",
18
+ };
19
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAiHA,qCAAqC;AACrC,MAAM,CAAC,MAAM,gBAAgB,GAAiC;IAC5D,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,YAAY,EAAE,kBAAkB;CACjC,CAAC"}
@@ -0,0 +1,9 @@
1
+ /** Valid archetype values for persona_profile */
2
+ export declare const ARCHETYPES: Set<string>;
3
+ /** Valid communication tone values */
4
+ export declare const TONES: Set<string>;
5
+ /** Valid atomic_layer values for tasks */
6
+ export declare const ATOMIC_LAYERS: Set<string>;
7
+ /** Valid responsavel_type values for tasks */
8
+ export declare const RESPONSAVEL_TYPES: Set<string>;
9
+ //# sourceMappingURL=enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../src/utils/enums.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,eAAO,MAAM,UAAU,aAKrB,CAAC;AAEH,sCAAsC;AACtC,eAAO,MAAM,KAAK,aAYhB,CAAC;AAEH,0CAA0C;AAC1C,eAAO,MAAM,aAAa,aAMxB,CAAC;AAEH,8CAA8C;AAC9C,eAAO,MAAM,iBAAiB,aAK5B,CAAC"}
@@ -0,0 +1,37 @@
1
+ /** Valid archetype values for persona_profile */
2
+ export const ARCHETYPES = new Set([
3
+ "Builder",
4
+ "Guardian",
5
+ "Balancer",
6
+ "Flow_Master",
7
+ ]);
8
+ /** Valid communication tone values */
9
+ export const TONES = new Set([
10
+ "formal",
11
+ "informal",
12
+ "technical",
13
+ "friendly",
14
+ "assertive",
15
+ "collaborative",
16
+ "analytical",
17
+ "creative",
18
+ "strategic",
19
+ "empathetic",
20
+ "pragmatic",
21
+ ]);
22
+ /** Valid atomic_layer values for tasks */
23
+ export const ATOMIC_LAYERS = new Set([
24
+ "Atom",
25
+ "Molecule",
26
+ "Organism",
27
+ "Template",
28
+ "Page",
29
+ ]);
30
+ /** Valid responsavel_type values for tasks */
31
+ export const RESPONSAVEL_TYPES = new Set([
32
+ "Agente",
33
+ "Worker",
34
+ "Humano",
35
+ "Clone",
36
+ ]);
37
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/utils/enums.ts"],"names":[],"mappings":"AAAA,iDAAiD;AACjD,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC;IAChC,SAAS;IACT,UAAU;IACV,UAAU;IACV,aAAa;CACd,CAAC,CAAC;AAEH,sCAAsC;AACtC,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC;IAC3B,QAAQ;IACR,UAAU;IACV,WAAW;IACX,UAAU;IACV,WAAW;IACX,eAAe;IACf,YAAY;IACZ,UAAU;IACV,WAAW;IACX,YAAY;IACZ,WAAW;CACZ,CAAC,CAAC;AAEH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IACnC,MAAM;IACN,UAAU;IACV,UAAU;IACV,UAAU;IACV,MAAM;CACP,CAAC,CAAC;AAEH,8CAA8C;AAC9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,OAAO;CACR,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** kebab-case: lowercase letters, digits, and hyphens */
2
+ export declare const KEBAB_CASE: RegExp;
3
+ /** camelCase with parentheses: e.g. extractData() */
4
+ export declare const CAMEL_CASE_PAREN: RegExp;
5
+ /** Semantic versioning: major.minor.patch */
6
+ export declare const SEMVER: RegExp;
7
+ /** snake_case: lowercase letters, digits, and underscores */
8
+ export declare const SNAKE_CASE: RegExp;
9
+ /** YAML frontmatter block between --- delimiters */
10
+ export declare const FRONTMATTER_BLOCK: RegExp;
11
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../src/utils/patterns.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,eAAO,MAAM,UAAU,QAAkC,CAAC;AAE1D,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,QAA4B,CAAC;AAE1D,6CAA6C;AAC7C,eAAO,MAAM,MAAM,QAAoB,CAAC;AAExC,6DAA6D;AAC7D,eAAO,MAAM,UAAU,QAAkC,CAAC;AAE1D,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,QAA6B,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** kebab-case: lowercase letters, digits, and hyphens */
2
+ export const KEBAB_CASE = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
3
+ /** camelCase with parentheses: e.g. extractData() */
4
+ export const CAMEL_CASE_PAREN = /^[a-z][a-zA-Z0-9]*\(\)$/;
5
+ /** Semantic versioning: major.minor.patch */
6
+ export const SEMVER = /^\d+\.\d+\.\d+$/;
7
+ /** snake_case: lowercase letters, digits, and underscores */
8
+ export const SNAKE_CASE = /^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;
9
+ /** YAML frontmatter block between --- delimiters */
10
+ export const FRONTMATTER_BLOCK = /^---\s*\n([\s\S]*?)\n---/;
11
+ //# sourceMappingURL=patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../src/utils/patterns.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,MAAM,CAAC,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAE1D,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAE1D,6CAA6C;AAC7C,MAAM,CAAC,MAAM,MAAM,GAAG,iBAAiB,CAAC;AAExC,6DAA6D;AAC7D,MAAM,CAAC,MAAM,UAAU,GAAG,+BAA+B,CAAC;AAE1D,oDAAoD;AACpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,0BAA0B,CAAC"}
package/package.json ADDED
@@ -0,0 +1,34 @@
1
+ {
2
+ "name": "@squads-sh/validator",
3
+ "version": "0.1.0",
4
+ "description": "Deep validation engine for AIOS Squad packages",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.js",
11
+ "types": "./dist/index.d.ts"
12
+ },
13
+ "./adapters/filesystem": {
14
+ "import": "./dist/adapters/filesystem.js",
15
+ "types": "./dist/adapters/filesystem.d.ts"
16
+ }
17
+ },
18
+ "scripts": {
19
+ "build": "tsc",
20
+ "clean": "rm -rf dist"
21
+ },
22
+ "dependencies": {
23
+ "js-yaml": "^4.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "@types/js-yaml": "^4.0.9",
27
+ "@types/node": "^22.19.11",
28
+ "typescript": "^5.7.0"
29
+ },
30
+ "files": [
31
+ "dist"
32
+ ],
33
+ "license": "MIT"
34
+ }