agentic-forge 0.7.1 → 0.8.0
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 +20 -110
- package/dist/authoring/.claude/skills/workflow-builder/SKILL.md +2 -2
- package/dist/authoring/.claude/skills/workflow-builder/references/REFERENCE.md +16 -14
- package/dist/authoring/.claude/skills/workflow-builder/references/workflow-example.yaml +14 -14
- package/dist/checkpoints/manager.d.ts +4 -4
- package/dist/checkpoints/manager.js +9 -10
- package/dist/checkpoints/manager.js.map +1 -1
- package/dist/claude/.claude/skills/orchestrate/SKILL.md +2 -2
- package/dist/cli.js +31 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/config-cmd.d.ts +1 -1
- package/dist/commands/config-cmd.js +2 -2
- package/dist/commands/config-cmd.js.map +1 -1
- package/dist/commands/index.d.ts +1 -0
- package/dist/commands/index.js +1 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/commands/init.d.ts +8 -2
- package/dist/commands/init.js +64 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/paths.d.ts +2 -0
- package/dist/commands/paths.js +36 -0
- package/dist/commands/paths.js.map +1 -0
- package/dist/commands/resume.js +8 -2
- package/dist/commands/resume.js.map +1 -1
- package/dist/commands/run.d.ts +1 -0
- package/dist/commands/run.js +3 -8
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/status.js +83 -22
- package/dist/commands/status.js.map +1 -1
- package/dist/config.d.ts +19 -2
- package/dist/config.js +79 -15
- package/dist/config.js.map +1 -1
- package/dist/executor.d.ts +2 -1
- package/dist/executor.js +19 -9
- package/dist/executor.js.map +1 -1
- package/dist/logging/logger.d.ts +3 -3
- package/dist/logging/logger.js +6 -8
- package/dist/logging/logger.js.map +1 -1
- package/dist/orchestrator.js +35 -16
- package/dist/orchestrator.js.map +1 -1
- package/dist/paths.d.ts +64 -0
- package/dist/paths.js +167 -0
- package/dist/paths.js.map +1 -0
- package/dist/progress.d.ts +5 -5
- package/dist/progress.js +15 -9
- package/dist/progress.js.map +1 -1
- package/dist/ralph-loop.d.ts +6 -6
- package/dist/ralph-loop.js +16 -16
- package/dist/ralph-loop.js.map +1 -1
- package/dist/runner.d.ts +1 -0
- package/dist/runner.js +5 -1
- package/dist/runner.js.map +1 -1
- package/dist/steps/base.d.ts +1 -0
- package/dist/steps/base.js +1 -0
- package/dist/steps/base.js.map +1 -1
- package/dist/steps/prompt-step.js +2 -1
- package/dist/steps/prompt-step.js.map +1 -1
- package/dist/steps/ralph-loop-step.js +11 -8
- package/dist/steps/ralph-loop-step.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/workflows/plan-build-review.yaml +6 -6
- package/package.json +1 -1
package/dist/config.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/** Configuration management for agentic-forge. */
|
|
2
2
|
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
3
4
|
import path from "node:path";
|
|
4
5
|
const DEFAULT_CONFIG = {
|
|
5
|
-
outputDirectory: "
|
|
6
|
+
outputDirectory: "global",
|
|
6
7
|
logging: {
|
|
7
8
|
enabled: true,
|
|
8
9
|
level: "Error",
|
|
@@ -24,6 +25,24 @@ const DEFAULT_CONFIG = {
|
|
|
24
25
|
pollingIntervalSeconds: 5,
|
|
25
26
|
},
|
|
26
27
|
};
|
|
28
|
+
/**
|
|
29
|
+
* Returns the platform-native global config file path.
|
|
30
|
+
* Inlined here to avoid a circular dependency with paths.ts.
|
|
31
|
+
*/
|
|
32
|
+
function getGlobalConfigPath() {
|
|
33
|
+
const platform = process.platform;
|
|
34
|
+
let base;
|
|
35
|
+
if (platform === "win32") {
|
|
36
|
+
base = process.env.APPDATA ?? path.join(homedir(), "AppData", "Roaming");
|
|
37
|
+
}
|
|
38
|
+
else if (platform === "darwin") {
|
|
39
|
+
base = path.join(homedir(), "Library", "Application Support");
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
base = process.env.XDG_CONFIG_HOME ?? path.join(homedir(), ".config");
|
|
43
|
+
}
|
|
44
|
+
return path.join(base, "agentic-forge", "config.json");
|
|
45
|
+
}
|
|
27
46
|
export function getConfigPath(repoRoot) {
|
|
28
47
|
const root = repoRoot ?? process.cwd();
|
|
29
48
|
return path.join(root, "agentic", "config.json");
|
|
@@ -31,20 +50,43 @@ export function getConfigPath(repoRoot) {
|
|
|
31
50
|
export function getDefaultConfig() {
|
|
32
51
|
return deepCopy(DEFAULT_CONFIG);
|
|
33
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Loads configuration with 3-layer merge: defaults -> global -> local.
|
|
55
|
+
* @param repoRoot - project root (for local config path)
|
|
56
|
+
*/
|
|
34
57
|
export function loadConfig(repoRoot) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
58
|
+
let config = getDefaultConfig();
|
|
59
|
+
// Layer 2: global config
|
|
60
|
+
const globalConfigPath = getGlobalConfigPath();
|
|
61
|
+
if (existsSync(globalConfigPath)) {
|
|
62
|
+
const globalConfig = JSON.parse(readFileSync(globalConfigPath, "utf-8"));
|
|
63
|
+
config = deepMerge(config, globalConfig);
|
|
64
|
+
}
|
|
65
|
+
// Layer 3: local config
|
|
66
|
+
const localConfigPath = getConfigPath(repoRoot);
|
|
67
|
+
if (existsSync(localConfigPath)) {
|
|
68
|
+
const localConfig = JSON.parse(readFileSync(localConfigPath, "utf-8"));
|
|
69
|
+
config = deepMerge(config, localConfig);
|
|
40
70
|
}
|
|
41
|
-
return
|
|
71
|
+
return config;
|
|
42
72
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
73
|
+
/**
|
|
74
|
+
* Saves configuration to the specified scope.
|
|
75
|
+
* @param config - config object to write
|
|
76
|
+
* @param repoRoot - project root (for local writes)
|
|
77
|
+
* @param scope - "global" writes to global config; "local" or omitted writes locally
|
|
78
|
+
*/
|
|
79
|
+
export function saveConfig(config, repoRoot, scope) {
|
|
80
|
+
if (scope === "global") {
|
|
81
|
+
const globalConfigPath = getGlobalConfigPath();
|
|
82
|
+
mkdirSync(path.dirname(globalConfigPath), { recursive: true });
|
|
83
|
+
writeFileSync(globalConfigPath, JSON.stringify(config, null, 2), "utf-8");
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
const configPath = getConfigPath(repoRoot);
|
|
87
|
+
mkdirSync(path.dirname(configPath), { recursive: true });
|
|
88
|
+
writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
|
|
89
|
+
}
|
|
48
90
|
}
|
|
49
91
|
export function getConfigValue(key, repoRoot) {
|
|
50
92
|
const config = loadConfig(repoRoot);
|
|
@@ -63,8 +105,30 @@ export function getConfigValue(key, repoRoot) {
|
|
|
63
105
|
}
|
|
64
106
|
return value;
|
|
65
107
|
}
|
|
66
|
-
|
|
67
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Sets a configuration value in the specified scope.
|
|
110
|
+
* Reads only the target scope's config file, sets the key, and writes it back.
|
|
111
|
+
* This avoids writing merged values from other layers into a single scope.
|
|
112
|
+
*
|
|
113
|
+
* When no scope is specified: writes to local config if it exists, otherwise global.
|
|
114
|
+
*/
|
|
115
|
+
export function setConfigValue(key, value, scope, repoRoot) {
|
|
116
|
+
// Auto-detect scope: local if local config exists, otherwise global
|
|
117
|
+
const effectiveScope = scope ?? (existsSync(getConfigPath(repoRoot)) ? "local" : "global");
|
|
118
|
+
// Load only the target scope's config (not the full merged config)
|
|
119
|
+
let config;
|
|
120
|
+
if (effectiveScope === "global") {
|
|
121
|
+
const globalConfigPath = getGlobalConfigPath();
|
|
122
|
+
config = existsSync(globalConfigPath)
|
|
123
|
+
? JSON.parse(readFileSync(globalConfigPath, "utf-8"))
|
|
124
|
+
: {};
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const localConfigPath = getConfigPath(repoRoot);
|
|
128
|
+
config = existsSync(localConfigPath)
|
|
129
|
+
? JSON.parse(readFileSync(localConfigPath, "utf-8"))
|
|
130
|
+
: {};
|
|
131
|
+
}
|
|
68
132
|
const parts = key.split(".");
|
|
69
133
|
let target = config;
|
|
70
134
|
for (const part of parts.slice(0, -1)) {
|
|
@@ -84,7 +148,7 @@ export function setConfigValue(key, value, repoRoot) {
|
|
|
84
148
|
parsedValue = Number.parseInt(value, 10);
|
|
85
149
|
}
|
|
86
150
|
target[parts[parts.length - 1]] = parsedValue;
|
|
87
|
-
saveConfig(config, repoRoot);
|
|
151
|
+
saveConfig(config, repoRoot, effectiveScope);
|
|
88
152
|
}
|
|
89
153
|
export function deepMerge(base, override) {
|
|
90
154
|
const result = { ...base };
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAElD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,cAAc,GAA4B;IAC/C,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/executor.d.ts
CHANGED
|
@@ -21,7 +21,8 @@ export declare class WorkflowExecutor {
|
|
|
21
21
|
serialExecutor: SerialStepExecutor;
|
|
22
22
|
conditionalExecutor: ConditionalStepExecutor;
|
|
23
23
|
constructor(repoRoot?: string, strictMode?: boolean);
|
|
24
|
-
run(workflow: WorkflowDefinition, variables?: Record<string, unknown>, fromStep?: string | null, terminalOutput?: string, workflowFile?: string, resumeProgress?: WorkflowProgress | null): Promise<WorkflowProgress>;
|
|
24
|
+
run(workflow: WorkflowDefinition, variables?: Record<string, unknown>, fromStep?: string | null, terminalOutput?: string, workflowFile?: string, resumeProgress?: WorkflowProgress | null, slug?: string): Promise<WorkflowProgress>;
|
|
25
25
|
private renderOutputs;
|
|
26
|
+
private resolveOutputDir;
|
|
26
27
|
executeStep(step: StepDefinition, progress: WorkflowProgress, variables: Record<string, unknown>, logger: WorkflowLogger, console: ConsoleOutput): Promise<void>;
|
|
27
28
|
}
|
package/dist/executor.js
CHANGED
|
@@ -4,6 +4,7 @@ import { fileURLToPath } from "node:url";
|
|
|
4
4
|
import { loadConfig } from "./config.js";
|
|
5
5
|
import { ConsoleOutput, OutputLevel } from "./console.js";
|
|
6
6
|
import { WorkflowLogger } from "./logging/logger.js";
|
|
7
|
+
import { getOutputDir, resolveOutputDir } from "./paths.js";
|
|
7
8
|
import { STEP_STATUS, WORKFLOW_STATUS, createProgress, generateWorkflowId, saveProgress, updateStepFailed, updateStepStarted, } from "./progress.js";
|
|
8
9
|
import { TemplateRenderer, buildTemplateContext, renderWorkflowOutput } from "./renderer.js";
|
|
9
10
|
import { resolveModel } from "./steps/base.js";
|
|
@@ -75,7 +76,7 @@ export class WorkflowExecutor {
|
|
|
75
76
|
},
|
|
76
77
|
};
|
|
77
78
|
}
|
|
78
|
-
async run(workflow, variables, fromStep, terminalOutput = "base", workflowFile = "", resumeProgress) {
|
|
79
|
+
async run(workflow, variables, fromStep, terminalOutput = "base", workflowFile = "", resumeProgress, slug) {
|
|
79
80
|
let vars = variables ? { ...variables } : {};
|
|
80
81
|
this.workflowSettings = workflow.settings;
|
|
81
82
|
// Update renderer with workflow's strict_mode setting
|
|
@@ -106,12 +107,16 @@ export class WorkflowExecutor {
|
|
|
106
107
|
vars[v.name] = v.default;
|
|
107
108
|
}
|
|
108
109
|
}
|
|
109
|
-
workflowId = generateWorkflowId(workflow.name);
|
|
110
|
+
workflowId = generateWorkflowId(workflow.name, slug);
|
|
110
111
|
const stepNames = workflow.steps.map((s) => s.name);
|
|
111
112
|
progress = createProgress(workflowId, workflow.name, stepNames, vars, workflowFile);
|
|
112
113
|
}
|
|
113
|
-
|
|
114
|
-
const
|
|
114
|
+
// Resolve output dir, handling collisions with resolveOutputDir
|
|
115
|
+
const baseOutputDir = resumeProgress?.outputDir ?? getOutputDir(workflowId, this.config, this.repoRoot);
|
|
116
|
+
const outputDir = resumeProgress ? baseOutputDir : resolveOutputDir(baseOutputDir);
|
|
117
|
+
progress.outputDir = outputDir;
|
|
118
|
+
saveProgress(progress, outputDir);
|
|
119
|
+
const logger = new WorkflowLogger(workflowId, outputDir);
|
|
115
120
|
logger.info("workflow", `Started workflow: ${workflow.name}`);
|
|
116
121
|
console.workflowStart(workflow.name, workflowId);
|
|
117
122
|
// Build set of completed step names to skip on resume
|
|
@@ -136,7 +141,7 @@ export class WorkflowExecutor {
|
|
|
136
141
|
}
|
|
137
142
|
try {
|
|
138
143
|
await this.executeStep(step, progress, vars, logger, console);
|
|
139
|
-
saveProgress(progress,
|
|
144
|
+
saveProgress(progress, outputDir);
|
|
140
145
|
if (progress.status === WORKFLOW_STATUS.FAILED ||
|
|
141
146
|
progress.status === WORKFLOW_STATUS.PAUSED) {
|
|
142
147
|
break;
|
|
@@ -148,7 +153,7 @@ export class WorkflowExecutor {
|
|
|
148
153
|
console.stepFailed(step.name, errorMsg);
|
|
149
154
|
updateStepFailed(progress, step.name, errorMsg);
|
|
150
155
|
progress.status = WORKFLOW_STATUS.FAILED;
|
|
151
|
-
saveProgress(progress,
|
|
156
|
+
saveProgress(progress, outputDir);
|
|
152
157
|
break;
|
|
153
158
|
}
|
|
154
159
|
}
|
|
@@ -158,7 +163,7 @@ export class WorkflowExecutor {
|
|
|
158
163
|
if (progress.status !== WORKFLOW_STATUS.PAUSED) {
|
|
159
164
|
progress.completedAt = new Date().toISOString();
|
|
160
165
|
}
|
|
161
|
-
saveProgress(progress,
|
|
166
|
+
saveProgress(progress, outputDir);
|
|
162
167
|
this.renderOutputs(workflow, progress, vars, logger);
|
|
163
168
|
console.workflowComplete(workflow.name, progress.status);
|
|
164
169
|
logger.info("workflow", `Workflow ${progress.status}: ${workflow.name}`);
|
|
@@ -185,7 +190,7 @@ export class WorkflowExecutor {
|
|
|
185
190
|
const context = buildTemplateContext(workflow.name, progress.workflowId, progress.startedAt ?? "", progress.completedAt, stepOutputs, [], [], [], variables);
|
|
186
191
|
const pluginTemplates = path.join(__dirname, "templates");
|
|
187
192
|
const templateDirs = [pluginTemplates, this.repoRoot];
|
|
188
|
-
const outputDir =
|
|
193
|
+
const outputDir = this.resolveOutputDir(progress);
|
|
189
194
|
for (const output of workflow.outputs) {
|
|
190
195
|
if (output.when === "completed" && progress.status !== WORKFLOW_STATUS.COMPLETED) {
|
|
191
196
|
continue;
|
|
@@ -211,13 +216,18 @@ export class WorkflowExecutor {
|
|
|
211
216
|
}
|
|
212
217
|
}
|
|
213
218
|
}
|
|
219
|
+
resolveOutputDir(progress) {
|
|
220
|
+
return progress.outputDir ?? getOutputDir(progress.workflowId, this.config, this.repoRoot);
|
|
221
|
+
}
|
|
214
222
|
async executeStep(step, progress, variables, logger, console) {
|
|
223
|
+
const outputDir = this.resolveOutputDir(progress);
|
|
215
224
|
const context = {
|
|
216
225
|
repoRoot: this.repoRoot,
|
|
217
226
|
config: this.config,
|
|
218
227
|
renderer: this.renderer,
|
|
219
228
|
workflowSettings: this.workflowSettings,
|
|
220
229
|
workflowId: progress.workflowId,
|
|
230
|
+
outputDir,
|
|
221
231
|
variables,
|
|
222
232
|
outputs: progress.stepOutputs,
|
|
223
233
|
};
|
|
@@ -225,7 +235,7 @@ export class WorkflowExecutor {
|
|
|
225
235
|
logger.info(step.name, `Starting step: ${step.name}`);
|
|
226
236
|
console.stepStart(step.name, step.type, resolvedModel);
|
|
227
237
|
updateStepStarted(progress, step.name);
|
|
228
|
-
saveProgress(progress,
|
|
238
|
+
saveProgress(progress, outputDir);
|
|
229
239
|
const executor = this.executors[step.type];
|
|
230
240
|
if (!executor) {
|
|
231
241
|
throw new Error(`Step type not yet implemented: ${step.type}`);
|
package/dist/executor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
|
package/dist/logging/logger.d.ts
CHANGED
|
@@ -16,12 +16,12 @@ export interface LogEntry {
|
|
|
16
16
|
export declare class WorkflowLogger {
|
|
17
17
|
readonly workflowId: string;
|
|
18
18
|
readonly logPath: string;
|
|
19
|
-
constructor(workflowId: string,
|
|
19
|
+
constructor(workflowId: string, outputDir: string);
|
|
20
20
|
log(level: LogLevel, step: string, message: string, context?: Record<string, unknown> | null): void;
|
|
21
21
|
critical(step: string, message: string, context?: Record<string, unknown>): void;
|
|
22
22
|
error(step: string, message: string, context?: Record<string, unknown>): void;
|
|
23
23
|
warning(step: string, message: string, context?: Record<string, unknown>): void;
|
|
24
24
|
info(step: string, message: string, context?: Record<string, unknown>): void;
|
|
25
25
|
}
|
|
26
|
-
export declare function readLogs(workflowId: string,
|
|
27
|
-
export declare function getLogPath(workflowId: string,
|
|
26
|
+
export declare function readLogs(workflowId: string, outputDir: string): LogEntry[];
|
|
27
|
+
export declare function getLogPath(workflowId: string, outputDir: string): string;
|
package/dist/logging/logger.js
CHANGED
|
@@ -12,10 +12,9 @@ export const LOG_LEVEL = {
|
|
|
12
12
|
export class WorkflowLogger {
|
|
13
13
|
workflowId;
|
|
14
14
|
logPath;
|
|
15
|
-
constructor(workflowId,
|
|
15
|
+
constructor(workflowId, outputDir) {
|
|
16
16
|
this.workflowId = workflowId;
|
|
17
|
-
|
|
18
|
-
this.logPath = path.join(root, "agentic", "outputs", workflowId, "logs.ndjson");
|
|
17
|
+
this.logPath = path.join(outputDir, "logs.ndjson");
|
|
19
18
|
mkdirSync(path.dirname(this.logPath), { recursive: true });
|
|
20
19
|
}
|
|
21
20
|
log(level, step, message, context) {
|
|
@@ -42,8 +41,8 @@ export class WorkflowLogger {
|
|
|
42
41
|
}
|
|
43
42
|
}
|
|
44
43
|
// --- Utility functions ---
|
|
45
|
-
export function readLogs(workflowId,
|
|
46
|
-
const logPath = getLogPath(workflowId,
|
|
44
|
+
export function readLogs(workflowId, outputDir) {
|
|
45
|
+
const logPath = getLogPath(workflowId, outputDir);
|
|
47
46
|
if (!existsSync(logPath)) {
|
|
48
47
|
return [];
|
|
49
48
|
}
|
|
@@ -62,8 +61,7 @@ export function readLogs(workflowId, repoRoot) {
|
|
|
62
61
|
}
|
|
63
62
|
return entries;
|
|
64
63
|
}
|
|
65
|
-
export function getLogPath(workflowId,
|
|
66
|
-
|
|
67
|
-
return path.join(root, "agentic", "outputs", workflowId, "logs.ndjson");
|
|
64
|
+
export function getLogPath(workflowId, outputDir) {
|
|
65
|
+
return path.join(outputDir, "logs.ndjson");
|
|
68
66
|
}
|
|
69
67
|
//# sourceMappingURL=logger.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAE/C,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,qBAAqB;AAErB,MAAM,CAAC,MAAM,SAAS,GAAG;IACxB,QAAQ,EAAE,UAAU;IACpB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;CACjB,CAAC;AAcX,uBAAuB;AAEvB,MAAM,OAAO,cAAc;IACjB,UAAU,CAAS;IACnB,OAAO,CAAS;IAEzB,YAAY,UAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"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"}
|
package/dist/orchestrator.js
CHANGED
|
@@ -8,6 +8,7 @@ import { ConsoleOutput, OutputLevel, extractSummary } from "./console.js";
|
|
|
8
8
|
import { WorkflowExecutor } from "./executor.js";
|
|
9
9
|
import { createWorktree, pruneOrphaned, removeWorktree } from "./git/worktree.js";
|
|
10
10
|
import { WorkflowLogger } from "./logging/logger.js";
|
|
11
|
+
import { findOutputDir, getOutputDir } from "./paths.js";
|
|
11
12
|
import { WORKFLOW_STATUS, createProgress, generateWorkflowId, loadProgress, progressToDict, saveProgress, updateStepCompleted, updateStepFailed, updateStepStarted, } from "./progress.js";
|
|
12
13
|
import { buildRalphSystemMessage, createRalphState, deactivateRalphState, detectCompletionPromise, loadRalphState, updateRalphIteration, } from "./ralph-loop.js";
|
|
13
14
|
import { TemplateRenderer } from "./renderer.js";
|
|
@@ -58,7 +59,9 @@ export class WorkflowOrchestrator {
|
|
|
58
59
|
else {
|
|
59
60
|
progress = this.initProgress(workflow, vars, fromStep ?? null, workflowFile);
|
|
60
61
|
}
|
|
61
|
-
const
|
|
62
|
+
const outputDir = getOutputDir(progress.workflowId, this.config, this.repoRoot);
|
|
63
|
+
progress.outputDir = outputDir;
|
|
64
|
+
const logger = new WorkflowLogger(progress.workflowId, outputDir);
|
|
62
65
|
logger.info("orchestrator", `Starting workflow: ${workflow.name}`);
|
|
63
66
|
console.workflowStart(workflow.name, progress.workflowId);
|
|
64
67
|
while (!this._shutdownRequested) {
|
|
@@ -96,14 +99,14 @@ export class WorkflowOrchestrator {
|
|
|
96
99
|
progress.status = WORKFLOW_STATUS.FAILED;
|
|
97
100
|
break;
|
|
98
101
|
}
|
|
99
|
-
saveProgress(progress,
|
|
102
|
+
saveProgress(progress, outputDir);
|
|
100
103
|
if (this._shutdownRequested) {
|
|
101
104
|
await this.handleShutdown(progress, logger);
|
|
102
105
|
break;
|
|
103
106
|
}
|
|
104
107
|
}
|
|
105
108
|
progress.completedAt = new Date().toISOString();
|
|
106
|
-
saveProgress(progress,
|
|
109
|
+
saveProgress(progress, outputDir);
|
|
107
110
|
console.workflowComplete(workflow.name, progress.status);
|
|
108
111
|
this._signalManager.dispose();
|
|
109
112
|
return progress;
|
|
@@ -145,7 +148,9 @@ export class WorkflowOrchestrator {
|
|
|
145
148
|
}
|
|
146
149
|
progress.pendingSteps = newPending;
|
|
147
150
|
}
|
|
148
|
-
|
|
151
|
+
const initOutputDir = getOutputDir(workflowId, this.config, this.repoRoot);
|
|
152
|
+
progress.outputDir = initOutputDir;
|
|
153
|
+
saveProgress(progress, initOutputDir);
|
|
149
154
|
return progress;
|
|
150
155
|
}
|
|
151
156
|
collectStepNames(steps) {
|
|
@@ -287,11 +292,11 @@ export class WorkflowOrchestrator {
|
|
|
287
292
|
branchId: subStep.name,
|
|
288
293
|
status: "running",
|
|
289
294
|
worktreePath: wt.path,
|
|
290
|
-
progressFile: path.join(
|
|
295
|
+
progressFile: path.join(getOutputDir(progress.workflowId, { outputDirectory: "local" }, wt.path), "progress.json"),
|
|
291
296
|
};
|
|
292
297
|
progress.parallelBranches.push(branch);
|
|
293
298
|
}
|
|
294
|
-
saveProgress(progress, this.repoRoot);
|
|
299
|
+
saveProgress(progress, getOutputDir(progress.workflowId, this.config, this.repoRoot));
|
|
295
300
|
const results = [];
|
|
296
301
|
const pending = worktrees.map((wt, i) => ({ wt, i }));
|
|
297
302
|
let idx = 0;
|
|
@@ -346,9 +351,17 @@ export class WorkflowOrchestrator {
|
|
|
346
351
|
}
|
|
347
352
|
async executeInWorktree(workflow, step, parentProgress, worktree, logger, console) {
|
|
348
353
|
const wtExecutor = new WorkflowExecutor(worktree.path);
|
|
349
|
-
|
|
354
|
+
// Force local output for worktrees: they are ephemeral and output stays within the worktree
|
|
355
|
+
wtExecutor.config = { ...wtExecutor.config, outputDirectory: "local" };
|
|
356
|
+
const wtOutputDir = getOutputDir(parentProgress.workflowId, wtExecutor.config, worktree.path);
|
|
357
|
+
const wtLogger = new WorkflowLogger(parentProgress.workflowId, wtOutputDir);
|
|
358
|
+
// Clone progress so worktree branches write to their own output dir, not the parent's
|
|
359
|
+
const wtProgress = {
|
|
360
|
+
...parentProgress,
|
|
361
|
+
outputDir: wtOutputDir,
|
|
362
|
+
};
|
|
350
363
|
try {
|
|
351
|
-
await wtExecutor.executeStep(step,
|
|
364
|
+
await wtExecutor.executeStep(step, wtProgress, parentProgress.variables, wtLogger, console);
|
|
352
365
|
return true;
|
|
353
366
|
}
|
|
354
367
|
catch (e) {
|
|
@@ -411,7 +424,8 @@ export class WorkflowOrchestrator {
|
|
|
411
424
|
prompt = this.renderer.renderString(prompt, templateContext);
|
|
412
425
|
}
|
|
413
426
|
// Check for existing state to resume
|
|
414
|
-
const
|
|
427
|
+
const ralphOutputDir = getOutputDir(progress.workflowId, this.config, this.repoRoot);
|
|
428
|
+
const existingState = loadRalphState(progress.workflowId, step.name, ralphOutputDir);
|
|
415
429
|
let state;
|
|
416
430
|
if (existingState?.active) {
|
|
417
431
|
state = existingState;
|
|
@@ -419,7 +433,7 @@ export class WorkflowOrchestrator {
|
|
|
419
433
|
console.info(`Resuming Ralph loop from iteration ${state.iteration}`);
|
|
420
434
|
}
|
|
421
435
|
else {
|
|
422
|
-
state = createRalphState(progress.workflowId, step.name, prompt, maxIterations, completionPromise,
|
|
436
|
+
state = createRalphState(progress.workflowId, step.name, prompt, maxIterations, completionPromise, ralphOutputDir);
|
|
423
437
|
}
|
|
424
438
|
const printOutput = console.level === OutputLevel.ALL;
|
|
425
439
|
let finalOutput = "";
|
|
@@ -443,7 +457,7 @@ export class WorkflowOrchestrator {
|
|
|
443
457
|
const errorSummary = result.stderr ? extractSummary(result.stderr) : "Unknown error";
|
|
444
458
|
logger.warning(step.name, `Iteration ${state.iteration} failed: ${result.stderr}`);
|
|
445
459
|
console.ralphIteration(step.name, state.iteration, maxIterations, `Failed: ${errorSummary}`);
|
|
446
|
-
const newState = updateRalphIteration(progress.workflowId, step.name,
|
|
460
|
+
const newState = updateRalphIteration(progress.workflowId, step.name, ralphOutputDir);
|
|
447
461
|
if (!newState)
|
|
448
462
|
break;
|
|
449
463
|
state = newState;
|
|
@@ -456,14 +470,14 @@ export class WorkflowOrchestrator {
|
|
|
456
470
|
logger.info(step.name, `Completion promise matched after ${state.iteration} iterations`);
|
|
457
471
|
finalOutput = result.stdout;
|
|
458
472
|
completed = true;
|
|
459
|
-
deactivateRalphState(progress.workflowId, step.name,
|
|
473
|
+
deactivateRalphState(progress.workflowId, step.name, ralphOutputDir);
|
|
460
474
|
break;
|
|
461
475
|
}
|
|
462
476
|
if (completionResult.isComplete && !completionResult.promiseMatched) {
|
|
463
477
|
logger.warning(step.name, `Completion signaled but promise mismatch: got '${completionResult.promiseValue}', expected '${completionPromise}'`);
|
|
464
478
|
console.warning(`Promise mismatch: got '${completionResult.promiseValue}', expected '${completionPromise}'`);
|
|
465
479
|
}
|
|
466
|
-
const newState = updateRalphIteration(progress.workflowId, step.name,
|
|
480
|
+
const newState = updateRalphIteration(progress.workflowId, step.name, ralphOutputDir);
|
|
467
481
|
if (!newState) {
|
|
468
482
|
logger.error(step.name, "Failed to update Ralph state");
|
|
469
483
|
console.error("Failed to update Ralph state");
|
|
@@ -482,7 +496,7 @@ export class WorkflowOrchestrator {
|
|
|
482
496
|
}
|
|
483
497
|
else {
|
|
484
498
|
logger.warning(step.name, `Max iterations (${maxIterations}) reached without completion`);
|
|
485
|
-
deactivateRalphState(progress.workflowId, step.name,
|
|
499
|
+
deactivateRalphState(progress.workflowId, step.name, ralphOutputDir);
|
|
486
500
|
updateStepFailed(progress, step.name, `Max iterations (${maxIterations}) reached without completion promise`);
|
|
487
501
|
console.ralphMaxIterations(step.name, maxIterations);
|
|
488
502
|
}
|
|
@@ -565,7 +579,12 @@ export class WorkflowOrchestrator {
|
|
|
565
579
|
// --- Process human input ---
|
|
566
580
|
export function processHumanInput(workflowId, response, repoRoot) {
|
|
567
581
|
const root = repoRoot ?? process.cwd();
|
|
568
|
-
const
|
|
582
|
+
const humanOutputDir = findOutputDir(workflowId, root);
|
|
583
|
+
if (!humanOutputDir) {
|
|
584
|
+
process.stdout.write(`Workflow not found: ${workflowId}\n`);
|
|
585
|
+
return false;
|
|
586
|
+
}
|
|
587
|
+
const progress = loadProgress(workflowId, humanOutputDir);
|
|
569
588
|
if (!progress) {
|
|
570
589
|
process.stdout.write(`Workflow not found: ${workflowId}\n`);
|
|
571
590
|
return false;
|
|
@@ -580,7 +599,7 @@ export function processHumanInput(workflowId, response, repoRoot) {
|
|
|
580
599
|
}
|
|
581
600
|
progress.currentStep.humanInput = response;
|
|
582
601
|
progress.status = WORKFLOW_STATUS.RUNNING;
|
|
583
|
-
saveProgress(progress,
|
|
602
|
+
saveProgress(progress, humanOutputDir);
|
|
584
603
|
process.stdout.write(`Input received. Resume workflow with: agentic-forge resume ${workflowId}\n`);
|
|
585
604
|
return true;
|
|
586
605
|
}
|