@interf/compiler 0.6.1 → 0.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +94 -74
- package/builtin-workflows/interf/README.md +5 -5
- package/builtin-workflows/interf/compile/stages/shape/SKILL.md +4 -4
- package/builtin-workflows/interf/improve/SKILL.md +2 -2
- package/builtin-workflows/interf/use/query/SKILL.md +1 -1
- package/builtin-workflows/interf/workflow.json +6 -6
- package/builtin-workflows/interf/workflow.schema.json +1 -1
- package/dist/bin.js +2 -28
- package/dist/{commands → cli/commands}/check-draft.d.ts +2 -2
- package/dist/{commands → cli/commands}/check-draft.js +12 -12
- package/dist/{commands → cli/commands}/compile-controller.d.ts +3 -3
- package/dist/{commands → cli/commands}/compile-controller.js +36 -34
- package/dist/{commands → cli/commands}/compile.d.ts +2 -2
- package/dist/{commands → cli/commands}/compile.js +15 -11
- package/dist/{commands → cli/commands}/compiled-flow.d.ts +3 -4
- package/dist/{commands → cli/commands}/compiled-flow.js +9 -14
- package/dist/{commands → cli/commands}/create-workflow-wizard.d.ts +3 -3
- package/dist/{commands → cli/commands}/create-workflow-wizard.js +61 -34
- package/dist/{commands → cli/commands}/create.d.ts +1 -1
- package/dist/{commands → cli/commands}/create.js +15 -18
- package/dist/{commands → cli/commands}/dataset-selection.d.ts +1 -1
- package/dist/{commands → cli/commands}/default.js +3 -3
- package/dist/{commands → cli/commands}/doctor.js +5 -6
- package/dist/{commands → cli/commands}/executor-flow.d.ts +1 -1
- package/dist/{commands → cli/commands}/executor-flow.js +13 -16
- package/dist/{commands → cli/commands}/init.d.ts +4 -1
- package/dist/{commands → cli/commands}/init.js +157 -72
- package/dist/{commands → cli/commands}/list.js +5 -5
- package/dist/{commands → cli/commands}/reset.js +4 -4
- package/dist/{commands → cli/commands}/source-config-wizard.d.ts +8 -3
- package/dist/{commands → cli/commands}/source-config-wizard.js +161 -87
- package/dist/{commands → cli/commands}/status.js +20 -11
- package/dist/{commands → cli/commands}/test-flow.d.ts +13 -4
- package/dist/{commands → cli/commands}/test-flow.js +30 -26
- package/dist/cli/commands/test.d.ts +14 -0
- package/dist/{commands → cli/commands}/test.js +39 -23
- package/dist/{commands → cli/commands}/verify.js +4 -4
- package/dist/cli/index.d.ts +21 -0
- package/dist/cli/index.js +33 -0
- package/dist/index.d.ts +22 -11
- package/dist/index.js +15 -6
- package/dist/lib/agent-args.d.ts +1 -4
- package/dist/lib/agent-args.js +1 -52
- package/dist/lib/agent-constants.d.ts +1 -5
- package/dist/lib/agent-constants.js +1 -28
- package/dist/lib/agent-detection.d.ts +1 -7
- package/dist/lib/agent-detection.js +1 -65
- package/dist/lib/agent-execution.d.ts +1 -2
- package/dist/lib/agent-execution.js +1 -243
- package/dist/lib/agent-logs.d.ts +1 -2
- package/dist/lib/agent-logs.js +1 -17
- package/dist/lib/agent-preflight.d.ts +1 -7
- package/dist/lib/agent-preflight.js +1 -77
- package/dist/lib/agent-render.d.ts +1 -8
- package/dist/lib/agent-render.js +1 -218
- package/dist/lib/agent-shells.d.ts +1 -69
- package/dist/lib/agent-shells.js +1 -1021
- package/dist/lib/agent-status.d.ts +1 -3
- package/dist/lib/agent-status.js +1 -58
- package/dist/lib/agent-types.d.ts +1 -30
- package/dist/lib/agent-types.js +1 -1
- package/dist/lib/agents.d.ts +1 -6
- package/dist/lib/agents.js +1 -5
- package/dist/lib/builtin-compiled-workflow.d.ts +1 -38
- package/dist/lib/builtin-compiled-workflow.js +1 -94
- package/dist/lib/compiled-compile.d.ts +1 -48
- package/dist/lib/compiled-compile.js +1 -255
- package/dist/lib/compiled-paths.d.ts +1 -40
- package/dist/lib/compiled-paths.js +3 -106
- package/dist/lib/compiled-raw.d.ts +1 -49
- package/dist/lib/compiled-raw.js +3 -102
- package/dist/lib/compiled-reset.d.ts +1 -2
- package/dist/lib/compiled-reset.js +3 -72
- package/dist/lib/compiled-schema.d.ts +1 -31
- package/dist/lib/compiled-schema.js +1 -141
- package/dist/lib/execution-profile.d.ts +1 -17
- package/dist/lib/execution-profile.js +1 -84
- package/dist/lib/executors.d.ts +1 -32
- package/dist/lib/executors.js +1 -43
- package/dist/lib/interf-bootstrap.d.ts +1 -3
- package/dist/lib/interf-bootstrap.js +3 -18
- package/dist/lib/interf-detect.d.ts +1 -33
- package/dist/lib/interf-detect.js +3 -176
- package/dist/lib/interf-scaffold.d.ts +1 -2
- package/dist/lib/interf-scaffold.js +3 -114
- package/dist/lib/interf-workflow-package.d.ts +1 -25
- package/dist/lib/interf-workflow-package.js +1 -342
- package/dist/lib/interf.d.ts +1 -5
- package/dist/lib/interf.js +3 -4
- package/dist/lib/local-workflows.d.ts +1 -54
- package/dist/lib/local-workflows.js +1 -422
- package/dist/lib/package-root.d.ts +1 -0
- package/dist/lib/package-root.js +1 -0
- package/dist/lib/project-paths.d.ts +1 -11
- package/dist/lib/project-paths.js +3 -32
- package/dist/lib/runtime-acceptance.d.ts +1 -9
- package/dist/lib/runtime-acceptance.js +1 -269
- package/dist/lib/runtime-contracts.d.ts +1 -2
- package/dist/lib/runtime-contracts.js +1 -48
- package/dist/lib/runtime-inventory.d.ts +1 -7
- package/dist/lib/runtime-inventory.js +1 -29
- package/dist/lib/runtime-paths.d.ts +1 -8
- package/dist/lib/runtime-paths.js +1 -26
- package/dist/lib/runtime-prompt.d.ts +1 -2
- package/dist/lib/runtime-prompt.js +1 -48
- package/dist/lib/runtime-reconcile.d.ts +1 -2
- package/dist/lib/runtime-reconcile.js +1 -193
- package/dist/lib/runtime-runs.d.ts +1 -11
- package/dist/lib/runtime-runs.js +1 -262
- package/dist/lib/runtime-types.d.ts +1 -43
- package/dist/lib/runtime-types.js +1 -1
- package/dist/lib/runtime.d.ts +1 -6
- package/dist/lib/runtime.js +1 -5
- package/dist/lib/schema.d.ts +4 -1073
- package/dist/lib/schema.js +6 -542
- package/dist/lib/source-config.d.ts +1 -39
- package/dist/lib/source-config.js +3 -293
- package/dist/lib/state-artifacts.d.ts +1 -8
- package/dist/lib/state-artifacts.js +1 -13
- package/dist/lib/state-health.d.ts +1 -4
- package/dist/lib/state-health.js +1 -132
- package/dist/lib/state-io.d.ts +1 -10
- package/dist/lib/state-io.js +1 -76
- package/dist/lib/state-paths.d.ts +1 -4
- package/dist/lib/state-paths.js +1 -13
- package/dist/lib/state-view.d.ts +1 -4
- package/dist/lib/state-view.js +1 -103
- package/dist/lib/state.d.ts +1 -7
- package/dist/lib/state.js +1 -12
- package/dist/lib/test-execution.d.ts +1 -14
- package/dist/lib/test-execution.js +3 -525
- package/dist/lib/test-matrices.d.ts +1 -90
- package/dist/lib/test-matrices.js +3 -96
- package/dist/lib/test-paths.d.ts +1 -12
- package/dist/lib/test-paths.js +3 -59
- package/dist/lib/test-profile-presets.d.ts +1 -57
- package/dist/lib/test-profile-presets.js +3 -50
- package/dist/lib/test-sandbox.d.ts +1 -11
- package/dist/lib/test-sandbox.js +3 -105
- package/dist/lib/test-specs.d.ts +1 -7
- package/dist/lib/test-specs.js +3 -114
- package/dist/lib/test-targets.d.ts +1 -5
- package/dist/lib/test-targets.js +3 -38
- package/dist/lib/test-types.d.ts +1 -17
- package/dist/lib/test-types.js +3 -1
- package/dist/lib/test.d.ts +1 -4
- package/dist/lib/test.js +3 -3
- package/dist/lib/validate-compiled.d.ts +1 -27
- package/dist/lib/validate-compiled.js +1 -241
- package/dist/lib/validate-helpers.d.ts +1 -12
- package/dist/lib/validate-helpers.js +1 -41
- package/dist/lib/validate.d.ts +1 -21
- package/dist/lib/validate.js +1 -249
- package/dist/lib/workflow-authoring.d.ts +1 -26
- package/dist/lib/workflow-authoring.js +1 -119
- package/dist/lib/workflow-definitions.d.ts +1 -78
- package/dist/lib/workflow-definitions.js +1 -203
- package/dist/lib/workflow-edit-session.d.ts +1 -16
- package/dist/lib/workflow-edit-session.js +1 -57
- package/dist/lib/workflow-edit-utils.d.ts +1 -10
- package/dist/lib/workflow-edit-utils.js +1 -39
- package/dist/lib/workflow-helpers.d.ts +1 -38
- package/dist/lib/workflow-helpers.js +1 -167
- package/dist/lib/workflow-improvement.d.ts +1 -22
- package/dist/lib/workflow-improvement.js +1 -209
- package/dist/lib/workflow-primitives.d.ts +1 -2
- package/dist/lib/workflow-primitives.js +1 -5
- package/dist/lib/workflow-review-paths.d.ts +1 -10
- package/dist/lib/workflow-review-paths.js +1 -27
- package/dist/lib/workflow-stage-policy.d.ts +1 -5
- package/dist/lib/workflow-stage-policy.js +1 -31
- package/dist/lib/workflow-stage-runner.d.ts +1 -41
- package/dist/lib/workflow-stage-runner.js +1 -109
- package/dist/lib/workflows.d.ts +1 -15
- package/dist/lib/workflows.js +1 -31
- package/dist/packages/agents/index.d.ts +17 -0
- package/dist/packages/agents/index.js +15 -0
- package/dist/packages/agents/lib/agents.d.ts +6 -0
- package/dist/packages/agents/lib/agents.js +5 -0
- package/dist/packages/agents/lib/args.d.ts +4 -0
- package/dist/packages/agents/lib/args.js +52 -0
- package/dist/packages/agents/lib/constants.d.ts +5 -0
- package/dist/packages/agents/lib/constants.js +28 -0
- package/dist/packages/agents/lib/detection.d.ts +7 -0
- package/dist/packages/agents/lib/detection.js +65 -0
- package/dist/packages/agents/lib/execution-profile.d.ts +17 -0
- package/dist/packages/agents/lib/execution-profile.js +84 -0
- package/dist/packages/agents/lib/execution.d.ts +2 -0
- package/dist/packages/agents/lib/execution.js +243 -0
- package/dist/packages/agents/lib/executors.d.ts +32 -0
- package/dist/packages/agents/lib/executors.js +45 -0
- package/dist/packages/agents/lib/logs.d.ts +2 -0
- package/dist/packages/agents/lib/logs.js +17 -0
- package/dist/packages/agents/lib/preflight.d.ts +7 -0
- package/dist/packages/agents/lib/preflight.js +77 -0
- package/dist/packages/agents/lib/render.d.ts +8 -0
- package/dist/packages/agents/lib/render.js +218 -0
- package/dist/packages/agents/lib/schema.d.ts +8 -0
- package/dist/packages/agents/lib/schema.js +7 -0
- package/dist/packages/agents/lib/shells.d.ts +69 -0
- package/dist/packages/agents/lib/shells.js +1021 -0
- package/dist/packages/agents/lib/status.d.ts +3 -0
- package/dist/packages/agents/lib/status.js +58 -0
- package/dist/packages/agents/lib/types.d.ts +30 -0
- package/dist/packages/agents/lib/types.js +1 -0
- package/dist/{lib → packages/agents/lib}/user-config.d.ts +1 -0
- package/dist/{lib → packages/agents/lib}/user-config.js +3 -2
- package/dist/packages/compiler/compiled-compile.d.ts +48 -0
- package/dist/packages/compiler/compiled-compile.js +256 -0
- package/dist/packages/compiler/compiled-schema.d.ts +31 -0
- package/dist/packages/compiler/compiled-schema.js +141 -0
- package/dist/packages/compiler/index.d.ts +24 -0
- package/dist/packages/compiler/index.js +23 -0
- package/dist/packages/compiler/lib/schema.d.ts +684 -0
- package/dist/packages/compiler/lib/schema.js +361 -0
- package/dist/packages/compiler/runtime-acceptance.d.ts +9 -0
- package/dist/packages/compiler/runtime-acceptance.js +269 -0
- package/dist/packages/compiler/runtime-contracts.d.ts +2 -0
- package/dist/packages/compiler/runtime-contracts.js +48 -0
- package/dist/packages/compiler/runtime-inventory.d.ts +7 -0
- package/dist/packages/compiler/runtime-inventory.js +29 -0
- package/dist/packages/compiler/runtime-paths.d.ts +8 -0
- package/dist/packages/compiler/runtime-paths.js +26 -0
- package/dist/packages/compiler/runtime-prompt.d.ts +2 -0
- package/dist/packages/compiler/runtime-prompt.js +48 -0
- package/dist/packages/compiler/runtime-reconcile.d.ts +2 -0
- package/dist/packages/compiler/runtime-reconcile.js +193 -0
- package/dist/packages/compiler/runtime-runs.d.ts +11 -0
- package/dist/packages/compiler/runtime-runs.js +262 -0
- package/dist/packages/compiler/runtime-types.d.ts +43 -0
- package/dist/packages/compiler/runtime-types.js +1 -0
- package/dist/packages/compiler/runtime.d.ts +6 -0
- package/dist/packages/compiler/runtime.js +5 -0
- package/dist/packages/compiler/state-artifacts.d.ts +8 -0
- package/dist/packages/compiler/state-artifacts.js +13 -0
- package/dist/packages/compiler/state-health.d.ts +4 -0
- package/dist/packages/compiler/state-health.js +132 -0
- package/dist/packages/compiler/state-io.d.ts +10 -0
- package/dist/packages/compiler/state-io.js +76 -0
- package/dist/packages/compiler/state-paths.d.ts +4 -0
- package/dist/packages/compiler/state-paths.js +13 -0
- package/dist/packages/compiler/state-view.d.ts +4 -0
- package/dist/packages/compiler/state-view.js +103 -0
- package/dist/packages/compiler/state.d.ts +7 -0
- package/dist/packages/compiler/state.js +12 -0
- package/dist/packages/compiler/validate-compiled.d.ts +27 -0
- package/dist/packages/compiler/validate-compiled.js +241 -0
- package/dist/packages/compiler/validate-helpers.d.ts +12 -0
- package/dist/packages/compiler/validate-helpers.js +41 -0
- package/dist/packages/compiler/validate.d.ts +21 -0
- package/dist/packages/compiler/validate.js +249 -0
- package/dist/packages/compiler/workflow-primitives.d.ts +2 -0
- package/dist/packages/compiler/workflow-primitives.js +5 -0
- package/dist/packages/compiler/workflows.d.ts +15 -0
- package/dist/packages/compiler/workflows.js +31 -0
- package/dist/packages/project-model/compiled-paths.d.ts +40 -0
- package/dist/packages/project-model/compiled-paths.js +106 -0
- package/dist/packages/project-model/compiled-raw.d.ts +49 -0
- package/dist/packages/project-model/compiled-raw.js +102 -0
- package/dist/packages/project-model/compiled-reset.d.ts +2 -0
- package/dist/packages/project-model/compiled-reset.js +72 -0
- package/dist/packages/project-model/index.d.ts +11 -0
- package/dist/packages/project-model/index.js +10 -0
- package/dist/packages/project-model/interf-bootstrap.d.ts +3 -0
- package/dist/packages/project-model/interf-bootstrap.js +18 -0
- package/dist/packages/project-model/interf-detect.d.ts +33 -0
- package/dist/packages/project-model/interf-detect.js +176 -0
- package/dist/packages/project-model/interf-scaffold.d.ts +2 -0
- package/dist/packages/project-model/interf-scaffold.js +124 -0
- package/dist/packages/project-model/interf.d.ts +5 -0
- package/dist/packages/project-model/interf.js +4 -0
- package/dist/packages/project-model/lib/schema.d.ts +125 -0
- package/dist/packages/project-model/lib/schema.js +62 -0
- package/dist/packages/project-model/project-paths.d.ts +11 -0
- package/dist/packages/project-model/project-paths.js +32 -0
- package/dist/packages/project-model/source-config.d.ts +38 -0
- package/dist/packages/project-model/source-config.js +297 -0
- package/dist/packages/testing/index.d.ts +13 -0
- package/dist/packages/testing/index.js +10 -0
- package/dist/packages/testing/lib/schema.d.ts +261 -0
- package/dist/packages/testing/lib/schema.js +119 -0
- package/dist/packages/testing/test-execution.d.ts +14 -0
- package/dist/packages/testing/test-execution.js +525 -0
- package/dist/packages/testing/test-matrices.d.ts +90 -0
- package/dist/packages/testing/test-matrices.js +96 -0
- package/dist/packages/testing/test-paths.d.ts +12 -0
- package/dist/packages/testing/test-paths.js +59 -0
- package/dist/packages/testing/test-profile-presets.d.ts +57 -0
- package/dist/packages/testing/test-profile-presets.js +50 -0
- package/dist/packages/testing/test-sandbox.d.ts +11 -0
- package/dist/packages/testing/test-sandbox.js +105 -0
- package/dist/packages/testing/test-specs.d.ts +7 -0
- package/dist/packages/testing/test-specs.js +114 -0
- package/dist/packages/testing/test-targets.d.ts +5 -0
- package/dist/packages/testing/test-targets.js +38 -0
- package/dist/packages/testing/test-types.d.ts +16 -0
- package/dist/packages/testing/test-types.js +1 -0
- package/dist/packages/testing/test.d.ts +4 -0
- package/dist/packages/testing/test.js +3 -0
- package/dist/packages/workflow-authoring/index.d.ts +4 -0
- package/dist/packages/workflow-authoring/index.js +4 -0
- package/dist/packages/workflow-authoring/lib/workflow-edit-utils.d.ts +10 -0
- package/dist/packages/workflow-authoring/lib/workflow-edit-utils.js +39 -0
- package/dist/packages/workflow-authoring/workflow-authoring.d.ts +26 -0
- package/dist/packages/workflow-authoring/workflow-authoring.js +120 -0
- package/dist/packages/workflow-authoring/workflow-edit-session.d.ts +16 -0
- package/dist/packages/workflow-authoring/workflow-edit-session.js +57 -0
- package/dist/packages/workflow-authoring/workflow-improvement.d.ts +23 -0
- package/dist/packages/workflow-authoring/workflow-improvement.js +209 -0
- package/dist/packages/workflow-package/builtin-compiled-workflow.d.ts +38 -0
- package/dist/packages/workflow-package/builtin-compiled-workflow.js +94 -0
- package/dist/packages/workflow-package/index.d.ts +9 -0
- package/dist/packages/workflow-package/index.js +9 -0
- package/dist/packages/workflow-package/interf-workflow-package.d.ts +25 -0
- package/dist/packages/workflow-package/interf-workflow-package.js +342 -0
- package/dist/{lib/config.d.ts → packages/workflow-package/lib/package-root.d.ts} +0 -1
- package/dist/packages/workflow-package/lib/package-root.js +6 -0
- package/dist/packages/workflow-package/local-workflows.d.ts +54 -0
- package/dist/packages/workflow-package/local-workflows.js +422 -0
- package/dist/packages/workflow-package/workflow-definitions.d.ts +78 -0
- package/dist/packages/workflow-package/workflow-definitions.js +203 -0
- package/dist/packages/workflow-package/workflow-helpers.d.ts +38 -0
- package/dist/packages/workflow-package/workflow-helpers.js +167 -0
- package/dist/packages/workflow-package/workflow-review-paths.d.ts +10 -0
- package/dist/packages/workflow-package/workflow-review-paths.js +27 -0
- package/dist/packages/workflow-package/workflow-stage-policy.d.ts +5 -0
- package/dist/packages/workflow-package/workflow-stage-policy.js +31 -0
- package/dist/packages/workflow-package/workflow-stage-runner.d.ts +41 -0
- package/dist/packages/workflow-package/workflow-stage-runner.js +109 -0
- package/package.json +43 -19
- package/dist/commands/test.d.ts +0 -3
- package/dist/lib/compiled-home.d.ts +0 -5
- package/dist/lib/compiled-home.js +0 -32
- package/dist/lib/config.js +0 -9
- /package/dist/{commands → cli/commands}/dataset-selection.js +0 -0
- /package/dist/{commands → cli/commands}/default.d.ts +0 -0
- /package/dist/{commands → cli/commands}/doctor.d.ts +0 -0
- /package/dist/{commands → cli/commands}/list.d.ts +0 -0
- /package/dist/{commands → cli/commands}/reset.d.ts +0 -0
- /package/dist/{commands → cli/commands}/status.d.ts +0 -0
- /package/dist/{commands → cli/commands}/verify.d.ts +0 -0
|
@@ -1,16 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import type { WorkflowValidationResult } from "./local-workflows.js";
|
|
3
|
-
import { type WorkflowEditShellArtifacts } from "./workflow-edit-utils.js";
|
|
4
|
-
export interface WorkflowEditSessionResult {
|
|
5
|
-
status: "updated" | "no-change" | "invalid" | "executor-failed";
|
|
6
|
-
changed: boolean;
|
|
7
|
-
validation: WorkflowValidationResult | null;
|
|
8
|
-
summary: string;
|
|
9
|
-
}
|
|
10
|
-
export declare function runWorkflowEditSession(options: {
|
|
11
|
-
executor: WorkflowExecutor;
|
|
12
|
-
workflowPath: string;
|
|
13
|
-
shell: WorkflowEditShellArtifacts;
|
|
14
|
-
prompt: string;
|
|
15
|
-
validate: (workflowPath: string) => WorkflowValidationResult;
|
|
16
|
-
}): Promise<WorkflowEditSessionResult>;
|
|
1
|
+
export * from "../packages/workflow-authoring/workflow-edit-session.js";
|
|
@@ -1,57 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { copyDirectory, directoriesMatch } from "./workflow-edit-utils.js";
|
|
3
|
-
export async function runWorkflowEditSession(options) {
|
|
4
|
-
copyDirectory(options.workflowPath, options.shell.workflowBeforePath);
|
|
5
|
-
writeFileSync(options.shell.promptLogPath, `${options.prompt}\n`);
|
|
6
|
-
let code = 1;
|
|
7
|
-
let executeError = null;
|
|
8
|
-
try {
|
|
9
|
-
code = await options.executor.execute(options.shell.rootPath, options.prompt, {
|
|
10
|
-
eventLogPath: options.shell.eventLogPath,
|
|
11
|
-
statusLogPath: options.shell.statusLogPath,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
catch (error) {
|
|
15
|
-
executeError = error instanceof Error ? error.message : String(error);
|
|
16
|
-
}
|
|
17
|
-
copyDirectory(options.workflowPath, options.shell.workflowAfterPath);
|
|
18
|
-
const changed = !directoriesMatch(options.shell.workflowBeforePath, options.shell.workflowAfterPath);
|
|
19
|
-
if (executeError) {
|
|
20
|
-
copyDirectory(options.shell.workflowBeforePath, options.workflowPath);
|
|
21
|
-
return {
|
|
22
|
-
status: "executor-failed",
|
|
23
|
-
changed,
|
|
24
|
-
validation: null,
|
|
25
|
-
summary: `Workflow editor failed before completing: ${executeError}`,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
if (code !== 0) {
|
|
29
|
-
copyDirectory(options.shell.workflowBeforePath, options.workflowPath);
|
|
30
|
-
return {
|
|
31
|
-
status: "executor-failed",
|
|
32
|
-
changed,
|
|
33
|
-
validation: null,
|
|
34
|
-
summary: `Workflow editor exited with code ${code}.`,
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
const validation = options.validate(options.workflowPath);
|
|
38
|
-
if (!validation.ok) {
|
|
39
|
-
copyDirectory(options.shell.workflowBeforePath, options.workflowPath);
|
|
40
|
-
return {
|
|
41
|
-
status: "invalid",
|
|
42
|
-
changed,
|
|
43
|
-
validation,
|
|
44
|
-
summary: changed
|
|
45
|
-
? `Workflow package failed validation: ${validation.summary}`
|
|
46
|
-
: `Workflow package is invalid without any workflow edits: ${validation.summary}`,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
return {
|
|
50
|
-
status: changed ? "updated" : "no-change",
|
|
51
|
-
changed,
|
|
52
|
-
validation,
|
|
53
|
-
summary: changed
|
|
54
|
-
? "Workflow package updated and validated."
|
|
55
|
-
: "Workflow package is valid without additional edits.",
|
|
56
|
-
};
|
|
57
|
-
}
|
|
1
|
+
export * from "../packages/workflow-authoring/workflow-edit-session.js";
|
|
@@ -1,10 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export declare function directoriesMatch(leftPath: string, rightPath: string): boolean;
|
|
3
|
-
export interface WorkflowEditShellArtifacts {
|
|
4
|
-
rootPath: string;
|
|
5
|
-
workflowBeforePath: string;
|
|
6
|
-
workflowAfterPath: string;
|
|
7
|
-
promptLogPath: string;
|
|
8
|
-
eventLogPath: string;
|
|
9
|
-
statusLogPath: string;
|
|
10
|
-
}
|
|
1
|
+
export * from "../packages/workflow-authoring/lib/workflow-edit-utils.js";
|
|
@@ -1,39 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { join, relative } from "node:path";
|
|
3
|
-
export function copyDirectory(sourcePath, targetPath) {
|
|
4
|
-
rmSync(targetPath, { recursive: true, force: true });
|
|
5
|
-
mkdirSync(targetPath, { recursive: true });
|
|
6
|
-
cpSync(sourcePath, targetPath, { recursive: true });
|
|
7
|
-
}
|
|
8
|
-
function listFileSnapshot(dirPath) {
|
|
9
|
-
const snapshot = new Map();
|
|
10
|
-
if (!existsSync(dirPath))
|
|
11
|
-
return snapshot;
|
|
12
|
-
const collect = (currentPath) => {
|
|
13
|
-
for (const entry of readdirSync(currentPath)) {
|
|
14
|
-
const fullPath = join(currentPath, entry);
|
|
15
|
-
const stat = statSync(fullPath);
|
|
16
|
-
if (stat.isDirectory()) {
|
|
17
|
-
collect(fullPath);
|
|
18
|
-
continue;
|
|
19
|
-
}
|
|
20
|
-
if (!stat.isFile())
|
|
21
|
-
continue;
|
|
22
|
-
snapshot.set(relative(dirPath, fullPath), readFileSync(fullPath, "utf8"));
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
collect(dirPath);
|
|
26
|
-
return snapshot;
|
|
27
|
-
}
|
|
28
|
-
export function directoriesMatch(leftPath, rightPath) {
|
|
29
|
-
const left = listFileSnapshot(leftPath);
|
|
30
|
-
const right = listFileSnapshot(rightPath);
|
|
31
|
-
if (left.size !== right.size)
|
|
32
|
-
return false;
|
|
33
|
-
for (const [relativePath, content] of left.entries()) {
|
|
34
|
-
if (right.get(relativePath) !== content) {
|
|
35
|
-
return false;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
return true;
|
|
39
|
-
}
|
|
1
|
+
export * from "../packages/workflow-authoring/lib/workflow-edit-utils.js";
|
|
@@ -1,38 +1 @@
|
|
|
1
|
-
|
|
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
|
-
};
|
|
1
|
+
export * from "../packages/workflow-package/workflow-helpers.js";
|
|
@@ -1,167 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { join, relative, sep } from "node:path";
|
|
3
|
-
import { listFilesRecursive } from "./filesystem.js";
|
|
4
|
-
import { isMarkdownFile } from "./util.js";
|
|
5
|
-
import { getCompiledWorkflow, } from "./workflow-definitions.js";
|
|
6
|
-
import { parseJsonFrontmatter } from "./parse.js";
|
|
7
|
-
import { workflowPackagePathForCompiled } from "./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
|
-
}
|
|
1
|
+
export * from "../packages/workflow-package/workflow-helpers.js";
|
|
@@ -1,22 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { type WorkflowValidationResult } from "./local-workflows.js";
|
|
3
|
-
import type { SourceDatasetConfig, WorkflowImprovementLoopSummary } from "./schema.js";
|
|
4
|
-
export interface WorkflowImprovementRunResult {
|
|
5
|
-
status: "updated" | "no-change" | "invalid" | "executor-failed";
|
|
6
|
-
changed: boolean;
|
|
7
|
-
validation: WorkflowValidationResult | null;
|
|
8
|
-
summary: string;
|
|
9
|
-
shellPath: string;
|
|
10
|
-
loopRootPath: string;
|
|
11
|
-
}
|
|
12
|
-
export declare function runWorkflowImprovementLoop(options: {
|
|
13
|
-
executor: WorkflowExecutor;
|
|
14
|
-
compiledPath: string;
|
|
15
|
-
workflowId: string;
|
|
16
|
-
compiledConfig: Pick<SourceDatasetConfig, "checks">;
|
|
17
|
-
runId: string;
|
|
18
|
-
loopIndex: number;
|
|
19
|
-
maxLoops: number;
|
|
20
|
-
maxAttempts: number;
|
|
21
|
-
previousVariations: WorkflowImprovementLoopSummary[];
|
|
22
|
-
}): Promise<WorkflowImprovementRunResult>;
|
|
1
|
+
export * from "../packages/workflow-authoring/workflow-improvement.js";
|
|
@@ -1,209 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { join, relative } from "node:path";
|
|
3
|
-
import { createWorkflowImprovementShell, freezeWorkflowImprovementShell, } from "./agent-shells.js";
|
|
4
|
-
import { readInterfConfig } from "./interf.js";
|
|
5
|
-
import { validateWorkflowPackage } from "./local-workflows.js";
|
|
6
|
-
import { readJsonFileWithSchema } from "./parse.js";
|
|
7
|
-
import { saveCompiledInterfConfig } from "./source-config.js";
|
|
8
|
-
import { WorkflowImprovementRunLedgerSchema, } from "./schema.js";
|
|
9
|
-
import { resolveWorkflowImprovementReviewPaths } from "./workflow-review-paths.js";
|
|
10
|
-
import { runWorkflowEditSession } from "./workflow-edit-session.js";
|
|
11
|
-
import { targetTestRunsRootForCompiled, targetTestSandboxesRootForCompiled, workflowImprovementRunRoot, workflowPackagePathForCompiled, } from "./compiled-paths.js";
|
|
12
|
-
import { WORKFLOW_SCHEMA_FILE } from "./compiled-schema.js";
|
|
13
|
-
function toShellArtifactPath(absolutePath, sourceRoot, shellRoot) {
|
|
14
|
-
if (!absolutePath)
|
|
15
|
-
return null;
|
|
16
|
-
const normalizedSourceRoot = `${sourceRoot}/`;
|
|
17
|
-
if (absolutePath !== sourceRoot && !absolutePath.startsWith(normalizedSourceRoot)) {
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
const relativePath = relative(sourceRoot, absolutePath);
|
|
21
|
-
return join(shellRoot, relativePath);
|
|
22
|
-
}
|
|
23
|
-
function mapLoopSummaryForShell(summary, compiledPath) {
|
|
24
|
-
const shellTestRunsRoot = "artifacts/test-runs";
|
|
25
|
-
const shellTestSandboxesRoot = "artifacts/test-sandboxes";
|
|
26
|
-
return {
|
|
27
|
-
...summary,
|
|
28
|
-
test_run_path: toShellArtifactPath(summary.test_run_path, targetTestRunsRootForCompiled(compiledPath), shellTestRunsRoot) ?? summary.test_run_path ?? null,
|
|
29
|
-
test_sandbox_path: toShellArtifactPath(summary.test_sandbox_path, targetTestSandboxesRootForCompiled(compiledPath), shellTestSandboxesRoot) ?? summary.test_sandbox_path ?? null,
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
function buildLoopContext(options) {
|
|
33
|
-
const previousVariations = options.previousVariations.map((summary) => mapLoopSummaryForShell(summary, options.compiledPath));
|
|
34
|
-
const latestFailure = previousVariations.at(-1) ?? null;
|
|
35
|
-
return {
|
|
36
|
-
kind: "interf-workflow-improvement-loop",
|
|
37
|
-
version: 1,
|
|
38
|
-
generated_at: new Date().toISOString(),
|
|
39
|
-
target_name: readInterfConfig(options.compiledPath)?.name ?? "compiled",
|
|
40
|
-
workflow_id: options.workflowId,
|
|
41
|
-
loop_index: options.loopIndex,
|
|
42
|
-
max_loops: options.maxLoops,
|
|
43
|
-
max_attempts: options.maxAttempts,
|
|
44
|
-
review_paths: resolveWorkflowImprovementReviewPaths(options.compiledPath),
|
|
45
|
-
truth_checks: {
|
|
46
|
-
count: options.compiledConfig.checks.length,
|
|
47
|
-
questions: options.compiledConfig.checks.map((check, index) => ({
|
|
48
|
-
id: check.id ?? `check-${index + 1}`,
|
|
49
|
-
question: check.question,
|
|
50
|
-
})),
|
|
51
|
-
},
|
|
52
|
-
previous_variations: previousVariations,
|
|
53
|
-
latest_failure: latestFailure,
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function buildWorkflowImprovementPrompt() {
|
|
57
|
-
return [
|
|
58
|
-
"This is an automated Interf workflow-improvement run, not an open-ended chat session.",
|
|
59
|
-
"The user already invoked this through `interf compile` with self-improving loops enabled. Execute it now.",
|
|
60
|
-
"Read `runtime/loop-context.json` first.",
|
|
61
|
-
`Then read \`workflow/README.md\`, \`workflow/workflow.json\`, \`workflow/${WORKFLOW_SCHEMA_FILE}\`, and \`workflow/improve/SKILL.md\` if it exists.`,
|
|
62
|
-
"Review preserved evidence from earlier failures under `artifacts/` before you edit the workflow.",
|
|
63
|
-
"Treat `workflow/improve/SKILL.md` as guidance for how to improve the workflow, not as the default file to edit.",
|
|
64
|
-
"Prefer editing the stage docs, workflow contract, or schema ownership that actually change compiled outputs.",
|
|
65
|
-
"Edit only files under `workflow/`.",
|
|
66
|
-
"Do not edit truth checks, test specs, raw dataset files, or generated compiled outputs.",
|
|
67
|
-
"Keep the workflow valid for the current compiler API and workflow schema.",
|
|
68
|
-
"Respect stage boundaries: a stage may only introduce links that resolve within that stage's declared writes or already-existing read zones.",
|
|
69
|
-
"Do not make one stage point at files or notes that are only created later by another stage.",
|
|
70
|
-
"Prefer small, defensible changes to workflow docs, stage docs, stage policies, or schema ownership over random churn.",
|
|
71
|
-
"Do not narrate plans or ask follow-up questions.",
|
|
72
|
-
"Only emit user-visible updates that begin with STATUS:, DONE:, BLOCKED:, or ERROR:.",
|
|
73
|
-
"As soon as the workflow edits are complete, stop.",
|
|
74
|
-
].join("\n");
|
|
75
|
-
}
|
|
76
|
-
function updateCompiledWorkflowOrigin(options) {
|
|
77
|
-
const current = readInterfConfig(options.compiledPath);
|
|
78
|
-
if (!current)
|
|
79
|
-
return;
|
|
80
|
-
const nextConfig = {
|
|
81
|
-
...current,
|
|
82
|
-
workflow: current.workflow ?? options.selectedWorkflowId,
|
|
83
|
-
workflow_origin: {
|
|
84
|
-
selected: options.selectedWorkflowId,
|
|
85
|
-
...(options.localDraft ? { local_draft: true } : {}),
|
|
86
|
-
},
|
|
87
|
-
};
|
|
88
|
-
saveCompiledInterfConfig(options.compiledPath, nextConfig);
|
|
89
|
-
}
|
|
90
|
-
function workflowImprovementRunLedgerPath(compiledPath, runId) {
|
|
91
|
-
return join(workflowImprovementRunRoot(compiledPath, runId), "run.json");
|
|
92
|
-
}
|
|
93
|
-
function workflowImprovementLoopHistoryPath(compiledPath, runId) {
|
|
94
|
-
return join(workflowImprovementRunRoot(compiledPath, runId), "loop-history.jsonl");
|
|
95
|
-
}
|
|
96
|
-
function workflowImprovementLoopRecordPath(loopRootPath) {
|
|
97
|
-
return join(loopRootPath, "loop.json");
|
|
98
|
-
}
|
|
99
|
-
function readWorkflowImprovementRunLedger(compiledPath, runId) {
|
|
100
|
-
const ledgerPath = workflowImprovementRunLedgerPath(compiledPath, runId);
|
|
101
|
-
if (!existsSync(ledgerPath))
|
|
102
|
-
return null;
|
|
103
|
-
return readJsonFileWithSchema(ledgerPath, "workflow improvement run ledger", WorkflowImprovementRunLedgerSchema);
|
|
104
|
-
}
|
|
105
|
-
function writeWorkflowImprovementRunLedger(compiledPath, runId, record, options) {
|
|
106
|
-
const runRoot = workflowImprovementRunRoot(compiledPath, runId);
|
|
107
|
-
mkdirSync(runRoot, { recursive: true });
|
|
108
|
-
const existing = readWorkflowImprovementRunLedger(compiledPath, runId);
|
|
109
|
-
const generatedAt = existing?.generated_at ?? new Date().toISOString();
|
|
110
|
-
const ledger = {
|
|
111
|
-
kind: "interf-workflow-improvement-run",
|
|
112
|
-
version: 1,
|
|
113
|
-
generated_at: generatedAt,
|
|
114
|
-
updated_at: new Date().toISOString(),
|
|
115
|
-
run_id: runId,
|
|
116
|
-
target_name: options.targetName,
|
|
117
|
-
workflow_id: options.workflowId,
|
|
118
|
-
max_loops: options.maxLoops,
|
|
119
|
-
max_attempts: options.maxAttempts,
|
|
120
|
-
loops: [...(existing?.loops ?? []), record],
|
|
121
|
-
};
|
|
122
|
-
writeFileSync(workflowImprovementRunLedgerPath(compiledPath, runId), `${JSON.stringify(ledger, null, 2)}\n`);
|
|
123
|
-
writeFileSync(workflowImprovementLoopRecordPath(record.loop_root_path), `${JSON.stringify(record, null, 2)}\n`);
|
|
124
|
-
appendFileSync(workflowImprovementLoopHistoryPath(compiledPath, runId), `${JSON.stringify(record)}\n`);
|
|
125
|
-
}
|
|
126
|
-
function buildWorkflowImprovementLoopRecord(options) {
|
|
127
|
-
return {
|
|
128
|
-
kind: "interf-workflow-improvement-loop-record",
|
|
129
|
-
version: 1,
|
|
130
|
-
recorded_at: new Date().toISOString(),
|
|
131
|
-
run_id: options.runId,
|
|
132
|
-
loop_index: options.loopIndex,
|
|
133
|
-
target_name: options.targetName,
|
|
134
|
-
workflow_id: options.workflowId,
|
|
135
|
-
result: options.result,
|
|
136
|
-
changed: options.changed,
|
|
137
|
-
applied: options.result === "updated",
|
|
138
|
-
summary: options.summary,
|
|
139
|
-
shell_path: options.shellPath,
|
|
140
|
-
loop_root_path: options.loopRootPath,
|
|
141
|
-
context_path: join(options.shellPath, "runtime", "loop-context.json"),
|
|
142
|
-
workflow_before_path: options.workflowBeforePath,
|
|
143
|
-
workflow_after_path: options.workflowAfterPath,
|
|
144
|
-
prompt_log_path: options.promptLogPath,
|
|
145
|
-
event_log_path: options.eventLogPath,
|
|
146
|
-
status_log_path: options.statusLogPath,
|
|
147
|
-
preserved_shell_manifest_path: options.preservedShellManifestPath,
|
|
148
|
-
validation: options.validation,
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
export async function runWorkflowImprovementLoop(options) {
|
|
152
|
-
const compiledName = readInterfConfig(options.compiledPath)?.name ?? "compiled";
|
|
153
|
-
const context = buildLoopContext(options);
|
|
154
|
-
const shell = createWorkflowImprovementShell({
|
|
155
|
-
compiledPath: options.compiledPath,
|
|
156
|
-
compiledName,
|
|
157
|
-
workflowId: options.workflowId,
|
|
158
|
-
runId: options.runId,
|
|
159
|
-
loopIndex: options.loopIndex,
|
|
160
|
-
context,
|
|
161
|
-
});
|
|
162
|
-
const workflowRoot = workflowPackagePathForCompiled(options.compiledPath);
|
|
163
|
-
const session = await runWorkflowEditSession({
|
|
164
|
-
executor: options.executor,
|
|
165
|
-
workflowPath: workflowRoot,
|
|
166
|
-
shell,
|
|
167
|
-
prompt: buildWorkflowImprovementPrompt(),
|
|
168
|
-
validate: validateWorkflowPackage,
|
|
169
|
-
});
|
|
170
|
-
const preservedShellManifestPath = freezeWorkflowImprovementShell(shell.rootPath);
|
|
171
|
-
writeWorkflowImprovementRunLedger(options.compiledPath, options.runId, buildWorkflowImprovementLoopRecord({
|
|
172
|
-
targetName: compiledName,
|
|
173
|
-
workflowId: options.workflowId,
|
|
174
|
-
runId: options.runId,
|
|
175
|
-
loopIndex: options.loopIndex,
|
|
176
|
-
shellPath: shell.rootPath,
|
|
177
|
-
loopRootPath: shell.loopRootPath,
|
|
178
|
-
workflowBeforePath: shell.workflowBeforePath,
|
|
179
|
-
workflowAfterPath: shell.workflowAfterPath,
|
|
180
|
-
promptLogPath: shell.promptLogPath,
|
|
181
|
-
eventLogPath: shell.eventLogPath,
|
|
182
|
-
statusLogPath: shell.statusLogPath,
|
|
183
|
-
preservedShellManifestPath,
|
|
184
|
-
changed: session.changed,
|
|
185
|
-
validation: session.validation,
|
|
186
|
-
result: session.status,
|
|
187
|
-
summary: session.summary,
|
|
188
|
-
}), {
|
|
189
|
-
targetName: compiledName,
|
|
190
|
-
workflowId: options.workflowId,
|
|
191
|
-
maxLoops: options.maxLoops,
|
|
192
|
-
maxAttempts: options.maxAttempts,
|
|
193
|
-
});
|
|
194
|
-
if (session.status === "updated") {
|
|
195
|
-
updateCompiledWorkflowOrigin({
|
|
196
|
-
compiledPath: options.compiledPath,
|
|
197
|
-
selectedWorkflowId: options.workflowId,
|
|
198
|
-
localDraft: true,
|
|
199
|
-
});
|
|
200
|
-
}
|
|
201
|
-
return {
|
|
202
|
-
status: session.status,
|
|
203
|
-
changed: session.changed,
|
|
204
|
-
validation: session.validation,
|
|
205
|
-
summary: session.summary,
|
|
206
|
-
shellPath: shell.rootPath,
|
|
207
|
-
loopRootPath: shell.loopRootPath,
|
|
208
|
-
};
|
|
209
|
-
}
|
|
1
|
+
export * from "../packages/workflow-authoring/workflow-improvement.js";
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type CompiledZoneKind = typeof COMPILED_ZONE_KINDS[number];
|
|
1
|
+
export * from "../packages/compiler/workflow-primitives.js";
|
|
@@ -1,10 +1 @@
|
|
|
1
|
-
|
|
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"];
|
|
1
|
+
export * from "../packages/workflow-package/workflow-review-paths.js";
|
|
@@ -1,27 +1 @@
|
|
|
1
|
-
|
|
2
|
-
import { testRootForCompiled, targetTestRunsRootForCompiled, targetTestSandboxesRootForCompiled, stageExecutionShellsRoot, compiledRuntimeRoot, } from "./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
|
-
}
|
|
1
|
+
export * from "../packages/workflow-package/workflow-review-paths.js";
|
|
@@ -1,5 +1 @@
|
|
|
1
|
-
export
|
|
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;
|
|
1
|
+
export * from "../packages/workflow-package/workflow-stage-policy.js";
|