@interf/compiler 0.6.1 → 0.6.4
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 +106 -80
- 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 +16 -16
- package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
- package/dist/{commands → cli/commands}/compile-controller.js +37 -35
- 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 +64 -37
- 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 +162 -77
- package/dist/{commands → cli/commands}/list.js +6 -6
- package/dist/{commands → cli/commands}/reset.js +4 -4
- package/dist/{commands → cli/commands}/source-config-wizard.d.ts +9 -4
- package/dist/{commands → cli/commands}/source-config-wizard.js +168 -94
- 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 +52 -48
- package/dist/cli/commands/test.d.ts +14 -0
- package/dist/{commands → cli/commands}/test.js +40 -24
- 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/chart-guidance.d.ts +1 -1
- package/dist/lib/chart-guidance.js +1 -8
- 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/discovery.d.ts +1 -7
- package/dist/lib/discovery.js +1 -84
- 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/filesystem.d.ts +1 -2
- package/dist/lib/filesystem.js +1 -55
- 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/logger.d.ts +1 -3
- package/dist/lib/logger.js +1 -10
- package/dist/lib/package-root.d.ts +1 -0
- package/dist/lib/package-root.js +1 -0
- package/dist/lib/parse.d.ts +1 -8
- package/dist/lib/parse.js +1 -145
- 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/util.d.ts +1 -4
- package/dist/lib/util.js +1 -25
- 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 +18 -0
- package/dist/packages/agents/index.js +16 -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/chart-guidance.d.ts +1 -0
- package/dist/packages/agents/lib/chart-guidance.js +8 -0
- package/dist/packages/agents/lib/compiled-bootstrap.d.ts +3 -0
- package/dist/packages/agents/lib/compiled-bootstrap.js +18 -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 +71 -0
- package/dist/packages/agents/lib/shells.js +1023 -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 +4 -0
- package/dist/packages/compiler/compiled-compile.js +4 -0
- package/dist/packages/compiler/compiled-paths.d.ts +40 -0
- package/dist/packages/compiler/compiled-paths.js +106 -0
- package/dist/packages/compiler/compiled-pipeline.d.ts +39 -0
- package/dist/packages/compiler/compiled-pipeline.js +134 -0
- package/dist/packages/compiler/compiled-schema.d.ts +31 -0
- package/dist/packages/compiler/compiled-schema.js +141 -0
- package/dist/packages/compiler/compiled-stage-plan.d.ts +15 -0
- package/dist/packages/compiler/compiled-stage-plan.js +79 -0
- package/dist/packages/compiler/compiled-stage-runner.d.ts +10 -0
- package/dist/packages/compiler/compiled-stage-runner.js +46 -0
- package/dist/packages/compiler/compiled-target.d.ts +11 -0
- package/dist/packages/compiler/compiled-target.js +16 -0
- package/dist/packages/compiler/discovery.d.ts +7 -0
- package/dist/packages/compiler/discovery.js +80 -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 +363 -0
- package/dist/packages/compiler/raw-snapshot.d.ts +49 -0
- package/dist/packages/compiler/raw-snapshot.js +102 -0
- package/dist/packages/compiler/reset.d.ts +2 -0
- package/dist/packages/compiler/reset.js +72 -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 +1 -0
- package/dist/packages/project-model/compiled-paths.js +1 -0
- package/dist/packages/project-model/compiled-raw.d.ts +1 -0
- package/dist/packages/project-model/compiled-raw.js +1 -0
- package/dist/packages/project-model/compiled-reset.d.ts +1 -0
- package/dist/packages/project-model/compiled-reset.js +1 -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 +1 -0
- package/dist/packages/project-model/interf-bootstrap.js +1 -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 +298 -0
- package/dist/packages/shared/file-types.d.ts +1 -0
- package/dist/packages/shared/file-types.js +4 -0
- package/dist/packages/shared/filesystem.d.ts +2 -0
- package/dist/packages/shared/filesystem.js +55 -0
- package/dist/packages/shared/index.d.ts +7 -0
- package/dist/packages/shared/index.js +7 -0
- package/dist/packages/shared/logger.d.ts +3 -0
- package/dist/packages/shared/logger.js +10 -0
- package/dist/packages/shared/naming.d.ts +1 -0
- package/dist/packages/shared/naming.js +8 -0
- package/dist/packages/shared/parse.d.ts +8 -0
- package/dist/packages/shared/parse.js +145 -0
- package/dist/packages/shared/path-guards.d.ts +2 -0
- package/dist/packages/shared/path-guards.js +14 -0
- package/dist/packages/shared/util.d.ts +3 -0
- package/dist/packages/shared/util.js +3 -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 +121 -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 +210 -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/context-interface.d.ts +96 -0
- package/dist/packages/workflow-package/context-interface.js +146 -0
- package/dist/packages/workflow-package/index.d.ts +11 -0
- package/dist/packages/workflow-package/index.js +11 -0
- package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
- package/dist/packages/workflow-package/interf-workflow-package.js +389 -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 +57 -0
- package/dist/packages/workflow-package/local-workflows.js +424 -0
- package/dist/packages/workflow-package/workflow-definitions.d.ts +82 -0
- package/dist/packages/workflow-package/workflow-definitions.js +210 -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,6 +1,5 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
3
|
-
import { loadUserConfig } from "../lib/user-config.js";
|
|
2
|
+
import { agents, userConfig } from "../../packages/agents/index.js";
|
|
4
3
|
function iconFor(status) {
|
|
5
4
|
if (status === "pass")
|
|
6
5
|
return chalk.green("✓");
|
|
@@ -26,8 +25,8 @@ export const doctorCommand = {
|
|
|
26
25
|
}),
|
|
27
26
|
handler: async (argv) => {
|
|
28
27
|
const checks = [];
|
|
29
|
-
const config = loadUserConfig();
|
|
30
|
-
const { agent, error } = resolveAgent();
|
|
28
|
+
const config = userConfig.loadUserConfig();
|
|
29
|
+
const { agent, error } = agents.resolveAgent();
|
|
31
30
|
if (config) {
|
|
32
31
|
checks.push({
|
|
33
32
|
id: "config",
|
|
@@ -73,7 +72,7 @@ export const doctorCommand = {
|
|
|
73
72
|
message: `${agent.displayName} is configured and available as \`${agent.command}\``,
|
|
74
73
|
});
|
|
75
74
|
if (argv.live) {
|
|
76
|
-
const preflight = runAgentPreflight(agent);
|
|
75
|
+
const preflight = agents.runAgentPreflight(agent);
|
|
77
76
|
checks.push({
|
|
78
77
|
id: "live",
|
|
79
78
|
label: "Live executor preflight",
|
|
@@ -98,7 +97,7 @@ export const doctorCommand = {
|
|
|
98
97
|
id: "live",
|
|
99
98
|
label: "Live executor preflight",
|
|
100
99
|
status: "skipped",
|
|
101
|
-
message: "Skipped. Run `interf doctor --live` to exercise the real local agent before a
|
|
100
|
+
message: "Skipped. Run `interf doctor --live` to exercise the real local agent before a check draft, workflow authoring run, test, or compile.",
|
|
102
101
|
});
|
|
103
102
|
}
|
|
104
103
|
const ok = checks.every((check) => check.status !== "fail");
|
|
@@ -1,27 +1,24 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
|
-
import {
|
|
3
|
-
import { detectAgents, ensureAgentAutomatedRunReady, supportsAutomatedRuns } from "../lib/agents.js";
|
|
4
|
-
import { createLocalAgentExecutor, resolveLocalExecutor, } from "../lib/executors.js";
|
|
5
|
-
import { loadUserConfig, saveUserConfig } from "../lib/user-config.js";
|
|
2
|
+
import { constants, agents, executors, userConfig } from "../../packages/agents/index.js";
|
|
6
3
|
const promptedPurposes = new Set();
|
|
7
4
|
function supportedDetectedAgents() {
|
|
8
|
-
return detectAgents().filter((agent) => AGENTS.some((candidate) => candidate.name === agent.name) && supportsAutomatedRuns(agent));
|
|
5
|
+
return agents.detectAgents().filter((agent) => constants.AGENTS.some((candidate) => candidate.name === agent.name) && agents.supportsAutomatedRuns(agent));
|
|
9
6
|
}
|
|
10
7
|
export function resolvedConfiguredAgentName() {
|
|
11
|
-
const current = loadUserConfig();
|
|
8
|
+
const current = userConfig.loadUserConfig();
|
|
12
9
|
if (!current)
|
|
13
10
|
return null;
|
|
14
|
-
const configured = AGENTS.find((agent) => agent.command === current.agentCommand) ??
|
|
15
|
-
AGENTS.find((agent) => agent.name === current.agent) ??
|
|
16
|
-
AGENTS.find((agent) => agent.displayName === current.agent);
|
|
11
|
+
const configured = constants.AGENTS.find((agent) => agent.command === current.agentCommand) ??
|
|
12
|
+
constants.AGENTS.find((agent) => agent.name === current.agent) ??
|
|
13
|
+
constants.AGENTS.find((agent) => agent.displayName === current.agent);
|
|
17
14
|
return configured?.name ?? null;
|
|
18
15
|
}
|
|
19
16
|
function persistSelectedAgent(selectedName) {
|
|
20
17
|
const selected = supportedDetectedAgents().find((agent) => agent.name === selectedName);
|
|
21
18
|
if (!selected)
|
|
22
19
|
return;
|
|
23
|
-
const current = loadUserConfig();
|
|
24
|
-
saveUserConfig({
|
|
20
|
+
const current = userConfig.loadUserConfig();
|
|
21
|
+
userConfig.saveUserConfig({
|
|
25
22
|
agent: selected.name,
|
|
26
23
|
agentCommand: selected.command,
|
|
27
24
|
skillsInstalled: current?.skillsInstalled ?? false,
|
|
@@ -43,13 +40,13 @@ export function resolveNamedLocalExecutor(agentName, options = {}) {
|
|
|
43
40
|
return { executor: null, error: `Local agent \"${agentName}\" is not detected.` };
|
|
44
41
|
}
|
|
45
42
|
if (options.preflight !== false) {
|
|
46
|
-
const readiness = ensureAgentAutomatedRunReady(agent);
|
|
43
|
+
const readiness = agents.ensureAgentAutomatedRunReady(agent);
|
|
47
44
|
if (!readiness.ok) {
|
|
48
45
|
return { executor: null, error: readiness.error };
|
|
49
46
|
}
|
|
50
47
|
}
|
|
51
48
|
return {
|
|
52
|
-
executor: createLocalAgentExecutor(agent, options.executionProfile),
|
|
49
|
+
executor: executors.createLocalAgentExecutor(agent, options.executionProfile),
|
|
53
50
|
};
|
|
54
51
|
}
|
|
55
52
|
export async function promptForTestAgents() {
|
|
@@ -89,7 +86,7 @@ export async function promptForTestAgents() {
|
|
|
89
86
|
}
|
|
90
87
|
async function promptForRunAgent(purpose) {
|
|
91
88
|
const purposeLabel = purpose === "draft"
|
|
92
|
-
? "
|
|
89
|
+
? "check draft"
|
|
93
90
|
: purpose === "workflow"
|
|
94
91
|
? "workflow authoring"
|
|
95
92
|
: purpose;
|
|
@@ -147,7 +144,7 @@ export async function resolveOrConfigureLocalExecutor(options = {}) {
|
|
|
147
144
|
return { executor: null, error: "No local agent detected." };
|
|
148
145
|
}
|
|
149
146
|
}
|
|
150
|
-
const resolved = resolveLocalExecutor(options);
|
|
147
|
+
const resolved = executors.resolveLocalExecutor(options);
|
|
151
148
|
if (resolved.executor)
|
|
152
149
|
return resolved;
|
|
153
150
|
const needsChoice = typeof resolved.error === "string" &&
|
|
@@ -162,5 +159,5 @@ export async function resolveOrConfigureLocalExecutor(options = {}) {
|
|
|
162
159
|
if (!configured.selected) {
|
|
163
160
|
return resolved;
|
|
164
161
|
}
|
|
165
|
-
return resolveLocalExecutor(options);
|
|
162
|
+
return executors.resolveLocalExecutor(options);
|
|
166
163
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import type { CommandModule } from "yargs";
|
|
2
|
-
import type { SourceDatasetConfig } from "
|
|
2
|
+
import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
|
|
3
|
+
import { type AgentTestMatrixRow } from "./test-flow.js";
|
|
3
4
|
import { runCompileCommand } from "./compile.js";
|
|
5
|
+
export type CurrentRunTargetStatus = "pass" | "mixed" | "fail" | "missing";
|
|
6
|
+
export declare function currentRunTargetStatus(rows: AgentTestMatrixRow[], target: "raw" | "compiled"): CurrentRunTargetStatus;
|
|
4
7
|
export declare function compileSelectedCompiled(sourcePath: string, compiledConfig: SourceDatasetConfig, deps?: {
|
|
5
8
|
runCompileCommand?: typeof runCompileCommand;
|
|
6
9
|
}): Promise<import("./compile.js").CompileCommandResult | null>;
|
|
@@ -1,19 +1,32 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
3
|
import { resolve } from "node:path";
|
|
4
|
-
import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "
|
|
5
|
-
import { SOURCE_FOLDER_CONFIG_FILE, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "
|
|
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";
|
|
6
6
|
import { DEFAULT_COMPILED_NAME, describeCompileLoopSelection, promptSingleCompiledConfig, } from "./source-config-wizard.js";
|
|
7
7
|
import { buildCompiledWorkflowOptions, chooseCompiledWorkflow, createWorkflowWizard, } from "./create-workflow-wizard.js";
|
|
8
8
|
import { findBuiltCompiledPath, findSavedCompiledConfig, listSavedCompiledEntries, } from "./compiled-flow.js";
|
|
9
|
-
import {
|
|
9
|
+
import { readCurrentSavedTestComparison, } from "./test-flow.js";
|
|
10
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}
|
|
28
|
+
return "No questions yet";
|
|
29
|
+
return `${count} question${count === 1 ? "" : "s"}`;
|
|
17
30
|
}
|
|
18
31
|
function printDatasetSummary(options) {
|
|
19
32
|
const compiledConfig = options.builtCompiledPath
|
|
@@ -21,7 +34,7 @@ function printDatasetSummary(options) {
|
|
|
21
34
|
: null;
|
|
22
35
|
const workflowLabel = `${options.dataset.workflow ?? "interf"}${compiledConfig?.workflow_origin?.local_draft === true ? " (local draft)" : ""}`;
|
|
23
36
|
p.log.info(`Dataset: ${options.dataset.name}`);
|
|
24
|
-
p.log.info(`
|
|
37
|
+
p.log.info(`Source folder: ${options.dataset.path}`);
|
|
25
38
|
if (options.dataset.about) {
|
|
26
39
|
p.log.info(`About: ${options.dataset.about}`);
|
|
27
40
|
}
|
|
@@ -31,58 +44,63 @@ function printDatasetSummary(options) {
|
|
|
31
44
|
maxLoops: options.dataset.max_loops,
|
|
32
45
|
}));
|
|
33
46
|
p.log.info(describeSavedQuestions(options.dataset));
|
|
34
|
-
p.log.info(options.built ? "
|
|
47
|
+
p.log.info(options.built ? "Portable context is available." : "Portable context has not been built yet.");
|
|
35
48
|
if (options.latestComparison?.raw && options.latestComparison?.compiled) {
|
|
36
|
-
p.log.info(`Latest saved comparison: files
|
|
49
|
+
p.log.info(`Latest saved comparison: source files ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}, portable context ${options.latestComparison.compiled.passed_cases}/${options.latestComparison.compiled.total_cases}.`);
|
|
37
50
|
}
|
|
38
51
|
else if (options.latestComparison?.raw) {
|
|
39
|
-
p.log.info(`Latest files
|
|
52
|
+
p.log.info(`Latest saved source-files run: ${options.latestComparison.raw.passed_cases}/${options.latestComparison.raw.total_cases}.`);
|
|
40
53
|
}
|
|
41
54
|
else if (options.latestComparison?.compiled) {
|
|
42
|
-
p.log.info(`Latest
|
|
55
|
+
p.log.info(`Latest portable-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 questions.");
|
|
43
59
|
}
|
|
44
60
|
if (options.sourcePath !== process.cwd()) {
|
|
45
|
-
p.log.info(`
|
|
61
|
+
p.log.info(`Project folder: ${options.sourcePath}`);
|
|
46
62
|
}
|
|
47
63
|
}
|
|
48
64
|
async function promptDatasetAction(dataset, built, latestComparison) {
|
|
49
65
|
const options = [];
|
|
50
66
|
const hasSavedRawBaseline = Boolean(latestComparison?.raw);
|
|
51
|
-
const
|
|
67
|
+
const latestRawPasses = latestComparison?.raw &&
|
|
52
68
|
latestComparison.raw.passed_cases === latestComparison.raw.total_cases;
|
|
53
69
|
if (dataset.checks.length > 0) {
|
|
54
70
|
options.push({
|
|
55
71
|
value: "test",
|
|
56
72
|
label: built
|
|
57
|
-
? "Compare files
|
|
73
|
+
? "Compare source files and portable context (Recommended)"
|
|
58
74
|
: hasSavedRawBaseline
|
|
59
|
-
? "Rerun the files
|
|
60
|
-
: "Measure the files
|
|
75
|
+
? "Rerun the source-files baseline"
|
|
76
|
+
: "Measure the source-files baseline (Recommended)",
|
|
61
77
|
hint: built
|
|
62
|
-
? "See whether
|
|
78
|
+
? "See whether the portable context helps on the saved questions"
|
|
63
79
|
: hasSavedRawBaseline
|
|
64
|
-
? "Refresh the saved
|
|
65
|
-
: "See whether the
|
|
80
|
+
? "Refresh the saved source-files baseline on the current questions"
|
|
81
|
+
: "See whether the source files are already good enough before compiling",
|
|
66
82
|
});
|
|
67
83
|
}
|
|
68
84
|
options.push({
|
|
69
85
|
value: "compile",
|
|
70
|
-
label: built ? "Rebuild
|
|
86
|
+
label: built ? "Rebuild portable context" : "Build portable context",
|
|
71
87
|
hint: built
|
|
72
|
-
? "Refresh it from the current
|
|
88
|
+
? "Refresh it from the current source files"
|
|
73
89
|
: dataset.checks.length > 0
|
|
74
|
-
?
|
|
75
|
-
? "Optional:
|
|
76
|
-
:
|
|
90
|
+
? latestRawPasses
|
|
91
|
+
? "Optional: build portable context for a side-by-side comparison with the latest saved source-files run"
|
|
92
|
+
: hasSavedRawBaseline
|
|
93
|
+
? "Some questions still fail on the source files. Build portable context and compare it on the same questions"
|
|
94
|
+
: "Build portable context and compare it on the same questions"
|
|
77
95
|
: "Build it first, then measure it later",
|
|
78
96
|
}, {
|
|
79
97
|
value: "dataset",
|
|
80
|
-
label: "Add another
|
|
98
|
+
label: "Add another setup",
|
|
81
99
|
hint: "Add a separate folder, focus, or question set",
|
|
82
100
|
}, {
|
|
83
101
|
value: "edit",
|
|
84
|
-
label: "Edit
|
|
85
|
-
hint: "Update
|
|
102
|
+
label: "Edit questions and settings",
|
|
103
|
+
hint: "Update questions, focus, workflow, or compile mode",
|
|
86
104
|
}, {
|
|
87
105
|
value: "workflow",
|
|
88
106
|
label: "Create workflow",
|
|
@@ -102,22 +120,68 @@ async function promptDatasetAction(dataset, built, latestComparison) {
|
|
|
102
120
|
}
|
|
103
121
|
function printDatasetRecommendation(dataset, built, latestComparison) {
|
|
104
122
|
if (dataset.checks.length === 0) {
|
|
105
|
-
p.log.info("Recommended first step: save a few
|
|
123
|
+
p.log.info("Recommended first step: save a few questions for this dataset.");
|
|
106
124
|
return;
|
|
107
125
|
}
|
|
108
126
|
if (!built) {
|
|
109
127
|
if (latestComparison?.raw) {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
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 source-files run: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Rerun the baseline if you want current numbers for a different agent set, or build portable context if you want a side-by-side comparison.`
|
|
130
|
+
: `Latest source-files run: ${latestComparison.raw.passed_cases}/${latestComparison.raw.total_cases}. Some questions still fail on the source files. Build portable context if you want Interf to prepare context for this work and compare it on the same questions.`);
|
|
115
131
|
return;
|
|
116
132
|
}
|
|
117
|
-
p.log.info("Recommended first step: measure the files
|
|
133
|
+
p.log.info("Recommended first step: measure the source-files baseline before compiling.");
|
|
118
134
|
return;
|
|
119
135
|
}
|
|
120
|
-
p.log.info("Recommended first step: compare the files
|
|
136
|
+
p.log.info("Recommended first step: compare the source-files baseline and the portable 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(`Source files passed on all ${subject} in this run.`);
|
|
143
|
+
}
|
|
144
|
+
else if (status === "mixed") {
|
|
145
|
+
p.log.info(`Source files were mixed across the ${subject} in this run.`);
|
|
146
|
+
}
|
|
147
|
+
else if (status === "fail") {
|
|
148
|
+
p.log.info(`Source files 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 portable context (Recommended)"
|
|
158
|
+
: "Build portable context",
|
|
159
|
+
hint: compileRecommended
|
|
160
|
+
? status === "mixed"
|
|
161
|
+
? "Some selected agents still failed on the source files. Build portable context and compare it on the same questions"
|
|
162
|
+
: "Build portable context and compare it on the same questions"
|
|
163
|
+
: "Build portable context and compare it on the same questions",
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
value: "edit",
|
|
167
|
+
label: "Change questions and settings",
|
|
168
|
+
hint: "Revise the questions or setup settings before the next run",
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
value: "rerun",
|
|
172
|
+
label: "Rerun the source-files baseline",
|
|
173
|
+
hint: "Run the same questions 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;
|
|
121
185
|
}
|
|
122
186
|
async function chooseCompiledForWizard(options) {
|
|
123
187
|
if (options.fixedCompiledName) {
|
|
@@ -129,7 +193,7 @@ async function chooseCompiledForWizard(options) {
|
|
|
129
193
|
if (savedEntries.length === 1)
|
|
130
194
|
return savedEntries[0]?.config ?? null;
|
|
131
195
|
const selected = await p.select({
|
|
132
|
-
message: "Which
|
|
196
|
+
message: "Which source folder setup do you want to work with?",
|
|
133
197
|
options: [
|
|
134
198
|
...savedEntries.map((entry) => ({
|
|
135
199
|
value: entry.config.name,
|
|
@@ -143,7 +207,7 @@ async function chooseCompiledForWizard(options) {
|
|
|
143
207
|
})),
|
|
144
208
|
{
|
|
145
209
|
value: "__new__",
|
|
146
|
-
label: "Add another
|
|
210
|
+
label: "Add another setup",
|
|
147
211
|
hint: "Add a separate folder, focus, or question set",
|
|
148
212
|
},
|
|
149
213
|
],
|
|
@@ -173,7 +237,6 @@ async function promptCompiledSetup(options) {
|
|
|
173
237
|
projectPath: options.sourcePath,
|
|
174
238
|
initial: options.initial,
|
|
175
239
|
...(options.fixedName ? { fixedName: options.fixedName } : {}),
|
|
176
|
-
skipNamePrompt: !options.fixedName && options.introStyle === "first",
|
|
177
240
|
introStyle: options.introStyle,
|
|
178
241
|
selectedWorkflowLabel: workflowLabel,
|
|
179
242
|
});
|
|
@@ -191,10 +254,10 @@ async function promptCompiledSetup(options) {
|
|
|
191
254
|
syncCompiledInterfConfigFromSourceDatasetConfig(builtCompiledPath, compiledConfigWithWorkflow);
|
|
192
255
|
}
|
|
193
256
|
console.log();
|
|
194
|
-
console.log(chalk.green(` ✓ Saved
|
|
195
|
-
console.log(chalk.dim(`
|
|
196
|
-
console.log(chalk.dim(`
|
|
197
|
-
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}`));
|
|
198
261
|
console.log(chalk.dim(` Workflow: ${workflowLabel}`));
|
|
199
262
|
console.log(chalk.dim(` Compile mode: ${describeCompileLoopSelection({
|
|
200
263
|
maxAttempts: compiledConfigWithWorkflow.max_attempts,
|
|
@@ -213,13 +276,18 @@ export async function compileSelectedCompiled(sourcePath, compiledConfig, deps =
|
|
|
213
276
|
}
|
|
214
277
|
async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
215
278
|
const builtCompiledPath = findBuiltCompiledPath(sourcePath, compiledConfig.name);
|
|
216
|
-
const latestComparison =
|
|
279
|
+
const { comparison: latestComparison, stale: latestComparisonStale, } = readCurrentSavedTestComparison({
|
|
280
|
+
projectPath: sourcePath,
|
|
281
|
+
datasetName: compiledConfig.name,
|
|
282
|
+
checks: compiledConfig.checks,
|
|
283
|
+
});
|
|
217
284
|
printDatasetSummary({
|
|
218
285
|
sourcePath,
|
|
219
286
|
dataset: compiledConfig,
|
|
220
287
|
built: Boolean(builtCompiledPath),
|
|
221
288
|
builtCompiledPath,
|
|
222
289
|
latestComparison,
|
|
290
|
+
latestComparisonStale,
|
|
223
291
|
});
|
|
224
292
|
printDatasetRecommendation(compiledConfig, Boolean(builtCompiledPath), latestComparison);
|
|
225
293
|
const action = await promptDatasetAction(compiledConfig, Boolean(builtCompiledPath), latestComparison);
|
|
@@ -234,9 +302,7 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
234
302
|
sourcePath,
|
|
235
303
|
datasetContext: {
|
|
236
304
|
config: compiledConfig,
|
|
237
|
-
datasetPath: compiledConfig.path
|
|
238
|
-
? sourcePath
|
|
239
|
-
: resolve(sourcePath, compiledConfig.path),
|
|
305
|
+
datasetPath: resolve(sourcePath, compiledConfig.path),
|
|
240
306
|
},
|
|
241
307
|
});
|
|
242
308
|
if (typeof workflowId === "string") {
|
|
@@ -282,48 +348,66 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
282
348
|
if (action === "test") {
|
|
283
349
|
if (compiledConfig.checks.length === 0) {
|
|
284
350
|
process.exitCode = 1;
|
|
285
|
-
console.log(chalk.red(`
|
|
286
|
-
console.log(chalk.dim(" Run `interf`, edit this
|
|
351
|
+
console.log(chalk.red(` Setup "${compiledConfig.name}" does not have any questions yet.`));
|
|
352
|
+
console.log(chalk.dim(" Run `interf`, edit this setup, and add a few questions first."));
|
|
287
353
|
console.log(chalk.dim(" Then rerun `interf test`."));
|
|
288
354
|
return;
|
|
289
355
|
}
|
|
290
|
-
const baselineRan = await runTestCommand({
|
|
291
|
-
sourcePath,
|
|
292
|
-
dataset: compiledConfig.name,
|
|
293
|
-
datasetConfig: compiledConfig,
|
|
294
|
-
...(builtCompiledPath ? {} : { target: "raw" }),
|
|
295
|
-
});
|
|
296
|
-
if (!baselineRan) {
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
356
|
if (builtCompiledPath) {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
message: "The files-as-is baseline already passed. Compile this dataset anyway?",
|
|
306
|
-
initialValue: false,
|
|
357
|
+
const baselineRan = await runTestCommand({
|
|
358
|
+
sourcePath,
|
|
359
|
+
dataset: compiledConfig.name,
|
|
360
|
+
datasetConfig: compiledConfig,
|
|
361
|
+
target: "both",
|
|
307
362
|
});
|
|
308
|
-
if (
|
|
363
|
+
if (!baselineRan) {
|
|
309
364
|
return;
|
|
310
365
|
}
|
|
366
|
+
return;
|
|
311
367
|
}
|
|
312
|
-
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
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
|
+
},
|
|
316
378
|
});
|
|
317
|
-
|
|
379
|
+
const baselineResult = baselineCapture.result;
|
|
380
|
+
if (!baselineRan || !baselineResult) {
|
|
381
|
+
return;
|
|
382
|
+
}
|
|
383
|
+
const nextAction = await promptPostBaselineAction(baselineResult.rows);
|
|
384
|
+
if (!nextAction || nextAction === "done") {
|
|
318
385
|
return;
|
|
319
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 });
|
|
401
|
+
return;
|
|
402
|
+
}
|
|
403
|
+
break;
|
|
320
404
|
}
|
|
321
405
|
const compileResult = await compileSelectedCompiled(sourcePath, compiledConfig);
|
|
322
406
|
if (!compileResult) {
|
|
323
407
|
return;
|
|
324
408
|
}
|
|
325
409
|
if (compileResult.testedDuringCompile) {
|
|
326
|
-
p.log.info("This compile run already
|
|
410
|
+
p.log.info("This compile run already checked the portable context on the saved questions.");
|
|
327
411
|
p.log.info("Run `interf test` later if you want a fresh side-by-side comparison summary.");
|
|
328
412
|
return;
|
|
329
413
|
}
|
|
@@ -342,13 +426,14 @@ async function runCompiledActionMenu(sourcePath, compiledConfig, options = {}) {
|
|
|
342
426
|
if (compiledConfig.checks.length === 0)
|
|
343
427
|
return;
|
|
344
428
|
if (compileResult.testedDuringCompile) {
|
|
345
|
-
p.log.info("This compile run already
|
|
346
|
-
return;
|
|
429
|
+
p.log.info("This compile run already checked the portable context on the compile agent.");
|
|
347
430
|
}
|
|
348
431
|
const runCompiledTest = await p.confirm({
|
|
349
|
-
message:
|
|
350
|
-
? "Run
|
|
351
|
-
:
|
|
432
|
+
message: compileResult.testedDuringCompile
|
|
433
|
+
? "Run a fresh source-files versus portable-context comparison now?"
|
|
434
|
+
: builtCompiledPath
|
|
435
|
+
? "Run source files and portable context on the saved questions now?"
|
|
436
|
+
: "Compare source files and portable context on the saved questions now?",
|
|
352
437
|
initialValue: true,
|
|
353
438
|
});
|
|
354
439
|
if (p.isCancel(runCompiledTest) || !runCompiledTest)
|
|
@@ -371,12 +456,12 @@ export const initCommand = {
|
|
|
371
456
|
};
|
|
372
457
|
export async function runInitCommand() {
|
|
373
458
|
p.intro(chalk.bold("Interf"));
|
|
374
|
-
p.log.info("
|
|
459
|
+
p.log.info("Interf prepares context for your agents from the source folder you choose. Start with the work, review the suggested questions, check the source files first, and build a local folder when the files need more structure.");
|
|
375
460
|
const cwd = process.cwd();
|
|
376
461
|
const detected = detectInterf(cwd);
|
|
377
462
|
const sourcePath = detected ? resolveSourceControlPath(detected.path) : cwd;
|
|
378
463
|
if (detected) {
|
|
379
|
-
p.log.info(`Working from the
|
|
464
|
+
p.log.info(`Working from the project folder: ${sourcePath}`);
|
|
380
465
|
}
|
|
381
466
|
const savedEntries = listSavedCompiledEntries(sourcePath);
|
|
382
467
|
if (savedEntries.length === 0) {
|
|
@@ -1,28 +1,28 @@
|
|
|
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` or `interf init` to define a
|
|
12
|
+
console.log(chalk.dim(" Nothing found. Start with `interf` or `interf init` to define a setup and save questions."));
|
|
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
20
|
if (dataset.config.about) {
|
|
21
21
|
console.log(chalk.dim(` task: ${dataset.config.about}`));
|
|
22
22
|
}
|
|
23
|
-
console.log(chalk.dim(` ${dataset.path ? "built" : "not built yet"} ·
|
|
23
|
+
console.log(chalk.dim(` ${dataset.path ? "built" : "not built yet"} · source folder: ${dataset.config.path}`));
|
|
24
24
|
console.log(chalk.dim(` workflow: ${dataset.config.workflow ?? "interf"}${dataset.localDraft ? " (local draft)" : ""}`));
|
|
25
|
-
console.log(chalk.dim(`
|
|
25
|
+
console.log(chalk.dim(` questions: ${dataset.config.checks.length}`));
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
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/compiler/reset.js";
|
|
4
4
|
export const resetCommand = {
|
|
5
5
|
command: "reset <scope>",
|
|
6
6
|
describe: "Reset generated compiled state while keeping `raw/` and the local workflow package",
|
|
@@ -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,8 +1,8 @@
|
|
|
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: board
|
|
5
|
+
export declare const DEFAULT_COMPILED_ABOUT_PLACEHOLDER = "Example: board prep 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
7
|
export declare const DEFAULT_COMPILE_RETRY_ATTEMPTS = 3;
|
|
8
8
|
export declare const DEFAULT_SELF_IMPROVING_LOOPS = 3;
|
|
@@ -11,6 +11,12 @@ 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>;
|