@downcity/agent 1.1.74 → 1.1.81

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 (514) hide show
  1. package/README.md +15 -18
  2. package/bin/agent/local/Agent.d.ts +82 -0
  3. package/bin/agent/local/Agent.d.ts.map +1 -0
  4. package/bin/agent/local/Agent.js +154 -0
  5. package/bin/agent/local/Agent.js.map +1 -0
  6. package/bin/agent/local/AgentInstructions.d.ts +22 -0
  7. package/bin/agent/local/AgentInstructions.d.ts.map +1 -0
  8. package/bin/agent/local/AgentInstructions.js +57 -0
  9. package/bin/agent/local/AgentInstructions.js.map +1 -0
  10. package/bin/agent/local/AgentPluginFactory.d.ts +29 -0
  11. package/bin/agent/local/AgentPluginFactory.d.ts.map +1 -0
  12. package/bin/agent/local/AgentPluginFactory.js +53 -0
  13. package/bin/agent/local/AgentPluginFactory.js.map +1 -0
  14. package/bin/{runtime/host/AgentHostRuntime.d.ts → agent/local/AgentRuntimeAssembly.d.ts} +2 -2
  15. package/bin/agent/local/AgentRuntimeAssembly.d.ts.map +1 -0
  16. package/bin/{runtime/host/AgentHostRuntime.js → agent/local/AgentRuntimeAssembly.js} +2 -2
  17. package/bin/agent/local/AgentRuntimeAssembly.js.map +1 -0
  18. package/bin/agent/local/AgentRuntimeFactory.d.ts +72 -0
  19. package/bin/agent/local/AgentRuntimeFactory.d.ts.map +1 -0
  20. package/bin/agent/local/AgentRuntimeFactory.js +73 -0
  21. package/bin/agent/local/AgentRuntimeFactory.js.map +1 -0
  22. package/bin/{runtime/host → agent/local}/ProjectSetup.d.ts +1 -1
  23. package/bin/agent/local/ProjectSetup.d.ts.map +1 -0
  24. package/bin/{runtime/host → agent/local}/ProjectSetup.js +1 -1
  25. package/bin/agent/local/ProjectSetup.js.map +1 -0
  26. package/bin/agent/local/services/AgentAssemblyService.d.ts +112 -0
  27. package/bin/agent/local/services/AgentAssemblyService.d.ts.map +1 -0
  28. package/bin/agent/local/services/AgentAssemblyService.js +135 -0
  29. package/bin/agent/local/services/AgentAssemblyService.js.map +1 -0
  30. package/bin/agent/local/services/AgentLifecycleService.d.ts +59 -0
  31. package/bin/agent/local/services/AgentLifecycleService.d.ts.map +1 -0
  32. package/bin/agent/local/services/AgentLifecycleService.js +136 -0
  33. package/bin/agent/local/services/AgentLifecycleService.js.map +1 -0
  34. package/bin/agent/local/services/AgentSessionManager.d.ts +106 -0
  35. package/bin/agent/local/services/AgentSessionManager.d.ts.map +1 -0
  36. package/bin/agent/local/services/AgentSessionManager.js +182 -0
  37. package/bin/agent/local/services/AgentSessionManager.js.map +1 -0
  38. package/bin/agent/{RemoteAgent.d.ts → remote/RemoteAgent.d.ts} +3 -3
  39. package/bin/agent/remote/RemoteAgent.d.ts.map +1 -0
  40. package/bin/agent/remote/RemoteAgent.js +58 -0
  41. package/bin/agent/remote/RemoteAgent.js.map +1 -0
  42. package/bin/agent/remote/RemoteSession.d.ts +62 -0
  43. package/bin/agent/remote/RemoteSession.d.ts.map +1 -0
  44. package/bin/agent/remote/RemoteSession.js +225 -0
  45. package/bin/agent/remote/RemoteSession.js.map +1 -0
  46. package/bin/agent/remote/RemoteTransport.d.ts +52 -0
  47. package/bin/agent/remote/RemoteTransport.d.ts.map +1 -0
  48. package/bin/agent/remote/RemoteTransport.js +9 -0
  49. package/bin/agent/remote/RemoteTransport.js.map +1 -0
  50. package/bin/agent/remote/TransportFactory.d.ts +13 -0
  51. package/bin/agent/remote/TransportFactory.d.ts.map +1 -0
  52. package/bin/agent/remote/TransportFactory.js +22 -0
  53. package/bin/agent/remote/TransportFactory.js.map +1 -0
  54. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts +35 -0
  55. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -0
  56. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js +259 -0
  57. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +1 -0
  58. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts +34 -0
  59. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -0
  60. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js +66 -0
  61. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +1 -0
  62. package/bin/executor/Executor.d.ts +7 -20
  63. package/bin/executor/Executor.d.ts.map +1 -1
  64. package/bin/executor/Executor.js +77 -348
  65. package/bin/executor/Executor.js.map +1 -1
  66. package/bin/executor/SessionRunScope.d.ts +18 -34
  67. package/bin/executor/SessionRunScope.d.ts.map +1 -1
  68. package/bin/executor/SessionRunScope.js +42 -28
  69. package/bin/executor/SessionRunScope.js.map +1 -1
  70. package/bin/executor/composer/context/LocalSessionContextComposer.d.ts +5 -3
  71. package/bin/executor/composer/context/LocalSessionContextComposer.d.ts.map +1 -1
  72. package/bin/executor/composer/context/LocalSessionContextComposer.js +11 -18
  73. package/bin/executor/composer/context/LocalSessionContextComposer.js.map +1 -1
  74. package/bin/executor/composer/context/SessionContextComposer.d.ts +8 -3
  75. package/bin/executor/composer/context/SessionContextComposer.d.ts.map +1 -1
  76. package/bin/executor/composer/history/SessionHistoryWriter.js +2 -2
  77. package/bin/executor/composer/history/SessionHistoryWriter.js.map +1 -1
  78. package/bin/executor/composer/system/SessionSystemComposer.d.ts +2 -1
  79. package/bin/executor/composer/system/SessionSystemComposer.d.ts.map +1 -1
  80. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +2 -1
  81. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +1 -1
  82. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js +2 -4
  83. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js.map +1 -1
  84. package/bin/executor/core-engine/CoreEngineRunner.d.ts +62 -0
  85. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -0
  86. package/bin/executor/core-engine/CoreEngineRunner.js +309 -0
  87. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -0
  88. package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts +5 -0
  89. package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts.map +1 -1
  90. package/bin/executor/core-engine/CoreEngineUiStreamCollector.js +2 -4
  91. package/bin/executor/core-engine/CoreEngineUiStreamCollector.js.map +1 -1
  92. package/bin/executor/messages/AssistantResultPersistence.d.ts +3 -3
  93. package/bin/executor/messages/AssistantResultPersistence.d.ts.map +1 -1
  94. package/bin/executor/messages/AssistantResultPersistence.js +2 -6
  95. package/bin/executor/messages/AssistantResultPersistence.js.map +1 -1
  96. package/bin/executor/messages/SessionStepEventMapper.d.ts +7 -8
  97. package/bin/executor/messages/SessionStepEventMapper.d.ts.map +1 -1
  98. package/bin/executor/messages/SessionStepEventMapper.js +55 -86
  99. package/bin/executor/messages/SessionStepEventMapper.js.map +1 -1
  100. package/bin/executor/messages/UserVisibleText.d.ts +2 -10
  101. package/bin/executor/messages/UserVisibleText.d.ts.map +1 -1
  102. package/bin/executor/messages/UserVisibleText.js +3 -16
  103. package/bin/executor/messages/UserVisibleText.js.map +1 -1
  104. package/bin/executor/services/ExecutorInflightService.d.ts +39 -0
  105. package/bin/executor/services/ExecutorInflightService.d.ts.map +1 -0
  106. package/bin/executor/services/ExecutorInflightService.js +75 -0
  107. package/bin/executor/services/ExecutorInflightService.js.map +1 -0
  108. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +103 -0
  109. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -0
  110. package/bin/executor/services/ExecutorRecoveryPolicy.js +87 -0
  111. package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -0
  112. package/bin/executor/store/history/SessionHistoryStore.d.ts +12 -0
  113. package/bin/executor/store/history/SessionHistoryStore.d.ts.map +1 -1
  114. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +12 -0
  115. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
  116. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +145 -8
  117. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
  118. package/bin/executor/tools/plugin/PluginToolBridge.d.ts +19 -0
  119. package/bin/executor/tools/plugin/PluginToolBridge.d.ts.map +1 -0
  120. package/bin/executor/tools/plugin/PluginToolBridge.js +143 -0
  121. package/bin/executor/tools/plugin/PluginToolBridge.js.map +1 -0
  122. package/bin/executor/tools/plugin/PluginToolDefinition.d.ts +32 -0
  123. package/bin/executor/tools/plugin/PluginToolDefinition.d.ts.map +1 -0
  124. package/bin/executor/tools/plugin/PluginToolDefinition.js +27 -0
  125. package/bin/executor/tools/plugin/PluginToolDefinition.js.map +1 -0
  126. package/bin/executor/tools/plugin/PluginToolSchemas.d.ts +14 -0
  127. package/bin/executor/tools/plugin/PluginToolSchemas.d.ts.map +1 -0
  128. package/bin/executor/tools/plugin/PluginToolSchemas.js +19 -0
  129. package/bin/executor/tools/plugin/PluginToolSchemas.js.map +1 -0
  130. package/bin/executor/tools/plugin/types/PluginTool.d.ts +39 -0
  131. package/bin/executor/tools/plugin/types/PluginTool.d.ts.map +1 -0
  132. package/bin/executor/tools/plugin/types/PluginTool.js +9 -0
  133. package/bin/executor/tools/plugin/types/PluginTool.js.map +1 -0
  134. package/bin/executor/tools/shell/ShellToolBridge.js +3 -3
  135. package/bin/executor/tools/shell/ShellToolBridge.js.map +1 -1
  136. package/bin/executor/tools/shell/ShellToolFormatting.d.ts +1 -10
  137. package/bin/executor/tools/shell/ShellToolFormatting.d.ts.map +1 -1
  138. package/bin/executor/tools/shell/ShellToolFormatting.js +1 -39
  139. package/bin/executor/tools/shell/ShellToolFormatting.js.map +1 -1
  140. package/bin/executor/types/SessionHistoryPaths.d.ts +4 -0
  141. package/bin/executor/types/SessionHistoryPaths.d.ts.map +1 -1
  142. package/bin/executor/types/SessionRun.d.ts +18 -0
  143. package/bin/executor/types/SessionRun.d.ts.map +1 -1
  144. package/bin/index.d.ts +15 -6
  145. package/bin/index.d.ts.map +1 -1
  146. package/bin/index.js +6 -3
  147. package/bin/index.js.map +1 -1
  148. package/bin/plugin/core/BasePlugin.d.ts +2 -2
  149. package/bin/plugin/core/BasePlugin.d.ts.map +1 -1
  150. package/bin/plugin/core/BasePlugin.js.map +1 -1
  151. package/bin/plugin/core/ImagePlugin.d.ts +56 -0
  152. package/bin/plugin/core/ImagePlugin.d.ts.map +1 -0
  153. package/bin/plugin/core/ImagePlugin.js +109 -0
  154. package/bin/plugin/core/ImagePlugin.js.map +1 -0
  155. package/bin/plugin/core/PluginCommandRequest.d.ts +1 -1
  156. package/bin/plugin/core/PluginCommandRequest.js +1 -1
  157. package/bin/plugin/core/PluginLocalExecution.js +1 -1
  158. package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
  159. package/bin/plugin/core/ProjectConfigStore.d.ts +3 -2
  160. package/bin/plugin/core/ProjectConfigStore.d.ts.map +1 -1
  161. package/bin/plugin/core/ProjectConfigStore.js +3 -4
  162. package/bin/plugin/core/ProjectConfigStore.js.map +1 -1
  163. package/bin/plugin/types/Plugin.d.ts +10 -842
  164. package/bin/plugin/types/Plugin.d.ts.map +1 -1
  165. package/bin/plugin/types/Plugin.js +3 -4
  166. package/bin/plugin/types/Plugin.js.map +1 -1
  167. package/bin/plugin/types/PluginState.d.ts +1 -1
  168. package/bin/plugin/types/PluginState.d.ts.map +1 -1
  169. package/bin/rpc/Client.d.ts +2 -99
  170. package/bin/rpc/Client.d.ts.map +1 -1
  171. package/bin/rpc/Client.js +0 -46
  172. package/bin/rpc/Client.js.map +1 -1
  173. package/bin/rpc/Server.d.ts +5 -21
  174. package/bin/rpc/Server.d.ts.map +1 -1
  175. package/bin/rpc/Server.js +30 -315
  176. package/bin/rpc/Server.js.map +1 -1
  177. package/bin/rpc/server/InternalHandlers.d.ts +21 -0
  178. package/bin/rpc/server/InternalHandlers.d.ts.map +1 -0
  179. package/bin/rpc/server/InternalHandlers.js +190 -0
  180. package/bin/rpc/server/InternalHandlers.js.map +1 -0
  181. package/bin/rpc/server/RequestDispatcher.d.ts +27 -0
  182. package/bin/rpc/server/RequestDispatcher.d.ts.map +1 -0
  183. package/bin/rpc/server/RequestDispatcher.js +38 -0
  184. package/bin/rpc/server/RequestDispatcher.js.map +1 -0
  185. package/bin/rpc/server/SdkSessionHandlers.d.ts +25 -0
  186. package/bin/rpc/server/SdkSessionHandlers.d.ts.map +1 -0
  187. package/bin/rpc/server/SdkSessionHandlers.js +86 -0
  188. package/bin/rpc/server/SdkSessionHandlers.js.map +1 -0
  189. package/bin/rpc/server/ServerTypes.d.ts +59 -0
  190. package/bin/rpc/server/ServerTypes.d.ts.map +1 -0
  191. package/bin/rpc/server/ServerTypes.js +9 -0
  192. package/bin/rpc/server/ServerTypes.js.map +1 -0
  193. package/bin/{runtime/sandbox → sandbox}/MacOsSeatbeltSandbox.d.ts +1 -1
  194. package/bin/sandbox/MacOsSeatbeltSandbox.d.ts.map +1 -0
  195. package/bin/sandbox/MacOsSeatbeltSandbox.js.map +1 -0
  196. package/bin/{runtime/sandbox → sandbox}/SandboxConfigResolver.d.ts +2 -2
  197. package/bin/sandbox/SandboxConfigResolver.d.ts.map +1 -0
  198. package/bin/sandbox/SandboxConfigResolver.js.map +1 -0
  199. package/bin/{runtime/sandbox → sandbox}/SandboxRunner.d.ts +2 -2
  200. package/bin/sandbox/SandboxRunner.d.ts.map +1 -0
  201. package/bin/{runtime/sandbox → sandbox}/SandboxRunner.js +2 -2
  202. package/bin/sandbox/SandboxRunner.js.map +1 -0
  203. package/bin/sandbox/types/Sandbox.d.ts.map +1 -0
  204. package/bin/sandbox/types/Sandbox.js.map +1 -0
  205. package/bin/{runtime/sandbox → sandbox}/types/SandboxRuntime.d.ts +2 -2
  206. package/bin/sandbox/types/SandboxRuntime.d.ts.map +1 -0
  207. package/bin/sandbox/types/SandboxRuntime.js.map +1 -0
  208. package/bin/session/Session.d.ts +14 -83
  209. package/bin/session/Session.d.ts.map +1 -1
  210. package/bin/session/Session.js +140 -362
  211. package/bin/session/Session.js.map +1 -1
  212. package/bin/session/SessionSystemBuilder.d.ts +2 -1
  213. package/bin/session/SessionSystemBuilder.d.ts.map +1 -1
  214. package/bin/session/SessionSystemBuilder.js +2 -3
  215. package/bin/session/SessionSystemBuilder.js.map +1 -1
  216. package/bin/session/browse/Browse.d.ts +1 -1
  217. package/bin/session/browse/Browse.d.ts.map +1 -1
  218. package/bin/session/browse/Browse.js +28 -13
  219. package/bin/session/browse/Browse.js.map +1 -1
  220. package/bin/session/index.d.ts +1 -1
  221. package/bin/session/index.d.ts.map +1 -1
  222. package/bin/session/index.js +1 -1
  223. package/bin/session/index.js.map +1 -1
  224. package/bin/session/services/SessionStateService.d.ts +132 -0
  225. package/bin/session/services/SessionStateService.d.ts.map +1 -0
  226. package/bin/session/services/SessionStateService.js +242 -0
  227. package/bin/session/services/SessionStateService.js.map +1 -0
  228. package/bin/session/services/SessionTurnService.d.ts +66 -0
  229. package/bin/session/services/SessionTurnService.d.ts.map +1 -0
  230. package/bin/session/services/SessionTurnService.js +137 -0
  231. package/bin/session/services/SessionTurnService.js.map +1 -0
  232. package/bin/session/services/SessionViewService.d.ts +105 -0
  233. package/bin/session/services/SessionViewService.d.ts.map +1 -0
  234. package/bin/session/services/SessionViewService.js +184 -0
  235. package/bin/session/services/SessionViewService.js.map +1 -0
  236. package/bin/session/storage/Paths.d.ts +9 -0
  237. package/bin/session/storage/Paths.d.ts.map +1 -1
  238. package/bin/session/storage/Paths.js +11 -0
  239. package/bin/session/storage/Paths.js.map +1 -1
  240. package/bin/types/agent/AgentOptions.d.ts +152 -0
  241. package/bin/types/agent/AgentOptions.d.ts.map +1 -0
  242. package/bin/types/agent/AgentOptions.js +9 -0
  243. package/bin/types/agent/AgentOptions.js.map +1 -0
  244. package/bin/types/{runtime/host/AgentHost.d.ts → agent/AgentRuntimeAssembly.d.ts} +4 -4
  245. package/bin/types/agent/AgentRuntimeAssembly.d.ts.map +1 -0
  246. package/bin/types/{runtime/host/AgentHost.js → agent/AgentRuntimeAssembly.js} +3 -3
  247. package/bin/types/agent/AgentRuntimeAssembly.js.map +1 -0
  248. package/bin/types/agent/AgentTypes.d.ts +10 -613
  249. package/bin/types/agent/AgentTypes.d.ts.map +1 -1
  250. package/bin/types/agent/AgentTypes.js +4 -4
  251. package/bin/types/agent/RemoteAgentOptions.d.ts +28 -0
  252. package/bin/types/agent/RemoteAgentOptions.d.ts.map +1 -0
  253. package/bin/types/agent/RemoteAgentOptions.js +9 -0
  254. package/bin/types/agent/RemoteAgentOptions.js.map +1 -0
  255. package/bin/types/agent/SessionActor.d.ts +60 -0
  256. package/bin/types/agent/SessionActor.d.ts.map +1 -0
  257. package/bin/types/agent/SessionActor.js +9 -0
  258. package/bin/types/agent/SessionActor.js.map +1 -0
  259. package/bin/types/agent/SessionTypes.d.ts +312 -0
  260. package/bin/types/agent/SessionTypes.d.ts.map +1 -0
  261. package/bin/types/agent/SessionTypes.js +9 -0
  262. package/bin/types/agent/SessionTypes.js.map +1 -0
  263. package/bin/types/config/DowncityConfig.d.ts +1 -1
  264. package/bin/types/config/DowncityConfig.d.ts.map +1 -1
  265. package/bin/types/executor/SessionRunContext.d.ts +66 -0
  266. package/bin/types/executor/SessionRunContext.d.ts.map +1 -0
  267. package/bin/types/executor/SessionRunContext.js +10 -0
  268. package/bin/types/executor/SessionRunContext.js.map +1 -0
  269. package/bin/types/{runtime/host → platform}/Store.d.ts +1 -1
  270. package/bin/types/platform/Store.d.ts.map +1 -0
  271. package/bin/types/{runtime/host → platform}/Store.js +1 -1
  272. package/bin/types/platform/Store.js.map +1 -0
  273. package/bin/types/plugin/ImagePlugin.d.ts +94 -0
  274. package/bin/types/plugin/ImagePlugin.d.ts.map +1 -0
  275. package/bin/types/plugin/ImagePlugin.js +10 -0
  276. package/bin/types/plugin/ImagePlugin.js.map +1 -0
  277. package/bin/types/plugin/PluginAction.d.ts +119 -0
  278. package/bin/types/plugin/PluginAction.d.ts.map +1 -0
  279. package/bin/types/plugin/PluginAction.js +9 -0
  280. package/bin/types/plugin/PluginAction.js.map +1 -0
  281. package/bin/types/plugin/PluginCommand.d.ts +80 -0
  282. package/bin/types/plugin/PluginCommand.d.ts.map +1 -0
  283. package/bin/types/plugin/PluginCommand.js +9 -0
  284. package/bin/types/plugin/PluginCommand.js.map +1 -0
  285. package/bin/types/plugin/PluginDefinition.d.ts +57 -0
  286. package/bin/types/plugin/PluginDefinition.d.ts.map +1 -0
  287. package/bin/types/plugin/PluginDefinition.js +9 -0
  288. package/bin/types/plugin/PluginDefinition.js.map +1 -0
  289. package/bin/types/plugin/PluginHttp.d.ts +34 -0
  290. package/bin/types/plugin/PluginHttp.d.ts.map +1 -0
  291. package/bin/types/plugin/PluginHttp.js +9 -0
  292. package/bin/types/plugin/PluginHttp.js.map +1 -0
  293. package/bin/types/plugin/PluginRuntime.d.ts +148 -0
  294. package/bin/types/plugin/PluginRuntime.d.ts.map +1 -0
  295. package/bin/types/plugin/PluginRuntime.js +9 -0
  296. package/bin/types/plugin/PluginRuntime.js.map +1 -0
  297. package/bin/types/plugin/PluginSetup.d.ts +133 -0
  298. package/bin/types/plugin/PluginSetup.d.ts.map +1 -0
  299. package/bin/types/plugin/PluginSetup.js +9 -0
  300. package/bin/types/plugin/PluginSetup.js.map +1 -0
  301. package/bin/types/plugin/PluginState.d.ts +69 -0
  302. package/bin/types/plugin/PluginState.d.ts.map +1 -0
  303. package/bin/types/plugin/PluginState.js +9 -0
  304. package/bin/types/plugin/PluginState.js.map +1 -0
  305. package/bin/types/rpc/RpcProtocol.d.ts +323 -0
  306. package/bin/types/rpc/RpcProtocol.d.ts.map +1 -0
  307. package/bin/types/rpc/RpcProtocol.js +10 -0
  308. package/bin/types/rpc/RpcProtocol.js.map +1 -0
  309. package/bin/types/runtime/agent/AgentContext.d.ts +1 -1
  310. package/bin/types/runtime/agent/AgentContext.d.ts.map +1 -1
  311. package/bin/types/runtime/agent/AgentRuntime.d.ts +1 -1
  312. package/bin/types/runtime/agent/AgentRuntime.d.ts.map +1 -1
  313. package/bin/types/session/SessionComposerOptions.d.ts +90 -0
  314. package/bin/types/session/SessionComposerOptions.d.ts.map +1 -0
  315. package/bin/types/session/SessionComposerOptions.js +10 -0
  316. package/bin/types/session/SessionComposerOptions.js.map +1 -0
  317. package/bin/types/session/SessionLocalState.d.ts +35 -0
  318. package/bin/types/session/SessionLocalState.d.ts.map +1 -0
  319. package/bin/types/session/SessionLocalState.js +10 -0
  320. package/bin/types/session/SessionLocalState.js.map +1 -0
  321. package/bin/types/session/SessionOptions.d.ts +85 -0
  322. package/bin/types/session/SessionOptions.d.ts.map +1 -0
  323. package/bin/types/session/SessionOptions.js +10 -0
  324. package/bin/types/session/SessionOptions.js.map +1 -0
  325. package/package.json +2 -2
  326. package/scripts/session-history-inflight.test.mjs +146 -0
  327. package/src/agent/local/Agent.ts +197 -0
  328. package/src/agent/local/AgentInstructions.ts +68 -0
  329. package/src/agent/local/AgentPluginFactory.ts +83 -0
  330. package/src/{runtime/host/AgentHostRuntime.ts → agent/local/AgentRuntimeAssembly.ts} +2 -2
  331. package/src/agent/local/AgentRuntimeFactory.ts +152 -0
  332. package/src/{runtime/host → agent/local}/ProjectSetup.ts +1 -1
  333. package/src/agent/local/services/AgentAssemblyService.ts +268 -0
  334. package/src/agent/local/services/AgentLifecycleService.ts +187 -0
  335. package/src/agent/local/services/AgentSessionManager.ts +291 -0
  336. package/src/agent/remote/RemoteAgent.ts +76 -0
  337. package/src/agent/remote/RemoteSession.ts +287 -0
  338. package/src/agent/remote/RemoteTransport.ts +71 -0
  339. package/src/agent/remote/TransportFactory.ts +29 -0
  340. package/src/agent/remote/transports/HttpRemoteAgentTransport.ts +347 -0
  341. package/src/agent/remote/transports/RpcRemoteAgentTransport.ts +107 -0
  342. package/src/executor/Executor.ts +107 -426
  343. package/src/executor/README.md +4 -4
  344. package/src/executor/SessionRunScope.ts +47 -71
  345. package/src/executor/composer/context/LocalSessionContextComposer.ts +24 -20
  346. package/src/executor/composer/context/SessionContextComposer.ts +13 -3
  347. package/src/executor/composer/history/SessionHistoryWriter.ts +2 -2
  348. package/src/executor/composer/system/SessionSystemComposer.ts +2 -1
  349. package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +3 -4
  350. package/src/executor/core-engine/CoreEngineRunner.ts +433 -0
  351. package/src/executor/core-engine/CoreEngineUiStreamCollector.ts +7 -5
  352. package/src/executor/messages/AssistantResultPersistence.ts +4 -12
  353. package/src/executor/messages/SessionStepEventMapper.ts +59 -101
  354. package/src/executor/messages/UserVisibleText.ts +3 -18
  355. package/src/executor/services/ExecutorInflightService.ts +101 -0
  356. package/src/executor/services/ExecutorRecoveryPolicy.ts +213 -0
  357. package/src/executor/store/history/SessionHistoryStore.ts +15 -0
  358. package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +164 -11
  359. package/src/executor/tools/plugin/PluginToolBridge.ts +161 -0
  360. package/src/executor/tools/plugin/PluginToolDefinition.ts +32 -0
  361. package/src/executor/tools/plugin/PluginToolSchemas.ts +20 -0
  362. package/src/executor/tools/plugin/types/PluginTool.ts +41 -0
  363. package/src/executor/tools/shell/ShellToolBridge.ts +3 -3
  364. package/src/executor/tools/shell/ShellToolFormatting.ts +1 -50
  365. package/src/executor/types/SessionHistoryPaths.ts +5 -0
  366. package/src/executor/types/SessionRun.ts +20 -0
  367. package/src/index.ts +38 -5
  368. package/src/plugin/core/BasePlugin.ts +2 -2
  369. package/src/plugin/core/ImagePlugin.ts +128 -0
  370. package/src/plugin/core/PluginCommandRequest.ts +1 -1
  371. package/src/plugin/core/PluginLocalExecution.ts +1 -1
  372. package/src/plugin/core/ProjectConfigStore.ts +4 -4
  373. package/src/plugin/types/Plugin.ts +54 -913
  374. package/src/plugin/types/PluginState.ts +1 -1
  375. package/src/rpc/Client.ts +16 -322
  376. package/src/rpc/Server.ts +39 -565
  377. package/src/rpc/server/InternalHandlers.ts +230 -0
  378. package/src/rpc/server/RequestDispatcher.ts +67 -0
  379. package/src/rpc/server/SdkSessionHandlers.ts +106 -0
  380. package/src/rpc/server/ServerTypes.ts +65 -0
  381. package/src/{runtime/sandbox → sandbox}/MacOsSeatbeltSandbox.ts +1 -1
  382. package/src/{runtime/sandbox → sandbox}/SandboxConfigResolver.ts +1 -1
  383. package/src/{runtime/sandbox → sandbox}/SandboxRunner.ts +3 -3
  384. package/src/{runtime/sandbox → sandbox}/types/SandboxRuntime.ts +2 -2
  385. package/src/session/Session.ts +184 -485
  386. package/src/session/SessionSystemBuilder.ts +3 -3
  387. package/src/session/browse/Browse.ts +29 -10
  388. package/src/session/index.ts +1 -0
  389. package/src/session/services/SessionStateService.ts +341 -0
  390. package/src/session/services/SessionTurnService.ts +202 -0
  391. package/src/session/services/SessionViewService.ts +301 -0
  392. package/src/session/storage/Paths.ts +19 -0
  393. package/src/types/agent/AgentOptions.ts +172 -0
  394. package/src/types/{runtime/host/AgentHost.ts → agent/AgentRuntimeAssembly.ts} +2 -2
  395. package/src/types/agent/AgentTypes.ts +47 -709
  396. package/src/types/agent/RemoteAgentOptions.ts +29 -0
  397. package/src/types/agent/SessionActor.ts +88 -0
  398. package/src/types/agent/SessionTypes.ts +335 -0
  399. package/src/types/config/DowncityConfig.ts +1 -1
  400. package/src/types/executor/SessionRunContext.ts +76 -0
  401. package/src/types/{runtime/host → platform}/Store.ts +1 -1
  402. package/src/types/plugin/ImagePlugin.ts +103 -0
  403. package/src/types/plugin/PluginAction.ts +133 -0
  404. package/src/types/plugin/PluginCommand.ts +89 -0
  405. package/src/types/plugin/PluginDefinition.ts +74 -0
  406. package/src/types/plugin/PluginHttp.ts +36 -0
  407. package/src/types/plugin/PluginRuntime.ts +169 -0
  408. package/src/types/plugin/PluginSetup.ts +138 -0
  409. package/src/types/plugin/PluginState.ts +82 -0
  410. package/src/types/rpc/RpcProtocol.ts +361 -0
  411. package/src/types/runtime/agent/AgentContext.ts +1 -1
  412. package/src/types/runtime/agent/AgentRuntime.ts +1 -1
  413. package/src/types/session/SessionComposerOptions.ts +107 -0
  414. package/src/types/session/SessionLocalState.ts +40 -0
  415. package/src/types/session/SessionOptions.ts +99 -0
  416. package/tsconfig.tsbuildinfo +1 -1
  417. package/bin/agent/Agent.d.ts +0 -223
  418. package/bin/agent/Agent.d.ts.map +0 -1
  419. package/bin/agent/Agent.js +0 -627
  420. package/bin/agent/Agent.js.map +0 -1
  421. package/bin/agent/RemoteAgent.d.ts.map +0 -1
  422. package/bin/agent/RemoteAgent.js +0 -585
  423. package/bin/agent/RemoteAgent.js.map +0 -1
  424. package/bin/runtime/auth/AuthEnv.d.ts +0 -36
  425. package/bin/runtime/auth/AuthEnv.d.ts.map +0 -1
  426. package/bin/runtime/auth/AuthEnv.js +0 -54
  427. package/bin/runtime/auth/AuthEnv.js.map +0 -1
  428. package/bin/runtime/auth/CliAuthStateStore.d.ts +0 -29
  429. package/bin/runtime/auth/CliAuthStateStore.d.ts.map +0 -1
  430. package/bin/runtime/auth/CliAuthStateStore.js +0 -26
  431. package/bin/runtime/auth/CliAuthStateStore.js.map +0 -1
  432. package/bin/runtime/control/AuthControlService.d.ts +0 -34
  433. package/bin/runtime/control/AuthControlService.d.ts.map +0 -1
  434. package/bin/runtime/control/AuthControlService.js +0 -129
  435. package/bin/runtime/control/AuthControlService.js.map +0 -1
  436. package/bin/runtime/control/CommonHelpers.d.ts +0 -36
  437. package/bin/runtime/control/CommonHelpers.d.ts.map +0 -1
  438. package/bin/runtime/control/CommonHelpers.js +0 -63
  439. package/bin/runtime/control/CommonHelpers.js.map +0 -1
  440. package/bin/runtime/control/ExecuteBySession.d.ts +0 -30
  441. package/bin/runtime/control/ExecuteBySession.d.ts.map +0 -1
  442. package/bin/runtime/control/ExecuteBySession.js +0 -41
  443. package/bin/runtime/control/ExecuteBySession.js.map +0 -1
  444. package/bin/runtime/control/ExecuteInput.d.ts +0 -18
  445. package/bin/runtime/control/ExecuteInput.d.ts.map +0 -1
  446. package/bin/runtime/control/ExecuteInput.js +0 -201
  447. package/bin/runtime/control/ExecuteInput.js.map +0 -1
  448. package/bin/runtime/control/Helpers.d.ts +0 -13
  449. package/bin/runtime/control/Helpers.d.ts.map +0 -1
  450. package/bin/runtime/control/Helpers.js +0 -13
  451. package/bin/runtime/control/Helpers.js.map +0 -1
  452. package/bin/runtime/control/MessageTimeline.d.ts +0 -22
  453. package/bin/runtime/control/MessageTimeline.d.ts.map +0 -1
  454. package/bin/runtime/control/MessageTimeline.js +0 -226
  455. package/bin/runtime/control/MessageTimeline.js.map +0 -1
  456. package/bin/runtime/control/SessionSummaryStore.d.ts +0 -20
  457. package/bin/runtime/control/SessionSummaryStore.d.ts.map +0 -1
  458. package/bin/runtime/control/SessionSummaryStore.js +0 -50
  459. package/bin/runtime/control/SessionSummaryStore.js.map +0 -1
  460. package/bin/runtime/control/TaskStore.d.ts +0 -33
  461. package/bin/runtime/control/TaskStore.d.ts.map +0 -1
  462. package/bin/runtime/control/TaskStore.js +0 -175
  463. package/bin/runtime/control/TaskStore.js.map +0 -1
  464. package/bin/runtime/control/types/AuthControl.d.ts +0 -30
  465. package/bin/runtime/control/types/AuthControl.d.ts.map +0 -1
  466. package/bin/runtime/control/types/AuthControl.js +0 -9
  467. package/bin/runtime/control/types/AuthControl.js.map +0 -1
  468. package/bin/runtime/control/types/ControlSessionExecute.d.ts +0 -85
  469. package/bin/runtime/control/types/ControlSessionExecute.d.ts.map +0 -1
  470. package/bin/runtime/control/types/ControlSessionExecute.js +0 -9
  471. package/bin/runtime/control/types/ControlSessionExecute.js.map +0 -1
  472. package/bin/runtime/control/types/ControlViewData.d.ts +0 -320
  473. package/bin/runtime/control/types/ControlViewData.d.ts.map +0 -1
  474. package/bin/runtime/control/types/ControlViewData.js +0 -9
  475. package/bin/runtime/control/types/ControlViewData.js.map +0 -1
  476. package/bin/runtime/host/AgentHostRuntime.d.ts.map +0 -1
  477. package/bin/runtime/host/AgentHostRuntime.js.map +0 -1
  478. package/bin/runtime/host/ProjectSetup.d.ts.map +0 -1
  479. package/bin/runtime/host/ProjectSetup.js.map +0 -1
  480. package/bin/runtime/sandbox/MacOsSeatbeltSandbox.d.ts.map +0 -1
  481. package/bin/runtime/sandbox/MacOsSeatbeltSandbox.js.map +0 -1
  482. package/bin/runtime/sandbox/SandboxConfigResolver.d.ts.map +0 -1
  483. package/bin/runtime/sandbox/SandboxConfigResolver.js.map +0 -1
  484. package/bin/runtime/sandbox/SandboxRunner.d.ts.map +0 -1
  485. package/bin/runtime/sandbox/SandboxRunner.js.map +0 -1
  486. package/bin/runtime/sandbox/types/Sandbox.d.ts.map +0 -1
  487. package/bin/runtime/sandbox/types/Sandbox.js.map +0 -1
  488. package/bin/runtime/sandbox/types/SandboxRuntime.d.ts.map +0 -1
  489. package/bin/runtime/sandbox/types/SandboxRuntime.js.map +0 -1
  490. package/bin/types/runtime/host/AgentHost.d.ts.map +0 -1
  491. package/bin/types/runtime/host/AgentHost.js.map +0 -1
  492. package/bin/types/runtime/host/Store.d.ts.map +0 -1
  493. package/bin/types/runtime/host/Store.js.map +0 -1
  494. package/src/agent/Agent.ts +0 -734
  495. package/src/agent/RemoteAgent.ts +0 -834
  496. package/src/runtime/auth/AuthEnv.ts +0 -62
  497. package/src/runtime/auth/CliAuthStateStore.ts +0 -46
  498. package/src/runtime/control/AuthControlService.ts +0 -169
  499. package/src/runtime/control/CommonHelpers.ts +0 -69
  500. package/src/runtime/control/ExecuteBySession.ts +0 -52
  501. package/src/runtime/control/ExecuteInput.ts +0 -236
  502. package/src/runtime/control/Helpers.ts +0 -22
  503. package/src/runtime/control/MessageTimeline.ts +0 -269
  504. package/src/runtime/control/SessionSummaryStore.ts +0 -72
  505. package/src/runtime/control/TaskStore.ts +0 -242
  506. package/src/runtime/control/types/AuthControl.ts +0 -34
  507. package/src/runtime/control/types/ControlSessionExecute.ts +0 -99
  508. package/src/runtime/control/types/ControlViewData.ts +0 -392
  509. /package/bin/{runtime/sandbox → sandbox}/MacOsSeatbeltSandbox.js +0 -0
  510. /package/bin/{runtime/sandbox → sandbox}/SandboxConfigResolver.js +0 -0
  511. /package/bin/{runtime/sandbox → sandbox}/types/Sandbox.d.ts +0 -0
  512. /package/bin/{runtime/sandbox → sandbox}/types/Sandbox.js +0 -0
  513. /package/bin/{runtime/sandbox → sandbox}/types/SandboxRuntime.js +0 -0
  514. /package/src/{runtime/sandbox → sandbox}/types/Sandbox.ts +0 -0
