@interf/compiler 0.2.5 → 0.3.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 (276) hide show
  1. package/README.md +192 -187
  2. package/dist/bin.js +3 -3
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/compile.d.ts +1 -0
  5. package/dist/commands/compile.d.ts.map +1 -1
  6. package/dist/commands/compile.js +45 -138
  7. package/dist/commands/compile.js.map +1 -1
  8. package/dist/commands/create-workflow-wizard.d.ts +4 -25
  9. package/dist/commands/create-workflow-wizard.d.ts.map +1 -1
  10. package/dist/commands/create-workflow-wizard.js +46 -222
  11. package/dist/commands/create-workflow-wizard.js.map +1 -1
  12. package/dist/commands/create.d.ts +2 -11
  13. package/dist/commands/create.d.ts.map +1 -1
  14. package/dist/commands/create.js +78 -477
  15. package/dist/commands/create.js.map +1 -1
  16. package/dist/commands/default.d.ts.map +1 -1
  17. package/dist/commands/default.js +27 -43
  18. package/dist/commands/default.js.map +1 -1
  19. package/dist/commands/doctor.js +2 -2
  20. package/dist/commands/doctor.js.map +1 -1
  21. package/dist/commands/executor-flow.d.ts +9 -0
  22. package/dist/commands/executor-flow.d.ts.map +1 -0
  23. package/dist/commands/executor-flow.js +55 -0
  24. package/dist/commands/executor-flow.js.map +1 -0
  25. package/dist/commands/init.d.ts +1 -0
  26. package/dist/commands/init.d.ts.map +1 -1
  27. package/dist/commands/init.js +320 -321
  28. package/dist/commands/init.js.map +1 -1
  29. package/dist/commands/list.d.ts.map +1 -1
  30. package/dist/commands/list.js +12 -22
  31. package/dist/commands/list.js.map +1 -1
  32. package/dist/commands/reset.d.ts.map +1 -1
  33. package/dist/commands/reset.js +27 -124
  34. package/dist/commands/reset.js.map +1 -1
  35. package/dist/commands/source-config-wizard.d.ts +10 -11
  36. package/dist/commands/source-config-wizard.d.ts.map +1 -1
  37. package/dist/commands/source-config-wizard.js +100 -97
  38. package/dist/commands/source-config-wizard.js.map +1 -1
  39. package/dist/commands/status.d.ts.map +1 -1
  40. package/dist/commands/status.js +60 -56
  41. package/dist/commands/status.js.map +1 -1
  42. package/dist/commands/test-flow.d.ts +21 -0
  43. package/dist/commands/test-flow.d.ts.map +1 -0
  44. package/dist/commands/test-flow.js +106 -0
  45. package/dist/commands/test-flow.js.map +1 -0
  46. package/dist/commands/test.d.ts +4 -0
  47. package/dist/commands/test.d.ts.map +1 -0
  48. package/dist/commands/test.js +131 -0
  49. package/dist/commands/test.js.map +1 -0
  50. package/dist/commands/verify.d.ts.map +1 -1
  51. package/dist/commands/verify.js +63 -98
  52. package/dist/commands/verify.js.map +1 -1
  53. package/dist/commands/workspace-flow.d.ts +21 -0
  54. package/dist/commands/workspace-flow.d.ts.map +1 -0
  55. package/dist/commands/workspace-flow.js +90 -0
  56. package/dist/commands/workspace-flow.js.map +1 -0
  57. package/dist/index.d.ts +8 -8
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +5 -7
  60. package/dist/index.js.map +1 -1
  61. package/dist/lib/agent-constants.js +1 -1
  62. package/dist/lib/agent-constants.js.map +1 -1
  63. package/dist/lib/agent-detection.js +4 -4
  64. package/dist/lib/agent-detection.js.map +1 -1
  65. package/dist/lib/agent-skills.js +6 -6
  66. package/dist/lib/agent-skills.js.map +1 -1
  67. package/dist/lib/benchmark-execution.d.ts.map +1 -1
  68. package/dist/lib/benchmark-execution.js +32 -19
  69. package/dist/lib/benchmark-execution.js.map +1 -1
  70. package/dist/lib/benchmark-sandbox.d.ts +10 -0
  71. package/dist/lib/benchmark-sandbox.d.ts.map +1 -0
  72. package/dist/lib/benchmark-sandbox.js +75 -0
  73. package/dist/lib/benchmark-sandbox.js.map +1 -0
  74. package/dist/lib/benchmark-targets.d.ts +4 -4
  75. package/dist/lib/benchmark-targets.d.ts.map +1 -1
  76. package/dist/lib/benchmark-targets.js +20 -54
  77. package/dist/lib/benchmark-targets.js.map +1 -1
  78. package/dist/lib/benchmark-types.d.ts +2 -3
  79. package/dist/lib/benchmark-types.d.ts.map +1 -1
  80. package/dist/lib/benchmark.d.ts +1 -1
  81. package/dist/lib/benchmark.d.ts.map +1 -1
  82. package/dist/lib/benchmark.js +1 -1
  83. package/dist/lib/benchmark.js.map +1 -1
  84. package/dist/lib/config.d.ts +1 -2
  85. package/dist/lib/config.d.ts.map +1 -1
  86. package/dist/lib/config.js +2 -4
  87. package/dist/lib/config.js.map +1 -1
  88. package/dist/lib/discovery.d.ts +1 -1
  89. package/dist/lib/discovery.d.ts.map +1 -1
  90. package/dist/lib/discovery.js +7 -2
  91. package/dist/lib/discovery.js.map +1 -1
  92. package/dist/lib/eval-packs.d.ts +6 -52
  93. package/dist/lib/eval-packs.d.ts.map +1 -1
  94. package/dist/lib/eval-packs.js +11 -39
  95. package/dist/lib/eval-packs.js.map +1 -1
  96. package/dist/lib/interf-bootstrap.d.ts +3 -5
  97. package/dist/lib/interf-bootstrap.d.ts.map +1 -1
  98. package/dist/lib/interf-bootstrap.js +10 -57
  99. package/dist/lib/interf-bootstrap.js.map +1 -1
  100. package/dist/lib/interf-detect.d.ts +13 -11
  101. package/dist/lib/interf-detect.d.ts.map +1 -1
  102. package/dist/lib/interf-detect.js +59 -45
  103. package/dist/lib/interf-detect.js.map +1 -1
  104. package/dist/lib/interf-scaffold.d.ts +2 -5
  105. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  106. package/dist/lib/interf-scaffold.js +99 -235
  107. package/dist/lib/interf-scaffold.js.map +1 -1
  108. package/dist/lib/interf-workflow-package.d.ts +1 -2
  109. package/dist/lib/interf-workflow-package.d.ts.map +1 -1
  110. package/dist/lib/interf-workflow-package.js +99 -90
  111. package/dist/lib/interf-workflow-package.js.map +1 -1
  112. package/dist/lib/interf.d.ts +4 -5
  113. package/dist/lib/interf.d.ts.map +1 -1
  114. package/dist/lib/interf.js +3 -6
  115. package/dist/lib/interf.js.map +1 -1
  116. package/dist/lib/local-workflows.d.ts +9 -8
  117. package/dist/lib/local-workflows.d.ts.map +1 -1
  118. package/dist/lib/local-workflows.js +56 -92
  119. package/dist/lib/local-workflows.js.map +1 -1
  120. package/dist/lib/obsidian.d.ts +1 -3
  121. package/dist/lib/obsidian.d.ts.map +1 -1
  122. package/dist/lib/obsidian.js +10 -81
  123. package/dist/lib/obsidian.js.map +1 -1
  124. package/dist/lib/registry.d.ts +6 -17
  125. package/dist/lib/registry.d.ts.map +1 -1
  126. package/dist/lib/registry.js +36 -50
  127. package/dist/lib/registry.js.map +1 -1
  128. package/dist/lib/runtime-contracts.d.ts +4 -3
  129. package/dist/lib/runtime-contracts.d.ts.map +1 -1
  130. package/dist/lib/runtime-contracts.js +125 -9
  131. package/dist/lib/runtime-contracts.js.map +1 -1
  132. package/dist/lib/runtime-reconcile.d.ts +3 -5
  133. package/dist/lib/runtime-reconcile.d.ts.map +1 -1
  134. package/dist/lib/runtime-reconcile.js +70 -167
  135. package/dist/lib/runtime-reconcile.js.map +1 -1
  136. package/dist/lib/runtime-runs.d.ts.map +1 -1
  137. package/dist/lib/runtime-runs.js +61 -57
  138. package/dist/lib/runtime-runs.js.map +1 -1
  139. package/dist/lib/runtime-types.d.ts +16 -6
  140. package/dist/lib/runtime-types.d.ts.map +1 -1
  141. package/dist/lib/runtime.d.ts +2 -2
  142. package/dist/lib/runtime.d.ts.map +1 -1
  143. package/dist/lib/runtime.js +1 -1
  144. package/dist/lib/runtime.js.map +1 -1
  145. package/dist/lib/schema.d.ts +69 -311
  146. package/dist/lib/schema.d.ts.map +1 -1
  147. package/dist/lib/schema.js +49 -210
  148. package/dist/lib/schema.js.map +1 -1
  149. package/dist/lib/source-config.d.ts +8 -7
  150. package/dist/lib/source-config.d.ts.map +1 -1
  151. package/dist/lib/source-config.js +59 -63
  152. package/dist/lib/source-config.js.map +1 -1
  153. package/dist/lib/state-artifacts.d.ts +5 -11
  154. package/dist/lib/state-artifacts.d.ts.map +1 -1
  155. package/dist/lib/state-artifacts.js +8 -18
  156. package/dist/lib/state-artifacts.js.map +1 -1
  157. package/dist/lib/state-health.d.ts +4 -8
  158. package/dist/lib/state-health.d.ts.map +1 -1
  159. package/dist/lib/state-health.js +52 -233
  160. package/dist/lib/state-health.js.map +1 -1
  161. package/dist/lib/state-io.d.ts +7 -12
  162. package/dist/lib/state-io.d.ts.map +1 -1
  163. package/dist/lib/state-io.js +32 -93
  164. package/dist/lib/state-io.js.map +1 -1
  165. package/dist/lib/state-view.d.ts +4 -6
  166. package/dist/lib/state-view.d.ts.map +1 -1
  167. package/dist/lib/state-view.js +62 -101
  168. package/dist/lib/state-view.js.map +1 -1
  169. package/dist/lib/state.d.ts +5 -5
  170. package/dist/lib/state.d.ts.map +1 -1
  171. package/dist/lib/state.js +4 -4
  172. package/dist/lib/state.js.map +1 -1
  173. package/dist/lib/summarize-plan.d.ts +2 -2
  174. package/dist/lib/summarize-plan.d.ts.map +1 -1
  175. package/dist/lib/summarize-plan.js +13 -13
  176. package/dist/lib/summarize-plan.js.map +1 -1
  177. package/dist/lib/{validate-kb.d.ts → validate-workspace.d.ts} +49 -8
  178. package/dist/lib/validate-workspace.d.ts.map +1 -0
  179. package/dist/lib/validate-workspace.js +398 -0
  180. package/dist/lib/validate-workspace.js.map +1 -0
  181. package/dist/lib/validate.d.ts +5 -7
  182. package/dist/lib/validate.d.ts.map +1 -1
  183. package/dist/lib/validate.js +22 -20
  184. package/dist/lib/validate.js.map +1 -1
  185. package/dist/lib/workflow-definitions.d.ts +14 -50
  186. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  187. package/dist/lib/workflow-definitions.js +100 -353
  188. package/dist/lib/workflow-definitions.js.map +1 -1
  189. package/dist/lib/workflow-helpers.d.ts +3 -4
  190. package/dist/lib/workflow-helpers.d.ts.map +1 -1
  191. package/dist/lib/workflow-helpers.js +17 -49
  192. package/dist/lib/workflow-helpers.js.map +1 -1
  193. package/dist/lib/workflow-stage-runner.d.ts +1 -2
  194. package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
  195. package/dist/lib/workflow-stage-runner.js +4 -6
  196. package/dist/lib/workflow-stage-runner.js.map +1 -1
  197. package/dist/lib/workflow-starter-docs.d.ts +3 -5
  198. package/dist/lib/workflow-starter-docs.d.ts.map +1 -1
  199. package/dist/lib/workflow-starter-docs.js +2 -17
  200. package/dist/lib/workflow-starter-docs.js.map +1 -1
  201. package/dist/lib/workflows.d.ts +9 -14
  202. package/dist/lib/workflows.d.ts.map +1 -1
  203. package/dist/lib/workflows.js +15 -30
  204. package/dist/lib/workflows.js.map +1 -1
  205. package/dist/lib/workspace-compile.d.ts +51 -0
  206. package/dist/lib/workspace-compile.d.ts.map +1 -0
  207. package/dist/lib/workspace-compile.js +397 -0
  208. package/dist/lib/workspace-compile.js.map +1 -0
  209. package/package.json +9 -9
  210. package/skills/benchmark/SKILL.md +20 -27
  211. package/skills/workflow/create/SKILL.md +10 -14
  212. package/skills/workspace/shape/SKILL.md +15 -0
  213. package/skills/workspace/structure/SKILL.md +15 -0
  214. package/skills/workspace/summarize/SKILL.md +15 -0
  215. package/templates/workspace/README.md +23 -0
  216. package/templates/workspace/interfignore +2 -0
  217. package/dist/commands/benchmark.d.ts +0 -3
  218. package/dist/commands/benchmark.d.ts.map +0 -1
  219. package/dist/commands/benchmark.js +0 -374
  220. package/dist/commands/benchmark.js.map +0 -1
  221. package/dist/lib/bundled-templates.d.ts +0 -5
  222. package/dist/lib/bundled-templates.d.ts.map +0 -1
  223. package/dist/lib/bundled-templates.js +0 -23
  224. package/dist/lib/bundled-templates.js.map +0 -1
  225. package/dist/lib/interf-compile-plan.d.ts +0 -12
  226. package/dist/lib/interf-compile-plan.d.ts.map +0 -1
  227. package/dist/lib/interf-compile-plan.js +0 -143
  228. package/dist/lib/interf-compile-plan.js.map +0 -1
  229. package/dist/lib/validate-interface.d.ts +0 -79
  230. package/dist/lib/validate-interface.d.ts.map +0 -1
  231. package/dist/lib/validate-interface.js +0 -535
  232. package/dist/lib/validate-interface.js.map +0 -1
  233. package/dist/lib/validate-kb.d.ts.map +0 -1
  234. package/dist/lib/validate-kb.js +0 -252
  235. package/dist/lib/validate-kb.js.map +0 -1
  236. package/dist/lib/workflows-interface-contracts.d.ts +0 -24
  237. package/dist/lib/workflows-interface-contracts.d.ts.map +0 -1
  238. package/dist/lib/workflows-interface-contracts.js +0 -304
  239. package/dist/lib/workflows-interface-contracts.js.map +0 -1
  240. package/dist/lib/workflows-interface.d.ts +0 -72
  241. package/dist/lib/workflows-interface.d.ts.map +0 -1
  242. package/dist/lib/workflows-interface.js +0 -377
  243. package/dist/lib/workflows-interface.js.map +0 -1
  244. package/dist/lib/workflows-kb.d.ts +0 -50
  245. package/dist/lib/workflows-kb.d.ts.map +0 -1
  246. package/dist/lib/workflows-kb.js +0 -306
  247. package/dist/lib/workflows-kb.js.map +0 -1
  248. package/skills/interface/analyze/SKILL.md +0 -191
  249. package/skills/interface/compile/SKILL.md +0 -152
  250. package/skills/interface/compile/references/output-format.md +0 -48
  251. package/skills/interface/create/SKILL.md +0 -87
  252. package/skills/interface/create/references/compile-plan-format.md +0 -109
  253. package/skills/interface/create/references/workflows.md +0 -35
  254. package/skills/interface/query/SKILL.md +0 -48
  255. package/skills/interface/retrieve/SKILL.md +0 -133
  256. package/skills/knowledge-base/compile/SKILL.md +0 -196
  257. package/skills/knowledge-base/compile/references/output-format.md +0 -48
  258. package/skills/knowledge-base/compile/references/stage-claims.md +0 -60
  259. package/skills/knowledge-base/compile/references/stage-entities.md +0 -46
  260. package/skills/knowledge-base/query/SKILL.md +0 -45
  261. package/skills/knowledge-base/summarize/SKILL.md +0 -152
  262. package/templates/interface/README.md +0 -159
  263. package/templates/interface/interfaces.md +0 -102
  264. package/templates/knowledge-base/README.md +0 -137
  265. package/templates/knowledge-base/interfignore +0 -19
  266. package/templates/knowledge-base/registry.md +0 -118
  267. package/templates/workflow-package/README.md +0 -16
  268. package/templates/workflow-package/create/SKILL.md +0 -8
  269. package/templates/workflow-package/interface-query/SKILL.md +0 -29
  270. package/templates/workflow-package/interface-stage/SKILL.md +0 -13
  271. package/templates/workflow-package/knowledge-base-query/SKILL.md +0 -36
  272. package/templates/workflow-package/knowledge-base-stage/SKILL.md +0 -13
  273. package/templates/workflow-starters/interface/interf/README.md +0 -13
  274. package/templates/workflow-starters/interface/interf/create/SKILL.md +0 -15
  275. package/templates/workflow-starters/knowledge-base/interf/README.md +0 -13
  276. package/templates/workflow-starters/knowledge-base/karpathy/README.md +0 -13
