@downcity/agent 1.1.430 → 1.1.438

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 (488) hide show
  1. package/README.md +13 -11
  2. package/bin/agent/Agent.d.ts +3 -3
  3. package/bin/agent/Agent.d.ts.map +1 -1
  4. package/bin/agent/Agent.js +38 -8
  5. package/bin/agent/Agent.js.map +1 -1
  6. package/bin/agent/AgentInstructions.js +2 -2
  7. package/bin/agent/AgentInstructions.js.map +1 -1
  8. package/bin/agent/AgentMemoryStorage.d.ts.map +1 -1
  9. package/bin/agent/AgentMemoryStorage.js +1 -0
  10. package/bin/agent/AgentMemoryStorage.js.map +1 -1
  11. package/bin/agent/AgentSessions.d.ts +5 -1
  12. package/bin/agent/AgentSessions.d.ts.map +1 -1
  13. package/bin/agent/AgentSessions.js +17 -9
  14. package/bin/agent/AgentSessions.js.map +1 -1
  15. package/bin/executor/Executor.d.ts +9 -27
  16. package/bin/executor/Executor.d.ts.map +1 -1
  17. package/bin/executor/Executor.js +32 -127
  18. package/bin/executor/Executor.js.map +1 -1
  19. package/bin/executor/composer/system/default/SystemPromptAssets.d.ts +0 -4
  20. package/bin/executor/composer/system/default/SystemPromptAssets.d.ts.map +1 -1
  21. package/bin/executor/composer/system/default/SystemPromptAssets.js +0 -5
  22. package/bin/executor/composer/system/default/SystemPromptAssets.js.map +1 -1
  23. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts +3 -9
  24. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -1
  25. package/bin/executor/core-engine/CoreEngineContextCompaction.js +4 -130
  26. package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -1
  27. package/bin/executor/core-engine/CoreEngineRunner.d.ts +3 -30
  28. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
  29. package/bin/executor/core-engine/CoreEngineRunner.js +38 -194
  30. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
  31. package/bin/executor/core-engine/CoreEngineSignals.d.ts +6 -6
  32. package/bin/executor/core-engine/CoreEngineSignals.d.ts.map +1 -1
  33. package/bin/executor/core-engine/CoreEngineSignals.js +1 -1
  34. package/bin/executor/core-engine/CoreEngineSignals.js.map +1 -1
  35. package/bin/executor/messages/SessionAttachmentMapper.d.ts +2 -2
  36. package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
  37. package/bin/executor/messages/SessionAttachmentMapper.js.map +1 -1
  38. package/bin/executor/messages/SessionMessageLog.d.ts +3 -3
  39. package/bin/executor/messages/SessionMessageLog.d.ts.map +1 -1
  40. package/bin/executor/messages/SessionMessageLog.js.map +1 -1
  41. package/bin/executor/messages/SessionModelMessages.d.ts +0 -3
  42. package/bin/executor/messages/SessionModelMessages.d.ts.map +1 -1
  43. package/bin/executor/messages/SessionModelMessages.js +80 -97
  44. package/bin/executor/messages/SessionModelMessages.js.map +1 -1
  45. package/bin/executor/model/ModelStepRunner.d.ts +2 -6
  46. package/bin/executor/model/ModelStepRunner.d.ts.map +1 -1
  47. package/bin/executor/model/ModelStepRunner.js +0 -28
  48. package/bin/executor/model/ModelStepRunner.js.map +1 -1
  49. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +7 -64
  50. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -1
  51. package/bin/executor/services/ExecutorRecoveryPolicy.js +29 -45
  52. package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -1
  53. package/bin/executor/types/SessionHistoryMeta.d.ts +1 -3
  54. package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
  55. package/bin/executor/types/SessionHistoryMeta.js +1 -1
  56. package/bin/index.d.ts +9 -13
  57. package/bin/index.d.ts.map +1 -1
  58. package/bin/index.js +2 -4
  59. package/bin/index.js.map +1 -1
  60. package/bin/session/DefaultSessionComposer.d.ts +13 -7
  61. package/bin/session/DefaultSessionComposer.d.ts.map +1 -1
  62. package/bin/session/DefaultSessionComposer.js +26 -21
  63. package/bin/session/DefaultSessionComposer.js.map +1 -1
  64. package/bin/session/Session.d.ts +12 -19
  65. package/bin/session/Session.d.ts.map +1 -1
  66. package/bin/session/Session.js +70 -202
  67. package/bin/session/Session.js.map +1 -1
  68. package/bin/session/SessionComposition.d.ts +0 -2
  69. package/bin/session/SessionComposition.d.ts.map +1 -1
  70. package/bin/session/SessionComposition.js +30 -54
  71. package/bin/session/SessionComposition.js.map +1 -1
  72. package/bin/session/SessionLoop.d.ts +17 -16
  73. package/bin/session/SessionLoop.d.ts.map +1 -1
  74. package/bin/session/SessionLoop.js +217 -320
  75. package/bin/session/SessionLoop.js.map +1 -1
  76. package/bin/session/SessionMessages.d.ts +52 -44
  77. package/bin/session/SessionMessages.d.ts.map +1 -1
  78. package/bin/session/SessionMessages.js +285 -187
  79. package/bin/session/SessionMessages.js.map +1 -1
  80. package/bin/session/SessionQueue.d.ts +1 -1
  81. package/bin/session/SessionQueue.d.ts.map +1 -1
  82. package/bin/session/SessionQueue.js +2 -1
  83. package/bin/session/SessionQueue.js.map +1 -1
  84. package/bin/session/SessionState.d.ts +3 -7
  85. package/bin/session/SessionState.d.ts.map +1 -1
  86. package/bin/session/SessionState.js +50 -89
  87. package/bin/session/SessionState.js.map +1 -1
  88. package/bin/session/SessionSystem.d.ts +5 -1
  89. package/bin/session/SessionSystem.d.ts.map +1 -1
  90. package/bin/session/SessionSystem.js +40 -0
  91. package/bin/session/SessionSystem.js.map +1 -1
  92. package/bin/session/SessionTitle.d.ts +3 -3
  93. package/bin/session/SessionTitle.d.ts.map +1 -1
  94. package/bin/session/SessionTitle.js +2 -2
  95. package/bin/session/browse/Browse.d.ts +32 -46
  96. package/bin/session/browse/Browse.d.ts.map +1 -1
  97. package/bin/session/browse/Browse.js +104 -360
  98. package/bin/session/browse/Browse.js.map +1 -1
  99. package/bin/session/browse/SessionMessageTimeline.d.ts.map +1 -1
  100. package/bin/session/browse/SessionMessageTimeline.js +61 -37
  101. package/bin/session/browse/SessionMessageTimeline.js.map +1 -1
  102. package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts +35 -0
  103. package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts.map +1 -0
  104. package/bin/session/composer/policies/AdaptivePartContextPolicy.js +256 -0
  105. package/bin/session/composer/policies/AdaptivePartContextPolicy.js.map +1 -0
  106. package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts +24 -0
  107. package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts.map +1 -0
  108. package/bin/session/composer/policies/FullHistoryContextPolicy.js +31 -0
  109. package/bin/session/composer/policies/FullHistoryContextPolicy.js.map +1 -0
  110. package/bin/session/composer/policies/SessionSummaryPrompts.d.ts +16 -0
  111. package/bin/session/composer/policies/SessionSummaryPrompts.d.ts.map +1 -0
  112. package/bin/session/composer/policies/SessionSummaryPrompts.js +32 -0
  113. package/bin/session/composer/policies/SessionSummaryPrompts.js.map +1 -0
  114. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts +15 -4
  115. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts.map +1 -1
  116. package/bin/session/execution/SessionAssistantOutputAdapter.js +7 -3
  117. package/bin/session/execution/SessionAssistantOutputAdapter.js.map +1 -1
  118. package/bin/session/messages/{SessionActionMessageWriter.d.ts → SessionAgentActionPartWriter.d.ts} +7 -7
  119. package/bin/session/messages/SessionAgentActionPartWriter.d.ts.map +1 -0
  120. package/bin/session/messages/{SessionActionMessageWriter.js → SessionAgentActionPartWriter.js} +7 -7
  121. package/bin/session/messages/SessionAgentActionPartWriter.js.map +1 -0
  122. package/bin/session/messages/SessionAgentContent.d.ts +10 -0
  123. package/bin/session/messages/SessionAgentContent.d.ts.map +1 -0
  124. package/bin/session/messages/SessionAgentContent.js +44 -0
  125. package/bin/session/messages/SessionAgentContent.js.map +1 -0
  126. package/bin/session/messages/SessionAgentMessageState.d.ts +50 -0
  127. package/bin/session/messages/SessionAgentMessageState.d.ts.map +1 -0
  128. package/bin/session/messages/SessionAgentMessageState.js +283 -0
  129. package/bin/session/messages/SessionAgentMessageState.js.map +1 -0
  130. package/bin/session/messages/{SessionAssistantMessageWriter.d.ts → SessionAgentMessageWriter.d.ts} +22 -8
  131. package/bin/session/messages/SessionAgentMessageWriter.d.ts.map +1 -0
  132. package/bin/session/messages/{SessionAssistantMessageWriter.js → SessionAgentMessageWriter.js} +54 -42
  133. package/bin/session/messages/SessionAgentMessageWriter.js.map +1 -0
  134. package/bin/session/messages/SessionForkMessageFiles.d.ts +11 -0
  135. package/bin/session/messages/SessionForkMessageFiles.d.ts.map +1 -1
  136. package/bin/session/messages/SessionForkMessageFiles.js +8 -2
  137. package/bin/session/messages/SessionForkMessageFiles.js.map +1 -1
  138. package/bin/session/messages/SessionMessageInteractionWriter.d.ts +6 -6
  139. package/bin/session/messages/SessionMessageInteractionWriter.d.ts.map +1 -1
  140. package/bin/session/messages/SessionMessageInteractionWriter.js +4 -4
  141. package/bin/session/messages/SessionMessageInteractionWriter.js.map +1 -1
  142. package/bin/session/messages/SessionMessageText.d.ts +3 -3
  143. package/bin/session/messages/SessionMessageText.d.ts.map +1 -1
  144. package/bin/session/messages/SessionMessageText.js +0 -2
  145. package/bin/session/messages/SessionMessageText.js.map +1 -1
  146. package/bin/session/messages/SessionTurnFileDiffData.d.ts +3 -3
  147. package/bin/session/messages/SessionTurnFileDiffData.d.ts.map +1 -1
  148. package/bin/session/messages/SessionTurnFileDiffData.js.map +1 -1
  149. package/bin/session/messages/SessionUserMessage.d.ts +3 -3
  150. package/bin/session/messages/SessionUserMessage.d.ts.map +1 -1
  151. package/bin/session/messages/SessionUserMessage.js +6 -3
  152. package/bin/session/messages/SessionUserMessage.js.map +1 -1
  153. package/bin/session/preview/SessionMessagePreview.d.ts.map +1 -1
  154. package/bin/session/preview/SessionMessagePreview.js +25 -9
  155. package/bin/session/preview/SessionMessagePreview.js.map +1 -1
  156. package/bin/session/runtime/SessionTurnCompletion.d.ts +15 -0
  157. package/bin/session/runtime/SessionTurnCompletion.d.ts.map +1 -0
  158. package/bin/session/runtime/SessionTurnCompletion.js +126 -0
  159. package/bin/session/runtime/SessionTurnCompletion.js.map +1 -0
  160. package/bin/session/runtime/SessionTurnContext.d.ts.map +1 -1
  161. package/bin/session/runtime/SessionTurnContext.js +14 -19
  162. package/bin/session/runtime/SessionTurnContext.js.map +1 -1
  163. package/bin/session/runtime/SessionTurnFileDiff.d.ts +12 -0
  164. package/bin/session/runtime/SessionTurnFileDiff.d.ts.map +1 -0
  165. package/bin/session/runtime/SessionTurnFileDiff.js +71 -0
  166. package/bin/session/runtime/SessionTurnFileDiff.js.map +1 -0
  167. package/bin/session/storage/LocalSessionDataStore.d.ts +6 -41
  168. package/bin/session/storage/LocalSessionDataStore.d.ts.map +1 -1
  169. package/bin/session/storage/LocalSessionDataStore.js +19 -101
  170. package/bin/session/storage/LocalSessionDataStore.js.map +1 -1
  171. package/bin/session/storage/LocalSessionStore.d.ts +13 -5
  172. package/bin/session/storage/LocalSessionStore.d.ts.map +1 -1
  173. package/bin/session/storage/LocalSessionStore.js +153 -30
  174. package/bin/session/storage/LocalSessionStore.js.map +1 -1
  175. package/bin/session/storage/LocalStorePaths.d.ts +4 -16
  176. package/bin/session/storage/LocalStorePaths.d.ts.map +1 -1
  177. package/bin/session/storage/LocalStorePaths.js +7 -31
  178. package/bin/session/storage/LocalStorePaths.js.map +1 -1
  179. package/bin/session/storage/Metadata.d.ts +4 -4
  180. package/bin/session/storage/Metadata.d.ts.map +1 -1
  181. package/bin/session/storage/Metadata.js +3 -11
  182. package/bin/session/storage/Metadata.js.map +1 -1
  183. package/bin/session/storage/RuntimeSessionPort.d.ts +4 -4
  184. package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
  185. package/bin/session/storage/RuntimeSessionPort.js +3 -3
  186. package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
  187. package/bin/session/storage/SessionStorageCodec.d.ts +59 -0
  188. package/bin/session/storage/SessionStorageCodec.d.ts.map +1 -0
  189. package/bin/session/storage/SessionStorageCodec.js +331 -0
  190. package/bin/session/storage/SessionStorageCodec.js.map +1 -0
  191. package/bin/session/storage/SessionStorageSchema.d.ts +11 -0
  192. package/bin/session/storage/SessionStorageSchema.d.ts.map +1 -0
  193. package/bin/session/storage/SessionStorageSchema.js +131 -0
  194. package/bin/session/storage/SessionStorageSchema.js.map +1 -0
  195. package/bin/session/storage/SqliteSessionStorage.d.ts +120 -0
  196. package/bin/session/storage/SqliteSessionStorage.d.ts.map +1 -0
  197. package/bin/session/storage/SqliteSessionStorage.js +581 -0
  198. package/bin/session/storage/SqliteSessionStorage.js.map +1 -0
  199. package/bin/tools/ask/AskQuestionsTool.d.ts.map +1 -1
  200. package/bin/tools/ask/AskQuestionsTool.js +3 -1
  201. package/bin/tools/ask/AskQuestionsTool.js.map +1 -1
  202. package/bin/types/action/ActionResult.d.ts +9 -9
  203. package/bin/types/action/ActionResult.d.ts.map +1 -1
  204. package/bin/types/action/ActionResult.js +1 -1
  205. package/bin/types/agent/AgentOptions.d.ts +10 -0
  206. package/bin/types/agent/AgentOptions.d.ts.map +1 -1
  207. package/bin/types/agent/AgentStorage.d.ts +3 -1
  208. package/bin/types/agent/AgentStorage.d.ts.map +1 -1
  209. package/bin/types/agent/SessionActor.d.ts +0 -9
  210. package/bin/types/agent/SessionActor.d.ts.map +1 -1
  211. package/bin/types/agent/SessionTypes.d.ts +5 -5
  212. package/bin/types/agent/SessionTypes.d.ts.map +1 -1
  213. package/bin/types/executor/SessionAssistantOutput.d.ts +15 -4
  214. package/bin/types/executor/SessionAssistantOutput.d.ts.map +1 -1
  215. package/bin/types/executor/SessionTurnContext.d.ts +17 -19
  216. package/bin/types/executor/SessionTurnContext.d.ts.map +1 -1
  217. package/bin/types/sdk/AgentSessionAction.d.ts +1 -1
  218. package/bin/types/sdk/AgentSessionAction.js +1 -1
  219. package/bin/types/sdk/AgentSessionPrompt.d.ts +14 -5
  220. package/bin/types/sdk/AgentSessionPrompt.d.ts.map +1 -1
  221. package/bin/types/sdk/AgentSessionPrompt.js +1 -1
  222. package/bin/types/sdk/AgentSessionPrompt.js.map +1 -1
  223. package/bin/types/session/AdaptivePartContextPolicy.d.ts +31 -0
  224. package/bin/types/session/AdaptivePartContextPolicy.d.ts.map +1 -0
  225. package/bin/types/session/AdaptivePartContextPolicy.js +7 -0
  226. package/bin/types/session/AdaptivePartContextPolicy.js.map +1 -0
  227. package/bin/types/session/{SessionAssistantMessageState.d.ts → SessionAgentMessageState.d.ts} +7 -7
  228. package/bin/types/session/SessionAgentMessageState.d.ts.map +1 -0
  229. package/bin/types/session/{SessionAssistantMessageState.js → SessionAgentMessageState.js} +1 -1
  230. package/bin/types/session/SessionAgentMessageState.js.map +1 -0
  231. package/bin/types/session/SessionCommand.d.ts +19 -7
  232. package/bin/types/session/SessionCommand.d.ts.map +1 -1
  233. package/bin/types/session/SessionComposer.d.ts +43 -43
  234. package/bin/types/session/SessionComposer.d.ts.map +1 -1
  235. package/bin/types/session/SessionComposer.js +2 -2
  236. package/bin/types/session/SessionComposition.d.ts +2 -5
  237. package/bin/types/session/SessionComposition.d.ts.map +1 -1
  238. package/bin/types/session/SessionContextPolicy.d.ts +70 -0
  239. package/bin/types/session/SessionContextPolicy.d.ts.map +1 -0
  240. package/bin/types/session/SessionContextPolicy.js +8 -0
  241. package/bin/types/session/SessionContextPolicy.js.map +1 -0
  242. package/bin/types/session/SessionExecution.d.ts +5 -32
  243. package/bin/types/session/SessionExecution.d.ts.map +1 -1
  244. package/bin/types/session/SessionLoop.d.ts +3 -5
  245. package/bin/types/session/SessionLoop.d.ts.map +1 -1
  246. package/bin/types/session/SessionMessages.d.ts +18 -28
  247. package/bin/types/session/SessionMessages.d.ts.map +1 -1
  248. package/bin/types/session/SessionOptions.d.ts +5 -5
  249. package/bin/types/session/SessionOptions.d.ts.map +1 -1
  250. package/bin/types/session/SessionPort.d.ts +8 -9
  251. package/bin/types/session/SessionPort.d.ts.map +1 -1
  252. package/bin/types/session/SessionState.d.ts +2 -5
  253. package/bin/types/session/SessionState.d.ts.map +1 -1
  254. package/bin/types/session/SessionSystem.d.ts +14 -0
  255. package/bin/types/session/SessionSystem.d.ts.map +1 -1
  256. package/bin/types/session/SessionTool.d.ts +2 -2
  257. package/bin/types/session/SessionTool.d.ts.map +1 -1
  258. package/bin/types/session/SessionTurnCompletion.d.ts +23 -0
  259. package/bin/types/session/SessionTurnCompletion.d.ts.map +1 -0
  260. package/bin/types/session/SessionTurnCompletion.js +8 -0
  261. package/bin/types/session/SessionTurnCompletion.js.map +1 -0
  262. package/bin/types/session/SessionTurnFileDiff.d.ts +42 -0
  263. package/bin/types/session/SessionTurnFileDiff.d.ts.map +1 -0
  264. package/bin/types/session/SessionTurnFileDiff.js +8 -0
  265. package/bin/types/session/SessionTurnFileDiff.js.map +1 -0
  266. package/bin/types/store/LocalStore.d.ts +6 -13
  267. package/bin/types/store/LocalStore.d.ts.map +1 -1
  268. package/bin/types/store/LocalStore.js +1 -1
  269. package/bin/types/store/SessionStorage.d.ts +103 -0
  270. package/bin/types/store/SessionStorage.d.ts.map +1 -0
  271. package/bin/types/store/SessionStorage.js +8 -0
  272. package/bin/types/store/SessionStorage.js.map +1 -0
  273. package/bin/types/store/SessionStore.d.ts +5 -3
  274. package/bin/types/store/SessionStore.d.ts.map +1 -1
  275. package/package.json +2 -2
  276. package/scripts/core-engine-context-compaction.test.mjs +96 -219
  277. package/scripts/core-engine-model-stream.test.mjs +2 -4
  278. package/scripts/executor-failure-result.test.mjs +14 -17
  279. package/scripts/session-agent-message-part-order.test.mjs +63 -0
  280. package/scripts/session-initialization.test.mjs +141 -0
  281. package/scripts/session-message-timeline.test.mjs +5 -6
  282. package/scripts/session-messages-error-part.test.mjs +175 -0
  283. package/scripts/session-messages-error.test.mjs +47 -6
  284. package/scripts/session-prompt-idempotency.test.mjs +91 -0
  285. package/scripts/session-queue.test.mjs +13 -12
  286. package/scripts/session-storage-sqlite.test.mjs +209 -0
  287. package/scripts/session-turn-context.test.mjs +21 -33
  288. package/src/agent/Agent.ts +48 -12
  289. package/src/agent/AgentInstructions.ts +2 -2
  290. package/src/agent/AgentMemoryStorage.ts +1 -0
  291. package/src/agent/AgentSessions.ts +31 -12
  292. package/src/executor/Executor.ts +47 -184
  293. package/src/executor/README.md +12 -13
  294. package/src/executor/composer/system/default/SystemPromptAssets.ts +0 -6
  295. package/src/executor/core-engine/CoreEngineContextCompaction.ts +3 -135
  296. package/src/executor/core-engine/CoreEngineRunner.ts +51 -273
  297. package/src/executor/core-engine/CoreEngineSignals.ts +9 -9
  298. package/src/executor/messages/SessionAttachmentMapper.ts +4 -4
  299. package/src/executor/messages/SessionMessageLog.ts +3 -3
  300. package/src/executor/messages/SessionModelMessages.ts +85 -103
  301. package/src/executor/model/ModelStepRunner.ts +9 -41
  302. package/src/executor/services/ExecutorRecoveryPolicy.ts +34 -127
  303. package/src/executor/types/SessionHistoryMeta.ts +1 -3
  304. package/src/index.ts +39 -47
  305. package/src/session/DefaultSessionComposer.ts +33 -30
  306. package/src/session/Session.ts +96 -227
  307. package/src/session/SessionComposition.ts +28 -65
  308. package/src/session/SessionLoop.ts +267 -370
  309. package/src/session/SessionMessages.ts +363 -242
  310. package/src/session/SessionQueue.ts +3 -2
  311. package/src/session/SessionState.ts +55 -101
  312. package/src/session/SessionSystem.ts +51 -1
  313. package/src/session/SessionTitle.ts +4 -4
  314. package/src/session/browse/Browse.ts +182 -468
  315. package/src/session/browse/SessionMessageTimeline.ts +63 -38
  316. package/src/session/composer/policies/AdaptivePartContextPolicy.ts +307 -0
  317. package/src/session/composer/policies/FullHistoryContextPolicy.ts +36 -0
  318. package/src/session/composer/policies/SessionSummaryPrompts.ts +42 -0
  319. package/src/session/execution/SessionAssistantOutputAdapter.ts +25 -11
  320. package/src/session/messages/{SessionActionMessageWriter.ts → SessionAgentActionPartWriter.ts} +8 -8
  321. package/src/session/messages/SessionAgentContent.ts +56 -0
  322. package/src/session/messages/SessionAgentMessageState.ts +378 -0
  323. package/src/session/messages/{SessionAssistantMessageWriter.ts → SessionAgentMessageWriter.ts} +89 -60
  324. package/src/session/messages/SessionForkMessageFiles.ts +25 -1
  325. package/src/session/messages/SessionMessageInteractionWriter.ts +19 -19
  326. package/src/session/messages/SessionMessageText.ts +3 -4
  327. package/src/session/messages/SessionTurnFileDiffData.ts +3 -3
  328. package/src/session/messages/SessionUserMessage.ts +10 -7
  329. package/src/session/preview/SessionMessagePreview.ts +26 -9
  330. package/src/session/runtime/SessionTurnCompletion.ts +159 -0
  331. package/src/session/runtime/SessionTurnContext.ts +20 -21
  332. package/src/session/runtime/SessionTurnFileDiff.ts +105 -0
  333. package/src/session/storage/LocalSessionDataStore.ts +27 -176
  334. package/src/session/storage/LocalSessionStore.ts +170 -38
  335. package/src/session/storage/LocalStorePaths.ts +14 -86
  336. package/src/session/storage/Metadata.ts +4 -13
  337. package/src/session/storage/RuntimeSessionPort.ts +7 -7
  338. package/src/session/storage/SessionStorageCodec.ts +465 -0
  339. package/src/session/storage/SessionStorageSchema.ts +132 -0
  340. package/src/session/storage/SqliteSessionStorage.ts +776 -0
  341. package/src/tools/ask/AskQuestionsTool.ts +3 -1
  342. package/src/types/action/ActionResult.ts +10 -10
  343. package/src/types/agent/AgentOptions.ts +11 -0
  344. package/src/types/agent/AgentStorage.ts +3 -1
  345. package/src/types/agent/SessionActor.ts +0 -10
  346. package/src/types/agent/SessionTypes.ts +5 -5
  347. package/src/types/executor/SessionAssistantOutput.ts +15 -4
  348. package/src/types/executor/SessionTurnContext.ts +25 -22
  349. package/src/types/sdk/AgentSessionAction.ts +1 -1
  350. package/src/types/sdk/AgentSessionPrompt.ts +15 -5
  351. package/src/types/session/AdaptivePartContextPolicy.ts +37 -0
  352. package/src/types/session/{SessionAssistantMessageState.ts → SessionAgentMessageState.ts} +6 -6
  353. package/src/types/session/SessionCommand.ts +21 -7
  354. package/src/types/session/SessionComposer.ts +48 -48
  355. package/src/types/session/SessionComposition.ts +2 -5
  356. package/src/types/session/SessionContextPolicy.ts +77 -0
  357. package/src/types/session/SessionExecution.ts +11 -36
  358. package/src/types/session/SessionLoop.ts +3 -8
  359. package/src/types/session/SessionMessages.ts +19 -29
  360. package/src/types/session/SessionOptions.ts +5 -5
  361. package/src/types/session/SessionPort.ts +10 -10
  362. package/src/types/session/SessionState.ts +2 -5
  363. package/src/types/session/SessionSystem.ts +19 -0
  364. package/src/types/session/SessionTool.ts +2 -2
  365. package/src/types/session/SessionTurnCompletion.ts +24 -0
  366. package/src/types/session/SessionTurnFileDiff.ts +44 -0
  367. package/src/types/store/LocalStore.ts +6 -14
  368. package/src/types/store/SessionStorage.ts +121 -0
  369. package/src/types/store/SessionStore.ts +6 -3
  370. package/tsconfig.tsbuildinfo +1 -1
  371. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts +0 -45
  372. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts.map +0 -1
  373. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js +0 -144
  374. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js.map +0 -1
  375. package/bin/executor/composer/system/SessionSystemComposer.d.ts +0 -23
  376. package/bin/executor/composer/system/SessionSystemComposer.d.ts.map +0 -1
  377. package/bin/executor/composer/system/SessionSystemComposer.js +0 -9
  378. package/bin/executor/composer/system/SessionSystemComposer.js.map +0 -1
  379. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +0 -43
  380. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +0 -1
  381. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js +0 -42
  382. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js.map +0 -1
  383. package/bin/executor/composer/system/default/PromptRenderer.d.ts +0 -35
  384. package/bin/executor/composer/system/default/PromptRenderer.d.ts.map +0 -1
  385. package/bin/executor/composer/system/default/PromptRenderer.js +0 -23
  386. package/bin/executor/composer/system/default/PromptRenderer.js.map +0 -1
  387. package/bin/executor/composer/system/default/SystemDomain.d.ts +0 -151
  388. package/bin/executor/composer/system/default/SystemDomain.d.ts.map +0 -1
  389. package/bin/executor/composer/system/default/SystemDomain.js +0 -162
  390. package/bin/executor/composer/system/default/SystemDomain.js.map +0 -1
  391. package/bin/executor/composer/system/default/assets/task.prompt.d.ts +0 -7
  392. package/bin/executor/composer/system/default/assets/task.prompt.d.ts.map +0 -1
  393. package/bin/executor/composer/system/default/assets/task.prompt.js +0 -8
  394. package/bin/executor/composer/system/default/assets/task.prompt.js.map +0 -1
  395. package/bin/executor/composer/system/default/variables/GeoContext.d.ts +0 -14
  396. package/bin/executor/composer/system/default/variables/GeoContext.d.ts.map +0 -1
  397. package/bin/executor/composer/system/default/variables/GeoContext.js +0 -150
  398. package/bin/executor/composer/system/default/variables/GeoContext.js.map +0 -1
  399. package/bin/executor/composer/system/default/variables/PromptTypes.d.ts +0 -36
  400. package/bin/executor/composer/system/default/variables/PromptTypes.d.ts.map +0 -1
  401. package/bin/executor/composer/system/default/variables/PromptTypes.js +0 -9
  402. package/bin/executor/composer/system/default/variables/PromptTypes.js.map +0 -1
  403. package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts +0 -61
  404. package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts.map +0 -1
  405. package/bin/executor/composer/system/default/variables/VariableReplacer.js +0 -93
  406. package/bin/executor/composer/system/default/variables/VariableReplacer.js.map +0 -1
  407. package/bin/executor/core-engine/CoreEngineMessageState.d.ts +0 -63
  408. package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +0 -1
  409. package/bin/executor/core-engine/CoreEngineMessageState.js +0 -81
  410. package/bin/executor/core-engine/CoreEngineMessageState.js.map +0 -1
  411. package/bin/session/SessionCommand.d.ts +0 -24
  412. package/bin/session/SessionCommand.d.ts.map +0 -1
  413. package/bin/session/SessionCommand.js +0 -35
  414. package/bin/session/SessionCommand.js.map +0 -1
  415. package/bin/session/messages/SessionActionMessageWriter.d.ts.map +0 -1
  416. package/bin/session/messages/SessionActionMessageWriter.js.map +0 -1
  417. package/bin/session/messages/SessionAssistantMessageState.d.ts +0 -49
  418. package/bin/session/messages/SessionAssistantMessageState.d.ts.map +0 -1
  419. package/bin/session/messages/SessionAssistantMessageState.js +0 -296
  420. package/bin/session/messages/SessionAssistantMessageState.js.map +0 -1
  421. package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +0 -1
  422. package/bin/session/messages/SessionAssistantMessageWriter.js.map +0 -1
  423. package/bin/session/messages/SessionMessageCompaction.d.ts +0 -29
  424. package/bin/session/messages/SessionMessageCompaction.d.ts.map +0 -1
  425. package/bin/session/messages/SessionMessageCompaction.js +0 -128
  426. package/bin/session/messages/SessionMessageCompaction.js.map +0 -1
  427. package/bin/session/runtime/SessionCompactOperation.d.ts +0 -29
  428. package/bin/session/runtime/SessionCompactOperation.d.ts.map +0 -1
  429. package/bin/session/runtime/SessionCompactOperation.js +0 -66
  430. package/bin/session/runtime/SessionCompactOperation.js.map +0 -1
  431. package/bin/session/runtime/SessionHistoryCompaction.d.ts +0 -22
  432. package/bin/session/runtime/SessionHistoryCompaction.d.ts.map +0 -1
  433. package/bin/session/runtime/SessionHistoryCompaction.js +0 -31
  434. package/bin/session/runtime/SessionHistoryCompaction.js.map +0 -1
  435. package/bin/session/storage/JsonlSessionMessageStore.d.ts +0 -77
  436. package/bin/session/storage/JsonlSessionMessageStore.d.ts.map +0 -1
  437. package/bin/session/storage/JsonlSessionMessageStore.js +0 -419
  438. package/bin/session/storage/JsonlSessionMessageStore.js.map +0 -1
  439. package/bin/session/storage/SessionMessageStoreFactory.d.ts +0 -12
  440. package/bin/session/storage/SessionMessageStoreFactory.d.ts.map +0 -1
  441. package/bin/session/storage/SessionMessageStoreFactory.js +0 -13
  442. package/bin/session/storage/SessionMessageStoreFactory.js.map +0 -1
  443. package/bin/types/common/Template.d.ts +0 -9
  444. package/bin/types/common/Template.d.ts.map +0 -1
  445. package/bin/types/common/Template.js +0 -9
  446. package/bin/types/common/Template.js.map +0 -1
  447. package/bin/types/sdk/AgentSessionCompact.d.ts +0 -30
  448. package/bin/types/sdk/AgentSessionCompact.d.ts.map +0 -1
  449. package/bin/types/sdk/AgentSessionCompact.js +0 -8
  450. package/bin/types/sdk/AgentSessionCompact.js.map +0 -1
  451. package/bin/types/session/SessionAssistantMessageState.d.ts.map +0 -1
  452. package/bin/types/session/SessionAssistantMessageState.js.map +0 -1
  453. package/bin/types/session/SessionSegment.d.ts +0 -57
  454. package/bin/types/session/SessionSegment.d.ts.map +0 -1
  455. package/bin/types/session/SessionSegment.js +0 -8
  456. package/bin/types/session/SessionSegment.js.map +0 -1
  457. package/bin/types/store/SessionDataStore.d.ts +0 -88
  458. package/bin/types/store/SessionDataStore.d.ts.map +0 -1
  459. package/bin/types/store/SessionDataStore.js +0 -9
  460. package/bin/types/store/SessionDataStore.js.map +0 -1
  461. package/bin/utils/Template.d.ts +0 -17
  462. package/bin/utils/Template.d.ts.map +0 -1
  463. package/bin/utils/Template.js +0 -24
  464. package/bin/utils/Template.js.map +0 -1
  465. package/scripts/session-compaction-prompts.test.mjs +0 -49
  466. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.ts +0 -162
  467. package/src/executor/composer/system/SessionSystemComposer.ts +0 -25
  468. package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +0 -76
  469. package/src/executor/composer/system/default/PromptRenderer.ts +0 -52
  470. package/src/executor/composer/system/default/SystemDomain.ts +0 -301
  471. package/src/executor/composer/system/default/assets/task.prompt.ts +0 -9
  472. package/src/executor/composer/system/default/assets/task.prompt.ts.txt +0 -33
  473. package/src/executor/composer/system/default/variables/GeoContext.ts +0 -180
  474. package/src/executor/composer/system/default/variables/PromptTypes.ts +0 -37
  475. package/src/executor/composer/system/default/variables/VariableReplacer.ts +0 -154
  476. package/src/executor/core-engine/CoreEngineMessageState.ts +0 -117
  477. package/src/session/SessionCommand.ts +0 -42
  478. package/src/session/messages/SessionAssistantMessageState.ts +0 -392
  479. package/src/session/messages/SessionMessageCompaction.ts +0 -160
  480. package/src/session/runtime/SessionCompactOperation.ts +0 -93
  481. package/src/session/runtime/SessionHistoryCompaction.ts +0 -45
  482. package/src/session/storage/JsonlSessionMessageStore.ts +0 -513
  483. package/src/session/storage/SessionMessageStoreFactory.ts +0 -18
  484. package/src/types/common/Template.ts +0 -9
  485. package/src/types/sdk/AgentSessionCompact.ts +0 -32
  486. package/src/types/session/SessionSegment.ts +0 -62
  487. package/src/types/store/SessionDataStore.ts +0 -113
  488. package/src/utils/Template.ts +0 -28
