@downcity/agent 1.1.237 → 1.1.258

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 (578) hide show
  1. package/README.md +21 -20
  2. package/bin/agent/{local/Agent.d.ts → Agent.d.ts} +37 -27
  3. package/bin/agent/Agent.d.ts.map +1 -0
  4. package/bin/agent/Agent.js +211 -0
  5. package/bin/agent/Agent.js.map +1 -0
  6. package/bin/agent/AgentContext.d.ts +64 -0
  7. package/bin/agent/AgentContext.d.ts.map +1 -0
  8. package/bin/agent/AgentContext.js +53 -0
  9. package/bin/agent/AgentContext.js.map +1 -0
  10. package/bin/agent/{local/AgentInstructions.d.ts → AgentInstructions.d.ts} +1 -6
  11. package/bin/agent/AgentInstructions.d.ts.map +1 -0
  12. package/bin/agent/{local/AgentInstructions.js → AgentInstructions.js} +1 -10
  13. package/bin/agent/AgentInstructions.js.map +1 -0
  14. package/bin/{model/CityModelAdapter.d.ts → agent/AgentModel.d.ts} +3 -3
  15. package/bin/agent/AgentModel.d.ts.map +1 -0
  16. package/bin/{model/CityModelAdapter.js → agent/AgentModel.js} +11 -4
  17. package/bin/agent/AgentModel.js.map +1 -0
  18. package/bin/agent/{local/services/AgentSessions.d.ts → AgentSessions.d.ts} +30 -40
  19. package/bin/agent/AgentSessions.d.ts.map +1 -0
  20. package/bin/agent/{local/services/AgentSessions.js → AgentSessions.js} +62 -79
  21. package/bin/agent/AgentSessions.js.map +1 -0
  22. package/bin/agent/AgentState.d.ts +64 -0
  23. package/bin/agent/AgentState.d.ts.map +1 -0
  24. package/bin/agent/AgentState.js +118 -0
  25. package/bin/agent/AgentState.js.map +1 -0
  26. package/bin/config/Paths.d.ts +0 -43
  27. package/bin/config/Paths.d.ts.map +1 -1
  28. package/bin/config/Paths.js +0 -79
  29. package/bin/config/Paths.js.map +1 -1
  30. package/bin/config/ProjectSetup.d.ts.map +1 -0
  31. package/bin/{agent/local → config}/ProjectSetup.js +1 -1
  32. package/bin/config/ProjectSetup.js.map +1 -0
  33. package/bin/executor/Executor.d.ts +20 -86
  34. package/bin/executor/Executor.d.ts.map +1 -1
  35. package/bin/executor/Executor.js +109 -260
  36. package/bin/executor/Executor.js.map +1 -1
  37. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +1 -1
  38. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +1 -1
  39. package/bin/executor/composer/system/default/SystemDomain.d.ts +1 -1
  40. package/bin/executor/composer/system/default/SystemDomain.d.ts.map +1 -1
  41. package/bin/executor/composer/system/default/SystemDomain.js +4 -1
  42. package/bin/executor/composer/system/default/SystemDomain.js.map +1 -1
  43. package/bin/executor/composer/system/default/assets/core.prompt.d.ts +1 -1
  44. package/bin/executor/composer/system/default/assets/core.prompt.d.ts.map +1 -1
  45. package/bin/executor/composer/system/default/assets/core.prompt.js +1 -1
  46. package/bin/executor/composer/system/default/assets/core.prompt.js.map +1 -1
  47. package/bin/executor/core-engine/CoreEngineRunner.d.ts +7 -13
  48. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
  49. package/bin/executor/core-engine/CoreEngineRunner.js +81 -34
  50. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
  51. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +6 -12
  52. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -1
  53. package/bin/executor/services/ExecutorRecoveryPolicy.js +20 -6
  54. package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -1
  55. package/bin/executor/tools/file/ReadImageToolBridge.d.ts +21 -0
  56. package/bin/executor/tools/file/ReadImageToolBridge.d.ts.map +1 -0
  57. package/bin/executor/tools/file/ReadImageToolBridge.js +69 -0
  58. package/bin/executor/tools/file/ReadImageToolBridge.js.map +1 -0
  59. package/bin/executor/tools/plugin/PluginToolBridge.d.ts.map +1 -1
  60. package/bin/executor/tools/plugin/PluginToolBridge.js +6 -5
  61. package/bin/executor/tools/plugin/PluginToolBridge.js.map +1 -1
  62. package/bin/executor/tools/plugin/PluginToolDefinition.d.ts.map +1 -1
  63. package/bin/executor/tools/plugin/PluginToolDefinition.js +15 -2
  64. package/bin/executor/tools/plugin/PluginToolDefinition.js.map +1 -1
  65. package/bin/executor/types/SessionHistoryMeta.d.ts +0 -2
  66. package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
  67. package/bin/index.d.ts +17 -21
  68. package/bin/index.d.ts.map +1 -1
  69. package/bin/index.js +9 -11
  70. package/bin/index.js.map +1 -1
  71. package/bin/plugin/core/ActionScheduleExecutor.d.ts +1 -1
  72. package/bin/plugin/core/ActionScheduleExecutor.d.ts.map +1 -1
  73. package/bin/plugin/core/ActionScheduleRuntime.d.ts +1 -1
  74. package/bin/plugin/core/ActionScheduleRuntime.d.ts.map +1 -1
  75. package/bin/plugin/core/BasePlugin.d.ts +4 -3
  76. package/bin/plugin/core/BasePlugin.d.ts.map +1 -1
  77. package/bin/plugin/core/BasePlugin.js.map +1 -1
  78. package/bin/plugin/core/HookRegistry.d.ts +5 -8
  79. package/bin/plugin/core/HookRegistry.d.ts.map +1 -1
  80. package/bin/plugin/core/HookRegistry.js +12 -12
  81. package/bin/plugin/core/HookRegistry.js.map +1 -1
  82. package/bin/plugin/core/PluginActionFactory.d.ts +6 -3
  83. package/bin/plugin/core/PluginActionFactory.d.ts.map +1 -1
  84. package/bin/plugin/core/PluginActionFactory.js.map +1 -1
  85. package/bin/plugin/core/PluginActionRunner.d.ts +1 -1
  86. package/bin/plugin/core/PluginActionRunner.d.ts.map +1 -1
  87. package/bin/plugin/core/PluginCatalog.d.ts +1 -1
  88. package/bin/plugin/core/PluginCatalog.d.ts.map +1 -1
  89. package/bin/plugin/core/PluginHttpRoutes.d.ts +1 -1
  90. package/bin/plugin/core/PluginHttpRoutes.d.ts.map +1 -1
  91. package/bin/plugin/core/PluginLocalExecution.d.ts +4 -5
  92. package/bin/plugin/core/PluginLocalExecution.d.ts.map +1 -1
  93. package/bin/plugin/core/PluginLocalExecution.js +4 -12
  94. package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
  95. package/bin/plugin/core/PluginRegistry.d.ts +16 -12
  96. package/bin/plugin/core/PluginRegistry.d.ts.map +1 -1
  97. package/bin/plugin/core/PluginRegistry.js +43 -22
  98. package/bin/plugin/core/PluginRegistry.js.map +1 -1
  99. package/bin/plugin/core/PluginStateController.d.ts +1 -1
  100. package/bin/plugin/core/PluginStateController.d.ts.map +1 -1
  101. package/bin/{agent/remote → remote}/RemoteAgent.d.ts +4 -4
  102. package/bin/remote/RemoteAgent.d.ts.map +1 -0
  103. package/bin/{agent/remote → remote}/RemoteAgent.js +3 -3
  104. package/bin/remote/RemoteAgent.js.map +1 -0
  105. package/bin/{agent/remote → remote}/RemoteSession.d.ts +9 -11
  106. package/bin/remote/RemoteSession.d.ts.map +1 -0
  107. package/bin/{agent/remote → remote}/RemoteSession.js +3 -33
  108. package/bin/remote/RemoteSession.js.map +1 -0
  109. package/bin/{agent/remote → remote}/RemoteTransport.d.ts +7 -9
  110. package/bin/remote/RemoteTransport.d.ts.map +1 -0
  111. package/bin/remote/RemoteTransport.js.map +1 -0
  112. package/bin/{agent/remote → remote}/TransportFactory.d.ts +1 -1
  113. package/bin/remote/TransportFactory.d.ts.map +1 -0
  114. package/bin/{agent/remote → remote}/TransportFactory.js +2 -2
  115. package/bin/remote/TransportFactory.js.map +1 -0
  116. package/bin/{agent/remote → remote}/transports/HttpRemoteAgentTransport.d.ts +8 -9
  117. package/bin/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -0
  118. package/bin/{agent/remote → remote}/transports/HttpRemoteAgentTransport.js +0 -13
  119. package/bin/remote/transports/HttpRemoteAgentTransport.js.map +1 -0
  120. package/bin/{rpc/Client.d.ts → remote/transports/RpcClient.d.ts} +15 -22
  121. package/bin/remote/transports/RpcClient.d.ts.map +1 -0
  122. package/bin/{rpc/Client.js → remote/transports/RpcClient.js} +2 -13
  123. package/bin/remote/transports/RpcClient.js.map +1 -0
  124. package/bin/{agent/remote → remote}/transports/RpcRemoteAgentTransport.d.ts +8 -9
  125. package/bin/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -0
  126. package/bin/{agent/remote → remote}/transports/RpcRemoteAgentTransport.js +1 -4
  127. package/bin/remote/transports/RpcRemoteAgentTransport.js.map +1 -0
  128. package/bin/session/DefaultSessionComposer.d.ts +18 -0
  129. package/bin/session/DefaultSessionComposer.d.ts.map +1 -0
  130. package/bin/session/DefaultSessionComposer.js +62 -0
  131. package/bin/session/DefaultSessionComposer.js.map +1 -0
  132. package/bin/session/Session.d.ts +44 -33
  133. package/bin/session/Session.d.ts.map +1 -1
  134. package/bin/session/Session.js +440 -274
  135. package/bin/session/Session.js.map +1 -1
  136. package/bin/session/SessionMessages.d.ts +117 -0
  137. package/bin/session/SessionMessages.d.ts.map +1 -0
  138. package/bin/session/{recorder/SessionRecorder.js → SessionMessages.js} +194 -284
  139. package/bin/session/SessionMessages.js.map +1 -0
  140. package/bin/session/SessionQueue.d.ts +34 -0
  141. package/bin/session/SessionQueue.d.ts.map +1 -0
  142. package/bin/session/SessionQueue.js +60 -0
  143. package/bin/session/SessionQueue.js.map +1 -0
  144. package/bin/session/SessionState.d.ts +70 -0
  145. package/bin/session/SessionState.d.ts.map +1 -0
  146. package/bin/session/SessionState.js +267 -0
  147. package/bin/session/SessionState.js.map +1 -0
  148. package/bin/session/SessionSystem.d.ts +15 -0
  149. package/bin/session/SessionSystem.d.ts.map +1 -0
  150. package/bin/session/SessionSystem.js +95 -0
  151. package/bin/session/SessionSystem.js.map +1 -0
  152. package/bin/session/SessionTurn.d.ts +84 -0
  153. package/bin/session/SessionTurn.d.ts.map +1 -0
  154. package/bin/session/SessionTurn.js +588 -0
  155. package/bin/session/SessionTurn.js.map +1 -0
  156. package/bin/session/approval/SessionApprovalBroker.d.ts +48 -0
  157. package/bin/session/approval/SessionApprovalBroker.d.ts.map +1 -0
  158. package/bin/session/approval/SessionApprovalBroker.js +126 -0
  159. package/bin/session/approval/SessionApprovalBroker.js.map +1 -0
  160. package/bin/session/browse/Browse.d.ts.map +1 -1
  161. package/bin/session/browse/Browse.js +1 -4
  162. package/bin/session/browse/Browse.js.map +1 -1
  163. package/bin/session/{recorder → messages}/JsonlSessionMessageStore.d.ts.map +1 -1
  164. package/bin/session/{recorder → messages}/JsonlSessionMessageStore.js.map +1 -1
  165. package/bin/session/messages/SessionAssistantMessageWriter.d.ts +62 -0
  166. package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -0
  167. package/bin/session/messages/SessionAssistantMessageWriter.js +287 -0
  168. package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -0
  169. package/bin/session/messages/SessionJsonValue.d.ts +10 -0
  170. package/bin/session/messages/SessionJsonValue.d.ts.map +1 -0
  171. package/bin/session/messages/SessionJsonValue.js +23 -0
  172. package/bin/session/messages/SessionJsonValue.js.map +1 -0
  173. package/bin/session/{recorder → messages}/SessionMessageCodec.d.ts +4 -1
  174. package/bin/session/messages/SessionMessageCodec.d.ts.map +1 -0
  175. package/bin/session/{recorder → messages}/SessionMessageCodec.js +33 -19
  176. package/bin/session/messages/SessionMessageCodec.js.map +1 -0
  177. package/bin/session/messages/SessionMessageCompaction.d.ts +22 -0
  178. package/bin/session/messages/SessionMessageCompaction.d.ts.map +1 -0
  179. package/bin/session/{recorder/SessionRecorderCompaction.js → messages/SessionMessageCompaction.js} +19 -51
  180. package/bin/session/messages/SessionMessageCompaction.js.map +1 -0
  181. package/bin/session/runtime/SessionEventHub.d.ts +1 -8
  182. package/bin/session/runtime/SessionEventHub.d.ts.map +1 -1
  183. package/bin/session/runtime/SessionEventHub.js +1 -6
  184. package/bin/session/runtime/SessionEventHub.js.map +1 -1
  185. package/bin/session/storage/Metadata.d.ts +23 -5
  186. package/bin/session/storage/Metadata.d.ts.map +1 -1
  187. package/bin/session/storage/Metadata.js +32 -29
  188. package/bin/session/storage/Metadata.js.map +1 -1
  189. package/bin/session/storage/RuntimeSessionPort.d.ts +5 -10
  190. package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
  191. package/bin/session/storage/RuntimeSessionPort.js +2 -4
  192. package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
  193. package/bin/types/agent/AgentOptions.d.ts +6 -35
  194. package/bin/types/agent/AgentOptions.d.ts.map +1 -1
  195. package/bin/types/agent/AgentState.d.ts +28 -0
  196. package/bin/types/agent/AgentState.d.ts.map +1 -0
  197. package/bin/types/agent/AgentState.js +9 -0
  198. package/bin/types/agent/AgentState.js.map +1 -0
  199. package/bin/types/agent/SessionActor.d.ts +0 -2
  200. package/bin/types/agent/SessionActor.d.ts.map +1 -1
  201. package/bin/types/agent/SessionTypes.d.ts +5 -18
  202. package/bin/types/agent/SessionTypes.d.ts.map +1 -1
  203. package/bin/types/executor/SessionRunContext.d.ts +8 -2
  204. package/bin/types/executor/SessionRunContext.d.ts.map +1 -1
  205. package/bin/types/executor/SessionRunContext.js +1 -1
  206. package/bin/types/executor/SessionToolExecutionContext.d.ts +20 -0
  207. package/bin/types/executor/SessionToolExecutionContext.d.ts.map +1 -0
  208. package/bin/types/executor/SessionToolExecutionContext.js +10 -0
  209. package/bin/types/executor/SessionToolExecutionContext.js.map +1 -0
  210. package/bin/types/plugin/PluginAction.d.ts +10 -1
  211. package/bin/types/plugin/PluginAction.d.ts.map +1 -1
  212. package/bin/types/plugin/PluginCommand.d.ts +3 -11
  213. package/bin/types/plugin/PluginCommand.d.ts.map +1 -1
  214. package/bin/types/plugin/PluginConfig.d.ts +12 -0
  215. package/bin/types/plugin/PluginConfig.d.ts.map +1 -0
  216. package/bin/types/plugin/PluginConfig.js +5 -0
  217. package/bin/types/plugin/PluginConfig.js.map +1 -0
  218. package/bin/types/plugin/PluginDefinition.d.ts +10 -3
  219. package/bin/types/plugin/PluginDefinition.d.ts.map +1 -1
  220. package/bin/types/plugin/PluginHttp.d.ts +1 -1
  221. package/bin/types/plugin/PluginHttp.d.ts.map +1 -1
  222. package/bin/types/plugin/PluginRunContext.d.ts +26 -0
  223. package/bin/types/plugin/PluginRunContext.d.ts.map +1 -0
  224. package/bin/types/plugin/PluginRunContext.js +10 -0
  225. package/bin/types/plugin/PluginRunContext.js.map +1 -0
  226. package/bin/types/plugin/PluginRuntime.d.ts +9 -3
  227. package/bin/types/plugin/PluginRuntime.d.ts.map +1 -1
  228. package/bin/types/plugin/PluginToolRuntime.d.ts +11 -0
  229. package/bin/types/plugin/PluginToolRuntime.d.ts.map +1 -1
  230. package/bin/types/rpc/RpcProtocol.d.ts +1 -13
  231. package/bin/types/rpc/RpcProtocol.d.ts.map +1 -1
  232. package/bin/types/session/SessionApproval.d.ts +4 -38
  233. package/bin/types/session/SessionApproval.d.ts.map +1 -1
  234. package/bin/types/session/SessionApprovalBroker.d.ts +17 -0
  235. package/bin/types/session/SessionApprovalBroker.d.ts.map +1 -0
  236. package/bin/types/session/SessionApprovalBroker.js +7 -0
  237. package/bin/types/session/SessionApprovalBroker.js.map +1 -0
  238. package/bin/types/session/SessionComposer.d.ts +99 -0
  239. package/bin/types/session/SessionComposer.d.ts.map +1 -0
  240. package/bin/types/session/SessionComposer.js +8 -0
  241. package/bin/types/session/SessionComposer.js.map +1 -0
  242. package/bin/types/session/SessionLocalState.d.ts +6 -6
  243. package/bin/types/session/SessionLocalState.d.ts.map +1 -1
  244. package/bin/types/session/SessionLocalState.js +1 -1
  245. package/bin/types/session/SessionMessage.d.ts +3 -2
  246. package/bin/types/session/SessionMessage.d.ts.map +1 -1
  247. package/bin/types/session/SessionMessages.d.ts +115 -0
  248. package/bin/types/session/SessionMessages.d.ts.map +1 -0
  249. package/bin/types/session/SessionMessages.js +7 -0
  250. package/bin/types/session/SessionMessages.js.map +1 -0
  251. package/bin/types/session/SessionMutation.d.ts +1 -10
  252. package/bin/types/session/SessionMutation.d.ts.map +1 -1
  253. package/bin/types/session/SessionMutation.js.map +1 -1
  254. package/bin/types/session/SessionOptions.d.ts +8 -23
  255. package/bin/types/session/SessionOptions.d.ts.map +1 -1
  256. package/bin/types/session/SessionPort.d.ts +72 -0
  257. package/bin/types/session/SessionPort.d.ts.map +1 -0
  258. package/bin/types/session/SessionPort.js +9 -0
  259. package/bin/types/session/SessionPort.js.map +1 -0
  260. package/bin/types/session/SessionQueue.d.ts +104 -0
  261. package/bin/types/session/SessionQueue.d.ts.map +1 -0
  262. package/bin/types/session/SessionQueue.js +7 -0
  263. package/bin/types/session/SessionQueue.js.map +1 -0
  264. package/bin/types/session/SessionState.d.ts +43 -0
  265. package/bin/types/session/SessionState.d.ts.map +1 -0
  266. package/bin/types/session/SessionState.js +7 -0
  267. package/bin/types/session/SessionState.js.map +1 -0
  268. package/bin/types/session/SessionSystem.d.ts +26 -0
  269. package/bin/types/session/SessionSystem.d.ts.map +1 -0
  270. package/bin/types/session/SessionSystem.js +7 -0
  271. package/bin/types/session/SessionSystem.js.map +1 -0
  272. package/bin/types/session/SessionTool.d.ts +23 -0
  273. package/bin/types/session/SessionTool.d.ts.map +1 -0
  274. package/bin/types/session/SessionTool.js +7 -0
  275. package/bin/types/session/SessionTool.js.map +1 -0
  276. package/bin/types/session/SessionTurn.d.ts +52 -0
  277. package/bin/types/session/SessionTurn.d.ts.map +1 -0
  278. package/bin/types/session/SessionTurn.js +7 -0
  279. package/bin/types/session/SessionTurn.js.map +1 -0
  280. package/package.json +3 -3
  281. package/scripts/agent-env.test.mjs +4 -18
  282. package/scripts/agent-ready.test.mjs +33 -2
  283. package/scripts/agent-session-maintenance.test.mjs +52 -0
  284. package/scripts/city-model-tool-loop.test.mjs +3 -4
  285. package/scripts/core-engine-context-compaction.test.mjs +5 -22
  286. package/scripts/image-plugin-job.test.mjs +4 -6
  287. package/scripts/plugin-tool-bridge.test.mjs +44 -36
  288. package/scripts/read-image-tool-bridge.test.mjs +71 -0
  289. package/scripts/remote-session-reconnect.test.mjs +1 -34
  290. package/scripts/session-compaction-prompts.test.mjs +1 -49
  291. package/scripts/session-composer.test.mjs +163 -0
  292. package/scripts/session-config-turn-boundary.test.mjs +2 -5
  293. package/scripts/session-list-title.test.mjs +3 -2
  294. package/scripts/session-messages-error.test.mjs +57 -0
  295. package/scripts/{session-recorder.test.mjs → session-messages.test.mjs} +131 -90
  296. package/scripts/session-queue.test.mjs +64 -0
  297. package/scripts/session-shell-approval.test.mjs +171 -0
  298. package/scripts/session-system-blocks.test.mjs +10 -10
  299. package/scripts/session-title-event.test.mjs +1 -0
  300. package/src/agent/Agent.ts +241 -0
  301. package/src/agent/AgentContext.ts +92 -0
  302. package/src/agent/{local/AgentInstructions.ts → AgentInstructions.ts} +0 -11
  303. package/src/{model/CityModelAdapter.ts → agent/AgentModel.ts} +10 -3
  304. package/src/agent/{local/services/AgentSessions.ts → AgentSessions.ts} +81 -110
  305. package/src/agent/AgentState.ts +151 -0
  306. package/src/config/Paths.ts +0 -91
  307. package/src/executor/Executor.ts +180 -386
  308. package/src/executor/README.md +29 -89
  309. package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +1 -1
  310. package/src/executor/composer/system/default/SystemDomain.ts +4 -2
  311. package/src/executor/composer/system/default/assets/core.prompt.ts +1 -1
  312. package/src/executor/composer/system/default/assets/core.prompt.ts.txt +15 -2
  313. package/src/executor/core-engine/CoreEngineRunner.ts +95 -54
  314. package/src/executor/services/ExecutorRecoveryPolicy.ts +24 -19
  315. package/src/executor/tools/file/ReadImageToolBridge.ts +79 -0
  316. package/src/executor/tools/plugin/PluginToolBridge.ts +6 -8
  317. package/src/executor/tools/plugin/PluginToolDefinition.ts +23 -3
  318. package/src/executor/types/SessionHistoryMeta.ts +0 -2
  319. package/src/index.ts +34 -53
  320. package/src/plugin/core/ActionScheduleExecutor.ts +1 -1
  321. package/src/plugin/core/ActionScheduleRuntime.ts +1 -1
  322. package/src/plugin/core/BasePlugin.ts +7 -3
  323. package/src/plugin/core/HookRegistry.ts +15 -18
  324. package/src/plugin/core/PluginActionFactory.ts +9 -3
  325. package/src/plugin/core/PluginActionRunner.ts +1 -1
  326. package/src/plugin/core/PluginCatalog.ts +1 -1
  327. package/src/plugin/core/PluginHttpRoutes.ts +1 -1
  328. package/src/plugin/core/PluginLocalExecution.ts +11 -24
  329. package/src/plugin/core/PluginRegistry.ts +55 -32
  330. package/src/plugin/core/PluginStateController.ts +1 -1
  331. package/src/{agent/remote → remote}/RemoteAgent.ts +4 -4
  332. package/src/{agent/remote → remote}/RemoteSession.ts +2 -35
  333. package/src/{agent/remote → remote}/RemoteTransport.ts +0 -3
  334. package/src/{agent/remote → remote}/TransportFactory.ts +3 -3
  335. package/src/{agent/remote → remote}/transports/HttpRemoteAgentTransport.ts +1 -23
  336. package/src/{rpc/Client.ts → remote/transports/RpcClient.ts} +1 -19
  337. package/src/{agent/remote → remote}/transports/RpcRemoteAgentTransport.ts +2 -10
  338. package/src/session/DefaultSessionComposer.ts +79 -0
  339. package/src/session/Session.ts +496 -332
  340. package/src/session/{recorder/SessionRecorder.ts → SessionMessages.ts} +254 -428
  341. package/src/session/SessionQueue.ts +86 -0
  342. package/src/session/SessionState.ts +322 -0
  343. package/src/session/SessionSystem.ts +117 -0
  344. package/src/session/SessionTurn.ts +684 -0
  345. package/src/session/approval/SessionApprovalBroker.ts +164 -0
  346. package/src/session/browse/Browse.ts +1 -4
  347. package/src/session/messages/SessionAssistantMessageWriter.ts +345 -0
  348. package/src/session/messages/SessionJsonValue.ts +25 -0
  349. package/src/session/{recorder → messages}/SessionMessageCodec.ts +38 -20
  350. package/src/session/{recorder/SessionRecorderCompaction.ts → messages/SessionMessageCompaction.ts} +30 -69
  351. package/src/session/runtime/SessionEventHub.ts +1 -14
  352. package/src/session/storage/Metadata.ts +60 -34
  353. package/src/session/storage/RuntimeSessionPort.ts +7 -14
  354. package/src/types/agent/AgentOptions.ts +6 -38
  355. package/src/types/agent/AgentState.ts +33 -0
  356. package/src/types/agent/SessionActor.ts +0 -3
  357. package/src/types/agent/SessionTypes.ts +5 -18
  358. package/src/types/executor/SessionRunContext.ts +10 -2
  359. package/src/types/executor/SessionToolExecutionContext.ts +21 -0
  360. package/src/types/plugin/PluginAction.ts +10 -1
  361. package/src/types/plugin/PluginCommand.ts +3 -14
  362. package/src/types/plugin/PluginConfig.ts +13 -0
  363. package/src/types/plugin/PluginDefinition.ts +13 -6
  364. package/src/types/plugin/PluginHttp.ts +1 -1
  365. package/src/types/plugin/PluginRunContext.ts +31 -0
  366. package/src/types/plugin/PluginRuntime.ts +13 -6
  367. package/src/types/plugin/PluginToolRuntime.ts +13 -1
  368. package/src/types/rpc/RpcProtocol.ts +0 -14
  369. package/src/types/session/SessionApproval.ts +4 -43
  370. package/src/types/session/SessionApprovalBroker.ts +18 -0
  371. package/src/types/session/SessionComposer.ts +114 -0
  372. package/src/types/session/SessionLocalState.ts +6 -6
  373. package/src/types/session/SessionMessage.ts +3 -2
  374. package/src/types/session/SessionMessages.ts +127 -0
  375. package/src/types/session/SessionMutation.ts +0 -11
  376. package/src/types/session/SessionOptions.ts +8 -40
  377. package/src/types/session/SessionPort.ts +97 -0
  378. package/src/types/session/SessionQueue.ts +122 -0
  379. package/src/types/session/SessionState.ts +47 -0
  380. package/src/types/session/SessionSystem.ts +27 -0
  381. package/src/types/session/SessionTool.ts +25 -0
  382. package/src/types/session/SessionTurn.ts +56 -0
  383. package/tsconfig.tsbuildinfo +1 -1
  384. package/bin/agent/local/Agent.d.ts.map +0 -1
  385. package/bin/agent/local/Agent.js +0 -216
  386. package/bin/agent/local/Agent.js.map +0 -1
  387. package/bin/agent/local/AgentInstructions.d.ts.map +0 -1
  388. package/bin/agent/local/AgentInstructions.js.map +0 -1
  389. package/bin/agent/local/AgentPluginFactory.d.ts +0 -26
  390. package/bin/agent/local/AgentPluginFactory.d.ts.map +0 -1
  391. package/bin/agent/local/AgentPluginFactory.js +0 -33
  392. package/bin/agent/local/AgentPluginFactory.js.map +0 -1
  393. package/bin/agent/local/AgentRuntimeAssembly.d.ts +0 -10
  394. package/bin/agent/local/AgentRuntimeAssembly.d.ts.map +0 -1
  395. package/bin/agent/local/AgentRuntimeAssembly.js +0 -43
  396. package/bin/agent/local/AgentRuntimeAssembly.js.map +0 -1
  397. package/bin/agent/local/ProjectSetup.d.ts.map +0 -1
  398. package/bin/agent/local/ProjectSetup.js.map +0 -1
  399. package/bin/agent/local/services/AgentAssemblyService.d.ts +0 -105
  400. package/bin/agent/local/services/AgentAssemblyService.d.ts.map +0 -1
  401. package/bin/agent/local/services/AgentAssemblyService.js +0 -184
  402. package/bin/agent/local/services/AgentAssemblyService.js.map +0 -1
  403. package/bin/agent/local/services/AgentBackgroundService.d.ts +0 -55
  404. package/bin/agent/local/services/AgentBackgroundService.d.ts.map +0 -1
  405. package/bin/agent/local/services/AgentBackgroundService.js +0 -85
  406. package/bin/agent/local/services/AgentBackgroundService.js.map +0 -1
  407. package/bin/agent/local/services/AgentSessions.d.ts.map +0 -1
  408. package/bin/agent/local/services/AgentSessions.js.map +0 -1
  409. package/bin/agent/remote/RemoteAgent.d.ts.map +0 -1
  410. package/bin/agent/remote/RemoteAgent.js.map +0 -1
  411. package/bin/agent/remote/RemoteSession.d.ts.map +0 -1
  412. package/bin/agent/remote/RemoteSession.js.map +0 -1
  413. package/bin/agent/remote/RemoteTransport.d.ts.map +0 -1
  414. package/bin/agent/remote/RemoteTransport.js.map +0 -1
  415. package/bin/agent/remote/TransportFactory.d.ts.map +0 -1
  416. package/bin/agent/remote/TransportFactory.js.map +0 -1
  417. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +0 -1
  418. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +0 -1
  419. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +0 -1
  420. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +0 -1
  421. package/bin/executor/SessionRunScope.d.ts +0 -68
  422. package/bin/executor/SessionRunScope.d.ts.map +0 -1
  423. package/bin/executor/SessionRunScope.js +0 -96
  424. package/bin/executor/SessionRunScope.js.map +0 -1
  425. package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts +0 -74
  426. package/bin/executor/composer/compaction/SessionCompactionComposer.d.ts.map +0 -1
  427. package/bin/executor/composer/compaction/SessionCompactionComposer.js +0 -9
  428. package/bin/executor/composer/compaction/SessionCompactionComposer.js.map +0 -1
  429. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts +0 -27
  430. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.d.ts.map +0 -1
  431. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js +0 -39
  432. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.js.map +0 -1
  433. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts +0 -44
  434. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.d.ts.map +0 -1
  435. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js +0 -218
  436. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.js.map +0 -1
  437. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.d.ts +0 -27
  438. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.d.ts.map +0 -1
  439. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.js +0 -181
  440. package/bin/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.js.map +0 -1
  441. package/bin/executor/composer/context/LocalSessionContextComposer.d.ts +0 -50
  442. package/bin/executor/composer/context/LocalSessionContextComposer.d.ts.map +0 -1
  443. package/bin/executor/composer/context/LocalSessionContextComposer.js +0 -108
  444. package/bin/executor/composer/context/LocalSessionContextComposer.js.map +0 -1
  445. package/bin/executor/composer/context/SessionContextComposer.d.ts +0 -67
  446. package/bin/executor/composer/context/SessionContextComposer.d.ts.map +0 -1
  447. package/bin/executor/composer/context/SessionContextComposer.js +0 -9
  448. package/bin/executor/composer/context/SessionContextComposer.js.map +0 -1
  449. package/bin/executor/composer/history/SessionHistoryComposer.d.ts +0 -54
  450. package/bin/executor/composer/history/SessionHistoryComposer.d.ts.map +0 -1
  451. package/bin/executor/composer/history/SessionHistoryComposer.js +0 -10
  452. package/bin/executor/composer/history/SessionHistoryComposer.js.map +0 -1
  453. package/bin/executor/composer/history/SessionHistoryWriter.d.ts +0 -46
  454. package/bin/executor/composer/history/SessionHistoryWriter.d.ts.map +0 -1
  455. package/bin/executor/composer/history/SessionHistoryWriter.js +0 -65
  456. package/bin/executor/composer/history/SessionHistoryWriter.js.map +0 -1
  457. package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.d.ts +0 -35
  458. package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.d.ts.map +0 -1
  459. package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.js +0 -105
  460. package/bin/executor/composer/history/jsonl/JsonlSessionHistoryComposer.js.map +0 -1
  461. package/bin/executor/messages/AssistantResultPersistence.d.ts +0 -66
  462. package/bin/executor/messages/AssistantResultPersistence.d.ts.map +0 -1
  463. package/bin/executor/messages/AssistantResultPersistence.js +0 -44
  464. package/bin/executor/messages/AssistantResultPersistence.js.map +0 -1
  465. package/bin/executor/services/ExecutorInflightService.d.ts +0 -34
  466. package/bin/executor/services/ExecutorInflightService.d.ts.map +0 -1
  467. package/bin/executor/services/ExecutorInflightService.js +0 -73
  468. package/bin/executor/services/ExecutorInflightService.js.map +0 -1
  469. package/bin/executor/store/history/SessionHistoryStore.d.ts +0 -140
  470. package/bin/executor/store/history/SessionHistoryStore.d.ts.map +0 -1
  471. package/bin/executor/store/history/SessionHistoryStore.js +0 -10
  472. package/bin/executor/store/history/SessionHistoryStore.js.map +0 -1
  473. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +0 -116
  474. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +0 -1
  475. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +0 -709
  476. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +0 -1
  477. package/bin/executor/types/SessionHistoryPaths.d.ts +0 -34
  478. package/bin/executor/types/SessionHistoryPaths.d.ts.map +0 -1
  479. package/bin/executor/types/SessionHistoryPaths.js +0 -2
  480. package/bin/executor/types/SessionHistoryPaths.js.map +0 -1
  481. package/bin/model/CityModelAdapter.d.ts.map +0 -1
  482. package/bin/model/CityModelAdapter.js.map +0 -1
  483. package/bin/rpc/Client.d.ts.map +0 -1
  484. package/bin/rpc/Client.js.map +0 -1
  485. package/bin/session/SessionSystemBuilder.d.ts +0 -107
  486. package/bin/session/SessionSystemBuilder.d.ts.map +0 -1
  487. package/bin/session/SessionSystemBuilder.js +0 -148
  488. package/bin/session/SessionSystemBuilder.js.map +0 -1
  489. package/bin/session/recorder/SessionMessageCodec.d.ts.map +0 -1
  490. package/bin/session/recorder/SessionMessageCodec.js.map +0 -1
  491. package/bin/session/recorder/SessionRecorder.d.ts +0 -217
  492. package/bin/session/recorder/SessionRecorder.d.ts.map +0 -1
  493. package/bin/session/recorder/SessionRecorder.js.map +0 -1
  494. package/bin/session/recorder/SessionRecorderCompaction.d.ts +0 -18
  495. package/bin/session/recorder/SessionRecorderCompaction.d.ts.map +0 -1
  496. package/bin/session/recorder/SessionRecorderCompaction.js.map +0 -1
  497. package/bin/session/recorder/SessionRecorderHistoryStore.d.ts +0 -66
  498. package/bin/session/recorder/SessionRecorderHistoryStore.d.ts.map +0 -1
  499. package/bin/session/recorder/SessionRecorderHistoryStore.js +0 -190
  500. package/bin/session/recorder/SessionRecorderHistoryStore.js.map +0 -1
  501. package/bin/session/runtime/SessionPromptRuntime.d.ts +0 -112
  502. package/bin/session/runtime/SessionPromptRuntime.d.ts.map +0 -1
  503. package/bin/session/runtime/SessionPromptRuntime.js +0 -357
  504. package/bin/session/runtime/SessionPromptRuntime.js.map +0 -1
  505. package/bin/session/services/SessionStateService.d.ts +0 -187
  506. package/bin/session/services/SessionStateService.d.ts.map +0 -1
  507. package/bin/session/services/SessionStateService.js +0 -467
  508. package/bin/session/services/SessionStateService.js.map +0 -1
  509. package/bin/session/services/SessionTurnService.d.ts +0 -90
  510. package/bin/session/services/SessionTurnService.d.ts.map +0 -1
  511. package/bin/session/services/SessionTurnService.js +0 -293
  512. package/bin/session/services/SessionTurnService.js.map +0 -1
  513. package/bin/session/services/SessionViewService.d.ts +0 -114
  514. package/bin/session/services/SessionViewService.d.ts.map +0 -1
  515. package/bin/session/services/SessionViewService.js +0 -204
  516. package/bin/session/services/SessionViewService.js.map +0 -1
  517. package/bin/session/storage/Persistence.d.ts +0 -73
  518. package/bin/session/storage/Persistence.d.ts.map +0 -1
  519. package/bin/session/storage/Persistence.js +0 -63
  520. package/bin/session/storage/Persistence.js.map +0 -1
  521. package/bin/types/agent/AgentRuntimeAssembly.d.ts +0 -72
  522. package/bin/types/agent/AgentRuntimeAssembly.d.ts.map +0 -1
  523. package/bin/types/agent/AgentRuntimeAssembly.js +0 -10
  524. package/bin/types/agent/AgentRuntimeAssembly.js.map +0 -1
  525. package/bin/types/runtime/agent/AgentContext.d.ts +0 -306
  526. package/bin/types/runtime/agent/AgentContext.d.ts.map +0 -1
  527. package/bin/types/runtime/agent/AgentContext.js +0 -128
  528. package/bin/types/runtime/agent/AgentContext.js.map +0 -1
  529. package/bin/types/session/SessionComposerOptions.d.ts +0 -90
  530. package/bin/types/session/SessionComposerOptions.d.ts.map +0 -1
  531. package/bin/types/session/SessionComposerOptions.js +0 -10
  532. package/bin/types/session/SessionComposerOptions.js.map +0 -1
  533. package/bin/types/session/SessionQueueCommand.d.ts +0 -68
  534. package/bin/types/session/SessionQueueCommand.d.ts.map +0 -1
  535. package/bin/types/session/SessionQueueCommand.js +0 -10
  536. package/bin/types/session/SessionQueueCommand.js.map +0 -1
  537. package/scripts/session-action-message.test.mjs +0 -410
  538. package/scripts/session-compaction-context-window.test.mjs +0 -96
  539. package/scripts/session-history-inflight.test.mjs +0 -146
  540. package/scripts/session-history-writer-error.test.mjs +0 -57
  541. package/scripts/session-prompt-runtime.test.mjs +0 -390
  542. package/src/agent/local/Agent.ts +0 -250
  543. package/src/agent/local/AgentPluginFactory.ts +0 -51
  544. package/src/agent/local/AgentRuntimeAssembly.ts +0 -65
  545. package/src/agent/local/services/AgentAssemblyService.ts +0 -307
  546. package/src/agent/local/services/AgentBackgroundService.ts +0 -115
  547. package/src/executor/SessionRunScope.ts +0 -122
  548. package/src/executor/composer/compaction/SessionCompactionComposer.ts +0 -84
  549. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionComposer.ts +0 -51
  550. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionExecutor.ts +0 -294
  551. package/src/executor/composer/compaction/jsonl/JsonlSessionCompactionFileOperations.ts +0 -197
  552. package/src/executor/composer/context/LocalSessionContextComposer.ts +0 -175
  553. package/src/executor/composer/context/SessionContextComposer.ts +0 -83
  554. package/src/executor/composer/history/SessionHistoryComposer.ts +0 -62
  555. package/src/executor/composer/history/SessionHistoryWriter.ts +0 -100
  556. package/src/executor/composer/history/jsonl/JsonlSessionHistoryComposer.ts +0 -133
  557. package/src/executor/messages/AssistantResultPersistence.ts +0 -106
  558. package/src/executor/services/ExecutorInflightService.ts +0 -95
  559. package/src/executor/store/history/SessionHistoryStore.ts +0 -172
  560. package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +0 -879
  561. package/src/executor/types/SessionHistoryPaths.ts +0 -38
  562. package/src/session/SessionSystemBuilder.ts +0 -262
  563. package/src/session/recorder/SessionRecorderHistoryStore.ts +0 -256
  564. package/src/session/runtime/SessionPromptRuntime.ts +0 -518
  565. package/src/session/services/SessionStateService.ts +0 -628
  566. package/src/session/services/SessionTurnService.ts +0 -368
  567. package/src/session/services/SessionViewService.ts +0 -335
  568. package/src/session/storage/Persistence.ts +0 -137
  569. package/src/types/agent/AgentRuntimeAssembly.ts +0 -74
  570. package/src/types/runtime/agent/AgentContext.ts +0 -387
  571. package/src/types/session/SessionComposerOptions.ts +0 -107
  572. package/src/types/session/SessionQueueCommand.ts +0 -78
  573. /package/bin/{agent/local → config}/ProjectSetup.d.ts +0 -0
  574. /package/bin/{agent/remote → remote}/RemoteTransport.js +0 -0
  575. /package/bin/session/{recorder → messages}/JsonlSessionMessageStore.d.ts +0 -0
  576. /package/bin/session/{recorder → messages}/JsonlSessionMessageStore.js +0 -0
  577. /package/src/{agent/local → config}/ProjectSetup.ts +0 -0
  578. /package/src/session/{recorder → messages}/JsonlSessionMessageStore.ts +0 -0
