@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,262 @@
|
|
|
1
|
+
import { appendFileSync, mkdirSync, existsSync, readFileSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { dirname, join, relative } from "node:path";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
import { countFilesRecursive } from "../shared/filesystem.js";
|
|
5
|
+
import { buildRuntimeExecutorInfo } from "../agents/lib/executors.js";
|
|
6
|
+
import { RuntimeRunSchema, } from "./lib/schema.js";
|
|
7
|
+
import { getWorkflowStageDefinition, getWorkflowStagePosition, getWorkflowStages, } from "../workflow-package/workflow-definitions.js";
|
|
8
|
+
import { archivedStageContractPath, eventLogPath, logsDirPath, promptLogPath, runHistoryPath, runPath, stageContractPath, statusLogPath, } from "./runtime-paths.js";
|
|
9
|
+
import { warnInterf } from "../shared/logger.js";
|
|
10
|
+
export function loadRuntimeRun(dirPath) {
|
|
11
|
+
const path = runPath(dirPath);
|
|
12
|
+
if (!existsSync(path))
|
|
13
|
+
return null;
|
|
14
|
+
try {
|
|
15
|
+
const raw = JSON.parse(readFileSync(path, "utf8"));
|
|
16
|
+
const parsed = RuntimeRunSchema.safeParse(raw);
|
|
17
|
+
if (parsed.success)
|
|
18
|
+
return parsed.data;
|
|
19
|
+
warnInterf(`Warning: failed to validate runtime run at ${path}: ${parsed.error.issues.map((issue) => issue.message).join("; ")}`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
warnInterf(`Warning: failed to read runtime run at ${path}: ${error instanceof Error ? error.message : String(error)}`);
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
export function saveRuntimeRun(dirPath, run) {
|
|
28
|
+
mkdirSync(dirname(runPath(dirPath)), { recursive: true });
|
|
29
|
+
writeFileSync(runPath(dirPath), JSON.stringify(run, null, 2) + "\n");
|
|
30
|
+
}
|
|
31
|
+
export function writeStageContract(dirPath, contract) {
|
|
32
|
+
mkdirSync(dirname(stageContractPath(dirPath)), { recursive: true });
|
|
33
|
+
const path = stageContractPath(dirPath);
|
|
34
|
+
writeFileSync(path, JSON.stringify(contract, null, 2) + "\n");
|
|
35
|
+
return path;
|
|
36
|
+
}
|
|
37
|
+
function writeArchivedStageContract(dirPath, runId, contract) {
|
|
38
|
+
const path = archivedStageContractPath(dirPath, runId);
|
|
39
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
40
|
+
writeFileSync(path, JSON.stringify(contract, null, 2) + "\n");
|
|
41
|
+
return path;
|
|
42
|
+
}
|
|
43
|
+
export async function runExecutorStage(options) {
|
|
44
|
+
const startedRun = startRuntimeRun(options);
|
|
45
|
+
const prompt = options.buildPrompt(startedRun.activeContractPath);
|
|
46
|
+
writeRuntimeRunPrompt(options.compiledPath, startedRun.run.run_id, prompt);
|
|
47
|
+
const executionPath = options.executionPath ?? options.compiledPath;
|
|
48
|
+
const code = await options.executor.execute(executionPath, prompt, {
|
|
49
|
+
eventLogPath: eventLogPath(options.compiledPath, startedRun.run.run_id),
|
|
50
|
+
statusLogPath: statusLogPath(options.compiledPath, startedRun.run.run_id),
|
|
51
|
+
completionCheck: options.completionCheck,
|
|
52
|
+
});
|
|
53
|
+
finalizeRuntimeRun(options.compiledPath, code);
|
|
54
|
+
return code;
|
|
55
|
+
}
|
|
56
|
+
export async function runExecutorSummarizeStage(options) {
|
|
57
|
+
const startedRun = startRuntimeRun(options);
|
|
58
|
+
const prompt = options.buildPrompt(startedRun.activeContractPath);
|
|
59
|
+
let lastReported = 0;
|
|
60
|
+
writeRuntimeRunPrompt(options.compiledPath, startedRun.run.run_id, prompt);
|
|
61
|
+
const executionPath = options.executionPath ?? options.compiledPath;
|
|
62
|
+
const progressPromise = options.executor.execute(executionPath, prompt, {
|
|
63
|
+
eventLogPath: eventLogPath(options.compiledPath, startedRun.run.run_id),
|
|
64
|
+
statusLogPath: statusLogPath(options.compiledPath, startedRun.run.run_id),
|
|
65
|
+
completionCheck: options.completionCheck,
|
|
66
|
+
});
|
|
67
|
+
const timer = setInterval(() => {
|
|
68
|
+
const currentSummaryCount = countFilesRecursive(join(options.compiledPath, "summaries"));
|
|
69
|
+
const completed = Math.max(0, Math.min(options.targetCount, currentSummaryCount - options.startingSummaryCount));
|
|
70
|
+
if (completed <= lastReported)
|
|
71
|
+
return;
|
|
72
|
+
lastReported = completed;
|
|
73
|
+
updateRuntimeRun(options.compiledPath, {
|
|
74
|
+
counts: {
|
|
75
|
+
...startedRun.run.counts,
|
|
76
|
+
completed_summaries: completed,
|
|
77
|
+
target_summaries: options.targetCount,
|
|
78
|
+
},
|
|
79
|
+
summary: `${options.stageLabel} ${completed}/${options.targetCount} source files into summaries.`,
|
|
80
|
+
});
|
|
81
|
+
console.log(chalk.dim(` STATUS: wrote ${completed}/${options.targetCount} summaries`));
|
|
82
|
+
}, 10000);
|
|
83
|
+
try {
|
|
84
|
+
const code = await progressPromise;
|
|
85
|
+
finalizeRuntimeRun(options.compiledPath, code);
|
|
86
|
+
return code;
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
clearInterval(timer);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export function beginRuntimeRun(dirPath, run) {
|
|
93
|
+
saveRuntimeRun(dirPath, run);
|
|
94
|
+
return run;
|
|
95
|
+
}
|
|
96
|
+
export function updateRuntimeRun(dirPath, patch) {
|
|
97
|
+
const current = loadRuntimeRun(dirPath);
|
|
98
|
+
if (!current)
|
|
99
|
+
return null;
|
|
100
|
+
const next = {
|
|
101
|
+
...current,
|
|
102
|
+
...patch,
|
|
103
|
+
updated_at: new Date().toISOString(),
|
|
104
|
+
};
|
|
105
|
+
saveRuntimeRun(dirPath, next);
|
|
106
|
+
return next;
|
|
107
|
+
}
|
|
108
|
+
export function markRuntimeRunFailedAfterValidation(dirPath, summary) {
|
|
109
|
+
const current = loadRuntimeRun(dirPath);
|
|
110
|
+
if (!current)
|
|
111
|
+
return null;
|
|
112
|
+
const finishedAt = current.finished_at ?? new Date().toISOString();
|
|
113
|
+
const next = {
|
|
114
|
+
...current,
|
|
115
|
+
status: "failed",
|
|
116
|
+
updated_at: new Date().toISOString(),
|
|
117
|
+
finished_at: finishedAt,
|
|
118
|
+
exit_code: 1,
|
|
119
|
+
error: summary,
|
|
120
|
+
summary,
|
|
121
|
+
};
|
|
122
|
+
saveRuntimeRun(dirPath, next);
|
|
123
|
+
replaceOrAppendRunHistoryEntry(dirPath, next);
|
|
124
|
+
return next;
|
|
125
|
+
}
|
|
126
|
+
export function markRuntimeRunSucceededAfterValidation(dirPath, summary) {
|
|
127
|
+
const current = loadRuntimeRun(dirPath);
|
|
128
|
+
if (!current)
|
|
129
|
+
return null;
|
|
130
|
+
const finishedAt = current.finished_at ?? new Date().toISOString();
|
|
131
|
+
const next = {
|
|
132
|
+
...current,
|
|
133
|
+
status: "succeeded",
|
|
134
|
+
updated_at: new Date().toISOString(),
|
|
135
|
+
finished_at: finishedAt,
|
|
136
|
+
exit_code: 0,
|
|
137
|
+
error: null,
|
|
138
|
+
summary,
|
|
139
|
+
};
|
|
140
|
+
saveRuntimeRun(dirPath, next);
|
|
141
|
+
replaceOrAppendRunHistoryEntry(dirPath, next);
|
|
142
|
+
return next;
|
|
143
|
+
}
|
|
144
|
+
function startRuntimeRun(options) {
|
|
145
|
+
const runId = createRunId();
|
|
146
|
+
const generatedAt = new Date().toISOString();
|
|
147
|
+
const workflowStages = getWorkflowStages(options.workflow, options.workflowSourcePath);
|
|
148
|
+
const stagePosition = getWorkflowStagePosition(options.workflow, options.stage, options.workflowSourcePath);
|
|
149
|
+
const stageDefinition = getWorkflowStageDefinition(options.workflow, options.stage, options.workflowSourcePath);
|
|
150
|
+
const contract = {
|
|
151
|
+
kind: "interf-stage-contract",
|
|
152
|
+
version: 1,
|
|
153
|
+
generated_at: generatedAt,
|
|
154
|
+
run_id: runId,
|
|
155
|
+
target_type: "compiled",
|
|
156
|
+
target_name: options.compiledName,
|
|
157
|
+
workflow: {
|
|
158
|
+
id: options.workflow,
|
|
159
|
+
stage_index: stagePosition?.stageIndex ?? null,
|
|
160
|
+
stage_total: stagePosition?.stageTotal ?? workflowStages.length,
|
|
161
|
+
stages: stagePosition?.stages ?? workflowStages,
|
|
162
|
+
},
|
|
163
|
+
stage: options.stage,
|
|
164
|
+
stage_label: stageDefinition?.label ?? options.stageLabel,
|
|
165
|
+
contract_type: options.contractType,
|
|
166
|
+
executor: buildRuntimeExecutorInfo(options.executor),
|
|
167
|
+
instructions: options.contract.instructions,
|
|
168
|
+
counts: options.contract.counts,
|
|
169
|
+
...(options.contract.acceptance ? { acceptance: options.contract.acceptance } : {}),
|
|
170
|
+
artifacts: options.contract.artifacts,
|
|
171
|
+
policies: options.contract.policies,
|
|
172
|
+
};
|
|
173
|
+
const activeContractPath = writeStageContract(options.compiledPath, contract);
|
|
174
|
+
const archivedContractPath = writeArchivedStageContract(options.compiledPath, runId, contract);
|
|
175
|
+
const run = {
|
|
176
|
+
kind: "interf-run",
|
|
177
|
+
version: 1,
|
|
178
|
+
run_id: runId,
|
|
179
|
+
target_type: "compiled",
|
|
180
|
+
target_name: options.compiledName,
|
|
181
|
+
workflow: options.workflow,
|
|
182
|
+
stage: options.stage,
|
|
183
|
+
stage_label: stageDefinition?.label ?? options.stageLabel,
|
|
184
|
+
contract_type: options.contractType,
|
|
185
|
+
status: "running",
|
|
186
|
+
executor: buildRuntimeExecutorInfo(options.executor),
|
|
187
|
+
started_at: generatedAt,
|
|
188
|
+
updated_at: generatedAt,
|
|
189
|
+
finished_at: null,
|
|
190
|
+
contract_path: relative(options.compiledPath, archivedContractPath),
|
|
191
|
+
...(options.executionPath ? { execution_path: relative(options.compiledPath, options.executionPath) } : {}),
|
|
192
|
+
counts: { ...contract.counts },
|
|
193
|
+
output_artifacts: [...contract.artifacts.writes],
|
|
194
|
+
logs: {
|
|
195
|
+
prompt_path: relative(options.compiledPath, promptLogPath(options.compiledPath, runId)),
|
|
196
|
+
event_stream_path: relative(options.compiledPath, eventLogPath(options.compiledPath, runId)),
|
|
197
|
+
status_path: relative(options.compiledPath, statusLogPath(options.compiledPath, runId)),
|
|
198
|
+
},
|
|
199
|
+
summary: options.summary,
|
|
200
|
+
exit_code: null,
|
|
201
|
+
error: null,
|
|
202
|
+
};
|
|
203
|
+
return {
|
|
204
|
+
run: beginRuntimeRun(options.compiledPath, run),
|
|
205
|
+
activeContractPath: options.executionPath
|
|
206
|
+
? "runtime/stage-contract.json"
|
|
207
|
+
: relative(options.compiledPath, activeContractPath),
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function finalizeRuntimeRun(dirPath, code) {
|
|
211
|
+
const current = loadRuntimeRun(dirPath);
|
|
212
|
+
if (!current)
|
|
213
|
+
return null;
|
|
214
|
+
const finishedAt = new Date().toISOString();
|
|
215
|
+
const next = {
|
|
216
|
+
...current,
|
|
217
|
+
status: code === 0 ? "succeeded" : "failed",
|
|
218
|
+
updated_at: finishedAt,
|
|
219
|
+
finished_at: finishedAt,
|
|
220
|
+
exit_code: code,
|
|
221
|
+
error: code === 0 ? null : `Executor exited with code ${code}.`,
|
|
222
|
+
summary: code === 0
|
|
223
|
+
? `${current.stage_label} completed successfully.`
|
|
224
|
+
: `${current.stage_label} failed with exit code ${code}.`,
|
|
225
|
+
};
|
|
226
|
+
saveRuntimeRun(dirPath, next);
|
|
227
|
+
appendFileSync(runHistoryPath(dirPath), JSON.stringify(next) + "\n");
|
|
228
|
+
return next;
|
|
229
|
+
}
|
|
230
|
+
function writeRuntimeRunPrompt(dirPath, runId, prompt) {
|
|
231
|
+
mkdirSync(logsDirPath(dirPath), { recursive: true });
|
|
232
|
+
writeFileSync(promptLogPath(dirPath, runId), `${prompt}\n`);
|
|
233
|
+
}
|
|
234
|
+
function createRunId() {
|
|
235
|
+
return `run_${Date.now().toString(36)}_${Math.random().toString(36).slice(2, 8)}`;
|
|
236
|
+
}
|
|
237
|
+
function replaceOrAppendRunHistoryEntry(dirPath, run) {
|
|
238
|
+
const historyPath = runHistoryPath(dirPath);
|
|
239
|
+
if (!existsSync(historyPath)) {
|
|
240
|
+
appendFileSync(historyPath, JSON.stringify(run) + "\n");
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
const raw = readFileSync(historyPath, "utf8");
|
|
244
|
+
const lines = raw.split("\n").filter((line) => line.trim().length > 0);
|
|
245
|
+
let replaced = false;
|
|
246
|
+
const nextLines = lines.map((line) => {
|
|
247
|
+
try {
|
|
248
|
+
const entry = JSON.parse(line);
|
|
249
|
+
if (entry.run_id === run.run_id) {
|
|
250
|
+
replaced = true;
|
|
251
|
+
return JSON.stringify(run);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
// preserve malformed history lines as-is
|
|
256
|
+
}
|
|
257
|
+
return line;
|
|
258
|
+
});
|
|
259
|
+
if (!replaced)
|
|
260
|
+
nextLines.push(JSON.stringify(run));
|
|
261
|
+
writeFileSync(historyPath, `${nextLines.join("\n")}\n`);
|
|
262
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type WorkflowExecutor } from "../agents/lib/executors.js";
|
|
2
|
+
import { type WorkflowId, type RuntimeContractType, type RuntimeRun, type RuntimeStage, type RuntimeStageAcceptance, type RuntimeStageContract, type RuntimeStageInstructions } from "./lib/schema.js";
|
|
3
|
+
export type RuntimeRunStatus = "running" | "succeeded" | "failed";
|
|
4
|
+
export type RuntimeStageContractDraft = Omit<RuntimeStageContract, "kind" | "version" | "generated_at" | "run_id" | "target_type" | "target_name" | "workflow" | "stage" | "stage_label" | "contract_type" | "executor">;
|
|
5
|
+
export interface RuntimeStageExecutionOptions {
|
|
6
|
+
executor: WorkflowExecutor;
|
|
7
|
+
compiledPath: string;
|
|
8
|
+
executionPath?: string;
|
|
9
|
+
compiledName: string;
|
|
10
|
+
workflow: WorkflowId;
|
|
11
|
+
workflowSourcePath?: string;
|
|
12
|
+
stage: RuntimeStage;
|
|
13
|
+
stageLabel: string;
|
|
14
|
+
contractType: RuntimeContractType;
|
|
15
|
+
summary: string;
|
|
16
|
+
contract: RuntimeStageContractDraft;
|
|
17
|
+
buildPrompt: (contractPath: string) => string;
|
|
18
|
+
completionCheck?: (() => boolean) | null;
|
|
19
|
+
}
|
|
20
|
+
export interface RuntimeSummarizeExecutionOptions extends RuntimeStageExecutionOptions {
|
|
21
|
+
startingSummaryCount: number;
|
|
22
|
+
targetCount: number;
|
|
23
|
+
}
|
|
24
|
+
export interface RuntimeStageAcceptanceValidation {
|
|
25
|
+
ok: boolean;
|
|
26
|
+
summary: string;
|
|
27
|
+
failures: string[];
|
|
28
|
+
}
|
|
29
|
+
export interface RuntimeStageContractOptions {
|
|
30
|
+
compiledName: string;
|
|
31
|
+
stageId: string;
|
|
32
|
+
stageLabel: string;
|
|
33
|
+
counts?: Record<string, number>;
|
|
34
|
+
extraReadArtifacts?: string[];
|
|
35
|
+
stageReadArtifacts: string[];
|
|
36
|
+
stageWriteArtifacts: string[];
|
|
37
|
+
workflowNotes?: string[];
|
|
38
|
+
localSkillDocs?: string[];
|
|
39
|
+
instructions: RuntimeStageInstructions;
|
|
40
|
+
acceptance?: RuntimeStageAcceptance;
|
|
41
|
+
}
|
|
42
|
+
export interface RuntimeRunPatch extends Partial<Pick<RuntimeRun, "counts" | "summary" | "status" | "error" | "exit_code" | "finished_at">> {
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { RuntimeRunPatch, RuntimeRunStatus, RuntimeStageAcceptanceValidation, RuntimeStageContractDraft, RuntimeStageExecutionOptions, RuntimeSummarizeExecutionOptions, RuntimeStageContractOptions, } from "./runtime-types.js";
|
|
2
|
+
export { archivedStageContractPath, eventLogPath, logsDirPath, promptLogPath, runHistoryPath, runPath, stageContractPath, statusLogPath, } from "./runtime-paths.js";
|
|
3
|
+
export { validateStageContractAcceptance } from "./runtime-acceptance.js";
|
|
4
|
+
export { buildStagePrompt } from "./runtime-prompt.js";
|
|
5
|
+
export { buildRuntimeStageContract, } from "./runtime-contracts.js";
|
|
6
|
+
export { beginRuntimeRun, loadRuntimeRun, markRuntimeRunFailedAfterValidation, markRuntimeRunSucceededAfterValidation, runExecutorStage, runExecutorSummarizeStage, saveRuntimeRun, updateRuntimeRun, writeStageContract, } from "./runtime-runs.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { archivedStageContractPath, eventLogPath, logsDirPath, promptLogPath, runHistoryPath, runPath, stageContractPath, statusLogPath, } from "./runtime-paths.js";
|
|
2
|
+
export { validateStageContractAcceptance } from "./runtime-acceptance.js";
|
|
3
|
+
export { buildStagePrompt } from "./runtime-prompt.js";
|
|
4
|
+
export { buildRuntimeStageContract, } from "./runtime-contracts.js";
|
|
5
|
+
export { beginRuntimeRun, loadRuntimeRun, markRuntimeRunFailedAfterValidation, markRuntimeRunSucceededAfterValidation, runExecutorStage, runExecutorSummarizeStage, saveRuntimeRun, updateRuntimeRun, writeStageContract, } from "./runtime-runs.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type CompiledHealth, type CompiledRawSnapshot, type CompiledViewSpec } from "./lib/schema.js";
|
|
2
|
+
export declare function refreshCompiledArtifacts(dirPath: string, options?: {
|
|
3
|
+
ensureViewSpec?: boolean;
|
|
4
|
+
}): {
|
|
5
|
+
health: CompiledHealth;
|
|
6
|
+
viewSpec?: CompiledViewSpec;
|
|
7
|
+
rawSnapshot: CompiledRawSnapshot;
|
|
8
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { saveCompiledHealth, } from "./state-io.js";
|
|
2
|
+
import { computeCompiledHealth, } from "./state-health.js";
|
|
3
|
+
import { ensureCompiledRawSnapshot, ensureCompiledViewSpec, } from "./state-view.js";
|
|
4
|
+
export function refreshCompiledArtifacts(dirPath, options) {
|
|
5
|
+
const health = computeCompiledHealth(dirPath);
|
|
6
|
+
saveCompiledHealth(dirPath, health);
|
|
7
|
+
const rawSnapshot = ensureCompiledRawSnapshot(dirPath);
|
|
8
|
+
let viewSpec;
|
|
9
|
+
if (options?.ensureViewSpec) {
|
|
10
|
+
viewSpec = ensureCompiledViewSpec(dirPath);
|
|
11
|
+
}
|
|
12
|
+
return { health, viewSpec, rawSnapshot };
|
|
13
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CompiledHealth, type CompiledStage, type RuntimeStatus } from "./lib/schema.js";
|
|
2
|
+
export declare function computeCompiledHealth(dirPath: string): CompiledHealth;
|
|
3
|
+
export declare function resolveCompiledStatus(..._args: unknown[]): RuntimeStatus;
|
|
4
|
+
export declare function resolveCompiledStage(...args: unknown[]): CompiledStage;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { basename, join } from "node:path";
|
|
2
|
+
import { existsSync } from "node:fs";
|
|
3
|
+
import { readInterfConfig, resolveSourceFolderPath, } from "../project-model/interf-detect.js";
|
|
4
|
+
import { discoverSourceFiles } from "./discovery.js";
|
|
5
|
+
import { loadRuntimeRun } from "./runtime.js";
|
|
6
|
+
import { loadState } from "./state-io.js";
|
|
7
|
+
import { validateCompiled, validateCompiledStage, validateCompiledWorkflow, } from "./validate.js";
|
|
8
|
+
import { readCompiledSchemaFile } from "./compiled-schema.js";
|
|
9
|
+
import { workflowPackagePathForCompiled } from "./compiled-paths.js";
|
|
10
|
+
import { getActiveCompiledWorkflow, resolveRequiredCompiledWorkflowFromConfig } from "../workflow-package/workflow-definitions.js";
|
|
11
|
+
import { listFilesRecursive } from "../shared/filesystem.js";
|
|
12
|
+
function countZoneArtifacts(compiledPath, zonePath, kind) {
|
|
13
|
+
const absolutePath = join(compiledPath, zonePath);
|
|
14
|
+
if (!existsSync(absolutePath))
|
|
15
|
+
return 0;
|
|
16
|
+
if (kind === "file")
|
|
17
|
+
return 1;
|
|
18
|
+
return listFilesRecursive(absolutePath).length;
|
|
19
|
+
}
|
|
20
|
+
export function computeCompiledHealth(dirPath) {
|
|
21
|
+
const now = new Date().toISOString();
|
|
22
|
+
const config = readInterfConfig(dirPath);
|
|
23
|
+
const targetName = config?.name ?? basename(dirPath);
|
|
24
|
+
const sourcePath = config ? resolveSourceFolderPath(dirPath, config) : dirPath;
|
|
25
|
+
const sourceTotal = config ? discoverSourceFiles(sourcePath, dirPath).totalCount : 0;
|
|
26
|
+
const state = loadState(dirPath);
|
|
27
|
+
const validation = validateCompiled(dirPath);
|
|
28
|
+
const activeRun = loadRuntimeRun(dirPath);
|
|
29
|
+
const workflowId = config
|
|
30
|
+
? resolveRequiredCompiledWorkflowFromConfig(config, `.interf/interf.json for ${dirPath}`)
|
|
31
|
+
: null;
|
|
32
|
+
let workflow = null;
|
|
33
|
+
if (workflowId) {
|
|
34
|
+
try {
|
|
35
|
+
workflow = getActiveCompiledWorkflow(dirPath, workflowId);
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
workflow = null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
const stageResults = workflow?.stages.map((stage) => ({
|
|
42
|
+
stage,
|
|
43
|
+
validation: validateCompiledStage(dirPath, stage.id),
|
|
44
|
+
})) ?? [];
|
|
45
|
+
const completedStages = stageResults.filter((entry) => entry.validation.ok).length;
|
|
46
|
+
const firstFailed = stageResults.find((entry) => !entry.validation.ok) ?? null;
|
|
47
|
+
const workflowValidation = validateCompiledWorkflow(dirPath);
|
|
48
|
+
const schema = readCompiledSchemaFile(workflowPackagePathForCompiled(dirPath));
|
|
49
|
+
const zoneMetrics = Object.fromEntries((schema?.zones ?? []).map((zone) => [
|
|
50
|
+
`zone_${zone.id}`,
|
|
51
|
+
countZoneArtifacts(dirPath, zone.path, zone.kind),
|
|
52
|
+
]));
|
|
53
|
+
let status = "idle";
|
|
54
|
+
let stage = "idle";
|
|
55
|
+
let summary = "Idle — no source files have been compiled yet.";
|
|
56
|
+
const errors = workflowValidation.errors.length;
|
|
57
|
+
if (!validation.config_present || !validation.config_valid || !validation.config_type_match || !validation.workflow_valid || !validation.schema_valid) {
|
|
58
|
+
status = "failed";
|
|
59
|
+
stage = "failed";
|
|
60
|
+
summary = workflowValidation.summary;
|
|
61
|
+
}
|
|
62
|
+
else if (activeRun?.status === "running") {
|
|
63
|
+
status = "running";
|
|
64
|
+
stage = activeRun.stage;
|
|
65
|
+
summary = `Running — ${activeRun.stage_label} via ${activeRun.executor.display_name}. ${activeRun.summary}`;
|
|
66
|
+
}
|
|
67
|
+
else if (sourceTotal === 0 && completedStages === 0) {
|
|
68
|
+
status = "idle";
|
|
69
|
+
stage = "idle";
|
|
70
|
+
summary = "Idle — no source files have been compiled yet.";
|
|
71
|
+
}
|
|
72
|
+
else if (activeRun?.status === "failed") {
|
|
73
|
+
status = "failed";
|
|
74
|
+
stage = activeRun.stage;
|
|
75
|
+
summary = activeRun.error ?? activeRun.summary;
|
|
76
|
+
}
|
|
77
|
+
else if (workflowValidation.ok) {
|
|
78
|
+
status = "compiled";
|
|
79
|
+
stage = "compiled";
|
|
80
|
+
summary = `Compiled — ${completedStages}/${workflow?.stages.length ?? 0} workflow stages satisfied.`;
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
status = "stale";
|
|
84
|
+
stage = firstFailed?.stage.id ?? "compiled";
|
|
85
|
+
summary = firstFailed?.validation.summary ?? workflowValidation.summary;
|
|
86
|
+
}
|
|
87
|
+
const checks = {
|
|
88
|
+
...validation,
|
|
89
|
+
...(workflow
|
|
90
|
+
? Object.fromEntries(workflow.stages.map((workflowStage) => [
|
|
91
|
+
`stage_${workflowStage.id}_ok`,
|
|
92
|
+
stageResults.find((entry) => entry.stage.id === workflowStage.id)?.validation.ok ?? false,
|
|
93
|
+
]))
|
|
94
|
+
: {}),
|
|
95
|
+
};
|
|
96
|
+
return {
|
|
97
|
+
kind: "compiled-health",
|
|
98
|
+
version: 2,
|
|
99
|
+
generated_at: now,
|
|
100
|
+
target_name: targetName,
|
|
101
|
+
status,
|
|
102
|
+
stage,
|
|
103
|
+
summary,
|
|
104
|
+
metrics: {
|
|
105
|
+
source_total: sourceTotal,
|
|
106
|
+
stage_total: workflow?.stages.length ?? 0,
|
|
107
|
+
completed_stages: completedStages,
|
|
108
|
+
warnings: state?.warning_count ?? 0,
|
|
109
|
+
errors: (state?.error_count ?? 0) + errors,
|
|
110
|
+
...zoneMetrics,
|
|
111
|
+
},
|
|
112
|
+
checks,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function resolveCompiledStatus(..._args) {
|
|
116
|
+
const state = _args[_args.length - 1];
|
|
117
|
+
if (state?.error_count && state.error_count > 0)
|
|
118
|
+
return "failed";
|
|
119
|
+
if (!state?.stages || Object.keys(state.stages).length === 0)
|
|
120
|
+
return "idle";
|
|
121
|
+
const allSucceeded = Object.values(state.stages).every((stage) => stage.status === "succeeded");
|
|
122
|
+
return allSucceeded ? "compiled" : "stale";
|
|
123
|
+
}
|
|
124
|
+
export function resolveCompiledStage(...args) {
|
|
125
|
+
const state = args[0];
|
|
126
|
+
if (state?.error_count && state.error_count > 0)
|
|
127
|
+
return "failed";
|
|
128
|
+
if (!state?.stages || Object.keys(state.stages).length === 0)
|
|
129
|
+
return "idle";
|
|
130
|
+
const failedStage = Object.entries(state.stages).find(([, stage]) => stage.status !== "succeeded");
|
|
131
|
+
return failedStage?.[0] ?? "compiled";
|
|
132
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type CompiledHealth, type CompiledRawSnapshot, type CompiledState, type CompiledViewSpec } from "./lib/schema.js";
|
|
2
|
+
export declare function loadState<T>(dirPath: string): T | null;
|
|
3
|
+
export declare function saveState<T>(dirPath: string, state: T): void;
|
|
4
|
+
export declare function loadCompiledHealth(dirPath: string): CompiledHealth | null;
|
|
5
|
+
export declare function saveCompiledHealth(dirPath: string, health: CompiledHealth): void;
|
|
6
|
+
export declare function loadCompiledViewSpec(dirPath: string): CompiledViewSpec | null;
|
|
7
|
+
export declare function saveCompiledViewSpec(dirPath: string, viewSpec: CompiledViewSpec): void;
|
|
8
|
+
export declare function loadCompiledRawSnapshot(dirPath: string): CompiledRawSnapshot | null;
|
|
9
|
+
export declare function saveEmptyCompiledInventory(dirPath: string): void;
|
|
10
|
+
export declare function initCompiledState(): CompiledState;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { warnInterf } from "../shared/logger.js";
|
|
3
|
+
import { readJsonFileUnchecked, readJsonFileWithSchema } from "../shared/parse.js";
|
|
4
|
+
import { CompiledHealthSchema, CompiledRawSnapshotSchema, CompiledStateSchema, CompiledViewSpecSchema, } from "./lib/schema.js";
|
|
5
|
+
import { emptyCompiledInventory, } from "./runtime-inventory.js";
|
|
6
|
+
import { healthPath, rawSnapshotPath, statePath, viewSpecPath } from "./state-paths.js";
|
|
7
|
+
import { compiledRuntimeInventoryPath, compiledRuntimeRoot, } from "./compiled-paths.js";
|
|
8
|
+
export function loadState(dirPath) {
|
|
9
|
+
const path = statePath(dirPath);
|
|
10
|
+
if (!existsSync(path))
|
|
11
|
+
return null;
|
|
12
|
+
const raw = readJsonFileUnchecked(path, "runtime state");
|
|
13
|
+
if (raw === null)
|
|
14
|
+
return null;
|
|
15
|
+
const parsed = CompiledStateSchema.safeParse(raw);
|
|
16
|
+
if (parsed.success) {
|
|
17
|
+
return parsed.data;
|
|
18
|
+
}
|
|
19
|
+
warnInterf(`Warning: failed to validate runtime state at ${path}: ${parsed.error.issues.map((issue) => issue.message).join("; ")}`);
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
export function saveState(dirPath, state) {
|
|
23
|
+
mkdirSync(compiledRuntimeRoot(dirPath), { recursive: true });
|
|
24
|
+
writeFileSync(statePath(dirPath), JSON.stringify(state, null, 2) + "\n");
|
|
25
|
+
}
|
|
26
|
+
export function loadCompiledHealth(dirPath) {
|
|
27
|
+
const path = healthPath(dirPath);
|
|
28
|
+
if (!existsSync(path))
|
|
29
|
+
return null;
|
|
30
|
+
return readJsonFileWithSchema(path, "compiled health", CompiledHealthSchema);
|
|
31
|
+
}
|
|
32
|
+
export function saveCompiledHealth(dirPath, health) {
|
|
33
|
+
mkdirSync(compiledRuntimeRoot(dirPath), { recursive: true });
|
|
34
|
+
writeFileSync(healthPath(dirPath), JSON.stringify(health, null, 2) + "\n");
|
|
35
|
+
}
|
|
36
|
+
export function loadCompiledViewSpec(dirPath) {
|
|
37
|
+
const path = viewSpecPath(dirPath);
|
|
38
|
+
if (!existsSync(path))
|
|
39
|
+
return null;
|
|
40
|
+
return loadViewSpec(path, CompiledViewSpecSchema);
|
|
41
|
+
}
|
|
42
|
+
export function saveCompiledViewSpec(dirPath, viewSpec) {
|
|
43
|
+
mkdirSync(compiledRuntimeRoot(dirPath), { recursive: true });
|
|
44
|
+
writeFileSync(viewSpecPath(dirPath), JSON.stringify(viewSpec, null, 2) + "\n");
|
|
45
|
+
}
|
|
46
|
+
export function loadCompiledRawSnapshot(dirPath) {
|
|
47
|
+
const path = rawSnapshotPath(dirPath);
|
|
48
|
+
if (!existsSync(path))
|
|
49
|
+
return null;
|
|
50
|
+
return readJsonFileWithSchema(path, "compiled raw snapshot", CompiledRawSnapshotSchema);
|
|
51
|
+
}
|
|
52
|
+
export function saveEmptyCompiledInventory(dirPath) {
|
|
53
|
+
mkdirSync(compiledRuntimeRoot(dirPath), { recursive: true });
|
|
54
|
+
writeFileSync(compiledRuntimeInventoryPath(dirPath), JSON.stringify(emptyCompiledInventory(), null, 2) + "\n");
|
|
55
|
+
}
|
|
56
|
+
export function initCompiledState() {
|
|
57
|
+
return {
|
|
58
|
+
version: 2,
|
|
59
|
+
pending: [],
|
|
60
|
+
stages: {},
|
|
61
|
+
last_add: null,
|
|
62
|
+
last_compile: null,
|
|
63
|
+
warning_count: 0,
|
|
64
|
+
error_count: 0,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
function loadViewSpec(filePath, schema) {
|
|
68
|
+
try {
|
|
69
|
+
const raw = JSON.parse(readFileSync(filePath, "utf8"));
|
|
70
|
+
const parsed = schema.safeParse(raw);
|
|
71
|
+
return parsed.success ? parsed.data ?? null : null;
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { compiledRawSnapshotMetadataPath, compiledRuntimeHealthPath, compiledRuntimeStatePath, compiledRuntimeViewSpecPath, } from "./compiled-paths.js";
|
|
2
|
+
export function statePath(dirPath) {
|
|
3
|
+
return compiledRuntimeStatePath(dirPath);
|
|
4
|
+
}
|
|
5
|
+
export function healthPath(dirPath) {
|
|
6
|
+
return compiledRuntimeHealthPath(dirPath);
|
|
7
|
+
}
|
|
8
|
+
export function viewSpecPath(dirPath) {
|
|
9
|
+
return compiledRuntimeViewSpecPath(dirPath);
|
|
10
|
+
}
|
|
11
|
+
export function rawSnapshotPath(dirPath) {
|
|
12
|
+
return compiledRawSnapshotMetadataPath(dirPath);
|
|
13
|
+
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type CompiledRawSnapshot, type CompiledViewSpec } from "./lib/schema.js";
|
|
2
|
+
export declare function ensureCompiledViewSpec(dirPath: string): CompiledViewSpec;
|
|
3
|
+
export declare function ensureCompiledRawSnapshot(dirPath: string): CompiledRawSnapshot;
|
|
4
|
+
export declare function normalizeCompiledViewSpec(existing: CompiledViewSpec, defaults?: CompiledViewSpec): CompiledViewSpec;
|