@interf/compiler 0.1.12 → 0.2.1

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 (282) hide show
  1. package/README.md +197 -192
  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 +39 -14
  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 +8 -63
  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 +2 -0
  216. package/dist/lib/validate-interface.d.ts.map +1 -1
  217. package/dist/lib/validate-interface.js +103 -53
  218. package/dist/lib/validate-interface.js.map +1 -1
  219. package/dist/lib/validate-kb.d.ts +8 -0
  220. package/dist/lib/validate-kb.d.ts.map +1 -1
  221. package/dist/lib/validate-kb.js +53 -24
  222. package/dist/lib/validate-kb.js.map +1 -1
  223. package/dist/lib/validate.d.ts +1 -1
  224. package/dist/lib/validate.d.ts.map +1 -1
  225. package/dist/lib/validate.js +5 -2
  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.map +1 -1
  254. package/dist/lib/workflows.js +1 -1
  255. package/dist/lib/workflows.js.map +1 -1
  256. package/package.json +15 -4
  257. package/skills/interface/analyze/SKILL.md +79 -28
  258. package/skills/interface/compile/SKILL.md +27 -28
  259. package/skills/interface/create/SKILL.md +53 -230
  260. package/skills/interface/create/references/compile-plan-format.md +31 -31
  261. package/skills/interface/create/references/workflows.md +17 -32
  262. package/skills/interface/query/SKILL.md +15 -1
  263. package/skills/interface/retrieve/SKILL.md +32 -65
  264. package/skills/knowledge-base/compile/SKILL.md +59 -83
  265. package/skills/knowledge-base/compile/references/stage-claims.md +1 -1
  266. package/skills/knowledge-base/compile/references/stage-entities.md +2 -2
  267. package/skills/knowledge-base/query/SKILL.md +13 -1
  268. package/skills/knowledge-base/summarize/SKILL.md +54 -24
  269. package/templates/interface/README.md +13 -12
  270. package/templates/interface/interfaces.md +14 -11
  271. package/templates/knowledge-base/README.md +0 -1
  272. package/templates/knowledge-base/registry.md +15 -15
  273. package/templates/workflow-package/README.md +16 -0
  274. package/templates/workflow-package/create/SKILL.md +8 -0
  275. package/templates/workflow-package/interface-query/SKILL.md +29 -0
  276. package/templates/workflow-package/interface-stage/SKILL.md +13 -0
  277. package/templates/workflow-package/knowledge-base-query/SKILL.md +36 -0
  278. package/templates/workflow-package/knowledge-base-stage/SKILL.md +13 -0
  279. package/templates/workflow-starters/interface/interf/README.md +13 -0
  280. package/templates/workflow-starters/interface/interf/create/SKILL.md +15 -0
  281. package/templates/workflow-starters/knowledge-base/interf/README.md +13 -0
  282. package/templates/workflow-starters/knowledge-base/karpathy/README.md +13 -0
package/README.md CHANGED
@@ -1,272 +1,277 @@
1
1
  # Interf
2
2
 
3
- The open-source knowledge compiler.
3
+ Interf Knowledge Compiler uses local agents such as Claude Code and Codex to run a data-processing workflow over your files.
4
4
 
5
- Interf compiles folders into knowledge bases and task-specific interfaces: agent-ready workspaces with proof, structure, and benchmarks.
5
+ It creates a workspace with notes and navigation so the agent can see what is in the folder and what to retrieve.
6
6
 
7
- - compile any folder into a knowledge base
8
- - create focused interfaces for specific tasks
9
- - run evals and benchmarks on your own files
7
+ Then you test that workspace on your evals.
10
8
 
11
- Most LLM knowledge-base repos optimize for a demo. Interf optimizes for proof. It keeps your files on disk, compiles a visible folder an agent can actually use, and makes workflows compete on your evals instead of on marketing claims.
9
+ - your files stay on your machine
10
+ - you choose the local agent
11
+ - you decide what must be true
12
12
 
13
- ## Why Interf
13
+ Agents start missing things when a task spans PDFs, charts, and several files in one folder. That usually shows up when the job depends on:
14
14
 
15
- Interf is built around three ideas:
15
+ - reading reports and filings
16
+ - extracting a number from a chart
17
+ - understanding what is inside a folder before doing work
18
+ - pulling context together across several files
19
+ - checking the raw source when the answer has to be exact
16
20
 
17
- - the product surface is the compiled folder, not a hidden service
18
- - the workflow should leave proof of work on disk
19
- - the method should be benchmarkable on your task
21
+ The workspace exists so the agent does not have to rediscover the folder from scratch on every run.
20
22
 
