@downcity/agent 1.1.74 → 1.1.79

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 (373) hide show
  1. package/README.md +14 -17
  2. package/bin/agent/{Agent.d.ts → local/Agent.d.ts} +8 -36
  3. package/bin/agent/local/Agent.d.ts.map +1 -0
  4. package/bin/agent/{Agent.js → local/Agent.js} +45 -200
  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 +94 -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/{RemoteAgent.d.ts → remote/RemoteAgent.d.ts} +3 -3
  27. package/bin/agent/remote/RemoteAgent.d.ts.map +1 -0
  28. package/bin/agent/remote/RemoteAgent.js +58 -0
  29. package/bin/agent/remote/RemoteAgent.js.map +1 -0
  30. package/bin/agent/remote/RemoteSession.d.ts +62 -0
  31. package/bin/agent/remote/RemoteSession.d.ts.map +1 -0
  32. package/bin/agent/remote/RemoteSession.js +225 -0
  33. package/bin/agent/remote/RemoteSession.js.map +1 -0
  34. package/bin/agent/remote/RemoteTransport.d.ts +52 -0
  35. package/bin/agent/remote/RemoteTransport.d.ts.map +1 -0
  36. package/bin/agent/remote/RemoteTransport.js +9 -0
  37. package/bin/agent/remote/RemoteTransport.js.map +1 -0
  38. package/bin/agent/remote/TransportFactory.d.ts +13 -0
  39. package/bin/agent/remote/TransportFactory.d.ts.map +1 -0
  40. package/bin/agent/remote/TransportFactory.js +22 -0
  41. package/bin/agent/remote/TransportFactory.js.map +1 -0
  42. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts +35 -0
  43. package/bin/agent/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -0
  44. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js +259 -0
  45. package/bin/agent/remote/transports/HttpRemoteAgentTransport.js.map +1 -0
  46. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts +34 -0
  47. package/bin/agent/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -0
  48. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js +66 -0
  49. package/bin/agent/remote/transports/RpcRemoteAgentTransport.js.map +1 -0
  50. package/bin/executor/Executor.d.ts +4 -0
  51. package/bin/executor/Executor.d.ts.map +1 -1
  52. package/bin/executor/Executor.js +52 -35
  53. package/bin/executor/Executor.js.map +1 -1
  54. package/bin/executor/composer/history/SessionHistoryWriter.js +2 -2
  55. package/bin/executor/composer/history/SessionHistoryWriter.js.map +1 -1
  56. package/bin/executor/messages/AssistantResultPersistence.d.ts +3 -3
  57. package/bin/executor/messages/AssistantResultPersistence.d.ts.map +1 -1
  58. package/bin/executor/messages/AssistantResultPersistence.js +2 -6
  59. package/bin/executor/messages/AssistantResultPersistence.js.map +1 -1
  60. package/bin/executor/messages/SessionStepEventMapper.d.ts +7 -8
  61. package/bin/executor/messages/SessionStepEventMapper.d.ts.map +1 -1
  62. package/bin/executor/messages/SessionStepEventMapper.js +55 -86
  63. package/bin/executor/messages/SessionStepEventMapper.js.map +1 -1
  64. package/bin/executor/messages/UserVisibleText.d.ts +2 -10
  65. package/bin/executor/messages/UserVisibleText.d.ts.map +1 -1
  66. package/bin/executor/messages/UserVisibleText.js +3 -16
  67. package/bin/executor/messages/UserVisibleText.js.map +1 -1
  68. package/bin/executor/store/history/SessionHistoryStore.d.ts +12 -0
  69. package/bin/executor/store/history/SessionHistoryStore.d.ts.map +1 -1
  70. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts +12 -0
  71. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.d.ts.map +1 -1
  72. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js +145 -8
  73. package/bin/executor/store/history/jsonl/JsonlSessionHistoryStore.js.map +1 -1
  74. package/bin/executor/tools/shell/ShellToolFormatting.d.ts +1 -10
  75. package/bin/executor/tools/shell/ShellToolFormatting.d.ts.map +1 -1
  76. package/bin/executor/tools/shell/ShellToolFormatting.js +1 -39
  77. package/bin/executor/tools/shell/ShellToolFormatting.js.map +1 -1
  78. package/bin/executor/types/SessionHistoryPaths.d.ts +4 -0
  79. package/bin/executor/types/SessionHistoryPaths.d.ts.map +1 -1
  80. package/bin/index.d.ts +5 -5
  81. package/bin/index.d.ts.map +1 -1
  82. package/bin/index.js +3 -3
  83. package/bin/index.js.map +1 -1
  84. package/bin/plugin/core/PluginCommandRequest.d.ts +1 -1
  85. package/bin/plugin/core/PluginCommandRequest.js +1 -1
  86. package/bin/plugin/core/PluginLocalExecution.js +1 -1
  87. package/bin/plugin/core/PluginLocalExecution.js.map +1 -1
  88. package/bin/plugin/core/ProjectConfigStore.d.ts +3 -2
  89. package/bin/plugin/core/ProjectConfigStore.d.ts.map +1 -1
  90. package/bin/plugin/core/ProjectConfigStore.js +3 -4
  91. package/bin/plugin/core/ProjectConfigStore.js.map +1 -1
  92. package/bin/plugin/types/Plugin.d.ts +10 -842
  93. package/bin/plugin/types/Plugin.d.ts.map +1 -1
  94. package/bin/plugin/types/Plugin.js +3 -4
  95. package/bin/plugin/types/Plugin.js.map +1 -1
  96. package/bin/plugin/types/PluginState.d.ts +1 -1
  97. package/bin/plugin/types/PluginState.d.ts.map +1 -1
  98. package/bin/rpc/Client.d.ts +2 -99
  99. package/bin/rpc/Client.d.ts.map +1 -1
  100. package/bin/rpc/Client.js +0 -46
  101. package/bin/rpc/Client.js.map +1 -1
  102. package/bin/rpc/Server.d.ts +5 -21
  103. package/bin/rpc/Server.d.ts.map +1 -1
  104. package/bin/rpc/Server.js +30 -315
  105. package/bin/rpc/Server.js.map +1 -1
  106. package/bin/rpc/server/InternalHandlers.d.ts +21 -0
  107. package/bin/rpc/server/InternalHandlers.d.ts.map +1 -0
  108. package/bin/rpc/server/InternalHandlers.js +190 -0
  109. package/bin/rpc/server/InternalHandlers.js.map +1 -0
  110. package/bin/rpc/server/RequestDispatcher.d.ts +27 -0
  111. package/bin/rpc/server/RequestDispatcher.d.ts.map +1 -0
  112. package/bin/rpc/server/RequestDispatcher.js +38 -0
  113. package/bin/rpc/server/RequestDispatcher.js.map +1 -0
  114. package/bin/rpc/server/SdkSessionHandlers.d.ts +25 -0
  115. package/bin/rpc/server/SdkSessionHandlers.d.ts.map +1 -0
  116. package/bin/rpc/server/SdkSessionHandlers.js +86 -0
  117. package/bin/rpc/server/SdkSessionHandlers.js.map +1 -0
  118. package/bin/rpc/server/ServerTypes.d.ts +59 -0
  119. package/bin/rpc/server/ServerTypes.d.ts.map +1 -0
  120. package/bin/rpc/server/ServerTypes.js +9 -0
  121. package/bin/rpc/server/ServerTypes.js.map +1 -0
  122. package/bin/{runtime/sandbox → sandbox}/MacOsSeatbeltSandbox.d.ts +1 -1
  123. package/bin/sandbox/MacOsSeatbeltSandbox.d.ts.map +1 -0
  124. package/bin/sandbox/MacOsSeatbeltSandbox.js.map +1 -0
  125. package/bin/{runtime/sandbox → sandbox}/SandboxConfigResolver.d.ts +2 -2
  126. package/bin/sandbox/SandboxConfigResolver.d.ts.map +1 -0
  127. package/bin/sandbox/SandboxConfigResolver.js.map +1 -0
  128. package/bin/{runtime/sandbox → sandbox}/SandboxRunner.d.ts +2 -2
  129. package/bin/sandbox/SandboxRunner.d.ts.map +1 -0
  130. package/bin/{runtime/sandbox → sandbox}/SandboxRunner.js +2 -2
  131. package/bin/sandbox/SandboxRunner.js.map +1 -0
  132. package/bin/sandbox/types/Sandbox.d.ts.map +1 -0
  133. package/bin/sandbox/types/Sandbox.js.map +1 -0
  134. package/bin/{runtime/sandbox → sandbox}/types/SandboxRuntime.d.ts +2 -2
  135. package/bin/sandbox/types/SandboxRuntime.d.ts.map +1 -0
  136. package/bin/sandbox/types/SandboxRuntime.js.map +1 -0
  137. package/bin/session/Session.d.ts.map +1 -1
  138. package/bin/session/Session.js +2 -1
  139. package/bin/session/Session.js.map +1 -1
  140. package/bin/session/browse/Browse.d.ts +1 -1
  141. package/bin/session/browse/Browse.d.ts.map +1 -1
  142. package/bin/session/browse/Browse.js +28 -13
  143. package/bin/session/browse/Browse.js.map +1 -1
  144. package/bin/session/index.d.ts +1 -1
  145. package/bin/session/index.d.ts.map +1 -1
  146. package/bin/session/index.js +1 -1
  147. package/bin/session/index.js.map +1 -1
  148. package/bin/session/storage/Paths.d.ts +9 -0
  149. package/bin/session/storage/Paths.d.ts.map +1 -1
  150. package/bin/session/storage/Paths.js +11 -0
  151. package/bin/session/storage/Paths.js.map +1 -1
  152. package/bin/types/agent/AgentOptions.d.ts +134 -0
  153. package/bin/types/agent/AgentOptions.d.ts.map +1 -0
  154. package/bin/types/agent/AgentOptions.js +9 -0
  155. package/bin/types/agent/AgentOptions.js.map +1 -0
  156. package/bin/types/{runtime/host/AgentHost.d.ts → agent/AgentRuntimeAssembly.d.ts} +4 -4
  157. package/bin/types/agent/AgentRuntimeAssembly.d.ts.map +1 -0
  158. package/bin/types/{runtime/host/AgentHost.js → agent/AgentRuntimeAssembly.js} +3 -3
  159. package/bin/types/agent/AgentRuntimeAssembly.js.map +1 -0
  160. package/bin/types/agent/AgentTypes.d.ts +8 -613
  161. package/bin/types/agent/AgentTypes.d.ts.map +1 -1
  162. package/bin/types/agent/AgentTypes.js +4 -4
  163. package/bin/types/agent/RemoteAgentOptions.d.ts +28 -0
  164. package/bin/types/agent/RemoteAgentOptions.d.ts.map +1 -0
  165. package/bin/types/agent/RemoteAgentOptions.js +9 -0
  166. package/bin/types/agent/RemoteAgentOptions.js.map +1 -0
  167. package/bin/types/agent/SessionActor.d.ts +60 -0
  168. package/bin/types/agent/SessionActor.d.ts.map +1 -0
  169. package/bin/types/agent/SessionActor.js +9 -0
  170. package/bin/types/agent/SessionActor.js.map +1 -0
  171. package/bin/types/agent/SessionTypes.d.ts +312 -0
  172. package/bin/types/agent/SessionTypes.d.ts.map +1 -0
  173. package/bin/types/agent/SessionTypes.js +9 -0
  174. package/bin/types/agent/SessionTypes.js.map +1 -0
  175. package/bin/types/config/DowncityConfig.d.ts +1 -1
  176. package/bin/types/config/DowncityConfig.d.ts.map +1 -1
  177. package/bin/types/{runtime/host → platform}/Store.d.ts +1 -1
  178. package/bin/types/platform/Store.d.ts.map +1 -0
  179. package/bin/types/{runtime/host → platform}/Store.js +1 -1
  180. package/bin/types/platform/Store.js.map +1 -0
  181. package/bin/types/plugin/PluginAction.d.ts +119 -0
  182. package/bin/types/plugin/PluginAction.d.ts.map +1 -0
  183. package/bin/types/plugin/PluginAction.js +9 -0
  184. package/bin/types/plugin/PluginAction.js.map +1 -0
  185. package/bin/types/plugin/PluginCommand.d.ts +80 -0
  186. package/bin/types/plugin/PluginCommand.d.ts.map +1 -0
  187. package/bin/types/plugin/PluginCommand.js +9 -0
  188. package/bin/types/plugin/PluginCommand.js.map +1 -0
  189. package/bin/types/plugin/PluginDefinition.d.ts +57 -0
  190. package/bin/types/plugin/PluginDefinition.d.ts.map +1 -0
  191. package/bin/types/plugin/PluginDefinition.js +9 -0
  192. package/bin/types/plugin/PluginDefinition.js.map +1 -0
  193. package/bin/types/plugin/PluginHttp.d.ts +34 -0
  194. package/bin/types/plugin/PluginHttp.d.ts.map +1 -0
  195. package/bin/types/plugin/PluginHttp.js +9 -0
  196. package/bin/types/plugin/PluginHttp.js.map +1 -0
  197. package/bin/types/plugin/PluginRuntime.d.ts +148 -0
  198. package/bin/types/plugin/PluginRuntime.d.ts.map +1 -0
  199. package/bin/types/plugin/PluginRuntime.js +9 -0
  200. package/bin/types/plugin/PluginRuntime.js.map +1 -0
  201. package/bin/types/plugin/PluginSetup.d.ts +133 -0
  202. package/bin/types/plugin/PluginSetup.d.ts.map +1 -0
  203. package/bin/types/plugin/PluginSetup.js +9 -0
  204. package/bin/types/plugin/PluginSetup.js.map +1 -0
  205. package/bin/types/plugin/PluginState.d.ts +69 -0
  206. package/bin/types/plugin/PluginState.d.ts.map +1 -0
  207. package/bin/types/plugin/PluginState.js +9 -0
  208. package/bin/types/plugin/PluginState.js.map +1 -0
  209. package/bin/types/rpc/RpcProtocol.d.ts +323 -0
  210. package/bin/types/rpc/RpcProtocol.d.ts.map +1 -0
  211. package/bin/types/rpc/RpcProtocol.js +10 -0
  212. package/bin/types/rpc/RpcProtocol.js.map +1 -0
  213. package/bin/types/runtime/agent/AgentContext.d.ts +1 -1
  214. package/bin/types/runtime/agent/AgentContext.d.ts.map +1 -1
  215. package/bin/types/runtime/agent/AgentRuntime.d.ts +1 -1
  216. package/bin/types/runtime/agent/AgentRuntime.d.ts.map +1 -1
  217. package/package.json +2 -2
  218. package/scripts/session-history-inflight.test.mjs +146 -0
  219. package/src/agent/{Agent.ts → local/Agent.ts} +50 -228
  220. package/src/agent/local/AgentInstructions.ts +68 -0
  221. package/src/agent/local/AgentPluginFactory.ts +83 -0
  222. package/src/{runtime/host/AgentHostRuntime.ts → agent/local/AgentRuntimeAssembly.ts} +2 -2
  223. package/src/agent/local/AgentRuntimeFactory.ts +173 -0
  224. package/src/{runtime/host → agent/local}/ProjectSetup.ts +1 -1
  225. package/src/agent/remote/RemoteAgent.ts +76 -0
  226. package/src/agent/remote/RemoteSession.ts +287 -0
  227. package/src/agent/remote/RemoteTransport.ts +71 -0
  228. package/src/agent/remote/TransportFactory.ts +29 -0
  229. package/src/agent/remote/transports/HttpRemoteAgentTransport.ts +347 -0
  230. package/src/agent/remote/transports/RpcRemoteAgentTransport.ts +107 -0
  231. package/src/executor/Executor.ts +56 -37
  232. package/src/executor/composer/history/SessionHistoryWriter.ts +2 -2
  233. package/src/executor/messages/AssistantResultPersistence.ts +4 -12
  234. package/src/executor/messages/SessionStepEventMapper.ts +59 -101
  235. package/src/executor/messages/UserVisibleText.ts +3 -18
  236. package/src/executor/store/history/SessionHistoryStore.ts +15 -0
  237. package/src/executor/store/history/jsonl/JsonlSessionHistoryStore.ts +164 -11
  238. package/src/executor/tools/shell/ShellToolFormatting.ts +1 -50
  239. package/src/executor/types/SessionHistoryPaths.ts +5 -0
  240. package/src/index.ts +5 -5
  241. package/src/plugin/core/PluginCommandRequest.ts +1 -1
  242. package/src/plugin/core/PluginLocalExecution.ts +1 -1
  243. package/src/plugin/core/ProjectConfigStore.ts +4 -4
  244. package/src/plugin/types/Plugin.ts +54 -913
  245. package/src/plugin/types/PluginState.ts +1 -1
  246. package/src/rpc/Client.ts +16 -322
  247. package/src/rpc/Server.ts +39 -565
  248. package/src/rpc/server/InternalHandlers.ts +230 -0
  249. package/src/rpc/server/RequestDispatcher.ts +67 -0
  250. package/src/rpc/server/SdkSessionHandlers.ts +106 -0
  251. package/src/rpc/server/ServerTypes.ts +65 -0
  252. package/src/{runtime/sandbox → sandbox}/MacOsSeatbeltSandbox.ts +1 -1
  253. package/src/{runtime/sandbox → sandbox}/SandboxConfigResolver.ts +1 -1
  254. package/src/{runtime/sandbox → sandbox}/SandboxRunner.ts +3 -3
  255. package/src/{runtime/sandbox → sandbox}/types/SandboxRuntime.ts +2 -2
  256. package/src/session/Session.ts +6 -0
  257. package/src/session/browse/Browse.ts +29 -10
  258. package/src/session/index.ts +1 -0
  259. package/src/session/storage/Paths.ts +19 -0
  260. package/src/types/agent/AgentOptions.ts +147 -0
  261. package/src/types/{runtime/host/AgentHost.ts → agent/AgentRuntimeAssembly.ts} +2 -2
  262. package/src/types/agent/AgentTypes.ts +37 -709
  263. package/src/types/agent/RemoteAgentOptions.ts +29 -0
  264. package/src/types/agent/SessionActor.ts +88 -0
  265. package/src/types/agent/SessionTypes.ts +334 -0
  266. package/src/types/config/DowncityConfig.ts +1 -1
  267. package/src/types/{runtime/host → platform}/Store.ts +1 -1
  268. package/src/types/plugin/PluginAction.ts +133 -0
  269. package/src/types/plugin/PluginCommand.ts +89 -0
  270. package/src/types/plugin/PluginDefinition.ts +74 -0
  271. package/src/types/plugin/PluginHttp.ts +36 -0
  272. package/src/types/plugin/PluginRuntime.ts +169 -0
  273. package/src/types/plugin/PluginSetup.ts +138 -0
  274. package/src/types/plugin/PluginState.ts +82 -0
  275. package/src/types/rpc/RpcProtocol.ts +361 -0
  276. package/src/types/runtime/agent/AgentContext.ts +1 -1
  277. package/src/types/runtime/agent/AgentRuntime.ts +1 -1
  278. package/tsconfig.tsbuildinfo +1 -1
  279. package/bin/agent/Agent.d.ts.map +0 -1
  280. package/bin/agent/Agent.js.map +0 -1
  281. package/bin/agent/RemoteAgent.d.ts.map +0 -1
  282. package/bin/agent/RemoteAgent.js +0 -585
  283. package/bin/agent/RemoteAgent.js.map +0 -1
  284. package/bin/runtime/auth/AuthEnv.d.ts +0 -36
  285. package/bin/runtime/auth/AuthEnv.d.ts.map +0 -1
  286. package/bin/runtime/auth/AuthEnv.js +0 -54
  287. package/bin/runtime/auth/AuthEnv.js.map +0 -1
  288. package/bin/runtime/auth/CliAuthStateStore.d.ts +0 -29
  289. package/bin/runtime/auth/CliAuthStateStore.d.ts.map +0 -1
  290. package/bin/runtime/auth/CliAuthStateStore.js +0 -26
  291. package/bin/runtime/auth/CliAuthStateStore.js.map +0 -1
  292. package/bin/runtime/control/AuthControlService.d.ts +0 -34
  293. package/bin/runtime/control/AuthControlService.d.ts.map +0 -1
  294. package/bin/runtime/control/AuthControlService.js +0 -129
  295. package/bin/runtime/control/AuthControlService.js.map +0 -1
  296. package/bin/runtime/control/CommonHelpers.d.ts +0 -36
  297. package/bin/runtime/control/CommonHelpers.d.ts.map +0 -1
  298. package/bin/runtime/control/CommonHelpers.js +0 -63
  299. package/bin/runtime/control/CommonHelpers.js.map +0 -1
  300. package/bin/runtime/control/ExecuteBySession.d.ts +0 -30
  301. package/bin/runtime/control/ExecuteBySession.d.ts.map +0 -1
  302. package/bin/runtime/control/ExecuteBySession.js +0 -41
  303. package/bin/runtime/control/ExecuteBySession.js.map +0 -1
  304. package/bin/runtime/control/ExecuteInput.d.ts +0 -18
  305. package/bin/runtime/control/ExecuteInput.d.ts.map +0 -1
  306. package/bin/runtime/control/ExecuteInput.js +0 -201
  307. package/bin/runtime/control/ExecuteInput.js.map +0 -1
  308. package/bin/runtime/control/Helpers.d.ts +0 -13
  309. package/bin/runtime/control/Helpers.d.ts.map +0 -1
  310. package/bin/runtime/control/Helpers.js +0 -13
  311. package/bin/runtime/control/Helpers.js.map +0 -1
  312. package/bin/runtime/control/MessageTimeline.d.ts +0 -22
  313. package/bin/runtime/control/MessageTimeline.d.ts.map +0 -1
  314. package/bin/runtime/control/MessageTimeline.js +0 -226
  315. package/bin/runtime/control/MessageTimeline.js.map +0 -1
  316. package/bin/runtime/control/SessionSummaryStore.d.ts +0 -20
  317. package/bin/runtime/control/SessionSummaryStore.d.ts.map +0 -1
  318. package/bin/runtime/control/SessionSummaryStore.js +0 -50
  319. package/bin/runtime/control/SessionSummaryStore.js.map +0 -1
  320. package/bin/runtime/control/TaskStore.d.ts +0 -33
  321. package/bin/runtime/control/TaskStore.d.ts.map +0 -1
  322. package/bin/runtime/control/TaskStore.js +0 -175
  323. package/bin/runtime/control/TaskStore.js.map +0 -1
  324. package/bin/runtime/control/types/AuthControl.d.ts +0 -30
  325. package/bin/runtime/control/types/AuthControl.d.ts.map +0 -1
  326. package/bin/runtime/control/types/AuthControl.js +0 -9
  327. package/bin/runtime/control/types/AuthControl.js.map +0 -1
  328. package/bin/runtime/control/types/ControlSessionExecute.d.ts +0 -85
  329. package/bin/runtime/control/types/ControlSessionExecute.d.ts.map +0 -1
  330. package/bin/runtime/control/types/ControlSessionExecute.js +0 -9
  331. package/bin/runtime/control/types/ControlSessionExecute.js.map +0 -1
  332. package/bin/runtime/control/types/ControlViewData.d.ts +0 -320
  333. package/bin/runtime/control/types/ControlViewData.d.ts.map +0 -1
  334. package/bin/runtime/control/types/ControlViewData.js +0 -9
  335. package/bin/runtime/control/types/ControlViewData.js.map +0 -1
  336. package/bin/runtime/host/AgentHostRuntime.d.ts.map +0 -1
  337. package/bin/runtime/host/AgentHostRuntime.js.map +0 -1
  338. package/bin/runtime/host/ProjectSetup.d.ts.map +0 -1
  339. package/bin/runtime/host/ProjectSetup.js.map +0 -1
  340. package/bin/runtime/sandbox/MacOsSeatbeltSandbox.d.ts.map +0 -1
  341. package/bin/runtime/sandbox/MacOsSeatbeltSandbox.js.map +0 -1
  342. package/bin/runtime/sandbox/SandboxConfigResolver.d.ts.map +0 -1
  343. package/bin/runtime/sandbox/SandboxConfigResolver.js.map +0 -1
  344. package/bin/runtime/sandbox/SandboxRunner.d.ts.map +0 -1
  345. package/bin/runtime/sandbox/SandboxRunner.js.map +0 -1
  346. package/bin/runtime/sandbox/types/Sandbox.d.ts.map +0 -1
  347. package/bin/runtime/sandbox/types/Sandbox.js.map +0 -1
  348. package/bin/runtime/sandbox/types/SandboxRuntime.d.ts.map +0 -1
  349. package/bin/runtime/sandbox/types/SandboxRuntime.js.map +0 -1
  350. package/bin/types/runtime/host/AgentHost.d.ts.map +0 -1
  351. package/bin/types/runtime/host/AgentHost.js.map +0 -1
  352. package/bin/types/runtime/host/Store.d.ts.map +0 -1
  353. package/bin/types/runtime/host/Store.js.map +0 -1
  354. package/src/agent/RemoteAgent.ts +0 -834
  355. package/src/runtime/auth/AuthEnv.ts +0 -62
  356. package/src/runtime/auth/CliAuthStateStore.ts +0 -46
  357. package/src/runtime/control/AuthControlService.ts +0 -169
  358. package/src/runtime/control/CommonHelpers.ts +0 -69
  359. package/src/runtime/control/ExecuteBySession.ts +0 -52
  360. package/src/runtime/control/ExecuteInput.ts +0 -236
  361. package/src/runtime/control/Helpers.ts +0 -22
  362. package/src/runtime/control/MessageTimeline.ts +0 -269
  363. package/src/runtime/control/SessionSummaryStore.ts +0 -72
  364. package/src/runtime/control/TaskStore.ts +0 -242
  365. package/src/runtime/control/types/AuthControl.ts +0 -34
  366. package/src/runtime/control/types/ControlSessionExecute.ts +0 -99
  367. package/src/runtime/control/types/ControlViewData.ts +0 -392
  368. /package/bin/{runtime/sandbox → sandbox}/MacOsSeatbeltSandbox.js +0 -0
  369. /package/bin/{runtime/sandbox → sandbox}/SandboxConfigResolver.js +0 -0
  370. /package/bin/{runtime/sandbox → sandbox}/types/Sandbox.d.ts +0 -0
  371. /package/bin/{runtime/sandbox → sandbox}/types/Sandbox.js +0 -0
  372. /package/bin/{runtime/sandbox → sandbox}/types/SandboxRuntime.js +0 -0
  373. /package/src/{runtime/sandbox → sandbox}/types/Sandbox.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Agent 本地入口与实例装配中心。