@@ -1,197 +0,0 @@
1
- /**
2
- * JsonlSessionCompactionFileOperations:上下文压缩文件操作记录模块。
3
- *
4
- * 关键点(中文)
5
- * - 从被压缩的 session 消息中 best-effort 提取文件读写痕迹。
6
- * - 输出结构化 XML 片段,追加到 LLM 生成的 compact summary 末尾。
7
- * - 解析失败或没有文件操作时不影响 compact 主流程。
8
- */
9
-
10
- import { isTextUIPart } from "ai";
11
- import type { SessionMessageRecordV1 } from "@/executor/types/SessionRecords.js";
12
-
13
- /**
14
- * 压缩范围内的文件操作汇总。
15
- */
16
- export type SessionCompactionFileOperations = {
17
- /** 本次压缩范围内被读取或查看过的文件路径。 */
18
- read_files: string[];
19
- /** 本次压缩范围内被新增、修改或删除过的文件路径。 */
20
- modified_files: string[];
21
- };
22
-
23
- type UnknownRecord = Record<string, unknown>;
24
-
25
- const PATH_CANDIDATE_RE =
26
- /(?:\.{1,2}\/|\/|[A-Za-z0-9_.@-]+\/)[A-Za-z0-9_.@~:+/=-]+/g;
27
- const PATCH_FILE_RE = /^\*\*\* (?:Add|Update|Delete) File: (.+)$/gm;
28
- const GIT_STATUS_FILE_RE = /^\s*(?:[MADRCU?!]{1,2}|[ MADRCU?!][ MADRCU?!])\s+(.+)$/gm;
29
- const READ_COMMAND_RE =
30
- /\b(?:cat|less|more|sed|nl|head|tail|rg|grep|find|ls|wc|stat|open|git\s+(?:show|diff|status|grep|ls-files))\b/;
31
-
32
- /**
33
- * 把压缩范围内的文件操作格式化为 XML。
34
- */
35
- export function format_session_compaction_file_operations(
36
- messages: SessionMessageRecordV1[],
37
- ): string {
38
- const operations = collect_session_compaction_file_operations(messages);
39
- if (operations.read_files.length === 0 && operations.modified_files.length === 0) {
40
- return "";
41
- }
42
- return [
43
- "<read-files>",
44
- ...operations.read_files.map((file_path) => xml_escape(file_path)),
45
- "</read-files>",
46
- "",
47
- "<modified-files>",
48
- ...operations.modified_files.map((file_path) => xml_escape(file_path)),
49
- "</modified-files>",
50
- ].join("\n");
51
- }
52
-
53
- /**
54
- * 收集压缩范围内的文件操作。
55
- */
56
- export function collect_session_compaction_file_operations(
57
- messages: SessionMessageRecordV1[],
58
- ): SessionCompactionFileOperations {
59
- const read_files = new Set<string>();
60
- const modified_files = new Set<string>();
61
-
62
- for (const message of Array.isArray(messages) ? messages : []) {
63
- const text_blocks = extract_message_operation_texts(message);
64
- for (const text of text_blocks) {
65
- for (const file_path of extract_modified_files(text)) {
66
- modified_files.add(file_path);
67
- }
68
- for (const file_path of extract_read_files(text)) {
69
- read_files.add(file_path);
70
- }
71
- }
72
- }
73
-
74
- for (const file_path of modified_files) {
75
- read_files.delete(file_path);
76
- }
77
-
78
- return {
79
- read_files: [...read_files].sort(),
80
- modified_files: [...modified_files].sort(),
81
- };
82
- }
83
-
84
- /**
85
- * 提取单条消息中可能包含文件操作的文本块。
86
- */
87
- function extract_message_operation_texts(message: SessionMessageRecordV1): string[] {
88
- const out: string[] = [];
89
- const parts = Array.isArray(message.parts) ? message.parts : [];
90
- for (const part of parts) {
91
- if (isTextUIPart(part)) {
92
- const text = String(part.text ?? "").trim();
93
- if (text) out.push(text);
94
- continue;
95
- }
96
- const part_record = to_record(part);
97
- if (!part_record) continue;
98
- const input_text = stringify_compact(part_record.input);
99
- const output_text = stringify_compact(part_record.output);
100
- const error_text = stringify_compact(part_record.errorText);
101
- if (input_text) out.push(input_text);
102
- if (output_text) out.push(output_text);
103
- if (error_text) out.push(error_text);
104
- }
105
- return out;
106
- }
107
-
108
- /**
109
- * 提取 patch / git status 中的修改文件。
110
- */
111
- function extract_modified_files(text: string): string[] {
112
- const out = new Set<string>();
113
- for (const file_path of match_group_values(text, PATCH_FILE_RE)) {
114
- const normalized = normalize_file_path(file_path);
115
- if (normalized) out.add(normalized);
116
- }
117
- for (const file_path of match_group_values(text, GIT_STATUS_FILE_RE)) {
118
- const normalized = normalize_file_path(file_path);
119
- if (normalized) out.add(normalized);
120
- }
121
- return [...out];
122
- }
123
-
124
- /**
125
- * 从读命令文本中提取读取路径。
126
- */
127
- function extract_read_files(text: string): string[] {
128
- const out = new Set<string>();
129
- const lines = String(text || "").split(/\r?\n/);
130
- for (const line of lines) {
131
- if (!READ_COMMAND_RE.test(line)) continue;
132
- for (const candidate of line.match(PATH_CANDIDATE_RE) || []) {
133
- const normalized = normalize_file_path(candidate);
134
- if (normalized) out.add(normalized);
135
- }
136
- }
137
- return [...out];
138
- }
139
-
140
- /**
141
- * 获取正则第一个捕获组的所有结果。
142
- */
143
- function match_group_values(text: string, pattern: RegExp): string[] {
144
- const out: string[] = [];
145
- pattern.lastIndex = 0;
146
- let match = pattern.exec(text);
147
- while (match) {
148
- const value = String(match[1] || "").trim();
149
- if (value) out.push(value);
150
- match = pattern.exec(text);
151
- }
152
- return out;
153
- }
154
-
155
- /**
156
- * 归一化候选路径。
157
- */
158
- function normalize_file_path(value: string): string {
159
- let file_path = String(value || "").trim();
160
- if (!file_path || file_path.includes("://")) return "";
161
- file_path = file_path.replace(/^["'`]+|["'`]+$/g, "");
162
- file_path = file_path.replace(/[),.;:]+$/g, "");
163
- if (!file_path || file_path === "." || file_path === "..") return "";
164
- if (file_path.startsWith("-")) return "";
165
- return file_path;
166
- }
167
-
168
- /**
169
- * 转成对象记录。
170
- */
171
- function to_record(value: unknown): UnknownRecord | null {
172
- if (!value || typeof value !== "object" || Array.isArray(value)) return null;
173
- return value as UnknownRecord;
174
- }
175
-
176
- /**
177
- * 将未知结构紧凑地转为文本。
178
- */
179
- function stringify_compact(value: unknown): string {
180
- if (value === undefined || value === null) return "";
181
- if (typeof value === "string") return value;
182
- try {
183
- return JSON.stringify(value);
184
- } catch {
185
- return String(value);
186
- }
187
- }
188
-
189
- /**
190
- * XML 文本转义。
191
- */
192
- function xml_escape(value: string): string {
193
- return String(value || "")
194
- .replace(/&/g, "&amp;")
195
- .replace(/</g, "&lt;")
196
- .replace(/>/g, "&gt;");
197
- }
@@ -1,175 +0,0 @@
1
- /**
2
- * LocalSessionContextComposer:本地 session 运行时编排 Composer 实现。
3
- *
4
- * 关键点(中文)
5
- * - 统一组装 tools。
6
- * - step 边界回调从 SessionRunScope 读取,Executor 不直接管理来源。
7
- */
8
-
9
- import type { ModelMessage } from "ai";
10
- import { generateId } from "@/utils/Id.js";
11
- import type {
12
- SessionContextComposer,
13
- SessionContextComposeResult,
14
- } from "@executor/composer/context/SessionContextComposer.js";
15
- import type {
16
- SessionRecordV1,
17
- SessionMessageRecordV1,
18
- } from "@/executor/types/SessionRecords.js";
19
- import type { SessionSystemMessage } from "@/executor/types/SessionPrompts.js";
20
- import type { Tool } from "ai";
21
- import type { SessionRunContext } from "@/types/executor/SessionRunContext.js";
22
-
23
- type LocalSessionContextComposerOptions = {
24
- /**
25
- * 可选默认 session id。
26
- */
27
- sessionId?: string;
28
-
29
- /**
30
- * 读取当前可用工具集合。
31
- */
32
- getTools: () => Record<string, Tool>;
33
- };
34
-
35
- /**
36
- * LocalSessionContextComposer 默认 Composer 实现。
37
- */
38
- export class LocalSessionContextComposer implements SessionContextComposer {
39
- readonly name = "runtime_context_composer";
40
- private readonly sessionId: string;
41
- private readonly getTools: LocalSessionContextComposerOptions["getTools"];
42
-
43
- constructor(options: LocalSessionContextComposerOptions) {
44
- this.sessionId = String(options.sessionId || "").trim();
45
- this.getTools = options.getTools;
46
- }
47
-
48
- async compose(
49
- run_context: SessionRunContext,
50
- ): Promise<SessionContextComposeResult> {
51
- const tools = this.getTools();
52
- const sessionId = String(
53
- run_context.sessionId || this.sessionId || "",
54
- ).trim();
55
- if (!sessionId) {
56
- throw new Error(
57
- "LocalSessionContextComposer.compose requires a non-empty sessionId",
58
- );
59
- }
60
- return {
61
- tools,
62
- };
63
- }
64
-
65
- createPrepareStepHandler(
66
- input: {
67
- system: SessionSystemMessage[];
68
- appendMergedUserMessages: (
69
- messages: SessionRecordV1[],
70
- ) => Promise<ModelMessage[]>;
71
- runContext: SessionRunContext;
72
- },
73
- ): (input: { messages?: ModelMessage[] }) => Promise<{
74
- system: SessionSystemMessage[];
75
- messages?: ModelMessage[];
76
- }> {
77
- return async ({
78
- messages,
79
- }: {
80
- messages?: ModelMessage[];
81
- }): Promise<{
82
- system: SessionSystemMessage[];
83
- messages?: ModelMessage[];
84
- }> => {
85
- const injectedMessages = [...input.runContext.injectedUserMessages];
86
- input.runContext.injectedUserMessages = [];
87
- const onStepCallback = input.runContext.onStepCallback;
88
- if (
89
- typeof onStepCallback !== "function" &&
90
- injectedMessages.length === 0
91
- ) {
92
- return { system: input.system };
93
- }
94
-
95
- const incomingMessages: ModelMessage[] = Array.isArray(messages)
96
- ? messages
97
- : [];
98
- let outMessages: ModelMessage[] | undefined;
99
- try {
100
- const mergedMessages =
101
- typeof onStepCallback === "function" ? await onStepCallback() : [];
102
- const mergedWithInjected = [
103
- ...injectedMessages,
104
- ...(Array.isArray(mergedMessages) ? mergedMessages : []),
105
- ];
106
- const mergedModelMessages = await input.appendMergedUserMessages(
107
- mergedWithInjected,
108
- );
109
- if (mergedModelMessages.length > 0) {
110
- // 关键点(中文):保持当前 step 已有消息顺序不变,只把新增 user 消息追加到末尾。
111
- outMessages = [...incomingMessages, ...mergedModelMessages];
112
- }
113
- } catch {
114
- // ignore merge hook failures
115
- }
116
-
117
- return {
118
- system: input.system,
119
- ...(Array.isArray(outMessages) ? { messages: outMessages } : {}),
120
- };
121
- };
122
- }
123
-
124
- createOnStepFinishHandler(
125
- run_context: SessionRunContext,
126
- ): (stepResult: unknown) => Promise<void> {
127
- const onAssistantStepCallback = run_context.onAssistantStepCallback;
128
- let assistantStepIndex = 0;
129
- return async (stepResult: unknown): Promise<void> => {
130
- const step = stepResult as { text?: unknown };
131
- const stepText = String(step.text || "").trim();
132
- if (typeof onAssistantStepCallback !== "function") return;
133
- try {
134
- assistantStepIndex += 1;
135
- await onAssistantStepCallback({
136
- text: stepText,
137
- // 关键点(中文):1-based step 序号,按回调触发次数递增。
138
- stepIndex: assistantStepIndex,
139
- stepResult,
140
- });
141
- } catch {
142
- // ignore assistant step callback failures
143
- }
144
- };
145
- }
146
-
147
- /**
148
- * 构造 fallback assistant 消息。
149
- */
150
- buildFallbackAssistantMessage(
151
- text: string,
152
- run_context: SessionRunContext,
153
- ): SessionMessageRecordV1 {
154
- const sessionId = String(
155
- run_context.sessionId || this.sessionId || "",
156
- ).trim();
157
- if (!sessionId) {
158
- throw new Error(
159
- "LocalSessionContextComposer.buildFallbackAssistantMessage requires a non-empty sessionId",
160
- );
161
- }
162
- return {
163
- id: `a:${sessionId}:${generateId()}`,
164
- role: "assistant",
165
- metadata: {
166
- v: 1,
167
- ts: Date.now(),
168
- sessionId,
169
- source: "egress",
170
- kind: "normal",
171
- },
172
- parts: [{ type: "text", text: String(text ?? "") }],
173
- };
174
- }
175
- }
@@ -1,83 +0,0 @@
1
- /**
2
- * SessionContextComposer:单次 Session run context 组装协议。
3
- *
4
- * 关键点(中文)
5
- * - 负责 tools / prepareStep / onStepFinish / fallback message factory 等运行上下文组装。
6
- * - 不负责历史读写,不负责 system 解析,不负责 compact。
7
- */
8
-
9
- import type { ModelMessage, Tool } from "ai";
10
- import type {
11
- SessionRecordV1,
12
- SessionMessageRecordV1,
13
- } from "@/executor/types/SessionRecords.js";
14
- import type { SessionSystemMessage } from "@/executor/types/SessionPrompts.js";
15
- import type { SessionRunContext } from "@/types/executor/SessionRunContext.js";
16
-
17
- /**
18
- * 本轮运行上下文组装输出。
19
- */
20
- export type SessionContextComposeResult = {
21
- /**
22
- * 本轮工具集合。
23
- */
24
- tools: Record<string, Tool>;
25
- };
26
-
27
- /**
28
- * 运行上下文 Composer 协议。
29
- */
30
- export interface SessionContextComposer {
31
- /**
32
- * Composer 名(由具体实现声明)。
33
- */
34
- readonly name: string;
35
-
36
- /**
37
- * 组装一次 run 所需上下文。
38
- */
39
- compose(run_context: SessionRunContext): Promise<SessionContextComposeResult>;
40
-
41
- /**
42
- * 构造 prepareStep 回调。
43
- */
44
- createPrepareStepHandler(
45
- input: {
46
- /**
47
- * 当前轮 system 消息。
48
- */
49
- system: SessionSystemMessage[];
50
- /**
51
- * 将新增 user 消息转换为可追加的模型消息。
52
- */
53
- appendMergedUserMessages: (
54
- messages: SessionRecordV1[],
55
- ) => Promise<ModelMessage[]>;
56
- /**
57
- * 当前显式运行上下文。
58
- */
59
- runContext: SessionRunContext;
60
- },
61
- ): (input: { messages?: ModelMessage[] }) => Promise<{
62
- system: SessionSystemMessage[];
63
- messages?: ModelMessage[];
64
- }>;
65
-
66
- /**
67
- * 构造 onStepFinish 回调。
68
- */
69
- createOnStepFinishHandler(
70
- run_context: SessionRunContext,
71
- ): (stepResult: unknown) => Promise<void>;
72
-
73
- /**
74
- * 构造 fallback assistant 消息。
75
- *
76
- * 关键点(中文)
77
- * - fallback 消息构造由 ContextComposer 内部实现,Executor 不直接依赖 history Composer。
78
- */
79
- buildFallbackAssistantMessage(
80
- text: string,
81
- run_context: SessionRunContext,
82
- ): SessionMessageRecordV1;
83
- }
@@ -1,62 +0,0 @@
1
- /**
2
- * SessionHistoryComposer:会话历史 Composer 抽象。
3
- *
4
- * 关键点(中文)
5
- * - 负责把历史事实源组装成本轮模型输入消息。
6
- * - 不负责 append / list / meta / archive 等落盘能力。
7
- * - 不负责模型调用,不负责执行编排。
8
- */
9
-
10
- import type { LanguageModel, Tool } from "ai";
11
- import type { SessionRecordV1 } from "@/executor/types/SessionRecords.js";
12
- import type { SessionSystemMessage } from "@/executor/types/SessionPrompts.js";
13
-
14
- /**
15
- * prepare 输入参数。
16
- */
17
- export type SessionHistoryPrepareInput = {
18
- /**
19
- * 当前用户查询文本。
20
- */
21
- query: string;
22
-
23
- /**
24
- * 当前轮可用工具集合。
25
- */
26
- tools: Record<string, Tool>;
27
-
28
- /**
29
- * 当前轮 system messages。
30
- */
31
- system: SessionSystemMessage[];
32
-
33
- /**
34
- * 当前模型实例。
35
- */
36
- model: LanguageModel;
37
-
38
- /**
39
- * 当前重试次数(由 Executor 递增)。
40
- */
41
- retryCount: number;
42
- };
43
-
44
- /**
45
- * SessionHistoryComposer 协议。
46
- */
47
- export interface SessionHistoryComposer {
48
- /**
49
- * Composer 名(由具体实现声明)。
50
- */
51
- readonly name: string;
52
-
53
- /**
54
- * 当前会话 ID。
55
- */
56
- readonly sessionId: string;
57
-
58
- /**
59
- * 为本轮 Session 执行准备模型输入消息。
60
- */
61
- prepare(input: SessionHistoryPrepareInput): Promise<SessionRecordV1[]>;
62
- }
@@ -1,100 +0,0 @@
1
- /**
2
- * SessionHistoryWriter:单个 Session 的消息写入器。
3
- *
4
- * 关键点(中文)
5
- * - 只负责当前 session 的 user / assistant 消息补写。
6
- * - 只依赖当前 session 的 history Store,不感知其他 session。
7
- */
8
-
9
- import type { JsonObject } from "@/types/common/Json.js";
10
- import type {
11
- SessionRecordV1,
12
- SessionMetadataV1,
13
- } from "@/executor/types/SessionRecords.js";
14
- import type { SessionHistoryStore } from "@/executor/store/history/SessionHistoryStore.js";
15
-
16
- type SessionHistoryWriterOptions = {
17
- /**
18
- * 当前 session 标识。
19
- */
20
- sessionId: string;
21
-
22
- /**
23
- * 获取当前 session 对应的 history Store。
24
- */
25
- getHistoryStore: () => SessionHistoryStore;
26
-
27
- };
28
-
29
- /**
30
- * SessionHistoryWriter:单 session 写入器。
31
- */
32
- export class SessionHistoryWriter {
33
- private readonly sessionId: string;
34
- private readonly getHistoryStore: SessionHistoryWriterOptions["getHistoryStore"];
35
-
36
- constructor(options: SessionHistoryWriterOptions) {
37
- this.sessionId = String(options.sessionId || "").trim();
38
- this.getHistoryStore = options.getHistoryStore;
39
- if (!this.sessionId) {
40
- throw new Error("SessionHistoryWriter requires a non-empty sessionId");
41
- }
42
- }
43
-
44
- /**
45
- * 追加一条 user 消息。
46
- */
47
- async append_user_message(params: {
48
- message?: SessionRecordV1 | null;
49
- text?: string;
50
- extra?: JsonObject;
51
- }): Promise<void> {
52
- const historyStore = this.getHistoryStore();
53
- if (params.message && typeof params.message === "object") {
54
- await historyStore.write_record(params.message);
55
- return;
56
- }
57
-
58
- const fallbackText = String(params.text || "").trim();
59
- if (!fallbackText) return;
60
-
61
- const message = historyStore.userText({
62
- text: fallbackText,
63
- metadata: {
64
- sessionId: this.sessionId,
65
- extra: params.extra,
66
- } as Omit<SessionMetadataV1, "v" | "ts">,
67
- });
68
- await historyStore.write_record(message);
69
- }
70
-
71
- /**
72
- * 追加一条 assistant 消息。
73
- */
74
- async append_assistant_message(params: {
75
- message?: SessionRecordV1 | null;
76
- fallbackText?: string;
77
- extra?: JsonObject;
78
- }): Promise<void> {
79
- const historyStore = this.getHistoryStore();
80
- if (params.message && typeof params.message === "object") {
81
- await historyStore.finalize_inflight(params.message);
82
- return;
83
- }
84
-
85
- const fallbackText = String(params.fallbackText || "").trim();
86
- if (!fallbackText) return;
87
-
88
- await historyStore.finalize_inflight(
89
- historyStore.assistantText({
90
- text: fallbackText,
91
- metadata: {
92
- sessionId: this.sessionId,
93
- extra: params.extra,
94
- },
95
- kind: "normal",
96
- source: "egress",
97
- }),
98
- );
99
- }
100
- }