@downcity/agent 1.1.408 → 1.1.437

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 (1152) hide show
  1. package/README.md +63 -51
  2. package/bin/agent/Agent.d.ts +39 -17
  3. package/bin/agent/Agent.d.ts.map +1 -1
  4. package/bin/agent/Agent.js +169 -71
  5. package/bin/agent/Agent.js.map +1 -1
  6. package/bin/agent/AgentInstructions.d.ts +1 -1
  7. package/bin/agent/AgentInstructions.js +3 -3
  8. package/bin/agent/AgentInstructions.js.map +1 -1
  9. package/bin/agent/AgentMemoryStorage.d.ts +18 -0
  10. package/bin/agent/AgentMemoryStorage.d.ts.map +1 -0
  11. package/bin/agent/AgentMemoryStorage.js +176 -0
  12. package/bin/agent/AgentMemoryStorage.js.map +1 -0
  13. package/bin/agent/AgentSessions.d.ts +32 -33
  14. package/bin/agent/AgentSessions.d.ts.map +1 -1
  15. package/bin/agent/AgentSessions.js +122 -72
  16. package/bin/agent/AgentSessions.js.map +1 -1
  17. package/bin/executor/Executor.d.ts +12 -30
  18. package/bin/executor/Executor.d.ts.map +1 -1
  19. package/bin/executor/Executor.js +39 -121
  20. package/bin/executor/Executor.js.map +1 -1
  21. package/bin/executor/composer/system/default/SystemPromptAssets.d.ts +0 -4
  22. package/bin/executor/composer/system/default/SystemPromptAssets.d.ts.map +1 -1
  23. package/bin/executor/composer/system/default/SystemPromptAssets.js +1 -6
  24. package/bin/executor/composer/system/default/SystemPromptAssets.js.map +1 -1
  25. package/bin/executor/composer/system/default/assets/core.prompt.d.ts +1 -1
  26. package/bin/executor/composer/system/default/assets/core.prompt.d.ts.map +1 -1
  27. package/bin/executor/composer/system/default/assets/core.prompt.js +1 -1
  28. package/bin/executor/composer/system/default/assets/core.prompt.js.map +1 -1
  29. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts +3 -9
  30. package/bin/executor/core-engine/CoreEngineContextCompaction.d.ts.map +1 -1
  31. package/bin/executor/core-engine/CoreEngineContextCompaction.js +4 -130
  32. package/bin/executor/core-engine/CoreEngineContextCompaction.js.map +1 -1
  33. package/bin/executor/core-engine/CoreEngineError.d.ts +1 -1
  34. package/bin/executor/core-engine/CoreEngineError.d.ts.map +1 -1
  35. package/bin/executor/core-engine/CoreEngineLoopDecision.d.ts +1 -1
  36. package/bin/executor/core-engine/CoreEngineRunner.d.ts +3 -30
  37. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
  38. package/bin/executor/core-engine/CoreEngineRunner.js +83 -245
  39. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
  40. package/bin/executor/core-engine/CoreEngineSignals.d.ts +7 -7
  41. package/bin/executor/core-engine/CoreEngineSignals.d.ts.map +1 -1
  42. package/bin/executor/core-engine/CoreEngineSignals.js +1 -1
  43. package/bin/executor/core-engine/CoreEngineSignals.js.map +1 -1
  44. package/bin/executor/messages/SessionAttachmentMapper.d.ts +2 -2
  45. package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
  46. package/bin/executor/messages/SessionAttachmentMapper.js.map +1 -1
  47. package/bin/executor/messages/SessionMessageLog.d.ts +3 -3
  48. package/bin/executor/messages/SessionMessageLog.d.ts.map +1 -1
  49. package/bin/executor/messages/SessionMessageLog.js.map +1 -1
  50. package/bin/executor/messages/SessionModelMessages.d.ts +1 -4
  51. package/bin/executor/messages/SessionModelMessages.d.ts.map +1 -1
  52. package/bin/executor/messages/SessionModelMessages.js +81 -91
  53. package/bin/executor/messages/SessionModelMessages.js.map +1 -1
  54. package/bin/executor/model/ModelGenerate.d.ts +12 -2
  55. package/bin/executor/model/ModelGenerate.d.ts.map +1 -1
  56. package/bin/executor/model/ModelGenerate.js +23 -15
  57. package/bin/executor/model/ModelGenerate.js.map +1 -1
  58. package/bin/executor/model/ModelRequestRunner.d.ts +29 -0
  59. package/bin/executor/model/ModelRequestRunner.d.ts.map +1 -0
  60. package/bin/executor/model/ModelRequestRunner.js +77 -0
  61. package/bin/executor/model/ModelRequestRunner.js.map +1 -0
  62. package/bin/executor/model/ModelStepRunner.d.ts +3 -7
  63. package/bin/executor/model/ModelStepRunner.d.ts.map +1 -1
  64. package/bin/executor/model/ModelStepRunner.js +9 -41
  65. package/bin/executor/model/ModelStepRunner.js.map +1 -1
  66. package/bin/executor/model/ModelStreamConsumer.d.ts +12 -0
  67. package/bin/executor/model/ModelStreamConsumer.d.ts.map +1 -0
  68. package/bin/executor/model/ModelStreamConsumer.js +60 -0
  69. package/bin/executor/model/ModelStreamConsumer.js.map +1 -0
  70. package/bin/executor/model/ModelStreamFailure.d.ts +4 -0
  71. package/bin/executor/model/ModelStreamFailure.d.ts.map +1 -1
  72. package/bin/executor/model/ModelStreamFailure.js +21 -0
  73. package/bin/executor/model/ModelStreamFailure.js.map +1 -1
  74. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +7 -64
  75. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -1
  76. package/bin/executor/services/ExecutorRecoveryPolicy.js +29 -45
  77. package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -1
  78. package/bin/executor/types/SessionHistoryMeta.d.ts +6 -8
  79. package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
  80. package/bin/executor/types/SessionHistoryMeta.js +1 -1
  81. package/bin/group/Group.d.ts +22 -3
  82. package/bin/group/Group.d.ts.map +1 -1
  83. package/bin/group/Group.js +54 -4
  84. package/bin/group/Group.js.map +1 -1
  85. package/bin/group/GroupDispatchRuntime.d.ts +37 -0
  86. package/bin/group/GroupDispatchRuntime.d.ts.map +1 -0
  87. package/bin/group/{GroupDispatchSession.js → GroupDispatchRuntime.js} +77 -21
  88. package/bin/group/GroupDispatchRuntime.js.map +1 -0
  89. package/bin/group/GroupSession.d.ts +20 -6
  90. package/bin/group/GroupSession.d.ts.map +1 -1
  91. package/bin/group/GroupSession.js +148 -84
  92. package/bin/group/GroupSession.js.map +1 -1
  93. package/bin/group/GroupSessions.d.ts +1 -1
  94. package/bin/group/GroupSessions.d.ts.map +1 -1
  95. package/bin/group/GroupSessions.js +11 -10
  96. package/bin/group/GroupSessions.js.map +1 -1
  97. package/bin/group/index.d.ts +1 -1
  98. package/bin/group/index.d.ts.map +1 -1
  99. package/bin/{workspace/store → group/storage}/LocalGroupSessionDataStore.d.ts +11 -3
  100. package/bin/group/storage/LocalGroupSessionDataStore.d.ts.map +1 -0
  101. package/bin/{workspace/store → group/storage}/LocalGroupSessionDataStore.js +89 -6
  102. package/bin/group/storage/LocalGroupSessionDataStore.js.map +1 -0
  103. package/bin/group/storage/LocalGroupSessionStore.d.ts.map +1 -0
  104. package/bin/{workspace/store → group/storage}/LocalGroupSessionStore.js +1 -1
  105. package/bin/group/storage/LocalGroupSessionStore.js.map +1 -0
  106. package/bin/index.d.ts +25 -55
  107. package/bin/index.d.ts.map +1 -1
  108. package/bin/index.js +9 -21
  109. package/bin/index.js.map +1 -1
  110. package/bin/session/DefaultSessionComposer.d.ts +13 -7
  111. package/bin/session/DefaultSessionComposer.d.ts.map +1 -1
  112. package/bin/session/DefaultSessionComposer.js +63 -24
  113. package/bin/session/DefaultSessionComposer.js.map +1 -1
  114. package/bin/session/Session.d.ts +27 -70
  115. package/bin/session/Session.d.ts.map +1 -1
  116. package/bin/session/Session.js +136 -446
  117. package/bin/session/Session.js.map +1 -1
  118. package/bin/session/SessionComposition.d.ts +49 -0
  119. package/bin/session/SessionComposition.d.ts.map +1 -0
  120. package/bin/session/SessionComposition.js +309 -0
  121. package/bin/session/SessionComposition.js.map +1 -0
  122. package/bin/session/SessionHookPoints.d.ts +15 -0
  123. package/bin/session/SessionHookPoints.d.ts.map +1 -0
  124. package/bin/session/SessionHookPoints.js +15 -0
  125. package/bin/session/SessionHookPoints.js.map +1 -0
  126. package/bin/session/SessionHooks.d.ts +38 -0
  127. package/bin/session/SessionHooks.d.ts.map +1 -0
  128. package/bin/session/SessionHooks.js +71 -0
  129. package/bin/session/SessionHooks.js.map +1 -0
  130. package/bin/session/SessionLoop.d.ts +18 -10
  131. package/bin/session/SessionLoop.d.ts.map +1 -1
  132. package/bin/session/SessionLoop.js +234 -213
  133. package/bin/session/SessionLoop.js.map +1 -1
  134. package/bin/session/SessionMessages.d.ts +57 -86
  135. package/bin/session/SessionMessages.d.ts.map +1 -1
  136. package/bin/session/SessionMessages.js +289 -506
  137. package/bin/session/SessionMessages.js.map +1 -1
  138. package/bin/session/SessionQueue.d.ts +1 -1
  139. package/bin/session/SessionQueue.d.ts.map +1 -1
  140. package/bin/session/SessionQueue.js +2 -1
  141. package/bin/session/SessionQueue.js.map +1 -1
  142. package/bin/session/SessionState.d.ts +7 -11
  143. package/bin/session/SessionState.d.ts.map +1 -1
  144. package/bin/session/SessionState.js +63 -95
  145. package/bin/session/SessionState.js.map +1 -1
  146. package/bin/session/SessionSystem.d.ts +6 -2
  147. package/bin/session/SessionSystem.d.ts.map +1 -1
  148. package/bin/session/SessionSystem.js +41 -1
  149. package/bin/session/SessionSystem.js.map +1 -1
  150. package/bin/session/SessionTitle.d.ts +37 -7
  151. package/bin/session/SessionTitle.d.ts.map +1 -1
  152. package/bin/session/SessionTitle.js +43 -37
  153. package/bin/session/SessionTitle.js.map +1 -1
  154. package/bin/session/browse/Browse.d.ts +34 -48
  155. package/bin/session/browse/Browse.d.ts.map +1 -1
  156. package/bin/session/browse/Browse.js +106 -354
  157. package/bin/session/browse/Browse.js.map +1 -1
  158. package/bin/session/browse/SessionMessageTimeline.d.ts +1 -1
  159. package/bin/session/browse/SessionMessageTimeline.d.ts.map +1 -1
  160. package/bin/session/browse/SessionMessageTimeline.js +61 -37
  161. package/bin/session/browse/SessionMessageTimeline.js.map +1 -1
  162. package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts +35 -0
  163. package/bin/session/composer/policies/AdaptivePartContextPolicy.d.ts.map +1 -0
  164. package/bin/session/composer/policies/AdaptivePartContextPolicy.js +256 -0
  165. package/bin/session/composer/policies/AdaptivePartContextPolicy.js.map +1 -0
  166. package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts +24 -0
  167. package/bin/session/composer/policies/FullHistoryContextPolicy.d.ts.map +1 -0
  168. package/bin/session/composer/policies/FullHistoryContextPolicy.js +31 -0
  169. package/bin/session/composer/policies/FullHistoryContextPolicy.js.map +1 -0
  170. package/bin/session/composer/policies/SessionSummaryPrompts.d.ts +16 -0
  171. package/bin/session/composer/policies/SessionSummaryPrompts.d.ts.map +1 -0
  172. package/bin/session/composer/policies/SessionSummaryPrompts.js +32 -0
  173. package/bin/session/composer/policies/SessionSummaryPrompts.js.map +1 -0
  174. package/bin/session/control/SessionInteractions.d.ts +2 -2
  175. package/bin/session/control/SessionInteractions.d.ts.map +1 -1
  176. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts +16 -5
  177. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts.map +1 -1
  178. package/bin/session/execution/SessionAssistantOutputAdapter.js +7 -3
  179. package/bin/session/execution/SessionAssistantOutputAdapter.js.map +1 -1
  180. package/bin/session/execution/tools/SessionShellApprovalAdapter.d.ts +3 -3
  181. package/bin/session/execution/tools/SessionShellApprovalAdapter.d.ts.map +1 -1
  182. package/bin/session/index.d.ts +8 -0
  183. package/bin/session/index.d.ts.map +1 -0
  184. package/bin/session/index.js +7 -0
  185. package/bin/session/index.js.map +1 -0
  186. package/bin/session/messages/SessionAgentActionPartWriter.d.ts +22 -0
  187. package/bin/session/messages/SessionAgentActionPartWriter.d.ts.map +1 -0
  188. package/bin/session/messages/SessionAgentActionPartWriter.js +36 -0
  189. package/bin/session/messages/SessionAgentActionPartWriter.js.map +1 -0
  190. package/bin/session/messages/SessionAgentContent.d.ts +10 -0
  191. package/bin/session/messages/SessionAgentContent.d.ts.map +1 -0
  192. package/bin/session/messages/SessionAgentContent.js +44 -0
  193. package/bin/session/messages/SessionAgentContent.js.map +1 -0
  194. package/bin/session/messages/SessionAgentMessageState.d.ts +50 -0
  195. package/bin/session/messages/SessionAgentMessageState.d.ts.map +1 -0
  196. package/bin/session/messages/SessionAgentMessageState.js +283 -0
  197. package/bin/session/messages/SessionAgentMessageState.js.map +1 -0
  198. package/bin/session/messages/{SessionAssistantMessageWriter.d.ts → SessionAgentMessageWriter.d.ts} +23 -9
  199. package/bin/session/messages/SessionAgentMessageWriter.d.ts.map +1 -0
  200. package/bin/session/messages/{SessionAssistantMessageWriter.js → SessionAgentMessageWriter.js} +56 -44
  201. package/bin/session/messages/SessionAgentMessageWriter.js.map +1 -0
  202. package/bin/session/messages/SessionForkMessageFiles.d.ts +22 -0
  203. package/bin/session/messages/SessionForkMessageFiles.d.ts.map +1 -0
  204. package/bin/session/messages/SessionForkMessageFiles.js +52 -0
  205. package/bin/session/messages/SessionForkMessageFiles.js.map +1 -0
  206. package/bin/session/messages/SessionJsonValue.d.ts +1 -1
  207. package/bin/session/messages/SessionJsonValue.d.ts.map +1 -1
  208. package/bin/session/messages/SessionMessageInteractionWriter.d.ts +7 -12
  209. package/bin/session/messages/SessionMessageInteractionWriter.d.ts.map +1 -1
  210. package/bin/session/messages/SessionMessageInteractionWriter.js +4 -4
  211. package/bin/session/messages/SessionMessageInteractionWriter.js.map +1 -1
  212. package/bin/session/messages/SessionMessageText.d.ts +4 -4
  213. package/bin/session/messages/SessionMessageText.d.ts.map +1 -1
  214. package/bin/session/messages/SessionMessageText.js +0 -2
  215. package/bin/session/messages/SessionMessageText.js.map +1 -1
  216. package/bin/session/messages/SessionTurnFileDiffBuilder.d.ts +15 -0
  217. package/bin/session/messages/SessionTurnFileDiffBuilder.d.ts.map +1 -0
  218. package/bin/session/messages/SessionTurnFileDiffBuilder.js +180 -0
  219. package/bin/session/messages/SessionTurnFileDiffBuilder.js.map +1 -0
  220. package/bin/session/messages/SessionTurnFileDiffData.d.ts +15 -0
  221. package/bin/session/messages/SessionTurnFileDiffData.d.ts.map +1 -0
  222. package/bin/session/messages/SessionTurnFileDiffData.js +59 -0
  223. package/bin/session/messages/SessionTurnFileDiffData.js.map +1 -0
  224. package/bin/session/messages/SessionUserContext.d.ts +13 -0
  225. package/bin/session/messages/SessionUserContext.d.ts.map +1 -0
  226. package/bin/session/messages/SessionUserContext.js +38 -0
  227. package/bin/session/messages/SessionUserContext.js.map +1 -0
  228. package/bin/session/messages/SessionUserMessage.d.ts +14 -0
  229. package/bin/session/messages/SessionUserMessage.d.ts.map +1 -0
  230. package/bin/session/messages/SessionUserMessage.js +74 -0
  231. package/bin/session/messages/SessionUserMessage.js.map +1 -0
  232. package/bin/session/preview/SessionMessagePreview.d.ts +1 -1
  233. package/bin/session/preview/SessionMessagePreview.d.ts.map +1 -1
  234. package/bin/session/preview/SessionMessagePreview.js +26 -10
  235. package/bin/session/preview/SessionMessagePreview.js.map +1 -1
  236. package/bin/session/runtime/SessionEventHub.d.ts +1 -1
  237. package/bin/session/runtime/SessionEventHub.d.ts.map +1 -1
  238. package/bin/session/runtime/SessionModelRequestWarning.d.ts +17 -0
  239. package/bin/session/runtime/SessionModelRequestWarning.d.ts.map +1 -0
  240. package/bin/session/runtime/SessionModelRequestWarning.js +19 -0
  241. package/bin/session/runtime/SessionModelRequestWarning.js.map +1 -0
  242. package/bin/session/runtime/SessionTitleTask.d.ts +2 -2
  243. package/bin/session/runtime/SessionTitleTask.d.ts.map +1 -1
  244. package/bin/session/runtime/SessionTitleTask.js +1 -1
  245. package/bin/session/runtime/SessionTitleTask.js.map +1 -1
  246. package/bin/session/runtime/SessionTurnCompletion.d.ts +15 -0
  247. package/bin/session/runtime/SessionTurnCompletion.d.ts.map +1 -0
  248. package/bin/session/runtime/SessionTurnCompletion.js +126 -0
  249. package/bin/session/runtime/SessionTurnCompletion.js.map +1 -0
  250. package/bin/session/runtime/SessionTurnContext.d.ts +6 -3
  251. package/bin/session/runtime/SessionTurnContext.d.ts.map +1 -1
  252. package/bin/session/runtime/SessionTurnContext.js +73 -38
  253. package/bin/session/runtime/SessionTurnContext.js.map +1 -1
  254. package/bin/session/runtime/SessionTurnFileDiff.d.ts +12 -0
  255. package/bin/session/runtime/SessionTurnFileDiff.d.ts.map +1 -0
  256. package/bin/session/runtime/SessionTurnFileDiff.js +71 -0
  257. package/bin/session/runtime/SessionTurnFileDiff.js.map +1 -0
  258. package/bin/{workspace/store → session/storage}/LocalSessionAttachmentStore.d.ts +11 -4
  259. package/bin/session/storage/LocalSessionAttachmentStore.d.ts.map +1 -0
  260. package/bin/{workspace/store → session/storage}/LocalSessionAttachmentStore.js +17 -2
  261. package/bin/session/storage/LocalSessionAttachmentStore.js.map +1 -0
  262. package/bin/session/storage/LocalSessionDataStore.d.ts +13 -0
  263. package/bin/session/storage/LocalSessionDataStore.d.ts.map +1 -0
  264. package/bin/session/storage/LocalSessionDataStore.js +28 -0
  265. package/bin/session/storage/LocalSessionDataStore.js.map +1 -0
  266. package/bin/{workspace/store → session/storage}/LocalSessionStore.d.ts +21 -10
  267. package/bin/session/storage/LocalSessionStore.d.ts.map +1 -0
  268. package/bin/session/storage/LocalSessionStore.js +329 -0
  269. package/bin/session/storage/LocalSessionStore.js.map +1 -0
  270. package/bin/session/storage/LocalStorePaths.d.ts +27 -0
  271. package/bin/session/storage/LocalStorePaths.d.ts.map +1 -0
  272. package/bin/session/storage/LocalStorePaths.js +69 -0
  273. package/bin/session/storage/LocalStorePaths.js.map +1 -0
  274. package/bin/session/storage/Metadata.d.ts +12 -9
  275. package/bin/session/storage/Metadata.d.ts.map +1 -1
  276. package/bin/session/storage/Metadata.js +8 -30
  277. package/bin/session/storage/Metadata.js.map +1 -1
  278. package/bin/session/storage/RuntimeSessionPort.d.ts +8 -8
  279. package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
  280. package/bin/session/storage/RuntimeSessionPort.js +6 -6
  281. package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
  282. package/bin/session/storage/SessionStorageCodec.d.ts +59 -0
  283. package/bin/session/storage/SessionStorageCodec.d.ts.map +1 -0
  284. package/bin/session/storage/SessionStorageCodec.js +331 -0
  285. package/bin/session/storage/SessionStorageCodec.js.map +1 -0
  286. package/bin/session/storage/SessionStorageSchema.d.ts +11 -0
  287. package/bin/session/storage/SessionStorageSchema.d.ts.map +1 -0
  288. package/bin/session/storage/SessionStorageSchema.js +131 -0
  289. package/bin/session/storage/SessionStorageSchema.js.map +1 -0
  290. package/bin/session/storage/SqliteSessionStorage.d.ts +120 -0
  291. package/bin/session/storage/SqliteSessionStorage.d.ts.map +1 -0
  292. package/bin/session/storage/SqliteSessionStorage.js +581 -0
  293. package/bin/session/storage/SqliteSessionStorage.js.map +1 -0
  294. package/bin/tools/ask/AskQuestionsTool.d.ts.map +1 -1
  295. package/bin/tools/ask/AskQuestionsTool.js +3 -1
  296. package/bin/tools/ask/AskQuestionsTool.js.map +1 -1
  297. package/bin/tools/ask/AskQuestionsToolSchemas.d.ts +1 -1
  298. package/bin/types/action/ActionResult.d.ts +13 -9
  299. package/bin/types/action/ActionResult.d.ts.map +1 -1
  300. package/bin/types/action/ActionResult.js +2 -1
  301. package/bin/types/action/ActionResult.js.map +1 -1
  302. package/bin/types/agent/AgentOptions.d.ts +25 -18
  303. package/bin/types/agent/AgentOptions.d.ts.map +1 -1
  304. package/bin/types/agent/AgentSessionCollection.d.ts +17 -13
  305. package/bin/types/agent/AgentSessionCollection.d.ts.map +1 -1
  306. package/bin/types/agent/AgentStorage.d.ts +4 -2
  307. package/bin/types/agent/AgentStorage.d.ts.map +1 -1
  308. package/bin/types/agent/SessionActor.d.ts +11 -20
  309. package/bin/types/agent/SessionActor.d.ts.map +1 -1
  310. package/bin/types/agent/SessionTypes.d.ts +29 -37
  311. package/bin/types/agent/SessionTypes.d.ts.map +1 -1
  312. package/bin/types/executor/ModelRequest.d.ts +11 -0
  313. package/bin/types/executor/ModelRequest.d.ts.map +1 -0
  314. package/bin/types/executor/ModelRequest.js +7 -0
  315. package/bin/types/executor/ModelRequest.js.map +1 -0
  316. package/bin/types/executor/SessionAssistantOutput.d.ts +16 -5
  317. package/bin/types/executor/SessionAssistantOutput.d.ts.map +1 -1
  318. package/bin/types/executor/SessionToolExecutionContext.d.ts +3 -3
  319. package/bin/types/executor/SessionToolExecutionContext.d.ts.map +1 -1
  320. package/bin/types/executor/SessionTurnContext.d.ts +57 -34
  321. package/bin/types/executor/SessionTurnContext.d.ts.map +1 -1
  322. package/bin/types/group/DispatchStrategy.d.ts +62 -36
  323. package/bin/types/group/DispatchStrategy.d.ts.map +1 -1
  324. package/bin/types/group/DispatchStrategy.js +83 -39
  325. package/bin/types/group/DispatchStrategy.js.map +1 -1
  326. package/bin/types/group/Group.d.ts +8 -8
  327. package/bin/types/group/Group.d.ts.map +1 -1
  328. package/bin/types/group/{GroupDispatchSession.d.ts → GroupDispatch.d.ts} +21 -27
  329. package/bin/types/group/GroupDispatch.d.ts.map +1 -0
  330. package/bin/types/group/GroupDispatch.js +8 -0
  331. package/bin/types/group/GroupDispatch.js.map +1 -0
  332. package/bin/types/group/GroupSession.d.ts +14 -7
  333. package/bin/types/group/GroupSession.d.ts.map +1 -1
  334. package/bin/types/group/GroupSessionStore.d.ts +9 -5
  335. package/bin/types/group/GroupSessionStore.d.ts.map +1 -1
  336. package/bin/types/sdk/AgentSessionAction.d.ts +2 -2
  337. package/bin/types/sdk/AgentSessionAction.d.ts.map +1 -1
  338. package/bin/types/sdk/AgentSessionAction.js +1 -1
  339. package/bin/types/sdk/AgentSessionPrompt.d.ts +16 -6
  340. package/bin/types/sdk/AgentSessionPrompt.d.ts.map +1 -1
  341. package/bin/types/sdk/AgentSessionPrompt.js +7 -3
  342. package/bin/types/sdk/AgentSessionPrompt.js.map +1 -1
  343. package/bin/types/session/AdaptivePartContextPolicy.d.ts +31 -0
  344. package/bin/types/session/AdaptivePartContextPolicy.d.ts.map +1 -0
  345. package/bin/types/session/AdaptivePartContextPolicy.js +7 -0
  346. package/bin/types/session/AdaptivePartContextPolicy.js.map +1 -0
  347. package/bin/types/session/SessionAgentMessageState.d.ts +23 -0
  348. package/bin/types/session/SessionAgentMessageState.d.ts.map +1 -0
  349. package/bin/types/session/SessionAgentMessageState.js +8 -0
  350. package/bin/types/session/SessionAgentMessageState.js.map +1 -0
  351. package/bin/types/session/SessionCommand.d.ts +19 -7
  352. package/bin/types/session/SessionCommand.d.ts.map +1 -1
  353. package/bin/types/session/SessionComposer.d.ts +47 -41
  354. package/bin/types/session/SessionComposer.d.ts.map +1 -1
  355. package/bin/types/session/SessionComposer.js +2 -2
  356. package/bin/types/session/SessionComposition.d.ts +51 -0
  357. package/bin/types/session/SessionComposition.d.ts.map +1 -0
  358. package/bin/types/session/SessionComposition.js +8 -0
  359. package/bin/types/session/SessionComposition.js.map +1 -0
  360. package/bin/types/session/SessionContextPolicy.d.ts +70 -0
  361. package/bin/types/session/SessionContextPolicy.d.ts.map +1 -0
  362. package/bin/types/session/SessionContextPolicy.js +8 -0
  363. package/bin/types/session/SessionContextPolicy.js.map +1 -0
  364. package/bin/types/session/SessionExecution.d.ts +6 -33
  365. package/bin/types/session/SessionExecution.d.ts.map +1 -1
  366. package/bin/types/session/SessionInteractions.d.ts +1 -1
  367. package/bin/types/session/SessionInteractions.d.ts.map +1 -1
  368. package/bin/types/session/SessionLocalState.d.ts +2 -2
  369. package/bin/types/session/SessionLocalState.d.ts.map +1 -1
  370. package/bin/types/session/SessionLoop.d.ts +10 -9
  371. package/bin/types/session/SessionLoop.d.ts.map +1 -1
  372. package/bin/types/session/SessionMessages.d.ts +29 -30
  373. package/bin/types/session/SessionMessages.d.ts.map +1 -1
  374. package/bin/types/session/SessionOptions.d.ts +30 -44
  375. package/bin/types/session/SessionOptions.d.ts.map +1 -1
  376. package/bin/types/session/SessionPort.d.ts +14 -15
  377. package/bin/types/session/SessionPort.d.ts.map +1 -1
  378. package/bin/types/session/SessionPort.js +1 -1
  379. package/bin/types/session/SessionState.d.ts +6 -9
  380. package/bin/types/session/SessionState.d.ts.map +1 -1
  381. package/bin/types/session/SessionSystem.d.ts +16 -2
  382. package/bin/types/session/SessionSystem.d.ts.map +1 -1
  383. package/bin/types/session/SessionTool.d.ts +2 -2
  384. package/bin/types/session/SessionTool.d.ts.map +1 -1
  385. package/bin/types/session/SessionTurnCompletion.d.ts +23 -0
  386. package/bin/types/session/SessionTurnCompletion.d.ts.map +1 -0
  387. package/bin/types/session/SessionTurnCompletion.js +8 -0
  388. package/bin/types/session/SessionTurnCompletion.js.map +1 -0
  389. package/bin/types/session/SessionTurnFileDiff.d.ts +42 -0
  390. package/bin/types/session/SessionTurnFileDiff.d.ts.map +1 -0
  391. package/bin/types/session/SessionTurnFileDiff.js +8 -0
  392. package/bin/types/session/SessionTurnFileDiff.js.map +1 -0
  393. package/bin/types/store/LocalStore.d.ts +10 -14
  394. package/bin/types/store/LocalStore.d.ts.map +1 -1
  395. package/bin/types/store/LocalStore.js +2 -2
  396. package/bin/types/store/SessionAttachmentStore.d.ts +17 -2
  397. package/bin/types/store/SessionAttachmentStore.d.ts.map +1 -1
  398. package/bin/types/store/SessionAttachmentStore.js +2 -1
  399. package/bin/types/store/SessionAttachmentStore.js.map +1 -1
  400. package/bin/types/store/SessionStorage.d.ts +103 -0
  401. package/bin/types/store/SessionStorage.d.ts.map +1 -0
  402. package/bin/types/store/SessionStorage.js +8 -0
  403. package/bin/types/store/SessionStorage.js.map +1 -0
  404. package/bin/types/store/SessionStore.d.ts +11 -8
  405. package/bin/types/store/SessionStore.d.ts.map +1 -1
  406. package/bin/types/tools/ToolActionExecutionContext.d.ts +1 -1
  407. package/bin/types/tools/ToolActionExecutionContext.d.ts.map +1 -1
  408. package/bin/types/tools/ask/AskQuestionsTool.d.ts +1 -1
  409. package/bin/types/tools/ask/AskQuestionsTool.d.ts.map +1 -1
  410. package/bin/utils/logger/Logger.d.ts +12 -21
  411. package/bin/utils/logger/Logger.d.ts.map +1 -1
  412. package/bin/utils/logger/Logger.js +21 -39
  413. package/bin/utils/logger/Logger.js.map +1 -1
  414. package/package.json +7 -24
  415. package/scripts/ModelClientMock.mjs +11 -0
  416. package/scripts/core-engine-context-compaction.test.mjs +160 -220
  417. package/scripts/core-engine-model-stream.test.mjs +94 -4
  418. package/scripts/executor-failure-result.test.mjs +37 -22
  419. package/scripts/logger-isolation.test.mjs +17 -2
  420. package/scripts/public-api-naming.test.mjs +9 -15
  421. package/scripts/session-agent-message-part-order.test.mjs +63 -0
  422. package/scripts/session-initialization.test.mjs +141 -0
  423. package/scripts/session-message-timeline.test.mjs +5 -6
  424. package/scripts/session-messages-error-part.test.mjs +175 -0
  425. package/scripts/session-messages-error.test.mjs +47 -6
  426. package/scripts/session-prompt-idempotency.test.mjs +91 -0
  427. package/scripts/session-queue.test.mjs +13 -12
  428. package/scripts/session-storage-sqlite.test.mjs +209 -0
  429. package/scripts/session-turn-context.test.mjs +90 -42
  430. package/src/agent/Agent.ts +212 -91
  431. package/src/agent/AgentInstructions.ts +3 -3
  432. package/src/agent/AgentMemoryStorage.ts +208 -0
  433. package/src/agent/AgentSessions.ts +164 -88
  434. package/src/executor/Executor.ts +56 -177
  435. package/src/executor/README.md +19 -16
  436. package/src/executor/composer/system/default/SystemPromptAssets.ts +0 -6
  437. package/src/executor/composer/system/default/assets/core.prompt.ts +1 -1
  438. package/src/executor/composer/system/default/assets/core.prompt.ts.txt +8 -8
  439. package/src/executor/core-engine/CoreEngineContextCompaction.ts +3 -135
  440. package/src/executor/core-engine/CoreEngineError.ts +1 -1
  441. package/src/executor/core-engine/CoreEngineRunner.ts +93 -334
  442. package/src/executor/core-engine/CoreEngineSignals.ts +10 -10
  443. package/src/executor/messages/SessionAttachmentMapper.ts +4 -4
  444. package/src/executor/messages/SessionMessageLog.ts +3 -3
  445. package/src/executor/messages/SessionModelMessages.ts +87 -99
  446. package/src/executor/model/ModelGenerate.ts +59 -21
  447. package/src/executor/model/ModelRequestRunner.ts +107 -0
  448. package/src/executor/model/ModelStepRunner.ts +28 -60
  449. package/src/executor/model/ModelStreamConsumer.ts +76 -0
  450. package/src/executor/model/ModelStreamFailure.ts +28 -0
  451. package/src/executor/services/ExecutorRecoveryPolicy.ts +34 -127
  452. package/src/executor/types/SessionHistoryMeta.ts +6 -8
  453. package/src/group/Group.ts +60 -5
  454. package/src/group/GroupDispatchRuntime.ts +233 -0
  455. package/src/group/GroupSession.ts +168 -93
  456. package/src/group/GroupSessions.ts +12 -11
  457. package/src/group/index.ts +4 -2
  458. package/src/{workspace/store → group/storage}/LocalGroupSessionDataStore.ts +99 -8
  459. package/src/{workspace/store → group/storage}/LocalGroupSessionStore.ts +2 -2
  460. package/src/index.ts +84 -208
  461. package/src/session/DefaultSessionComposer.ts +77 -32
  462. package/src/session/Session.ts +167 -529
  463. package/src/session/SessionComposition.ts +370 -0
  464. package/src/session/SessionHookPoints.ts +17 -0
  465. package/src/session/SessionHooks.ts +85 -0
  466. package/src/session/SessionLoop.ts +289 -226
  467. package/src/session/SessionMessages.ts +380 -642
  468. package/src/session/SessionQueue.ts +3 -2
  469. package/src/session/SessionState.ts +71 -110
  470. package/src/session/SessionSystem.ts +53 -3
  471. package/src/session/SessionTitle.ts +55 -42
  472. package/src/session/browse/Browse.ts +188 -462
  473. package/src/session/browse/SessionMessageTimeline.ts +64 -39
  474. package/src/session/composer/policies/AdaptivePartContextPolicy.ts +307 -0
  475. package/src/session/composer/policies/FullHistoryContextPolicy.ts +36 -0
  476. package/src/session/composer/policies/SessionSummaryPrompts.ts +42 -0
  477. package/src/session/control/SessionInteractions.ts +1 -1
  478. package/src/session/execution/SessionAssistantOutputAdapter.ts +25 -11
  479. package/src/session/execution/tools/SessionShellApprovalAdapter.ts +2 -2
  480. package/src/session/index.ts +17 -0
  481. package/src/session/messages/SessionAgentActionPartWriter.ts +54 -0
  482. package/src/session/messages/SessionAgentContent.ts +56 -0
  483. package/src/session/messages/SessionAgentMessageState.ts +378 -0
  484. package/src/session/messages/{SessionAssistantMessageWriter.ts → SessionAgentMessageWriter.ts} +90 -61
  485. package/src/session/messages/SessionForkMessageFiles.ts +79 -0
  486. package/src/session/messages/SessionJsonValue.ts +1 -1
  487. package/src/session/messages/SessionMessageInteractionWriter.ts +23 -27
  488. package/src/session/messages/SessionMessageText.ts +5 -6
  489. package/src/session/messages/SessionTurnFileDiffBuilder.ts +229 -0
  490. package/src/session/messages/SessionTurnFileDiffData.ts +72 -0
  491. package/src/session/messages/SessionUserContext.ts +47 -0
  492. package/src/session/messages/SessionUserMessage.ts +88 -0
  493. package/src/session/preview/SessionMessagePreview.ts +27 -10
  494. package/src/session/runtime/SessionEventHub.ts +1 -1
  495. package/src/session/runtime/SessionModelRequestWarning.ts +29 -0
  496. package/src/session/runtime/SessionTitleTask.ts +3 -3
  497. package/src/session/runtime/SessionTurnCompletion.ts +159 -0
  498. package/src/session/runtime/SessionTurnContext.ts +96 -46
  499. package/src/session/runtime/SessionTurnFileDiff.ts +105 -0
  500. package/src/{workspace/store → session/storage}/LocalSessionAttachmentStore.ts +25 -4
  501. package/src/session/storage/LocalSessionDataStore.ts +41 -0
  502. package/src/session/storage/LocalSessionStore.ts +414 -0
  503. package/src/session/storage/LocalStorePaths.ts +123 -0
  504. package/src/session/storage/Metadata.ts +19 -36
  505. package/src/session/storage/RuntimeSessionPort.ts +11 -11
  506. package/src/session/storage/SessionStorageCodec.ts +465 -0
  507. package/src/session/storage/SessionStorageSchema.ts +132 -0
  508. package/src/session/storage/SqliteSessionStorage.ts +776 -0
  509. package/src/tools/ask/AskQuestionsTool.ts +5 -3
  510. package/src/types/action/ActionResult.ts +16 -11
  511. package/src/types/agent/AgentOptions.ts +27 -19
  512. package/src/types/agent/AgentSessionCollection.ts +19 -9
  513. package/src/types/agent/AgentStorage.ts +3 -1
  514. package/src/types/agent/SessionActor.ts +8 -17
  515. package/src/types/agent/SessionTypes.ts +32 -41
  516. package/src/types/executor/ModelRequest.ts +14 -0
  517. package/src/types/executor/SessionAssistantOutput.ts +15 -4
  518. package/src/types/executor/SessionToolExecutionContext.ts +1 -1
  519. package/src/types/executor/SessionTurnContext.ts +76 -35
  520. package/src/types/group/DispatchStrategy.ts +151 -77
  521. package/src/types/group/Group.ts +6 -6
  522. package/src/types/group/{GroupDispatchSession.ts → GroupDispatch.ts} +20 -25
  523. package/src/types/group/GroupSession.ts +9 -4
  524. package/src/types/group/GroupSessionStore.ts +8 -4
  525. package/src/types/sdk/AgentSessionAction.ts +2 -2
  526. package/src/types/sdk/AgentSessionPrompt.ts +21 -8
  527. package/src/types/session/AdaptivePartContextPolicy.ts +37 -0
  528. package/src/types/session/SessionAgentMessageState.ts +30 -0
  529. package/src/types/session/SessionCommand.ts +21 -7
  530. package/src/types/session/SessionComposer.ts +51 -45
  531. package/src/types/session/SessionComposition.ts +52 -0
  532. package/src/types/session/SessionContextPolicy.ts +77 -0
  533. package/src/types/session/SessionExecution.ts +11 -36
  534. package/src/types/session/SessionInteractions.ts +1 -1
  535. package/src/types/session/SessionLocalState.ts +1 -1
  536. package/src/types/session/SessionLoop.ts +8 -10
  537. package/src/types/session/SessionMessages.ts +31 -31
  538. package/src/types/session/SessionOptions.ts +27 -41
  539. package/src/types/session/SessionPort.ts +13 -13
  540. package/src/types/session/SessionState.ts +5 -8
  541. package/src/types/session/SessionSystem.ts +20 -1
  542. package/src/types/session/SessionTool.ts +2 -2
  543. package/src/types/session/SessionTurnCompletion.ts +24 -0
  544. package/src/types/session/SessionTurnFileDiff.ts +44 -0
  545. package/src/types/store/LocalStore.ts +10 -15
  546. package/src/types/store/SessionAttachmentStore.ts +19 -2
  547. package/src/types/store/SessionStorage.ts +121 -0
  548. package/src/types/store/SessionStore.ts +11 -7
  549. package/src/types/tools/ToolActionExecutionContext.ts +1 -1
  550. package/src/types/tools/ask/AskQuestionsTool.ts +1 -1
  551. package/src/utils/logger/Logger.ts +24 -42
  552. package/tsconfig.json +1 -2
  553. package/tsconfig.tsbuildinfo +1 -1
  554. package/bin/agent/AgentModel.d.ts +0 -28
  555. package/bin/agent/AgentModel.d.ts.map +0 -1
  556. package/bin/agent/AgentModel.js +0 -57
  557. package/bin/agent/AgentModel.js.map +0 -1
  558. package/bin/agent/WorkspaceEntry.d.ts +0 -82
  559. package/bin/agent/WorkspaceEntry.d.ts.map +0 -1
  560. package/bin/agent/WorkspaceEntry.js +0 -246
  561. package/bin/agent/WorkspaceEntry.js.map +0 -1
  562. package/bin/city/host/CityHostRegistry.d.ts +0 -44
  563. package/bin/city/host/CityHostRegistry.d.ts.map +0 -1
  564. package/bin/city/host/CityHostRegistry.js +0 -225
  565. package/bin/city/host/CityHostRegistry.js.map +0 -1
  566. package/bin/city/index.d.ts +0 -22
  567. package/bin/city/index.d.ts.map +0 -1
  568. package/bin/city/index.js +0 -10
  569. package/bin/city/index.js.map +0 -1
  570. package/bin/city/runtime/City.d.ts +0 -99
  571. package/bin/city/runtime/City.d.ts.map +0 -1
  572. package/bin/city/runtime/City.js +0 -376
  573. package/bin/city/runtime/City.js.map +0 -1
  574. package/bin/city/transport/SerializedTransport.d.ts +0 -30
  575. package/bin/city/transport/SerializedTransport.d.ts.map +0 -1
  576. package/bin/city/transport/SerializedTransport.js +0 -57
  577. package/bin/city/transport/SerializedTransport.js.map +0 -1
  578. package/bin/city/transport/http/AgentHTTP.d.ts +0 -66
  579. package/bin/city/transport/http/AgentHTTP.d.ts.map +0 -1
  580. package/bin/city/transport/http/AgentHTTP.js +0 -142
  581. package/bin/city/transport/http/AgentHTTP.js.map +0 -1
  582. package/bin/city/transport/http/CityHTTP.d.ts +0 -44
  583. package/bin/city/transport/http/CityHTTP.d.ts.map +0 -1
  584. package/bin/city/transport/http/CityHTTP.js +0 -171
  585. package/bin/city/transport/http/CityHTTP.js.map +0 -1
  586. package/bin/city/transport/http/NodeHttpAdapter.d.ts +0 -27
  587. package/bin/city/transport/http/NodeHttpAdapter.d.ts.map +0 -1
  588. package/bin/city/transport/http/NodeHttpAdapter.js +0 -57
  589. package/bin/city/transport/http/NodeHttpAdapter.js.map +0 -1
  590. package/bin/city/transport/http/routes/RuntimeRoutes.d.ts +0 -15
  591. package/bin/city/transport/http/routes/RuntimeRoutes.d.ts.map +0 -1
  592. package/bin/city/transport/http/routes/RuntimeRoutes.js +0 -38
  593. package/bin/city/transport/http/routes/RuntimeRoutes.js.map +0 -1
  594. package/bin/city/transport/http/routes/SessionRoutes.d.ts +0 -17
  595. package/bin/city/transport/http/routes/SessionRoutes.d.ts.map +0 -1
  596. package/bin/city/transport/http/routes/SessionRoutes.js +0 -417
  597. package/bin/city/transport/http/routes/SessionRoutes.js.map +0 -1
  598. package/bin/city/transport/rpc/AgentRPC.d.ts +0 -47
  599. package/bin/city/transport/rpc/AgentRPC.d.ts.map +0 -1
  600. package/bin/city/transport/rpc/AgentRPC.js +0 -89
  601. package/bin/city/transport/rpc/AgentRPC.js.map +0 -1
  602. package/bin/city/transport/rpc/CityRPC.d.ts +0 -26
  603. package/bin/city/transport/rpc/CityRPC.d.ts.map +0 -1
  604. package/bin/city/transport/rpc/CityRPC.js +0 -110
  605. package/bin/city/transport/rpc/CityRPC.js.map +0 -1
  606. package/bin/city/transport/rpc/RpcServer.d.ts +0 -30
  607. package/bin/city/transport/rpc/RpcServer.d.ts.map +0 -1
  608. package/bin/city/transport/rpc/RpcServer.js +0 -125
  609. package/bin/city/transport/rpc/RpcServer.js.map +0 -1
  610. package/bin/city/transport/rpc/server/InternalHandlers.d.ts +0 -22
  611. package/bin/city/transport/rpc/server/InternalHandlers.d.ts.map +0 -1
  612. package/bin/city/transport/rpc/server/InternalHandlers.js +0 -196
  613. package/bin/city/transport/rpc/server/InternalHandlers.js.map +0 -1
  614. package/bin/city/transport/rpc/server/RequestDispatcher.d.ts +0 -27
  615. package/bin/city/transport/rpc/server/RequestDispatcher.d.ts.map +0 -1
  616. package/bin/city/transport/rpc/server/RequestDispatcher.js +0 -38
  617. package/bin/city/transport/rpc/server/RequestDispatcher.js.map +0 -1
  618. package/bin/city/transport/rpc/server/SdkSessionHandlers.d.ts +0 -25
  619. package/bin/city/transport/rpc/server/SdkSessionHandlers.d.ts.map +0 -1
  620. package/bin/city/transport/rpc/server/SdkSessionHandlers.js +0 -146
  621. package/bin/city/transport/rpc/server/SdkSessionHandlers.js.map +0 -1
  622. package/bin/city/transport/rpc/server/ServerTypes.d.ts +0 -94
  623. package/bin/city/transport/rpc/server/ServerTypes.d.ts.map +0 -1
  624. package/bin/city/transport/rpc/server/ServerTypes.js +0 -9
  625. package/bin/city/transport/rpc/server/ServerTypes.js.map +0 -1
  626. package/bin/city/transport/session/RemoteSessionConfig.d.ts +0 -15
  627. package/bin/city/transport/session/RemoteSessionConfig.d.ts.map +0 -1
  628. package/bin/city/transport/session/RemoteSessionConfig.js +0 -23
  629. package/bin/city/transport/session/RemoteSessionConfig.js.map +0 -1
  630. package/bin/city/transport/types/AgentHttpBinding.d.ts +0 -24
  631. package/bin/city/transport/types/AgentHttpBinding.d.ts.map +0 -1
  632. package/bin/city/transport/types/AgentHttpBinding.js +0 -5
  633. package/bin/city/transport/types/AgentHttpBinding.js.map +0 -1
  634. package/bin/city/transport/types/AgentHttpRuntime.d.ts +0 -12
  635. package/bin/city/transport/types/AgentHttpRuntime.d.ts.map +0 -1
  636. package/bin/city/transport/types/AgentHttpRuntime.js +0 -7
  637. package/bin/city/transport/types/AgentHttpRuntime.js.map +0 -1
  638. package/bin/city/transport/types/AgentRpcBinding.d.ts +0 -27
  639. package/bin/city/transport/types/AgentRpcBinding.d.ts.map +0 -1
  640. package/bin/city/transport/types/AgentRpcBinding.js +0 -8
  641. package/bin/city/transport/types/AgentRpcBinding.js.map +0 -1
  642. package/bin/city/transport/types/AgentRpcRuntime.d.ts +0 -18
  643. package/bin/city/transport/types/AgentRpcRuntime.d.ts.map +0 -1
  644. package/bin/city/transport/types/AgentRpcRuntime.js +0 -7
  645. package/bin/city/transport/types/AgentRpcRuntime.js.map +0 -1
  646. package/bin/city/transport/types/AgentSessionModelResolver.d.ts +0 -11
  647. package/bin/city/transport/types/AgentSessionModelResolver.d.ts.map +0 -1
  648. package/bin/city/transport/types/AgentSessionModelResolver.js +0 -7
  649. package/bin/city/transport/types/AgentSessionModelResolver.js.map +0 -1
  650. package/bin/city/transport/types/CityHttpRuntime.d.ts +0 -36
  651. package/bin/city/transport/types/CityHttpRuntime.d.ts.map +0 -1
  652. package/bin/city/transport/types/CityHttpRuntime.js +0 -8
  653. package/bin/city/transport/types/CityHttpRuntime.js.map +0 -1
  654. package/bin/city/transport/types/CityRpcRuntime.d.ts +0 -17
  655. package/bin/city/transport/types/CityRpcRuntime.d.ts.map +0 -1
  656. package/bin/city/transport/types/CityRpcRuntime.js +0 -8
  657. package/bin/city/transport/types/CityRpcRuntime.js.map +0 -1
  658. package/bin/city/transport/types/RpcProtocol.d.ts +0 -24
  659. package/bin/city/transport/types/RpcProtocol.d.ts.map +0 -1
  660. package/bin/city/transport/types/RpcProtocol.js +0 -9
  661. package/bin/city/transport/types/RpcProtocol.js.map +0 -1
  662. package/bin/city/types/City.d.ts +0 -84
  663. package/bin/city/types/City.d.ts.map +0 -1
  664. package/bin/city/types/City.js +0 -7
  665. package/bin/city/types/City.js.map +0 -1
  666. package/bin/city/types/PluginHostContext.d.ts +0 -34
  667. package/bin/city/types/PluginHostContext.d.ts.map +0 -1
  668. package/bin/city/types/PluginHostContext.js +0 -11
  669. package/bin/city/types/PluginHostContext.js.map +0 -1
  670. package/bin/city/types/SerializedTransport.d.ts +0 -16
  671. package/bin/city/types/SerializedTransport.d.ts.map +0 -1
  672. package/bin/city/types/SerializedTransport.js +0 -3
  673. package/bin/city/types/SerializedTransport.js.map +0 -1
  674. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts +0 -45
  675. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.d.ts.map +0 -1
  676. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js +0 -144
  677. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.js.map +0 -1
  678. package/bin/executor/composer/system/SessionSystemComposer.d.ts +0 -23
  679. package/bin/executor/composer/system/SessionSystemComposer.d.ts.map +0 -1
  680. package/bin/executor/composer/system/SessionSystemComposer.js +0 -9
  681. package/bin/executor/composer/system/SessionSystemComposer.js.map +0 -1
  682. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +0 -43
  683. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +0 -1
  684. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js +0 -42
  685. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js.map +0 -1
  686. package/bin/executor/composer/system/default/PromptRenderer.d.ts +0 -35
  687. package/bin/executor/composer/system/default/PromptRenderer.d.ts.map +0 -1
  688. package/bin/executor/composer/system/default/PromptRenderer.js +0 -23
  689. package/bin/executor/composer/system/default/PromptRenderer.js.map +0 -1
  690. package/bin/executor/composer/system/default/SystemDomain.d.ts +0 -169
  691. package/bin/executor/composer/system/default/SystemDomain.d.ts.map +0 -1
  692. package/bin/executor/composer/system/default/SystemDomain.js +0 -201
  693. package/bin/executor/composer/system/default/SystemDomain.js.map +0 -1
  694. package/bin/executor/composer/system/default/assets/task.prompt.d.ts +0 -7
  695. package/bin/executor/composer/system/default/assets/task.prompt.d.ts.map +0 -1
  696. package/bin/executor/composer/system/default/assets/task.prompt.js +0 -8
  697. package/bin/executor/composer/system/default/assets/task.prompt.js.map +0 -1
  698. package/bin/executor/composer/system/default/variables/GeoContext.d.ts +0 -14
  699. package/bin/executor/composer/system/default/variables/GeoContext.d.ts.map +0 -1
  700. package/bin/executor/composer/system/default/variables/GeoContext.js +0 -150
  701. package/bin/executor/composer/system/default/variables/GeoContext.js.map +0 -1
  702. package/bin/executor/composer/system/default/variables/PromptTypes.d.ts +0 -36
  703. package/bin/executor/composer/system/default/variables/PromptTypes.d.ts.map +0 -1
  704. package/bin/executor/composer/system/default/variables/PromptTypes.js +0 -9
  705. package/bin/executor/composer/system/default/variables/PromptTypes.js.map +0 -1
  706. package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts +0 -61
  707. package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts.map +0 -1
  708. package/bin/executor/composer/system/default/variables/VariableReplacer.js +0 -93
  709. package/bin/executor/composer/system/default/variables/VariableReplacer.js.map +0 -1
  710. package/bin/executor/core-engine/CoreEngineMessageState.d.ts +0 -63
  711. package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +0 -1
  712. package/bin/executor/core-engine/CoreEngineMessageState.js +0 -81
  713. package/bin/executor/core-engine/CoreEngineMessageState.js.map +0 -1
  714. package/bin/group/GroupDispatchSession.d.ts +0 -36
  715. package/bin/group/GroupDispatchSession.d.ts.map +0 -1
  716. package/bin/group/GroupDispatchSession.js.map +0 -1
  717. package/bin/internal/AgentRuntime.d.ts +0 -43
  718. package/bin/internal/AgentRuntime.d.ts.map +0 -1
  719. package/bin/internal/AgentRuntime.js +0 -179
  720. package/bin/internal/AgentRuntime.js.map +0 -1
  721. package/bin/internal/GroupRuntime.d.ts +0 -17
  722. package/bin/internal/GroupRuntime.d.ts.map +0 -1
  723. package/bin/internal/GroupRuntime.js +0 -66
  724. package/bin/internal/GroupRuntime.js.map +0 -1
  725. package/bin/internal/index.d.ts +0 -8
  726. package/bin/internal/index.d.ts.map +0 -1
  727. package/bin/internal/index.js +0 -8
  728. package/bin/internal/index.js.map +0 -1
  729. package/bin/plugin/core/ActionScheduleExecutor.d.ts +0 -19
  730. package/bin/plugin/core/ActionScheduleExecutor.d.ts.map +0 -1
  731. package/bin/plugin/core/ActionScheduleExecutor.js +0 -58
  732. package/bin/plugin/core/ActionScheduleExecutor.js.map +0 -1
  733. package/bin/plugin/core/ActionScheduleRuntime.d.ts +0 -25
  734. package/bin/plugin/core/ActionScheduleRuntime.d.ts.map +0 -1
  735. package/bin/plugin/core/ActionScheduleRuntime.js +0 -62
  736. package/bin/plugin/core/ActionScheduleRuntime.js.map +0 -1
  737. package/bin/plugin/core/ActionScheduleStore.d.ts +0 -97
  738. package/bin/plugin/core/ActionScheduleStore.d.ts.map +0 -1
  739. package/bin/plugin/core/ActionScheduleStore.js +0 -313
  740. package/bin/plugin/core/ActionScheduleStore.js.map +0 -1
  741. package/bin/plugin/core/ActionScheduleTime.d.ts +0 -32
  742. package/bin/plugin/core/ActionScheduleTime.d.ts.map +0 -1
  743. package/bin/plugin/core/ActionScheduleTime.js +0 -108
  744. package/bin/plugin/core/ActionScheduleTime.js.map +0 -1
  745. package/bin/plugin/core/BasePlugin.d.ts +0 -59
  746. package/bin/plugin/core/BasePlugin.d.ts.map +0 -1
  747. package/bin/plugin/core/BasePlugin.js +0 -40
  748. package/bin/plugin/core/BasePlugin.js.map +0 -1
  749. package/bin/plugin/core/HookRegistry.d.ts +0 -67
  750. package/bin/plugin/core/HookRegistry.d.ts.map +0 -1
  751. package/bin/plugin/core/HookRegistry.js +0 -220
  752. package/bin/plugin/core/HookRegistry.js.map +0 -1
  753. package/bin/plugin/core/PluginActionExecution.d.ts +0 -33
  754. package/bin/plugin/core/PluginActionExecution.d.ts.map +0 -1
  755. package/bin/plugin/core/PluginActionExecution.js +0 -168
  756. package/bin/plugin/core/PluginActionExecution.js.map +0 -1
  757. package/bin/plugin/core/PluginActionFactory.d.ts +0 -93
  758. package/bin/plugin/core/PluginActionFactory.d.ts.map +0 -1
  759. package/bin/plugin/core/PluginActionFactory.js +0 -56
  760. package/bin/plugin/core/PluginActionFactory.js.map +0 -1
  761. package/bin/plugin/core/PluginCatalog.d.ts +0 -57
  762. package/bin/plugin/core/PluginCatalog.d.ts.map +0 -1
  763. package/bin/plugin/core/PluginCatalog.js +0 -117
  764. package/bin/plugin/core/PluginCatalog.js.map +0 -1
  765. package/bin/plugin/core/PluginContext.d.ts +0 -42
  766. package/bin/plugin/core/PluginContext.d.ts.map +0 -1
  767. package/bin/plugin/core/PluginContext.js +0 -35
  768. package/bin/plugin/core/PluginContext.js.map +0 -1
  769. package/bin/plugin/core/PluginHttpRoutes.d.ts +0 -24
  770. package/bin/plugin/core/PluginHttpRoutes.d.ts.map +0 -1
  771. package/bin/plugin/core/PluginHttpRoutes.js +0 -35
  772. package/bin/plugin/core/PluginHttpRoutes.js.map +0 -1
  773. package/bin/plugin/core/PluginRegistry.d.ts +0 -207
  774. package/bin/plugin/core/PluginRegistry.d.ts.map +0 -1
  775. package/bin/plugin/core/PluginRegistry.js +0 -675
  776. package/bin/plugin/core/PluginRegistry.js.map +0 -1
  777. package/bin/plugin/core/PluginStateController.d.ts +0 -16
  778. package/bin/plugin/core/PluginStateController.d.ts.map +0 -1
  779. package/bin/plugin/core/PluginStateController.js +0 -14
  780. package/bin/plugin/core/PluginStateController.js.map +0 -1
  781. package/bin/plugin/tool/PluginToolRuntime.d.ts +0 -15
  782. package/bin/plugin/tool/PluginToolRuntime.d.ts.map +0 -1
  783. package/bin/plugin/tool/PluginToolRuntime.js +0 -108
  784. package/bin/plugin/tool/PluginToolRuntime.js.map +0 -1
  785. package/bin/plugin/tool/PluginToolSchemas.d.ts +0 -36
  786. package/bin/plugin/tool/PluginToolSchemas.d.ts.map +0 -1
  787. package/bin/plugin/tool/PluginToolSchemas.js +0 -42
  788. package/bin/plugin/tool/PluginToolSchemas.js.map +0 -1
  789. package/bin/plugin/tool/PluginTools.d.ts +0 -22
  790. package/bin/plugin/tool/PluginTools.d.ts.map +0 -1
  791. package/bin/plugin/tool/PluginTools.js +0 -61
  792. package/bin/plugin/tool/PluginTools.js.map +0 -1
  793. package/bin/plugin/types/ActionSchedule.d.ts +0 -91
  794. package/bin/plugin/types/ActionSchedule.d.ts.map +0 -1
  795. package/bin/plugin/types/ActionSchedule.js +0 -10
  796. package/bin/plugin/types/ActionSchedule.js.map +0 -1
  797. package/bin/plugin/types/PluginApi.d.ts +0 -79
  798. package/bin/plugin/types/PluginApi.d.ts.map +0 -1
  799. package/bin/plugin/types/PluginApi.js +0 -9
  800. package/bin/plugin/types/PluginApi.js.map +0 -1
  801. package/bin/remote/RemoteAgent.d.ts +0 -36
  802. package/bin/remote/RemoteAgent.d.ts.map +0 -1
  803. package/bin/remote/RemoteAgent.js +0 -97
  804. package/bin/remote/RemoteAgent.js.map +0 -1
  805. package/bin/remote/RemoteSession.d.ts +0 -67
  806. package/bin/remote/RemoteSession.d.ts.map +0 -1
  807. package/bin/remote/RemoteSession.js +0 -275
  808. package/bin/remote/RemoteSession.js.map +0 -1
  809. package/bin/remote/RemoteTransport.d.ts +0 -80
  810. package/bin/remote/RemoteTransport.d.ts.map +0 -1
  811. package/bin/remote/RemoteTransport.js +0 -9
  812. package/bin/remote/RemoteTransport.js.map +0 -1
  813. package/bin/remote/TransportFactory.d.ts +0 -13
  814. package/bin/remote/TransportFactory.d.ts.map +0 -1
  815. package/bin/remote/TransportFactory.js +0 -22
  816. package/bin/remote/TransportFactory.js.map +0 -1
  817. package/bin/remote/transports/HttpRemoteAgentTransport.d.ts +0 -52
  818. package/bin/remote/transports/HttpRemoteAgentTransport.d.ts.map +0 -1
  819. package/bin/remote/transports/HttpRemoteAgentTransport.js +0 -399
  820. package/bin/remote/transports/HttpRemoteAgentTransport.js.map +0 -1
  821. package/bin/remote/transports/RpcClient.d.ts +0 -168
  822. package/bin/remote/transports/RpcClient.d.ts.map +0 -1
  823. package/bin/remote/transports/RpcClient.js +0 -484
  824. package/bin/remote/transports/RpcClient.js.map +0 -1
  825. package/bin/remote/transports/RpcRemoteAgentTransport.d.ts +0 -51
  826. package/bin/remote/transports/RpcRemoteAgentTransport.d.ts.map +0 -1
  827. package/bin/remote/transports/RpcRemoteAgentTransport.js +0 -102
  828. package/bin/remote/transports/RpcRemoteAgentTransport.js.map +0 -1
  829. package/bin/session/SessionCommand.d.ts +0 -24
  830. package/bin/session/SessionCommand.d.ts.map +0 -1
  831. package/bin/session/SessionCommand.js +0 -35
  832. package/bin/session/SessionCommand.js.map +0 -1
  833. package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +0 -1
  834. package/bin/session/messages/SessionAssistantMessageWriter.js.map +0 -1
  835. package/bin/session/messages/SessionMessageCompaction.d.ts +0 -26
  836. package/bin/session/messages/SessionMessageCompaction.d.ts.map +0 -1
  837. package/bin/session/messages/SessionMessageCompaction.js +0 -118
  838. package/bin/session/messages/SessionMessageCompaction.js.map +0 -1
  839. package/bin/session/runtime/SessionCompactOperation.d.ts +0 -29
  840. package/bin/session/runtime/SessionCompactOperation.d.ts.map +0 -1
  841. package/bin/session/runtime/SessionCompactOperation.js +0 -66
  842. package/bin/session/runtime/SessionCompactOperation.js.map +0 -1
  843. package/bin/session/runtime/SessionHistoryCompaction.d.ts +0 -22
  844. package/bin/session/runtime/SessionHistoryCompaction.d.ts.map +0 -1
  845. package/bin/session/runtime/SessionHistoryCompaction.js +0 -31
  846. package/bin/session/runtime/SessionHistoryCompaction.js.map +0 -1
  847. package/bin/types/agent/RemoteAgentOptions.d.ts +0 -28
  848. package/bin/types/agent/RemoteAgentOptions.d.ts.map +0 -1
  849. package/bin/types/agent/RemoteAgentOptions.js +0 -9
  850. package/bin/types/agent/RemoteAgentOptions.js.map +0 -1
  851. package/bin/types/agent/RemoteAgentPluginAction.d.ts +0 -46
  852. package/bin/types/agent/RemoteAgentPluginAction.d.ts.map +0 -1
  853. package/bin/types/agent/RemoteAgentPluginAction.js +0 -9
  854. package/bin/types/agent/RemoteAgentPluginAction.js.map +0 -1
  855. package/bin/types/agent/WorkspaceEntryOptions.d.ts +0 -16
  856. package/bin/types/agent/WorkspaceEntryOptions.d.ts.map +0 -1
  857. package/bin/types/agent/WorkspaceEntryOptions.js +0 -8
  858. package/bin/types/agent/WorkspaceEntryOptions.js.map +0 -1
  859. package/bin/types/common/Json.d.ts +0 -32
  860. package/bin/types/common/Json.d.ts.map +0 -1
  861. package/bin/types/common/Json.js +0 -9
  862. package/bin/types/common/Json.js.map +0 -1
  863. package/bin/types/common/Template.d.ts +0 -9
  864. package/bin/types/common/Template.d.ts.map +0 -1
  865. package/bin/types/common/Template.js +0 -9
  866. package/bin/types/common/Template.js.map +0 -1
  867. package/bin/types/group/GroupDispatchSession.d.ts.map +0 -1
  868. package/bin/types/group/GroupDispatchSession.js +0 -8
  869. package/bin/types/group/GroupDispatchSession.js.map +0 -1
  870. package/bin/types/plugin/AgentPluginContext.d.ts +0 -25
  871. package/bin/types/plugin/AgentPluginContext.d.ts.map +0 -1
  872. package/bin/types/plugin/AgentPluginContext.js +0 -10
  873. package/bin/types/plugin/AgentPluginContext.js.map +0 -1
  874. package/bin/types/plugin/PluginAction.d.ts +0 -161
  875. package/bin/types/plugin/PluginAction.d.ts.map +0 -1
  876. package/bin/types/plugin/PluginAction.js +0 -9
  877. package/bin/types/plugin/PluginAction.js.map +0 -1
  878. package/bin/types/plugin/PluginActionExecution.d.ts +0 -31
  879. package/bin/types/plugin/PluginActionExecution.d.ts.map +0 -1
  880. package/bin/types/plugin/PluginActionExecution.js +0 -10
  881. package/bin/types/plugin/PluginActionExecution.js.map +0 -1
  882. package/bin/types/plugin/PluginCommand.d.ts +0 -14
  883. package/bin/types/plugin/PluginCommand.d.ts.map +0 -1
  884. package/bin/types/plugin/PluginCommand.js +0 -7
  885. package/bin/types/plugin/PluginCommand.js.map +0 -1
  886. package/bin/types/plugin/PluginContext.d.ts +0 -45
  887. package/bin/types/plugin/PluginContext.d.ts.map +0 -1
  888. package/bin/types/plugin/PluginContext.js +0 -9
  889. package/bin/types/plugin/PluginContext.js.map +0 -1
  890. package/bin/types/plugin/PluginDefinition.d.ts +0 -44
  891. package/bin/types/plugin/PluginDefinition.d.ts.map +0 -1
  892. package/bin/types/plugin/PluginDefinition.js +0 -9
  893. package/bin/types/plugin/PluginDefinition.js.map +0 -1
  894. package/bin/types/plugin/PluginExecutionContext.d.ts +0 -23
  895. package/bin/types/plugin/PluginExecutionContext.d.ts.map +0 -1
  896. package/bin/types/plugin/PluginExecutionContext.js +0 -8
  897. package/bin/types/plugin/PluginExecutionContext.js.map +0 -1
  898. package/bin/types/plugin/PluginHttp.d.ts +0 -34
  899. package/bin/types/plugin/PluginHttp.d.ts.map +0 -1
  900. package/bin/types/plugin/PluginHttp.js +0 -9
  901. package/bin/types/plugin/PluginHttp.js.map +0 -1
  902. package/bin/types/plugin/PluginNotification.d.ts +0 -31
  903. package/bin/types/plugin/PluginNotification.d.ts.map +0 -1
  904. package/bin/types/plugin/PluginNotification.js +0 -8
  905. package/bin/types/plugin/PluginNotification.js.map +0 -1
  906. package/bin/types/plugin/PluginRegistry.d.ts +0 -21
  907. package/bin/types/plugin/PluginRegistry.d.ts.map +0 -1
  908. package/bin/types/plugin/PluginRegistry.js +0 -9
  909. package/bin/types/plugin/PluginRegistry.js.map +0 -1
  910. package/bin/types/plugin/PluginRuntime.d.ts +0 -267
  911. package/bin/types/plugin/PluginRuntime.d.ts.map +0 -1
  912. package/bin/types/plugin/PluginRuntime.js +0 -9
  913. package/bin/types/plugin/PluginRuntime.js.map +0 -1
  914. package/bin/types/plugin/PluginServices.d.ts +0 -10
  915. package/bin/types/plugin/PluginServices.d.ts.map +0 -1
  916. package/bin/types/plugin/PluginServices.js +0 -3
  917. package/bin/types/plugin/PluginServices.js.map +0 -1
  918. package/bin/types/plugin/PluginState.d.ts +0 -62
  919. package/bin/types/plugin/PluginState.d.ts.map +0 -1
  920. package/bin/types/plugin/PluginState.js +0 -10
  921. package/bin/types/plugin/PluginState.js.map +0 -1
  922. package/bin/types/plugin/PluginTool.d.ts +0 -92
  923. package/bin/types/plugin/PluginTool.d.ts.map +0 -1
  924. package/bin/types/plugin/PluginTool.js +0 -9
  925. package/bin/types/plugin/PluginTool.js.map +0 -1
  926. package/bin/types/rpc/RpcProtocol.d.ts +0 -417
  927. package/bin/types/rpc/RpcProtocol.d.ts.map +0 -1
  928. package/bin/types/rpc/RpcProtocol.js +0 -10
  929. package/bin/types/rpc/RpcProtocol.js.map +0 -1
  930. package/bin/types/sdk/AgentSessionCompact.d.ts +0 -31
  931. package/bin/types/sdk/AgentSessionCompact.d.ts.map +0 -1
  932. package/bin/types/sdk/AgentSessionCompact.js +0 -8
  933. package/bin/types/sdk/AgentSessionCompact.js.map +0 -1
  934. package/bin/types/session/SessionAction.d.ts +0 -39
  935. package/bin/types/session/SessionAction.d.ts.map +0 -1
  936. package/bin/types/session/SessionAction.js +0 -8
  937. package/bin/types/session/SessionAction.js.map +0 -1
  938. package/bin/types/session/SessionContent.d.ts +0 -41
  939. package/bin/types/session/SessionContent.d.ts.map +0 -1
  940. package/bin/types/session/SessionContent.js +0 -8
  941. package/bin/types/session/SessionContent.js.map +0 -1
  942. package/bin/types/session/SessionInteraction.d.ts +0 -215
  943. package/bin/types/session/SessionInteraction.d.ts.map +0 -1
  944. package/bin/types/session/SessionInteraction.js +0 -15
  945. package/bin/types/session/SessionInteraction.js.map +0 -1
  946. package/bin/types/session/SessionMessage.d.ts +0 -268
  947. package/bin/types/session/SessionMessage.d.ts.map +0 -1
  948. package/bin/types/session/SessionMessage.js +0 -8
  949. package/bin/types/session/SessionMessage.js.map +0 -1
  950. package/bin/types/session/SessionMutation.d.ts +0 -151
  951. package/bin/types/session/SessionMutation.d.ts.map +0 -1
  952. package/bin/types/session/SessionMutation.js +0 -20
  953. package/bin/types/session/SessionMutation.js.map +0 -1
  954. package/bin/types/session/SessionOrigin.d.ts +0 -19
  955. package/bin/types/session/SessionOrigin.d.ts.map +0 -1
  956. package/bin/types/session/SessionOrigin.js +0 -8
  957. package/bin/types/session/SessionOrigin.js.map +0 -1
  958. package/bin/types/session/SessionSegment.d.ts +0 -57
  959. package/bin/types/session/SessionSegment.d.ts.map +0 -1
  960. package/bin/types/session/SessionSegment.js +0 -8
  961. package/bin/types/session/SessionSegment.js.map +0 -1
  962. package/bin/types/store/SessionDataStore.d.ts +0 -85
  963. package/bin/types/store/SessionDataStore.d.ts.map +0 -1
  964. package/bin/types/store/SessionDataStore.js +0 -9
  965. package/bin/types/store/SessionDataStore.js.map +0 -1
  966. package/bin/utils/Template.d.ts +0 -17
  967. package/bin/utils/Template.d.ts.map +0 -1
  968. package/bin/utils/Template.js +0 -24
  969. package/bin/utils/Template.js.map +0 -1
  970. package/bin/workspace/WorkspacePaths.d.ts +0 -16
  971. package/bin/workspace/WorkspacePaths.d.ts.map +0 -1
  972. package/bin/workspace/WorkspacePaths.js +0 -35
  973. package/bin/workspace/WorkspacePaths.js.map +0 -1
  974. package/bin/workspace/store/JsonlSessionMessageStore.d.ts +0 -77
  975. package/bin/workspace/store/JsonlSessionMessageStore.d.ts.map +0 -1
  976. package/bin/workspace/store/JsonlSessionMessageStore.js +0 -419
  977. package/bin/workspace/store/JsonlSessionMessageStore.js.map +0 -1
  978. package/bin/workspace/store/LocalGroupDispatchSessionDataStore.d.ts +0 -28
  979. package/bin/workspace/store/LocalGroupDispatchSessionDataStore.d.ts.map +0 -1
  980. package/bin/workspace/store/LocalGroupDispatchSessionDataStore.js +0 -102
  981. package/bin/workspace/store/LocalGroupDispatchSessionDataStore.js.map +0 -1
  982. package/bin/workspace/store/LocalGroupSessionDataStore.d.ts.map +0 -1
  983. package/bin/workspace/store/LocalGroupSessionDataStore.js.map +0 -1
  984. package/bin/workspace/store/LocalGroupSessionStore.d.ts.map +0 -1
  985. package/bin/workspace/store/LocalGroupSessionStore.js.map +0 -1
  986. package/bin/workspace/store/LocalSessionAttachmentStore.d.ts.map +0 -1
  987. package/bin/workspace/store/LocalSessionAttachmentStore.js.map +0 -1
  988. package/bin/workspace/store/LocalSessionDataStore.d.ts +0 -45
  989. package/bin/workspace/store/LocalSessionDataStore.d.ts.map +0 -1
  990. package/bin/workspace/store/LocalSessionDataStore.js +0 -100
  991. package/bin/workspace/store/LocalSessionDataStore.js.map +0 -1
  992. package/bin/workspace/store/LocalSessionStore.d.ts.map +0 -1
  993. package/bin/workspace/store/LocalSessionStore.js +0 -177
  994. package/bin/workspace/store/LocalSessionStore.js.map +0 -1
  995. package/bin/workspace/store/LocalStorePaths.d.ts +0 -35
  996. package/bin/workspace/store/LocalStorePaths.d.ts.map +0 -1
  997. package/bin/workspace/store/LocalStorePaths.js +0 -62
  998. package/bin/workspace/store/LocalStorePaths.js.map +0 -1
  999. package/bin/workspace/store/SessionMessageStoreFactory.d.ts +0 -12
  1000. package/bin/workspace/store/SessionMessageStoreFactory.d.ts.map +0 -1
  1001. package/bin/workspace/store/SessionMessageStoreFactory.js +0 -13
  1002. package/bin/workspace/store/SessionMessageStoreFactory.js.map +0 -1
  1003. package/city-test/agent-http.test.mjs +0 -326
  1004. package/city-test/city-container.test.mjs +0 -156
  1005. package/city-test/city-host-registry.test.mjs +0 -68
  1006. package/city-test/city-transport.test.mjs +0 -282
  1007. package/city-test/group.test.mjs +0 -990
  1008. package/city-test/session-model.test.mjs +0 -169
  1009. package/city-test/transport-lifecycle.test.mjs +0 -164
  1010. package/scripts/PlatformSandbox.mjs +0 -17
  1011. package/scripts/action-schedule-store.test.mjs +0 -171
  1012. package/scripts/agent-env-shell-sandbox.test.mjs +0 -94
  1013. package/scripts/agent-env.test.mjs +0 -56
  1014. package/scripts/agent-multi-workspace.test.mjs +0 -280
  1015. package/scripts/agent-ready.test.mjs +0 -296
  1016. package/scripts/agent-session-maintenance.test.mjs +0 -47
  1017. package/scripts/agent-store.test.mjs +0 -182
  1018. package/scripts/city-model-tool-loop.test.mjs +0 -95
  1019. package/scripts/file-tools.test.mjs +0 -282
  1020. package/scripts/image-plugin-job.test.mjs +0 -600
  1021. package/scripts/multi-agent-plugin-isolation.test.mjs +0 -170
  1022. package/scripts/plugin-tools.test.mjs +0 -556
  1023. package/scripts/remote-session-reconnect.test.mjs +0 -183
  1024. package/scripts/rpc-url-routing.test.mjs +0 -29
  1025. package/scripts/search-tools.test.mjs +0 -188
  1026. package/scripts/session-ask-question.test.mjs +0 -226
  1027. package/scripts/session-attachments.test.mjs +0 -104
  1028. package/scripts/session-compact-handle.test.mjs +0 -118
  1029. package/scripts/session-compaction-prompts.test.mjs +0 -49
  1030. package/scripts/session-composer.test.mjs +0 -208
  1031. package/scripts/session-config-turn-boundary.test.mjs +0 -921
  1032. package/scripts/session-dynamic-interaction.test.mjs +0 -75
  1033. package/scripts/session-fork.test.mjs +0 -35
  1034. package/scripts/session-list-title.test.mjs +0 -202
  1035. package/scripts/session-messages.test.mjs +0 -490
  1036. package/scripts/session-shell-approval.test.mjs +0 -179
  1037. package/scripts/session-title-event.test.mjs +0 -282
  1038. package/scripts/session-tool-approval.test.mjs +0 -173
  1039. package/scripts/session-turn-failure.test.mjs +0 -363
  1040. package/scripts/workspace.test.mjs +0 -260
  1041. package/src/agent/AgentModel.ts +0 -66
  1042. package/src/agent/WorkspaceEntry.ts +0 -309
  1043. package/src/city/host/CityHostRegistry.ts +0 -260
  1044. package/src/city/index.ts +0 -49
  1045. package/src/city/runtime/City.ts +0 -425
  1046. package/src/city/transport/SerializedTransport.ts +0 -65
  1047. package/src/city/transport/http/AgentHTTP.ts +0 -176
  1048. package/src/city/transport/http/CityHTTP.ts +0 -196
  1049. package/src/city/transport/http/NodeHttpAdapter.ts +0 -75
  1050. package/src/city/transport/http/routes/RuntimeRoutes.ts +0 -51
  1051. package/src/city/transport/http/routes/SessionRoutes.ts +0 -497
  1052. package/src/city/transport/rpc/AgentRPC.ts +0 -111
  1053. package/src/city/transport/rpc/CityRPC.ts +0 -138
  1054. package/src/city/transport/rpc/RpcServer.ts +0 -158
  1055. package/src/city/transport/rpc/server/InternalHandlers.ts +0 -223
  1056. package/src/city/transport/rpc/server/RequestDispatcher.ts +0 -67
  1057. package/src/city/transport/rpc/server/SdkSessionHandlers.ts +0 -166
  1058. package/src/city/transport/rpc/server/ServerTypes.ts +0 -103
  1059. package/src/city/transport/session/RemoteSessionConfig.ts +0 -34
  1060. package/src/city/transport/types/AgentHttpBinding.ts +0 -25
  1061. package/src/city/transport/types/AgentHttpRuntime.ts +0 -13
  1062. package/src/city/transport/types/AgentRpcBinding.ts +0 -28
  1063. package/src/city/transport/types/AgentRpcRuntime.ts +0 -20
  1064. package/src/city/transport/types/AgentSessionModelResolver.ts +0 -13
  1065. package/src/city/transport/types/CityHttpRuntime.ts +0 -45
  1066. package/src/city/transport/types/CityRpcRuntime.ts +0 -27
  1067. package/src/city/transport/types/RpcProtocol.ts +0 -32
  1068. package/src/city/types/City.ts +0 -99
  1069. package/src/city/types/PluginHostContext.ts +0 -44
  1070. package/src/city/types/SerializedTransport.ts +0 -19
  1071. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionPrompts.ts +0 -162
  1072. package/src/executor/composer/system/SessionSystemComposer.ts +0 -25
  1073. package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +0 -76
  1074. package/src/executor/composer/system/default/PromptRenderer.ts +0 -52
  1075. package/src/executor/composer/system/default/SystemDomain.ts +0 -350
  1076. package/src/executor/composer/system/default/assets/task.prompt.ts +0 -9
  1077. package/src/executor/composer/system/default/assets/task.prompt.ts.txt +0 -33
  1078. package/src/executor/composer/system/default/variables/GeoContext.ts +0 -180
  1079. package/src/executor/composer/system/default/variables/PromptTypes.ts +0 -37
  1080. package/src/executor/composer/system/default/variables/VariableReplacer.ts +0 -154
  1081. package/src/executor/core-engine/CoreEngineMessageState.ts +0 -117
  1082. package/src/group/GroupDispatchSession.ts +0 -175
  1083. package/src/internal/AgentRuntime.ts +0 -229
  1084. package/src/internal/GroupRuntime.ts +0 -89
  1085. package/src/internal/index.ts +0 -33
  1086. package/src/plugin/core/ActionScheduleExecutor.ts +0 -68
  1087. package/src/plugin/core/ActionScheduleRuntime.ts +0 -92
  1088. package/src/plugin/core/ActionScheduleStore.ts +0 -414
  1089. package/src/plugin/core/ActionScheduleTime.ts +0 -132
  1090. package/src/plugin/core/BasePlugin.ts +0 -79
  1091. package/src/plugin/core/HookRegistry.ts +0 -297
  1092. package/src/plugin/core/PluginActionExecution.ts +0 -230
  1093. package/src/plugin/core/PluginActionFactory.ts +0 -172
  1094. package/src/plugin/core/PluginCatalog.ts +0 -153
  1095. package/src/plugin/core/PluginContext.ts +0 -71
  1096. package/src/plugin/core/PluginHttpRoutes.ts +0 -47
  1097. package/src/plugin/core/PluginRegistry.ts +0 -888
  1098. package/src/plugin/core/PluginStateController.ts +0 -19
  1099. package/src/plugin/tool/PluginToolRuntime.ts +0 -124
  1100. package/src/plugin/tool/PluginToolSchemas.ts +0 -44
  1101. package/src/plugin/tool/PluginTools.ts +0 -92
  1102. package/src/plugin/types/ActionSchedule.ts +0 -100
  1103. package/src/plugin/types/PluginApi.ts +0 -86
  1104. package/src/remote/RemoteAgent.ts +0 -130
  1105. package/src/remote/RemoteSession.ts +0 -359
  1106. package/src/remote/RemoteTransport.ts +0 -122
  1107. package/src/remote/TransportFactory.ts +0 -29
  1108. package/src/remote/transports/HttpRemoteAgentTransport.ts +0 -582
  1109. package/src/remote/transports/RpcClient.ts +0 -638
  1110. package/src/remote/transports/RpcRemoteAgentTransport.ts +0 -187
  1111. package/src/session/SessionCommand.ts +0 -42
  1112. package/src/session/messages/SessionMessageCompaction.ts +0 -147
  1113. package/src/session/runtime/SessionCompactOperation.ts +0 -93
  1114. package/src/session/runtime/SessionHistoryCompaction.ts +0 -45
  1115. package/src/types/agent/RemoteAgentOptions.ts +0 -29
  1116. package/src/types/agent/RemoteAgentPluginAction.ts +0 -52
  1117. package/src/types/agent/WorkspaceEntryOptions.ts +0 -18
  1118. package/src/types/common/Json.ts +0 -34
  1119. package/src/types/common/Template.ts +0 -9
  1120. package/src/types/plugin/AgentPluginContext.ts +0 -30
  1121. package/src/types/plugin/PluginAction.ts +0 -178
  1122. package/src/types/plugin/PluginActionExecution.ts +0 -36
  1123. package/src/types/plugin/PluginCommand.ts +0 -15
  1124. package/src/types/plugin/PluginContext.ts +0 -59
  1125. package/src/types/plugin/PluginDefinition.ts +0 -54
  1126. package/src/types/plugin/PluginExecutionContext.ts +0 -29
  1127. package/src/types/plugin/PluginHttp.ts +0 -36
  1128. package/src/types/plugin/PluginNotification.ts +0 -38
  1129. package/src/types/plugin/PluginRegistry.ts +0 -25
  1130. package/src/types/plugin/PluginRuntime.ts +0 -292
  1131. package/src/types/plugin/PluginServices.ts +0 -11
  1132. package/src/types/plugin/PluginState.ts +0 -65
  1133. package/src/types/plugin/PluginTool.ts +0 -106
  1134. package/src/types/rpc/RpcProtocol.ts +0 -464
  1135. package/src/types/sdk/AgentSessionCompact.ts +0 -36
  1136. package/src/types/session/SessionAction.ts +0 -41
  1137. package/src/types/session/SessionContent.ts +0 -52
  1138. package/src/types/session/SessionInteraction.ts +0 -268
  1139. package/src/types/session/SessionMessage.ts +0 -306
  1140. package/src/types/session/SessionMutation.ts +0 -183
  1141. package/src/types/session/SessionOrigin.ts +0 -21
  1142. package/src/types/session/SessionSegment.ts +0 -62
  1143. package/src/types/store/SessionDataStore.ts +0 -109
  1144. package/src/utils/Template.ts +0 -28
  1145. package/src/workspace/WorkspacePaths.ts +0 -37
  1146. package/src/workspace/store/JsonlSessionMessageStore.ts +0 -513
  1147. package/src/workspace/store/LocalGroupDispatchSessionDataStore.ts +0 -118
  1148. package/src/workspace/store/LocalSessionDataStore.ts +0 -169
  1149. package/src/workspace/store/LocalSessionStore.ts +0 -243
  1150. package/src/workspace/store/LocalStorePaths.ts +0 -143
  1151. package/src/workspace/store/SessionMessageStoreFactory.ts +0 -18
  1152. /package/bin/{workspace/store → group/storage}/LocalGroupSessionStore.d.ts +0 -0
