@juspay/shooter 1.17.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/build/client/_app/immutable/assets/{0.B0O0vCnX.css → 0.NV8k8wxG.css} +1 -1
  2. package/build/client/_app/immutable/assets/0.NV8k8wxG.css.br +0 -0
  3. package/build/client/_app/immutable/assets/{0.B0O0vCnX.css.gz → 0.NV8k8wxG.css.gz} +0 -0
  4. package/build/client/_app/immutable/chunks/{BctvtE4d.js → 8lO1IL7u.js} +1 -1
  5. package/build/client/_app/immutable/chunks/8lO1IL7u.js.br +0 -0
  6. package/build/client/_app/immutable/chunks/{BctvtE4d.js.gz → 8lO1IL7u.js.gz} +0 -0
  7. package/build/client/_app/immutable/chunks/B9WQy_3X.js +1 -0
  8. package/build/client/_app/immutable/chunks/B9WQy_3X.js.br +0 -0
  9. package/build/client/_app/immutable/chunks/B9WQy_3X.js.gz +0 -0
  10. package/build/client/_app/immutable/chunks/BdtLzPpO.js +1 -0
  11. package/build/client/_app/immutable/chunks/BdtLzPpO.js.br +0 -0
  12. package/build/client/_app/immutable/chunks/BdtLzPpO.js.gz +0 -0
  13. package/build/client/_app/immutable/chunks/{CjfxuHdN.js → DJvX78LW.js} +1 -1
  14. package/build/client/_app/immutable/chunks/DJvX78LW.js.br +0 -0
  15. package/build/client/_app/immutable/chunks/DJvX78LW.js.gz +0 -0
  16. package/build/client/_app/immutable/chunks/nWG9RHyB.js +3 -0
  17. package/build/client/_app/immutable/chunks/nWG9RHyB.js.br +0 -0
  18. package/build/client/_app/immutable/chunks/nWG9RHyB.js.gz +0 -0
  19. package/build/client/_app/immutable/entry/{app.CNaTe-zm.js → app.f46Ko1hu.js} +2 -2
  20. package/build/client/_app/immutable/entry/app.f46Ko1hu.js.br +0 -0
  21. package/build/client/_app/immutable/entry/app.f46Ko1hu.js.gz +0 -0
  22. package/build/client/_app/immutable/entry/start.BVDjNnXt.js +1 -0
  23. package/build/client/_app/immutable/entry/start.BVDjNnXt.js.br +2 -0
  24. package/build/client/_app/immutable/entry/start.BVDjNnXt.js.gz +0 -0
  25. package/build/client/_app/immutable/nodes/{0.C3ELOf4c.js → 0.D_9EwVmq.js} +1 -1
  26. package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.br +0 -0
  27. package/build/client/_app/immutable/nodes/0.D_9EwVmq.js.gz +0 -0
  28. package/build/client/_app/immutable/nodes/{1.Fqso94b3.js → 1.C4eFlqSB.js} +1 -1
  29. package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.br +0 -0
  30. package/build/client/_app/immutable/nodes/1.C4eFlqSB.js.gz +0 -0
  31. package/build/client/_app/immutable/nodes/{2.BusCVJWk.js → 2.CdC092Za.js} +1 -1
  32. package/build/client/_app/immutable/nodes/2.CdC092Za.js.br +0 -0
  33. package/build/client/_app/immutable/nodes/2.CdC092Za.js.gz +0 -0
  34. package/build/client/_app/immutable/nodes/{3.DUlpocIc.js → 3.Dhf4ZWW0.js} +1 -1
  35. package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.br +0 -0
  36. package/build/client/_app/immutable/nodes/3.Dhf4ZWW0.js.gz +0 -0
  37. package/build/client/_app/immutable/nodes/{6.CG4eKRH0.js → 6.B3SEB_li.js} +1 -1
  38. package/build/client/_app/immutable/nodes/6.B3SEB_li.js.br +0 -0
  39. package/build/client/_app/immutable/nodes/6.B3SEB_li.js.gz +0 -0
  40. package/build/client/_app/immutable/nodes/{7.DHilxD1o.js → 7.DV8cJ1lX.js} +1 -1
  41. package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.br +0 -0
  42. package/build/client/_app/immutable/nodes/7.DV8cJ1lX.js.gz +0 -0
  43. package/build/client/_app/immutable/nodes/{8.BjKgvSie.js → 8.Bs362gyb.js} +2 -2
  44. package/build/client/_app/immutable/nodes/8.Bs362gyb.js.br +0 -0
  45. package/build/client/_app/immutable/nodes/8.Bs362gyb.js.gz +0 -0
  46. package/build/client/_app/immutable/nodes/{9.BRT6HOXB.js → 9.Cf7_3uqT.js} +1 -1
  47. package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.br +0 -0
  48. package/build/client/_app/immutable/nodes/9.Cf7_3uqT.js.gz +0 -0
  49. package/build/client/_app/version.json +1 -1
  50. package/build/client/_app/version.json.br +0 -0
  51. package/build/client/_app/version.json.gz +0 -0
  52. package/build/server/chunks/{0-BWFSL107.js → 0-Cd7jY0a7.js} +3 -3
  53. package/build/server/chunks/{0-BWFSL107.js.map → 0-Cd7jY0a7.js.map} +1 -1
  54. package/build/server/chunks/{1-Bw5KlAjL.js → 1-C4BOGoJY.js} +2 -2
  55. package/build/server/chunks/{1-Bw5KlAjL.js.map → 1-C4BOGoJY.js.map} +1 -1
  56. package/build/server/chunks/{2-CQ3yYSVK.js → 2-Ba0mNwJ6.js} +2 -2
  57. package/build/server/chunks/{2-CQ3yYSVK.js.map → 2-Ba0mNwJ6.js.map} +1 -1
  58. package/build/server/chunks/{3-DZ4H9hPs.js → 3-Pg8t1uJU.js} +2 -2
  59. package/build/server/chunks/{3-DZ4H9hPs.js.map → 3-Pg8t1uJU.js.map} +1 -1
  60. package/build/server/chunks/{6-BZ0enR6b.js → 6-D8xbnTSo.js} +2 -2
  61. package/build/server/chunks/{6-BZ0enR6b.js.map → 6-D8xbnTSo.js.map} +1 -1
  62. package/build/server/chunks/{7-Lg8imTZn.js → 7-CkVK06S0.js} +2 -2
  63. package/build/server/chunks/{7-Lg8imTZn.js.map → 7-CkVK06S0.js.map} +1 -1
  64. package/build/server/chunks/{8-DKs4yOL7.js → 8-C8qVhrds.js} +2 -2
  65. package/build/server/chunks/{8-DKs4yOL7.js.map → 8-C8qVhrds.js.map} +1 -1
  66. package/build/server/chunks/{9-UNmpUWDY.js → 9-fL5zqN0T.js} +2 -2
  67. package/build/server/chunks/{9-UNmpUWDY.js.map → 9-fL5zqN0T.js.map} +1 -1
  68. package/build/server/chunks/{_server.ts-B1z0q6qZ.js → _server.ts-BA_uWcPw.js} +4 -5
  69. package/build/server/chunks/_server.ts-BA_uWcPw.js.map +1 -0
  70. package/build/server/chunks/{_server.ts-5wx4ZppI.js → _server.ts-Bu3s5hfv.js} +3 -3
  71. package/build/server/chunks/{_server.ts-5wx4ZppI.js.map → _server.ts-Bu3s5hfv.js.map} +1 -1
  72. package/build/server/chunks/{_server.ts-CKXVBbwb.js → _server.ts-CwAjt91u.js} +8 -8
  73. package/build/server/chunks/_server.ts-CwAjt91u.js.map +1 -0
  74. package/build/server/chunks/{_server.ts-CgHc1Zpx.js → _server.ts-DZP2lhaY.js} +3 -3
  75. package/build/server/chunks/{_server.ts-CgHc1Zpx.js.map → _server.ts-DZP2lhaY.js.map} +1 -1
  76. package/build/server/chunks/{_server.ts-BMMTS86y.js → _server.ts-DZgfQKiH.js} +3 -4
  77. package/build/server/chunks/{_server.ts-BMMTS86y.js.map → _server.ts-DZgfQKiH.js.map} +1 -1
  78. package/build/server/chunks/{_server.ts-Bt7EAfjo.js → _server.ts-MbnroWEF.js} +25 -48
  79. package/build/server/chunks/_server.ts-MbnroWEF.js.map +1 -0
  80. package/build/server/chunks/{pty-manager-RmhVe2Ez.js → pty-manager-DmNSCKAr.js} +99 -2
  81. package/build/server/chunks/pty-manager-DmNSCKAr.js.map +1 -0
  82. package/build/server/chunks/qwen-reader-DGfUbKaJ.js +2112 -0
  83. package/build/server/chunks/qwen-reader-DGfUbKaJ.js.map +1 -0
  84. package/build/server/chunks/{registry-DzJj2E6I.js → registry-Kcw2UCMv.js} +55 -23
  85. package/build/server/chunks/registry-Kcw2UCMv.js.map +1 -0
  86. package/build/server/index.js +1 -1
  87. package/build/server/index.js.map +1 -1
  88. package/build/server/manifest.js +15 -15
  89. package/build/server/manifest.js.map +1 -1
  90. package/package.json +2 -2
  91. package/scripts/e2e-all-features.sh +165 -0
  92. package/scripts/e2e-cross-terminal.sh +168 -0
  93. package/server.ts +12 -0
  94. package/src/lib/modules/client/common/provider.ts +0 -2
  95. package/src/lib/modules/client/terminal/ChatView.svelte +9 -2
  96. package/src/lib/modules/client/terminal/LaunchSheet.svelte +3 -0
  97. package/src/lib/modules/server/sessions/amp-reader.ts +439 -0
  98. package/src/lib/modules/server/sessions/copilot-reader.ts +542 -0
  99. package/src/lib/modules/server/sessions/cursor-reader.ts +634 -0
  100. package/src/lib/modules/server/sessions/gemini-reader.ts +48 -25
  101. package/src/lib/modules/server/sessions/opencode-reader.ts +13 -12
  102. package/src/lib/modules/server/sessions/process-detector.ts +37 -60
  103. package/src/lib/modules/server/sessions/provider-paths.ts +173 -0
  104. package/src/lib/modules/server/sessions/qwen-reader.ts +41 -15
  105. package/src/lib/modules/server/sessions/registry.ts +55 -14
  106. package/src/lib/modules/server/terminal/generic-session-watcher.ts +163 -0
  107. package/src/lib/modules/server/terminal/pty-manager.ts +51 -0
  108. package/src/lib/modules/server/ws/session-handler.ts +11 -1
  109. package/src/lib/theme.css +1 -2
  110. package/src/lib/types/generated/Sessions.ts +1 -4
  111. package/src/lib/types/server.ts +23 -6
  112. package/src/lib/types/sessions.ts +1 -10
  113. package/src/routes/api/sessions/connect/+server.ts +7 -3
  114. package/build/client/_app/immutable/assets/0.B0O0vCnX.css.br +0 -0
  115. package/build/client/_app/immutable/chunks/BctvtE4d.js.br +0 -0
  116. package/build/client/_app/immutable/chunks/BxFShcQO.js +0 -1
  117. package/build/client/_app/immutable/chunks/BxFShcQO.js.br +0 -0
  118. package/build/client/_app/immutable/chunks/BxFShcQO.js.gz +0 -0
  119. package/build/client/_app/immutable/chunks/ByzqAuXw.js +0 -3
  120. package/build/client/_app/immutable/chunks/ByzqAuXw.js.br +0 -0
  121. package/build/client/_app/immutable/chunks/ByzqAuXw.js.gz +0 -0
  122. package/build/client/_app/immutable/chunks/CjfxuHdN.js.br +0 -0
  123. package/build/client/_app/immutable/chunks/CjfxuHdN.js.gz +0 -0
  124. package/build/client/_app/immutable/chunks/Pw0jDB7M.js +0 -1
  125. package/build/client/_app/immutable/chunks/Pw0jDB7M.js.br +0 -0
  126. package/build/client/_app/immutable/chunks/Pw0jDB7M.js.gz +0 -0
  127. package/build/client/_app/immutable/entry/app.CNaTe-zm.js.br +0 -0
  128. package/build/client/_app/immutable/entry/app.CNaTe-zm.js.gz +0 -0
  129. package/build/client/_app/immutable/entry/start.hxYnjcDu.js +0 -1
  130. package/build/client/_app/immutable/entry/start.hxYnjcDu.js.br +0 -0
  131. package/build/client/_app/immutable/entry/start.hxYnjcDu.js.gz +0 -0
  132. package/build/client/_app/immutable/nodes/0.C3ELOf4c.js.br +0 -0
  133. package/build/client/_app/immutable/nodes/0.C3ELOf4c.js.gz +0 -0
  134. package/build/client/_app/immutable/nodes/1.Fqso94b3.js.br +0 -0
  135. package/build/client/_app/immutable/nodes/1.Fqso94b3.js.gz +0 -0
  136. package/build/client/_app/immutable/nodes/2.BusCVJWk.js.br +0 -0
  137. package/build/client/_app/immutable/nodes/2.BusCVJWk.js.gz +0 -0
  138. package/build/client/_app/immutable/nodes/3.DUlpocIc.js.br +0 -0
  139. package/build/client/_app/immutable/nodes/3.DUlpocIc.js.gz +0 -0
  140. package/build/client/_app/immutable/nodes/6.CG4eKRH0.js.br +0 -0
  141. package/build/client/_app/immutable/nodes/6.CG4eKRH0.js.gz +0 -0
  142. package/build/client/_app/immutable/nodes/7.DHilxD1o.js.br +0 -0
  143. package/build/client/_app/immutable/nodes/7.DHilxD1o.js.gz +0 -0
  144. package/build/client/_app/immutable/nodes/8.BjKgvSie.js.br +0 -0
  145. package/build/client/_app/immutable/nodes/8.BjKgvSie.js.gz +0 -0
  146. package/build/client/_app/immutable/nodes/9.BRT6HOXB.js.br +0 -0
  147. package/build/client/_app/immutable/nodes/9.BRT6HOXB.js.gz +0 -0
  148. package/build/server/chunks/_server.ts-B1z0q6qZ.js.map +0 -1
  149. package/build/server/chunks/_server.ts-Bt7EAfjo.js.map +0 -1
  150. package/build/server/chunks/_server.ts-CKXVBbwb.js.map +0 -1
  151. package/build/server/chunks/opencode-db-path-BwaPufWf.js +0 -411
  152. package/build/server/chunks/opencode-db-path-BwaPufWf.js.map +0 -1
  153. package/build/server/chunks/pty-manager-RmhVe2Ez.js.map +0 -1
  154. package/build/server/chunks/qwen-reader-2fTFuC_D.js +0 -622
  155. package/build/server/chunks/qwen-reader-2fTFuC_D.js.map +0 -1
  156. package/build/server/chunks/registry-DzJj2E6I.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"qwen-reader-2fTFuC_D.js","sources":["../../../.svelte-kit/adapter-node/chunks/qwen-reader.js"],"sourcesContent":["import * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport { homedir } from \"os\";\nimport * as path from \"path\";\nconst MAX_GEMINI_FILE_BYTES = 64 * 1024 * 1024;\nconst GEMINI_TMP = path.join(homedir(), \".gemini\", \"tmp\");\nconst GEMINI_PROJECTS_JSON = path.join(homedir(), \".gemini\", \"projects.json\");\nfunction detectActiveGeminiSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const out = [];\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatFiles = collectChatFiles(hashDir);\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const record = readChatFile(chatFile);\n if (record) {\n out.push({\n cwd,\n id: record.sessionId,\n startedAt: new Date(record.startTime).getTime()\n });\n }\n } catch {\n }\n }\n const logsPath = path.join(hashDir, \"logs.json\");\n try {\n const stat = fs.statSync(logsPath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const entries = readLogsJson(logsPath);\n if (entries.length > 0) {\n const last = entries[entries.length - 1];\n if (last) {\n const alreadyAdded = out.some((o) => o.id === last.sessionId && o.cwd === cwd);\n if (!alreadyAdded) {\n out.push({\n cwd,\n id: last.sessionId,\n startedAt: new Date(entries[0]?.timestamp ?? last.timestamp).getTime()\n });\n }\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction getGeminiConversation(sessionId, offset = 0, limit = 200) {\n const projectDirs = collectProjectHashDirs();\n for (const hashDir of projectDirs) {\n const chatFile = findChatFileForSession(hashDir, sessionId);\n if (chatFile) {\n return conversationFromChatFile(chatFile, offset, limit);\n }\n }\n for (const hashDir of projectDirs) {\n const messages = conversationFromLogsJson(hashDir, sessionId);\n if (messages.length > 0) {\n if (offset === 0 && messages.length > limit) {\n return messages.slice(messages.length - limit);\n }\n return messages.slice(offset, offset + limit);\n }\n }\n return [];\n}\nfunction listGeminiProjects() {\n const projectHashToCwd = buildHashToCwdMap();\n const projectDirs = collectProjectHashDirs();\n const byCwd = /* @__PURE__ */ new Map();\n for (const hashDir of projectDirs) {\n const hash = path.basename(hashDir);\n const cwd = projectHashToCwd.get(hash) ?? hash;\n const chatSessions = collectChatSessions(hashDir, cwd);\n if (chatSessions.length > 0) {\n for (const session of chatSessions) {\n appendToMap(byCwd, cwd, session);\n }\n continue;\n }\n const logSessions = sessionsFromLogsJson(hashDir, cwd);\n for (const session of logSessions) {\n appendToMap(byCwd, cwd, session);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n const isRawHash = /^[0-9a-f]{64}$/i.test(cwd);\n projects.push({\n fullPath: cwd,\n id: shortHash$1(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: isRawHash ? `Gemini (${cwd.slice(0, 8)})` : segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction appendToMap(map, key, value) {\n let bucket = map.get(key);\n if (!bucket) {\n bucket = [];\n map.set(key, bucket);\n }\n bucket.push(value);\n}\nfunction buildHashToCwdMap() {\n const map = /* @__PURE__ */ new Map();\n try {\n const raw = fs.readFileSync(GEMINI_PROJECTS_JSON, \"utf-8\");\n const data = JSON.parse(raw);\n for (const [slugOrHash, absolutePath] of Object.entries(data)) {\n map.set(slugOrHash, absolutePath);\n const computed = crypto.createHash(\"sha256\").update(absolutePath).digest(\"hex\");\n map.set(computed, absolutePath);\n }\n } catch {\n }\n return map;\n}\nfunction cleanTitle(text) {\n const first = text.replace(/\\s+/g, \" \").trim().split(\"\\n\")[0]?.trim() ?? \"\";\n if (!first) {\n return \"Untitled Session\";\n }\n return first.length > 80 ? `${first.slice(0, 77)}...` : first;\n}\nfunction collectChatFiles(hashDir) {\n const chatsDir = path.join(hashDir, \"chats\");\n try {\n return fs.readdirSync(chatsDir, { withFileTypes: true }).filter((e) => e.isFile() && e.name.startsWith(\"session-\") && e.name.endsWith(\".json\")).map((e) => path.join(chatsDir, e.name));\n } catch {\n return [];\n }\n}\nfunction collectChatSessions(hashDir, cwd) {\n const chatFiles = collectChatFiles(hashDir);\n const sessions = [];\n for (const chatFile of chatFiles) {\n try {\n const stat = fs.statSync(chatFile);\n const record = readChatFile(chatFile);\n if (!record) {\n continue;\n }\n const userMessages = record.messages.filter((m) => m.type === \"user\");\n const firstUserMsg = userMessages[0];\n let title = \"Untitled Session\";\n if (firstUserMsg) {\n title = cleanTitle(extractTextFromContent(firstUserMsg.content));\n }\n sessions.push({\n created: record.startTime,\n gitBranch: \"\",\n id: record.sessionId,\n messageCount: record.messages.length,\n modified: stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: record.summary ?? \"\",\n title\n });\n } catch {\n }\n }\n return sessions;\n}\nfunction collectProjectHashDirs() {\n try {\n return fs.readdirSync(GEMINI_TMP, { withFileTypes: true }).filter((e) => e.isDirectory()).map((e) => path.join(GEMINI_TMP, e.name));\n } catch {\n return [];\n }\n}\nfunction conversationFromChatFile(chatFile, offset, limit) {\n try {\n const record = readChatFile(chatFile);\n if (!record) {\n return [];\n }\n const messages = record.messages.filter((m) => m.type === \"user\" || m.type === \"gemini\").map(messageRecordToMessage);\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx]?.role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (err) {\n console.error(\"[gemini] Failed to read chat file:\", err);\n return [];\n }\n}\nfunction conversationFromLogsJson(hashDir, sessionId) {\n const logsPath = path.join(hashDir, \"logs.json\");\n const entries = readLogsJson(logsPath);\n return entries.filter((e) => e.sessionId === sessionId).map(\n (entry) => ({\n id: `${entry.sessionId}-${String(entry.messageId)}`,\n parts: [{ content: entry.message, type: \"text\" }],\n role: \"user\",\n timestamp: entry.timestamp\n })\n );\n}\nfunction extractTextFromContent(content) {\n if (typeof content === \"string\") {\n return content;\n }\n return content.filter((p) => \"text\" in p).map((p) => p.text).join(\" \");\n}\nfunction findChatFileForSession(hashDir, sessionId) {\n const shortId = sessionId.slice(0, 8);\n const chatsDir = path.join(hashDir, \"chats\");\n try {\n const entries = fs.readdirSync(chatsDir, { withFileTypes: true });\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.startsWith(\"session-\") || !entry.name.endsWith(\".json\")) {\n continue;\n }\n if (entry.name.includes(shortId)) {\n return path.join(chatsDir, entry.name);\n }\n }\n for (const entry of entries) {\n if (!entry.isFile() || !entry.name.startsWith(\"session-\") || !entry.name.endsWith(\".json\")) {\n continue;\n }\n const record = readChatFile(path.join(chatsDir, entry.name));\n if (record?.sessionId === sessionId) {\n return path.join(chatsDir, entry.name);\n }\n }\n } catch {\n }\n return null;\n}\nfunction isGeminiLogEntry(v) {\n if (typeof v !== \"object\" || v === null) {\n return false;\n }\n const obj = v;\n return typeof obj.sessionId === \"string\" && typeof obj.messageId === \"number\" && typeof obj.message === \"string\" && typeof obj.timestamp === \"string\";\n}\nfunction messageRecordToMessage(record) {\n const role = record.type === \"user\" ? \"user\" : \"assistant\";\n const parts = [];\n if (record.type === \"gemini\" && record.thoughts) {\n for (const thought of record.thoughts) {\n parts.push({ content: thought.summary ?? \"\", type: \"thinking\" });\n }\n }\n const rawContent = record.content;\n const contentParts = typeof rawContent === \"string\" ? [{ text: rawContent }] : rawContent;\n for (const part of contentParts) {\n if (\"functionCall\" in part) {\n parts.push({\n id: part.functionCall.id ?? part.functionCall.name,\n input: part.functionCall.args,\n toolName: part.functionCall.name,\n type: \"tool_use\"\n });\n } else if (\"thought\" in part && part.thought === true) {\n parts.push({ content: part.text, type: \"thinking\" });\n } else if (\"text\" in part) {\n parts.push({ content: part.text, type: \"text\" });\n }\n }\n if (record.type === \"gemini\" && record.toolCalls) {\n for (const tc of record.toolCalls) {\n const alreadyInParts = parts.some((p) => p.type === \"tool_use\" && p.id === tc.id);\n if (!alreadyInParts) {\n parts.push({\n id: tc.id,\n input: tc.args,\n toolName: tc.name,\n type: \"tool_use\"\n });\n }\n }\n }\n return {\n id: record.id,\n parts,\n role,\n timestamp: record.timestamp\n };\n}\nfunction readChatFile(filePath) {\n try {\n if (fs.statSync(filePath).size > MAX_GEMINI_FILE_BYTES) {\n return null;\n }\n return JSON.parse(fs.readFileSync(filePath, \"utf-8\"));\n } catch {\n return null;\n }\n}\nfunction readLogsJson(logsPath) {\n try {\n if (fs.statSync(logsPath).size > MAX_GEMINI_FILE_BYTES) {\n return [];\n }\n const parsed = JSON.parse(fs.readFileSync(logsPath, \"utf-8\"));\n return Array.isArray(parsed) ? parsed.filter(isGeminiLogEntry) : [];\n } catch {\n return [];\n }\n}\nfunction sessionsFromLogsJson(hashDir, cwd) {\n const logsPath = path.join(hashDir, \"logs.json\");\n let stat;\n try {\n stat = fs.statSync(logsPath);\n } catch {\n return [];\n }\n const entries = readLogsJson(logsPath);\n if (entries.length === 0) {\n return [];\n }\n const bySession = /* @__PURE__ */ new Map();\n for (const entry of entries) {\n let bucket = bySession.get(entry.sessionId);\n if (!bucket) {\n bucket = [];\n bySession.set(entry.sessionId, bucket);\n }\n bucket.push(entry);\n }\n const sessions = [];\n for (const [sessionId, sessionEntries] of bySession) {\n const first = sessionEntries[0];\n const last = sessionEntries[sessionEntries.length - 1];\n sessions.push({\n created: first?.timestamp ?? stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount: sessionEntries.length,\n modified: last?.timestamp ?? stat.mtime.toISOString(),\n projectPath: cwd,\n source: \"gemini\",\n summary: \"\",\n title: cleanTitle(first?.message ?? \"\")\n });\n }\n return sessions;\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst QWEN_PROJECTS = path.join(homedir(), \".qwen\", \"projects\");\nconst PREFIX_BYTES = 64 * 1024;\nconst MAX_QWEN_FILE_BYTES = 16 * 1024 * 1024;\nconst SYSTEM_TAG_PREFIXES = [\n \"<command-name>\",\n \"<local-command\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction detectActiveQwenSessions(thresholdMs) {\n const cutoff = Date.now() - thresholdMs;\n const out = [];\n for (const filePath of collectQwenFiles()) {\n try {\n const stat = fs.statSync(filePath);\n if (stat.mtimeMs < cutoff) {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (meta) {\n out.push({ cwd: meta.cwd, id: meta.id, startedAt: stat.birthtimeMs });\n }\n } catch {\n }\n }\n return out;\n}\nfunction getQwenConversation(sessionId, offset = 0, limit = 200) {\n if (!/^[A-Za-z0-9_-]+$/.test(sessionId)) {\n return [];\n }\n const filePath = collectQwenFiles().find((p) => path.basename(p) === `${sessionId}.jsonl`);\n if (!filePath) {\n return [];\n }\n try {\n const messages = [];\n for (const line of readQwenTextBounded(filePath).split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n try {\n const msg = qwenLineToMessage(JSON.parse(trimmed));\n if (msg) {\n messages.push(msg);\n }\n } catch {\n }\n }\n if (offset === 0 && messages.length > limit) {\n let startIdx = messages.length - limit;\n while (startIdx > 0 && messages[startIdx].role !== \"user\") {\n startIdx--;\n }\n return messages.slice(startIdx);\n }\n return messages.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[qwen] Failed to read conversation:\", error);\n return [];\n }\n}\nfunction listQwenProjects() {\n const byCwd = /* @__PURE__ */ new Map();\n for (const filePath of collectQwenFiles()) {\n let stat;\n try {\n stat = fs.statSync(filePath);\n } catch {\n continue;\n }\n const meta = readMeta(readPrefix(filePath));\n if (!meta) {\n continue;\n }\n const session = {\n created: meta.started || stat.birthtime.toISOString(),\n gitBranch: meta.gitBranch,\n id: meta.id,\n messageCount: 0,\n modified: stat.mtime.toISOString(),\n projectPath: meta.cwd,\n source: \"qwen\",\n summary: \"\",\n title: meta.title || \"Untitled Session\"\n };\n const bucket = byCwd.get(meta.cwd);\n if (bucket) {\n bucket.push(session);\n } else {\n byCwd.set(meta.cwd, [session]);\n }\n }\n const projects = [];\n for (const [cwd, sessions] of byCwd) {\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const segments = cwd.split(\"/\").filter(Boolean);\n projects.push({\n fullPath: cwd,\n id: shortHash(cwd),\n lastModified: sessions[0]?.modified ?? \"\",\n name: segments.slice(-2).join(\"/\"),\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction collectQwenFiles() {\n const out = [];\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(QWEN_PROJECTS, { withFileTypes: true });\n } catch {\n return out;\n }\n for (const dir of projectDirs) {\n if (!dir.isDirectory()) {\n continue;\n }\n const chatsDir = path.join(QWEN_PROJECTS, dir.name, \"chats\");\n try {\n for (const f of fs.readdirSync(chatsDir)) {\n if (f.endsWith(\".jsonl\")) {\n out.push(path.join(chatsDir, f));\n }\n }\n } catch {\n }\n }\n return out;\n}\nfunction qwenLineToMessage(entry) {\n const type = entry.type;\n if (type !== \"user\" && type !== \"assistant\") {\n return null;\n }\n const message = entry.message ?? {};\n const rawParts = Array.isArray(message.parts) ? message.parts : [];\n const parts = [];\n for (const raw of rawParts) {\n if (typeof raw !== \"object\" || raw === null) {\n continue;\n }\n const p = raw;\n if (p.functionCall && typeof p.functionCall === \"object\") {\n const fc = p.functionCall;\n const toolName = typeof fc.name === \"string\" ? fc.name : \"tool\";\n parts.push({\n id: typeof fc.id === \"string\" ? fc.id : toolName,\n input: fc.args ?? {},\n toolName,\n type: \"tool_use\"\n });\n } else if (p.thought === true && typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"thinking\" });\n } else if (typeof p.text === \"string\") {\n parts.push({ content: p.text, type: \"text\" });\n }\n }\n if (parts.length === 0 && typeof message.content === \"string\" && message.content) {\n parts.push({ content: message.content, type: \"text\" });\n }\n if (parts.length === 0) {\n return null;\n }\n return {\n id: typeof entry.uuid === \"string\" ? entry.uuid : `qwen-${type}`,\n parts,\n role: type === \"user\" ? \"user\" : \"assistant\",\n timestamp: typeof entry.timestamp === \"string\" ? entry.timestamp : \"\"\n };\n}\nfunction readMeta(prefix) {\n let cwd = \"\";\n let id = \"\";\n let gitBranch = \"\";\n let started = \"\";\n let title = \"\";\n for (const line of prefix.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed) {\n continue;\n }\n let entry;\n try {\n entry = JSON.parse(trimmed);\n } catch {\n continue;\n }\n if (!cwd && typeof entry.cwd === \"string\") {\n cwd = entry.cwd;\n }\n if (!id && typeof entry.sessionId === \"string\") {\n id = entry.sessionId;\n }\n if (!gitBranch && typeof entry.gitBranch === \"string\") {\n gitBranch = entry.gitBranch;\n }\n if (!started && typeof entry.timestamp === \"string\") {\n started = entry.timestamp;\n }\n if (!title && entry.type === \"user\") {\n const msg = entry.message;\n let text = typeof msg?.content === \"string\" ? msg.content : \"\";\n if (!text && Array.isArray(msg?.parts)) {\n text = msg.parts.map(\n (p) => p && typeof p === \"object\" && typeof p.text === \"string\" ? p.text : \"\"\n ).join(\" \").trim();\n }\n if (text && !SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n title = text.split(\"\\n\")[0]?.slice(0, 80) ?? \"\";\n }\n }\n }\n return id && cwd ? { cwd, gitBranch, id, started, title } : null;\n}\nfunction readPrefix(filePath) {\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(PREFIX_BYTES);\n const n = fs.readSync(fd, buf, 0, PREFIX_BYTES, 0);\n const text = buf.toString(\"utf-8\", 0, n);\n const lastNl = text.lastIndexOf(\"\\n\");\n return lastNl === -1 ? text : text.slice(0, lastNl);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction readQwenTextBounded(filePath) {\n const size = fs.statSync(filePath).size;\n if (size <= MAX_QWEN_FILE_BYTES) {\n return fs.readFileSync(filePath, \"utf-8\");\n }\n const fd = fs.openSync(filePath, \"r\");\n try {\n const buf = Buffer.alloc(MAX_QWEN_FILE_BYTES);\n const n = fs.readSync(fd, buf, 0, MAX_QWEN_FILE_BYTES, size - MAX_QWEN_FILE_BYTES);\n const tail = buf.toString(\"utf-8\", 0, n);\n return tail.slice(tail.indexOf(\"\\n\") + 1);\n } finally {\n fs.closeSync(fd);\n }\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nexport {\n detectActiveQwenSessions as a,\n listQwenProjects as b,\n getQwenConversation as c,\n detectActiveGeminiSessions as d,\n getGeminiConversation as g,\n listGeminiProjects as l\n};\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"registry-DzJj2E6I.js","sources":["../../../.svelte-kit/adapter-node/chunks/registry.js"],"sourcesContent":["import { r as resolveOpenCodeDbPath, l as listCodexProjects, g as getCodexConversation } from \"./opencode-db-path.js\";\nimport { l as listGeminiProjects, g as getGeminiConversation, b as listQwenProjects, c as getQwenConversation } from \"./qwen-reader.js\";\nimport * as crypto from \"crypto\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport Database from \"better-sqlite3\";\nfunction extractToolResultText(content) {\n if (typeof content === \"string\") {\n return content;\n }\n if (Array.isArray(content)) {\n return content.filter((c) => isRecord(c) && c.type === \"text\").map((c) => {\n const text = c.text;\n return typeof text === \"string\" ? text : \"\";\n }).join(\"\\n\");\n }\n return \"\";\n}\nfunction isRecord(value) {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\nfunction str(obj, key) {\n const v = obj[key];\n return typeof v === \"string\" ? v : \"\";\n}\nfunction toContentBlocks(raw) {\n if (Array.isArray(raw)) {\n return raw.filter((item) => isRecord(item));\n }\n if (isRecord(raw)) {\n return [raw];\n }\n return [];\n}\nconst SKIP_EVENT_TYPES = /* @__PURE__ */ new Set([\n \"config\",\n \"heartbeat\",\n \"metadata\",\n \"result\",\n \"summary\",\n \"system\"\n]);\nfunction parseAssistantBlock(block) {\n if (!block || typeof block !== \"object\") {\n return null;\n }\n switch (block.type) {\n case \"text\":\n return { content: block.text || \"\", type: \"text\" };\n case \"thinking\":\n return { content: block.thinking || \"\", type: \"thinking\" };\n case \"tool_use\":\n return {\n id: block.id || \"\",\n input: block.input || {},\n toolName: block.name || \"Unknown\",\n type: \"tool_use\"\n };\n default:\n return null;\n }\n}\nfunction parseJsonlLine(line, assistantTurns, messageIndex) {\n const messages = [];\n const assistantCompleted = [];\n const entry = JSON.parse(line);\n if (!isRecord(entry)) {\n return { assistantCompleted, messages };\n }\n const entryType = str(entry, \"type\");\n if (SKIP_EVENT_TYPES.has(entryType)) {\n return { assistantCompleted, messages };\n }\n const entryTimestamp = str(entry, \"timestamp\");\n const entryUuid = str(entry, \"uuid\");\n if (entryType === \"user\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const parts = [];\n const blocks = toContentBlocks(msg.content);\n if (Array.isArray(msg.content)) {\n for (const item of msg.content) {\n if (typeof item === \"string\") {\n parts.push({ content: item, type: \"text\" });\n }\n }\n } else if (typeof msg.content === \"string\") {\n parts.push({ content: msg.content, type: \"text\" });\n }\n for (const block of blocks) {\n const blockType = str(block, \"type\");\n if (!blockType) {\n continue;\n }\n if (blockType === \"text\") {\n parts.push({ content: str(block, \"text\"), type: \"text\" });\n } else if (blockType === \"tool_result\") {\n let output = extractToolResultText(block.content);\n const toolUseResult = isRecord(entry.toolUseResult) ? entry.toolUseResult : null;\n if (toolUseResult?.content !== void 0) {\n output = extractToolResultText(toolUseResult.content);\n }\n parts.push({\n isError: typeof block.is_error === \"boolean\" ? block.is_error : false,\n output: output.slice(0, 2e3),\n toolUseId: str(block, \"tool_use_id\"),\n type: \"tool_result\"\n });\n }\n }\n if (parts.length > 0 && parts.some((p) => p.type === \"text\")) {\n messages.push({\n id: entryUuid || `user-${messageIndex}`,\n parts: parts.filter((p) => p.type === \"text\"),\n role: \"user\",\n timestamp: entryTimestamp\n });\n }\n const toolResults = parts.filter((p) => p.type === \"tool_result\");\n if (toolResults.length > 0) {\n messages.push({\n id: `tool-result-${entryUuid || messageIndex}`,\n parts: toolResults,\n role: \"system\",\n timestamp: entryTimestamp\n });\n }\n } else if (entryType === \"assistant\") {\n const msg = isRecord(entry.message) ? entry.message : null;\n if (!msg?.content) {\n return { assistantCompleted, messages };\n }\n const blocks = toContentBlocks(msg.content);\n const msgId = str(msg, \"id\") || entryUuid;\n for (const block of blocks) {\n const part = parseAssistantBlock(block);\n if (!part) {\n continue;\n }\n if (!assistantTurns.has(msgId)) {\n assistantTurns.set(msgId, { parts: [], timestamp: entryTimestamp });\n }\n const turn = assistantTurns.get(msgId);\n if (turn) {\n turn.parts.push(part);\n }\n }\n if (msg.stop_reason) {\n const turn = assistantTurns.get(msgId);\n if (turn && turn.parts.length > 0) {\n assistantCompleted.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n assistantTurns.delete(msgId);\n }\n }\n }\n return { assistantCompleted, messages };\n}\nfunction parseJsonlText(text, assistantTurns, startIndex) {\n const lines = text.split(\"\\n\").filter((line) => line.trim());\n const allMessages = [];\n let idx = startIndex;\n for (const line of lines) {\n try {\n const { assistantCompleted, messages } = parseJsonlLine(line, assistantTurns, idx);\n allMessages.push(...messages, ...assistantCompleted);\n idx++;\n } catch {\n }\n }\n return allMessages;\n}\nconst SYSTEM_TAG_PREFIXES = [\n \"<local-command\",\n \"<command-name>\",\n \"<command-message>\",\n \"<command-args>\",\n \"<local-command-stdout>\",\n \"<local-command-caveat>\",\n \"<system-reminder>\",\n \"<task-notification>\"\n];\nfunction extractContentText(content) {\n if (typeof content === \"string\") {\n return content.trim();\n }\n if (Array.isArray(content)) {\n for (const b of content) {\n if (typeof b === \"string\" && b.trim()) {\n return b.trim();\n }\n if (typeof b === \"object\" && b !== null) {\n const block = b;\n if (block.type === \"text\" && typeof block.text === \"string\" && block.text.trim()) {\n return block.text.trim();\n }\n }\n }\n }\n return \"\";\n}\nfunction findFirstUserPrompt(content) {\n for (const line of content.split(\"\\n\")) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (entry.type !== \"user\") {\n continue;\n }\n const msg = entry.message;\n if (!msg?.content) {\n continue;\n }\n const text = extractContentText(msg.content);\n if (!text || SYSTEM_TAG_PREFIXES.some((p) => text.startsWith(p))) {\n continue;\n }\n return text;\n } catch {\n continue;\n }\n }\n return \"\";\n}\nfunction shortHash$1(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst CLAUDE_PROJECTS_DIR = path.join(process.env.HOME || \"\", \".claude\", \"projects\");\nfunction getSessionConversation(sessionId, offset = 0, limit = 100, projectId) {\n const projectDir = projectId ? path.join(CLAUDE_PROJECTS_DIR, projectId) : getProjectDir();\n const jsonlPath = path.join(projectDir, `${sessionId}.jsonl`);\n if (!fs.existsSync(jsonlPath)) {\n return [];\n }\n try {\n const raw = fs.readFileSync(jsonlPath, \"utf-8\");\n const assistantTurns = /* @__PURE__ */ new Map();\n const messages = parseJsonlText(raw, assistantTurns, 0);\n for (const [msgId, turn] of assistantTurns) {\n if (turn.parts.length > 0) {\n messages.push({\n id: msgId,\n parts: turn.parts,\n role: \"assistant\",\n timestamp: turn.timestamp\n });\n }\n }\n const seenIds = /* @__PURE__ */ new Set();\n const deduped = [];\n for (let i = messages.length - 1; i >= 0; i--) {\n if (!seenIds.has(messages[i].id)) {\n seenIds.add(messages[i].id);\n deduped.push(messages[i]);\n }\n }\n deduped.reverse();\n if (offset === 0 && deduped.length > limit) {\n let startIdx = deduped.length - limit;\n while (startIdx > 0 && startIdx < deduped.length && deduped[startIdx].role !== \"user\") {\n startIdx--;\n }\n return deduped.slice(startIdx);\n }\n return deduped.slice(offset, offset + limit);\n } catch (error) {\n console.error(\"[sessions] Failed to parse session JSONL:\", error);\n return [];\n }\n}\nfunction listProjectsWithSessions() {\n if (!fs.existsSync(CLAUDE_PROJECTS_DIR)) {\n return [];\n }\n let projectDirs;\n try {\n projectDirs = fs.readdirSync(CLAUDE_PROJECTS_DIR).filter((d) => {\n const fullPath = path.join(CLAUDE_PROJECTS_DIR, d);\n try {\n return fs.statSync(fullPath).isDirectory();\n } catch {\n return false;\n }\n });\n } catch {\n return [];\n }\n const projects = [];\n for (const dir of projectDirs) {\n const projectDir = path.join(CLAUDE_PROJECTS_DIR, dir);\n const sessions = listSessionsForProject(projectDir);\n if (sessions.length === 0) {\n continue;\n }\n sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n const realPath = sessions.find((s) => s.projectPath && !s.projectPath.includes(\".claude/projects\"))?.projectPath || readCwdFromProjectDir(projectDir, sessions) || decodeClaudeProjectDir(dir) || (dir.startsWith(\"-\") ? dir.replace(/-/g, \"/\") : `/${dir.replace(/-/g, \"/\")}`);\n const pathSegments = realPath.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n projects.push({\n fullPath: realPath,\n id: shortHash$1(realPath),\n lastModified: sessions[0]?.modified || \"\",\n name: projectName,\n sessionCount: sessions.length,\n sessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction bytesReadEnded(chunk) {\n return chunk.length > 0 && chunk.charCodeAt(chunk.length - 1) === 10;\n}\nfunction cleanTitle(prompt) {\n let cleaned = prompt.replace(/<command-message>.*?<\\/command-message>/gs, \"\").replace(/<command-name>.*?<\\/command-name>/gs, \"\").replace(/<command-args>.*?<\\/command-args>/gs, \"\").replace(/<local-command-caveat>.*?<\\/local-command-caveat>/gs, \"\").replace(/<local-command-stdout>.*?<\\/local-command-stdout>/gs, \"\").replace(/<system-reminder>.*?<\\/system-reminder>/gs, \"\").replace(/<task-notification>.*?<\\/task-notification>/gs, \"\");\n let prev = \"\";\n while (prev !== cleaned) {\n prev = cleaned;\n cleaned = cleaned.replace(/<[^>]*>/g, \"\").replace(/</g, \"\");\n }\n cleaned = cleaned.trim();\n if (!cleaned) {\n return \"Untitled Session\";\n }\n const firstLine = cleaned.split(\"\\n\")[0].trim();\n if (!firstLine) {\n return \"Untitled Session\";\n }\n if (firstLine.length > 80) {\n return `${firstLine.slice(0, 77)}...`;\n }\n return firstLine;\n}\nfunction decodeClaudeProjectDir(encoded) {\n if (!encoded.startsWith(\"-\")) {\n return null;\n }\n const parts = encoded.slice(1).split(\"-\");\n if (parts.length === 0) {\n return null;\n }\n let currentPath = \"/\";\n let i = 0;\n while (i < parts.length) {\n let matchedTo = -1;\n for (let j = parts.length; j > i; j--) {\n const segment = parts.slice(i, j).join(\"-\");\n const candidate = path.join(currentPath, segment);\n try {\n if (fs.statSync(candidate).isDirectory()) {\n matchedTo = j;\n break;\n }\n } catch {\n }\n }\n if (matchedTo === -1) {\n return null;\n }\n currentPath = path.join(currentPath, parts.slice(i, matchedTo).join(\"-\"));\n i = matchedTo;\n }\n return currentPath;\n}\nfunction getProjectDir() {\n const projectPath = process.cwd();\n const encoded = projectPath.replace(/\\//g, \"-\");\n return path.join(CLAUDE_PROJECTS_DIR, encoded);\n}\nfunction listSessionsForProject(projectDir) {\n const indexPath = path.join(projectDir, \"sessions-index.json\");\n const hasIndex = fs.existsSync(indexPath);\n const indexedIds = /* @__PURE__ */ new Set();\n const sessions = [];\n if (hasIndex) {\n try {\n const raw = fs.readFileSync(indexPath, \"utf-8\");\n const index = JSON.parse(raw);\n for (const entry of index.entries) {\n if (entry.isSidechain) {\n continue;\n }\n const jsonlFile = path.join(projectDir, `${entry.sessionId}.jsonl`);\n if (!fs.existsSync(jsonlFile)) {\n continue;\n }\n indexedIds.add(entry.sessionId);\n sessions.push({\n created: entry.created || \"\",\n gitBranch: entry.gitBranch || \"\",\n id: entry.sessionId,\n messageCount: entry.messageCount || 0,\n modified: entry.modified || \"\",\n projectPath: entry.projectPath || \"\",\n source: \"claude-code\",\n summary: entry.summary || \"\",\n title: cleanTitle(entry.firstPrompt || entry.summary || \"Untitled Session\")\n });\n }\n } catch (error) {\n console.error(\"[sessions] Failed to read sessions index:\", error);\n }\n }\n try {\n const files = fs.readdirSync(projectDir);\n for (const file of files) {\n if (!file.endsWith(\".jsonl\")) {\n continue;\n }\n const sessionId = file.replace(\".jsonl\", \"\");\n if (indexedIds.has(sessionId)) {\n continue;\n }\n const filePath = path.join(projectDir, file);\n const stat = fs.statSync(filePath);\n let firstPrompt = \"Active Session\";\n let messageCount = 0;\n try {\n const content = fs.readFileSync(filePath, \"utf-8\");\n let countPos = 0;\n while (countPos < content.length) {\n const nl = content.indexOf(\"\\n\", countPos);\n const lineEnd = nl === -1 ? content.length : nl;\n const line = content.substring(countPos, lineEnd);\n if (line.includes('\"type\":\"user\"') || line.includes('\"type\":\"assistant\"')) {\n messageCount++;\n }\n if (nl === -1) {\n break;\n }\n countPos = nl + 1;\n }\n const prompt = findFirstUserPrompt(content);\n if (prompt) {\n firstPrompt = prompt;\n }\n } catch {\n }\n sessions.push({\n created: stat.birthtime.toISOString(),\n gitBranch: \"\",\n id: sessionId,\n messageCount,\n modified: stat.mtime.toISOString(),\n projectPath: \"\",\n source: \"claude-code\",\n summary: \"\",\n title: cleanTitle(firstPrompt)\n });\n }\n } catch {\n }\n return sessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n}\nfunction readCwdFromProjectDir(projectDir, sessions) {\n const READ_BYTES = 65536;\n for (const session of sessions) {\n try {\n const filePath = path.join(projectDir, `${session.id}.jsonl`);\n if (!fs.existsSync(filePath)) {\n continue;\n }\n const fd = fs.openSync(filePath, \"r\");\n let chunk;\n try {\n const buf = Buffer.alloc(READ_BYTES);\n const bytesRead = fs.readSync(fd, buf, 0, READ_BYTES, 0);\n chunk = buf.toString(\"utf-8\", 0, bytesRead);\n } finally {\n fs.closeSync(fd);\n }\n const lines = chunk.split(\"\\n\");\n const completeLines = bytesReadEnded(chunk) ? lines : lines.slice(0, -1);\n for (const line of completeLines) {\n if (!line.trim()) {\n continue;\n }\n try {\n const entry = JSON.parse(line);\n if (typeof entry.cwd === \"string\" && entry.cwd) {\n return entry.cwd;\n }\n } catch {\n }\n }\n } catch {\n }\n }\n return \"\";\n}\nfunction shortHash(input) {\n return crypto.createHash(\"sha256\").update(input).digest(\"hex\").slice(0, 8);\n}\nconst OPENCODE_DB_PATH = resolveOpenCodeDbPath();\nfunction getOpenCodeConversation(sessionId, offset = 0, limit = 200) {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const messages = db.prepare(\n `\n SELECT id, session_id, time_created, data FROM (\n SELECT id, session_id, time_created, data\n FROM message\n WHERE session_id = ?\n ORDER BY time_created DESC\n LIMIT ? OFFSET ?\n ) ORDER BY time_created ASC\n `\n ).all(sessionId, limit, offset);\n const messageIds = messages.map((m) => m.id);\n if (messageIds.length === 0) {\n return [];\n }\n const placeholders = messageIds.map(() => \"?\").join(\",\");\n const parts = db.prepare(\n `\n SELECT id, message_id, time_created, data\n FROM part\n WHERE message_id IN (${placeholders})\n ORDER BY time_created ASC\n `\n ).all(...messageIds);\n const partsByMessage = /* @__PURE__ */ new Map();\n for (const part of parts) {\n if (!partsByMessage.has(part.message_id)) {\n partsByMessage.set(part.message_id, []);\n }\n const bucket = partsByMessage.get(part.message_id);\n if (bucket) {\n bucket.push(part);\n }\n }\n const result = [];\n for (const msg of messages) {\n let msgData = {};\n try {\n msgData = JSON.parse(msg.data);\n } catch {\n }\n const role = msgData.role === \"user\" ? \"user\" : \"assistant\";\n const msgParts = partsByMessage.get(msg.id) || [];\n const convertedParts = [];\n for (const part of msgParts) {\n let partData = {};\n try {\n partData = JSON.parse(part.data);\n } catch {\n continue;\n }\n const converted = convertOpenCodePart(partData);\n if (converted) {\n convertedParts.push(converted);\n }\n }\n if (convertedParts.length > 0) {\n result.push({\n id: msg.id,\n parts: convertedParts,\n role,\n timestamp: new Date(msg.time_created).toISOString()\n });\n }\n }\n return result;\n } catch (error) {\n console.error(\"[opencode] Failed to read conversation:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction listOpenCodeProjects() {\n const db = getDb();\n if (!db) {\n return [];\n }\n try {\n const sessions = db.prepare(\n `\n SELECT id, directory, title, slug, time_created, time_updated, parent_id\n FROM session\n WHERE time_archived IS NULL OR time_archived = 0\n ORDER BY time_updated DESC\n `\n ).all();\n const msgCounts = db.prepare(`SELECT session_id, COUNT(*) as count FROM message GROUP BY session_id`).all();\n const msgCountMap = new Map(msgCounts.map((r) => [r.session_id, r.count]));\n const projectMap = /* @__PURE__ */ new Map();\n for (const row of sessions) {\n const dir = row.directory || \"unknown\";\n if (!projectMap.has(dir)) {\n projectMap.set(dir, []);\n }\n const sessionInfo = {\n created: new Date(row.time_created).toISOString(),\n gitBranch: \"\",\n id: row.id,\n messageCount: msgCountMap.get(row.id) || 0,\n modified: new Date(row.time_updated).toISOString(),\n projectPath: dir,\n source: \"opencode\",\n summary: \"\",\n title: row.title || row.slug || \"Untitled Session\"\n };\n const bucket = projectMap.get(dir);\n if (bucket) {\n bucket.push(sessionInfo);\n }\n }\n const projects = [];\n for (const [dir, dirSessions] of projectMap) {\n const pathSegments = dir.split(\"/\").filter(Boolean);\n const projectName = pathSegments.slice(-2).join(\"/\");\n dirSessions.sort((a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime());\n projects.push({\n fullPath: dir,\n id: shortHash(dir),\n lastModified: dirSessions[0]?.modified || \"\",\n name: `${projectName} (OpenCode)`,\n sessionCount: dirSessions.length,\n sessions: dirSessions\n });\n }\n return projects.sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n } catch (error) {\n console.error(\"[opencode] Failed to read sessions:\", error);\n return [];\n } finally {\n db.close();\n }\n}\nfunction convertOpenCodePart(data) {\n const type = data.type;\n switch (type) {\n case \"reasoning\":\n return {\n content: data.text || \"\",\n type: \"thinking\"\n };\n case \"text\":\n return {\n content: data.text || \"\",\n type: \"text\"\n };\n case \"tool\": {\n const state = data.state;\n return {\n id: data.callID || data.id || \"\",\n input: state?.input || {},\n toolName: data.tool || \"Unknown\",\n type: \"tool_use\"\n };\n }\n default:\n return null;\n }\n}\nfunction getDb() {\n if (!fs.existsSync(OPENCODE_DB_PATH)) {\n return null;\n }\n try {\n return new Database(OPENCODE_DB_PATH, { readonly: true });\n } catch {\n return null;\n }\n}\nconst PROVIDERS = [\n {\n command: \"claude\",\n getConversation: (id, offset, limit) => getSessionConversation(id, offset, limit),\n isAI: true,\n label: \"Claude Code\",\n listProjects: listProjectsWithSessions,\n resumeArgs: (id) => [\"--resume\", id],\n source: \"claude-code\"\n },\n {\n command: \"opencode\",\n getConversation: getOpenCodeConversation,\n isAI: true,\n label: \"OpenCode\",\n listProjects: listOpenCodeProjects,\n nameSuffix: \" (OpenCode)\",\n resumeArgs: (id) => [\"--session\", id],\n source: \"opencode\"\n },\n {\n command: \"codex\",\n getConversation: getCodexConversation,\n isAI: true,\n label: \"Codex\",\n listProjects: listCodexProjects,\n resumeArgs: (id) => [\"resume\", id],\n source: \"codex\"\n },\n {\n command: \"gemini\",\n getConversation: getGeminiConversation,\n isAI: true,\n label: \"Gemini\",\n listProjects: listGeminiProjects,\n resumeArgs: () => [],\n // Gemini CLI has no session-resume flag\n source: \"gemini\"\n },\n {\n command: \"qwen\",\n getConversation: getQwenConversation,\n isAI: true,\n label: \"Qwen\",\n listProjects: listQwenProjects,\n resumeArgs: () => [],\n source: \"qwen\"\n }\n];\nPROVIDERS.filter((p) => p.isAI).map((p) => p.command);\nconst PROVIDER_COMMANDS = PROVIDERS.map((p) => p.command);\nfunction getProviderConversation(sessionId, offset, limit, claudeProjectDir) {\n const claude = getSessionConversation(sessionId, offset, limit, claudeProjectDir);\n if (claude.length > 0) {\n return claude;\n }\n for (const provider of PROVIDERS) {\n if (provider.source === \"claude-code\") {\n continue;\n }\n const messages = provider.getConversation(sessionId, offset, limit);\n if (messages.length > 0) {\n return messages;\n }\n }\n return [];\n}\nfunction listAllProviderProjects() {\n const byPath = /* @__PURE__ */ new Map();\n for (const provider of PROVIDERS) {\n let groups;\n try {\n groups = provider.listProjects();\n } catch {\n continue;\n }\n for (const group of groups) {\n const name = provider.nameSuffix ? group.name.replace(provider.nameSuffix, \"\") : group.name;\n const existing = byPath.get(group.fullPath);\n if (existing) {\n existing.sessions.push(...group.sessions);\n existing.sessions.sort(\n (a, b) => new Date(b.modified).getTime() - new Date(a.modified).getTime()\n );\n existing.sessionCount = existing.sessions.length;\n existing.lastModified = existing.sessions[0]?.modified || existing.lastModified;\n } else {\n byPath.set(group.fullPath, { ...group, name });\n }\n }\n }\n return [...byPath.values()].sort(\n (a, b) => new Date(b.lastModified).getTime() - new Date(a.lastModified).getTime()\n );\n}\nfunction resumeArgsForCommand(command, sessionId) {\n return PROVIDERS.find((p) => p.command === command)?.resumeArgs(sessionId) ?? [];\n}\nexport {\n PROVIDER_COMMANDS as P,\n getProviderConversation as g,\n listAllProviderProjects as l,\n resumeArgsForCommand as r\n};\n"],"names":[],"mappings":"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"}