Переглянути джерело

fix(question): restore flat reply sdk shape (#22487)

Kit Langton 5 днів тому
батько
коміт
3cf7c7536b

+ 7 - 2
packages/opencode/src/server/instance/httpapi/question.ts

@@ -9,6 +9,11 @@ import { HttpApi, HttpApiBuilder, HttpApiEndpoint, HttpApiGroup, OpenApi } from
 import type { Handler } from "hono"
 
 const root = "/experimental/httpapi/question"
+const Reply = Schema.Struct({
+  answers: Schema.Array(Question.Answer).annotate({
+    description: "User answers in order of questions (each answer is an array of selected labels)",
+  }),
+})
 
 const Api = HttpApi.make("question")
   .add(
@@ -25,7 +30,7 @@ const Api = HttpApi.make("question")
         ),
         HttpApiEndpoint.post("reply", `${root}/:requestID/reply`, {
           params: { requestID: QuestionID },
-          payload: Question.Reply,
+          payload: Reply,
           success: Schema.Boolean,
         }).annotateMerge(
           OpenApi.annotations({
@@ -62,7 +67,7 @@ const QuestionLive = HttpApiBuilder.group(
 
     const reply = Effect.fn("QuestionHttpApi.reply")(function* (ctx: {
       params: { requestID: QuestionID }
-      payload: Question.Reply
+      payload: Schema.Schema.Type<typeof Reply>
     }) {
       yield* svc.reply({
         requestID: ctx.params.requestID,

+ 7 - 1
packages/opencode/src/server/instance/question.ts

@@ -8,6 +8,12 @@ import z from "zod"
 import { errors } from "../error"
 import { lazy } from "../../util/lazy"
 
+const Reply = z.object({
+  answers: Question.Answer.zod
+    .array()
+    .describe("User answers in order of questions (each answer is an array of selected labels)"),
+})
+
 export const QuestionRoutes = lazy(() =>
   new Hono()
     .get(
@@ -56,7 +62,7 @@ export const QuestionRoutes = lazy(() =>
           requestID: QuestionID.zod,
         }),
       ),
-      validator("json", Question.Reply.zod),
+      validator("json", Reply),
       async (c) => {
         const params = c.req.valid("param")
         const json = c.req.valid("json")

+ 3 - 3
packages/sdk/js/src/v2/gen/sdk.gen.ts

@@ -105,10 +105,10 @@ import type {
   PtyRemoveResponses,
   PtyUpdateErrors,
   PtyUpdateResponses,
+  QuestionAnswer,
   QuestionListResponses,
   QuestionRejectErrors,
   QuestionRejectResponses,
-  QuestionReply,
   QuestionReplyErrors,
   QuestionReplyResponses,
   SessionAbortErrors,
@@ -2738,7 +2738,7 @@ export class Question extends HeyApiClient {
       requestID: string
       directory?: string
       workspace?: string
-      questionReply?: QuestionReply
+      answers?: Array<QuestionAnswer>
     },
     options?: Options<never, ThrowOnError>,
   ) {
@@ -2750,7 +2750,7 @@ export class Question extends HeyApiClient {
             { in: "path", key: "requestID" },
             { in: "query", key: "directory" },
             { in: "query", key: "workspace" },
-            { key: "questionReply", map: "body" },
+            { in: "body", key: "answers" },
           ],
         },
       ],

+ 6 - 8
packages/sdk/js/src/v2/gen/types.gen.ts

@@ -1925,13 +1925,6 @@ export type SubtaskPartInput = {
   command?: string
 }
 
-export type QuestionReply = {
-  /**
-   * User answers in order of questions (each answer is an array of selected labels)
-   */
-  answers: Array<QuestionAnswer>
-}
-
 export type ProviderAuthMethod = {
   type: "oauth" | "api"
   label: string
@@ -4259,7 +4252,12 @@ export type QuestionListResponses = {
 export type QuestionListResponse = QuestionListResponses[keyof QuestionListResponses]
 
 export type QuestionReplyData = {
-  body?: QuestionReply
+  body?: {
+    /**
+     * User answers in order of questions (each answer is an array of selected labels)
+     */
+    answers: Array<QuestionAnswer>
+  }
   path: {
     requestID: string
   }