@@ -6,11 +6,14 @@
6
6
  * 从最新快照严格递增。
7
7
  */
8
8
  import { generate_id } from "../utils/Id.js";
9
- import { SessionAssistantMessageWriter } from "./messages/SessionAssistantMessageWriter.js";
10
- import { SessionMessageInteractionWriter } from "./messages/SessionMessageInteractionWriter.js";
11
- import { to_session_json_value } from "./messages/SessionJsonValue.js";
9
+ import { SessionAgentMessageWriter } from "../session/messages/SessionAgentMessageWriter.js";
10
+ import { SessionAgentMessageState } from "../session/messages/SessionAgentMessageState.js";
11
+ import { SessionAgentActionPartWriter } from "../session/messages/SessionAgentActionPartWriter.js";
12
+ import { has_assistant_result_content, normalize_canonical_session_user_parts, normalize_session_user_parts, } from "../session/messages/SessionUserMessage.js";
12
13
  import { persist_user_prompt_file_parts } from "../executor/messages/SessionAttachmentMapper.js";
13
- export { SessionAssistantMessageWriter } from "./messages/SessionAssistantMessageWriter.js";
14
+ export { SessionAgentMessageWriter } from "../session/messages/SessionAgentMessageWriter.js";
15
+ export { SessionAgentActionPartWriter } from "../session/messages/SessionAgentActionPartWriter.js";
16
+ export { normalize_session_user_parts } from "../session/messages/SessionUserMessage.js";
14
17
  /** 唯一 Session Message 写入服务。 */
