@elizaos/plugin-agent-orchestrator 0.3.13 → 0.3.15
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/dist/actions/coding-task-helpers.d.ts.map +1 -1
- package/dist/api/agent-routes.d.ts.map +1 -1
- package/dist/index.js +204 -8
- package/dist/index.js.map +5 -5
- package/dist/services/workspace-service.d.ts +25 -0
- package/dist/services/workspace-service.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +3 -2
- package/scripts/ensure-node-pty.mjs +100 -0
package/dist/index.js.map
CHANGED
|
@@ -27,16 +27,16 @@
|
|
|
27
27
|
"/**\n * Debug PTY Capture — optional session recording for offline analysis.\n *\n * Activated by setting `PARALLAX_DEBUG_CAPTURE=1`. When enabled, all PTY\n * output and stdin are recorded per-session using `pty-state-capture`.\n * Capture files persist in `.parallax/pty-captures/<sessionId>/` after\n * the agent session is killed, enabling post-mortem analysis of state\n * transitions, stall classifications, and coordinator timing.\n *\n * The `pty-state-capture` package is dynamically imported — if not\n * installed, capture is silently disabled. This means it can stay out\n * of production dependencies entirely.\n *\n * @module services/debug-capture\n */\n\nimport { logger } from \"@elizaos/core\";\n\n/** Re-export the types we use so callers don't need to import pty-state-capture directly. */\ninterface CaptureManagerLike {\n openSession(\n sessionId: string,\n overrides?: { source?: string },\n ): Promise<unknown>;\n feed(\n sessionId: string,\n chunk: string,\n direction?: \"stdout\" | \"stderr\" | \"stdin\",\n ): Promise<unknown>;\n lifecycle(\n sessionId: string,\n event: string,\n detail?: string,\n ): Promise<void>;\n snapshot(sessionId: string): unknown | null;\n}\n\nlet captureManager: CaptureManagerLike | null = null;\nlet initAttempted = false;\n\n/**\n * Returns true if debug capture is enabled via environment variable.\n */\nexport function isDebugCaptureEnabled(): boolean {\n return process.env.PARALLAX_DEBUG_CAPTURE === \"1\";\n}\n\n/**\n * Lazily initialize the capture manager. Returns null if:\n * - PARALLAX_DEBUG_CAPTURE is not set to \"1\"\n * - pty-state-capture is not installed\n * - Initialization fails for any reason\n */\nasync function ensureCaptureManager(): Promise<CaptureManagerLike | null> {\n if (captureManager) return captureManager;\n if (initAttempted) return null;\n initAttempted = true;\n\n if (!isDebugCaptureEnabled()) return null;\n\n try {\n const mod = await import(\"pty-state-capture\");\n const { PTYStateCaptureManager } = mod;\n captureManager = new PTYStateCaptureManager({\n outputRootDir: \".parallax/pty-captures\",\n defaultRows: 80,\n defaultCols: 220,\n });\n logger.info(\"[debug-capture] PTY state capture enabled — writing to .parallax/pty-captures/\");\n return captureManager;\n } catch {\n logger.debug(\"[debug-capture] pty-state-capture not available — capture disabled\");\n return null;\n }\n}\n\n/**\n * Open a capture session for a PTY session. Call this when spawning.\n */\nexport async function captureSessionOpen(\n sessionId: string,\n agentType: string,\n): Promise<void> {\n const mgr = await ensureCaptureManager();\n if (!mgr) return;\n try {\n await mgr.openSession(sessionId, { source: agentType });\n } catch (err) {\n logger.debug(`[debug-capture] Failed to open session ${sessionId}: ${err}`);\n }\n}\n\n/**\n * Feed PTY output data to the capture. Call this on every data chunk.\n */\nexport async function captureFeed(\n sessionId: string,\n chunk: string,\n direction: \"stdout\" | \"stderr\" | \"stdin\" = \"stdout\",\n): Promise<void> {\n if (!captureManager) return;\n try {\n await captureManager.feed(sessionId, chunk, direction);\n } catch (err) {\n logger.debug(`[debug-capture] Feed error for ${sessionId}: ${err}`);\n }\n}\n\n/**\n * Record a lifecycle event (session_ready, session_stopped, etc.).\n */\nexport async function captureLifecycle(\n sessionId: string,\n event: \"session_started\" | \"session_ready\" | \"session_stopped\" | \"session_error\",\n detail?: string,\n): Promise<void> {\n if (!captureManager) return;\n try {\n await captureManager.lifecycle(sessionId, event, detail);\n } catch (err) {\n logger.debug(`[debug-capture] Lifecycle error for ${sessionId}: ${err}`);\n }\n}\n\n/**\n * Get a snapshot of a capture session's current state.\n */\nexport function captureSnapshot(sessionId: string): unknown | null {\n if (!captureManager) return null;\n try {\n return captureManager.snapshot(sessionId);\n } catch (err) {\n logger.debug(`[debug-capture] Snapshot error for ${sessionId}: ${err}`);\n return null;\n }\n}\n\n/** @internal Reset module state for testing only. */\nexport function _resetForTesting(): void {\n captureManager = null;\n initAttempted = false;\n}\n",
|
|
28
28
|
"/**\n * Handler logic for the START_CODING_TASK action.\n *\n * - handleMultiAgent() -- Multi-agent mode (pipe-delimited `agents` param)\n * - handleSingleAgent() -- Single-agent mode (standard handler path)\n *\n * @module actions/coding-task-handlers\n */\n\nimport {\n type ActionResult,\n type HandlerCallback,\n type IAgentRuntime,\n logger,\n type Memory,\n ModelType,\n type State,\n} from \"@elizaos/core\";\nimport type { AgentCredentials, ApprovalPreset } from \"coding-agent-adapters\";\nimport type { PTYService } from \"../services/pty-service.js\";\nimport { getCoordinator } from \"../services/pty-service.js\";\nimport {\n type CodingAgentType,\n isPiAgentType,\n normalizeAgentType,\n type SessionInfo,\n toPiCommand,\n} from \"../services/pty-types.js\";\nimport type { CodingWorkspaceService } from \"../services/workspace-service.js\";\nimport type { AgentSelectionStrategy } from \"../services/agent-selection.js\";\nimport { withTrajectoryContext } from \"../services/trajectory-context.js\";\nimport {\n formatPastExperience,\n queryPastExperience,\n} from \"../services/trajectory-feedback.js\";\nimport {\n createScratchDir,\n generateLabel,\n registerSessionEvents,\n} from \"./coding-task-helpers.js\";\n\n/** Maximum number of agents that can be spawned in a single multi-agent call */\nconst MAX_CONCURRENT_AGENTS = 8;\n\n/** Known agent type prefixes used in \"agentType:task\" spec format. */\nconst KNOWN_AGENT_PREFIXES = [\n \"claude\", \"claude-code\", \"claudecode\", \"codex\", \"openai\",\n \"gemini\", \"google\", \"aider\", \"pi\", \"pi-ai\", \"piai\",\n \"pi-coding-agent\", \"picodingagent\", \"shell\", \"bash\",\n] as const;\n\n/**\n * Strip an agent-type prefix from a spec string (e.g. \"claude:Fix the bug\" → \"Fix the bug\").\n * Returns the original string if no known prefix is found.\n */\nfunction stripAgentPrefix(spec: string): string {\n const colonIdx = spec.indexOf(\":\");\n if (colonIdx <= 0 || colonIdx >= 20) return spec;\n const prefix = spec.slice(0, colonIdx).trim().toLowerCase();\n if ((KNOWN_AGENT_PREFIXES as readonly string[]).includes(prefix)) {\n return spec.slice(colonIdx + 1).trim();\n }\n return spec;\n}\n\n/**\n * Build CLAUDE.md instructions that tell a swarm agent how to coordinate.\n * Each agent gets awareness of its role within the swarm and instructions\n * to surface design decisions explicitly so the orchestrator can share them.\n */\nfunction buildSwarmMemoryInstructions(\n agentLabel: string,\n agentTask: string,\n allSubtasks: string[],\n agentIndex: number,\n): string {\n const siblingTasks = allSubtasks\n .filter((_, i) => i !== agentIndex)\n .map((t, i) => ` ${i + 1}. ${t}`)\n .join(\"\\n\");\n\n return (\n `# Swarm Coordination\\n\\n` +\n `You are agent \"${agentLabel}\" in a multi-agent swarm of ${allSubtasks.length} agents.\\n` +\n `Your task: ${agentTask}\\n\\n` +\n `Other agents are working on:\\n${siblingTasks}\\n\\n` +\n `## Coordination Rules\\n\\n` +\n `- **Follow the Shared Context exactly.** The planning brief above contains ` +\n `concrete decisions (names, file paths, APIs, conventions). Use them as-is.\\n` +\n `- **Surface design decisions.** If you need to make a creative or architectural ` +\n `choice not covered by the Shared Context (naming something, choosing a library, ` +\n `designing an interface, picking an approach), state your decision clearly in your ` +\n `output so the orchestrator can share it with sibling agents. Write it as:\\n` +\n ` \"DECISION: [brief description of what you decided and why]\"\\n` +\n `- **Don't contradict sibling work.** If the orchestrator tells you about decisions ` +\n `other agents have made, align with them.\\n` +\n `- **Ask when uncertain.** If your task depends on another agent's output and you ` +\n `don't have enough context, ask rather than guessing.\\n`\n );\n}\n\n/**\n * Generate a shared context brief for a swarm of agents.\n * The LLM produces shared guidance (style, conventions, constraints) from\n * the user's request and subtask list. Task-type agnostic — works for coding,\n * research, writing, or any multi-agent workflow.\n */\nasync function generateSwarmContext(\n runtime: IAgentRuntime,\n subtasks: string[],\n userRequest: string,\n): Promise<string> {\n const taskList = subtasks\n .map((t, i) => ` ${i + 1}. ${t}`)\n .join(\"\\n\");\n\n const prompt =\n `You are an AI orchestrator about to launch ${subtasks.length} parallel agents. ` +\n `Before they start, produce a brief shared context document so all agents stay aligned.\\n\\n` +\n `User's request: \"${userRequest}\"\\n\\n` +\n `Subtasks being assigned:\\n${taskList}\\n\\n` +\n `Generate a concise shared context brief (3-10 bullet points) covering:\\n` +\n `- Project intent and overall goal\\n` +\n `- Key constraints or preferences from the user's request\\n` +\n `- Conventions all agents should follow (naming, style, patterns, tone)\\n` +\n `- How subtasks relate to each other (dependencies, shared interfaces, etc.)\\n` +\n `- Any decisions that should be consistent across all agents\\n\\n` +\n `CRITICAL — Concrete Decisions:\\n` +\n `If any subtask involves creative choices (naming a feature, choosing an approach, ` +\n `designing an API, picking a concept), YOU must make those decisions NOW in this brief. ` +\n `Do NOT leave creative choices to individual agents — they run in parallel and will ` +\n `each make different choices, causing inconsistency.\\n` +\n `For example: if one agent builds a feature and another writes tests for it, ` +\n `decide the feature name, file paths, function signatures, and key design choices here ` +\n `so both agents use the same names and structure.\\n\\n` +\n `Only include what's relevant — skip categories that don't apply. ` +\n `Be specific and actionable, not generic. Be as detailed as the task requires — ` +\n `a trivial task needs a few bullets, a complex task deserves a thorough roadmap.\\n\\n` +\n `Output ONLY the bullet points, no preamble.`;\n\n try {\n const result = await withTrajectoryContext(\n runtime,\n { source: \"orchestrator\", decisionType: \"swarm-context-generation\" },\n () =>\n runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n temperature: 0.3,\n }),\n );\n return result?.trim() || \"\";\n } catch (err) {\n logger.warn(`Swarm context generation failed: ${err}`);\n return \"\";\n }\n}\n\n/** Shared context passed to both multi-agent and single-agent handlers */\nexport interface CodingTaskContext {\n runtime: IAgentRuntime;\n ptyService: PTYService;\n wsService: CodingWorkspaceService | undefined;\n credentials: AgentCredentials;\n customCredentials: Record<string, string> | undefined;\n callback: HandlerCallback | undefined;\n message: Memory;\n state: State | undefined;\n repo: string | undefined;\n defaultAgentType: CodingAgentType;\n rawAgentType: string;\n agentSelectionStrategy: AgentSelectionStrategy;\n memoryContent: string | undefined;\n approvalPreset: string | undefined;\n explicitLabel: string | undefined;\n}\n\n/**\n * Multi-agent mode handler.\n *\n * Parses pipe-delimited agent specs and spawns each agent in its own\n * workspace clone (or scratch directory).\n */\nexport async function handleMultiAgent(\n ctx: CodingTaskContext,\n agentsParam: string,\n): Promise<ActionResult | undefined> {\n const {\n runtime,\n ptyService,\n wsService,\n credentials,\n customCredentials,\n callback,\n message,\n state,\n repo,\n defaultAgentType,\n rawAgentType,\n memoryContent,\n approvalPreset,\n explicitLabel,\n } = ctx;\n\n // Parse pipe-delimited agent specs: \"task1 | task2 | agentType:task3\"\n const agentSpecs = agentsParam\n .split(\"|\")\n .map((s) => s.trim())\n .filter(Boolean);\n\n if (agentSpecs.length === 0) {\n if (callback) {\n await callback({\n text: \"No agent tasks provided in agents parameter.\",\n });\n }\n return { success: false, error: \"EMPTY_AGENTS_PARAM\" };\n }\n\n // Cap multi-agent count to the concurrency limit\n if (agentSpecs.length > MAX_CONCURRENT_AGENTS) {\n if (callback) {\n await callback({\n text: `Too many agents requested (${agentSpecs.length}). Maximum is ${MAX_CONCURRENT_AGENTS}.`,\n });\n }\n return { success: false, error: \"TOO_MANY_AGENTS\" };\n }\n\n if (repo && !wsService) {\n if (callback) {\n await callback({\n text: \"Workspace Service is not available. Cannot clone repository.\",\n });\n }\n return { success: false, error: \"WORKSPACE_SERVICE_UNAVAILABLE\" };\n }\n\n if (callback) {\n await callback({\n text: `Launching ${agentSpecs.length} agents${repo ? ` on ${repo}` : \"\"}...`,\n });\n }\n\n // Planning phase: generate shared context brief for multi-agent coordination.\n // Strip agent-type prefixes from specs to get clean subtask descriptions.\n const cleanSubtasks = agentSpecs.map(stripAgentPrefix);\n const userRequest = (message.content as { text?: string })?.text ?? agentsParam;\n const swarmContext = agentSpecs.length > 1\n ? await generateSwarmContext(runtime, cleanSubtasks, userRequest)\n : \"\";\n\n // Store swarm context on coordinator for use in decision prompts\n if (swarmContext) {\n const coordinator = getCoordinator(runtime);\n coordinator?.setSwarmContext(swarmContext);\n }\n\n // Query past orchestrator experience for trajectory feedback injection.\n // This feeds lessons from previous agent sessions back into new agents,\n // preventing repeated mistakes and maintaining consistency with past decisions.\n const pastExperience = await queryPastExperience(runtime, {\n taskDescription: userRequest,\n lookbackHours: 48,\n maxEntries: 8,\n repo,\n });\n const pastExperienceBlock = formatPastExperience(pastExperience);\n\n const results: Array<{\n sessionId: string;\n agentType: string;\n workdir: string;\n workspaceId?: string;\n branch?: string;\n label: string;\n status: string;\n error?: string;\n }> = [];\n\n for (const [i, spec] of agentSpecs.entries()) {\n // Parse optional \"agentType:task\" prefix.\n // In fixed mode, ignore LLM-chosen prefixes — all agents use the\n // configured default. Only ranked mode allows per-subtask overrides.\n let specAgentType = defaultAgentType;\n let specPiRequested = isPiAgentType(rawAgentType);\n let specRequestedType = rawAgentType;\n let specTask = spec;\n const colonIdx = spec.indexOf(\":\");\n if (\n ctx.agentSelectionStrategy !== \"fixed\" &&\n colonIdx > 0 &&\n colonIdx < 20\n ) {\n const prefix = spec.slice(0, colonIdx).trim().toLowerCase();\n if ((KNOWN_AGENT_PREFIXES as readonly string[]).includes(prefix)) {\n specRequestedType = prefix;\n specPiRequested = isPiAgentType(prefix);\n specAgentType = normalizeAgentType(prefix);\n specTask = spec.slice(colonIdx + 1).trim();\n }\n } else if (ctx.agentSelectionStrategy === \"fixed\" && colonIdx > 0 && colonIdx < 20) {\n // Strip the prefix from the task text but keep the default agent type\n specTask = stripAgentPrefix(spec);\n }\n\n // Generate label for this specific agent\n const specLabel = explicitLabel\n ? `${explicitLabel}-${i + 1}`\n : generateLabel(repo, specTask);\n\n try {\n // Provision workspace (each agent gets its own clone or scratch dir)\n let workdir: string;\n let workspaceId: string | undefined;\n let branch: string | undefined;\n\n if (repo && wsService) {\n const workspace = await wsService.provisionWorkspace({ repo });\n workdir = workspace.path;\n workspaceId = workspace.id;\n branch = workspace.branch;\n wsService.setLabel(workspace.id, specLabel);\n } else {\n workdir = createScratchDir();\n }\n\n // Preflight check\n if (specAgentType !== \"shell\" && specAgentType !== \"pi\") {\n const [preflight] = await ptyService.checkAvailableAgents([\n specAgentType as Exclude<CodingAgentType, \"shell\" | \"pi\">,\n ]);\n if (preflight && !preflight.installed) {\n results.push({\n sessionId: \"\",\n agentType: specAgentType,\n workdir,\n label: specLabel,\n status: \"failed\",\n error: `${preflight.adapter} CLI is not installed`,\n });\n continue;\n }\n }\n\n // Check if coordinator is active — route blocking prompts through it\n const coordinator = getCoordinator(runtime);\n\n // Spawn the agent — prepend shared context brief if available\n const taskWithContext = swarmContext\n ? `${specTask}\\n\\n--- Shared Context (from project planning) ---\\n${swarmContext}\\n--- End Shared Context ---`\n : specTask;\n const initialTask = specPiRequested ? toPiCommand(taskWithContext) : taskWithContext;\n const displayType = specPiRequested ? \"pi\" : specAgentType;\n\n // Append swarm coordination instructions to agent memory so the agent\n // knows to surface design decisions explicitly for the orchestrator.\n const swarmMemory = agentSpecs.length > 1 && swarmContext\n ? buildSwarmMemoryInstructions(specLabel, specTask, cleanSubtasks, i)\n : undefined;\n const agentMemory = [memoryContent, swarmMemory, pastExperienceBlock]\n .filter(Boolean)\n .join(\"\\n\\n\") || undefined;\n\n const session: SessionInfo = await ptyService.spawnSession({\n name: `coding-${Date.now()}-${i}`,\n agentType: specAgentType,\n workdir,\n initialTask,\n memoryContent: agentMemory,\n credentials,\n approvalPreset:\n (approvalPreset as ApprovalPreset | undefined) ??\n ptyService.defaultApprovalPreset,\n customCredentials,\n ...(coordinator ? { skipAdapterAutoResponse: true } : {}),\n metadata: {\n requestedType: specRequestedType,\n messageId: message.id,\n userId: (message as unknown as Record<string, unknown>).userId,\n workspaceId,\n label: specLabel,\n multiAgentIndex: i,\n },\n });\n\n // Register event handler\n const isScratch = !repo;\n const scratchDir = isScratch ? workdir : null;\n registerSessionEvents(\n ptyService,\n runtime,\n session.id,\n specLabel,\n scratchDir,\n callback,\n !!coordinator,\n );\n if (coordinator && specTask) {\n coordinator.registerTask(session.id, {\n agentType: specAgentType,\n label: specLabel,\n originalTask: specTask,\n workdir,\n repo,\n });\n }\n\n results.push({\n sessionId: session.id,\n agentType: displayType,\n workdir,\n workspaceId,\n branch,\n label: specLabel,\n status: session.status,\n });\n\n if (callback) {\n await callback({\n text: `[${i + 1}/${agentSpecs.length}] Spawned ${displayType} agent as \"${specLabel}\"`,\n });\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n logger.error(\n `[START_CODING_TASK] Failed to spawn agent ${i + 1}:`,\n errorMessage,\n );\n results.push({\n sessionId: \"\",\n agentType: specAgentType,\n workdir: \"\",\n label: specLabel,\n status: \"failed\",\n error: errorMessage,\n });\n }\n }\n\n // Store all sessions in state\n if (state) {\n state.codingSessions = results.filter((r) => r.sessionId);\n }\n\n const succeeded = results.filter((r) => r.sessionId);\n const failed = results.filter((r) => !r.sessionId);\n const summary = [\n `Launched ${succeeded.length}/${agentSpecs.length} agents${repo ? ` on ${repo}` : \"\"}:`,\n ...succeeded.map(\n (r) => ` - \"${r.label}\" (${r.agentType}) [session: ${r.sessionId}]`,\n ),\n ...(failed.length > 0\n ? [`Failed: ${failed.map((r) => `\"${r.label}\": ${r.error}`).join(\", \")}`]\n : []),\n ].join(\"\\n\");\n\n if (callback) {\n await callback({ text: summary });\n }\n\n return {\n success: failed.length === 0,\n text: summary,\n data: { agents: results },\n };\n}\n\n/**\n * Single-agent mode handler.\n *\n * Provisions a workspace (clone or scratch) and spawns a single coding agent.\n */\nexport async function handleSingleAgent(\n ctx: CodingTaskContext,\n task: string | undefined,\n): Promise<ActionResult | undefined> {\n logger.debug(\n `[START_CODING_TASK] handleSingleAgent called, agentType=${ctx.defaultAgentType}, task=${task ? \"yes\" : \"none\"}, repo=${ctx.repo ?? \"none\"}`,\n );\n const {\n runtime,\n ptyService,\n wsService,\n credentials,\n customCredentials,\n callback,\n message,\n state,\n repo,\n defaultAgentType: agentType,\n rawAgentType,\n memoryContent,\n approvalPreset,\n explicitLabel,\n } = ctx;\n\n // Generate or use explicit label\n const label = explicitLabel || generateLabel(repo, task);\n\n // --- Step 1: Resolve workspace directory ---\n let workdir: string;\n let workspaceId: string | undefined;\n let branch: string | undefined;\n\n if (repo) {\n if (!wsService) {\n if (callback) {\n await callback({\n text: \"Workspace Service is not available. Cannot clone repository.\",\n });\n }\n return { success: false, error: \"WORKSPACE_SERVICE_UNAVAILABLE\" };\n }\n\n try {\n if (callback) {\n await callback({ text: `Cloning ${repo}...` });\n }\n\n const workspace = await wsService.provisionWorkspace({ repo });\n workdir = workspace.path;\n workspaceId = workspace.id;\n branch = workspace.branch;\n\n wsService.setLabel(workspace.id, label);\n\n if (state) {\n state.codingWorkspace = {\n id: workspace.id,\n path: workspace.path,\n branch: workspace.branch,\n isWorktree: workspace.isWorktree,\n label,\n };\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (callback) {\n await callback({\n text: `Failed to clone repository: ${errorMessage}`,\n });\n }\n return { success: false, error: errorMessage };\n }\n } else {\n workdir = createScratchDir();\n }\n\n // --- Step 2: Spawn the agent ---\n logger.debug(\n `[START_CODING_TASK] Spawning ${agentType} agent, task: ${task ? `\"${task.slice(0, 80)}...\"` : \"(none)\"}, workdir: ${workdir}`,\n );\n try {\n if (agentType !== \"shell\" && agentType !== \"pi\") {\n const [preflight] = await ptyService.checkAvailableAgents([\n agentType as Exclude<CodingAgentType, \"shell\" | \"pi\">,\n ]);\n if (preflight && !preflight.installed) {\n logger.warn(\n `[START_CODING_TASK] ${preflight.adapter} CLI not installed`,\n );\n if (callback) {\n await callback({\n text: `${preflight.adapter} CLI is not installed.\\nInstall with: ${preflight.installCommand}\\nDocs: ${preflight.docsUrl}`,\n });\n }\n return { success: false, error: \"AGENT_NOT_INSTALLED\" };\n }\n logger.debug(\n `[START_CODING_TASK] Preflight OK: ${preflight?.adapter} installed`,\n );\n }\n\n const piRequested = isPiAgentType(rawAgentType);\n const initialTask = piRequested ? toPiCommand(task) : task;\n const displayType = piRequested ? \"pi\" : agentType;\n\n // Query past experience for trajectory feedback injection\n const pastExperience = await queryPastExperience(runtime, {\n taskDescription: task,\n lookbackHours: 48,\n maxEntries: 6,\n repo,\n });\n const pastExperienceBlock = formatPastExperience(pastExperience);\n const agentMemory = [memoryContent, pastExperienceBlock]\n .filter(Boolean)\n .join(\"\\n\\n\") || undefined;\n\n // Check if coordinator is active — route blocking prompts through it\n const coordinator = getCoordinator(runtime);\n\n logger.debug(\n `[START_CODING_TASK] Calling spawnSession (${agentType}, coordinator=${!!coordinator})`,\n );\n const session: SessionInfo = await ptyService.spawnSession({\n name: `coding-${Date.now()}`,\n agentType,\n workdir,\n initialTask,\n memoryContent: agentMemory,\n credentials,\n approvalPreset:\n (approvalPreset as ApprovalPreset | undefined) ??\n ptyService.defaultApprovalPreset,\n customCredentials,\n ...(coordinator ? { skipAdapterAutoResponse: true } : {}),\n metadata: {\n requestedType: rawAgentType,\n messageId: message.id,\n userId: (message as unknown as Record<string, unknown>).userId,\n workspaceId,\n label,\n },\n });\n logger.debug(\n `[START_CODING_TASK] Session spawned: ${session.id} (${session.status})`,\n );\n\n // Register event handler\n const isScratchWorkspace = !repo;\n const scratchDir = isScratchWorkspace ? workdir : null;\n registerSessionEvents(\n ptyService,\n runtime,\n session.id,\n label,\n scratchDir,\n callback,\n !!coordinator,\n );\n if (coordinator && task) {\n coordinator.registerTask(session.id, {\n agentType,\n label,\n originalTask: task,\n workdir,\n repo,\n });\n }\n\n if (state) {\n state.codingSession = {\n id: session.id,\n agentType: session.agentType,\n workdir: session.workdir,\n status: session.status,\n };\n }\n\n const summary = repo\n ? `Cloned ${repo} and started ${displayType} agent as \"${label}\"${task ? ` with task: \"${task}\"` : \"\"}`\n : `Started ${displayType} agent as \"${label}\" in scratch workspace${task ? ` with task: \"${task}\"` : \"\"}`;\n\n if (callback) {\n await callback({ text: `${summary}\\nSession ID: ${session.id}` });\n }\n\n return {\n success: true,\n text: summary,\n data: {\n sessionId: session.id,\n agentType: displayType,\n workdir: session.workdir,\n workspaceId,\n branch,\n label,\n status: session.status,\n },\n };\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.error(\"[START_CODING_TASK] Failed to spawn agent:\", errorMessage);\n\n if (callback) {\n await callback({\n text: `Failed to start coding agent: ${errorMessage}`,\n });\n }\n return { success: false, error: errorMessage };\n }\n}\n",
|
|
29
29
|
"/**\n * Trajectory Feedback — Past Experience Injection\n *\n * Queries the trajectory database for past orchestrator decisions and\n * formats relevant experience as agent memory context. This closes the\n * loop between trajectory *output* (logging decisions) and trajectory\n * *input* (feeding experience back to agents at spawn time).\n *\n * Inspired by \"Codified Context\" (arXiv:2602.20478) — known failure\n * modes and past decisions are pre-loaded into agent context so they\n * don't repeat mistakes or re-derive solutions.\n *\n * @module services/trajectory-feedback\n */\n\nimport { type IAgentRuntime, logger as elizaLogger } from \"@elizaos/core\";\n\n/** Timeout for trajectory DB calls to prevent blocking agent spawn. */\nconst QUERY_TIMEOUT_MS = 5000;\nconst SLOW_PATH_BUDGET_MS = 15_000;\n\nfunction withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {\n return Promise.race([\n promise,\n new Promise<T>((_, reject) =>\n setTimeout(() => reject(new Error(`Trajectory query timed out after ${ms}ms`)), ms),\n ),\n ]);\n}\n\n// ─── Types ───\n\n/** A distilled experience entry from a past trajectory. */\ninterface PastExperience {\n /** When this experience was recorded */\n timestamp: number;\n /** The orchestrator decision type (coordination, turn-complete, etc.) */\n decisionType: string;\n /** Agent label that produced this experience */\n taskLabel: string;\n /** The key insight or decision (extracted from LLM response) */\n insight: string;\n}\n\n/** Options for querying past experience. */\nexport interface TrajectoryFeedbackOptions {\n /** Maximum number of recent trajectories to scan (default: 30) */\n maxTrajectories?: number;\n /** Maximum number of experience entries to return (default: 8) */\n maxEntries?: number;\n /** Only include trajectories from the last N hours (default: 48) */\n lookbackHours?: number;\n /** Task description for relevance filtering */\n taskDescription?: string;\n /** Repository URL — only return experience from the same repo */\n repo?: string;\n}\n\n// ─── Trajectory Logger Access ───\n\n/**\n * Resolve the trajectory logger from the runtime. Returns null if\n * trajectory logging isn't available (e.g. no database).\n */\nfunction getTrajectoryLogger(runtime: IAgentRuntime): TrajectoryLoggerRef | null {\n const runtimeAny = runtime as unknown as {\n getService?: (serviceType: string) => unknown;\n getServicesByType?: (serviceType: string) => unknown[];\n };\n\n // Try getService first (direct lookup)\n if (typeof runtimeAny.getService === \"function\") {\n const svc = runtimeAny.getService(\"trajectory_logger\");\n if (svc && typeof svc === \"object\" && hasListMethod(svc)) {\n return svc as TrajectoryLoggerRef;\n }\n }\n\n // Fallback: getServicesByType\n if (typeof runtimeAny.getServicesByType === \"function\") {\n const services = runtimeAny.getServicesByType(\"trajectory_logger\");\n if (Array.isArray(services)) {\n for (const svc of services) {\n if (svc && typeof svc === \"object\" && hasListMethod(svc)) {\n return svc as TrajectoryLoggerRef;\n }\n }\n }\n }\n\n return null;\n}\n\ntype TrajectoryLoggerRef = {\n listTrajectories: (options: {\n source?: string;\n limit?: number;\n startDate?: string;\n }) => Promise<{\n trajectories: Array<{\n id: string;\n source: string;\n startTime: number;\n llmCallCount: number;\n createdAt: string;\n metadata?: Record<string, unknown>;\n }>;\n total: number;\n }>;\n getTrajectoryDetail: (id: string) => Promise<{\n trajectoryId: string;\n metadata?: Record<string, unknown>;\n steps?: Array<{\n llmCalls?: Array<{\n purpose?: string;\n userPrompt?: string;\n response?: string;\n timestamp?: number;\n }>;\n }>;\n } | null>;\n};\n\nfunction hasListMethod(obj: object): boolean {\n const candidate = obj as Record<string, unknown>;\n return (\n typeof candidate.listTrajectories === \"function\" &&\n typeof candidate.getTrajectoryDetail === \"function\"\n );\n}\n\n// ─── Experience Extraction ───\n\n/**\n * Extract key decisions and insights from an LLM response.\n * Looks for structured decision markers and significant reasoning.\n */\nfunction extractInsights(response: string, purpose: string): string[] {\n const insights: string[] = [];\n\n // Extract explicit DECISION markers\n const decisionPattern = /DECISION:\\s*(.+?)(?:\\n|$)/gi;\n let match: RegExpExecArray | null;\n while ((match = decisionPattern.exec(response)) !== null) {\n insights.push(match[1].trim());\n }\n\n // Extract keyDecision from coordination responses\n const keyDecisionPattern = /\"keyDecision\"\\s*:\\s*\"([^\"]+)\"/g;\n while ((match = keyDecisionPattern.exec(response)) !== null) {\n insights.push(match[1].trim());\n }\n\n // For turn-complete and coordination decisions, extract the reasoning\n if (\n (purpose === \"turn-complete\" || purpose === \"coordination\") &&\n insights.length === 0\n ) {\n const reasoningPattern = /\"reasoning\"\\s*:\\s*\"([^\"]{20,200})\"/;\n const reasoningMatch = response.match(reasoningPattern);\n if (reasoningMatch) {\n insights.push(reasoningMatch[1].trim());\n }\n }\n\n return insights;\n}\n\n/**\n * Check if a past experience is potentially relevant to a new task.\n * Uses simple keyword overlap — not semantic search, but fast and\n * good enough for catching repeated patterns.\n */\nfunction isRelevant(experience: PastExperience, taskDescription: string): boolean {\n if (!taskDescription) return true; // No filter = include all\n\n const taskWords = new Set(\n taskDescription\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, \" \")\n .split(/\\s+/)\n .filter((w) => w.length > 3),\n );\n\n const insightWords = experience.insight\n .toLowerCase()\n .replace(/[^a-z0-9\\s]/g, \" \")\n .split(/\\s+/)\n .filter((w) => w.length > 3);\n\n // At least 2 meaningful word overlaps\n let overlap = 0;\n for (const word of insightWords) {\n if (taskWords.has(word)) overlap++;\n if (overlap >= 2) return true;\n }\n\n return false;\n}\n\n// ─── Main Query ───\n\n/**\n * Query the trajectory database for past orchestrator decisions and\n * return distilled experience entries relevant to the current task.\n */\nexport async function queryPastExperience(\n runtime: IAgentRuntime,\n options: TrajectoryFeedbackOptions = {},\n): Promise<PastExperience[]> {\n const {\n maxTrajectories = 30,\n maxEntries = 8,\n lookbackHours = 48,\n taskDescription,\n repo,\n } = options;\n\n const logger = getTrajectoryLogger(runtime);\n if (!logger) return [];\n\n const startDate = new Date(\n Date.now() - lookbackHours * 60 * 60 * 1000,\n ).toISOString();\n\n try {\n // Fetch recent orchestrator trajectories\n const result = await withTimeout(logger.listTrajectories({\n source: \"orchestrator\",\n limit: maxTrajectories,\n startDate,\n }), QUERY_TIMEOUT_MS);\n\n if (!result.trajectories || result.trajectories.length === 0) return [];\n\n const experiences: PastExperience[] = [];\n const slowPathDeadline = Date.now() + SLOW_PATH_BUDGET_MS;\n\n // Scan each trajectory for insights. Prefer pre-extracted insights from\n // metadata (populated at write time by milaidy's trajectory-persistence)\n // to avoid loading full trajectory details with their large prompt/response\n // payloads. Fall back to getTrajectoryDetail for older trajectories that\n // predate the metadata insight extraction.\n const maxScans = Math.min(result.trajectories.length, maxTrajectories);\n for (let scanIdx = 0; scanIdx < maxScans; scanIdx++) {\n const summary = result.trajectories[scanIdx];\n\n const metadata = summary.metadata as\n | {\n orchestrator?: {\n decisionType?: string;\n taskLabel?: string;\n repo?: string;\n };\n insights?: unknown;\n }\n | undefined;\n const metadataInsights = Array.isArray(metadata?.insights)\n ? metadata.insights\n .filter(\n (value): value is string =>\n typeof value === \"string\" && value.trim().length > 0,\n )\n .slice(0, 50)\n : [];\n const decisionType =\n metadata?.orchestrator?.decisionType ?? \"unknown\";\n const taskLabel = metadata?.orchestrator?.taskLabel ?? \"\";\n const trajectoryRepo = metadata?.orchestrator?.repo;\n\n // Filter by repo: if a repo is specified, only include trajectories\n // from the same repo. This ensures agents working on repo A don't get\n // decisions made for repo B.\n if (repo && (!trajectoryRepo || trajectoryRepo !== repo)) continue;\n\n // Fast path: use pre-extracted insights from metadata (no full detail load)\n if (metadataInsights.length > 0) {\n elizaLogger.debug(\n `[trajectory-feedback] Fast path: ${metadataInsights.length} insight(s) from metadata for ${summary.id}`,\n );\n for (const insight of metadataInsights) {\n experiences.push({\n timestamp: summary.startTime,\n decisionType,\n taskLabel,\n insight,\n });\n }\n continue;\n }\n\n // Slow path (fallback): load full detail for pre-extraction trajectories\n if (Date.now() > slowPathDeadline) {\n elizaLogger.debug(\n `[trajectory-feedback] Slow path budget exhausted; stopping detail loads`,\n );\n break;\n }\n elizaLogger.debug(\n `[trajectory-feedback] Slow path: loading full detail for ${summary.id} (no metadata insights)`,\n );\n const detail = await withTimeout(\n logger.getTrajectoryDetail(summary.id),\n QUERY_TIMEOUT_MS,\n ).catch(() => null);\n if (!detail?.steps) continue;\n\n for (const step of detail.steps) {\n if (!step.llmCalls) continue;\n\n for (const call of step.llmCalls) {\n if (!call.response) continue;\n\n const insights = extractInsights(\n call.response,\n call.purpose ?? decisionType,\n );\n\n for (const insight of insights) {\n experiences.push({\n timestamp: call.timestamp ?? summary.startTime,\n decisionType: call.purpose ?? decisionType,\n taskLabel,\n insight,\n });\n }\n }\n }\n }\n\n // Filter by relevance if task description provided\n let filtered = taskDescription\n ? experiences.filter((e) => isRelevant(e, taskDescription))\n : experiences;\n\n // If relevance filtering removed everything, fall back to all experiences\n if (filtered.length === 0 && experiences.length > 0) {\n filtered = experiences;\n }\n\n // Deduplicate by insight text (keep most recent)\n const seen = new Map<string, PastExperience>();\n for (const exp of filtered) {\n const key = exp.insight.toLowerCase();\n const existing = seen.get(key);\n if (!existing || exp.timestamp > existing.timestamp) {\n seen.set(key, exp);\n }\n }\n\n // Return most recent entries, capped\n return Array.from(seen.values())\n .sort((a, b) => b.timestamp - a.timestamp)\n .slice(0, maxEntries);\n } catch (err) {\n // Non-critical — log and return empty\n elizaLogger.error(`[trajectory-feedback] Failed to query past experience: ${err}`);\n return [];\n }\n}\n\n// ─── Formatting ───\n\n/**\n * Format past experience entries as a markdown section suitable for\n * injection into agent memory (CLAUDE.md / GEMINI.md).\n *\n * Returns empty string if no relevant experience is found.\n */\nexport function formatPastExperience(experiences: PastExperience[]): string {\n if (experiences.length === 0) return \"\";\n\n const lines = experiences.map((e) => {\n const age = formatAge(e.timestamp);\n const label = e.taskLabel ? ` [${e.taskLabel}]` : \"\";\n return `- ${e.insight}${label} (${age})`;\n });\n\n return (\n `# Past Experience\\n\\n` +\n `The following decisions and insights were captured from recent agent sessions. ` +\n `Use them to avoid repeating mistakes and to stay consistent with established patterns.\\n\\n` +\n `${lines.join(\"\\n\")}\\n`\n );\n}\n\n/** Format a timestamp as a human-readable relative age (e.g. \"2h ago\", \"1d ago\"). */\nfunction formatAge(timestamp: number): string {\n const diffMs = Date.now() - timestamp;\n const hours = Math.floor(diffMs / (1000 * 60 * 60));\n if (hours < 1) return \"just now\";\n if (hours < 24) return `${hours}h ago`;\n const days = Math.floor(hours / 24);\n return `${days}d ago`;\n}\n",
|
|
30
|
-
"/**\n * Helper functions for the START_CODING_TASK action.\n *\n * - createScratchDir() -- Creates a scratch sandbox directory for non-repo tasks\n * - generateLabel() -- Generate a short semantic label from repo URL and/or task description\n * - registerSessionEvents() -- Register lifecycle event handlers for a spawned session\n *\n * @module actions/coding-task-helpers\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport {\n type HandlerCallback,\n type IAgentRuntime,\n logger,\n} from \"@elizaos/core\";\nimport type { PTYService } from \"../services/pty-service.js\";\nimport type { CodingWorkspaceService } from \"../services/workspace-service.js\";\n\n/** Create a scratch sandbox directory for non-repo tasks */\nexport function createScratchDir(): string {\n const baseDir = path.join(os.homedir(), \".milady\", \"workspaces\");\n const scratchId = randomUUID();\n const scratchDir = path.join(baseDir, scratchId);\n fs.mkdirSync(scratchDir, { recursive: true });\n return scratchDir;\n}\n\n/**\n * Generate a short semantic label from repo URL and/or task description.\n * e.g. \"git-workspace-service-testbed/hello-mima\" or \"scratch/react-research\"\n */\nexport function generateLabel(\n repo: string | undefined,\n task: string | undefined,\n): string {\n const parts: string[] = [];\n\n if (repo) {\n // Extract repo name from URL: \"https://github.com/owner/my-repo.git\" -> \"my-repo\"\n const match = repo.match(/\\/([^/]+?)(?:\\.git)?$/);\n parts.push(match ? match[1] : \"repo\");\n } else {\n parts.push(\"scratch\");\n }\n\n if (task) {\n // Extract a slug from the first few meaningful words of the task\n const slug = task\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, \"\")\n .split(/\\s+/)\n .filter(\n (w) =>\n w.length > 2 &&\n ![\"the\", \"and\", \"for\", \"with\", \"that\", \"this\", \"from\"].includes(w),\n )\n .slice(0, 3)\n .join(\"-\");\n if (slug) parts.push(slug);\n }\n\n return parts.join(\"/\");\n}\n\n/**\n * Register lifecycle event handlers for a spawned session.\n *\n * When `coordinatorActive` is true the SwarmCoordinator owns chat messaging\n * and session lifecycle for blocked / task_complete / error events.\n * This listener still handles scratch-dir cleanup regardless.\n */\nexport function registerSessionEvents(\n ptyService: PTYService,\n runtime: IAgentRuntime,\n sessionId: string,\n label: string,\n scratchDir: string | null,\n callback?: HandlerCallback,\n coordinatorActive = false,\n): void {\n ptyService.onSessionEvent((sid, event, data) => {\n if (sid !== sessionId) return;\n\n // When coordinator is active it handles chat + lifecycle for these events\n if (!coordinatorActive) {\n if (event === \"blocked\" && callback) {\n callback({\n text: `Agent \"${label}\" is waiting for input: ${(data as { prompt?: string }).prompt ?? \"unknown prompt\"}`,\n });\n }\n if (event === \"task_complete\") {\n if (callback) {\n const response = (data as { response?: string }).response ?? \"\";\n const preview =\n response.length > 500 ? `${response.slice(0, 500)}...` : response;\n callback({\n text: preview\n ? `Agent \"${label}\" completed the task.\\n\\n${preview}`\n : `Agent \"${label}\" completed the task.`,\n });\n }\n // Force-kill the session after task completion — nothing to save.\n ptyService.stopSession(sessionId, /* force */ true).catch((err) => {\n logger.warn(\n `[START_CODING_TASK] Failed to stop session for \"${label}\" after task complete: ${err}`,\n );\n });\n }\n if (event === \"error\" && callback) {\n callback({\n text: `Agent \"${label}\" encountered an error: ${(data as { message?: string }).message ?? \"unknown error\"}`,\n });\n }\n }\n\n //
|
|
30
|
+
"/**\n * Helper functions for the START_CODING_TASK action.\n *\n * - createScratchDir() -- Creates a scratch sandbox directory for non-repo tasks\n * - generateLabel() -- Generate a short semantic label from repo URL and/or task description\n * - registerSessionEvents() -- Register lifecycle event handlers for a spawned session\n *\n * @module actions/coding-task-helpers\n */\n\nimport { randomUUID } from \"node:crypto\";\nimport * as fs from \"node:fs\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport {\n type HandlerCallback,\n type IAgentRuntime,\n logger,\n} from \"@elizaos/core\";\nimport type { PTYService } from \"../services/pty-service.js\";\nimport type { CodingWorkspaceService } from \"../services/workspace-service.js\";\n\n/** Create a scratch sandbox directory for non-repo tasks */\nexport function createScratchDir(): string {\n const baseDir = path.join(os.homedir(), \".milady\", \"workspaces\");\n const scratchId = randomUUID();\n const scratchDir = path.join(baseDir, scratchId);\n fs.mkdirSync(scratchDir, { recursive: true });\n return scratchDir;\n}\n\n/**\n * Generate a short semantic label from repo URL and/or task description.\n * e.g. \"git-workspace-service-testbed/hello-mima\" or \"scratch/react-research\"\n */\nexport function generateLabel(\n repo: string | undefined,\n task: string | undefined,\n): string {\n const parts: string[] = [];\n\n if (repo) {\n // Extract repo name from URL: \"https://github.com/owner/my-repo.git\" -> \"my-repo\"\n const match = repo.match(/\\/([^/]+?)(?:\\.git)?$/);\n parts.push(match ? match[1] : \"repo\");\n } else {\n parts.push(\"scratch\");\n }\n\n if (task) {\n // Extract a slug from the first few meaningful words of the task\n const slug = task\n .toLowerCase()\n .replace(/[^a-z0-9\\s-]/g, \"\")\n .split(/\\s+/)\n .filter(\n (w) =>\n w.length > 2 &&\n ![\"the\", \"and\", \"for\", \"with\", \"that\", \"this\", \"from\"].includes(w),\n )\n .slice(0, 3)\n .join(\"-\");\n if (slug) parts.push(slug);\n }\n\n return parts.join(\"/\");\n}\n\n/**\n * Register lifecycle event handlers for a spawned session.\n *\n * When `coordinatorActive` is true the SwarmCoordinator owns chat messaging\n * and session lifecycle for blocked / task_complete / error events.\n * This listener still handles scratch-dir cleanup regardless.\n */\nexport function registerSessionEvents(\n ptyService: PTYService,\n runtime: IAgentRuntime,\n sessionId: string,\n label: string,\n scratchDir: string | null,\n callback?: HandlerCallback,\n coordinatorActive = false,\n): void {\n ptyService.onSessionEvent((sid, event, data) => {\n if (sid !== sessionId) return;\n\n // When coordinator is active it handles chat + lifecycle for these events\n if (!coordinatorActive) {\n if (event === \"blocked\" && callback) {\n callback({\n text: `Agent \"${label}\" is waiting for input: ${(data as { prompt?: string }).prompt ?? \"unknown prompt\"}`,\n });\n }\n if (event === \"task_complete\") {\n if (callback) {\n const response = (data as { response?: string }).response ?? \"\";\n const preview =\n response.length > 500 ? `${response.slice(0, 500)}...` : response;\n callback({\n text: preview\n ? `Agent \"${label}\" completed the task.\\n\\n${preview}`\n : `Agent \"${label}\" completed the task.`,\n });\n }\n // Force-kill the session after task completion — nothing to save.\n ptyService.stopSession(sessionId, /* force */ true).catch((err) => {\n logger.warn(\n `[START_CODING_TASK] Failed to stop session for \"${label}\" after task complete: ${err}`,\n );\n });\n }\n if (event === \"error\" && callback) {\n callback({\n text: `Agent \"${label}\" encountered an error: ${(data as { message?: string }).message ?? \"unknown error\"}`,\n });\n }\n }\n\n // Scratch lifecycle: register terminal scratch workspaces for retention\n // policy handling (ephemeral / pending_decision / persistent).\n if (\n (event === \"stopped\" || event === \"task_complete\" || event === \"error\") &&\n scratchDir\n ) {\n const wsService = runtime.getService(\n \"CODING_WORKSPACE_SERVICE\",\n ) as unknown as CodingWorkspaceService | undefined;\n if (wsService) {\n wsService\n .registerScratchWorkspace(\n sessionId,\n scratchDir,\n label,\n event,\n )\n .catch((err) => {\n logger.warn(\n `[START_CODING_TASK] Failed to register scratch workspace for \"${label}\": ${err}`,\n );\n });\n }\n }\n });\n}\n",
|
|
31
31
|
"/**\n * START_CODING_TASK action - Unified action to set up and launch coding agents\n *\n * Combines workspace provisioning and agent spawning into a single atomic action.\n * - If a repo URL is provided, clones it into a fresh workspace\n * - If no repo, creates a scratch sandbox directory\n * - Spawns the specified coding agent(s) in that workspace with the given task\n * - Supports multi-agent mode via pipe-delimited `agents` param\n *\n * This eliminates the need for multi-action chaining (PROVISION_WORKSPACE -> SPAWN_CODING_AGENT)\n * and ensures agents always run in an isolated directory.\n *\n * @module actions/start-coding-task\n */\n\nimport type {\n Action,\n ActionResult,\n HandlerCallback,\n HandlerOptions,\n IAgentRuntime,\n Memory,\n State,\n} from \"@elizaos/core\";\nimport type { AgentCredentials } from \"coding-agent-adapters\";\nimport type { PTYService } from \"../services/pty-service.js\";\nimport { getCoordinator } from \"../services/pty-service.js\";\nimport { normalizeAgentType } from \"../services/pty-types.js\";\nimport type { CodingWorkspaceService } from \"../services/workspace-service.js\";\nimport {\n type CodingTaskContext,\n handleMultiAgent,\n handleSingleAgent,\n} from \"./coding-task-handlers.js\";\n\nexport const startCodingTaskAction: Action = {\n name: \"START_CODING_TASK\",\n\n similes: [\n \"LAUNCH_CODING_TASK\",\n \"RUN_CODING_TASK\",\n \"START_AGENT_TASK\",\n \"SPAWN_AND_PROVISION\",\n \"CODE_THIS\",\n ],\n\n description:\n \"Start a coding task: optionally clone a repo, then spawn a coding agent (Claude Code, Codex, Gemini, Aider, Pi) \" +\n \"to work on it. If no repo is provided, the agent runs in a safe scratch directory. \" +\n \"Use this whenever the user asks to work on code, research something with an agent, or run any agent task. \" +\n \"IMPORTANT: If the user references a repository from conversation history (e.g. 'in the same repo', \" +\n \"'on that project', 'add a feature to it'), you MUST include the repo URL in the `repo` parameter. \" +\n \"If the task involves code changes to a real project but you don't know the repo URL, ASK the user for it \" +\n \"before calling this action — do not default to a scratch directory for real project work.\",\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: {\n text: \"Set up a workspace for https://github.com/acme/my-app and have Claude fix the auth bug\",\n },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'll clone the repo and spawn Claude to fix the auth bug.\",\n action: \"START_CODING_TASK\",\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: {\n text: \"Use a coding agent to research the latest React patterns\",\n },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'll spin up an agent to research that for you.\",\n action: \"START_CODING_TASK\",\n },\n },\n ],\n ],\n\n validate: async (\n runtime: IAgentRuntime,\n _message: Memory,\n ): Promise<boolean> => {\n const ptyService = runtime.getService(\"PTY_SERVICE\") as unknown as\n | PTYService\n | undefined;\n return ptyService != null;\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n options?: HandlerOptions,\n callback?: HandlerCallback,\n ): Promise<ActionResult | undefined> => {\n const ptyService = runtime.getService(\"PTY_SERVICE\") as unknown as\n | PTYService\n | undefined;\n if (!ptyService) {\n if (callback) {\n await callback({\n text: \"PTY Service is not available. Cannot start coding task.\",\n });\n }\n return { success: false, error: \"SERVICE_UNAVAILABLE\" };\n }\n\n const wsService = runtime.getService(\n \"CODING_WORKSPACE_SERVICE\",\n ) as unknown as CodingWorkspaceService | undefined;\n\n // Extract parameters\n const params = options?.parameters;\n const content = message.content as Record<string, unknown>;\n\n const explicitRawType =\n (params?.agentType as string) ?? (content.agentType as string);\n const rawAgentType =\n explicitRawType ?? (await ptyService.resolveAgentType());\n const defaultAgentType = normalizeAgentType(rawAgentType);\n const memoryContent =\n (params?.memoryContent as string) ?? (content.memoryContent as string);\n const approvalPreset =\n (params?.approvalPreset as string) ?? (content.approvalPreset as string);\n\n // Repo is optional -- extract from params, content, or text\n let repo = (params?.repo as string) ?? (content.repo as string);\n if (!repo && content.text) {\n const urlMatch = (content.text as string).match(\n /https?:\\/\\/(?:github\\.com|gitlab\\.com|bitbucket\\.org)\\/[\\w.-]+\\/[\\w.-]+(?:\\.git)?/i,\n );\n if (urlMatch) {\n repo = urlMatch[0];\n }\n }\n\n // Fallback: if no repo was explicitly provided, check the coordinator for\n // the most recently used repo. Handles \"in the same repo\" style requests.\n if (!repo) {\n const coordinator = getCoordinator(runtime);\n const lastRepo = coordinator?.getLastUsedRepo();\n if (lastRepo) {\n repo = lastRepo;\n }\n }\n\n // Build credentials (shared across all agents)\n const customCredentialKeys = runtime.getSetting(\"CUSTOM_CREDENTIAL_KEYS\") as\n | string\n | undefined;\n let customCredentials: Record<string, string> | undefined;\n if (customCredentialKeys) {\n customCredentials = {};\n for (const key of customCredentialKeys.split(\",\").map((k) => k.trim())) {\n const val = runtime.getSetting(key) as string | undefined;\n if (val) customCredentials[key] = val;\n }\n }\n\n const credentials: AgentCredentials = {\n anthropicKey: runtime.getSetting(\"ANTHROPIC_API_KEY\") as\n | string\n | undefined,\n openaiKey: runtime.getSetting(\"OPENAI_API_KEY\") as string | undefined,\n googleKey: runtime.getSetting(\"GOOGLE_GENERATIVE_AI_API_KEY\") as\n | string\n | undefined,\n githubToken: runtime.getSetting(\"GITHUB_TOKEN\") as string | undefined,\n };\n\n const explicitLabel =\n (params?.label as string) ?? (content.label as string);\n\n // Build shared context for handlers\n const ctx: CodingTaskContext = {\n runtime,\n ptyService,\n wsService,\n credentials,\n customCredentials,\n callback,\n message,\n state,\n repo,\n defaultAgentType,\n rawAgentType,\n agentSelectionStrategy: ptyService.agentSelectionStrategy,\n memoryContent,\n approvalPreset,\n explicitLabel,\n };\n\n // --- Check for multi-agent mode ---\n const agentsParam =\n (params?.agents as string) ?? (content.agents as string);\n\n if (agentsParam) {\n return handleMultiAgent(ctx, agentsParam);\n }\n\n // --- Single-agent mode ---\n const task = (params?.task as string) ?? (content.task as string);\n return handleSingleAgent(ctx, task);\n },\n\n parameters: [\n {\n name: \"repo\",\n description:\n \"Git repository URL to clone (e.g. https://github.com/owner/repo). \" +\n \"ALWAYS provide this when the user is working on a real project or references a repo from context. \" +\n \"Only omit for pure research/scratch tasks with no target repository. \" +\n \"If unsure which repo, ask the user before spawning.\",\n required: false,\n schema: { type: \"string\" as const },\n },\n {\n name: \"agentType\",\n description:\n \"Type of coding agent to spawn (default for all agents). Options: claude, codex, gemini, aider, pi, shell.\",\n required: false,\n schema: { type: \"string\" as const, default: \"claude\" },\n },\n {\n name: \"task\",\n description:\n \"The task or prompt to send to the agent once it's ready. Used for single-agent mode.\",\n required: false,\n schema: { type: \"string\" as const },\n },\n {\n name: \"agents\",\n description:\n \"Pipe-delimited list of agent tasks for multi-agent mode. Each segment is a task description. \" +\n \"Optionally prefix with agent type: 'claude:Fix auth | gemini:Write tests | codex:Update docs'. \" +\n \"Each agent gets its own workspace clone. If provided, the 'task' parameter is ignored.\",\n required: false,\n schema: { type: \"string\" as const },\n },\n {\n name: \"memoryContent\",\n description:\n \"Instructions/context to write to each agent's memory file (e.g. CLAUDE.md) before spawning.\",\n required: false,\n schema: { type: \"string\" as const },\n },\n {\n name: \"label\",\n description:\n \"Short semantic label for this workspace. In multi-agent mode, each agent gets '{label}-1', '{label}-2', etc. \" +\n \"Auto-generated from repo/task if not provided.\",\n required: false,\n schema: { type: \"string\" as const },\n },\n {\n name: \"approvalPreset\",\n description:\n \"Permission level for all agents: readonly, standard, permissive, autonomous.\",\n required: false,\n schema: {\n type: \"string\" as const,\n enum: [\"readonly\", \"standard\", \"permissive\", \"autonomous\"],\n },\n },\n ],\n};\n",
|
|
32
32
|
"/**\n * STOP_CODING_AGENT action - Stop a running coding agent session\n *\n * Terminates an active PTY session. Use when the agent is done,\n * stuck, or needs to be cancelled.\n *\n * @module actions/stop-agent\n */\n\nimport {\n type Action,\n type ActionResult,\n type HandlerCallback,\n type HandlerOptions,\n type IAgentRuntime,\n logger,\n type Memory,\n type State,\n} from \"@elizaos/core\";\nimport type { PTYService } from \"../services/pty-service.js\";\n\nexport const stopAgentAction: Action = {\n name: \"STOP_CODING_AGENT\",\n\n similes: [\n \"KILL_CODING_AGENT\",\n \"TERMINATE_AGENT\",\n \"END_CODING_SESSION\",\n \"CANCEL_AGENT\",\n ],\n\n description:\n \"Stop a running coding agent session. \" +\n \"Terminates the PTY session and cleans up resources.\",\n\n examples: [\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Stop the coding agent\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"I'll stop the coding session.\",\n action: \"STOP_CODING_AGENT\",\n },\n },\n ],\n [\n {\n name: \"{{user1}}\",\n content: { text: \"Kill the stuck agent\" },\n },\n {\n name: \"{{agentName}}\",\n content: {\n text: \"Terminating the coding agent.\",\n action: \"STOP_CODING_AGENT\",\n },\n },\n ],\n ],\n\n validate: async (\n runtime: IAgentRuntime,\n _message: Memory,\n ): Promise<boolean> => {\n const ptyService = runtime.getService(\"PTY_SERVICE\") as unknown as\n | PTYService\n | undefined;\n if (!ptyService) {\n return false;\n }\n try {\n const sessions = await Promise.race([\n ptyService.listSessions(),\n new Promise<never>((_, reject) =>\n setTimeout(() => reject(new Error(\"validate timeout\")), 2000),\n ),\n ]);\n return sessions.length > 0;\n } catch {\n return false;\n }\n },\n\n handler: async (\n runtime: IAgentRuntime,\n message: Memory,\n state?: State,\n _options?: HandlerOptions,\n callback?: HandlerCallback,\n ): Promise<ActionResult | undefined> => {\n const ptyService = runtime.getService(\"PTY_SERVICE\") as unknown as\n | PTYService\n | undefined;\n if (!ptyService) {\n if (callback) {\n await callback({\n text: \"PTY Service is not available.\",\n });\n }\n return { success: false, error: \"SERVICE_UNAVAILABLE\" };\n }\n\n const content = message.content as {\n sessionId?: string;\n all?: boolean;\n };\n\n // Stop all sessions if requested\n if (content.all) {\n const sessions = await ptyService.listSessions();\n if (sessions.length === 0) {\n if (callback) {\n await callback({\n text: \"No active coding sessions to stop.\",\n });\n }\n return { success: true, text: \"No sessions to stop\" };\n }\n\n for (const session of sessions) {\n try {\n await ptyService.stopSession(session.id);\n } catch (err) {\n logger.error(`Failed to stop session ${session.id}: ${err}`);\n }\n }\n\n // Clear state\n if (state?.codingSession) {\n delete state.codingSession;\n }\n\n if (callback) {\n await callback({\n text: `Stopped ${sessions.length} coding session(s).`,\n });\n }\n return {\n success: true,\n text: `Stopped ${sessions.length} sessions`,\n data: { stoppedCount: sessions.length },\n };\n }\n\n // Stop specific session\n let sessionId = content.sessionId;\n if (!sessionId && state?.codingSession) {\n sessionId = (state.codingSession as { id: string }).id;\n }\n\n if (!sessionId) {\n const sessions = await ptyService.listSessions();\n if (sessions.length === 0) {\n if (callback) {\n await callback({\n text: \"No active coding sessions to stop.\",\n });\n }\n return { success: true, text: \"No sessions to stop\" };\n }\n sessionId = sessions[sessions.length - 1].id;\n }\n\n const session = ptyService.getSession(sessionId);\n if (!session) {\n if (callback) {\n await callback({\n text: `Session ${sessionId} not found.`,\n });\n }\n return { success: false, error: \"SESSION_NOT_FOUND\" };\n }\n\n try {\n await ptyService.stopSession(sessionId);\n\n // Clear state if this was the current session\n if (\n state?.codingSession &&\n (state.codingSession as { id: string }).id === sessionId\n ) {\n delete state.codingSession;\n }\n\n if (callback) {\n await callback({\n text: `Stopped coding agent session ${sessionId}.`,\n });\n }\n return {\n success: true,\n text: `Stopped session ${sessionId}`,\n data: { sessionId, agentType: session.agentType },\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : String(error);\n if (callback) {\n await callback({\n text: `Failed to stop agent: ${errorMessage}`,\n });\n }\n return { success: false, error: errorMessage };\n }\n },\n\n parameters: [\n {\n name: \"sessionId\",\n description:\n \"ID of the session to stop. If not specified, stops the current session.\",\n required: false,\n schema: { type: \"string\" as const },\n },\n {\n name: \"all\",\n description: \"If true, stop all active coding sessions.\",\n required: false,\n schema: { type: \"boolean\" as const },\n },\n ],\n};\n",
|
|
33
33
|
"/**\n * Provider that injects structured action call examples into the prompt context.\n *\n * ElizaOS core only shows exampleCalls from its static action-docs registry,\n * which doesn't include custom plugin actions. This provider bridges the gap\n * by formatting our coding agent action examples in the same structured format\n * the model sees for core actions.\n *\n * @module providers/action-examples\n */\n\nimport type { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\n\ninterface ActionCallExample {\n user: string;\n actions: string[];\n params?: Record<string, Record<string, string>>;\n}\n\nconst CODING_AGENT_EXAMPLES: ActionCallExample[] = [\n {\n user: \"Can you set up a workspace for https://github.com/acme/my-app and have Claude fix the login bug?\",\n actions: [\"REPLY\", \"START_CODING_TASK\"],\n params: {\n START_CODING_TASK: {\n repo: \"https://github.com/acme/my-app\",\n agentType: \"claude\",\n task: \"Fix the login bug in src/auth.ts — users are getting 401 errors after token refresh\",\n },\n },\n },\n {\n user: \"Use a coding agent to research the latest Next.js patterns and summarize them\",\n actions: [\"REPLY\", \"START_CODING_TASK\"],\n params: {\n START_CODING_TASK: {\n agentType: \"claude\",\n task: \"Research the latest Next.js patterns (app router, server components, etc.) and write a summary in RESEARCH.md\",\n },\n },\n },\n {\n user: \"Use pi to investigate flaky tests and write findings to FLAKY_TESTS.md\",\n actions: [\"REPLY\", \"START_CODING_TASK\"],\n params: {\n START_CODING_TASK: {\n agentType: \"pi\",\n task: \"Investigate flaky tests, identify likely root causes, and write your findings to FLAKY_TESTS.md\",\n },\n },\n },\n {\n user: \"Tell the coding agent to accept those changes\",\n actions: [\"REPLY\", \"SEND_TO_CODING_AGENT\"],\n params: {\n SEND_TO_CODING_AGENT: {\n input: \"Yes, accept the changes\",\n },\n },\n },\n {\n user: \"The agent is asking me to press enter, can you handle that?\",\n actions: [\"REPLY\", \"SEND_TO_CODING_AGENT\"],\n params: {\n SEND_TO_CODING_AGENT: {\n keys: \"Enter\",\n },\n },\n },\n {\n user: \"Create a PR for what the agent did\",\n actions: [\"REPLY\", \"FINALIZE_WORKSPACE\"],\n params: {\n FINALIZE_WORKSPACE: {\n prTitle: \"Fix login bug in auth module\",\n prBody:\n \"Resolved 401 errors after token refresh by fixing the token expiry check\",\n },\n },\n },\n];\n\nfunction formatExample(ex: ActionCallExample): string {\n const actionTags = ex.actions\n .map((a) => ` <action>${a}</action>`)\n .join(\"\\n\");\n const paramBlocks = Object.entries(ex.params ?? {})\n .map(([actionName, params]) => {\n const inner = Object.entries(params)\n .map(([k, v]) => ` <${k}>${v}</${k}>`)\n .join(\"\\n\");\n return ` <${actionName}>\\n${inner}\\n </${actionName}>`;\n })\n .join(\"\\n\");\n const paramsSection = paramBlocks\n ? `\\n<params>\\n${paramBlocks}\\n</params>`\n : \"\";\n return `User: ${ex.user}\\nAssistant:\\n<actions>\\n${actionTags}\\n</actions>${paramsSection}`;\n}\n\n// Multi-agent example uses the pipe-delimited `agents` param to spawn multiple agents in one action call.\n// Each segment is a separate task. Optionally prefix with agent type: \"claude:task | gemini:task\".\n// Each agent gets its own workspace clone — they cannot see each other's work.\nconst MULTI_AGENT_EXAMPLE = `User: Spin up 3 agents on https://github.com/acme/app — one to fix auth, one to write tests, one to update docs\nAssistant:\n<actions>\n <action>REPLY</action>\n <action>START_CODING_TASK</action>\n</actions>\n<params>\n <START_CODING_TASK>\n <repo>https://github.com/acme/app</repo>\n <agents>Fix the authentication bug in src/auth.ts — users get 401 after token refresh. Your unique identifier is \"alpha\". | Write comprehensive unit tests for the auth module in src/auth.ts. Your unique identifier is \"beta\". | Update the API documentation in docs/ to reflect the new auth flow. Your unique identifier is \"gamma\".</agents>\n </START_CODING_TASK>\n</params>`;\n\nexport const codingAgentExamplesProvider: Provider = {\n name: \"CODING_AGENT_EXAMPLES\",\n description:\n \"Structured examples showing how to use coding agent actions with parameters\",\n position: -1, // Low priority — supplementary context\n\n get: async (_runtime: IAgentRuntime, _message: Memory, _state: State) => {\n const examples = CODING_AGENT_EXAMPLES.map(formatExample).join(\"\\n\\n\");\n const text = [\n \"# Coding Agent Action Call Examples\",\n \"When the user asks you to work on code, clone repos, spawn agents, or run agent tasks,\",\n \"you MUST select the appropriate actions and include parameters. Do NOT just describe\",\n \"what you would do — actually select the actions.\",\n \"\",\n \"IMPORTANT: Use START_CODING_TASK to launch coding agents. It handles workspace setup\",\n \"automatically. If a repo URL is provided, it clones it first. If no repo, the agent\",\n \"runs in a safe scratch directory. You do NOT need to call PROVISION_WORKSPACE separately.\",\n \"\",\n \"## Single Agent Examples\",\n \"\",\n examples,\n \"\",\n \"## Multi-Agent Example\",\n \"To spawn multiple agents, use the `agents` parameter with pipe-delimited (|) tasks.\",\n \"Each segment becomes a separate agent with its own workspace clone.\",\n \"You can optionally prefix each segment with an agent type: 'claude:task | gemini:task'.\",\n \"CRITICAL: Give each agent a DIFFERENT task with unique instructions, topics, file names,\",\n \"and unique identifiers so their work is clearly differentiated.\",\n \"\",\n MULTI_AGENT_EXAMPLE,\n ].join(\"\\n\");\n\n return {\n data: { codingAgentExamples: CODING_AGENT_EXAMPLES },\n values: { codingAgentExamples: text },\n text,\n };\n },\n};\n",
|
|
34
34
|
"/**\n * Provider that injects active workspace and session context into every prompt.\n *\n * Mima needs to know what workspaces exist, which agents are running, and their\n * current status — without having to call LIST_AGENTS every message. This provider\n * reads from both the workspace service and PTY service to build a live context\n * summary that's always available in the prompt.\n *\n * @module providers/active-workspace-context\n */\n\nimport type { IAgentRuntime, Memory, Provider, State } from \"@elizaos/core\";\nimport type { PTYService } from \"../services/pty-service.js\";\nimport { getCoordinator } from \"../services/pty-service.js\";\nimport type { SessionInfo } from \"../services/pty-types.js\";\nimport type {\n CodingWorkspaceService,\n WorkspaceResult,\n} from \"../services/workspace-service.js\";\n\nfunction formatStatus(status: string): string {\n switch (status) {\n case \"ready\":\n return \"idle\";\n case \"busy\":\n return \"working\";\n case \"starting\":\n return \"starting up\";\n case \"authenticating\":\n return \"authenticating\";\n default:\n return status;\n }\n}\n\nfunction formatSessionLine(session: SessionInfo): string {\n const label = (session.metadata?.label as string) || session.name;\n const status = formatStatus(session.status);\n return ` - \"${label}\" (${session.agentType}, ${status}) [session: ${session.id}]`;\n}\n\nfunction formatWorkspaceLine(\n ws: WorkspaceResult,\n sessions: SessionInfo[],\n): string {\n const label = ws.label || ws.id.slice(0, 8);\n const agents = sessions.filter((s) => s.workdir === ws.path);\n const agentSummary =\n agents.length > 0\n ? agents.map((a) => `${a.agentType}:${formatStatus(a.status)}`).join(\", \")\n : \"no agents\";\n return ` - \"${label}\" → ${ws.repo} (branch: ${ws.branch}, ${agentSummary})`;\n}\n\nexport const activeWorkspaceContextProvider: Provider = {\n name: \"ACTIVE_WORKSPACE_CONTEXT\",\n description: \"Live status of active workspaces and coding agent sessions\",\n position: 1, // Higher priority than action examples — this is live state\n\n get: async (runtime: IAgentRuntime, _message: Memory, _state: State) => {\n const ptyService = runtime.getService(\"PTY_SERVICE\") as unknown as\n | PTYService\n | undefined;\n const wsService = runtime.getService(\n \"CODING_WORKSPACE_SERVICE\",\n ) as unknown as CodingWorkspaceService | undefined;\n\n // Gather data (with fast-fail timeouts)\n let sessions: SessionInfo[] = [];\n let workspaces: WorkspaceResult[] = [];\n\n if (ptyService) {\n try {\n sessions = await Promise.race([\n ptyService.listSessions(),\n new Promise<SessionInfo[]>((resolve) =>\n setTimeout(() => resolve([]), 2000),\n ),\n ]);\n } catch {\n sessions = [];\n }\n }\n\n if (wsService) {\n workspaces = wsService.listWorkspaces();\n }\n\n // If nothing is active, return minimal context\n if (sessions.length === 0 && workspaces.length === 0) {\n const text = [\n \"# Active Workspaces & Agents\",\n \"No active workspaces or coding agent sessions.\",\n \"Use START_CODING_TASK to launch a new coding agent.\",\n ].join(\"\\n\");\n\n return {\n data: { activeWorkspaces: [], activeSessions: [] },\n values: { activeWorkspaceContext: text },\n text,\n };\n }\n\n // Build context\n const lines: string[] = [\"# Active Workspaces & Agents\"];\n\n if (workspaces.length > 0) {\n lines.push(\"\");\n lines.push(`## Workspaces (${workspaces.length})`);\n for (const ws of workspaces) {\n lines.push(formatWorkspaceLine(ws, sessions));\n }\n }\n\n // Sessions not tied to a tracked workspace (scratch dirs, orphans)\n const trackedPaths = new Set(workspaces.map((ws) => ws.path));\n const untrackedSessions = sessions.filter(\n (s) => !trackedPaths.has(s.workdir),\n );\n\n if (untrackedSessions.length > 0) {\n lines.push(\"\");\n lines.push(`## Standalone Sessions (${untrackedSessions.length})`);\n for (const session of untrackedSessions) {\n lines.push(formatSessionLine(session));\n }\n }\n\n // Add coordinator status if available\n const coordinator = getCoordinator(runtime);\n if (coordinator) {\n const pending = coordinator.getPendingConfirmations();\n const supervisionLevel = coordinator.getSupervisionLevel();\n\n if (pending.length > 0) {\n lines.push(\"\");\n lines.push(\n `## Pending Confirmations (${pending.length}) — supervision: ${supervisionLevel}`,\n );\n for (const p of pending) {\n lines.push(\n ` - \"${p.taskContext.label}\" blocked: \"${p.promptText}\" → suggested: ${p.llmDecision.action}`,\n );\n }\n } else if (supervisionLevel !== \"autonomous\") {\n lines.push(\"\");\n lines.push(`Swarm supervision: ${supervisionLevel} (no pending items)`);\n }\n }\n\n if (sessions.length > 0) {\n lines.push(\"\");\n lines.push(\n \"You can interact with agents using SEND_TO_CODING_AGENT (pass sessionId), \" +\n \"stop them with STOP_CODING_AGENT, or finalize their work with FINALIZE_WORKSPACE.\",\n );\n }\n\n const text = lines.join(\"\\n\");\n\n return {\n data: {\n activeWorkspaces: workspaces.map((ws) => ({\n id: ws.id,\n label: ws.label,\n repo: ws.repo,\n branch: ws.branch,\n path: ws.path,\n })),\n activeSessions: sessions.map((s) => ({\n id: s.id,\n label: s.metadata?.label,\n agentType: s.agentType,\n status: s.status,\n workdir: s.workdir,\n })),\n },\n values: { activeWorkspaceContext: text },\n text,\n };\n },\n};\n",
|
|
35
|
-
"/**\n * Coding Workspace Service - Manages git workspaces for coding tasks\n *\n * Delegates to:\n * - workspace-github.ts (issue management, OAuth, PAT auth)\n * - workspace-git-ops.ts (status, commit, push, PR creation)\n * - workspace-lifecycle.ts (GC, scratch dir cleanup)\n * - workspace-types.ts (shared interface definitions)\n *\n * @module services/workspace-service\n */\n\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n type CreateIssueOptions,\n CredentialService,\n GitHubPatClient,\n type IssueComment,\n type IssueInfo,\n type IssueState,\n MemoryTokenStore,\n type PullRequestInfo,\n type WorkspaceConfig,\n type WorkspaceEvent,\n WorkspaceService,\n} from \"git-workspace-service\";\n\nimport type { AuthPromptCallback } from \"./workspace-github.js\";\nimport {\n type GitHubContext,\n addComment as ghAddComment,\n addLabels as ghAddLabels,\n closeIssue as ghCloseIssue,\n createIssue as ghCreateIssue,\n getIssue as ghGetIssue,\n listComments as ghListComments,\n listIssues as ghListIssues,\n reopenIssue as ghReopenIssue,\n updateIssue as ghUpdateIssue,\n} from \"./workspace-github.js\";\n\nexport type { AuthPromptCallback } from \"./workspace-github.js\";\n\nimport {\n commit as gitCommit,\n createPR as gitCreatePR,\n getStatus as gitGetStatus,\n push as gitPush,\n} from \"./workspace-git-ops.js\";\n\nimport {\n gcOrphanedWorkspaces,\n removeScratchDir,\n} from \"./workspace-lifecycle.js\";\n\nexport type {\n CodingWorkspaceConfig,\n CommitOptions,\n PROptions,\n ProvisionWorkspaceOptions,\n PushOptions,\n WorkspaceResult,\n WorkspaceStatusResult,\n} from \"./workspace-types.js\";\n\nimport type {\n CodingWorkspaceConfig,\n CommitOptions,\n PROptions,\n ProvisionWorkspaceOptions,\n PushOptions,\n WorkspaceResult,\n WorkspaceStatusResult,\n} from \"./workspace-types.js\";\n\ntype WorkspaceEventCallback = (event: WorkspaceEvent) => void;\n\nexport class CodingWorkspaceService {\n static serviceType = \"CODING_WORKSPACE_SERVICE\";\n capabilityDescription = \"Manages git workspaces for coding tasks\";\n\n private runtime: IAgentRuntime;\n private workspaceService: WorkspaceService | null = null;\n private credentialService: CredentialService | null = null;\n private githubClient: GitHubPatClient | null = null;\n private githubAuthInProgress: Promise<GitHubPatClient> | null = null;\n private serviceConfig: CodingWorkspaceConfig;\n private workspaces: Map<string, WorkspaceResult> = new Map();\n private labels: Map<string, string> = new Map(); // label -> workspaceId\n private eventCallbacks: WorkspaceEventCallback[] = [];\n private authPromptCallback: AuthPromptCallback | null = null;\n\n constructor(runtime: IAgentRuntime, config: CodingWorkspaceConfig = {}) {\n this.runtime = runtime;\n this.serviceConfig = {\n baseDir:\n config.baseDir ?? path.join(os.homedir(), \".milady\", \"workspaces\"),\n branchPrefix: config.branchPrefix ?? \"milady\",\n debug: config.debug ?? false,\n workspaceTtlMs: config.workspaceTtlMs ?? 24 * 60 * 60 * 1000,\n };\n }\n\n static async start(runtime: IAgentRuntime): Promise<CodingWorkspaceService> {\n const config = runtime.getSetting(\"CODING_WORKSPACE_CONFIG\") as\n | CodingWorkspaceConfig\n | null\n | undefined;\n const service = new CodingWorkspaceService(runtime, config ?? {});\n await service.initialize();\n return service;\n }\n\n static async stopRuntime(runtime: IAgentRuntime): Promise<void> {\n const service = runtime.getService(\"CODING_WORKSPACE_SERVICE\") as unknown as\n | CodingWorkspaceService\n | undefined;\n if (service) {\n await service.stop();\n }\n }\n\n private async initialize(): Promise<void> {\n this.credentialService = new CredentialService({\n tokenStore: new MemoryTokenStore(),\n });\n\n this.workspaceService = new WorkspaceService({\n config: {\n baseDir: this.serviceConfig.baseDir as string,\n branchPrefix: this.serviceConfig.branchPrefix,\n },\n credentialService: this.credentialService,\n logger: this.serviceConfig.debug\n ? {\n info: (data: unknown, msg?: string) =>\n console.log(`[WorkspaceService] ${msg ?? \"\"}`, data),\n warn: (data: unknown, msg?: string) =>\n console.warn(`[WorkspaceService] ${msg ?? \"\"}`, data),\n error: (data: unknown, msg?: string) =>\n console.error(`[WorkspaceService] ${msg ?? \"\"}`, data),\n debug: (_data: unknown, msg?: string) => this.log(`${msg ?? \"\"}`),\n }\n : undefined,\n });\n\n await this.workspaceService.initialize();\n\n const githubToken = this.runtime.getSetting(\"GITHUB_TOKEN\") as\n | string\n | undefined;\n if (githubToken) {\n this.githubClient = new GitHubPatClient({ token: githubToken });\n this.log(\"GitHubPatClient initialized with PAT\");\n } else {\n this.log(\n \"GITHUB_TOKEN not set - will use OAuth device flow when GitHub access is needed\",\n );\n }\n\n this.workspaceService.onEvent((event: WorkspaceEvent) => {\n this.emitEvent(event);\n });\n\n this.log(\"CodingWorkspaceService initialized\");\n\n // Run startup GC in background (non-blocking)\n this.gcOrphanedWorkspaces().catch((err) => {\n console.warn(\"[CodingWorkspaceService] Startup GC failed:\", err);\n });\n }\n\n async stop(): Promise<void> {\n for (const [id] of this.workspaces) {\n try {\n await this.removeWorkspace(id);\n } catch (err) {\n this.log(`Error cleaning up workspace ${id}: ${err}`);\n }\n }\n this.workspaces.clear();\n this.workspaceService = null;\n this.credentialService = null;\n this.githubClient = null;\n this.log(\"CodingWorkspaceService shutdown complete\");\n }\n\n /** Provision a new workspace */\n async provisionWorkspace(\n options: ProvisionWorkspaceOptions,\n ): Promise<WorkspaceResult> {\n if (!this.workspaceService) {\n throw new Error(\"CodingWorkspaceService not initialized\");\n }\n\n // Strip trailing slashes to prevent git-workspace-service from\n // appending .git incorrectly (e.g. \"repo/\" -> \"repo/.git\")\n const repo = options.repo.replace(/\\/+$/, \"\");\n const executionId = options.execution?.id ?? `exec-${Date.now()}`;\n const taskId = options.task?.id ?? `task-${Date.now()}`;\n\n const workspaceConfig: WorkspaceConfig = {\n repo,\n strategy: options.useWorktree ? \"worktree\" : \"clone\",\n parentWorkspace: options.parentWorkspaceId,\n branchStrategy: \"feature_branch\",\n branchName: options.branchName,\n baseBranch: options.baseBranch ?? \"main\",\n execution: {\n id: executionId,\n patternName: options.execution?.patternName ?? \"milady-coding\",\n },\n task: {\n id: taskId,\n role: options.task?.role ?? \"coding-agent\",\n slug: options.task?.slug,\n },\n userCredentials: options.userCredentials\n ? {\n type: options.userCredentials.type,\n token: options.userCredentials.token ?? \"\",\n provider: \"github\",\n }\n : undefined,\n };\n\n const workspace = await this.workspaceService.provision(workspaceConfig);\n const result: WorkspaceResult = {\n id: workspace.id,\n path: workspace.path,\n branch: workspace.branch.name,\n baseBranch: workspace.branch.baseBranch,\n isWorktree: workspace.strategy === \"worktree\",\n repo: workspace.repo,\n status: workspace.status,\n };\n\n this.workspaces.set(workspace.id, result);\n this.log(`Provisioned workspace ${workspace.id}`);\n return result;\n }\n\n getWorkspace(id: string): WorkspaceResult | undefined {\n return this.workspaces.get(id);\n }\n\n listWorkspaces(): WorkspaceResult[] {\n return Array.from(this.workspaces.values());\n }\n\n /**\n * Assign a semantic label to a workspace (e.g. \"auth-bugfix\").\n * If the label already exists, it is reassigned to the new workspace.\n */\n setLabel(workspaceId: string, label: string): void {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n if (workspace.label) {\n this.labels.delete(workspace.label);\n }\n const existing = this.labels.get(label);\n if (existing && existing !== workspaceId) {\n const oldWs = this.workspaces.get(existing);\n if (oldWs) oldWs.label = undefined;\n }\n workspace.label = label;\n this.labels.set(label, workspaceId);\n this.log(`Labeled workspace ${workspaceId} as \"${label}\"`);\n }\n\n getWorkspaceByLabel(label: string): WorkspaceResult | undefined {\n const id = this.labels.get(label);\n return id ? this.workspaces.get(id) : undefined;\n }\n\n /** Resolve a workspace by label or ID. */\n resolveWorkspace(labelOrId: string): WorkspaceResult | undefined {\n return (\n this.getWorkspaceByLabel(labelOrId) ?? this.workspaces.get(labelOrId)\n );\n }\n\n // === Delegated Git Operations ===\n\n async getStatus(workspaceId: string): Promise<WorkspaceStatusResult> {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n return gitGetStatus(workspace.path);\n }\n\n async commit(workspaceId: string, options: CommitOptions): Promise<string> {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n const hash = await gitCommit(workspace.path, options, (msg) =>\n this.log(msg),\n );\n this.log(`Committed ${hash.slice(0, 8)} in workspace ${workspaceId}`);\n return hash;\n }\n\n async push(workspaceId: string, options?: PushOptions): Promise<void> {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n await gitPush(workspace.path, workspace.branch, options, (msg) =>\n this.log(msg),\n );\n this.log(`Pushed workspace ${workspaceId}`);\n }\n\n async createPR(\n workspaceId: string,\n options: PROptions,\n ): Promise<PullRequestInfo> {\n if (!this.workspaceService) {\n throw new Error(\"CodingWorkspaceService not initialized\");\n }\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n return gitCreatePR(\n this.workspaceService,\n workspace,\n workspaceId,\n options,\n (msg) => this.log(msg),\n );\n }\n\n // === Delegated GitHub / Issue Management ===\n\n private getGitHubContext(): GitHubContext {\n return {\n runtime: this.runtime,\n githubClient: this.githubClient,\n setGithubClient: (client: GitHubPatClient) => {\n this.githubClient = client;\n },\n githubAuthInProgress: this.githubAuthInProgress,\n setGithubAuthInProgress: (p: Promise<GitHubPatClient> | null) => {\n this.githubAuthInProgress = p;\n },\n authPromptCallback: this.authPromptCallback,\n log: (msg: string) => this.log(msg),\n };\n }\n\n /** Set a callback to surface OAuth auth prompts to the user. */\n setAuthPromptCallback(callback: AuthPromptCallback): void {\n this.authPromptCallback = callback;\n }\n\n async createIssue(\n repo: string,\n options: CreateIssueOptions,\n ): Promise<IssueInfo> {\n return ghCreateIssue(this.getGitHubContext(), repo, options);\n }\n\n async getIssue(repo: string, issueNumber: number): Promise<IssueInfo> {\n return ghGetIssue(this.getGitHubContext(), repo, issueNumber);\n }\n\n async listIssues(\n repo: string,\n options?: {\n state?: IssueState | \"all\";\n labels?: string[];\n assignee?: string;\n },\n ): Promise<IssueInfo[]> {\n return ghListIssues(this.getGitHubContext(), repo, options);\n }\n\n async updateIssue(\n repo: string,\n issueNumber: number,\n options: {\n title?: string;\n body?: string;\n state?: IssueState;\n labels?: string[];\n assignees?: string[];\n },\n ): Promise<IssueInfo> {\n return ghUpdateIssue(this.getGitHubContext(), repo, issueNumber, options);\n }\n\n async addComment(\n repo: string,\n issueNumber: number,\n body: string,\n ): Promise<IssueComment> {\n return ghAddComment(this.getGitHubContext(), repo, issueNumber, body);\n }\n\n async listComments(\n repo: string,\n issueNumber: number,\n ): Promise<IssueComment[]> {\n return ghListComments(this.getGitHubContext(), repo, issueNumber);\n }\n\n async closeIssue(repo: string, issueNumber: number): Promise<IssueInfo> {\n return ghCloseIssue(this.getGitHubContext(), repo, issueNumber);\n }\n\n async reopenIssue(repo: string, issueNumber: number): Promise<IssueInfo> {\n return ghReopenIssue(this.getGitHubContext(), repo, issueNumber);\n }\n\n async addLabels(\n repo: string,\n issueNumber: number,\n labels: string[],\n ): Promise<void> {\n return ghAddLabels(this.getGitHubContext(), repo, issueNumber, labels);\n }\n\n // === Workspace Lifecycle ===\n\n async removeWorkspace(workspaceId: string): Promise<void> {\n if (!this.workspaceService) {\n throw new Error(\"CodingWorkspaceService not initialized\");\n }\n await this.workspaceService.cleanup(workspaceId);\n const workspace = this.workspaces.get(workspaceId);\n if (workspace?.label) {\n this.labels.delete(workspace.label);\n }\n this.workspaces.delete(workspaceId);\n this.log(`Removed workspace ${workspaceId}`);\n }\n\n onEvent(callback: WorkspaceEventCallback): () => void {\n this.eventCallbacks.push(callback);\n return () => {\n const index = this.eventCallbacks.indexOf(callback);\n if (index !== -1) {\n this.eventCallbacks.splice(index, 1);\n }\n };\n }\n\n private emitEvent(event: WorkspaceEvent): void {\n for (const callback of this.eventCallbacks) {\n try {\n callback(event);\n } catch (err) {\n this.log(`Event callback error: ${err}`);\n }\n }\n }\n\n /** Remove a scratch directory (non-git workspace) under the workspaces base dir. */\n async removeScratchDir(dirPath: string): Promise<void> {\n return removeScratchDir(\n dirPath,\n this.serviceConfig.baseDir as string,\n (msg) => this.log(msg),\n );\n }\n\n /** GC orphaned workspace directories older than workspaceTtlMs. */\n private async gcOrphanedWorkspaces(): Promise<void> {\n return gcOrphanedWorkspaces(\n this.serviceConfig.baseDir as string,\n this.serviceConfig.workspaceTtlMs ?? 24 * 60 * 60 * 1000,\n new Set(this.workspaces.keys()),\n (msg) => this.log(msg),\n );\n }\n\n private log(message: string): void {\n if (this.serviceConfig.debug) {\n console.log(`[CodingWorkspaceService] ${message}`);\n }\n }\n}\n",
|
|
35
|
+
"/**\n * Coding Workspace Service - Manages git workspaces for coding tasks\n *\n * Delegates to:\n * - workspace-github.ts (issue management, OAuth, PAT auth)\n * - workspace-git-ops.ts (status, commit, push, PR creation)\n * - workspace-lifecycle.ts (GC, scratch dir cleanup)\n * - workspace-types.ts (shared interface definitions)\n *\n * @module services/workspace-service\n */\n\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport * as fs from \"node:fs/promises\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n type CreateIssueOptions,\n CredentialService,\n GitHubPatClient,\n type IssueComment,\n type IssueInfo,\n type IssueState,\n MemoryTokenStore,\n type PullRequestInfo,\n type WorkspaceConfig,\n type WorkspaceEvent,\n WorkspaceService,\n} from \"git-workspace-service\";\n\nimport type { AuthPromptCallback } from \"./workspace-github.js\";\nimport {\n type GitHubContext,\n addComment as ghAddComment,\n addLabels as ghAddLabels,\n closeIssue as ghCloseIssue,\n createIssue as ghCreateIssue,\n getIssue as ghGetIssue,\n listComments as ghListComments,\n listIssues as ghListIssues,\n reopenIssue as ghReopenIssue,\n updateIssue as ghUpdateIssue,\n} from \"./workspace-github.js\";\n\nexport type { AuthPromptCallback } from \"./workspace-github.js\";\n\nimport {\n commit as gitCommit,\n createPR as gitCreatePR,\n getStatus as gitGetStatus,\n push as gitPush,\n} from \"./workspace-git-ops.js\";\n\nimport {\n gcOrphanedWorkspaces,\n removeScratchDir,\n} from \"./workspace-lifecycle.js\";\n\nexport type {\n CodingWorkspaceConfig,\n CommitOptions,\n PROptions,\n ProvisionWorkspaceOptions,\n PushOptions,\n WorkspaceResult,\n WorkspaceStatusResult,\n} from \"./workspace-types.js\";\n\nimport type {\n CodingWorkspaceConfig,\n CommitOptions,\n PROptions,\n ProvisionWorkspaceOptions,\n PushOptions,\n WorkspaceResult,\n WorkspaceStatusResult,\n} from \"./workspace-types.js\";\n\ntype WorkspaceEventCallback = (event: WorkspaceEvent) => void;\ntype ScratchRetentionPolicy = \"ephemeral\" | \"pending_decision\" | \"persistent\";\ntype ScratchTerminalEvent = \"stopped\" | \"task_complete\" | \"error\";\n\nexport interface ScratchWorkspaceRecord {\n sessionId: string;\n label: string;\n path: string;\n status: \"pending_decision\" | \"kept\" | \"promoted\";\n createdAt: number;\n terminalAt: number;\n terminalEvent: ScratchTerminalEvent;\n expiresAt?: number;\n}\n\nexport class CodingWorkspaceService {\n static serviceType = \"CODING_WORKSPACE_SERVICE\";\n capabilityDescription = \"Manages git workspaces for coding tasks\";\n\n private runtime: IAgentRuntime;\n private workspaceService: WorkspaceService | null = null;\n private credentialService: CredentialService | null = null;\n private githubClient: GitHubPatClient | null = null;\n private githubAuthInProgress: Promise<GitHubPatClient> | null = null;\n private serviceConfig: CodingWorkspaceConfig;\n private workspaces: Map<string, WorkspaceResult> = new Map();\n private labels: Map<string, string> = new Map(); // label -> workspaceId\n private scratchBySession: Map<string, ScratchWorkspaceRecord> = new Map();\n private scratchCleanupTimers: Map<string, ReturnType<typeof setTimeout>> = new Map();\n private eventCallbacks: WorkspaceEventCallback[] = [];\n private authPromptCallback: AuthPromptCallback | null = null;\n\n constructor(runtime: IAgentRuntime, config: CodingWorkspaceConfig = {}) {\n this.runtime = runtime;\n this.serviceConfig = {\n baseDir:\n config.baseDir ?? path.join(os.homedir(), \".milady\", \"workspaces\"),\n branchPrefix: config.branchPrefix ?? \"milady\",\n debug: config.debug ?? false,\n workspaceTtlMs: config.workspaceTtlMs ?? 24 * 60 * 60 * 1000,\n };\n }\n\n static async start(runtime: IAgentRuntime): Promise<CodingWorkspaceService> {\n const config = runtime.getSetting(\"CODING_WORKSPACE_CONFIG\") as\n | CodingWorkspaceConfig\n | null\n | undefined;\n const service = new CodingWorkspaceService(runtime, config ?? {});\n await service.initialize();\n return service;\n }\n\n static async stopRuntime(runtime: IAgentRuntime): Promise<void> {\n const service = runtime.getService(\"CODING_WORKSPACE_SERVICE\") as unknown as\n | CodingWorkspaceService\n | undefined;\n if (service) {\n await service.stop();\n }\n }\n\n private async initialize(): Promise<void> {\n this.credentialService = new CredentialService({\n tokenStore: new MemoryTokenStore(),\n });\n\n this.workspaceService = new WorkspaceService({\n config: {\n baseDir: this.serviceConfig.baseDir as string,\n branchPrefix: this.serviceConfig.branchPrefix,\n },\n credentialService: this.credentialService,\n logger: this.serviceConfig.debug\n ? {\n info: (data: unknown, msg?: string) =>\n console.log(`[WorkspaceService] ${msg ?? \"\"}`, data),\n warn: (data: unknown, msg?: string) =>\n console.warn(`[WorkspaceService] ${msg ?? \"\"}`, data),\n error: (data: unknown, msg?: string) =>\n console.error(`[WorkspaceService] ${msg ?? \"\"}`, data),\n debug: (_data: unknown, msg?: string) => this.log(`${msg ?? \"\"}`),\n }\n : undefined,\n });\n\n await this.workspaceService.initialize();\n\n const githubToken = this.runtime.getSetting(\"GITHUB_TOKEN\") as\n | string\n | undefined;\n if (githubToken) {\n this.githubClient = new GitHubPatClient({ token: githubToken });\n this.log(\"GitHubPatClient initialized with PAT\");\n } else {\n this.log(\n \"GITHUB_TOKEN not set - will use OAuth device flow when GitHub access is needed\",\n );\n }\n\n this.workspaceService.onEvent((event: WorkspaceEvent) => {\n this.emitEvent(event);\n });\n\n this.log(\"CodingWorkspaceService initialized\");\n\n // Run startup GC in background (non-blocking)\n this.gcOrphanedWorkspaces().catch((err) => {\n console.warn(\"[CodingWorkspaceService] Startup GC failed:\", err);\n });\n }\n\n async stop(): Promise<void> {\n for (const timer of this.scratchCleanupTimers.values()) {\n clearTimeout(timer);\n }\n this.scratchCleanupTimers.clear();\n for (const [id] of this.workspaces) {\n try {\n await this.removeWorkspace(id);\n } catch (err) {\n this.log(`Error cleaning up workspace ${id}: ${err}`);\n }\n }\n this.workspaces.clear();\n this.workspaceService = null;\n this.credentialService = null;\n this.githubClient = null;\n this.log(\"CodingWorkspaceService shutdown complete\");\n }\n\n /** Provision a new workspace */\n async provisionWorkspace(\n options: ProvisionWorkspaceOptions,\n ): Promise<WorkspaceResult> {\n if (!this.workspaceService) {\n throw new Error(\"CodingWorkspaceService not initialized\");\n }\n\n // Strip trailing slashes to prevent git-workspace-service from\n // appending .git incorrectly (e.g. \"repo/\" -> \"repo/.git\")\n const repo = options.repo.replace(/\\/+$/, \"\");\n const executionId = options.execution?.id ?? `exec-${Date.now()}`;\n const taskId = options.task?.id ?? `task-${Date.now()}`;\n\n const workspaceConfig: WorkspaceConfig = {\n repo,\n strategy: options.useWorktree ? \"worktree\" : \"clone\",\n parentWorkspace: options.parentWorkspaceId,\n branchStrategy: \"feature_branch\",\n branchName: options.branchName,\n baseBranch: options.baseBranch ?? \"main\",\n execution: {\n id: executionId,\n patternName: options.execution?.patternName ?? \"milady-coding\",\n },\n task: {\n id: taskId,\n role: options.task?.role ?? \"coding-agent\",\n slug: options.task?.slug,\n },\n userCredentials: options.userCredentials\n ? {\n type: options.userCredentials.type,\n token: options.userCredentials.token ?? \"\",\n provider: \"github\",\n }\n : undefined,\n };\n\n const workspace = await this.workspaceService.provision(workspaceConfig);\n const result: WorkspaceResult = {\n id: workspace.id,\n path: workspace.path,\n branch: workspace.branch.name,\n baseBranch: workspace.branch.baseBranch,\n isWorktree: workspace.strategy === \"worktree\",\n repo: workspace.repo,\n status: workspace.status,\n };\n\n this.workspaces.set(workspace.id, result);\n this.log(`Provisioned workspace ${workspace.id}`);\n return result;\n }\n\n getWorkspace(id: string): WorkspaceResult | undefined {\n return this.workspaces.get(id);\n }\n\n listWorkspaces(): WorkspaceResult[] {\n return Array.from(this.workspaces.values());\n }\n\n /**\n * Assign a semantic label to a workspace (e.g. \"auth-bugfix\").\n * If the label already exists, it is reassigned to the new workspace.\n */\n setLabel(workspaceId: string, label: string): void {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n if (workspace.label) {\n this.labels.delete(workspace.label);\n }\n const existing = this.labels.get(label);\n if (existing && existing !== workspaceId) {\n const oldWs = this.workspaces.get(existing);\n if (oldWs) oldWs.label = undefined;\n }\n workspace.label = label;\n this.labels.set(label, workspaceId);\n this.log(`Labeled workspace ${workspaceId} as \"${label}\"`);\n }\n\n getWorkspaceByLabel(label: string): WorkspaceResult | undefined {\n const id = this.labels.get(label);\n return id ? this.workspaces.get(id) : undefined;\n }\n\n /** Resolve a workspace by label or ID. */\n resolveWorkspace(labelOrId: string): WorkspaceResult | undefined {\n return (\n this.getWorkspaceByLabel(labelOrId) ?? this.workspaces.get(labelOrId)\n );\n }\n\n // === Delegated Git Operations ===\n\n async getStatus(workspaceId: string): Promise<WorkspaceStatusResult> {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n return gitGetStatus(workspace.path);\n }\n\n async commit(workspaceId: string, options: CommitOptions): Promise<string> {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n const hash = await gitCommit(workspace.path, options, (msg) =>\n this.log(msg),\n );\n this.log(`Committed ${hash.slice(0, 8)} in workspace ${workspaceId}`);\n return hash;\n }\n\n async push(workspaceId: string, options?: PushOptions): Promise<void> {\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n await gitPush(workspace.path, workspace.branch, options, (msg) =>\n this.log(msg),\n );\n this.log(`Pushed workspace ${workspaceId}`);\n }\n\n async createPR(\n workspaceId: string,\n options: PROptions,\n ): Promise<PullRequestInfo> {\n if (!this.workspaceService) {\n throw new Error(\"CodingWorkspaceService not initialized\");\n }\n const workspace = this.workspaces.get(workspaceId);\n if (!workspace) {\n throw new Error(`Workspace ${workspaceId} not found`);\n }\n return gitCreatePR(\n this.workspaceService,\n workspace,\n workspaceId,\n options,\n (msg) => this.log(msg),\n );\n }\n\n // === Delegated GitHub / Issue Management ===\n\n private getGitHubContext(): GitHubContext {\n return {\n runtime: this.runtime,\n githubClient: this.githubClient,\n setGithubClient: (client: GitHubPatClient) => {\n this.githubClient = client;\n },\n githubAuthInProgress: this.githubAuthInProgress,\n setGithubAuthInProgress: (p: Promise<GitHubPatClient> | null) => {\n this.githubAuthInProgress = p;\n },\n authPromptCallback: this.authPromptCallback,\n log: (msg: string) => this.log(msg),\n };\n }\n\n /** Set a callback to surface OAuth auth prompts to the user. */\n setAuthPromptCallback(callback: AuthPromptCallback): void {\n this.authPromptCallback = callback;\n }\n\n async createIssue(\n repo: string,\n options: CreateIssueOptions,\n ): Promise<IssueInfo> {\n return ghCreateIssue(this.getGitHubContext(), repo, options);\n }\n\n async getIssue(repo: string, issueNumber: number): Promise<IssueInfo> {\n return ghGetIssue(this.getGitHubContext(), repo, issueNumber);\n }\n\n async listIssues(\n repo: string,\n options?: {\n state?: IssueState | \"all\";\n labels?: string[];\n assignee?: string;\n },\n ): Promise<IssueInfo[]> {\n return ghListIssues(this.getGitHubContext(), repo, options);\n }\n\n async updateIssue(\n repo: string,\n issueNumber: number,\n options: {\n title?: string;\n body?: string;\n state?: IssueState;\n labels?: string[];\n assignees?: string[];\n },\n ): Promise<IssueInfo> {\n return ghUpdateIssue(this.getGitHubContext(), repo, issueNumber, options);\n }\n\n async addComment(\n repo: string,\n issueNumber: number,\n body: string,\n ): Promise<IssueComment> {\n return ghAddComment(this.getGitHubContext(), repo, issueNumber, body);\n }\n\n async listComments(\n repo: string,\n issueNumber: number,\n ): Promise<IssueComment[]> {\n return ghListComments(this.getGitHubContext(), repo, issueNumber);\n }\n\n async closeIssue(repo: string, issueNumber: number): Promise<IssueInfo> {\n return ghCloseIssue(this.getGitHubContext(), repo, issueNumber);\n }\n\n async reopenIssue(repo: string, issueNumber: number): Promise<IssueInfo> {\n return ghReopenIssue(this.getGitHubContext(), repo, issueNumber);\n }\n\n async addLabels(\n repo: string,\n issueNumber: number,\n labels: string[],\n ): Promise<void> {\n return ghAddLabels(this.getGitHubContext(), repo, issueNumber, labels);\n }\n\n // === Workspace Lifecycle ===\n\n async removeWorkspace(workspaceId: string): Promise<void> {\n if (!this.workspaceService) {\n throw new Error(\"CodingWorkspaceService not initialized\");\n }\n await this.workspaceService.cleanup(workspaceId);\n const workspace = this.workspaces.get(workspaceId);\n if (workspace?.label) {\n this.labels.delete(workspace.label);\n }\n this.workspaces.delete(workspaceId);\n this.log(`Removed workspace ${workspaceId}`);\n }\n\n onEvent(callback: WorkspaceEventCallback): () => void {\n this.eventCallbacks.push(callback);\n return () => {\n const index = this.eventCallbacks.indexOf(callback);\n if (index !== -1) {\n this.eventCallbacks.splice(index, 1);\n }\n };\n }\n\n private emitEvent(event: WorkspaceEvent): void {\n for (const callback of this.eventCallbacks) {\n try {\n callback(event);\n } catch (err) {\n this.log(`Event callback error: ${err}`);\n }\n }\n }\n\n /** Remove a scratch directory (non-git workspace) under the workspaces base dir. */\n async removeScratchDir(dirPath: string): Promise<void> {\n return removeScratchDir(\n dirPath,\n this.serviceConfig.baseDir as string,\n (msg) => this.log(msg),\n );\n }\n\n listScratchWorkspaces(): ScratchWorkspaceRecord[] {\n return Array.from(this.scratchBySession.values()).sort(\n (a, b) => b.terminalAt - a.terminalAt,\n );\n }\n\n async registerScratchWorkspace(\n sessionId: string,\n dirPath: string,\n label: string,\n terminalEvent: ScratchTerminalEvent,\n ): Promise<ScratchWorkspaceRecord | null> {\n const now = Date.now();\n const existing = this.scratchBySession.get(sessionId);\n const base: ScratchWorkspaceRecord = existing ?? {\n sessionId,\n label,\n path: dirPath,\n createdAt: now,\n terminalAt: now,\n terminalEvent,\n status: \"pending_decision\",\n };\n\n const policy = this.getScratchRetentionPolicy();\n if (policy === \"ephemeral\") {\n await this.removeScratchDir(dirPath);\n this.scratchBySession.delete(sessionId);\n this.clearScratchCleanupTimer(sessionId);\n return null;\n }\n\n const record: ScratchWorkspaceRecord = {\n ...base,\n label,\n path: dirPath,\n terminalAt: now,\n terminalEvent,\n status: policy === \"persistent\" ? \"kept\" : \"pending_decision\",\n expiresAt: undefined,\n };\n this.scratchBySession.set(sessionId, record);\n\n if (record.status === \"pending_decision\") {\n const ttlMs = this.getScratchDecisionTtlMs();\n record.expiresAt = now + ttlMs;\n this.scheduleScratchCleanup(sessionId, ttlMs);\n } else {\n this.clearScratchCleanupTimer(sessionId);\n }\n return record;\n }\n\n async keepScratchWorkspace(sessionId: string): Promise<ScratchWorkspaceRecord> {\n const record = this.requireScratchWorkspace(sessionId);\n const next: ScratchWorkspaceRecord = {\n ...record,\n status: \"kept\",\n expiresAt: undefined,\n };\n this.scratchBySession.set(sessionId, next);\n this.clearScratchCleanupTimer(sessionId);\n return next;\n }\n\n async deleteScratchWorkspace(sessionId: string): Promise<void> {\n const record = this.requireScratchWorkspace(sessionId);\n await this.removeScratchDir(record.path);\n this.scratchBySession.delete(sessionId);\n this.clearScratchCleanupTimer(sessionId);\n }\n\n async promoteScratchWorkspace(\n sessionId: string,\n name?: string,\n ): Promise<ScratchWorkspaceRecord> {\n const record = this.requireScratchWorkspace(sessionId);\n const baseDir = this.serviceConfig.baseDir as string;\n const suggestedName = this.sanitizeWorkspaceName(name || record.label);\n const targetPath = await this.allocatePromotedPath(baseDir, suggestedName);\n try {\n await fs.rename(record.path, targetPath);\n } catch (error) {\n const isExdev =\n typeof error === \"object\" &&\n error !== null &&\n \"code\" in error &&\n (error as { code?: unknown }).code === \"EXDEV\";\n if (!isExdev) throw error;\n await fs.cp(record.path, targetPath, { recursive: true });\n await fs.access(targetPath);\n await fs.rm(record.path, { recursive: true, force: true });\n }\n\n const next: ScratchWorkspaceRecord = {\n ...record,\n path: targetPath,\n status: \"promoted\",\n expiresAt: undefined,\n };\n this.scratchBySession.set(sessionId, next);\n this.clearScratchCleanupTimer(sessionId);\n return next;\n }\n\n /** GC orphaned workspace directories older than workspaceTtlMs. */\n private async gcOrphanedWorkspaces(): Promise<void> {\n return gcOrphanedWorkspaces(\n this.serviceConfig.baseDir as string,\n this.serviceConfig.workspaceTtlMs ?? 24 * 60 * 60 * 1000,\n new Set(this.workspaces.keys()),\n (msg) => this.log(msg),\n );\n }\n\n private log(message: string): void {\n if (this.serviceConfig.debug) {\n console.log(`[CodingWorkspaceService] ${message}`);\n }\n }\n\n private getScratchRetentionPolicy(): ScratchRetentionPolicy {\n const setting = (\n this.runtime.getSetting(\"PARALLAX_SCRATCH_RETENTION\") ??\n process.env.PARALLAX_SCRATCH_RETENTION\n ) as string | undefined;\n const normalized = setting?.trim().toLowerCase();\n if (normalized === \"ephemeral\") return \"ephemeral\";\n if (normalized === \"persistent\" || normalized === \"keep\") {\n return \"persistent\";\n }\n return \"pending_decision\";\n }\n\n private getScratchDecisionTtlMs(): number {\n const setting = this.runtime.getSetting(\n \"PARALLAX_SCRATCH_DECISION_TTL_MS\",\n ) as string | number | undefined;\n const parsed = Number(setting ?? process.env.PARALLAX_SCRATCH_DECISION_TTL_MS);\n if (Number.isFinite(parsed) && parsed > 0) return parsed;\n return 24 * 60 * 60 * 1000;\n }\n\n private requireScratchWorkspace(sessionId: string): ScratchWorkspaceRecord {\n const record = this.scratchBySession.get(sessionId);\n if (!record) {\n throw new Error(`Scratch workspace for session ${sessionId} not found`);\n }\n return record;\n }\n\n private clearScratchCleanupTimer(sessionId: string): void {\n const timer = this.scratchCleanupTimers.get(sessionId);\n if (timer) {\n clearTimeout(timer);\n this.scratchCleanupTimers.delete(sessionId);\n }\n }\n\n private scheduleScratchCleanup(sessionId: string, ttlMs: number): void {\n this.clearScratchCleanupTimer(sessionId);\n const timer = setTimeout(async () => {\n try {\n const record = this.scratchBySession.get(sessionId);\n if (!record || record.status !== \"pending_decision\") return;\n await this.removeScratchDir(record.path);\n } catch (error) {\n console.warn(\n `[CodingWorkspaceService] scratch cleanup failed for ${sessionId}: ${String(error)}`,\n );\n } finally {\n this.scratchBySession.delete(sessionId);\n this.scratchCleanupTimers.delete(sessionId);\n }\n }, ttlMs);\n this.scratchCleanupTimers.set(sessionId, timer);\n }\n\n private sanitizeWorkspaceName(raw: string): string {\n const compact = raw\n .toLowerCase()\n .replace(/[^a-z0-9._-]+/g, \"-\")\n .replace(/-+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n return compact || `scratch-${Date.now().toString(36)}`;\n }\n\n private async allocatePromotedPath(\n baseDir: string,\n baseName: string,\n ): Promise<string> {\n const baseResolved = path.resolve(baseDir);\n for (let i = 0; i < 1000; i++) {\n const candidateName = i === 0 ? baseName : `${baseName}-${i}`;\n const candidate = path.resolve(baseResolved, candidateName);\n if (\n candidate !== baseResolved &&\n !candidate.startsWith(`${baseResolved}${path.sep}`)\n ) {\n continue;\n }\n try {\n await fs.access(candidate);\n } catch {\n return candidate;\n }\n }\n throw new Error(\"Unable to allocate promoted workspace path\");\n }\n}\n",
|
|
36
36
|
"/**\n * GitHub integration for Coding Workspace Service\n *\n * Extracted from workspace-service.ts — provides GitHub API access\n * via PAT or OAuth device flow, plus all issue management operations.\n *\n * @module services/workspace-github\n */\n\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport {\n type CreateIssueOptions,\n GitHubPatClient,\n type IssueComment,\n type IssueInfo,\n type IssueState,\n OAuthDeviceFlow,\n} from \"git-workspace-service\";\n\n/**\n * Callback for surfacing auth prompts to the user.\n * Returns the auth prompt text so Milady can relay it through chat.\n */\nexport type AuthPromptCallback = (prompt: {\n verificationUri: string;\n userCode: string;\n expiresIn: number;\n}) => void;\n\n/**\n * Context object passed by CodingWorkspaceService into every GitHub function.\n * Lets us keep the extracted functions stateless while still mutating shared state.\n */\nexport interface GitHubContext {\n runtime: IAgentRuntime;\n githubClient: GitHubPatClient | null;\n setGithubClient: (client: GitHubPatClient) => void;\n githubAuthInProgress: Promise<GitHubPatClient> | null;\n setGithubAuthInProgress: (p: Promise<GitHubPatClient> | null) => void;\n authPromptCallback: AuthPromptCallback | null;\n log: (msg: string) => void;\n}\n\n// ── Helpers ────────────────────────────────────────────────────────\n\nexport function parseOwnerRepo(repo: string): {\n owner: string;\n repo: string;\n} {\n // Handle URLs like https://github.com/owner/repo or owner/repo\n const match = repo.match(/(?:github\\.com\\/)?([^/]+)\\/([^/.]+)/);\n if (!match) {\n throw new Error(`Cannot parse owner/repo from: ${repo}`);\n }\n return { owner: match[1], repo: match[2] };\n}\n\n// ── Auth ───────────────────────────────────────────────────────────\n\nexport async function ensureGitHubClient(\n ctx: GitHubContext,\n): Promise<GitHubPatClient> {\n // Already have a client\n if (ctx.githubClient) return ctx.githubClient;\n\n // Auth already in progress (another call triggered it) - wait for it\n if (ctx.githubAuthInProgress) return ctx.githubAuthInProgress;\n\n // Check for PAT (re-check in case it was set after init)\n const githubToken = ctx.runtime.getSetting(\"GITHUB_TOKEN\") as\n | string\n | undefined;\n if (githubToken) {\n const client = new GitHubPatClient({ token: githubToken });\n ctx.setGithubClient(client);\n ctx.log(\"GitHubPatClient initialized with PAT (late binding)\");\n return client;\n }\n\n // Try OAuth device flow (explicit user consent, scoped permissions)\n const clientId = ctx.runtime.getSetting(\"GITHUB_OAUTH_CLIENT_ID\") as\n | string\n | undefined;\n if (!clientId) {\n throw new Error(\n \"GitHub access required but no credentials available. \" +\n \"Set GITHUB_TOKEN (PAT) or GITHUB_OAUTH_CLIENT_ID (for OAuth device flow).\",\n );\n }\n\n // Start OAuth - deduplicate concurrent requests\n const authPromise = performOAuthFlow(ctx, clientId);\n ctx.setGithubAuthInProgress(authPromise);\n try {\n const client = await authPromise;\n return client;\n } finally {\n ctx.setGithubAuthInProgress(null);\n }\n}\n\nexport async function performOAuthFlow(\n ctx: GitHubContext,\n clientId: string,\n): Promise<GitHubPatClient> {\n // Read directly from process.env — this is a server-side secret that\n // should not be exposed through the plugin getSetting() allowlist.\n const clientSecret = process.env.GITHUB_OAUTH_CLIENT_SECRET;\n\n const oauth = new OAuthDeviceFlow({\n clientId,\n clientSecret,\n permissions: {\n repositories: { type: \"public\" },\n contents: \"write\",\n issues: \"write\",\n pullRequests: \"write\",\n metadata: \"read\",\n },\n timeout: 300, // 5 minutes\n });\n\n // Step 1: Request device code\n const deviceCode = await oauth.requestDeviceCode();\n\n // Step 2: Surface the auth prompt to the user\n if (ctx.authPromptCallback) {\n ctx.authPromptCallback({\n verificationUri: deviceCode.verificationUri,\n userCode: deviceCode.userCode,\n expiresIn: deviceCode.expiresIn,\n });\n } else {\n // Fallback: log to console\n console.log(\n `\\n[GitHub Auth] Go to ${deviceCode.verificationUri} and enter code: ${deviceCode.userCode}\\n`,\n );\n }\n\n // Step 3: Poll until user completes auth\n const token = await oauth.pollForToken(deviceCode);\n\n // Step 4: Create client with the obtained token\n const client = new GitHubPatClient({ token: token.accessToken });\n ctx.setGithubClient(client);\n ctx.log(\"GitHubPatClient initialized via OAuth device flow\");\n return client;\n}\n\n// ── Issue Management ───────────────────────────────────────────────\n\nexport async function createIssue(\n ctx: GitHubContext,\n repo: string,\n options: CreateIssueOptions,\n): Promise<IssueInfo> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n const issue = await client.createIssue(owner, repoName, options);\n ctx.log(`Created issue #${issue.number}: ${issue.title}`);\n return issue;\n}\n\nexport async function getIssue(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n): Promise<IssueInfo> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n return client.getIssue(owner, repoName, issueNumber);\n}\n\nexport async function listIssues(\n ctx: GitHubContext,\n repo: string,\n options?: {\n state?: IssueState | \"all\";\n labels?: string[];\n assignee?: string;\n },\n): Promise<IssueInfo[]> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n return client.listIssues(owner, repoName, options);\n}\n\nexport async function updateIssue(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n options: {\n title?: string;\n body?: string;\n state?: IssueState;\n labels?: string[];\n assignees?: string[];\n },\n): Promise<IssueInfo> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n return client.updateIssue(owner, repoName, issueNumber, options);\n}\n\nexport async function addComment(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n body: string,\n): Promise<IssueComment> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n return client.addComment(owner, repoName, issueNumber, { body });\n}\n\nexport async function listComments(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n): Promise<IssueComment[]> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n return client.listComments(owner, repoName, issueNumber);\n}\n\nexport async function closeIssue(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n): Promise<IssueInfo> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n const issue = await client.closeIssue(owner, repoName, issueNumber);\n ctx.log(`Closed issue #${issueNumber}`);\n return issue;\n}\n\nexport async function reopenIssue(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n): Promise<IssueInfo> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n return client.reopenIssue(owner, repoName, issueNumber);\n}\n\nexport async function addLabels(\n ctx: GitHubContext,\n repo: string,\n issueNumber: number,\n labels: string[],\n): Promise<void> {\n const client = await ensureGitHubClient(ctx);\n const { owner, repo: repoName } = parseOwnerRepo(repo);\n await client.addLabels(owner, repoName, issueNumber, labels);\n}\n",
|
|
37
37
|
"/**\n * Git operations for Coding Workspace Service\n *\n * Extracted from workspace-service.ts — provides git status, commit, push,\n * and PR creation as standalone functions operating on workspace paths.\n *\n * @module services/workspace-git-ops\n */\n\nimport type {\n PullRequestInfo,\n WorkspaceFinalization,\n WorkspaceService,\n} from \"git-workspace-service\";\nimport type {\n CommitOptions,\n PROptions,\n PushOptions,\n WorkspaceResult,\n WorkspaceStatusResult,\n} from \"./workspace-service.js\";\n\n/**\n * Get workspace git status (branch, staged/modified/untracked files).\n */\nexport async function getStatus(\n workspacePath: string,\n): Promise<WorkspaceStatusResult> {\n const { execFileSync } = await import(\"node:child_process\");\n\n const statusOutput = execFileSync(\"git\", [\"status\", \"--porcelain\"], {\n cwd: workspacePath,\n encoding: \"utf-8\",\n });\n\n const branchOutput = execFileSync(\"git\", [\"branch\", \"--show-current\"], {\n cwd: workspacePath,\n encoding: \"utf-8\",\n }).trim();\n\n const lines = statusOutput.split(\"\\n\").filter(Boolean);\n const modified: string[] = [];\n const staged: string[] = [];\n const untracked: string[] = [];\n\n for (const line of lines) {\n const indexStatus = line[0];\n const workTreeStatus = line[1];\n const filename = line.slice(3);\n\n if (indexStatus === \"?\" && workTreeStatus === \"?\") {\n untracked.push(filename);\n } else if (indexStatus !== \" \" && indexStatus !== \"?\") {\n staged.push(filename);\n } else if (workTreeStatus !== \" \") {\n modified.push(filename);\n }\n }\n\n return {\n branch: branchOutput,\n clean: lines.length === 0,\n modified,\n staged,\n untracked,\n };\n}\n\n/**\n * Commit changes in a workspace directory.\n * Returns the commit hash.\n */\nexport async function commit(\n workspacePath: string,\n options: CommitOptions,\n log: (msg: string) => void,\n): Promise<string> {\n const { execFileSync } = await import(\"node:child_process\");\n\n if (options.all) {\n execFileSync(\"git\", [\"add\", \"-A\"], { cwd: workspacePath });\n }\n\n execFileSync(\"git\", [\"commit\", \"-m\", options.message], {\n cwd: workspacePath,\n });\n\n const hash = execFileSync(\"git\", [\"rev-parse\", \"HEAD\"], {\n cwd: workspacePath,\n encoding: \"utf-8\",\n }).trim();\n\n log(`Committed ${hash.slice(0, 8)} in workspace at ${workspacePath}`);\n return hash;\n}\n\n/**\n * Push changes to remote for a workspace.\n */\nexport async function push(\n workspacePath: string,\n branch: string,\n options: PushOptions | undefined,\n log: (msg: string) => void,\n): Promise<void> {\n const { execFileSync } = await import(\"node:child_process\");\n\n const args = [\"push\"];\n if (options?.setUpstream) {\n args.push(\"-u\", \"origin\", branch);\n }\n if (options?.force) {\n args.push(\"--force\");\n }\n\n execFileSync(\"git\", args, { cwd: workspacePath });\n log(`Pushed workspace at ${workspacePath}`);\n}\n\n/**\n * Create a pull request for a workspace via the underlying WorkspaceService.\n */\nexport async function createPR(\n workspaceService: WorkspaceService,\n workspace: WorkspaceResult,\n workspaceId: string,\n options: PROptions,\n log: (msg: string) => void,\n): Promise<PullRequestInfo> {\n const finalization: WorkspaceFinalization = {\n push: false, // Already pushed\n createPr: true,\n pr: {\n title: options.title,\n body: options.body,\n targetBranch: options.base ?? workspace.baseBranch,\n draft: options.draft,\n labels: options.labels,\n reviewers: options.reviewers,\n },\n cleanup: false,\n };\n\n const result = await workspaceService.finalize(workspaceId, finalization);\n if (!result) {\n throw new Error(\"Failed to create PR\");\n }\n\n log(`Created PR #${result.number} for workspace ${workspaceId}`);\n return result;\n}\n",
|
|
38
38
|
"/**\n * Workspace lifecycle utilities — garbage collection and scratch directory cleanup.\n *\n * Extracted from workspace-service.ts to reduce module size.\n *\n * @module services/workspace-lifecycle\n */\n\nimport * as fs from \"node:fs\";\nimport * as path from \"node:path\";\n\n/**\n * Remove a scratch directory (non-git workspace used for ad-hoc tasks).\n * Safe to call for any path under the workspaces base dir.\n */\nexport async function removeScratchDir(\n dirPath: string,\n baseDir: string,\n log: (msg: string) => void,\n): Promise<void> {\n const resolved = path.resolve(dirPath);\n const resolvedBase = path.resolve(baseDir) + path.sep;\n if (\n !resolved.startsWith(resolvedBase) &&\n resolved !== path.resolve(baseDir)\n ) {\n console.warn(\n `[CodingWorkspaceService] Refusing to remove dir outside base: ${resolved}`,\n );\n return;\n }\n try {\n await fs.promises.rm(resolved, { recursive: true, force: true });\n log(`Removed scratch dir ${resolved}`);\n } catch (err) {\n console.warn(\n `[CodingWorkspaceService] Failed to remove scratch dir ${resolved}:`,\n err,\n );\n }\n}\n\n/**\n * Garbage-collect orphaned workspace directories.\n * Removes directories older than the given TTL that aren't tracked by the current session.\n */\nexport async function gcOrphanedWorkspaces(\n baseDir: string,\n workspaceTtlMs: number,\n trackedWorkspaceIds: Set<string>,\n log: (msg: string) => void,\n): Promise<void> {\n if (workspaceTtlMs === 0) {\n log(\"Workspace GC disabled (workspaceTtlMs=0)\");\n return;\n }\n\n let entries: fs.Dirent[];\n try {\n entries = await fs.promises.readdir(baseDir, { withFileTypes: true });\n } catch {\n // Base dir doesn't exist yet — nothing to clean\n return;\n }\n\n const now = Date.now();\n let removed = 0;\n let skipped = 0;\n\n for (const entry of entries) {\n if (!entry.isDirectory()) continue;\n\n // Skip directories tracked by the current session\n if (trackedWorkspaceIds.has(entry.name)) {\n skipped++;\n continue;\n }\n\n const dirPath = path.join(baseDir, entry.name);\n try {\n const stat = await fs.promises.stat(dirPath);\n const age = now - stat.mtimeMs;\n\n if (age > workspaceTtlMs) {\n await fs.promises.rm(dirPath, { recursive: true, force: true });\n removed++;\n } else {\n skipped++;\n }\n } catch (err) {\n // Stat or remove failed — skip\n log(`GC: skipping ${entry.name}: ${err}`);\n skipped++;\n }\n }\n\n if (removed > 0 || skipped > 0) {\n console.log(\n `[CodingWorkspaceService] Startup GC: removed ${removed} orphaned workspace(s), kept ${skipped}`,\n );\n }\n}\n",
|
|
39
|
-
"/**\n * Coding Agent Route Handlers\n *\n * Handles routes for PTY-based coding agent management:\n * - Preflight checks, metrics, workspace files\n * - Approval presets and config\n * - Agent CRUD: list, spawn, get, send, stop, output\n *\n * @module api/agent-routes\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { access, readFile, realpath, rm } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { getCoordinator } from \"../services/pty-service.js\";\nimport {\n isPiAgentType,\n normalizeAgentType,\n toPiCommand,\n} from \"../services/pty-types.js\";\nimport type { RouteContext } from \"./routes.js\";\nimport { parseBody, sendError, sendJson } from \"./routes.js\";\n\nconst execFileAsync = promisify(execFile);\nconst PREFLIGHT_DONE = new Set<string>();\nconst PREFLIGHT_INFLIGHT = new Map<string, Promise<void>>();\n\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\nfunction shouldAutoPreflight(): boolean {\n if (process.env.PARALLAX_BENCHMARK_PREFLIGHT_AUTO === \"1\") return true;\n return false;\n}\n\nfunction isPathInside(parent: string, candidate: string): boolean {\n return candidate === parent || candidate.startsWith(`${parent}${path.sep}`);\n}\n\nasync function resolveSafeVenvPath(\n workdir: string,\n venvDirRaw: string,\n): Promise<string> {\n const venvDir = venvDirRaw.trim();\n if (!venvDir) {\n throw new Error(\"PARALLAX_BENCHMARK_PREFLIGHT_VENV must be non-empty\");\n }\n if (path.isAbsolute(venvDir)) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV must be relative to workdir\",\n );\n }\n\n const normalized = path.normalize(venvDir);\n if (\n normalized === \".\" ||\n normalized === \"..\" ||\n normalized.startsWith(`..${path.sep}`)\n ) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV must stay within workdir\",\n );\n }\n\n const workdirResolved = path.resolve(workdir);\n const workdirReal = await realpath(workdirResolved);\n const resolved = path.resolve(workdirReal, normalized);\n if (!isPathInside(workdirReal, resolved)) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV resolves outside workdir\",\n );\n }\n if (resolved === workdirReal) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV must not resolve to workdir root\",\n );\n }\n\n // Canonicalize candidate when present to reject symlink escapes.\n try {\n const resolvedReal = await realpath(resolved);\n if (!isPathInside(workdirReal, resolvedReal) || resolvedReal === workdirReal) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV resolves outside workdir\",\n );\n }\n } catch (err) {\n const maybeErr = err as NodeJS.ErrnoException;\n if (maybeErr?.code !== \"ENOENT\") throw err;\n const parentReal = await realpath(path.dirname(resolved));\n if (!isPathInside(workdirReal, parentReal)) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV parent resolves outside workdir\",\n );\n }\n }\n\n return resolved;\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function resolveRequirementsPath(workdir: string): Promise<string | null> {\n const workdirReal = await realpath(path.resolve(workdir));\n const candidates = [\n path.join(workdir, \"apps\", \"api\", \"requirements.txt\"),\n path.join(workdir, \"requirements.txt\"),\n ];\n for (const candidate of candidates) {\n if (!(await fileExists(candidate))) continue;\n try {\n const candidateReal = await realpath(candidate);\n if (isPathInside(workdirReal, candidateReal)) return candidateReal;\n } catch {\n // Ignore malformed candidate and keep scanning.\n }\n }\n return null;\n}\n\nasync function fingerprintRequirementsFile(requirementsPath: string): Promise<string> {\n const file = await readFile(requirementsPath);\n return createHash(\"sha256\").update(file).digest(\"hex\");\n}\n\nasync function runBenchmarkPreflight(workdir: string): Promise<void> {\n if (!shouldAutoPreflight()) return;\n\n const requirementsPath = await resolveRequirementsPath(workdir);\n if (!requirementsPath) return;\n const requirementsFingerprint =\n await fingerprintRequirementsFile(requirementsPath);\n\n const mode =\n process.env.PARALLAX_BENCHMARK_PREFLIGHT_MODE?.toLowerCase() === \"warm\"\n ? \"warm\"\n : \"cold\";\n const venvDir = process.env.PARALLAX_BENCHMARK_PREFLIGHT_VENV || \".benchmark-venv\";\n const venvPath = await resolveSafeVenvPath(workdir, venvDir);\n const pythonInVenv = path.join(\n venvPath,\n process.platform === \"win32\" ? \"Scripts\" : \"bin\",\n process.platform === \"win32\" ? \"python.exe\" : \"python\",\n );\n const key = `${workdir}::${mode}::${venvPath}::${requirementsFingerprint}`;\n if (PREFLIGHT_DONE.has(key)) {\n if (await fileExists(pythonInVenv)) return;\n PREFLIGHT_DONE.delete(key);\n }\n const existing = PREFLIGHT_INFLIGHT.get(key);\n if (existing) {\n await existing;\n return;\n }\n\n const run = (async () => {\n const pythonCommand = process.platform === \"win32\" ? \"python\" : \"python3\";\n\n if (mode === \"cold\") {\n await rm(venvPath, { recursive: true, force: true });\n }\n\n const hasVenv = await fileExists(pythonInVenv);\n if (!hasVenv) {\n await execFileAsync(pythonCommand, [\"-m\", \"venv\", venvPath], {\n cwd: workdir,\n timeout: 120_000,\n maxBuffer: 8 * 1024 * 1024,\n });\n }\n\n await execFileAsync(\n pythonInVenv,\n [\"-m\", \"pip\", \"install\", \"--upgrade\", \"pip\"],\n {\n cwd: workdir,\n timeout: 300_000,\n maxBuffer: 8 * 1024 * 1024,\n },\n );\n\n await execFileAsync(\n pythonInVenv,\n [\"-m\", \"pip\", \"install\", \"-r\", requirementsPath],\n {\n cwd: workdir,\n timeout: 600_000,\n maxBuffer: 16 * 1024 * 1024,\n },\n );\n\n PREFLIGHT_DONE.add(key);\n })();\n PREFLIGHT_INFLIGHT.set(key, run);\n try {\n await run;\n } finally {\n PREFLIGHT_INFLIGHT.delete(key);\n }\n}\n\n/**\n * Handle coding agent routes (/api/coding-agents/*)\n * Returns true if the route was handled, false otherwise\n */\nexport async function handleAgentRoutes(\n req: IncomingMessage,\n res: ServerResponse,\n pathname: string,\n ctx: RouteContext,\n): Promise<boolean> {\n const method = req.method?.toUpperCase();\n\n // === Preflight Check ===\n // GET /api/coding-agents/preflight\n if (method === \"GET\" && pathname === \"/api/coding-agents/preflight\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const results = await ctx.ptyService.checkAvailableAgents();\n sendJson(res, results as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Preflight check failed\",\n 500,\n );\n }\n return true;\n }\n\n // GET /api/coding-agents/metrics\n if (method === \"GET\" && pathname === \"/api/coding-agents/metrics\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n sendJson(res, ctx.ptyService.getAgentMetrics() as unknown as JsonValue);\n return true;\n }\n\n // === Workspace Files ===\n // GET /api/coding-agents/workspace-files?agentType=claude\n if (method === \"GET\" && pathname === \"/api/coding-agents/workspace-files\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const agentType = url.searchParams.get(\"agentType\");\n if (!agentType) {\n sendError(\n res,\n \"agentType query parameter required (claude, gemini, codex, aider, pi)\",\n 400,\n );\n return true;\n }\n\n if (isPiAgentType(agentType)) {\n sendJson(res, {\n agentType: \"pi\",\n memoryFilePath: \".pi/agent/settings.json\",\n files: [],\n } as unknown as JsonValue);\n return true;\n }\n\n const files = ctx.ptyService.getWorkspaceFiles(\n agentType as import(\"coding-agent-adapters\").AdapterType,\n );\n const memoryFilePath = ctx.ptyService.getMemoryFilePath(\n agentType as import(\"coding-agent-adapters\").AdapterType,\n );\n sendJson(res, {\n agentType,\n memoryFilePath,\n files,\n } as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error\n ? error.message\n : \"Failed to get workspace files\",\n 500,\n );\n }\n return true;\n }\n\n // === Approval Presets ===\n // GET /api/coding-agents/approval-presets\n if (method === \"GET\" && pathname === \"/api/coding-agents/approval-presets\") {\n try {\n const { listPresets } = await import(\"coding-agent-adapters\");\n const presets = listPresets();\n sendJson(res, presets as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to list presets\",\n 500,\n );\n }\n return true;\n }\n\n // GET /api/coding-agents/settings\n if (method === \"GET\" && pathname === \"/api/coding-agents/settings\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n sendJson(res, {\n defaultApprovalPreset: ctx.ptyService.defaultApprovalPreset,\n agentSelectionStrategy: ctx.ptyService.agentSelectionStrategy,\n defaultAgentType: ctx.ptyService.defaultAgentType,\n } as unknown as JsonValue);\n return true;\n }\n\n // GET /api/coding-agents/approval-config?agentType=claude&preset=autonomous\n if (method === \"GET\" && pathname === \"/api/coding-agents/approval-config\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const agentType = url.searchParams.get(\"agentType\");\n const preset = url.searchParams.get(\"preset\");\n if (!agentType || !preset) {\n sendError(res, \"agentType and preset query parameters required\", 400);\n return true;\n }\n\n try {\n const config = ctx.ptyService.getApprovalConfig(\n agentType as import(\"coding-agent-adapters\").AdapterType,\n preset as import(\"coding-agent-adapters\").ApprovalPreset,\n );\n sendJson(res, config as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to generate config\",\n 500,\n );\n }\n return true;\n }\n\n // === List Agents ===\n // GET /api/coding-agents\n if (method === \"GET\" && pathname === \"/api/coding-agents\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessions = await ctx.ptyService.listSessions();\n sendJson(res, sessions as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to list agents\",\n 500,\n );\n }\n return true;\n }\n\n // === Spawn Agent ===\n // POST /api/coding-agents/spawn\n if (method === \"POST\" && pathname === \"/api/coding-agents/spawn\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const body = await parseBody(req);\n const {\n agentType,\n workdir: rawWorkdir,\n task,\n memoryContent,\n approvalPreset,\n customCredentials,\n metadata,\n } = body;\n\n // Validate workdir: must be within workspace base dir or cwd\n const workspaceBaseDir = path.join(os.homedir(), \".milady\", \"workspaces\");\n const workspaceBaseDirResolved = path.resolve(workspaceBaseDir);\n const cwdResolved = path.resolve(process.cwd());\n const workspaceBaseDirReal = await realpath(workspaceBaseDirResolved).catch(\n () => workspaceBaseDirResolved,\n );\n const cwdReal = await realpath(cwdResolved).catch(() => cwdResolved);\n const allowedPrefixes = [workspaceBaseDirReal, cwdReal];\n let workdir = rawWorkdir as string | undefined;\n if (workdir) {\n const resolved = path.resolve(workdir);\n const resolvedReal = await realpath(resolved).catch(() => null);\n if (!resolvedReal) {\n sendError(res, \"workdir must exist\", 403);\n return true;\n }\n const isAllowed = allowedPrefixes.some(\n (prefix) =>\n resolvedReal === prefix || resolvedReal.startsWith(prefix + path.sep),\n );\n if (!isAllowed) {\n sendError(\n res,\n \"workdir must be within workspace base directory or cwd\",\n 403,\n );\n return true;\n }\n workdir = resolvedReal;\n }\n\n // Check concurrency limit before spawning\n const activeSessions = await ctx.ptyService.listSessions();\n const maxSessions = 8;\n if (activeSessions.length >= maxSessions) {\n sendError(\n res,\n `Concurrent session limit reached (${maxSessions})`,\n 429,\n );\n return true;\n }\n\n if (workdir) {\n try {\n await runBenchmarkPreflight(workdir);\n } catch (preflightError) {\n console.warn(\n `[coding-agent] benchmark preflight failed for ${workdir}:`,\n preflightError,\n );\n }\n }\n\n // Build credentials from runtime\n const credentials = {\n anthropicKey: ctx.runtime.getSetting(\"ANTHROPIC_API_KEY\") as\n | string\n | undefined,\n openaiKey: ctx.runtime.getSetting(\"OPENAI_API_KEY\") as\n | string\n | undefined,\n googleKey: ctx.runtime.getSetting(\"GOOGLE_GENERATIVE_AI_API_KEY\") as\n | string\n | undefined,\n githubToken: ctx.runtime.getSetting(\"GITHUB_TOKEN\") as\n | string\n | undefined,\n };\n\n // Read model preferences from runtime settings\n const agentStr = agentType\n ? (agentType as string).toLowerCase()\n : await ctx.ptyService.resolveAgentType();\n const piRequested = isPiAgentType(agentStr);\n const normalizedType = normalizeAgentType(agentStr);\n const prefixMap: Record<string, string> = {\n claude: \"PARALLAX_CLAUDE\",\n gemini: \"PARALLAX_GEMINI\",\n codex: \"PARALLAX_CODEX\",\n aider: \"PARALLAX_AIDER\",\n };\n const prefix = prefixMap[agentStr];\n const modelPowerful = prefix\n ? (ctx.runtime.getSetting(`${prefix}_MODEL_POWERFUL`) as string | null)\n : null;\n const modelFast = prefix\n ? (ctx.runtime.getSetting(`${prefix}_MODEL_FAST`) as string | null)\n : null;\n const aiderProvider =\n agentStr === \"aider\"\n ? (ctx.runtime.getSetting(\"PARALLAX_AIDER_PROVIDER\") as string | null)\n : null;\n\n // Check if coordinator is active — route blocking prompts through it\n const coordinator = getCoordinator(ctx.runtime);\n\n const session = await ctx.ptyService.spawnSession({\n name: `agent-${Date.now()}`,\n agentType: normalizedType,\n workdir: workdir as string,\n initialTask: piRequested\n ? toPiCommand(task as string | undefined)\n : (task as string),\n memoryContent: memoryContent as string | undefined,\n credentials,\n approvalPreset: approvalPreset as\n | import(\"coding-agent-adapters\").ApprovalPreset\n | undefined,\n customCredentials: customCredentials as\n | Record<string, string>\n | undefined,\n // Let adapter auto-response handle known prompts (permissions, trust, etc.)\n // instantly. The coordinator handles only unrecognized prompts via LLM.\n metadata: {\n requestedType: agentStr,\n ...(metadata as Record<string, unknown>),\n ...(aiderProvider ? { provider: aiderProvider } : {}),\n modelPrefs: {\n ...(modelPowerful ? { powerful: modelPowerful } : {}),\n ...(modelFast ? { fast: modelFast } : {}),\n },\n },\n });\n if (coordinator && task) {\n const label = (metadata as Record<string, unknown>)?.label as\n | string\n | undefined;\n coordinator.registerTask(session.id, {\n agentType:\n agentStr as import(\"../services/pty-service.js\").CodingAgentType,\n label: label || `agent-${session.id.slice(-8)}`,\n originalTask: task as string,\n workdir: session.workdir,\n });\n }\n\n sendJson(\n res,\n {\n sessionId: session.id,\n agentType: session.agentType,\n workdir: session.workdir,\n status: session.status,\n } as unknown as JsonValue,\n 201,\n );\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to spawn agent\",\n 500,\n );\n }\n return true;\n }\n\n // === Get Agent Status ===\n // GET /api/coding-agents/:id\n const agentMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)$/);\n if (method === \"GET\" && agentMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n const sessionId = agentMatch[1];\n const session = ctx.ptyService.getSession(sessionId);\n\n if (!session) {\n sendError(res, \"Agent session not found\", 404);\n return true;\n }\n\n sendJson(res, session as unknown as JsonValue);\n return true;\n }\n\n // === Send to Agent ===\n // POST /api/coding-agents/:id/send\n const sendMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)\\/send$/);\n if (method === \"POST\" && sendMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessionId = sendMatch[1];\n const body = await parseBody(req);\n const { input, keys } = body;\n\n if (keys) {\n // Send special keys (e.g. \"enter\", [\"down\",\"enter\"], \"Ctrl-C\")\n await ctx.ptyService.sendKeysToSession(\n sessionId,\n keys as string | string[],\n );\n sendJson(res, { success: true });\n } else if (input && typeof input === \"string\") {\n await ctx.ptyService.sendToSession(sessionId, input);\n sendJson(res, { success: true });\n } else {\n sendError(\n res,\n \"Either 'input' (string) or 'keys' (string|string[]) required\",\n 400,\n );\n return true;\n }\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to send input\",\n 500,\n );\n }\n return true;\n }\n\n // === Stop Agent ===\n // POST /api/coding-agents/:id/stop\n const stopMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)\\/stop$/);\n if (method === \"POST\" && stopMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessionId = stopMatch[1];\n await ctx.ptyService.stopSession(sessionId);\n sendJson(res, { success: true, sessionId });\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to stop agent\",\n 500,\n );\n }\n return true;\n }\n\n // === Get Agent Output ===\n // GET /api/coding-agents/:id/output\n const outputMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)\\/output$/);\n if (method === \"GET\" && outputMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessionId = outputMatch[1];\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const lines = parseInt(url.searchParams.get(\"lines\") || \"100\", 10);\n\n const output = await ctx.ptyService.getSessionOutput(sessionId, lines);\n sendJson(res, { sessionId, output });\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to get output\",\n 500,\n );\n }\n return true;\n }\n\n // === Get Buffered Terminal Output (raw ANSI for xterm.js hydration) ===\n // GET /api/coding-agents/:id/buffered-output\n const bufferedMatch = pathname.match(\n /^\\/api\\/coding-agents\\/([^/]+)\\/buffered-output$/,\n );\n if (method === \"GET\" && bufferedMatch) {\n if (!ctx.ptyService?.consoleBridge) {\n sendError(res, \"Console bridge not available\", 503);\n return true;\n }\n try {\n const sessionId = bufferedMatch[1];\n const output = ctx.ptyService.consoleBridge.getBufferedOutput(sessionId);\n sendJson(res, { sessionId, output });\n } catch (error) {\n sendError(\n res,\n error instanceof Error\n ? error.message\n : \"Failed to get buffered output\",\n 500,\n );\n }\n return true;\n }\n\n // Route not handled\n return false;\n}\n",
|
|
39
|
+
"/**\n * Coding Agent Route Handlers\n *\n * Handles routes for PTY-based coding agent management:\n * - Preflight checks, metrics, workspace files\n * - Approval presets and config\n * - Agent CRUD: list, spawn, get, send, stop, output\n *\n * @module api/agent-routes\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport { access, readFile, realpath, rm } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport * as os from \"node:os\";\nimport * as path from \"node:path\";\nimport { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport { getCoordinator } from \"../services/pty-service.js\";\nimport {\n isPiAgentType,\n normalizeAgentType,\n toPiCommand,\n} from \"../services/pty-types.js\";\nimport type { RouteContext } from \"./routes.js\";\nimport { parseBody, sendError, sendJson } from \"./routes.js\";\n\nconst execFileAsync = promisify(execFile);\nconst PREFLIGHT_DONE = new Set<string>();\nconst PREFLIGHT_INFLIGHT = new Map<string, Promise<void>>();\n\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\nfunction shouldAutoPreflight(): boolean {\n if (process.env.PARALLAX_BENCHMARK_PREFLIGHT_AUTO === \"1\") return true;\n return false;\n}\n\nfunction isPathInside(parent: string, candidate: string): boolean {\n return candidate === parent || candidate.startsWith(`${parent}${path.sep}`);\n}\n\nasync function resolveSafeVenvPath(\n workdir: string,\n venvDirRaw: string,\n): Promise<string> {\n const venvDir = venvDirRaw.trim();\n if (!venvDir) {\n throw new Error(\"PARALLAX_BENCHMARK_PREFLIGHT_VENV must be non-empty\");\n }\n if (path.isAbsolute(venvDir)) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV must be relative to workdir\",\n );\n }\n\n const normalized = path.normalize(venvDir);\n if (\n normalized === \".\" ||\n normalized === \"..\" ||\n normalized.startsWith(`..${path.sep}`)\n ) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV must stay within workdir\",\n );\n }\n\n const workdirResolved = path.resolve(workdir);\n const workdirReal = await realpath(workdirResolved);\n const resolved = path.resolve(workdirReal, normalized);\n if (!isPathInside(workdirReal, resolved)) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV resolves outside workdir\",\n );\n }\n if (resolved === workdirReal) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV must not resolve to workdir root\",\n );\n }\n\n // Canonicalize candidate when present to reject symlink escapes.\n try {\n const resolvedReal = await realpath(resolved);\n if (!isPathInside(workdirReal, resolvedReal) || resolvedReal === workdirReal) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV resolves outside workdir\",\n );\n }\n } catch (err) {\n const maybeErr = err as NodeJS.ErrnoException;\n if (maybeErr?.code !== \"ENOENT\") throw err;\n const parentReal = await realpath(path.dirname(resolved));\n if (!isPathInside(workdirReal, parentReal)) {\n throw new Error(\n \"PARALLAX_BENCHMARK_PREFLIGHT_VENV parent resolves outside workdir\",\n );\n }\n }\n\n return resolved;\n}\n\nasync function fileExists(filePath: string): Promise<boolean> {\n try {\n await access(filePath);\n return true;\n } catch {\n return false;\n }\n}\n\nasync function resolveRequirementsPath(workdir: string): Promise<string | null> {\n const workdirReal = await realpath(path.resolve(workdir));\n const candidates = [\n path.join(workdir, \"apps\", \"api\", \"requirements.txt\"),\n path.join(workdir, \"requirements.txt\"),\n ];\n for (const candidate of candidates) {\n if (!(await fileExists(candidate))) continue;\n try {\n const candidateReal = await realpath(candidate);\n if (isPathInside(workdirReal, candidateReal)) return candidateReal;\n } catch {\n // Ignore malformed candidate and keep scanning.\n }\n }\n return null;\n}\n\nasync function fingerprintRequirementsFile(requirementsPath: string): Promise<string> {\n const file = await readFile(requirementsPath);\n return createHash(\"sha256\").update(file).digest(\"hex\");\n}\n\nasync function runBenchmarkPreflight(workdir: string): Promise<void> {\n if (!shouldAutoPreflight()) return;\n\n const requirementsPath = await resolveRequirementsPath(workdir);\n if (!requirementsPath) return;\n const requirementsFingerprint =\n await fingerprintRequirementsFile(requirementsPath);\n\n const mode =\n process.env.PARALLAX_BENCHMARK_PREFLIGHT_MODE?.toLowerCase() === \"warm\"\n ? \"warm\"\n : \"cold\";\n const venvDir = process.env.PARALLAX_BENCHMARK_PREFLIGHT_VENV || \".benchmark-venv\";\n const venvPath = await resolveSafeVenvPath(workdir, venvDir);\n const pythonInVenv = path.join(\n venvPath,\n process.platform === \"win32\" ? \"Scripts\" : \"bin\",\n process.platform === \"win32\" ? \"python.exe\" : \"python\",\n );\n const key = `${workdir}::${mode}::${venvPath}::${requirementsFingerprint}`;\n if (PREFLIGHT_DONE.has(key)) {\n if (await fileExists(pythonInVenv)) return;\n PREFLIGHT_DONE.delete(key);\n }\n const existing = PREFLIGHT_INFLIGHT.get(key);\n if (existing) {\n await existing;\n return;\n }\n\n const run = (async () => {\n const pythonCommand = process.platform === \"win32\" ? \"python\" : \"python3\";\n\n if (mode === \"cold\") {\n await rm(venvPath, { recursive: true, force: true });\n }\n\n const hasVenv = await fileExists(pythonInVenv);\n if (!hasVenv) {\n await execFileAsync(pythonCommand, [\"-m\", \"venv\", venvPath], {\n cwd: workdir,\n timeout: 120_000,\n maxBuffer: 8 * 1024 * 1024,\n });\n }\n\n await execFileAsync(\n pythonInVenv,\n [\"-m\", \"pip\", \"install\", \"--upgrade\", \"pip\"],\n {\n cwd: workdir,\n timeout: 300_000,\n maxBuffer: 8 * 1024 * 1024,\n },\n );\n\n await execFileAsync(\n pythonInVenv,\n [\"-m\", \"pip\", \"install\", \"-r\", requirementsPath],\n {\n cwd: workdir,\n timeout: 600_000,\n maxBuffer: 16 * 1024 * 1024,\n },\n );\n\n PREFLIGHT_DONE.add(key);\n })();\n PREFLIGHT_INFLIGHT.set(key, run);\n try {\n await run;\n } finally {\n PREFLIGHT_INFLIGHT.delete(key);\n }\n}\n\n/**\n * Handle coding agent routes (/api/coding-agents/*)\n * Returns true if the route was handled, false otherwise\n */\nexport async function handleAgentRoutes(\n req: IncomingMessage,\n res: ServerResponse,\n pathname: string,\n ctx: RouteContext,\n): Promise<boolean> {\n const method = req.method?.toUpperCase();\n\n // === Preflight Check ===\n // GET /api/coding-agents/preflight\n if (method === \"GET\" && pathname === \"/api/coding-agents/preflight\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const results = await ctx.ptyService.checkAvailableAgents();\n sendJson(res, results as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Preflight check failed\",\n 500,\n );\n }\n return true;\n }\n\n // GET /api/coding-agents/metrics\n if (method === \"GET\" && pathname === \"/api/coding-agents/metrics\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n sendJson(res, ctx.ptyService.getAgentMetrics() as unknown as JsonValue);\n return true;\n }\n\n // === Scratch Workspace Retention ===\n // GET /api/coding-agents/scratch\n if (method === \"GET\" && pathname === \"/api/coding-agents/scratch\") {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n sendJson(\n res,\n ctx.workspaceService.listScratchWorkspaces() as unknown as JsonValue,\n );\n return true;\n }\n\n // POST /api/coding-agents/:id/scratch/(keep|delete|promote)\n const scratchActionMatch = pathname.match(\n /^\\/api\\/coding-agents\\/([^/]+)\\/scratch\\/(keep|delete|promote)$/,\n );\n if (method === \"POST\" && scratchActionMatch) {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n const sessionId = scratchActionMatch[1];\n const action = scratchActionMatch[2];\n try {\n if (action === \"keep\") {\n const scratch = await ctx.workspaceService.keepScratchWorkspace(\n sessionId,\n );\n sendJson(res, { success: true, scratch } as unknown as JsonValue);\n return true;\n }\n if (action === \"delete\") {\n await ctx.workspaceService.deleteScratchWorkspace(sessionId);\n sendJson(\n res,\n { success: true, deleted: true, sessionId } as unknown as JsonValue,\n );\n return true;\n }\n const body = await parseBody(req);\n const promoteName =\n typeof body.name === \"string\" ? body.name : undefined;\n const scratch = await ctx.workspaceService.promoteScratchWorkspace(\n sessionId,\n promoteName,\n );\n sendJson(res, { success: true, scratch } as unknown as JsonValue);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n const status = message.includes(\"not found\") ? 404 : 500;\n sendError(res, message, status);\n }\n return true;\n }\n\n // === Workspace Files ===\n // GET /api/coding-agents/workspace-files?agentType=claude\n if (method === \"GET\" && pathname === \"/api/coding-agents/workspace-files\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const agentType = url.searchParams.get(\"agentType\");\n if (!agentType) {\n sendError(\n res,\n \"agentType query parameter required (claude, gemini, codex, aider, pi)\",\n 400,\n );\n return true;\n }\n\n if (isPiAgentType(agentType)) {\n sendJson(res, {\n agentType: \"pi\",\n memoryFilePath: \".pi/agent/settings.json\",\n files: [],\n } as unknown as JsonValue);\n return true;\n }\n\n const files = ctx.ptyService.getWorkspaceFiles(\n agentType as import(\"coding-agent-adapters\").AdapterType,\n );\n const memoryFilePath = ctx.ptyService.getMemoryFilePath(\n agentType as import(\"coding-agent-adapters\").AdapterType,\n );\n sendJson(res, {\n agentType,\n memoryFilePath,\n files,\n } as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error\n ? error.message\n : \"Failed to get workspace files\",\n 500,\n );\n }\n return true;\n }\n\n // === Approval Presets ===\n // GET /api/coding-agents/approval-presets\n if (method === \"GET\" && pathname === \"/api/coding-agents/approval-presets\") {\n try {\n const { listPresets } = await import(\"coding-agent-adapters\");\n const presets = listPresets();\n sendJson(res, presets as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to list presets\",\n 500,\n );\n }\n return true;\n }\n\n // GET /api/coding-agents/settings\n if (method === \"GET\" && pathname === \"/api/coding-agents/settings\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n sendJson(res, {\n defaultApprovalPreset: ctx.ptyService.defaultApprovalPreset,\n agentSelectionStrategy: ctx.ptyService.agentSelectionStrategy,\n defaultAgentType: ctx.ptyService.defaultAgentType,\n } as unknown as JsonValue);\n return true;\n }\n\n // GET /api/coding-agents/approval-config?agentType=claude&preset=autonomous\n if (method === \"GET\" && pathname === \"/api/coding-agents/approval-config\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const agentType = url.searchParams.get(\"agentType\");\n const preset = url.searchParams.get(\"preset\");\n if (!agentType || !preset) {\n sendError(res, \"agentType and preset query parameters required\", 400);\n return true;\n }\n\n try {\n const config = ctx.ptyService.getApprovalConfig(\n agentType as import(\"coding-agent-adapters\").AdapterType,\n preset as import(\"coding-agent-adapters\").ApprovalPreset,\n );\n sendJson(res, config as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to generate config\",\n 500,\n );\n }\n return true;\n }\n\n // === List Agents ===\n // GET /api/coding-agents\n if (method === \"GET\" && pathname === \"/api/coding-agents\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessions = await ctx.ptyService.listSessions();\n sendJson(res, sessions as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to list agents\",\n 500,\n );\n }\n return true;\n }\n\n // === Spawn Agent ===\n // POST /api/coding-agents/spawn\n if (method === \"POST\" && pathname === \"/api/coding-agents/spawn\") {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const body = await parseBody(req);\n const {\n agentType,\n workdir: rawWorkdir,\n task,\n memoryContent,\n approvalPreset,\n customCredentials,\n metadata,\n } = body;\n\n // Validate workdir: must be within workspace base dir or cwd\n const workspaceBaseDir = path.join(os.homedir(), \".milady\", \"workspaces\");\n const workspaceBaseDirResolved = path.resolve(workspaceBaseDir);\n const cwdResolved = path.resolve(process.cwd());\n const workspaceBaseDirReal = await realpath(workspaceBaseDirResolved).catch(\n () => workspaceBaseDirResolved,\n );\n const cwdReal = await realpath(cwdResolved).catch(() => cwdResolved);\n const allowedPrefixes = [workspaceBaseDirReal, cwdReal];\n let workdir = rawWorkdir as string | undefined;\n if (workdir) {\n const resolved = path.resolve(workdir);\n const resolvedReal = await realpath(resolved).catch(() => null);\n if (!resolvedReal) {\n sendError(res, \"workdir must exist\", 403);\n return true;\n }\n const isAllowed = allowedPrefixes.some(\n (prefix) =>\n resolvedReal === prefix || resolvedReal.startsWith(prefix + path.sep),\n );\n if (!isAllowed) {\n sendError(\n res,\n \"workdir must be within workspace base directory or cwd\",\n 403,\n );\n return true;\n }\n workdir = resolvedReal;\n }\n\n // Check concurrency limit before spawning\n const activeSessions = await ctx.ptyService.listSessions();\n const maxSessions = 8;\n if (activeSessions.length >= maxSessions) {\n sendError(\n res,\n `Concurrent session limit reached (${maxSessions})`,\n 429,\n );\n return true;\n }\n\n if (workdir) {\n try {\n await runBenchmarkPreflight(workdir);\n } catch (preflightError) {\n console.warn(\n `[coding-agent] benchmark preflight failed for ${workdir}:`,\n preflightError,\n );\n }\n }\n\n // Build credentials from runtime\n const credentials = {\n anthropicKey: ctx.runtime.getSetting(\"ANTHROPIC_API_KEY\") as\n | string\n | undefined,\n openaiKey: ctx.runtime.getSetting(\"OPENAI_API_KEY\") as\n | string\n | undefined,\n googleKey: ctx.runtime.getSetting(\"GOOGLE_GENERATIVE_AI_API_KEY\") as\n | string\n | undefined,\n githubToken: ctx.runtime.getSetting(\"GITHUB_TOKEN\") as\n | string\n | undefined,\n };\n\n // Read model preferences from runtime settings\n const agentStr = agentType\n ? (agentType as string).toLowerCase()\n : await ctx.ptyService.resolveAgentType();\n const piRequested = isPiAgentType(agentStr);\n const normalizedType = normalizeAgentType(agentStr);\n const prefixMap: Record<string, string> = {\n claude: \"PARALLAX_CLAUDE\",\n gemini: \"PARALLAX_GEMINI\",\n codex: \"PARALLAX_CODEX\",\n aider: \"PARALLAX_AIDER\",\n };\n const prefix = prefixMap[agentStr];\n const modelPowerful = prefix\n ? (ctx.runtime.getSetting(`${prefix}_MODEL_POWERFUL`) as string | null)\n : null;\n const modelFast = prefix\n ? (ctx.runtime.getSetting(`${prefix}_MODEL_FAST`) as string | null)\n : null;\n const aiderProvider =\n agentStr === \"aider\"\n ? (ctx.runtime.getSetting(\"PARALLAX_AIDER_PROVIDER\") as string | null)\n : null;\n\n // Check if coordinator is active — route blocking prompts through it\n const coordinator = getCoordinator(ctx.runtime);\n\n const session = await ctx.ptyService.spawnSession({\n name: `agent-${Date.now()}`,\n agentType: normalizedType,\n workdir: workdir as string,\n initialTask: piRequested\n ? toPiCommand(task as string | undefined)\n : (task as string),\n memoryContent: memoryContent as string | undefined,\n credentials,\n approvalPreset: approvalPreset as\n | import(\"coding-agent-adapters\").ApprovalPreset\n | undefined,\n customCredentials: customCredentials as\n | Record<string, string>\n | undefined,\n // Let adapter auto-response handle known prompts (permissions, trust, etc.)\n // instantly. The coordinator handles only unrecognized prompts via LLM.\n metadata: {\n requestedType: agentStr,\n ...(metadata as Record<string, unknown>),\n ...(aiderProvider ? { provider: aiderProvider } : {}),\n modelPrefs: {\n ...(modelPowerful ? { powerful: modelPowerful } : {}),\n ...(modelFast ? { fast: modelFast } : {}),\n },\n },\n });\n if (coordinator && task) {\n const label = (metadata as Record<string, unknown>)?.label as\n | string\n | undefined;\n coordinator.registerTask(session.id, {\n agentType:\n agentStr as import(\"../services/pty-service.js\").CodingAgentType,\n label: label || `agent-${session.id.slice(-8)}`,\n originalTask: task as string,\n workdir: session.workdir,\n });\n }\n\n sendJson(\n res,\n {\n sessionId: session.id,\n agentType: session.agentType,\n workdir: session.workdir,\n status: session.status,\n } as unknown as JsonValue,\n 201,\n );\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to spawn agent\",\n 500,\n );\n }\n return true;\n }\n\n // === Get Agent Status ===\n // GET /api/coding-agents/:id\n const agentMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)$/);\n if (method === \"GET\" && agentMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n const sessionId = agentMatch[1];\n const session = ctx.ptyService.getSession(sessionId);\n\n if (!session) {\n sendError(res, \"Agent session not found\", 404);\n return true;\n }\n\n sendJson(res, session as unknown as JsonValue);\n return true;\n }\n\n // === Send to Agent ===\n // POST /api/coding-agents/:id/send\n const sendMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)\\/send$/);\n if (method === \"POST\" && sendMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessionId = sendMatch[1];\n const body = await parseBody(req);\n const { input, keys } = body;\n\n if (keys) {\n // Send special keys (e.g. \"enter\", [\"down\",\"enter\"], \"Ctrl-C\")\n await ctx.ptyService.sendKeysToSession(\n sessionId,\n keys as string | string[],\n );\n sendJson(res, { success: true });\n } else if (input && typeof input === \"string\") {\n await ctx.ptyService.sendToSession(sessionId, input);\n sendJson(res, { success: true });\n } else {\n sendError(\n res,\n \"Either 'input' (string) or 'keys' (string|string[]) required\",\n 400,\n );\n return true;\n }\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to send input\",\n 500,\n );\n }\n return true;\n }\n\n // === Stop Agent ===\n // POST /api/coding-agents/:id/stop\n const stopMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)\\/stop$/);\n if (method === \"POST\" && stopMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessionId = stopMatch[1];\n await ctx.ptyService.stopSession(sessionId);\n sendJson(res, { success: true, sessionId });\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to stop agent\",\n 500,\n );\n }\n return true;\n }\n\n // === Get Agent Output ===\n // GET /api/coding-agents/:id/output\n const outputMatch = pathname.match(/^\\/api\\/coding-agents\\/([^/]+)\\/output$/);\n if (method === \"GET\" && outputMatch) {\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n try {\n const sessionId = outputMatch[1];\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const lines = parseInt(url.searchParams.get(\"lines\") || \"100\", 10);\n\n const output = await ctx.ptyService.getSessionOutput(sessionId, lines);\n sendJson(res, { sessionId, output });\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to get output\",\n 500,\n );\n }\n return true;\n }\n\n // === Get Buffered Terminal Output (raw ANSI for xterm.js hydration) ===\n // GET /api/coding-agents/:id/buffered-output\n const bufferedMatch = pathname.match(\n /^\\/api\\/coding-agents\\/([^/]+)\\/buffered-output$/,\n );\n if (method === \"GET\" && bufferedMatch) {\n if (!ctx.ptyService?.consoleBridge) {\n sendError(res, \"Console bridge not available\", 503);\n return true;\n }\n try {\n const sessionId = bufferedMatch[1];\n const output = ctx.ptyService.consoleBridge.getBufferedOutput(sessionId);\n sendJson(res, { sessionId, output });\n } catch (error) {\n sendError(\n res,\n error instanceof Error\n ? error.message\n : \"Failed to get buffered output\",\n 500,\n );\n }\n return true;\n }\n\n // Route not handled\n return false;\n}\n",
|
|
40
40
|
"/**\n * Swarm Coordinator Route Handlers\n *\n * Provides SSE streaming and HTTP API for the coordination layer:\n * - SSE event stream for real-time dashboard\n * - Task status and context queries\n * - Pending confirmation management\n * - Supervision level control\n *\n * @module api/coordinator-routes\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { SwarmCoordinator } from \"../services/swarm-coordinator.js\";\nimport type { RouteContext } from \"./routes.js\";\nimport { parseBody, sendError, sendJson } from \"./routes.js\";\n\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\nconst COORDINATOR_PREFIX = \"/api/coding-agents/coordinator\";\n\n/**\n * Handle coordinator routes (/api/coding-agents/coordinator/*)\n * Returns true if the route was handled, false otherwise.\n */\nexport async function handleCoordinatorRoutes(\n req: IncomingMessage,\n res: ServerResponse,\n pathname: string,\n ctx: RouteContext & { coordinator?: SwarmCoordinator },\n): Promise<boolean> {\n if (!pathname.startsWith(COORDINATOR_PREFIX)) {\n return false;\n }\n\n const method = req.method?.toUpperCase();\n const subPath = pathname.slice(COORDINATOR_PREFIX.length);\n\n if (!ctx.coordinator) {\n sendError(res, \"Swarm Coordinator not available\", 503);\n return true;\n }\n\n const coordinator = ctx.coordinator;\n\n // === SSE Event Stream ===\n // GET /api/coding-agents/coordinator/events\n if (method === \"GET\" && subPath === \"/events\") {\n // CORS is handled by the server middleware — no need to set it here.\n res.writeHead(200, {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n });\n\n // Send initial comment to establish connection\n res.write(\":ok\\n\\n\");\n\n // Register as SSE client (sends snapshot on connect)\n const unsubscribe = coordinator.addSseClient(res);\n\n // Clean up on close\n req.on(\"close\", unsubscribe);\n\n // Keep-alive ping every 30s\n const keepAlive = setInterval(() => {\n if (res.writableEnded) {\n clearInterval(keepAlive);\n return;\n }\n res.write(\":ping\\n\\n\");\n }, 30_000);\n\n req.on(\"close\", () => clearInterval(keepAlive));\n\n return true;\n }\n\n // === All Task Contexts ===\n // GET /api/coding-agents/coordinator/status\n if (method === \"GET\" && subPath === \"/status\") {\n const allTasks = coordinator.getAllTaskContexts();\n // Only return active tasks — stopped/completed/error are terminal states\n // and should not appear in the UI after refresh.\n const tasks = allTasks.filter(\n (t) => t.status !== \"stopped\" && t.status !== \"completed\" && t.status !== \"error\",\n );\n sendJson(res, {\n supervisionLevel: coordinator.getSupervisionLevel(),\n taskCount: tasks.length,\n tasks: tasks.map((t) => ({\n sessionId: t.sessionId,\n agentType: t.agentType,\n label: t.label,\n originalTask: t.originalTask,\n workdir: t.workdir,\n status: t.status,\n decisionCount: t.decisions.length,\n autoResolvedCount: t.autoResolvedCount,\n })),\n pendingConfirmations: coordinator.getPendingConfirmations().length,\n } as unknown as JsonValue);\n return true;\n }\n\n // === Single Task Context ===\n // GET /api/coding-agents/coordinator/tasks/:sessionId\n const taskMatch = subPath.match(/^\\/tasks\\/([^/]+)$/);\n if (method === \"GET\" && taskMatch) {\n const sessionId = taskMatch[1];\n const task = coordinator.getTaskContext(sessionId);\n if (!task) {\n sendError(res, \"Task context not found\", 404);\n return true;\n }\n sendJson(res, task as unknown as JsonValue);\n return true;\n }\n\n // === Pending Confirmations ===\n // GET /api/coding-agents/coordinator/pending\n if (method === \"GET\" && subPath === \"/pending\") {\n const pending = coordinator.getPendingConfirmations();\n sendJson(\n res,\n pending.map((p) => ({\n sessionId: p.sessionId,\n promptText: p.promptText,\n suggestedAction: p.llmDecision.action,\n suggestedResponse: p.llmDecision.response,\n reasoning: p.llmDecision.reasoning,\n agentType: p.taskContext.agentType,\n label: p.taskContext.label,\n createdAt: p.createdAt,\n })) as unknown as JsonValue,\n );\n return true;\n }\n\n // === Confirm/Reject Pending Decision ===\n // POST /api/coding-agents/coordinator/confirm/:sessionId\n const confirmMatch = subPath.match(/^\\/confirm\\/([^/]+)$/);\n if (method === \"POST\" && confirmMatch) {\n try {\n const sessionId = confirmMatch[1];\n const body = await parseBody(req);\n const approved = body.approved !== false; // default: approved\n const override = body.override as\n | { response?: string; useKeys?: boolean; keys?: string[] }\n | undefined;\n\n await coordinator.confirmDecision(sessionId, approved, override);\n sendJson(res, { success: true, sessionId, approved });\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to confirm decision\",\n error instanceof Error && error.message.includes(\"No pending\")\n ? 404\n : 500,\n );\n }\n return true;\n }\n\n // === Supervision Level ===\n // GET /api/coding-agents/coordinator/supervision\n if (method === \"GET\" && subPath === \"/supervision\") {\n sendJson(res, { level: coordinator.getSupervisionLevel() });\n return true;\n }\n\n // POST /api/coding-agents/coordinator/supervision\n if (method === \"POST\" && subPath === \"/supervision\") {\n try {\n const body = await parseBody(req);\n const level = body.level as string;\n if (![\"autonomous\", \"confirm\", \"notify\"].includes(level)) {\n sendError(\n res,\n 'Invalid supervision level. Must be \"autonomous\", \"confirm\", or \"notify\"',\n 400,\n );\n return true;\n }\n coordinator.setSupervisionLevel(\n level as \"autonomous\" | \"confirm\" | \"notify\",\n );\n sendJson(res, { success: true, level });\n } catch (error) {\n sendError(\n res,\n error instanceof Error\n ? error.message\n : \"Failed to set supervision level\",\n 500,\n );\n }\n return true;\n }\n\n // Not a coordinator route we recognize\n return false;\n}\n",
|
|
41
41
|
"/**\n * Coding Agent HTTP Hooks — Webhook Endpoint\n *\n * Receives structured hook events from coding agent CLI hooks systems.\n * Claude Code sends native HTTP hooks; Gemini CLI bridges via curl commands.\n * Replaces fragile PTY output scraping for state detection with deterministic\n * event-driven signals.\n *\n * @module api/hook-routes\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { RouteContext } from \"./routes.js\";\nimport { parseBody, sendError, sendJson } from \"./routes.js\";\n\n/**\n * Hook event payload (subset of fields we use).\n * Supports both Claude Code (native HTTP) and Gemini CLI (curl bridge).\n *\n * Claude docs: https://docs.anthropic.com/en/docs/claude-code/hooks\n * Gemini docs: https://geminicli.com/docs/hooks/reference\n */\ninterface HookEventPayload {\n hook_event_name: string;\n session_id?: string;\n cwd?: string;\n // Claude uses snake_case, Gemini uses camelCase\n tool_name?: string;\n toolName?: string;\n tool_input?: Record<string, unknown>;\n notification_type?: string;\n notificationType?: string;\n message?: string;\n}\n\n/**\n * Handle Claude Code HTTP hook routes.\n * Returns true if the route was handled, false otherwise.\n */\nexport async function handleHookRoutes(\n req: IncomingMessage,\n res: ServerResponse,\n pathname: string,\n ctx: RouteContext,\n): Promise<boolean> {\n if (pathname !== \"/api/coding-agents/hooks\") return false;\n\n const method = req.method?.toUpperCase();\n if (method !== \"POST\") {\n sendError(res, \"Method not allowed\", 405);\n return true;\n }\n\n if (!ctx.ptyService) {\n sendError(res, \"PTY Service not available\", 503);\n return true;\n }\n\n let body: Record<string, unknown>;\n try {\n body = await parseBody(req);\n } catch (err) {\n sendError(\n res,\n err instanceof Error ? err.message : \"Failed to parse request body\",\n 400,\n );\n return true;\n }\n\n const payload = body as unknown as HookEventPayload;\n const eventName = payload.hook_event_name;\n if (!eventName) {\n sendError(res, \"Missing hook_event_name\", 400);\n return true;\n }\n\n // Normalize field names: Gemini uses camelCase, Claude uses snake_case\n const toolName = payload.tool_name ?? payload.toolName;\n const notificationType =\n payload.notification_type ?? payload.notificationType;\n\n // Look up PTY session: prefer explicit header, fall back to cwd-based lookup\n const headerSessionId = req.headers[\"x-parallax-session-id\"] as\n | string\n | undefined;\n const sessionId = headerSessionId\n ? headerSessionId\n : payload.cwd\n ? ctx.ptyService.findSessionIdByCwd(payload.cwd)\n : undefined;\n\n if (!sessionId) {\n // Not fatal — the hook may fire before we've tracked the session.\n // Return success so the CLI doesn't retry.\n sendJson(res, { status: \"ignored\", reason: \"session_not_found\" });\n return true;\n }\n\n // Dispatch by event type\n switch (eventName) {\n // ── Claude Code events ──────────────────────────────────────────\n\n case \"PermissionRequest\": {\n // Auto-approve all tool permissions natively — no PTY keystroke needed.\n sendJson(res, {\n hookSpecificOutput: {\n hookEventName: \"PermissionRequest\",\n decision: { behavior: \"allow\" },\n },\n });\n ctx.ptyService.handleHookEvent(sessionId, \"permission_approved\", {\n tool: toolName,\n });\n return true;\n }\n\n case \"PreToolUse\": {\n // Track which tool is running — suppress stall detection.\n ctx.ptyService.handleHookEvent(sessionId, \"tool_running\", {\n toolName,\n source: \"hook\",\n });\n // Return allow decision so the tool proceeds without permission prompt.\n sendJson(res, {\n hookSpecificOutput: {\n hookEventName: \"PreToolUse\",\n permissionDecision: \"allow\",\n },\n });\n return true;\n }\n\n case \"Stop\": {\n // Agent finished responding — mark task complete.\n ctx.ptyService.handleHookEvent(sessionId, \"task_complete\", {\n source: \"hook\",\n });\n sendJson(res, {});\n return true;\n }\n\n case \"TaskCompleted\": {\n ctx.ptyService.handleHookEvent(sessionId, \"task_complete\", {\n source: \"hook_task_completed\",\n });\n sendJson(res, {});\n return true;\n }\n\n // ── Gemini CLI events ───────────────────────────────────────────\n\n case \"BeforeTool\": {\n // Track which tool is running — suppress stall detection.\n ctx.ptyService.handleHookEvent(sessionId, \"tool_running\", {\n toolName,\n source: \"gemini_hook\",\n });\n // Return allow + continue so Gemini proceeds without permission prompt.\n sendJson(res, { decision: \"allow\", continue: true });\n return true;\n }\n\n case \"AfterTool\": {\n // Tool finished — update activity (back to \"active\" state).\n ctx.ptyService.handleHookEvent(sessionId, \"notification\", {\n type: \"tool_complete\",\n message: `Tool ${toolName ?? \"unknown\"} finished`,\n });\n sendJson(res, { continue: true });\n return true;\n }\n\n case \"AfterAgent\": {\n // Agent loop ended — mark task complete.\n ctx.ptyService.handleHookEvent(sessionId, \"task_complete\", {\n source: \"gemini_hook\",\n });\n sendJson(res, { continue: true });\n return true;\n }\n\n case \"SessionEnd\": {\n // Session ending — mark exit.\n ctx.ptyService.handleHookEvent(sessionId, \"session_end\", {\n source: \"hook\",\n });\n sendJson(res, { continue: true });\n return true;\n }\n\n // ── Shared events ───────────────────────────────────────────────\n\n case \"Notification\": {\n // State change notifications (idle, permission, auth).\n // Gemini ToolPermission notifications get auto-approved.\n if (notificationType === \"ToolPermission\") {\n ctx.ptyService.handleHookEvent(sessionId, \"permission_approved\", {\n tool: toolName,\n });\n sendJson(res, { decision: \"allow\", continue: true });\n return true;\n }\n ctx.ptyService.handleHookEvent(sessionId, \"notification\", {\n type: notificationType,\n message: payload.message,\n });\n sendJson(res, { continue: true });\n return true;\n }\n\n default: {\n // Unknown event — acknowledge without action.\n sendJson(res, { status: \"ignored\", reason: \"unknown_event\" });\n return true;\n }\n }\n}\n",
|
|
42
42
|
"/**\n * Issue Route Handlers\n *\n * Handles routes for GitHub issue management:\n * - List issues, create issue\n * - Get issue, comment on issue, close issue\n *\n * @module api/issue-routes\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { RouteContext } from \"./routes.js\";\nimport { parseBody, sendError, sendJson } from \"./routes.js\";\n\ntype JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\n/**\n * Handle issue routes (/api/issues/*)\n * Returns true if the route was handled, false otherwise\n */\nexport async function handleIssueRoutes(\n req: IncomingMessage,\n res: ServerResponse,\n pathname: string,\n ctx: RouteContext,\n): Promise<boolean> {\n const method = req.method?.toUpperCase();\n\n // GET /api/issues?repo=owner/repo&state=open\n if (method === \"GET\" && pathname === \"/api/issues\") {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n\n try {\n const url = new URL(req.url || \"\", `http://${req.headers.host}`);\n const repo = url.searchParams.get(\"repo\");\n if (!repo) {\n sendError(res, \"repo query parameter required\", 400);\n return true;\n }\n const state = url.searchParams.get(\"state\") as\n | \"open\"\n | \"closed\"\n | \"all\"\n | null;\n const labelsParam = url.searchParams.get(\"labels\");\n const labels = labelsParam\n ? labelsParam.split(\",\").map((s) => s.trim())\n : undefined;\n\n const issues = await ctx.workspaceService.listIssues(repo, {\n state: state ?? \"open\",\n labels,\n });\n sendJson(res, issues as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to list issues\",\n 500,\n );\n }\n return true;\n }\n\n // POST /api/issues\n if (method === \"POST\" && pathname === \"/api/issues\") {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n\n try {\n const body = await parseBody(req);\n const { repo, title, body: issueBody, labels } = body;\n if (!repo || !title) {\n sendError(res, \"repo and title are required\", 400);\n return true;\n }\n\n const issue = await ctx.workspaceService.createIssue(repo as string, {\n title: title as string,\n body: (issueBody as string) ?? \"\",\n labels: labels as string[] | undefined,\n });\n sendJson(res, issue as unknown as JsonValue, 201);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to create issue\",\n 500,\n );\n }\n return true;\n }\n\n // GET /api/issues/:repo/:number (e.g., /api/issues/owner/repo/42)\n const issueGetMatch = pathname.match(\n /^\\/api\\/issues\\/([^/]+)\\/([^/]+)\\/(\\d+)$/,\n );\n if (method === \"GET\" && issueGetMatch) {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n\n try {\n const repo = `${issueGetMatch[1]}/${issueGetMatch[2]}`;\n const issueNumber = parseInt(issueGetMatch[3], 10);\n const issue = await ctx.workspaceService.getIssue(repo, issueNumber);\n sendJson(res, issue as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to get issue\",\n 500,\n );\n }\n return true;\n }\n\n // POST /api/issues/:repo/:number/comment\n const commentMatch = pathname.match(\n /^\\/api\\/issues\\/([^/]+)\\/([^/]+)\\/(\\d+)\\/comment$/,\n );\n if (method === \"POST\" && commentMatch) {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n\n try {\n const repo = `${commentMatch[1]}/${commentMatch[2]}`;\n const issueNumber = parseInt(commentMatch[3], 10);\n const body = await parseBody(req);\n if (!body.body) {\n sendError(res, \"body is required\", 400);\n return true;\n }\n const comment = await ctx.workspaceService.addComment(\n repo,\n issueNumber,\n body.body as string,\n );\n sendJson(res, comment as unknown as JsonValue, 201);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to add comment\",\n 500,\n );\n }\n return true;\n }\n\n // POST /api/issues/:repo/:number/close\n const closeMatch = pathname.match(\n /^\\/api\\/issues\\/([^/]+)\\/([^/]+)\\/(\\d+)\\/close$/,\n );\n if (method === \"POST\" && closeMatch) {\n if (!ctx.workspaceService) {\n sendError(res, \"Workspace Service not available\", 503);\n return true;\n }\n\n try {\n const repo = `${closeMatch[1]}/${closeMatch[2]}`;\n const issueNumber = parseInt(closeMatch[3], 10);\n const issue = await ctx.workspaceService.closeIssue(repo, issueNumber);\n sendJson(res, issue as unknown as JsonValue);\n } catch (error) {\n sendError(\n res,\n error instanceof Error ? error.message : \"Failed to close issue\",\n 500,\n );\n }\n return true;\n }\n\n // Route not handled\n return false;\n}\n",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"/**\n * Coding Agent API Routes — Dispatcher\n *\n * Provides shared helpers (parseBody, sendJson, sendError), types, and the\n * top-level route dispatcher that delegates to domain-specific route modules.\n *\n * @module api/routes\n */\n\nimport type { IncomingMessage, ServerResponse } from \"node:http\";\nimport type { IAgentRuntime } from \"@elizaos/core\";\nimport type { PTYService } from \"../services/pty-service.js\";\nimport type { SwarmCoordinator } from \"../services/swarm-coordinator.js\";\nimport type { CodingWorkspaceService } from \"../services/workspace-service.js\";\nimport { handleAgentRoutes } from \"./agent-routes.js\";\nimport { handleCoordinatorRoutes } from \"./coordinator-routes.js\";\nimport { handleHookRoutes } from \"./hook-routes.js\";\nimport { handleIssueRoutes } from \"./issue-routes.js\";\nimport { handleWorkspaceRoutes } from \"./workspace-routes.js\";\n\nexport type JsonValue =\n | string\n | number\n | boolean\n | null\n | JsonValue[]\n | { [key: string]: JsonValue };\n\nexport interface RouteContext {\n runtime: IAgentRuntime;\n ptyService: PTYService | null;\n workspaceService: CodingWorkspaceService | null;\n coordinator?: SwarmCoordinator;\n}\n\n// Max request body size (1 MB)\nexport const MAX_BODY_SIZE = 1024 * 1024;\n\n// Helper to parse JSON body with size limit\nexport async function parseBody(\n req: IncomingMessage,\n): Promise<Record<string, unknown>> {\n return new Promise((resolve, reject) => {\n let body = \"\";\n let size = 0;\n req.on(\"data\", (chunk: Buffer | string) => {\n size += typeof chunk === \"string\" ? chunk.length : chunk.byteLength;\n if (size > MAX_BODY_SIZE) {\n req.destroy();\n reject(new Error(\"Request body too large\"));\n return;\n }\n body += chunk;\n });\n req.on(\"end\", () => {\n try {\n resolve(body ? JSON.parse(body) : {});\n } catch {\n reject(new Error(\"Invalid JSON body\"));\n }\n });\n req.on(\"error\", reject);\n });\n}\n\n// Helper to send JSON response\nexport function sendJson(\n res: ServerResponse,\n data: JsonValue,\n status = 200,\n): void {\n res.writeHead(status, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(data));\n}\n\n// Helper to send error\nexport function sendError(\n res: ServerResponse,\n message: string,\n status = 400,\n): void {\n sendJson(res, { error: message }, status);\n}\n\n/**\n * Handle coding agent routes\n * Returns true if the route was handled, false otherwise\n */\nexport async function handleCodingAgentRoutes(\n req: IncomingMessage,\n res: ServerResponse,\n pathname: string,\n ctx: RouteContext,\n): Promise<boolean> {\n // Delegate to hook routes first — hooks need fast responses\n if (await handleHookRoutes(req, res, pathname, ctx)) {\n return true;\n }\n\n // Delegate to coordinator routes (before agent routes — more specific prefix)\n if (await handleCoordinatorRoutes(req, res, pathname, ctx)) {\n return true;\n }\n\n // Delegate to agent routes\n if (await handleAgentRoutes(req, res, pathname, ctx)) {\n return true;\n }\n\n // Delegate to workspace routes\n if (await handleWorkspaceRoutes(req, res, pathname, ctx)) {\n return true;\n }\n\n // Delegate to issue routes\n if (await handleIssueRoutes(req, res, pathname, ctx)) {\n return true;\n }\n\n // Route not handled\n return false;\n}\n\n/**\n * Create route handler with services from runtime\n */\nexport function createCodingAgentRouteHandler(\n runtime: IAgentRuntime,\n coordinator?: SwarmCoordinator,\n) {\n const ptyService = runtime.getService(\n \"PTY_SERVICE\",\n ) as unknown as PTYService | null;\n const workspaceService = runtime.getService(\n \"CODING_WORKSPACE_SERVICE\",\n ) as unknown as CodingWorkspaceService | null;\n\n const ctx: RouteContext = {\n runtime,\n ptyService,\n workspaceService,\n coordinator,\n };\n\n return (req: IncomingMessage, res: ServerResponse, pathname: string) =>\n handleCodingAgentRoutes(req, res, pathname, ctx);\n}\n",
|
|
45
45
|
"/**\n * Coding Agent Plugin for Milady\n *\n * Provides orchestration capabilities for CLI-based coding agents:\n * - PTY session management (spawn, control, monitor coding agents)\n * - Git workspace provisioning (clone, branch, PR creation)\n * - GitHub issue management (create, list, update, close)\n * - Integration with Claude Code, Codex, Gemini CLI, Aider, Pi, etc.\n *\n * @module @elizaos/plugin-agent-orchestrator\n */\n\nimport type { Plugin } from \"@elizaos/core\";\nimport { finalizeWorkspaceAction } from \"./actions/finalize-workspace.js\";\nimport { listAgentsAction } from \"./actions/list-agents.js\";\n// Actions - Issue management\nimport { manageIssuesAction } from \"./actions/manage-issues.js\";\n// Actions - Workspace management\nimport { provisionWorkspaceAction } from \"./actions/provision-workspace.js\";\nimport { sendToAgentAction } from \"./actions/send-to-agent.js\";\n// Actions - PTY management\nimport { spawnAgentAction } from \"./actions/spawn-agent.js\";\n// Actions - Unified task launcher\nimport { startCodingTaskAction } from \"./actions/start-coding-task.js\";\nimport { stopAgentAction } from \"./actions/stop-agent.js\";\n// Providers\nimport { codingAgentExamplesProvider } from \"./providers/action-examples.js\";\nimport { activeWorkspaceContextProvider } from \"./providers/active-workspace-context.js\";\n// Services\nimport { PTYService } from \"./services/pty-service.js\";\nimport { CodingWorkspaceService } from \"./services/workspace-service.js\";\n\nexport const codingAgentPlugin: Plugin = {\n name: \"@elizaos/plugin-agent-orchestrator\",\n description:\n \"Orchestrate CLI coding agents (Claude Code, Codex, Gemini, Aider, Pi, etc.) via PTY sessions, \" +\n \"manage git workspaces, and handle GitHub issues for autonomous coding tasks\",\n\n // NOTE: init() is NOT reliably called by ElizaOS for workspace plugins.\n // SwarmCoordinator and auth callback wiring is done in PTYService.start()\n // which ElizaOS calls reliably via the services lifecycle.\n\n // Services manage PTY sessions and git workspaces\n // biome-ignore lint/suspicious/noExplicitAny: ElizaOS Plugin type expects Service[] but our classes don't extend their base Service\n services: [PTYService as any, CodingWorkspaceService as any],\n\n // Actions expose capabilities to the agent\n actions: [\n // Unified task launcher (provision + spawn in one step)\n startCodingTaskAction,\n // PTY session management (for direct control)\n spawnAgentAction,\n sendToAgentAction,\n stopAgentAction,\n listAgentsAction,\n // Workspace management\n provisionWorkspaceAction,\n finalizeWorkspaceAction,\n // Issue management\n manageIssuesAction,\n ],\n\n // No evaluators needed for now\n evaluators: [],\n\n // Providers inject context into the prompt\n providers: [\n activeWorkspaceContextProvider, // Live workspace/session state\n codingAgentExamplesProvider, // Structured action call examples\n ],\n};\n\nexport default codingAgentPlugin;\n\n// Re-export coding agent adapter types\nexport type {\n AdapterType,\n AgentCredentials,\n AgentFileDescriptor,\n ApprovalConfig,\n ApprovalPreset,\n PreflightResult,\n PresetDefinition,\n RiskLevel,\n ToolCategory,\n WriteMemoryOptions,\n} from \"coding-agent-adapters\";\nexport { finalizeWorkspaceAction } from \"./actions/finalize-workspace.js\";\nexport { listAgentsAction } from \"./actions/list-agents.js\";\nexport { manageIssuesAction } from \"./actions/manage-issues.js\";\nexport { provisionWorkspaceAction } from \"./actions/provision-workspace.js\";\nexport { sendToAgentAction } from \"./actions/send-to-agent.js\";\nexport { spawnAgentAction } from \"./actions/spawn-agent.js\";\n// Re-export actions\nexport { startCodingTaskAction } from \"./actions/start-coding-task.js\";\nexport { stopAgentAction } from \"./actions/stop-agent.js\";\n// Re-export API routes for server integration\nexport {\n createCodingAgentRouteHandler,\n handleCodingAgentRoutes,\n} from \"./api/routes.js\";\n// Re-export service types\nexport type {\n CodingAgentType,\n PTYServiceConfig,\n SessionEventName,\n SessionInfo,\n SpawnSessionOptions,\n} from \"./services/pty-service.js\";\n// Re-export services for direct access\nexport { getCoordinator, PTYService } from \"./services/pty-service.js\";\nexport type {\n AgentDecisionCallback,\n ChatMessageCallback,\n CoordinationDecision,\n PendingDecision,\n SupervisionLevel,\n SwarmCompleteCallback,\n SwarmEvent,\n TaskCompletionSummary,\n TaskContext,\n WsBroadcastCallback,\n} from \"./services/swarm-coordinator.js\";\nexport { SwarmCoordinator } from \"./services/swarm-coordinator.js\";\nexport type { CoordinationLLMResponse, SharedDecision } from \"./services/swarm-coordinator-prompts.js\";\nexport {\n buildBlockedEventMessage,\n buildTurnCompleteEventMessage,\n} from \"./services/swarm-coordinator-prompts.js\";\nexport type {\n AuthPromptCallback,\n CodingWorkspaceConfig,\n CommitOptions,\n ProvisionWorkspaceOptions,\n PushOptions,\n WorkspaceResult,\n} from \"./services/workspace-service.js\";\nexport { CodingWorkspaceService } from \"./services/workspace-service.js\";\n"
|
|
46
46
|
],
|
|
47
|
-
"mappings": "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",
|
|
48
|
-
"debugId": "
|
|
47
|
+
"mappings": "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",
|
|
48
|
+
"debugId": "C0B3DB8984D7685C64756E2164756E21",
|
|
49
49
|
"names": []
|
|
50
50
|
}
|