21
- That gives you a simple loop:
23
+ The point is proof on your data, not generic AI claims.
22
24
 
23
- 1. point Interf at a folder
24
- 2. compile a knowledge base
25
- 3. create an interface for a job
26
- 4. run evals and benchmarks to see what actually works
25
+ The simplest way to use Interf is to compare the same task before and after compilation:
27
26
 
28
- ## Core concepts
27
+ - run the task on the raw folder
28
+ - compile the folder with Interf
29
+ - run the same task again from the workspace
30
+ - if you want a recorded pass/fail result, add evals and run `interf benchmark`
29
31
 
30
- - **Source folder**: your real files stay where they are
31
- - **Knowledge base**: `interf/{name}/`, the shared compiled layer over that folder
32
- - **Interface**: `interf/{name}/interfaces/{interface-name}/`, a task-specific surface on top of one knowledge base
33
- - **Workflow**: the reusable method package that defines the compile pipeline
34
- - **Benchmark**: running evals across compiled knowledge bases or interfaces on the same folder
32
+ ## Quick Start
35
33
 
36
- One source folder can host multiple knowledge bases under `interf/` when you want to compare workflows like `interf` vs `karpathy` on the same data.
34
+ Requirements:
37
35
 
38
- ## Interf primitives
36
+ - Node.js 20+
37
+ - a local coding agent: Claude Code or Codex
39
38
 
40
- Interf gives you a few strong primitives instead of a giant abstraction layer:
39
+ Install and check setup:
41
40
 
42
- - **workflow package**: `workflow.json` plus local `workflow/` docs define the method
43
- - **stage contract**: every compile stage gets a deterministic acceptance boundary
44
- - **declarative acceptance**: workflows can declare extra acceptance rules in `workflow.json`
45
- - **CLI enforcement**: the CLI checks whether a stage actually complied instead of trusting the agent's summary
46
- - **benchmark specs**: file-based evals let you compare workflows and interfaces on the same folder
47
-
48
- That is the core product promise:
49
-
50
- - define what the agent should do in plain English
51
- - give the agent local workspace docs and stage contracts
52
- - validate the result deterministically
53
-
54
- For workflow authors, the important surface is:
55
-
56
- - `workflow.json`
57
- - `workflow/create/`
58
- - `workflow/compile/stages/<stage>/`
59
- - `workflow/use/query/`
60
- - [`docs/workflow-spec.md`](./docs/workflow-spec.md)
61
-
62
- ## What the agent sees
63
-
64
- The compiled folder is the agent-facing product surface: an agent-ready workspace.
65
-
66
- Important files in a KB or interface:
41
+ ```bash
42
+ npm install -g @interf/compiler
43
+ interf doctor
44
+ ```
67
45
 
68
- - `interf.json` = what this workspace is
69
- - `AGENTS.md` = where to start and how to navigate
70
- - `workflow/` = the editable local method package
71
- - `home.md` = entry document
72
- - `summaries/`, `knowledge/`, and `briefs/` = compiled outputs
46
+ Then run Interf in any folder:
73
47
 
74
- Manual query/use works like this:
48
+ ```bash
49
+ cd ~/my-folder
50
+ interf init
51
+ interf compile
52
+ interf benchmark
53
+ ```
75
54
 
76
- - open the KB or interface folder
77
- - read `AGENTS.md`
78
- - follow `workflow/use/query/SKILL.md`
79
- - for interfaces, use local interface artifacts first, then the parent KB loop, then raw files if needed
55
+ That is the whole first loop:
80
56
 
81
- Interf does not require globally installed slash skills for workspace behavior. Local `workflow/.../SKILL.md` files are workspace instruction docs routed by `AGENTS.md` and stage contracts.
57
+ - point Interf at a folder you already have
58
+ - compile the workspace
59
+ - ask the agent to use it
60
+ - add evals later when you want to check the result more formally
82
61
 
83
- ## Quick start
62
+ `interf init` chooses your local agent and can attach the current folder right away. It does not move or replace your files.
84
63
 
85
- Install the published package:
64
+ Fastest sample loop:
86
65
 
87
66
  ```bash
88
- npm install -g @interf/compiler
67
+ cp -r examples/benchmark-demo /tmp/interf-demo
68
+ cd /tmp/interf-demo
69
+ interf init
70
+ interf compile
71
+ interf benchmark
89
72
  ```
90
73
 