@@ -0,0 +1,397 @@
1
+ import { mkdirSync, writeFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ import { countFilesRecursive } from "./filesystem.js";
4
+ import { readInterfConfig, refreshWorkspaceBootstrapGuidance, resolveSourceFolderPath, } from "./interf.js";
5
+ import { findSourceWorkspaceConfig, loadSourceFolderConfig } from "./source-config.js";
6
+ import { buildSummarizePlan, writeSummarizePlan } from "./summarize-plan.js";
7
+ import { reconcileWorkspaceShapeRun, reconcileWorkspaceStructureRun, reconcileWorkspaceSummarizeRun, } from "./runtime-reconcile.js";
8
+ import { loadState, refreshWorkspaceArtifacts, } from "./state.js";
9
+ import { buildWorkspaceShapeContract, buildWorkspaceStructureContract, buildWorkspaceSummarizeContract, validateStageContractAcceptance, } from "./runtime.js";
10
+ import { readJsonFileUnchecked } from "./parse.js";
11
+ import { formatWorkspaceWorkflowStageStep, getWorkflowStagePolicyNotes, getWorkspaceWorkflow, resolveWorkspaceWorkflowFromConfig, } from "./workflow-definitions.js";
12
+ import { validateWorkspaceCompile, validateWorkspaceStructure, validateWorkspaceSummarize, } from "./validate.js";
13
+ import { buildLocalSkillContractExtension, buildStageInstructions, bundledSkillForContractType, reportBlankLine, reportLine, reportValidationFailure, resolveStageAcceptance, workflowCompileStageDirectory, } from "./workflow-helpers.js";
14
+ import { executeValidatedStage, executeValidatedSummarizeStage, findStageByContractType, } from "./workflow-stage-runner.js";
15
+ const SHAPE_INPUT_RELATIVE_PATH = ".interf/shape-input.json";
16
+ export function resolveWorkspaceContext(workspacePath) {
17
+ const config = readInterfConfig(workspacePath);
18
+ const workflowId = resolveWorkspaceWorkflowFromConfig(config);
19
+ return {
20
+ workspaceName: config?.name ?? "workspace",
21
+ sourcePath: resolveSourceFolderPath(workspacePath, config),
22
+ workflowId,
23
+ };
24
+ }
25
+ export function workspaceExecutionStages(workflowId, workspacePath) {
26
+ return getWorkspaceWorkflow(workflowId, { sourcePath: resolveSourceFolderPath(workspacePath) })
27
+ .stages;
28
+ }
29
+ function readWorkspaceInventoryTotal(workspacePath) {
30
+ const inventory = readJsonFileUnchecked(join(workspacePath, ".interf", "inventory.json"), "workspace inventory");
31
+ if (!inventory)
32
+ return 0;
33
+ if (typeof inventory.total === "number")
34
+ return inventory.total;
35
+ if (typeof inventory.summary_total === "number")
36
+ return inventory.summary_total;
37
+ if (Array.isArray(inventory.entries))
38
+ return inventory.entries.length;
39
+ if (Array.isArray(inventory.summaries))
40
+ return inventory.summaries.length;
41
+ if (Array.isArray(inventory.files))
42
+ return inventory.files.length;
43
+ if (Array.isArray(inventory.items))
44
+ return inventory.items.length;
45
+ return 0;
46
+ }
47
+ function isWorkspaceSummarizeStageComplete(workspacePath, expectedSummaryTotal) {
48
+ const validation = validateWorkspaceSummarize(workspacePath);
49
+ const acceptance = validateStageContractAcceptance(workspacePath);
50
+ const state = loadState(workspacePath);
51
+ const inventoryTotal = readWorkspaceInventoryTotal(workspacePath);
52
+ return Boolean(validation.ok &&
53
+ acceptance.ok &&
54
+ state?.inventory_complete === true &&
55
+ typeof state.last_summarize === "string" &&
56
+ state.last_summarize.length > 0 &&
57
+ (state.summarized ?? 0) >= expectedSummaryTotal &&
58
+ inventoryTotal >= expectedSummaryTotal);
59
+ }
60
+ function isWorkspaceStructureStageComplete(workspacePath, summaryCount) {
61
+ const validation = validateWorkspaceStructure(workspacePath);
62
+ const acceptance = validateStageContractAcceptance(workspacePath);
63
+ const state = loadState(workspacePath);
64
+ return Boolean(validation.ok &&
65
+ acceptance.ok &&
66
+ state?.inventory_complete === true &&
67
+ typeof state.last_structure === "string" &&
68
+ state.last_structure.length > 0 &&
69
+ (state.structured ?? 0) >= summaryCount);
70
+ }
71
+ function isWorkspaceShapeStageComplete(workspacePath, summaryCount) {
72
+ const validation = validateWorkspaceCompile(workspacePath);
73
+ const acceptance = validateStageContractAcceptance(workspacePath);
74
+ const state = loadState(workspacePath);
75
+ return Boolean(validation.ok &&
76
+ acceptance.ok &&
77
+ state?.inventory_complete === true &&
78
+ typeof state.last_shape === "string" &&
79
+ state.last_shape.length > 0 &&
80
+ (state.shaped ?? state.compiled ?? 0) >= summaryCount &&
81
+ (state.compiled ?? 0) >= summaryCount);
82
+ }
83
+ function writeWorkspaceShapeInput(workspacePath, workspaceName, sourcePath) {
84
+ const workspaceConfig = readInterfConfig(workspacePath);
85
+ const sourceConfig = loadSourceFolderConfig(sourcePath);
86
+ const sourceWorkspace = findSourceWorkspaceConfig(sourceConfig, workspaceName);
87
+ const questions = (sourceWorkspace?.checks ?? []).map((check, index) => ({
88
+ id: check.id ?? `check-${index + 1}`,
89
+ question: check.question,
90
+ }));
91
+ mkdirSync(join(workspacePath, ".interf"), { recursive: true });
92
+ writeFileSync(join(workspacePath, SHAPE_INPUT_RELATIVE_PATH), JSON.stringify({
93
+ kind: "workspace-shape-input",
94
+ version: 1,
95
+ generated_at: new Date().toISOString(),
96
+ target_name: workspaceName,
97
+ about: sourceWorkspace?.about ?? workspaceConfig?.about ?? null,
98
+ question_count: questions.length,
99
+ questions,
100
+ }, null, 2) + "\n");
101
+ return SHAPE_INPUT_RELATIVE_PATH;
102
+ }
103
+ export function buildWorkspaceCompileContract(workspacePath, workflowId, summaryCount, instructions, stageId = "shape", stageSkillDir = "shape", shapeInputPath = SHAPE_INPUT_RELATIVE_PATH) {
104
+ const config = readInterfConfig(workspacePath);
105
+ const sourcePath = resolveSourceFolderPath(workspacePath, config);
106
+ const acceptance = resolveStageAcceptance(workflowId, stageId, sourcePath);
107
+ const localSkills = buildLocalSkillContractExtension(workspacePath, [workflowCompileStageDirectory(stageSkillDir)], "Use them to refine workspace shaping, navigation, and retrieval routes.");
108
+ return buildWorkspaceShapeContract({
109
+ workspaceName: config?.name ?? "workspace",
110
+ summaryCount,
111
+ shapeInputPath,
112
+ workflowNotes: getWorkflowStagePolicyNotes(workflowId, stageId, sourcePath),
113
+ localSkillDocs: localSkills.reads,
114
+ instructions,
115
+ acceptance,
116
+ });
117
+ }
118
+ function buildWorkspaceStructureStageContract(workspacePath, workflowId, summaryCount, instructions, stageId = "structure", stageSkillDir = "structure") {
119
+ const config = readInterfConfig(workspacePath);
120
+ const sourcePath = resolveSourceFolderPath(workspacePath, config);
121
+ const acceptance = resolveStageAcceptance(workflowId, stageId, sourcePath);
122
+ const localSkills = buildLocalSkillContractExtension(workspacePath, [workflowCompileStageDirectory(stageSkillDir)], "Use them to refine workspace structure, taxonomy, ontology, entity extraction, and claim extraction.");
123
+ return buildWorkspaceStructureContract({
124
+ workspaceName: config?.name ?? "workspace",
125
+ summaryCount,
126
+ workflowNotes: getWorkflowStagePolicyNotes(workflowId, stageId, sourcePath),
127
+ localSkillDocs: localSkills.reads,
128
+ instructions,
129
+ acceptance,
130
+ });
131
+ }
132
+ export async function runWorkspaceSummarize(options) {
133
+ const context = resolveWorkspaceContext(options.workspacePath);
134
+ const sourcePath = options.sourcePath ?? context.sourcePath;
135
+ const workflowId = context.workflowId;
136
+ const stageDefinition = options.stageDefinition ?? findStageByContractType(workspaceExecutionStages(workflowId, options.workspacePath), "workspace-file-evidence");
137
+ const stageStatusLabel = stageDefinition.label.toLowerCase();
138
+ const plan = buildSummarizePlan(sourcePath, options.workspacePath, options.fullPass ? "all" : "pending");
139
+ const expectedSummaryTotal = plan.summaryCount + plan.targetCount;
140
+ const planPath = writeSummarizePlan(options.workspacePath, plan);
141
+ const localSkills = buildLocalSkillContractExtension(options.workspacePath, [workflowCompileStageDirectory(stageDefinition.skillDir)], "Use them to refine summary structure, evidence grouping, and summarization heuristics.");
142
+ const instructions = buildStageInstructions(bundledSkillForContractType(stageDefinition.contractType), localSkills);
143
+ if (options.reportSummary !== false) {
144
+ reportLine(options.reporter, `${plan.sourceCount} source files, ${plan.summaryCount} summarized, ${plan.targetCount} to summarize`);
145
+ }
146
+ if (plan.targetCount === 0) {
147
+ refreshWorkspaceArtifacts(options.workspacePath, { ensureViewSpec: true });
148
+ const validation = validateWorkspaceSummarize(options.workspacePath);
149
+ if (options.reportStep !== false) {
150
+ reportLine(options.reporter, `${formatWorkspaceWorkflowStageStep(workflowId, stageDefinition.id, { sourcePath })} skipped (no work required)`);
151
+ }
152
+ if (!validation.ok) {
153
+ reportValidationFailure(options.reporter, validation.summary);
154
+ }
155
+ return {
156
+ ok: validation.ok,
157
+ code: validation.ok ? 0 : 1,
158
+ skipped: true,
159
+ plan,
160
+ };
161
+ }
162
+ if (options.reportStep !== false) {
163
+ reportLine(options.reporter, `${formatWorkspaceWorkflowStageStep(workflowId, stageDefinition.id, { sourcePath })} (${plan.targetCount} files)`);
164
+ }
165
+ const stageResult = await executeValidatedSummarizeStage({
166
+ executor: options.executor,
167
+ workspacePath: options.workspacePath,
168
+ targetName: context.workspaceName,
169
+ workflow: workflowId,
170
+ workflowSourcePath: sourcePath,
171
+ stageDefinition,
172
+ instructions,
173
+ summary: `Preparing ${stageDefinition.label.toLowerCase()} for ${plan.targetCount} source files.`,
174
+ contract: buildWorkspaceSummarizeContract({
175
+ workspaceName: context.workspaceName,
176
+ targetCount: plan.targetCount,
177
+ expectedSummaryTotal,
178
+ sourcePath,
179
+ planPath,
180
+ workflowNotes: getWorkflowStagePolicyNotes(workflowId, stageDefinition.id, sourcePath),
181
+ localSkillDocs: localSkills.reads,
182
+ instructions,
183
+ acceptance: resolveStageAcceptance(workflowId, stageDefinition.id, sourcePath),
184
+ }),
185
+ statusLines: [
186
+ `Emit exactly one startup line: STATUS: loaded ${stageStatusLabel} plan ${plan.targetCount} files.`,
187
+ "The CLI owns live file-count progress. Do not emit per-file progress.",
188
+ "If `.interf/inventory.json` already exists, overwrite it completely instead of patching prior contents.",
189
+ "Emit STATUS: batch committed after a completed batch has been merged into summaries/ and inventory.",
190
+ `Emit DONE: ${stageStatusLabel} complete ${plan.targetCount}/${plan.targetCount} when finished.`,
191
+ ],
192
+ reporter: options.reporter,
193
+ completionCheck: () => isWorkspaceSummarizeStageComplete(options.workspacePath, expectedSummaryTotal),
194
+ reconcile: () => reconcileWorkspaceSummarizeRun(options.workspacePath, expectedSummaryTotal),
195
+ refreshArtifacts: () => refreshWorkspaceArtifacts(options.workspacePath, { ensureViewSpec: true }),
196
+ validate: () => validateWorkspaceSummarize(options.workspacePath),
197
+ startingSummaryCount: plan.summaryCount,
198
+ targetCount: plan.targetCount,
199
+ });
200
+ if (!stageResult.ok) {
201
+ return {
202
+ ok: false,
203
+ code: stageResult.code,
204
+ skipped: false,
205
+ plan,
206
+ };
207
+ }
208
+ return {
209
+ ok: true,
210
+ code: 0,
211
+ skipped: false,
212
+ plan,
213
+ };
214
+ }
215
+ async function runWorkspaceStructure(options) {
216
+ const workspaceConfig = readInterfConfig(options.workspacePath);
217
+ const workspaceName = workspaceConfig?.name ?? "workspace";
218
+ const workflowId = resolveWorkspaceWorkflowFromConfig(workspaceConfig);
219
+ const sourcePath = options.sourcePath ?? resolveSourceFolderPath(options.workspacePath, workspaceConfig);
220
+ const stageDefinition = options.stageDefinition ?? findStageByContractType(workspaceExecutionStages(workflowId, options.workspacePath), "workspace-knowledge-structure");
221
+ const stageStatusLabel = stageDefinition.label.toLowerCase();
222
+ const summaryCount = countFilesRecursive(join(options.workspacePath, "summaries"));
223
+ const localSkills = buildLocalSkillContractExtension(options.workspacePath, [workflowCompileStageDirectory(stageDefinition.skillDir)], "Use them to refine workspace structure, taxonomy, ontology, entity extraction, and claim extraction.");
224
+ const instructions = buildStageInstructions(bundledSkillForContractType(stageDefinition.contractType), localSkills);
225
+ if (options.reportStep !== false) {
226
+ reportBlankLine(options.reporter);
227
+ reportLine(options.reporter, `${formatWorkspaceWorkflowStageStep(workflowId, stageDefinition.id, { sourcePath })} (building knowledge structure)`);
228
+ }
229
+ return executeValidatedStage({
230
+ executor: options.executor,
231
+ workspacePath: options.workspacePath,
232
+ targetName: workspaceName,
233
+ workflow: workflowId,
234
+ workflowSourcePath: sourcePath,
235
+ stageDefinition,
236
+ instructions,
237
+ summary: `Preparing ${stageDefinition.label.toLowerCase()} for ${summaryCount} summary files.`,
238
+ contract: buildWorkspaceStructureStageContract(options.workspacePath, workflowId, summaryCount, instructions, stageDefinition.id, stageDefinition.skillDir),
239
+ statusLines: [
240
+ `Emit exactly one startup line: STATUS: loaded ${stageStatusLabel} plan ${summaryCount} summary files.`,
241
+ `Emit STATUS: inventoried summaries ${summaryCount}/${summaryCount} after the inventory pass completes.`,
242
+ `Emit STATUS: structured knowledge layer after entities, claims, and indexes are updated.`,
243
+ `Emit DONE: ${stageStatusLabel} complete ${summaryCount}/${summaryCount} when the required outputs are on disk.`,
244
+ ],
245
+ reporter: options.reporter,
246
+ completionCheck: () => isWorkspaceStructureStageComplete(options.workspacePath, summaryCount),
247
+ reconcile: () => reconcileWorkspaceStructureRun(options.workspacePath),
248
+ refreshArtifacts: () => refreshWorkspaceArtifacts(options.workspacePath, { ensureViewSpec: true }),
249
+ validate: () => validateWorkspaceStructure(options.workspacePath),
250
+ });
251
+ }
252
+ async function runWorkspaceShape(options) {
253
+ const workspaceConfig = readInterfConfig(options.workspacePath);
254
+ const workspaceName = workspaceConfig?.name ?? "workspace";
255
+ const workflowId = resolveWorkspaceWorkflowFromConfig(workspaceConfig);
256
+ const sourcePath = options.sourcePath ?? resolveSourceFolderPath(options.workspacePath, workspaceConfig);
257
+ const stageDefinition = options.stageDefinition ?? findStageByContractType(workspaceExecutionStages(workflowId, options.workspacePath), "workspace-query-shape");
258
+ const stageStatusLabel = stageDefinition.label.toLowerCase();
259
+ const summaryCount = countFilesRecursive(join(options.workspacePath, "summaries"));
260
+ const localSkills = buildLocalSkillContractExtension(options.workspacePath, [workflowCompileStageDirectory(stageDefinition.skillDir)], "Use them to refine final workspace shaping, navigation, and retrieval routes.");
261
+ const instructions = buildStageInstructions(bundledSkillForContractType(stageDefinition.contractType), localSkills);
262
+ const shapeInputPath = writeWorkspaceShapeInput(options.workspacePath, workspaceName, sourcePath);
263
+ if (options.reportStep !== false) {
264
+ reportBlankLine(options.reporter);
265
+ reportLine(options.reporter, `${formatWorkspaceWorkflowStageStep(workflowId, stageDefinition.id, { sourcePath })} (shaping workspace surface)`);
266
+ }
267
+ return executeValidatedStage({
268
+ executor: options.executor,
269
+ workspacePath: options.workspacePath,
270
+ targetName: workspaceName,
271
+ workflow: workflowId,
272
+ workflowSourcePath: sourcePath,
273
+ stageDefinition,
274
+ instructions,
275
+ summary: `Preparing ${stageDefinition.label.toLowerCase()} for ${summaryCount} summary files.`,
276
+ contract: buildWorkspaceCompileContract(options.workspacePath, workflowId, summaryCount, instructions, stageDefinition.id, stageDefinition.skillDir, shapeInputPath),
277
+ statusLines: [
278
+ `Emit exactly one startup line: STATUS: loaded ${stageStatusLabel} plan ${summaryCount} summary files.`,
279
+ `Emit STATUS: read shaping input after ${shapeInputPath} has been loaded.`,
280
+ "Emit STATUS: shaped workspace surface after home.md and any focused indexes are updated.",
281
+ `Emit DONE: ${stageStatusLabel} complete ${summaryCount}/${summaryCount} when the required outputs are on disk.`,
282
+ ],
283
+ reporter: options.reporter,
284
+ completionCheck: () => isWorkspaceShapeStageComplete(options.workspacePath, summaryCount),
285
+ reconcile: () => reconcileWorkspaceShapeRun(options.workspacePath),
286
+ refreshArtifacts: () => refreshWorkspaceArtifacts(options.workspacePath, { ensureViewSpec: true }),
287
+ validate: () => validateWorkspaceCompile(options.workspacePath),
288
+ });
289
+ }
290
+ async function runWorkspaceCompileStages(options) {
291
+ const workspaceConfig = readInterfConfig(options.workspacePath);
292
+ const workflowId = resolveWorkspaceWorkflowFromConfig(workspaceConfig);
293
+ const sourcePath = options.sourcePath ?? resolveSourceFolderPath(options.workspacePath, workspaceConfig);
294
+ const stages = workspaceExecutionStages(workflowId, options.workspacePath).filter((stage) => stage.contractType !== "workspace-file-evidence");
295
+ let structure = null;
296
+ let shape = null;
297
+ for (const stageDefinition of stages) {
298
+ const result = stageDefinition.contractType === "workspace-knowledge-structure"
299
+ ? await runWorkspaceStructure({
300
+ executor: options.executor,
301
+ workspacePath: options.workspacePath,
302
+ sourcePath,
303
+ reporter: options.reporter,
304
+ reportStep: options.reportStep,
305
+ stageDefinition,
306
+ })
307
+ : await runWorkspaceShape({
308
+ executor: options.executor,
309
+ workspacePath: options.workspacePath,
310
+ sourcePath,
311
+ reporter: options.reporter,
312
+ reportStep: options.reportStep,
313
+ stageDefinition,
314
+ });
315
+ if (stageDefinition.contractType === "workspace-knowledge-structure") {
316
+ structure = result;
317
+ }
318
+ else if (stageDefinition.contractType === "workspace-query-shape") {
319
+ shape = result;
320
+ }
321
+ if (!result.ok) {
322
+ return {
323
+ ok: false,
324
+ structure,
325
+ shape,
326
+ failedStage: stageDefinition.id,
327
+ };
328
+ }
329
+ }
330
+ return {
331
+ ok: true,
332
+ structure,
333
+ shape,
334
+ failedStage: null,
335
+ };
336
+ }
337
+ export async function runWorkspaceCompile(options) {
338
+ const result = await runWorkspaceCompileStages(options);
339
+ if (!result.ok) {
340
+ return result.shape ?? result.structure ?? { ok: false, code: 1 };
341
+ }
342
+ return result.shape ?? result.structure ?? { ok: true, code: 0 };
343
+ }
344
+ export async function compileWorkspace(options) {
345
+ refreshWorkspaceBootstrapGuidance(options.workspacePath);
346
+ const { sourcePath, workflowId } = resolveWorkspaceContext(options.workspacePath);
347
+ const stages = workspaceExecutionStages(workflowId, options.workspacePath);
348
+ let summarize = {
349
+ ok: true,
350
+ code: 0,
351
+ skipped: true,
352
+ plan: buildSummarizePlan(sourcePath, options.workspacePath),
353
+ };
354
+ let evidencePassCount = 0;
355
+ for (const stageDefinition of stages) {
356
+ if (stageDefinition.contractType !== "workspace-file-evidence") {
357
+ break;
358
+ }
359
+ summarize = await runWorkspaceSummarize({
360
+ executor: options.executor,
361
+ workspacePath: options.workspacePath,
362
+ sourcePath,
363
+ reporter: options.reporter,
364
+ reportSummary: evidencePassCount === 0,
365
+ reportStep: true,
366
+ stageDefinition,
367
+ fullPass: evidencePassCount > 0,
368
+ });
369
+ evidencePassCount += 1;
370
+ if (!summarize.ok) {
371
+ return {
372
+ ok: false,
373
+ summarize,
374
+ structure: null,
375
+ shape: null,
376
+ compile: null,
377
+ failedStage: stageDefinition.id,
378
+ };
379
+ }
380
+ }
381
+ const compileStages = await runWorkspaceCompileStages({
382
+ executor: options.executor,
383
+ workspacePath: options.workspacePath,
384
+ sourcePath,
385
+ reporter: options.reporter,
386
+ reportStep: true,
387
+ });
388
+ return {
389
+ ok: compileStages.ok,
390
+ summarize,
391
+ structure: compileStages.structure,
392
+ shape: compileStages.shape,
393
+ compile: compileStages.shape,
394
+ failedStage: compileStages.failedStage,
395
+ };
396
+ }
397
+ //# sourceMappingURL=workspace-compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workspace-compile.js","sourceRoot":"","sources":["../../src/lib/workspace-compile.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@interf/compiler",
3
- "version": "0.2.5",
4
- "description": "Knowledge compiler that prepares local folders for agent use and lets you test the result on your evals.",
3
+ "version": "0.3.1",
4
+ "description": "Open-source knowledge compiler that measures local-agent accuracy on your files and builds compiled workspaces on top of them.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "interf": "dist/bin.js"
@@ -26,9 +26,9 @@
26
26
  "test:e2e": "npm run test:acceptance-live",
27
27
  "test:e2e:claude": "npm run test:acceptance-live -- --agent claude-code",
28
28
  "test:e2e:codex": "npm run test:acceptance-live -- --agent codex",
29
- "test:e2e:quick": "npm run test:acceptance-quick:create-interface && npm run test:acceptance-quick:query-interface",
30
- "test:e2e:quick:claude": "npm run test:acceptance-quick:create-interface -- --agent claude-code && npm run test:acceptance-quick:query-interface -- --agent claude-code",
31
- "test:e2e:quick:codex": "npm run test:acceptance-quick:create-interface -- --agent codex && npm run test:acceptance-quick:query-interface -- --agent codex",
29
+ "test:e2e:quick": "npm run test:acceptance-quick:create-workspace && npm run test:acceptance-quick:query-workspace",
30
+ "test:e2e:quick:claude": "npm run test:acceptance-quick:create-workspace -- --agent claude-code && npm run test:acceptance-quick:query-workspace -- --agent claude-code",
31
+ "test:e2e:quick:codex": "npm run test:acceptance-quick:create-workspace -- --agent codex && npm run test:acceptance-quick:query-workspace -- --agent codex",
32
32
  "test:e2e:quick:matrix": "npm run test:e2e:quick:claude && npm run test:e2e:quick:codex",
33
33
  "test:e2e:compare": "npm run test:acceptance-compare",
34
34
  "test:e2e:release:claude": "npm run test:acceptance-live -- --agent claude-code",
@@ -37,11 +37,11 @@
37
37
  "test:release:evals": "npm run eval:pack -- --pack internal/eval-packs/cbre-chart-sanity.json",
38
38
  "test:release": "npm test && npm run test:e2e:release:claude && npm run test:e2e:release:codex && npm run test:release:evals",
39
39
  "test:acceptance-live": "npm run build && node scripts/acceptance-live.mjs",
40
- "test:acceptance-compare": "npm run build && node scripts/acceptance-live.mjs --compare",
41
- "test:acceptance-matrix": "npm run build && node scripts/acceptance-live.mjs --full-matrix",
40
+ "test:acceptance-compare": "npm run build && node scripts/acceptance-live.mjs --with-benchmark",
41
+ "test:acceptance-matrix": "npm run build && node scripts/acceptance-live.mjs --with-benchmark",
42
42
  "test:acceptance-cache:refresh": "npm run build && node scripts/acceptance-live.mjs --output-root .interf-test-cache/latest-quick",
43
- "test:acceptance-quick:create-interface": "npm run build && node scripts/acceptance-targeted.mjs create-interface",
44
- "test:acceptance-quick:query-interface": "npm run build && node scripts/acceptance-targeted.mjs interface-query",
43
+ "test:acceptance-quick:create-workspace": "npm run build && node scripts/acceptance-targeted.mjs create-workspace",
44
+ "test:acceptance-quick:query-workspace": "npm run build && node scripts/acceptance-targeted.mjs workspace-query",
45
45
  "prepublishOnly": "node scripts/prepublish-gate.mjs"
46
46
  },
