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.
Files changed (62) hide show
  1. package/README.md +20 -110
  2. package/dist/authoring/.claude/skills/workflow-builder/SKILL.md +2 -2
  3. package/dist/authoring/.claude/skills/workflow-builder/references/REFERENCE.md +16 -14
  4. package/dist/authoring/.claude/skills/workflow-builder/references/workflow-example.yaml +14 -14
  5. package/dist/checkpoints/manager.d.ts +4 -4
  6. package/dist/checkpoints/manager.js +9 -10
  7. package/dist/checkpoints/manager.js.map +1 -1
  8. package/dist/claude/.claude/skills/orchestrate/SKILL.md +2 -2
  9. package/dist/cli.js +31 -5
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/config-cmd.d.ts +1 -1
  12. package/dist/commands/config-cmd.js +2 -2
  13. package/dist/commands/config-cmd.js.map +1 -1
  14. package/dist/commands/index.d.ts +1 -0
  15. package/dist/commands/index.js +1 -0
  16. package/dist/commands/index.js.map +1 -1
  17. package/dist/commands/init.d.ts +8 -2
  18. package/dist/commands/init.js +64 -30
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/paths.d.ts +2 -0
  21. package/dist/commands/paths.js +36 -0
  22. package/dist/commands/paths.js.map +1 -0
  23. package/dist/commands/resume.js +8 -2
  24. package/dist/commands/resume.js.map +1 -1
  25. package/dist/commands/run.d.ts +1 -0
  26. package/dist/commands/run.js +3 -8
  27. package/dist/commands/run.js.map +1 -1
  28. package/dist/commands/status.js +83 -22
  29. package/dist/commands/status.js.map +1 -1
  30. package/dist/config.d.ts +19 -2
  31. package/dist/config.js +79 -15
  32. package/dist/config.js.map +1 -1
  33. package/dist/executor.d.ts +2 -1
  34. package/dist/executor.js +19 -9
  35. package/dist/executor.js.map +1 -1
  36. package/dist/logging/logger.d.ts +3 -3
  37. package/dist/logging/logger.js +6 -8
  38. package/dist/logging/logger.js.map +1 -1
  39. package/dist/orchestrator.js +35 -16
  40. package/dist/orchestrator.js.map +1 -1
  41. package/dist/paths.d.ts +64 -0
  42. package/dist/paths.js +167 -0
  43. package/dist/paths.js.map +1 -0
  44. package/dist/progress.d.ts +5 -5
  45. package/dist/progress.js +15 -9
  46. package/dist/progress.js.map +1 -1
  47. package/dist/ralph-loop.d.ts +6 -6
  48. package/dist/ralph-loop.js +16 -16
  49. package/dist/ralph-loop.js.map +1 -1
  50. package/dist/runner.d.ts +1 -0
  51. package/dist/runner.js +5 -1
  52. package/dist/runner.js.map +1 -1
  53. package/dist/steps/base.d.ts +1 -0
  54. package/dist/steps/base.js +1 -0
  55. package/dist/steps/base.js.map +1 -1
  56. package/dist/steps/prompt-step.js +2 -1
  57. package/dist/steps/prompt-step.js.map +1 -1
  58. package/dist/steps/ralph-loop-step.js +11 -8
  59. package/dist/steps/ralph-loop-step.js.map +1 -1
  60. package/dist/types.d.ts +2 -0
  61. package/dist/workflows/plan-build-review.yaml +6 -6
  62. 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: "agentic",
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
- const configPath = getConfigPath(repoRoot);
36
- if (existsSync(configPath)) {
37
- const content = readFileSync(configPath, "utf-8");
38
- const userConfig = JSON.parse(content);
39
- return deepMerge(getDefaultConfig(), userConfig);
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 getDefaultConfig();
71
+ return config;
42
72
  }