2
+ * Agent local:本地入口与实例装配中心。
3
3
  *
4
4
  * 职责说明(中文)
5
5
  * - 对外暴露 `Agent` 这一唯一的本地实例类。
@@ -15,18 +15,10 @@ import fs from "fs-extra";
15
15
  import { nanoid } from "nanoid";
16
16
  import type { Tool } from "ai";
17
17
  import type { BasePlugin } from "@/plugin/core/BasePlugin.js";
18
- import type {
19
- AgentContext,
20
- SessionPort,
21
- } from "@/types/runtime/agent/AgentContext.js";
18
+ import type { AgentContext } from "@/types/runtime/agent/AgentContext.js";
22
19
  import type { AgentRuntime } from "@/types/runtime/agent/AgentRuntime.js";
23
20
  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";
21
+ import type { PluginPort } from "@/plugin/types/Plugin.js";
30
22
  import type {
31
23
  AgentSession,
32
24
  AgentCreateSessionInput,
@@ -44,17 +36,11 @@ import type {
44
36
  import type { AgentModel } from "@/model/CityModelAdapter.js";
45
37
  import { Logger } from "@/utils/logger/Logger.js";
46
38
  import { Session } from "@/session/Session.js";
47
- import { DEFAULT_SHIP_PROMPTS } from "@executor/composer/system/default/SystemDomain.js";
48
39
  import {
49
40
  getSdkAgentSessionDirPath,
50
41
  listAgentSessionSummaryPage,
51
42
  } from "@/session/index.js";
52
- import {
53
- createAgentPathRuntime,
54
- createAgentPluginConfigRuntime,
55
- } from "@/runtime/host/AgentHostRuntime.js";
56
43
  import { loadDowncityConfig, resolveAgentEnv } from "@/config/Config.js";
57
- import { HookRegistry } from "@/plugin/core/HookRegistry.js";
58
44
  import { PluginRegistry } from "@/plugin/core/PluginRegistry.js";
59
45
  import { isPluginEnabled } from "@/plugin/core/Activation.js";
60
46
  import { setShellToolRuntime } from "@executor/tools/shell/ShellToolDefinition.js";
@@ -62,52 +48,19 @@ import { startAllPlugins, stopAllPlugins } from "@/plugin/core/Manager.js";
62
48
  import type { ActionScheduleRuntimeHandle } from "@/plugin/core/ActionScheduleRuntime.js";
63
49
  import { startActionScheduleRuntime } from "@/plugin/core/ActionScheduleRuntime.js";
64
50
  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
- }
51
+ import {
52
+ createFallbackSdkConfig,
53
+ createInstructionSystemBlocks,
54
+ normalizeInstructionInput,
55
+ } from "@/agent/local/AgentInstructions.js";
56
+ import {
57
+ createAgentPluginPort,
58
+ createAgentPluginRegistry,
59
+ } from "@/agent/local/AgentPluginFactory.js";
60
+ import {
61
+ createAgentContext,
62
+ createAgentRuntime,
63
+ } from "@/agent/local/AgentRuntimeFactory.js";
111
64
 
112
65
  /**
113
66
  * SDK 本地 Agent。
@@ -156,13 +109,40 @@ export class Agent {
156
109
  this.defaultModel = options.model;
157
110
  this.config = this.loadConfig();
158
111
  this.pluginInstances = new Map<string, BasePlugin>();
159
- this.runtime = this.createRuntime();
112
+ this.runtime = createAgentRuntime({
113
+ agent_id: this.id,
114
+ project_root: this.path,
115
+ logger: this.logger,
116
+ config: this.config,
117
+ env: this.env,
118
+ systems: this.instruction,
119
+ plugin_instances: this.pluginInstances,
120
+ get_session_port: (session_id) =>
121
+ this.getOrCreateSession(session_id).getRuntimePort(),
122
+ list_cached_sessions: () => [...this.sessionsById.values()],
123
+ });
160
124
  this.registerPlugins(options.plugins || []);
161
- this.pluginRegistry = this.createPluginRegistry([
162
- ...this.pluginInstances.values(),
163
- ]);
164
- this.plugins = this.createPluginPort();
165
- this.agentContext = this.createAgentContext();
125
+ this.pluginRegistry = createAgentPluginRegistry({
126
+ plugins: [...this.pluginInstances.values()],
127
+ get_context: () => this.agentContext,
128
+ });
129
+ this.plugins = createAgentPluginPort(this.pluginRegistry);
130
+ this.agentContext = createAgentContext({
131
+ runtime: this.runtime,
132
+ project_root: this.path,
133
+ logger: this.logger,
134
+ config: this.config,
135
+ env: this.env,
136
+ systems: this.instruction,
137
+ plugin_instances: this.pluginInstances,
138
+ plugins: this.plugins,
139
+ get_session_port: (session_id) =>
140
+ this.getOrCreateSession(session_id).getRuntimePort(),
141
+ resolve_session_model: async (session_id) => {
142
+ const session = await this.getSession(session_id);
143
+ return session.config.model;
144
+ },
145
+ });
166
146
  setShellToolRuntime(this.agentContext.invoke);
167
147
 
168
148
  this.sessionCollection = {
@@ -333,7 +313,7 @@ export class Agent {
333
313
  * 返回当前 agent runtime。
334
314
  *
335
315
  * 关键点(中文)
336
- * - 供宿主在 agent 外部装配 transport(例如 city HTTP gateway)时复用。
316
+ * - 供宿主在 agent 外部装配 transport(例如 Town HTTP gateway)时复用。
337
317
  * - 不暴露启动语义,只暴露运行时访问口。
338
318
  */
339
319
  getRuntime(): AgentRuntime {
@@ -489,61 +469,6 @@ export class Agent {
489
469
  }
490
470
  }
491
471
 
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
472
  /**
548
473
  * 读取当前 agent 静态 instruction blocks。
549
474
  */
@@ -582,109 +507,6 @@ export class Agent {
582
507
  return out;
583
508
  }
584
509
 
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
510
  /**
689
511
  * 获取或创建一个本地 Session 实例。
690
512
  *
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Agent instruction 组装工具。
3
+ *
4
+ * 关键点(中文)
5
+ * - 这里只处理静态 instruction 与默认 core prompt。
6
+ * - 不读取 session、plugin 或 runtime 状态,保持为纯函数。
7
+ */
8
+
9
+ import type { DowncityConfig } from "@/types/config/DowncityConfig.js";
10
+ import type { AgentSessionSystemBlock } from "@/types/agent/AgentTypes.js";
11
+ import { DEFAULT_SHIP_PROMPTS } from "@executor/composer/system/default/SystemDomain.js";
12
+
13
+ /**
14
+ * 创建 SDK 场景的最小 fallback 配置。
15
+ */
16
+ export function createFallbackSdkConfig(agent_id: string): DowncityConfig {
17
+ return {
18
+ id: agent_id,
19
+ version: "0.0.0",
20
+ } as DowncityConfig;
21
+ }
22
+
23
+ /**
24
+ * 归一化调用方传入的静态 instruction。
25
+ */
26
+ export function normalizeInstructionInput(
27
+ input: string | string[] | undefined,
28
+ ): string[] {
29
+ const items = Array.isArray(input)
30
+ ? input
31
+ : typeof input === "string"
32
+ ? [input]
33
+ : [];
34
+ return items
35
+ .map((item) => String(item || "").trim())
36
+ .filter((item) => item.length > 0);
37
+ }
38
+
39
+ function createCoreInstructionContent(project_root: string): string {
40
+ const current_year = String(new Date().getFullYear());
41
+ return DEFAULT_SHIP_PROMPTS
42
+ .replaceAll("{{project_path}}", project_root)
43
+ .replaceAll("{{project_root}}", project_root)
44
+ .replaceAll("{{current_year}}", current_year);
45
+ }
46
+
47
+ /**
48
+ * 构造进入 session system prompt 的 instruction block。
49
+ */
50
+ export function createInstructionSystemBlocks(
51
+ instruction: string[],
52
+ project_root: string,
53
+ ): AgentSessionSystemBlock[] {
54
+ if (instruction.length === 0) {
55
+ return [
56
+ {
57
+ source: "core",
58
+ name: "default",
59
+ content: createCoreInstructionContent(project_root),
60
+ },
61
+ ];
62
+ }
63
+ return instruction.map((content, index) => ({
64
+ source: "instruction" as const,
65
+ name: instruction.length === 1 ? "agent" : `agent:${index + 1}`,
66
+ content,
67
+ }));
68
+ }
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Agent plugin 装配工厂。
3
+ *
4
+ * 关键点(中文)
5
+ * - 这里只负责把 plugin 实例装配成 registry 与对外 port。
6
+ * - Agent 仍然持有长期状态;这里不创建新的运行时层级。
7
+ */
8
+
9
+ import type { BasePlugin } from "@/plugin/core/BasePlugin.js";
10
+ import type { AgentContext } from "@/types/runtime/agent/AgentContext.js";
11
+ import type {
12
+ PluginAvailability,
13
+ PluginPort,
14
+ PluginView,
15
+ } from "@/plugin/types/Plugin.js";
16
+ import { HookRegistry } from "@/plugin/core/HookRegistry.js";
17
+ import { PluginRegistry } from "@/plugin/core/PluginRegistry.js";
18
+ import { isPluginEnabled } from "@/plugin/core/Activation.js";
19
+
20
+ /**
21
+ * 创建 plugin registry 的参数。
22
+ */
23
+ export interface CreateAgentPluginRegistryOptions {
24
+ /** 当前 agent 显式注册的 plugin 实例。 */
25
+ plugins: BasePlugin[];
26
+ /** 延迟读取当前 AgentContext。 */
27
+ get_context: () => AgentContext;
28
+ }
29
+
30
+ /**
31
+ * 创建 plugin 注册表。
32
+ */
33
+ export function createAgentPluginRegistry(
34
+ options: CreateAgentPluginRegistryOptions,
35
+ ): PluginRegistry {
36
+ let plugin_registry_ref: PluginRegistry | null = null;
37
+ const hook_registry = new HookRegistry({
38
+ contextResolver: options.get_context,
39
+ pluginEnabledChecker: (plugin_name) => {
40
+ const plugin = plugin_registry_ref?.get(plugin_name);
41
+ return plugin
42
+ ? isPluginEnabled({ plugin, context: options.get_context() })
43
+ : false;
44
+ },
45
+ });
46
+ const registry = new PluginRegistry({
47
+ contextResolver: options.get_context,
48
+ hookRegistry: hook_registry,
49
+ });
50
+ plugin_registry_ref = registry;
51
+
52
+ for (const plugin of options.plugins) {
53
+ registry.register(plugin);
54
+ }
55
+ return registry;
56
+ }
57
+
58
+ /**
59
+ * 创建对外暴露的 plugin 调用门面。
60
+ */
61
+ export function createAgentPluginPort(
62
+ plugin_registry: PluginRegistry,
63
+ ): PluginPort {
64
+ return {
65
+ list: (): PluginView[] => plugin_registry.list(),
66
+ availability: async (plugin_name: string): Promise<PluginAvailability> =>
67
+ await plugin_registry.availability(plugin_name),
68
+ runAction: async (params) => await plugin_registry.runAction(params),
69
+ pipeline: async <T>(point_name: string, value: T): Promise<T> =>
70
+ await plugin_registry.pipeline(point_name, value),
71
+ guard: async <T>(point_name: string, value: T): Promise<void> => {
72
+ await plugin_registry.guard(point_name, value);
73
+ },
74
+ effect: async <T>(point_name: string, value: T): Promise<void> => {
75
+ await plugin_registry.effect(point_name, value);
76
+ },
77
+ resolve: async <TInput, TOutput>(
78
+ point_name: string,
79
+ value: TInput,
80
+ ): Promise<TOutput> =>
81
+ await plugin_registry.resolve<TInput, TOutput>(point_name, value),
82
+ };
83
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AgentHostRuntime:装配 AgentRuntime 宿主能力。
2
+ * AgentRuntimeAssembly:装配本地 AgentRuntime 能力。
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - agent runtime 负责创建这些宿主能力对象,再注入到 AgentRuntime。
@@ -22,7 +22,7 @@ import { persistProjectPluginConfig } from "@/plugin/core/ProjectConfigStore.js"
22
22
  import type {
23
23
  AgentPathRuntime,
24
24
  AgentPluginConfigRuntime,
25
- } from "@/types/runtime/host/AgentHost.js";
25
+ } from "@/types/agent/AgentRuntimeAssembly.js";
26
26
  import type { DowncityConfig } from "@/types/config/DowncityConfig.js";
27
27
 
28
28
  /**
@@ -0,0 +1,173 @@
1
+ /**
2
+ * Agent runtime / context 装配工厂。
3
+ *
4
+ * 关键点(中文)
5
+ * - 这里只创建长期 runtime 视图与执行期 context 视图。
6
+ * - Agent 仍然持有 session/plugin 状态;这里通过函数参数读取状态。
7
+ */
8
+
9
+ import type { BasePlugin } from "@/plugin/core/BasePlugin.js";
10
+ import type { Logger } from "@/utils/logger/Logger.js";
11
+ import type { DowncityConfig } from "@/types/config/DowncityConfig.js";
12
+ import type { LanguageModel } from "ai";
13
+ import type { JsonValue } from "@/types/common/Json.js";
14
+ import type {
15
+ AgentContext,
16
+ SessionPort,
17
+ } from "@/types/runtime/agent/AgentContext.js";
18
+ import type { AgentRuntime } from "@/types/runtime/agent/AgentRuntime.js";
19
+ import type { PluginPort } from "@/plugin/types/Plugin.js";
20
+ import type { Session } from "@/session/Session.js";
21
+ import {
22
+ createAgentPathRuntime,
23
+ createAgentPluginConfigRuntime,
24
+ } from "@/agent/local/AgentRuntimeAssembly.js";
25
+
26
+ /**
27
+ * 创建 AgentRuntime 的参数。
28
+ */
29
+ export interface CreateAgentRuntimeOptions {
30
+ /** 当前 agent id。 */
31
+ agent_id: string;
32
+ /** 当前项目根目录。 */
33
+ project_root: string;
34
+ /** 统一日志器。 */
35
+ logger: Logger;
36
+ /** 当前解析后的配置。 */
37
+ config: DowncityConfig;
38
+ /** 当前环境变量快照。 */
39
+ env: Record<string, string>;
40
+ /** 当前静态 system 文本集合。 */
41
+ systems: string[];
42
+ /** 当前 plugin 实例集合。 */
43
+ plugin_instances: Map<string, BasePlugin>;
44
+ /** 获取或创建 session runtime port。 */
45
+ get_session_port: (session_id: string) => SessionPort;
46
+ /** 读取当前已缓存的 session 实例。 */
47
+ list_cached_sessions: () => Session[];
48
+ }
49
+
50
+ /**
51
+ * 创建 AgentContext 的参数。
52
+ */
53
+ export interface CreateAgentContextOptions {
54
+ /** 当前 AgentRuntime。 */
55
+ runtime: AgentRuntime;
56
+ /** 当前项目根目录。 */
57
+ project_root: string;
58
+ /** 统一日志器。 */
59
+ logger: Logger;
60
+ /** 当前解析后的配置。 */
61
+ config: DowncityConfig;
62
+ /** 当前环境变量快照。 */
63
+ env: Record<string, string>;
64
+ /** 当前静态 system 文本集合。 */
65
+ systems: string[];
66
+ /** 当前 plugin 实例集合。 */
67
+ plugin_instances: Map<string, BasePlugin>;
68
+ /** 对外 plugin 调用端口。 */
69
+ plugins: PluginPort;
70
+ /** 获取或创建 session runtime port。 */
71
+ get_session_port: (session_id: string) => SessionPort;
72
+ /** 解析 session 当前绑定的模型实例。 */
73
+ resolve_session_model: (session_id: string) => Promise<LanguageModel | undefined>;
74
+ }
75
+
76
+ /**
77
+ * 创建实例级 runtime 视图。
78
+ */
79
+ export function createAgentRuntime(
80
+ options: CreateAgentRuntimeOptions,
81
+ ): AgentRuntime {
82
+ return {
83
+ cwd: options.project_root,
84
+ rootPath: options.project_root,
85
+ logger: options.logger,
86
+ config: options.config,
87
+ env: options.env,
88
+ systems: options.systems,
89
+ paths: createAgentPathRuntime(options.project_root, options.agent_id),
90
+ pluginConfig: createAgentPluginConfigRuntime(options.project_root),
91
+ getSession: (session_id: string): SessionPort =>
92
+ options.get_session_port(session_id),
93
+ listExecutingSessionIds: () =>
94
+ options
95
+ .list_cached_sessions()
96
+ .filter((session) => session.isExecuting())
97
+ .map((session) => session.id),
98
+ getExecutingSessionCount: () =>
99
+ options
100
+ .list_cached_sessions()
101
+ .filter((session) => session.isExecuting()).length,
102
+ pluginInstances: options.plugin_instances,
103
+ };
104
+ }
105
+
106
+ /**
107
+ * 创建统一执行上下文。
108
+ */
109
+ export function createAgentContext(
110
+ options: CreateAgentContextOptions,
111
+ ): AgentContext {
112
+ let context!: AgentContext;
113
+ context = {
114
+ agent: options.runtime,
115
+ cwd: options.project_root,
116
+ rootPath: options.project_root,
117
+ logger: options.logger,
118
+ config: options.config,
119
+ env: options.env,
120
+ systems: options.systems,
121
+ paths: options.runtime.paths,
122
+ pluginConfig: options.runtime.pluginConfig,
123
+ session: {
124
+ get: (session_id) => options.get_session_port(session_id),
125
+ listExecutingSessionIds: () => options.runtime.listExecutingSessionIds(),
126
+ getExecutingSessionCount: () => options.runtime.getExecutingSessionCount(),
127
+ resolveModel: async (session_id) =>
128
+ await options.resolve_session_model(session_id),
129
+ },
130
+ invoke: {
131
+ invoke: async (params: {
132
+ plugin: string;
133
+ action: string;
134
+ payload?: JsonValue;
135
+ }) => {
136
+ const plugin_name = String(params.plugin || "").trim();
137
+ const action_name = String(params.action || "").trim();
138
+ const plugin = options.plugin_instances.get(plugin_name);
139
+ if (!plugin) {
140
+ return {
141
+ success: false,
142
+ error: `Unknown plugin: ${plugin_name}`,
143
+ };
144
+ }
145
+ const action = plugin.actions[action_name];
146
+ if (!action) {
147
+ return {
148
+ success: false,
149
+ error: `Unknown action: ${plugin_name}.${action_name}`,
150
+ };
151
+ }
152
+ const result = await action.execute({
153
+ context,
154
+ payload: params.payload ?? null,
155
+ pluginName: plugin_name,
156
+ actionName: action_name,
157
+ });
158
+ if (!result.success) {
159
+ return {
160
+ success: false,
161
+ ...(result.error ? { error: result.error } : {}),
162
+ };
163
+ }
164
+ return {
165
+ success: true,
166
+ ...(result.data !== undefined ? { data: result.data } : {}),
167
+ };
168
+ },
169
+ },
170
+ plugins: options.plugins,
171
+ };
172
+ return context;
173
+ }
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ProjectSetup:runtime 启动前项目结构准备模块。
2
+ * ProjectSetup:本地 Agent 启动前项目结构准备模块。
3
3
  *
4
4
  * 关键点(中文)
5
5
  * - 统一校验初始化必要文件(PROFILE.md / downcity.json)。