@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
@@ -1,734 +0,0 @@
1
- /**
2
- * Agent 本地入口与实例装配中心。
3
- *
4
- * 职责说明(中文)
5
- * - 对外暴露 `Agent` 这一唯一的本地实例类。
6
- * - 统一承接单个 agent 实例的配置加载、plugin 装配、session 创建、RPC 启停。
7
- * - 把原先独立的实例内核装配逻辑收敛到 `Agent` 内部,避免 facade 与 core 双层跳转。
8
- *
9
- * 边界说明(中文)
10
- * - 这里负责“单个 agent 实例”的长期状态与装配,不负责平台级多 agent 管理。
11
- * - 这里不直接实现 session 执行细节,而是继续复用 `Session` / `Executor` 体系。
12
- */
13
-
14
- import fs from "fs-extra";
15
- import { nanoid } from "nanoid";
16
- import type { Tool } from "ai";
17
- import type { BasePlugin } from "@/plugin/core/BasePlugin.js";
18
- import type {
19
- AgentContext,
20
- SessionPort,
21
- } from "@/types/runtime/agent/AgentContext.js";
22
- import type { AgentRuntime } from "@/types/runtime/agent/AgentRuntime.js";
23
- import type { DowncityConfig } from "@/types/config/DowncityConfig.js";
24
- import type { JsonValue } from "@/types/common/Json.js";
25
- import type {
26
- PluginAvailability,
27
- PluginPort,
28
- PluginView,
29
- } from "@/plugin/types/Plugin.js";
30
- import type {
31
- AgentSession,
32
- AgentCreateSessionInput,
33
- AgentListSessionsInput,
34
- AgentOptions,
35
- AgentStartOptions,
36
- AgentStartResult,
37
- AgentStopResult,
38
- AgentRpcBinding,
39
- AgentRpcStartOptions,
40
- AgentSessionCollection,
41
- AgentSessionSummaryPage,
42
- AgentSessionSystemBlock,
43
- } from "@/types/agent/AgentTypes.js";
44
- import type { AgentModel } from "@/model/CityModelAdapter.js";
45
- import { Logger } from "@/utils/logger/Logger.js";
46
- import { Session } from "@/session/Session.js";
47
- import { DEFAULT_SHIP_PROMPTS } from "@executor/composer/system/default/SystemDomain.js";
48
- import {
49
- getSdkAgentSessionDirPath,
50
- listAgentSessionSummaryPage,
51
- } from "@/session/index.js";
52
- import {
53
- createAgentPathRuntime,
54
- createAgentPluginConfigRuntime,
55
- } from "@/runtime/host/AgentHostRuntime.js";
56
- import { loadDowncityConfig, resolveAgentEnv } from "@/config/Config.js";
57
- import { HookRegistry } from "@/plugin/core/HookRegistry.js";
58
- import { PluginRegistry } from "@/plugin/core/PluginRegistry.js";
59
- import { isPluginEnabled } from "@/plugin/core/Activation.js";
60
- import { setShellToolRuntime } from "@executor/tools/shell/ShellToolDefinition.js";
61
- import { startAllPlugins, stopAllPlugins } from "@/plugin/core/Manager.js";
62
- import type { ActionScheduleRuntimeHandle } from "@/plugin/core/ActionScheduleRuntime.js";
63
- import { startActionScheduleRuntime } from "@/plugin/core/ActionScheduleRuntime.js";
64
- import { startRpcServer } from "@/rpc/Server.js";
65
-
66
- function createFallbackSdkConfig(agentId: string): DowncityConfig {
67
- return {
68
- id: agentId,
69
- version: "0.0.0",
70
- } as DowncityConfig;
71
- }
72
-
73
- function normalizeInstructionInput(input: string | string[] | undefined): string[] {
74
- const items = Array.isArray(input)
75
- ? input
76
- : typeof input === "string"
77
- ? [input]
78
- : [];
79
- return items
80
- .map((item) => String(item || "").trim())
81
- .filter((item) => item.length > 0);
82
- }
83
-
84
- function createCoreInstructionContent(projectRoot: string): string {
85
- const currentYear = String(new Date().getFullYear());
86
- return DEFAULT_SHIP_PROMPTS
87
- .replaceAll("{{project_path}}", projectRoot)
88
- .replaceAll("{{project_root}}", projectRoot)
89
- .replaceAll("{{current_year}}", currentYear);
90
- }
91
-
92
- function createInstructionSystemBlocks(
93
- instruction: string[],
94
- projectRoot: string,
95
- ): AgentSessionSystemBlock[] {
96
- if (instruction.length === 0) {
97
- return [
98
- {
99
- source: "core",
100
- name: "default",
101
- content: createCoreInstructionContent(projectRoot),
102
- },
103
- ];
104
- }
105
- return instruction.map((content, index) => ({
106
- source: "instruction" as const,
107
- name: instruction.length === 1 ? "agent" : `agent:${index + 1}`,
108
- content,
109
- }));
110
- }
111
-
112
- /**
113
- * SDK 本地 Agent。
114
- */
115
- export class Agent {
116
- readonly id: string;
117
- readonly path: string;
118
- readonly tools: Record<string, Tool>;
119
- readonly plugins: PluginPort;
120
-
121
- private readonly logger: Logger;
122
- private readonly sessionsById = new Map<string, Session>();
123
- private readonly runtime: AgentRuntime;
124
- private readonly agentContext: AgentContext;
125
- private readonly pluginRegistry: PluginRegistry;
126
- private readonly config: DowncityConfig;
127
- private readonly env: Record<string, string>;
128
- private readonly defaultModel?: AgentModel;
129
- private readonly pluginInstances: Map<string, BasePlugin>;
130
- private readonly sessionCollection: AgentSessionCollection;
131
-
132
- private instruction: string[];
133
- private configuredSessionIds = new Set<string>();
134
- private pluginsStarted = false;
135
- private actionScheduleRuntime: ActionScheduleRuntimeHandle | null = null;
136
- private startPromise: Promise<AgentStartResult> | null = null;
137
- private rpcBinding: AgentRpcBinding | null = null;
138
-
139
- constructor(options: AgentOptions) {
140
- this.id = String(options.id || "").trim();
141
- this.path = String(options.path || "").trim();
142
- this.tools = options.tools && typeof options.tools === "object"
143
- ? { ...options.tools }
144
- : {};
145
- if (!this.id) {
146
- throw new Error("Agent requires a non-empty id");
147
- }
148
- if (!this.path) {
149
- throw new Error("Agent requires a non-empty path");
150
- }
151
-
152
- this.logger = new Logger();
153
- this.logger.bindProjectRoot(this.path);
154
- this.env = resolveAgentEnv(this.path, options.env);
155
- this.instruction = normalizeInstructionInput(options.instruction);
156
- this.defaultModel = options.model;
157
- this.config = this.loadConfig();
158
- this.pluginInstances = new Map<string, BasePlugin>();
159
- this.runtime = this.createRuntime();
160
- this.registerPlugins(options.plugins || []);
161
- this.pluginRegistry = this.createPluginRegistry([
162
- ...this.pluginInstances.values(),
163
- ]);
164
- this.plugins = this.createPluginPort();
165
- this.agentContext = this.createAgentContext();
166
- setShellToolRuntime(this.agentContext.invoke);
167
-
168
- this.sessionCollection = {
169
- createSession: async (input) => await this.createSession(input),
170
- getSession: async (sessionId) => await this.getSession(sessionId),
171
- listSessions: async (input) => await this.listSessions(input),
172
- };
173
- }
174
-
175
- /**
176
- * 新建一个 session。
177
- *
178
- * 关键点(中文)
179
- * - 若调用方显式传入 `sessionId`,这里会先检查缓存与磁盘目录,避免重复创建。
180
- * - session 初始化完成后会立即应用默认模型。
181
- */
182
- async createSession(input?: AgentCreateSessionInput): Promise<AgentSession> {
183
- const explicitSessionId = String(input?.sessionId || "").trim() || undefined;
184
- if (
185
- explicitSessionId &&
186
- (this.sessionsById.has(explicitSessionId) ||
187
- (await fs.pathExists(
188
- getSdkAgentSessionDirPath(this.path, this.id, explicitSessionId),
189
- )))
190
- ) {
191
- throw new Error(`Session "${explicitSessionId}" already exists`);
192
- }
193
- const session = this.getOrCreateSession(explicitSessionId);
194
- await session.initialize();
195
- await this.applySessionDefaults(session);
196
- return session;
197
- }
198
-
199
- /**
200
- * 获取一个已存在的 session。
201
- *
202
- * 关键点(中文)
203
- * - 若缓存中没有该 session,会根据磁盘目录决定是否允许懒加载恢复。
204
- * - 返回前同样会兜底执行一次默认配置装配。
205
- */
206
- async getSession(sessionId: string): Promise<AgentSession> {
207
- const resolvedSessionId = String(sessionId || "").trim();
208
- if (!resolvedSessionId) {
209
- throw new Error("getSession requires a non-empty sessionId");
210
- }
211
- const sessionDirPath = getSdkAgentSessionDirPath(
212
- this.path,
213
- this.id,
214
- resolvedSessionId,
215
- );
216
- if (
217
- !this.sessionsById.has(resolvedSessionId) &&
218
- !(await fs.pathExists(sessionDirPath))
219
- ) {
220
- throw new Error(`Session "${resolvedSessionId}" not found`);
221
- }
222
- const session = this.getOrCreateSession(resolvedSessionId);
223
- await session.initialize();
224
- await this.applySessionDefaults(session);
225
- return session;
226
- }
227
-
228
- /**
229
- * 列出当前 agent 的 session 摘要页。
230
- */
231
- async listSessions(
232
- input?: AgentListSessionsInput,
233
- ): Promise<AgentSessionSummaryPage> {
234
- return await listAgentSessionSummaryPage({
235
- projectRoot: this.path,
236
- agentId: this.id,
237
- input,
238
- executingSessionIds: new Set(this.runtime.listExecutingSessionIds()),
239
- });
240
- }
241
-
242
- /**
243
- * 启动当前 agent 实例的长期运行能力。
244
- *
245
- * 关键点(中文)
246
- * - `start()` 是唯一公开的长期运行生命周期入口。
247
- * - 多次并发调用会复用同一个启动 Promise,避免重复启动 plugins / rpc。
248
- */
249
- async start(options?: AgentStartOptions): Promise<AgentStartResult> {
250
- if (this.startPromise) {
251
- return await this.startPromise;
252
- }
253
- this.startPromise = (async () => {
254
- const shouldStartPlugins = options?.plugins !== false;
255
-
256
- if (shouldStartPlugins) {
257
- await this.ensurePluginsStarted();
258
- }
259
-
260
- const rpcBinding =
261
- options?.rpc === false || options?.rpc === undefined
262
- ? undefined
263
- : await this.startRpc(options.rpc);
264
-
265
- return {
266
- ...(rpcBinding ? { rpc: rpcBinding } : {}),
267
- pluginsStarted: this.pluginsStarted,
268
- };
269
- })();
270
- try {
271
- return await this.startPromise;
272
- } catch (error) {
273
- this.startPromise = null;
274
- throw error;
275
- }
276
- }
277
-
278
- /**
279
- * 停止当前 agent 实例的长期运行能力。
280
- *
281
- * 关键点(中文)
282
- * - 停止顺序保持为 plugins -> rpc,与当前运行语义一致。
283
- * - 停止后会清空 `startPromise`,允许后续再次 `start()`。
284
- */
285
- async stop(): Promise<AgentStopResult> {
286
- const pluginsStarted = this.pluginsStarted;
287
- const rpcStarted = this.rpcBinding !== null;
288
-
289
- if (pluginsStarted) {
290
- await this.stopActionScheduleRuntime();
291
- await stopAllPlugins(this.agentContext);
292
- this.pluginsStarted = false;
293
- }
294
-
295
- if (rpcStarted) {
296
- await this.stopRpc();
297
- }
298
-
299
- this.startPromise = null;
300
-
301
- return {
302
- rpcStopped: rpcStarted,
303
- pluginsStopped: pluginsStarted,
304
- };
305
- }
306
-
307
- /**
308
- * 更新当前 SDK Agent 的静态基础指令。
309
- *
310
- * 关键点(中文)
311
- * - instruction 不做动态变量替换。
312
- * - 已创建的 session 后续 run 会读取最新 instruction blocks。
313
- */
314
- setInstruction(input: string | string[]): void {
315
- this.instruction = normalizeInstructionInput(input);
316
- }
317
-
318
- /**
319
- * 返回当前项目根目录解析后的配置快照。
320
- */
321
- getConfig(): DowncityConfig {
322
- return this.config;
323
- }
324
-
325
- /**
326
- * 返回当前 agent 绑定的统一日志器。
327
- */
328
- getLogger(): Logger {
329
- return this.logger;
330
- }
331
-
332
- /**
333
- * 返回当前 agent runtime。
334
- *
335
- * 关键点(中文)
336
- * - 供宿主在 agent 外部装配 transport(例如 city HTTP gateway)时复用。
337
- * - 不暴露启动语义,只暴露运行时访问口。
338
- */
339
- getRuntime(): AgentRuntime {
340
- return this.runtime;
341
- }
342
-
343
- /**
344
- * 返回当前 agent context。
345
- *
346
- * 关键点(中文)
347
- * - 供宿主装配 plugin/control 相关外层协议面。
348
- */
349
- getContext(): AgentContext {
350
- return this.agentContext;
351
- }
352
-
353
- /**
354
- * 返回当前 session collection。
355
- *
356
- * 关键点(中文)
357
- * - 供宿主在外层挂载 RemoteAgent transport 时复用。
358
- */
359
- getSessionCollection(): AgentSessionCollection {
360
- return this.sessionCollection;
361
- }
362
-
363
- /**
364
- * 确保当前 plugins 已启动。
365
- *
366
- * 关键点(中文)
367
- * - 这里只负责托管 plugin 的生命周期启动,不隐式启动 RPC 能力。
368
- * - 启动失败的 plugin 会记录日志,但保留与原行为一致的整体启动流程。
369
- */
370
- private async ensurePluginsStarted(): Promise<void> {
371
- if (this.pluginsStarted) return;
372
- const lifecycle = await startAllPlugins(this.agentContext);
373
- this.pluginsStarted = true;
374
- for (const item of lifecycle.results) {
375
- if (!item.success) {
376
- this.logger.error(
377
- `Plugin start failed: ${item.plugin?.name || "unknown"} - ${item.error || "unknown error"}`,
378
- );
379
- }
380
- }
381
- await this.ensureActionScheduleRuntimeStarted();
382
- }
383
-
384
- /**
385
- * 确保 ActionSchedule runtime 已随 Agent 长期生命周期启动。
386
- *
387
- * 关键点(中文)
388
- * - ActionSchedule 不作为 plugin 注册,但它依赖 plugin action 执行能力。
389
- * - 因此这里放在普通 plugins 启动之后,避免到期任务执行到尚未启动的 plugin。
390
- */
391
- private async ensureActionScheduleRuntimeStarted(): Promise<void> {
392
- if (this.actionScheduleRuntime) return;
393
- try {
394
- this.actionScheduleRuntime = await startActionScheduleRuntime(
395
- this.agentContext,
396
- );
397
- } catch (error) {
398
- this.logger.error(
399
- `ActionSchedule start failed: ${String(error)}`,
400
- );
401
- }
402
- }
403
-
404
- /**
405
- * 停止 ActionSchedule runtime。
406
- *
407
- * 关键点(中文)
408
- * - Agent 停止时先停 ActionSchedule,再停普通 plugin,避免关停期间继续触发 action。
409
- */
410
- private async stopActionScheduleRuntime(): Promise<void> {
411
- const runtime = this.actionScheduleRuntime;
412
- this.actionScheduleRuntime = null;
413
- runtime?.stop();
414
- }
415
-
416
- /**
417
- * 启动当前 agent 的本机 RPC server。
418
- */
419
- private async startRpc(
420
- options?: AgentRpcStartOptions,
421
- ): Promise<AgentRpcBinding> {
422
- if (this.rpcBinding) {
423
- return this.rpcBinding;
424
- }
425
- const host = String(options?.host || "127.0.0.1").trim() || "127.0.0.1";
426
- const port =
427
- typeof options?.port === "number" && Number.isInteger(options.port)
428
- ? options.port
429
- : 15314;
430
- const server = await startRpcServer({
431
- host,
432
- port,
433
- sessionCollection: this.sessionCollection,
434
- getAgentContext: () => this.agentContext,
435
- getAgentRuntime: () => this.getRuntime(),
436
- });
437
- this.rpcBinding = {
438
- url: `rpc://${host}:${port}`,
439
- host,
440
- port,
441
- server,
442
- };
443
- return this.rpcBinding;
444
- }
445
-
446
- /**
447
- * 停止当前 agent 的本机 RPC server。
448
- */
449
- private async stopRpc(): Promise<void> {
450
- if (!this.rpcBinding) return;
451
- const current = this.rpcBinding;
452
- this.rpcBinding = null;
453
- await current.server.stop();
454
- }
455
-
456
- /**
457
- * 读取当前项目配置。
458
- *
459
- * 关键点(中文)
460
- * - 若项目根目录尚未存在合法 `downcity.json`,会退回最小 SDK 占位配置。
461
- * - 这样可以允许纯 SDK 场景在尚未初始化项目时继续装配本地 Agent。
462
- */
463
- private loadConfig(): DowncityConfig {
464
- try {
465
- return loadDowncityConfig(this.path);
466
- } catch {
467
- return createFallbackSdkConfig(this.id);
468
- }
469
- }
470
-
471
- /**
472
- * 注册当前 agent 可见的 plugin 实例。
473
- *
474
- * 关键点(中文)
475
- * - SDK 只注册宿主显式传入的 plugin 实例,不再隐式装配 built-in 集合。
476
- * - 所有 plugin 在注册前都会绑定到当前实例 runtime。
477
- */
478
- private registerPlugins(plugins: BasePlugin[]): void {
479
- for (const plugin of plugins) {
480
- const name = String(plugin?.name || "").trim();
481
- if (!name) {
482
- throw new Error("Agent received a plugin without a valid name");
483
- }
484
- if (this.pluginInstances.has(name)) {
485
- throw new Error(`Duplicate plugin registration: ${name}`);
486
- }
487
- plugin.bindAgent(this.runtime);
488
- this.pluginInstances.set(name, plugin);
489
- }
490
- }
491
-
492
- /**
493
- * 创建 plugin 注册表。
494
- *
495
- * 关键点(中文)
496
- * - registry 本身不直接持有静态上下文,而是通过 resolver 延迟读取当前 `agentContext`。
497
- * - 这样 hook 调度与 availability 判断都能复用同一份上下文视图。
498
- */
499
- private createPluginRegistry(input: BasePlugin[]): PluginRegistry {
500
- let pluginRegistryRef: PluginRegistry | null = null;
501
- const hookRegistry = new HookRegistry({
502
- contextResolver: () => this.agentContext,
503
- pluginEnabledChecker: (pluginName) => {
504
- const plugin = pluginRegistryRef?.get(pluginName);
505
- return plugin
506
- ? isPluginEnabled({ plugin, context: this.agentContext })
507
- : false;
508
- },
509
- });
510
- const registry = new PluginRegistry({
511
- contextResolver: () => this.agentContext,
512
- hookRegistry,
513
- });
514
- pluginRegistryRef = registry;
515
-
516
- for (const plugin of input) {
517
- registry.register(plugin);
518
- }
519
- return registry;
520
- }
521
-
522
- /**
523
- * 创建对外暴露的 plugin 调用门面。
524
- */
525
- private createPluginPort(): PluginPort {
526
- return {
527
- list: (): PluginView[] => this.pluginRegistry.list(),
528
- availability: async (pluginName: string): Promise<PluginAvailability> =>
529
- await this.pluginRegistry.availability(pluginName),
530
- runAction: async (params) => await this.pluginRegistry.runAction(params),
531
- pipeline: async <T>(pointName: string, value: T): Promise<T> =>
532
- await this.pluginRegistry.pipeline(pointName, value),
533
- guard: async <T>(pointName: string, value: T): Promise<void> => {
534
- await this.pluginRegistry.guard(pointName, value);
535
- },
536
- effect: async <T>(pointName: string, value: T): Promise<void> => {
537
- await this.pluginRegistry.effect(pointName, value);
538
- },
539
- resolve: async <TInput, TOutput>(
540
- pointName: string,
541
- value: TInput,
542
- ): Promise<TOutput> =>
543
- await this.pluginRegistry.resolve<TInput, TOutput>(pointName, value),
544
- };
545
- }
546
-
547
- /**
548
- * 读取当前 agent 静态 instruction blocks。
549
- */
550
- private loadInstructionSystemBlocks(): AgentSessionSystemBlock[] {
551
- return createInstructionSystemBlocks(this.instruction, this.path);
552
- }
553
-
554
- /**
555
- * 读取当前可用 plugin 暴露的 system blocks。
556
- *
557
- * 关键点(中文)
558
- * - 单个 plugin system 失败不会阻断 session 主链路。
559
- * - 这里只加载当前启用且可用的 plugin system 文本。
560
- */
561
- private async loadPluginSystemBlocks(): Promise<AgentSessionSystemBlock[]> {
562
- const out: AgentSessionSystemBlock[] = [];
563
- for (const plugin of this.pluginInstances.values()) {
564
- if (typeof plugin.system !== "function") continue;
565
- try {
566
- if (!isPluginEnabled({ plugin, context: this.agentContext })) continue;
567
- if (typeof plugin.availability === "function") {
568
- const availability = await plugin.availability(this.agentContext);
569
- if (!availability.available) continue;
570
- }
571
- const text = String(await plugin.system(this.agentContext)).trim();
572
- if (!text) continue;
573
- out.push({
574
- source: "plugin",
575
- name: plugin.name,
576
- content: text,
577
- });
578
- } catch {
579
- // 单个 plugin system 失败不应阻断 SDK session 主链路。
580
- }
581
- }
582
- return out;
583
- }
584
-
585
- /**
586
- * 创建实例级 runtime 视图。
587
- *
588
- * 关键点(中文)
589
- * - runtime 描述的是当前 agent 实例持有的长期状态。
590
- * - 其他 server / plugin / transport 都通过这个视图读取统一状态。
591
- */
592
- private createRuntime(): AgentRuntime {
593
- const runtime = {
594
- cwd: this.path,
595
- rootPath: this.path,
596
- logger: this.logger,
597
- config: this.config,
598
- env: this.env,
599
- systems: this.instruction,
600
- paths: createAgentPathRuntime(this.path, this.id),
601
- pluginConfig: createAgentPluginConfigRuntime(this.path),
602
- getSession: (sessionId: string): SessionPort =>
603
- this.getOrCreateSession(sessionId).getRuntimePort(),
604
- listExecutingSessionIds: () =>
605
- [...this.sessionsById.values()]
606
- .filter((session) => session.isExecuting())
607
- .map((session) => session.id),
608
- getExecutingSessionCount: () =>
609
- [...this.sessionsById.values()].filter((session) => session.isExecuting()).length,
610
- pluginInstances: this.pluginInstances,
611
- } satisfies AgentRuntime;
612
- return runtime;
613
- }
614
-
615
- /**
616
- * 创建统一执行上下文。
617
- *
618
- * 关键点(中文)
619
- * - `AgentContext` 是执行期能力视图,不是状态实体本身。
620
- * - plugin runtime、chat runtime、shell tool 都通过这里消费能力。
621
- */
622
- private createAgentContext(): AgentContext {
623
- let context!: AgentContext;
624
- context = {
625
- agent: this.runtime,
626
- cwd: this.path,
627
- rootPath: this.path,
628
- logger: this.logger,
629
- config: this.config,
630
- env: this.env,
631
- systems: this.instruction,
632
- paths: this.runtime.paths,
633
- pluginConfig: this.runtime.pluginConfig,
634
- session: {
635
- get: (sessionId) => this.getOrCreateSession(sessionId).getRuntimePort(),
636
- listExecutingSessionIds: () => this.runtime.listExecutingSessionIds(),
637
- getExecutingSessionCount: () => this.runtime.getExecutingSessionCount(),
638
- resolveModel: async (sessionId) => {
639
- const session = await this.getSession(sessionId);
640
- return session.config.model;
641
- },
642
- },
643
- invoke: {
644
- invoke: async (params: {
645
- plugin: string;
646
- action: string;
647
- payload?: JsonValue;
648
- }) => {
649
- const pluginName = String(params.plugin || "").trim();
650
- const actionName = String(params.action || "").trim();
651
- const plugin = this.pluginInstances.get(pluginName);
652
- if (!plugin) {
653
- return {
654
- success: false,
655
- error: `Unknown plugin: ${pluginName}`,
656
- };
657
- }
658
- const action = plugin.actions[actionName];
659
- if (!action) {
660
- return {
661
- success: false,
662
- error: `Unknown action: ${pluginName}.${actionName}`,
663
- };
664
- }
665
- const result = await action.execute({
666
- context,
667
- payload: params.payload ?? null,
668
- pluginName,
669
- actionName,
670
- });
671
- if (!result.success) {
672
- return {
673
- success: false,
674
- ...(result.error ? { error: result.error } : {}),
675
- };
676
- }
677
- return {
678
- success: true,
679
- ...(result.data !== undefined ? { data: result.data } : {}),
680
- };
681
- },
682
- },
683
- plugins: this.plugins,
684
- };
685
- return context;
686
- }
687
-
688
- /**
689
- * 获取或创建一个本地 Session 实例。
690
- *
691
- * 关键点(中文)
692
- * - 同一个 `sessionId` 在单个 Agent 实例内只会装配一次。
693
- * - 新建 session 时会把 instruction 与 plugin system 读取能力注入进去。
694
- */
695
- private getOrCreateSession(sessionId?: string): Session {
696
- const resolvedSessionId =
697
- String(sessionId || "").trim() || `session-${Date.now()}-${nanoid(8)}`;
698
- const cached = this.sessionsById.get(resolvedSessionId);
699
- if (cached) return cached;
700
-
701
- const created = new Session({
702
- agentId: this.id,
703
- projectRoot: this.path,
704
- sessionId: resolvedSessionId,
705
- tools: this.tools,
706
- logger: this.logger,
707
- getInstructionSystemBlocks: () => this.loadInstructionSystemBlocks(),
708
- getManagedPluginSystemBlocks: async () => [],
709
- getPluginSystemBlocks: () => this.loadPluginSystemBlocks(),
710
- ensureConfigured: async (session) => {
711
- await this.applySessionDefaults(session);
712
- },
713
- });
714
- this.sessionsById.set(resolvedSessionId, created);
715
- return created;
716
- }
717
-
718
- /**
719
- * 为 session 应用默认模型。
720
- *
721
- * 关键点(中文)
722
- * - 同一个 session 在单个 Agent 实例中只会执行一次配置装配。
723
- * - 默认模型会在首次访问/首次执行前写入当前 session。
724
- */
725
- private async applySessionDefaults(session: Session): Promise<void> {
726
- if (this.configuredSessionIds.has(session.id)) return;
727
- if (this.defaultModel) {
728
- await session.set({
729
- model: this.defaultModel,
730
- });
731
- }
732
- this.configuredSessionIds.add(session.id);
733
- }
734
- }