@interf/compiler 0.1.11 → 0.2.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 (283) hide show
  1. package/README.md +254 -136
  2. package/dist/commands/benchmark.d.ts.map +1 -1
  3. package/dist/commands/benchmark.js +65 -84
  4. package/dist/commands/benchmark.js.map +1 -1
  5. package/dist/commands/compile.d.ts.map +1 -1
  6. package/dist/commands/compile.js +19 -3
  7. package/dist/commands/compile.js.map +1 -1
  8. package/dist/commands/create.d.ts +3 -0
  9. package/dist/commands/create.d.ts.map +1 -1
  10. package/dist/commands/create.js +34 -9
  11. package/dist/commands/create.js.map +1 -1
  12. package/dist/commands/default.d.ts.map +1 -1
  13. package/dist/commands/default.js +2 -0
  14. package/dist/commands/default.js.map +1 -1
  15. package/dist/commands/init.d.ts.map +1 -1
  16. package/dist/commands/init.js +3 -2
  17. package/dist/commands/init.js.map +1 -1
  18. package/dist/index.d.ts +11 -29
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +7 -16
  21. package/dist/index.js.map +1 -1
  22. package/dist/lib/agent-args.d.ts +4 -0
  23. package/dist/lib/agent-args.d.ts.map +1 -0
  24. package/dist/lib/agent-args.js +42 -0
  25. package/dist/lib/agent-args.js.map +1 -0
  26. package/dist/lib/agent-constants.d.ts +6 -0
  27. package/dist/lib/agent-constants.d.ts.map +1 -0
  28. package/dist/lib/agent-constants.js +29 -0
  29. package/dist/lib/agent-constants.js.map +1 -0
  30. package/dist/lib/agent-detection.d.ts +8 -0
  31. package/dist/lib/agent-detection.d.ts.map +1 -0
  32. package/dist/lib/agent-detection.js +66 -0
  33. package/dist/lib/agent-detection.js.map +1 -0
  34. package/dist/lib/agent-execution.d.ts +3 -0
  35. package/dist/lib/agent-execution.d.ts.map +1 -0
  36. package/dist/lib/agent-execution.js +207 -0
  37. package/dist/lib/agent-execution.js.map +1 -0
  38. package/dist/lib/agent-logs.d.ts +3 -0
  39. package/dist/lib/agent-logs.d.ts.map +1 -0
  40. package/dist/lib/agent-logs.js +18 -0
  41. package/dist/lib/agent-logs.js.map +1 -0
  42. package/dist/lib/agent-preflight.d.ts +8 -0
  43. package/dist/lib/agent-preflight.d.ts.map +1 -0
  44. package/dist/lib/agent-preflight.js +77 -0
  45. package/dist/lib/agent-preflight.js.map +1 -0
  46. package/dist/lib/agent-render.d.ts +9 -0
  47. package/dist/lib/agent-render.d.ts.map +1 -0
  48. package/dist/lib/agent-render.js +219 -0
  49. package/dist/lib/agent-render.js.map +1 -0
  50. package/dist/lib/agent-status.d.ts +4 -0
  51. package/dist/lib/agent-status.d.ts.map +1 -0
  52. package/dist/lib/agent-status.js +59 -0
  53. package/dist/lib/agent-status.js.map +1 -0
  54. package/dist/lib/agent-types.d.ts +31 -0
  55. package/dist/lib/agent-types.d.ts.map +1 -0
  56. package/dist/lib/agent-types.js +2 -0
  57. package/dist/lib/agent-types.js.map +1 -0
  58. package/dist/lib/agents.d.ts +7 -49
  59. package/dist/lib/agents.d.ts.map +1 -1
  60. package/dist/lib/agents.js +8 -554
  61. package/dist/lib/agents.js.map +1 -1
  62. package/dist/lib/benchmark-execution.d.ts +9 -0
  63. package/dist/lib/benchmark-execution.d.ts.map +1 -0
  64. package/dist/lib/benchmark-execution.js +488 -0
  65. package/dist/lib/benchmark-execution.js.map +1 -0
  66. package/dist/lib/benchmark-paths.d.ts +11 -0
  67. package/dist/lib/benchmark-paths.d.ts.map +1 -0
  68. package/dist/lib/benchmark-paths.js +38 -0
  69. package/dist/lib/benchmark-paths.js.map +1 -0
  70. package/dist/lib/benchmark-specs.d.ts +8 -0
  71. package/dist/lib/benchmark-specs.d.ts.map +1 -0
  72. package/dist/lib/benchmark-specs.js +115 -0
  73. package/dist/lib/benchmark-specs.js.map +1 -0
  74. package/dist/lib/benchmark-targets.d.ts +5 -0
  75. package/dist/lib/benchmark-targets.d.ts.map +1 -0
  76. package/dist/lib/benchmark-targets.js +72 -0
  77. package/dist/lib/benchmark-targets.js.map +1 -0
  78. package/dist/lib/benchmark-types.d.ts +19 -0
  79. package/dist/lib/benchmark-types.d.ts.map +1 -0
  80. package/dist/lib/benchmark-types.js +2 -0
  81. package/dist/lib/benchmark-types.js.map +1 -0
  82. package/dist/lib/benchmark.d.ts +4 -29
  83. package/dist/lib/benchmark.d.ts.map +1 -1
  84. package/dist/lib/benchmark.js +3 -324
  85. package/dist/lib/benchmark.js.map +1 -1
  86. package/dist/lib/bundled-templates.d.ts +5 -0
  87. package/dist/lib/bundled-templates.d.ts.map +1 -0
  88. package/dist/lib/bundled-templates.js +23 -0
  89. package/dist/lib/bundled-templates.js.map +1 -0
  90. package/dist/lib/config.d.ts +1 -0
  91. package/dist/lib/config.d.ts.map +1 -1
  92. package/dist/lib/config.js +2 -0
  93. package/dist/lib/config.js.map +1 -1
  94. package/dist/lib/eval-packs.d.ts +204 -0
  95. package/dist/lib/eval-packs.d.ts.map +1 -0
  96. package/dist/lib/eval-packs.js +177 -0
  97. package/dist/lib/eval-packs.js.map +1 -0
  98. package/dist/lib/execution-profile.d.ts +18 -0
  99. package/dist/lib/execution-profile.d.ts.map +1 -0
  100. package/dist/lib/execution-profile.js +85 -0
  101. package/dist/lib/execution-profile.js.map +1 -0
  102. package/dist/lib/interf-bootstrap.d.ts +4 -0
  103. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  104. package/dist/lib/interf-bootstrap.js +71 -68
  105. package/dist/lib/interf-bootstrap.js.map +1 -1
  106. package/dist/lib/interf-compile-plan.d.ts +12 -0
  107. package/dist/lib/interf-compile-plan.d.ts.map +1 -0
  108. package/dist/lib/interf-compile-plan.js +143 -0
  109. package/dist/lib/interf-compile-plan.js.map +1 -0
  110. package/dist/lib/interf-detect.d.ts.map +1 -1
  111. package/dist/lib/interf-detect.js +11 -10
  112. package/dist/lib/interf-detect.js.map +1 -1
  113. package/dist/lib/interf-scaffold.d.ts +1 -10
  114. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  115. package/dist/lib/interf-scaffold.js +25 -362
  116. package/dist/lib/interf-scaffold.js.map +1 -1
  117. package/dist/lib/interf-workflow-package.d.ts +4 -0
  118. package/dist/lib/interf-workflow-package.d.ts.map +1 -0
  119. package/dist/lib/interf-workflow-package.js +131 -0
  120. package/dist/lib/interf-workflow-package.js.map +1 -0
  121. package/dist/lib/interf.d.ts +2 -1
  122. package/dist/lib/interf.d.ts.map +1 -1
  123. package/dist/lib/interf.js +2 -1
  124. package/dist/lib/interf.js.map +1 -1
  125. package/dist/lib/local-workflows.d.ts.map +1 -1
  126. package/dist/lib/local-workflows.js +8 -12
  127. package/dist/lib/local-workflows.js.map +1 -1
  128. package/dist/lib/logger.d.ts +4 -0
  129. package/dist/lib/logger.d.ts.map +1 -0
  130. package/dist/lib/logger.js +11 -0
  131. package/dist/lib/logger.js.map +1 -0
  132. package/dist/lib/obsidian.d.ts.map +1 -1
  133. package/dist/lib/obsidian.js +7 -3
  134. package/dist/lib/obsidian.js.map +1 -1
  135. package/dist/lib/parse.d.ts +2 -2
  136. package/dist/lib/parse.d.ts.map +1 -1
  137. package/dist/lib/parse.js +11 -7
  138. package/dist/lib/parse.js.map +1 -1
  139. package/dist/lib/registry.js +3 -3
  140. package/dist/lib/registry.js.map +1 -1
  141. package/dist/lib/runtime-acceptance.d.ts +4 -0
  142. package/dist/lib/runtime-acceptance.d.ts.map +1 -0
  143. package/dist/lib/runtime-acceptance.js +123 -0
  144. package/dist/lib/runtime-acceptance.js.map +1 -0
  145. package/dist/lib/runtime-contracts.d.ts +4 -0
  146. package/dist/lib/runtime-contracts.d.ts.map +1 -0
  147. package/dist/lib/runtime-contracts.js +63 -0
  148. package/dist/lib/runtime-contracts.js.map +1 -0
  149. package/dist/lib/runtime-paths.d.ts +8 -0
  150. package/dist/lib/runtime-paths.d.ts.map +1 -0
  151. package/dist/lib/runtime-paths.js +28 -0
  152. package/dist/lib/runtime-paths.js.map +1 -0
  153. package/dist/lib/runtime-prompt.d.ts +3 -0
  154. package/dist/lib/runtime-prompt.d.ts.map +1 -0
  155. package/dist/lib/runtime-prompt.js +59 -0
  156. package/dist/lib/runtime-prompt.js.map +1 -0
  157. package/dist/lib/runtime-reconcile.d.ts +6 -0
  158. package/dist/lib/runtime-reconcile.d.ts.map +1 -0
  159. package/dist/lib/runtime-reconcile.js +339 -0
  160. package/dist/lib/runtime-reconcile.js.map +1 -0
  161. package/dist/lib/runtime-runs.d.ts +12 -0
  162. package/dist/lib/runtime-runs.d.ts.map +1 -0
  163. package/dist/lib/runtime-runs.js +337 -0
  164. package/dist/lib/runtime-runs.js.map +1 -0
  165. package/dist/lib/runtime-types.d.ts +42 -0
  166. package/dist/lib/runtime-types.d.ts.map +1 -0
  167. package/dist/lib/runtime-types.js +2 -0
  168. package/dist/lib/runtime-types.js.map +1 -0
  169. package/dist/lib/runtime.d.ts +6 -58
  170. package/dist/lib/runtime.d.ts.map +1 -1
  171. package/dist/lib/runtime.js +5 -614
  172. package/dist/lib/runtime.js.map +1 -1
  173. package/dist/lib/schema.d.ts +156 -13
  174. package/dist/lib/schema.d.ts.map +1 -1
  175. package/dist/lib/schema.js +113 -4
  176. package/dist/lib/schema.js.map +1 -1
  177. package/dist/lib/source-config.d.ts +13 -0
  178. package/dist/lib/source-config.d.ts.map +1 -0
  179. package/dist/lib/source-config.js +75 -0
  180. package/dist/lib/source-config.js.map +1 -0
  181. package/dist/lib/state-artifacts.d.ts +15 -0
  182. package/dist/lib/state-artifacts.d.ts.map +1 -0
  183. package/dist/lib/state-artifacts.js +24 -0
  184. package/dist/lib/state-artifacts.js.map +1 -0
  185. package/dist/lib/state-health.d.ts +9 -0
  186. package/dist/lib/state-health.d.ts.map +1 -0
  187. package/dist/lib/state-health.js +330 -0
  188. package/dist/lib/state-health.js.map +1 -0
  189. package/dist/lib/state-io.d.ts +15 -0
  190. package/dist/lib/state-io.d.ts.map +1 -0
  191. package/dist/lib/state-io.js +219 -0
  192. package/dist/lib/state-io.js.map +1 -0
  193. package/dist/lib/state-paths.d.ts +5 -0
  194. package/dist/lib/state-paths.d.ts.map +1 -0
  195. package/dist/lib/state-paths.js +19 -0
  196. package/dist/lib/state-paths.js.map +1 -0
  197. package/dist/lib/state-view.d.ts +7 -0
  198. package/dist/lib/state-view.d.ts.map +1 -0
  199. package/dist/lib/state-view.js +147 -0
  200. package/dist/lib/state-view.js.map +1 -0
  201. package/dist/lib/state.d.ts +6 -46
  202. package/dist/lib/state.d.ts.map +1 -1
  203. package/dist/lib/state.js +5 -632
  204. package/dist/lib/state.js.map +1 -1
  205. package/dist/lib/summarize-plan.d.ts +1 -0
  206. package/dist/lib/summarize-plan.d.ts.map +1 -1
  207. package/dist/lib/summarize-plan.js +10 -0
  208. package/dist/lib/summarize-plan.js.map +1 -1
  209. package/dist/lib/user-config.js +2 -2
  210. package/dist/lib/user-config.js.map +1 -1
  211. package/dist/lib/validate-helpers.d.ts +21 -0
  212. package/dist/lib/validate-helpers.d.ts.map +1 -0
  213. package/dist/lib/validate-helpers.js +72 -0
  214. package/dist/lib/validate-helpers.js.map +1 -0
  215. package/dist/lib/validate-interface.d.ts +79 -0
  216. package/dist/lib/validate-interface.d.ts.map +1 -0
  217. package/dist/lib/validate-interface.js +535 -0
  218. package/dist/lib/validate-interface.js.map +1 -0
  219. package/dist/lib/validate-kb.d.ts +81 -0
  220. package/dist/lib/validate-kb.d.ts.map +1 -0
  221. package/dist/lib/validate-kb.js +252 -0
  222. package/dist/lib/validate-kb.js.map +1 -0
  223. package/dist/lib/validate.d.ts +17 -146
  224. package/dist/lib/validate.d.ts.map +1 -1
  225. package/dist/lib/validate.js +33 -709
  226. package/dist/lib/validate.js.map +1 -1
  227. package/dist/lib/workflow-definitions.d.ts +1 -1
  228. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  229. package/dist/lib/workflow-definitions.js +90 -166
  230. package/dist/lib/workflow-definitions.js.map +1 -1
  231. package/dist/lib/workflow-helpers.d.ts.map +1 -1
  232. package/dist/lib/workflow-helpers.js +6 -3
  233. package/dist/lib/workflow-helpers.js.map +1 -1
  234. package/dist/lib/workflow-stage-runner.d.ts +41 -0
  235. package/dist/lib/workflow-stage-runner.d.ts.map +1 -0
  236. package/dist/lib/workflow-stage-runner.js +106 -0
  237. package/dist/lib/workflow-stage-runner.js.map +1 -0
  238. package/dist/lib/workflow-starter-docs.d.ts +9 -0
  239. package/dist/lib/workflow-starter-docs.d.ts.map +1 -0
  240. package/dist/lib/workflow-starter-docs.js +18 -0
  241. package/dist/lib/workflow-starter-docs.js.map +1 -0
  242. package/dist/lib/workflows-interface-contracts.d.ts +24 -0
  243. package/dist/lib/workflows-interface-contracts.d.ts.map +1 -0
  244. package/dist/lib/workflows-interface-contracts.js +304 -0
  245. package/dist/lib/workflows-interface-contracts.js.map +1 -0
  246. package/dist/lib/workflows-interface.d.ts +3 -10
  247. package/dist/lib/workflows-interface.d.ts.map +1 -1
  248. package/dist/lib/workflows-interface.js +117 -365
  249. package/dist/lib/workflows-interface.js.map +1 -1
  250. package/dist/lib/workflows-kb.d.ts.map +1 -1
  251. package/dist/lib/workflows-kb.js +79 -55
  252. package/dist/lib/workflows-kb.js.map +1 -1
  253. package/dist/lib/workflows.d.ts +1 -1
  254. package/dist/lib/workflows.d.ts.map +1 -1
  255. package/dist/lib/workflows.js +1 -1
  256. package/dist/lib/workflows.js.map +1 -1
  257. package/package.json +15 -4
  258. package/skills/interface/analyze/SKILL.md +79 -28
  259. package/skills/interface/compile/SKILL.md +27 -28
  260. package/skills/interface/create/SKILL.md +53 -230
  261. package/skills/interface/create/references/compile-plan-format.md +31 -31
  262. package/skills/interface/create/references/workflows.md +17 -32
  263. package/skills/interface/query/SKILL.md +15 -1
  264. package/skills/interface/retrieve/SKILL.md +32 -65
  265. package/skills/knowledge-base/compile/SKILL.md +59 -83
  266. package/skills/knowledge-base/compile/references/stage-claims.md +1 -1
  267. package/skills/knowledge-base/compile/references/stage-entities.md +2 -2
  268. package/skills/knowledge-base/query/SKILL.md +13 -1
  269. package/skills/knowledge-base/summarize/SKILL.md +54 -24
  270. package/templates/interface/README.md +13 -12
  271. package/templates/interface/interfaces.md +14 -11
  272. package/templates/knowledge-base/README.md +0 -1
  273. package/templates/knowledge-base/registry.md +15 -15
  274. package/templates/workflow-package/README.md +16 -0
  275. package/templates/workflow-package/create/SKILL.md +8 -0
  276. package/templates/workflow-package/interface-query/SKILL.md +29 -0
  277. package/templates/workflow-package/interface-stage/SKILL.md +13 -0
  278. package/templates/workflow-package/knowledge-base-query/SKILL.md +36 -0
  279. package/templates/workflow-package/knowledge-base-stage/SKILL.md +13 -0
  280. package/templates/workflow-starters/interface/interf/README.md +13 -0
  281. package/templates/workflow-starters/interface/interf/create/SKILL.md +15 -0
  282. package/templates/workflow-starters/knowledge-base/interf/README.md +13 -0
  283. package/templates/workflow-starters/knowledge-base/karpathy/README.md +13 -0