@@ -3,25 +3,18 @@
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - 面向 `new Agent(...)` 的本地会话使用场景。
6
- * - 统一收口消息落盘、session 级模型配置、prompt/subscribe/fork 等高层 API
6
+ * - 对外保留稳定 Session facade,把状态、turn、view 逻辑下沉到独立 service
7
7
  * - 内部继续复用 `Executor` / `JsonlSessionHistoryStore` / Composer 体系。
8
8
  */
9
- import { nanoid } from "nanoid";
10
9
  import { Executor } from "../executor/Executor.js";
11
10
  import { JsonlSessionHistoryComposer } from "../executor/composer/history/jsonl/JsonlSessionHistoryComposer.js";
12
11
  import { JsonlSessionHistoryStore } from "../executor/store/history/jsonl/JsonlSessionHistoryStore.js";
13
- import { extractTextFromUiMessage } from "../executor/messages/UIMessageTransformer.js";
14
- import { buildSessionSystemBlocks, SessionSystemBuilder, } from "../session/SessionSystemBuilder.js";
15
- import { buildSessionHistoryPage, buildSessionInfo, patchSessionModelLabel, readSessionMetadata, resolveSystemTimezone, writeSessionMetadata, } from "../session/index.js";
16
- import { getSdkAgentSessionArchiveDirPath, getSdkAgentSessionDirPath, } from "../session/index.js";
17
- import { mapAgentEventToSessionEvent, mapUiMessageChunkToAgentEvent, } from "../session/SessionEventMapper.js";
18
- import { persistSdkAssistantResult, touchSessionMetadata, } from "../session/index.js";
19
- import { createRuntimeSessionPort } from "../session/index.js";
20
- import { drainDeferredPersistedUserMessages } from "../executor/SessionRunScope.js";
12
+ import { getSdkAgentSessionArchiveDirPath, getSdkAgentSessionDirPath, getSdkAgentSessionInflightPath, resolveSystemTimezone, createRuntimeSessionPort, } from "../session/index.js";
13
+ import { SessionSystemBuilder } from "../session/SessionSystemBuilder.js";
21
14
  import { SessionEventHub } from "../session/runtime/SessionEventHub.js";
