@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,269 +0,0 @@
1
- /**
2
- * Control 消息时间线 helper。
3
- *
4
- * 关键点(中文)
5
- * - 负责把上下文消息映射成 control UI 可视时间线。
6
- * - 同时提供消息文件读取能力。
7
- */
8
-
9
- import fs from "fs-extra";
10
- import {
11
- getToolName,
12
- isTextUIPart,
13
- isToolUIPart,
14
- type UIMessagePart,
15
- } from "ai";
16
- import type {
17
- SessionMessageV1,
18
- SessionMetadataV1,
19
- } from "@/executor/types/SessionMessages.js";
20
- import { pickLastSuccessfulChatSendText } from "@/executor/messages/UserVisibleText.js";
21
- import { extractToolCallsFromUiMessage } from "@/executor/messages/UIMessageTransformer.js";
22
- import type { ControlTimelineEvent, ControlTimelineRole } from "@/runtime/control/types/ControlViewData.js";
23
- import { truncateText } from "./CommonHelpers.js";
24
-
25
- type AnyUiPart = UIMessagePart<Record<string, never>, Record<string, never>>;
26
-
27
- type ToolPartCompatShape = {
28
- type?: unknown;
29
- state?: unknown;
30
- input?: unknown;
31
- output?: unknown;
32
- errorText?: unknown;
33
- error?: unknown;
34
- approval?: { reason?: unknown } | null;
35
- };
36
-
37
- function stringifyForDisplay(input: unknown, maxChars = 2400): string {
38
- if (input === undefined) return "";
39
- if (input === null) return "null";
40
- if (typeof input === "string") {
41
- const value = input.trim();
42
- if (!value) return "";
43
- try {
44
- const parsed = JSON.parse(value);
45
- return truncateText(JSON.stringify(parsed, null, 2), maxChars);
46
- } catch {
47
- return truncateText(value, maxChars);
48
- }
49
- }
50
- if (typeof input === "number" || typeof input === "boolean") {
51
- return truncateText(String(input), maxChars);
52
- }
53
- try {
54
- return truncateText(JSON.stringify(input, null, 2), maxChars);
55
- } catch {
56
- return truncateText(String(input), maxChars);
57
- }
58
- }
59
-
60
- function extractMessageText(parts: unknown): string {
61
- if (!Array.isArray(parts)) return "";
62
- const texts: string[] = [];
63
- for (const part of parts) {
64
- if (!part || typeof part !== "object") continue;
65
- const p = part as { type?: unknown; text?: unknown };
66
- if (p.type !== "text") continue;
67
- if (typeof p.text !== "string") continue;
68
- const value = p.text.trim();
69
- if (!value) continue;
70
- texts.push(value);
71
- }
72
- return texts.join("\n").trim();
73
- }
74
-
75
- function extractAssistantToolSummary(message: SessionMessageV1): string {
76
- const toolCalls = extractToolCallsFromUiMessage(message);
77
- if (!Array.isArray(toolCalls) || toolCalls.length === 0) return "";
78
- const toolNames = Array.from(
79
- new Set(toolCalls.map((item) => String(item.tool || "").trim()).filter(Boolean)),
80
- );
81
- if (toolNames.length === 0) return "";
82
- return `[tool] ${toolNames.join(", ")}`;
83
- }
84
-
85
- function resolveToolName(part: ToolPartCompatShape, aiToolName?: string): string {
86
- const fromAi = String(aiToolName || "").trim();
87
- if (fromAi) return fromAi;
88
-
89
- const rawType = typeof part.type === "string" ? part.type.trim() : "";
90
- if (rawType.startsWith("tool-")) return rawType.slice("tool-".length);
91
- return "unknown_tool";
92
- }
93
-
94
- function extractToolCallInput(part: ToolPartCompatShape): unknown {
95
- return part.input ?? undefined;
96
- }
97
-
98
- function extractToolResultOutput(part: ToolPartCompatShape): unknown {
99
- const state = typeof part.state === "string" ? part.state.trim() : "";
100
- if (state === "output-available") return part.output;
101
- if (state === "output-error") {
102
- return { error: part.errorText ?? part.error ?? "tool_error" };
103
- }
104
- if (state === "output-denied") {
105
- return {
106
- error: "tool_denied",
107
- reason: part.approval?.reason ?? "",
108
- };
109
- }
110
- if (
111
- state === "input-available" ||
112
- state === "input-streaming" ||
113
- state === "output-streaming"
114
- ) {
115
- return undefined;
116
- }
117
- return undefined;
118
- }
119
-
120
- function toUiMessageEvent(params: {
121
- message: SessionMessageV1;
122
- role: ControlTimelineRole;
123
- text: string;
124
- sequence: number;
125
- toolName?: string;
126
- }): ControlTimelineEvent {
127
- const { message, role, text, sequence, toolName } = params;
128
- const metadata = (message.metadata || null) as SessionMetadataV1 | null;
129
-
130
- return {
131
- id: `${String(message.id || "")}:${sequence}`,
132
- role,
133
- ...(typeof metadata?.ts === "number" ? { ts: metadata.ts } : {}),
134
- ...(typeof metadata?.kind === "string" ? { kind: metadata.kind } : {}),
135
- ...(typeof metadata?.source === "string" ? { source: metadata.source } : {}),
136
- text,
137
- ...(toolName ? { toolName } : {}),
138
- };
139
- }
140
-
141
- function resolveUiMessageText(message: SessionMessageV1): string {
142
- const plainText = extractMessageText(message.parts);
143
- if (plainText) return plainText;
144
-
145
- if (message.role !== "assistant") return "";
146
-
147
- const userVisible = pickLastSuccessfulChatSendText(message).trim();
148
- if (userVisible) return userVisible;
149
-
150
- return extractAssistantToolSummary(message);
151
- }
152
-
153
- /**
154
- * 转成 control 时间线。
155
- */
156
- export function toUiMessageTimeline(
157
- message: SessionMessageV1,
158
- ): ControlTimelineEvent[] {
159
- if (message.role !== "assistant") {
160
- return [
161
- toUiMessageEvent({
162
- message,
163
- role: message.role,
164
- text: resolveUiMessageText(message),
165
- sequence: 0,
166
- }),
167
- ];
168
- }
169
-
170
- const parts = Array.isArray(message.parts)
171
- ? (message.parts as AnyUiPart[])
172
- : [];
173
- const events: ControlTimelineEvent[] = [];
174
- let sequence = 0;
175
-
176
- for (const part of parts) {
177
- if (!part || typeof part !== "object") continue;
178
- const partObject = part as ToolPartCompatShape;
179
-
180
- if (isTextUIPart(part)) {
181
- const text = String(part.text || "").trim();
182
- if (!text) continue;
183
- events.push(
184
- toUiMessageEvent({
185
- message,
186
- role: "assistant",
187
- text,
188
- sequence,
189
- }),
190
- );
191
- sequence += 1;
192
- continue;
193
- }
194
-
195
- if (isToolUIPart(part)) {
196
- const toolName = resolveToolName(partObject, String(getToolName(part) || ""));
197
- const inputText = stringifyForDisplay(extractToolCallInput(partObject));
198
- events.push(
199
- toUiMessageEvent({
200
- message,
201
- role: "tool-call",
202
- text: inputText || "(empty)",
203
- sequence,
204
- toolName,
205
- }),
206
- );
207
- sequence += 1;
208
-
209
- const output = extractToolResultOutput(partObject);
210
- if (output !== undefined) {
211
- events.push(
212
- toUiMessageEvent({
213
- message,
214
- role: "tool-result",
215
- text: stringifyForDisplay(output) || "(empty)",
216
- sequence,
217
- toolName,
218
- }),
219
- );
220
- sequence += 1;
221
- }
222
- continue;
223
- }
224
- }
225
-
226
- // 关键点(中文):assistant 若没有文本 part,也要保留一条可见事件,避免 control UI 空白。
227
- if (events.length === 0) {
228
- events.push(
229
- toUiMessageEvent({
230
- message,
231
- role: "assistant",
232
- text: resolveUiMessageText(message),
233
- sequence: 0,
234
- }),
235
- );
236
- }
237
-
238
- return events;
239
- }
240
-
241
- /**
242
- * 读取 session 消息文件。
243
- */
244
- export async function loadSessionMessagesFromFile(
245
- filePath: string,
246
- ): Promise<SessionMessageV1[]> {
247
- if (!(await fs.pathExists(filePath))) return [];
248
- const raw = await fs.readFile(filePath, "utf-8");
249
- const lines = raw.split("\n").filter(Boolean);
250
- const out: SessionMessageV1[] = [];
251
- for (const line of lines) {
252
- try {
253
- const item = JSON.parse(line) as SessionMessageV1;
254
- if (!item || typeof item !== "object") continue;
255
- if (item.role !== "user" && item.role !== "assistant") continue;
256
- out.push(item);
257
- } catch {
258
- // 关键点(中文):单行损坏不应影响整体可读性。
259
- }
260
- }
261
- return out;
262
- }
263
-
264
- /**
265
- * 读取适合摘要展示的消息预览文本。
266
- */
267
- export function resolveUiMessagePreview(message: SessionMessageV1): string {
268
- return resolveUiMessageText(message);
269
- }
@@ -1,72 +0,0 @@
1
- /**
2
- * Control 会话摘要读取 helper。
3
- *
4
- * 关键点(中文)
5
- * - 负责会话列表聚合。
6
- * - 只返回控制面视图需要的摘要字段。
7
- */
8
-
9
- import fs from "fs-extra";
10
- import type { AgentContext } from "@/types/runtime/agent/AgentContext.js";
11
- import {
12
- getDowncitySessionMessagesPath,
13
- getDowncitySessionRootDirPath,
14
- } from "@/config/Paths.js";
15
- import type { ControlSessionSummary } from "@/runtime/control/types/ControlViewData.js";
16
- import { decodeMaybe, truncateText } from "./CommonHelpers.js";
17
- import { loadSessionMessagesFromFile, resolveUiMessagePreview } from "./MessageTimeline.js";
18
-
19
- /**
20
- * 枚举控制面所需的 session 摘要。
21
- */
22
- export async function listControlSessionSummaries(params: {
23
- projectRoot: string;
24
- agentId: string;
25
- executionContext?: AgentContext;
26
- limit: number;
27
- executingSessionIds?: Set<string>;
28
- }): Promise<ControlSessionSummary[]> {
29
- const rootDir = getDowncitySessionRootDirPath(
30
- params.projectRoot,
31
- params.agentId,
32
- );
33
- if (!(await fs.pathExists(rootDir))) return [];
34
-
35
- const entries = await fs.readdir(rootDir, { withFileTypes: true });
36
- const items: ControlSessionSummary[] = [];
37
-
38
- for (const entry of entries) {
39
- if (!entry.isDirectory()) continue;
40
- const sessionId = decodeMaybe(entry.name);
41
- if (!sessionId) continue;
42
-
43
- const filePath = getDowncitySessionMessagesPath(
44
- params.projectRoot,
45
- params.agentId,
46
- sessionId,
47
- );
48
- const messages = await loadSessionMessagesFromFile(filePath);
49
- const last = messages.at(-1);
50
- const lastTs =
51
- typeof last?.metadata?.ts === "number" ? last.metadata.ts : undefined;
52
- const stat = await fs
53
- .stat(filePath)
54
- .then((s) => s)
55
- .catch(() => null);
56
- const updatedAt = lastTs || (stat ? stat.mtimeMs : undefined);
57
-
58
- items.push({
59
- sessionId,
60
- messageCount: messages.length,
61
- ...(typeof updatedAt === "number" ? { updatedAt } : {}),
62
- ...(last?.role ? { lastRole: last.role } : {}),
63
- ...(last
64
- ? { lastText: truncateText(resolveUiMessagePreview(last), 180) }
65
- : {}),
66
- ...(params.executingSessionIds?.has(sessionId) ? { executing: true } : {}),
67
- });
68
- }
69
-
70
- items.sort((a, b) => (b.updatedAt || 0) - (a.updatedAt || 0));
71
- return items.slice(0, params.limit);
72
- }
@@ -1,242 +0,0 @@
1
- /**
2
- * Control 任务与日志数据 helper。
3
- *
4
- * 关键点(中文)
5
- * - 聚合 logs 与 task runs 读取逻辑。
6
- * - 仅负责磁盘侧读取与 control UI 视图映射。
7
- */
8
-
9
- import fs from "fs-extra";
10
- import path from "node:path";
11
- import { getLogsDirPath, getDowncityTasksDirPath } from "@/config/Paths.js";
12
- import type {
13
- ControlLogEntry,
14
- ControlTaskRunDetail,
15
- ControlTaskRunSummary,
16
- } from "@/runtime/control/types/ControlViewData.js";
17
- import { truncateText } from "./CommonHelpers.js";
18
- import { loadSessionMessagesFromFile, toUiMessageTimeline } from "./MessageTimeline.js";
19
-
20
- export const TASK_RUN_DIR_REGEX = /^\d{8}-\d{6}-\d{3}$/;
21
- const TASK_ID_REGEXP = /^[\p{L}\p{N}][\p{L}\p{N}_\-\s]{0,63}$/u;
22
-
23
- function normalizeTaskId(input: string): string {
24
- const id = String(input || "").trim();
25
- if (!TASK_ID_REGEXP.test(id)) {
26
- throw new Error(`Invalid taskId: "${id}"`);
27
- }
28
- return id;
29
- }
30
-
31
- function deriveTaskIdFromTitle(title: string): string {
32
- const normalized = String(title || "")
33
- .normalize("NFKC")
34
- .replace(/[\\/:\u0000]/g, " ")
35
- .replace(/[^\p{L}\p{N}_\-\s]/gu, " ")
36
- .replace(/\s+/g, " ")
37
- .trim()
38
- .slice(0, 64)
39
- .trim();
40
- return normalizeTaskId(normalized);
41
- }
42
-
43
- /**
44
- * 读取近期日志。
45
- */
46
- export async function readRecentLogs(params: {
47
- projectRoot: string;
48
- limit: number;
49
- }): Promise<ControlLogEntry[]> {
50
- const logsDir = getLogsDirPath(params.projectRoot);
51
- if (!(await fs.pathExists(logsDir))) return [];
52
-
53
- const files = (await fs.readdir(logsDir, { withFileTypes: true }))
54
- .filter((x) => x.isFile() && x.name.endsWith(".jsonl"))
55
- .map((x) => x.name)
56
- .sort()
57
- .reverse();
58
-
59
- const out: ControlLogEntry[] = [];
60
-
61
- for (const fileName of files) {
62
- if (out.length >= params.limit) break;
63
- const abs = path.join(logsDir, fileName);
64
- const raw = await fs.readFile(abs, "utf-8").catch(() => "");
65
- const lines = raw.split("\n").filter(Boolean);
66
-
67
- for (let index = lines.length - 1; index >= 0; index -= 1) {
68
- if (out.length >= params.limit) break;
69
- try {
70
- const parsed = JSON.parse(lines[index]) as ControlLogEntry;
71
- if (!parsed || typeof parsed !== "object") continue;
72
- out.push({
73
- ...(typeof parsed.timestamp === "string" ? { timestamp: parsed.timestamp } : {}),
74
- ...(typeof parsed.type === "string" ? { type: parsed.type } : {}),
75
- ...(typeof parsed.level === "string" ? { level: parsed.level } : {}),
76
- ...(typeof parsed.message === "string" ? { message: parsed.message } : {}),
77
- ...(parsed.details && typeof parsed.details === "object"
78
- ? { details: parsed.details }
79
- : {}),
80
- });
81
- } catch {
82
- // ignore
83
- }
84
- }
85
- }
86
-
87
- return out;
88
- }
89
-
90
- async function resolveTaskDir(projectRoot: string, title: string): Promise<string> {
91
- const taskId = deriveTaskIdFromTitle(title);
92
- return path.join(getDowncityTasksDirPath(projectRoot), taskId);
93
- }
94
-
95
- /**
96
- * 枚举任务运行摘要。
97
- */
98
- export async function listTaskRuns(params: {
99
- projectRoot: string;
100
- title: string;
101
- limit: number;
102
- }): Promise<ControlTaskRunSummary[]> {
103
- const taskDir = await resolveTaskDir(params.projectRoot, params.title);
104
- if (!(await fs.pathExists(taskDir))) return [];
105
-
106
- const entries = await fs.readdir(taskDir, { withFileTypes: true });
107
- const timestamps = entries
108
- .filter((x) => x.isDirectory() && TASK_RUN_DIR_REGEX.test(x.name))
109
- .map((x) => x.name)
110
- .sort()
111
- .reverse()
112
- .slice(0, params.limit);
113
-
114
- const out: ControlTaskRunSummary[] = [];
115
-
116
- for (const timestamp of timestamps) {
117
- const runDir = path.join(taskDir, timestamp);
118
- const metaPath = path.join(runDir, "run.json");
119
- const progressPath = path.join(runDir, "run-progress.json");
120
- const runDirRel = path.relative(params.projectRoot, runDir).split(path.sep).join("/");
121
- const meta = (await fs.readJson(metaPath).catch(() => null)) as {
122
- status?: string;
123
- executionStatus?: string;
124
- resultStatus?: string;
125
- startedAt?: number;
126
- endedAt?: number;
127
- dialogueRounds?: number;
128
- userSimulatorSatisfied?: boolean;
129
- error?: string;
130
- } | null;
131
- const progress = (await fs.readJson(progressPath).catch(() => null)) as {
132
- status?: string;
133
- phase?: string;
134
- message?: string;
135
- updatedAt?: number;
136
- round?: number;
137
- maxRounds?: number;
138
- } | null;
139
-
140
- const progressStatus =
141
- typeof progress?.status === "string" ? progress.status : undefined;
142
- const inProgress =
143
- progressStatus === "running" ||
144
- (!meta && (await fs.pathExists(progressPath)));
145
- const displayStatus =
146
- inProgress
147
- ? "running"
148
- : typeof meta?.status === "string"
149
- ? meta.status
150
- : progressStatus;
151
-
152
- out.push({
153
- timestamp,
154
- ...(typeof displayStatus === "string" ? { status: displayStatus } : {}),
155
- ...(typeof meta?.executionStatus === "string" ? { executionStatus: meta.executionStatus } : {}),
156
- ...(typeof meta?.resultStatus === "string" ? { resultStatus: meta.resultStatus } : {}),
157
- ...(inProgress ? { inProgress: true } : {}),
158
- ...(typeof progress?.phase === "string" ? { progressPhase: progress.phase } : {}),
159
- ...(typeof progress?.message === "string" ? { progressMessage: progress.message } : {}),
160
- ...(typeof progress?.updatedAt === "number" ? { progressUpdatedAt: progress.updatedAt } : {}),
161
- ...(typeof progress?.round === "number" ? { progressRound: progress.round } : {}),
162
- ...(typeof progress?.maxRounds === "number" ? { progressMaxRounds: progress.maxRounds } : {}),
163
- ...(typeof meta?.startedAt === "number" ? { startedAt: meta.startedAt } : {}),
164
- ...(typeof meta?.endedAt === "number" ? { endedAt: meta.endedAt } : {}),
165
- ...(typeof meta?.dialogueRounds === "number" ? { dialogueRounds: meta.dialogueRounds } : {}),
166
- ...(typeof meta?.userSimulatorSatisfied === "boolean"
167
- ? { userSimulatorSatisfied: meta.userSimulatorSatisfied }
168
- : {}),
169
- ...(typeof meta?.error === "string" ? { error: meta.error } : {}),
170
- runDirRel,
171
- });
172
- }
173
-
174
- return out;
175
- }
176
-
177
- /**
178
- * 读取任务运行详情。
179
- */
180
- export async function readTaskRunDetail(params: {
181
- projectRoot: string;
182
- title: string;
183
- timestamp: string;
184
- }): Promise<ControlTaskRunDetail | null> {
185
- const taskDir = await resolveTaskDir(params.projectRoot, params.title);
186
- const runDir = path.join(taskDir, params.timestamp);
187
- if (!(await fs.pathExists(runDir))) return null;
188
-
189
- const readText = async (name: string, maxChars = 80_000): Promise<string | undefined> => {
190
- const abs = path.join(runDir, name);
191
- if (!(await fs.pathExists(abs))) return undefined;
192
- const raw = await fs.readFile(abs, "utf-8").catch(() => "");
193
- return truncateText(raw, maxChars);
194
- };
195
-
196
- const readJson = async <T>(name: string): Promise<T | undefined> => {
197
- const abs = path.join(runDir, name);
198
- if (!(await fs.pathExists(abs))) return undefined;
199
- return (await fs.readJson(abs).catch(() => undefined)) as T | undefined;
200
- };
201
-
202
- const messagesPath = path.join(runDir, "messages.jsonl");
203
- const messages = await loadSessionMessagesFromFile(messagesPath);
204
- const progress = await readJson<{
205
- status?: string;
206
- phase?: string;
207
- message?: string;
208
- startedAt?: number;
209
- updatedAt?: number;
210
- endedAt?: number;
211
- round?: number;
212
- maxRounds?: number;
213
- runStatus?: string;
214
- executionStatus?: string;
215
- resultStatus?: string;
216
- events?: Array<{
217
- at?: number;
218
- phase?: string;
219
- message?: string;
220
- round?: number;
221
- maxRounds?: number;
222
- }>;
223
- }>("run-progress.json");
224
- const outputText = (await readText("output.md")) || (await readText("result.md"));
225
-
226
- return {
227
- title: params.title,
228
- timestamp: params.timestamp,
229
- runDirRel: path.relative(params.projectRoot, runDir).split(path.sep).join("/"),
230
- meta: await readJson<Record<string, unknown>>("run.json"),
231
- ...(progress ? { progress } : {}),
232
- dialogue: await readJson<Record<string, unknown>>("dialogue.json"),
233
- artifacts: {
234
- input: await readText("input.md"),
235
- output: outputText,
236
- result: await readText("result.md"),
237
- dialogue: await readText("dialogue.md"),
238
- error: await readText("error.md"),
239
- },
240
- messages: messages.slice(-120).flatMap((message) => toUiMessageTimeline(message)),
241
- };
242
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * Auth Control 类型定义。
3
- *
4
- * 关键点(中文)
5
- * - 统一承载控制面 authorization 页面需要的返回结构。
6
- * - 这是控制面 UI 数据类型,不属于 auth plugin 内核协议。
7
- */
8
-
9
- import type { JsonObject } from "@/types/common/Json.js";
10
-
11
- /**
12
- * authorization 页面完整载荷。
13
- */
14
- export interface AuthControlPayload {
15
- /**
16
- * 后端提供的授权目录定义。
17
- */
18
- catalog: JsonObject;
19
-
20
- /**
21
- * 当前静态授权配置。
22
- */
23
- config: JsonObject;
24
-
25
- /**
26
- * 已观测用户列表。
27
- */
28
- users: JsonObject[];
29
-
30
- /**
31
- * 已观测会话列表。
32
- */
33
- chats: JsonObject[];
34
- }