@interf/compiler 0.3.0 → 0.3.2

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 (151) hide show
  1. package/README.md +120 -83
  2. package/dist/bin.js +3 -3
  3. package/dist/bin.js.map +1 -1
  4. package/dist/commands/compile.d.ts +11 -0
  5. package/dist/commands/compile.d.ts.map +1 -1
  6. package/dist/commands/compile.js +216 -70
  7. package/dist/commands/compile.js.map +1 -1
  8. package/dist/commands/create-workflow-wizard.d.ts.map +1 -1
  9. package/dist/commands/create-workflow-wizard.js +17 -8
  10. package/dist/commands/create-workflow-wizard.js.map +1 -1
  11. package/dist/commands/create.d.ts.map +1 -1
  12. package/dist/commands/create.js +44 -45
  13. package/dist/commands/create.js.map +1 -1
  14. package/dist/commands/default.d.ts.map +1 -1
  15. package/dist/commands/default.js +27 -31
  16. package/dist/commands/default.js.map +1 -1
  17. package/dist/commands/doctor.js +2 -2
  18. package/dist/commands/doctor.js.map +1 -1
  19. package/dist/commands/executor-flow.d.ts +11 -0
  20. package/dist/commands/executor-flow.d.ts.map +1 -0
  21. package/dist/commands/executor-flow.js +104 -0
  22. package/dist/commands/executor-flow.js.map +1 -0
  23. package/dist/commands/init.d.ts +1 -0
  24. package/dist/commands/init.d.ts.map +1 -1
  25. package/dist/commands/init.js +374 -64
  26. package/dist/commands/init.js.map +1 -1
  27. package/dist/commands/list.js +1 -1
  28. package/dist/commands/list.js.map +1 -1
  29. package/dist/commands/reset.d.ts.map +1 -1
  30. package/dist/commands/reset.js +2 -18
  31. package/dist/commands/reset.js.map +1 -1
  32. package/dist/commands/source-config-wizard.d.ts +6 -7
  33. package/dist/commands/source-config-wizard.d.ts.map +1 -1
  34. package/dist/commands/source-config-wizard.js +151 -78
  35. package/dist/commands/source-config-wizard.js.map +1 -1
  36. package/dist/commands/test-flow.d.ts +22 -0
  37. package/dist/commands/test-flow.d.ts.map +1 -0
  38. package/dist/commands/test-flow.js +129 -0
  39. package/dist/commands/test-flow.js.map +1 -0
  40. package/dist/commands/test.d.ts +4 -0
  41. package/dist/commands/test.d.ts.map +1 -0
  42. package/dist/commands/test.js +133 -0
  43. package/dist/commands/test.js.map +1 -0
  44. package/dist/commands/verify.d.ts.map +1 -1
  45. package/dist/commands/verify.js +7 -3
  46. package/dist/commands/verify.js.map +1 -1
  47. package/dist/commands/workspace-flow.d.ts +21 -0
  48. package/dist/commands/workspace-flow.d.ts.map +1 -0
  49. package/dist/commands/workspace-flow.js +90 -0
  50. package/dist/commands/workspace-flow.js.map +1 -0
  51. package/dist/index.d.ts +1 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +1 -1
  54. package/dist/index.js.map +1 -1
  55. package/dist/lib/agent-detection.js +4 -4
  56. package/dist/lib/agent-detection.js.map +1 -1
  57. package/dist/lib/agent-skills.js +6 -6
  58. package/dist/lib/agent-skills.js.map +1 -1
  59. package/dist/lib/benchmark-execution.d.ts.map +1 -1
  60. package/dist/lib/benchmark-execution.js +39 -17
  61. package/dist/lib/benchmark-execution.js.map +1 -1
  62. package/dist/lib/benchmark-sandbox.d.ts +10 -0
  63. package/dist/lib/benchmark-sandbox.d.ts.map +1 -0
  64. package/dist/lib/benchmark-sandbox.js +75 -0
  65. package/dist/lib/benchmark-sandbox.js.map +1 -0
  66. package/dist/lib/benchmark-targets.d.ts +1 -0
  67. package/dist/lib/benchmark-targets.d.ts.map +1 -1
  68. package/dist/lib/benchmark-targets.js +12 -0
  69. package/dist/lib/benchmark-targets.js.map +1 -1
  70. package/dist/lib/benchmark-types.d.ts +1 -1
  71. package/dist/lib/benchmark-types.d.ts.map +1 -1
  72. package/dist/lib/benchmark.d.ts +1 -1
  73. package/dist/lib/benchmark.d.ts.map +1 -1
  74. package/dist/lib/benchmark.js +1 -1
  75. package/dist/lib/benchmark.js.map +1 -1
  76. package/dist/lib/interf-scaffold.d.ts.map +1 -1
  77. package/dist/lib/interf-scaffold.js +2 -1
  78. package/dist/lib/interf-scaffold.js.map +1 -1
  79. package/dist/lib/interf-workflow-package.d.ts.map +1 -1
  80. package/dist/lib/interf-workflow-package.js +7 -2
  81. package/dist/lib/interf-workflow-package.js.map +1 -1
  82. package/dist/lib/local-workflows.d.ts.map +1 -1
  83. package/dist/lib/local-workflows.js +24 -8
  84. package/dist/lib/local-workflows.js.map +1 -1
  85. package/dist/lib/runtime-contracts.d.ts +3 -1
  86. package/dist/lib/runtime-contracts.d.ts.map +1 -1
  87. package/dist/lib/runtime-contracts.js +115 -0
  88. package/dist/lib/runtime-contracts.js.map +1 -1
  89. package/dist/lib/runtime-reconcile.d.ts +2 -1
  90. package/dist/lib/runtime-reconcile.d.ts.map +1 -1
  91. package/dist/lib/runtime-reconcile.js +71 -15
  92. package/dist/lib/runtime-reconcile.js.map +1 -1
  93. package/dist/lib/runtime-runs.js +12 -3
  94. package/dist/lib/runtime-runs.js.map +1 -1
  95. package/dist/lib/runtime-types.d.ts +11 -0
  96. package/dist/lib/runtime-types.d.ts.map +1 -1
  97. package/dist/lib/runtime.d.ts +1 -1
  98. package/dist/lib/runtime.d.ts.map +1 -1
  99. package/dist/lib/runtime.js +1 -1
  100. package/dist/lib/runtime.js.map +1 -1
  101. package/dist/lib/schema.d.ts +36 -9
  102. package/dist/lib/schema.d.ts.map +1 -1
  103. package/dist/lib/schema.js +29 -7
  104. package/dist/lib/schema.js.map +1 -1
  105. package/dist/lib/source-config.d.ts +4 -1
  106. package/dist/lib/source-config.d.ts.map +1 -1
  107. package/dist/lib/source-config.js +23 -4
  108. package/dist/lib/source-config.js.map +1 -1
  109. package/dist/lib/state-health.d.ts +2 -2
  110. package/dist/lib/state-health.d.ts.map +1 -1
  111. package/dist/lib/state-health.js +34 -19
  112. package/dist/lib/state-health.js.map +1 -1
  113. package/dist/lib/state-io.d.ts.map +1 -1
  114. package/dist/lib/state-io.js +6 -0
  115. package/dist/lib/state-io.js.map +1 -1
  116. package/dist/lib/validate-workspace.d.ts +41 -0
  117. package/dist/lib/validate-workspace.d.ts.map +1 -1
  118. package/dist/lib/validate-workspace.js +152 -4
  119. package/dist/lib/validate-workspace.js.map +1 -1
  120. package/dist/lib/validate.d.ts +2 -2
  121. package/dist/lib/validate.d.ts.map +1 -1
  122. package/dist/lib/validate.js +17 -2
  123. package/dist/lib/validate.js.map +1 -1
  124. package/dist/lib/workflow-definitions.d.ts.map +1 -1
  125. package/dist/lib/workflow-definitions.js +42 -20
  126. package/dist/lib/workflow-definitions.js.map +1 -1
  127. package/dist/lib/workflow-helpers.d.ts.map +1 -1
  128. package/dist/lib/workflow-helpers.js +4 -2
  129. package/dist/lib/workflow-helpers.js.map +1 -1
  130. package/dist/lib/workflows.d.ts +2 -2
  131. package/dist/lib/workflows.d.ts.map +1 -1
  132. package/dist/lib/workflows.js +3 -1
  133. package/dist/lib/workflows.js.map +1 -1
  134. package/dist/lib/workspace-compile.d.ts +4 -3
  135. package/dist/lib/workspace-compile.d.ts.map +1 -1
  136. package/dist/lib/workspace-compile.js +199 -100
  137. package/dist/lib/workspace-compile.js.map +1 -1
  138. package/dist/lib/workspace-reset.d.ts +2 -0
  139. package/dist/lib/workspace-reset.d.ts.map +1 -0
  140. package/dist/lib/workspace-reset.js +21 -0
  141. package/dist/lib/workspace-reset.js.map +1 -0
  142. package/package.json +1 -1
  143. package/skills/benchmark/SKILL.md +4 -3
  144. package/skills/workflow/create/SKILL.md +4 -1
  145. package/skills/workspace/shape/SKILL.md +15 -0
  146. package/skills/workspace/structure/SKILL.md +15 -0
  147. package/skills/workspace/summarize/SKILL.md +15 -0
  148. package/dist/commands/benchmark.d.ts +0 -3
  149. package/dist/commands/benchmark.d.ts.map +0 -1
  150. package/dist/commands/benchmark.js +0 -83
  151. package/dist/commands/benchmark.js.map +0 -1