@@ -0,0 +1,535 @@
1
+ import { existsSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { countFilesRecursive } from "./filesystem.js";
4
+ import { resolveKnowledgeBaseSourcePath } from "./interf.js";
5
+ import { readJsonFileUnchecked } from "./parse.js";
6
+ import { getInterfaceWorkflow, resolveInterfaceWorkflowFromConfig, } from "./workflow-definitions.js";
7
+ import { InterfaceCoverageSchema, InterfaceRelevantSchema, InterfaceStateSchema, } from "./schema.js";
8
+ import { readKnowledgeBaseConfig, countBrokenWikilinks, asNumber, safeReadText, } from "./validate.js";
9
+ import { asFileEntries, asRejectedEntries, asStringArray, dedupeStrings, isSubset, setIntersectionSize, setsEqual, } from "./validate-helpers.js";
10
+ function extractFirstSection(text, headings) {
11
+ for (const heading of headings) {
12
+ const section = extractSection(text, heading);
13
+ if (section)
14
+ return section;
15
+ }
16
+ return null;
17
+ }
18
+ function sectionHasAnyMarker(section, markers) {
19
+ if (typeof section !== "string")
20
+ return false;
21
+ return markers.some((marker) => new RegExp(`(^|\\n)\\s{0,3}#{0,6}\\s*${escapeRegExp(marker)}`, "im").test(section));
22
+ }
23
+ function resolveRetrieveProofPath(interfaceDir, knowledgeBaseDir, value) {
24
+ const attempts = [
25
+ resolve(interfaceDir, value),
26
+ knowledgeBaseDir ? resolve(knowledgeBaseDir, value) : null,
27
+ knowledgeBaseDir ? resolve(join(knowledgeBaseDir, "summaries", value)) : null,
28
+ ];
29
+ for (const attempt of attempts) {
30
+ if (attempt && existsSync(attempt)) {
31
+ return attempt;
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ function canonicalizeRetrieveProofPaths(interfaceDir, knowledgeBaseDir, values) {
37
+ return values.map((value) => resolveRetrieveProofPath(interfaceDir, knowledgeBaseDir, value) ?? `missing:${value}`);
38
+ }
39
+ function allRetrieveProofPathsResolve(interfaceDir, knowledgeBaseDir, values) {
40
+ return values.every((value) => resolveRetrieveProofPath(interfaceDir, knowledgeBaseDir, value) !== null);
41
+ }
42
+ function extractSection(content, heading) {
43
+ const pattern = new RegExp(`(?:^|\\n)## ${escapeRegExp(heading)}\\s*\\n([\\s\\S]*?)(?=\\n## |\\s*$)`);
44
+ const match = content.match(pattern);
45
+ return match?.[1]?.trim() ?? null;
46
+ }
47
+ function normalizePlannedOutputPath(rawPath, interfaceName) {
48
+ const resolved = (interfaceName
49
+ ? rawPath.replaceAll("<interface-name>", interfaceName)
50
+ : rawPath)
51
+ .trim();
52
+ if (resolved.length === 0)
53
+ return null;
54
+ if (resolved.endsWith("/"))
55
+ return null;
56
+ if (/[{}<>]/.test(resolved))
57
+ return null;
58
+ return resolved;
59
+ }
60
+ export function extractInterfacePlannedOutputFiles(dirPath) {
61
+ const config = readKnowledgeBaseConfig(dirPath);
62
+ const configValue = config.value;
63
+ const knowledgeBaseConfig = configValue?.knowledge_base;
64
+ const knowledgeBasePath = knowledgeBaseConfig?.path;
65
+ const resolvedKnowledgeBasePath = knowledgeBasePath ? resolve(dirPath, knowledgeBasePath) : null;
66
+ const knowledgeBasePathValid = resolvedKnowledgeBasePath !== null && existsSync(join(resolvedKnowledgeBasePath, "summaries"));
67
+ const compilePlanText = safeReadText(join(dirPath, "compile-plan.md"));
68
+ if (!compilePlanText)
69
+ return [];
70
+ const workflowId = resolveInterfaceWorkflowFromConfig(configValue);
71
+ const sourcePath = knowledgeBasePathValid && resolvedKnowledgeBasePath
72
+ ? resolveKnowledgeBaseSourcePath(resolvedKnowledgeBasePath)
73
+ : undefined;
74
+ const workflow = getInterfaceWorkflow(workflowId, { sourcePath, workspacePath: dirPath });
75
+ const compileStageIndex = workflow.stages.findIndex((stage) => stage.contractType === "interface-output");
76
+ if (compileStageIndex < 0)
77
+ return [];
78
+ const compileStage = workflow.stages[compileStageIndex];
79
+ if (!compileStage)
80
+ return [];
81
+ const compileSection = extractFirstSection(compilePlanText, [
82
+ `Stage ${compileStageIndex + 1}: ${compileStage.label}`,
83
+ `Stage ${compileStageIndex + 1} — ${compileStage.label}`,
84
+ ]);
85
+ if (!compileSection)
86
+ return [];
87
+ const interfaceName = typeof configValue?.name === "string" ? configValue.name : null;
88
+ return dedupeStrings([...compileSection.matchAll(/^###\s+`([^`]+)`/gm)]
89
+ .map((match) => normalizePlannedOutputPath(match[1] ?? "", interfaceName))
90
+ .filter((value) => Boolean(value)));
91
+ }
92
+ function sectionMatchesInterfaceContract(section, contractType) {
93
+ switch (contractType) {
94
+ case "interface-retrieval":
95
+ return sectionHasAnyMarker(section, [
96
+ "Filter criteria",
97
+ "Categories:",
98
+ "Priority evidence tiers:",
99
+ "Truth modes to prioritize or downweight:",
100
+ "Key entities:",
101
+ "Expected relevant file count:",
102
+ ]);
103
+ case "interface-analysis":
104
+ return sectionHasAnyMarker(section, [
105
+ "Batching:",
106
+ "Claims:",
107
+ "Entities:",
108
+ "extract",
109
+ ]);
110
+ case "interface-output":
111
+ return sectionHasAnyMarker(section, [
112
+ "home.md",
113
+ "Output files",
114
+ "briefs/",
115
+ "knowledge/",
116
+ ]);
117
+ default:
118
+ return false;
119
+ }
120
+ }
121
+ function countMatches(content, pattern) {
122
+ return [...content.matchAll(pattern)].length;
123
+ }
124
+ function escapeRegExp(value) {
125
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
126
+ }
127
+ export function validateInterfaceKnowledgeBase(dirPath) {
128
+ const config = readKnowledgeBaseConfig(dirPath);
129
+ // Resolve knowledge-base path from config
130
+ const configValue = config.value;
131
+ const knowledgeBaseConfig = configValue?.knowledge_base;
132
+ const knowledgeBasePath = knowledgeBaseConfig?.path;
133
+ const resolvedKnowledgeBasePath = knowledgeBasePath ? resolve(dirPath, knowledgeBasePath) : null;
134
+ const knowledgeBasePathValid = resolvedKnowledgeBasePath !== null && existsSync(join(resolvedKnowledgeBasePath, "summaries"));
135
+ const brokenLinks = countBrokenWikilinks(dirPath, [join(dirPath, "knowledge"), join(dirPath, "briefs"), join(dirPath, "summaries")], [join(dirPath, "knowledge"), join(dirPath, "briefs"), join(dirPath, "summaries")]);
136
+ return {
137
+ config_present: config.present,
138
+ config_valid: config.valid,
139
+ config_type_match: config.typeMatch("interface"),
140
+ knowledge_base_path_valid: knowledgeBasePathValid,
141
+ broken_links: brokenLinks,
142
+ };
143
+ }
144
+ export function validateInterfacePlan(dirPath) {
145
+ const config = readKnowledgeBaseConfig(dirPath);
146
+ const configValue = config.value;
147
+ const knowledgeBaseConfig = configValue?.knowledge_base;
148
+ const knowledgeBasePath = knowledgeBaseConfig?.path;
149
+ const resolvedKnowledgeBasePath = knowledgeBasePath ? resolve(dirPath, knowledgeBasePath) : null;
150
+ const knowledgeBasePathValid = resolvedKnowledgeBasePath !== null && existsSync(join(resolvedKnowledgeBasePath, "summaries"));
151
+ const compilePlanPath = join(dirPath, "compile-plan.md");
152
+ const agentsPath = join(dirPath, "AGENTS.md");
153
+ const homePath = join(dirPath, "home.md");
154
+ const compilePlanPresent = existsSync(compilePlanPath);
155
+ const compilePlanText = compilePlanPresent ? safeReadText(compilePlanPath) : null;
156
+ const workflowId = resolveInterfaceWorkflowFromConfig(configValue);
157
+ const sourcePath = knowledgeBasePathValid && resolvedKnowledgeBasePath
158
+ ? resolveKnowledgeBaseSourcePath(resolvedKnowledgeBasePath)
159
+ : undefined;
160
+ const workflow = getInterfaceWorkflow(workflowId, { sourcePath, workspacePath: dirPath });
161
+ const stageChecks = workflow.stages.map((stage, index) => {
162
+ const section = compilePlanText
163
+ ? extractFirstSection(compilePlanText, [
164
+ `Stage ${index + 1}: ${stage.label}`,
165
+ `Stage ${index + 1} — ${stage.label}`,
166
+ ])
167
+ : null;
168
+ return {
169
+ id: stage.id,
170
+ label: stage.label,
171
+ contract_type: stage.contractType,
172
+ present: section !== null,
173
+ defined: sectionMatchesInterfaceContract(section, stage.contractType),
174
+ };
175
+ });
176
+ const compilePlanSections = stageChecks.every((stage) => stage.present);
177
+ const stage1Defined = stageChecks[0]?.defined ?? false;
178
+ const stage2Defined = stageChecks[1]?.defined ?? false;
179
+ const stage3Defined = stageChecks[2]?.defined ?? false;
180
+ const allStageDefinitionsValid = stageChecks.every((stage) => stage.defined);
181
+ const agentsPresent = existsSync(agentsPath);
182
+ const homePresent = existsSync(homePath);
183
+ const outputMentions = countMatches(compilePlanText ?? "", /(?:briefs\/|summaries\/|knowledge\/|home\.md)/gi);
184
+ const required = true;
185
+ const checks = {
186
+ config_present: config.present,
187
+ config_valid: config.valid,
188
+ config_type_match: config.typeMatch("interface"),
189
+ knowledge_base_path_valid: knowledgeBasePathValid,
190
+ compile_plan_present: compilePlanPresent,
191
+ compile_plan_sections: compilePlanSections,
192
+ stage1_defined: stage1Defined,
193
+ stage2_defined: stage2Defined,
194
+ stage3_defined: stage3Defined,
195
+ all_stage_definitions_valid: allStageDefinitionsValid,
196
+ stage_checks: stageChecks,
197
+ agents_present: agentsPresent,
198
+ home_present: homePresent,
199
+ };
200
+ const errors = [];
201
+ if (!checks.config_present)
202
+ errors.push("Missing interf.json.");
203
+ else if (!checks.config_valid)
204
+ errors.push("Could not parse interf.json.");
205
+ else if (!checks.config_type_match)
206
+ errors.push("Config is not an interface.");
207
+ if (!checks.knowledge_base_path_valid)
208
+ errors.push("knowledgeBase.path does not resolve to a valid knowledgeBase.");
209
+ if (!checks.compile_plan_present)
210
+ errors.push("Missing compile-plan.md.");
211
+ else if (!checks.compile_plan_sections)
212
+ errors.push("compile-plan.md is missing one or more required stage sections.");
213
+ if (checks.compile_plan_present) {
214
+ for (const [index, stage] of stageChecks.entries()) {
215
+ if (!stage.defined) {
216
+ errors.push(`Stage ${index + 1} ${stage.label.toLowerCase()} plan is incomplete.`);
217
+ }
218
+ }
219
+ }
220
+ if (!checks.agents_present)
221
+ errors.push("Missing AGENTS.md.");
222
+ if (!checks.home_present)
223
+ errors.push("Missing home.md.");
224
+ const ok = errors.length === 0;
225
+ const summary = ok
226
+ ? `Interface plan verified — ${stageChecks.filter((stage) => stage.defined).length}/${stageChecks.length} stages defined with ${outputMentions} output references.`
227
+ : `Interface plan failed — ${errors[0] ?? "compile plan is incomplete."}`;
228
+ return {
229
+ ok,
230
+ required,
231
+ summary,
232
+ counts: {
233
+ stage_sections_expected: stageChecks.length,
234
+ stage_sections_present: stageChecks.filter((stage) => stage.present).length,
235
+ output_mentions: outputMentions,
236
+ },
237
+ checks,
238
+ errors,
239
+ };
240
+ }
241
+ export function validateInterfaceRetrieve(dirPath) {
242
+ const config = readKnowledgeBaseConfig(dirPath);
243
+ const configValue = config.value;
244
+ const knowledgeBaseConfig = configValue?.knowledge_base;
245
+ const knowledgeBasePath = knowledgeBaseConfig?.path;
246
+ const resolvedKnowledgeBasePath = knowledgeBasePath ? resolve(dirPath, knowledgeBasePath) : null;
247
+ const knowledgeBasePathValid = resolvedKnowledgeBasePath !== null && existsSync(join(resolvedKnowledgeBasePath, "summaries"));
248
+ const knowledgeBaseTotal = knowledgeBasePathValid ? countFilesRecursive(join(resolvedKnowledgeBasePath, "summaries")) : 0;
249
+ const statePath = join(dirPath, ".interf", "state.json");
250
+ const relevantPath = join(dirPath, ".interf", "relevant.json");
251
+ const coveragePath = join(dirPath, ".interf", "coverage.json");
252
+ const statePresent = existsSync(statePath);
253
+ const relevantPresent = existsSync(relevantPath);
254
+ const coveragePresent = existsSync(coveragePath);
255
+ const state = statePresent
256
+ ? readJsonFileUnchecked(statePath, "interface state")
257
+ : null;
258
+ const relevant = relevantPresent
259
+ ? readJsonFileUnchecked(relevantPath, "interface retrieved set")
260
+ : null;
261
+ const coverage = coveragePresent
262
+ ? readJsonFileUnchecked(coveragePath, "interface coverage proof")
263
+ : null;
264
+ const queryStarted = Boolean(state?.retrieve_complete) ||
265
+ Boolean(state?.analyze_complete) ||
266
+ Boolean(state?.compile_complete) ||
267
+ typeof state?.last_retrieve === "string" ||
268
+ typeof state?.last_analyze === "string" ||
269
+ typeof state?.last_compile === "string" ||
270
+ relevantPresent ||
271
+ coveragePresent;
272
+ const proof = coverage && typeof coverage.proof === "object" && coverage.proof
273
+ ? coverage.proof
274
+ : null;
275
+ const bridgeRelevantEntries = asFileEntries(relevant?.relevant);
276
+ const bridgeRejectedEntries = asFileEntries(relevant?.rejected);
277
+ const bridgeCoverageShape = coverage !== null &&
278
+ typeof coverage?.query_timestamp === "string" &&
279
+ typeof coverage?.coverage_complete === "boolean" &&
280
+ !!coverage?.entities &&
281
+ typeof coverage.entities === "object" &&
282
+ !!coverage?.comparators &&
283
+ typeof coverage.comparators === "object" &&
284
+ Array.isArray(coverage?.gaps);
285
+ const derivedRelevantFiles = asStringArray(proof?.retrieved).length > 0
286
+ ? asStringArray(proof?.retrieved)
287
+ : bridgeRelevantEntries.map((entry) => entry.file);
288
+ const relevantFiles = asStringArray(relevant?.relevant_files).length > 0
289
+ ? asStringArray(relevant?.relevant_files)
290
+ : derivedRelevantFiles;
291
+ const deltaFiles = asStringArray(relevant?.delta_files).length > 0
292
+ ? asStringArray(relevant?.delta_files)
293
+ : asStringArray(state?.delta_files);
294
+ const explicitCandidateFiles = asStringArray(coverage?.candidate_files);
295
+ const scannedFiles = asStringArray(proof?.scanned).length > 0
296
+ ? asStringArray(proof?.scanned)
297
+ : dedupeStrings([
298
+ ...bridgeRelevantEntries.map((entry) => entry.file),
299
+ ...bridgeRejectedEntries.map((entry) => entry.file),
300
+ ]);
301
+ const candidateFiles = explicitCandidateFiles.length > 0
302
+ ? explicitCandidateFiles
303
+ : scannedFiles;
304
+ const abstractReviewedFiles = asStringArray(coverage?.abstract_reviewed_files).length > 0
305
+ ? asStringArray(coverage?.abstract_reviewed_files)
306
+ : asStringArray(proof?.reviewed).length > 0
307
+ ? asStringArray(proof?.reviewed)
308
+ : candidateFiles;
309
+ const selectedFiles = asStringArray(coverage?.selected_files).length > 0
310
+ ? asStringArray(coverage?.selected_files)
311
+ : derivedRelevantFiles;
312
+ const rejectedFiles = asRejectedEntries(coverage?.rejected_files);
313
+ const rejectedPaths = rejectedFiles.length > 0
314
+ ? rejectedFiles.map((entry) => entry.path)
315
+ : asStringArray(proof?.excluded).length > 0
316
+ ? asStringArray(proof?.excluded)
317
+ : bridgeRejectedEntries.map((entry) => entry.file);
318
+ const canonicalRelevantFiles = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, relevantFiles);
319
+ const canonicalDeltaFiles = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, deltaFiles);
320
+ const canonicalCandidateFiles = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, candidateFiles);
321
+ const canonicalScannedFiles = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, scannedFiles);
322
+ const canonicalAbstractReviewedFiles = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, abstractReviewedFiles);
323
+ const canonicalSelectedFiles = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, selectedFiles);
324
+ const canonicalRejectedPaths = canonicalizeRetrieveProofPaths(dirPath, resolvedKnowledgeBasePath, rejectedPaths);
325
+ const proofPathsResolve = !knowledgeBasePathValid
326
+ ? false
327
+ : allRetrieveProofPathsResolve(dirPath, resolvedKnowledgeBasePath, dedupeStrings([
328
+ ...relevantFiles,
329
+ ...deltaFiles,
330
+ ...candidateFiles,
331
+ ...scannedFiles,
332
+ ...abstractReviewedFiles,
333
+ ...selectedFiles,
334
+ ...rejectedPaths,
335
+ ]));
336
+ const frontmatterScanned = asNumber(coverage?.frontmatter_scanned) ||
337
+ asNumber(state?.frontmatter_scanned) ||
338
+ asNumber(relevant?.total_scanned);
339
+ const candidateCount = asNumber(coverage?.candidates_after_frontmatter) ||
340
+ asNumber(state?.candidate_count) ||
341
+ candidateFiles.length;
342
+ const abstractsRead = asNumber(coverage?.abstracts_reviewed) ||
343
+ asNumber(state?.abstracts_read) ||
344
+ abstractReviewedFiles.length;
345
+ const selectedCount = asNumber(coverage?.relevant_selected) ||
346
+ asNumber(state?.relevant_count) ||
347
+ asNumber(relevant?.total_relevant) ||
348
+ selectedFiles.length;
349
+ const rejectedCount = asNumber(coverage?.rejected) ||
350
+ asNumber(state?.rejected_count) ||
351
+ asNumber(relevant?.total_rejected) ||
352
+ rejectedPaths.length;
353
+ const deltaCount = asNumber(state?.delta_count) || deltaFiles.length;
354
+ const expansionPasses = asNumber(coverage?.expansion_passes) ||
355
+ asNumber(state?.expansion_passes);
356
+ const relevantValid = (relevant !== null &&
357
+ typeof relevant?.generated_at === "string" &&
358
+ typeof relevant?.knowledge_base_summary_count === "number" &&
359
+ Array.isArray(relevant?.relevant_files) &&
360
+ Array.isArray(relevant?.delta_files)) ||
361
+ (relevant !== null &&
362
+ typeof relevant?.query_timestamp === "string" &&
363
+ Array.isArray(relevant?.relevant) &&
364
+ Array.isArray(relevant?.rejected) &&
365
+ typeof relevant?.total_scanned === "number" &&
366
+ typeof relevant?.total_relevant === "number" &&
367
+ typeof relevant?.total_rejected === "number") ||
368
+ Array.isArray(proof?.retrieved);
369
+ const coverageValid = (coverage !== null &&
370
+ typeof coverage?.generated_at === "string" &&
371
+ typeof coverage?.knowledge_base_summary_count === "number" &&
372
+ typeof coverage?.frontmatter_scanned === "number" &&
373
+ typeof coverage?.expansion_passes === "number" &&
374
+ Array.isArray(coverage?.candidate_files) &&
375
+ Array.isArray(coverage?.abstract_reviewed_files) &&
376
+ Array.isArray(coverage?.selected_files) &&
377
+ Array.isArray(coverage?.rejected_files) &&
378
+ rejectedFiles.length === rejectedPaths.length) ||
379
+ (coverage !== null &&
380
+ typeof coverage?.generated_at === "string" &&
381
+ typeof coverage?.knowledge_base_summary_total === "number" &&
382
+ typeof coverage?.frontmatter_scanned === "number" &&
383
+ typeof coverage?.candidates_after_frontmatter === "number" &&
384
+ typeof coverage?.abstracts_reviewed === "number" &&
385
+ typeof coverage?.relevant_selected === "number" &&
386
+ typeof coverage?.rejected === "number" &&
387
+ typeof coverage?.expansion_passes === "number" &&
388
+ typeof coverage?.coverage_complete === "boolean" &&
389
+ proof !== null &&
390
+ Array.isArray(proof.scanned) &&
391
+ Array.isArray(proof.reviewed) &&
392
+ Array.isArray(proof.retrieved) &&
393
+ Array.isArray(proof.excluded)) ||
394
+ bridgeCoverageShape;
395
+ const selectedSet = new Set(canonicalSelectedFiles);
396
+ const rejectedSet = new Set(canonicalRejectedPaths);
397
+ const candidateSet = new Set(canonicalCandidateFiles);
398
+ const scannedSet = new Set(canonicalScannedFiles);
399
+ const abstractSet = new Set(canonicalAbstractReviewedFiles);
400
+ const relevantSet = new Set(canonicalRelevantFiles);
401
+ const selectedRejectedUnion = new Set([...canonicalSelectedFiles, ...canonicalRejectedPaths]);
402
+ const usesProofScanCoverage = explicitCandidateFiles.length === 0 &&
403
+ Array.isArray(proof?.scanned) &&
404
+ typeof coverage?.candidates_after_frontmatter === "number";
405
+ const knowledgeBaseCountMatch = knowledgeBasePathValid &&
406
+ coverageValid &&
407
+ (relevant !== null && typeof relevant?.knowledge_base_summary_count === "number"
408
+ ? asNumber(relevant.knowledge_base_summary_count) === knowledgeBaseTotal
409
+ : frontmatterScanned === knowledgeBaseTotal || candidateCount <= knowledgeBaseTotal) &&
410
+ (typeof coverage?.knowledge_base_summary_count === "number"
411
+ ? asNumber(coverage.knowledge_base_summary_count) === knowledgeBaseTotal
412
+ : typeof coverage?.knowledge_base_summary_total === "number"
413
+ ? asNumber(coverage?.knowledge_base_summary_total) === knowledgeBaseTotal
414
+ : frontmatterScanned === knowledgeBaseTotal);
415
+ const fullFrontmatterScan = knowledgeBasePathValid && coverageValid && frontmatterScanned === knowledgeBaseTotal;
416
+ const candidatePartitionValid = coverageValid &&
417
+ setIntersectionSize(selectedSet, rejectedSet) === 0 &&
418
+ (usesProofScanCoverage
419
+ ? scannedSet.size === selectedRejectedUnion.size &&
420
+ isSubset(selectedSet, scannedSet) &&
421
+ isSubset(rejectedSet, scannedSet)
422
+ : candidateSet.size === selectedRejectedUnion.size &&
423
+ isSubset(selectedSet, candidateSet) &&
424
+ isSubset(rejectedSet, candidateSet));
425
+ const abstractsCoverCandidates = coverageValid &&
426
+ (usesProofScanCoverage
427
+ ? canonicalSelectedFiles.every((file) => abstractSet.has(file)) &&
428
+ abstractSet.size >= candidateCount &&
429
+ abstractsRead >= candidateCount
430
+ : isSubset(candidateSet, abstractSet));
431
+ const selectedMatchRelevant = coverageValid &&
432
+ relevantValid &&
433
+ setsEqual(selectedSet, relevantSet);
434
+ const deltaSubset = relevantValid &&
435
+ isSubset(new Set(canonicalDeltaFiles), selectedSet);
436
+ const stateCountsMatch = state !== null &&
437
+ asNumber(state.frontmatter_scanned) === frontmatterScanned &&
438
+ asNumber(state.candidate_count) === candidateCount &&
439
+ asNumber(state.abstracts_read) === abstractsRead &&
440
+ asNumber(state.expansion_passes) === expansionPasses &&
441
+ asNumber(state.relevant_count) === selectedCount &&
442
+ asNumber(state.rejected_count) === rejectedCount &&
443
+ asNumber(state.delta_count) === deltaCount;
444
+ const stateFlagsMatch = state !== null &&
445
+ state.retrieve_complete === true &&
446
+ state.coverage_complete === true;
447
+ const stateSchema = state !== null ? InterfaceStateSchema.safeParse(state) : null;
448
+ const stateValid = stateSchema?.success ?? false;
449
+ const checks = {
450
+ knowledge_base_path_valid: knowledgeBasePathValid,
451
+ state_present: statePresent,
452
+ state_valid: stateValid,
453
+ relevant_present: relevantPresent || Array.isArray(proof?.retrieved),
454
+ relevant_valid: relevantValid ||
455
+ (relevant !== null && InterfaceRelevantSchema.safeParse(relevant).success),
456
+ coverage_present: coveragePresent,
457
+ coverage_valid: coverageValid ||
458
+ (coverage !== null && InterfaceCoverageSchema.safeParse(coverage).success),
459
+ knowledge_base_count_match: knowledgeBaseCountMatch,
460
+ full_frontmatter_scan: fullFrontmatterScan,
461
+ candidate_partition_valid: candidatePartitionValid,
462
+ abstracts_cover_candidates: abstractsCoverCandidates,
463
+ selected_match_relevant: selectedMatchRelevant,
464
+ delta_subset: deltaSubset,
465
+ proof_paths_resolve: proofPathsResolve,
466
+ state_counts_match: stateCountsMatch,
467
+ state_flags_match: stateFlagsMatch,
468
+ };
469
+ const errors = [];
470
+ if (queryStarted) {
471
+ if (!knowledgeBasePathValid)
472
+ errors.push("Knowledge base is missing or invalid.");
473
+ if (!statePresent)
474
+ errors.push("Missing .interf/state.json.");
475
+ else if (state === null)
476
+ errors.push("Could not parse .interf/state.json.");
477
+ else if (!stateValid)
478
+ errors.push("state.json has the wrong shape for an interface runtime.");
479
+ if (!relevantPresent && !Array.isArray(proof?.retrieved))
480
+ errors.push("Missing .interf/relevant.json.");
481
+ else if (!relevantValid)
482
+ errors.push("Could not parse .interf/relevant.json or it has the wrong shape.");
483
+ if (!coveragePresent)
484
+ errors.push("Missing .interf/coverage.json.");
485
+ else if (!coverageValid)
486
+ errors.push("Could not parse .interf/coverage.json or it has the wrong shape.");
487
+ if (coveragePresent && coverageValid && !knowledgeBaseCountMatch)
488
+ errors.push("Coverage proof does not match the current knowledge-base summary count.");
489
+ if (coveragePresent && coverageValid && !fullFrontmatterScan)
490
+ errors.push("Coverage proof does not show a full frontmatter scan.");
491
+ if (coveragePresent && coverageValid && !candidatePartitionValid)
492
+ errors.push("Candidate, selected, and rejected sets are inconsistent.");
493
+ if (coveragePresent && coverageValid && !abstractsCoverCandidates)
494
+ errors.push("Not every candidate file was abstract-reviewed.");
495
+ if ((relevantPresent || coveragePresent) && !proofPathsResolve) {
496
+ errors.push("Retrieve proof references summary paths that do not resolve on disk.");
497
+ }
498
+ if (relevantPresent && coveragePresent && relevantValid && coverageValid && !selectedMatchRelevant) {
499
+ errors.push("Selected files in coverage proof do not match relevant_files.");
500
+ }
501
+ if (relevantPresent && coveragePresent && relevantValid && coverageValid && !deltaSubset) {
502
+ errors.push("delta_files are not a subset of selected relevant files.");
503
+ }
504
+ if (statePresent && stateValid && coveragePresent && coverageValid && relevantPresent && relevantValid && !stateCountsMatch) {
505
+ errors.push("state.json counts do not match the retrieved set and coverage proof.");
506
+ }
507
+ if (statePresent && stateValid && !stateFlagsMatch) {
508
+ errors.push("state.json is missing retrieve_complete or coverage_complete.");
509
+ }
510
+ }
511
+ const ok = queryStarted ? errors.length === 0 : true;
512
+ const summary = !queryStarted
513
+ ? "Coverage not required yet — interface retrieve has not started."
514
+ : ok
515
+ ? `Coverage verified — scanned ${frontmatterScanned}/${knowledgeBaseTotal}, reviewed ${abstractsRead} abstracts, selected ${selectedCount}, rejected ${rejectedCount}.`
516
+ : `Coverage failed — ${errors[0] ?? "inconsistent retrieval proof."}`;
517
+ return {
518
+ ok,
519
+ required: queryStarted,
520
+ summary,
521
+ counts: {
522
+ knowledge_base_total: knowledgeBaseTotal,
523
+ frontmatter_scanned: frontmatterScanned,
524
+ candidate_count: candidateCount,
525
+ abstracts_read: abstractsRead,
526
+ selected_count: selectedCount,
527
+ rejected_count: rejectedCount,
528
+ delta_count: deltaCount,
529
+ expansion_passes: expansionPasses,
530
+ },
531
+ checks,
532
+ errors,
533
+ };
534
+ }
535
+ //# sourceMappingURL=validate-interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate-interface.js","sourceRoot":"","sources":["../../src/lib/validate-interface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ export interface KnowledgeBaseValidationSummary {
2
+ config_present: boolean;
3
+ config_valid: boolean;
4
+ config_type_match: boolean;
5
+ summary_frontmatter_valid: boolean;
6
+ abstracts_valid: boolean;
7
+ invalid_frontmatter: number;
8
+ short_abstracts: number;
9
+ broken_links: number;
10
+ }
11
+ export interface KnowledgeBaseSummarizeValidation {
12
+ ok: boolean;
13
+ required: boolean;
14
+ summary: string;
15
+ counts: {
16
+ source_total: number;
17
+ source_covered: number;
18
+ summarized: number;
19
+ to_summarize: number;
20
+ invalid_frontmatter: number;
21
+ short_abstracts: number;
22
+ inventory_total: number;
23
+ };
24
+ checks: {
25
+ config_present: boolean;
26
+ config_valid: boolean;
27
+ config_type_match: boolean;
28
+ summaries_present: boolean;
29
+ state_present: boolean;
30
+ state_valid: boolean;
31
+ inventory_present: boolean;
32
+ inventory_valid: boolean;
33
+ inventory_complete: boolean;
34
+ inventory_matches_summaries: boolean;
35
+ state_covers_summaries: boolean;
36
+ full_source_coverage: boolean;
37
+ summary_frontmatter_valid: boolean;
38
+ abstracts_valid: boolean;
39
+ };
40
+ errors: string[];
41
+ }
42
+ export interface KnowledgeBaseCompileValidation {
43
+ ok: boolean;
44
+ required: boolean;
45
+ summary: string;
46
+ counts: {
47
+ source_total: number;
48
+ summarized: number;
49
+ compiled: number;
50
+ inventory_total: number;
51
+ frontmatter_scanned: number;
52
+ abstracts_read: number;
53
+ full_reads: number;
54
+ entity_files: number;
55
+ claim_files: number;
56
+ index_files: number;
57
+ outputs: number;
58
+ };
59
+ checks: {
60
+ config_present: boolean;
61
+ config_valid: boolean;
62
+ config_type_match: boolean;
63
+ summarize_complete: boolean;
64
+ state_present: boolean;
65
+ state_valid: boolean;
66
+ inventory_present: boolean;
67
+ inventory_valid: boolean;
68
+ inventory_complete: boolean;
69
+ inventory_matches_summaries: boolean;
70
+ frontmatter_inventory_complete: boolean;
71
+ abstracts_cover_summaries: boolean;
72
+ synced_complete: boolean;
73
+ outputs_present: boolean;
74
+ links_valid: boolean;
75
+ };
76
+ errors: string[];
77
+ }
78
+ export declare function validateKnowledgeBase(dirPath: string): KnowledgeBaseValidationSummary;
79
+ export declare function validateKnowledgeBaseSummarize(dirPath: string): KnowledgeBaseSummarizeValidation;
80
+ export declare function validateKnowledgeBaseCompile(dirPath: string): KnowledgeBaseCompileValidation;
81
+ //# sourceMappingURL=validate-kb.d.ts.map