15
18
  export class SessionMessages {
16
19
  session_id;
@@ -18,11 +21,10 @@ export class SessionMessages {
18
21
  attachment_store;
19
22
  publish;
20
23
  messages_by_id = new Map();
21
- /** Assistant Message 隔离的完整写事务链。 */
22
- assistant_write_chains = new Map();
23
- /** Assistant Message Interaction Part 的原子状态写入器。 */
24
- interaction_writer;
25
- initialized = false;
24
+ /** Assistant 草稿与 Interaction 的串行状态转换器。 */
25
+ agent_state;
26
+ /** 当前 Message 恢复事务;并发初始化共享同一个 Promise。 */
27
+ initialize_promise = null;
26
28
  constructor(options) {
27
29
  this.session_id = String(options.session_id || "").trim();
28
30
  this.store = options.store;
@@ -30,43 +32,102 @@ export class SessionMessages {
30
32
  this.publish = options.publish;
31
33
  if (!this.session_id)
32
34
  throw new Error("SessionMessages requires session_id");
33
- this.interaction_writer = new SessionMessageInteractionWriter({
35
+ this.agent_state = new SessionAgentMessageState({
36
+ session_id: this.session_id,
37
+ store: this.store,
34
38
  list_messages: () => this.messages_by_id.values(),
35
- find_streaming_tool: (tool_call_id) => this.find_streaming_tool(tool_call_id),
36
- enqueue_assistant_write: (message_id, operation) => this.enqueue_assistant_write(message_id, operation),
37
- commit_assistant_snapshot: (current, parts) => this.commit_assistant_snapshot(current, parts),
39
+ accept_message: (message, publish_mutation) => this.accept_message(message, publish_mutation),
40
+ project_mutation: (mutation, message) => this.accept_mutation(mutation, message),
38
41
  });
39
42
  }
40
43
  /** 恢复已有 Message,并收口进程中断遗留的运行状态。 */
41
44
  async initialize() {
42
- if (this.initialized)
43
- return;
44
- await this.store.initialize();
45
- for (const message of await this.store.list_messages()) {
46
- this.messages_by_id.set(message.message_id, message);
45
+ if (!this.initialize_promise) {
46
+ this.initialize_promise = this.restore_messages();
47
47
  }
48
- this.initialized = true;
49
- const unfinished = [...this.messages_by_id.values()];
50
- for (const message of unfinished) {
51
- if (message.type === "assistant" && message.status === "streaming") {
52
- await this.complete_assistant_message(message.message_id, "stopped");
53
- }
54
- if (message.type === "action" && message.status === "running") {
55
- await this.update_action_message(message.message_id, "failed", {
56
- description: message.description || "Action interrupted before completion.",
57
- });
48
+ const initialize_promise = this.initialize_promise;
49
+ try {
50
+ await initialize_promise;
51
+ }
52
+ catch (error) {
53
+ if (this.initialize_promise === initialize_promise) {
54
+ this.initialize_promise = null;
58
55
  }
56
+ throw error;
57
+ }
58
+ }
59
+ /** 只恢复非终态 Message,并由领域层统一收口进程中断状态。 */
60
+ async restore_messages() {
61
+ await this.store.initialize();
62
+ const persisted_messages = await this.store.list_recoverable_agent_messages();
63
+ this.messages_by_id.clear();
64
+ for (const message of persisted_messages) {
65
+ this.remember_message(message);
66
+ const updated_at = Date.now();
67
+ const recovered = {
68
+ ...message,
69
+ state: "done",
70
+ revision: message.revision + 1,
71
+ updated_at,
72
+ parts: [...message.parts.map((part) => {
73
+ if (part.type === "action" && part.state === "running") {
74
+ return {
75
+ ...part,
76
+ state: "failed",
77
+ description: part.description || "Action interrupted before completion.",
78
+ };
79
+ }
80
+ if (part.type === "interaction" && part.status === "pending") {
81
+ return {
82
+ ...part,
83
+ status: "cancelled",
84
+ cancel_reason: "runtime_interrupted",
85
+ resolved_at: updated_at,
86
+ };
87
+ }
88
+ if (part.type === "tool" &&
89
+ part.state !== "completed" &&
90
+ part.state !== "failed") {
91
+ return {
92
+ ...part,
93
+ state: "failed",
94
+ error: "Tool interrupted before completion.",
95
+ };
96
+ }
97
+ if ((part.type === "text" || part.type === "reasoning") &&
98
+ part.state === "streaming") {
99
+ return { ...part, state: "done" };
100
+ }
101
+ return part;
102
+ }), {
103
+ part_id: `error:${generate_id()}`,
104
+ sequence: message.parts.reduce((sequence, part) => Math.max(sequence, part.sequence + 1), 1),
105
+ type: "error",
106
+ scope: message.turn_id ? "turn" : "session",
107
+ code: "runtime_interrupted",
108
+ message: "Agent execution was interrupted before completion.",
109
+ recoverable: true,
110
+ }],
111
+ };
112
+ const changed_parts = resolve_changed_agent_parts(message, recovered);
113
+ await this.store.update_message({
114
+ message: recovered,
115
+ expected_revision: message.revision,
116
+ changed_parts,
117
+ });
118
+ this.accept_message(recovered, false);
59
119
  }
60
120
  }
61
121
  /** 同步读取当前内存 Message。 */
62
122
  get_message(message_id) {
63
123
  return this.messages_by_id.get(message_id);
64
124
  }
65
- /** 追加普通 prompt 或 steering User Message。 */
125
+ /** 追加一条 canonical User Message。 */
66
126
  async append_user_message(input) {
127
+ const message_id = String(input.message_id || "").trim() ||
128
+ `user:${this.session_id}:${generate_id()}`;
67
129
  const message = await this.create_message((sequence, created_at) => ({
68
- message_id: String(input.message_id || "").trim() ||
69
- `user:${this.session_id}:${generate_id()}`,
130
+ message_id,
70
131
  session_id: this.session_id,
71
132
  turn_id: input.turn_id,
72
133
  sequence,
@@ -74,17 +135,19 @@ export class SessionMessages {
74
135
  visibility: input.visibility || "visible",
75
136
  created_at,
76
137
  updated_at: created_at,
77
- type: "user",
78
- input_type: input.input_type,
79
- parts: structuredClone(input.parts),
138
+ role: "user",
139
+ parts: normalize_canonical_session_user_parts(input.parts).map((part) => ({
140
+ ...part,
141
+ part_id: `${message_id}:part:${String(part.sequence)}`,
142
+ })),
80
143
  }));
81
144
  return message;
82
145
  }
83
146
  /** 创建可持续接收 chunk 的 Assistant Message。 */
84
- async open_assistant_message(input) {
147
+ async open_agent_message(input) {
85
148
  const message = (await this.create_message((sequence, created_at) => ({
86
149
  message_id: String(input.message_id || "").trim() ||
87
- `assistant:${this.session_id}:${generate_id()}`,
150
+ `agent:${this.session_id}:${generate_id()}`,
88
151
  session_id: this.session_id,
89
152
  turn_id: input.turn_id,
90
153
  sequence,
@@ -92,31 +155,27 @@ export class SessionMessages {
92
155
  visibility: input.visibility || "visible",
93
156
  created_at,
94
157
  updated_at: created_at,
95
- type: "assistant",
96
- kind: input.kind || "normal",
97
- status: "streaming",
158
+ role: "agent",
159
+ state: "streaming",
98
160
  parts: [],
99
- ...(input.summary_through_message_id
100
- ? { summary_through_message_id: input.summary_through_message_id }
101
- : {}),
102
161
  }), true));
103
- return new SessionAssistantMessageWriter(this, message.message_id);
162
+ return new SessionAgentMessageWriter(this, message.message_id);
104
163
  }
105
164
  /** 直接写入一条已完成 Assistant Message。 */
106
- async append_completed_assistant_message(input) {
165
+ async append_completed_agent_message(input) {
107
166
  const turn_id = input.turn_id || `external:${this.session_id}:${generate_id()}`;
108
- const writer = await this.open_assistant_message({
167
+ const writer = await this.open_agent_message({
109
168
  turn_id,
110
- kind: input.kind || "normal",
111
169
  visibility: input.visibility || "visible",
112
- ...(input.summary_through_message_id
113
- ? { summary_through_message_id: input.summary_through_message_id }
114
- : {}),
115
170
  });
116
171
  for (const part of input.parts)
117
172
  await writer.upsert_part(part);
118
173
  await writer.complete();
119
- return this.get_message(writer.message_id);
174
+ const message = await this.store.read_message(writer.message_id);
175
+ if (!message || message.role !== "agent") {
176
+ throw new Error(`Completed Agent Message not found: ${writer.message_id}`);
177
+ }
178
+ return message;
120
179
  }
121
180
  /** 把公开 Session API 的 User 输入转换为 canonical Message 并持久化。 */
122
181
  async append_external_user_message(input) {
@@ -129,20 +188,19 @@ export class SessionMessages {
129
188
  return false;
130
189
  await this.append_user_message({
131
190
  turn_id: `external:${this.session_id}:${Date.now()}`,
132
- input_type: "prompt",
133
191
  parts,
134
192
  });
135
193
  return true;
136
194
  }
137
195
  /** 把公开 Session API 的 Assistant 输入转换为 canonical Message 并持久化。 */
138
- async append_external_assistant_message(input) {
196
+ async append_external_agent_message(input) {
139
197
  const parts = input.parts || [{
140
198
  type: "text",
141
199
  text: String(input.text || "").trim(),
142
200
  }];
143
201
  if (!has_assistant_result_content(parts))
144
202
  return false;
145
- const writer = await this.open_assistant_message({
203
+ const writer = await this.open_agent_message({
146
204
  turn_id: `external:${this.session_id}:${Date.now()}`,
147
205
  });
148
206
  await writer.append_result_parts(parts);
@@ -157,31 +215,22 @@ export class SessionMessages {
157
215
  : await persist_user_prompt_file_parts(Array.isArray(query) ? query : [], this.attachment_store);
158
216
  const canonical = await this.append_user_message({
159
217
  turn_id: input.turn_id,
160
- input_type: input.input_type,
161
218
  parts: normalize_session_user_parts(ui_parts),
219
+ ...(input.message_id ? { message_id: input.message_id } : {}),
162
220
  });
163
221
  return canonical;
164
222
  }
165
- /** 持久化 Executor 在本轮延迟产生的 User Message。 */
166
- async append_deferred_user_messages(deferred_messages) {
167
- const messages = Array.isArray(deferred_messages)
168
- ? deferred_messages
169
- : [];
170
- for (const message of messages) {
171
- await this.append_user_message({
172
- turn_id: message.turn_id || `deferred:${this.session_id}:${Date.now()}`,
173
- input_type: "steer",
174
- parts: structuredClone(message.parts),
175
- });
176
- }
177
- return messages.length;
223
+ /** 读取指定 Turn 最近一条 canonical Agent Message。 */
224
+ async read_latest_agent_message(turn_id) {
225
+ return await this.store.read_latest_agent_message(turn_id);
178
226
  }
179
- /** 按稳定 Action ID 创建或更新 canonical Action Message。 */
227
+ /** 按稳定 Action ID 创建或更新只包含 Action Part 的 Agent Message。 */
180
228
  async persist_action(event, options) {
181
229
  const publish_mutation = options?.publish_mutation !== false;
182
- const existing = this.get_message(event.action_id);
230
+ const existing = this.get_message(event.action_id) ||
231
+ await this.store.read_message(event.action_id) || undefined;
183
232
  if (!existing) {
184
- const writer = await this.open_action_message({
233
+ const writer = await this.open_action_part({
185
234
  message_id: event.action_id,
186
235
  turn_id: event.turn_id,
187
236
  action_type: event.action_type,
@@ -196,18 +245,19 @@ export class SessionMessages {
196
245
  }
197
246
  return;
198
247
  }
199
- if (existing.type === "action" && event.status !== "running") {
200
- await this.update_action_message(event.action_id, event.status, {
248
+ if (existing.role === "agent" && event.status !== "running") {
249
+ await this.update_action_part(event.action_id, event.status, {
201
250
  title: event.title,
202
251
  description: event.description,
203
252
  }, { publish_mutation });
204
253
  }
205
254
  }
206
- /** 创建 running Action Message。 */
207
- async open_action_message(input) {
255
+ /** 创建只包含 running Action Part 的 Agent Message。 */
256
+ async open_action_part(input) {
257
+ const message_id = String(input.message_id || "").trim() ||
258
+ `agent-action:${this.session_id}:${generate_id()}`;
208
259
  const message = (await this.create_message((sequence, created_at) => ({
209
- message_id: String(input.message_id || "").trim() ||
210
- `action:${this.session_id}:${generate_id()}`,
260
+ message_id,
211
261
  session_id: this.session_id,
212
262
  ...(input.turn_id ? { turn_id: input.turn_id } : {}),
213
263
  sequence,
@@ -215,39 +265,105 @@ export class SessionMessages {
215
265
  visibility: "visible",
216
266
  created_at,
217
267
  updated_at: created_at,
218
- type: "action",
219
- action_type: input.action_type,
220
- status: "running",
221
- title: input.title,
222
- ...(input.description ? { description: input.description } : {}),
223
- ...(input.data ? { data: structuredClone(input.data) } : {}),
268
+ role: "agent",
269
+ state: "streaming",
270
+ parts: [{
271
+ part_id: `action-part:${message_id}`,
272
+ sequence: 1,
273
+ type: "action",
274
+ action_id: message_id,
275
+ action_type: input.action_type,
276
+ state: "running",
277
+ title: input.title,
278
+ ...(input.description ? { description: input.description } : {}),
279
+ ...(input.data ? { data: structuredClone(input.data) } : {}),
280
+ }],
224
281
  }), false, input.publish_mutation !== false));
225
- return new SessionActionMessageWriter(this, message.message_id, input.publish_mutation !== false);
282
+ return new SessionAgentActionPartWriter(this, message.message_id, input.publish_mutation !== false);
226
283
  }
227
284
  /** 更新 Action 状态,同时保持 message_id 与 sequence 不变。 */
228
- async update_action_message(message_id, status, changes, options) {
229
- const message = await this.store.append_message((state) => {
230
- const current = require_message(state.messages, message_id, "action");
231
- const created_at = Date.now();
232
- return {
233
- ...current,
234
- status,
235
- ...(changes?.title ? { title: changes.title } : {}),
236
- ...(changes?.description !== undefined
237
- ? { description: changes.description }
238
- : {}),
239
- ...(changes?.data ? { data: structuredClone(changes.data) } : {}),
240
- revision: current.revision + 1,
241
- updated_at: created_at,
242
- };
285
+ async update_action_part(message_id, status, changes, options) {
286
+ const current_message = require_message([
287
+ this.get_message(message_id) || await this.store.read_message(message_id),
288
+ ].filter((message) => Boolean(message)), message_id, "agent");
289
+ const action = current_message.parts.find((part) => part.type === "action");
290
+ if (!action)
291
+ throw new Error(`Session Action Part not found: ${message_id}`);
292
+ const next_action = {
293
+ ...action,
294
+ state: status,
295
+ ...(changes?.title ? { title: changes.title } : {}),
296
+ ...(changes?.description !== undefined
297
+ ? { description: changes.description }
298
+ : {}),
299
+ ...(changes?.data ? { data: structuredClone(changes.data) } : {}),
300
+ };
301
+ const message = {
302
+ ...current_message,
303
+ state: status === "running" ? "streaming" : "done",
304
+ parts: current_message.parts.map((part) => part.part_id === action.part_id ? next_action : part),
305
+ revision: current_message.revision + 1,
306
+ updated_at: Date.now(),
307
+ };
308
+ await this.store.update_message({
309
+ message,
310
+ expected_revision: current_message.revision,
311
+ changed_parts: [next_action],
243
312
  });
244
313
  this.accept_message(message, options?.publish_mutation !== false);
245
314
  return message;
246
315
  }
247
- /** 创建用户可见 Error Message。 */
248
- async append_error_message(input) {
316
+ /**
317
+ * Error Part 追加到当前 Turn 最后一个 Agent Message。
318
+ *
319
+ * 同一错误码已经存在时保持幂等;只有当前 Turn 从未产生 Agent Message 时,才创建
320
+ * 一个仅含 Error 的失败 Message。这样错误与已经产生的 Text、Tool 和 Diff 始终
321
+ * 共享同一 Message,并由 Part sequence 表达真实顺序。
322
+ */
323
+ async append_error_part(input) {
324
+ await this.ensure_initialized();
325
+ const target = await this.store.read_latest_agent_message(input.turn_id);
326
+ const existing_error = target?.parts.find((part) => part.type === "error" && part.code === input.code);
327
+ if (target && existing_error) {
328
+ return target;
329
+ }
330
+ const error_part = {
331
+ part_id: `error:${generate_id()}`,
332
+ sequence: target
333
+ ? target.parts.reduce((sequence, part) => Math.max(sequence, part.sequence + 1), 1)
334
+ : 1,
335
+ type: "error",
336
+ scope: input.scope,
337
+ code: input.code,
338
+ message: input.message,
339
+ recoverable: input.recoverable,
340
+ };
341
+ if (target?.state === "streaming") {
342
+ this.remember_message(target);
343
+ await this.agent_state.commit_parts(target.message_id, [error_part]);
344
+ const updated = await this.store.read_message(target.message_id);
345
+ if (!updated || updated.role !== "agent") {
346
+ throw new Error(`Agent Message not found after Error Part commit: ${target.message_id}`);
347
+ }
348
+ return updated;
349
+ }
350
+ if (target) {
351
+ const message = {
352
+ ...target,
353
+ revision: target.revision + 1,
354
+ updated_at: Date.now(),
355
+ parts: [...target.parts, error_part].sort((left, right) => left.sequence - right.sequence),
356
+ };
357
+ await this.store.update_message({
358
+ message,
359
+ expected_revision: target.revision,
360
+ changed_parts: [error_part],
361
+ });
362
+ this.accept_message(message);
363
+ return message;
364
+ }
249
365
  return (await this.create_message((sequence, created_at) => ({
250
- message_id: `error:${this.session_id}:${generate_id()}`,
366
+ message_id: `agent:${this.session_id}:${generate_id()}`,
251
367
  session_id: this.session_id,
252
368
  ...(input.turn_id ? { turn_id: input.turn_id } : {}),
253
369
  sequence,
@@ -255,80 +371,50 @@ export class SessionMessages {
255
371
  visibility: "visible",
256
372
  created_at,
257
373
  updated_at: created_at,
258
- type: "error",
259
- scope: input.scope,
260
- code: input.code,
261
- message: input.message,
262
- recoverable: input.recoverable,
374
+ role: "agent",
375
+ state: "done",
376
+ parts: [error_part],
263
377
  })));
264
378
  }
265
- /** 读取 Active 或指定边界之前最近的完整 Segment。 */
379
+ /** Message sequence 返回一页完整 Message 聚合。 */
266
380
  async list_messages(input) {
267
381
  await this.ensure_initialized();
268
- const requests_segment = input?.before_sequence !== undefined;
269
382
  const before_sequence = input?.before_sequence;
270
- if (requests_segment &&
383
+ if (before_sequence !== undefined &&
271
384
  (!Number.isInteger(before_sequence) || Number(before_sequence) <= 0)) {
272
385
  throw new Error("before_sequence must be a positive integer");
273
386
  }
274
- const segment = requests_segment
275
- ? await this.store.read_segment_before(Number(before_sequence))
276
- : null;
277
- const source = requests_segment ? "segment" : "active";
278
- const messages = requests_segment
279
- ? segment?.messages || []
280
- : [...this.messages_by_id.values()].sort(compare_message_sequence);
387
+ const limit = Math.min(Math.max(input?.limit ?? 50, 1), 200);
388
+ const page = await this.store.list_message_page({
389
+ ...(before_sequence !== undefined ? { before_sequence } : {}),
390
+ limit: limit + 1,
391
+ include_internal: input?.include_internal === true,
392
+ });
393
+ const has_more = page.length > limit;
394
+ const messages = has_more ? page.slice(1) : page;
281
395
  const start_sequence = messages[0]?.sequence;
282
396
  const end_sequence = messages.at(-1)?.sequence;
283
- const history_boundary = source === "segment"
284
- ? segment?.range.start_sequence
285
- : await this.store.active_before_sequence(messages);
286
- const has_more = history_boundary !== undefined &&
287
- await this.store.has_segment_before(history_boundary);
288
- const stats = await this.store.stats();
289
- const items = messages
290
- .filter((message) => input?.include_internal === true || message.visibility === "visible")
291
- .map((message) => structuredClone(message));
397
+ const stats = await this.store.message_stats();
292
398
  return {
293
- items,
399
+ items: messages.map((message) => structuredClone(message)),
294
400
  total: stats.message_count,
295
- source,
296
401
  ...(start_sequence !== undefined ? { start_sequence } : {}),
297
402
  ...(end_sequence !== undefined ? { end_sequence } : {}),
298
- ...(has_more && history_boundary !== undefined
299
- ? { next_before_sequence: history_boundary }
403
+ ...(has_more && start_sequence !== undefined
404
+ ? { next_before_sequence: start_sequence }
300
405
  : {}),
301
406
  has_more,
302
407
  };
303
408
  }
304
- /** 读取最新累计 Summary 与全部 Active Message,供模型上下文使用。 */
305
- async context_snapshot() {
306
- await this.ensure_initialized();
307
- return {
308
- summary: await this.store.read_latest_summary(),
309
- messages: [...this.messages_by_id.values()]
310
- .sort(compare_message_sequence)
311
- .map((message) => structuredClone(message)),
312
- };
313
- }
314
409
  /** 读取全部真实历史,供 Fork 等明确的全量复制操作使用。 */
315
410
  async list_history_messages() {
316
411
  await this.ensure_initialized();
317
- return await this.store.list_history_messages();
412
+ return await this.store.list_messages();
318
413
  }
319
414
  /** 读取当前 Session 的存储统计。 */
320
415
  async storage_stats() {
321
416
  await this.ensure_initialized();
322
- return await this.store.stats();
323
- }
324
- /** 把 Active 前缀和累计 Summary 提交为不可变 Segment。 */
325
- async compact_active(input) {
326
- await this.ensure_initialized();
327
- const result = await this.store.compact_active(input);
328
- this.messages_by_id.clear();
329
- for (const message of result.active_messages) {
330
- this.messages_by_id.set(message.message_id, structuredClone(message));
331
- }
417
+ return await this.store.message_stats();
332
418
  }
333
419
  /** 向当前 Session 导入 fork 来源 Message,并重新分配全部身份和顺序。 */
334
420
  async import_messages(messages) {
@@ -338,7 +424,7 @@ export class SessionMessages {
338
424
  const turn_id = source.turn_id
339
425
  ? resolve_import_id(turn_ids, source.turn_id, "turn")
340
426
  : undefined;
341
- const message_id = resolve_import_id(message_ids, source.message_id, source.type);
427
+ const message_id = resolve_import_id(message_ids, source.message_id, source.role);
342
428
  await this.create_message((sequence, created_at) => ({
343
429
  ...structuredClone(source),
344
430
  message_id,
@@ -356,303 +442,75 @@ export class SessionMessages {
356
442
  }));
357
443
  }
358
444
  }
359
- /** @internal 写入 Assistant 原始文本 delta。 */
360
- async append_assistant_delta(message_id, part_id, type, delta) {
361
- if (!delta)
362
- return;
363
- await this.enqueue_assistant_write(message_id, async () => {
364
- await this.append_assistant_delta_serialized(message_id, part_id, type, delta);
365
- });
445
+ /** @internal 只向运行投影追加 Agent 文本 delta。 */
446
+ project_agent_delta(message_id, part_id, type, delta) {
447
+ this.agent_state.project_delta(message_id, part_id, type, delta);
366
448
  }
367
- /** Assistant 写队列内追加文本 delta。 */
368
- async append_assistant_delta_serialized(message_id, part_id, type, delta) {
369
- const current = require_message([...this.messages_by_id.values()], message_id, "assistant");
370
- require_streaming_assistant(current);
371
- const part = current.parts.find((item) => item.part_id === part_id);
372
- if (!part || (part.type !== "text" && part.type !== "reasoning")) {
373
- throw new Error(`Delta target Part does not exist: ${part_id}`);
374
- }
375
- if (part.type !== type)
376
- throw new Error(`Delta type changed for Part: ${part_id}`);
377
- const created_at = Date.now();
378
- const message = {
379
- ...current,
380
- revision: current.revision + 1,
381
- updated_at: created_at,
382
- parts: current.parts.map((item) => item.part_id === part_id && (item.type === "text" || item.type === "reasoning")
383
- ? { ...item, text: item.text + delta }
384
- : item),
385
- };
386
- await this.store.write_assistant_message(message);
387
- this.accept_mutation({
388
- mutation_id: generate_id(),
389
- variant: "delta",
390
- type,
391
- message_id,
392
- revision: message.revision,
393
- session_id: this.session_id,
394
- turn_id: message.turn_id,
395
- created_at,
396
- part_id,
397
- delta,
398
- }, message);
449
+ /** @internal 只向运行投影追加 Agent Tool 输入 delta。 */
450
+ project_agent_tool_input_delta(message_id, part_id, tool_call_id, delta) {
451
+ this.agent_state.project_delta(message_id, part_id, "tool_input", delta, tool_call_id);
399
452
  }
400
- /** @internal 写入 Assistant Tool 输入原始 delta。 */
401
- async append_assistant_tool_input_delta(message_id, part_id, tool_call_id, delta) {
402
- if (!delta)
403
- return;
404
- await this.enqueue_assistant_write(message_id, async () => {
405
- const current = require_message([...this.messages_by_id.values()], message_id, "assistant");
406
- require_streaming_assistant(current);
407
- const part = current.parts.find((item) => item.part_id === part_id);
408
- if (!part || part.type !== "tool") {
409
- throw new Error(`Tool input Delta target Part does not exist: ${part_id}`);
410
- }
411
- if (part.tool_call_id !== tool_call_id) {
412
- throw new Error(`Tool input Delta tool_call_id changed for Part: ${part_id}`);
413
- }
414
- if (part.state !== "input-streaming") {
415
- throw new Error(`Tool input Delta cannot update ${part.state} Part: ${part_id}`);
416
- }
417
- const created_at = Date.now();
418
- const message = {
419
- ...current,
420
- revision: current.revision + 1,
421
- updated_at: created_at,
422
- parts: current.parts.map((item) => item.part_id === part_id && item.type === "tool"
423
- ? { ...item, input_text: `${item.input_text || ""}${delta}` }
424
- : item),
425
- };
426
- await this.store.write_assistant_message(message);
427
- this.accept_mutation({
428
- mutation_id: generate_id(),
429
- variant: "delta",
430
- type: "tool_input",
431
- message_id,
432
- revision: message.revision,
433
- session_id: this.session_id,
434
- turn_id: message.turn_id,
435
- created_at,
436
- part_id,
437
- tool_call_id,
438
- delta,
439
- }, message);
440
- });
453
+ /** @internal 只向运行投影写入 Agent 完整 Part。 */
454
+ project_agent_part(message_id, part) {
455
+ this.agent_state.project_part(message_id, part);
441
456
  }
442
- /** @internal 写入 Assistant 完整 part。 */
443
- async update_assistant_part(message_id, part) {
444
- await this.enqueue_assistant_write(message_id, async () => {
445
- await this.update_assistant_part_serialized(message_id, part);
446
- });
457
+ /** @internal 原子提交当前运行投影。 */
458
+ async checkpoint_agent_message(message_id) {
459
+ await this.agent_state.checkpoint(message_id);
447
460
  }
448
- /** Assistant 写队列内提交完整 Part 快照。 */
449
- async update_assistant_part_serialized(message_id, part) {
450
- const current = require_message([...this.messages_by_id.values()], message_id, "assistant");
451
- require_streaming_assistant(current);
452
- const existing = current.parts.find((item) => item.part_id === part.part_id);
453
- if (existing && existing.sequence !== part.sequence) {
454
- throw new Error(`Assistant Part sequence changed: ${part.part_id}`);
455
- }
456
- const created_at = Date.now();
457
- const next_part = structuredClone(part);
458
- const message = {
459
- ...current,
460
- revision: current.revision + 1,
461
- updated_at: created_at,
462
- parts: (existing
463
- ? current.parts.map((item) => item.part_id === part.part_id ? next_part : item)
464
- : [...current.parts, next_part]).sort((left, right) => left.sequence - right.sequence),
465
- };
466
- await this.store.write_assistant_message(message);
467
- this.accept_mutation({
468
- mutation_id: generate_id(),
469
- variant: "part",
470
- type: next_part.type,
471
- message_id,
472
- revision: message.revision,
473
- session_id: this.session_id,
474
- turn_id: message.turn_id,
475
- created_at,
476
- part_id: next_part.part_id,
477
- part: next_part,
478
- }, message);
461
+ /** @internal 原子提交一组非流式 Agent Parts。 */
462
+ async commit_agent_parts(message_id, parts) {
463
+ await this.agent_state.commit_parts(message_id, parts);
464
+ }
465
+ /** @internal 丢弃未提交的当前 Step 投影。 */
466
+ async rollback_agent_projection(message_id) {
467
+ await this.agent_state.rollback_projection(message_id);
479
468
  }
480
469
  /** @internal 原子提交当前 Assistant step 的 metadata 快照。 */
481
- async commit_assistant_step(message_id, parts) {
482
- await this.enqueue_assistant_write(message_id, async () => {
483
- const current = require_message([...this.messages_by_id.values()], message_id, "assistant");
484
- require_streaming_assistant(current);
485
- if (parts.length !== current.parts.length ||
486
- parts.some((part, index) => part.part_id !== current.parts[index]?.part_id ||
487
- part.sequence !== current.parts[index]?.sequence)) {
488
- throw new Error(`Assistant step changed canonical Part identity: ${message_id}`);
489
- }
490
- const created_at = Date.now();
491
- const message = {
492
- ...current,
493
- revision: current.revision + 1,
494
- updated_at: created_at,
495
- parts: structuredClone(parts),
496
- };
497
- await this.store.write_assistant_message(message);
498
- this.accept_message(message);
499
- });
470
+ async commit_agent_step(message_id, parts) {
471
+ await this.agent_state.commit_step(message_id, parts);
500
472
  }
501
473
  /** @internal 收口 Assistant Message。 */
502
- async complete_assistant_message(message_id, status, error) {
503
- await this.enqueue_assistant_write(message_id, async () => {
504
- await this.complete_assistant_message_serialized(message_id, status, error);
505
- });
506
- }
507
- /** 在 Assistant 写队列内关闭草稿并写入 Active。 */
508
- async complete_assistant_message_serialized(message_id, status, error) {
509
- const current = require_message([...this.messages_by_id.values()], message_id, "assistant");
510
- require_streaming_assistant(current);
511
- const created_at = Date.now();
512
- const interrupted_interactions = status === "stopped"
513
- ? current.parts.filter((part) => part.type === "interaction" && part.status === "pending")
514
- : [];
515
- const interrupted_tool_ids = new Set(interrupted_interactions.flatMap((part) => part.request.source.tool_call_id
516
- ? [part.request.source.tool_call_id]
517
- : []));
518
- const message = {
519
- ...current,
520
- revision: current.revision + 1,
521
- status,
522
- updated_at: created_at,
523
- parts: current.parts.map((part) => {
524
- if (part.type === "text" || part.type === "reasoning") {
525
- return { ...part, state: "done" };
526
- }
527
- if (part.type === "interaction" && part.status === "pending") {
528
- return {
529
- ...part,
530
- status: "cancelled",
531
- cancel_reason: "runtime_interrupted",
532
- resolved_at: created_at,
533
- };
534
- }
535
- if (part.type === "tool" &&
536
- part.state !== "completed" &&
537
- part.state !== "failed") {
538
- return {
539
- ...part,
540
- state: "failed",
541
- error: status === "stopped" &&
542
- part.state === "waiting-user" &&
543
- interrupted_tool_ids.has(part.tool_call_id)
544
- ? "Interaction cancelled"
545
- : error || "Tool did not complete before Assistant Message closed",
546
- };
547
- }
548
- return part;
549
- }),
550
- };
551
- await this.store.finalize_assistant_message(message);
552
- this.accept_message(message);
474
+ async complete_agent_message(message_id, status, error) {
475
+ await this.agent_state.complete(message_id, status, error);
553
476
  }
554
477
  async create_message(factory, draft = false, publish_mutation = true) {
555
478
  await this.ensure_initialized();
556
- if (draft) {
557
- const message = await this.store.create_assistant_message((state) => {
558
- const candidate = factory(state.message_sequence, Date.now());
559
- if (candidate.type !== "assistant" || candidate.status !== "streaming") {
560
- throw new Error("Draft Message must be a streaming Assistant");
561
- }
562
- return candidate;
563
- });
564
- this.accept_message(message, publish_mutation);
565
- return message;
566
- }
567
- const message = await this.store.append_message((state) => factory(state.message_sequence, Date.now()));
479
+ const message = await this.store.create_message((state) => {
480
+ const candidate = factory(state.message_sequence, Date.now());
481
+ if (draft && (candidate.role !== "agent" || candidate.state !== "streaming")) {
482
+ throw new Error("Draft Message must be a streaming Agent Message");
483
+ }
484
+ return candidate;
485
+ });
568
486
  this.accept_message(message, publish_mutation);
569
487
  return message;
570
488
  }
571
489
  /** 读取当前流式 Assistant 中的指定 Tool Part。 */
572
490
  find_streaming_tool(tool_call_id) {
573
- for (const message of this.messages_by_id.values()) {
574
- if (message.type !== "assistant" || message.status !== "streaming")
575
- continue;
576
- const part = message.parts.find((item) => item.type === "tool" && item.tool_call_id === tool_call_id);
577
- if (part)
578
- return { message_id: message.message_id, part };
579
- }
580
- return undefined;
491
+ return this.agent_state.find_streaming_tool(tool_call_id);
581
492
  }
582
493
  /** 返回当前 Session 中全部等待用户响应的 canonical Interaction。 */
583
494
  list_pending_interactions() {
584
- return this.interaction_writer.list_pending();
495
+ return this.agent_state.list_pending_interactions();
585
496
  }
586
497
  /** 原子创建 Interaction,并把关联 Tool 转为 waiting-user。 */
587
498
  async request_interaction(request) {
588
- return this.interaction_writer.request(request);
499
+ return await this.agent_state.request_interaction(request);
589
500
  }
590
501
  /** 原子保存用户响应,并按 Interaction 结果恢复或终止关联 Tool。 */
591
502
  async resolve_interaction(interaction_id, response) {
592
- return this.interaction_writer.resolve(interaction_id, response);
503
+ return await this.agent_state.resolve_interaction(interaction_id, response);
593
504
  }
594
505
  /** 原子结束未响应 Interaction,并把关联 Tool 标记为失败。 */
595
506
  async close_interaction(interaction_id, input) {
596
- return this.interaction_writer.close(interaction_id, input);
597
- }
598
- /**
599
- * 串行执行同一 Assistant Message 的完整写事务。
600
- *
601
- * 失败事务不会阻塞后续写入;链尾仅用于排序,真实错误仍返回给调用方。
602
- */
603
- async enqueue_assistant_write(message_id, operation) {
604
- const previous = this.assistant_write_chains.get(message_id) || Promise.resolve();
605
- const result = previous.then(operation, operation);
606
- const chain = result.then(() => undefined, () => undefined);
607
- this.assistant_write_chains.set(message_id, chain);
608
- try {
609
- return await result;
610
- }
611
- finally {
612
- if (this.assistant_write_chains.get(message_id) === chain) {
613
- this.assistant_write_chains.delete(message_id);
614
- }
615
- }
616
- }
617
- /** 原子提交包含多个 Part 状态变化的 Assistant 完整快照。 */
618
- async commit_assistant_snapshot(current, parts) {
619
- const created_at = Date.now();
620
- const message = {
621
- ...current,
622
- revision: current.revision + 1,
623
- updated_at: created_at,
624
- parts: structuredClone(parts).sort((left, right) => left.sequence - right.sequence),
625
- };
626
- await this.store.write_assistant_message(message);
627
- const current_by_id = new Map(current.parts.map((part) => [part.part_id, part]));
628
- const changed_parts = message.parts.filter((part) => {
629
- const previous = current_by_id.get(part.part_id);
630
- return !previous || JSON.stringify(previous) !== JSON.stringify(part);
631
- });
632
- if (changed_parts.length === 0) {
633
- this.accept_message(message);
634
- return;
635
- }
636
- for (const part of changed_parts) {
637
- this.accept_mutation({
638
- mutation_id: generate_id(),
639
- variant: "part",
640
- type: part.type,
641
- message_id: message.message_id,
642
- revision: message.revision,
643
- session_id: this.session_id,
644
- turn_id: message.turn_id,
645
- created_at,
646
- part_id: part.part_id,
647
- part: structuredClone(part),
648
- }, message);
649
- }
507
+ return await this.agent_state.close_interaction(interaction_id, input);
650
508
  }
651
509
  build_message_mutation(message) {
652
510
  return {
653
511
  mutation_id: generate_id(),
654
512
  variant: "message",
655
- type: message.type,
513
+ role: message.role,
656
514
  message_id: message.message_id,
657
515
  sequence: message.sequence,
658
516
  revision: message.revision,
@@ -664,102 +522,30 @@ export class SessionMessages {
664
522
  }
665
523
  accept_message(message, publish_mutation = true) {
666
524
  if (!publish_mutation) {
667
- this.messages_by_id.set(message.message_id, structuredClone(message));
525
+ this.remember_message(message);
668
526
  return;
669
527
  }
670
528
  this.accept_mutation(this.build_message_mutation(message), message);
671
529
  }
672
530
  accept_mutation(mutation, message) {
673
- this.messages_by_id.set(message.message_id, structuredClone(message));
531
+ this.remember_message(message);
674
532
  this.publish(mutation);
675
533
  }
676
- async ensure_initialized() {
677
- if (!this.initialized)
678
- await this.initialize();
679
- }
680
- }
681
- /** 单个 Action Message 的生命周期 writer。 */
682
- export class SessionActionMessageWriter {
683
- message_id;
684
- messages;
685
- publish_mutation;
686
- closed = false;
687
- constructor(messages, message_id, publish_mutation = true) {
688
- this.messages = messages;
689
- this.message_id = message_id;
690
- this.publish_mutation = publish_mutation;
691
- }
692
- /** 把 Action 更新为 completed。 */
693
- async complete(input) {
694
- if (this.closed)
695
- return;
696
- await this.messages.update_action_message(this.message_id, "completed", input, { publish_mutation: this.publish_mutation });
697
- this.closed = true;
534
+ /** 仅缓存可变的 streaming Agent Message;终态历史始终读取 SQLite。 */
535
+ remember_message(message) {
536
+ this.messages_by_id.delete(message.message_id);
537
+ if (message.role === "agent" && message.state === "streaming") {
538
+ this.messages_by_id.set(message.message_id, structuredClone(message));
539
+ }
698
540
  }
699
- /** Action 更新为 failed。 */
700
- async fail(error) {
701
- if (this.closed)
702
- return;
703
- await this.messages.update_action_message(this.message_id, "failed", {
704
- description: error instanceof Error ? error.message : String(error),
705
- }, { publish_mutation: this.publish_mutation });
706
- this.closed = true;
541
+ async ensure_initialized() {
542
+ await this.initialize();
707
543
  }
708
544
  }
709
- /** Downcity Session User parts 归一为 canonical User parts。 */
710
- export function normalize_session_user_parts(parts) {
711
- if (!Array.isArray(parts))
712
- return [];
713
- return parts.flatMap((part, index) => {
714
- if (part.type === "text") {
715
- return [{
716
- part_id: `user-text:${index + 1}`,
717
- type: "text",
718
- text: part.text,
719
- state: "done",
720
- }];
721
- }
722
- if (part.type === "file") {
723
- return [{
724
- part_id: `user-file:${index + 1}`,
725
- type: "file",
726
- url: part.url,
727
- media_type: part.media_type,
728
- ...(part.filename ? { filename: part.filename } : {}),
729
- }];
730
- }
731
- return [{
732
- part_id: `user-data:${index + 1}`,
733
- type: "data",
734
- data_type: part.data_type,
735
- data: to_session_json_value(part.data),
736
- ...(part.data_id ? { data_id: part.data_id } : {}),
737
- }];
738
- });
739
- }
740
- /** 判断 Assistant 结果中是否包含可持久化内容。 */
741
- function has_assistant_result_content(parts) {
742
- return parts.some((part) => {
743
- if (part.type === "text")
744
- return Boolean(part.text.trim());
745
- if (part.type === "file")
746
- return Boolean(part.media_type.trim() && part.url.trim());
747
- return Boolean(part.data_type.trim());
748
- });
749
- }
750
- function require_message(messages, message_id, type) {
545
+ function require_message(messages, message_id, role) {
751
546
  const message = messages.find((item) => item.message_id === message_id);
752
- if (!message || message.type !== type) {
753
- throw new Error(`Session ${type} Message not found: ${message_id}`);
754
- }
755
- return message;
756
- }
757
- function require_streaming_assistant(message) {
758
- if (message.type !== "assistant") {
759
- throw new Error(`Session Message is not assistant: ${message.message_id}`);
760
- }
761
- if (message.status !== "streaming") {
762
- throw new Error(`Assistant Message is already closed: ${message.message_id}`);
547
+ if (!message || message.role !== role) {
548
+ throw new Error(`Session ${role} Message not found: ${message_id}`);
763
549
  }
764
550
  return message;
765
551
  }
@@ -771,12 +557,9 @@ function resolve_import_id(map, source_id, prefix) {
771
557
  map.set(source_id, created);
772
558
  return created;
773
559
  }
774
- /** 从 Action Message ID 提取稳定业务类型。 */
775
- function infer_action_type(message_id) {
776
- return String(message_id || "").split(":")[0] || "action";
777
- }
778
560
  /** 按真实 Message sequence 升序排序。 */
779
- function compare_message_sequence(left, right) {
780
- return left.sequence - right.sequence;
561
+ function resolve_changed_agent_parts(current, next) {
562
+ const current_by_id = new Map(current.parts.map((part) => [part.part_id, JSON.stringify(part)]));
563
+ return next.parts.filter((part) => current_by_id.get(part.part_id) !== JSON.stringify(part));
781
564
  }
782
565
  //# sourceMappingURL=SessionMessages.js.map