@@ -0,0 +1,15 @@
1
+ # Workspace Shape
2
+
3
+ Shape the final workspace surface around the workspace focus and saved questions.
4
+
5
+ Requirements:
6
+ - read the shaping input named in the stage contract
7
+ - treat the shaping input as focus plus question text only
8
+ - write `home.md` and any focused indexes needed under `knowledge/indexes/`
9
+ - bias routing, prioritization, and navigation toward the job this workspace should answer well
10
+ - use the existing knowledge structure instead of redoing extraction work
11
+ - do not copy expected answers into the workspace
12
+ - prefer better retrieval routes over speculative synthesis
13
+
14
+ Output goal:
15
+ - a final workspace surface that is easier for agents to navigate and use correctly
@@ -0,0 +1,15 @@
1
+ # Workspace Structure
2
+
3
+ Build the cross-file knowledge structure from the summary set.
4
+
5
+ Requirements:
6
+ - read `summaries/` and `.interf/inventory.json`
7
+ - write durable notes under `knowledge/entities/`, `knowledge/claims/`, and `knowledge/indexes/`
8
+ - canonicalize entities, claims, categories, timelines, and other retrieval structure
9
+ - use taxonomy and ontology only to improve retrieval, navigation, and evidence tracking
10
+ - prefer small stable notes over one giant catch-all file
11
+ - do not write `home.md` in this stage
12
+ - do not copy expected answers from saved checks
13
+
14
+ Output goal:
15
+ - a reusable cross-file structure that later shaping can route through
@@ -0,0 +1,15 @@
1
+ # Workspace Summarize
2
+
3
+ Turn raw source files into per-file evidence notes under `summaries/`.
4
+
5
+ Requirements:
6
+ - process only the files listed in the stage contract
7
+ - write one markdown summary per source file
8
+ - use JSON frontmatter, not YAML
9
+ - include `source`, `source_kind`, `evidence_tier`, `truth_mode`, `state`, and `abstract`
10
+ - include a readable `## Abstract` block in the body
11
+ - keep summaries source-grounded and conservative
12
+ - do not do broad cross-file synthesis in this stage
13
+
14
+ Output goal:
15
+ - a clean per-file evidence layer the later stages can trust
@@ -1,3 +0,0 @@
1
- import type { CommandModule } from "yargs";
2
- export declare const benchmarkCommand: CommandModule;
3
- //# sourceMappingURL=benchmark.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark.d.ts","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AA6B3C,eAAO,MAAM,gBAAgB,EAAE,aA2E9B,CAAC"}
@@ -1,83 +0,0 @@
1
- import chalk from "chalk";
2
- import * as p from "@clack/prompts";
3
- import { detectInterf, resolveSourceFolderPath, } from "../lib/interf.js";
4
- import { buildBenchmarkSpecFromSourceFolderConfig, loadSourceFolderConfig, SOURCE_FOLDER_CONFIG_FILE, } from "../lib/source-config.js";
5
- import { listBenchmarkTargets, runBenchmarkAuto, saveBenchmarkRun, } from "../lib/benchmark.js";
6
- import { resolveLocalExecutor } from "../lib/executors.js";
7
- import { addExecutionProfileOptions, executionProfileFromArgv, } from "../lib/execution-profile.js";
8
- function resolveBenchmarkSourcePath(cwd) {
9
- const detected = detectInterf(cwd);
10
- if (detected) {
11
- return resolveSourceFolderPath(detected.path, detected.config);
12
- }
13
- return cwd;
14
- }
15
- export const benchmarkCommand = {
16
- command: "benchmark",
17
- describe: "Benchmark compiled workspaces against questions and expected answers",
18
- builder: (yargs) => addExecutionProfileOptions(yargs),
19
- handler: async (argv) => {
20
- const cwd = process.cwd();
21
- const detected = detectInterf(cwd);
22
- const sourcePath = detected ? resolveSourceFolderPath(detected.path, detected.config) : cwd;
23
- const config = loadSourceFolderConfig(sourcePath);
24
- if (!config) {
25
- process.exitCode = 1;
26
- console.log(chalk.red(` No ${SOURCE_FOLDER_CONFIG_FILE} found in ${sourcePath}.`));
27
- console.log(chalk.dim(" Add checks first with `interf init` or by writing `interf.config.json`."));
28
- return;
29
- }
30
- const spec = buildBenchmarkSpecFromSourceFolderConfig({
31
- sourcePath,
32
- targetName: detected?.config.name ?? null,
33
- });
34
- if (!spec) {
35
- process.exitCode = 1;
36
- console.log(chalk.red(" Could not derive a benchmark from interf.config.json."));
37
- return;
38
- }
39
- const allTargets = listBenchmarkTargets(sourcePath);
40
- const eligibleTargets = allTargets.filter((target) => target.eligible);
41
- if (eligibleTargets.length === 0) {
42
- process.exitCode = 1;
43
- console.log(chalk.red(" No compiled workspaces are eligible to benchmark yet."));
44
- console.log(chalk.dim(" Build a workspace first with `interf compile`."));
45
- return;
46
- }
47
- let targets = eligibleTargets;
48
- if (eligibleTargets.length > 1) {
49
- const selected = await p.multiselect({
50
- message: "Which workspaces?",
51
- required: true,
52
- options: eligibleTargets.map((target) => ({
53
- value: target.path,
54
- label: target.name,
55
- hint: target.summary,
56
- })),
57
- });
58
- if (p.isCancel(selected))
59
- return;
60
- const selectedPaths = new Set(selected);
61
- targets = eligibleTargets.filter((target) => selectedPaths.has(target.path));
62
- }
63
- const executionProfile = executionProfileFromArgv(argv);
64
- const { executor } = resolveLocalExecutor({
65
- executionProfile,
66
- preflight: spec.cases.some((entry) => !entry.file || Boolean(entry.answer)),
67
- });
68
- const result = await runBenchmarkAuto(sourcePath, spec, targets, {
69
- executor,
70
- });
71
- const runPath = saveBenchmarkRun(sourcePath, result);
72
- console.log();
73
- console.log(chalk.bold(` ${result.benchmark.name}`));
74
- console.log();
75
- for (const target of result.results) {
76
- const color = target.ok ? chalk.green : chalk.red;
77
- console.log(color(` ${target.target.name}: ${target.passedCases}/${target.totalCases} cases, ${target.passedChecks}/${target.totalChecks} checks`));
78
- }
79
- console.log();
80
- console.log(chalk.dim(` Saved run: ${runPath}`));
81
- },
82
- };
83
- //# sourceMappingURL=benchmark.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"benchmark.js","sourceRoot":"","sources":["../../src/commands/benchmark.ts"],"names":[],"mappings":"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"}