@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
|
@@ -2,14 +2,14 @@ import { cpSync, existsSync, mkdirSync, mkdtempSync, rmSync } from "node:fs";
|
|
|
2
2
|
import { tmpdir } from "node:os";
|
|
3
3
|
import { dirname, join } from "node:path";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
-
import { readInterfConfig } from "
|
|
6
|
-
import { clearCompiledRuntimeDerivedArtifacts, resetCompiledGeneratedState, } from "
|
|
7
|
-
import { formatActiveCompiledWorkflowStageStep, resolveRequiredCompiledWorkflowFromConfig, } from "
|
|
8
|
-
import { resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "
|
|
9
|
-
import { runWorkflowImprovementLoop } from "
|
|
10
|
-
import { stageExecutionShellsRoot, workflowPackagePathForCompiled, } from "
|
|
11
|
-
import { readCompiledSchemaFile } from "
|
|
12
|
-
import { initializeCompiledRuntimeState } from "
|
|
5
|
+
import { readInterfConfig } from "../../packages/project-model/interf.js";
|
|
6
|
+
import { clearCompiledRuntimeDerivedArtifacts, resetCompiledGeneratedState, } from "../../packages/compiler/reset.js";
|
|
7
|
+
import { formatActiveCompiledWorkflowStageStep, resolveRequiredCompiledWorkflowFromConfig, } from "../../packages/workflow-package/workflow-definitions.js";
|
|
8
|
+
import { loadCompiledDatasetConfig, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "../../packages/project-model/source-config.js";
|
|
9
|
+
import { runWorkflowImprovementLoop } from "../../packages/workflow-authoring/workflow-improvement.js";
|
|
10
|
+
import { stageExecutionShellsRoot, workflowPackagePathForCompiled, } from "../../packages/compiler/compiled-paths.js";
|
|
11
|
+
import { readCompiledSchemaFile } from "../../packages/compiler/compiled-schema.js";
|
|
12
|
+
import { initializeCompiledRuntimeState } from "../../packages/compiler/state.js";
|
|
13
13
|
import { compileCompiledWithReporter } from "./compiled-flow.js";
|
|
14
14
|
import { printSavedTestOutcome, questionPassRate, runSavedCompiledTest, } from "./test-flow.js";
|
|
15
15
|
function printCompileFailure(compiledPath, failedStage) {
|
|
@@ -78,16 +78,16 @@ async function runWorkflowVariation(options) {
|
|
|
78
78
|
const resetTarget = attempt > 1
|
|
79
79
|
? `attempt ${attempt}/${options.maxAttempts}`
|
|
80
80
|
: options.variationLabel;
|
|
81
|
-
console.log(chalk.dim(` Resetting generated
|
|
81
|
+
console.log(chalk.dim(` Resetting generated portable-context state before ${resetTarget}...`));
|
|
82
82
|
resetCompiledGeneratedState(options.compiledPath, "compile");
|
|
83
83
|
}
|
|
84
84
|
const result = await compileCompiledWithReporter(options.executor, options.compiledPath, {
|
|
85
85
|
heading: options.maxAttempts > 1
|
|
86
|
-
? `Building
|
|
87
|
-
: `Building
|
|
86
|
+
? `Building portable context (${options.variationLabel}, attempt ${attempt}/${options.maxAttempts})...`
|
|
87
|
+
: `Building portable context (${options.variationLabel})...`,
|
|
88
88
|
successMessage: options.maxAttempts > 1
|
|
89
|
-
? `
|
|
90
|
-
: `
|
|
89
|
+
? `Portable context ready for ${options.variationLabel}, attempt ${attempt}.`
|
|
90
|
+
: `Portable context ready for ${options.variationLabel}.`,
|
|
91
91
|
preserveStageShells: options.preserveStageShells,
|
|
92
92
|
});
|
|
93
93
|
if (!result.ok) {
|
|
@@ -123,7 +123,7 @@ async function runWorkflowVariation(options) {
|
|
|
123
123
|
bestOutcome,
|
|
124
124
|
bestSnapshotPath,
|
|
125
125
|
bestAttempt,
|
|
126
|
-
fatalError: "Could not run the saved
|
|
126
|
+
fatalError: "Could not run the saved portable-context comparison after compile.",
|
|
127
127
|
};
|
|
128
128
|
}
|
|
129
129
|
console.log();
|
|
@@ -138,7 +138,7 @@ async function runWorkflowVariation(options) {
|
|
|
138
138
|
}
|
|
139
139
|
if (outcome.result.ok) {
|
|
140
140
|
console.log();
|
|
141
|
-
console.log(chalk.green(` Compiled passed on ${options.variationLabel}, attempt ${attempt}/${options.maxAttempts}.`));
|
|
141
|
+
console.log(chalk.green(` Compiled context passed on ${options.variationLabel}, attempt ${attempt}/${options.maxAttempts}.`));
|
|
142
142
|
printStageShellReviewHint(options.compiledPath, options.preserveStageShells, "success");
|
|
143
143
|
return {
|
|
144
144
|
passed: true,
|
|
@@ -181,11 +181,11 @@ function summarizeWorkflowVariation(options) {
|
|
|
181
181
|
const passedQuestions = options.result.bestOutcome?.result.passedCases ?? 0;
|
|
182
182
|
const totalQuestions = options.result.bestOutcome?.result.totalCases ?? options.defaultTotalQuestions;
|
|
183
183
|
const summary = options.result.passed
|
|
184
|
-
? `Passed ${passedQuestions}/${totalQuestions}
|
|
184
|
+
? `Passed ${passedQuestions}/${totalQuestions} questions.`
|
|
185
185
|
: options.result.bestOutcome
|
|
186
|
-
? `Best result: ${passedQuestions}/${totalQuestions}
|
|
186
|
+
? `Best result: ${passedQuestions}/${totalQuestions} questions passed.`
|
|
187
187
|
: options.result.failedStage
|
|
188
|
-
? `Compile failed at stage ${options.result.failedStage} before any
|
|
188
|
+
? `Compile failed at stage ${options.result.failedStage} before any saved comparison result.`
|
|
189
189
|
: "Workflow variation did not produce a passing result.";
|
|
190
190
|
return {
|
|
191
191
|
variation: options.variation,
|
|
@@ -213,16 +213,16 @@ function printStageShellReviewHint(compiledPath, preserveStageShells, result) {
|
|
|
213
213
|
}
|
|
214
214
|
}
|
|
215
215
|
function printPostCompileNextStep(options) {
|
|
216
|
-
console.log(chalk.dim(`
|
|
216
|
+
console.log(chalk.dim(` Portable context: ${options.compiledPath}`));
|
|
217
217
|
if (options.checks === 0) {
|
|
218
|
-
console.log(chalk.dim(" Next: run `interf` to add
|
|
218
|
+
console.log(chalk.dim(" Next: run `interf` to add questions, then `interf test`."));
|
|
219
219
|
return;
|
|
220
220
|
}
|
|
221
221
|
if (options.testedDuringCompile) {
|
|
222
|
-
console.log(chalk.dim(" Next: inspect the
|
|
222
|
+
console.log(chalk.dim(" Next: inspect the portable context, or run `interf test` if you also want a source-files-versus-portable-context comparison."));
|
|
223
223
|
return;
|
|
224
224
|
}
|
|
225
|
-
console.log(chalk.dim(" Next: run `interf test` to compare the
|
|
225
|
+
console.log(chalk.dim(" Next: run `interf test` to compare the source files and the portable context."));
|
|
226
226
|
}
|
|
227
227
|
function formatVariationQuestionSummary(summary) {
|
|
228
228
|
return `${summary.passed_questions}/${summary.total_questions}`;
|
|
@@ -233,7 +233,7 @@ function printWorkflowVariationSummary(summaries) {
|
|
|
233
233
|
console.log();
|
|
234
234
|
console.log(chalk.bold(" Workflow variation summary"));
|
|
235
235
|
console.log();
|
|
236
|
-
console.log(" | Variation | Kind |
|
|
236
|
+
console.log(" | Variation | Kind | Questions | Result |");
|
|
237
237
|
console.log(" | --- | --- | --- | --- |");
|
|
238
238
|
for (const summary of summaries) {
|
|
239
239
|
console.log(` | ${summary.variation} | ${summary.kind} | \`${formatVariationQuestionSummary(summary)}\` | ${summary.passed ? "pass" : "fail"} |`);
|
|
@@ -245,7 +245,7 @@ function printCompiledLocalWorkflowOwnership(compiledPath, bestVariation) {
|
|
|
245
245
|
console.log();
|
|
246
246
|
console.log(chalk.dim(` Best workflow variation now lives in: ${workflowPackagePathForCompiled(compiledPath)}`));
|
|
247
247
|
console.log(chalk.dim(" The project-level workflow selection was not changed automatically."));
|
|
248
|
-
console.log(chalk.dim(" Recompiling this existing
|
|
248
|
+
console.log(chalk.dim(" Recompiling this existing portable context reuses that local workflow draft."));
|
|
249
249
|
}
|
|
250
250
|
export async function runConfiguredCompiledCompile(options) {
|
|
251
251
|
const preserveStageShells = options.preserveStageShells ?? "on-failure";
|
|
@@ -255,12 +255,12 @@ export async function runConfiguredCompiledCompile(options) {
|
|
|
255
255
|
const loopEnabled = maxAttempts != null;
|
|
256
256
|
const checks = options.compiledConfig?.checks ?? [];
|
|
257
257
|
if (loopEnabled && checks.length === 0) {
|
|
258
|
-
console.log(chalk.yellow(" Retry and self-improving modes need saved
|
|
258
|
+
console.log(chalk.yellow(" Retry and self-improving modes need saved questions. Building once without those loops."));
|
|
259
259
|
}
|
|
260
260
|
else if (loopEnabled) {
|
|
261
261
|
if (maxAttempts > 1) {
|
|
262
262
|
console.log(chalk.dim(` Retry mode: up to ${maxAttempts} compile attempts.`));
|
|
263
|
-
console.log(chalk.dim(" Interf will rerun the same workflow variation,
|
|
263
|
+
console.log(chalk.dim(" Interf will rerun the same workflow variation, check the portable context, and stop early if it passes."));
|
|
264
264
|
}
|
|
265
265
|
else {
|
|
266
266
|
console.log(chalk.dim(" Compile mode: 1 attempt per workflow variation."));
|
|
@@ -295,11 +295,13 @@ export async function runConfiguredCompiledCompile(options) {
|
|
|
295
295
|
const previousVariations = [];
|
|
296
296
|
const improvementRunId = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}`;
|
|
297
297
|
try {
|
|
298
|
-
const compiledConfig = options.compiledConfig
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
298
|
+
const compiledConfig = options.compiledConfig
|
|
299
|
+
?? loadCompiledDatasetConfig(options.compiledPath)
|
|
300
|
+
?? {
|
|
301
|
+
name: readInterfConfig(options.compiledPath)?.name ?? "compiled",
|
|
302
|
+
path: "./dataset",
|
|
303
|
+
checks: [],
|
|
304
|
+
};
|
|
303
305
|
const adoptVariationBest = (variation, result) => {
|
|
304
306
|
if (result.bestOutcome && result.bestSnapshotPath && (!bestOutcome || testScore(result.bestOutcome) > testScore(bestOutcome))) {
|
|
305
307
|
if (bestSnapshotPath) {
|
|
@@ -412,20 +414,20 @@ export async function runConfiguredCompiledCompile(options) {
|
|
|
412
414
|
if (bestSnapshotPath && bestVariation > 0) {
|
|
413
415
|
restoreCompiledBestState(bestSnapshotPath, options.compiledPath);
|
|
414
416
|
console.log();
|
|
415
|
-
console.log(chalk.dim(` Restored the best-performing
|
|
417
|
+
console.log(chalk.dim(` Restored the best-performing portable context from variation ${bestVariation}, attempt ${bestAttempt}.`));
|
|
416
418
|
}
|
|
417
419
|
process.exitCode = 1;
|
|
418
420
|
console.log();
|
|
419
421
|
printWorkflowVariationSummary(previousVariations);
|
|
420
422
|
printCompiledLocalWorkflowOwnership(options.compiledPath, bestVariation);
|
|
421
423
|
if (maxLoops != null) {
|
|
422
|
-
console.log(chalk.red(`
|
|
424
|
+
console.log(chalk.red(` Context folder did not pass after ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"} per variation and ${maxLoops} workflow-improvement loop${maxLoops === 1 ? "" : "s"}.`));
|
|
423
425
|
}
|
|
424
426
|
else {
|
|
425
|
-
console.log(chalk.red(`
|
|
427
|
+
console.log(chalk.red(` Context folder did not pass within ${maxAttempts} attempt${maxAttempts === 1 ? "" : "s"}.`));
|
|
426
428
|
}
|
|
427
429
|
if (bestOutcome) {
|
|
428
|
-
console.log(chalk.dim(` Best attempt
|
|
430
|
+
console.log(chalk.dim(` Best attempt test pass rate: ${questionPassRate(bestOutcome)}%.`));
|
|
429
431
|
}
|
|
430
432
|
printStageShellReviewHint(options.compiledPath, preserveStageShells, "failure");
|
|
431
433
|
return false;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as p from "@clack/prompts";
|
|
2
|
-
import { detectInterf } from "
|
|
3
|
-
import type { SourceDatasetConfig } from "
|
|
2
|
+
import { detectInterf } from "../../packages/project-model/interf.js";
|
|
3
|
+
import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
|
|
4
4
|
import type { CommandModule } from "yargs";
|
|
5
5
|
import { chooseCompiledConfigToBuild, ensureCompiledFromConfig } from "./compiled-flow.js";
|
|
6
6
|
import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "
|
|
4
|
-
import { sourceDatasetConfigFromInterfConfig, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "
|
|
5
|
-
import { addExecutionProfileOptions, executionProfileFromArgv, } from "
|
|
3
|
+
import { detectInterf, readInterfConfig, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
|
|
4
|
+
import { loadCompiledDatasetConfig, sourceDatasetConfigFromInterfConfig, resolveDatasetCompileMaxAttempts, resolveDatasetCompileMaxLoops, } from "../../packages/project-model/source-config.js";
|
|
5
|
+
import { addExecutionProfileOptions, executionProfileFromArgv, } from "../../packages/agents/lib/execution-profile.js";
|
|
6
6
|
import { chooseCompiledConfigToBuild, ensureCompiledFromConfig, } from "./compiled-flow.js";
|
|
7
7
|
import { resolveConfiguredDatasetSelection } from "./dataset-selection.js";
|
|
8
8
|
import { promptCompileLoopSelection, } from "./source-config-wizard.js";
|
|
@@ -11,10 +11,10 @@ import { runConfiguredCompiledCompile } from "./compile-controller.js";
|
|
|
11
11
|
export { runConfiguredCompiledCompile } from "./compile-controller.js";
|
|
12
12
|
export const compileCommand = {
|
|
13
13
|
command: "compile",
|
|
14
|
-
describe: "Build
|
|
14
|
+
describe: "Build portable context and optionally run retry or self-improving compile loops",
|
|
15
15
|
builder: (yargs) => addExecutionProfileOptions(yargs).option("max-attempts", {
|
|
16
16
|
type: "number",
|
|
17
|
-
describe: "Retry compile
|
|
17
|
+
describe: "Retry compile and test the same workflow until the dataset passes or reaches this total attempt limit",
|
|
18
18
|
}).option("max-loops", {
|
|
19
19
|
type: "number",
|
|
20
20
|
describe: "After retries fail, let Interf edit the workflow and test new workflow variations for this dataset up to this loop limit",
|
|
@@ -78,7 +78,8 @@ export async function runCompileCommand(argv = {}, deps = {}) {
|
|
|
78
78
|
if (detected) {
|
|
79
79
|
compiledPath = detected.path;
|
|
80
80
|
sourcePath = resolveSourceControlPath(detected.path);
|
|
81
|
-
compiledConfig =
|
|
81
|
+
compiledConfig = loadCompiledDatasetConfig(detected.path)
|
|
82
|
+
?? sourceDatasetConfigFromInterfConfig(detected.config);
|
|
82
83
|
if (!skipConfirm && process.stdin.isTTY && process.stdout.isTTY) {
|
|
83
84
|
const confirmed = await helpers.confirm({
|
|
84
85
|
message: `Compile dataset "${detected.config.name}" now?`,
|
|
@@ -97,18 +98,18 @@ export async function runCompileCommand(argv = {}, deps = {}) {
|
|
|
97
98
|
})
|
|
98
99
|
: await helpers.chooseCompiledConfigToBuild({
|
|
99
100
|
sourcePath,
|
|
100
|
-
selectMessage: "Which
|
|
101
|
+
selectMessage: "Which source folder setup do you want to compile?",
|
|
101
102
|
});
|
|
102
103
|
if (selectedCompiled === undefined)
|
|
103
104
|
return null;
|
|
104
105
|
if (!selectedCompiled) {
|
|
105
106
|
process.exitCode = 1;
|
|
106
107
|
if (requestedDatasetName) {
|
|
107
|
-
console.log(chalk.red(`
|
|
108
|
-
console.log(chalk.dim(" Run `interf list` to see the saved
|
|
108
|
+
console.log(chalk.red(` Setup "${requestedDatasetName}" is not set up in this project.`));
|
|
109
|
+
console.log(chalk.dim(" Run `interf list` to see the saved setups."));
|
|
109
110
|
}
|
|
110
111
|
else {
|
|
111
|
-
console.log(chalk.red(" No
|
|
112
|
+
console.log(chalk.red(" No saved setups are configured for this folder yet."));
|
|
112
113
|
console.log(chalk.dim(" Start with `interf` or `interf init` to set up this folder."));
|
|
113
114
|
}
|
|
114
115
|
return null;
|
|
@@ -211,7 +212,10 @@ export async function resolveInteractiveCompileLoopOverrides(options) {
|
|
|
211
212
|
};
|
|
212
213
|
}
|
|
213
214
|
const savedCompiledConfig = options.compiledConfig
|
|
214
|
-
?? (currentConfig
|
|
215
|
+
?? (currentConfig
|
|
216
|
+
? (loadCompiledDatasetConfig(options.compiledPath)
|
|
217
|
+
?? sourceDatasetConfigFromInterfConfig(currentConfig))
|
|
218
|
+
: null);
|
|
215
219
|
if (!savedCompiledConfig) {
|
|
216
220
|
return {
|
|
217
221
|
compiledConfig: options.compiledConfig,
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import type { SourceDatasetConfig } from "
|
|
2
|
-
import { type StageShellRetentionMode } from "
|
|
3
|
-
import type { WorkflowExecutor } from "
|
|
4
|
-
import type { CompiledCompileResult } from "../lib/workflows.js";
|
|
1
|
+
import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
|
|
2
|
+
import { type StageShellRetentionMode, type CompiledCompileResult } from "../../packages/compiler/workflows.js";
|
|
3
|
+
import type { WorkflowExecutor } from "../../packages/agents/lib/executors.js";
|
|
5
4
|
export interface SavedDatasetEntry {
|
|
6
5
|
config: SourceDatasetConfig;
|
|
7
6
|
path: string | null;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
import { listCompiledDatasetsForSourceFolder } from "
|
|
4
|
-
import { listSourceDatasetConfigs, loadCompiledDatasetConfig, loadSourceFolderConfig, resolveSourceDatasetPath, sourceDatasetConfigFromInterfConfig, syncCompiledInterfConfigFromSourceDatasetConfig, } from "
|
|
5
|
-
import { compileCompiled, createCompiled, } from "
|
|
6
|
-
import { formatWorkflowExecutionProfile } from "
|
|
3
|
+
import { listCompiledDatasetsForSourceFolder } from "../../packages/project-model/interf.js";
|
|
4
|
+
import { listSourceDatasetConfigs, loadCompiledDatasetConfig, loadSourceFolderConfig, resolveSourceDatasetPath, sourceDatasetConfigFromInterfConfig, syncCompiledInterfConfigFromSourceDatasetConfig, } from "../../packages/project-model/source-config.js";
|
|
5
|
+
import { compileCompiled, createCompiled, } from "../../packages/compiler/workflows.js";
|
|
6
|
+
import { formatWorkflowExecutionProfile } from "../../packages/agents/lib/execution-profile.js";
|
|
7
7
|
function formatSavedDatasetHint(entry) {
|
|
8
8
|
const config = entry.config;
|
|
9
9
|
const checkCount = config.checks.length;
|
|
10
10
|
const workflowHint = `workflow ${config.workflow ?? "interf"}${entry.localDraft ? " (local draft)" : ""}`;
|
|
11
11
|
if (config.about)
|
|
12
|
-
return `${config.about} · ${workflowHint}`;
|
|
12
|
+
return `${config.path} · ${config.about} · ${workflowHint}`;
|
|
13
13
|
if (checkCount === 0)
|
|
14
|
-
return
|
|
15
|
-
return `${
|
|
14
|
+
return `${config.path} · No questions yet · ${workflowHint}`;
|
|
15
|
+
return `${config.path} · ${checkCount} question${checkCount === 1 ? "" : "s"} · ${workflowHint}`;
|
|
16
16
|
}
|
|
17
17
|
export function listSavedCompiledEntries(sourcePath) {
|
|
18
18
|
const builtEntries = new Map();
|
|
@@ -34,11 +34,6 @@ export function listSavedCompiledEntries(sourcePath) {
|
|
|
34
34
|
localDraft: built?.localDraft ?? false,
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
|
-
for (const [name, built] of builtEntries.entries()) {
|
|
38
|
-
if (entries.has(name))
|
|
39
|
-
continue;
|
|
40
|
-
entries.set(name, built);
|
|
41
|
-
}
|
|
42
37
|
return Array.from(entries.values()).sort((left, right) => left.config.name.localeCompare(right.config.name));
|
|
43
38
|
}
|
|
44
39
|
export function findBuiltCompiledPath(sourcePath, compiledName) {
|
|
@@ -87,7 +82,7 @@ export function ensureCompiledFromConfig(sourcePath, datasetConfig) {
|
|
|
87
82
|
}
|
|
88
83
|
export async function compileCompiledWithReporter(executor, compiledPath, options = {}) {
|
|
89
84
|
console.log();
|
|
90
|
-
console.log(chalk.bold(` ${options.heading ?? "Building
|
|
85
|
+
console.log(chalk.bold(` ${options.heading ?? "Building portable context..."}`));
|
|
91
86
|
const profileLabel = formatWorkflowExecutionProfile(executor.executionProfile);
|
|
92
87
|
if (profileLabel) {
|
|
93
88
|
console.log(chalk.dim(` Execution profile: ${profileLabel}`));
|
|
@@ -107,6 +102,6 @@ export async function compileCompiledWithReporter(executor, compiledPath, option
|
|
|
107
102
|
return result;
|
|
108
103
|
}
|
|
109
104
|
console.log();
|
|
110
|
-
console.log(chalk.green(` ✓ ${options.successMessage ?? "
|
|
105
|
+
console.log(chalk.green(` ✓ ${options.successMessage ?? "Portable context ready."}`));
|
|
111
106
|
return result;
|
|
112
107
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
|
|
2
|
-
import { runWorkflowAuthoringDraft } from "
|
|
3
|
-
import type { SourceDatasetConfig } from "
|
|
4
|
-
import type { WorkflowExecutionProfile } from "
|
|
2
|
+
import { runWorkflowAuthoringDraft } from "../../packages/workflow-authoring/workflow-authoring.js";
|
|
3
|
+
import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
|
|
4
|
+
import type { WorkflowExecutionProfile } from "../../packages/agents/lib/executors.js";
|
|
5
5
|
export interface WorkflowWizardPrompts {
|
|
6
6
|
intro(message: string): void;
|
|
7
7
|
select(options: {
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
2
|
import * as p from "@clack/prompts";
|
|
3
|
-
import { statSync } from "node:fs";
|
|
4
3
|
import { resolve } from "node:path";
|
|
5
|
-
import { listCompiledWorkflowChoices, getCompiledWorkflow, } from "
|
|
6
|
-
import { createLocalWorkflowPackageFromTemplate } from "
|
|
7
|
-
import { isWorkflowId, } from "
|
|
4
|
+
import { listCompiledWorkflowChoices, getCompiledWorkflow, } from "../../packages/workflow-package/workflow-definitions.js";
|
|
5
|
+
import { createLocalWorkflowPackageFromTemplate } from "../../packages/workflow-package/interf-workflow-package.js";
|
|
6
|
+
import { isWorkflowId, } from "../../packages/workflow-package/local-workflows.js";
|
|
8
7
|
import { resolveOrConfigureLocalExecutor } from "./executor-flow.js";
|
|
9
|
-
import { runWorkflowAuthoringDraft } from "
|
|
10
|
-
import { listSourceDatasetConfigs, loadSourceFolderConfig, resolveSourceDatasetPath, } from "
|
|
11
|
-
import { slugify } from "
|
|
8
|
+
import { runWorkflowAuthoringDraft } from "../../packages/workflow-authoring/workflow-authoring.js";
|
|
9
|
+
import { listSourceDatasetConfigs, loadSourceFolderConfig, resolveSourceDatasetPath, } from "../../packages/project-model/source-config.js";
|
|
10
|
+
import { slugify } from "../../packages/shared/naming.js";
|
|
11
|
+
import { DEFAULT_DATASET_PATH_PLACEHOLDER, listDatasetFolderChoices, normalizeDatasetPathForConfig, } from "./source-config-wizard.js";
|
|
12
12
|
export const clackWorkflowPrompts = {
|
|
13
13
|
intro: p.intro,
|
|
14
14
|
select: (options) => p.select(options),
|
|
@@ -30,7 +30,49 @@ function findMatchingDatasetConfig(sourcePath, datasetPath) {
|
|
|
30
30
|
}
|
|
31
31
|
function describeSavedDataset(dataset) {
|
|
32
32
|
return dataset.about
|
|
33
|
-
|
|
33
|
+
? `${dataset.path} · ${dataset.about}`
|
|
34
|
+
: `${dataset.path} · ${dataset.checks.length} test${dataset.checks.length === 1 ? "" : "s"}`;
|
|
35
|
+
}
|
|
36
|
+
async function promptWorkflowDatasetFolder(sourcePath, prompts) {
|
|
37
|
+
const folderChoices = listDatasetFolderChoices(sourcePath);
|
|
38
|
+
if (folderChoices.length > 0) {
|
|
39
|
+
const selected = await prompts.select({
|
|
40
|
+
message: "Which source folder should shape this workflow?",
|
|
41
|
+
options: [
|
|
42
|
+
...folderChoices,
|
|
43
|
+
{
|
|
44
|
+
value: "__manual__",
|
|
45
|
+
label: "Enter a different path",
|
|
46
|
+
hint: "Use a relative path if the source folder is not listed here",
|
|
47
|
+
},
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
if (prompts.isCancel(selected))
|
|
51
|
+
return selected;
|
|
52
|
+
if (selected !== "__manual__") {
|
|
53
|
+
return resolve(sourcePath, normalizeDatasetPathForConfig(sourcePath, String(selected)));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
const datasetFolder = await prompts.text({
|
|
57
|
+
message: "Which source folder should shape this workflow?",
|
|
58
|
+
placeholder: DEFAULT_DATASET_PATH_PLACEHOLDER,
|
|
59
|
+
initialValue: folderChoices.length === 1 ? folderChoices[0]?.value : undefined,
|
|
60
|
+
validate: (value) => {
|
|
61
|
+
const trimmed = value.trim();
|
|
62
|
+
if (trimmed.length === 0)
|
|
63
|
+
return "Source folder is required";
|
|
64
|
+
try {
|
|
65
|
+
normalizeDatasetPathForConfig(sourcePath, trimmed);
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return error instanceof Error ? error.message : String(error);
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
if (prompts.isCancel(datasetFolder))
|
|
74
|
+
return datasetFolder;
|
|
75
|
+
return resolve(sourcePath, normalizeDatasetPathForConfig(sourcePath, String(datasetFolder)));
|
|
34
76
|
}
|
|
35
77
|
export function formatWorkflowLabel(workflow) {
|
|
36
78
|
return {
|
|
@@ -93,8 +135,8 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
|
|
|
93
135
|
options: [
|
|
94
136
|
{
|
|
95
137
|
value: "draft",
|
|
96
|
-
label: "Draft a workflow from this
|
|
97
|
-
hint: "Seed a workflow,
|
|
138
|
+
label: "Draft a workflow from this source folder (Recommended)",
|
|
139
|
+
hint: "Seed a workflow, build a preview, then let a local agent draft a reusable method for this kind of work",
|
|
98
140
|
},
|
|
99
141
|
{
|
|
100
142
|
value: "manual",
|
|
@@ -138,7 +180,7 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
|
|
|
138
180
|
const savedDatasets = listSourceDatasetConfigs(loadSourceFolderConfig(sourcePath));
|
|
139
181
|
if (savedDatasets.length > 0) {
|
|
140
182
|
const datasetChoice = await prompts.select({
|
|
141
|
-
message: "Which
|
|
183
|
+
message: "Which source folder setup should shape this workflow?",
|
|
142
184
|
options: [
|
|
143
185
|
...savedDatasets.map((dataset) => ({
|
|
144
186
|
value: dataset.name,
|
|
@@ -163,41 +205,26 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
|
|
|
163
205
|
}
|
|
164
206
|
}
|
|
165
207
|
if (!datasetPath) {
|
|
166
|
-
const datasetFolder = await prompts
|
|
167
|
-
message: "Which dataset folder should shape this workflow?",
|
|
168
|
-
placeholder: ".",
|
|
169
|
-
initialValue: ".",
|
|
170
|
-
validate: (value) => {
|
|
171
|
-
const trimmed = value.trim();
|
|
172
|
-
if (trimmed.length === 0)
|
|
173
|
-
return "Dataset folder is required";
|
|
174
|
-
const absolutePath = resolve(sourcePath, trimmed);
|
|
175
|
-
try {
|
|
176
|
-
const stat = statSync(absolutePath);
|
|
177
|
-
return stat.isDirectory() ? undefined : "Dataset folder must be a directory";
|
|
178
|
-
}
|
|
179
|
-
catch {
|
|
180
|
-
return "Dataset folder was not found";
|
|
181
|
-
}
|
|
182
|
-
},
|
|
183
|
-
});
|
|
208
|
+
const datasetFolder = await promptWorkflowDatasetFolder(sourcePath, prompts);
|
|
184
209
|
if (prompts.isCancel(datasetFolder))
|
|
185
210
|
return datasetFolder;
|
|
186
|
-
|
|
211
|
+
if (!datasetFolder)
|
|
212
|
+
return null;
|
|
213
|
+
datasetPath = String(datasetFolder);
|
|
187
214
|
matchedDataset = matchedDataset ?? findMatchingDatasetConfig(sourcePath, datasetPath);
|
|
188
215
|
}
|
|
189
216
|
const taskPrompt = await prompts.text({
|
|
190
|
-
message: "What
|
|
191
|
-
placeholder: "Example: chart reads, board
|
|
192
|
-
validate: (value) => (value.trim().length === 0 ? "
|
|
217
|
+
message: "What kind of work should this workflow help with?",
|
|
218
|
+
placeholder: "Example: chart reads, board prep, or latest planned launch status",
|
|
219
|
+
validate: (value) => (value.trim().length === 0 ? "Work focus is required" : undefined),
|
|
193
220
|
});
|
|
194
221
|
if (prompts.isCancel(taskPrompt))
|
|
195
222
|
return taskPrompt;
|
|
196
223
|
if (matchedDataset) {
|
|
197
|
-
prompts.log.info(`Shaping this workflow from
|
|
224
|
+
prompts.log.info(`Shaping this workflow from setup "${matchedDataset.name}".`);
|
|
198
225
|
}
|
|
199
226
|
if (matchedDataset?.checks.length) {
|
|
200
|
-
prompts.log.info(`Using ${matchedDataset.checks.length} saved
|
|
227
|
+
prompts.log.info(`Using ${matchedDataset.checks.length} saved question${matchedDataset.checks.length === 1 ? "" : "s"} from setup "${matchedDataset.name}" as authoring context.`);
|
|
201
228
|
}
|
|
202
229
|
const resolveExecutor = options.resolveExecutor ?? resolveOrConfigureLocalExecutor;
|
|
203
230
|
const runDraft = options.runDraft ?? runWorkflowAuthoringDraft;
|
|
@@ -213,7 +240,7 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
|
|
|
213
240
|
(prompts.log.error ?? prompts.log.info)(error ?? "No coding agent detected.");
|
|
214
241
|
return null;
|
|
215
242
|
}
|
|
216
|
-
prompts.log.info("Preparing a workflow-authoring preview from the
|
|
243
|
+
prompts.log.info("Preparing a workflow-authoring preview from the source folder, then drafting the package.");
|
|
217
244
|
const result = await runDraft({
|
|
218
245
|
sourcePath,
|
|
219
246
|
datasetPath,
|
|
@@ -232,7 +259,7 @@ export async function createCompiledWorkflowWizard(sourcePath, prompts = clackWo
|
|
|
232
259
|
}
|
|
233
260
|
process.exitCode = 1;
|
|
234
261
|
(prompts.log.error ?? prompts.log.info)(result.status === "no-change"
|
|
235
|
-
? `${result.summary} Draft mode only succeeds when it produces a
|
|
262
|
+
? `${result.summary} Draft mode only succeeds when it produces a work-specific package change.`
|
|
236
263
|
: result.summary);
|
|
237
264
|
prompts.log.info(`Workflow shell kept at: ${result.shellPath}`);
|
|
238
265
|
return null;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CommandModule } from "yargs";
|
|
2
|
-
import type { WorkflowExecutionProfile } from "
|
|
2
|
+
import type { WorkflowExecutionProfile } from "../../packages/agents/lib/executors.js";
|
|
3
3
|
export declare const createCommand: CommandModule;
|
|
4
4
|
export declare function createCompiledWizard(options?: {
|
|
5
5
|
intro?: boolean;
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { basename } from "node:path";
|
|
3
2
|
import * as p from "@clack/prompts";
|
|
4
|
-
import { detectInterf,
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import { listSourceDatasetConfigs, loadSourceFolderConfig, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../lib/source-config.js";
|
|
3
|
+
import { detectInterf, resolveSourceControlPath, } from "../../packages/project-model/interf.js";
|
|
4
|
+
import { addExecutionProfileOptions, executionProfileFromArgv, } from "../../packages/agents/lib/execution-profile.js";
|
|
5
|
+
import { listSourceDatasetConfigs, loadSourceFolderConfig, syncCompiledInterfConfigFromSourceDatasetConfig, upsertSourceDatasetConfig, } from "../../packages/project-model/source-config.js";
|
|
8
6
|
import { createWorkflowWizard, } from "./create-workflow-wizard.js";
|
|
9
7
|
import { findBuiltCompiledPath, } from "./compiled-flow.js";
|
|
10
8
|
import { DEFAULT_COMPILED_NAME, promptSingleCompiledConfig, } from "./source-config-wizard.js";
|
|
@@ -44,7 +42,7 @@ async function maybeAssignWorkflowToDataset(sourcePath, workflowId) {
|
|
|
44
42
|
const datasets = listSourceDatasetConfigs(config);
|
|
45
43
|
if (datasets.length === 0) {
|
|
46
44
|
p.log.info(`Created workflow "${workflowId}".`);
|
|
47
|
-
p.log.info(`Next: run \`interf\`, add a
|
|
45
|
+
p.log.info(`Next: run \`interf\`, add a setup, then assign workflow "${workflowId}" from that menu.`);
|
|
48
46
|
return;
|
|
49
47
|
}
|
|
50
48
|
const assignNow = await p.confirm({
|
|
@@ -53,17 +51,17 @@ async function maybeAssignWorkflowToDataset(sourcePath, workflowId) {
|
|
|
53
51
|
});
|
|
54
52
|
if (p.isCancel(assignNow) || !assignNow) {
|
|
55
53
|
p.log.info(`Created workflow "${workflowId}".`);
|
|
56
|
-
p.log.info(`Next: run \`interf\`, open a
|
|
54
|
+
p.log.info(`Next: run \`interf\`, open a saved setup, and assign workflow "${workflowId}" from that menu.`);
|
|
57
55
|
return;
|
|
58
56
|
}
|
|
59
57
|
let targetDataset = datasets[0] ?? null;
|
|
60
58
|
if (datasets.length > 1) {
|
|
61
59
|
const selected = await p.select({
|
|
62
|
-
message: "Which
|
|
60
|
+
message: "Which source folder setup should use this workflow?",
|
|
63
61
|
options: datasets.map((dataset) => ({
|
|
64
62
|
value: dataset.name,
|
|
65
63
|
label: dataset.name,
|
|
66
|
-
hint: `${dataset.path} · ${dataset.about ?? `${dataset.checks.length}
|
|
64
|
+
hint: `${dataset.path} · ${dataset.about ?? `${dataset.checks.length} question${dataset.checks.length === 1 ? "" : "s"}`}`,
|
|
67
65
|
})),
|
|
68
66
|
});
|
|
69
67
|
if (p.isCancel(selected))
|
|
@@ -85,7 +83,7 @@ async function maybeAssignWorkflowToDataset(sourcePath, workflowId) {
|
|
|
85
83
|
}
|
|
86
84
|
p.log.info(`Assigned workflow "${workflowId}" to dataset "${targetDataset.name}".`);
|
|
87
85
|
if (builtCompiledPath) {
|
|
88
|
-
p.log.info("The active local copy for that
|
|
86
|
+
p.log.info("The active local workflow copy for that portable context lives under `.interf/workflow/`.");
|
|
89
87
|
}
|
|
90
88
|
p.log.info("Next: run `interf compile`, then `interf test`.");
|
|
91
89
|
}
|
|
@@ -134,19 +132,18 @@ export async function createCompiledWizard(options = {}) {
|
|
|
134
132
|
const detected = detectInterf(cwd);
|
|
135
133
|
if (detected) {
|
|
136
134
|
process.exitCode = 1;
|
|
137
|
-
p.log.error("You are already inside
|
|
135
|
+
p.log.error("You are already inside portable context.");
|
|
138
136
|
return;
|
|
139
137
|
}
|
|
140
|
-
const
|
|
141
|
-
if (
|
|
142
|
-
p.log.info(`This project already has ${
|
|
138
|
+
const savedDatasets = listSourceDatasetConfigs(loadSourceFolderConfig(cwd));
|
|
139
|
+
if (savedDatasets.length > 0) {
|
|
140
|
+
p.log.info(`This project already has ${savedDatasets.length} saved setup${savedDatasets.length === 1 ? "" : "s"} in interf.json. Add another only when you need a separate folder, focus, or question set.`);
|
|
143
141
|
}
|
|
144
|
-
p.log.info("Interf works one
|
|
142
|
+
p.log.info("Interf works one source-folder setup at a time. Start with the work, the relevant files, and a few questions, then build portable context when you want to prepare context your agents can work from.");
|
|
145
143
|
const existingConfig = loadSourceFolderConfig(cwd);
|
|
146
|
-
const suggestedName = slugify(defaultCompiledNameForSource(cwd) || basename(cwd)) || DEFAULT_COMPILED_NAME;
|
|
147
144
|
const draft = await promptSingleCompiledConfig({
|
|
148
145
|
projectPath: cwd,
|
|
149
|
-
initial: { name:
|
|
146
|
+
initial: { name: DEFAULT_COMPILED_NAME },
|
|
150
147
|
introStyle: existingConfig ? "additional" : "first",
|
|
151
148
|
});
|
|
152
149
|
if (!draft)
|
|
@@ -158,7 +155,7 @@ export async function createCompiledWizard(options = {}) {
|
|
|
158
155
|
const existingNames = new Set(listSourceDatasetConfigs(existingConfig).map((dataset) => dataset.name));
|
|
159
156
|
if (existingNames.has(configToSave.name)) {
|
|
160
157
|
process.exitCode = 1;
|
|
161
|
-
p.log.error(`
|
|
158
|
+
p.log.error(`Setup "${configToSave.name}" already exists. Use \`interf\` or \`interf init\` to edit it.`);
|
|
162
159
|
return;
|
|
163
160
|
}
|
|
164
161
|
upsertSourceDatasetConfig(cwd, configToSave);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SourceDatasetConfig } from "
|
|
1
|
+
import type { SourceDatasetConfig } from "../../packages/project-model/lib/schema.js";
|
|
2
2
|
export declare function resolveConfiguredDatasetSelection(options: {
|
|
3
3
|
sourcePath: string;
|
|
4
4
|
requestedDatasetName?: string | null;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import {
|
|
2
|
+
import { userConfig } from "../../packages/agents/index.js";
|
|
3
3
|
import { runInitCommand } from "./init.js";
|
|
4
4
|
function printStaticLanding() {
|
|
5
|
-
const config = loadUserConfig();
|
|
5
|
+
const config = userConfig.loadUserConfig();
|
|
6
6
|
console.log();
|
|
7
7
|
console.log(chalk.bold(" Interf"));
|
|
8
|
-
console.log(chalk.dim("
|
|
8
|
+
console.log(chalk.dim(" Prepare context for your agents from the files you already have, then run `interf test` and use self-improving loops until more questions pass."));
|
|
9
9
|
console.log();
|
|
10
10
|
if (config) {
|
|
11
11
|
console.log(chalk.dim(` Agent: ${config.agent}`));
|