@interf/compiler 0.5.1 → 0.6.3
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 +160 -201
- package/builtin-workflows/interf/README.md +22 -10
- package/builtin-workflows/interf/compile/stages/shape/SKILL.md +8 -5
- package/builtin-workflows/interf/compile/stages/structure/SKILL.md +3 -0
- package/builtin-workflows/interf/compile/stages/summarize/SKILL.md +18 -2
- package/builtin-workflows/interf/improve/SKILL.md +4 -4
- package/builtin-workflows/interf/use/query/SKILL.md +1 -1
- package/builtin-workflows/interf/workflow.json +19 -5
- package/builtin-workflows/interf/{compiled.schema.json → workflow.schema.json} +10 -3
- package/dist/bin.js +2 -28
- package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
- package/dist/{commands → cli/commands}/check-draft.js +13 -13
- package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
- package/dist/{commands → cli/commands}/compile-controller.js +39 -44
- package/dist/cli/commands/compile.d.ts +33 -0
- package/dist/{commands → cli/commands}/compile.js +107 -33
- package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
- package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
- package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +20 -2
- package/dist/cli/commands/create-workflow-wizard.js +288 -0
- package/dist/{commands → cli/commands}/create.d.ts +2 -2
- package/dist/cli/commands/create.js +166 -0
- package/dist/cli/commands/dataset-selection.d.ts +6 -0
- package/dist/cli/commands/dataset-selection.js +11 -0
- package/dist/{commands → cli/commands}/default.js +5 -5
- package/dist/{commands → cli/commands}/doctor.js +12 -13
- package/dist/{commands → cli/commands}/executor-flow.d.ts +2 -2
- package/dist/{commands → cli/commands}/executor-flow.js +17 -17
- package/dist/cli/commands/init.d.ts +11 -0
- package/dist/{commands → cli/commands}/init.js +202 -109
- package/dist/{commands → cli/commands}/list.js +9 -6
- package/dist/{commands → cli/commands}/reset.js +5 -5
- package/dist/{commands → cli/commands}/source-config-wizard.d.ts +10 -5
- package/dist/{commands → cli/commands}/source-config-wizard.js +202 -95
- package/dist/{commands → cli/commands}/status.js +20 -11
- package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
- package/dist/{commands → cli/commands}/test-flow.js +30 -26
- package/dist/cli/commands/test.d.ts +14 -0
- package/dist/{commands → cli/commands}/test.js +48 -40
- package/dist/{commands → cli/commands}/verify.js +4 -4
- package/dist/cli/index.d.ts +21 -0
- package/dist/cli/index.js +33 -0
- package/dist/index.d.ts +22 -11
- package/dist/index.js +15 -6
- package/dist/lib/agent-args.d.ts +1 -3
- package/dist/lib/agent-args.js +1 -42
- package/dist/lib/agent-constants.d.ts +1 -5
- package/dist/lib/agent-constants.js +1 -28
- package/dist/lib/agent-detection.d.ts +1 -7
- package/dist/lib/agent-detection.js +1 -65
- package/dist/lib/agent-execution.d.ts +1 -2
- package/dist/lib/agent-execution.js +1 -242
- package/dist/lib/agent-logs.d.ts +1 -2
- package/dist/lib/agent-logs.js +1 -17
- package/dist/lib/agent-preflight.d.ts +1 -7
- package/dist/lib/agent-preflight.js +1 -76
- package/dist/lib/agent-render.d.ts +1 -8
- package/dist/lib/agent-render.js +1 -218
- package/dist/lib/agent-shells.d.ts +1 -44
- package/dist/lib/agent-shells.js +1 -847
- package/dist/lib/agent-status.d.ts +1 -3
- package/dist/lib/agent-status.js +1 -58
- package/dist/lib/agent-types.d.ts +1 -30
- package/dist/lib/agent-types.js +1 -1
- package/dist/lib/agents.d.ts +1 -6
- package/dist/lib/agents.js +1 -5
- package/dist/lib/builtin-compiled-workflow.d.ts +1 -129
- package/dist/lib/builtin-compiled-workflow.js +1 -153
- package/dist/lib/compiled-compile.d.ts +1 -52
- package/dist/lib/compiled-compile.js +1 -274
- package/dist/lib/compiled-paths.d.ts +1 -39
- package/dist/lib/compiled-paths.js +3 -103
- package/dist/lib/compiled-raw.d.ts +1 -49
- package/dist/lib/compiled-raw.js +3 -102
- package/dist/lib/compiled-reset.d.ts +1 -1
- package/dist/lib/compiled-reset.js +3 -44
- package/dist/lib/compiled-schema.d.ts +1 -27
- package/dist/lib/compiled-schema.js +1 -110
- package/dist/lib/discovery.d.ts +1 -1
- package/dist/lib/discovery.js +2 -2
- package/dist/lib/execution-profile.d.ts +1 -17
- package/dist/lib/execution-profile.js +1 -84
- package/dist/lib/executors.d.ts +1 -32
- package/dist/lib/executors.js +1 -43
- package/dist/lib/interf-bootstrap.d.ts +1 -3
- package/dist/lib/interf-bootstrap.js +3 -18
- package/dist/lib/interf-detect.d.ts +1 -33
- package/dist/lib/interf-detect.js +3 -176
- package/dist/lib/interf-scaffold.d.ts +1 -2
- package/dist/lib/interf-scaffold.js +3 -121
- package/dist/lib/interf-workflow-package.d.ts +1 -20
- package/dist/lib/interf-workflow-package.js +1 -276
- package/dist/lib/interf.d.ts +1 -5
- package/dist/lib/interf.js +3 -4
- package/dist/lib/local-workflows.d.ts +1 -53
- package/dist/lib/local-workflows.js +1 -399
- package/dist/lib/package-root.d.ts +1 -0
- package/dist/lib/package-root.js +1 -0
- package/dist/lib/project-paths.d.ts +1 -11
- package/dist/lib/project-paths.js +3 -32
- package/dist/lib/runtime-acceptance.d.ts +1 -9
- package/dist/lib/runtime-acceptance.js +1 -257
- package/dist/lib/runtime-contracts.d.ts +1 -2
- package/dist/lib/runtime-contracts.js +1 -47
- package/dist/lib/runtime-inventory.d.ts +1 -7
- package/dist/lib/runtime-inventory.js +1 -29
- package/dist/lib/runtime-paths.d.ts +1 -7
- package/dist/lib/runtime-paths.js +1 -23
- package/dist/lib/runtime-prompt.d.ts +1 -2
- package/dist/lib/runtime-prompt.js +1 -46
- package/dist/lib/runtime-reconcile.d.ts +1 -2
- package/dist/lib/runtime-reconcile.js +1 -156
- package/dist/lib/runtime-runs.d.ts +1 -11
- package/dist/lib/runtime-runs.js +1 -250
- package/dist/lib/runtime-types.d.ts +1 -43
- package/dist/lib/runtime-types.js +1 -1
- package/dist/lib/runtime.d.ts +1 -6
- package/dist/lib/runtime.js +1 -5
- package/dist/lib/schema.d.ts +4 -1016
- package/dist/lib/schema.js +6 -539
- package/dist/lib/source-config.d.ts +1 -39
- package/dist/lib/source-config.js +3 -293
- package/dist/lib/state-artifacts.d.ts +1 -8
- package/dist/lib/state-artifacts.js +1 -13
- package/dist/lib/state-health.d.ts +1 -4
- package/dist/lib/state-health.js +1 -132
- package/dist/lib/state-io.d.ts +1 -10
- package/dist/lib/state-io.js +1 -76
- package/dist/lib/state-paths.d.ts +1 -4
- package/dist/lib/state-paths.js +1 -13
- package/dist/lib/state-view.d.ts +1 -4
- package/dist/lib/state-view.js +1 -103
- package/dist/lib/state.d.ts +1 -6
- package/dist/lib/state.js +1 -5
- package/dist/lib/test-execution.d.ts +1 -14
- package/dist/lib/test-execution.js +3 -525
- package/dist/lib/test-matrices.d.ts +1 -90
- package/dist/lib/test-matrices.js +3 -96
- package/dist/lib/test-paths.d.ts +1 -12
- package/dist/lib/test-paths.js +3 -59
- package/dist/lib/test-profile-presets.d.ts +1 -57
- package/dist/lib/test-profile-presets.js +3 -50
- package/dist/lib/test-sandbox.d.ts +1 -11
- package/dist/lib/test-sandbox.js +3 -105
- package/dist/lib/test-specs.d.ts +1 -7
- package/dist/lib/test-specs.js +3 -114
- package/dist/lib/test-targets.d.ts +1 -5
- package/dist/lib/test-targets.js +3 -38
- package/dist/lib/test-types.d.ts +1 -17
- package/dist/lib/test-types.js +3 -1
- package/dist/lib/test.d.ts +1 -4
- package/dist/lib/test.js +3 -3
- package/dist/lib/validate-compiled.d.ts +1 -27
- package/dist/lib/validate-compiled.js +1 -238
- package/dist/lib/validate-helpers.d.ts +1 -12
- package/dist/lib/validate-helpers.js +1 -41
- package/dist/lib/validate.d.ts +1 -19
- package/dist/lib/validate.js +1 -256
- package/dist/lib/workflow-authoring.d.ts +1 -0
- package/dist/lib/workflow-authoring.js +1 -0
- package/dist/lib/workflow-definitions.d.ts +1 -68
- package/dist/lib/workflow-definitions.js +1 -206
- package/dist/lib/workflow-edit-session.d.ts +1 -0
- package/dist/lib/workflow-edit-session.js +1 -0
- package/dist/lib/workflow-edit-utils.d.ts +1 -0
- package/dist/lib/workflow-edit-utils.js +1 -0
- package/dist/lib/workflow-helpers.d.ts +1 -38
- package/dist/lib/workflow-helpers.js +1 -167
- package/dist/lib/workflow-improvement.d.ts +1 -22
- package/dist/lib/workflow-improvement.js +1 -396
- package/dist/lib/workflow-primitives.d.ts +1 -2
- package/dist/lib/workflow-primitives.js +1 -5
- package/dist/lib/workflow-review-paths.d.ts +1 -10
- package/dist/lib/workflow-review-paths.js +1 -27
- package/dist/lib/workflow-stage-policy.d.ts +1 -0
- package/dist/lib/workflow-stage-policy.js +1 -0
- package/dist/lib/workflow-stage-runner.d.ts +1 -41
- package/dist/lib/workflow-stage-runner.js +1 -109
- package/dist/lib/workflows.d.ts +1 -15
- package/dist/lib/workflows.js +1 -31
- package/dist/packages/agents/index.d.ts +17 -0
- package/dist/packages/agents/index.js +15 -0
- package/dist/packages/agents/lib/agents.d.ts +6 -0
- package/dist/packages/agents/lib/agents.js +5 -0
- package/dist/packages/agents/lib/args.d.ts +4 -0
- package/dist/packages/agents/lib/args.js +52 -0
- package/dist/packages/agents/lib/constants.d.ts +5 -0
- package/dist/packages/agents/lib/constants.js +28 -0
- package/dist/packages/agents/lib/detection.d.ts +7 -0
- package/dist/packages/agents/lib/detection.js +65 -0
- package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
- package/dist/packages/agents/lib/execution-profile.js +84 -0
- package/dist/packages/agents/lib/execution.d.ts +2 -0
- package/dist/packages/agents/lib/execution.js +243 -0
- package/dist/packages/agents/lib/executors.d.ts +32 -0
- package/dist/packages/agents/lib/executors.js +45 -0
- package/dist/packages/agents/lib/logs.d.ts +2 -0
- package/dist/packages/agents/lib/logs.js +17 -0
- package/dist/packages/agents/lib/preflight.d.ts +7 -0
- package/dist/packages/agents/lib/preflight.js +77 -0
- package/dist/packages/agents/lib/render.d.ts +8 -0
- package/dist/packages/agents/lib/render.js +218 -0
- package/dist/packages/agents/lib/schema.d.ts +8 -0
- package/dist/packages/agents/lib/schema.js +7 -0
- package/dist/packages/agents/lib/shells.d.ts +69 -0
- package/dist/packages/agents/lib/shells.js +1021 -0
- package/dist/packages/agents/lib/status.d.ts +3 -0
- package/dist/packages/agents/lib/status.js +58 -0
- package/dist/packages/agents/lib/types.d.ts +30 -0
- package/dist/packages/agents/lib/types.js +1 -0
- package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
- package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
- package/dist/packages/compiler/compiled-compile.d.ts +48 -0
- package/dist/packages/compiler/compiled-compile.js +256 -0
- package/dist/packages/compiler/compiled-schema.d.ts +31 -0
- package/dist/packages/compiler/compiled-schema.js +141 -0
- package/dist/packages/compiler/index.d.ts +24 -0
- package/dist/packages/compiler/index.js +23 -0
- package/dist/packages/compiler/lib/schema.d.ts +684 -0
- package/dist/packages/compiler/lib/schema.js +361 -0
- package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
- package/dist/packages/compiler/runtime-acceptance.js +269 -0
- package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
- package/dist/packages/compiler/runtime-contracts.js +48 -0
- package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
- package/dist/packages/compiler/runtime-inventory.js +29 -0
- package/dist/packages/compiler/runtime-paths.d.ts +8 -0
- package/dist/packages/compiler/runtime-paths.js +26 -0
- package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
- package/dist/packages/compiler/runtime-prompt.js +48 -0
- package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
- package/dist/packages/compiler/runtime-reconcile.js +193 -0
- package/dist/packages/compiler/runtime-runs.d.ts +11 -0
- package/dist/packages/compiler/runtime-runs.js +262 -0
- package/dist/packages/compiler/runtime-types.d.ts +43 -0
- package/dist/packages/compiler/runtime-types.js +1 -0
- package/dist/packages/compiler/runtime.d.ts +6 -0
- package/dist/packages/compiler/runtime.js +5 -0
- package/dist/packages/compiler/state-artifacts.d.ts +8 -0
- package/dist/packages/compiler/state-artifacts.js +13 -0
- package/dist/packages/compiler/state-health.d.ts +4 -0
- package/dist/packages/compiler/state-health.js +132 -0
- package/dist/packages/compiler/state-io.d.ts +10 -0
- package/dist/packages/compiler/state-io.js +76 -0
- package/dist/packages/compiler/state-paths.d.ts +4 -0
- package/dist/packages/compiler/state-paths.js +13 -0
- package/dist/packages/compiler/state-view.d.ts +4 -0
- package/dist/packages/compiler/state-view.js +103 -0
- package/dist/packages/compiler/state.d.ts +7 -0
- package/dist/packages/compiler/state.js +12 -0
- package/dist/packages/compiler/validate-compiled.d.ts +27 -0
- package/dist/packages/compiler/validate-compiled.js +241 -0
- package/dist/packages/compiler/validate-helpers.d.ts +12 -0
- package/dist/packages/compiler/validate-helpers.js +41 -0
- package/dist/packages/compiler/validate.d.ts +21 -0
- package/dist/packages/compiler/validate.js +249 -0
- package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
- package/dist/packages/compiler/workflow-primitives.js +5 -0
- package/dist/packages/compiler/workflows.d.ts +15 -0
- package/dist/packages/compiler/workflows.js +31 -0
- package/dist/packages/project-model/compiled-paths.d.ts +40 -0
- package/dist/packages/project-model/compiled-paths.js +106 -0
- package/dist/packages/project-model/compiled-raw.d.ts +49 -0
- package/dist/packages/project-model/compiled-raw.js +102 -0
- package/dist/packages/project-model/compiled-reset.d.ts +2 -0
- package/dist/packages/project-model/compiled-reset.js +72 -0
- package/dist/packages/project-model/index.d.ts +11 -0
- package/dist/packages/project-model/index.js +10 -0
- package/dist/packages/project-model/interf-bootstrap.d.ts +3 -0
- package/dist/packages/project-model/interf-bootstrap.js +18 -0
- package/dist/packages/project-model/interf-detect.d.ts +33 -0
- package/dist/packages/project-model/interf-detect.js +176 -0
- package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
- package/dist/packages/project-model/interf-scaffold.js +124 -0
- package/dist/packages/project-model/interf.d.ts +5 -0
- package/dist/packages/project-model/interf.js +4 -0
- package/dist/packages/project-model/lib/schema.d.ts +125 -0
- package/dist/packages/project-model/lib/schema.js +62 -0
- package/dist/packages/project-model/project-paths.d.ts +11 -0
- package/dist/packages/project-model/project-paths.js +32 -0
- package/dist/packages/project-model/source-config.d.ts +38 -0
- package/dist/packages/project-model/source-config.js +297 -0
- package/dist/packages/testing/index.d.ts +13 -0
- package/dist/packages/testing/index.js +10 -0
- package/dist/packages/testing/lib/schema.d.ts +261 -0
- package/dist/packages/testing/lib/schema.js +119 -0
- package/dist/packages/testing/test-execution.d.ts +14 -0
- package/dist/packages/testing/test-execution.js +525 -0
- package/dist/packages/testing/test-matrices.d.ts +90 -0
- package/dist/packages/testing/test-matrices.js +96 -0
- package/dist/packages/testing/test-paths.d.ts +12 -0
- package/dist/packages/testing/test-paths.js +59 -0
- package/dist/packages/testing/test-profile-presets.d.ts +57 -0
- package/dist/packages/testing/test-profile-presets.js +50 -0
- package/dist/packages/testing/test-sandbox.d.ts +11 -0
- package/dist/packages/testing/test-sandbox.js +105 -0
- package/dist/packages/testing/test-specs.d.ts +7 -0
- package/dist/packages/testing/test-specs.js +114 -0
- package/dist/packages/testing/test-targets.d.ts +5 -0
- package/dist/packages/testing/test-targets.js +38 -0
- package/dist/packages/testing/test-types.d.ts +16 -0
- package/dist/packages/testing/test-types.js +1 -0
- package/dist/packages/testing/test.d.ts +4 -0
- package/dist/packages/testing/test.js +3 -0
- package/dist/packages/workflow-authoring/index.d.ts +4 -0
- package/dist/packages/workflow-authoring/index.js +4 -0
- package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
- package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
- package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
- package/dist/packages/workflow-authoring/workflow-authoring.js +120 -0
- package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
- package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
- package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
- package/dist/packages/workflow-authoring/workflow-improvement.js +209 -0
- package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
- package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
- package/dist/packages/workflow-package/index.d.ts +9 -0
- package/dist/packages/workflow-package/index.js +9 -0
- package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
- package/dist/packages/workflow-package/interf-workflow-package.js +342 -0
- package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
- package/dist/packages/workflow-package/lib/package-root.js +6 -0
- package/dist/packages/workflow-package/local-workflows.d.ts +54 -0
- package/dist/packages/workflow-package/local-workflows.js +422 -0
- package/dist/packages/workflow-package/workflow-definitions.d.ts +78 -0
- package/dist/packages/workflow-package/workflow-definitions.js +203 -0
- package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
- package/dist/packages/workflow-package/workflow-helpers.js +167 -0
- package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
- package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
- package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
- package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
- package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
- package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
- package/package.json +44 -21
- package/dist/commands/compile.d.ts +0 -15
- package/dist/commands/create-workflow-wizard.js +0 -125
- package/dist/commands/create.js +0 -162
- package/dist/commands/init.d.ts +0 -3
- package/dist/commands/test.d.ts +0 -9
- package/dist/lib/compiled-home.d.ts +0 -5
- package/dist/lib/compiled-home.js +0 -32
- package/dist/lib/config.js +0 -9
- package/dist/lib/obsidian.d.ts +0 -1
- package/dist/lib/obsidian.js +0 -15
- package/dist/lib/summarize-plan.d.ts +0 -17
- package/dist/lib/summarize-plan.js +0 -120
- /package/dist/{commands → cli/commands}/default.d.ts +0 -0
- /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
- /package/dist/{commands → cli/commands}/status.d.ts +0 -0
- /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { resolve } from "node:path";
|
|
4
|
+
import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
|
|
5
|
+
import { SOURCE_FOLDER_CONFIG_FILE, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../../packages/project-model/source-config.js";
|
|
5
6
|
import { DEFAULT_COMPILED_NAME, describeCompileLoopSelection, promptSingleCompiledConfig, } from "./source-config-wizard.js";
|
|
6
7
|
import { buildCompiledWorkflowOptions, chooseCompiledWorkflow, createWorkflowWizard, } from "./create-workflow-wizard.js";
|
|
7
|
-
import { findBuiltCompiledPath, findSavedCompiledConfig, listSavedCompiledEntries,
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import { runConfiguredCompiledCompile } from "./compile.js";
|
|
8
|
+
import { findBuiltCompiledPath, findSavedCompiledConfig, listSavedCompiledEntries, } from "./compiled-flow.js";
|
|
9
|
+
import { readCurrentSavedTestComparison, } from "./test-flow.js";
|
|
10
|
+
import { runCompileCommand } from "./compile.js";
|
|
11
11
|
import { runTestCommand } from "./test.js";
|
|
12
|
+
export function currentRunTargetStatus(rows, target) {
|
|
13
|
+
const outcomes = rows
|
|
14
|
+
.map((row) => (target === "raw" ? row.rawOutcome : row.compiledOutcome))
|
|
15
|
+
.filter((outcome) => Boolean(outcome));
|
|
16
|
+
if (outcomes.length === 0)
|
|
17
|
+
return "missing";
|
|
18
|
+
const passFlags = outcomes.map((outcome) => outcome.result.totalCases > 0 && outcome.result.passedCases === outcome.result.totalCases);
|
|
19
|
+
if (passFlags.every(Boolean))
|
|
20
|
+
return "pass";
|
|
21
|
+
if (passFlags.some(Boolean))
|
|
22
|
+
return "mixed";
|
|
23
|
+
return "fail";
|
|
24
|
+
}
|
|
12
25
|
function describeSavedQuestions(dataset) {
|
|
13
26
|
const count = dataset.checks.length;
|
|
14
27
|
if (count === 0)
|
|
15
|
-
return "No
|
|
16
|
-
return `${count}
|
|
17
|
-
}
|
|
18
|
-
function compileModeAlreadyRanSavedTests(dataset) {
|
|
19
|
-
if (dataset.checks.length === 0)
|
|
20
|
-
return false;
|
|
21
|
-
return (resolveDatasetCompileMaxAttempts(dataset) != null ||
|
|
22
|
-
resolveDatasetCompileMaxLoops(dataset) != null);
|
|
28
|
+
return "No checks yet";
|
|
29
|
+
return `${count} check${count === 1 ? "" : "s"}`;
|
|
23
30
|
}
|
|
24
31
|
function printDatasetSummary(options) {
|
|
25
32
|
const compiledConfig = options.builtCompiledPath
|
|
@@ -27,7 +34,7 @@ function printDatasetSummary(options) {
|
|
|
27
34
|
: null;
|
|
28
35
|
const workflowLabel = `${options.dataset.workflow ?? "interf"}${compiledConfig?.workflow_origin?.local_draft === true ? " (local draft)" : ""}`;
|
|
29
36
|
p.log.info(`Dataset: ${options.dataset.name}`);
|
|
30
|
-
p.log.info(`
|
|
37
|
+
p.log.info(`Source folder: ${options.dataset.path}`);
|
|
31
38
|
if (options.dataset.about) {
|
|
32
39
|
p.log.info(`About: ${options.dataset.about}`);
|
|
33
40
|
}
|
|
@@ -37,57 +44,62 @@ function printDatasetSummary(options) {
|
|
|
37
44
|
maxLoops: options.dataset.max_loops,
|
|
38
45
|
}));
|
|
39
46
|
p.log.info(describeSavedQuestions(options.dataset));
|
|
40
|
-
p.log.info(options.built ? "Compiled
|
|
47
|
+
p.log.info(options.built ? "Compiled context is available." : "Compiled context has not been built yet.");
|
|
41
48
|
if (options.latestComparison?.raw && options.latestComparison?.compiled) {
|
|
42
|
-
p.log.info(`Latest saved comparison: files-as-is ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}, compiled ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
|
|
49
|
+
p.log.info(`Latest saved comparison: files-as-is ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}, compiled context ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
|
|
43
50
|
}
|
|
44
51
|
else if (options.latestComparison?.raw) {
|
|
45
|
-
p.log.info(`Latest files-as-is
|
|
52
|
+
p.log.info(`Latest saved files-as-is run: ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}.`);
|
|
46
53
|
}
|
|
47
54
|
else if (options.latestComparison?.compiled) {
|
|
48
|
-
p.log.info(`Latest compiled run: ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
|
|
55
|
+
p.log.info(`Latest compiled-context run: ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
|
|
56
|
+
}
|
|
57
|
+
else if (options.latestComparisonStale) {
|
|
58
|
+
p.log.info("Saved test results are stale for the current checks.");
|
|
49
59
|
}
|
|
50
60
|
if (options.sourcePath !== process.cwd()) {
|
|
51
|
-
p.log.info(`
|
|
61
|
+
p.log.info(`Project folder: ${options.sourcePath}`);
|
|
52
62
|
}
|
|
53
63
|
}
|
|
54
64
|
async function promptDatasetAction(dataset, built, latestComparison) {
|
|
55
65
|
const options = [];
|
|
56
66
|
const hasSavedRawBaseline = Boolean(latestComparison?.raw);
|
|
57
|
-
const
|
|
67
|
+
const latestRawPasses = latestComparison?.raw &&
|
|
58
68
|
latestComparison.raw.passed_cases === latestComparison.raw.total_cases;
|
|
59
69
|
if (dataset.checks.length > 0) {
|
|
60
70
|
options.push({
|
|
61
71
|
value: "test",
|
|
62
72
|
label: built
|
|
63
|
-
? "
|
|
73
|
+
? "Compare files-as-is and compiled context (Recommended)"
|
|
64
74
|
: hasSavedRawBaseline
|
|
65
75
|
? "Rerun the files-as-is baseline"
|
|
66
76
|
: "Measure the files-as-is baseline (Recommended)",
|
|
67
77
|
hint: built
|
|
68
|
-
? "
|
|
78
|
+
? "See whether the compiled context helps on the checks"
|
|
69
79
|
: hasSavedRawBaseline
|
|
70
80
|
? "Refresh the saved raw baseline on the current checks"
|
|
71
|
-
: "See whether the
|
|
81
|
+
: "See whether the source files are already good enough before compiling",
|
|
72
82
|
});
|
|
73
83
|
}
|
|
74
84
|
options.push({
|
|
75
85
|
value: "compile",
|
|
76
|
-
label: built ? "Rebuild the compiled
|
|
86
|
+
label: built ? "Rebuild the compiled context" : "Build the compiled context",
|
|
77
87
|
hint: built
|
|
78
|
-
? "Refresh it from the current
|
|
88
|
+
? "Refresh it from the current source files"
|
|
79
89
|
: dataset.checks.length > 0
|
|
80
|
-
?
|
|
81
|
-
? "Optional:
|
|
82
|
-
:
|
|
90
|
+
? latestRawPasses
|
|
91
|
+
? "Optional: build the compiled context for a side-by-side comparison with the latest saved raw run"
|
|
92
|
+
: hasSavedRawBaseline
|
|
93
|
+
? "Some checks still fail on the source files. Build a context folder and compare it on the same checks"
|
|
94
|
+
: "Build a context folder and compare it on the same checks"
|
|
83
95
|
: "Build it first, then measure it later",
|
|
84
96
|
}, {
|
|
85
97
|
value: "dataset",
|
|
86
|
-
label: "Add another
|
|
98
|
+
label: "Add another setup",
|
|
87
99
|
hint: "Add a separate folder, focus, or question set",
|
|
88
100
|
}, {
|
|
89
101
|
value: "edit",
|
|
90
|
-
label: "Edit
|
|
102
|
+
label: "Edit checks and settings",
|
|
91
103
|
hint: "Update checks, focus, workflow, or compile mode",
|
|
92
104
|
}, {
|
|
93
105
|
value: "workflow",
|
|
@@ -108,22 +120,68 @@ async function promptDatasetAction(dataset, built, latestComparison) {
|
|
|
108
120
|
}
|
|
109
121
|
function printDatasetRecommendation(dataset, built, latestComparison) {
|
|
110
122
|
if (dataset.checks.length === 0) {
|
|
111
|
-
p.log.info("Recommended first step: save a few
|
|
123
|
+
p.log.info("Recommended first step: save a few checks for this dataset.");
|
|
112
124
|
return;
|
|
113
125
|
}
|
|
114
126
|
if (!built) {
|
|
115
127
|
if (latestComparison?.raw) {
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
120
|
-
p.log.info(`Latest files-as-is baseline: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Compile if you want to improve it.`);
|
|
128
|
+
p.log.info(latestComparison.raw.passed_cases === latestComparison.raw.total_cases
|
|
129
|
+
? `Latest files-as-is run: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Rerun the baseline if you want current numbers for a different agent set, or build the context folder if you want a side-by-side comparison.`
|
|
130
|
+
: `Latest files-as-is run: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Some checks still fail on the source files. Build the context folder if you want Interf to prepare the task context and compare it on the same checks.`);
|
|
121
131
|
return;
|
|
122
132
|
}
|
|
123
133
|
p.log.info("Recommended first step: measure the files-as-is baseline before compiling.");
|
|
124
134
|
return;
|
|
125
135
|
}
|
|
126
|
-
p.log.info("Recommended first step: compare the files-as-is baseline and the compiled
|
|
136
|
+
p.log.info("Recommended first step: compare the files-as-is baseline and the compiled context.");
|
|
137
|
+
}
|
|
138
|
+
async function promptPostBaselineAction(rows) {
|
|
139
|
+
const status = currentRunTargetStatus(rows, "raw");
|
|
140
|
+
const subject = rows.length === 1 ? "selected agent" : "selected agents";
|
|
141
|
+
if (status === "pass") {
|
|
142
|
+
p.log.info(`Files-as-is passed on all ${subject} in this run.`);
|
|
143
|
+
}
|
|
144
|
+
else if (status === "mixed") {
|
|
145
|
+
p.log.info(`Files-as-is was mixed across the ${subject} in this run.`);
|
|
146
|
+
}
|
|
147
|
+
else if (status === "fail") {
|
|
148
|
+
p.log.info(`Files-as-is did not pass on the ${subject} in this run.`);
|
|
149
|
+
}
|
|
150
|
+
const compileRecommended = status !== "pass";
|
|
151
|
+
const selected = await p.select({
|
|
152
|
+
message: "What do you want to do next?",
|
|
153
|
+
options: [
|
|
154
|
+
{
|
|
155
|
+
value: "compile",
|
|
156
|
+
label: compileRecommended
|
|
157
|
+
? "Build the compiled context (Recommended)"
|
|
158
|
+
: "Build the compiled context",
|
|
159
|
+
hint: compileRecommended
|
|
160
|
+
? status === "mixed"
|
|
161
|
+
? "Some selected agents still failed on the raw files. Build the compiled context and compare it on the same checks"
|
|
162
|
+
: "Build a compiled context and compare it on the same checks"
|
|
163
|
+
: "Build a compiled context and compare it on the same checks",
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
value: "edit",
|
|
167
|
+
label: "Change checks and settings",
|
|
168
|
+
hint: "Revise the checks or setup settings before the next run",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
value: "rerun",
|
|
172
|
+
label: "Rerun the files-as-is baseline",
|
|
173
|
+
hint: "Run the same checks again, including different local agents if you want",
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
value: "done",
|
|
177
|
+
label: "Stop here",
|
|
178
|
+
hint: "Leave the dataset as-is for now",
|
|
179
|
+
},
|
|
180
|
+
],
|
|
181
|
+
});
|
|
182
|
+
if (p.isCancel(selected))
|
|
183
|
+
return null;
|
|
184
|
+
return selected;
|
|
127
185
|
}
|
|
128
186
|
async function chooseCompiledForWizard(options) {
|
|
129
187
|
if (options.fixedCompiledName) {
|
|
@@ -135,7 +193,7 @@ async function chooseCompiledForWizard(options) {
|
|
|
135
193
|
if (savedEntries.length === 1)
|
|
136
194
|
return savedEntries[0]?.config ?? null;
|
|
137
195
|
const selected = await p.select({
|
|
138
|
-
message: "Which
|
|
196
|
+
message: "Which source folder setup do you want to work with?",
|
|
139
197
|
options: [
|
|
140
198
|
...savedEntries.map((entry) => ({
|
|
141
199
|
value: entry.config.name,
|
|
@@ -149,7 +207,7 @@ async function chooseCompiledForWizard(options) {
|
|
|
149
207
|
})),
|
|
150
208
|
{
|
|
151
209
|
value: "__new__",
|
|
152
|
-
label: "Add another
|
|
210
|
+
label: "Add another setup",
|
|
153
211
|
hint: "Add a separate folder, focus, or question set",
|
|
154
212
|
},
|
|
155
213
|
],
|
|
@@ -162,6 +220,8 @@ async function chooseCompiledForWizard(options) {
|
|
|
162
220
|
}
|
|
163
221
|
async function promptCompiledSetup(options) {
|
|
164
222
|
let workflowId = options.initial?.workflow ?? "interf";
|
|
223
|
+
let workflowLabel = buildCompiledWorkflowOptions(options.sourcePath)
|
|
224
|
+
.find((option) => option.value === workflowId)?.label ?? workflowId;
|
|
165
225
|
if (options.introStyle === "edit") {
|
|
166
226
|
const workflowChoice = await chooseCompiledWorkflow(options.sourcePath, {
|
|
167
227
|
currentWorkflowId: workflowId,
|
|
@@ -170,14 +230,13 @@ async function promptCompiledSetup(options) {
|
|
|
170
230
|
if (p.isCancel(workflowChoice))
|
|
171
231
|
return null;
|
|
172
232
|
workflowId = workflowChoice;
|
|
233
|
+
workflowLabel = buildCompiledWorkflowOptions(options.sourcePath)
|
|
234
|
+
.find((option) => option.value === workflowId)?.label ?? workflowId;
|
|
173
235
|
}
|
|
174
|
-
const workflowLabel = buildCompiledWorkflowOptions(options.sourcePath)
|
|
175
|
-
.find((option) => option.value === workflowId)?.label ?? workflowId;
|
|
176
236
|
const compiledConfig = await promptSingleCompiledConfig({
|
|
177
237
|
projectPath: options.sourcePath,
|
|
178
238
|
initial: options.initial,
|
|
179
239
|
...(options.fixedName ? { fixedName: options.fixedName } : {}),
|
|
180
|
-
skipNamePrompt: !options.fixedName && options.introStyle === "first",
|
|
181
240
|
introStyle: options.introStyle,
|
|
182
241
|
selectedWorkflowLabel: workflowLabel,
|
|
183
242
|
});
|
|
@@ -195,10 +254,10 @@ async function promptCompiledSetup(options) {
|
|
|
195
254
|
syncCompiledInterfConfigFromSourceDatasetConfig(builtCompiledPath, compiledConfigWithWorkflow);
|
|
196
255
|
}
|
|
197
256
|
console.log();
|
|
198
|
-
console.log(chalk.green(` ✓ Saved
|
|
199
|
-
console.log(chalk.dim(`
|
|
200
|
-
console.log(chalk.dim(`
|
|
201
|
-
console.log(chalk.dim(`
|
|
257
|
+
console.log(chalk.green(` ✓ Saved setup in ${SOURCE_FOLDER_CONFIG_FILE}`));
|
|
258
|
+
console.log(chalk.dim(` Project folder: ${options.sourcePath}`));
|
|
259
|
+
console.log(chalk.dim(` Setup: ${compiledConfigWithWorkflow.name}`));
|
|
260
|
+
console.log(chalk.dim(` Source folder: ${compiledConfigWithWorkflow.path}`));
|
|
202
261
|
console.log(chalk.dim(` Workflow: ${workflowLabel}`));
|
|
203
262
|
console.log(chalk.dim(` Compile mode: ${describeCompileLoopSelection({
|
|
204
263
|
maxAttempts: compiledConfigWithWorkflow.max_attempts,
|
|
@@ -206,41 +265,29 @@ async function promptCompiledSetup(options) {
|
|
|
206
265
|
})}`));
|
|
207
266
|
return compiledConfigWithWorkflow;
|
|
208
267
|
}
|
|
209
|
-
async function compileSelectedCompiled(sourcePath, compiledConfig) {
|
|
210
|
-
|
|
211
|
-
purpose: "compile",
|
|
212
|
-
});
|
|
213
|
-
if (!executor && !error) {
|
|
214
|
-
return null;
|
|
215
|
-
}
|
|
216
|
-
if (!executor) {
|
|
217
|
-
process.exitCode = 1;
|
|
218
|
-
console.log(chalk.red(error ?? "No coding agent detected."));
|
|
219
|
-
return null;
|
|
220
|
-
}
|
|
221
|
-
const compiledPath = ensureCompiledFromConfig(sourcePath, compiledConfig);
|
|
222
|
-
const compiled = await runConfiguredCompiledCompile({
|
|
223
|
-
executor,
|
|
224
|
-
compiledPath,
|
|
268
|
+
export async function compileSelectedCompiled(sourcePath, compiledConfig, deps = {}) {
|
|
269
|
+
return (deps.runCompileCommand ?? runCompileCommand)({
|
|
225
270
|
sourcePath,
|
|
226
|
-
compiledConfig,
|
|
227
|
-
|
|
228
|
-
|
|
271
|
+
dataset: compiledConfig.name,
|
|
272
|
+
datasetConfig: compiledConfig,
|
|
273
|
+
skipConfirm: true,
|
|
274
|
+
skipDatasetBanner: true,
|
|
229
275
|
});
|
|
230
|
-
if (!compiled) {
|
|
231
|
-
return null;
|
|
232
|
-
}
|
|
233
|
-
return compiledPath;
|
|
234
276
|
}
|
|
235
277
|
async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
236
278
|
const builtCompiledPath = findBuiltCompiledPath(sourcePath, compiledConfig.name);
|
|
237
|
-
const latestComparison =
|
|
279
|
+
const { comparison: latestComparison, stale: latestComparisonStale, } = readCurrentSavedTestComparison({
|
|
280
|
+
projectPath: sourcePath,
|
|
281
|
+
datasetName: compiledConfig.name,
|
|
282
|
+
checks: compiledConfig.checks,
|
|
283
|
+
});
|
|
238
284
|
printDatasetSummary({
|
|
239
285
|
sourcePath,
|
|
240
286
|
dataset: compiledConfig,
|
|
241
287
|
built: Boolean(builtCompiledPath),
|
|
242
288
|
builtCompiledPath,
|
|
243
289
|
latestComparison,
|
|
290
|
+
latestComparisonStale,
|
|
244
291
|
});
|
|
245
292
|
printDatasetRecommendation(compiledConfig, Boolean(builtCompiledPath), latestComparison);
|
|
246
293
|
const action = await promptDatasetAction(compiledConfig, Boolean(builtCompiledPath), latestComparison);
|
|
@@ -251,7 +298,28 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
251
298
|
return;
|
|
252
299
|
}
|
|
253
300
|
if (action === "workflow") {
|
|
254
|
-
await createWorkflowWizard({
|
|
301
|
+
const workflowId = await createWorkflowWizard({
|
|
302
|
+
sourcePath,
|
|
303
|
+
datasetContext: {
|
|
304
|
+
config: compiledConfig,
|
|
305
|
+
datasetPath: resolve(sourcePath, compiledConfig.path),
|
|
306
|
+
},
|
|
307
|
+
});
|
|
308
|
+
if (typeof workflowId === "string") {
|
|
309
|
+
const nextConfig = {
|
|
310
|
+
...compiledConfig,
|
|
311
|
+
workflow: workflowId,
|
|
312
|
+
};
|
|
313
|
+
upsertSourceDatasetConfig(sourcePath, nextConfig, {
|
|
314
|
+
matchName: compiledConfig.name,
|
|
315
|
+
});
|
|
316
|
+
const builtCompiledPath = findBuiltCompiledPath(sourcePath, compiledConfig.name);
|
|
317
|
+
if (builtCompiledPath) {
|
|
318
|
+
syncCompiledInterfConfigFromSourceDatasetConfig(builtCompiledPath, nextConfig);
|
|
319
|
+
}
|
|
320
|
+
p.log.info(`Assigned workflow "${workflowId}" to dataset "${compiledConfig.name}".`);
|
|
321
|
+
p.log.info("Next: run `interf compile`, then `interf test`.");
|
|
322
|
+
}
|
|
255
323
|
return;
|
|
256
324
|
}
|
|
257
325
|
if (action === "dataset") {
|
|
@@ -280,44 +348,67 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
280
348
|
if (action === "test") {
|
|
281
349
|
if (compiledConfig.checks.length === 0) {
|
|
282
350
|
process.exitCode = 1;
|
|
283
|
-
console.log(chalk.red(`
|
|
284
|
-
console.log(chalk.dim(" Run `interf`, edit this
|
|
351
|
+
console.log(chalk.red(` Setup "${compiledConfig.name}" does not have any checks yet.`));
|
|
352
|
+
console.log(chalk.dim(" Run `interf`, edit this setup, and add a few checks first."));
|
|
285
353
|
console.log(chalk.dim(" Then rerun `interf test`."));
|
|
286
354
|
return;
|
|
287
355
|
}
|
|
288
|
-
const baselineRan = await runTestCommand({
|
|
289
|
-
sourcePath,
|
|
290
|
-
dataset: compiledConfig.name,
|
|
291
|
-
datasetConfig: compiledConfig,
|
|
292
|
-
...(builtCompiledPath ? {} : { target: "raw" }),
|
|
293
|
-
});
|
|
294
|
-
if (!baselineRan) {
|
|
295
|
-
return;
|
|
296
|
-
}
|
|
297
356
|
if (builtCompiledPath) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
message: "The files-as-is baseline already passed. Compile this dataset anyway?",
|
|
304
|
-
initialValue: false,
|
|
357
|
+
const baselineRan = await runTestCommand({
|
|
358
|
+
sourcePath,
|
|
359
|
+
dataset: compiledConfig.name,
|
|
360
|
+
datasetConfig: compiledConfig,
|
|
361
|
+
target: "both",
|
|
305
362
|
});
|
|
306
|
-
if (
|
|
363
|
+
if (!baselineRan) {
|
|
307
364
|
return;
|
|
308
365
|
}
|
|
366
|
+
return;
|
|
309
367
|
}
|
|
310
|
-
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
368
|
+
while (true) {
|
|
369
|
+
const baselineCapture = { result: null };
|
|
370
|
+
const baselineRan = await runTestCommand({
|
|
371
|
+
sourcePath,
|
|
372
|
+
dataset: compiledConfig.name,
|
|
373
|
+
datasetConfig: compiledConfig,
|
|
374
|
+
target: "raw",
|
|
375
|
+
onComplete(result) {
|
|
376
|
+
baselineCapture.result = result;
|
|
377
|
+
},
|
|
314
378
|
});
|
|
315
|
-
|
|
379
|
+
const baselineResult = baselineCapture.result;
|
|
380
|
+
if (!baselineRan || !baselineResult) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const nextAction = await promptPostBaselineAction(baselineResult.rows);
|
|
384
|
+
if (!nextAction || nextAction === "done") {
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
if (nextAction === "rerun") {
|
|
388
|
+
continue;
|
|
389
|
+
}
|
|
390
|
+
if (nextAction === "edit") {
|
|
391
|
+
const nextCompiled = await promptCompiledSetup({
|
|
392
|
+
sourcePath,
|
|
393
|
+
initial: compiledConfig,
|
|
394
|
+
fixedName: compiledConfig.name,
|
|
395
|
+
introStyle: "edit",
|
|
396
|
+
});
|
|
397
|
+
if (!nextCompiled) {
|
|
398
|
+
return;
|
|
399
|
+
}
|
|
400
|
+
await runCompiledActionMenu(sourcePath, nextCompiled, { justConfigured: true });
|
|
316
401
|
return;
|
|
317
402
|
}
|
|
403
|
+
break;
|
|
318
404
|
}
|
|
319
|
-
const
|
|
320
|
-
if (!
|
|
405
|
+
const compileResult = await compileSelectedCompiled(sourcePath, compiledConfig);
|
|
406
|
+
if (!compileResult) {
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
if (compileResult.testedDuringCompile) {
|
|
410
|
+
p.log.info("This compile run already tested the compiled context on the checks.");
|
|
411
|
+
p.log.info("Run `interf test` later if you want a fresh side-by-side comparison summary.");
|
|
321
412
|
return;
|
|
322
413
|
}
|
|
323
414
|
await runTestCommand({
|
|
@@ -329,18 +420,20 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
329
420
|
return;
|
|
330
421
|
}
|
|
331
422
|
if (action === "compile") {
|
|
332
|
-
|
|
423
|
+
const compileResult = await compileSelectedCompiled(sourcePath, compiledConfig);
|
|
424
|
+
if (!compileResult)
|
|
333
425
|
return;
|
|
334
426
|
if (compiledConfig.checks.length === 0)
|
|
335
427
|
return;
|
|
336
|
-
if (
|
|
337
|
-
p.log.info("
|
|
338
|
-
return;
|
|
428
|
+
if (compileResult.testedDuringCompile) {
|
|
429
|
+
p.log.info("This compile run already tested the compiled context on the compile agent.");
|
|
339
430
|
}
|
|
340
431
|
const runCompiledTest = await p.confirm({
|
|
341
|
-
message:
|
|
342
|
-
? "Run files-as-is
|
|
343
|
-
:
|
|
432
|
+
message: compileResult.testedDuringCompile
|
|
433
|
+
? "Run a fresh files-as-is versus compiled-context comparison now?"
|
|
434
|
+
: builtCompiledPath
|
|
435
|
+
? "Run files-as-is and the compiled context on the checks now?"
|
|
436
|
+
: "Compare files-as-is and the compiled context on the checks now?",
|
|
344
437
|
initialValue: true,
|
|
345
438
|
});
|
|
346
439
|
if (p.isCancel(runCompiledTest) || !runCompiledTest)
|
|
@@ -356,19 +449,19 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
356
449
|
}
|
|
357
450
|
export const initCommand = {
|
|
358
451
|
command: "init",
|
|
359
|
-
describe: "Open the
|
|
452
|
+
describe: "Open the dataset wizard for this folder",
|
|
360
453
|
handler: async () => {
|
|
361
454
|
await runInitCommand();
|
|
362
455
|
},
|
|
363
456
|
};
|
|
364
457
|
export async function runInitCommand() {
|
|
365
|
-
p.intro(chalk.bold("Interf
|
|
366
|
-
p.log.info("
|
|
458
|
+
p.intro(chalk.bold("Interf"));
|
|
459
|
+
p.log.info("Interf prepares task context for your agents from the source folder you choose. Start with the task and a few checks, test the source files first, and compile a context folder when the current context is not good enough.");
|
|
367
460
|
const cwd = process.cwd();
|
|
368
461
|
const detected = detectInterf(cwd);
|
|
369
462
|
const sourcePath = detected ? resolveSourceControlPath(detected.path) : cwd;
|
|
370
463
|
if (detected) {
|
|
371
|
-
p.log.info(`Working from the
|
|
464
|
+
p.log.info(`Working from the project folder: ${sourcePath}`);
|
|
372
465
|
}
|
|
373
466
|
const savedEntries = listSavedCompiledEntries(sourcePath);
|
|
374
467
|
if (savedEntries.length === 0) {
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { detectInterf, resolveSourceControlPath, } from "
|
|
2
|
+
import { detectInterf, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
|
|
3
3
|
import { listSavedCompiledEntries } from "./compiled-flow.js";
|
|
4
4
|
export const listCommand = {
|
|
5
5
|
command: "list",
|
|
6
|
-
describe: "List
|
|
6
|
+
describe: "List saved setups in this project",
|
|
7
7
|
handler: async () => {
|
|
8
8
|
const detected = detectInterf(process.cwd());
|
|
9
9
|
const sourcePath = detected ? resolveSourceControlPath(detected.path) : process.cwd();
|
|
10
10
|
const datasets = listSavedCompiledEntries(sourcePath);
|
|
11
11
|
if (datasets.length === 0) {
|
|
12
|
-
console.log(chalk.dim(" Nothing found. Start with `interf
|
|
12
|
+
console.log(chalk.dim(" Nothing found. Start with `interf` or `interf init` to define a setup and save checks."));
|
|
13
13
|
return;
|
|
14
14
|
}
|
|
15
15
|
console.log();
|
|
16
|
-
console.log(chalk.bold("
|
|
16
|
+
console.log(chalk.bold(" Saved setups"));
|
|
17
17
|
console.log();
|
|
18
18
|
for (const dataset of datasets) {
|
|
19
19
|
console.log(` ${dataset.config.name}`);
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
if (dataset.config.about) {
|
|
21
|
+
console.log(chalk.dim(` task: ${dataset.config.about}`));
|
|
22
|
+
}
|
|
23
|
+
console.log(chalk.dim(` ${dataset.path ? "built" : "not built yet"} · source folder: ${dataset.config.path}`));
|
|
24
|
+
console.log(chalk.dim(` workflow: ${dataset.config.workflow ?? "interf"}${dataset.localDraft ? " (local draft)" : ""}`));
|
|
22
25
|
console.log(chalk.dim(` checks: ${dataset.config.checks.length}`));
|
|
23
26
|
}
|
|
24
27
|
},
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { detectInterf } from "
|
|
3
|
-
import { resetCompiledGeneratedState } from "
|
|
2
|
+
import { detectInterf } from "../../packages/project-model/interf.js";
|
|
3
|
+
import { resetCompiledGeneratedState } from "../../packages/project-model/compiled-reset.js";
|
|
4
4
|
export const resetCommand = {
|
|
5
5
|
command: "reset <scope>",
|
|
6
|
-
describe: "Reset generated compiled state while keeping
|
|
6
|
+
describe: "Reset generated compiled state while keeping `raw/` and the local workflow package",
|
|
7
7
|
builder: (yargs) => yargs.positional("scope", {
|
|
8
8
|
type: "string",
|
|
9
9
|
choices: ["compile", "all"],
|
|
@@ -12,11 +12,11 @@ export const resetCommand = {
|
|
|
12
12
|
const detected = detectInterf(process.cwd());
|
|
13
13
|
if (!detected) {
|
|
14
14
|
process.exitCode = 1;
|
|
15
|
-
console.log(chalk.red("Run this from inside a compiled
|
|
15
|
+
console.log(chalk.red("Run this from inside a compiled context."));
|
|
16
16
|
return;
|
|
17
17
|
}
|
|
18
18
|
const compiledPath = detected.path;
|
|
19
19
|
resetCompiledGeneratedState(compiledPath, argv.scope);
|
|
20
|
-
console.log(chalk.green(" Compiled reset complete."));
|
|
20
|
+
console.log(chalk.green(" Compiled-context reset complete."));
|
|
21
21
|
},
|
|
22
22
|
};
|
|
@@ -1,16 +1,22 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type SourceDatasetConfig, type SourceTruthCheck } from "../../packages/project-model/index.js";
|
|
2
2
|
export declare const DEFAULT_COMPILED_NAME = "dataset1";
|
|
3
|
-
export declare const DEFAULT_COMPILED_CHECK_QUESTION_PLACEHOLDER = "A question you can already verify from this
|
|
3
|
+
export declare const DEFAULT_COMPILED_CHECK_QUESTION_PLACEHOLDER = "A question you can already verify from this source folder";
|
|
4
4
|
export declare const DEFAULT_COMPILED_CHECK_ANSWER_PLACEHOLDER = "The expected answer in plain English";
|
|
5
|
-
export declare const DEFAULT_COMPILED_ABOUT_PLACEHOLDER = "Example:
|
|
5
|
+
export declare const DEFAULT_COMPILED_ABOUT_PLACEHOLDER = "Example: board-prep questions from these files, chart reads from this report, or tax review from these exports.";
|
|
6
6
|
export declare const DEFAULT_DATASET_PATH_PLACEHOLDER = "./dataset1";
|
|
7
|
-
export declare const DEFAULT_COMPILE_RETRY_ATTEMPTS =
|
|
7
|
+
export declare const DEFAULT_COMPILE_RETRY_ATTEMPTS = 3;
|
|
8
8
|
export declare const DEFAULT_SELF_IMPROVING_LOOPS = 3;
|
|
9
9
|
export type CompileLoopMode = "once" | "retry" | "self-improving";
|
|
10
10
|
export interface CompileLoopSelection {
|
|
11
11
|
max_attempts?: number;
|
|
12
12
|
max_loops?: number;
|
|
13
13
|
}
|
|
14
|
+
export declare function normalizeDatasetPathForConfig(projectPath: string, value: string): string;
|
|
15
|
+
export declare function listDatasetFolderChoices(cwd?: string): Array<{
|
|
16
|
+
value: string;
|
|
17
|
+
label: string;
|
|
18
|
+
hint: string;
|
|
19
|
+
}>;
|
|
14
20
|
export declare function defaultDatasetPathForPrompt(name: string, introStyle: "first" | "additional" | "edit", cwd?: string): string;
|
|
15
21
|
export declare function datasetAboutPromptMessage(introStyle: "first" | "additional" | "edit"): string;
|
|
16
22
|
export declare function resolveCompileLoopMode(maxAttempts?: number | null, maxLoops?: number | null): CompileLoopMode;
|
|
@@ -41,7 +47,6 @@ export declare function promptSingleCompiledConfig(options?: {
|
|
|
41
47
|
initial?: Partial<Pick<SourceDatasetConfig, "name" | "path" | "about" | "checks" | "max_attempts" | "max_loops">>;
|
|
42
48
|
fixedName?: string;
|
|
43
49
|
skipAboutPrompt?: boolean;
|
|
44
|
-
skipNamePrompt?: boolean;
|
|
45
50
|
introStyle?: "first" | "additional" | "edit";
|
|
46
51
|
selectedWorkflowLabel?: string;
|
|
47
52
|
}): Promise<SourceDatasetConfig | null>;
|