Explorar el Código

fix: dont auto continue if compaction was manual

Aiden Cline hace 2 meses
padre
commit
020ee56f25

+ 1 - 0
packages/opencode/src/server/server.ts

@@ -830,6 +830,7 @@ export namespace Server {
               providerID: body.providerID,
               modelID: body.modelID,
             },
+            auto: false,
           })
           await SessionPrompt.loop(id)
           return c.json(true)

+ 4 - 1
packages/opencode/src/session/compaction.ts

@@ -95,6 +95,7 @@ export namespace SessionCompaction {
     }
     agent: string
     abort: AbortSignal
+    auto: boolean
   }) {
     const model = await Provider.getModel(input.model.providerID, input.model.modelID)
     const system = [...SystemPrompt.compaction(model.providerID)]
@@ -198,7 +199,7 @@ export namespace SessionCompaction {
         }),
       }),
     )
-    if (result === "continue") {
+    if (result === "continue" && input.auto) {
       const continueMsg = await Session.updateMessage({
         id: Identifier.ascending("message"),
         role: "user",
@@ -234,6 +235,7 @@ export namespace SessionCompaction {
         providerID: z.string(),
         modelID: z.string(),
       }),
+      auto: z.boolean(),
     }),
     async (input) => {
       const msg = await Session.updateMessage({
@@ -251,6 +253,7 @@ export namespace SessionCompaction {
         messageID: msg.id,
         sessionID: msg.sessionID,
         type: "compaction",
+        auto: input.auto,
       })
     },
   )

+ 1 - 0
packages/opencode/src/session/message-v2.ts

@@ -146,6 +146,7 @@ export namespace MessageV2 {
 
   export const CompactionPart = PartBase.extend({
     type: z.literal("compaction"),
+    auto: z.boolean(),
   }).meta({
     ref: "CompactionPart",
   })

+ 2 - 0
packages/opencode/src/session/prompt.ts

@@ -408,6 +408,7 @@ export namespace SessionPrompt {
             modelID: model.modelID,
           },
           sessionID,
+          auto: task.auto,
         })
         if (result === "stop") break
         continue
@@ -423,6 +424,7 @@ export namespace SessionPrompt {
           sessionID,
           agent: lastUser.agent,
           model: lastUser.model,
+          auto: true,
         })
         continue
       }

+ 1 - 0
packages/sdk/js/src/gen/types.gen.ts

@@ -371,6 +371,7 @@ export type CompactionPart = {
   sessionID: string
   messageID: string
   type: "compaction"
+  auto: boolean
 }
 
 export type Part =