Bladeren bron

fix: prevent title regeneration on auto compact (#1628)

Timo Clasen 6 maanden geleden
bovenliggende
commit
49aa48ce58
1 gewijzigde bestanden met toevoegingen van 13 en 2 verwijderingen
  1. 13 2
      packages/opencode/src/session/index.ts

+ 13 - 2
packages/opencode/src/session/index.ts

@@ -48,6 +48,17 @@ export namespace Session {
 
   const OUTPUT_TOKEN_MAX = 32_000
 
+  const parentSessionTitlePrefix = "New session - "
+  const childSessionTitlePrefix = "Child session - "
+
+  function createDefaultTitle(isChild = false) {
+    return (isChild ? childSessionTitlePrefix : parentSessionTitlePrefix) + new Date().toISOString()
+  }
+
+  function isDefaultTitle(title: string) {
+    return title.startsWith(parentSessionTitlePrefix)
+  }
+
   export const Info = z
     .object({
       id: Identifier.schema("session"),
@@ -153,7 +164,7 @@ export namespace Session {
       id: Identifier.descending("session"),
       version: Installation.VERSION,
       parentID,
-      title: (parentID ? "Child session - " : "New Session - ") + new Date().toISOString(),
+      title: createDefaultTitle(!!parentID),
       time: {
         created: Date.now(),
         updated: Date.now(),
@@ -631,7 +642,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 === 1 && !session.parentID) {
+    if (msgs.length === 1 && !session.parentID && isDefaultTitle(session.title)) {
       const small = (await Provider.getSmallModel(input.providerID)) ?? model
       generateText({
         maxOutputTokens: small.info.reasoning ? 1024 : 20,