From f4b316369561dbdab8f4c1fdf5f9448ab51e0e30 Mon Sep 17 00:00:00 2001 From: Jonas Vanderhaegen <7755555+jonasvanderhaegen@users.noreply.github.com> Date: Sun, 12 Apr 2026 21:51:03 +0200 Subject: [PATCH] fix: pass globalSearchPath to all discoverWorkflowsWithConfig callers The command handler and web UI API endpoint call discoverWorkflowsWithConfig without globalSearchPath, making workflows in ~/.archon/.archon/workflows/ invisible to webhook commands and the web UI. Fix: pass { globalSearchPath: getArchonHome() } to: - command-handler.ts: list, reload, run (3 calls) - api.ts: GET /api/workflows (1 call) The CLI and orchestrator already pass this correctly. --- packages/core/src/handlers/command-handler.ts | 14 ++++++++++---- packages/server/src/routes/api.ts | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/core/src/handlers/command-handler.ts b/packages/core/src/handlers/command-handler.ts index 94227e54b9..66f8daa0ba 100644 --- a/packages/core/src/handlers/command-handler.ts +++ b/packages/core/src/handlers/command-handler.ts @@ -16,7 +16,7 @@ import { cleanupStaleWorktrees, getWorktreeStatusBreakdown, } from '../services/cleanup-service'; -import { getArchonWorkspacesPath } from '@archon/paths'; +import { getArchonWorkspacesPath, getArchonHome } from '@archon/paths'; import { loadConfig } from '../config/config-loader'; import { discoverWorkflowsWithConfig } from '@archon/workflows/workflow-discovery'; import { resolveWorkflowName } from '@archon/workflows/router'; @@ -563,7 +563,9 @@ async function handleWorkflowCommand( let workflowEntries: readonly WorkflowWithSource[]; let errors: readonly WorkflowLoadError[]; try { - const result = await discoverWorkflowsWithConfig(workflowCwd, loadConfig); + const result = await discoverWorkflowsWithConfig(workflowCwd, loadConfig, { + globalSearchPath: getArchonHome(), + }); workflowEntries = result.workflows; errors = result.errors; } catch (error) { @@ -609,7 +611,9 @@ async function handleWorkflowCommand( case 'reload': { try { const { workflows: reloadedWorkflows, errors: reloadErrors } = - await discoverWorkflowsWithConfig(workflowCwd, loadConfig); + await discoverWorkflowsWithConfig(workflowCwd, loadConfig, { + globalSearchPath: getArchonHome(), + }); let msg = `Discovered ${String(reloadedWorkflows.length)} workflow(s).`; if (reloadErrors.length > 0) { msg += `\n\n**${String(reloadErrors.length)} failed to load:**\n`; @@ -804,7 +808,9 @@ async function handleWorkflowCommand( let workflowEntries: readonly WorkflowWithSource[]; let loadErrors: readonly WorkflowLoadError[]; try { - const result = await discoverWorkflowsWithConfig(workflowCwd, loadConfig); + const result = await discoverWorkflowsWithConfig(workflowCwd, loadConfig, { + globalSearchPath: getArchonHome(), + }); workflowEntries = result.workflows; loadErrors = result.errors; } catch (error) { diff --git a/packages/server/src/routes/api.ts b/packages/server/src/routes/api.ts index ed267c1d41..81d25f0e69 100644 --- a/packages/server/src/routes/api.ts +++ b/packages/server/src/routes/api.ts @@ -1767,7 +1767,9 @@ export function registerApiRoutes( return c.json({ workflows: [] }); } - const result = await discoverWorkflowsWithConfig(workingDir, loadConfig); + const result = await discoverWorkflowsWithConfig(workingDir, loadConfig, { + globalSearchPath: getArchonHome(), + }); return c.json({ workflows: result.workflows.map(ws => ({ workflow: ws.workflow, source: ws.source })), errors: result.errors.length > 0 ? result.errors : undefined,