@interf/compiler 0.6.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 +94 -74
- package/builtin-workflows/interf/README.md +5 -5
- package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
- package/builtin-workflows/interf/improve/SKILL.md +2 -2
- package/builtin-workflows/interf/use/query/SKILL.md +1 -1
- package/builtin-workflows/interf/workflow.json +6 -6
- package/builtin-workflows/interf/workflow.schema.json +1 -1
- 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 +12 -12
- package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
- package/dist/{commands → cli/commands}/compile-controller.js +36 -34
- package/dist/{commands → cli/commands}/compile.d.ts +2 -2
- package/dist/{commands → cli/commands}/compile.js +15 -11
- 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 +3 -3
- package/dist/{commands → cli/commands}/create-workflow-wizard.js +61 -34
- package/dist/{commands → cli/commands}/create.d.ts +1 -1
- package/dist/{commands → cli/commands}/create.js +15 -18
- package/dist/{commands → cli/commands}/dataset-selection.d.ts +1 -1
- package/dist/{commands → cli/commands}/default.js +3 -3
- package/dist/{commands → cli/commands}/doctor.js +5 -6
- package/dist/{commands → cli/commands}/executor-flow.d.ts +1 -1
- package/dist/{commands → cli/commands}/executor-flow.js +13 -16
- package/dist/{commands → cli/commands}/init.d.ts +4 -1
- package/dist/{commands → cli/commands}/init.js +157 -72
- package/dist/{commands → cli/commands}/list.js +5 -5
- package/dist/{commands → cli/commands}/reset.js +4 -4
- package/dist/{commands → cli/commands}/source-config-wizard.d.ts +8 -3
- package/dist/{commands → cli/commands}/source-config-wizard.js +161 -87
- 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 +39 -23
- 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 -4
- package/dist/lib/agent-args.js +1 -52
- 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 -243
- 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 -77
- 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 -69
- package/dist/lib/agent-shells.js +1 -1021
- 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 -38
- package/dist/lib/builtin-compiled-workflow.js +1 -94
- package/dist/lib/compiled-compile.d.ts +1 -48
- package/dist/lib/compiled-compile.js +1 -255
- package/dist/lib/compiled-paths.d.ts +1 -40
- package/dist/lib/compiled-paths.js +3 -106
- 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 -2
- package/dist/lib/compiled-reset.js +3 -72
- package/dist/lib/compiled-schema.d.ts +1 -31
- package/dist/lib/compiled-schema.js +1 -141
- 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 -114
- package/dist/lib/interf-workflow-package.d.ts +1 -25
- package/dist/lib/interf-workflow-package.js +1 -342
- package/dist/lib/interf.d.ts +1 -5
- package/dist/lib/interf.js +3 -4
- package/dist/lib/local-workflows.d.ts +1 -54
- package/dist/lib/local-workflows.js +1 -422
- 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 -269
- package/dist/lib/runtime-contracts.d.ts +1 -2
- package/dist/lib/runtime-contracts.js +1 -48
- 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 -8
- package/dist/lib/runtime-paths.js +1 -26
- package/dist/lib/runtime-prompt.d.ts +1 -2
- package/dist/lib/runtime-prompt.js +1 -48
- package/dist/lib/runtime-reconcile.d.ts +1 -2
- package/dist/lib/runtime-reconcile.js +1 -193
- package/dist/lib/runtime-runs.d.ts +1 -11
- package/dist/lib/runtime-runs.js +1 -262
- 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 -1073
- package/dist/lib/schema.js +6 -542
- 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 -7
- package/dist/lib/state.js +1 -12
- 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 -241
- package/dist/lib/validate-helpers.d.ts +1 -12
- package/dist/lib/validate-helpers.js +1 -41
- package/dist/lib/validate.d.ts +1 -21
- package/dist/lib/validate.js +1 -249
- package/dist/lib/workflow-authoring.d.ts +1 -26
- package/dist/lib/workflow-authoring.js +1 -119
- package/dist/lib/workflow-definitions.d.ts +1 -78
- package/dist/lib/workflow-definitions.js +1 -203
- package/dist/lib/workflow-edit-session.d.ts +1 -16
- package/dist/lib/workflow-edit-session.js +1 -57
- package/dist/lib/workflow-edit-utils.d.ts +1 -10
- package/dist/lib/workflow-edit-utils.js +1 -39
- 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 -209
- 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 -5
- package/dist/lib/workflow-stage-policy.js +1 -31
- 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 +43 -19
- package/dist/commands/test.d.ts +0 -3
- 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/{commands → cli/commands}/dataset-selection.js +0 -0
- /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,12 +1,12 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import { existsSync, mkdirSync, writeFileSync } from "node:fs";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
|
-
import { createRawTestTarget, createCompiledTestTarget, runTargetTestsAuto, saveTargetTestRun, } from "
|
|
5
|
-
import { buildTestSpecFromSourceFolderConfig, buildTestSpecFromCompiledDatasetConfig, resolveSourceDatasetPath, } from "
|
|
6
|
-
import { datasetLatestTestStatePath, datasetLatestTestSummaryPath, normalizeDatasetTestRunId, datasetTestRunPath, datasetTestRunsRoot, datasetTestsRoot, } from "
|
|
7
|
-
import { testRootForCompiled } from "
|
|
8
|
-
import { readJsonFileWithSchema } from "
|
|
9
|
-
import { TestRunComparisonSchema } from "
|
|
4
|
+
import { createRawTestTarget, createCompiledTestTarget, runTargetTestsAuto, saveTargetTestRun, } from "../../packages/testing/test.js";
|
|
5
|
+
import { buildTestSpecFromSourceFolderConfig, buildTestSpecFromCompiledDatasetConfig, fingerprintTruthChecks, resolveSourceDatasetPath, } from "../../packages/project-model/source-config.js";
|
|
6
|
+
import { datasetLatestTestStatePath, datasetLatestTestSummaryPath, normalizeDatasetTestRunId, datasetTestRunPath, datasetTestRunsRoot, datasetTestsRoot, } from "../../packages/project-model/project-paths.js";
|
|
7
|
+
import { testRootForCompiled } from "../../packages/project-model/compiled-paths.js";
|
|
8
|
+
import { readJsonFileWithSchema } from "../../lib/parse.js";
|
|
9
|
+
import { TestRunComparisonSchema } from "../../packages/testing/lib/schema.js";
|
|
10
10
|
import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
|
|
11
11
|
import { findBuiltCompiledPath } from "./compiled-flow.js";
|
|
12
12
|
export function questionPassRate(outcome) {
|
|
@@ -45,6 +45,17 @@ function loadLatestComparison(projectPath, datasetName) {
|
|
|
45
45
|
export function readSavedTestComparison(projectPath, datasetName) {
|
|
46
46
|
return loadLatestComparison(projectPath, datasetName);
|
|
47
47
|
}
|
|
48
|
+
export function readCurrentSavedTestComparison(options) {
|
|
49
|
+
const latestComparison = readSavedTestComparison(options.projectPath, options.datasetName);
|
|
50
|
+
if (!latestComparison) {
|
|
51
|
+
return { comparison: null, stale: false };
|
|
52
|
+
}
|
|
53
|
+
const currentFingerprint = fingerprintTruthChecks(options.checks);
|
|
54
|
+
if (!latestComparison.checks_fingerprint || latestComparison.checks_fingerprint !== currentFingerprint) {
|
|
55
|
+
return { comparison: null, stale: true };
|
|
56
|
+
}
|
|
57
|
+
return { comparison: latestComparison, stale: false };
|
|
58
|
+
}
|
|
48
59
|
function renderLatestSummaryMarkdown(payload) {
|
|
49
60
|
const lines = [
|
|
50
61
|
"# Latest Test Result",
|
|
@@ -56,7 +67,7 @@ function renderLatestSummaryMarkdown(payload) {
|
|
|
56
67
|
lines.push(`| Files as-is | \`${payload.raw.passed_cases}/${payload.raw.total_cases}\` |`);
|
|
57
68
|
}
|
|
58
69
|
if (payload.compiled) {
|
|
59
|
-
lines.push(`|
|
|
70
|
+
lines.push(`| Context folder | \`${payload.compiled.passed_cases}/${payload.compiled.total_cases}\` |`);
|
|
60
71
|
}
|
|
61
72
|
lines.push("");
|
|
62
73
|
if (payload.summary.raw_pass_rate != null && payload.summary.compiled_pass_rate != null) {
|
|
@@ -81,7 +92,7 @@ export function printSavedTestComparisonState(payload, comparisonRunPath) {
|
|
|
81
92
|
console.log(` | Files as-is | \`${payload.raw.passed_cases}/${payload.raw.total_cases}\` |`);
|
|
82
93
|
}
|
|
83
94
|
if (payload.compiled) {
|
|
84
|
-
console.log(` |
|
|
95
|
+
console.log(` | Context folder | \`${payload.compiled.passed_cases}/${payload.compiled.total_cases}\` |`);
|
|
85
96
|
}
|
|
86
97
|
if (!payload.raw || !payload.compiled) {
|
|
87
98
|
console.log();
|
|
@@ -89,7 +100,7 @@ export function printSavedTestComparisonState(payload, comparisonRunPath) {
|
|
|
89
100
|
console.log(chalk.dim(" No saved files-as-is baseline yet."));
|
|
90
101
|
}
|
|
91
102
|
if (!payload.compiled) {
|
|
92
|
-
console.log(chalk.dim(" No saved compiled-
|
|
103
|
+
console.log(chalk.dim(" No saved compiled-context run yet."));
|
|
93
104
|
}
|
|
94
105
|
}
|
|
95
106
|
if (payload.summary.raw_pass_rate != null && payload.summary.compiled_pass_rate != null) {
|
|
@@ -126,7 +137,7 @@ export function printAgentTestMatrix(rows) {
|
|
|
126
137
|
const headers = [
|
|
127
138
|
"Agent",
|
|
128
139
|
...(includeRaw ? ["Files as-is"] : []),
|
|
129
|
-
...(includeCompiled ? ["
|
|
140
|
+
...(includeCompiled ? ["Context folder"] : []),
|
|
130
141
|
...(includeDelta ? ["Delta"] : []),
|
|
131
142
|
];
|
|
132
143
|
const body = rows.map((row) => [
|
|
@@ -151,7 +162,7 @@ export function printAgentTestFailures(rows) {
|
|
|
151
162
|
const failures = [];
|
|
152
163
|
for (const [label, outcome] of [
|
|
153
164
|
["Files as-is", row.rawOutcome ?? null],
|
|
154
|
-
["
|
|
165
|
+
["Context folder", row.compiledOutcome ?? null],
|
|
155
166
|
]) {
|
|
156
167
|
if (!outcome || outcome.result.ok)
|
|
157
168
|
continue;
|
|
@@ -221,7 +232,7 @@ export function printSavedTestComparison(rawOutcome, compiledOutcome, comparison
|
|
|
221
232
|
if (compiledOutcome) {
|
|
222
233
|
if (rawOutcome)
|
|
223
234
|
console.log();
|
|
224
|
-
printSavedTestOutcome("
|
|
235
|
+
printSavedTestOutcome("Context folder", compiledOutcome);
|
|
225
236
|
}
|
|
226
237
|
if (rawOutcome && compiledOutcome) {
|
|
227
238
|
const rawQuestions = questionPassRate(rawOutcome);
|
|
@@ -249,7 +260,7 @@ export function printSavedTestComparisonSummary(rawOutcome, compiledOutcome, com
|
|
|
249
260
|
console.log(` | Files as-is | \`${rawOutcome.result.passedCases}/${rawOutcome.result.totalCases}\` |`);
|
|
250
261
|
}
|
|
251
262
|
if (compiledOutcome) {
|
|
252
|
-
console.log(` |
|
|
263
|
+
console.log(` | Context folder | \`${compiledOutcome.result.passedCases}/${compiledOutcome.result.totalCases}\` |`);
|
|
253
264
|
}
|
|
254
265
|
if (rawOutcome && compiledOutcome) {
|
|
255
266
|
const rawQuestions = questionPassRate(rawOutcome);
|
|
@@ -267,19 +278,12 @@ export function printSavedTestComparisonSummary(rawOutcome, compiledOutcome, com
|
|
|
267
278
|
}
|
|
268
279
|
export function saveTestComparisonRun(options) {
|
|
269
280
|
const generatedAt = new Date().toISOString();
|
|
270
|
-
const existing = loadLatestComparison(options.sourcePath, options.compiledName);
|
|
271
|
-
const canReuseExisting = Boolean(existing?.checks_fingerprint) &&
|
|
272
|
-
existing?.checks_fingerprint === options.checksFingerprint;
|
|
273
281
|
const rawSummary = options.rawOutcome
|
|
274
282
|
? summarizeSavedTestOutcome("Files as-is", options.rawOutcome)
|
|
275
|
-
:
|
|
276
|
-
? existing?.raw ?? null
|
|
277
|
-
: null;
|
|
283
|
+
: null;
|
|
278
284
|
const compiledSummary = options.compiledOutcome
|
|
279
|
-
? summarizeSavedTestOutcome("
|
|
280
|
-
:
|
|
281
|
-
? existing?.compiled ?? null
|
|
282
|
-
: null;
|
|
285
|
+
? summarizeSavedTestOutcome("Context folder", options.compiledOutcome)
|
|
286
|
+
: null;
|
|
283
287
|
const effectiveMode = rawSummary && compiledSummary
|
|
284
288
|
? "both"
|
|
285
289
|
: rawSummary
|
|
@@ -300,7 +304,7 @@ export function saveTestComparisonRun(options) {
|
|
|
300
304
|
checks_fingerprint: options.checksFingerprint,
|
|
301
305
|
dataset: {
|
|
302
306
|
name: options.compiledName,
|
|
303
|
-
compiled_path: options.compiledPath
|
|
307
|
+
compiled_path: options.compiledPath,
|
|
304
308
|
},
|
|
305
309
|
raw: rawSummary,
|
|
306
310
|
compiled: compiledSummary,
|
|
@@ -396,7 +400,7 @@ export async function runSavedCompiledTest(options) {
|
|
|
396
400
|
const result = run.results[0];
|
|
397
401
|
if (!result)
|
|
398
402
|
return null;
|
|
399
|
-
const
|
|
403
|
+
const compiledRunPath = saveTargetTestRun(compiledPath, run);
|
|
400
404
|
const datasetRunPath = writeDatasetTargetRun({
|
|
401
405
|
projectPath: options.sourcePath,
|
|
402
406
|
datasetName: options.datasetConfig.name,
|
|
@@ -407,7 +411,7 @@ export async function runSavedCompiledTest(options) {
|
|
|
407
411
|
payload: run,
|
|
408
412
|
});
|
|
409
413
|
return {
|
|
410
|
-
runPath:
|
|
414
|
+
runPath: compiledRunPath,
|
|
411
415
|
displayRunPath: datasetRunPath,
|
|
412
416
|
target,
|
|
413
417
|
result,
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CommandModule } from "yargs";
|
|
2
|
+
import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
|
|
3
|
+
import { type AgentTestMatrixRow } from "./test-flow.js";
|
|
4
|
+
type TestMode = "raw" | "compiled" | "both";
|
|
5
|
+
export interface TestCommandResult {
|
|
6
|
+
sourcePath: string;
|
|
7
|
+
datasetConfig: SourceDatasetConfig;
|
|
8
|
+
builtCompiledPath: string | null;
|
|
9
|
+
mode: TestMode;
|
|
10
|
+
rows: AgentTestMatrixRow[];
|
|
11
|
+
}
|
|
12
|
+
export declare const testCommand: CommandModule;
|
|
13
|
+
export declare function runTestCommand(argv?: Record<string, unknown>): Promise<boolean>;
|
|
14
|
+
export {};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
import { detectInterf, resolveSourceControlPath, } from "
|
|
4
|
-
import { fingerprintTruthChecks, sourceDatasetConfigFromInterfConfig, } from "
|
|
5
|
-
import { addExecutionProfileOptions, executionProfileFromArgv, } from "
|
|
3
|
+
import { detectInterf, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
|
|
4
|
+
import { fingerprintTruthChecks, loadCompiledDatasetConfig, sourceDatasetConfigFromInterfConfig, } from "../../packages/project-model/source-config.js";
|
|
5
|
+
import { addExecutionProfileOptions, executionProfileFromArgv, } from "../../packages/agents/lib/execution-profile.js";
|
|
6
6
|
import { chooseCompiledConfigToBuild, findBuiltCompiledPath, } from "./compiled-flow.js";
|
|
7
7
|
import { resolveConfiguredDatasetSelection } from "./dataset-selection.js";
|
|
8
8
|
import { printAgentTestFailures, printAgentTestMatrix, printSavedTestComparisonState, readSavedTestComparison, runSavedRawTest, runSavedCompiledTest, saveTestComparisonRun, } from "./test-flow.js";
|
|
9
9
|
import { listRunAgentOptions, promptForTestAgents, resolveNamedLocalExecutor, resolveOrConfigureLocalExecutor, } from "./executor-flow.js";
|
|
10
10
|
export const testCommand = {
|
|
11
11
|
command: "test",
|
|
12
|
-
describe: "Compare files as-is and a compiled
|
|
12
|
+
describe: "Compare files as-is and a compiled context on checks",
|
|
13
13
|
builder: (yargs) => addExecutionProfileOptions(yargs)
|
|
14
14
|
.option("dataset", {
|
|
15
15
|
type: "string",
|
|
@@ -17,7 +17,7 @@ export const testCommand = {
|
|
|
17
17
|
})
|
|
18
18
|
.option("target", {
|
|
19
19
|
choices: ["both", "raw", "compiled"],
|
|
20
|
-
describe: "Test files as-is, the compiled
|
|
20
|
+
describe: "Test files as-is, the compiled context, or both. Default: both when a compiled context exists, otherwise files as-is.",
|
|
21
21
|
})
|
|
22
22
|
.option("keep-sandboxes", {
|
|
23
23
|
type: "boolean",
|
|
@@ -49,8 +49,8 @@ async function promptTestMode(hasBuiltCompiled) {
|
|
|
49
49
|
options: [
|
|
50
50
|
{
|
|
51
51
|
value: "both",
|
|
52
|
-
label: "Compare files-as-is and compiled
|
|
53
|
-
hint: "Measure whether compilation helps on the
|
|
52
|
+
label: "Compare files-as-is and compiled context (Recommended)",
|
|
53
|
+
hint: "Measure whether compilation helps on the checks",
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
value: "raw",
|
|
@@ -59,8 +59,8 @@ async function promptTestMode(hasBuiltCompiled) {
|
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
value: "compiled",
|
|
62
|
-
label: "Compiled
|
|
63
|
-
hint: "Measure the current compiled
|
|
62
|
+
label: "Compiled context only",
|
|
63
|
+
hint: "Measure the current compiled context on the checks",
|
|
64
64
|
},
|
|
65
65
|
],
|
|
66
66
|
});
|
|
@@ -190,7 +190,10 @@ export async function runTestCommand(argv = {}) {
|
|
|
190
190
|
sourcePath,
|
|
191
191
|
requestedDatasetName: targetName,
|
|
192
192
|
hintedDatasetConfig,
|
|
193
|
-
}) ?? (targetName === detected.config.name
|
|
193
|
+
}) ?? (targetName === detected.config.name
|
|
194
|
+
? (loadCompiledDatasetConfig(detected.path)
|
|
195
|
+
?? sourceDatasetConfigFromInterfConfig(detected.config))
|
|
196
|
+
: null);
|
|
194
197
|
})()
|
|
195
198
|
: requestedDatasetName || hintedDatasetConfig
|
|
196
199
|
? resolveConfiguredDatasetSelection({
|
|
@@ -200,26 +203,26 @@ export async function runTestCommand(argv = {}) {
|
|
|
200
203
|
})
|
|
201
204
|
: await chooseCompiledConfigToBuild({
|
|
202
205
|
sourcePath,
|
|
203
|
-
selectMessage: "Which
|
|
206
|
+
selectMessage: "Which source folder setup do you want to test?",
|
|
204
207
|
});
|
|
205
208
|
if (selectedCompiled === undefined)
|
|
206
209
|
return false;
|
|
207
210
|
if (!selectedCompiled) {
|
|
208
211
|
process.exitCode = 1;
|
|
209
212
|
if (requestedDatasetName) {
|
|
210
|
-
console.log(chalk.red(`
|
|
211
|
-
console.log(chalk.dim(" Run `interf list` to see the saved
|
|
213
|
+
console.log(chalk.red(` Setup "${requestedDatasetName}" is not set up in this project.`));
|
|
214
|
+
console.log(chalk.dim(" Run `interf list` to see the saved setups."));
|
|
212
215
|
}
|
|
213
216
|
else {
|
|
214
|
-
console.log(chalk.red(" No
|
|
217
|
+
console.log(chalk.red(" No saved setups are configured for this folder yet."));
|
|
215
218
|
console.log(chalk.dim(" Start with `interf` or `interf init`."));
|
|
216
219
|
}
|
|
217
220
|
return false;
|
|
218
221
|
}
|
|
219
222
|
if (selectedCompiled.checks.length === 0) {
|
|
220
223
|
process.exitCode = 1;
|
|
221
|
-
console.log(chalk.red(`
|
|
222
|
-
console.log(chalk.dim(" Run `interf`, edit this
|
|
224
|
+
console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have any checks yet.`));
|
|
225
|
+
console.log(chalk.dim(" Run `interf`, edit this setup, and add a few checks first."));
|
|
223
226
|
console.log(chalk.dim(" Then rerun `interf test`."));
|
|
224
227
|
return false;
|
|
225
228
|
}
|
|
@@ -237,16 +240,17 @@ export async function runTestCommand(argv = {}) {
|
|
|
237
240
|
return false;
|
|
238
241
|
if (selectedMode === "compiled" && !hasBuiltCompiled) {
|
|
239
242
|
process.exitCode = 1;
|
|
240
|
-
console.log(chalk.red(`
|
|
243
|
+
console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have a context folder yet.`));
|
|
241
244
|
console.log(chalk.dim(" Run `interf compile` first."));
|
|
242
245
|
return false;
|
|
243
246
|
}
|
|
244
247
|
if (selectedMode === "both" && !hasBuiltCompiled) {
|
|
245
|
-
|
|
248
|
+
process.exitCode = 1;
|
|
249
|
+
console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have a context folder yet, so Interf cannot compare files-as-is and the context folder.`));
|
|
250
|
+
console.log(chalk.dim(" Run `interf compile` first, or rerun with `--target raw`."));
|
|
251
|
+
return false;
|
|
246
252
|
}
|
|
247
|
-
const mode = selectedMode
|
|
248
|
-
? "raw"
|
|
249
|
-
: selectedMode;
|
|
253
|
+
const mode = selectedMode;
|
|
250
254
|
const selectedAgents = await resolveSelectedTestAgents({
|
|
251
255
|
argv,
|
|
252
256
|
executionProfile,
|
|
@@ -264,12 +268,22 @@ export async function runTestCommand(argv = {}) {
|
|
|
264
268
|
})));
|
|
265
269
|
if ((mode === "compiled" || mode === "both") && rows.some((row) => !row.compiledOutcome)) {
|
|
266
270
|
process.exitCode = 1;
|
|
267
|
-
console.log(chalk.red(`
|
|
271
|
+
console.log(chalk.red(` Setup "${selectedCompiled.name}" does not have a context folder yet.`));
|
|
268
272
|
console.log(chalk.dim(" Run `interf compile` first."));
|
|
269
273
|
return false;
|
|
270
274
|
}
|
|
271
275
|
printAgentTestMatrix(rows);
|
|
272
276
|
printAgentTestFailures(rows);
|
|
277
|
+
const resultSummary = {
|
|
278
|
+
sourcePath,
|
|
279
|
+
datasetConfig: selectedCompiled,
|
|
280
|
+
builtCompiledPath: builtCompiledPath ?? null,
|
|
281
|
+
mode,
|
|
282
|
+
rows,
|
|
283
|
+
};
|
|
284
|
+
const onComplete = typeof argv.onComplete === "function"
|
|
285
|
+
? argv.onComplete
|
|
286
|
+
: null;
|
|
273
287
|
if (rows.length === 1) {
|
|
274
288
|
const row = rows[0];
|
|
275
289
|
const comparisonRunPath = saveTestComparisonRun({
|
|
@@ -291,9 +305,11 @@ export async function runTestCommand(argv = {}) {
|
|
|
291
305
|
printSavedTestComparisonState(latestComparison, comparisonRunPath);
|
|
292
306
|
}
|
|
293
307
|
}
|
|
308
|
+
await onComplete?.(resultSummary);
|
|
294
309
|
return true;
|
|
295
310
|
}
|
|
296
311
|
console.log();
|
|
297
|
-
console.log(chalk.dim(" Multi-agent compare does not overwrite the
|
|
312
|
+
console.log(chalk.dim(" Multi-agent compare does not overwrite the saved latest single-agent result."));
|
|
313
|
+
await onComplete?.(resultSummary);
|
|
298
314
|
return true;
|
|
299
315
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { detectInterf } from "
|
|
3
|
-
import { validateCompiledCompile, validateCompiledStage, } from "
|
|
4
|
-
import { validateWorkflowPackage } from "
|
|
2
|
+
import { detectInterf } from "../../packages/project-model/interf.js";
|
|
3
|
+
import { validateCompiledCompile, validateCompiledStage, } from "../../packages/compiler/validate.js";
|
|
4
|
+
import { validateWorkflowPackage } from "../../packages/workflow-package/local-workflows.js";
|
|
5
5
|
function normalizeVerifyCheck(value) {
|
|
6
6
|
if (!value)
|
|
7
7
|
return null;
|
|
@@ -55,7 +55,7 @@ export const verifyCommand = {
|
|
|
55
55
|
const detected = detectInterf(process.cwd());
|
|
56
56
|
if (!detected) {
|
|
57
57
|
process.exitCode = 1;
|
|
58
|
-
console.log(chalk.red("Run this from inside a compiled
|
|
58
|
+
console.log(chalk.red("Run this from inside a compiled context."));
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
if (check === "compiled") {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { initCommand } from "./commands/init.js";
|
|
2
|
+
import { createCommand } from "./commands/create.js";
|
|
3
|
+
import { compileCommand } from "./commands/compile.js";
|
|
4
|
+
import { testCommand } from "./commands/test.js";
|
|
5
|
+
import { doctorCommand } from "./commands/doctor.js";
|
|
6
|
+
import { listCommand } from "./commands/list.js";
|
|
7
|
+
import { statusCommand } from "./commands/status.js";
|
|
8
|
+
import { resetCommand } from "./commands/reset.js";
|
|
9
|
+
import { defaultCommand } from "./commands/default.js";
|
|
10
|
+
import { verifyCommand } from "./commands/verify.js";
|
|
11
|
+
export declare function buildCli(argv?: string[]): import("yargs").Argv<{}>;
|
|
12
|
+
export declare function runCli(argv?: string[]): {
|
|
13
|
+
[x: string]: unknown;
|
|
14
|
+
_: (string | number)[];
|
|
15
|
+
$0: string;
|
|
16
|
+
} | Promise<{
|
|
17
|
+
[x: string]: unknown;
|
|
18
|
+
_: (string | number)[];
|
|
19
|
+
$0: string;
|
|
20
|
+
}>;
|
|
21
|
+
export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, };
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import yargs from "yargs";
|
|
2
|
+
import { hideBin } from "yargs/helpers";
|
|
3
|
+
import { initCommand } from "./commands/init.js";
|
|
4
|
+
import { createCommand } from "./commands/create.js";
|
|
5
|
+
import { compileCommand } from "./commands/compile.js";
|
|
6
|
+
import { testCommand } from "./commands/test.js";
|
|
7
|
+
import { doctorCommand } from "./commands/doctor.js";
|
|
8
|
+
import { listCommand } from "./commands/list.js";
|
|
9
|
+
import { statusCommand } from "./commands/status.js";
|
|
10
|
+
import { resetCommand } from "./commands/reset.js";
|
|
11
|
+
import { defaultCommand } from "./commands/default.js";
|
|
12
|
+
import { verifyCommand } from "./commands/verify.js";
|
|
13
|
+
export function buildCli(argv = hideBin(process.argv)) {
|
|
14
|
+
return yargs(argv)
|
|
15
|
+
.scriptName("interf")
|
|
16
|
+
.command(defaultCommand)
|
|
17
|
+
.command(initCommand)
|
|
18
|
+
.command(compileCommand)
|
|
19
|
+
.command(testCommand)
|
|
20
|
+
.command(createCommand)
|
|
21
|
+
.command(doctorCommand)
|
|
22
|
+
.command(listCommand)
|
|
23
|
+
.command(statusCommand)
|
|
24
|
+
.command(verifyCommand)
|
|
25
|
+
.command(resetCommand)
|
|
26
|
+
.strict()
|
|
27
|
+
.help()
|
|
28
|
+
.version();
|
|
29
|
+
}
|
|
30
|
+
export function runCli(argv = hideBin(process.argv)) {
|
|
31
|
+
return buildCli(argv).parse();
|
|
32
|
+
}
|
|
33
|
+
export { initCommand, createCommand, compileCommand, testCommand, doctorCommand, listCommand, statusCommand, resetCommand, defaultCommand, verifyCommand, };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,22 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
1
|
+
export * as compiler from "./packages/compiler/index.js";
|
|
2
|
+
export * as workflowPackage from "./packages/workflow-package/index.js";
|
|
3
|
+
export * as workflowAuthoring from "./packages/workflow-authoring/index.js";
|
|
4
|
+
export * as projectModel from "./packages/project-model/index.js";
|
|
5
|
+
export * as agents from "./packages/agents/index.js";
|
|
6
|
+
export * as testing from "./packages/testing/index.js";
|
|
7
|
+
export { createCompiled, } from "./packages/project-model/interf.js";
|
|
8
|
+
export { compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./packages/compiler/workflows.js";
|
|
9
|
+
export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./packages/testing/test.js";
|
|
10
|
+
export { computeCompiledHealth, } from "./packages/compiler/state.js";
|
|
11
|
+
export { SOURCE_FOLDER_CONFIG_FILE, loadSourceFolderConfig, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
|
|
12
|
+
export { validateCompiledSummarize, validateCompiledCompile, } from "./packages/compiler/validate.js";
|
|
13
|
+
export { InterfConfigSchema, SourceFolderConfigSchema, } from "./packages/project-model/lib/schema.js";
|
|
14
|
+
export { TestSpecSchema, } from "./packages/testing/lib/schema.js";
|
|
15
|
+
export { CompiledHealthSchema, } from "./packages/compiler/lib/schema.js";
|
|
16
|
+
export type { InterfConfig } from "./packages/project-model/lib/schema.js";
|
|
17
|
+
export type { TestCase, TestSpec, TestCheckResult, TestCaseResult, TestTargetResult, TestTargetRun, LoadedTestSpec, TestTargetCandidate, } from "./packages/testing/index.js";
|
|
18
|
+
export type { SourceTruthCheck, SourceDatasetConfig, SourceFolderConfig, } from "./packages/project-model/lib/schema.js";
|
|
19
|
+
export type { TestCaseExpect, } from "./packages/testing/lib/schema.js";
|
|
20
|
+
export type { CompiledHealth, } from "./packages/compiler/lib/schema.js";
|
|
21
|
+
export type { CompiledStageValidation, CompiledWorkflowValidation, } from "./packages/compiler/validate.js";
|
|
22
|
+
export type { CompiledSummarizeResult, CompiledCompileResult, } from "./packages/compiler/workflows.js";
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
1
|
+
export * as compiler from "./packages/compiler/index.js";
|
|
2
|
+
export * as workflowPackage from "./packages/workflow-package/index.js";
|
|
3
|
+
export * as workflowAuthoring from "./packages/workflow-authoring/index.js";
|
|
4
|
+
export * as projectModel from "./packages/project-model/index.js";
|
|
5
|
+
export * as agents from "./packages/agents/index.js";
|
|
6
|
+
export * as testing from "./packages/testing/index.js";
|
|
7
|
+
export { createCompiled, } from "./packages/project-model/interf.js";
|
|
8
|
+
export { compileCompiled, runCompiledSummarize, runCompiledCompile, } from "./packages/compiler/workflows.js";
|
|
9
|
+
export { createRawTestTarget, createCompiledTestTarget, listTestSpecs, loadTestSpec, loadTestSpecFromFile, writeTestSpec, listTestTargets, runTargetTests, runTargetTestsWithJudge, runTargetTestsAuto, saveTargetTestRun, } from "./packages/testing/test.js";
|
|
10
|
+
export { computeCompiledHealth, } from "./packages/compiler/state.js";
|
|
11
|
+
export { SOURCE_FOLDER_CONFIG_FILE, loadSourceFolderConfig, buildTestSpecFromSourceFolderConfig, } from "./packages/project-model/source-config.js";
|
|
12
|
+
export { validateCompiledSummarize, validateCompiledCompile, } from "./packages/compiler/validate.js";
|
|
13
|
+
export { InterfConfigSchema, SourceFolderConfigSchema, } from "./packages/project-model/lib/schema.js";
|
|
14
|
+
export { TestSpecSchema, } from "./packages/testing/lib/schema.js";
|
|
15
|
+
export { CompiledHealthSchema, } from "./packages/compiler/lib/schema.js";
|
package/dist/lib/agent-args.d.ts
CHANGED
|
@@ -1,4 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import type { Agent } from "./agent-types.js";
|
|
3
|
-
export declare function buildAgentEnv(agent: Agent, baseEnv?: NodeJS.ProcessEnv): NodeJS.ProcessEnv;
|
|
4
|
-
export declare function buildAgentArgs(agent: Agent, prompt: string, executionProfile?: WorkflowExecutionProfile): string[];
|
|
1
|
+
export * from "../packages/agents/lib/args.js";
|
package/dist/lib/agent-args.js
CHANGED
|
@@ -1,52 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export function buildAgentEnv(agent, baseEnv = process.env) {
|
|
3
|
-
const env = { ...baseEnv };
|
|
4
|
-
if (agent.name === "codex") {
|
|
5
|
-
// Codex executes Bash-tool commands inside its own sandbox. Let Codex
|
|
6
|
-
// choose a sandbox-safe default shell instead of inheriting a host-only
|
|
7
|
-
// login shell path such as /bin/zsh.
|
|
8
|
-
delete env.SHELL;
|
|
9
|
-
}
|
|
10
|
-
return env;
|
|
11
|
-
}
|
|
12
|
-
export function buildAgentArgs(agent, prompt, executionProfile = {}) {
|
|
13
|
-
if (agent.name === "claude-code") {
|
|
14
|
-
const args = [
|
|
15
|
-
"-p",
|
|
16
|
-
prompt,
|
|
17
|
-
"--output-format",
|
|
18
|
-
"stream-json",
|
|
19
|
-
"--verbose",
|
|
20
|
-
"--allowedTools",
|
|
21
|
-
"Read,Write,Edit,Bash,Grep,Glob,Agent",
|
|
22
|
-
];
|
|
23
|
-
if (executionProfile.model) {
|
|
24
|
-
args.push("--model", executionProfile.model);
|
|
25
|
-
}
|
|
26
|
-
if (executionProfile.effort) {
|
|
27
|
-
args.push("--effort", executionProfile.effort);
|
|
28
|
-
}
|
|
29
|
-
return args;
|
|
30
|
-
}
|
|
31
|
-
if (agent.name === "codex") {
|
|
32
|
-
const args = [
|
|
33
|
-
"exec",
|
|
34
|
-
"--json",
|
|
35
|
-
"-s",
|
|
36
|
-
CODEX_SANDBOX_MODE,
|
|
37
|
-
"--skip-git-repo-check",
|
|
38
|
-
];
|
|
39
|
-
if (executionProfile.model) {
|
|
40
|
-
args.push("--model", executionProfile.model);
|
|
41
|
-
}
|
|
42
|
-
if (executionProfile.profile) {
|
|
43
|
-
args.push("--profile", executionProfile.profile);
|
|
44
|
-
}
|
|
45
|
-
if (executionProfile.effort) {
|
|
46
|
-
args.push("-c", `model_reasoning_effort=${JSON.stringify(executionProfile.effort)}`);
|
|
47
|
-
}
|
|
48
|
-
args.push(prompt);
|
|
49
|
-
return args;
|
|
50
|
-
}
|
|
51
|
-
throw new Error(`Agent "${agent.displayName}" is not yet supported for automated compile runs.`);
|
|
52
|
-
}
|
|
1
|
+
export * from "../packages/agents/lib/args.js";
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const SHOW_AGENT_TOOL_EVENTS: boolean;
|
|
3
|
-
export declare const AGENTS: Agent[];
|
|
4
|
-
export declare const CODEX_NOISE_PATTERNS: RegExp[];
|
|
5
|
-
export declare const VISIBLE_STATUS_PREFIXES: string[];
|
|
1
|
+
export * from "../packages/agents/lib/constants.js";
|
|
@@ -1,28 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { homedir } from "node:os";
|
|
3
|
-
export const SHOW_AGENT_TOOL_EVENTS = process.env.INTERF_DEBUG_AGENT_TOOLS === "1";
|
|
4
|
-
export const AGENTS = [
|
|
5
|
-
{
|
|
6
|
-
name: "claude-code",
|
|
7
|
-
displayName: "Claude Code",
|
|
8
|
-
skillsDir: join(homedir(), ".claude", "skills"),
|
|
9
|
-
command: "claude",
|
|
10
|
-
},
|
|
11
|
-
{
|
|
12
|
-
name: "codex",
|
|
13
|
-
displayName: "Codex",
|
|
14
|
-
skillsDir: join(homedir(), ".codex", "skills"),
|
|
15
|
-
command: "codex",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
name: "cursor",
|
|
19
|
-
displayName: "Cursor",
|
|
20
|
-
skillsDir: join(homedir(), ".cursor", "skills"),
|
|
21
|
-
command: "cursor",
|
|
22
|
-
},
|
|
23
|
-
];
|
|
24
|
-
export const CODEX_NOISE_PATTERNS = [
|
|
25
|
-
/codex_core_skills::loader: failed to stat skills entry .*\/(interf-[^ ]+|compiled\/[^ ]+) \(symlink\): No such file or directory/,
|
|
26
|
-
/codex_core::codex: failed to load skill .*\/gstack\/SKILL\.md: invalid description: exceeds maximum length of 1024 characters/,
|
|
27
|
-
];
|
|
28
|
-
export const VISIBLE_STATUS_PREFIXES = ["STATUS:", "DONE:", "BLOCKED:", "ERROR:"];
|
|
1
|
+
export * from "../packages/agents/lib/constants.js";
|
|
@@ -1,7 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function detectAgents(): Agent[];
|
|
3
|
-
export declare function supportsAutomatedRuns(agent: Agent): boolean;
|
|
4
|
-
export declare function resolveAgent(): {
|
|
5
|
-
agent: Agent | null;
|
|
6
|
-
error?: string;
|
|
7
|
-
};
|
|
1
|
+
export * from "../packages/agents/lib/detection.js";
|
|
@@ -1,65 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { execFileSync } from "node:child_process";
|
|
3
|
-
import { homedir } from "node:os";
|
|
4
|
-
import { join } from "node:path";
|
|
5
|
-
import { loadUserConfig } from "./user-config.js";
|
|
6
|
-
import { AGENTS } from "./agent-constants.js";
|
|
7
|
-
export function detectAgents() {
|
|
8
|
-
return AGENTS.filter((agent) => {
|
|
9
|
-
const dir = join(homedir(), `.${agent.name === "claude-code" ? "claude" : agent.name}`);
|
|
10
|
-
return existsSync(dir);
|
|
11
|
-
});
|
|
12
|
-
}
|
|
13
|
-
function commandExists(command) {
|
|
14
|
-
try {
|
|
15
|
-
execFileSync("which", [command], { stdio: "ignore" });
|
|
16
|
-
return true;
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return false;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
export function supportsAutomatedRuns(agent) {
|
|
23
|
-
return agent.name === "claude-code" || agent.name === "codex";
|
|
24
|
-
}
|
|
25
|
-
export function resolveAgent() {
|
|
26
|
-
const config = loadUserConfig();
|
|
27
|
-
if (config) {
|
|
28
|
-
const configured = AGENTS.find((agent) => agent.command === config.agentCommand) ??
|
|
29
|
-
AGENTS.find((agent) => agent.name === config.agent) ??
|
|
30
|
-
AGENTS.find((agent) => agent.displayName === config.agent);
|
|
31
|
-
if (!configured) {
|
|
32
|
-
return {
|
|
33
|
-
agent: null,
|
|
34
|
-
error: `Configured agent "${config.agent}" is not supported by this Interf build. Run \`interf\` or \`interf init\` to choose a supported agent.`,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
if (!commandExists(configured.command)) {
|
|
38
|
-
return {
|
|
39
|
-
agent: null,
|
|
40
|
-
error: `Configured agent "${configured.displayName}" is not available in PATH. Run \`interf\` or \`interf init\` to reconfigure.`,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
if (!supportsAutomatedRuns(configured)) {
|
|
44
|
-
return {
|
|
45
|
-
agent: null,
|
|
46
|
-
error: `Configured agent "${configured.displayName}" is detected, but this Interf build can only automate Claude Code or Codex. Run \`interf\` or \`interf init\` and choose one of those agents.`,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return { agent: configured };
|
|
50
|
-
}
|
|
51
|
-
const detected = detectAgents().filter((agent) => commandExists(agent.command) && supportsAutomatedRuns(agent));
|
|
52
|
-
if (detected.length === 0) {
|
|
53
|
-
return {
|
|
54
|
-
agent: null,
|
|
55
|
-
error: "No coding agent detected. Install Claude Code or Codex.",
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
if (detected.length > 1) {
|
|
59
|
-
return {
|
|
60
|
-
agent: null,
|
|
61
|
-
error: "Multiple coding agents detected but no default is configured. Run `interf` or `interf init` to choose which agent local runs should use.",
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
return { agent: detected[0] };
|
|
65
|
-
}
|
|
1
|
+
export * from "../packages/agents/lib/detection.js";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare function spawnAgent(agent: Agent, dirPath: string, prompt: string, options?: SpawnAgentOptions): Promise<number>;
|
|
1
|
+
export * from "../packages/agents/lib/execution.js";
|