@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.
- package/README.md +120 -83
- package/dist/bin.js +3 -3
- package/dist/bin.js.map +1 -1
- package/dist/commands/compile.d.ts +11 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +216 -70
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create-workflow-wizard.d.ts.map +1 -1
- package/dist/commands/create-workflow-wizard.js +17 -8
- package/dist/commands/create-workflow-wizard.js.map +1 -1
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +44 -45
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.d.ts.map +1 -1
- package/dist/commands/default.js +27 -31
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/doctor.js +2 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/executor-flow.d.ts +11 -0
- package/dist/commands/executor-flow.d.ts.map +1 -0
- package/dist/commands/executor-flow.js +104 -0
- package/dist/commands/executor-flow.js.map +1 -0
- package/dist/commands/init.d.ts +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +374 -64
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.js +1 -1
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +2 -18
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/source-config-wizard.d.ts +6 -7
- package/dist/commands/source-config-wizard.d.ts.map +1 -1
- package/dist/commands/source-config-wizard.js +151 -78
- package/dist/commands/source-config-wizard.js.map +1 -1
- package/dist/commands/test-flow.d.ts +22 -0
- package/dist/commands/test-flow.d.ts.map +1 -0
- package/dist/commands/test-flow.js +129 -0
- package/dist/commands/test-flow.js.map +1 -0
- package/dist/commands/test.d.ts +4 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +133 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +7 -3
- package/dist/commands/verify.js.map +1 -1
- package/dist/commands/workspace-flow.d.ts +21 -0
- package/dist/commands/workspace-flow.d.ts.map +1 -0
- package/dist/commands/workspace-flow.js +90 -0
- package/dist/commands/workspace-flow.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-detection.js +4 -4
- package/dist/lib/agent-detection.js.map +1 -1
- package/dist/lib/agent-skills.js +6 -6
- package/dist/lib/agent-skills.js.map +1 -1
- package/dist/lib/benchmark-execution.d.ts.map +1 -1
- package/dist/lib/benchmark-execution.js +39 -17
- package/dist/lib/benchmark-execution.js.map +1 -1
- package/dist/lib/benchmark-sandbox.d.ts +10 -0
- package/dist/lib/benchmark-sandbox.d.ts.map +1 -0
- package/dist/lib/benchmark-sandbox.js +75 -0
- package/dist/lib/benchmark-sandbox.js.map +1 -0
- package/dist/lib/benchmark-targets.d.ts +1 -0
- package/dist/lib/benchmark-targets.d.ts.map +1 -1
- package/dist/lib/benchmark-targets.js +12 -0
- package/dist/lib/benchmark-targets.js.map +1 -1
- package/dist/lib/benchmark-types.d.ts +1 -1
- package/dist/lib/benchmark-types.d.ts.map +1 -1
- package/dist/lib/benchmark.d.ts +1 -1
- package/dist/lib/benchmark.d.ts.map +1 -1
- package/dist/lib/benchmark.js +1 -1
- package/dist/lib/benchmark.js.map +1 -1
- package/dist/lib/interf-scaffold.d.ts.map +1 -1
- package/dist/lib/interf-scaffold.js +2 -1
- package/dist/lib/interf-scaffold.js.map +1 -1
- package/dist/lib/interf-workflow-package.d.ts.map +1 -1
- package/dist/lib/interf-workflow-package.js +7 -2
- package/dist/lib/interf-workflow-package.js.map +1 -1
- package/dist/lib/local-workflows.d.ts.map +1 -1
- package/dist/lib/local-workflows.js +24 -8
- package/dist/lib/local-workflows.js.map +1 -1
- package/dist/lib/runtime-contracts.d.ts +3 -1
- package/dist/lib/runtime-contracts.d.ts.map +1 -1
- package/dist/lib/runtime-contracts.js +115 -0
- package/dist/lib/runtime-contracts.js.map +1 -1
- package/dist/lib/runtime-reconcile.d.ts +2 -1
- package/dist/lib/runtime-reconcile.d.ts.map +1 -1
- package/dist/lib/runtime-reconcile.js +71 -15
- package/dist/lib/runtime-reconcile.js.map +1 -1
- package/dist/lib/runtime-runs.js +12 -3
- package/dist/lib/runtime-runs.js.map +1 -1
- package/dist/lib/runtime-types.d.ts +11 -0
- package/dist/lib/runtime-types.d.ts.map +1 -1
- package/dist/lib/runtime.d.ts +1 -1
- package/dist/lib/runtime.d.ts.map +1 -1
- package/dist/lib/runtime.js +1 -1
- package/dist/lib/runtime.js.map +1 -1
- package/dist/lib/schema.d.ts +36 -9
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +29 -7
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +4 -1
- package/dist/lib/source-config.d.ts.map +1 -1
- package/dist/lib/source-config.js +23 -4
- package/dist/lib/source-config.js.map +1 -1
- package/dist/lib/state-health.d.ts +2 -2
- package/dist/lib/state-health.d.ts.map +1 -1
- package/dist/lib/state-health.js +34 -19
- package/dist/lib/state-health.js.map +1 -1
- package/dist/lib/state-io.d.ts.map +1 -1
- package/dist/lib/state-io.js +6 -0
- package/dist/lib/state-io.js.map +1 -1
- package/dist/lib/validate-workspace.d.ts +41 -0
- package/dist/lib/validate-workspace.d.ts.map +1 -1
- package/dist/lib/validate-workspace.js +152 -4
- package/dist/lib/validate-workspace.js.map +1 -1
- package/dist/lib/validate.d.ts +2 -2
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +17 -2
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts.map +1 -1
- package/dist/lib/workflow-definitions.js +42 -20
- package/dist/lib/workflow-definitions.js.map +1 -1
- package/dist/lib/workflow-helpers.d.ts.map +1 -1
- package/dist/lib/workflow-helpers.js +4 -2
- package/dist/lib/workflow-helpers.js.map +1 -1
- package/dist/lib/workflows.d.ts +2 -2
- package/dist/lib/workflows.d.ts.map +1 -1
- package/dist/lib/workflows.js +3 -1
- package/dist/lib/workflows.js.map +1 -1
- package/dist/lib/workspace-compile.d.ts +4 -3
- package/dist/lib/workspace-compile.d.ts.map +1 -1
- package/dist/lib/workspace-compile.js +199 -100
- package/dist/lib/workspace-compile.js.map +1 -1
- package/dist/lib/workspace-reset.d.ts +2 -0
- package/dist/lib/workspace-reset.d.ts.map +1 -0
- package/dist/lib/workspace-reset.js +21 -0
- package/dist/lib/workspace-reset.js.map +1 -0
- package/package.json +1 -1
- package/skills/benchmark/SKILL.md +4 -3
- package/skills/workflow/create/SKILL.md +4 -1
- package/skills/workspace/shape/SKILL.md +15 -0
- package/skills/workspace/structure/SKILL.md +15 -0
- package/skills/workspace/summarize/SKILL.md +15 -0
- package/dist/commands/benchmark.d.ts +0 -3
- package/dist/commands/benchmark.d.ts.map +0 -1
- package/dist/commands/benchmark.js +0 -83
- 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 +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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"}
|