91
- Or install from source while contributing:
74
+ If you want a task-specific workspace for one job, add an interface:
92
75
 
93
76
  ```bash
94
- npm install
95
- npm run build
96
- npm install -g .
77
+ interf create interface
78
+ interf compile
79
+ interf benchmark
97
80
  ```
98
81
 
99
- Initialize Interf in any folder:
100
-
101
- ```bash
102
- cd ~/my-notes
103
- interf init
82
+ ## Start With One Small Eval
83
+
84
+ `interf.config.json` is where you write what must be true.
85
+
86
+ Use it for:
87
+
88
+ - broad checks on the folder as a whole
89
+ - task-specific checks for one interface
90
+
91
+ Example shape:
92
+
93
+ ```json
94
+ {
95
+ "knowledge_base": {
96
+ "name": "uk-office-market-report",
97
+ "evals": [
98
+ {
99
+ "question": "What was Bristol annual take-up in 2018, in millions of square feet?",
100
+ "answer": "About 0.5 million square feet. Accept answers between 0.3 and 0.6 if they clearly refer to Bristol annual take-up in 2018."
101
+ }
102
+ ]
103
+ },
104
+ "interfaces": [
105
+ {
106
+ "name": "market-briefing",
107
+ "about": "Prepare a short briefing from the office market report.",
108
+ "evals": [
109
+ {
110
+ "question": "What was Bristol availability in 2018, in millions of square feet?",
111
+ "answer": "About 0.6 million square feet. Accept answers between 0.5 and 0.7 if they clearly refer to Bristol availability in 2018."
112
+ },
113
+ {
114
+ "question": "Did Bristol annual take-up rise or fall between 2016 and 2018?",
115
+ "answer": "It fell. The chart shows roughly 0.7 to 0.8 million square feet in 2016 and about 0.5 million square feet in 2018."
116
+ }
117
+ ]
118
+ }
119
+ ]
120
+ }
104
121
  ```
105
122
 
106
- That flow can:
123
+ Good first evals are small and practical:
107
124
 
108
- - choose an executor like Claude Code or Codex
109
- - optionally install global helper skills
110
- - attach the current folder as a knowledge base
111
- - compile the knowledge base immediately
125
+ - one exact number from a chart, table, or filing
126
+ - one short statement that should be true or false
127
+ - one simple comparison across years, files, or sections
112
128
 
113
- Then you can:
129
+ Then run:
114
130
 
115
131
  ```bash
116
- interf create interface
117
132
  interf compile
118
133
  interf benchmark
