@downcity/agent 1.1.287 → 1.1.310

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 (1045) hide show
  1. package/README.md +23 -16
  2. package/bin/agent/Agent.d.ts +35 -45
  3. package/bin/agent/Agent.d.ts.map +1 -1
  4. package/bin/agent/Agent.js +131 -107
  5. package/bin/agent/Agent.js.map +1 -1
  6. package/bin/agent/AgentInstructions.d.ts +2 -2
  7. package/bin/agent/AgentInstructions.d.ts.map +1 -1
  8. package/bin/agent/AgentInstructions.js +2 -2
  9. package/bin/agent/AgentInstructions.js.map +1 -1
  10. package/bin/agent/AgentModel.d.ts +2 -2
  11. package/bin/agent/AgentModel.d.ts.map +1 -1
  12. package/bin/agent/AgentModel.js +2 -2
  13. package/bin/agent/AgentModel.js.map +1 -1
  14. package/bin/agent/AgentSessions.d.ts +11 -7
  15. package/bin/agent/AgentSessions.d.ts.map +1 -1
  16. package/bin/agent/AgentSessions.js +39 -97
  17. package/bin/agent/AgentSessions.js.map +1 -1
  18. package/bin/agent/AgentState.d.ts +2 -21
  19. package/bin/agent/AgentState.d.ts.map +1 -1
  20. package/bin/agent/AgentState.js +6 -50
  21. package/bin/agent/AgentState.js.map +1 -1
  22. package/bin/executor/Executor.d.ts +25 -55
  23. package/bin/executor/Executor.d.ts.map +1 -1
  24. package/bin/executor/Executor.js +93 -178
  25. package/bin/executor/Executor.js.map +1 -1
  26. package/bin/executor/composer/system/SessionSystemComposer.d.ts +2 -2
  27. package/bin/executor/composer/system/SessionSystemComposer.d.ts.map +1 -1
  28. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts +9 -9
  29. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.d.ts.map +1 -1
  30. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js +19 -19
  31. package/bin/executor/composer/system/default/DefaultSessionSystemComposer.js.map +1 -1
  32. package/bin/executor/composer/system/default/PromptRenderer.d.ts +2 -2
  33. package/bin/executor/composer/system/default/PromptRenderer.d.ts.map +1 -1
  34. package/bin/executor/composer/system/default/PromptRenderer.js +3 -3
  35. package/bin/executor/composer/system/default/PromptRenderer.js.map +1 -1
  36. package/bin/executor/composer/system/default/SystemDomain.d.ts +27 -27
  37. package/bin/executor/composer/system/default/SystemDomain.d.ts.map +1 -1
  38. package/bin/executor/composer/system/default/SystemDomain.js +44 -44
  39. package/bin/executor/composer/system/default/SystemDomain.js.map +1 -1
  40. package/bin/executor/composer/system/default/assets/core.prompt.d.ts +1 -1
  41. package/bin/executor/composer/system/default/assets/core.prompt.d.ts.map +1 -1
  42. package/bin/executor/composer/system/default/assets/core.prompt.js +1 -1
  43. package/bin/executor/composer/system/default/assets/core.prompt.js.map +1 -1
  44. package/bin/executor/composer/system/default/variables/GeoContext.d.ts +1 -1
  45. package/bin/executor/composer/system/default/variables/GeoContext.d.ts.map +1 -1
  46. package/bin/executor/composer/system/default/variables/GeoContext.js +3 -3
  47. package/bin/executor/composer/system/default/variables/GeoContext.js.map +1 -1
  48. package/bin/executor/composer/system/default/variables/PromptTypes.d.ts +2 -2
  49. package/bin/executor/composer/system/default/variables/PromptTypes.d.ts.map +1 -1
  50. package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts +4 -4
  51. package/bin/executor/composer/system/default/variables/VariableReplacer.d.ts.map +1 -1
  52. package/bin/executor/composer/system/default/variables/VariableReplacer.js +24 -24
  53. package/bin/executor/composer/system/default/variables/VariableReplacer.js.map +1 -1
  54. package/bin/executor/core-engine/CoreEngineError.d.ts +2 -2
  55. package/bin/executor/core-engine/CoreEngineError.d.ts.map +1 -1
  56. package/bin/executor/core-engine/CoreEngineError.js +2 -2
  57. package/bin/executor/core-engine/CoreEngineError.js.map +1 -1
  58. package/bin/executor/core-engine/CoreEngineLoopDecision.d.ts +2 -2
  59. package/bin/executor/core-engine/CoreEngineLoopDecision.d.ts.map +1 -1
  60. package/bin/executor/core-engine/CoreEngineLoopDecision.js +2 -2
  61. package/bin/executor/core-engine/CoreEngineLoopDecision.js.map +1 -1
  62. package/bin/executor/core-engine/CoreEngineMessageState.d.ts +2 -2
  63. package/bin/executor/core-engine/CoreEngineMessageState.d.ts.map +1 -1
  64. package/bin/executor/core-engine/CoreEngineMessageState.js +9 -9
  65. package/bin/executor/core-engine/CoreEngineMessageState.js.map +1 -1
  66. package/bin/executor/core-engine/CoreEngineRunner.d.ts +8 -8
  67. package/bin/executor/core-engine/CoreEngineRunner.d.ts.map +1 -1
  68. package/bin/executor/core-engine/CoreEngineRunner.js +94 -108
  69. package/bin/executor/core-engine/CoreEngineRunner.js.map +1 -1
  70. package/bin/executor/core-engine/CoreEngineSignals.d.ts +10 -10
  71. package/bin/executor/core-engine/CoreEngineSignals.d.ts.map +1 -1
  72. package/bin/executor/core-engine/CoreEngineSignals.js +19 -19
  73. package/bin/executor/core-engine/CoreEngineSignals.js.map +1 -1
  74. package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts +6 -6
  75. package/bin/executor/core-engine/CoreEngineUiStreamCollector.d.ts.map +1 -1
  76. package/bin/executor/core-engine/CoreEngineUiStreamCollector.js +12 -12
  77. package/bin/executor/core-engine/CoreEngineUiStreamCollector.js.map +1 -1
  78. package/bin/executor/ids/resolveSessionId.d.ts +4 -4
  79. package/bin/executor/ids/resolveSessionId.d.ts.map +1 -1
  80. package/bin/executor/ids/resolveSessionId.js +4 -4
  81. package/bin/executor/ids/resolveSessionId.js.map +1 -1
  82. package/bin/executor/messages/ChatMessageMarkup.d.ts +10 -10
  83. package/bin/executor/messages/ChatMessageMarkup.d.ts.map +1 -1
  84. package/bin/executor/messages/ChatMessageMarkup.js +22 -22
  85. package/bin/executor/messages/ChatMessageMarkup.js.map +1 -1
  86. package/bin/executor/messages/ChatMessageMarkupTypes.d.ts +10 -10
  87. package/bin/executor/messages/ChatMessageMarkupTypes.d.ts.map +1 -1
  88. package/bin/executor/messages/SessionAttachmentMapper.d.ts +4 -4
  89. package/bin/executor/messages/SessionAttachmentMapper.d.ts.map +1 -1
  90. package/bin/executor/messages/SessionAttachmentMapper.js +12 -12
  91. package/bin/executor/messages/SessionAttachmentMapper.js.map +1 -1
  92. package/bin/executor/messages/SessionMessageCodec.d.ts +5 -5
  93. package/bin/executor/messages/SessionMessageCodec.d.ts.map +1 -1
  94. package/bin/executor/messages/SessionMessageCodec.js +12 -22
  95. package/bin/executor/messages/SessionMessageCodec.js.map +1 -1
  96. package/bin/executor/messages/SessionMessageLog.d.ts +2 -2
  97. package/bin/executor/messages/SessionMessageLog.d.ts.map +1 -1
  98. package/bin/executor/messages/SessionMessageLog.js +3 -3
  99. package/bin/executor/messages/SessionMessageLog.js.map +1 -1
  100. package/bin/executor/messages/SessionStepEventMapper.d.ts +4 -4
  101. package/bin/executor/messages/SessionStepEventMapper.d.ts.map +1 -1
  102. package/bin/executor/messages/SessionStepEventMapper.js +7 -7
  103. package/bin/executor/messages/SessionStepEventMapper.js.map +1 -1
  104. package/bin/executor/messages/UIMessageTransformer.d.ts +3 -3
  105. package/bin/executor/messages/UIMessageTransformer.d.ts.map +1 -1
  106. package/bin/executor/messages/UIMessageTransformer.js +6 -6
  107. package/bin/executor/messages/UIMessageTransformer.js.map +1 -1
  108. package/bin/executor/messages/UserVisibleText.d.ts +2 -2
  109. package/bin/executor/messages/UserVisibleText.d.ts.map +1 -1
  110. package/bin/executor/messages/UserVisibleText.js +5 -5
  111. package/bin/executor/messages/UserVisibleText.js.map +1 -1
  112. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts +15 -15
  113. package/bin/executor/services/ExecutorRecoveryPolicy.d.ts.map +1 -1
  114. package/bin/executor/services/ExecutorRecoveryPolicy.js +13 -12
  115. package/bin/executor/services/ExecutorRecoveryPolicy.js.map +1 -1
  116. package/bin/executor/types/SessionHistoryMeta.d.ts +10 -10
  117. package/bin/executor/types/SessionHistoryMeta.d.ts.map +1 -1
  118. package/bin/executor/types/SessionHistoryMeta.js +1 -1
  119. package/bin/executor/types/SessionRecords.d.ts +9 -9
  120. package/bin/executor/types/SessionRecords.d.ts.map +1 -1
  121. package/bin/executor/types/SessionRecords.js +4 -4
  122. package/bin/executor/types/SessionRecords.js.map +1 -1
  123. package/bin/index.d.ts +41 -55
  124. package/bin/index.d.ts.map +1 -1
  125. package/bin/index.js +24 -31
  126. package/bin/index.js.map +1 -1
  127. package/bin/plugin/core/ActionScheduleExecutor.d.ts +4 -4
  128. package/bin/plugin/core/ActionScheduleExecutor.d.ts.map +1 -1
  129. package/bin/plugin/core/ActionScheduleExecutor.js +18 -20
  130. package/bin/plugin/core/ActionScheduleExecutor.js.map +1 -1
  131. package/bin/plugin/core/ActionScheduleRuntime.d.ts +2 -2
  132. package/bin/plugin/core/ActionScheduleRuntime.d.ts.map +1 -1
  133. package/bin/plugin/core/ActionScheduleRuntime.js +6 -6
  134. package/bin/plugin/core/ActionScheduleRuntime.js.map +1 -1
  135. package/bin/plugin/core/ActionScheduleStore.d.ts +23 -22
  136. package/bin/plugin/core/ActionScheduleStore.d.ts.map +1 -1
  137. package/bin/plugin/core/ActionScheduleStore.js +120 -117
  138. package/bin/plugin/core/ActionScheduleStore.js.map +1 -1
  139. package/bin/plugin/core/ActionScheduleTime.d.ts +5 -5
  140. package/bin/plugin/core/ActionScheduleTime.d.ts.map +1 -1
  141. package/bin/plugin/core/ActionScheduleTime.js +6 -6
  142. package/bin/plugin/core/ActionScheduleTime.js.map +1 -1
  143. package/bin/plugin/core/BasePlugin.d.ts +6 -20
  144. package/bin/plugin/core/BasePlugin.d.ts.map +1 -1
  145. package/bin/plugin/core/BasePlugin.js +0 -12
  146. package/bin/plugin/core/BasePlugin.js.map +1 -1
  147. package/bin/plugin/core/HookRegistry.d.ts +11 -11
  148. package/bin/plugin/core/HookRegistry.d.ts.map +1 -1
  149. package/bin/plugin/core/HookRegistry.js +45 -45
  150. package/bin/plugin/core/HookRegistry.js.map +1 -1
  151. package/bin/plugin/core/PluginActionFactory.d.ts +18 -26
  152. package/bin/plugin/core/PluginActionFactory.d.ts.map +1 -1
  153. package/bin/plugin/core/PluginActionFactory.js +5 -8
  154. package/bin/plugin/core/PluginActionFactory.js.map +1 -1
  155. package/bin/plugin/core/PluginActionRunner.d.ts +15 -33
  156. package/bin/plugin/core/PluginActionRunner.d.ts.map +1 -1
  157. package/bin/plugin/core/PluginActionRunner.js +11 -147
  158. package/bin/plugin/core/PluginActionRunner.js.map +1 -1
  159. package/bin/plugin/core/PluginCatalog.d.ts +12 -12
  160. package/bin/plugin/core/PluginCatalog.d.ts.map +1 -1
  161. package/bin/plugin/core/PluginCatalog.js +18 -18
  162. package/bin/plugin/core/PluginCatalog.js.map +1 -1
  163. package/bin/plugin/core/PluginContext.d.ts +32 -0
  164. package/bin/plugin/core/PluginContext.d.ts.map +1 -0
  165. package/bin/plugin/core/PluginContext.js +26 -0
  166. package/bin/plugin/core/PluginContext.js.map +1 -0
  167. package/bin/plugin/core/PluginHttpRoutes.d.ts +5 -5
  168. package/bin/plugin/core/PluginHttpRoutes.d.ts.map +1 -1
  169. package/bin/plugin/core/PluginHttpRoutes.js +5 -5
  170. package/bin/plugin/core/PluginHttpRoutes.js.map +1 -1
  171. package/bin/plugin/core/PluginRegistry.d.ts +35 -24
  172. package/bin/plugin/core/PluginRegistry.d.ts.map +1 -1
  173. package/bin/plugin/core/PluginRegistry.js +99 -71
  174. package/bin/plugin/core/PluginRegistry.js.map +1 -1
  175. package/bin/plugin/core/PluginStateController.d.ts +5 -13
  176. package/bin/plugin/core/PluginStateController.d.ts.map +1 -1
  177. package/bin/plugin/core/PluginStateController.js +2 -32
  178. package/bin/plugin/core/PluginStateController.js.map +1 -1
  179. package/bin/plugin/tool/PluginToolRuntime.d.ts +15 -0
  180. package/bin/plugin/tool/PluginToolRuntime.d.ts.map +1 -0
  181. package/bin/plugin/tool/PluginToolRuntime.js +105 -0
  182. package/bin/plugin/tool/PluginToolRuntime.js.map +1 -0
  183. package/bin/{executor/tools/plugin → plugin/tool}/PluginToolSchemas.d.ts +1 -1
  184. package/bin/plugin/tool/PluginToolSchemas.d.ts.map +1 -0
  185. package/bin/{executor/tools/plugin → plugin/tool}/PluginToolSchemas.js +1 -1
  186. package/bin/plugin/tool/PluginToolSchemas.js.map +1 -0
  187. package/bin/plugin/tool/PluginTools.d.ts +25 -0
  188. package/bin/plugin/tool/PluginTools.d.ts.map +1 -0
  189. package/bin/{executor/tools/plugin/PluginToolDefinition.js → plugin/tool/PluginTools.js} +19 -19
  190. package/bin/plugin/tool/PluginTools.js.map +1 -0
  191. package/bin/plugin/types/ActionSchedule.d.ts +10 -10
  192. package/bin/plugin/types/ActionSchedule.d.ts.map +1 -1
  193. package/bin/plugin/types/ActionSchedule.js +1 -1
  194. package/bin/plugin/types/PluginApi.d.ts +3 -3
  195. package/bin/plugin/types/PluginApi.d.ts.map +1 -1
  196. package/bin/remote/RemoteAgent.d.ts +1 -1
  197. package/bin/remote/RemoteAgent.d.ts.map +1 -1
  198. package/bin/remote/RemoteAgent.js +3 -3
  199. package/bin/remote/RemoteAgent.js.map +1 -1
  200. package/bin/remote/RemoteSession.d.ts +18 -12
  201. package/bin/remote/RemoteSession.d.ts.map +1 -1
  202. package/bin/remote/RemoteSession.js +87 -21
  203. package/bin/remote/RemoteSession.js.map +1 -1
  204. package/bin/remote/RemoteTransport.d.ts +13 -11
  205. package/bin/remote/RemoteTransport.d.ts.map +1 -1
  206. package/bin/remote/transports/HttpRemoteAgentTransport.d.ts +9 -7
  207. package/bin/remote/transports/HttpRemoteAgentTransport.d.ts.map +1 -1
  208. package/bin/remote/transports/HttpRemoteAgentTransport.js +36 -39
  209. package/bin/remote/transports/HttpRemoteAgentTransport.js.map +1 -1
  210. package/bin/remote/transports/RpcClient.d.ts +14 -31
  211. package/bin/remote/transports/RpcClient.d.ts.map +1 -1
  212. package/bin/remote/transports/RpcClient.js +40 -66
  213. package/bin/remote/transports/RpcClient.js.map +1 -1
  214. package/bin/remote/transports/RpcRemoteAgentTransport.d.ts +9 -7
  215. package/bin/remote/transports/RpcRemoteAgentTransport.d.ts.map +1 -1
  216. package/bin/remote/transports/RpcRemoteAgentTransport.js +10 -10
  217. package/bin/remote/transports/RpcRemoteAgentTransport.js.map +1 -1
  218. package/bin/session/DefaultSessionComposer.d.ts.map +1 -1
  219. package/bin/session/DefaultSessionComposer.js +2 -4
  220. package/bin/session/DefaultSessionComposer.js.map +1 -1
  221. package/bin/session/Session.d.ts +49 -31
  222. package/bin/session/Session.d.ts.map +1 -1
  223. package/bin/session/Session.js +303 -243
  224. package/bin/session/Session.js.map +1 -1
  225. package/bin/session/SessionCommand.d.ts +24 -0
  226. package/bin/session/SessionCommand.d.ts.map +1 -0
  227. package/bin/session/SessionCommand.js +35 -0
  228. package/bin/session/SessionCommand.js.map +1 -0
  229. package/bin/session/SessionLoop.d.ts +96 -0
  230. package/bin/session/SessionLoop.d.ts.map +1 -0
  231. package/bin/session/SessionLoop.js +554 -0
  232. package/bin/session/SessionLoop.js.map +1 -0
  233. package/bin/session/SessionMessages.d.ts +20 -16
  234. package/bin/session/SessionMessages.d.ts.map +1 -1
  235. package/bin/session/SessionMessages.js +102 -81
  236. package/bin/session/SessionMessages.js.map +1 -1
  237. package/bin/session/SessionQueue.d.ts +15 -25
  238. package/bin/session/SessionQueue.d.ts.map +1 -1
  239. package/bin/session/SessionQueue.js +31 -45
  240. package/bin/session/SessionQueue.js.map +1 -1
  241. package/bin/session/SessionState.d.ts +6 -6
  242. package/bin/session/SessionState.d.ts.map +1 -1
  243. package/bin/session/SessionState.js +45 -93
  244. package/bin/session/SessionState.js.map +1 -1
  245. package/bin/session/SessionSystem.js +7 -7
  246. package/bin/session/SessionSystem.js.map +1 -1
  247. package/bin/session/SessionTitle.d.ts +7 -12
  248. package/bin/session/SessionTitle.d.ts.map +1 -1
  249. package/bin/session/SessionTitle.js +15 -20
  250. package/bin/session/SessionTitle.js.map +1 -1
  251. package/bin/session/browse/Browse.d.ts +17 -26
  252. package/bin/session/browse/Browse.d.ts.map +1 -1
  253. package/bin/session/browse/Browse.js +106 -303
  254. package/bin/session/browse/Browse.js.map +1 -1
  255. package/bin/session/browse/SessionMessageTimeline.d.ts +13 -0
  256. package/bin/session/browse/SessionMessageTimeline.d.ts.map +1 -0
  257. package/bin/session/browse/SessionMessageTimeline.js +110 -0
  258. package/bin/session/browse/SessionMessageTimeline.js.map +1 -0
  259. package/bin/session/control/SessionInteractions.d.ts +39 -0
  260. package/bin/session/control/SessionInteractions.d.ts.map +1 -0
  261. package/bin/session/control/SessionInteractions.js +219 -0
  262. package/bin/session/control/SessionInteractions.js.map +1 -0
  263. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts +49 -0
  264. package/bin/session/execution/SessionAssistantOutputAdapter.d.ts.map +1 -0
  265. package/bin/session/execution/SessionAssistantOutputAdapter.js +117 -0
  266. package/bin/session/execution/SessionAssistantOutputAdapter.js.map +1 -0
  267. package/bin/session/execution/tools/SessionShellApprovalAdapter.d.ts +28 -0
  268. package/bin/session/execution/tools/SessionShellApprovalAdapter.d.ts.map +1 -0
  269. package/bin/session/execution/tools/SessionShellApprovalAdapter.js +75 -0
  270. package/bin/session/execution/tools/SessionShellApprovalAdapter.js.map +1 -0
  271. package/bin/session/messages/SessionAssistantMessageWriter.d.ts +6 -4
  272. package/bin/session/messages/SessionAssistantMessageWriter.d.ts.map +1 -1
  273. package/bin/session/messages/SessionAssistantMessageWriter.js +34 -18
  274. package/bin/session/messages/SessionAssistantMessageWriter.js.map +1 -1
  275. package/bin/session/messages/SessionJsonValue.d.ts +2 -2
  276. package/bin/session/messages/SessionJsonValue.d.ts.map +1 -1
  277. package/bin/session/messages/SessionJsonValue.js.map +1 -1
  278. package/bin/session/messages/SessionMessageCodec.d.ts.map +1 -1
  279. package/bin/session/messages/SessionMessageCodec.js +30 -84
  280. package/bin/session/messages/SessionMessageCodec.js.map +1 -1
  281. package/bin/session/messages/SessionMessageCompaction.js +2 -2
  282. package/bin/session/messages/SessionMessageCompaction.js.map +1 -1
  283. package/bin/session/messages/SessionMessageInteractionWriter.d.ts +51 -0
  284. package/bin/session/messages/SessionMessageInteractionWriter.d.ts.map +1 -0
  285. package/bin/session/messages/SessionMessageInteractionWriter.js +177 -0
  286. package/bin/session/messages/SessionMessageInteractionWriter.js.map +1 -0
  287. package/bin/session/preview/SessionMessagePreview.js +2 -2
  288. package/bin/session/preview/SessionMessagePreview.js.map +1 -1
  289. package/bin/session/runtime/SessionCompactOperation.d.ts +29 -0
  290. package/bin/session/runtime/SessionCompactOperation.d.ts.map +1 -0
  291. package/bin/session/runtime/SessionCompactOperation.js +66 -0
  292. package/bin/session/runtime/SessionCompactOperation.js.map +1 -0
  293. package/bin/session/runtime/SessionHistoryCompaction.d.ts +22 -0
  294. package/bin/session/runtime/SessionHistoryCompaction.d.ts.map +1 -0
  295. package/bin/session/runtime/SessionHistoryCompaction.js +31 -0
  296. package/bin/session/runtime/SessionHistoryCompaction.js.map +1 -0
  297. package/bin/session/runtime/SessionTurnContext.d.ts +26 -0
  298. package/bin/session/runtime/SessionTurnContext.d.ts.map +1 -0
  299. package/bin/session/runtime/SessionTurnContext.js +181 -0
  300. package/bin/session/runtime/SessionTurnContext.js.map +1 -0
  301. package/bin/session/storage/Metadata.d.ts +13 -70
  302. package/bin/session/storage/Metadata.d.ts.map +1 -1
  303. package/bin/session/storage/Metadata.js +31 -116
  304. package/bin/session/storage/Metadata.js.map +1 -1
  305. package/bin/session/storage/RuntimeSessionPort.d.ts +7 -7
  306. package/bin/session/storage/RuntimeSessionPort.d.ts.map +1 -1
  307. package/bin/session/storage/RuntimeSessionPort.js +7 -7
  308. package/bin/session/storage/RuntimeSessionPort.js.map +1 -1
  309. package/bin/tools/ask/AskQuestionsTool.d.ts +39 -0
  310. package/bin/tools/ask/AskQuestionsTool.d.ts.map +1 -0
  311. package/bin/tools/ask/AskQuestionsTool.js +67 -0
  312. package/bin/tools/ask/AskQuestionsTool.js.map +1 -0
  313. package/bin/tools/ask/AskQuestionsToolSchemas.d.ts +29 -0
  314. package/bin/tools/ask/AskQuestionsToolSchemas.d.ts.map +1 -0
  315. package/bin/tools/ask/AskQuestionsToolSchemas.js +51 -0
  316. package/bin/tools/ask/AskQuestionsToolSchemas.js.map +1 -0
  317. package/bin/tools/index.d.ts +9 -0
  318. package/bin/tools/index.d.ts.map +1 -0
  319. package/bin/tools/index.js +8 -0
  320. package/bin/tools/index.js.map +1 -0
  321. package/bin/types/action/ActionResult.d.ts +26 -0
  322. package/bin/types/action/ActionResult.d.ts.map +1 -0
  323. package/bin/types/action/ActionResult.js +17 -0
  324. package/bin/types/action/ActionResult.js.map +1 -0
  325. package/bin/types/agent/AgentOptions.d.ts +13 -23
  326. package/bin/types/agent/AgentOptions.d.ts.map +1 -1
  327. package/bin/types/agent/AgentState.d.ts +4 -13
  328. package/bin/types/agent/AgentState.d.ts.map +1 -1
  329. package/bin/types/agent/AgentState.js +2 -2
  330. package/bin/types/agent/RemoteAgentPluginAction.d.ts +2 -2
  331. package/bin/types/agent/RemoteAgentPluginAction.d.ts.map +1 -1
  332. package/bin/types/agent/SessionActor.d.ts +16 -15
  333. package/bin/types/agent/SessionActor.d.ts.map +1 -1
  334. package/bin/types/agent/SessionTypes.d.ts +69 -91
  335. package/bin/types/agent/SessionTypes.d.ts.map +1 -1
  336. package/bin/types/executor/SessionAssistantOutput.d.ts +34 -0
  337. package/bin/types/executor/SessionAssistantOutput.d.ts.map +1 -0
  338. package/bin/types/executor/SessionAssistantOutput.js +8 -0
  339. package/bin/types/executor/SessionAssistantOutput.js.map +1 -0
  340. package/bin/types/executor/SessionToolExecutionContext.d.ts +5 -5
  341. package/bin/types/executor/SessionToolExecutionContext.d.ts.map +1 -1
  342. package/bin/types/executor/SessionToolExecutionContext.js +2 -2
  343. package/bin/types/executor/SessionTurnContext.d.ts +125 -0
  344. package/bin/types/executor/SessionTurnContext.d.ts.map +1 -0
  345. package/bin/types/executor/SessionTurnContext.js +10 -0
  346. package/bin/types/executor/SessionTurnContext.js.map +1 -0
  347. package/bin/types/plugin/PluginAction.d.ts +13 -10
  348. package/bin/types/plugin/PluginAction.d.ts.map +1 -1
  349. package/bin/types/plugin/PluginCommand.d.ts +8 -65
  350. package/bin/types/plugin/PluginCommand.d.ts.map +1 -1
  351. package/bin/types/plugin/PluginCommand.js +2 -4
  352. package/bin/types/plugin/PluginCommand.js.map +1 -1
  353. package/bin/types/plugin/PluginContext.d.ts +34 -0
  354. package/bin/types/plugin/PluginContext.d.ts.map +1 -0
  355. package/bin/types/plugin/PluginContext.js +9 -0
  356. package/bin/types/plugin/PluginContext.js.map +1 -0
  357. package/bin/types/plugin/PluginDefinition.d.ts +8 -28
  358. package/bin/types/plugin/PluginDefinition.d.ts.map +1 -1
  359. package/bin/types/plugin/PluginDefinition.js +1 -1
  360. package/bin/types/plugin/PluginExecutionContext.d.ts +29 -0
  361. package/bin/types/plugin/PluginExecutionContext.d.ts.map +1 -0
  362. package/bin/types/plugin/{PluginRunContext.js → PluginExecutionContext.js} +2 -2
  363. package/bin/types/plugin/PluginExecutionContext.js.map +1 -0
  364. package/bin/types/plugin/PluginHttp.d.ts +5 -5
  365. package/bin/types/plugin/PluginHttp.d.ts.map +1 -1
  366. package/bin/types/plugin/PluginRegistry.d.ts +21 -0
  367. package/bin/types/plugin/PluginRegistry.d.ts.map +1 -0
  368. package/bin/types/plugin/PluginRegistry.js +9 -0
  369. package/bin/types/plugin/PluginRegistry.js.map +1 -0
  370. package/bin/types/plugin/PluginRuntime.d.ts +28 -40
  371. package/bin/types/plugin/PluginRuntime.d.ts.map +1 -1
  372. package/bin/types/plugin/PluginState.d.ts +0 -15
  373. package/bin/types/plugin/PluginState.d.ts.map +1 -1
  374. package/bin/types/plugin/PluginTool.d.ts +90 -0
  375. package/bin/types/plugin/PluginTool.d.ts.map +1 -0
  376. package/bin/types/plugin/PluginTool.js.map +1 -0
  377. package/bin/types/rpc/RpcProtocol.d.ts +50 -72
  378. package/bin/types/rpc/RpcProtocol.d.ts.map +1 -1
  379. package/bin/types/sdk/AgentSessionCompact.d.ts +31 -0
  380. package/bin/types/sdk/AgentSessionCompact.d.ts.map +1 -0
  381. package/bin/types/sdk/AgentSessionCompact.js +8 -0
  382. package/bin/types/sdk/AgentSessionCompact.js.map +1 -0
  383. package/bin/types/sdk/AgentSessionPrompt.d.ts +1 -1
  384. package/bin/types/sdk/AgentSessionPrompt.d.ts.map +1 -1
  385. package/bin/types/sdk/AgentSessionPrompt.js +1 -1
  386. package/bin/types/sdk/AgentSessionPrompt.js.map +1 -1
  387. package/bin/types/sdk/AgentSessionStop.d.ts +2 -2
  388. package/bin/types/sdk/AgentSessionStop.d.ts.map +1 -1
  389. package/bin/types/sdk/AgentSessionTurn.d.ts +3 -13
  390. package/bin/types/sdk/AgentSessionTurn.d.ts.map +1 -1
  391. package/bin/types/session/SessionCommand.d.ts +26 -0
  392. package/bin/types/session/SessionCommand.d.ts.map +1 -0
  393. package/bin/types/session/SessionCommand.js +7 -0
  394. package/bin/types/session/SessionCommand.js.map +1 -0
  395. package/bin/types/session/SessionComposer.d.ts +8 -4
  396. package/bin/types/session/SessionComposer.d.ts.map +1 -1
  397. package/bin/{executor/types/SessionRun.d.ts → types/session/SessionExecution.d.ts} +37 -33
  398. package/bin/types/session/SessionExecution.d.ts.map +1 -0
  399. package/bin/types/session/SessionExecution.js +10 -0
  400. package/bin/types/session/SessionExecution.js.map +1 -0
  401. package/bin/types/session/SessionInteraction.d.ts +165 -0
  402. package/bin/types/session/SessionInteraction.d.ts.map +1 -0
  403. package/bin/types/session/SessionInteraction.js +8 -0
  404. package/bin/types/session/SessionInteraction.js.map +1 -0
  405. package/bin/types/session/SessionInteractions.d.ts +17 -0
  406. package/bin/types/session/SessionInteractions.d.ts.map +1 -0
  407. package/bin/types/session/SessionInteractions.js +8 -0
  408. package/bin/types/session/SessionInteractions.js.map +1 -0
  409. package/bin/types/session/SessionLocalState.d.ts +1 -1
  410. package/bin/types/session/SessionLoop.d.ts +63 -0
  411. package/bin/types/session/SessionLoop.d.ts.map +1 -0
  412. package/bin/types/session/{SessionTurn.js → SessionLoop.js} +2 -2
  413. package/bin/types/session/SessionLoop.js.map +1 -0
  414. package/bin/types/session/SessionMessage.d.ts +37 -28
  415. package/bin/types/session/SessionMessage.d.ts.map +1 -1
  416. package/bin/types/session/SessionMessages.d.ts +2 -4
  417. package/bin/types/session/SessionMessages.d.ts.map +1 -1
  418. package/bin/types/session/SessionMutation.d.ts +19 -1
  419. package/bin/types/session/SessionMutation.d.ts.map +1 -1
  420. package/bin/types/session/SessionMutation.js +1 -0
  421. package/bin/types/session/SessionMutation.js.map +1 -1
  422. package/bin/types/session/SessionOptions.d.ts +34 -20
  423. package/bin/types/session/SessionOptions.d.ts.map +1 -1
  424. package/bin/types/session/SessionPort.d.ts +6 -19
  425. package/bin/types/session/SessionPort.d.ts.map +1 -1
  426. package/bin/types/session/SessionState.d.ts +3 -13
  427. package/bin/types/session/SessionState.d.ts.map +1 -1
  428. package/bin/types/store/AgentStore.d.ts +31 -0
  429. package/bin/types/store/AgentStore.d.ts.map +1 -0
  430. package/bin/types/store/AgentStore.js +9 -0
  431. package/bin/types/store/AgentStore.js.map +1 -0
  432. package/bin/types/store/LocalStore.d.ts +36 -0
  433. package/bin/types/store/LocalStore.d.ts.map +1 -0
  434. package/bin/types/store/LocalStore.js +9 -0
  435. package/bin/types/store/LocalStore.js.map +1 -0
  436. package/bin/types/store/SessionStore.d.ts +82 -0
  437. package/bin/types/store/SessionStore.d.ts.map +1 -0
  438. package/bin/types/store/SessionStore.js +9 -0
  439. package/bin/types/store/SessionStore.js.map +1 -0
  440. package/bin/types/tools/ask/AskQuestionsTool.d.ts +22 -0
  441. package/bin/types/tools/ask/AskQuestionsTool.d.ts.map +1 -0
  442. package/bin/types/tools/ask/AskQuestionsTool.js +8 -0
  443. package/bin/types/tools/ask/AskQuestionsTool.js.map +1 -0
  444. package/bin/types/workspace/FileSystem.d.ts +55 -0
  445. package/bin/types/workspace/FileSystem.d.ts.map +1 -0
  446. package/bin/types/workspace/FileSystem.js +9 -0
  447. package/bin/types/workspace/FileSystem.js.map +1 -0
  448. package/bin/types/workspace/FileTool.d.ts +181 -0
  449. package/bin/types/workspace/FileTool.d.ts.map +1 -0
  450. package/bin/types/workspace/FileTool.js +10 -0
  451. package/bin/types/workspace/FileTool.js.map +1 -0
  452. package/bin/types/workspace/SearchTool.d.ts +131 -0
  453. package/bin/types/workspace/SearchTool.d.ts.map +1 -0
  454. package/bin/types/workspace/SearchTool.js +10 -0
  455. package/bin/types/workspace/SearchTool.js.map +1 -0
  456. package/bin/types/workspace/Workspace.d.ts +24 -0
  457. package/bin/types/workspace/Workspace.d.ts.map +1 -0
  458. package/bin/types/workspace/Workspace.js +9 -0
  459. package/bin/types/workspace/Workspace.js.map +1 -0
  460. package/bin/types/workspace/WorkspaceEnv.d.ts +16 -0
  461. package/bin/types/workspace/WorkspaceEnv.d.ts.map +1 -0
  462. package/bin/types/workspace/WorkspaceEnv.js +9 -0
  463. package/bin/types/workspace/WorkspaceEnv.js.map +1 -0
  464. package/bin/types/workspace/WorkspaceTools.d.ts +20 -0
  465. package/bin/types/workspace/WorkspaceTools.d.ts.map +1 -0
  466. package/bin/types/workspace/WorkspaceTools.js +9 -0
  467. package/bin/types/workspace/WorkspaceTools.js.map +1 -0
  468. package/bin/utils/Id.d.ts +1 -1
  469. package/bin/utils/Id.d.ts.map +1 -1
  470. package/bin/utils/Id.js +1 -1
  471. package/bin/utils/Id.js.map +1 -1
  472. package/bin/utils/Template.d.ts +1 -1
  473. package/bin/utils/Template.d.ts.map +1 -1
  474. package/bin/utils/Template.js +1 -1
  475. package/bin/utils/Template.js.map +1 -1
  476. package/bin/utils/Time.d.ts +5 -5
  477. package/bin/utils/Time.d.ts.map +1 -1
  478. package/bin/utils/Time.js +5 -5
  479. package/bin/utils/Time.js.map +1 -1
  480. package/bin/utils/cli/CliOutput.d.ts +1 -1
  481. package/bin/utils/cli/CliOutput.d.ts.map +1 -1
  482. package/bin/utils/cli/CliOutput.js +6 -6
  483. package/bin/utils/cli/CliOutput.js.map +1 -1
  484. package/bin/utils/cli/PrettyStatus.d.ts +3 -3
  485. package/bin/utils/cli/PrettyStatus.d.ts.map +1 -1
  486. package/bin/utils/cli/PrettyStatus.js +4 -4
  487. package/bin/utils/cli/PrettyStatus.js.map +1 -1
  488. package/bin/utils/logger/FormatRequest.d.ts +2 -2
  489. package/bin/utils/logger/FormatRequest.d.ts.map +1 -1
  490. package/bin/utils/logger/FormatRequest.js +49 -49
  491. package/bin/utils/logger/FormatRequest.js.map +1 -1
  492. package/bin/utils/logger/FormatResponse.d.ts +1 -1
  493. package/bin/utils/logger/FormatResponse.d.ts.map +1 -1
  494. package/bin/utils/logger/FormatResponse.js +36 -36
  495. package/bin/utils/logger/FormatResponse.js.map +1 -1
  496. package/bin/utils/logger/FormatShared.d.ts +16 -16
  497. package/bin/utils/logger/FormatShared.d.ts.map +1 -1
  498. package/bin/utils/logger/FormatShared.js +28 -28
  499. package/bin/utils/logger/FormatShared.js.map +1 -1
  500. package/bin/utils/logger/Logger.d.ts +15 -12
  501. package/bin/utils/logger/Logger.d.ts.map +1 -1
  502. package/bin/utils/logger/Logger.js +28 -26
  503. package/bin/utils/logger/Logger.js.map +1 -1
  504. package/bin/utils/object/DeepMerge.d.ts +1 -1
  505. package/bin/utils/object/DeepMerge.d.ts.map +1 -1
  506. package/bin/utils/object/DeepMerge.js +5 -5
  507. package/bin/utils/object/DeepMerge.js.map +1 -1
  508. package/bin/utils/object/ObjectGuards.d.ts +1 -1
  509. package/bin/utils/object/ObjectGuards.d.ts.map +1 -1
  510. package/bin/utils/object/ObjectGuards.js +1 -1
  511. package/bin/utils/object/ObjectGuards.js.map +1 -1
  512. package/bin/utils/path/AncestorFiles.d.ts +1 -1
  513. package/bin/utils/path/AncestorFiles.d.ts.map +1 -1
  514. package/bin/utils/path/AncestorFiles.js +2 -2
  515. package/bin/utils/path/AncestorFiles.js.map +1 -1
  516. package/bin/utils/storage/index.d.ts +2 -2
  517. package/bin/utils/storage/index.d.ts.map +1 -1
  518. package/bin/utils/storage/index.js +2 -2
  519. package/bin/utils/storage/index.js.map +1 -1
  520. package/bin/utils/string/EscapeRegExp.d.ts +1 -1
  521. package/bin/utils/string/EscapeRegExp.d.ts.map +1 -1
  522. package/bin/utils/string/EscapeRegExp.js +1 -1
  523. package/bin/utils/string/EscapeRegExp.js.map +1 -1
  524. package/bin/workspace/LocalFileSystem.d.ts +44 -0
  525. package/bin/workspace/LocalFileSystem.d.ts.map +1 -0
  526. package/bin/workspace/LocalFileSystem.js +153 -0
  527. package/bin/workspace/LocalFileSystem.js.map +1 -0
  528. package/bin/workspace/Workspace.d.ts +52 -0
  529. package/bin/workspace/Workspace.d.ts.map +1 -0
  530. package/bin/workspace/Workspace.js +153 -0
  531. package/bin/workspace/Workspace.js.map +1 -0
  532. package/bin/workspace/WorkspaceEnv.d.ts +19 -0
  533. package/bin/workspace/WorkspaceEnv.d.ts.map +1 -0
  534. package/bin/workspace/WorkspaceEnv.js +50 -0
  535. package/bin/workspace/WorkspaceEnv.js.map +1 -0
  536. package/bin/workspace/WorkspacePaths.d.ts +67 -0
  537. package/bin/workspace/WorkspacePaths.d.ts.map +1 -0
  538. package/bin/workspace/WorkspacePaths.js +102 -0
  539. package/bin/workspace/WorkspacePaths.js.map +1 -0
  540. package/bin/workspace/file/FileActionRuntime.d.ts +14 -0
  541. package/bin/workspace/file/FileActionRuntime.d.ts.map +1 -0
  542. package/bin/workspace/file/FileActionRuntime.js +386 -0
  543. package/bin/workspace/file/FileActionRuntime.js.map +1 -0
  544. package/bin/workspace/file/FileAtomicWriter.d.ts +20 -0
  545. package/bin/workspace/file/FileAtomicWriter.d.ts.map +1 -0
  546. package/bin/workspace/file/FileAtomicWriter.js +50 -0
  547. package/bin/workspace/file/FileAtomicWriter.js.map +1 -0
  548. package/bin/workspace/file/FileEncoding.d.ts +34 -0
  549. package/bin/workspace/file/FileEncoding.d.ts.map +1 -0
  550. package/bin/workspace/file/FileEncoding.js +152 -0
  551. package/bin/workspace/file/FileEncoding.js.map +1 -0
  552. package/bin/workspace/file/FilePathPolicy.d.ts +26 -0
  553. package/bin/workspace/file/FilePathPolicy.d.ts.map +1 -0
  554. package/bin/workspace/file/FilePathPolicy.js +134 -0
  555. package/bin/workspace/file/FilePathPolicy.js.map +1 -0
  556. package/bin/workspace/file/FileToolError.d.ts +30 -0
  557. package/bin/workspace/file/FileToolError.d.ts.map +1 -0
  558. package/bin/workspace/file/FileToolError.js +78 -0
  559. package/bin/workspace/file/FileToolError.js.map +1 -0
  560. package/bin/workspace/search/SearchActionRuntime.d.ts +14 -0
  561. package/bin/workspace/search/SearchActionRuntime.d.ts.map +1 -0
  562. package/bin/workspace/search/SearchActionRuntime.js +359 -0
  563. package/bin/workspace/search/SearchActionRuntime.js.map +1 -0
  564. package/bin/workspace/search/SearchToolError.d.ts +26 -0
  565. package/bin/workspace/search/SearchToolError.d.ts.map +1 -0
  566. package/bin/workspace/search/SearchToolError.js +76 -0
  567. package/bin/workspace/search/SearchToolError.js.map +1 -0
  568. package/bin/{session/messages → workspace/store}/JsonlSessionMessageStore.d.ts +4 -31
  569. package/bin/workspace/store/JsonlSessionMessageStore.d.ts.map +1 -0
  570. package/bin/{session/messages → workspace/store}/JsonlSessionMessageStore.js +28 -63
  571. package/bin/workspace/store/JsonlSessionMessageStore.js.map +1 -0
  572. package/bin/workspace/store/LocalAgentStore.d.ts +43 -0
  573. package/bin/workspace/store/LocalAgentStore.d.ts.map +1 -0
  574. package/bin/workspace/store/LocalAgentStore.js +135 -0
  575. package/bin/workspace/store/LocalAgentStore.js.map +1 -0
  576. package/bin/workspace/store/LocalSessionStore.d.ts +38 -0
  577. package/bin/workspace/store/LocalSessionStore.d.ts.map +1 -0
  578. package/bin/workspace/store/LocalSessionStore.js +70 -0
  579. package/bin/workspace/store/LocalSessionStore.js.map +1 -0
  580. package/bin/workspace/store/LocalStorePaths.d.ts +81 -0
  581. package/bin/workspace/store/LocalStorePaths.d.ts.map +1 -0
  582. package/bin/workspace/store/LocalStorePaths.js +112 -0
  583. package/bin/workspace/store/LocalStorePaths.js.map +1 -0
  584. package/bin/workspace/store/SessionMessageStoreFactory.d.ts +12 -0
  585. package/bin/workspace/store/SessionMessageStoreFactory.d.ts.map +1 -0
  586. package/bin/workspace/store/SessionMessageStoreFactory.js +13 -0
  587. package/bin/workspace/store/SessionMessageStoreFactory.js.map +1 -0
  588. package/bin/workspace/tool/FileToolSchemas.d.ts +35 -0
  589. package/bin/workspace/tool/FileToolSchemas.d.ts.map +1 -0
  590. package/bin/workspace/tool/FileToolSchemas.js +73 -0
  591. package/bin/workspace/tool/FileToolSchemas.js.map +1 -0
  592. package/bin/workspace/tool/FileTools.d.ts +11 -0
  593. package/bin/workspace/tool/FileTools.d.ts.map +1 -0
  594. package/bin/workspace/tool/FileTools.js +61 -0
  595. package/bin/workspace/tool/FileTools.js.map +1 -0
  596. package/bin/workspace/tool/SearchToolSchemas.d.ts +24 -0
  597. package/bin/workspace/tool/SearchToolSchemas.d.ts.map +1 -0
  598. package/bin/workspace/tool/SearchToolSchemas.js +60 -0
  599. package/bin/workspace/tool/SearchToolSchemas.js.map +1 -0
  600. package/bin/workspace/tool/SearchTools.d.ts +11 -0
  601. package/bin/workspace/tool/SearchTools.d.ts.map +1 -0
  602. package/bin/workspace/tool/SearchTools.js +38 -0
  603. package/bin/workspace/tool/SearchTools.js.map +1 -0
  604. package/bin/workspace/tool/WorkspaceTools.d.ts +11 -0
  605. package/bin/workspace/tool/WorkspaceTools.d.ts.map +1 -0
  606. package/bin/workspace/tool/WorkspaceTools.js +22 -0
  607. package/bin/workspace/tool/WorkspaceTools.js.map +1 -0
  608. package/package.json +11 -6
  609. package/scripts/action-schedule-store.test.mjs +101 -0
  610. package/scripts/agent-env-shell-sandbox.test.mjs +9 -19
  611. package/scripts/agent-env.test.mjs +10 -39
  612. package/scripts/agent-ready.test.mjs +16 -11
  613. package/scripts/agent-session-maintenance.test.mjs +9 -7
  614. package/scripts/agent-store.test.mjs +83 -0
  615. package/scripts/city-model-tool-loop.test.mjs +48 -22
  616. package/scripts/core-engine-context-compaction.test.mjs +29 -26
  617. package/scripts/core-engine-ui-stream-collector.test.mjs +4 -4
  618. package/scripts/executor-failure-result.test.mjs +36 -33
  619. package/scripts/file-tools.test.mjs +282 -0
  620. package/scripts/image-plugin-job.test.mjs +43 -34
  621. package/scripts/logger-isolation.test.mjs +6 -6
  622. package/scripts/multi-agent-plugin-isolation.test.mjs +8 -8
  623. package/scripts/{plugin-tool-bridge.test.mjs → plugin-tools.test.mjs} +106 -102
  624. package/scripts/public-api-naming.test.mjs +108 -0
  625. package/scripts/remote-session-reconnect.test.mjs +78 -9
  626. package/scripts/search-tools.test.mjs +188 -0
  627. package/scripts/session-ask-question.test.mjs +216 -0
  628. package/scripts/session-compact-handle.test.mjs +117 -0
  629. package/scripts/session-composer.test.mjs +7 -5
  630. package/scripts/session-config-turn-boundary.test.mjs +177 -43
  631. package/scripts/session-list-title.test.mjs +23 -23
  632. package/scripts/session-message-timeline.test.mjs +65 -0
  633. package/scripts/session-messages-error.test.mjs +0 -1
  634. package/scripts/session-messages.test.mjs +305 -68
  635. package/scripts/session-queue.test.mjs +75 -40
  636. package/scripts/session-shell-approval.test.mjs +25 -22
  637. package/scripts/session-system-blocks.test.mjs +3 -3
  638. package/scripts/session-title-event.test.mjs +7 -7
  639. package/scripts/session-turn-context.test.mjs +99 -0
  640. package/scripts/session-turn-failure.test.mjs +158 -38
  641. package/scripts/workspace.test.mjs +146 -0
  642. package/src/agent/Agent.ts +159 -109
  643. package/src/agent/AgentInstructions.ts +2 -2
  644. package/src/agent/AgentModel.ts +2 -2
  645. package/src/agent/AgentSessions.ts +50 -148
  646. package/src/agent/AgentState.ts +8 -63
  647. package/src/executor/Executor.ts +120 -226
  648. package/src/executor/README.md +13 -11
  649. package/src/executor/composer/system/SessionSystemComposer.ts +2 -2
  650. package/src/executor/composer/system/default/DefaultSessionSystemComposer.ts +24 -24
  651. package/src/executor/composer/system/default/PromptRenderer.ts +4 -4
  652. package/src/executor/composer/system/default/SystemDomain.ts +68 -68
  653. package/src/executor/composer/system/default/assets/core.prompt.ts +1 -1
  654. package/src/executor/composer/system/default/assets/core.prompt.ts.txt +1 -1
  655. package/src/executor/composer/system/default/variables/GeoContext.ts +4 -4
  656. package/src/executor/composer/system/default/variables/PromptTypes.ts +2 -2
  657. package/src/executor/composer/system/default/variables/VariableReplacer.ts +30 -30
  658. package/src/executor/core-engine/CoreEngineError.ts +2 -2
  659. package/src/executor/core-engine/CoreEngineLoopDecision.ts +2 -2
  660. package/src/executor/core-engine/CoreEngineMessageState.ts +16 -16
  661. package/src/executor/core-engine/CoreEngineRunner.ts +124 -134
  662. package/src/executor/core-engine/CoreEngineSignals.ts +24 -24
  663. package/src/executor/core-engine/CoreEngineUiStreamCollector.ts +18 -18
  664. package/src/executor/ids/resolveSessionId.ts +5 -5
  665. package/src/executor/messages/ChatMessageMarkup.ts +23 -23
  666. package/src/executor/messages/ChatMessageMarkupTypes.ts +10 -10
  667. package/src/executor/messages/SessionAttachmentMapper.ts +14 -14
  668. package/src/executor/messages/SessionMessageCodec.ts +17 -27
  669. package/src/executor/messages/SessionMessageLog.ts +3 -3
  670. package/src/executor/messages/SessionStepEventMapper.ts +9 -9
  671. package/src/executor/messages/UIMessageTransformer.ts +6 -6
  672. package/src/executor/messages/UserVisibleText.ts +6 -6
  673. package/src/executor/services/ExecutorRecoveryPolicy.ts +33 -32
  674. package/src/executor/types/SessionHistoryMeta.ts +10 -10
  675. package/src/executor/types/SessionRecords.ts +13 -13
  676. package/src/index.ts +108 -184
  677. package/src/plugin/core/ActionScheduleExecutor.ts +21 -23
  678. package/src/plugin/core/ActionScheduleRuntime.ts +8 -8
  679. package/src/plugin/core/ActionScheduleStore.ts +140 -128
  680. package/src/plugin/core/ActionScheduleTime.ts +6 -6
  681. package/src/plugin/core/BasePlugin.ts +6 -27
  682. package/src/plugin/core/HookRegistry.ts +56 -56
  683. package/src/plugin/core/PluginActionFactory.ts +20 -38
  684. package/src/plugin/core/PluginActionRunner.ts +21 -181
  685. package/src/plugin/core/PluginCatalog.ts +23 -23
  686. package/src/plugin/core/PluginContext.ts +52 -0
  687. package/src/plugin/core/PluginHttpRoutes.ts +8 -8
  688. package/src/plugin/core/PluginRegistry.ts +125 -88
  689. package/src/plugin/core/PluginStateController.ts +5 -47
  690. package/src/plugin/tool/PluginToolRuntime.ts +121 -0
  691. package/src/{executor/tools/plugin → plugin/tool}/PluginToolSchemas.ts +1 -1
  692. package/src/{executor/tools/plugin/PluginToolDefinition.ts → plugin/tool/PluginTools.ts} +25 -27
  693. package/src/plugin/types/ActionSchedule.ts +10 -10
  694. package/src/plugin/types/PluginApi.ts +3 -3
  695. package/src/remote/RemoteAgent.ts +3 -3
  696. package/src/remote/RemoteSession.ts +110 -28
  697. package/src/remote/RemoteTransport.ts +17 -20
  698. package/src/remote/transports/HttpRemoteAgentTransport.ts +59 -59
  699. package/src/remote/transports/RpcClient.ts +65 -106
  700. package/src/remote/transports/RpcRemoteAgentTransport.ts +21 -21
  701. package/src/session/DefaultSessionComposer.ts +2 -3
  702. package/src/session/Session.ts +352 -298
  703. package/src/session/SessionCommand.ts +42 -0
  704. package/src/session/SessionLoop.ts +661 -0
  705. package/src/session/SessionMessages.ts +141 -94
  706. package/src/session/SessionQueue.ts +31 -64
  707. package/src/session/SessionState.ts +48 -116
  708. package/src/session/SessionSystem.ts +7 -7
  709. package/src/session/SessionTitle.ts +24 -39
  710. package/src/session/browse/Browse.ts +160 -384
  711. package/src/session/browse/SessionMessageTimeline.ts +135 -0
  712. package/src/session/control/SessionInteractions.ts +290 -0
  713. package/src/session/execution/SessionAssistantOutputAdapter.ts +144 -0
  714. package/src/session/execution/tools/SessionShellApprovalAdapter.ts +94 -0
  715. package/src/session/messages/SessionAssistantMessageWriter.ts +33 -21
  716. package/src/session/messages/SessionJsonValue.ts +3 -3
  717. package/src/session/messages/SessionMessageCodec.ts +29 -84
  718. package/src/session/messages/SessionMessageCompaction.ts +2 -2
  719. package/src/session/messages/SessionMessageInteractionWriter.ts +277 -0
  720. package/src/session/preview/SessionMessagePreview.ts +2 -2
  721. package/src/session/runtime/SessionCompactOperation.ts +93 -0
  722. package/src/session/runtime/SessionHistoryCompaction.ts +45 -0
  723. package/src/session/runtime/SessionTurnContext.ts +222 -0
  724. package/src/session/storage/Metadata.ts +46 -195
  725. package/src/session/storage/RuntimeSessionPort.ts +13 -13
  726. package/src/tools/ask/AskQuestionsTool.ts +85 -0
  727. package/src/tools/ask/AskQuestionsToolSchemas.ts +55 -0
  728. package/src/tools/index.ts +12 -0
  729. package/src/types/action/ActionResult.ts +36 -0
  730. package/src/types/agent/AgentOptions.ts +13 -25
  731. package/src/types/agent/AgentState.ts +4 -15
  732. package/src/types/agent/RemoteAgentPluginAction.ts +2 -2
  733. package/src/types/agent/SessionActor.ts +21 -20
  734. package/src/types/agent/SessionTypes.ts +74 -94
  735. package/src/types/executor/SessionAssistantOutput.ts +35 -0
  736. package/src/types/executor/SessionToolExecutionContext.ts +5 -5
  737. package/src/types/executor/SessionTurnContext.ts +171 -0
  738. package/src/types/plugin/PluginAction.ts +13 -10
  739. package/src/types/plugin/PluginCommand.ts +8 -70
  740. package/src/types/plugin/PluginContext.ts +43 -0
  741. package/src/types/plugin/PluginDefinition.ts +8 -35
  742. package/src/types/plugin/PluginExecutionContext.ts +34 -0
  743. package/src/types/plugin/PluginHttp.ts +5 -5
  744. package/src/types/plugin/PluginRegistry.ts +25 -0
  745. package/src/types/plugin/PluginRuntime.ts +30 -43
  746. package/src/types/plugin/PluginState.ts +0 -17
  747. package/src/{executor/tools/plugin/types → types/plugin}/PluginTool.ts +42 -20
  748. package/src/types/rpc/RpcProtocol.ts +49 -74
  749. package/src/types/sdk/AgentSessionCompact.ts +36 -0
  750. package/src/types/sdk/AgentSessionPrompt.ts +1 -1
  751. package/src/types/sdk/AgentSessionStop.ts +2 -2
  752. package/src/types/sdk/AgentSessionTurn.ts +3 -15
  753. package/src/types/session/SessionCommand.ts +27 -0
  754. package/src/types/session/SessionComposer.ts +8 -4
  755. package/src/{executor/types/SessionRun.ts → types/session/SessionExecution.ts} +41 -34
  756. package/src/types/session/SessionInteraction.ts +209 -0
  757. package/src/types/session/SessionInteractions.ts +21 -0
  758. package/src/types/session/SessionLocalState.ts +1 -1
  759. package/src/types/session/SessionLoop.ts +72 -0
  760. package/src/types/session/SessionMessage.ts +43 -28
  761. package/src/types/session/SessionMessages.ts +2 -4
  762. package/src/types/session/SessionMutation.ts +21 -0
  763. package/src/types/session/SessionOptions.ts +38 -23
  764. package/src/types/session/SessionPort.ts +6 -24
  765. package/src/types/session/SessionState.ts +3 -16
  766. package/src/types/store/AgentStore.ts +52 -0
  767. package/src/types/store/LocalStore.ts +39 -0
  768. package/src/types/store/SessionStore.ts +105 -0
  769. package/src/types/tools/ask/AskQuestionsTool.ts +27 -0
  770. package/src/types/workspace/FileSystem.ts +76 -0
  771. package/src/types/workspace/FileTool.ts +225 -0
  772. package/src/types/workspace/SearchTool.ts +156 -0
  773. package/src/types/workspace/Workspace.ts +27 -0
  774. package/src/types/workspace/WorkspaceEnv.ts +19 -0
  775. package/src/types/workspace/WorkspaceTools.ts +23 -0
  776. package/src/utils/Id.ts +1 -1
  777. package/src/utils/Template.ts +1 -1
  778. package/src/utils/Time.ts +8 -8
  779. package/src/utils/cli/CliOutput.ts +7 -7
  780. package/src/utils/cli/PrettyStatus.ts +4 -4
  781. package/src/utils/logger/FormatRequest.ts +64 -64
  782. package/src/utils/logger/FormatResponse.ts +44 -44
  783. package/src/utils/logger/FormatShared.ts +28 -28
  784. package/src/utils/logger/Logger.ts +30 -26
  785. package/src/utils/object/DeepMerge.ts +5 -5
  786. package/src/utils/object/ObjectGuards.ts +1 -1
  787. package/src/utils/path/AncestorFiles.ts +3 -3
  788. package/src/utils/storage/index.ts +2 -2
  789. package/src/utils/string/EscapeRegExp.ts +1 -1
  790. package/src/workspace/LocalFileSystem.ts +209 -0
  791. package/src/workspace/Workspace.ts +180 -0
  792. package/src/workspace/WorkspaceEnv.ts +54 -0
  793. package/src/workspace/WorkspacePaths.ts +112 -0
  794. package/src/workspace/file/FileActionRuntime.ts +433 -0
  795. package/src/workspace/file/FileAtomicWriter.ts +61 -0
  796. package/src/workspace/file/FileEncoding.ts +175 -0
  797. package/src/workspace/file/FilePathPolicy.ts +162 -0
  798. package/src/workspace/file/FileToolError.ts +99 -0
  799. package/src/workspace/search/SearchActionRuntime.ts +438 -0
  800. package/src/workspace/search/SearchToolError.ts +94 -0
  801. package/src/{session/messages → workspace/store}/JsonlSessionMessageStore.ts +40 -91
  802. package/src/workspace/store/LocalAgentStore.ts +191 -0
  803. package/src/workspace/store/LocalSessionStore.ts +114 -0
  804. package/src/workspace/store/LocalStorePaths.ts +209 -0
  805. package/src/workspace/store/SessionMessageStoreFactory.ts +18 -0
  806. package/src/workspace/tool/FileToolSchemas.ts +77 -0
  807. package/src/workspace/tool/FileTools.ts +91 -0
  808. package/src/workspace/tool/SearchToolSchemas.ts +62 -0
  809. package/src/workspace/tool/SearchTools.ts +61 -0
  810. package/src/workspace/tool/WorkspaceTools.ts +31 -0
  811. package/tsconfig.tsbuildinfo +1 -1
  812. package/bin/agent/AgentContext.d.ts +0 -69
  813. package/bin/agent/AgentContext.d.ts.map +0 -1
  814. package/bin/agent/AgentContext.js +0 -56
  815. package/bin/agent/AgentContext.js.map +0 -1
  816. package/bin/config/AgentEnv.d.ts +0 -9
  817. package/bin/config/AgentEnv.d.ts.map +0 -1
  818. package/bin/config/AgentEnv.js +0 -48
  819. package/bin/config/AgentEnv.js.map +0 -1
  820. package/bin/config/AgentInitializer.d.ts +0 -31
  821. package/bin/config/AgentInitializer.d.ts.map +0 -1
  822. package/bin/config/AgentInitializer.js +0 -131
  823. package/bin/config/AgentInitializer.js.map +0 -1
  824. package/bin/config/EnvFile.d.ts +0 -31
  825. package/bin/config/EnvFile.d.ts.map +0 -1
  826. package/bin/config/EnvFile.js +0 -89
  827. package/bin/config/EnvFile.js.map +0 -1
  828. package/bin/config/ExecutionBinding.d.ts +0 -31
  829. package/bin/config/ExecutionBinding.d.ts.map +0 -1
  830. package/bin/config/ExecutionBinding.js +0 -46
  831. package/bin/config/ExecutionBinding.js.map +0 -1
  832. package/bin/config/Gitignore.d.ts +0 -21
  833. package/bin/config/Gitignore.d.ts.map +0 -1
  834. package/bin/config/Gitignore.js +0 -46
  835. package/bin/config/Gitignore.js.map +0 -1
  836. package/bin/config/Paths.d.ts +0 -122
  837. package/bin/config/Paths.d.ts.map +0 -1
  838. package/bin/config/Paths.js +0 -183
  839. package/bin/config/Paths.js.map +0 -1
  840. package/bin/config/PlatformPaths.d.ts +0 -31
  841. package/bin/config/PlatformPaths.d.ts.map +0 -1
  842. package/bin/config/PlatformPaths.js +0 -53
  843. package/bin/config/PlatformPaths.js.map +0 -1
  844. package/bin/config/ProjectSetup.d.ts +0 -11
  845. package/bin/config/ProjectSetup.d.ts.map +0 -1
  846. package/bin/config/ProjectSetup.js +0 -32
  847. package/bin/config/ProjectSetup.js.map +0 -1
  848. package/bin/executor/messages/AssistantFileResource.d.ts +0 -63
  849. package/bin/executor/messages/AssistantFileResource.d.ts.map +0 -1
  850. package/bin/executor/messages/AssistantFileResource.js +0 -352
  851. package/bin/executor/messages/AssistantFileResource.js.map +0 -1
  852. package/bin/executor/tools/file/ReadImageToolBridge.d.ts +0 -21
  853. package/bin/executor/tools/file/ReadImageToolBridge.d.ts.map +0 -1
  854. package/bin/executor/tools/file/ReadImageToolBridge.js +0 -69
  855. package/bin/executor/tools/file/ReadImageToolBridge.js.map +0 -1
  856. package/bin/executor/tools/plugin/PluginToolBridge.d.ts +0 -19
  857. package/bin/executor/tools/plugin/PluginToolBridge.d.ts.map +0 -1
  858. package/bin/executor/tools/plugin/PluginToolBridge.js +0 -181
  859. package/bin/executor/tools/plugin/PluginToolBridge.js.map +0 -1
  860. package/bin/executor/tools/plugin/PluginToolDefinition.d.ts +0 -25
  861. package/bin/executor/tools/plugin/PluginToolDefinition.d.ts.map +0 -1
  862. package/bin/executor/tools/plugin/PluginToolDefinition.js.map +0 -1
  863. package/bin/executor/tools/plugin/PluginToolSchemas.d.ts.map +0 -1
  864. package/bin/executor/tools/plugin/PluginToolSchemas.js.map +0 -1
  865. package/bin/executor/tools/plugin/types/PluginTool.d.ts +0 -76
  866. package/bin/executor/tools/plugin/types/PluginTool.d.ts.map +0 -1
  867. package/bin/executor/tools/plugin/types/PluginTool.js.map +0 -1
  868. package/bin/executor/types/SessionExecutor.d.ts +0 -26
  869. package/bin/executor/types/SessionExecutor.d.ts.map +0 -1
  870. package/bin/executor/types/SessionExecutor.js +0 -9
  871. package/bin/executor/types/SessionExecutor.js.map +0 -1
  872. package/bin/executor/types/SessionRun.d.ts.map +0 -1
  873. package/bin/executor/types/SessionRun.js +0 -10
  874. package/bin/executor/types/SessionRun.js.map +0 -1
  875. package/bin/plugin/core/PluginCommand.d.ts +0 -17
  876. package/bin/plugin/core/PluginCommand.d.ts.map +0 -1
  877. package/bin/plugin/core/PluginCommand.js +0 -189
  878. package/bin/plugin/core/PluginCommand.js.map +0 -1
  879. package/bin/plugin/core/PluginCommandRequest.d.ts +0 -36
  880. package/bin/plugin/core/PluginCommandRequest.d.ts.map +0 -1
  881. package/bin/plugin/core/PluginCommandRequest.js +0 -53
  882. package/bin/plugin/core/PluginCommandRequest.js.map +0 -1
  883. package/bin/plugin/core/PluginLocalExecution.d.ts +0 -45
  884. package/bin/plugin/core/PluginLocalExecution.d.ts.map +0 -1
  885. package/bin/plugin/core/PluginLocalExecution.js +0 -115
  886. package/bin/plugin/core/PluginLocalExecution.js.map +0 -1
  887. package/bin/session/SessionTurn.d.ts +0 -84
  888. package/bin/session/SessionTurn.d.ts.map +0 -1
  889. package/bin/session/SessionTurn.js +0 -579
  890. package/bin/session/SessionTurn.js.map +0 -1
  891. package/bin/session/approval/SessionApprovalBroker.d.ts +0 -48
  892. package/bin/session/approval/SessionApprovalBroker.d.ts.map +0 -1
  893. package/bin/session/approval/SessionApprovalBroker.js +0 -126
  894. package/bin/session/approval/SessionApprovalBroker.js.map +0 -1
  895. package/bin/session/messages/JsonlSessionMessageStore.d.ts.map +0 -1
  896. package/bin/session/messages/JsonlSessionMessageStore.js.map +0 -1
  897. package/bin/session/storage/Instruction.d.ts +0 -16
  898. package/bin/session/storage/Instruction.d.ts.map +0 -1
  899. package/bin/session/storage/Instruction.js +0 -48
  900. package/bin/session/storage/Instruction.js.map +0 -1
  901. package/bin/session/storage/Paths.d.ts +0 -81
  902. package/bin/session/storage/Paths.d.ts.map +0 -1
  903. package/bin/session/storage/Paths.js +0 -112
  904. package/bin/session/storage/Paths.js.map +0 -1
  905. package/bin/types/common/EnvFile.d.ts +0 -30
  906. package/bin/types/common/EnvFile.d.ts.map +0 -1
  907. package/bin/types/common/EnvFile.js +0 -10
  908. package/bin/types/common/EnvFile.js.map +0 -1
  909. package/bin/types/config/AgentProject.d.ts +0 -73
  910. package/bin/types/config/AgentProject.d.ts.map +0 -1
  911. package/bin/types/config/AgentProject.js +0 -9
  912. package/bin/types/config/AgentProject.js.map +0 -1
  913. package/bin/types/config/DowncityConfig.d.ts +0 -145
  914. package/bin/types/config/DowncityConfig.d.ts.map +0 -1
  915. package/bin/types/config/DowncityConfig.js +0 -2
  916. package/bin/types/config/DowncityConfig.js.map +0 -1
  917. package/bin/types/config/ExecutionBinding.d.ts +0 -26
  918. package/bin/types/config/ExecutionBinding.d.ts.map +0 -1
  919. package/bin/types/config/ExecutionBinding.js +0 -10
  920. package/bin/types/config/ExecutionBinding.js.map +0 -1
  921. package/bin/types/config/LlmConfig.d.ts +0 -100
  922. package/bin/types/config/LlmConfig.d.ts.map +0 -1
  923. package/bin/types/config/LlmConfig.js +0 -10
  924. package/bin/types/config/LlmConfig.js.map +0 -1
  925. package/bin/types/executor/SessionRunContext.d.ts +0 -155
  926. package/bin/types/executor/SessionRunContext.d.ts.map +0 -1
  927. package/bin/types/executor/SessionRunContext.js +0 -10
  928. package/bin/types/executor/SessionRunContext.js.map +0 -1
  929. package/bin/types/platform/Store.d.ts +0 -191
  930. package/bin/types/platform/Store.d.ts.map +0 -1
  931. package/bin/types/platform/Store.js +0 -9
  932. package/bin/types/platform/Store.js.map +0 -1
  933. package/bin/types/plugin/PluginConfig.d.ts +0 -12
  934. package/bin/types/plugin/PluginConfig.d.ts.map +0 -1
  935. package/bin/types/plugin/PluginConfig.js +0 -5
  936. package/bin/types/plugin/PluginConfig.js.map +0 -1
  937. package/bin/types/plugin/PluginControl.d.ts +0 -74
  938. package/bin/types/plugin/PluginControl.d.ts.map +0 -1
  939. package/bin/types/plugin/PluginControl.js +0 -9
  940. package/bin/types/plugin/PluginControl.js.map +0 -1
  941. package/bin/types/plugin/PluginRunContext.d.ts +0 -26
  942. package/bin/types/plugin/PluginRunContext.d.ts.map +0 -1
  943. package/bin/types/plugin/PluginRunContext.js.map +0 -1
  944. package/bin/types/plugin/PluginSetup.d.ts +0 -133
  945. package/bin/types/plugin/PluginSetup.d.ts.map +0 -1
  946. package/bin/types/plugin/PluginSetup.js +0 -9
  947. package/bin/types/plugin/PluginSetup.js.map +0 -1
  948. package/bin/types/plugin/PluginToolRuntime.d.ts +0 -86
  949. package/bin/types/plugin/PluginToolRuntime.d.ts.map +0 -1
  950. package/bin/types/plugin/PluginToolRuntime.js +0 -9
  951. package/bin/types/plugin/PluginToolRuntime.js.map +0 -1
  952. package/bin/types/runtime/auth/AuthPermission.d.ts +0 -49
  953. package/bin/types/runtime/auth/AuthPermission.d.ts.map +0 -1
  954. package/bin/types/runtime/auth/AuthPermission.js +0 -87
  955. package/bin/types/runtime/auth/AuthPermission.js.map +0 -1
  956. package/bin/types/runtime/auth/AuthRoute.d.ts +0 -29
  957. package/bin/types/runtime/auth/AuthRoute.d.ts.map +0 -1
  958. package/bin/types/runtime/auth/AuthRoute.js +0 -8
  959. package/bin/types/runtime/auth/AuthRoute.js.map +0 -1
  960. package/bin/types/runtime/auth/AuthToken.d.ts +0 -46
  961. package/bin/types/runtime/auth/AuthToken.d.ts.map +0 -1
  962. package/bin/types/runtime/auth/AuthToken.js +0 -9
  963. package/bin/types/runtime/auth/AuthToken.js.map +0 -1
  964. package/bin/types/runtime/auth/AuthTypes.d.ts +0 -227
  965. package/bin/types/runtime/auth/AuthTypes.d.ts.map +0 -1
  966. package/bin/types/runtime/auth/AuthTypes.js +0 -9
  967. package/bin/types/runtime/auth/AuthTypes.js.map +0 -1
  968. package/bin/types/runtime/http/InlineInstant.d.ts +0 -82
  969. package/bin/types/runtime/http/InlineInstant.d.ts.map +0 -1
  970. package/bin/types/runtime/http/InlineInstant.js +0 -10
  971. package/bin/types/runtime/http/InlineInstant.js.map +0 -1
  972. package/bin/types/runtime/platform/Platform.d.ts +0 -362
  973. package/bin/types/runtime/platform/Platform.d.ts.map +0 -1
  974. package/bin/types/runtime/platform/Platform.js +0 -10
  975. package/bin/types/runtime/platform/Platform.js.map +0 -1
  976. package/bin/types/runtime/platform/PlatformGateway.d.ts +0 -41
  977. package/bin/types/runtime/platform/PlatformGateway.d.ts.map +0 -1
  978. package/bin/types/runtime/platform/PlatformGateway.js +0 -2
  979. package/bin/types/runtime/platform/PlatformGateway.js.map +0 -1
  980. package/bin/types/session/SessionApproval.d.ts +0 -63
  981. package/bin/types/session/SessionApproval.d.ts.map +0 -1
  982. package/bin/types/session/SessionApproval.js +0 -7
  983. package/bin/types/session/SessionApproval.js.map +0 -1
  984. package/bin/types/session/SessionApprovalBroker.d.ts +0 -17
  985. package/bin/types/session/SessionApprovalBroker.d.ts.map +0 -1
  986. package/bin/types/session/SessionApprovalBroker.js +0 -7
  987. package/bin/types/session/SessionApprovalBroker.js.map +0 -1
  988. package/bin/types/session/SessionInstruction.d.ts +0 -22
  989. package/bin/types/session/SessionInstruction.d.ts.map +0 -1
  990. package/bin/types/session/SessionInstruction.js +0 -9
  991. package/bin/types/session/SessionInstruction.js.map +0 -1
  992. package/bin/types/session/SessionQueue.d.ts +0 -88
  993. package/bin/types/session/SessionQueue.d.ts.map +0 -1
  994. package/bin/types/session/SessionQueue.js +0 -7
  995. package/bin/types/session/SessionQueue.js.map +0 -1
  996. package/bin/types/session/SessionTurn.d.ts +0 -52
  997. package/bin/types/session/SessionTurn.d.ts.map +0 -1
  998. package/bin/types/session/SessionTurn.js.map +0 -1
  999. package/scripts/assistant-file-resource.test.mjs +0 -344
  1000. package/scripts/read-image-tool-bridge.test.mjs +0 -71
  1001. package/src/agent/AgentContext.ts +0 -98
  1002. package/src/config/AgentEnv.ts +0 -49
  1003. package/src/config/AgentInitializer.ts +0 -167
  1004. package/src/config/EnvFile.ts +0 -99
  1005. package/src/config/ExecutionBinding.ts +0 -50
  1006. package/src/config/Gitignore.ts +0 -52
  1007. package/src/config/Paths.ts +0 -241
  1008. package/src/config/PlatformPaths.ts +0 -57
  1009. package/src/config/ProjectSetup.ts +0 -44
  1010. package/src/executor/messages/AssistantFileResource.ts +0 -446
  1011. package/src/executor/tools/file/ReadImageToolBridge.ts +0 -79
  1012. package/src/executor/tools/plugin/PluginToolBridge.ts +0 -212
  1013. package/src/executor/types/SessionExecutor.ts +0 -34
  1014. package/src/plugin/core/PluginCommand.ts +0 -230
  1015. package/src/plugin/core/PluginCommandRequest.ts +0 -93
  1016. package/src/plugin/core/PluginLocalExecution.ts +0 -154
  1017. package/src/session/SessionTurn.ts +0 -669
  1018. package/src/session/approval/SessionApprovalBroker.ts +0 -164
  1019. package/src/session/storage/Instruction.ts +0 -72
  1020. package/src/session/storage/Paths.ts +0 -209
  1021. package/src/types/common/EnvFile.ts +0 -31
  1022. package/src/types/config/AgentProject.ts +0 -85
  1023. package/src/types/config/DowncityConfig.ts +0 -153
  1024. package/src/types/config/ExecutionBinding.ts +0 -27
  1025. package/src/types/config/LlmConfig.ts +0 -115
  1026. package/src/types/executor/SessionRunContext.ts +0 -191
  1027. package/src/types/platform/Store.ts +0 -197
  1028. package/src/types/plugin/PluginConfig.ts +0 -13
  1029. package/src/types/plugin/PluginControl.ts +0 -80
  1030. package/src/types/plugin/PluginRunContext.ts +0 -31
  1031. package/src/types/plugin/PluginSetup.ts +0 -138
  1032. package/src/types/plugin/PluginToolRuntime.ts +0 -98
  1033. package/src/types/runtime/auth/AuthPermission.ts +0 -120
  1034. package/src/types/runtime/auth/AuthRoute.ts +0 -31
  1035. package/src/types/runtime/auth/AuthToken.ts +0 -47
  1036. package/src/types/runtime/auth/AuthTypes.ts +0 -235
  1037. package/src/types/runtime/http/InlineInstant.ts +0 -96
  1038. package/src/types/runtime/platform/Platform.ts +0 -432
  1039. package/src/types/runtime/platform/PlatformGateway.ts +0 -46
  1040. package/src/types/session/SessionApproval.ts +0 -69
  1041. package/src/types/session/SessionApprovalBroker.ts +0 -18
  1042. package/src/types/session/SessionInstruction.ts +0 -24
  1043. package/src/types/session/SessionQueue.ts +0 -102
  1044. package/src/types/session/SessionTurn.ts +0 -56
  1045. /package/bin/{executor/tools/plugin/types → types/plugin}/PluginTool.js +0 -0
