vigiles 2.0.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 (156) hide show
  1. package/.claude/settings.json +46 -0
  2. package/.claude/settings.local.json +8 -0
  3. package/.claude-plugin/hooks/post-edit.sh +34 -0
  4. package/.claude-plugin/hooks/pre-edit.sh +40 -0
  5. package/.claude-plugin/hooks/session-start.sh +38 -0
  6. package/.claude-plugin/marketplace.json +14 -0
  7. package/.claude-plugin/plugin.json +47 -0
  8. package/.github/workflows/ci.yml +81 -0
  9. package/.prettierignore +1 -0
  10. package/.vigiles/generated.d.ts +205 -0
  11. package/CLAUDE.md +95 -0
  12. package/CLAUDE.md.spec.ts +142 -0
  13. package/CONTRIBUTING.md +121 -0
  14. package/LICENSE +21 -0
  15. package/README.md +377 -0
  16. package/action.yml +25 -0
  17. package/dist/action.d.ts +7 -0
  18. package/dist/action.d.ts.map +1 -0
  19. package/dist/action.js +180 -0
  20. package/dist/action.js.map +1 -0
  21. package/dist/cli.d.ts +12 -0
  22. package/dist/cli.d.ts.map +1 -0
  23. package/dist/cli.js +1267 -0
  24. package/dist/cli.js.map +1 -0
  25. package/dist/cli.test.d.ts +2 -0
  26. package/dist/cli.test.d.ts.map +1 -0
  27. package/dist/cli.test.js +650 -0
  28. package/dist/cli.test.js.map +1 -0
  29. package/dist/compile.d.ts +101 -0
  30. package/dist/compile.d.ts.map +1 -0
  31. package/dist/compile.js +503 -0
  32. package/dist/compile.js.map +1 -0
  33. package/dist/evolve.d.ts +132 -0
  34. package/dist/evolve.d.ts.map +1 -0
  35. package/dist/evolve.js +599 -0
  36. package/dist/evolve.js.map +1 -0
  37. package/dist/freshness.d.ts +67 -0
  38. package/dist/freshness.d.ts.map +1 -0
  39. package/dist/freshness.js +244 -0
  40. package/dist/freshness.js.map +1 -0
  41. package/dist/freshness.test.d.ts +2 -0
  42. package/dist/freshness.test.d.ts.map +1 -0
  43. package/dist/freshness.test.js +356 -0
  44. package/dist/freshness.test.js.map +1 -0
  45. package/dist/generate-types.d.ts +34 -0
  46. package/dist/generate-types.d.ts.map +1 -0
  47. package/dist/generate-types.js +381 -0
  48. package/dist/generate-types.js.map +1 -0
  49. package/dist/inline.d.ts +58 -0
  50. package/dist/inline.d.ts.map +1 -0
  51. package/dist/inline.js +142 -0
  52. package/dist/inline.js.map +1 -0
  53. package/dist/inline.test.d.ts +5 -0
  54. package/dist/inline.test.d.ts.map +1 -0
  55. package/dist/inline.test.js +152 -0
  56. package/dist/inline.test.js.map +1 -0
  57. package/dist/linters.d.ts +38 -0
  58. package/dist/linters.d.ts.map +1 -0
  59. package/dist/linters.js +588 -0
  60. package/dist/linters.js.map +1 -0
  61. package/dist/proofs.d.ts +272 -0
  62. package/dist/proofs.d.ts.map +1 -0
  63. package/dist/proofs.js +622 -0
  64. package/dist/proofs.js.map +1 -0
  65. package/dist/proofs.test.d.ts +9 -0
  66. package/dist/proofs.test.d.ts.map +1 -0
  67. package/dist/proofs.test.js +952 -0
  68. package/dist/proofs.test.js.map +1 -0
  69. package/dist/spec.d.ts +258 -0
  70. package/dist/spec.d.ts.map +1 -0
  71. package/dist/spec.js +113 -0
  72. package/dist/spec.js.map +1 -0
  73. package/dist/spec.test.d.ts +2 -0
  74. package/dist/spec.test.d.ts.map +1 -0
  75. package/dist/spec.test.js +1222 -0
  76. package/dist/spec.test.js.map +1 -0
  77. package/dist/types.d.ts +101 -0
  78. package/dist/types.d.ts.map +1 -0
  79. package/dist/types.js +3 -0
  80. package/dist/types.js.map +1 -0
  81. package/dist/validate.d.ts +10 -0
  82. package/dist/validate.d.ts.map +1 -0
  83. package/dist/validate.js +286 -0
  84. package/dist/validate.js.map +1 -0
  85. package/dist/validate.test.d.ts +2 -0
  86. package/dist/validate.test.d.ts.map +1 -0
  87. package/dist/validate.test.js +531 -0
  88. package/dist/validate.test.js.map +1 -0
  89. package/docs/agent-setup.md +85 -0
  90. package/docs/agent-workflows.md +103 -0
  91. package/docs/comparison.md +71 -0
  92. package/docs/freshness.md +124 -0
  93. package/docs/inline-mode.md +119 -0
  94. package/docs/linter-support.md +166 -0
  95. package/docs/spec-format.md +194 -0
  96. package/eslint.config.mjs +79 -0
  97. package/examples/CLAUDE.md +54 -0
  98. package/examples/CLAUDE.md.spec.ts +65 -0
  99. package/examples/SKILL.md +50 -0
  100. package/examples/SKILL.md.spec.ts +57 -0
  101. package/fixtures/example-project/CLAUDE.md +11 -0
  102. package/fixtures/example-project/package.json +9 -0
  103. package/fixtures/example-project/src/index.ts +3 -0
  104. package/fixtures/example-project/src/utils.test.ts +2 -0
  105. package/fixtures/example-project/src/utils.ts +3 -0
  106. package/logo.png +0 -0
  107. package/package.json +42 -0
  108. package/research/adoption-strategy.md +111 -0
  109. package/research/agent-integration.md +145 -0
  110. package/research/ai-code-quality.md +197 -0
  111. package/research/code-search-for-agents.md +313 -0
  112. package/research/competitive-landscape.md +163 -0
  113. package/research/doc-freshness.md +516 -0
  114. package/research/executable-specs.md +368 -0
  115. package/research/feature-ideas.md +464 -0
  116. package/research/formal-proofs-for-agents.md +338 -0
  117. package/research/fp-for-agent-harness.md +150 -0
  118. package/research/fp-for-deterministic-ai.md +131 -0
  119. package/research/self-evolving-specs.md +298 -0
  120. package/schemas/claude-md-strict.yml +18 -0
  121. package/schemas/claude-md.yml +6 -0
  122. package/schemas/skill-strict.yml +12 -0
  123. package/schemas/skill.yml +5 -0
  124. package/skills/audit-feedback-loop/SKILL.md +76 -0
  125. package/skills/edit-spec/SKILL.md +131 -0
  126. package/skills/enforce-rules-format/SKILL.md +71 -0
  127. package/skills/generate-logo/SKILL.md +102 -0
  128. package/skills/generate-rule/SKILL.md +90 -0
  129. package/skills/linter-docs/clippy.md +241 -0
  130. package/skills/linter-docs/eslint.md +384 -0
  131. package/skills/linter-docs/pylint.md +288 -0
  132. package/skills/linter-docs/rubocop.md +277 -0
  133. package/skills/linter-docs/ruff.md +187 -0
  134. package/skills/linter-docs/stylelint.md +247 -0
  135. package/skills/migrate-to-spec/SKILL.md +124 -0
  136. package/skills/pr-to-lint-rule/SKILL.md +97 -0
  137. package/skills/strengthen/SKILL.md +168 -0
  138. package/src/action.ts +214 -0
  139. package/src/cli.test.ts +914 -0
  140. package/src/cli.ts +1631 -0
  141. package/src/compile.ts +691 -0
  142. package/src/evolve.ts +781 -0
  143. package/src/freshness.test.ts +449 -0
  144. package/src/freshness.ts +299 -0
  145. package/src/generate-types.ts +448 -0
  146. package/src/inline.test.ts +206 -0
  147. package/src/inline.ts +164 -0
  148. package/src/linters.ts +739 -0
  149. package/src/proofs.test.ts +1314 -0
  150. package/src/proofs.ts +849 -0
  151. package/src/spec.test.ts +1471 -0
  152. package/src/spec.ts +427 -0
  153. package/src/types.ts +117 -0
  154. package/src/validate.test.ts +701 -0
  155. package/src/validate.ts +381 -0
  156. package/tsconfig.json +23 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * vigiles v2 — Compiler: spec → markdown.
