diff --git a/packages/daemon/src/__tests__/helpers.ts b/packages/daemon/src/__tests__/helpers.ts index 3ebd06f..e26073a 100644 --- a/packages/daemon/src/__tests__/helpers.ts +++ b/packages/daemon/src/__tests__/helpers.ts @@ -78,7 +78,7 @@ export class FakeOpencodeRegistry implements OpencodeRuntimeManager { session: { create: async () => { const id = `session-${instanceId}-${this.sessionSequence++}`; - return { data: fakeSession({ id }) }; + return fakeSession({ id }); }, prompt: async (parameters) => { const sessionId = parameters.sessionID; @@ -111,10 +111,8 @@ export class FakeOpencodeRegistry implements OpencodeRuntimeManager { } const messageId = `message-${this.messageSequence++}`; return { - data: { - info: fakeAssistantMessage({ id: messageId }), - parts: [fakeTextPart({ text: `reply:${prompt}` })], - }, + info: fakeAssistantMessage({ id: messageId }), + parts: [fakeTextPart({ text: `reply:${prompt}` })], }; } finally { this.activeByInstance.set(instanceId, active - 1); diff --git a/packages/daemon/src/opencode.ts b/packages/daemon/src/opencode.ts index 599b773..641dddf 100644 --- a/packages/daemon/src/opencode.ts +++ b/packages/daemon/src/opencode.ts @@ -7,10 +7,7 @@ import { } from "@opencode-ai/sdk/v2"; export interface OpencodeSessionClient { - create(parameters: { - directory?: string; - title?: string; - }): Promise<{ data: Session }>; + create(parameters: { directory?: string; title?: string }): Promise; prompt(parameters: { sessionID: string; directory?: string; @@ -22,7 +19,7 @@ export interface OpencodeSessionClient { system?: string; variant?: string; parts?: Array; - }): Promise<{ data: { info: AssistantMessage; parts: Part[] } }>; + }): Promise<{ info: AssistantMessage; parts: Part[] }>; abort(parameters: { sessionID: string; directory?: string; @@ -70,7 +67,7 @@ export class OpencodeRegistry implements OpencodeRuntimeManager { return entry.starting; } - const starting = createOpencode().then(({ client, server }) => { + const starting = createOpencode().then(async ({ client, server }) => { const runtime: ManagedOpencodeRuntime = { client: { instance: { @@ -78,16 +75,21 @@ export class OpencodeRegistry implements OpencodeRuntimeManager { }, session: { create: async (parameters) => { - return await client.session.create(parameters, { + const res = await client.session.create(parameters, { throwOnError: true, responseStyle: "data", }); + return res as unknown as Session; }, prompt: async (parameters) => { - return await client.session.prompt(parameters, { + const res = await client.session.prompt(parameters, { throwOnError: true, responseStyle: "data", }); + return res as unknown as { + info: AssistantMessage; + parts: Part[]; + }; }, abort: (parameters) => client.session.abort(parameters, { diff --git a/packages/daemon/src/server.ts b/packages/daemon/src/server.ts index 0560a4a..a04ce65 100644 --- a/packages/daemon/src/server.ts +++ b/packages/daemon/src/server.ts @@ -538,8 +538,8 @@ export class Daemon { variant: job.task.variant, parts: [{ type: "text", text: job.task.prompt }], }); - job.messageId = response.data.info.id; - job.outputText = extractText(response.data.parts); + job.messageId = response.info.id; + job.outputText = extractText(response.parts); job.error = undefined; job.state = controller.signal.aborted ? "cancelled" : "succeeded"; break; @@ -575,10 +575,10 @@ export class Daemon { directory: instance.directory, title: job.session.title, }); - job.sessionId = session.data.id; + job.sessionId = session.id; this.state = this.store.upsertJob(this.state, job); await this.store.save(this.state); - return session.data.id; + return session.id; } private async startInstance(instanceId: string): Promise {