@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.
- package/README.md +192 -187
- package/dist/bin.js +3 -3
- package/dist/bin.js.map +1 -1
- package/dist/commands/compile.d.ts +1 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +45 -138
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/create-workflow-wizard.d.ts +4 -25
- package/dist/commands/create-workflow-wizard.d.ts.map +1 -1
- package/dist/commands/create-workflow-wizard.js +46 -222
- package/dist/commands/create-workflow-wizard.js.map +1 -1
- package/dist/commands/create.d.ts +2 -11
- package/dist/commands/create.d.ts.map +1 -1
- package/dist/commands/create.js +78 -477
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.d.ts.map +1 -1
- package/dist/commands/default.js +27 -43
- 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 +9 -0
- package/dist/commands/executor-flow.d.ts.map +1 -0
- package/dist/commands/executor-flow.js +55 -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 +320 -321
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/list.d.ts.map +1 -1
- package/dist/commands/list.js +12 -22
- package/dist/commands/list.js.map +1 -1
- package/dist/commands/reset.d.ts.map +1 -1
- package/dist/commands/reset.js +27 -124
- package/dist/commands/reset.js.map +1 -1
- package/dist/commands/source-config-wizard.d.ts +10 -11
- package/dist/commands/source-config-wizard.d.ts.map +1 -1
- package/dist/commands/source-config-wizard.js +100 -97
- package/dist/commands/source-config-wizard.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +60 -56
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/test-flow.d.ts +21 -0
- package/dist/commands/test-flow.d.ts.map +1 -0
- package/dist/commands/test-flow.js +106 -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 +131 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/verify.d.ts.map +1 -1
- package/dist/commands/verify.js +63 -98
- 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 +8 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -7
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-constants.js +1 -1
- package/dist/lib/agent-constants.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 +32 -19
- 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 +4 -4
- package/dist/lib/benchmark-targets.d.ts.map +1 -1
- package/dist/lib/benchmark-targets.js +20 -54
- package/dist/lib/benchmark-targets.js.map +1 -1
- package/dist/lib/benchmark-types.d.ts +2 -3
- 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/config.d.ts +1 -2
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +2 -4
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/discovery.d.ts +1 -1
- package/dist/lib/discovery.d.ts.map +1 -1
- package/dist/lib/discovery.js +7 -2
- package/dist/lib/discovery.js.map +1 -1
- package/dist/lib/eval-packs.d.ts +6 -52
- package/dist/lib/eval-packs.d.ts.map +1 -1
- package/dist/lib/eval-packs.js +11 -39
- package/dist/lib/eval-packs.js.map +1 -1
- package/dist/lib/interf-bootstrap.d.ts +3 -5
- package/dist/lib/interf-bootstrap.d.ts.map +1 -1
- package/dist/lib/interf-bootstrap.js +10 -57
- package/dist/lib/interf-bootstrap.js.map +1 -1
- package/dist/lib/interf-detect.d.ts +13 -11
- package/dist/lib/interf-detect.d.ts.map +1 -1
- package/dist/lib/interf-detect.js +59 -45
- package/dist/lib/interf-detect.js.map +1 -1
- package/dist/lib/interf-scaffold.d.ts +2 -5
- package/dist/lib/interf-scaffold.d.ts.map +1 -1
- package/dist/lib/interf-scaffold.js +99 -235
- package/dist/lib/interf-scaffold.js.map +1 -1
- package/dist/lib/interf-workflow-package.d.ts +1 -2
- package/dist/lib/interf-workflow-package.d.ts.map +1 -1
- package/dist/lib/interf-workflow-package.js +99 -90
- package/dist/lib/interf-workflow-package.js.map +1 -1
- package/dist/lib/interf.d.ts +4 -5
- package/dist/lib/interf.d.ts.map +1 -1
- package/dist/lib/interf.js +3 -6
- package/dist/lib/interf.js.map +1 -1
- package/dist/lib/local-workflows.d.ts +9 -8
- package/dist/lib/local-workflows.d.ts.map +1 -1
- package/dist/lib/local-workflows.js +56 -92
- package/dist/lib/local-workflows.js.map +1 -1
- package/dist/lib/obsidian.d.ts +1 -3
- package/dist/lib/obsidian.d.ts.map +1 -1
- package/dist/lib/obsidian.js +10 -81
- package/dist/lib/obsidian.js.map +1 -1
- package/dist/lib/registry.d.ts +6 -17
- package/dist/lib/registry.d.ts.map +1 -1
- package/dist/lib/registry.js +36 -50
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/runtime-contracts.d.ts +4 -3
- package/dist/lib/runtime-contracts.d.ts.map +1 -1
- package/dist/lib/runtime-contracts.js +125 -9
- package/dist/lib/runtime-contracts.js.map +1 -1
- package/dist/lib/runtime-reconcile.d.ts +3 -5
- package/dist/lib/runtime-reconcile.d.ts.map +1 -1
- package/dist/lib/runtime-reconcile.js +70 -167
- package/dist/lib/runtime-reconcile.js.map +1 -1
- package/dist/lib/runtime-runs.d.ts.map +1 -1
- package/dist/lib/runtime-runs.js +61 -57
- package/dist/lib/runtime-runs.js.map +1 -1
- package/dist/lib/runtime-types.d.ts +16 -6
- package/dist/lib/runtime-types.d.ts.map +1 -1
- package/dist/lib/runtime.d.ts +2 -2
- 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 +69 -311
- package/dist/lib/schema.d.ts.map +1 -1
- package/dist/lib/schema.js +49 -210
- package/dist/lib/schema.js.map +1 -1
- package/dist/lib/source-config.d.ts +8 -7
- package/dist/lib/source-config.d.ts.map +1 -1
- package/dist/lib/source-config.js +59 -63
- package/dist/lib/source-config.js.map +1 -1
- package/dist/lib/state-artifacts.d.ts +5 -11
- package/dist/lib/state-artifacts.d.ts.map +1 -1
- package/dist/lib/state-artifacts.js +8 -18
- package/dist/lib/state-artifacts.js.map +1 -1
- package/dist/lib/state-health.d.ts +4 -8
- package/dist/lib/state-health.d.ts.map +1 -1
- package/dist/lib/state-health.js +52 -233
- package/dist/lib/state-health.js.map +1 -1
- package/dist/lib/state-io.d.ts +7 -12
- package/dist/lib/state-io.d.ts.map +1 -1
- package/dist/lib/state-io.js +32 -93
- package/dist/lib/state-io.js.map +1 -1
- package/dist/lib/state-view.d.ts +4 -6
- package/dist/lib/state-view.d.ts.map +1 -1
- package/dist/lib/state-view.js +62 -101
- package/dist/lib/state-view.js.map +1 -1
- package/dist/lib/state.d.ts +5 -5
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +4 -4
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/summarize-plan.d.ts +2 -2
- package/dist/lib/summarize-plan.d.ts.map +1 -1
- package/dist/lib/summarize-plan.js +13 -13
- package/dist/lib/summarize-plan.js.map +1 -1
- package/dist/lib/{validate-kb.d.ts → validate-workspace.d.ts} +49 -8
- package/dist/lib/validate-workspace.d.ts.map +1 -0
- package/dist/lib/validate-workspace.js +398 -0
- package/dist/lib/validate-workspace.js.map +1 -0
- package/dist/lib/validate.d.ts +5 -7
- package/dist/lib/validate.d.ts.map +1 -1
- package/dist/lib/validate.js +22 -20
- package/dist/lib/validate.js.map +1 -1
- package/dist/lib/workflow-definitions.d.ts +14 -50
- package/dist/lib/workflow-definitions.d.ts.map +1 -1
- package/dist/lib/workflow-definitions.js +100 -353
- package/dist/lib/workflow-definitions.js.map +1 -1
- package/dist/lib/workflow-helpers.d.ts +3 -4
- package/dist/lib/workflow-helpers.d.ts.map +1 -1
- package/dist/lib/workflow-helpers.js +17 -49
- package/dist/lib/workflow-helpers.js.map +1 -1
- package/dist/lib/workflow-stage-runner.d.ts +1 -2
- package/dist/lib/workflow-stage-runner.d.ts.map +1 -1
- package/dist/lib/workflow-stage-runner.js +4 -6
- package/dist/lib/workflow-stage-runner.js.map +1 -1
- package/dist/lib/workflow-starter-docs.d.ts +3 -5
- package/dist/lib/workflow-starter-docs.d.ts.map +1 -1
- package/dist/lib/workflow-starter-docs.js +2 -17
- package/dist/lib/workflow-starter-docs.js.map +1 -1
- package/dist/lib/workflows.d.ts +9 -14
- package/dist/lib/workflows.d.ts.map +1 -1
- package/dist/lib/workflows.js +15 -30
- package/dist/lib/workflows.js.map +1 -1
- package/dist/lib/workspace-compile.d.ts +51 -0
- package/dist/lib/workspace-compile.d.ts.map +1 -0
- package/dist/lib/workspace-compile.js +397 -0
- package/dist/lib/workspace-compile.js.map +1 -0
- package/package.json +9 -9
- package/skills/benchmark/SKILL.md +20 -27
- package/skills/workflow/create/SKILL.md +10 -14
- 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/templates/workspace/README.md +23 -0
- package/templates/workspace/interfignore +2 -0
- package/dist/commands/benchmark.d.ts +0 -3
- package/dist/commands/benchmark.d.ts.map +0 -1
- package/dist/commands/benchmark.js +0 -374
- package/dist/commands/benchmark.js.map +0 -1
- package/dist/lib/bundled-templates.d.ts +0 -5
- package/dist/lib/bundled-templates.d.ts.map +0 -1
- package/dist/lib/bundled-templates.js +0 -23
- package/dist/lib/bundled-templates.js.map +0 -1
- package/dist/lib/interf-compile-plan.d.ts +0 -12
- package/dist/lib/interf-compile-plan.d.ts.map +0 -1
- package/dist/lib/interf-compile-plan.js +0 -143
- package/dist/lib/interf-compile-plan.js.map +0 -1
- package/dist/lib/validate-interface.d.ts +0 -79
- package/dist/lib/validate-interface.d.ts.map +0 -1
- package/dist/lib/validate-interface.js +0 -535
- package/dist/lib/validate-interface.js.map +0 -1
- package/dist/lib/validate-kb.d.ts.map +0 -1
- package/dist/lib/validate-kb.js +0 -252
- package/dist/lib/validate-kb.js.map +0 -1
- package/dist/lib/workflows-interface-contracts.d.ts +0 -24
- package/dist/lib/workflows-interface-contracts.d.ts.map +0 -1
- package/dist/lib/workflows-interface-contracts.js +0 -304
- package/dist/lib/workflows-interface-contracts.js.map +0 -1
- package/dist/lib/workflows-interface.d.ts +0 -72
- package/dist/lib/workflows-interface.d.ts.map +0 -1
- package/dist/lib/workflows-interface.js +0 -377
- package/dist/lib/workflows-interface.js.map +0 -1
- package/dist/lib/workflows-kb.d.ts +0 -50
- package/dist/lib/workflows-kb.d.ts.map +0 -1
- package/dist/lib/workflows-kb.js +0 -306
- package/dist/lib/workflows-kb.js.map +0 -1
- package/skills/interface/analyze/SKILL.md +0 -191
- package/skills/interface/compile/SKILL.md +0 -152
- package/skills/interface/compile/references/output-format.md +0 -48
- package/skills/interface/create/SKILL.md +0 -87
- package/skills/interface/create/references/compile-plan-format.md +0 -109
- package/skills/interface/create/references/workflows.md +0 -35
- package/skills/interface/query/SKILL.md +0 -48
- package/skills/interface/retrieve/SKILL.md +0 -133
- package/skills/knowledge-base/compile/SKILL.md +0 -196
- package/skills/knowledge-base/compile/references/output-format.md +0 -48
- package/skills/knowledge-base/compile/references/stage-claims.md +0 -60
- package/skills/knowledge-base/compile/references/stage-entities.md +0 -46
- package/skills/knowledge-base/query/SKILL.md +0 -45
- package/skills/knowledge-base/summarize/SKILL.md +0 -152
- package/templates/interface/README.md +0 -159
- package/templates/interface/interfaces.md +0 -102
- package/templates/knowledge-base/README.md +0 -137
- package/templates/knowledge-base/interfignore +0 -19
- package/templates/knowledge-base/registry.md +0 -118
- package/templates/workflow-package/README.md +0 -16
- package/templates/workflow-package/create/SKILL.md +0 -8
- package/templates/workflow-package/interface-query/SKILL.md +0 -29
- package/templates/workflow-package/interface-stage/SKILL.md +0 -13
- package/templates/workflow-package/knowledge-base-query/SKILL.md +0 -36
- package/templates/workflow-package/knowledge-base-stage/SKILL.md +0 -13
- package/templates/workflow-starters/interface/interf/README.md +0 -13
- package/templates/workflow-starters/interface/interf/create/SKILL.md +0 -15
- package/templates/workflow-starters/knowledge-base/interf/README.md +0 -13
- package/templates/workflow-starters/knowledge-base/karpathy/README.md +0 -13
|
@@ -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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Workspace Template
|
|
2
|
+
|
|
3
|
+
This directory contains bundled helper files for compiled workspaces.
|
|
4
|
+
|
|
5
|
+
Interf creates compiled workspaces under:
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
interf/workspaces/<name>/
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
The generated workspace is a file-based layer on top of your raw files.
|
|
12
|
+
|
|
13
|
+
Interf scaffolds:
|
|
14
|
+
|
|
15
|
+
- `interf.json`
|
|
16
|
+
- `AGENTS.md`
|
|
17
|
+
- `CLAUDE.md`
|
|
18
|
+
- `home.md`
|
|
19
|
+
- `workflow/`
|
|
20
|
+
- `.interf/`
|
|
21
|
+
- `.interfignore`
|
|
22
|
+
|
|
23
|
+
The source folder remains the human control plane. The compiled workspace is the agent-facing surface.
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
import chalk from "chalk";
|
|
2
|
-
import * as p from "@clack/prompts";
|
|
3
|
-
import { basename, resolve } from "node:path";
|
|
4
|
-
import { loadRegistry } from "../lib/registry.js";
|
|
5
|
-
import { detectInterf, listKnowledgeBasesForSourceFolder, readInterfConfig, resolveInterfaceKnowledgeBasePath, resolveKnowledgeBaseSourcePath, } from "../lib/interf.js";
|
|
6
|
-
import { listBenchmarkSpecs, listBenchmarkTargets, loadBenchmarkSpecFromFile, runBenchmarkAuto, saveBenchmarkRun, writeBenchmarkSpec, } from "../lib/benchmark.js";
|
|
7
|
-
import { buildBenchmarkSpecFromSourceFolderConfig } from "../lib/source-config.js";
|
|
8
|
-
import { resolveLocalExecutor } from "../lib/executors.js";
|
|
9
|
-
import { slugify } from "../lib/util.js";
|
|
10
|
-
function resolveBenchmarkSourcePath(cwd) {
|
|
11
|
-
const detected = detectInterf(cwd);
|
|
12
|
-
if (detected?.config.type === "knowledge-base") {
|
|
13
|
-
return resolveKnowledgeBaseSourcePath(detected.path, detected.config);
|
|
14
|
-
}
|
|
15
|
-
if (detected?.config.type === "interface") {
|
|
16
|
-
const knowledgeBasePath = resolveInterfaceKnowledgeBasePath(detected.path);
|
|
17
|
-
if (!knowledgeBasePath)
|
|
18
|
-
return null;
|
|
19
|
-
return resolveKnowledgeBaseSourcePath(knowledgeBasePath, readInterfConfig(knowledgeBasePath));
|
|
20
|
-
}
|
|
21
|
-
if (listKnowledgeBasesForSourceFolder(cwd).length > 0) {
|
|
22
|
-
return cwd;
|
|
23
|
-
}
|
|
24
|
-
if (basename(cwd) === "interf") {
|
|
25
|
-
const sourcePath = resolve(cwd, "..");
|
|
26
|
-
if (listKnowledgeBasesForSourceFolder(sourcePath).length > 0) {
|
|
27
|
-
return sourcePath;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
return null;
|
|
31
|
-
}
|
|
32
|
-
async function chooseSourcePathFromRegistry() {
|
|
33
|
-
const registry = loadRegistry();
|
|
34
|
-
const sourceFolders = Array.from(new Map(registry.knowledgeBases.map((knowledgeBase) => {
|
|
35
|
-
const config = readInterfConfig(knowledgeBase.path);
|
|
36
|
-
const sourcePath = resolveKnowledgeBaseSourcePath(knowledgeBase.path, config);
|
|
37
|
-
return [
|
|
38
|
-
sourcePath,
|
|
39
|
-
{
|
|
40
|
-
sourcePath,
|
|
41
|
-
label: basename(sourcePath) || sourcePath,
|
|
42
|
-
hint: `${knowledgeBase.name} at ${sourcePath}`,
|
|
43
|
-
},
|
|
44
|
-
];
|
|
45
|
-
})).values());
|
|
46
|
-
if (sourceFolders.length === 0)
|
|
47
|
-
return null;
|
|
48
|
-
if (sourceFolders.length === 1)
|
|
49
|
-
return sourceFolders[0].sourcePath;
|
|
50
|
-
return p.select({
|
|
51
|
-
message: "Which source folder?",
|
|
52
|
-
options: sourceFolders.map((folder) => ({
|
|
53
|
-
value: folder.sourcePath,
|
|
54
|
-
label: folder.label,
|
|
55
|
-
hint: folder.hint,
|
|
56
|
-
})),
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
async function chooseTargetType(sourcePath, explicitType) {
|
|
60
|
-
if (explicitType === "knowledge-base" || explicitType === "kb" || explicitType === "base") {
|
|
61
|
-
return "knowledge-base";
|
|
62
|
-
}
|
|
63
|
-
if (explicitType === "interface") {
|
|
64
|
-
return "interface";
|
|
65
|
-
}
|
|
66
|
-
if (explicitType) {
|
|
67
|
-
return null;
|
|
68
|
-
}
|
|
69
|
-
const knowledgeBaseTargets = listBenchmarkTargets(sourcePath, "knowledge-base");
|
|
70
|
-
const interfaceTargets = listBenchmarkTargets(sourcePath, "interface");
|
|
71
|
-
const knowledgeBaseEligible = knowledgeBaseTargets.filter((target) => target.eligible).length;
|
|
72
|
-
const interfaceEligible = interfaceTargets.filter((target) => target.eligible).length;
|
|
73
|
-
if (knowledgeBaseEligible > 0 && interfaceEligible === 0)
|
|
74
|
-
return "knowledge-base";
|
|
75
|
-
if (interfaceEligible > 0 && knowledgeBaseEligible === 0)
|
|
76
|
-
return "interface";
|
|
77
|
-
if (knowledgeBaseTargets.length === 0 && interfaceTargets.length === 0)
|
|
78
|
-
return null;
|
|
79
|
-
return p.select({
|
|
80
|
-
message: "Benchmark what?",
|
|
81
|
-
options: [
|
|
82
|
-
{
|
|
83
|
-
value: "knowledge-base",
|
|
84
|
-
label: knowledgeBaseEligible > 0 ? "Knowledge Base (Recommended)" : "Knowledge Base",
|
|
85
|
-
hint: `${knowledgeBaseEligible}/${knowledgeBaseTargets.length} compiled and eligible`,
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
value: "interface",
|
|
89
|
-
label: interfaceEligible > 0 ? "Interface (Recommended)" : "Interface",
|
|
90
|
-
hint: `${interfaceEligible}/${interfaceTargets.length} compiled and eligible`,
|
|
91
|
-
},
|
|
92
|
-
],
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
function formatTargetLabel(target) {
|
|
96
|
-
return {
|
|
97
|
-
value: target.path,
|
|
98
|
-
label: target.type === "interface" && target.knowledgeBaseName
|
|
99
|
-
? `${target.name} → ${target.knowledgeBaseName}`
|
|
100
|
-
: target.name,
|
|
101
|
-
hint: `${target.workflow} • ${target.summary}`,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
async function chooseTargets(sourcePath, type) {
|
|
105
|
-
const targets = listBenchmarkTargets(sourcePath, type);
|
|
106
|
-
const eligibleTargets = targets.filter((target) => target.eligible);
|
|
107
|
-
const ineligibleTargets = targets.filter((target) => !target.eligible);
|
|
108
|
-
if (ineligibleTargets.length > 0) {
|
|
109
|
-
console.log();
|
|
110
|
-
console.log(chalk.dim(` Skipping ${ineligibleTargets.length} ineligible ${type === "knowledge-base" ? "knowledge base" : "interface"}${ineligibleTargets.length === 1 ? "" : "s"}:`));
|
|
111
|
-
for (const target of ineligibleTargets) {
|
|
112
|
-
const label = target.type === "interface" && target.knowledgeBaseName
|
|
113
|
-
? `${target.name} → ${target.knowledgeBaseName}`
|
|
114
|
-
: target.name;
|
|
115
|
-
console.log(chalk.dim(` ${label} (${target.status}/${target.stage})`));
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
if (eligibleTargets.length === 0) {
|
|
119
|
-
return null;
|
|
120
|
-
}
|
|
121
|
-
if (eligibleTargets.length === 1) {
|
|
122
|
-
return eligibleTargets;
|
|
123
|
-
}
|
|
124
|
-
const choice = await p.multiselect({
|
|
125
|
-
message: type === "knowledge-base" ? "Which knowledge bases?" : "Which interfaces?",
|
|
126
|
-
options: eligibleTargets.map(formatTargetLabel),
|
|
127
|
-
});
|
|
128
|
-
if (p.isCancel(choice))
|
|
129
|
-
return choice;
|
|
130
|
-
const selectedPaths = new Set(choice ?? []);
|
|
131
|
-
return eligibleTargets.filter((target) => selectedPaths.has(target.path));
|
|
132
|
-
}
|
|
133
|
-
async function createBenchmarkSpecWizard(sourcePath, type) {
|
|
134
|
-
const rawName = await p.text({
|
|
135
|
-
message: "Benchmark name?",
|
|
136
|
-
placeholder: type === "knowledge-base" ? "knowledge-home-quality" : "weekly-brief-quality",
|
|
137
|
-
validate: (value) => (value.trim().length === 0 ? "Name is required" : undefined),
|
|
138
|
-
});
|
|
139
|
-
if (p.isCancel(rawName))
|
|
140
|
-
return rawName;
|
|
141
|
-
const description = await p.text({
|
|
142
|
-
message: "One-line description?",
|
|
143
|
-
placeholder: "Compare output quality on the same compiled targets",
|
|
144
|
-
});
|
|
145
|
-
if (p.isCancel(description))
|
|
146
|
-
return description;
|
|
147
|
-
const cases = [];
|
|
148
|
-
let addAnother = true;
|
|
149
|
-
while (addAnother) {
|
|
150
|
-
const caseLabel = await p.text({
|
|
151
|
-
message: `Check ${cases.length + 1} id?`,
|
|
152
|
-
placeholder: type === "knowledge-base" ? "home-overview" : "brief-clarity",
|
|
153
|
-
validate: (value) => {
|
|
154
|
-
if (value.trim().length === 0)
|
|
155
|
-
return "Check id is required";
|
|
156
|
-
if (slugify(value).length === 0)
|
|
157
|
-
return "Use letters, numbers, and dashes";
|
|
158
|
-
if (cases.some((benchmarkCase) => benchmarkCase.id === slugify(value))) {
|
|
159
|
-
return "That check id already exists";
|
|
160
|
-
}
|
|
161
|
-
return undefined;
|
|
162
|
-
},
|
|
163
|
-
});
|
|
164
|
-
if (p.isCancel(caseLabel))
|
|
165
|
-
return caseLabel;
|
|
166
|
-
const question = await p.text({
|
|
167
|
-
message: "What question should this benchmark ask?",
|
|
168
|
-
placeholder: type === "knowledge-base"
|
|
169
|
-
? "What are the main themes and next steps in this knowledge base?"
|
|
170
|
-
: "Does this interface clearly say what changed and what matters next?",
|
|
171
|
-
validate: (value) => (value.trim().length === 0 ? "Question is required" : undefined),
|
|
172
|
-
});
|
|
173
|
-
if (p.isCancel(question))
|
|
174
|
-
return question;
|
|
175
|
-
const answer = await p.text({
|
|
176
|
-
message: "What should a good answer say?",
|
|
177
|
-
placeholder: type === "knowledge-base"
|
|
178
|
-
? "A good answer clearly surfaces the main themes, risks, and next steps."
|
|
179
|
-
: "A good answer states what changed, why it matters, and what to do next.",
|
|
180
|
-
validate: (value) => (value.trim().length === 0 ? "Expected answer is required" : undefined),
|
|
181
|
-
});
|
|
182
|
-
if (p.isCancel(answer))
|
|
183
|
-
return answer;
|
|
184
|
-
const strictness = await p.text({
|
|
185
|
-
message: "How strict should the judge be? (optional)",
|
|
186
|
-
placeholder: "approximate",
|
|
187
|
-
});
|
|
188
|
-
if (p.isCancel(strictness))
|
|
189
|
-
return strictness;
|
|
190
|
-
cases.push({
|
|
191
|
-
id: slugify(caseLabel),
|
|
192
|
-
question: question.trim(),
|
|
193
|
-
answer: answer.trim(),
|
|
194
|
-
...(String(strictness).trim().length > 0 ? { strictness: String(strictness).trim() } : {}),
|
|
195
|
-
});
|
|
196
|
-
const more = await p.confirm({
|
|
197
|
-
message: "Add another check?",
|
|
198
|
-
initialValue: false,
|
|
199
|
-
});
|
|
200
|
-
if (p.isCancel(more))
|
|
201
|
-
return more;
|
|
202
|
-
addAnother = Boolean(more);
|
|
203
|
-
}
|
|
204
|
-
const filePath = writeBenchmarkSpec(sourcePath, {
|
|
205
|
-
id: slugify(rawName),
|
|
206
|
-
type,
|
|
207
|
-
name: rawName.trim(),
|
|
208
|
-
description: description.trim(),
|
|
209
|
-
cases,
|
|
210
|
-
});
|
|
211
|
-
p.log.info(`Saved benchmark spec: ${filePath}`);
|
|
212
|
-
return loadBenchmarkSpecFromFile(filePath);
|
|
213
|
-
}
|
|
214
|
-
async function runSelectedBenchmark(sourcePath, spec, targets) {
|
|
215
|
-
const { executor, error } = resolveLocalExecutor();
|
|
216
|
-
if (spec.cases.some((benchmarkCase) => !benchmarkCase.file || benchmarkCase.answer) && !executor) {
|
|
217
|
-
throw new Error(error ?? "No local agent executor is available for benchmark judging.");
|
|
218
|
-
}
|
|
219
|
-
return runBenchmarkAuto(sourcePath, spec, targets, { executor });
|
|
220
|
-
}
|
|
221
|
-
async function chooseBenchmarkSpec(sourcePath, type, targets, explicitPath) {
|
|
222
|
-
if (explicitPath) {
|
|
223
|
-
const spec = loadBenchmarkSpecFromFile(resolve(process.cwd(), explicitPath));
|
|
224
|
-
if (!spec) {
|
|
225
|
-
process.exitCode = 1;
|
|
226
|
-
console.log(chalk.red(`Could not read benchmark spec: ${explicitPath}`));
|
|
227
|
-
return null;
|
|
228
|
-
}
|
|
229
|
-
if (spec.type !== type) {
|
|
230
|
-
process.exitCode = 1;
|
|
231
|
-
console.log(chalk.red(`Benchmark spec is for ${spec.type}, not ${type}.`));
|
|
232
|
-
return null;
|
|
233
|
-
}
|
|
234
|
-
return spec;
|
|
235
|
-
}
|
|
236
|
-
const uniqueTargetNames = new Set(targets.map((target) => target.name));
|
|
237
|
-
const sourceConfigSpec = buildBenchmarkSpecFromSourceFolderConfig({
|
|
238
|
-
sourcePath,
|
|
239
|
-
type,
|
|
240
|
-
targetName: type === "interface" && uniqueTargetNames.size === 1
|
|
241
|
-
? targets[0]?.name ?? null
|
|
242
|
-
: null,
|
|
243
|
-
});
|
|
244
|
-
if (sourceConfigSpec) {
|
|
245
|
-
return sourceConfigSpec;
|
|
246
|
-
}
|
|
247
|
-
const specs = listBenchmarkSpecs(sourcePath, type);
|
|
248
|
-
if (specs.length === 0) {
|
|
249
|
-
return createBenchmarkSpecWizard(sourcePath, type);
|
|
250
|
-
}
|
|
251
|
-
const mode = await p.select({
|
|
252
|
-
message: "Benchmark spec?",
|
|
253
|
-
options: [
|
|
254
|
-
{
|
|
255
|
-
value: "existing",
|
|
256
|
-
label: "Existing benchmark (Recommended)",
|
|
257
|
-
hint: "Reuse a saved benchmark from interf/benchmarks/",
|
|
258
|
-
},
|
|
259
|
-
{
|
|
260
|
-
value: "new",
|
|
261
|
-
label: "Create new benchmark",
|
|
262
|
-
hint: "Write a simple question-and-answer benchmark for these targets",
|
|
263
|
-
},
|
|
264
|
-
],
|
|
265
|
-
});
|
|
266
|
-
if (p.isCancel(mode))
|
|
267
|
-
return mode;
|
|
268
|
-
if (mode === "new") {
|
|
269
|
-
return createBenchmarkSpecWizard(sourcePath, type);
|
|
270
|
-
}
|
|
271
|
-
const choice = await p.select({
|
|
272
|
-
message: "Choose a benchmark",
|
|
273
|
-
options: specs.map((spec) => ({
|
|
274
|
-
value: spec.id,
|
|
275
|
-
label: spec.name,
|
|
276
|
-
hint: spec.description ?? spec.filePath,
|
|
277
|
-
})),
|
|
278
|
-
});
|
|
279
|
-
if (p.isCancel(choice))
|
|
280
|
-
return choice;
|
|
281
|
-
return specs.find((spec) => spec.id === choice) ?? null;
|
|
282
|
-
}
|
|
283
|
-
function printBenchmarkResults(runPath, results) {
|
|
284
|
-
console.log();
|
|
285
|
-
console.log(chalk.bold(` Benchmark: ${results.benchmark.name}`));
|
|
286
|
-
console.log(chalk.dim(` Spec: ${results.benchmark.file}`));
|
|
287
|
-
console.log(chalk.dim(` Saved run: ${runPath}`));
|
|
288
|
-
console.log();
|
|
289
|
-
for (const result of results.results) {
|
|
290
|
-
const label = result.target.type === "interface" && result.target.knowledgeBaseName
|
|
291
|
-
? `${result.target.name} → ${result.target.knowledgeBaseName}`
|
|
292
|
-
: result.target.name;
|
|
293
|
-
const status = result.ok ? chalk.green("pass") : chalk.yellow("mixed");
|
|
294
|
-
console.log(` ${label.padEnd(24)} ${status} benchmark-checks:${String(result.passedCases).padStart(2)}/${String(result.totalCases).padEnd(2)} validations:${String(result.passedChecks).padStart(2)}/${String(result.totalChecks).padEnd(2)} workflow:${result.target.workflow}`);
|
|
295
|
-
}
|
|
296
|
-
const failedResults = results.results
|
|
297
|
-
.flatMap((result) => result.caseResults
|
|
298
|
-
.filter((caseResult) => !caseResult.ok)
|
|
299
|
-
.map((caseResult) => ({ result, caseResult })));
|
|
300
|
-
if (failedResults.length > 0) {
|
|
301
|
-
console.log();
|
|
302
|
-
console.log(chalk.bold(" Benchmark failures"));
|
|
303
|
-
console.log(chalk.dim(" " + "─".repeat(50)));
|
|
304
|
-
for (const { result, caseResult } of failedResults) {
|
|
305
|
-
const targetLabel = result.target.type === "interface" && result.target.knowledgeBaseName
|
|
306
|
-
? `${result.target.name} → ${result.target.knowledgeBaseName}`
|
|
307
|
-
: result.target.name;
|
|
308
|
-
console.log(` ${targetLabel} / ${caseResult.caseId}`);
|
|
309
|
-
for (const check of caseResult.checks.filter((entry) => !entry.ok)) {
|
|
310
|
-
console.log(chalk.dim(` - ${check.label}: ${check.detail}`));
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
console.log();
|
|
315
|
-
}
|
|
316
|
-
export const benchmarkCommand = {
|
|
317
|
-
command: "benchmark [type]",
|
|
318
|
-
describe: "Benchmark compiled knowledge bases or interfaces with folder-local evals",
|
|
319
|
-
builder: (yargs) => yargs
|
|
320
|
-
.positional("type", {
|
|
321
|
-
describe: "What to benchmark (`knowledge-base` or `interface`; auto-detected if omitted)",
|
|
322
|
-
})
|
|
323
|
-
.option("spec", {
|
|
324
|
-
type: "string",
|
|
325
|
-
describe: "Path to a benchmark spec file (`.json`)",
|
|
326
|
-
}),
|
|
327
|
-
handler: async (argv) => {
|
|
328
|
-
let sourcePath = resolveBenchmarkSourcePath(process.cwd());
|
|
329
|
-
if (!sourcePath) {
|
|
330
|
-
const choice = await chooseSourcePathFromRegistry();
|
|
331
|
-
if (p.isCancel(choice))
|
|
332
|
-
return;
|
|
333
|
-
sourcePath = choice ?? null;
|
|
334
|
-
}
|
|
335
|
-
if (!sourcePath) {
|
|
336
|
-
process.exitCode = 1;
|
|
337
|
-
console.log(chalk.red(" Could not find a source folder with Interf knowledge bases. Run this from a source folder, knowledge base, or interface first."));
|
|
338
|
-
return;
|
|
339
|
-
}
|
|
340
|
-
const type = await chooseTargetType(sourcePath, argv.type);
|
|
341
|
-
if (p.isCancel(type))
|
|
342
|
-
return;
|
|
343
|
-
if (!type) {
|
|
344
|
-
process.exitCode = 1;
|
|
345
|
-
console.log(chalk.red(" Could not determine what to benchmark."));
|
|
346
|
-
return;
|
|
347
|
-
}
|
|
348
|
-
const targets = await chooseTargets(sourcePath, type);
|
|
349
|
-
if (p.isCancel(targets))
|
|
350
|
-
return;
|
|
351
|
-
if (!targets || targets.length === 0) {
|
|
352
|
-
process.exitCode = 1;
|
|
353
|
-
console.log(chalk.red(` No compiled ${type === "knowledge-base" ? "knowledge bases" : "interfaces"} are eligible to benchmark yet.`));
|
|
354
|
-
return;
|
|
355
|
-
}
|
|
356
|
-
const spec = await chooseBenchmarkSpec(sourcePath, type, targets, argv.spec);
|
|
357
|
-
if (p.isCancel(spec))
|
|
358
|
-
return;
|
|
359
|
-
if (!spec) {
|
|
360
|
-
process.exitCode = 1;
|
|
361
|
-
return;
|
|
362
|
-
}
|
|
363
|
-
try {
|
|
364
|
-
const results = await runSelectedBenchmark(sourcePath, spec, targets);
|
|
365
|
-
const runPath = saveBenchmarkRun(sourcePath, results);
|
|
366
|
-
printBenchmarkResults(runPath, results);
|
|
367
|
-
}
|
|
368
|
-
catch (error) {
|
|
369
|
-
process.exitCode = 1;
|
|
370
|
-
console.log(chalk.red(error instanceof Error ? error.message : "Benchmark run failed."));
|
|
371
|
-
}
|
|
372
|
-
},
|
|
373
|
-
};
|
|
374
|
-
//# 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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"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
type TemplateValue = string | number | Array<string | number> | null | undefined;
|
|
2
|
-
export declare function loadBundledTemplate(relativePath: string): string;
|
|
3
|
-
export declare function renderBundledTemplate(relativePath: string, replacements?: Record<string, TemplateValue>): string;
|
|
4
|
-
export {};
|
|
5
|
-
//# sourceMappingURL=bundled-templates.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-templates.d.ts","sourceRoot":"","sources":["../../src/lib/bundled-templates.ts"],"names":[],"mappings":"AAIA,KAAK,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAYjF,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,MAAM,EACpB,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAM,GAC/C,MAAM,CAMR"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { readFileSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
3
|
-
import { TEMPLATES_DIR } from "./config.js";
|
|
4
|
-
function normalizeTemplateValue(value) {
|
|
5
|
-
if (Array.isArray(value)) {
|
|
6
|
-
return value.map((entry) => String(entry)).join("\n");
|
|
7
|
-
}
|
|
8
|
-
if (value === null || value === undefined) {
|
|
9
|
-
return "";
|
|
10
|
-
}
|
|
11
|
-
return String(value);
|
|
12
|
-
}
|
|
13
|
-
export function loadBundledTemplate(relativePath) {
|
|
14
|
-
return readFileSync(join(TEMPLATES_DIR, relativePath), "utf8");
|
|
15
|
-
}
|
|
16
|
-
export function renderBundledTemplate(relativePath, replacements = {}) {
|
|
17
|
-
let content = loadBundledTemplate(relativePath);
|
|
18
|
-
for (const [key, value] of Object.entries(replacements)) {
|
|
19
|
-
content = content.replaceAll(`{{${key}}}`, normalizeTemplateValue(value));
|
|
20
|
-
}
|
|
21
|
-
return content.endsWith("\n") ? content : `${content}\n`;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=bundled-templates.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bundled-templates.js","sourceRoot":"","sources":["../../src/lib/bundled-templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,SAAS,sBAAsB,CAAC,KAAoB;IAClD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,YAAoB;IACtD,OAAO,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,YAAoB,EACpB,eAA8C,EAAE;IAEhD,IAAI,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,KAAK,GAAG,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC;AAC3D,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { type InterfaceWorkflowId, type WorkflowStageDefinition } from "./workflow-definitions.js";
|
|
2
|
-
export declare function buildInterfaceStagePolicySection(notes: string[] | undefined): string[];
|
|
3
|
-
export declare function formatWorkflowStageFolders(stages: WorkflowStageDefinition[]): string;
|
|
4
|
-
export declare function formatWorkflowStageSequence(stages: WorkflowStageDefinition[]): string;
|
|
5
|
-
export declare function writeInterfaceCompilePlanTemplate(dirPath: string, options: {
|
|
6
|
-
workflowId: InterfaceWorkflowId;
|
|
7
|
-
sourcePath?: string;
|
|
8
|
-
interfaceName?: string;
|
|
9
|
-
useCase?: string;
|
|
10
|
-
targetQuestions?: string[];
|
|
11
|
-
}): void;
|
|
12
|
-
//# sourceMappingURL=interf-compile-plan.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interf-compile-plan.d.ts","sourceRoot":"","sources":["../../src/lib/interf-compile-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAC;AAGnC,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,MAAM,EAAE,CAQtF;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAEpF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,CAErF;AAiID,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IACP,UAAU,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B,GACA,IAAI,CAmBN"}
|