diff --git a/apps/x/apps/main/src/ipc.ts b/apps/x/apps/main/src/ipc.ts index a6638d11..b65dcc5c 100644 --- a/apps/x/apps/main/src/ipc.ts +++ b/apps/x/apps/main/src/ipc.ts @@ -287,6 +287,12 @@ export function setupIpcHandlers() { await runsCore.stop(args.runId); return { success: true }; }, + 'runs:fetch': async (_event, args) => { + return runsCore.fetchRun(args.runId); + }, + 'runs:list': async (_event, args) => { + return runsCore.listRuns(args.cursor); + }, 'oauth:connect': async (_event, args) => { return await connectProvider(args.provider); }, diff --git a/apps/x/packages/core/src/runs/runs.ts b/apps/x/packages/core/src/runs/runs.ts index 472e70d5..7d7a8ebb 100644 --- a/apps/x/packages/core/src/runs/runs.ts +++ b/apps/x/packages/core/src/runs/runs.ts @@ -1,7 +1,7 @@ import z from "zod"; import container from "../di/container.js"; import { IMessageQueue } from "../application/lib/message-queue.js"; -import { AskHumanResponseEvent, ToolPermissionResponseEvent, CreateRunOptions, Run, ToolPermissionAuthorizePayload, AskHumanResponsePayload } from "@x/shared/dist/runs.js"; +import { AskHumanResponseEvent, ToolPermissionResponseEvent, CreateRunOptions, Run, ListRunsResponse, ToolPermissionAuthorizePayload, AskHumanResponsePayload } from "@x/shared/dist/runs.js"; import { IRunsRepo } from "./repo.js"; import { IAgentRuntime } from "../agents/runtime.js"; import { IBus } from "../application/lib/bus.js"; @@ -49,4 +49,14 @@ export async function replyToHumanInputRequest(runId: string, ev: z.infer { console.log(`Stopping run ${runId}`); throw new Error('Not implemented'); +} + +export async function fetchRun(runId: string): Promise> { + const repo = container.resolve('runsRepo'); + return repo.fetch(runId); +} + +export async function listRuns(cursor?: string): Promise> { + const repo = container.resolve('runsRepo'); + return repo.list(cursor); } \ No newline at end of file diff --git a/apps/x/packages/shared/src/ipc.ts b/apps/x/packages/shared/src/ipc.ts index 6dae75d3..2f6e2f49 100644 --- a/apps/x/packages/shared/src/ipc.ts +++ b/apps/x/packages/shared/src/ipc.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; import { RelPath, Encoding, Stat, DirEntry, ReaddirOptions, ReadFileResult, WorkspaceChangeEvent, WriteFileOptions, WriteFileResult, RemoveOptions } from './workspace.js'; import { ListToolsResponse } from './mcp.js'; -import { AskHumanResponsePayload, CreateRunOptions, Run, ToolPermissionAuthorizePayload } from './runs.js'; +import { AskHumanResponsePayload, CreateRunOptions, Run, ListRunsResponse, ToolPermissionAuthorizePayload } from './runs.js'; // ============================================================================ // Runtime Validation Schemas (Single Source of Truth) @@ -156,6 +156,18 @@ const ipcSchemas = { success: z.literal(true), }), }, + 'runs:fetch': { + req: z.object({ + runId: z.string(), + }), + res: Run, + }, + 'runs:list': { + req: z.object({ + cursor: z.string().optional(), + }), + res: ListRunsResponse, + }, 'runs:events': { req: z.null(), res: z.null(),