@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
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { isWorkflowId, listLocalWorkflowDefinitions, loadLocalWorkflowDefinition, loadWorkflowDefinitionFromDir, } from "./local-workflows.js";
|
|
4
|
+
import { warnInterf } from "../shared/logger.js";
|
|
5
|
+
import { workflowPackagePathForCompiled } from "../compiler/compiled-paths.js";
|
|
6
|
+
import { resolveSourceControlPath } from "../project-model/interf.js";
|
|
7
|
+
import { PACKAGE_ROOT } from "./lib/package-root.js";
|
|
8
|
+
import { deriveWorkflowInputsFromContextInterface, } from "./context-interface.js";
|
|
9
|
+
import { mergeStagePolicyNotesForStages } from "./workflow-stage-policy.js";
|
|
10
|
+
let builtinInterfWorkflowCache = null;
|
|
11
|
+
function toWorkflowStages(stages, fallbackStages) {
|
|
12
|
+
if (!stages || stages.length === 0)
|
|
13
|
+
return [...fallbackStages];
|
|
14
|
+
return stages.map((stage) => ({
|
|
15
|
+
id: stage.id,
|
|
16
|
+
label: stage.label,
|
|
17
|
+
description: stage.description ?? stage.label,
|
|
18
|
+
contractType: stage.contract_type,
|
|
19
|
+
skillDir: stage.skill_dir ?? stage.id,
|
|
20
|
+
reads: [...stage.reads],
|
|
21
|
+
writes: [...stage.writes],
|
|
22
|
+
...(stage.acceptance ? { acceptance: stage.acceptance } : {}),
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
export function standaloneWorkflowDefinitionFromLocalPackage(local) {
|
|
26
|
+
if (!local.stages || local.stages.length === 0) {
|
|
27
|
+
throw new Error(`Workflow package "${local.id}" is missing explicit stages. Compiled-local and portable workflow packages must be standalone.`);
|
|
28
|
+
}
|
|
29
|
+
const stages = toWorkflowStages(local.stages, []);
|
|
30
|
+
const contextInterface = local.workflow_schema;
|
|
31
|
+
const inputs = local.inputs?.length
|
|
32
|
+
? [...local.inputs]
|
|
33
|
+
: deriveWorkflowInputsFromContextInterface(contextInterface);
|
|
34
|
+
return {
|
|
35
|
+
id: local.id,
|
|
36
|
+
compilerApi: local.compiler_api ?? {
|
|
37
|
+
kind: "compiled",
|
|
38
|
+
version: 1,
|
|
39
|
+
},
|
|
40
|
+
...(local.purpose
|
|
41
|
+
? {
|
|
42
|
+
purpose: {
|
|
43
|
+
label: local.purpose.label,
|
|
44
|
+
taskHint: local.purpose.task_hint,
|
|
45
|
+
},
|
|
46
|
+
}
|
|
47
|
+
: {}),
|
|
48
|
+
inputs,
|
|
49
|
+
label: local.label,
|
|
50
|
+
hint: local.hint,
|
|
51
|
+
recommended: false,
|
|
52
|
+
contextInterface,
|
|
53
|
+
...(contextInterface ? { schema: contextInterface } : {}),
|
|
54
|
+
stages,
|
|
55
|
+
stagePolicyNotes: mergeStagePolicyNotesForStages(stages, undefined, local.stage_policy_notes),
|
|
56
|
+
starterDocs: [...local.starter_docs],
|
|
57
|
+
scope: "local",
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function builtinWorkflowPackagePath(workflowId) {
|
|
61
|
+
return join(PACKAGE_ROOT, "builtin-workflows", workflowId);
|
|
62
|
+
}
|
|
63
|
+
function getBuiltinInterfWorkflow() {
|
|
64
|
+
if (builtinInterfWorkflowCache)
|
|
65
|
+
return builtinInterfWorkflowCache;
|
|
66
|
+
const local = loadWorkflowDefinitionFromDir(builtinWorkflowPackagePath("interf"));
|
|
67
|
+
if (!local) {
|
|
68
|
+
throw new Error("Missing built-in Interf workflow package at builtin-workflows/interf.");
|
|
69
|
+
}
|
|
70
|
+
const resolved = standaloneWorkflowDefinitionFromLocalPackage(local);
|
|
71
|
+
builtinInterfWorkflowCache = {
|
|
72
|
+
...resolved,
|
|
73
|
+
id: "interf",
|
|
74
|
+
recommended: true,
|
|
75
|
+
scope: "builtin",
|
|
76
|
+
};
|
|
77
|
+
return builtinInterfWorkflowCache;
|
|
78
|
+
}
|
|
79
|
+
function listBuiltinCompiledWorkflows() {
|
|
80
|
+
return [getBuiltinInterfWorkflow()];
|
|
81
|
+
}
|
|
82
|
+
function resolveCompiledWorkflowFromLocal(workflowId, sourcePath) {
|
|
83
|
+
const local = loadLocalWorkflowDefinition(sourcePath, workflowId);
|
|
84
|
+
if (!local)
|
|
85
|
+
return null;
|
|
86
|
+
if (local.extends) {
|
|
87
|
+
throw new Error(`Workflow "${workflowId}" uses legacy extends. Rewrite it as a standalone package before creating or compiling a compiled context.`);
|
|
88
|
+
}
|
|
89
|
+
const resolved = standaloneWorkflowDefinitionFromLocalPackage(local);
|
|
90
|
+
return resolved;
|
|
91
|
+
}
|
|
92
|
+
export function listCompiledWorkflowChoices(sourcePath) {
|
|
93
|
+
const builtins = listBuiltinCompiledWorkflows();
|
|
94
|
+
if (!sourcePath)
|
|
95
|
+
return builtins;
|
|
96
|
+
const locals = listLocalWorkflowDefinitions(sourcePath)
|
|
97
|
+
.filter((definition) => definition.id !== "interf")
|
|
98
|
+
.map((definition) => {
|
|
99
|
+
try {
|
|
100
|
+
return resolveCompiledWorkflowFromLocal(definition.id, sourcePath);
|
|
101
|
+
}
|
|
102
|
+
catch (error) {
|
|
103
|
+
warnInterf(`Warning: skipping local workflow "${definition.id}" because it could not be resolved cleanly: ${error instanceof Error ? error.message : String(error)}`);
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
})
|
|
107
|
+
.filter((definition) => definition !== null);
|
|
108
|
+
return [...builtins, ...locals];
|
|
109
|
+
}
|
|
110
|
+
export function getCompiledWorkflow(workflowId, options = {}) {
|
|
111
|
+
const builtin = listBuiltinCompiledWorkflows().find((candidate) => candidate.id === workflowId);
|
|
112
|
+
if (builtin)
|
|
113
|
+
return builtin;
|
|
114
|
+
if (options.sourcePath) {
|
|
115
|
+
const local = resolveCompiledWorkflowFromLocal(workflowId, options.sourcePath);
|
|
116
|
+
if (local)
|
|
117
|
+
return local;
|
|
118
|
+
throw new Error(`No local workflow package found for "${workflowId}" under ${join(options.sourcePath, "interf", "workflows", workflowId)}.`);
|
|
119
|
+
}
|
|
120
|
+
throw new Error(`Workflow "${workflowId}" is not built-in. Provide a source path so Interf can resolve a local workflow package.`);
|
|
121
|
+
}
|
|
122
|
+
export function getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId) {
|
|
123
|
+
const workflowPath = workflowPackagePathForCompiled(compiledPath);
|
|
124
|
+
if (existsSync(join(workflowPath, "workflow.json"))) {
|
|
125
|
+
const local = loadWorkflowDefinitionFromDir(workflowPath);
|
|
126
|
+
if (!local) {
|
|
127
|
+
throw new Error(`Local workflow package at ${workflowPath} is missing or invalid. Interf compile runs the local package directly; recreate or reseed this compiled context instead of relying on source-root fallback.`);
|
|
128
|
+
}
|
|
129
|
+
if (local.extends) {
|
|
130
|
+
throw new Error(`Local workflow package at ${workflowPath} still uses legacy extends. Materialize it as a standalone package before compiling this compiled context.`);
|
|
131
|
+
}
|
|
132
|
+
return standaloneWorkflowDefinitionFromLocalPackage(local);
|
|
133
|
+
}
|
|
134
|
+
throw new Error(`Missing local workflow package at ${workflowPath}. Interf compile runs the local package directly, so recreate or reseed this compiled context instead of relying on source-root workflow "${fallbackWorkflowId}" under ${resolveSourceControlPath(compiledPath)}.`);
|
|
135
|
+
}
|
|
136
|
+
export function resolveCompiledWorkflowId(value) {
|
|
137
|
+
if (typeof value === "string" && isWorkflowId(value)) {
|
|
138
|
+
return value;
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
export function resolveCompiledWorkflowFromConfig(config) {
|
|
143
|
+
if (!config || typeof config !== "object")
|
|
144
|
+
return null;
|
|
145
|
+
const raw = config;
|
|
146
|
+
return resolveCompiledWorkflowId(raw.workflow);
|
|
147
|
+
}
|
|
148
|
+
export function resolveRequiredCompiledWorkflowFromConfig(config, label = "compiled config") {
|
|
149
|
+
const workflowId = resolveCompiledWorkflowFromConfig(config);
|
|
150
|
+
if (!workflowId) {
|
|
151
|
+
throw new Error(`Missing or invalid workflow in ${label}.`);
|
|
152
|
+
}
|
|
153
|
+
return workflowId;
|
|
154
|
+
}
|
|
155
|
+
export function formatCompiledWorkflowStageStep(workflowId, stage, options = {}) {
|
|
156
|
+
return formatWorkflowStageStep(getCompiledWorkflow(workflowId, options), stage);
|
|
157
|
+
}
|
|
158
|
+
function resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath) {
|
|
159
|
+
if (sourcePath &&
|
|
160
|
+
existsSync(join(workflowPackagePathForCompiled(sourcePath), "workflow.json"))) {
|
|
161
|
+
return getActiveCompiledWorkflow(sourcePath, workflowId);
|
|
162
|
+
}
|
|
163
|
+
return getCompiledWorkflow(workflowId, { sourcePath });
|
|
164
|
+
}
|
|
165
|
+
function formatWorkflowStageStep(workflow, stage) {
|
|
166
|
+
const stageIndex = workflow.stages.findIndex((candidate) => candidate.id === stage);
|
|
167
|
+
if (stageIndex === -1) {
|
|
168
|
+
throw new Error(`Stage "${stage}" is not part of the compiled runtime.`);
|
|
169
|
+
}
|
|
170
|
+
const stageDefinition = workflow.stages[stageIndex];
|
|
171
|
+
if (!stageDefinition) {
|
|
172
|
+
throw new Error(`Stage "${stage}" is not part of the compiled runtime.`);
|
|
173
|
+
}
|
|
174
|
+
return `Step ${stageIndex + 1}/${workflow.stages.length} - ${stageDefinition.label}`;
|
|
175
|
+
}
|
|
176
|
+
export function getWorkflowStageDefinition(workflowId, stage, sourcePath) {
|
|
177
|
+
const workflow = resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath);
|
|
178
|
+
return workflow.stages.find((candidate) => candidate.id === stage) ?? null;
|
|
179
|
+
}
|
|
180
|
+
export function getWorkflowStagePosition(workflowId, stage, sourcePath) {
|
|
181
|
+
const stages = getWorkflowStages(workflowId, sourcePath);
|
|
182
|
+
const stageIndex = stages.findIndex((candidate) => candidate === stage);
|
|
183
|
+
if (stageIndex === -1)
|
|
184
|
+
return null;
|
|
185
|
+
return {
|
|
186
|
+
stageIndex: stageIndex + 1,
|
|
187
|
+
stageTotal: stages.length,
|
|
188
|
+
stages: [...stages],
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
export function getWorkflowStages(workflowId, sourcePath) {
|
|
192
|
+
return resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath).stages.map((definition) => definition.id);
|
|
193
|
+
}
|
|
194
|
+
export function getActiveCompiledStages(compiledPath, fallbackWorkflowId) {
|
|
195
|
+
return getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId).stages.map((definition) => definition.id);
|
|
196
|
+
}
|
|
197
|
+
export function getWorkflowStagePolicyNotes(workflowId, stage, sourcePath) {
|
|
198
|
+
const workflow = resolveWorkflowDefinitionForStageMetadata(workflowId, sourcePath);
|
|
199
|
+
return [...(workflow.stagePolicyNotes?.[stage] ?? [])];
|
|
200
|
+
}
|
|
201
|
+
export function getActiveCompiledStagePolicyNotes(compiledPath, fallbackWorkflowId, stage) {
|
|
202
|
+
const workflow = getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId);
|
|
203
|
+
return [...(workflow.stagePolicyNotes?.[stage] ?? [])];
|
|
204
|
+
}
|
|
205
|
+
export function resolveActiveCompiledStageAcceptance(compiledPath, fallbackWorkflowId, stage) {
|
|
206
|
+
return getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId).stages.find((candidate) => candidate.id === stage)?.acceptance;
|
|
207
|
+
}
|
|
208
|
+
export function formatActiveCompiledWorkflowStageStep(compiledPath, fallbackWorkflowId, stage) {
|
|
209
|
+
return formatWorkflowStageStep(getActiveCompiledWorkflow(compiledPath, fallbackWorkflowId), stage);
|
|
210
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type LocalInstructionMode, type RuntimeInstructionMode, type RuntimeStageInstructions } from "../compiler/lib/schema.js";
|
|
2
|
+
import { type WorkflowStageDefinition } from "./workflow-definitions.js";
|
|
3
|
+
export interface WorkflowReporter {
|
|
4
|
+
line?: (message: string) => void;
|
|
5
|
+
blankLine?: () => void;
|
|
6
|
+
}
|
|
7
|
+
export interface WorkflowStageResult {
|
|
8
|
+
ok: boolean;
|
|
9
|
+
code: number;
|
|
10
|
+
summary?: string | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function workflowQueryDirectory(): string;
|
|
13
|
+
export declare function workflowImproveDirectory(): string;
|
|
14
|
+
export declare function workflowCompileStageDirectory(stageDir: string): string;
|
|
15
|
+
export interface LocalSkillContractExtension {
|
|
16
|
+
reads: string[];
|
|
17
|
+
count: number;
|
|
18
|
+
notes: string[];
|
|
19
|
+
localMode: LocalInstructionMode | null;
|
|
20
|
+
effectiveMode: RuntimeInstructionMode;
|
|
21
|
+
modeSources: string[];
|
|
22
|
+
}
|
|
23
|
+
export declare function emptyLocalSkillContractExtension(): LocalSkillContractExtension;
|
|
24
|
+
export declare function buildLocalSkillContractExtension(rootPath: string, directories: string[], purpose: string): LocalSkillContractExtension;
|
|
25
|
+
export declare function buildLocalSkillContractExtensionRelativeTo(rootPath: string, relativeToPath: string, directories: string[], purpose: string): LocalSkillContractExtension;
|
|
26
|
+
export declare function mergeLocalSkillContractExtensions(extensions: LocalSkillContractExtension[]): LocalSkillContractExtension;
|
|
27
|
+
export declare function buildStageInstructions(stageSkillDir: string, localSkills: LocalSkillContractExtension): RuntimeStageInstructions;
|
|
28
|
+
export declare function reportLine(reporter: WorkflowReporter | undefined, message: string): void;
|
|
29
|
+
export declare function reportBlankLine(reporter: WorkflowReporter | undefined): void;
|
|
30
|
+
export declare function reportValidationFailure(reporter: WorkflowReporter | undefined, summary: string, errors?: string[]): void;
|
|
31
|
+
export declare function resolveStageAcceptance(workflowId: string, stageId: string, sourcePath?: string): WorkflowStageDefinition["acceptance"] | undefined;
|
|
32
|
+
export declare function validateStageOutcome(_dirPath: string, validation: {
|
|
33
|
+
ok: boolean;
|
|
34
|
+
summary: string;
|
|
35
|
+
}): {
|
|
36
|
+
ok: boolean;
|
|
37
|
+
summary: string;
|
|
38
|
+
};
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join, relative, sep } from "node:path";
|
|
3
|
+
import { listFilesRecursive } from "../shared/filesystem.js";
|
|
4
|
+
import { parseJsonFrontmatter } from "../shared/parse.js";
|
|
5
|
+
import { isMarkdownFile } from "../shared/file-types.js";
|
|
6
|
+
import { getCompiledWorkflow, } from "./workflow-definitions.js";
|
|
7
|
+
import { workflowPackagePathForCompiled } from "../compiler/compiled-paths.js";
|
|
8
|
+
const LOCAL_SKILL_READ_LIMIT = 50;
|
|
9
|
+
export function workflowQueryDirectory() {
|
|
10
|
+
return "workflow/use/query";
|
|
11
|
+
}
|
|
12
|
+
export function workflowImproveDirectory() {
|
|
13
|
+
return "workflow/improve";
|
|
14
|
+
}
|
|
15
|
+
export function workflowCompileStageDirectory(stageDir) {
|
|
16
|
+
return `workflow/compile/stages/${stageDir}`;
|
|
17
|
+
}
|
|
18
|
+
export function emptyLocalSkillContractExtension() {
|
|
19
|
+
return {
|
|
20
|
+
reads: [],
|
|
21
|
+
count: 0,
|
|
22
|
+
notes: [],
|
|
23
|
+
localMode: null,
|
|
24
|
+
effectiveMode: "builtin",
|
|
25
|
+
modeSources: [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function readLocalInstructionMode(filePath) {
|
|
29
|
+
try {
|
|
30
|
+
const parsed = parseJsonFrontmatter(readFileSync(filePath, "utf8"));
|
|
31
|
+
const mode = parsed?.frontmatter.mode;
|
|
32
|
+
return mode === "extend" || mode === "override" ? mode : null;
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function collectLocalSkillDocs(rootPath, directories) {
|
|
39
|
+
return collectLocalSkillDocsRelativeTo(rootPath, rootPath, directories);
|
|
40
|
+
}
|
|
41
|
+
function collectLocalSkillDocsRelativeTo(rootPath, relativeToPath, directories) {
|
|
42
|
+
const docs = new Map();
|
|
43
|
+
const workflowRoot = workflowPackagePathForCompiled(rootPath);
|
|
44
|
+
const rootReadme = join(workflowRoot, "README.md");
|
|
45
|
+
if (existsSync(rootReadme)) {
|
|
46
|
+
const read = projectWorkflowReadPath(rootPath, relativeToPath, rootReadme);
|
|
47
|
+
docs.set(read, {
|
|
48
|
+
read,
|
|
49
|
+
absolutePath: rootReadme,
|
|
50
|
+
mode: readLocalInstructionMode(rootReadme),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
for (const directory of directories) {
|
|
54
|
+
const absoluteDirectory = resolveAuthoringDirectory(rootPath, directory);
|
|
55
|
+
for (const filePath of listFilesRecursive(absoluteDirectory, isMarkdownFile)) {
|
|
56
|
+
const read = projectWorkflowReadPath(rootPath, relativeToPath, filePath);
|
|
57
|
+
docs.set(read, {
|
|
58
|
+
read,
|
|
59
|
+
absolutePath: filePath,
|
|
60
|
+
mode: readLocalInstructionMode(filePath),
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return Array.from(docs.values())
|
|
65
|
+
.sort((a, b) => a.read.localeCompare(b.read))
|
|
66
|
+
.slice(0, LOCAL_SKILL_READ_LIMIT);
|
|
67
|
+
}
|
|
68
|
+
function resolveAuthoringDirectory(rootPath, directory) {
|
|
69
|
+
if (directory === "workflow") {
|
|
70
|
+
return workflowPackagePathForCompiled(rootPath);
|
|
71
|
+
}
|
|
72
|
+
if (directory.startsWith(`workflow${sep}`) || directory.startsWith("workflow/")) {
|
|
73
|
+
const relativeWorkflowPath = directory.replace(/^workflow[\\/]/, "");
|
|
74
|
+
return join(workflowPackagePathForCompiled(rootPath), relativeWorkflowPath);
|
|
75
|
+
}
|
|
76
|
+
return join(rootPath, directory);
|
|
77
|
+
}
|
|
78
|
+
function projectWorkflowReadPath(rootPath, relativeToPath, absolutePath) {
|
|
79
|
+
const workflowRoot = workflowPackagePathForCompiled(rootPath);
|
|
80
|
+
const normalizedWorkflowRoot = `${workflowRoot}${sep}`;
|
|
81
|
+
if (absolutePath === workflowRoot || absolutePath.startsWith(normalizedWorkflowRoot)) {
|
|
82
|
+
const relativeWorkflowPath = relative(workflowRoot, absolutePath);
|
|
83
|
+
return relative(relativeToPath, join(rootPath, "workflow", relativeWorkflowPath));
|
|
84
|
+
}
|
|
85
|
+
return relative(relativeToPath, absolutePath);
|
|
86
|
+
}
|
|
87
|
+
export function buildLocalSkillContractExtension(rootPath, directories, purpose) {
|
|
88
|
+
const docs = collectLocalSkillDocs(rootPath, directories);
|
|
89
|
+
return buildContractExtensionFromDocs(docs, directories, purpose);
|
|
90
|
+
}
|
|
91
|
+
export function buildLocalSkillContractExtensionRelativeTo(rootPath, relativeToPath, directories, purpose) {
|
|
92
|
+
const docs = collectLocalSkillDocsRelativeTo(rootPath, relativeToPath, directories);
|
|
93
|
+
return buildContractExtensionFromDocs(docs, directories, purpose);
|
|
94
|
+
}
|
|
95
|
+
function buildContractExtensionFromDocs(docs, directories, purpose) {
|
|
96
|
+
const reads = docs.map((doc) => doc.read);
|
|
97
|
+
const modeSources = docs.filter((doc) => doc.mode !== null).map((doc) => doc.read);
|
|
98
|
+
const localMode = docs.some((doc) => doc.mode === "override")
|
|
99
|
+
? "override"
|
|
100
|
+
: docs.some((doc) => doc.mode === "extend")
|
|
101
|
+
? "extend"
|
|
102
|
+
: null;
|
|
103
|
+
if (docs.length === 0) {
|
|
104
|
+
return emptyLocalSkillContractExtension();
|
|
105
|
+
}
|
|
106
|
+
const readNotice = directories.length > 0
|
|
107
|
+
? `Read any local instruction docs listed under ${directories.join(", ")} before executing the core stage.`
|
|
108
|
+
: "Read any local instruction docs listed by the stage contract before executing the core stage.";
|
|
109
|
+
return {
|
|
110
|
+
reads,
|
|
111
|
+
count: reads.length,
|
|
112
|
+
notes: [
|
|
113
|
+
readNotice,
|
|
114
|
+
localMode === "override"
|
|
115
|
+
? `${purpose} One or more local docs declare \`mode: override\`, so their workflow instructions replace Interf's bundled stage instructions for this run. They still do not bypass coverage proof, evidence weighting, required writes, or deterministic runtime reconciliation.`
|
|
116
|
+
: `${purpose} These local workflow docs can refine the stage, but they do not bypass coverage proof, evidence weighting, required writes, or deterministic runtime reconciliation.`,
|
|
117
|
+
],
|
|
118
|
+
localMode,
|
|
119
|
+
effectiveMode: localMode ?? "builtin",
|
|
120
|
+
modeSources,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export function mergeLocalSkillContractExtensions(extensions) {
|
|
124
|
+
const reads = Array.from(new Set(extensions.flatMap((extension) => extension.reads)));
|
|
125
|
+
const notes = Array.from(new Set(extensions.flatMap((extension) => extension.notes)));
|
|
126
|
+
const modeSources = Array.from(new Set(extensions.flatMap((extension) => extension.modeSources)));
|
|
127
|
+
const localMode = extensions.some((extension) => extension.localMode === "override")
|
|
128
|
+
? "override"
|
|
129
|
+
: extensions.some((extension) => extension.localMode === "extend")
|
|
130
|
+
? "extend"
|
|
131
|
+
: null;
|
|
132
|
+
return {
|
|
133
|
+
reads,
|
|
134
|
+
count: reads.length,
|
|
135
|
+
notes,
|
|
136
|
+
localMode,
|
|
137
|
+
effectiveMode: localMode ?? "builtin",
|
|
138
|
+
modeSources,
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
export function buildStageInstructions(stageSkillDir, localSkills) {
|
|
142
|
+
return {
|
|
143
|
+
stage_skill_dir: stageSkillDir,
|
|
144
|
+
effective_mode: localSkills.effectiveMode,
|
|
145
|
+
local_mode: localSkills.localMode,
|
|
146
|
+
local_docs: localSkills.reads,
|
|
147
|
+
mode_sources: localSkills.modeSources,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
export function reportLine(reporter, message) {
|
|
151
|
+
reporter?.line?.(message);
|
|
152
|
+
}
|
|
153
|
+
export function reportBlankLine(reporter) {
|
|
154
|
+
reporter?.blankLine?.();
|
|
155
|
+
}
|
|
156
|
+
export function reportValidationFailure(reporter, summary, errors = []) {
|
|
157
|
+
reportLine(reporter, summary);
|
|
158
|
+
for (const error of errors) {
|
|
159
|
+
reportLine(reporter, `- ${error}`);
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
export function resolveStageAcceptance(workflowId, stageId, sourcePath) {
|
|
163
|
+
return getCompiledWorkflow(workflowId, { sourcePath }).stages.find((stage) => stage.id === stageId)?.acceptance;
|
|
164
|
+
}
|
|
165
|
+
export function validateStageOutcome(_dirPath, validation) {
|
|
166
|
+
return validation;
|
|
167
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { WorkflowImprovementContext } from "../compiler/lib/schema.js";
|
|
2
|
+
export interface WorkflowImprovementReviewSourcePaths {
|
|
3
|
+
compiledRuntime: string | null;
|
|
4
|
+
testComparisons: string | null;
|
|
5
|
+
executionShells: string | null;
|
|
6
|
+
targetTestRuns: string | null;
|
|
7
|
+
targetTestSandboxes: string | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function resolveWorkflowImprovementReviewSourcePaths(compiledPath: string): WorkflowImprovementReviewSourcePaths;
|
|
10
|
+
export declare function resolveWorkflowImprovementReviewPaths(compiledPath: string): WorkflowImprovementContext["review_paths"];
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { testRootForCompiled, targetTestRunsRootForCompiled, targetTestSandboxesRootForCompiled, stageExecutionShellsRoot, compiledRuntimeRoot, } from "../compiler/compiled-paths.js";
|
|
3
|
+
export function resolveWorkflowImprovementReviewSourcePaths(compiledPath) {
|
|
4
|
+
const compiledRuntime = compiledRuntimeRoot(compiledPath);
|
|
5
|
+
const testComparisons = testRootForCompiled(compiledPath);
|
|
6
|
+
const executionShells = stageExecutionShellsRoot(compiledPath);
|
|
7
|
+
const targetTestRuns = targetTestRunsRootForCompiled(compiledPath);
|
|
8
|
+
const targetTestSandboxes = targetTestSandboxesRootForCompiled(compiledPath);
|
|
9
|
+
return {
|
|
10
|
+
compiledRuntime: existsSync(compiledRuntime) ? compiledRuntime : null,
|
|
11
|
+
testComparisons: existsSync(testComparisons) ? testComparisons : null,
|
|
12
|
+
executionShells: existsSync(executionShells) ? executionShells : null,
|
|
13
|
+
targetTestRuns: existsSync(targetTestRuns) ? targetTestRuns : null,
|
|
14
|
+
targetTestSandboxes: existsSync(targetTestSandboxes) ? targetTestSandboxes : null,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export function resolveWorkflowImprovementReviewPaths(compiledPath) {
|
|
18
|
+
const sources = resolveWorkflowImprovementReviewSourcePaths(compiledPath);
|
|
19
|
+
return {
|
|
20
|
+
workflow_root: "workflow",
|
|
21
|
+
compiled_runtime: sources.compiledRuntime ? "artifacts/compiled-runtime" : null,
|
|
22
|
+
test_comparisons: sources.testComparisons ? "artifacts/test-comparisons" : null,
|
|
23
|
+
execution_shells: sources.executionShells ? "artifacts/execution-shells" : null,
|
|
24
|
+
test_runs: sources.targetTestRuns ? "artifacts/test-runs" : null,
|
|
25
|
+
test_sandboxes: sources.targetTestSandboxes ? "artifacts/test-sandboxes" : null,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export interface StagePolicyStageLike {
|
|
2
|
+
id: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function normalizeStagePolicyNotes(value: unknown): Record<string, string[]> | undefined;
|
|
5
|
+
export declare function mergeStagePolicyNotesForStages(stages: readonly StagePolicyStageLike[], baseNotes: unknown, overrideNotes: Record<string, string[]> | undefined): Record<string, string[]> | undefined;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export function normalizeStagePolicyNotes(value) {
|
|
2
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
3
|
+
return undefined;
|
|
4
|
+
const normalized = {};
|
|
5
|
+
for (const [stageId, notes] of Object.entries(value)) {
|
|
6
|
+
if (!Array.isArray(notes))
|
|
7
|
+
continue;
|
|
8
|
+
const cleaned = Array.from(new Set(notes
|
|
9
|
+
.filter((note) => typeof note === "string")
|
|
10
|
+
.map((note) => note.trim())
|
|
11
|
+
.filter((note) => note.length > 0)));
|
|
12
|
+
if (cleaned.length > 0) {
|
|
13
|
+
normalized[stageId] = cleaned;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return Object.keys(normalized).length > 0 ? normalized : undefined;
|
|
17
|
+
}
|
|
18
|
+
export function mergeStagePolicyNotesForStages(stages, baseNotes, overrideNotes) {
|
|
19
|
+
const normalizedBase = normalizeStagePolicyNotes(baseNotes);
|
|
20
|
+
const merged = {};
|
|
21
|
+
for (const stage of stages) {
|
|
22
|
+
const combined = Array.from(new Set([
|
|
23
|
+
...(normalizedBase?.[stage.id] ?? []),
|
|
24
|
+
...((overrideNotes?.[stage.id] ?? []).map((note) => note.trim()).filter((note) => note.length > 0)),
|
|
25
|
+
]));
|
|
26
|
+
if (combined.length > 0) {
|
|
27
|
+
merged[stage.id] = combined;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return Object.keys(merged).length > 0 ? merged : undefined;
|
|
31
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type WorkflowExecutor } from "../agents/lib/executors.js";
|
|
2
|
+
import { type RuntimeContractType, type RuntimeStageInstructions } from "../compiler/lib/schema.js";
|
|
3
|
+
import { type RuntimeStageContractDraft } from "../compiler/runtime.js";
|
|
4
|
+
import { type WorkflowReporter, type WorkflowStageResult } from "./workflow-helpers.js";
|
|
5
|
+
interface WorkflowStageShape<TContractType extends RuntimeContractType> {
|
|
6
|
+
id: string;
|
|
7
|
+
label: string;
|
|
8
|
+
contractType: TContractType;
|
|
9
|
+
}
|
|
10
|
+
interface ExecuteValidatedStageOptions<TContractType extends RuntimeContractType> {
|
|
11
|
+
executor: WorkflowExecutor;
|
|
12
|
+
compiledPath: string;
|
|
13
|
+
executionPath?: string;
|
|
14
|
+
targetName: string;
|
|
15
|
+
workflow: string;
|
|
16
|
+
workflowSourcePath?: string;
|
|
17
|
+
stageDefinition: WorkflowStageShape<TContractType>;
|
|
18
|
+
instructions: RuntimeStageInstructions;
|
|
19
|
+
summary: string;
|
|
20
|
+
contract: RuntimeStageContractDraft;
|
|
21
|
+
statusLines: string[];
|
|
22
|
+
reporter?: WorkflowReporter;
|
|
23
|
+
completionCheck?: (() => boolean) | null;
|
|
24
|
+
syncWrites?: (() => void) | null;
|
|
25
|
+
reconcile?: (() => boolean) | null;
|
|
26
|
+
refreshArtifacts?: (() => void) | null;
|
|
27
|
+
validate: () => {
|
|
28
|
+
ok: boolean;
|
|
29
|
+
summary: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
interface ExecuteValidatedSummarizeStageOptions<TContractType extends RuntimeContractType> extends ExecuteValidatedStageOptions<TContractType> {
|
|
33
|
+
startingSummaryCount: number;
|
|
34
|
+
targetCount: number;
|
|
35
|
+
}
|
|
36
|
+
export declare function findStageByContractType<TStage extends {
|
|
37
|
+
contractType: string;
|
|
38
|
+
}>(stages: TStage[], contractType: TStage["contractType"]): TStage;
|
|
39
|
+
export declare function executeValidatedStage<TContractType extends RuntimeContractType>(options: ExecuteValidatedStageOptions<TContractType>): Promise<WorkflowStageResult>;
|
|
40
|
+
export declare function executeValidatedSummarizeStage<TContractType extends RuntimeContractType>(options: ExecuteValidatedSummarizeStageOptions<TContractType>): Promise<WorkflowStageResult>;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { markRuntimeRunSucceededAfterValidation, buildStagePrompt, markRuntimeRunFailedAfterValidation, runExecutorStage, runExecutorSummarizeStage, } from "../compiler/runtime.js";
|
|
2
|
+
import { reportValidationFailure, validateStageOutcome, } from "./workflow-helpers.js";
|
|
3
|
+
export function findStageByContractType(stages, contractType) {
|
|
4
|
+
const stage = stages.find((candidate) => candidate.contractType === contractType);
|
|
5
|
+
if (!stage) {
|
|
6
|
+
throw new Error(`Missing workflow stage for contract type: ${contractType}`);
|
|
7
|
+
}
|
|
8
|
+
return stage;
|
|
9
|
+
}
|
|
10
|
+
export async function executeValidatedStage(options) {
|
|
11
|
+
const completionCheck = options.completionCheck
|
|
12
|
+
? () => {
|
|
13
|
+
options.syncWrites?.();
|
|
14
|
+
options.reconcile?.();
|
|
15
|
+
return options.completionCheck?.() === true;
|
|
16
|
+
}
|
|
17
|
+
: undefined;
|
|
18
|
+
const code = await runExecutorStage({
|
|
19
|
+
executor: options.executor,
|
|
20
|
+
compiledPath: options.compiledPath,
|
|
21
|
+
executionPath: options.executionPath,
|
|
22
|
+
compiledName: options.targetName,
|
|
23
|
+
workflow: options.workflow,
|
|
24
|
+
workflowSourcePath: options.workflowSourcePath,
|
|
25
|
+
stage: options.stageDefinition.id,
|
|
26
|
+
stageLabel: options.stageDefinition.label,
|
|
27
|
+
contractType: options.stageDefinition.contractType,
|
|
28
|
+
summary: options.summary,
|
|
29
|
+
contract: options.contract,
|
|
30
|
+
buildPrompt: (contractPath) => buildStagePrompt(options.instructions, contractPath, options.statusLines),
|
|
31
|
+
completionCheck,
|
|
32
|
+
});
|
|
33
|
+
return finalizeValidatedStage(options, code);
|
|
34
|
+
}
|
|
35
|
+
export async function executeValidatedSummarizeStage(options) {
|
|
36
|
+
const completionCheck = options.completionCheck
|
|
37
|
+
? () => {
|
|
38
|
+
options.syncWrites?.();
|
|
39
|
+
options.reconcile?.();
|
|
40
|
+
return options.completionCheck?.() === true;
|
|
41
|
+
}
|
|
42
|
+
: undefined;
|
|
43
|
+
const code = await runExecutorSummarizeStage({
|
|
44
|
+
executor: options.executor,
|
|
45
|
+
compiledPath: options.compiledPath,
|
|
46
|
+
executionPath: options.executionPath,
|
|
47
|
+
compiledName: options.targetName,
|
|
48
|
+
workflow: options.workflow,
|
|
49
|
+
workflowSourcePath: options.workflowSourcePath,
|
|
50
|
+
stage: options.stageDefinition.id,
|
|
51
|
+
stageLabel: options.stageDefinition.label,
|
|
52
|
+
contractType: options.stageDefinition.contractType,
|
|
53
|
+
summary: options.summary,
|
|
54
|
+
contract: options.contract,
|
|
55
|
+
buildPrompt: (contractPath) => buildStagePrompt(options.instructions, contractPath, options.statusLines),
|
|
56
|
+
completionCheck,
|
|
57
|
+
startingSummaryCount: options.startingSummaryCount,
|
|
58
|
+
targetCount: options.targetCount,
|
|
59
|
+
});
|
|
60
|
+
return finalizeValidatedStage(options, code);
|
|
61
|
+
}
|
|
62
|
+
function finalizeValidatedStage(options, code) {
|
|
63
|
+
const refreshAndValidate = () => {
|
|
64
|
+
options.syncWrites?.();
|
|
65
|
+
options.reconcile?.();
|
|
66
|
+
options.refreshArtifacts?.();
|
|
67
|
+
return validateStageOutcome(options.compiledPath, options.validate());
|
|
68
|
+
};
|
|
69
|
+
if (code !== 0) {
|
|
70
|
+
let completionSatisfied = false;
|
|
71
|
+
try {
|
|
72
|
+
options.syncWrites?.();
|
|
73
|
+
options.reconcile?.();
|
|
74
|
+
completionSatisfied = options.completionCheck?.() === true;
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
completionSatisfied = false;
|
|
78
|
+
}
|
|
79
|
+
if (completionSatisfied) {
|
|
80
|
+
const validation = refreshAndValidate();
|
|
81
|
+
if (validation.ok) {
|
|
82
|
+
markRuntimeRunSucceededAfterValidation(options.compiledPath, validation.summary);
|
|
83
|
+
return {
|
|
84
|
+
ok: true,
|
|
85
|
+
code: 0,
|
|
86
|
+
summary: validation.summary,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
reportValidationFailure(options.reporter, validation.summary);
|
|
90
|
+
markRuntimeRunFailedAfterValidation(options.compiledPath, validation.summary);
|
|
91
|
+
return {
|
|
92
|
+
ok: false,
|
|
93
|
+
code,
|
|
94
|
+
summary: validation.summary,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
return { ok: false, code };
|
|
98
|
+
}
|
|
99
|
+
const validation = refreshAndValidate();
|
|
100
|
+
if (!validation.ok) {
|
|
101
|
+
reportValidationFailure(options.reporter, validation.summary);
|
|
102
|
+
markRuntimeRunFailedAfterValidation(options.compiledPath, validation.summary);
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
ok: validation.ok,
|
|
106
|
+
code: validation.ok ? 0 : 1,
|
|
107
|
+
summary: validation.summary,
|
|
108
|
+
};
|
|
109
|
+
}
|