47
47
  "files": [
@@ -1,29 +1,27 @@
1
1
  ---
2
2
  {
3
3
  "name": "benchmark",
4
- "description": "Compare compiled knowledge bases or interfaces with Interf's file-based benchmark specs. Use when asked to benchmark, compare workflows, compare interfaces, or run evals on already-compiled Interf targets."
4
+ "description": "Compare compiled workspaces with Interf's file-based benchmark specs. Use when asked to benchmark, compare workflows, compare compiled workspaces, or run checks on already-compiled Interf targets."
5
5
  }
6
6
  ---
7
7
 
8
- # Benchmark Compiled Knowledge Bases or Interfaces
8
+ # Benchmark Compiled Workspaces
9
9
 
10
10
  Use this skill when the job is to compare compiled Interf outputs, not to build them from scratch.
11
11
 
12
12
  Prefer the CLI:
13
13
 
14
14
  ```bash
15
- interf benchmark [type]
15
+ interf test
16
16
  ```
17
17
 
18
18
  This skill is for:
19
- - comparing knowledge bases built from the same source folder
20
- - comparing interfaces built on top of the same knowledge base
19
+ - comparing compiled workspaces built from the same source folder
21
20
  - creating or refining simple benchmark specs under `interf/benchmarks/`
22
- - summarizing which workflow or interface performed better on deterministic checks
21
+ - summarizing which workflow or compiled workspace performed better on deterministic checks
23
22
 
24
23
  This skill is **not** for:
25
- - compiling a knowledge base
26
- - compiling an interface
24
+ - compiling a workspace
27
25
  - inventing a second benchmark system outside Interf's filesystem contract
28
26
 
29
27
  ## Source of truth
@@ -31,7 +29,8 @@ This skill is **not** for:
31
29
  - benchmark specs in `interf/benchmarks/`
32
30
  - saved benchmark runs in `interf/benchmarks/runs/`
33
31
  - current target eligibility from `interf status`
34
- - public command: `interf benchmark`
32
+ - public command: `interf test`
33
+ - technical alias: `interf benchmark`
35
34
 
36
35
  When this skill is used inside a generated workspace, do not try to open SDK repo source files outside the current workspace. The benchmark spec files and saved run artifacts are the source of truth.
37
36
 
@@ -39,32 +38,26 @@ When this skill is used inside a generated workspace, do not try to open SDK rep
39
38
 
40
39
  Interf benchmark specs are file-first and deterministic by default.
41
40
 
42
- They live under:
41
+ They live under `interf/benchmarks/`.
43
42
 
44
- - `interf/benchmarks/knowledge-base/*.json`
45
- - `interf/benchmarks/interface/*.json`
46
-
47
- Saved benchmark runs live under:
48
-
49
- - `interf/benchmarks/runs/knowledge-base/*.json`
50
- - `interf/benchmarks/runs/interface/*.json`
43
+ Saved benchmark runs live under `interf/benchmarks/runs/workspace/`.
51
44
 
52
45
  Minimal example:
53
46
 
54
47
  ```json
55
48
  {
56
- "type": "interface",
49
+ "type": "workspace",
57
50
  "name": "Weekly Brief Quality",
58
- "description": "Compare weekly briefing interfaces.",
51
+ "description": "Compare weekly briefing workspaces.",
59
52
  "cases": [
60
53
  {
61
54
  "id": "current-state",
62
- "question": "Does this interface clearly say what changed and what matters next?",
63
- "file": "briefs/current-state.md",
55
+ "question": "Does this workspace clearly say what changed and what matters next?",
56
+ "file": "home.md",
64
57
  "expect": {
65
- "must_include": ["what changed", "next steps"],
58
+ "must_include": ["launch", "people"],
66
59
  "must_not_include": ["TODO"],
67
- "min_words": 150
60
+ "min_words": 5
68
61
  }
69
62
  }
70
63
  ]
@@ -95,15 +88,15 @@ If a target is `stale`, `failed`, or `idle`, do not benchmark it yet. Recompile
95
88
  ## Recommended flow
96
89
 
97
90
  1. Confirm the source folder and target type.
98
- 2. Confirm the selected knowledge bases or interfaces are compiled.
91
+ 2. Confirm the selected workspaces are compiled.
99
92
  3. Reuse an existing benchmark spec if one already expresses the user's assertion.
100
93
  4. Otherwise create a small benchmark spec with:
101
94
  - one clear question per case
102
95
  - one output file per case
103
96
  - a few deterministic checks
104
- 5. Run `interf benchmark`.
97
+ 5. Run `interf test`.
105
98
  6. Read the saved run artifact under `interf/benchmarks/runs/`.
106
- 7. Summarize pass/fail differences and what they imply about the workflow or interface.
99
+ 7. Summarize pass/fail differences and what they imply about the workflow or workspace.
107
100
 
108
101
  ## Authoring guidance
109
102
 
@@ -125,5 +118,5 @@ When summarizing a benchmark run:
125
118
  - say which targets were compared
126
119
  - say which cases passed or failed
127
120
  - point to the saved run file
128
- - explain what the failures imply about the current workflow or interface
121
+ - explain what the failures imply about the current workflow or workspace
129
122
  - keep benchmark conclusions separate from subjective product opinions
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  {
3
3
  "name": "workflow/create",
4
- "description": "Create or refine an Interf workflow package. Use when asked to define a KB or interface workflow, author workflow.json, shape compile stages, or add declarative stage acceptance criteria."
4
+ "description": "Create or refine an Interf workflow package. Use when asked to define a workspace workflow, author workflow.json, shape compile stages, or add declarative stage acceptance criteria."
5
5
  }
6
6
  ---
7
7
 
@@ -18,7 +18,7 @@ interf create workflow
18
18
  That wizard should create the initial package under:
19
19
 
20
20
  ```text
21
- interf/workflows/<type>/<workflow-id>/
21
+ interf/workflows/<workflow-id>/
22
22
  ```
23
23
 
24
24
  Then refine the package in place.
@@ -35,7 +35,7 @@ It has two layers:
35
35
  Typical shape:
36
36
 
37
37
  ```text
38
- interf/workflows/knowledge-base/<workflow-id>/
38
+ interf/workflows/<workflow-id>/
39
39
  workflow.json
40
40
  README.md
41
41
  create/
@@ -58,7 +58,6 @@ Keep it declarative.
58
58
  - `label`
59
59
  - `hint`
60
60
  - optional `extends`
61
- - optional `placeholder`
62
61
  - optional `stages`
63
62
  - optional `stage_policy_notes`
64
63
 
@@ -73,16 +72,11 @@ Each stage can define:
73
72
 
74
73
  ## Contract kinds
75
74
 
76
- Use the shipped contract families only.
75
+ Use the shipped workspace contract families only:
77
76
 
78
- Knowledge-base stages:
79
- - `kb-file-evidence`
80
- - `kb-knowledge-layer`
81
-
82
- Interface stages:
83
- - `interface-retrieval`
84
- - `interface-analysis`
85
- - `interface-output`
77
+ - `workspace-file-evidence`
78
+ - `workspace-knowledge-structure`
79
+ - `workspace-query-shape`
86
80
 
87
81
  Do not invent new engine contract kinds in a local workflow package.
88
82
 
@@ -102,7 +96,9 @@ Use dynamic counts when possible.
102
96
 
103
97
  Good:
104
98
  - `"summarized": "target_files"`
105
- - `"frontmatter_scanned": "knowledge_base_summary_total"`
99
+ - `"structured": "summary_total"`
100
+ - `"shaped": "summary_total"`
101
+ - `"compiled": "summary_total"`
106
102
 
107
103
  Avoid hardcoding fixed file counts unless the workflow really requires them.
108
104