119
134
  ```
120
135
 
121
- ## Example layout
136
+ If the benchmark does not show an improvement over raw files, keep iterating or move to the experiment loop described below.
122
137
 
123
- ```text
124
- source-folder/
125
- ...your files...
126
- interf/
127
- workflows/
128
- benchmarks/
129
- {knowledge-base-name}/
130
- interf.json
131
- AGENTS.md
132
- CLAUDE.md
133
- home.md
134
- workflow/
135
- summaries/
136
- knowledge/
137
- interfaces/
138
- {interface-name}/
139
- interf.json
140
- compile-plan.md
141
- AGENTS.md
142
- CLAUDE.md
143
- home.md
144
- workflow/
145
- knowledge/
146
- briefs/
147
- summaries/
148
- ```
138
+ ## Compare Three Things
149
139
 
150
- ## Commands
140
+ Compare:
151
141
 
152
- - `interf init` = global setup first; if run inside a normal folder, it can also attach and compile a knowledge base there
153
- - `interf create` = chooser when type is omitted
154
- - `interf create knowledge-base` = attach current folder
155
- - `interf create interface` = create an interface for the current folder's knowledge base
156
- - `interf create workflow` = create a reusable workflow package
157
- - `interf compile` = compile the current knowledge base or interface
158
- - `interf benchmark` = compare compiled knowledge bases or interfaces with file-based evals
159
- - `interf doctor` = preflight local executor setup before a real compile
160
- - `interf status` = show deterministic health
161
- - `interf verify <check>` = internal deterministic referee for major workflow steps
162
- - `interf reset <scope>` = reset generated state while keeping source files
142
+ 1. the raw folder
143
+ 2. the workspace
144
+ 3. an interface for one specific job
163
145
 
164
- ## Workflows
146
+ `interf benchmark` is how you compare those on the same evals.
165
147
 
166
- A workflow is a package, not just a prompt.
148
+ That gives you one clear question:
167
149
 
168
- It has two layers:
150
+ - is the raw folder enough?
151
+ - does the workspace retrieve better?
152
+ - does a dedicated interface do better than both?
169
153
 
170
- - machine layer: `workflow.json`
171
- - human/agent layer: `workflow/` docs
154
+ ## What `interf compile` Actually Does
172
155
 
173
- Typical reusable workflow package:
156
+ `interf compile` runs a workflow over your folder.
174
157
 
175
- ```text
176
- interf/workflows/knowledge-base/<workflow-id>/
177
- workflow.json
178
- README.md
179
- create/
180
- SKILL.md
181
- compile/
182
- stages/
183
- <stage-id>/
184
- SKILL.md
185
- use/
186
- query/
187
- SKILL.md
188
- ```
158
+ That workflow is the compilation pipeline:
159
+
160
+ - read the files
161
+ - write processed notes and navigation files
162
+ - build the workspace your agent can use
163
+ - optionally build an interface for one specific job
164
+
165
+ The default workflow is built in. If you want a different method, you can define your own workflow package and benchmark it on the same folder.
166
+
167
+ ## Experiment Loop
168
+
169
+ Interf Knowledge Compiler also supports an experiment loop above compile + benchmark.
189
170
 
190
- Interf keeps the public command surface stable while letting workflows vary the internal stage pipeline. The engine still owns contract kinds, required artifacts, and state flow.
171
+ It runs controlled experiments against the same folder and the same evals. Each attempt reruns the compilation workflow, reruns the benchmark, and records what changed. It stops when:
191
172
 
192
- ## Benchmarks and evals
173
+ - the evals pass
174
+ - or the experiment budget is exhausted
193
175
 
194
- Interf is benchmark-first.
176
+ In practice, that means:
195
177
 
196
- You can:
178
+ - `retry_policy.max_attempts_per_profile` controls how many experiment attempts each compile profile gets
179
+ - stronger diagnostic profiles can be used only after the default ones fail
180
+ - the loop is still judged on the same eval truth from your folder
181
+ - failure summaries can be captured between attempts for diagnosis
197
182
 
198
- - build multiple knowledge bases over the same folder
199
- - compare workflows on the same source set
200
- - compare interfaces for the same business task
201
- - inspect proofs, outputs, and costs locally
183
+ Today that advanced path is configured through eval packs and explained in the deeper docs. The workflow is the part you change. The experiment loop is the controller that runs those experiments against the same evals with a fixed attempt budget.
202
184
 
203
- Reusable benchmark specs and saved runs live under:
185
+ Use the simple loop first. Use the experiment loop when you want to test workflow or profile changes against the same evals until one passes or the attempt budget runs out.
186
+
187
+ ## Use It With Your Agent
188
+
189
+ If you already work through Claude Code, Codex, OpenClaw, or Hermes, the agent can run this loop for you.
190
+
191
+ Paste something like this into Claude Code, Codex, OpenClaw, or Hermes:
204
192
 
205
193
  ```text