@@ -8,9 +8,11 @@ import fs from "node:fs/promises";
8
8
  import os from "node:os";
9
9
  import path from "node:path";
10
10
 
11
- import { JsonlSessionMessageStore } from "../bin/session/messages/JsonlSessionMessageStore.js";
11
+ import { JsonlSessionMessageStore } from "../bin/workspace/store/JsonlSessionMessageStore.js";
12
+ import { LocalFileSystem } from "../bin/workspace/LocalFileSystem.js";
12
13
  import { SessionMessages } from "../bin/session/SessionMessages.js";
13
- import { SessionApprovalBroker } from "../bin/session/approval/SessionApprovalBroker.js";
14
+ import { SessionInteractions } from "../bin/session/control/SessionInteractions.js";
15
+ import { SessionShellApprovalAdapter } from "../bin/session/execution/tools/SessionShellApprovalAdapter.js";
14
16
  import { compose_session_compaction } from "../bin/session/messages/SessionMessageCompaction.js";
15
17
  import {
16
18
  from_ui_assistant_parts,
@@ -75,14 +77,15 @@ async function create_recorder(
75
77
  const file_path = path.join(root_path, "active.jsonl");
76
78
  const assistant_message_file_path = path.join(root_path, "assistant_message.json");
77
79
  const events = [];
78
- const store = create_store({ session_id, file_path });
80
+ const files = new LocalFileSystem(root_path);
81
+ const store = create_store({ files, session_id, file_path });
79
82
  const recorder = new SessionMessages({
80
83
  session_id,
81
84
  store,
82
85
  publish: (mutation) => events.push(mutation),
83
86
  });
84
87
  await recorder.initialize();
85
- return { recorder, store, events, file_path, assistant_message_file_path };
88
+ return { recorder, store, events, files, file_path, assistant_message_file_path };
86
89
  }
87
90
 
88
91
  async function read_jsonl(file_path) {
@@ -100,7 +103,11 @@ async function create_seeded_recorder(session_id, messages) {
100
103
  );
101
104
  const recorder = new SessionMessages({
102
105
  session_id,
103
- store: new JsonlSessionMessageStore({ session_id, file_path }),
106
+ store: new JsonlSessionMessageStore({
107
+ files: new LocalFileSystem(root_path),
108
+ session_id,
109
+ file_path,
110
+ }),
104
111
  publish: () => {},
105
112
  });
106
113
  await recorder.initialize();
@@ -149,7 +156,7 @@ test("delta 只更新 Assistant 草稿,完成后才写入 active.jsonl", async
149
156
  input_type: "prompt",
150
157
  parts: [{ part_id: "user-text-1", type: "text", text: "你好", state: "done" }],
151
158
  });
152
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
159
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
153
160
  await writer.apply_chunk({ type: "text-start", id: "text-1" });
154
161
  await writer.apply_chunk({ type: "text-delta", id: "text-1", delta: "你" });
155
162
  await writer.apply_chunk({ type: "text-delta", id: "text-1", delta: "好" });
@@ -183,11 +190,15 @@ test("delta 只更新 Assistant 草稿,完成后才写入 active.jsonl", async
183
190
 
184
191
  test("Tool Runtime 在文本中间保持输入、审批和输出的确定顺序", async () => {
185
192
  const { recorder, events, file_path } = await create_recorder("tool-order-test");
186
- const approval_broker = new SessionApprovalBroker({
193
+ const interactions = new SessionInteractions({
187
194
  session_id: "tool-order-test",
188
195
  messages: recorder,
189
196
  });
190
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
197
+ const approval_adapter = new SessionShellApprovalAdapter({
198
+ session_id: "tool-order-test",
199
+ interactions,
200
+ });
201
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
191
202
  await writer.apply_chunk({ type: "text-start", id: "text-1" });
192
203
  await writer.apply_chunk({ type: "text-delta", id: "text-1", delta: "before" });
193
204
  await writer.apply_chunk({ type: "text-end", id: "text-1" });
@@ -199,7 +210,7 @@ test("Tool Runtime 在文本中间保持输入、审批和输出的确定顺序"
199
210
  input: { cmd: "pwd", sandbox: "unrestricted", reason: "Inspect directory" },
200
211
  });
201
212
  assert.equal(recorder.get_message(writer.message_id).parts[1].state, "ready");
202
- const approval_handle = await approval_broker.request({
213
+ const approval_handle = await approval_adapter.request({
203
214
  shell_id: "shell-1",
204
215
  tool_call_id: "call-1",
205
216
  tool_name: "shell_exec",
@@ -211,10 +222,10 @@ test("Tool Runtime 在文本中间保持输入、审批和输出的确定顺序"
211
222
  operation: "exec",
212
223
  timeout_ms: 60_000,
213
224
  });
214
- assert.equal(recorder.get_message(writer.message_id).parts[1].state, "approval-required");
215
- await approval_broker.resolve({
216
- approval_id: approval_handle.approval_id,
217
- decision: "approved",
225
+ assert.equal(recorder.get_message(writer.message_id).parts[1].state, "waiting-user");
226
+ await interactions.respond({
227
+ interaction_id: approval_handle.approval_id,
228
+ response: { kind: "approval", decision: "approved" },
218
229
  });
219
230
  assert.equal(await approval_handle.decision, "approved");
220
231
  await writer.apply_chunk({ type: "text-start", id: "text-2" });
@@ -224,8 +235,8 @@ test("Tool Runtime 在文本中间保持输入、审批和输出的确定顺序"
224
235
  await writer.complete();
225
236
 
226
237
  const assistant = (await read_jsonl(file_path))[0];
227
- assert.deepEqual(assistant.parts.map((part) => part.type), ["text", "tool", "text"]);
228
- assert.deepEqual(assistant.parts.map((part) => part.sequence), [1, 2, 3]);
238
+ assert.deepEqual(assistant.parts.map((part) => part.type), ["text", "tool", "interaction", "text"]);
239
+ assert.deepEqual(assistant.parts.map((part) => part.sequence), [1, 2, 3, 4]);
229
240
  assert.equal(assistant.parts[1].state, "completed");
230
241
  assert.deepEqual(assistant.parts[1].output, { count: 1 });
231
242
  assert.deepEqual(
@@ -235,7 +246,7 @@ test("Tool Runtime 在文本中间保持输入、审批和输出的确定顺序"
235
246
  [
236
247
  [2, "input-streaming"],
237
248
  [2, "ready"],
238
- [2, "approval-required"],
249
+ [2, "waiting-user"],
239
250
  [2, "running"],
240
251
  [2, "completed"],
241
252
  ],
@@ -246,7 +257,6 @@ test("Streaming Tool Provider metadata 在输入和输出状态间完整保留",
246
257
  const { recorder, file_path } = await create_recorder("tool-provider-metadata-test");
247
258
  const writer = await recorder.open_assistant_message({
248
259
  turn_id: "turn-provider-metadata",
249
- segment_index: 1,
250
260
  });
251
261
  await writer.begin_step();
252
262
  await writer.apply_chunk({
@@ -305,7 +315,6 @@ test("AI SDK 流式 metadata、source、data、step 和审批状态完整持久
305
315
  const { recorder, file_path } = await create_recorder("ui-chunk-semantics-test");
306
316
  const writer = await recorder.open_assistant_message({
307
317
  turn_id: "turn-ui-chunks",
308
- segment_index: 1,
309
318
  });
310
319
  await writer.apply_chunk({
311
320
  type: "text-start",
@@ -411,10 +420,7 @@ test("AI SDK 流式 metadata、source、data、step 和审批状态完整持久
411
420
  assert.equal(tool_part.title, "Lookup");
412
421
  assert.equal(tool_part.dynamic, true);
413
422
  assert.deepEqual(tool_part.tool_metadata, { category: "search" });
414
- assert.deepEqual(tool_part.approval, {
415
- approval_id: "approval_stream_1",
416
- approved: false,
417
- });
423
+ assert.equal("approval" in tool_part, false);
418
424
  assert.equal(
419
425
  assistant.parts.some((part) => part.type === "data" && part.data_id === "transient_1"),
420
426
  false,
@@ -452,7 +458,6 @@ test("UI Tool Provider metadata 经 Session roundtrip 后恢复为 ModelMessage
452
458
  updated_at: 1,
453
459
  type: "assistant",
454
460
  kind: "normal",
455
- segment_index: 1,
456
461
  status: "completed",
457
462
  parts,
458
463
  });
@@ -503,7 +508,6 @@ test("UI Tool Provider metadata 经 Session roundtrip 后恢复为 ModelMessage
503
508
  updated_at: 2,
504
509
  type: "assistant",
505
510
  kind: "normal",
506
- segment_index: 2,
507
511
  status: "completed",
508
512
  parts: from_ui_assistant_parts([{
509
513
  type: "dynamic-tool",
@@ -528,7 +532,7 @@ test("UI Tool Provider metadata 经 Session roundtrip 后恢复为 ModelMessage
528
532
  });
529
533
  });
530
534
 
531
- test("SessionMessage 无损恢复 AI SDK UIMessage 的完整 Part 语义", () => {
535
+ test("SessionMessage 保留稳定语义并归一化 AI SDK 原生审批字段", () => {
532
536
  const user_parts = [
533
537
  {
534
538
  type: "text",
@@ -684,24 +688,32 @@ test("SessionMessage 无损恢复 AI SDK UIMessage 的完整 Part 语义", () =>
684
688
  updated_at: 2,
685
689
  type: "assistant",
686
690
  kind: "normal",
687
- segment_index: 1,
688
691
  status: "streaming",
689
692
  parts: canonical_parts,
690
693
  });
691
- assert.deepEqual(restored_assistant.parts, assistant_parts);
694
+ assert.deepEqual(restored_assistant.parts.slice(0, 9), assistant_parts.slice(0, 9));
695
+ const restored_tools = restored_assistant.parts.slice(9);
696
+ assert.deepEqual(
697
+ restored_tools.map((part) => part.state),
698
+ ["input-available", "input-available", "output-available", "output-error", "output-error"],
699
+ );
700
+ assert.equal(restored_tools.every((part) => !("approval" in part)), true);
692
701
  assert.equal(canonical_parts.find((part) => part.tool_call_id === "call_ready").dynamic, false);
693
702
  assert.equal(canonical_parts.find((part) => part.tool_call_id === "call_completed").dynamic, true);
694
703
  });
695
704
 
696
- test("Approval Broker 只接受已经准备完整输入的 Tool", async () => {
705
+ test("Session Interaction 只接受已经准备完整输入的 Tool", async () => {
697
706
  const { recorder, events } = await create_recorder("tool-ready-barrier-test");
698
- const approval_broker = new SessionApprovalBroker({
707
+ const interactions = new SessionInteractions({
699
708
  session_id: "tool-ready-barrier-test",
700
709
  messages: recorder,
701
710
  });
711
+ const approval_adapter = new SessionShellApprovalAdapter({
712
+ session_id: "tool-ready-barrier-test",
713
+ interactions,
714
+ });
702
715
  const writer = await recorder.open_assistant_message({
703
716
  turn_id: "turn-ready-barrier",
704
- segment_index: 1,
705
717
  });
706
718
  const approval_input = {
707
719
  shell_id: "shell-ready-barrier",
@@ -716,10 +728,10 @@ test("Approval Broker 只接受已经准备完整输入的 Tool", async () => {
716
728
  timeout_ms: 60_000,
717
729
  };
718
730
  await assert.rejects(
719
- approval_broker.request(approval_input),
731
+ approval_adapter.request(approval_input),
720
732
  /Streaming Tool Part not found/,
721
733
  );
722
- assert.equal(approval_broker.list().length, 0);
734
+ assert.equal(interactions.list().length, 0);
723
735
 
724
736
  const tool_input_ready = writer.prepare_tool_input({
725
737
  tool_call_id: "call-ready-barrier",
@@ -738,16 +750,17 @@ test("Approval Broker 只接受已经准备完整输入的 Tool", async () => {
738
750
  toolName: "shell_exec",
739
751
  });
740
752
  await tool_input_ready;
741
- const approval_handle = await approval_broker.request(approval_input);
753
+ const approval_handle = await approval_adapter.request(approval_input);
742
754
 
743
755
  const tool = recorder.get_message(writer.message_id).parts[0];
744
- assert.equal(tool.state, "approval-required");
745
- assert.equal(tool.approval.approval_id, approval_handle.approval_id);
746
- assert.equal(tool.approval.request.command, approval_input.command);
756
+ const interaction = recorder.get_message(writer.message_id).parts[1];
757
+ assert.equal(tool.state, "waiting-user");
758
+ assert.equal(interaction.interaction_id, approval_handle.approval_id);
759
+ assert.equal(interaction.request.command, approval_input.command);
747
760
  assert.equal(tool.input.cmd, "ls -la /Users/example/Desktop");
748
- await approval_broker.resolve({
749
- approval_id: approval_handle.approval_id,
750
- decision: "denied",
761
+ await interactions.respond({
762
+ interaction_id: approval_handle.approval_id,
763
+ response: { kind: "approval", decision: "denied" },
751
764
  });
752
765
  assert.equal(await approval_handle.decision, "denied");
753
766
  await writer.apply_chunk({
@@ -760,20 +773,154 @@ test("Approval Broker 只接受已经准备完整输入的 Tool", async () => {
760
773
  events
761
774
  .filter((event) => event.variant === "part" && event.type === "tool")
762
775
  .map((event) => event.part.state),
763
- ["input-streaming", "ready", "approval-required", "failed"],
776
+ ["input-streaming", "ready", "waiting-user", "failed"],
764
777
  );
765
778
  });
766
779
 
767
- test("流式更新与 Approval 共享 Assistant revision 写队列", async () => {
780
+ test("Question Interaction 校验文本、单选与多选回答后恢复执行", async () => {
781
+ const { recorder } = await create_recorder("question-interaction-test");
782
+ const interactions = new SessionInteractions({
783
+ session_id: "question-interaction-test",
784
+ messages: recorder,
785
+ });
786
+ const writer = await recorder.open_assistant_message({
787
+ turn_id: "turn-question",
788
+ });
789
+ const handle = await interactions.request({
790
+ interaction_id: "interaction-question",
791
+ turn_id: "turn-question",
792
+ kind: "question",
793
+ source: { type: "execution" },
794
+ title: "补充信息",
795
+ questions: [
796
+ { question_id: "name", prompt: "项目名称?", response_type: "text" },
797
+ {
798
+ question_id: "region",
799
+ prompt: "部署区域?",
800
+ response_type: "single_select",
801
+ options: [{ value: "cn", label: "中国" }],
802
+ },
803
+ {
804
+ question_id: "features",
805
+ prompt: "启用能力?",
806
+ response_type: "multi_select",
807
+ options: [{ value: "search", label: "搜索" }],
808
+ },
809
+ ],
810
+ created_at: Date.now(),
811
+ });
812
+
813
+ await assert.rejects(
814
+ interactions.respond({
815
+ interaction_id: handle.interaction_id,
816
+ response: {
817
+ kind: "question",
818
+ answers: [{ question_id: "name", value: "Downcity" }],
819
+ },
820
+ }),
821
+ /answer count mismatch/,
822
+ );
823
+ const result = await interactions.respond({
824
+ interaction_id: handle.interaction_id,
825
+ response: {
826
+ kind: "question",
827
+ answers: [
828
+ { question_id: "name", value: "Downcity" },
829
+ { question_id: "region", value: "cn" },
830
+ { question_id: "features", value: ["search"] },
831
+ ],
832
+ },
833
+ });
834
+
835
+ assert.deepEqual(await handle.result, result);
836
+ const interaction = recorder.get_message(writer.message_id).parts[0];
837
+ assert.equal(interaction.type, "interaction");
838
+ assert.equal(interaction.status, "resolved");
839
+ assert.deepEqual(interaction.response, result.response);
840
+ });
841
+
842
+ test("取消 Interaction 先原子关闭 Tool 与 Interaction,再兑现等待结果", async () => {
843
+ const { recorder } = await create_recorder("cancel-interaction-test");
844
+ const interactions = new SessionInteractions({
845
+ session_id: "cancel-interaction-test",
846
+ messages: recorder,
847
+ });
848
+ const writer = await recorder.open_assistant_message({
849
+ turn_id: "turn-cancel",
850
+ });
851
+ await writer.apply_chunk({
852
+ type: "tool-input-start",
853
+ toolCallId: "call-cancel",
854
+ toolName: "ask_user",
855
+ });
856
+ await writer.prepare_tool_input({
857
+ tool_call_id: "call-cancel",
858
+ tool_name: "ask_user",
859
+ input: { prompt: "继续吗?" },
860
+ });
861
+ const handle = await interactions.request({
862
+ interaction_id: "interaction-cancel",
863
+ turn_id: "turn-cancel",
864
+ kind: "question",
865
+ source: {
866
+ type: "tool",
867
+ tool_call_id: "call-cancel",
868
+ tool_name: "ask_user",
869
+ },
870
+ title: "确认",
871
+ questions: [{ question_id: "continue", prompt: "继续吗?", response_type: "text" }],
872
+ created_at: Date.now(),
873
+ });
874
+
875
+ await interactions.cancel_all("turn_stopped");
876
+ assert.deepEqual(await handle.result, {
877
+ status: "cancelled",
878
+ interaction_id: "interaction-cancel",
879
+ reason: "turn_stopped",
880
+ });
881
+ const parts = recorder.get_message(writer.message_id).parts;
882
+ assert.equal(parts.find((part) => part.type === "tool").state, "failed");
883
+ assert.equal(parts.find((part) => part.type === "interaction").status, "cancelled");
884
+ });
885
+
886
+ test("Interaction 超时后持久化 expired 终态", async () => {
887
+ const { recorder } = await create_recorder("expire-interaction-test");
888
+ const interactions = new SessionInteractions({
889
+ session_id: "expire-interaction-test",
890
+ messages: recorder,
891
+ });
892
+ const writer = await recorder.open_assistant_message({
893
+ turn_id: "turn-expire",
894
+ });
895
+ const handle = await interactions.request({
896
+ interaction_id: "interaction-expire",
897
+ turn_id: "turn-expire",
898
+ kind: "question",
899
+ source: { type: "execution" },
900
+ title: "即将超时",
901
+ questions: [{ question_id: "value", prompt: "请输入", response_type: "text" }],
902
+ created_at: Date.now(),
903
+ expires_at: Date.now() + 10,
904
+ });
905
+
906
+ await new Promise((resolve) => setTimeout(resolve, 20));
907
+ assert.deepEqual(await handle.result, {
908
+ status: "expired",
909
+ interaction_id: "interaction-expire",
910
+ });
911
+ assert.equal(recorder.get_message(writer.message_id).parts[0].status, "expired");
912
+ });
913
+
914
+ test("流式更新与 Interaction 共享 Assistant revision 写队列", async () => {
768
915
  const session_id = "approval-revision-queue-test";
769
916
  const { recorder, store, events } = await create_recorder(
770
917
  session_id,
771
918
  (options) => new PausingAssistantMessageStore(options),
772
919
  );
773
- const approval_broker = new SessionApprovalBroker({ session_id, messages: recorder });
920
+ const interactions = new SessionInteractions({ session_id, messages: recorder });
921
+ const approval_adapter = new SessionShellApprovalAdapter({ session_id, interactions });
774
922
  const writer = await recorder.open_assistant_message({
775
923
  turn_id: "turn-approval-race",
776
- segment_index: 1,
777
924
  });
778
925
  await writer.apply_chunk({
779
926
  type: "tool-input-start",
@@ -799,7 +946,7 @@ test("流式更新与 Approval 共享 Assistant revision 写队列", async () =>
799
946
  delta: "命令",
800
947
  });
801
948
  await gate.started;
802
- const approval_write = approval_broker.request({
949
+ const approval_write = approval_adapter.request({
803
950
  shell_id: "shell-approval-race",
804
951
  tool_call_id: "call-approval-race",
805
952
  tool_name: "shell_exec",
@@ -821,36 +968,37 @@ test("流式更新与 Approval 共享 Assistant revision 写队列", async () =>
821
968
  const tool = assistant.parts.find((part) => part.type === "tool");
822
969
  const text_part = assistant.parts.find((part) => part.type === "text");
823
970
  assert.equal(assistant.revision, 7);
824
- assert.equal(tool.state, "approval-required");
825
- assert.equal(tool.approval.approval_id, approval_handle.approval_id);
971
+ const interaction = assistant.parts.find((part) => part.type === "interaction");
972
+ assert.equal(tool.state, "waiting-user");
973
+ assert.equal(interaction.interaction_id, approval_handle.approval_id);
826
974
  assert.equal(tool.input.cmd, "ls -la ~");
827
975
  assert.equal(text_part.text, "准备执行命令");
828
976
  assert.deepEqual(
829
977
  events
830
978
  .filter((event) => event.message_id === writer.message_id)
831
979
  .map((event) => event.revision),
832
- [1, 2, 3, 4, 5, 6, 7],
980
+ [1, 2, 3, 4, 5, 6, 7, 7],
833
981
  );
834
982
  assert.equal(
835
983
  events.some(
836
984
  (event) =>
837
985
  event.variant === "part" &&
838
- event.type === "tool" &&
839
- event.part.state === "approval-required",
986
+ event.type === "interaction" &&
987
+ event.part.status === "pending",
840
988
  ),
841
989
  true,
842
990
  );
843
991
 
844
- await approval_broker.resolve({
845
- approval_id: approval_handle.approval_id,
846
- decision: "denied",
992
+ await interactions.respond({
993
+ interaction_id: approval_handle.approval_id,
994
+ response: { kind: "approval", decision: "denied" },
847
995
  });
848
996
  assert.equal(await approval_handle.decision, "denied");
849
997
  });
850
998
 
851
999
  test("不同模型 step 重复使用 Text chunk ID 时仍保持真实 Part 顺序", async () => {
852
1000
  const { recorder, file_path } = await create_recorder("reused-text-id-order-test");
853
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
1001
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
854
1002
 
855
1003
  await writer.begin_step();
856
1004
  await writer.apply_chunk({ type: "text-start", id: "txt-0" });
@@ -929,7 +1077,7 @@ test("不同模型 step 重复使用 Text chunk ID 时仍保持真实 Part 顺
929
1077
 
930
1078
  test("不同模型 step 重复 Source 与 Data ID 时创建独立 canonical Parts", async () => {
931
1079
  const { recorder, file_path } = await create_recorder("reused-structured-id-order-test");
932
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
1080
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
933
1081
 
934
1082
  for (const step of [1, 2]) {
935
1083
  await writer.begin_step();
@@ -974,9 +1122,66 @@ test("不同模型 step 重复 Source 与 Data ID 时创建独立 canonical Part
974
1122
  assert.notEqual(assistant.parts[1].part_id, assistant.parts[3].part_id);
975
1123
  });
976
1124
 
1125
+ test("step 最终快照忽略没有 delta 的空 Text 与 Reasoning Part", async () => {
1126
+ const { recorder, file_path } = await create_recorder("empty-final-text-part-test");
1127
+ const writer = await recorder.open_assistant_message({
1128
+ turn_id: "turn-empty-final-text",
1129
+ });
1130
+
1131
+ await writer.begin_step();
1132
+ await writer.apply_chunk({ type: "text-start", id: "text-empty" });
1133
+ await writer.apply_chunk({ type: "text-delta", id: "text-empty", delta: "" });
1134
+ await writer.apply_chunk({ type: "text-end", id: "text-empty" });
1135
+ await writer.apply_chunk({
1136
+ type: "tool-input-start",
1137
+ toolCallId: "call-1",
1138
+ toolName: "find",
1139
+ });
1140
+ await writer.apply_chunk({
1141
+ type: "tool-input-available",
1142
+ toolCallId: "call-1",
1143
+ toolName: "find",
1144
+ input: { glob: "**/*.mdx" },
1145
+ });
1146
+ await writer.apply_chunk({
1147
+ type: "tool-output-available",
1148
+ toolCallId: "call-1",
1149
+ output: ["document.mdx"],
1150
+ });
1151
+ await writer.apply_chunk({ type: "reasoning-start", id: "reasoning-empty" });
1152
+ await writer.apply_chunk({ type: "reasoning-end", id: "reasoning-empty" });
1153
+ const final_parts = from_ui_assistant_parts([
1154
+ {
1155
+ type: "text",
1156
+ text: "",
1157
+ state: "done",
1158
+ },
1159
+ {
1160
+ type: "tool-find",
1161
+ toolCallId: "call-1",
1162
+ state: "output-available",
1163
+ input: { glob: "**/*.mdx" },
1164
+ output: ["document.mdx"],
1165
+ },
1166
+ {
1167
+ type: "reasoning",
1168
+ text: "",
1169
+ state: "done",
1170
+ },
1171
+ ]);
1172
+ assert.deepEqual(final_parts.map((part) => part.type), ["tool"]);
1173
+ await writer.finish_step(final_parts);
1174
+ await writer.complete();
1175
+
1176
+ const assistant = (await read_jsonl(file_path))[0];
1177
+ assert.equal(assistant.status, "completed");
1178
+ assert.deepEqual(assistant.parts.map((part) => part.type), ["tool"]);
1179
+ assert.equal(assistant.parts[0].tool_call_id, "call-1");
1180
+ });
1181
+
977
1182
  test("空 Text Start 不会抢占后续 Tool 的真实顺序", async () => {
978
1183
  const { recorder, events, file_path } = await create_recorder("deferred-text-order-test");
979
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
1184
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
980
1185
 
981
1186
  await writer.begin_step();
982
1187
  await writer.apply_chunk({ type: "reasoning-start", id: "reasoning-0" });
@@ -1052,7 +1257,6 @@ test("Tool 执行先到时等待 stream 固定 canonical Part 顺序", async ()
1052
1257
  const { recorder, file_path } = await create_recorder("pending-tool-input-order-test");
1053
1258
  const writer = await recorder.open_assistant_message({
1054
1259
  turn_id: "turn-pending-tool-input",
1055
- segment_index: 1,
1056
1260
  });
1057
1261
 
1058
1262
  await writer.begin_step();
@@ -1125,7 +1329,6 @@ test("step abort 与 writer close 会拒绝未释放的 Tool 输入屏障", asyn
1125
1329
  const { recorder } = await create_recorder("pending-tool-input-cleanup-test");
1126
1330
  const aborted_writer = await recorder.open_assistant_message({
1127
1331
  turn_id: "turn-aborted-tool-input",
1128
- segment_index: 1,
1129
1332
  });
1130
1333
  await aborted_writer.begin_step();
1131
1334
  const aborted_input = assert.rejects(
@@ -1143,7 +1346,6 @@ test("step abort 与 writer close 会拒绝未释放的 Tool 输入屏障", asyn
1143
1346
 
1144
1347
  const closed_writer = await recorder.open_assistant_message({
1145
1348
  turn_id: "turn-closed-tool-input",
1146
- segment_index: 2,
1147
1349
  });
1148
1350
  const closed_input = assert.rejects(
1149
1351
  closed_writer.prepare_tool_input({
@@ -1165,7 +1367,6 @@ test("Tool Part 持久化失败时不会释放对应执行等待", async () => {
1165
1367
  );
1166
1368
  const writer = await recorder.open_assistant_message({
1167
1369
  turn_id: "turn-tool-part-persistence",
1168
- segment_index: 1,
1169
1370
  });
1170
1371
  await writer.begin_step();
1171
1372
  const tool_input = assert.rejects(
@@ -1195,7 +1396,7 @@ test("Tool Part 持久化失败时不会释放对应执行等待", async () => {
1195
1396
 
1196
1397
  test("step 最终快照缺少 canonical Tool chunk 时拒绝猜测顺序", async () => {
1197
1398
  const { recorder, events, file_path } = await create_recorder("final-reconcile-order-test");
1198
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
1399
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
1199
1400
 
1200
1401
  await writer.begin_step();
1201
1402
  await writer.apply_chunk({ type: "text-start", id: "text-0" });
@@ -1237,22 +1438,52 @@ test("step 最终快照缺少 canonical Tool chunk 时拒绝猜测顺序", async
1237
1438
  assert.equal(assistant.parts[0].part_id, streamed_text_part_id);
1238
1439
  });
1239
1440
 
1240
- test("重启时将 Assistant 草稿收口为 stopped,并将运行中 Action 标记失败", async () => {
1241
- const { recorder, file_path, assistant_message_file_path } = await create_recorder("recovery-test");
1441
+ test("重启时收口 Assistant、取消 Interaction 并标记运行中 Action 失败", async () => {
1442
+ const { recorder, files, file_path, assistant_message_file_path } = await create_recorder("recovery-test");
1242
1443
  await recorder.append_user_message({
1243
1444
  turn_id: "turn-1",
1244
1445
  input_type: "prompt",
1245
1446
  parts: [{ part_id: "u1", type: "text", text: "one", state: "done" }],
1246
1447
  });
1247
- const writer = await recorder.open_assistant_message({ turn_id: "turn-1", segment_index: 1 });
1448
+ const writer = await recorder.open_assistant_message({ turn_id: "turn-1" });
1248
1449
  await writer.apply_chunk({ type: "text-start", id: "text-1" });
1249
1450
  await writer.apply_chunk({ type: "text-delta", id: "text-1", delta: "partial" });
1451
+ await writer.apply_chunk({
1452
+ type: "tool-input-start",
1453
+ toolCallId: "call-recovery",
1454
+ toolName: "shell_exec",
1455
+ });
1456
+ await writer.prepare_tool_input({
1457
+ tool_call_id: "call-recovery",
1458
+ tool_name: "shell_exec",
1459
+ input: { cmd: "pwd" },
1460
+ });
1461
+ const interactions = new SessionInteractions({
1462
+ session_id: "recovery-test",
1463
+ messages: recorder,
1464
+ });
1465
+ await interactions.request({
1466
+ interaction_id: "interaction-recovery",
1467
+ turn_id: "turn-1",
1468
+ kind: "approval",
1469
+ source: {
1470
+ type: "tool",
1471
+ tool_call_id: "call-recovery",
1472
+ tool_name: "shell_exec",
1473
+ },
1474
+ title: "Approve shell_exec",
1475
+ command: "pwd",
1476
+ cwd: "/workspace",
1477
+ reason: "test recovery",
1478
+ operation: "exec",
1479
+ created_at: Date.now(),
1480
+ });
1250
1481
  await recorder.open_action_message({ message_id: "running-action", action_type: "fork", title: "Forking" });
1251
1482
 
1252
1483
  const recovered_events = [];
1253
1484
  const recovered = new SessionMessages({
1254
1485
  session_id: "recovery-test",
1255
- store: new JsonlSessionMessageStore({ session_id: "recovery-test", file_path }),
1486
+ store: new JsonlSessionMessageStore({ files, session_id: "recovery-test", file_path }),
1256
1487
  publish: (mutation) => recovered_events.push(mutation),
1257
1488
  });
1258
1489
  await recovered.initialize();
@@ -1261,6 +1492,12 @@ test("重启时将 Assistant 草稿收口为 stopped,并将运行中 Action
1261
1492
  assert.deepEqual(page.items.map((message) => message.type), ["user", "assistant", "action"]);
1262
1493
  assert.equal(page.items[1].status, "stopped");
1263
1494
  assert.equal(page.items[1].parts[0].text, "partial");
1495
+ assert.equal(page.items[1].parts.find((part) => part.type === "tool").state, "failed");
1496
+ const recovered_interaction = page.items[1].parts.find(
1497
+ (part) => part.type === "interaction",
1498
+ );
1499
+ assert.equal(recovered_interaction.status, "cancelled");
1500
+ assert.equal(recovered_interaction.cancel_reason, "runtime_interrupted");
1264
1501
  assert.equal(page.items[2].status, "failed");
1265
1502
  assert.deepEqual(recovered_events.map((event) => `${event.variant}:${event.type}`), [
1266
1503
  "message:assistant",
@@ -1330,7 +1567,7 @@ test("compact 把 Active 前缀关闭为带累计 Summary 的 Segment", async ()
1330
1567
 
1331
1568
  test("重启后从最新 Segment Summary 与 Active 恢复模型上下文", async () => {
1332
1569
  const session_id = "compact-restart-test";
1333
- const { recorder, file_path } = await create_recorder(session_id);
1570
+ const { recorder, files, file_path } = await create_recorder(session_id);
1334
1571
  for (let index = 1; index <= 6; index += 1) {
1335
1572
  await recorder.append_user_message({
1336
1573
  turn_id: `turn-${String(index)}`,
@@ -1357,7 +1594,7 @@ test("重启后从最新 Segment Summary 与 Active 恢复模型上下文", asyn
1357
1594
 
1358
1595
  const restarted = new SessionMessages({
1359
1596
  session_id,
1360
- store: new JsonlSessionMessageStore({ session_id, file_path }),
1597
+ store: new JsonlSessionMessageStore({ files, session_id, file_path }),
1361
1598
  publish: () => {},
1362
1599
  });
1363
1600
  await restarted.initialize();
@@ -1372,7 +1609,7 @@ test("重启后从最新 Segment Summary 与 Active 恢复模型上下文", asyn
1372
1609
 
1373
1610
  test("Compact 两步提交中断后会清理 Active 与 Segment 的重叠前缀", async () => {
1374
1611
  const session_id = "compact-overlap-recovery-test";
1375
- const { recorder, file_path } = await create_recorder(session_id);
1612
+ const { recorder, files, file_path } = await create_recorder(session_id);
1376
1613
  for (let index = 1; index <= 6; index += 1) {
1377
1614
  await recorder.append_user_message({
1378
1615
  turn_id: `turn-${String(index)}`,
@@ -1414,7 +1651,7 @@ test("Compact 两步提交中断后会清理 Active 与 Segment 的重叠前缀"
1414
1651
 
1415
1652
  const restarted = new SessionMessages({
1416
1653
  session_id,
1417
- store: new JsonlSessionMessageStore({ session_id, file_path }),
1654
+ store: new JsonlSessionMessageStore({ files, session_id, file_path }),
1418
1655
  publish: () => {},
1419
1656
  });
1420
1657
  await restarted.initialize();