From 71bb5a1253ecb831c7aa51bf266d99a6da8545a0 Mon Sep 17 00:00:00 2001 From: Mark IJbema Date: Wed, 6 May 2026 21:58:47 +0200 Subject: [PATCH] fix(cli): use established double-cast for PromptInput in HttpApi handler MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace 'as SessionPrompt.PromptInput' with 'as unknown as SessionPrompt.PromptInput' to match the pre-existing pattern in the legacy Hono handler (instance/session.ts:901,936). The single cast was rejected by TypeScript because the schema-derived ctx.payload has readonly arrays while Kilo's PromptInput override declares parts as mutable PartInputUnion[]. The double cast is the established Kilo workaround for this readonly→mutable mismatch and keeps the Kilo diff vs upstream minimal. --- .../server/routes/instance/httpapi/handlers/session.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts b/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts index 85971733c10..a14e138e0d6 100644 --- a/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts +++ b/packages/opencode/src/server/routes/instance/httpapi/handlers/session.ts @@ -259,10 +259,8 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session", return HttpServerResponse.stream( Stream.fromEffect( promptSvc - .prompt({ - ...ctx.payload, - sessionID: ctx.params.sessionID, - } as SessionPrompt.PromptInput) + // kilocode_change - cast to bridge schema-readonly→PromptInput-mutable; matches legacy Hono session.ts + .prompt({ ...ctx.payload, sessionID: ctx.params.sessionID } as unknown as SessionPrompt.PromptInput) .pipe(Effect.provideService(InstanceRef, instance), Effect.provideService(WorkspaceRef, workspace)), ).pipe( Stream.map((message) => JSON.stringify(message)), @@ -276,7 +274,8 @@ export const sessionHandlers = HttpApiBuilder.group(InstanceHttpApi, "session", params: { sessionID: SessionID } payload: typeof PromptPayload.Type }) { - yield* promptSvc.prompt({ ...ctx.payload, sessionID: ctx.params.sessionID } as SessionPrompt.PromptInput).pipe( + // kilocode_change - cast to bridge schema-readonly→PromptInput-mutable; matches legacy Hono session.ts + yield* promptSvc.prompt({ ...ctx.payload, sessionID: ctx.params.sessionID } as unknown as SessionPrompt.PromptInput).pipe( Effect.catchCause((cause) => Effect.gen(function* () { yield* Effect.logError("prompt_async failed", { sessionID: ctx.params.sessionID, cause })