22
- import { SessionPromptRuntime } from "../session/runtime/SessionPromptRuntime.js";
23
- import { inferAgentModelLabel, normalizeAgentModel, } from "../model/CityModelAdapter.js";
24
- import { ensureSessionTitle } from "../session/SessionTitle.js";
15
+ import { SessionStateService } from "../session/services/SessionStateService.js";
16
+ import { SessionTurnService } from "../session/services/SessionTurnService.js";
17
+ import { SessionViewService } from "../session/services/SessionViewService.js";
25
18
  /**
26
19
  * SDK 本地 Session。
27
20
  */
@@ -35,16 +28,15 @@ export class Session {
35
28
  getManagedPluginSystemBlocks;
36
29
  getPluginSystemBlocks;
37
30
  ensureConfiguredHook;
31
+ composers;
38
32
  historyStore;
39
33
  historyComposer;
40
34
  executor;
41
35
  eventHub = new SessionEventHub();
42
- promptRuntime;
43
- sessionConfig = {};
44
- createdAt = Date.now();
45
- timezone = resolveSystemTimezone();
46
- initializePromise = null;
47
- ensureConfiguredPromise = null;
36
+ localState;
37
+ stateService;
38
+ turnService;
39
+ viewService;
48
40
  runtimePort = null;
49
41
  constructor(options) {
50
42
  this.id = String(options.sessionId || "").trim();
@@ -56,6 +48,7 @@ export class Session {
56
48
  this.getManagedPluginSystemBlocks = options.getManagedPluginSystemBlocks;
57
49
  this.getPluginSystemBlocks = options.getPluginSystemBlocks;
58
50
  this.ensureConfiguredHook = options.ensureConfigured;
51
+ this.composers = options.composers;
59
52
  if (!this.id) {
60
53
  throw new Error("Session requires a non-empty sessionId");
61
54
  }
@@ -65,245 +58,172 @@ export class Session {
65
58
  if (!this.projectRoot) {
66
59
  throw new Error("Session requires a non-empty projectRoot");
67
60
  }
68
- const sessionDirPath = getSdkAgentSessionDirPath(this.projectRoot, this.agentId, this.id);
69
- const messagesDirPath = `${sessionDirPath}/messages`;
61
+ const session_dir_path = getSdkAgentSessionDirPath(this.projectRoot, this.agentId, this.id);
62
+ const messages_dir_path = `${session_dir_path}/messages`;
70
63
  this.historyStore = new JsonlSessionHistoryStore({
71
64
  rootPath: this.projectRoot,
72
65
  agentId: this.agentId,
73
66
  sessionId: this.id,
74
67
  paths: {
75
- sessionDirPath,
76
- messagesDirPath,
77
- messagesFilePath: `${messagesDirPath}/messages.jsonl`,
78
- metaFilePath: `${messagesDirPath}/meta.json`,
68
+ sessionDirPath: session_dir_path,
69
+ messagesDirPath: messages_dir_path,
70
+ messagesFilePath: `${messages_dir_path}/messages.jsonl`,
71
+ metaFilePath: `${messages_dir_path}/meta.json`,
79
72
  archiveDirPath: getSdkAgentSessionArchiveDirPath(this.projectRoot, this.agentId, this.id),
73
+ inflightFilePath: getSdkAgentSessionInflightPath(this.projectRoot, this.agentId, this.id),
80
74
  },
81
75
  });
82
- this.historyComposer = new JsonlSessionHistoryComposer({
76
+ this.localState = {
77
+ sessionConfig: {},
78
+ createdAt: Date.now(),
79
+ timezone: resolveSystemTimezone(),
80
+ initializePromise: null,
81
+ ensureConfiguredPromise: null,
82
+ };
83
+ const composer_context = this.create_composer_context();
84
+ this.historyComposer = this.resolve_composer(this.composers?.historyComposer, composer_context, () => new JsonlSessionHistoryComposer({
83
85
  store: this.historyStore,
84
- });
86
+ }));
87
+ const system_composer = this.resolve_composer(this.composers?.systemComposer, composer_context, () => new SessionSystemBuilder({
88
+ agentId: this.agentId,
89
+ projectRoot: this.projectRoot,
90
+ getSessionCreatedAt: () => this.localState.createdAt,
91
+ getSessionTimezone: () => this.localState.timezone,
92
+ getInstructionSystemBlocks: this.getInstructionSystemBlocks,
93
+ getManagedPluginSystemBlocks: this.getManagedPluginSystemBlocks,
94
+ getPluginSystemBlocks: this.getPluginSystemBlocks,
95
+ }));
96
+ const context_composer = this.resolve_optional_composer(this.composers?.contextComposer, composer_context);
97
+ const compaction_composer = this.resolve_optional_composer(this.composers?.compactionComposer, composer_context);
85
98
  this.executor = new Executor({
86
99
  sessionId: this.id,
87
100
  historyStore: this.historyStore,
88
101
  historyComposer: this.historyComposer,
89
- getModel: () => this.sessionConfig.model,
102
+ getModel: () => this.localState.sessionConfig.model,
90
103
  logger: this.logger,
91
- systemComposer: new SessionSystemBuilder({
92
- agentId: this.agentId,
93
- projectRoot: this.projectRoot,
94
- getSessionCreatedAt: () => this.createdAt,
95
- getSessionTimezone: () => this.timezone,
96
- getInstructionSystemBlocks: this.getInstructionSystemBlocks,
97
- getManagedPluginSystemBlocks: this.getManagedPluginSystemBlocks,
98
- getPluginSystemBlocks: this.getPluginSystemBlocks,
99
- }),
104
+ systemComposer: system_composer,
100
105
  getTools: () => this.tools,
106
+ ...(context_composer ? { contextComposer: context_composer } : {}),
107
+ ...(compaction_composer
108
+ ? { compactionComposer: compaction_composer }
109
+ : {}),
101
110
  });
102
- this.promptRuntime = new SessionPromptRuntime({
103
- sessionId: this.id,
104
- publish: (event) => {
111
+ this.stateService = new SessionStateService({
112
+ agent_id: this.agentId,
113
+ project_root: this.projectRoot,
114
+ session_id: this.id,
115
+ history_store: this.historyStore,
116
+ executor: this.executor,
117
+ state: this.localState,
118
+ ensure_configured_hook: this.ensureConfiguredHook
119
+ ? async () => {
120
+ await this.ensureConfiguredHook?.(this);
121
+ }
122
+ : undefined,
123
+ publish_event: (event) => {
105
124
  this.eventHub.publish(event);
106
125
  },
107
- createAndPersistUserMessage: async (input) => {
108
- return await this.createAndPersistUserPromptMessage(input);
109
- },
110
- executeTurn: async ({ turnId, promptInput, onStepMerge }) => {
111
- return await this.executePromptTurn({
112
- turnId,
113
- promptInput,
114
- onStepMerge,
115
- });
126
+ });
127
+ this.turnService = new SessionTurnService({
128
+ session_id: this.id,
129
+ executor: this.executor,
130
+ state_service: this.stateService,
131
+ event_hub: this.eventHub,
132
+ });
133
+ this.viewService = new SessionViewService({
134
+ agent_id: this.agentId,
135
+ project_root: this.projectRoot,
136
+ session_id: this.id,
137
+ history_store: this.historyStore,
138
+ state_service: this.stateService,
139
+ is_executing: () => this.isExecuting(),
140
+ get_instruction_system_blocks: this.getInstructionSystemBlocks,
141
+ get_managed_plugin_system_blocks: this.getManagedPluginSystemBlocks,
142
+ get_plugin_system_blocks: this.getPluginSystemBlocks,
143
+ ...(this.composers?.systemComposer
144
+ ? { custom_system_composer: system_composer }
145
+ : {}),
146
+ create_fork_session: async (session_id) => {
147
+ const session = this.createChildSession(session_id);
148
+ await session.initialize();
149
+ return {
150
+ session,
151
+ history_store: session.historyStore,
152
+ state_service: session.stateService,
153
+ };
116
154
  },
117
155
  });
118
156
  }
119
157
  /**
120
- * 初始化当前 session 的 meta 信息与内存配置。
158
+ * 初始化当前 session
121
159
  */
122
160
  async initialize() {
123
- if (this.initializePromise) {
124
- return await this.initializePromise;
125
- }
126
- this.initializePromise = (async () => {
127
- const metadata = await readSessionMetadata({
128
- projectRoot: this.projectRoot,
129
- agentId: this.agentId,
130
- sessionId: this.id,
131
- });
132
- const createdAt = typeof metadata.createdAt === "number" ? metadata.createdAt : Date.now();
133
- const timezone = typeof metadata.timezone === "string" && metadata.timezone.trim()
134
- ? metadata.timezone.trim()
135
- : resolveSystemTimezone();
136
- await writeSessionMetadata({
137
- projectRoot: this.projectRoot,
138
- agentId: this.agentId,
139
- sessionId: this.id,
140
- meta: {
141
- ...metadata,
142
- agentId: this.agentId,
143
- createdAt,
144
- timezone,
145
- },
146
- });
147
- this.createdAt = createdAt;
148
- this.timezone = timezone;
149
- this.sessionConfig = {
150
- ...(metadata.modelLabel
151
- ? { modelLabel: metadata.modelLabel }
152
- : {}),
153
- };
154
- return this;
155
- })();
156
- return await this.initializePromise;
161
+ await this.stateService.initialize();
162
+ return this;
157
163
  }
158
164
  /**
159
165
  * 读取当前 session 配置快照。
160
166
  */
161
167
  get config() {
162
- return {
163
- ...this.sessionConfig,
164
- };
168
+ return this.stateService.get_config();
165
169
  }
166
170
  /**
167
171
  * 写入当前 session 默认配置。
168
172
  */
169
173
  async set(input) {
170
- if (input.model) {
171
- this.sessionConfig.model = normalizeAgentModel(input.model);
172
- this.sessionConfig.modelLabel = inferAgentModelLabel(input.model);
173
- this.executor.clearExecutor();
174
- }
175
- await patchSessionModelLabel({
176
- projectRoot: this.projectRoot,
177
- agentId: this.agentId,
178
- sessionId: this.id,
179
- model: this.sessionConfig.model,
180
- });
174
+ await this.stateService.set(input);
181
175
  }
182
176
  /**
183
177
  * 追加一条新的 Session prompt。
184
- *
185
- * 关键点(中文)
186
- * - 这是 Session actor 模型下唯一的输入入口。
187
- * - 首条输入、运行中补充输入、排到下一轮的输入,调用方式完全一致。
188
178
  */
189
179
  async prompt(input) {
190
- const query = String(input.query || "").trim();
191
- if (!query) {
192
- throw new Error("session.prompt requires a non-empty query");
193
- }
194
- await this.ensureRunnable();
195
- return await this.promptRuntime.prompt({
196
- query,
197
- });
180
+ return await this.turnService.prompt(input);
198
181
  }
199
182
  /**
200
183
  * 订阅当前 Session 的未来事件。
201
- *
202
- * 关键点(中文)
203
- * - 只广播订阅之后产生的事件。
204
- * - 不做历史回放;历史仍通过 `history()` 读取。
205
184
  */
206
185
  subscribe(subscriber) {
207
- return this.eventHub.subscribe(subscriber);
186
+ return this.turnService.subscribe(subscriber);
208
187
  }
209
188
  /**
210
189
  * 追加一条 user 文本消息。
211
190
  */
212
191
  async appendUserMessage(input) {
213
- await this.executor.appendUserMessage({
192
+ await this.stateService.append_user_message({
214
193
  text: String(input.text || "").trim(),
215
194
  });
216
- await this.ensureTitleFromHistory({ generate: true });
217
- await this.touchMetadata();
218
195
  }
219
196
  /**
220
197
  * 追加一条 assistant 文本消息。
221
198
  */
222
199
  async appendAssistantMessage(input) {
223
- await this.executor.appendAssistantMessage({
200
+ await this.stateService.append_assistant_message({
224
201
  fallbackText: String(input.text || "").trim(),
225
202
  });
226
- await this.touchMetadata();
227
203
  }
228
204
  /**
229
205
  * 读取当前 session 详情。
230
206
  */
231
207
  async getInfo() {
232
- const [metadata, messages] = await Promise.all([
233
- readSessionMetadata({
234
- projectRoot: this.projectRoot,
235
- agentId: this.agentId,
236
- sessionId: this.id,
237
- }),
238
- this.historyStore.list(),
239
- ]);
240
- const metadataWithTitle = metadata.title
241
- ? metadata
242
- : await ensureSessionTitle({
243
- projectRoot: this.projectRoot,
244
- agentId: this.agentId,
245
- sessionId: this.id,
246
- messages,
247
- });
248
- return buildSessionInfo({
249
- projectRoot: this.projectRoot,
250
- agentId: this.agentId,
251
- sessionId: this.id,
252
- metadata: metadataWithTitle,
253
- messages,
254
- executing: this.isExecuting(),
255
- });
208
+ return await this.viewService.get_info();
256
209
  }
257
210
  /**
258
211
  * 读取当前 session 历史分页。
259
212
  */
260
213
  async history(input) {
261
- const [session, messages] = await Promise.all([
262
- this.getInfo(),
263
- this.historyStore.list(),
264
- ]);
265
- return buildSessionHistoryPage({
266
- session,
267
- messages,
268
- input,
269
- });
214
+ return await this.viewService.history(input);
270
215
  }
271
216
  /**
272
- * 读取当前 session 生效的 system prompt 文本集合。
273
- *
274
- * 关键点(中文)
275
- * - 返回内容与实际 run 时使用的 SDK system composer 同源。
276
- * - 包含 instruction/core、受托管 plugin system、显式注册 plugin system 与 session 上下文。
277
- * - 返回结构化快照,不把 system prompt 写入会话历史。
217
+ * 读取当前 session 生效的 system 快照。
278
218
  */
279
219
  async system() {
280
- const blocks = await buildSessionSystemBlocks({
281
- agentId: this.agentId,
282
- projectRoot: this.projectRoot,
283
- sessionId: this.id,
284
- createdAt: this.createdAt,
285
- timezone: this.timezone,
286
- getInstructionSystemBlocks: this.getInstructionSystemBlocks,
287
- getManagedPluginSystemBlocks: this.getManagedPluginSystemBlocks,
288
- getPluginSystemBlocks: this.getPluginSystemBlocks,
289
- });
290
- return {
291
- sessionId: this.id,
292
- session: {
293
- agentId: this.agentId,
294
- sessionId: this.id,
295
- projectRoot: this.projectRoot,
296
- createdAt: new Date(this.createdAt).toISOString(),
297
- timezone: this.timezone,
298
- },
299
- blocks,
300
- };
220
+ return await this.viewService.system();
301
221
  }
302
222
  /**
303
223
  * 返回当前 session 是否正在执行。
304
224
  */
305
225
  isExecuting() {
306
- return this.promptRuntime.isActive() || this.executor.isExecuting();
226
+ return this.turnService.is_prompt_runtime_active() || this.executor.isExecuting();
307
227
  }
308
228
  /**
309
229
  * 清理当前 session 的执行器缓存。
@@ -315,41 +235,7 @@ export class Session {
315
235
  * 从当前 session 创建一个分叉会话。
316
236
  */
317
237
  async fork(input) {
318
- const messageId = typeof input === "string"
319
- ? String(input || "").trim() || undefined
320
- : String(input?.messageId || "").trim() || undefined;
321
- const messages = await this.historyStore.list();
322
- const forkMessages = !messageId
323
- ? messages
324
- : (() => {
325
- const targetIndex = messages.findIndex((message) => String(message.id || "").trim() === messageId);
326
- if (targetIndex < 0) {
327
- throw new Error(`Cannot fork session "${this.id}": messageId "${messageId}" not found.`);
328
- }
329
- return messages.slice(0, targetIndex + 1);
330
- })();
331
- const forked = new Session({
332
- agentId: this.agentId,
333
- projectRoot: this.projectRoot,
334
- sessionId: `fork-${Date.now()}-${nanoid(8)}`,
335
- tools: this.tools,
336
- logger: this.logger,
337
- getInstructionSystemBlocks: this.getInstructionSystemBlocks,
338
- getManagedPluginSystemBlocks: this.getManagedPluginSystemBlocks,
339
- getPluginSystemBlocks: this.getPluginSystemBlocks,
340
- });
341
- await forked.initialize();
342
- if (this.sessionConfig.model) {
343
- await forked.set({
344
- model: this.sessionConfig.model,
345
- });
346
- }
347
- for (const message of forkMessages) {
348
- await forked.historyStore.append(message);
349
- }
350
- await forked.ensureTitleFromHistory({ generate: true });
351
- await forked.touchMetadata();
352
- return forked;
238
+ return await this.viewService.fork(input);
353
239
  }
354
240
  /**
355
241
  * 返回供受托管 plugin 使用的 session 端口。
@@ -360,25 +246,19 @@ export class Session {
360
246
  this.runtimePort = createRuntimeSessionPort({
361
247
  sessionId: this.id,
362
248
  getExecutor: () => this.executor.getExecutor(),
363
- prompt: async (input) => {
364
- return await this.prompt(input);
365
- },
366
- subscribe: (subscriber) => {
367
- return this.subscribe(subscriber);
368
- },
249
+ prompt: async (input) => await this.prompt(input),
250
+ subscribe: (subscriber) => this.subscribe(subscriber),
369
251
  clearExecutor: () => {
370
252
  this.executor.clearExecutor();
371
253
  },
372
254
  afterSessionUpdatedAsync: async () => {
373
255
  await this.executor.afterSessionUpdatedAsync();
374
256
  },
375
- appendUserMessage: async (messageParams) => {
376
- await this.executor.appendUserMessage(messageParams);
377
- await this.ensureTitleFromHistory({ generate: true });
378
- await this.touchMetadata();
257
+ appendUserMessage: async (message_params) => {
258
+ await this.stateService.append_user_message(message_params);
379
259
  },
380
- appendAssistantMessage: async (messageParams) => {
381
- await this.executor.appendAssistantMessage(messageParams);
260
+ appendAssistantMessage: async (message_params) => {
261
+ await this.stateService.append_assistant_message(message_params);
382
262
  },
383
263
  isExecuting: () => this.isExecuting(),
384
264
  historyStore: this.historyStore,
@@ -386,7 +266,7 @@ export class Session {
386
266
  await this.ensureReadyForExecution();
387
267
  },
388
268
  touchMetadata: async () => {
389
- await this.touchMetadata();
269
+ await this.stateService.touch_metadata();
390
270
  },
391
271
  });
392
272
  return this.runtimePort;
@@ -395,149 +275,47 @@ export class Session {
395
275
  * 在执行前确保 session 已完成初始化与宿主装配。
396
276
  */
397
277
  async ensureReadyForExecution() {
398
- await this.initialize();
399
- if (this.ensureConfiguredPromise) {
400
- await this.ensureConfiguredPromise;
401
- return;
402
- }
403
- this.ensureConfiguredPromise = (async () => {
404
- if (!this.ensureConfiguredHook)
405
- return;
406
- await this.ensureConfiguredHook(this);
407
- })();
408
- try {
409
- await this.ensureConfiguredPromise;
410
- }
411
- catch (error) {
412
- this.ensureConfiguredPromise = null;
413
- throw error;
414
- }
278
+ await this.stateService.ensure_ready_for_execution();
415
279
  }
416
- async ensureRunnable() {
417
- await this.ensureReadyForExecution();
418
- if (!this.sessionConfig.model) {
419
- throw new Error(`Session "${this.id}" requires a configured model. Pass model to new Agent({ model }) or call session.set({ model }) first.`);
420
- }
421
- }
422
- async touchMetadata() {
423
- await touchSessionMetadata({
424
- projectRoot: this.projectRoot,
280
+ createChildSession(session_id) {
281
+ return new Session({
425
282
  agentId: this.agentId,
426
- sessionId: this.id,
427
- sessionConfig: this.sessionConfig,
428
- });
429
- }
430
- async ensureTitleFromHistory(input) {
431
- const messages = await this.historyStore.list();
432
- const beforeMetadata = await readSessionMetadata({
433
283
  projectRoot: this.projectRoot,
434
- agentId: this.agentId,
435
- sessionId: this.id,
436
- });
437
- const beforeTitle = String(beforeMetadata.title || "").trim();
438
- const nextMetadata = await ensureSessionTitle({
439
- projectRoot: this.projectRoot,
440
- agentId: this.agentId,
441
- sessionId: this.id,
442
- messages,
443
- ...(input?.generate ? { model: this.sessionConfig.model } : {}),
444
- generate: input?.generate === true,
445
- });
446
- const nextTitle = String(nextMetadata.title || "").trim();
447
- if (!nextTitle || nextTitle === beforeTitle)
448
- return;
449
- this.eventHub.publish({
450
- type: "session-title",
451
- sessionId: this.id,
452
- title: nextTitle,
284
+ sessionId: session_id,
285
+ tools: this.tools,
286
+ logger: this.logger,
287
+ getInstructionSystemBlocks: this.getInstructionSystemBlocks,
288
+ getManagedPluginSystemBlocks: this.getManagedPluginSystemBlocks,
289
+ getPluginSystemBlocks: this.getPluginSystemBlocks,
290
+ composers: this.composers,
453
291
  });
454
292
  }
455
- async persistAssistantResult(assistantMessage) {
456
- await persistSdkAssistantResult({
457
- projectRoot: this.projectRoot,
293
+ create_composer_context() {
294
+ return {
458
295
  agentId: this.agentId,
296
+ projectRoot: this.projectRoot,
459
297
  sessionId: this.id,
460
- sessionConfig: this.sessionConfig,
461
- executor: this.executor,
462
- assistantMessage,
463
- });
464
- }
465
- async createAndPersistUserPromptMessage(input) {
466
- const message = this.historyStore.userText({
467
- text: String(input.query || "").trim(),
468
- metadata: {
469
- sessionId: this.id,
470
- },
471
- });
472
- await this.executor.appendUserMessage({
473
- message,
474
- });
475
- await this.ensureTitleFromHistory({ generate: true });
476
- await this.touchMetadata();
477
- return message;
478
- }
479
- async executePromptTurn(input) {
480
- const toolNameByCallId = new Map();
481
- const result = await this.executor.run({
482
- query: input.promptInput.query,
483
- onStepCallback: input.onStepMerge,
484
- onAssistantStepCallback: async (step) => {
485
- this.eventHub.publish({
486
- type: "assistant-step",
487
- turnId: input.turnId,
488
- text: step.text,
489
- stepIndex: step.stepIndex,
490
- ...(step.visibility ? { visibility: step.visibility } : {}),
491
- });
492
- },
493
- onUiMessageChunkCallback: async (chunk) => {
494
- if (chunk.type === "tool-input-start") {
495
- toolNameByCallId.set(chunk.toolCallId, chunk.toolName);
496
- return;
497
- }
498
- const event = mapUiMessageChunkToAgentEvent(chunk);
499
- if (!event)
500
- return;
501
- const resolvedEvent = (event.type === "tool-result" ||
502
- event.type === "tool-error") &&
503
- event.toolName === "unknown"
504
- ? {
505
- ...event,
506
- toolName: toolNameByCallId.get(event.toolCallId) || event.toolName,
507
- }
508
- : event;
509
- if (resolvedEvent.type === "tool-call" ||
510
- resolvedEvent.type === "tool-error") {
511
- toolNameByCallId.set(resolvedEvent.toolCallId, resolvedEvent.toolName);
512
- }
513
- const sessionEvent = mapAgentEventToSessionEvent({
514
- event: resolvedEvent,
515
- turnId: input.turnId,
516
- });
517
- if (sessionEvent) {
518
- this.eventHub.publish(sessionEvent);
519
- }
520
- },
521
- });
522
- await this.persistAssistantResult(result.assistantMessage);
523
- await this.persistDeferredUserMessages();
524
- return {
525
- text: extractTextFromUiMessage(result.assistantMessage),
526
- success: result.success,
527
- assistantMessage: result.assistantMessage,
528
- ...(result.error ? { error: result.error } : {}),
298
+ historyStore: this.historyStore,
299
+ getTools: () => this.tools,
300
+ getInstructionSystemBlocks: this.getInstructionSystemBlocks,
301
+ getManagedPluginSystemBlocks: this.getManagedPluginSystemBlocks,
302
+ getPluginSystemBlocks: this.getPluginSystemBlocks,
303
+ getSessionCreatedAt: () => this.localState.createdAt,
304
+ getSessionTimezone: () => this.localState.timezone,
529
305
  };
530
306
  }
531
- async persistDeferredUserMessages() {
532
- const deferredMessages = drainDeferredPersistedUserMessages(this.id);
533
- for (const message of deferredMessages) {
534
- await this.executor.appendUserMessage({
535
- message,
536
- });
537
- }
538
- if (deferredMessages.length > 0) {
539
- await this.touchMetadata();
307
+ resolve_composer(input, context, create_default) {
308
+ const composer = this.resolve_optional_composer(input, context);
309
+ return composer || create_default();
310
+ }
311
+ resolve_optional_composer(input, context) {
312
+ if (!input)
313
+ return undefined;
314
+ if (typeof input === "function") {
315
+ const create_composer = input;
316
+ return create_composer(context);
540
317
  }
318
+ return input;
541
319
  }
542
320
  }
543
321
  //# sourceMappingURL=Session.js.map