@@ -1,419 +0,0 @@
1
- /**
2
- * Agent Session Message 的 Active + Segment JSONL 存储。
3
- *
4
- * Active 保存上次 Compact 后产生的真实 Message;Compact 把 Active 前缀写入按
5
- * sequence 范围命名的不可变 Segment,并在 Segment 末尾追加累计 Summary footer。
6
- */
7
- import path from "node:path";
8
- const SEGMENT_FILE_PATTERN = /^(\d+)-(\d+)\.jsonl$/;
9
- const SEQUENCE_FILE_WIDTH = 12;
10
- /** Active + Segment JSONL 存储。 */
11
- export class JsonlSessionMessageStore {
12
- session_id;
13
- active_file_path;
14
- assistant_message_file_path;
15
- segments_dir_path;
16
- lock_file_path;
17
- files;
18
- constructor(options) {
19
- this.files = options.files;
20
- this.session_id = String(options.session_id || "").trim();
21
- this.active_file_path = path.resolve(options.file_path);
22
- this.assistant_message_file_path = path.resolve(options.assistant_message_file_path ||
23
- path.join(path.dirname(this.active_file_path), "assistant_message.json"));
24
- this.segments_dir_path = path.join(path.dirname(this.active_file_path), "segments");
25
- this.lock_file_path = `${this.active_file_path}.lock`;
26
- if (!this.session_id)
27
- throw new Error("JsonlSessionMessageStore requires session_id");
28
- }
29
- /** 创建 Active 与 Segment 布局,并清理已经完成的遗留草稿。 */
30
- async initialize() {
31
- await this.with_write_lock(async () => {
32
- const ranges = await this.list_segment_ranges();
33
- const folded_messages = await this.read_folded_active_messages_unsafe();
34
- const latest_segment_end = ranges.at(-1)?.end_sequence || 0;
35
- const messages = folded_messages.filter((message) => message.sequence > latest_segment_end);
36
- // Compact 先落 Segment 再覆盖 Active。若进程在两步之间退出,重启时按
37
- // Segment sequence 边界清除 Active 重叠前缀,保证不丢消息且上下文不重复。
38
- if (messages.length !== folded_messages.length) {
39
- await this.write_active_messages_unsafe(messages);
40
- }
41
- const draft = await this.read_assistant_message();
42
- if (draft && draft.session_id !== this.session_id) {
43
- throw new Error("assistant_message.json session_id mismatch");
44
- }
45
- const finalized = draft && messages.find((message) => message.message_id === draft.message_id);
46
- const effective_draft = draft && finalized?.type === "assistant" &&
47
- finalized.revision >= draft.revision &&
48
- finalized.status !== "streaming"
49
- ? null
50
- : draft;
51
- this.validate_runtime_sequence(effective_draft ? [...messages, effective_draft] : messages, latest_segment_end);
52
- if (draft &&
53
- finalized?.type === "assistant" &&
54
- finalized.revision >= draft.revision &&
55
- finalized.status !== "streaming") {
56
- await this.files.remove_path(this.assistant_message_file_path);
57
- }
58
- });
59
- }
60
- /** 读取 Active 和当前 Assistant 草稿,并按 revision 折叠。 */
61
- async list_messages() {
62
- await this.ensure_layout();
63
- const by_id = new Map((await this.read_active_messages_unsafe()).map((message) => [message.message_id, message]));
64
- const draft = await this.read_assistant_message();
65
- if (draft) {
66
- const previous = by_id.get(draft.message_id);
67
- if (!previous || draft.revision > previous.revision)
68
- by_id.set(draft.message_id, draft);
69
- }
70
- const messages = [...by_id.values()].sort(compare_message_sequence);
71
- const ranges = await this.list_segment_ranges();
72
- this.validate_runtime_sequence(messages, ranges.at(-1)?.end_sequence || 0);
73
- return messages;
74
- }
75
- /** 读取指定 sequence 之前最近的完整 Segment。 */
76
- async read_segment_before(before_sequence) {
77
- const boundary = Number(before_sequence);
78
- if (!Number.isFinite(boundary))
79
- return null;
80
- const ranges = await this.list_segment_ranges();
81
- const range = [...ranges].reverse().find((item) => item.end_sequence < boundary);
82
- return range ? await this.read_segment(range) : null;
83
- }
84
- /** 读取最新已关闭 Segment 的累计 Summary。 */
85
- async read_latest_summary() {
86
- const ranges = await this.list_segment_ranges();
87
- const latest = ranges[ranges.length - 1];
88
- return latest ? (await this.read_segment(latest)).summary : null;
89
- }
90
- /** 读取全部真实历史,供 Fork 等明确需要完整复制的操作使用。 */
91
- async list_history_messages() {
92
- const ranges = await this.list_segment_ranges();
93
- const messages = [];
94
- for (const range of ranges) {
95
- messages.push(...(await this.read_segment(range)).messages);
96
- }
97
- messages.push(...(await this.list_messages()));
98
- return messages.sort(compare_message_sequence);
99
- }
100
- /** 读取当前存储统计,不解析与当前操作无关的旧 Segment 正文。 */
101
- async stats() {
102
- const ranges = await this.list_segment_ranges();
103
- const active_messages = await this.list_messages();
104
- const latest_range = ranges[ranges.length - 1];
105
- const latest_message = active_messages[active_messages.length - 1] ||
106
- (latest_range ? (await this.read_segment(latest_range)).messages.at(-1) : null) ||
107
- null;
108
- const paths = [this.active_file_path, ...ranges.map((range) => range.file_path)];
109
- const sizes = await Promise.all(paths.map(async (file_path) => await this.files.file_size(file_path).catch(() => 0)));
110
- const latest_sequence = Math.max(latest_range?.end_sequence || 0, active_messages.reduce((max, message) => Math.max(max, message.sequence), 0));
111
- return {
112
- message_count: latest_sequence,
113
- history_bytes: sizes.reduce((total, size) => total + size, 0),
114
- latest_message,
115
- };
116
- }
117
- /** 判断给定边界之前是否仍存在历史 Segment。 */
118
- async has_segment_before(before_sequence) {
119
- return (await this.list_segment_ranges()).some((range) => range.end_sequence < before_sequence);
120
- }
121
- /** 返回当前 Active 之前的读取边界。 */
122
- async active_before_sequence(messages) {
123
- const first = messages[0];
124
- if (first)
125
- return first.sequence;
126
- const ranges = await this.list_segment_ranges();
127
- const latest = ranges[ranges.length - 1];
128
- return latest ? latest.end_sequence + 1 : undefined;
129
- }
130
- /** 读取当前运行中的 Assistant 草稿。 */
131
- async read_assistant_message() {
132
- try {
133
- const value = JSON.parse((await this.files.read_file(this.assistant_message_file_path)).toString("utf8"));
134
- this.validate_message(value);
135
- return value.type === "assistant" && value.status === "streaming" ? value : null;
136
- }
137
- catch (error) {
138
- if (error.code === "ENOENT")
139
- return null;
140
- throw error;
141
- }
142
- }
143
- /** 原子覆盖运行中的 Assistant 草稿。 */
144
- async write_assistant_message(message) {
145
- this.validate_message(message);
146
- if (message.status !== "streaming")
147
- throw new Error("Assistant draft must be streaming");
148
- await this.with_write_lock(async () => {
149
- const current = await this.read_assistant_message();
150
- if (!current || current.message_id !== message.message_id) {
151
- throw new Error(`Assistant draft does not exist: ${message.message_id}`);
152
- }
153
- if (message.revision !== current.revision + 1) {
154
- throw new Error(`Invalid Assistant draft revision: ${message.message_id}`);
155
- }
156
- await this.write_assistant_message_unsafe(message);
157
- });
158
- }
159
- /** 在写锁内分配全局 sequence 并创建唯一 Assistant 草稿。 */
160
- async create_assistant_message(build_message) {
161
- return await this.with_write_lock(async () => {
162
- const current = await this.read_assistant_message();
163
- if (current)
164
- throw new Error(`Assistant draft already exists: ${current.message_id}`);
165
- const messages = await this.read_active_messages_unsafe();
166
- const ranges = await this.list_segment_ranges();
167
- this.validate_runtime_sequence(messages, ranges.at(-1)?.end_sequence || 0);
168
- const message = build_message({
169
- message_sequence: await this.next_sequence_unsafe(messages),
170
- messages,
171
- });
172
- this.validate_message(message);
173
- if (message.status !== "streaming" || message.revision !== 1) {
174
- throw new Error("New Assistant draft must be streaming at revision 1");
175
- }
176
- await this.write_assistant_message_unsafe(message);
177
- return message;
178
- });
179
- }
180
- /** 创建新 Message 或向 Active 追加已有 Message revision。 */
181
- async append_message(build_message) {
182
- return await this.with_write_lock(async () => {
183
- const messages = await this.read_active_messages_unsafe();
184
- const draft = await this.read_assistant_message();
185
- const current_messages = draft ? [...messages, draft] : messages;
186
- const ranges = await this.list_segment_ranges();
187
- this.validate_runtime_sequence(current_messages, ranges.at(-1)?.end_sequence || 0);
188
- const message = build_message({
189
- message_sequence: await this.next_sequence_unsafe(current_messages),
190
- messages: current_messages,
191
- });
192
- this.validate_message(message);
193
- await this.files.append_file(this.active_file_path, `${JSON.stringify(message)}\n`);
194
- return message;
195
- });
196
- }
197
- /** 将 Assistant 草稿最终追加到 Active,并删除草稿文件。 */
198
- async finalize_assistant_message(message) {
199
- this.validate_message(message);
200
- if (message.status === "streaming")
201
- throw new Error("Final Assistant message cannot be streaming");
202
- await this.with_write_lock(async () => {
203
- const current = await this.read_assistant_message();
204
- if (!current || current.message_id !== message.message_id) {
205
- throw new Error(`Assistant draft does not exist: ${message.message_id}`);
206
- }
207
- if (message.revision !== current.revision + 1) {
208
- throw new Error(`Invalid final Assistant revision: ${message.message_id}`);
209
- }
210
- await this.files.append_file(this.active_file_path, `${JSON.stringify(message)}\n`);
211
- await this.files.remove_path(this.assistant_message_file_path);
212
- });
213
- }
214
- /** 把 Active 前缀与累计 Summary 提交为不可变 Segment。 */
215
- async compact_active(input) {
216
- return await this.with_write_lock(async () => {
217
- const draft = await this.read_assistant_message();
218
- if (draft)
219
- throw new Error("Cannot compact while Assistant is streaming");
220
- const active_messages = await this.read_active_messages_unsafe();
221
- const ranges = await this.list_segment_ranges();
222
- this.validate_runtime_sequence(active_messages, ranges.at(-1)?.end_sequence || 0);
223
- const segment_messages = active_messages.filter((message) => message.sequence <= input.through_sequence);
224
- const retained_messages = active_messages.filter((message) => message.sequence > input.through_sequence);
225
- if (segment_messages.length === 0) {
226
- throw new Error("Compact boundary does not include Active messages");
227
- }
228
- const start_sequence = segment_messages[0].sequence;
229
- const end_sequence = segment_messages.at(-1)?.sequence || 0;
230
- if (input.summary.through_sequence !== end_sequence) {
231
- throw new Error("Compact Summary boundary does not match Segment end");
232
- }
233
- const range = {
234
- start_sequence,
235
- end_sequence,
236
- file_path: this.segment_file_path(start_sequence, end_sequence),
237
- };
238
- if (await this.files.path_exists(range.file_path)) {
239
- throw new Error(`Session Segment already exists: ${range.file_path}`);
240
- }
241
- await this.write_segment_unsafe(range, segment_messages, input.summary);
242
- await this.write_active_messages_unsafe(retained_messages);
243
- return {
244
- segment: { range, messages: segment_messages, summary: input.summary },
245
- active_messages: retained_messages,
246
- };
247
- });
248
- }
249
- /** 扫描 Segment 文件名并返回 sequence 升序索引。 */
250
- async list_segment_ranges() {
251
- await this.ensure_layout();
252
- const entries = await this.files.read_directory(this.segments_dir_path);
253
- const ranges = entries
254
- .flatMap((entry) => {
255
- if (!entry.is_file)
256
- return [];
257
- const match = SEGMENT_FILE_PATTERN.exec(entry.name);
258
- if (!match)
259
- return [];
260
- const start_sequence = Number(match[1]);
261
- const end_sequence = Number(match[2]);
262
- if (!Number.isInteger(start_sequence) || !Number.isInteger(end_sequence))
263
- return [];
264
- return [{
265
- start_sequence,
266
- end_sequence,
267
- file_path: path.join(this.segments_dir_path, entry.name),
268
- }];
269
- })
270
- .sort((left, right) => left.start_sequence - right.start_sequence);
271
- for (let index = 0; index < ranges.length; index += 1) {
272
- const range = ranges[index];
273
- const previous = ranges[index - 1];
274
- if (!range || range.start_sequence > range.end_sequence) {
275
- throw new Error("Session Segment filename contains an invalid sequence range");
276
- }
277
- if (index === 0 && range.start_sequence !== 1) {
278
- throw new Error("The first Session Segment must start at sequence 1");
279
- }
280
- if (previous && range.start_sequence !== previous.end_sequence + 1) {
281
- throw new Error("Session Segment sequence ranges must be contiguous and non-overlapping");
282
- }
283
- }
284
- return ranges;
285
- }
286
- /** 读取并验证一个不可变 Segment。 */
287
- async read_segment(range) {
288
- const raw = (await this.files.read_file(range.file_path)).toString("utf8");
289
- const lines = raw.split("\n").map((line) => line.trim()).filter(Boolean);
290
- const summary_value = JSON.parse(lines.pop() || "null");
291
- this.validate_summary(summary_value, range.end_sequence);
292
- const messages = lines.map((line) => {
293
- const message = JSON.parse(line);
294
- this.validate_message(message);
295
- return message;
296
- }).sort(compare_message_sequence);
297
- if (messages.length !== range.end_sequence - range.start_sequence + 1 ||
298
- messages[0]?.sequence !== range.start_sequence ||
299
- messages.at(-1)?.sequence !== range.end_sequence ||
300
- messages.some((message, index) => message.sequence !== range.start_sequence + index)) {
301
- throw new Error(`Session Segment range mismatch: ${range.file_path}`);
302
- }
303
- return { range, messages, summary: summary_value };
304
- }
305
- /** 读取 Active 中每个 Message 的最高 revision。 */
306
- async read_active_messages_unsafe() {
307
- const messages = await this.read_folded_active_messages_unsafe();
308
- const ranges = await this.list_segment_ranges();
309
- const latest_segment_end = ranges.at(-1)?.end_sequence || 0;
310
- const active_messages = messages.filter((message) => message.sequence > latest_segment_end);
311
- return active_messages;
312
- }
313
- /** 读取 Active 原始行,并按 Message ID 保留最高 revision。 */
314
- async read_folded_active_messages_unsafe() {
315
- const raw = await this.files.read_file(this.active_file_path)
316
- .then((value) => value.toString("utf8"))
317
- .catch(() => "");
318
- const by_id = new Map();
319
- for (const line of raw.split("\n")) {
320
- if (!line.trim())
321
- continue;
322
- const message = JSON.parse(line);
323
- this.validate_message(message);
324
- const previous = by_id.get(message.message_id);
325
- if (!previous || message.revision > previous.revision)
326
- by_id.set(message.message_id, message);
327
- }
328
- return [...by_id.values()].sort(compare_message_sequence);
329
- }
330
- /** 计算下一条真实 Message sequence。 */
331
- async next_sequence_unsafe(messages) {
332
- const ranges = await this.list_segment_ranges();
333
- return Math.max(ranges.at(-1)?.end_sequence || 0, messages.reduce((max, message) => Math.max(max, message.sequence), 0)) + 1;
334
- }
335
- /** 原子覆盖 Assistant 草稿。 */
336
- async write_assistant_message_unsafe(message) {
337
- await this.files.write_file_atomically(this.assistant_message_file_path, `${JSON.stringify(message, null, 2)}\n`);
338
- }
339
- /** 原子覆盖 Active,只写入每个 Message 的最终 revision。 */
340
- async write_active_messages_unsafe(messages) {
341
- const content = messages.length > 0
342
- ? `${messages.map((message) => JSON.stringify(message)).join("\n")}\n`
343
- : "";
344
- await this.files.write_file_atomically(this.active_file_path, content);
345
- }
346
- /** 原子创建一个带累计 Summary footer 的 Segment。 */
347
- async write_segment_unsafe(range, messages, summary) {
348
- const content = `${[
349
- ...messages.map((message) => JSON.stringify(message)),
350
- JSON.stringify(summary),
351
- ].join("\n")}\n`;
352
- if (await this.files.path_exists(range.file_path)) {
353
- throw new Error(`Session Segment already exists: ${range.file_path}`);
354
- }
355
- await this.files.write_file_atomically(range.file_path, content);
356
- }
357
- /** 生成稳定的 Segment sequence 范围文件名。 */
358
- segment_file_path(start_sequence, end_sequence) {
359
- const start = String(start_sequence).padStart(SEQUENCE_FILE_WIDTH, "0");
360
- const end = String(end_sequence).padStart(SEQUENCE_FILE_WIDTH, "0");
361
- return path.join(this.segments_dir_path, `${start}-${end}.jsonl`);
362
- }
363
- /** 验证真实 Session Message。 */
364
- validate_message(message) {
365
- if (!message || typeof message !== "object")
366
- throw new Error("message must be an object");
367
- if (message.session_id !== this.session_id)
368
- throw new Error("session_id mismatch");
369
- if (!message.message_id || !Number.isInteger(message.sequence) || !Number.isInteger(message.revision)) {
370
- throw new Error("message identity, sequence and revision are required");
371
- }
372
- if (message.type === "assistant") {
373
- const sequences = new Set();
374
- for (const part of message.parts) {
375
- if (!Number.isInteger(part.sequence) || sequences.has(part.sequence)) {
376
- throw new Error(`invalid Assistant part sequence: ${part.part_id}`);
377
- }
378
- sequences.add(part.sequence);
379
- }
380
- }
381
- }
382
- /** 验证 Segment footer Summary。 */
383
- validate_summary(summary, expected_sequence) {
384
- if (!summary || summary.record_type !== "summary") {
385
- throw new Error("Session Segment summary footer is required");
386
- }
387
- if (summary.session_id !== this.session_id || !summary.summary_id) {
388
- throw new Error("Session Segment summary identity mismatch");
389
- }
390
- if (summary.through_sequence !== expected_sequence || !String(summary.text || "").trim()) {
391
- throw new Error("Session Segment summary boundary is invalid");
392
- }
393
- }
394
- /** 验证 Active 与草稿合并后紧接最新 Segment,且真实 Message sequence 连续。 */
395
- validate_runtime_sequence(messages, latest_segment_end) {
396
- const ordered_messages = [...messages].sort(compare_message_sequence);
397
- if (ordered_messages.some((message, index) => message.sequence !== latest_segment_end + index + 1)) {
398
- throw new Error("Active and draft Session Message sequences must be contiguous");
399
- }
400
- }
401
- /** 创建 Active、Segment 与锁所需目录。 */
402
- async ensure_layout() {
403
- await this.files.ensure_directory(path.dirname(this.active_file_path));
404
- await this.files.ensure_directory(this.segments_dir_path);
405
- if (!(await this.files.path_exists(this.active_file_path))) {
406
- await this.files.write_file_atomically(this.active_file_path, "");
407
- }
408
- }
409
- /** 使用同目录锁串行化 Active、草稿与 Segment 写入。 */
410
- async with_write_lock(callback) {
411
- await this.ensure_layout();
412
- return await this.files.with_file_lock(this.lock_file_path, callback);
413
- }
414
- }
415
- /** 按全局 Message sequence 升序排序。 */
416
- function compare_message_sequence(left, right) {
417
- return left.sequence - right.sequence;
418
- }
419
- //# sourceMappingURL=JsonlSessionMessageStore.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"JsonlSessionMessageStore.js","sourceRoot":"","sources":["../../../src/session/storage/JsonlSessionMessageStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAC;AAgB7B,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AACpD,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,iCAAiC;AACjC,MAAM,OAAO,wBAAwB;IAC1B,UAAU,CAAS;IACnB,gBAAgB,CAAS;IACzB,2BAA2B,CAAS;IACpC,iBAAiB,CAAS;IAElB,cAAc,CAAS;IACvB,KAAK,CAAa;IAEnC,YAAY,OAAwC;QAClD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACxD,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAC7C,OAAO,CAAC,2BAA2B;YACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,wBAAwB,CAAC,CAC3E,CAAC;QACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAU,CAAC,CAAC;QACpF,IAAI,CAAC,cAAc,GAAG,GAAG,IAAI,CAAC,gBAAgB,OAAO,CAAC;QACtD,IAAI,CAAC,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACxF,CAAC;IAED,2CAA2C;IAC3C,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,kCAAkC,EAAE,CAAC;YACxE,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CACnD,CAAC;YAEF,gDAAgD;YAChD,mDAAmD;YACnD,IAAI,QAAQ,CAAC,MAAM,KAAK,eAAe,CAAC,MAAM,EAAE,CAAC;gBAC/C,MAAM,IAAI,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClD,IAAI,KAAK,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,MAAM,SAAS,GAAG,KAAK,IAAI,QAAQ,CAAC,IAAI,CACtC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,CACrD,CAAC;YACF,MAAM,eAAe,GAAG,KAAK,IAAI,SAAS,EAAE,IAAI,KAAK,WAAW;gBAC9D,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;gBACpC,SAAS,CAAC,MAAM,KAAK,WAAW;gBAChC,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK,CAAC;YACV,IAAI,CAAC,yBAAyB,CAC5B,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAC3D,kBAAkB,CACnB,CAAC;YACF,IACE,KAAK;gBACL,SAAS,EAAE,IAAI,KAAK,WAAW;gBAC/B,SAAS,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ;gBACpC,SAAS,CAAC,MAAM,KAAK,WAAW,EAChC,CAAC;gBACD,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACjE,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,KAAK,CAAC,aAAa;QACjB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,GAAG,CACnB,CAAC,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAC3F,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAClD,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC7C,IAAI,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ;gBAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC1F,CAAC;QACD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,qCAAqC;IACrC,KAAK,CAAC,mBAAmB,CAAC,eAAuB;QAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC,CAAC;QACjF,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvD,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,mBAAmB;QACvB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,CAAC;IAED,sCAAsC;IACtC,KAAK,CAAC,qBAAqB;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAqB,EAAE,CAAC;QACtC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAC/C,OAAO,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IACjD,CAAC;IAED,wCAAwC;IACxC,KAAK,CAAC,KAAK;QACT,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;YAChE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC/E,IAAI,CAAC;QACP,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CACrF,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC9B,YAAY,EAAE,YAAY,IAAI,CAAC,EAC/B,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC7E,CAAC;QACF,OAAO;YACL,aAAa,EAAE,eAAe;YAC9B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,CAAC;YAC7D,cAAc;SACf,CAAC;IACJ,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,kBAAkB,CAAC,eAAuB;QAC9C,OAAO,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAC5C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,YAAY,GAAG,eAAe,CAChD,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,KAAK,CAAC,sBAAsB,CAAC,QAA0B;QACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,sBAAsB;QAC1B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CACtB,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACrD,CAAC;YAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC;YACpE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,uBAAuB,CAAC,OAAgC;QAC5D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACzF,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,4CAA4C;IAC5C,KAAK,CAAC,wBAAwB,CAC5B,aAA4E;QAE5E,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACpD,IAAI,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YACtF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;YAC3E,MAAM,OAAO,GAAG,aAAa,CAAC;gBAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC;gBAC3D,QAAQ;aACT,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,IAAI,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;YACnD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,cAAc,CAClB,aAAmE;QAEnE,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClD,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,IAAI,CAAC,yBAAyB,CAC5B,gBAAgB,EAChB,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CACjC,CAAC;YACF,MAAM,OAAO,GAAG,aAAa,CAAC;gBAC5B,gBAAgB,EAAE,MAAM,IAAI,CAAC,oBAAoB,CAAC,gBAAgB,CAAC;gBACnE,QAAQ,EAAE,gBAAgB;aAC3B,CAAC,CAAC;YACH,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpF,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,0BAA0B,CAAC,OAAgC;QAC/D,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACnG,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACpD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,KAAK,OAAO,CAAC,UAAU,EAAE,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,mCAAmC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;YAC7E,CAAC;YACD,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACpF,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,cAAc,CAClB,KAAiC;QAEjC,OAAO,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,IAAI,EAAE;YAC3C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAClD,IAAI,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAC1E,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChD,IAAI,CAAC,yBAAyB,CAC5B,eAAe,EACf,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CACjC,CAAC;YACF,MAAM,gBAAgB,GAAG,eAAe,CAAC,MAAM,CAC7C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC,gBAAgB,CACxD,CAAC;YACF,MAAM,iBAAiB,GAAG,eAAe,CAAC,MAAM,CAC9C,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,gBAAgB,CACvD,CAAC;YACF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,cAAc,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;YACpD,MAAM,YAAY,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,CAAC,CAAC;YAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,KAAK,YAAY,EAAE,CAAC;gBACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACzE,CAAC;YACD,MAAM,KAAK,GAAwB;gBACjC,cAAc;gBACd,YAAY;gBACZ,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,YAAY,CAAC;aAChE,CAAC;YACF,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;YACxE,CAAC;YACD,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YACxE,MAAM,IAAI,CAAC,4BAA4B,CAAC,iBAAiB,CAAC,CAAC;YAC3D,OAAO;gBACL,OAAO,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;gBACtE,eAAe,EAAE,iBAAiB;aACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,uCAAuC;IACvC,KAAK,CAAC,mBAAmB;QACvB,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO;aACnB,OAAO,CAAsB,CAAC,KAAK,EAAE,EAAE;YACtC,IAAI,CAAC,KAAK,CAAC,OAAO;gBAAE,OAAO,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,CAAC;YACtB,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACxC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC;gBAAE,OAAO,EAAE,CAAC;YACpF,OAAO,CAAC;oBACN,cAAc;oBACd,YAAY;oBACZ,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,KAAK,CAAC,IAAI,CAAC;iBACzD,CAAC,CAAC;QACL,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC;QACrE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YACD,IAAI,QAAQ,IAAI,KAAK,CAAC,cAAc,KAAK,QAAQ,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;gBACnE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;YAC5F,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,0BAA0B;IAClB,KAAK,CAAC,YAAY,CAAC,KAA0B;QACnD,MAAM,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC3E,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzE,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,MAAM,CAAiC,CAAC;QACxF,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAClC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;YACnD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/B,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAClC,IACE,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,cAAc,GAAG,CAAC;YACjE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,KAAK,CAAC,cAAc;YAC9C,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,KAAK,CAAC,YAAY;YAChD,QAAQ,CAAC,IAAI,CACX,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC,cAAc,GAAG,KAAK,CACtE,EACD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAsC,EAAE,CAAC;IAC9E,CAAC;IAED,0CAA0C;IAClC,KAAK,CAAC,2BAA2B;QACvC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,kCAAkC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,CAAC;QAC5D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CACrC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CACnD,CAAC;QACF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,iDAAiD;IACzC,KAAK,CAAC,kCAAkC;QAC9C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC;aAC1D,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACvC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;QAChD,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBAAE,SAAS;YAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAmB,CAAC;YACnD,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ;gBAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAChG,CAAC;QACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;IAC5D,CAAC;IAED,gCAAgC;IACxB,KAAK,CAAC,oBAAoB,CAAC,QAA0B;QAC3D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,OAAO,IAAI,CAAC,GAAG,CACb,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,IAAI,CAAC,EAChC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CACtE,GAAG,CAAC,CAAC;IACR,CAAC;IAED,yBAAyB;IACjB,KAAK,CAAC,8BAA8B,CAAC,OAAgC;QAC3E,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CACpC,IAAI,CAAC,2BAA2B,EAChC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CACxC,CAAC;IACJ,CAAC;IAED,8CAA8C;IACtC,KAAK,CAAC,4BAA4B,CAAC,QAA0B;QACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC;YACjC,CAAC,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI;YACtE,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACzE,CAAC;IAED,0CAA0C;IAClC,KAAK,CAAC,oBAAoB,CAChC,KAA0B,EAC1B,QAA0B,EAC1B,OAA8B;QAE9B,MAAM,OAAO,GAAG,GAAG;YACjB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;SACxB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACjB,IAAI,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,mCAAmC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED,oCAAoC;IAC5B,iBAAiB,CAAC,cAAsB,EAAE,YAAoB;QACpE,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACxE,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,KAAK,IAAI,GAAG,QAAQ,CAAC,CAAC;IACpE,CAAC;IAED,4BAA4B;IACpB,gBAAgB,CAAC,OAAuB;QAC9C,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAC1F,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtG,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;QAC1E,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;YACpC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrE,MAAM,IAAI,KAAK,CAAC,oCAAoC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtE,CAAC;gBACD,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;IACH,CAAC;IAED,iCAAiC;IACzB,gBAAgB,CACtB,OAAqC,EACrC,iBAAyB;QAEzB,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,OAAO,CAAC,UAAU,KAAK,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;YAClE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,OAAO,CAAC,gBAAgB,KAAK,iBAAiB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,4DAA4D;IACpD,yBAAyB,CAC/B,QAA0B,EAC1B,kBAA0B;QAE1B,MAAM,gBAAgB,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACtE,IAAI,gBAAgB,CAAC,IAAI,CACvB,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,kBAAkB,GAAG,KAAK,GAAG,CAAC,CACxE,EAAE,CAAC;YACF,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC;QACnF,CAAC;IACH,CAAC;IAED,gCAAgC;IACxB,KAAK,CAAC,aAAa;QACzB,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvE,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC1D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAED,uCAAuC;IAC/B,KAAK,CAAC,eAAe,CAAI,QAA0B;QACzD,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAC3B,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC;CACF;AAED,iCAAiC;AACjC,SAAS,wBAAwB,CAAC,IAAoB,EAAE,KAAqB;IAC3E,OAAO,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AACxC,CAAC"}
@@ -1,12 +0,0 @@
1
- /**
2
- * Agent Session Message Store 工厂。
3
- *
4
- * 关键点(中文)
5
- * - 跨 package 调用方只依赖 SessionMessageStore contract,不依赖 JSONL 实现类。
6
- * - 物理格式由 @downcity/agent 内部选择,后续替换实现不会扩散到宿主 Plugin。
7
- */
8
- import type { JsonlSessionMessageStoreOptions } from "../../types/store/LocalStore.js";
9
- import type { SessionMessageStore } from "../../types/store/SessionDataStore.js";
10
- /** 创建当前默认的本地 Session Message Store。 */
11
- export declare function create_session_message_store(options: JsonlSessionMessageStoreOptions): SessionMessageStore;
12
- //# sourceMappingURL=SessionMessageStoreFactory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionMessageStoreFactory.d.ts","sourceRoot":"","sources":["../../../src/session/storage/SessionMessageStoreFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,6BAA6B,CAAC;AACnF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAE7E,uCAAuC;AACvC,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,+BAA+B,GACvC,mBAAmB,CAErB"}
@@ -1,13 +0,0 @@
1
- /**
2
- * Agent Session Message Store 工厂。
3
- *
4
- * 关键点(中文)
5
- * - 跨 package 调用方只依赖 SessionMessageStore contract,不依赖 JSONL 实现类。
6
- * - 物理格式由 @downcity/agent 内部选择,后续替换实现不会扩散到宿主 Plugin。
7
- */
8
- import { JsonlSessionMessageStore } from "../../session/storage/JsonlSessionMessageStore.js";
9
- /** 创建当前默认的本地 Session Message Store。 */
10
- export function create_session_message_store(options) {
11
- return new JsonlSessionMessageStore(options);
12
- }
13
- //# sourceMappingURL=SessionMessageStoreFactory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionMessageStoreFactory.js","sourceRoot":"","sources":["../../../src/session/storage/SessionMessageStoreFactory.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,+CAA+C,CAAC;AAIzF,uCAAuC;AACvC,MAAM,UAAU,4BAA4B,CAC1C,OAAwC;IAExC,OAAO,IAAI,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * 字符串模板变量类型定义。
3
- *
4
- * 职责说明(中文)
5
- * - 统一描述 `{{variable}}` 模板渲染时的变量映射结构。
6
- * - 供 init 与 runtime prompt 渲染等场景复用。
7
- */
8
- export type TemplateVariableMap = Record<string, string>;
9
- //# sourceMappingURL=Template.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Template.d.ts","sourceRoot":"","sources":["../../../src/types/common/Template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC"}
@@ -1,9 +0,0 @@
1
- /**
2
- * 字符串模板变量类型定义。
3
- *
4
- * 职责说明(中文)
5
- * - 统一描述 `{{variable}}` 模板渲染时的变量映射结构。
6
- * - 供 init 与 runtime prompt 渲染等场景复用。
7
- */
8
- export {};
9
- //# sourceMappingURL=Template.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Template.js","sourceRoot":"","sources":["../../../src/types/common/Template.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -1,30 +0,0 @@
1
- /**
2
- * Session 显式压缩句柄与结果类型。
3
- *
4
- * `session.compact()` 返回句柄表示请求已进入有序队列;压缩真正结束后由
5
- * `finished` 兑现最终结果,调用方不需要从 Action Message 反推完成状态。
6
- */
7
- import type { SessionCompactReason } from "@downcity/type";
8
- /** 一次显式 Session 压缩的最终结果。 */
9
- export interface AgentSessionCompactResult {
10
- /** 当前压缩请求的稳定标识。 */
11
- compact_id: string;
12
- /** 压缩请求是否成功完成;没有可压缩内容同样视为成功。 */
13
- success: boolean;
14
- /** 是否实际生成并提交了压缩计划。 */
15
- compacted: boolean;
16
- /** 当前请求结束的稳定原因。 */
17
- reason: SessionCompactReason;
18
- /** 压缩失败时的错误文本。 */
19
- error?: string;
20
- }
21
- /** 一次显式 Session 压缩的等待句柄。 */
22
- export interface AgentSessionCompactHandle {
23
- /** 当前句柄绑定的压缩请求标识。 */
24
- id: string;
25
- /** 已完成后的最终结果;`finished` 兑现前为 null。 */
26
- result: AgentSessionCompactResult | null;
27
- /** 等待压缩 Command 真正完成的 Promise。 */
28
- finished: Promise<AgentSessionCompactResult>;
29
- }
30
- //# sourceMappingURL=AgentSessionCompact.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentSessionCompact.d.ts","sourceRoot":"","sources":["../../../src/types/sdk/AgentSessionCompact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,4BAA4B;AAC5B,MAAM,WAAW,yBAAyB;IACxC,mBAAmB;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,sBAAsB;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB;IACnB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,4BAA4B;AAC5B,MAAM,WAAW,yBAAyB;IACxC,qBAAqB;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,sCAAsC;IACtC,MAAM,EAAE,yBAAyB,GAAG,IAAI,CAAC;IACzC,kCAAkC;IAClC,QAAQ,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;CAC9C"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Session 显式压缩句柄与结果类型。
3
- *
4
- * `session.compact()` 返回句柄表示请求已进入有序队列;压缩真正结束后由
5
- * `finished` 兑现最终结果,调用方不需要从 Action Message 反推完成状态。
6
- */
7
- export {};
8
- //# sourceMappingURL=AgentSessionCompact.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"AgentSessionCompact.js","sourceRoot":"","sources":["../../../src/types/sdk/AgentSessionCompact.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionAssistantMessageState.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionAssistantMessageState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD,oCAAoC;AACpC,MAAM,WAAW,mCAAmC;IAClD,6CAA6C;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,KAAK,EAAE,mBAAmB,CAAC;IAC3B,qDAAqD;IACrD,aAAa,EAAE,MAAM,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC9C,2CAA2C;IAC3C,cAAc,EAAE,CACd,OAAO,EAAE,cAAc,EACvB,gBAAgB,CAAC,EAAE,OAAO,KACvB,IAAI,CAAC;IACV,mDAAmD;IACnD,eAAe,EAAE,CACf,QAAQ,EAAE,eAAe,EACzB,OAAO,EAAE,cAAc,KACpB,IAAI,CAAC;CACX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionAssistantMessageState.js","sourceRoot":"","sources":["../../../src/types/session/SessionAssistantMessageState.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,57 +0,0 @@
1
- /**
2
- * Session Message 物理分段类型。
3
- *
4
- * Segment 保存一段连续的原始 Message,并在文件末尾保存覆盖到该段末尾的累计 Summary。
5
- * Summary 只服务模型上下文,不占用 Session Message sequence。
6
- */
7
- import type { SessionMessage } from "@downcity/type";
8
- /** 已关闭 Segment 的累计上下文摘要。 */
9
- export interface SessionSegmentSummary {
10
- /** 记录类型固定为 summary,用于和原始 Message 行区分。 */
11
- record_type: "summary";
12
- /** 当前 Summary 所属 Session 标识。 */
13
- session_id: string;
14
- /** 当前 Summary 的稳定唯一标识。 */
15
- summary_id: string;
16
- /** 当前 Summary 已覆盖到的最后一条真实 Message sequence。 */
17
- through_sequence: number;
18
- /** 供下一轮模型直接使用的累计摘要文本。 */
19
- text: string;
20
- /** 当前 Summary 创建时间戳(ms)。 */
21
- created_at: number;
22
- }
23
- /** 已关闭 Segment 的 sequence 范围与文件位置。 */
24
- export interface SessionSegmentRange {
25
- /** Segment 内第一条真实 Message sequence。 */
26
- start_sequence: number;
27
- /** Segment 内最后一条真实 Message sequence。 */
28
- end_sequence: number;
29
- /** Segment JSONL 文件的绝对路径。 */
30
- file_path: string;
31
- }
32
- /** 从一个已关闭 Segment 读取出的完整数据。 */
33
- export interface SessionSegmentSnapshot {
34
- /** Segment 的 sequence 范围。 */
35
- range: SessionSegmentRange;
36
- /** Segment 中按 sequence 升序排列的原始 Message。 */
37
- messages: SessionMessage[];
38
- /** Segment 文件末尾的累计 Summary。 */
39
- summary: SessionSegmentSummary;
40
- }
41
- /** 当前模型上下文所需的最小 Session 快照。 */
42
- export interface SessionContextSnapshot {
43
- /** 最新已关闭 Segment 的累计 Summary;从未 Compact 时为空。 */
44
- summary: SessionSegmentSummary | null;
45
- /** Active 中上次 Compact 后产生的全部真实 Message。 */
46
- messages: SessionMessage[];
47
- }
48
- /** Session 历史存储统计。 */
49
- export interface SessionMessageStorageStats {
50
- /** 当前 Session 已分配的真实 Message 总数。 */
51
- message_count: number;
52
- /** Active 与所有 Segment 文件占用的总字节数。 */
53
- history_bytes: number;
54
- /** 当前最新真实 Message;空 Session 时为空。 */
55
- latest_message: SessionMessage | null;
56
- }
57
- //# sourceMappingURL=SessionSegment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SessionSegment.d.ts","sourceRoot":"","sources":["../../../src/types/session/SessionSegment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAErD,4BAA4B;AAC5B,MAAM,WAAW,qBAAqB;IACpC,yCAAyC;IACzC,WAAW,EAAE,SAAS,CAAC;IACvB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,gBAAgB,EAAE,MAAM,CAAC;IACzB,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,sCAAsC;AACtC,MAAM,WAAW,mBAAmB;IAClC,uCAAuC;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,wCAAwC;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,6BAA6B;IAC7B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,6BAA6B;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,2CAA2C;IAC3C,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B,+BAA+B;IAC/B,OAAO,EAAE,qBAAqB,CAAC;CAChC;AAED,+BAA+B;AAC/B,MAAM,WAAW,sBAAsB;IACrC,gDAAgD;IAChD,OAAO,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACtC,2CAA2C;IAC3C,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,sBAAsB;AACtB,MAAM,WAAW,0BAA0B;IACzC,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,oCAAoC;IACpC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC"}