@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,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
- }