43
- export function saveConfig(config, repoRoot) {
44
- const configPath = getConfigPath(repoRoot);
45
- const dir = path.dirname(configPath);
46
- mkdirSync(dir, { recursive: true });
47
- writeFileSync(configPath, JSON.stringify(config, null, 2), "utf-8");
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
- export function setConfigValue(key, value, repoRoot) {
67
- const config = loadConfig(repoRoot);
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 };
@@ -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,SAAS;IAC1B,OAAO,EAAE;QACR,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,OAAO;KACd;IACD,GAAG,EAAE;QACJ,UAAU,EAAE,MAAM;QAClB,UAAU,EAAE,IAAI;QAChB,MAAM,EAAE,IAAI;KACZ;IACD,QAAQ,EAAE;QACT,KAAK,EAAE,QAAQ;QACf,QAAQ,EAAE,CAAC;QACX,cAAc,EAAE,EAAE;QAClB,aAAa,EAAE,IAAI;QACnB,cAAc,EAAE,MAAM;KACtB;IACD,SAAS,EAAE;QACV,UAAU,EAAE,CAAC;QACb,sBAAsB,EAAE,CAAC;KACzB;CACD,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,QAAiB;IAC9C,MAAM,IAAI,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC/B,OAAO,QAAQ,CAAC,cAAc,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,QAAiB;IAC3C,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAA4B,CAAC;QAClE,OAAO,SAAS,CAAC,gBAAgB,EAAE,EAAE,UAAU,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,gBAAgB,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAA+B,EAAE,QAAiB;IAC5E,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACrC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,QAAiB;IAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,KAAK,GAAY,MAAM,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QAC1B,IACC,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,QAAQ;YACzB,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACrB,IAAI,IAAK,KAAiC,EACzC,CAAC;YACF,KAAK,GAAI,KAAiC,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;aAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,KAAa,EAAE,QAAiB;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,IAAI,CAAC,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC;YACvB,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACnB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,IAAI,CAA4B,CAAC;IAClD,CAAC;IAED,IAAI,WAAW,GAAY,KAAK,CAAC;IACjC,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;QACpC,WAAW,GAAG,IAAI,CAAC;IACpB,CAAC;SAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QAC5C,WAAW,GAAG,KAAK,CAAC;IACrB,CAAC;SAAM,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;IAC9C,UAAU,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,SAAS,CACxB,IAA6B,EAC7B,QAAiC;IAEjC,MAAM,MAAM,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;IAC3B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,IACC,GAAG,IAAI,MAAM;YACb,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ;YAC/B,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI;YACpB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ;YACjC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI;YACtB,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC5B,CAAC;YACF,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CACtB,MAAM,CAAC,GAAG,CAA4B,EACtC,QAAQ,CAAC,GAAG,CAA4B,CACxC,CAAC;QACH,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,CAAC;IACF,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,GAA4B;IAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAA4B,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -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
- saveProgress(progress, this.repoRoot);
114
- const logger = new WorkflowLogger(workflowId, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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 = path.join(this.repoRoot, "agentic", "outputs", progress.workflowId);
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, this.repoRoot);
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}`);
@@ -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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"}
@@ -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, repoRoot?: 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, repoRoot?: string): LogEntry[];
27
- export declare function getLogPath(workflowId: string, repoRoot?: string): string;
26
+ export declare function readLogs(workflowId: string, outputDir: string): LogEntry[];
27
+ export declare function getLogPath(workflowId: string, outputDir: string): string;
@@ -12,10 +12,9 @@ export const LOG_LEVEL = {
12
12
  export class WorkflowLogger {
13
13
  workflowId;
14
14
  logPath;
15
- constructor(workflowId, repoRoot) {
15
+ constructor(workflowId, outputDir) {
16
16
  this.workflowId = workflowId;
17
- const root = repoRoot ?? process.cwd();
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, repoRoot) {
46
- const logPath = getLogPath(workflowId, repoRoot);
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, repoRoot) {
66
- const root = repoRoot ?? process.cwd();
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,QAAiB;QAChD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,IAAI,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QAChF,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,GAAG,CACF,KAAe,EACf,IAAY,EACZ,OAAe,EACf,OAAwC;QAExC,MAAM,KAAK,GAAa;YACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,KAAK;YACL,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,OAAO,IAAI,IAAI;SACxB,CAAC;QACF,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,OAAe,EAAE,OAAiC;QACxE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,IAAY,EAAE,OAAe,EAAE,OAAiC;QACrE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,OAAe,EAAE,OAAiC;QACvE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IAC7D,CAAC;IAED,IAAI,CAAC,IAAY,EAAE,OAAe,EAAE,OAAiC;QACpE,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,CAAC;IACjE,CAAC;CACD;AAED,4BAA4B;AAE5B,MAAM,UAAU,QAAQ,CAAC,UAAkB,EAAE,QAAiB;IAC7D,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAe,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACJ,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAa,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACR,2BAA2B;YAC5B,CAAC;QACF,CAAC;IACF,CAAC;IACD,OAAO,OAAO,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,UAAkB,EAAE,QAAiB;IAC/D,MAAM,IAAI,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logging/logger.ts"],"names":[],"mappings":"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"}
@@ -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 logger = new WorkflowLogger(progress.workflowId, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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
- saveProgress(progress, this.repoRoot);
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(wt.path, "agentic", "outputs", progress.workflowId, "progress.json"),
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
- const wtLogger = new WorkflowLogger(parentProgress.workflowId, worktree.path);
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, parentProgress, parentProgress.variables, wtLogger, console);
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 existingState = loadRalphState(progress.workflowId, step.name, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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, this.repoRoot);
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 progress = loadProgress(workflowId, root);
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, root);
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
  }