3
+ *
4
+ * Reads .spec.ts files, validates references, and produces
5
+ * markdown instruction files with integrity hashes.
6
+ */
7
+ import type { ClaudeSpec, SkillSpec } from "./spec.js";
8
+ import type { LinterCheckResult } from "./linters.js";
9
+ /** @internal Compute SHA-256 hash of content (excluding any existing hash line). */
10
+ export declare function computeHash(content: string): string;
11
+ /** @internal Prepend a hash comment to compiled content. */
12
+ export declare function addHash(content: string, specFile: string): string;
13
+ /** @internal Check if a file's hash matches its content. Returns null if no hash found. */
14
+ export declare function verifyHash(content: string): {
15
+ valid: boolean;
16
+ specFile: string;
17
+ } | null;
18
+ /**
19
+ * Estimate token count for a string.
20
+ *
21
+ * Uses the ~4 characters per token heuristic (accurate within ~10% for
22
+ * English text and code). Swap in a real BPE tokenizer (tiktoken, gpt-tokenizer)
23
+ * for exact counts if needed.
24
+ */
25
+ /** @internal */ export declare function estimateTokens(text: string): number;
26
+ export interface CompileError {
27
+ type: "stale-file" | "stale-command" | "stale-ref" | "invalid-rule" | "budget-exceeded" | "section-too-long" | "section-has-header" | "reserved-section-key" | "spec-name-mismatch";
28
+ message: string;
29
+ path?: string;
30
+ }
31
+ export interface CompileClaudeResult {
32
+ markdown: string;
33
+ errors: CompileError[];
34
+ linterResults: LinterCheckResult[];
35
+ /** Estimated token count of compiled output (~4 chars/token). */
36
+ tokens: number;
37
+ /** All targets from the spec (for multi-target compilation). */
38
+ targets: string[];
39
+ }
40
+ export interface CompileClaudeOptions {
41
+ basePath?: string;
42
+ specFile?: string;
43
+ /** Maximum number of rules allowed. Compilation fails if exceeded. */
44
+ maxRules?: number;
45
+ /** Maximum estimated tokens for compiled output. */
46
+ maxTokens?: number;
47
+ /** Maximum lines per prose section. Forces splitting into named sections. */
48
+ maxSectionLines?: number;
49
+ /** Skip config-enabled checks, only verify rule exists in catalog. */
50
+ catalogOnly?: boolean;
51
+ /** Custom linter configs (rulesDir). */
52
+ linters?: Record<string, {
53
+ rulesDir?: string | string[];
54
+ }>;
55
+ /** Global kill switch: skip ALL linter verification. */
56
+ verifyLinters?: boolean;
57
+ /** Per-linter verification mode: true (full), "catalog-only", or false (skip). */
58
+ linterModes?: Record<string, boolean | "catalog-only">;
59
+ }
60
+ /**
61
+ * Compile a ClaudeSpec into markdown.
62
+ *
63
+ * Returns the compiled markdown, validation errors, and linter check results.
64
+ * The markdown is generated even if there are errors (with warnings).
65
+ */
66
+ export declare function compileClaude(spec: ClaudeSpec, options?: CompileClaudeOptions): CompileClaudeResult;
67
+ export interface CompileSkillResult {
68
+ markdown: string;
69
+ errors: CompileError[];
70
+ }
71
+ /**
72
+ * Compile a SkillSpec into SKILL.md markdown with YAML frontmatter.
73
+ */
74
+ export declare function compileSkill(spec: SkillSpec, options?: {
75
+ basePath?: string;
76
+ specFile?: string;
77
+ }): CompileSkillResult;
78
+ export interface HashCheckResult {
79
+ hasHash: boolean;
80
+ valid: boolean;
81
+ specFile: string | null;
82
+ }
83
+ /** Check if a generated file's hash is intact. */
84
+ export declare function checkFileHash(filePath: string): HashCheckResult;
85
+ export interface AdoptResult {
86
+ filePath: string;
87
+ hasHash: boolean;
88
+ valid: boolean;
89
+ specFile: string | null;
90
+ currentContent: string;
91
+ compiledContent: string | null;
92
+ addedLines: string[];
93
+ removedLines: string[];
94
+ changed: boolean;
95
+ }
96
+ /**
97
+ * Compare a generated file against what the spec would produce.
98
+ * Returns the diff so users can see what was manually changed.
99
+ */
100
+ export declare function adoptDiff(filePath: string, spec: ClaudeSpec | SkillSpec, basePath: string): AdoptResult;
101
+ //# sourceMappingURL=compile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,SAAS,EAGV,MAAM,WAAW,CAAC;AAGnB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAStD,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED,4DAA4D;AAC5D,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGjE;AAED,2FAA2F;AAC3F,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GACd;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAW7C;AAMD;;;;;;GAMG;AACH,gBAAgB,CAAC,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpE;AAMD,MAAM,WAAW,YAAY;IAC3B,IAAI,EACA,YAAY,GACZ,eAAe,GACf,WAAW,GACX,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GACpB,sBAAsB,GACtB,oBAAoB,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA8ID,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,iEAAiE;IACjE,MAAM,EAAE,MAAM,CAAC;IACf,gEAAgE;IAChE,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sEAAsE;IACtE,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IAC3D,wDAAwD;IACxD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kFAAkF;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,cAAc,CAAC,CAAC;CACxD;AA+LD;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,UAAU,EAChB,OAAO,GAAE,oBAAyB,GACjC,mBAAmB,CA0ErB;AAWD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,SAAS,EACf,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,kBAAkB,CA2CpB;AAMD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,eAAe,CAU/D;AAMD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,UAAU,GAAG,SAAS,EAC5B,QAAQ,EAAE,MAAM,GACf,WAAW,CA6Cb"}
@@ -0,0 +1,503 @@
1
+ "use strict";
2
+ /**
3
+ * vigiles v2 — Compiler: spec → markdown.
4
+ *
5
+ * Reads .spec.ts files, validates references, and produces
6
+ * markdown instruction files with integrity hashes.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.computeHash = computeHash;
10
+ exports.addHash = addHash;
11
+ exports.verifyHash = verifyHash;
12
+ exports.estimateTokens = estimateTokens;
13
+ exports.compileClaude = compileClaude;
14
+ exports.compileSkill = compileSkill;
15
+ exports.checkFileHash = checkFileHash;
16
+ exports.adoptDiff = adoptDiff;
17
+ const node_crypto_1 = require("node:crypto");
18
+ const node_fs_1 = require("node:fs");
19
+ const node_path_1 = require("node:path");
20
+ const linters_js_1 = require("./linters.js");
21
+ // ---------------------------------------------------------------------------
22
+ // Hash utilities
23
+ // ---------------------------------------------------------------------------
24
+ const HASH_RE = /^<!-- vigiles:sha256:([a-f0-9]+) compiled from (.+) -->\r?\n\r?\n?/;
25
+ /** @internal Compute SHA-256 hash of content (excluding any existing hash line). */
26
+ function computeHash(content) {
27
+ const body = content.replace(HASH_RE, "");
28
+ return (0, node_crypto_1.createHash)("sha256").update(body).digest("hex").slice(0, 16);
29
+ }
30
+ /** @internal Prepend a hash comment to compiled content. */
31
+ function addHash(content, specFile) {
32
+ const hash = computeHash(content);
33
+ return `<!-- vigiles:sha256:${hash} compiled from ${specFile} -->\n\n${content}`;
34
+ }
35
+ /** @internal Check if a file's hash matches its content. Returns null if no hash found. */
36
+ function verifyHash(content) {
37
+ const match = content.match(HASH_RE);
38
+ if (!match)
39
+ return null;
40
+ const expectedHash = match[1];
41
+ const specFile = match[2];
42
+ const body = content.replace(HASH_RE, "");
43
+ const actualHash = (0, node_crypto_1.createHash)("sha256")
44
+ .update(body)
45
+ .digest("hex")
46
+ .slice(0, 16);
47
+ return { valid: actualHash === expectedHash, specFile };
48
+ }
49
+ // ---------------------------------------------------------------------------
50
+ // Token estimation
51
+ // ---------------------------------------------------------------------------
52
+ /**
53
+ * Estimate token count for a string.
54
+ *
55
+ * Uses the ~4 characters per token heuristic (accurate within ~10% for
56
+ * English text and code). Swap in a real BPE tokenizer (tiktoken, gpt-tokenizer)
57
+ * for exact counts if needed.
58
+ */
59
+ /** @internal */ function estimateTokens(text) {
60
+ return Math.ceil(text.length / 4);
61
+ }
62
+ // ---------------------------------------------------------------------------
63
+ // Reference validation
64
+ // ---------------------------------------------------------------------------
65
+ function validateFileRef(filePath, basePath) {
66
+ const resolved = (0, node_path_1.resolve)(basePath, filePath);
67
+ if (!(0, node_fs_1.existsSync)(resolved)) {
68
+ return {
69
+ type: "stale-file",
70
+ message: `File not found: "${filePath}"`,
71
+ path: filePath,
72
+ };
73
+ }
74
+ return null;
75
+ }
76
+ function readPackageScripts(basePath) {
77
+ const pkgPath = (0, node_path_1.resolve)(basePath, "package.json");
78
+ if (!(0, node_fs_1.existsSync)(pkgPath))
79
+ return null;
80
+ try {
81
+ const pkg = JSON.parse((0, node_fs_1.readFileSync)(pkgPath, "utf-8"));
82
+ return pkg.scripts ?? null;
83
+ }
84
+ catch {
85
+ return null;
86
+ }
87
+ }
88
+ function validateCommandRef(command, basePath) {
89
+ // Check "npm run <script>" or "npm <script>" against package.json
90
+ const npmRunMatch = command.match(/^npm\s+run\s+(\S+)/);
91
+ const npmMatch = command.match(/^npm\s+(test|start|build|pretest)\b/);
92
+ const scriptName = npmRunMatch?.[1] ?? npmMatch?.[1];
93
+ if (!scriptName)
94
+ return null;
95
+ const scripts = readPackageScripts(basePath);
96
+ if (!scripts)
97
+ return null;
98
+ if (!scripts[scriptName]) {
99
+ return {
100
+ type: "stale-command",
101
+ message: `Script "${scriptName}" not found in package.json`,
102
+ path: command,
103
+ };
104
+ }
105
+ return null;
106
+ }
107
+ function validateRefs(fragments, basePath) {
108
+ const errors = [];
109
+ for (const fragment of fragments) {
110
+ if (typeof fragment === "string")
111
+ continue;
112
+ const r = fragment;
113
+ switch (r._ref) {
114
+ case "file": {
115
+ const err = validateFileRef(r.path, basePath);
116
+ if (err)
117
+ errors.push(err);
118
+ break;
119
+ }
120
+ case "cmd": {
121
+ const err = validateCommandRef(r.command, basePath);
122
+ if (err)
123
+ errors.push(err);
124
+ break;
125
+ }
126
+ case "skill": {
127
+ const err = validateFileRef(r.path, basePath);
128
+ if (err) {
129
+ errors.push({
130
+ type: "stale-ref",
131
+ message: `Skill not found: "${r.path}"`,
132
+ path: r.path,
133
+ });
134
+ }
135
+ break;
136
+ }
137
+ }
138
+ }
139
+ return errors;
140
+ }
141
+ function renderFragment(fragment) {
142
+ if (typeof fragment === "string")
143
+ return fragment;
144
+ const r = fragment;
145
+ switch (r._ref) {
146
+ case "file":
147
+ return `\`${r.path}\``;
148
+ case "cmd":
149
+ return `\`${r.command}\``;
150
+ case "skill":
151
+ return `[${(0, node_path_1.basename)((0, node_path_1.dirname)(r.path))}](${r.path})`;
152
+ }
153
+ }
154
+ // ---------------------------------------------------------------------------
155
+ // Compile CLAUDE.md spec → markdown
156
+ // ---------------------------------------------------------------------------
157
+ function compileRule(id, rule) {
158
+ const title = id
159
+ .replace(/[-_]/g, " ")
160
+ .replace(/\b\w/g, (c) => c.toUpperCase());
161
+ switch (rule._kind) {
162
+ case "enforce":
163
+ return [
164
+ `### ${title}`,
165
+ "",
166
+ `**Enforced by:** \`${rule.linterRule}\``,
167
+ `**Why:** ${rule.why}`,
168
+ ].join("\n");
169
+ case "guidance":
170
+ return [`### ${title}`, "", `**Guidance only** — ${rule.text}`].join("\n");
171
+ default: {
172
+ // Unknown rule kind — legacy compiled JS spec artifacts, JS caller,
173
+ // or cast bypass. Fail loudly rather than silently dropping the
174
+ // rule from output, which would remove constraints without any
175
+ // compile error.
176
+ const unknown = rule._kind;
177
+ throw new Error(`Unknown rule kind "${String(unknown)}" for rule "${id}". ` +
178
+ `Expected "enforce" or "guidance". Runtime data is out of sync with the Rule type.`);
179
+ }
180
+ }
181
+ }
182
+ function validateSectionContent(name, text, maxSectionLines) {
183
+ const errors = [];
184
+ const contentLines = text.split("\n");
185
+ // Reject markdown headers inside sections — sections compile to ## headings,
186
+ // so raw # headers break document structure and signal pasted-in content.
187
+ // Skip lines inside fenced code blocks (``` or ~~~).
188
+ let inFence = false;
189
+ for (const line of contentLines) {
190
+ if (/^ {0,3}(`{3,}|~{3,})/.test(line)) {
191
+ inFence = !inFence;
192
+ continue;
193
+ }
194
+ if (inFence)
195
+ continue;
196
+ if (/^ {0,3}#{1,2}\s/.test(line)) {
197
+ errors.push({
198
+ type: "section-has-header",
199
+ message: `Section "${name}" contains a markdown header ("${line.trim().slice(0, 60)}"). Break into separate named sections instead.`,
200
+ });
201
+ break;
202
+ }
203
+ }
204
+ if (maxSectionLines && contentLines.length > maxSectionLines) {
205
+ errors.push({
206
+ type: "section-too-long",
207
+ message: `Section "${name}" is ${String(contentLines.length)} lines (max ${String(maxSectionLines)}). Split into smaller named sections.`,
208
+ });
209
+ }
210
+ return errors;
211
+ }
212
+ const RESERVED_SECTION_KEYS = new Set([
213
+ "commands",
214
+ "keyFiles",
215
+ "key-files",
216
+ "key_files",
217
+ "rules",
218
+ ]);
219
+ function compileSectionsSection(spec, basePath, maxSectionLines) {
220
+ if (!spec.sections)
221
+ return { lines: [], errors: [] };
222
+ const lines = [];
223
+ const errors = [];
224
+ for (const [name, content] of Object.entries(spec.sections)) {
225
+ // #4: reject reserved section keys that clash with structured fields
226
+ if (RESERVED_SECTION_KEYS.has(name)) {
227
+ errors.push({
228
+ type: "reserved-section-key",
229
+ message: `Section key "${name}" is reserved — use the dedicated \`${name}\` field on the spec instead.`,
230
+ });
231
+ }
232
+ const heading = name.charAt(0).toUpperCase() + name.slice(1);
233
+ if (typeof content === "string") {
234
+ errors.push(...validateSectionContent(name, content, maxSectionLines));
235
+ lines.push(`## ${heading}\n\n${content.trim()}`);
236
+ }
237
+ else {
238
+ errors.push(...validateRefs(content, basePath));
239
+ const rendered = content.map(renderFragment).join("");
240
+ errors.push(...validateSectionContent(name, rendered, maxSectionLines));
241
+ lines.push(`## ${heading}\n\n${rendered.trim()}`);
242
+ }
243
+ }
244
+ return { lines, errors };
245
+ }
246
+ function compileKeyFilesSection(spec, basePath) {
247
+ if (!spec.keyFiles)
248
+ return { lines: [], errors: [] };
249
+ const lines = ["## Key Files", ""];
250
+ const errors = [];
251
+ for (const [filePath, desc] of Object.entries(spec.keyFiles)) {
252
+ lines.push(`- \`${filePath}\` — ${desc}`);
253
+ const err = validateFileRef(filePath, basePath);
254
+ if (err)
255
+ errors.push(err);
256
+ }
257
+ return { lines: [lines.join("\n")], errors };
258
+ }
259
+ function compileCommandsSection(spec, basePath) {
260
+ if (!spec.commands)
261
+ return { lines: [], errors: [] };
262
+ const lines = ["## Commands", ""];
263
+ const errors = [];
264
+ for (const [command, desc] of Object.entries(spec.commands)) {
265
+ lines.push(`- \`${command}\` — ${desc}`);
266
+ const err = validateCommandRef(command, basePath);
267
+ if (err)
268
+ errors.push(err);
269
+ }
270
+ return { lines: [lines.join("\n")], errors };
271
+ }
272
+ /**
273
+ * Determine if a rule should be verified, checking three levels:
274
+ * 1. Per-rule: enforce("...", "...", { verify: false })
275
+ * 2. Global: options.verifyLinters === false
276
+ * 3. Per-linter: options.linterModes[linterName] === false
277
+ */
278
+ function shouldVerifyRule(rule, options) {
279
+ if (!rule.verify)
280
+ return false;
281
+ if (options.verifyLinters === false)
282
+ return false;
283
+ const linterName = (0, linters_js_1.extractLinterName)(rule.linterRule);
284
+ const linterMode = options.linterModes?.[linterName];
285
+ if (linterMode === false)
286
+ return false;
287
+ return true;
288
+ }
289
+ function compileRulesSection(spec, basePath, options) {
290
+ const ruleEntries = Object.entries(spec.rules);
291
+ if (ruleEntries.length === 0) {
292
+ return { lines: [], errors: [], linterResults: [] };
293
+ }
294
+ const ruleLines = ["## Rules"];
295
+ const errors = [];
296
+ const linterResults = [];
297
+ for (const [id, rule] of ruleEntries) {
298
+ ruleLines.push("");
299
+ ruleLines.push(compileRule(id, rule));
300
+ if (rule._kind === "enforce") {
301
+ const shouldVerify = shouldVerifyRule(rule, options);
302
+ if (!shouldVerify)
303
+ continue;
304
+ const linterName = (0, linters_js_1.extractLinterName)(rule.linterRule);
305
+ const linterMode = options.linterModes?.[linterName];
306
+ const catalogOnly = options.catalogOnly || linterMode === "catalog-only";
307
+ const result = (0, linters_js_1.checkLinterRule)(rule.linterRule, basePath, {
308
+ catalogOnly,
309
+ linters: options.linters,
310
+ });
311
+ linterResults.push(result);
312
+ if (!result.exists) {
313
+ errors.push({
314
+ type: "invalid-rule",
315
+ message: result.error ??
316
+ `Rule "${rule.linterRule}" not found in ${result.linter}`,
317
+ path: rule.linterRule,
318
+ });
319
+ }
320
+ else if (result.enabled === "disabled") {
321
+ errors.push({
322
+ type: "invalid-rule",
323
+ message: `Rule "${result.rule}" exists but is disabled in ${result.linter} config`,
324
+ path: rule.linterRule,
325
+ });
326
+ }
327
+ }
328
+ }
329
+ return { lines: [ruleLines.join("\n")], errors, linterResults };
330
+ }
331
+ // ---------------------------------------------------------------------------
332
+ // compileClaude
333
+ // ---------------------------------------------------------------------------
334
+ /**
335
+ * Compile a ClaudeSpec into markdown.
336
+ *
337
+ * Returns the compiled markdown, validation errors, and linter check results.
338
+ * The markdown is generated even if there are errors (with warnings).
339
+ */
340
+ function compileClaude(spec, options = {}) {
341
+ const targets = spec.target ?? "CLAUDE.md";
342
+ const target = Array.isArray(targets) ? targets[0] : targets;
343
+ const basePath = options.basePath ?? process.cwd();
344
+ const specFile = options.specFile ?? `${target}.spec.ts`;
345
+ const errors = [];
346
+ const sections = [`# ${target}`];
347
+ // Verify spec file naming matches the primary target
348
+ if (!specFile.endsWith(".spec.ts")) {
349
+ errors.push({
350
+ type: "spec-name-mismatch",
351
+ message: `Spec file "${specFile}" must end with .spec.ts`,
352
+ });
353
+ }
354
+ else {
355
+ const baseName = (0, node_path_1.basename)(specFile, ".spec.ts");
356
+ if (baseName !== target) {
357
+ errors.push({
358
+ type: "spec-name-mismatch",
359
+ message: `Spec file "${specFile}" doesn't match target "${target}". Expected "${target}.spec.ts".`,
360
+ });
361
+ }
362
+ }
363
+ // maxRules check
364
+ const ruleCount = Object.keys(spec.rules).length;
365
+ if (options.maxRules && ruleCount > options.maxRules) {
366
+ errors.push({
367
+ type: "invalid-rule",
368
+ message: `${String(ruleCount)} rules exceeds maxRules limit of ${String(options.maxRules)}. Split into subdirectory specs.`,
369
+ });
370
+ }
371
+ // Per-spec maxSectionLines takes precedence, then compile options
372
+ const maxSectionLines = spec.maxSectionLines ?? options.maxSectionLines;
373
+ const prose = compileSectionsSection(spec, basePath, maxSectionLines);
374
+ const keyFiles = compileKeyFilesSection(spec, basePath);
375
+ const commands = compileCommandsSection(spec, basePath);
376
+ const rules = compileRulesSection(spec, basePath, options);
377
+ sections.push(...prose.lines, ...keyFiles.lines, ...commands.lines, ...rules.lines);
378
+ errors.push(...prose.errors, ...keyFiles.errors, ...commands.errors, ...rules.errors);
379
+ const body = sections.join("\n\n") + "\n";
380
+ const tokens = estimateTokens(body);
381
+ // Per-spec maxTokens takes precedence, then compile options
382
+ const maxTokens = spec.maxTokens ?? options.maxTokens;
383
+ if (maxTokens && tokens > maxTokens) {
384
+ errors.push({
385
+ type: "budget-exceeded",
386
+ message: `Compiled output is ~${String(tokens)} tokens, exceeding maxTokens limit of ${String(maxTokens)}. Trim prose sections, split into multiple specs, or raise maxTokens.`,
387
+ });
388
+ }
389
+ const markdown = addHash(body, specFile);
390
+ const allTargets = Array.isArray(targets) ? targets : [targets];
391
+ return {
392
+ markdown,
393
+ errors,
394
+ linterResults: rules.linterResults,
395
+ tokens,
396
+ targets: allTargets,
397
+ };
398
+ }
399
+ // ---------------------------------------------------------------------------
400
+ // Compile SKILL.md spec → markdown
401
+ // ---------------------------------------------------------------------------
402
+ function renderBody(body) {
403
+ if (typeof body === "string")
404
+ return body;
405
+ return body.map(renderFragment).join("");
406
+ }
407
+ /**
408
+ * Compile a SkillSpec into SKILL.md markdown with YAML frontmatter.
409
+ */
410
+ function compileSkill(spec, options = {}) {
411
+ const basePath = options.basePath ?? process.cwd();
412
+ const specFile = options.specFile ?? "SKILL.md.spec.ts";
413
+ const errors = [];
414
+ // Verify spec file naming
415
+ if (!specFile.endsWith(".spec.ts")) {
416
+ errors.push({
417
+ type: "spec-name-mismatch",
418
+ message: `Spec file "${specFile}" must end with .spec.ts`,
419
+ });
420
+ }
421
+ else {
422
+ const baseName = (0, node_path_1.basename)(specFile, ".spec.ts");
423
+ if (!/\.md$/i.test(baseName)) {
424
+ errors.push({
425
+ type: "spec-name-mismatch",
426
+ message: `Spec file "${specFile}" should be named <output>.spec.ts (e.g., SKILL.md.spec.ts)`,
427
+ });
428
+ }
429
+ }
430
+ // Validate refs in body
431
+ if (Array.isArray(spec.body)) {
432
+ errors.push(...validateRefs(spec.body, basePath));
433
+ }
434
+ // Build frontmatter (blank lines after opening/before closing --- for prettier)
435
+ const fm = ["---", ""];
436
+ fm.push(`name: ${spec.name}`);
437
+ fm.push(`description: ${spec.description}`);
438
+ if (spec.disableModelInvocation !== undefined) {
439
+ fm.push(`disable-model-invocation: ${String(spec.disableModelInvocation)}`);
440
+ }
441
+ if (spec.argumentHint) {
442
+ fm.push(`argument-hint: ${spec.argumentHint}`);
443
+ }
444
+ fm.push("", "---");
445
+ const body = renderBody(spec.body);
446
+ const content = fm.join("\n") + "\n\n" + body.trim() + "\n";
447
+ const markdown = addHash(content, specFile);
448
+ return { markdown, errors };
449
+ }
450
+ /** Check if a generated file's hash is intact. */
451
+ function checkFileHash(filePath) {
452
+ if (!(0, node_fs_1.existsSync)(filePath)) {
453
+ return { hasHash: false, valid: false, specFile: null };
454
+ }
455
+ const content = (0, node_fs_1.readFileSync)(filePath, "utf-8");
456
+ const result = verifyHash(content);
457
+ if (!result) {
458
+ return { hasHash: false, valid: false, specFile: null };
459
+ }
460
+ return { hasHash: true, valid: result.valid, specFile: result.specFile };
461
+ }
462
+ /**
463
+ * Compare a generated file against what the spec would produce.
464
+ * Returns the diff so users can see what was manually changed.
465
+ */
466
+ function adoptDiff(filePath, spec, basePath) {
467
+ const fullPath = (0, node_path_1.resolve)(basePath, filePath);
468
+ const currentContent = (0, node_fs_1.existsSync)(fullPath)
469
+ ? (0, node_fs_1.readFileSync)(fullPath, "utf-8")
470
+ : "";
471
+ const hashResult = verifyHash(currentContent);
472
+ // Compile the spec to get what it WOULD produce
473
+ let compiledContent = null;
474
+ if (spec._specType === "claude") {
475
+ const { markdown } = compileClaude(spec, { basePath, specFile: filePath });
476
+ compiledContent = markdown;
477
+ }
478
+ else if (spec._specType === "skill") {
479
+ const { markdown } = compileSkill(spec, { basePath, specFile: filePath });
480
+ compiledContent = markdown;
481
+ }
482
+ // Simple line-based diff
483
+ const currentLines = currentContent.replace(HASH_RE, "").split("\n");
484
+ const compiledLines = (compiledContent ?? "")
485
+ .replace(HASH_RE, "")
486
+ .split("\n");
487
+ const currentSet = new Set(currentLines);
488
+ const compiledSet = new Set(compiledLines);
489
+ const addedLines = currentLines.filter((l) => l.trim() && !compiledSet.has(l));
490
+ const removedLines = compiledLines.filter((l) => l.trim() && !currentSet.has(l));
491
+ return {
492
+ filePath,
493
+ hasHash: hashResult !== null,
494
+ valid: hashResult?.valid ?? false,
495
+ specFile: hashResult?.specFile ?? null,
496
+ currentContent,
497
+ compiledContent,
498
+ addedLines,
499
+ removedLines,
500
+ changed: addedLines.length > 0 || removedLines.length > 0,
501
+ };
502
+ }
503
+ //# sourceMappingURL=compile.js.map