summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDax Raad <[email protected]>2025-07-21 15:23:47 -0400
committerDax Raad <[email protected]>2025-07-21 15:23:47 -0400
commit45c0578b22ffc2149dd292ed58faa7ecec96d39e (patch)
tree2e1018db4b3e3d46f85c8b0f5f25bcf5749e67af
parent1ded535175fe61ced5db3aab4c7558b25cc52827 (diff)
downloadopencode-45c0578b22ffc2149dd292ed58faa7ecec96d39e.tar.gz
opencode-45c0578b22ffc2149dd292ed58faa7ecec96d39e.zip
fix title generation bug
-rw-r--r--packages/opencode/src/session/index.ts17
1 files changed, 10 insertions, 7 deletions
diff --git a/packages/opencode/src/session/index.ts b/packages/opencode/src/session/index.ts
index 7fe3336ba..8187814c2 100644
--- a/packages/opencode/src/session/index.ts
+++ b/packages/opencode/src/session/index.ts
@@ -125,7 +125,7 @@ export namespace Session {
message: MessageV2.User
parts: MessageV2.Part[]
processed: boolean
- callback: (input: ReturnType<typeof chat>) => void
+ callback: (input: { info: MessageV2.Assistant; parts: MessageV2.Part[] }) => void
}[]
>()
@@ -576,7 +576,7 @@ export namespace Session {
const lastSummary = msgs.findLast((msg) => msg.info.role === "assistant" && msg.info.summary === true)
if (lastSummary) msgs = msgs.filter((msg) => msg.info.id >= lastSummary.info.id)
- if (msgs.length === 0 && !session.parentID) {
+ if (msgs.length === 1 && !session.parentID) {
const small = (await Provider.getSmallModel(input.providerID)) ?? model
generateText({
maxOutputTokens: small.info.reasoning ? 1024 : 20,
@@ -614,7 +614,6 @@ export namespace Session {
})
.catch(() => {})
}
- msgs.push({ info: userMsg, parts: userParts })
const mode = await Mode.get(input.mode ?? "build")
let system = input.providerID === "anthropic" ? [PROMPT_ANTHROPIC_SPOOF.trim()] : []
@@ -799,10 +798,14 @@ export namespace Session {
}),
})
const result = await processor.process(stream)
- const queued = (state().queued.get(input.sessionID) ?? []).find((item) => !item.processed)
- if (queued) {
- queued.processed = true
- return chat(queued.input)
+ const queued = state().queued.get(input.sessionID) ?? []
+ const unprocessed = queued.find((x) => !x.processed)
+ if (unprocessed) {
+ unprocessed.processed = true
+ return chat(unprocessed.input)
+ }
+ for (const item of queued) {
+ item.callback(result)
}
state().queued.delete(input.sessionID)
return result