summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-11-25 12:10:56 -0600
committerAiden Cline <[email protected]>2025-11-25 12:11:09 -0600
commit020ee56f25b58103a787d1c96b326e31b495ad06 (patch)
treed5cd0dad7ad0575d044ca9c327f1e6d588362ef5
parent87b295bc3d43c011ef96153439c4e3d64a9b0a88 (diff)
downloadopencode-020ee56f25b58103a787d1c96b326e31b495ad06.tar.gz
opencode-020ee56f25b58103a787d1c96b326e31b495ad06.zip
fix: dont auto continue if compaction was manual
-rw-r--r--packages/opencode/src/server/server.ts1
-rw-r--r--packages/opencode/src/session/compaction.ts5
-rw-r--r--packages/opencode/src/session/message-v2.ts1
-rw-r--r--packages/opencode/src/session/prompt.ts2
-rw-r--r--packages/sdk/js/src/gen/types.gen.ts1
5 files changed, 9 insertions, 1 deletions
diff --git a/packages/opencode/src/server/server.ts b/packages/opencode/src/server/server.ts
index 51240ae2e..65c635ee1 100644
--- a/packages/opencode/src/server/server.ts
+++ b/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)
diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts
index 1255d39f0..e985372a1 100644
--- a/packages/opencode/src/session/compaction.ts
+++ b/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,
})
},
)
diff --git a/packages/opencode/src/session/message-v2.ts b/packages/opencode/src/session/message-v2.ts
index 20b612f54..1a9b08d12 100644
--- a/packages/opencode/src/session/message-v2.ts
+++ b/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",
})
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts
index 741e3cc7e..e6c64f96b 100644
--- a/packages/opencode/src/session/prompt.ts
+++ b/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
}
diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts
index fdb6dcd64..2de8ca2f1 100644
--- a/packages/sdk/js/src/gen/types.gen.ts
+++ b/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 =