@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
@@ -8,7 +8,7 @@
8
8
  */
9
9
 
10
10
  import { toPluginView } from "@/plugin/core/PluginCatalog.js";
11
- import type { HookRegistry } from "@/plugin/core/HookRegistry.js";
11
+ import { HookRegistry } from "@/plugin/core/HookRegistry.js";
12
12
  import type { Plugin } from "@/types/plugin/PluginDefinition.js";
13
13
  import type { PluginActionResult } from "@/types/plugin/PluginAction.js";
14
14
  import type {
@@ -21,14 +21,13 @@ import type {
21
21
  PluginView,
22
22
  } from "@/types/plugin/PluginRuntime.js";
23
23
  import type { AgentSessionSystemBlock } from "@/types/agent/SessionTypes.js";
24
- import type { AgentContext } from "@/types/runtime/agent/AgentContext.js";
24
+ import type { AgentContext } from "@/agent/AgentContext.js";
25
25
  import type { JsonValue } from "@/types/common/Json.js";
26
26
  import type {
27
27
  PluginRuntimeRecord,
28
28
  PluginSnapshot,
29
29
  } from "@/types/plugin/PluginState.js";
30
-
31
- type ContextResolver = () => AgentContext;
30
+ import type { SessionRunContext } from "@/types/executor/SessionRunContext.js";
32
31
 
33
32
  function now_ms(): number {
34
33
  return Date.now();
@@ -98,12 +97,10 @@ async function run_serial(
98
97
  * PluginRegistry:Agent plugin 注册、卸载与调用实现。
99
98
  */
100
99
  export class PluginRegistry implements AgentPlugins {
101
- private readonly contextResolver: ContextResolver;
100
+ private context?: AgentContext;
102
101
 
103
102
  private readonly hookRegistry: HookRegistry;
104
103
 
105
- private readonly pluginInstances: Map<string, Plugin>;
106
-
107
104
  private readonly records = new Map<string, PluginRuntimeRecord>();
108
105
 
109
106
  private readonly retired_records = new Set<PluginRuntimeRecord>();
@@ -115,14 +112,36 @@ export class PluginRegistry implements AgentPlugins {
115
112
  plugin_name: string;
116
113
  }) => void;
117
114
 
118
- constructor(params: {
119
- contextResolver: ContextResolver;
120
- hookRegistry: HookRegistry;
121
- pluginInstances: Map<string, Plugin>;
122
- }) {
123
- this.contextResolver = params.contextResolver;
124
- this.hookRegistry = params.hookRegistry;
125
- this.pluginInstances = params.pluginInstances;
115
+ constructor(plugins: Plugin[] = []) {
116
+ this.hookRegistry = new HookRegistry({
117
+ get_context: () => this.require_context(),
118
+ is_plugin_ready: (plugin_name) => this.isReady(plugin_name),
119
+ });
120
+ for (const plugin of plugins) {
121
+ this.mount(plugin);
122
+ }
123
+ }
124
+
125
+ /**
126
+ * 绑定当前 Registry 所属的唯一 AgentContext。
127
+ *
128
+ * 关键点(中文)
129
+ * - 初始 Plugin 可以在 Context 创建前同步挂载。
130
+ * - lifecycle、action、hook 首次执行前必须完成绑定。
131
+ */
132
+ bind_context(context: AgentContext): void {
133
+ if (this.context && this.context !== context) {
134
+ throw new Error("PluginRegistry context is already bound");
135
+ }
136
+ this.context = context;
137
+ }
138
+
139
+ /** 返回已经绑定的 AgentContext。 */
140
+ private require_context(): AgentContext {
141
+ if (!this.context) {
142
+ throw new Error("PluginRegistry context is not bound");
143
+ }
144
+ return this.context;
126
145
  }
127
146
 
128
147
  /**
@@ -151,7 +170,6 @@ export class PluginRegistry implements AgentPlugins {
151
170
  const record = create_record(plugin);
152
171
  this.records.set(key, record);
153
172
  this.register_hooks(plugin);
154
- this.pluginInstances.set(key, plugin);
155
173
 
156
174
  try {
157
175
  await this.start_record(record);
@@ -160,7 +178,6 @@ export class PluginRegistry implements AgentPlugins {
160
178
  } catch (error) {
161
179
  this.unregister_hooks(key);
162
180
  this.records.delete(key);
163
- this.pluginInstances.delete(key);
164
181
  throw error;
165
182
  }
166
183
  }
@@ -184,7 +201,6 @@ export class PluginRegistry implements AgentPlugins {
184
201
  const record = create_record(plugin);
185
202
  this.records.set(key, record);
186
203
  this.register_hooks(plugin);
187
- this.pluginInstances.set(key, plugin);
188
204
  return to_plugin_snapshot(record);
189
205
  }
190
206
 
@@ -204,7 +220,6 @@ export class PluginRegistry implements AgentPlugins {
204
220
 
205
221
  this.unregister_hooks(key);
206
222
  this.records.delete(key);
207
- this.pluginInstances.delete(key);
208
223
  this.retire_record(record);
209
224
  this.change_listener?.({ type: "unregister", plugin_name: key });
210
225
  return true;
@@ -308,7 +323,7 @@ export class PluginRegistry implements AgentPlugins {
308
323
  return;
309
324
  }
310
325
  try {
311
- await record.plugin.lifecycle?.start?.(this.contextResolver());
326
+ await record.plugin.lifecycle?.start?.(this.require_context());
312
327
  record.lifecycle_started = true;
313
328
  update_record_state(record, "ready");
314
329
  } catch (error) {
@@ -322,7 +337,7 @@ export class PluginRegistry implements AgentPlugins {
322
337
  await run_serial(record, async () => {
323
338
  if (!record.lifecycle_started) return;
324
339
  try {
325
- await record.plugin.lifecycle?.stop?.(this.contextResolver());
340
+ await record.plugin.lifecycle?.stop?.(this.require_context());
326
341
  } finally {
327
342
  record.lifecycle_started = false;
328
343
  record.updated_at = now_ms();
@@ -476,7 +491,7 @@ export class PluginRegistry implements AgentPlugins {
476
491
  }
477
492
 
478
493
  if (record.plugin.availability) {
479
- return await record.plugin.availability(this.contextResolver());
494
+ return await record.plugin.availability(this.require_context());
480
495
  }
481
496
 
482
497
  return {
@@ -515,6 +530,7 @@ export class PluginRegistry implements AgentPlugins {
515
530
  plugin: string;
516
531
  action: string;
517
532
  payload?: JsonValue;
533
+ run_context?: SessionRunContext;
518
534
  }): Promise<PluginActionResult<JsonValue>> {
519
535
  return await this.run_action_from_records(this.records, params);
520
536
  }
@@ -528,6 +544,7 @@ export class PluginRegistry implements AgentPlugins {
528
544
  plugin: string;
529
545
  action: string;
530
546
  payload?: JsonValue;
547
+ run_context?: SessionRunContext;
531
548
  },
532
549
  ): Promise<PluginActionResult<JsonValue>> {
533
550
  const key = normalize_plugin_name(params.plugin);
@@ -577,10 +594,11 @@ export class PluginRegistry implements AgentPlugins {
577
594
  return parsed_payload;
578
595
  }
579
596
  const result = await action.execute({
580
- context: this.contextResolver(),
597
+ context: this.require_context(),
581
598
  input: parsed_payload.input,
582
599
  pluginName: record.plugin.name,
583
600
  actionName,
601
+ ...(params.run_context ? { run_context: params.run_context } : {}),
584
602
  });
585
603
  return result;
586
604
  } catch (error) {
@@ -595,8 +613,10 @@ export class PluginRegistry implements AgentPlugins {
595
613
  /**
596
614
  * 读取当前生效的 plugin system blocks。
597
615
  */
598
- async systemBlocks(): Promise<AgentSessionSystemBlock[]> {
599
- return await this.system_blocks_from_records(this.records);
616
+ async systemBlocks(
617
+ run_context?: SessionRunContext,
618
+ ): Promise<AgentSessionSystemBlock[]> {
619
+ return await this.system_blocks_from_records(this.records, run_context);
600
620
  }
601
621
 
602
622
  /**
@@ -604,8 +624,9 @@ export class PluginRegistry implements AgentPlugins {
604
624
  */
605
625
  private async system_blocks_from_records(
606
626
  records: ReadonlyMap<string, PluginRuntimeRecord>,
627
+ run_context?: SessionRunContext,
607
628
  ): Promise<AgentSessionSystemBlock[]> {
608
- const context = this.contextResolver();
629
+ const context = this.require_context();
609
630
  const out: AgentSessionSystemBlock[] = [];
610
631
  for (const record of records.values()) {
611
632
  const plugin = record.plugin;
@@ -616,7 +637,9 @@ export class PluginRegistry implements AgentPlugins {
616
637
  const availability = await plugin.availability(context);
617
638
  if (!availability.available) continue;
618
639
  }
619
- const text = String(await plugin.system(context)).trim();
640
+ const text = String(
641
+ await plugin.system(context, run_context),
642
+ ).trim();
620
643
  if (!text) continue;
621
644
  out.push({
622
645
  source: "plugin",
@@ -639,8 +662,8 @@ export class PluginRegistry implements AgentPlugins {
639
662
  read: (params) => this.read_from_records(records, params),
640
663
  runAction: async (params) =>
641
664
  await this.run_action_from_records(records, params),
642
- systemBlocks: async () =>
643
- await this.system_blocks_from_records(records),
665
+ systemBlocks: async (run_context) =>
666
+ await this.system_blocks_from_records(records, run_context),
644
667
  acquire: () => this.acquire_execution_view(records),
645
668
  };
646
669
  }
@@ -669,8 +692,8 @@ export class PluginRegistry implements AgentPlugins {
669
692
  read: (params) => this.read_from_records(leased_records, params),
670
693
  runAction: async (params) =>
671
694
  await this.run_action_from_records(leased_records, params),
672
- systemBlocks: async () =>
673
- await this.system_blocks_from_records(leased_records),
695
+ systemBlocks: async (run_context) =>
696
+ await this.system_blocks_from_records(leased_records, run_context),
674
697
  release: async () => {
675
698
  if (released) return;
676
699
  released = true;
@@ -723,7 +746,7 @@ export class PluginRegistry implements AgentPlugins {
723
746
  } catch (error) {
724
747
  update_record_state(record, "error", String(error));
725
748
  try {
726
- await this.contextResolver().logger.log(
749
+ await this.require_context().logger.log(
727
750
  "error",
728
751
  "[plugin] lifecycle.stop failed after execution release",
729
752
  {
@@ -6,7 +6,7 @@
6
6
  * - 控制动作与类型协议保持一致,只支持状态查询和卸载。
7
7
  */
8
8
 
9
- import type { AgentContext } from "@/types/runtime/agent/AgentContext.js";
9
+ import type { AgentContext } from "@/agent/AgentContext.js";
10
10
  import type {
11
11
  PluginControlAction,
12
12
  PluginControlResult,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Agent remote:统一远程 SDK 客户端。
2
+ * RemoteAgent:统一远程 SDK 客户端。
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - 对外只暴露一个 `url` 入口,不向用户暴露 transport 细节。
@@ -23,9 +23,9 @@ import type {
23
23
  RemoteAgentPluginActionInput,
24
24
  RemoteAgentPluginActionResult,
25
25
  } from "@/types/agent/RemoteAgentPluginAction.js";
26
- import type { RemoteAgentTransport } from "@/agent/remote/RemoteTransport.js";
27
- import { RemoteSession } from "@/agent/remote/RemoteSession.js";
28
- import { create_remote_agent_transport } from "@/agent/remote/TransportFactory.js";
26
+ import type { RemoteAgentTransport } from "@/remote/RemoteTransport.js";
27
+ import { RemoteSession } from "@/remote/RemoteSession.js";
28
+ import { create_remote_agent_transport } from "@/remote/TransportFactory.js";
29
29
 
30
30
  /**
31
31
  * RemoteAgent:远程 Agent 客户端。
@@ -8,7 +8,6 @@ import type {
8
8
  AgentSessionConfigSnapshot,
9
9
  AgentSessionForkInput,
10
10
  AgentSessionInfo,
11
- AgentSessionSetInput,
12
11
  AgentSessionSystemSnapshot,
13
12
  } from "@/types/agent/SessionTypes.js";
14
13
  import type { RemoteAgentSession } from "@/types/agent/SessionActor.js";
@@ -39,7 +38,7 @@ import { SessionEventHub } from "@/session/runtime/SessionEventHub.js";
39
38
  import type {
40
39
  RemoteSessionTransport,
41
40
  TransportSubscription,
42
- } from "@/agent/remote/RemoteTransport.js";
41
+ } from "@/remote/RemoteTransport.js";
43
42
 
44
43
  type Deferred<T> = {
45
44
  /** 当前延迟 Promise。 */
@@ -77,29 +76,9 @@ export class RemoteSession implements RemoteAgentSession {
77
76
  this.id = info.sessionId;
78
77
  this.agentId = info.agentId;
79
78
  this.config = {
80
- ...(info.modelId ? { modelId: info.modelId } : {}),
81
79
  ...(info.modelLabel ? { modelLabel: info.modelLabel } : {}),
82
80
  };
83
- this.event_hub = new SessionEventHub({
84
- create_reply: (mutation) => ({
85
- approval: async ({ decision }) => {
86
- return await this.resolve_approval({
87
- approval_id: require_approval_id(mutation),
88
- decision,
89
- });
90
- },
91
- }),
92
- });
93
- }
94
-
95
- /** 按稳定模型 ID 更新远程 Session 模型。 */
96
- async set(input: AgentSessionSetInput): Promise<void> {
97
- if (input.model) throw new Error("Remote session.set does not accept a local model instance.");
98
- const model_id = String(input.modelId || "").trim();
99
- if (!model_id) throw new Error("Remote session.set requires modelId.");
100
- const info = await this.transport.set(this.id, { modelId: model_id });
101
- this.config.modelId = info.modelId;
102
- this.config.modelLabel = info.modelLabel;
81
+ this.event_hub = new SessionEventHub();
103
82
  }
104
83
 
105
84
  /** 读取当前远程 Session 详情。 */
@@ -292,15 +271,3 @@ function create_turn_handle(lifecycle: RemoteTurnLifecycle): AgentSessionTurnHan
292
271
  finished: lifecycle.deferred_finished.promise,
293
272
  };
294
273
  }
295
-
296
- function require_approval_id(mutation: SessionMutation): string {
297
- if (
298
- mutation.variant === "part" &&
299
- mutation.type === "tool" &&
300
- mutation.part.state === "approval-required" &&
301
- mutation.part.approval_id
302
- ) {
303
- return mutation.part.approval_id;
304
- }
305
- throw new Error("Current Session Mutation is not an approval-required Tool Part");
306
- }
@@ -18,7 +18,6 @@ import type {
18
18
  AgentSessionInfo,
19
19
  AgentSessionSummaryPage,
20
20
  AgentSessionSystemSnapshot,
21
- AgentSessionSetInput,
22
21
  } from "@/types/agent/SessionTypes.js";
23
22
  import type {
24
23
  RemoteAgentPluginActionInput,
@@ -53,8 +52,6 @@ export type TransportSubscription = {
53
52
  export type RemoteSessionTransport = {
54
53
  /** 读取 session 信息。 */
55
54
  get_info(session_id: string): Promise<AgentSessionInfo>;
56
- /** 按稳定模型 ID 更新远程 session 配置。 */
57
- set(session_id: string, input: AgentSessionSetInput): Promise<AgentSessionInfo>;
58
55
  /** 发送 prompt。 */
59
56
  prompt(
60
57
  session_id: string,
@@ -6,9 +6,9 @@
6
6
  * - HTTP token 只传给 HTTP transport,RPC 不读取 token。
7
7
  */
8
8
 
9
- import type { RemoteAgentTransport } from "@/agent/remote/RemoteTransport.js";
10
- import { HttpRemoteAgentTransport } from "@/agent/remote/transports/HttpRemoteAgentTransport.js";
11
- import { RpcRemoteAgentTransport } from "@/agent/remote/transports/RpcRemoteAgentTransport.js";
9
+ import type { RemoteAgentTransport } from "@/remote/RemoteTransport.js";
10
+ import { HttpRemoteAgentTransport } from "@/remote/transports/HttpRemoteAgentTransport.js";
11
+ import { RpcRemoteAgentTransport } from "@/remote/transports/RpcRemoteAgentTransport.js";
12
12
 
13
13
  /**
14
14
  * 根据 URL 协议创建远程 transport。
@@ -18,7 +18,6 @@ import type {
18
18
  AgentSessionInfo,
19
19
  AgentSessionSummaryPage,
20
20
  AgentSessionSystemSnapshot,
21
- AgentSessionSetInput,
22
21
  } from "@/types/agent/SessionTypes.js";
23
22
  import type {
24
23
  ListSessionMessagesInput,
@@ -34,7 +33,7 @@ import type { AgentSessionStopResult } from "@/types/sdk/AgentSessionStop.js";
34
33
  import type {
35
34
  RemoteAgentTransport,
36
35
  TransportSubscription,
37
- } from "@/agent/remote/RemoteTransport.js";
36
+ } from "@/remote/RemoteTransport.js";
38
37
  import type {
39
38
  ResolveSessionApprovalInput,
40
39
  SessionApproval,
@@ -102,27 +101,6 @@ export class HttpRemoteAgentTransport implements RemoteAgentTransport {
102
101
  return payload.session;
103
102
  }
104
103
 
105
- async set(
106
- session_id: string,
107
- input: AgentSessionSetInput,
108
- ): Promise<AgentSessionInfo> {
109
- const payload = await read_http_json<{
110
- success?: boolean;
111
- error?: string;
112
- session?: AgentSessionInfo;
113
- }>(`${this.base_url}/api/sdk/sessions/${encodeURIComponent(session_id)}/model`, {
114
- method: "PUT",
115
- headers: this.headers({
116
- "Content-Type": "application/json",
117
- }),
118
- body: JSON.stringify({ modelId: input.modelId }),
119
- });
120
- if (!payload.success || !payload.session?.sessionId) {
121
- throw new Error(String(payload.error || "Remote session model update failed"));
122
- }
123
- return payload.session;
124
- }
125
-
126
104
  async prompt(
127
105
  session_id: string,
128
106
  input: AgentSessionPromptInput,
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Agent 本机 RPC Client。
2
+ * RemoteAgent 本机 RPC Client。
3
3
  *
4
4
  * 职责说明(中文)
5
5
  * - 为 `RemoteAgent(rpc://...)` 提供最小客户端实现。
@@ -19,7 +19,6 @@ import type {
19
19
  AgentSessionInfo,
20
20
  AgentSessionSummaryPage,
21
21
  AgentSessionSystemSnapshot,
22
- AgentSessionSetInput,
23
22
  } from "@/types/agent/SessionTypes.js";
24
23
  import type {
25
24
  ListSessionMessagesInput,
@@ -171,23 +170,6 @@ export class RpcClient {
171
170
  return data.session;
172
171
  }
173
172
 
174
- /** 按稳定模型 ID 更新远程 Session。 */
175
- async set_session(params: {
176
- /** 目标 session id。 */
177
- session_id: string;
178
- /** Session 配置更新输入。 */
179
- input: AgentSessionSetInput;
180
- }): Promise<AgentSessionInfo> {
181
- const data = await this.request<{ session: AgentSessionInfo }>({
182
- method: "sdk.sessions.set",
183
- params: {
184
- sessionId: params.session_id,
185
- input: params.input,
186
- },
187
- });
188
- return data.session;
189
- }
190
-
191
173
  /**
192
174
  * 发送 prompt。
193
175
  */
@@ -18,7 +18,6 @@ import type {
18
18
  AgentSessionInfo,
19
19
  AgentSessionSummaryPage,
20
20
  AgentSessionSystemSnapshot,
21
- AgentSessionSetInput,
22
21
  } from "@/types/agent/SessionTypes.js";
23
22
  import type {
24
23
  ListSessionMessagesInput,
@@ -31,11 +30,11 @@ import type {
31
30
  import type { SessionMutation } from "@/types/session/SessionMutation.js";
32
31
  import type { AgentSessionPromptInput } from "@/types/sdk/AgentSessionPrompt.js";
33
32
  import type { AgentSessionStopResult } from "@/types/sdk/AgentSessionStop.js";
34
- import { RpcClient, parse_rpc_url } from "@/rpc/Client.js";
33
+ import { RpcClient, parse_rpc_url } from "@/remote/transports/RpcClient.js";
35
34
  import type {
36
35
  RemoteAgentTransport,
37
36
  TransportSubscription,
38
- } from "@/agent/remote/RemoteTransport.js";
37
+ } from "@/remote/RemoteTransport.js";
39
38
  import type {
40
39
  ResolveSessionApprovalInput,
41
40
  SessionApproval,
@@ -62,13 +61,6 @@ export class RpcRemoteAgentTransport implements RemoteAgentTransport {
62
61
  return await this.client.get_session(session_id);
63
62
  }
64
63
 
65
- async set(
66
- session_id: string,
67
- input: AgentSessionSetInput,
68
- ): Promise<AgentSessionInfo> {
69
- return await this.client.set_session({ session_id, input });
70
- }
71
-
72
64
  async prompt(
73
65
  session_id: string,
74
66
  input: AgentSessionPromptInput,
@@ -0,0 +1,79 @@
1
+ /**
2
+ * 默认 Session Composer。
3
+ *
4
+ * 负责把 Session 的只读状态与 canonical Message 快照组装为模型输入;
5
+ * 压缩只生成计划,实际 Segment 提交仍由 SessionMessages 负责。
6
+ */
7
+
8
+ import { build_session_system_blocks } from "@/session/SessionSystem.js";
9
+ import { compose_session_compaction } from "@/session/messages/SessionMessageCompaction.js";
10
+ import { to_executor_history } from "@/session/messages/SessionMessageCodec.js";
11
+ import type {
12
+ SessionComposer,
13
+ SessionCompactionInput,
14
+ SessionCompactionPlan,
15
+ SessionComposeInput,
16
+ SessionStepInput,
17
+ } from "@/types/session/SessionComposer.js";
18
+
19
+ /** 默认 Session 执行策略。 */
20
+ export class DefaultSessionComposer implements SessionComposer {
21
+ readonly name = "default_session";
22
+
23
+ /** 组装当前 Step 的 system、history 与 tools。 */
24
+ async compose(input: SessionComposeInput): Promise<SessionStepInput> {
25
+ const system_blocks = await build_session_system_blocks({
26
+ agent_id: input.session.agent_id,
27
+ project_root: input.session.project_root,
28
+ session_id: input.session.session_id,
29
+ created_at: input.session.created_at,
30
+ timezone: input.session.timezone,
31
+ get_instruction_system_blocks: () => [
32
+ ...input.state.instruction_system_blocks,
33
+ ],
34
+ get_managed_plugin_system_blocks: async () => [
35
+ ...input.state.managed_plugin_system_blocks,
36
+ ],
37
+ get_plugin_system_blocks: async () => [
38
+ ...input.state.plugin_system_blocks,
39
+ ],
40
+ });
41
+
42
+ return {
43
+ system: system_blocks.map((block) => ({
44
+ role: "system" as const,
45
+ content: block.content,
46
+ })),
47
+ system_blocks,
48
+ messages: to_executor_history(
49
+ input.session.session_id,
50
+ input.history,
51
+ ),
52
+ tools: { ...input.state.tools },
53
+ };
54
+ }
55
+
56
+ /** 生成等待 SessionMessages 提交的压缩计划。 */
57
+ async compact(
58
+ input: SessionCompactionInput,
59
+ ): Promise<SessionCompactionPlan | null> {
60
+ if (!input.force && input.turn.retry_count <= 0) return null;
61
+ if (!input.state.model) return null;
62
+ return await compose_session_compaction({
63
+ session_id: input.session.session_id,
64
+ snapshot: input.history,
65
+ model: input.state.model,
66
+ });
67
+ }
68
+
69
+ /** 判断错误是否属于模型上下文超限。 */
70
+ should_compact(error: unknown): boolean {
71
+ const message = String(error ?? "");
72
+ return (
73
+ message.includes("context_length") ||
74
+ message.includes("too long") ||
75
+ message.includes("maximum context") ||
76
+ message.includes("context window")
77
+ );
78
+ }
79
+ }