206
- source-folder/
207
- interf/
208
- benchmarks/
209
- knowledge-base/*.json
210
- interface/*.json
211
- runs/
194
+ Install @interf/compiler, run `interf init` in this folder, and use the local agent executor.
195
+
196
+ If `interf.config.json` is missing, draft evals for what must be true for this task and ask me to confirm them.
197
+
198
+ Then run `interf compile` and `interf benchmark`.
199
+
200
+ Tell me whether the processed workspace beat raw files, and only recommend it if it did.
212
201
  ```
213
202
 
214
- This is the trust loop: don't trust a repo because it says its knowledge base is better. Run the benchmark on your folder.
203
+ That is the basic loop:
215
204
 
216
- ## Builder docs
205
+ - the user or agent defines what must be true
206
+ - Interf prepares processed data for retrieval
207
+ - the benchmark shows whether that helped
217
208
 
218
- If you want to create your own workflows, start here:
209
+ ## What Gets Created
219
210
 
220
- 1. [`docs/workflow-spec.md`](./docs/workflow-spec.md)
221
- 2. [`docs/runtime-contract.md`](./docs/runtime-contract.md)
222
- 3. [`docs/architecture.md`](./docs/architecture.md)
211
+ After compile, Interf writes into `./interf/` beside your source files.
223
212
 
224
- ## Maintainer test loop
213
+ - `interf/<name>/` is the shared workspace over the folder
214
+ - `interf/<name>/interfaces/<name>/` is a task-specific workspace for one job
215
+ - `interf/benchmarks/runs/...` stores saved benchmark runs
225
216
 
226
- Smoke suite:
217
+ Inside those workspaces you will see things like:
227
218
 
228
- ```bash
229
- npm test
230
- ```
219
+ - summaries of source files
220
+ - navigation notes and entrypoints for agents
221
+ - task-specific outputs for one interface
222
+ - benchmark artifacts you can inspect later
231
223
 
232
- Real executor end-to-end:
224
+ In the CLI, the main Interf workspace is called a **knowledge base**. A task-specific workspace inside it is called an **interface**.
233
225
 
234
- ```bash
235
- npm run test:e2e
236
- npm run test:e2e:compare
237
- ```
226
+ ## When To Create An Interface
238
227
 
239
- Cached quick real-executor loop:
228
+ Start with one workspace.
240
229
 
241
- ```bash
242
- npm run test:e2e:quick
243
- npm run test:full
244
- ```
230
+ Create an interface when your agent needs outputs shaped for one specific job, for example:
231
+
232
+ - weekly briefing
233
+ - diligence on a deal room
234
+ - extracting chart values from research PDFs
235
+ - a focused research assistant for one question set
245
236
 
246
- Underlying acceptance commands:
237
+ If that workspace is enough for the job, you do not need an interface yet.
238
+
239
+ ## Custom Workflows
240
+
241
+ Interf ships with a default workflow.
242
+
243
+ If you want to change how compilation happens on your data, this is the part you customize:
247
244
 
248
245
  ```bash
249
- npm run test:acceptance-live
250
- npm run test:acceptance-compare
251
- npm run test:acceptance-cache:refresh
252
- npm run test:acceptance-quick:create-interface
253
- npm run test:acceptance-quick:query-interface
246
+ interf create workflow
247
+ interf verify workflow --path <path>
254
248
  ```
255
249
 
256
- The cached quick fixture lives under `.interf-test-cache/latest-quick/`.
257
- `npm test` is the fast smoke/integration suite. When you want a real agent/executor end-to-end run, use `npm run test:e2e` or `npm run test:e2e:quick`.
258
- `npm run test:full` is the convenient day-to-day command: smoke suite plus cached quick real-executor checks.
250
+ Then benchmark that workflow on the same folder and the same evals.
251
+
252
+ Workflow package docs live in [docs/workflow-spec.md](./docs/workflow-spec.md).
253
+
254
+ ## Core Commands
255
+
256
+ - `interf init` = choose your local executor and optionally attach the current folder
257
+ - `interf create knowledge-base` = create the shared processed workspace for this folder
258
+ - `interf create interface` = create a task-specific workspace on top
259
+ - `interf create workflow` = create a reusable local workflow package
260
+ - `interf compile` = build the current workspace
261
+ - `interf benchmark` = compare raw files vs processed workspaces on your evals
262
+ - `interf doctor` = check local executor setup
263
+ - `interf verify <check>` = run deterministic checks on major workflow steps
264
+ - `interf reset <scope>` = remove generated state while keeping source files
259
265
 
260
- ## Design choices
266
+ ## More Docs
261
267
 
262
- - filesystem-first, not service-first
263
- - workflow packages over hidden orchestration
264
- - contract-checked stages instead of prompt-only trust
265
- - benchmarkability as a core product feature
266
- - local control: your files stay on disk and run in your environment
268
+ - [docs/workflow-spec.md](./docs/workflow-spec.md) for custom workflow packages
269
+ - [docs/runtime-contract.md](./docs/runtime-contract.md) for the exact on-disk contract
270
+ - [docs/architecture.md](./docs/architecture.md) for the deeper system model
271
+ - [docs/eval-loop.md](./docs/eval-loop.md) for the advanced benchmark and experiment loop
267
272
 
268
- Interf is not trying to win by hiding complexity. It is trying to make the method visible, enforceable, and comparable.
273
+ Maintainers should use [CONTRIBUTING.md](./CONTRIBUTING.md) for test and release gates.
269
274
 
270
275
  ## License
271
276
 
272
- Code is licensed under Apache 2.0. The `Interf` name and branding are reserved; see [`TRADEMARKS.md`](./TRADEMARKS.md).
277
+ Code is licensed under Apache 2.0. The `Interf` name and branding are reserved; see [TRADEMARKS.md](./TRADEMARKS.md).
@@ -1 +1 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAkY3C,eAAO,MAAM,gBAAgB,EAAE,aAmD9B,CAAC"}
1
+ {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA2W3C,eAAO,MAAM,gBAAgB,EAAE,aA8D9B,CAAC"}