diff --git a/packages/opencode/src/server/instance/session.ts b/packages/opencode/src/server/instance/session.ts index 8db48b73a..7cfb08967 100644 --- a/packages/opencode/src/server/instance/session.ts +++ b/packages/opencode/src/server/instance/session.ts @@ -662,10 +662,15 @@ export const SessionRoutes = lazy(() => async (c) => { const query = c.req.valid("query") const params = c.req.valid("param") - const result = await SessionSummary.diff({ - sessionID: params.sessionID, - messageID: query.messageID, - }) + const result = await AppRuntime.runPromise( + Effect.gen(function* () { + const summary = yield* SessionSummary.Service + return yield* summary.diff({ + sessionID: params.sessionID, + messageID: query.messageID, + }) + }), + ) return c.json(result) }, ) @@ -926,9 +931,14 @@ export const SessionRoutes = lazy(() => ), async (c) => { const params = c.req.valid("param") - const result = await SessionSummary.artifacts({ - sessionID: params.sessionID, - }) + const result = await AppRuntime.runPromise( + Effect.gen(function* () { + const summary = yield* SessionSummary.Service + return yield* summary.artifacts({ + sessionID: params.sessionID, + }) + }), + ) return c.json(result) }, ) diff --git a/packages/opencode/test/server/session-runtime-routes.test.ts b/packages/opencode/test/server/session-runtime-routes.test.ts index 8b5619e71..d7b425aa5 100644 --- a/packages/opencode/test/server/session-runtime-routes.test.ts +++ b/packages/opencode/test/server/session-runtime-routes.test.ts @@ -30,7 +30,7 @@ afterEach(async () => { }) describe("session runtime routes", () => { - test("share, unshare, artifacts, command, and shell routes are wired through the instance router", async () => { + test("share, unshare, diff, artifacts, command, and shell routes are wired through the instance router", async () => { await using tmp = await tmpdir({ git: true }) await Instance.provide({ directory: tmp.path, @@ -70,6 +70,10 @@ describe("session runtime routes", () => { expect(artifactsRes.status).toBe(200) expect(Array.isArray(await artifactsRes.json())).toBe(true) + const diffRes = await app.request(`/session/${session.id}/diff`) + expect(diffRes.status).toBe(200) + expect(await diffRes.json()).toHaveProperty("kind") + const commandRes = await app.request(`/session/${session.id}/command`, { method: "POST", headers: { "Content-Type": "application/json" },